Chrono Compendium

Kajar Laboratories - Fan Works and Submissions => Chrono Trigger Modification => Topic started by: Agent 12 on February 02, 2008, 01:19:17 am

Title: Tech Editor - Period
Post by: Agent 12 on February 02, 2008, 01:19:17 am
WHO:

Me, I opted to try out making a tech editor

WHY:
I want to have some new techs....or atleast the appearance of new techs in CE

When

Available now.

Where

First get the .NET framework:

http://www.microsoft.com/downloads/details.aspx?FamilyID=ab99342f-5d1a-413d-8319-81da479ab0d7&displaylang=en

http://jpsondag.com/CE/TechEditor

and hopefully put on the compendium somewhere eventually.

WHAT

Edit anyones techs.  Lots of unknowns but they are soloy being figured out!
Warning:

There is a great chance that this will corrupt your ROM so make a backup.  That being said I have used this to adjust the commands successfully so if used correctly it shouldn't be to bad.

I repeat make a backup.


There's going to be ALOT of bugs in this release, please don't report bugs until I release another version and test it out a little.  You can put feature request.....don't make them to crazy.


How

Read the tutorial:  http://www.chronocompendium.com/Forums/index.php?topic=5379.0

below may be outdated

Um to use it click "Open Unheadered Rom" after doing so three windows will be populated:

Far Left:  This is properties of the currently selected command
Middle:  This is what we have been able to decode of provoke so far
Right:  What it translates to in Hex

You can select a node and change either the parameter for the command...so if you select load animation you can change the animation.  If you want to remove the command click the command then click delete node, if you want to add a new command (as long as you have enough space for it to fit) choose the type of command from the drop down list and click add node.


Anyways I'm probably going to to work a bit more on CE now but hopefully we'll get more more commands figured out and I can improve on this alot.


Enjoy!

--JP

Edit:  Attached FW's Magus Patch to show off what it can do :)

[attachment deleted by admin]
Title: Re: Tech Editor - Provoke
Post by: justin3009 on February 02, 2008, 01:24:12 am
Pretty good for a first tech editor Json.  I'll have to test this tomorrow, gonna head to bed right now.
Title: Re: Tech Editor - Provoke
Post by: FaustWolf on February 02, 2008, 01:55:17 am
Sweet, thanks jsondag2! Have you seen the (still incomplete) wiki entry on tech data? I'm not sure if anything there will be of help to you, but just for the heck of it: http://www.chronocompendium.com/Term/Tech_Data_Notes.html

EDIT: Don't mind me, just using this post to help monitor the various threads I'm announcing the tech editor in:
http://boards.gamefaqs.com/gfaqs/genmessage.php?board=563538&topic=43269445
http://www.chronoshock.com/community/showthread.php?p=123126#post123126
http://z14.invisionfree.com/ChronoCrisis/index.php?showtopic=3900
http://www.romhacking.net/forum/index.php/topic,6460.0.html
Title: Re: Tech Editor - Provoke
Post by: Agent 12 on February 02, 2008, 02:04:48 am
I have, it's good stuff your doing there.

I actually made a page (I think off that page) for provoke here:

http://www.chronocompendium.com/Term/Provoke.html

It'd be super awesome if someone could fill out all relevent address and put them there. 

--JP
Title: Re: Tech Editor - Provoke
Post by: FaustWolf on February 02, 2008, 02:20:20 am
Oh, SWEET! That's a damn good idea -- filling in the info on a tech-by-tech basis from the tech list. I didn't even see that there till you pointed it out. Since you're working with data at address 0x0E106F, it would appear that you've gotten into the data all the pointers earlier in the ROM are pointing to. Damn, I've gotta try out your program soon!
Title: Re: Tech Editor - Provoke
Post by: Mauron on February 02, 2008, 11:38:48 am
http://maurtopia.com/TechEditor-Provoke.exe (http://maurtopia.com/TechEditor-Provoke.exe)

So you don't have to host it on your school server.

Will be there until you want it gone.
Title: Re: Tech Editor - Provoke
Post by: Mauron on February 02, 2008, 04:38:40 pm
Double post, for distinction purposes.

I tried playing around with the LoadAnimation values that weren't listed as anything, and I got this error with all that I tried:

Length cannot be less than zero.
Parameter name: length

Started testing the first two blanks, then random ones.
Title: Re: Tech Editor - Provoke
Post by: Agent 12 on February 02, 2008, 04:56:40 pm
Thanks,

I basically just copy pasted the list, I didn't realize they stopped putting "-"'s after the hex values and I was using those parse the string, without the hyphen it killed it. 

Anywhos it's fixed now so once I get a few more changes I'll release an update.

If you want to help document those animations Geigers animation patch is DEFINATELY the way to go.

--JP
Title: Re: Tech Editor - Provoke
Post by: Mauron on February 02, 2008, 05:17:14 pm
Where is that patch?

Is there something to distinguish different types of animations? I didn't see anything.
Title: Re: Tech Editor - Provoke
Post by: Agent 12 on February 02, 2008, 05:53:20 pm
http://www.chronocompendium.com/Forums/index.php/topic,4298.msg87365.html#msg87365

I made an IPS that should load you into the room directly, let me know if it doesn't, Geiger also released the Flux file if your TF savvy.

Gaspar gives you direction on how to use it, you basically touch either the PC NPC or enemy and press XY until you get the one you want (So for marle you walk up to crono and hit Y once)

Then you stand on the save point and XY changes the animation up/down one.  Or you can hold down B when you press XY do change it up 16.

--JP
Title: Re: Tech Editor - Provoke
Post by: Mauron on February 02, 2008, 06:06:03 pm
Thanks.

I'll play with it some now.
Title: Re: Tech Editor - Provoke
Post by: Agent 12 on February 02, 2008, 07:52:11 pm
Updated:

Added Command 1E XX -- super command node
Added Command 7c  -- Weapon Slash
Added Command 06 XX -- another load animation
Added Command 19 XX YY -- Teleport Sprite


Fixed bug for options without hyphen after not being allowed to be selected
Fixed Loading Rom multiple times causes error bug
Fixed checking byte size when adding notes bug
Added Copy Hex functionality
Disable Buttons until they are useful

If anyone can decode anymore of these commands then it won't take long to makes this a pretty robust editor.

Mauron if you can PM me if you get this on your site I'll update the first post, I dont use AIM anymore (i'm a gchat guy since I'm constantly checking email)  plus I can't send exe files over email.....sighs




--JP
Title: Re: Tech Editor - Provoke
Post by: Agent 12 on February 02, 2008, 11:28:07 pm
Updated Try out the link at top:

Can edit MP Cost
Can edit Target
Can edit status affects
Added Maurons animations

I decided to make "super Provoke" to show this off......but I'm bad at making movies so I'm afraid it's an ips patch. Basically marle teleports to the middle, and then laughs and all enemies get every status affect

EDIT:

I realized teleport isn't very useful unless you can teleport back so we have to see how the developers actually use it should be in Lightning 2.

Including DOom.....by the way where was Doom in CT (note doom doesn't give them a counter but after awhile they just die....)  ?

--JP



[attachment deleted by admin]
Title: Re: Tech Editor - Provoke
Post by: Agent 12 on February 03, 2008, 01:44:36 pm
Updated:  Link at top:

Added Support for:
Changing Attack Type (physical, healing, status Impact, Steal)
Changing Magic Type (Status Good, Status Bad, Haste, Unknowns)
Renamed Bits for status byte sine we now know it is shared based off magic Type

I've attached a patch that literally takes about 1 minute to change Marles Provoke to an allAlly Shell, MPRegen and Maybe protect attack that costs 2 MP instead of one.  The protect Bit is on, but they only glow the shell color, i'm not sure the game lets you have both.  I didn't take time to change her animations but it would be simple enough.

THanks a ton to Mauron for diagnosing the status affect bit and to JLukas for helping me realize MPRegen was being turned on. 

There's still alot of unknown tech Event commands and it's definately getting harder to figure out what's going but I'm confident we can figure it out.

--JP

[attachment deleted by admin]
Title: Re: Tech Editor - Provoke
Post by: Mauron on February 03, 2008, 03:05:18 pm
Part of the added support is from the first three bytes of the 12 byte tech data.

The research I have is available in the tech thread.
Title: Re: Tech Editor - Provoke
Post by: Mauron on February 05, 2008, 04:27:49 pm
Two things:

- Going into the properties window adds an extra set of data on exiting, except for when the x is clicked at the top.
- Could you add a way to directly edit the 12 byte data? It would save some time over using a hex editor for the unknowns.
Title: Re: Tech Editor - Provoke
Post by: Agent 12 on February 06, 2008, 09:57:17 pm
New Release:

Filter smc files
Better Window Name
Can edit all bytes of Tech Properties, they are listed as unkonwns:

New Commands:

Command 26 XX YY - Load animation XX Frame YY
Command 71 - Hide Sprite
Command 70 - Show Sprite
Command 61 XX YY ZZ - Pallete Morph Unknown commands
Command 1B XX - Load Sprite at location XX

Can now open up the following techs
Cyclone
Slash
Lightning2
Luminaire
Aura
Provoke

I can add more if people can figure out where tech animations Sound Graphic data begins and end for the rest of the techs.

EDIT:

Oh yea I forgot the most important add on for this release, Using CL's byte length table from a couple pages back the program now divides everything up based off the BYTES.  That means you will only be editing parameters rather than the actual commands themselves.  So before the hex

AA 20 AA 20 7C

would be parsed as (AA is an unknown command, 20 XX is pause and 7C is weapon slas):

Unknown (AA)
Pause(AA)
Pause(7C)

But now it'll be parsed correctly as

AA(20)
AA(20)
Weapon Slash


This feature is the reason I decided to open up the tech editor to more than just Provoke.

--JP
Title: Re: Tech Editor - Provoke
Post by: Mauron on February 06, 2008, 10:57:05 pm
Sweet. I won't need as much hex editing now. My eyes thank you.

Small glitch -  The bar at the bottom say "Using xx animation bytes Sound bytes."
Title: Re: Tech Editor - Provoke
Post by: Agent 12 on February 06, 2008, 11:04:46 pm
Oh yea,

Whoops

After looking at other techs I don't think there is a "Sound/Graphics" dedicated section they just happen to put it near the end most of the time.  Or there's a way to "call" a sound function (like arbitraries) in fact I think that's what the 24 XX command is. 

Just glancing through this (not to toot my own horn) it definately is alot easier to see stuff....Glancing at slash i'm thinking the A9 command might be movement.

Don't forget if you guys can get me start/end of animation/sound graphics I'll add more techs ASAP

*Updated link to show mirror
-
-JP
Title: Re: Tech Editor - Provoke
Post by: Agent 12 on February 07, 2008, 02:50:32 pm
I fixed a bug I found today.  I'm not sure if CL's lis skipped one or if I accidently skipped a command but all the commands were off by one.  I've fixed it now though.

--JP
Title: Re: Tech Editor - Provoke
Post by: Mauron on February 07, 2008, 03:57:35 pm
Updated.

Could you label the header bytes for the knowns? It would help double check and find any inconsistencies.
Title: Re: Tech Editor - Provoke
Post by: Agent 12 on February 07, 2008, 05:00:28 pm
Sorry not sure what you mean by that.

--JP
Title: Re: Tech Editor - Provoke
Post by: Mauron on February 07, 2008, 05:28:04 pm
Say for HitPercent1, at the bottom have it display "Hit % least significant (Byte 4)."

At this point I wouldn't want to rule out anything as completed.
Title: Re: Tech Editor - Provoke
Post by: Agent 12 on February 07, 2008, 05:41:43 pm
Ohhh sure, definitely, In the code it still has the "byte 4" label i didn't realize it wasn't in the GUI.

--JP
Title: Re: Tech Editor - Provoke
Post by: Mauron on February 22, 2008, 08:26:21 pm
The next version could benefit from a revert tech to default for after we screw things up.
Title: Re: Tech Editor - Provoke
Post by: Agent 12 on February 24, 2008, 04:47:20 am
I didn't get the revert to original in this release but that is something I'd like to eventually add......heck I'd like to add an Undo.

However onto the release:

If anyone has a cool little icon for the upper left corner let me know. 

surprisingly Haste led me to decode most of these commands:


===========================================================
Reorganized code, easier to add commands and loads faster
Selecting tree from decoded view scrolls to point in hex view and vice versa
Put bytes of Tech properties in their names
New Interface
Keyboard shortcuts

Added Commands
12 XX:  Send to XX:  XX = 0, caster? XX =1, PC + 1 XX =2 PC + 2, XX = 3 target XX = 4 target + 1, C seems to be target

72 XX:  Facing:  XX = 00 North 01 South 02 West 03 East 0D= face target???



85 XX:  Sets Sprite Facing to angle XX. 0 degrees is directly east, angle moves clockwise
      Example:  In Haste within the "clock sprite" code there's 85 C0 which moves the clock sprite straight up

A8 XX:  Set speed...inverse so lower number = Higher Speed, speed seems to be default at 0 so anything here is also "move sprite"
      Example:  In Haste inside the clock code the speed of the clock is slow at first and then Fast by this command


33 XX:  Place Sprite at top of screen above XX, XX = 0: Caster, XX = 3:  Target, 1 = Caster + 1
      Example:  In Haste inside the clock code, arbitrary 2 (called for clock coming down) there's 33 03 which places the sprite above target

Switch 24 XX to be Start Section...i'm not sure why I thought it was Enemy White before
Title: Re: Tech Editor - Provoke
Post by: Mauron on February 24, 2008, 05:42:32 am
Nice. Many improvements in this version.

The mirror has been updated.

In the properties window, values that change something and an unknown bit don't label which unknown.

Edit: The option to add unknown values seems to be missing.
Title: Re: Tech Editor - Provoke
Post by: Agent 12 on February 24, 2008, 06:11:03 am
Oh crap....Sorry, and fixed

--JP
Title: Re: Tech Editor - Provoke
Post by: Mauron on February 24, 2008, 06:38:46 am
The Unknowns are getting cut off for me now after "Unknown".

Mirror updated.
Title: Re: Tech Editor - Provoke
Post by: Agent 12 on February 27, 2008, 06:46:51 pm
New Version:

Copy/Paste Nodes!! (Cut Coming Soon)

Revert Tech:  A copy of the tech is made when you Load a new tech from the drop down menu, as long as you don't load a new tech then you can change the tech as much as you want and then do revert tech

Fixed the unknowns from being cut off

Redid Tech Choosing Code for easier extensibility

Fixed Bug allowing you to write beyond your allowed bytes

Change BG color cause my eyes were hurting

--JP
Title: Re: Tech Editor - Crono/Marle
Post by: Mauron on February 27, 2008, 07:09:22 pm
Updated mirror.

Nice update. I've been hoping for a chance to examine Confuse.
Title: Re: Tech Editor - Crono/Marle
Post by: Agent 12 on April 28, 2008, 08:44:36 pm
A release

I decided to work on this a little more to take a break from CE:

Added concept of object new objects start after command 00
Added more techs

Added Commands
 
 50/51/52/53  Show Damage done, if multiple times (confuse) use new command
      Example:  Confuse, Ice
      
 22:  variant of pause
      Example:  Luminaire uses this one instead of 20 for some reason
      
 73 XX:  Set priority to XX
         XX=00 Behind everything
         XX=3  In front of everything
      Example:  Protect uses this to place the shield in front of the sprite


Biggest news is the objects.  It's not perfect but it makes it alot easier to go through the code.  Sometimes I think it adds objects when it shouldn't....but most of the time it's pretty good.

For example:  Slash has a bunch of little wave objects and the editor divides them up pretty well
Protect has a "shield" object and 4 glowing orbs that shoot out and it divides those up.

(http://jpsondag.com/CE/techeditorobjects.PNG)

I added most of lucca and Robo's techs....if you can find the start and end of a tech that is not on here PLEASE let me know....it's a pain to get in here.  Some of these it's hard to see when the header of the tech ends so you may accidently edit it (Uzzi punch I couldn't tell where the header ended so it's bad).

If you play around try to find out what causes it to repeat the animations on everyone.  For example I want to make haste 2 and have the clock come down on top of everyone instead of just one person.  It's really easy to make it cast on everyone you just go to the techs properties and make the target all, but making the animations for everyone is a new story.  I'm looking at "Heal Beam" for robo for clues.


BTW:  I got my own hosting now Mauron thanks for mirroring this!
--JP
Title: Re: Tech Editor - Crono/Marle/Lucca/Robo
Post by: Agent 12 on April 30, 2008, 09:57:52 pm
So I've made my very tech from scratch (except the header) using this tech editor.....i'm going to walk through how I did it:

For my tech I wanted to have lucca throw throw a fireball...now i dont have control of graphics yet but I know that the fireball sprite is in flame throw so i decided to replace that:

First off I cleared out everything except the first object the screen looked something like this

(I'll make a picture later)

Animation header  <------this is still a mystery
New Object          <--------First object is always the spell caster!
   SetFacing(0D)    <-------This is optional but keep it just in case i'm wrong
   2E                      <-----Every tech will end here if this line is read the tech is over
   01
   Return   


Let's have lucca look "shocked", and pause before the tech is over.  At the top of the screen is the add node button, switch it to load animation and add a node.  Do the same for pause. Should look like this. 

animation Header
New Object          <--------First object is always the spell caster!
   SetFacing(0D)    <-------This is optional but keep it just in case i'm wrong
Load Animation(09)  <---Thats Shock
Pause(FF)               <---Noticeable amount of ftime
   2E                      <-----Every tech will end here if this line is read the tech is over
   01
   Return   

Now it seems that the second and third object in attack techs are the "target objects" so were going to have them look like they got hit and show the damage but only when we are ready!  To do this were going to use the endsection and start section nodes:

Note I have no idea why we have to have two "target" objects


animation Header
New Object          <--------First object is always the spell caster!
   SetFacing(0D)    <-------This is optional but keep it just in case i'm wrong
   Load Animation(09)  <---Thats Shock
   Pause(FF)               <---Noticeable amount of ftime
   EndSection          <---We just moved up to section 1
   StartSection(02)
   2E                      <-----Every tech will end here if this line is read the tech is over
   01
   Return   
New Object           <---Second object is always enemy
    StartSection(01)   <-----only do this when we make section 1
    SuperCommand(08) <---Enemy gets hit and flashes white
    ShowDamage
    EndSection           <---Section is now 2
    Return
New Object           <---Third object is always enemy
    StartSection(01)   <-----only do this when we make section 1
    SuperCommand(08) <---Enemy gets hit and flashes white
    ShowDamage
    EndSection           <---Section is now 2
    Return


Ok almost there let's add the fireball.  4th object on seem to be whatever your current sprite graphics are...i dont know what determins the current sprite graphics but we know that the for flameThrow the sprites are fire. 

First off we want the sprite to be loaded at lucca so use a loadspriteatObject and make the parameter 00.  If you make it 03 it loads at the enemd, 1 and 2 load at PC1 and PC2.

Next..this is important you have to make the facing 03....this makes me think that this is not the set facing command but after doing some checking it has to be there.  Ok now load animation command and set it to 4....that's a big fireball..3,2,1,0 are each smaller fireballs. 

Use unkonwn0B to set the speed of the fireball, my next release of the program will no longer have this as unknown.. B is medium speed...A slow, B medium, C fast

Now wait for section 1 like we did before, show the sprite with drawing status command.

Use the unknown 98 XX YY command to move the sprite to the target.  I have this as unknow because I hav eno idea what XX is...However with YY you can make it 0 to go to caster, 1/2 to go to PC 1 and 2 and 3 to send it to the target.  we are sending it to the target so make YY = 3.

Finally hide the sprite.  Use an EndSection to start the next section of the Tech.

Since we want this to be after lucca is shocked and before the damage is shown make the Enemy objects wait for section 2.  Um let's put lucca in her attack stance during this too.




animation Header
New Object          <--------First object is always the spell caster!
   SetFacing(0D)    <-------This is optional but keep it just in case i'm wrong
   Load Animation(09)  <---Thats Shock
   Pause(FF)               <---Noticeable amount of ftime
   EndSection          <---We just moved up to section 1   
Load Animation(03) <--while fireball is moving we go in attack stance)
   Pause                   <--wait for fireball
   StartSection(03)  <--Wait for enemy to get hit
   2E                      <-----Every tech will end here if this line is read the tech is over
   01
   Return   
New Object           <---Second object is always enemy
    StartSection(02)   <-----only do this when we make section 1
    SuperCommand(08) <---Enemy gets hit and flashes white
    ShowDamage
    EndSection           <---Section is now 2
    Return
New Object           <---Third object is always enemy
     StartSection(02)   <-----only do this when we make section 1
    SuperCommand(08) <---Enemy gets hit and flashes white
    ShowDamage
    EndSection           <---Section is now 3
    Return
New Object           <---The fireball object
    LoadSpriteAt(00) <----Load Sprite at caster
    SetFacing(03)   <-----this must be here, probably isn't setting facing
   SetPriority(00)    <-----Try different values, either above or below caster
   LoadAnimation(04)  <---loads the big fireball
   StartSection(01)    <--waits here for section to be 1
   Show Sprite          <---obvious)
   98(XX, 03)            <--Send fireball to target
   Pause                    <--obvious
   HideSprite              <--obvious
   EndSection             <--Section is now 2  (enemy gets hit and shows damage)
   Return

    ShowDamage
    EndSection           <---Section is now 2
    Return


I color coded the above to show the various "sections" of code.  The color stuff is basically done at the same time.

I'll put better pictures later.

Here's a picture of pretty much th esame tech in the tech editor:

(http://jpsondag.com/CE/firsttech.PNG)

--JP
Title: Re: Tech Editor - Crono/Marle/Lucca/Robo
Post by: FaustWolf on April 30, 2008, 10:02:47 pm
Holy cow jsondag, awesome work!
Title: Re: Tech Editor - Crono/Marle/Lucca/Robo
Post by: Agent 12 on May 01, 2008, 12:07:33 am
Thanks,

I added a picture from the tech editor to the explanation post.  I just wanted to show people that it is possible to figure this stuff out and that some good progress has been made.

--JP
Title: Re: Tech Editor - Crono/Marle/Lucca/Robo
Post by: Agent 12 on May 01, 2008, 03:52:51 am
Updated:

I found robo tackle and fixed some header lengths.

I also added the following commands:

D0/D1:  D0:  put shadow underneath character
   D1:  Take shadow off from underneath character
   Example:  In cyclone the screen darkens, then D0 is called and the enemy flashes until D1 is called


09/0A/0B/0C has 9<A<B<C
   Example:  In slash you can set some of the ...slashes?  to be 0b and some to be 0C and half move much faster

3A 1E XX:    Move Sprite XX in the x direction
3A 1F YY:    Move Sprite YY in the Y direction
      Example:  This is used to make the stars an aura move "downwards" on the target
            It is also used to make the explosions move in mea bomb
30 1F XX??????????/
   Move sprite in Y direction 80 is the middle and you can move both up and down
   Example:  After placing the clock on the sprite they use this to place the clock above the sprite

98 XX YY:  Moves to YY , XX is 02 in cyclone and spincut:
      YY LSB = who to move to, 00 = caster 11 = target, 01 = caster + 1 10 = caster +2
      Other bites = distance away from target
      Example:  In Cyclone this command is used to send crono to the enemy before making a circle

1A        Place sprite at current saved XY, must be used after  a displace command


Cure beam is a really hard tech to dissect......it seems to be doing some sort of draw geometry.

--JP
Title: Re: Tech Editor - Crono/Marle/Lucca/Robo
Post by: Agent 12 on May 02, 2008, 05:09:57 pm
I updated the link on the first page:

You can now edit All of Crono/Marle/Lucca/Robo and frog techs.

Updated interface you now choose the character you want to edit  and then choose the tech you want to edit.

--JP
Title: Re: Tech Editor - Crono/Marle/Lucca/Robo/Frog
Post by: Anacalius on May 02, 2008, 05:18:28 pm
Holy crap, this is amazing! Great work.  :shock:
Title: Re: Tech Editor - Crono/Marle/Lucca/Robo/Frog
Post by: Agent 12 on May 02, 2008, 08:01:14 pm
Another update!  (same link)

i was on such a roll with adding frog that I ended up just finishing it off.

Some interesting things about magus:

Magus Lightning 2 definatley isn't a brand new Lightning 2 it's really really short  ( so is Ice and Fire 2).  It must somehow point to Crono's Lightning 2.

Also Magus blackhole and Dark matter seem to share the same code.....no other tech had this so it was really weird.  But if you cast it you notice 4 balls shoot out of him, if you destroy those objects in Dark matter then they get destroyed in black hole as well.  It's really weird that they didn't do it anywhere else...

--JP
Title: Re: Tech Editor - Period
Post by: Mauron on May 03, 2008, 12:32:25 am
Awesome.

I'll have to study Magus's when I get to this next.
Title: Re: Tech Editor - Period
Post by: Ozzie on May 03, 2008, 02:23:15 pm
7E987A (and 7E987B?) seem to hold the graphics information for the techs. Not sure about 7E987B, maybe a sprite size byte for the loaded graphics? Maybe a two byte pointer? These are RAM addresses, not sure where they are loaded from tho.

[attachment deleted by admin]
Title: Re: Tech Editor - Period
Post by: Agent 12 on May 03, 2008, 02:44:32 pm
Someone knowledgable with a debugger should be able to figure out where they are coming from.  We'd really have to figure out where it's being loaded from in order to edit it but knowing where it's loaded to should make that decently easy (not for me though... haha). 

--JP
Title: Re: Tech Editor - Period
Post by: Ozzie on May 03, 2008, 02:50:02 pm
Seems to load the graphics properties from a table, about 6 bytes each.
D45A7 is the start of the table.
D45AE is Cyclone's graphics properties.

Let me know if I rock hard. :)
Title: Re: Tech Editor - Period
Post by: Ozzie on May 03, 2008, 03:01:34 pm
D45E6 is Marle's Aura Tech's graphics properties.
I set a breakpoint on C154C2 and click the Execute checkbox, and every tech I do freezes the emulation, and spits out the address I seek.


It spits it out in SNES addresses, so some conversion is needed, CD45E6 becomes just D45E6 for example.

Edit:

Since I now have Marle, might as well throw out D4736 for Aura Whirl Dual Tech.
Title: Re: Tech Editor - Period
Post by: Ozzie on May 03, 2008, 03:12:56 pm
Triple POST!

The 4th byte is the palette applied to the graphic.



[attachment deleted by admin]
Title: Re: Tech Editor - Period
Post by: FaustWolf on May 03, 2008, 03:13:39 pm
Ooh! Ooh! Ozzie! You're getting into stuff justin3009 explored earlier, so you might be able to fill in the gaps in our knowledge here:
http://www.chronocompendium.com/Term/Tech_Data_Notes.html

Look under "Offsets Pertinent to Techs"

You can list your findings here and I or someone else with access could put them in the wiki or something. I think, within our framework...

0x0D45AD ~ 0x0D4925: Unknown tech data; 7 bytes each (127 techs). May point to graphics and sound data.
 The bytes are structured as follows: aa bb cc dd ee ff gg
  aa = An unknown tech index. May point to two-byte "slots" beginning at address 0x0D5EF0
  bb =
  cc =
  dd =
  ee =
  ff =
  gg =

...you've found that dd = palette index, is that correct? Awesome work. We may as well get these seven functions filled in while you're at it. Also, let us know what mistakes are in the wiki as you find them.

Man, I can't wait to see Magus use Lightning1, Fire1, and Ice1. Just because. Or maybe, with control over palette and strength data, "PhantomBolt"...

Just out of curiosity Ozzie, what value did you use for "dd" in the above framework to get that nice purplish sword slashy effect? We can put a list of values in the wiki as well for each byte.
Title: Re: Tech Editor - Period
Post by: Ozzie on May 03, 2008, 03:22:37 pm
One byte off eh? Looks like someone else already documented some of this stuff.
If nothing else, I narrowed it down, and specified a breakpoint for easy listings.
I suck at wikis, so anyone can feel free to replicate any findings I make here in it.
Title: Re: Tech Editor - Period
Post by: Ozzie on May 03, 2008, 03:28:57 pm
I used '09' I think to get the nice purple. Some palettes look horrid of course, but still, this means that any graphic, any size, and colors can be used now in conjunction with jsondag's awesome tech editing program, for pretty much complete custom techs.

The breakpoint I supplied earlier only seems to apply to player techs, some of the early enemy techs I've run across have failed to trigger it, but that's ok, the editor only edits player techs for now anyway.
Title: Re: Tech Editor - Period
Post by: FaustWolf on May 03, 2008, 03:30:09 pm
I might be the one who's a byte off for all I know. I was just looking at the hex in the ROM when I compiled the "offsets pertinent to techs" stuff from everyone else's findings back in January. Please continue your work -- I certainly haven't had any time to sit down and document our understanding of this section of the CT tech data yet, and I believe it is crucially important. Justin3009 left additional notes that I haven't transcribed yet as well; I'll point you to there if I can dig them up from the forums.

It would be a *huge* help if you could find out what each byte does in the range 0x0D45AD ~ 0x0D45B4 (that should be the range for Crono's Cyclone tech), and catch any mistakes we made in the description that's currently up.

Anyway, welcome to the Compendium! Expanding technical knowledge of the games is a great way to make a start!

EDIT: Ozzie, I have a hypothesis that jsondag2's working directly with the raw tech data and the range you've been looking at most recently contains pointers to that raw data; they might be like mid-level pointers to stuff further down in the ROM. This may not be correct, however; 'tis only a guess on my part.
Title: Re: Tech Editor - Period
Post by: Ozzie on May 03, 2008, 03:40:06 pm
$C1/45BB   BF A6 45 CD   LDA $CD45A6,x[$CD:45AD]   
$C1/45BF   8D 77 98         STA $9877  [$7E:9877]   
$C1/45C2   BF A7 45 CD   LDA $CD45A7,x[$CD:45AE]   
$C1/45C6   8D 7A 98         STA $987A  [$7E:987A]   
$C1/45C9   BF A8 45 CD   LDA $CD45A8,x[$CD:45AF]   
$C1/45CD   8D 7B 98         STA $987B  [$7E:987B]   
$C1/45D0   BF A9 45 CD   LDA $CD45A9,x[$CD:45B0]      
$C1/45D4   8D 7E 98         STA $987E  [$7E:987E]      
$C1/45D7   BF AA 45 CD   LDA $CD45AA,x[$CD:45B1]   
$C1/45DB   8D 81 98         STA $9881  [$7E:9881]   
$C1/45DE   BF AB 45 CD   LDA $CD45AB,x[$CD:45B2]   
$C1/45E2   8D 84 98         STA $9884  [$7E:9884]      
$C1/45E5   BF AC 45 CD   LDA $CD45AC,x[$CD:45B3]   

You are correct, it seems to be 7 bytes, not 6. That'l learn me to dissasemble stuff after just waking up.  :lol:
Title: Re: Tech Editor - Period
Post by: Agent 12 on May 03, 2008, 03:41:54 pm
I'm adding in all the tech data from the D5XXX range as we speak look for an update later today  :D

This is good stuff, if we can edit this reliably it's a major milestone.  Faustwolf I'm pretty sure your hypothesis is correct.  My data edits ONLY the animations and sounds the exact same data for fire and lightning can be put in my editor and different graphics be loaded so the graphics is coming from somewhere else and it seems like we've found out where.

Ozzie, you are making quite an entrance to Kajar labs.  The compendium is on a war path right now welcome to the party.

--JP
Title: Re: Tech Editor - Period
Post by: Ozzie on May 03, 2008, 03:49:03 pm
Can you use the debugger to get the addresses you need to edit the 7byte graphics data?
If not, I can download a save game and go through and make a list of offsets for you to plug into your editor, and then label each field as they are deciphered down the road.
Title: Re: Tech Editor - Period
Post by: Ozzie on May 03, 2008, 04:08:54 pm
Updating with offsets, refresh occasionally for more.

Single Techs

Crono/Slash - D45B4
Crono/Lightning - D45BB
Crono/Spincut - D45C2
Crono/Lightning2 - D45C9
Crono/Life - D
Crono/Confuse - D45D7
Crono/Luminaire - D45DE






Frog/Slurp - D468D
Frog/Slurp Cut - D4694
Frog/Water - D469B
Frog/Heal - D46A2
Frog/Leap Slash - D46A9
Frog/Water2 - D46B0
Frog/Cure2 - D46B7
Frog/Frog Squash - D46BE




Magus/Lightning2 - D46FD
Magus/Ice2 - D4704
Magus/Fire2 - D470B
Magus/Dark Bomb - D4712
Magus/Magic Wall - D4719
Magus/Dark Mist - D4720
Magus/Black Hole - D4727
Magus/Dark Matter - D472E

Dual Techs
Frog&Crono/XStrike - D4774
Title: Re: Tech Editor - Period
Post by: Agent 12 on May 03, 2008, 04:22:02 pm
I'm pretty sure I got all the offsets already....

Are we sure it's 7 bytes for every single one though?

I got 7 bytes for some of the but 6 bytes for others?

Edit:  Actually I guess that would be pretty stupid huh.......i'll change it to 7 bytes each and then add an update to the front link...... (There seems to be some that like ....don't end in FF and I counted those as 7 bytes and the ones surrounded by FF i was counting as 6 bytes)

--JP
Title: Re: Tech Editor - Period
Post by: Ozzie on May 03, 2008, 04:30:25 pm
I'm guessing FF is like "NULL" or nothing for that graphic's property. Some graphics have animation, some do not, some glow, etc.

This saves me some time if you have the offsets already... :D


You know how some techs disable layer 3 (fog and stuff) to execute? I wonder if one of the unknowns is disable, enable layer 3? That's been bugging me, I dont' think all techs disable layer 3, just the ones that require translucency. I should look into that eventually too. [/random thought]
Title: Re: Tech Editor - Period
Post by: FaustWolf on May 03, 2008, 04:42:00 pm
jsondag2, I can confirm that the seven-byte pattern still holds at the end of the range 0x0D45AD ~ 0x0D4925

If you take 0x0D4926 and subtract 0x0D45AD, you get 0x379 or dec 889, enough for 7 bytes for 127, or 0x7F techs.

Note that there are up to 0x7F player techs in our tech list in the wiki. However, there is room for error since we haven't identified what all the techs are yet -- there seems to be some dummy techs at the end of the list. Also, there may be a dummy tech that precedes Cyclone. Given that the 7-byte pattern holds at the beginning of the range and the end of the range, I am strongly inclined to say that it's seven bytes of hex data per tech in the ROM, but the end FF byte might just be a separator and not an active pointer.
Title: Re: Tech Editor - Period
Post by: Ozzie on May 03, 2008, 04:44:36 pm
Given that Cyclone is the second tech in the 7byte graphics table, I wonder if the first tech is dummied?

Always wondered if there were dummied out techs...
Title: Re: Tech Editor - Period
Post by: FaustWolf on May 03, 2008, 04:46:04 pm
justin3009 would know more about dummied techs than I; there may have been several if memory serves.

EDIT: Ah! In light of your update jsondag2, I guess we do know that the seventh FF byte that appears in most(?) techs is just buffer data to maintain a 7-byte stride.
Title: Re: Tech Editor - Period
Post by: Agent 12 on May 03, 2008, 05:03:40 pm
Alrighty, update is out (front page link)

Obviously this is a very fast update so you may want to do some confirming of your own....or you can just trust my greatness  :D.

Load up the Rom and the tech and go to View-> Properties.

There's a fancy new "Graphics" section with the 7 bytes of from the D5 XXXX range.  I know this MIGHT not be solely graphics but i'm excited enough for now that I'm calling it graphics.


Most of them are unknown the only ones that are not are "tech index" which i think is the index of what animations etc to load (liek just said change Ice's 0C to 01 and it does cyclone?"  (Faustwolf this is the part that I was talking about earlier that points to my stuff). 

I also put in pallete since Ozzie seems to have confirmed that (we should do more testing on it though).

One of the annoying things about this is that it put them out of order since it sorts them alphabetically, I'll append the byte number later.  If you want to see them in order use the fancy new copy graphics hex button that I added on the right, it copies it to your clipboard so you can paste it in notepad or whatever. 

Using  that copy button it shouldn't take long to document these things and find some patterns.

--JP
Title: Re: Tech Editor - Period
Post by: Agent 12 on May 03, 2008, 05:16:11 pm
Here is the data excel sheet where Tech editor is grabbing it's data from... i suppose I should put this on a wiki somewhere eventually:  note that it's tab delimited and in decimal (cause in my code it's not taking hex indexes)

I've copied the D5 XXXX raw data up through lucca's flare if someone wants to finish the job and look for more patterns.

Code: [Select]
Header Start Header End Tech Start Tech End Max Bytes Target Properties MP Cost Graphics Graphics Raw Hex
Cyclone 0 14 919817 919963 146 793293 794955 795964 869805 01 DA EF 20 01 01 FF
Slash 0 24 919964 920163 199 793295 794967 795965 869812 02 E8 EC 21 02 02 FF
Lightning 0 22 920164 920497 333 793297 794979 795966 869819 03 F1 00 22 03 03 45
Spincut 0 16 920498 920723 225 793299 794991 795967 869826 04 D6 00 27 04 04 FF
Lightning 2 0 28 920724 921089 365 793301 795003 795968 869833 05 F1 00 22 05 03 02
life 0 16 921090 921237 147 793303 795015 795969 869840 06 E1 02 1B 06 06 1D
confuse 0 16 921238 921487 249 793305 795027 795970 869847 07 20 24 2D 07 07 FF
Luminaire 0 12 921488 921558 70 793307 795039 795971 869854 08 FC 00 08 08 08 01
Aura 0 16 921559 921710 151 793309 795051 795972 869861 09 E1 E5 1D 09 09 FF
Provoke 0 12 921711 921770 59 793311 795063 795973 869868 0A 0A 0E 0E 0A 0A FF
Ice 0 18 921910 922066 156 793313 795075 795974 869882 0B E1 02 1E 0B 0B FF
Cure 0 18 921771 921909 138 793315 795087 795975 869875 0C F4 00 25 3A 0C 44
Haste 0 12 922067 922172 105 793317 795099 795976 869889 0D BB 00 3E 0D 0D 56
Ice 2 0 20 922337 922461 124 793319 795111 795977 869903 0E E1 02 1F 0B 0E FF
Marle's Cure 2 0 18 922173 922336 163 793321 795123 795978 869896 0F FC 00 25 3A 0C 57
Marle's Life 2 0 22 922462 922679 217 793323 795135 795979 869910 10 E1 02 1B 06 06 35
Flame Toss 0 28 922680 922953 273 793325 795147 795980 869917 11 EB 00 23 11 11 FF
Hypno Wave 0 9 922954 922988 34 793327 795159 795981 869924 12 C9 CD 15 12 12 07
Fire 0 20 922989 923264 275 793329 795171 795982 869931 13 EB 00 23 11 13 FF
Napalm 0 30 923265 923618 353 793331 795183 795983 869938 14 F1 00 0A 14 14 49
Protect 0 18 923619 923747 128 793333 795195 795984 869945 15 CE 00 11 15 15 FF
Fire 2 0 20 923748 923897 149 793335 795207 795985 869952 16 EB 00 0B 11 13 1C
MegaBomb 0 30 923898 924323 425 793337 795219 795986 869959 17 CA 00 10 17 17 20
Lucca's Flare 0 44 924324 924850 526 793339 795231 795987 869966 18 F1 00 0A 18 18 0D
Rocket Punch 0 30 924851 925197 346 793341 795243 795988 869973
Cure Beam 0 14 925198 925357 159 793343 795255 795989 869980
Laser Spin 0 16 925546 925676 130 793345 795267 795990 869994
Robo Tackle 0 24 925358 925545 187 793347 795279 795991 869987
Heal Beam 0 20 925677 925860 183 793349 795291 795992 870001
Uzzi Punch 0 3 925861 926094 233 793351 795303 795993 870008
Area Bomb 0 24 926116 926533 417 793353 795315 795994 870015
Robo's Shock 0 12 926534 926606 72 793355 795327 795995 870022
Slurp 0 26 926607 926870 263 793357 795339 795996 870029
Slurpcut 0 45 926871 927416 545 793359 795351 795997 870036
Water 0 18 927417 927616 199 793361 795363 795998 870043
Heal 0 20 927617 927777 160 793363 795375 795999 870050
Leap Slash 0 16 927778 928016 238 793365 795387 796000 870057
Water 2 0 28 928017 928237 220 793367 795399 796001 870064
Frog's Cure 2 0 18 928238 928274 36 793369 795411 796002 870071
Frog Summon 0 14 928275 928402 127 793371 795423 796003 870078
Kiss 0 14 928403 928511 108 793373 795435 796004 870085
Rollo Kick 0 13 928512 928753 241 793375 795447 796005 870092
Cat Attack 0 12 928754 928870 116 793377 795459 796006 870099
Rock Throw 0 11 928871 929013 142 793379 795471 796007 870106
Charm 0 18 929014 929175 161 793381 795483 796008 870113
Tail Spin 0 12 929394 929528 134 793383 795495 796009 870127
Dino Tail 0 12 929529 929581 52 793385 795507 796010 870120
Triple Kick 0 26 929176 929393 217 793387 795519 796011 870127
Lightning 2 0 28 929581 929651 70 793389 795531 796012 870134
Ice 2 0 20 929955 930006 51 793391 795543 796013 870162
Fire 2 0 20 929761 929833 72 793393 795555 796014 870148
Dark Bomb 0 20 929834 929954 120 793395 795567 796015 870148
Magic Wall 0 18 930007 930094 87 793397 795579 796016 870141
Dark Mist 0 20 929652 929760 108 793399 795591 796017 870155
Black Hole 0 0 0 0 0 793401 795603 796018 870169
Dark Matter 0 53 930095 930248 153 793403 795615 796019 870176



Title: Re: Tech Editor - Period
Post by: justin3009 on May 03, 2008, 07:00:48 pm
There's alot of empty sets for new techs.  I think about 5-6 of them are just there.  I believe the starting header for tech 00 is empty as well.  All it does is have the person shake his head and it does damage...So there's definately room for custom techs without replacing any old ones.  I'd have to reexplore this a bit more before it's actually confirmed though.
Title: Re: Tech Editor - Period
Post by: Agent 12 on May 03, 2008, 11:08:24 pm
Well, assuming they are dummy techs even if we managed to get this....um graphics header is what I'll call it I guess....working we'd still have to put space for all the animations, and get it to be recognized in battle/menus/ put the mpcost/target/status effect info.....and all that.

It's doable but quite bit (alot) of work.

Anywhos I updated the front link I found that i sort of screwed up Magus's Graphics...header locations they are fixed now.

I also think i know what most of them are!

Byte 1 = index of which animations/sounds to load

Byte 5:  Pallete

Byte 7: Layer 3 graphics Pointer (this is the ice falling/lightning spinning/fireballs exploding) FF was not just padding to make it 7 bytes, it was just pointing to an empty layer 3


Bytes 2-> 6 are definitely loading graphics

Edit:  Whoops 5th byte is pallete...were you starting from 0 (oh cs...)
--JP


Title: Re: Tech Editor - Period
Post by: Agent 12 on May 04, 2008, 12:01:18 am
aw crap, it looks like I may have some of these screwed up........I just figured out that Ice2 is editing Dark Mist.....if someone else notices one that isn't editing the correct thing please let me know.

Here's what I have.

Code: [Select]
Graphics Raw Hex
Cyclone 01 DA EF 20 01 01 FF
Slash 02 E8 EC 21 02 02 FF
Lightning 03 F1 00 22 03 03 45
Spincut 04 D6 00 27 04 04 FF
Lightning 2 05 F1 00 22 05 03 02
life 06 E1 02 1B 06 06 1D
confuse 07 20 24 2D 07 07 FF
Luminaire 08 FC 00 08 08 08 01
Aura 09 E1 E5 1D 09 09 FF
Provoke 0A 0A 0E 0E 0A 0A FF
Ice 0B E1 02 1E 0B 0B FF
Cure 0C F4 00 25 3A 0C 44
Haste 0D BB 00 3E 0D 0D 56
Ice 2 0E E1 02 1F 0B 0E FF
Marle's Cure 2 0F FC 00 25 3A 0C 57
Marle's Life 2 10 E1 02 1B 06 06 35
Flame Toss 11 EB 00 23 11 11 FF
Hypno Wave 12 C9 CD 15 12 12 07
Fire 13 EB 00 23 11 13 FF
Napalm 14 F1 00 0A 14 14 49
Protect 15 CE 00 11 15 15 FF
Fire 2 16 EB 00 0B 11 13 1C
MegaBomb 17 CA 00 10 17 17 20
Lucca's Flare 18 F1 00 0A 18 18 0D
Rocket Punch 19 E6 C3 24 19 19 FF
Cure Beam 1A E1 02 1E 0B 0B 5A
Laser Spin 1B 61 E0 26 1B 1B 09
Robo Tackle 1C 61 E0 26 1B 1B 09
Heal Beam 1D E1 02 13 0B 0B 59
Uzzi Punch 1E E6 C3 24 19 19 FF
Area Bomb 1F F1 F5 0A 1F 1F 50
Robo's Shock 20 61 00 01 00 00 22
Slurp 21 E1 00 1D 09 09 FF
Slurpcut 22 E1 00 1D 09 09 FF
Water 23 F8 00 16 23 23 FF
Heal 24 E1 02 13 24 24 58
Leap Slash 25 61 05 01 25 25 FF
Water 2 26 F8 00 16 23 23 32
Frog's Cure 2 27 E1 02 1F 0B 0E FF
Frog Summon 28 E0 00 1C 28 02 41
Kiss 29 E1 05 1D 09 09 FF
Rollo Kick 2A 61 05 01 25 25 FF
Cat Attack 2B 61 00 01 00 00 FF
Rock Throw 2C 61 00 01 00 00 FF
Charm 2D C0 05 0F 2D 2D FF
Tail Spin 2E 61 05 01 25 25 FF
Dino Tail 2F 61 00 01 00 00 06
Triple Kick 30 61 00 01 30 01 0E
Lightning 2 31 F1 00 22 03 03 02
Ice 2 32 F8 04 0A 34 34 2F
Fire 2 33 EB 00 0B 11 13 1C
Dark Bomb 34 F1 04 0A 34 34 21
Magic Wall 35 FC 00 25 3A 0C 57
Dark Mist 36 CE 04 12 34 36 FF
Black Hole 37 F1 04 0A 34 34 08
Dark Matter 38 F1 04 0A 34 34 1E



--JP

Title: Re: Tech Editor - Period
Post by: FaustWolf on May 04, 2008, 12:09:02 am
jsondag, you may happen to find that Ice is editing Cure as well. In the hex, the first bytes follow the expected progression, until you hit the position where Ice is -- it jumps from 0A (Provoke) to 0C (Ice). If you find that Ice and Cure are mixed up, it might be prudent for me to post the hex in seven-byte periods, in tech order, so you can easily see exactly what I'm seeing.

0B is the first byte for Cure in this section IF my hypothesis is correct.
Title: Re: Tech Editor - Period
Post by: Agent 12 on May 04, 2008, 12:13:53 am
No, no i figured it out.......sigh i ordered it by the first byte in increasing order, not by the order of the offsets.  Don't worry I have an excel sheet with all of them so i'll just reorder it by the offset location.


--JP
Title: Re: Tech Editor - Period
Post by: FaustWolf on May 04, 2008, 12:17:42 am
That should do it.
Title: Re: Tech Editor - Period
Post by: Agent 12 on May 04, 2008, 12:23:57 am
Fixed  :?

Sorry about that, things do line up alot better now though.  Here's my final one......

What are we looking at......


Quote
   Graphics Raw Hex
Cyclone   01 DA EF 20 01 01 FF
Slash   02 E8 EC 21 02 02 FF
Lightning   03 F1 00 22 03 03 45
Spincut   04 D6 00 27 04 04 FF
Lightning 2   05 F1 00 22 05 03 02
life   06 E1 02 1B 06 06 1D
confuse   07 20 24 2D 07 07 FF
Luminaire   08 FC 00 08 08 08 01
Aura   09 E1 E5 1D 09 09 FF
Provoke   0A 0A 0E 0E 0A 0A FF
Ice   0C F4 00 25 3A 0C 44
Cure   0B E1 02 1E 0B 0B FF
Haste   0D BB 00 3E 0D 0D 56
Ice 2   0F FC 00 25 3A 0C 57
Marle's Cure 2   0E E1 02 1F 0B 0E FF
Marle's Life 2   10 E1 02 1B 06 06 35
Flame Toss   11 EB 00 23 11 11 FF
Hypno Wave   12 C9 CD 15 12 12 07
Fire   13 EB 00 23 11 13 FF
Napalm   14 F1 00 0A 14 14 49
Protect   15 CE 00 11 15 15 FF
Fire 2   16 EB 00 0B 11 13 1C
MegaBomb   17 CA 00 10 17 17 20
Lucca's Flare   18 F1 00 0A 18 18 0D
Rocket Punch   19 E6 C3 24 19 19 FF
Cure Beam   1A E1 02 1E 0B 0B 5A
Laser Spin   1C 61 E0 26 1B 1B 09
Robo Tackle   1B 61 E0 26 1B 1B 09
Heal Beam   1D E1 02 13 0B 0B 59
Uzzi Punch   1E E6 C3 24 19 19 FF
Area Bomb   1F F1 F5 0A 1F 1F 50
Robo's Shock   20 61 00 01 00 00 22
Slurp   21 E1 00 1D 09 09 FF
Slurpcut   22 E1 00 1D 09 09 FF
Water   23 F8 00 16 23 23 FF
Heal   24 E1 02 13 24 24 58
Leap Slash   25 61 05 01 25 25 FF
Water 2   26 F8 00 16 23 23 32
Frog's Cure 2   27 E1 02 1F 0B 0E FF
Frog Summon   28 E0 00 1C 28 02 41
Kiss   29 E1 05 1D 09 09 FF
Rollo Kick   2A 61 05 01 25 25 FF
Cat Attack   2B 61 00 01 00 00 FF
Rock Throw   2C 61 00 01 00 00 FF
Charm   2D C0 05 0F 2D 2D FF
Tail Spin   2F 61 00 01 00 00 06
Dino Tail   30 61 00 01 30 01 0E
Triple Kick   2E 61 05 01 25 25 FF
Lightning 2   31 F1 00 22 03 03 02
Ice 2   35 FC 00 25 3A 0C 57
Fire 2   33 EB 00 0B 11 13 1C
Dark Bomb   34 F1 04 0A 34 34 21
Magic Wall   36 CE 04 12 34 36 FF
Dark Mist   32 F8 04 0A 34 34 2F
Black Hole   37 F1 04 0A 34 34 08
Dark Matter   38 F1 04 0A 34 34 1E
--JP
Title: Re: Tech Editor - Period
Post by: Agent 12 on May 04, 2008, 10:40:51 pm
Another big update for you guys:

Looking at some old post I found one where chickenlump explained that the thing I've been calling an animation header is actually just a series of pointers to the objects of a tech. 

I've now incorporated that idea into the editor and now at the top of every tech is a list of "object pointers"  a few interesting things about this:


Pointers do not have to point to where the animation objects for that tech is.  magus has pointers going all over the place for his lightning/fire/ice 2. 

Alot of points point to E09850, i actully thought this meant the header was over but it looks like it is just an object used by everyone?  Maybe it's return to fighitng stance....or...miss?  shrug.

I had to rewrite alot of the code for this so there could be bugs.  The offsets should automatically switch if you delete nodes....crap maybe not if you add nodes.  You should probably use this release solely for exploration not for editing i guess.


Edit:  Million dollar question:

Where is it telling the tech that animations should be applied to "all targets"  it's simple enough to make a tech apply to all targets but (for example) it's hard to make the damage appear on all targets or to make all targets do the damage pose. 

--JP
Title: Re: Tech Editor - Period
Post by: justin3009 on May 05, 2008, 10:15:32 am
In object [E0970][E0984] NewObject
* -UnknownD9(??) - This can alter the palette and/or the graphics of cyclone's spin.
  -StartSection(01)
* -Unknown1C(02) - This places the cyclone animation onto w/e character.

Edit: I still have yet to figure out how to change it to another tech graphic like I did with Water Whirl.

Lightning
-------------------
First New Object
-Unknown(2D)
-Unknown80(??, D8) - The facing of when he does lightning.
The first new object
Move down till you see Unknown3D(??) - This is where the Lightning graphics loads.  AKA on which person.
Title: Re: Tech Editor - Period
Post by: Ozzie on May 05, 2008, 11:55:57 am
Yep, took a pic of that last night (Command 1C). Places spawned graphic on a target.




[attachment deleted by admin]
Title: Re: Tech Editor - Period
Post by: Agent 12 on May 05, 2008, 12:19:22 pm
Yea it's a good guess that similar commands will have variants near each other.

1B XX also loads objects at a coordinate.

D9 XX is used in many of the techs (haste is the first that comes to my mind) to load the crazy cool graphics like the clock...however i've only seen XX as 30.  I haven't added it yet cause I dont know how if the XX is a parameter or if it is always 30.  I'm pretty sure it only changes graphic most pallete commands are in the 60's.


3D XX is close 33 XX which does the same thing so I'll consider that confirmed.

80 XX, D8 I'd like to know what both parameters mean before I confirm it.


--JP
Title: Re: Tech Editor - Period
Post by: Agent 12 on May 07, 2008, 02:46:21 am
OK,

I made alot of changes to it.  It handles objects alot better, and attempts to add them behind the scene.  I'm not promising it's 100% or anything but it should be easier than before.  Every once in awhile let do view -> object Pointers and make sure things are lining up.

--JP
Title: Re: Tech Editor - Period
Post by: Agent 12 on May 08, 2008, 04:59:50 pm
Updated:

Biggest change it you can copy paste between two programs if you have two versions open.

This is a big change if you are trying to say  move Slash's data over to Ice2's data.  Open the program twice on the left load up slash, on the right load up Ice 2 and just bring it over.

One problem though is since i only copy paste the "Raw Hex" you need to save/reload the tech to be able to edit data you copy over.  I know it's a pain I'll try to fix it later.

You also can't copy paste objects which would be really nice.

--JP
Title: Re: Tech Editor - Period
Post by: Agent 12 on May 09, 2008, 02:45:47 am
OK this will probably be the last update for awhile since I'm going to focus on CE for awhile again.  But I decoded alot of nodes, updated the object Pointers editing interface (advanced users only!!).   And figured out something that has been bugging me.

I thought the animation header was linked to the graphics for awhile there and that bugged me cause it just didn't seem logical.  All the graphics stuff is stored in the graphics header, but after some hardcore staring at the bytes i realized that it wasn't that the animation header wasn't saying what graphics to load it was saying what OBJECTS are graphics.  Thus having the wrong animation header was causing the game to consider objects as graphics when they shouldn't....how about an example (note i've only figured out the first byte right now)

Consider my haste 2 example in the other post the objects were

Object 1:  Caster (marle goes in spell pose)
Object 2:  Target (spins)
Object 3:  Clock

Now this replaced ice2 remember and ice 2's animation header was 98.  Just by copying the objects the spell didn't work...but why?  In a blind rage I changed it to 90 (haste's) and it worked.  I was so happy that I just said that the animation header was for graphics....but I was wrong!

98 means that the mapping of objects to stuff on screen  is
Object 1:  Caster
Object 2: Primary Target
Object 3:  Other targets getting hit
Object 4 -> X  Graphics.

It thought my clock was for other targets!  that screws up everything.   90 maps as

object 1:  Caster
Object 2: Primary Target
Object 3 -> X graphics

80 maps as
Object 1: Caster
(nothing else!)

F8 is also used but i dont know what it means.

What's this mean??  I fixed Haste 2 by adding an object between Primary target and my clock and now all my characters spin when they get the spell cast on them!



Added Commands:

34 1B:  Load red haste light around sprite
34 1A:  Remove red haste light around sprite



A9 XX
   Variant of A8 XX
   Example:  Haste

69 XX:
   Change pallete
   Example 69 00 makes enemies turn white in luminaire

6A  restore pallete
   Example 6A brings enemys colors back to normal


75:  Must be after 80 XX YY
   Return screen COlor?

80 XX YY:
   XX: Intensity?
   YY:  Color
   Flash Screen Color

A4 XX YY
   Definately makes copies of character that are shown when you move
   XX:  How long a copy statys
   YY:  how transperant the character is
   Example:  Ayla copies in triple kick

A5: 
   Resets the number of copies trailing the Sprite
29/2A:  Show/Hide SPrite variants

D8 XX YY ZZ:
   Shakes enemy
   XX = ??
   YY = Speed of shake
   ZZ = How many shakes......time?
   Example:  In Charm  this is used to shake the enemy when the item is stolen

--JP
Title: Re: Tech Editor - Period
Post by: Ozzie on May 09, 2008, 07:48:40 am
Thanks for all the hard work you have done on this editor and figuring out commands and discovering how the techs work and and and.... *dies*

Seriously, great work and it's all very much appreciated, if not by others now, then whenever the need arises, this work will help them so much that their hair will fall out and explode at their feet into bits of happiness and rainbows and smiles and hugs.

Or less... but still....

Now that I think about it... does this mean new techs for CE?

Title: Re: Tech Editor - Period
Post by: Agent 12 on May 09, 2008, 11:48:17 am
Quote
Now that I think about it... does this mean new techs for CE?


(nods)

If we don't have an actual contest for it then just random submissions by people, or i'll just make them myself haha.


--JP
Title: Re: Tech Editor - Period
Post by: BROJ on May 09, 2008, 12:15:04 pm
Quote
Now that I think about it... does this mean new techs for CE?


(nods)

If we don't have an actual contest for it then just random submissions by people, or i'll just make them myself haha.


--JP
Would it be alright to make a couple suggestions, namely, Death/Doom(Fire-Lucca) and Drain(Fire+Water-Magus)?
Title: Re: Tech Editor - Period
Post by: FaustWolf on May 09, 2008, 12:40:19 pm
Ooh! jsondag! ZeaLitY and I discussed the idea of a Summer tech creation contest just recently, and there's no problem with conflicting with Summer's Cry or anything -- maybe it could be a longterm contest spanning 6 months even, since entrants would need to spend some time debugging. I'll do a nice Youtube vid showing off the best entries, complete with some kickass music like "Premonition" from FF8 or something, and everyone with a Youtube account here could upload it. Do you want to be in charge of designing the contest rules and so forth, since you're now the person most familiar with the tech data?

Should we wait to start the contest until more things can be edited and enemy tech graphics accessed, and the like?

When I get a chance to work with your tech editor I'll do a PhantomBolt tech for Magus, though maybe it should be a double tech between Magus and Crono. Man, this is great! Truly a new age for videogame fandom, thanks to jsondag's coding skillz!
Title: Re: Tech Editor - Period
Post by: Ozzie on May 09, 2008, 12:57:34 pm
A contest would be so cool, I would enter for sure.

I would attempt 'Luminslash', Crono would do a cool looking slash to the enemy, and Luminare would trigger in mid slash, or after a series of slashes. I would love to make Luminare red as well, though that may not be easy to do. The fun would be in trying and viewing other people's ideas and creativity.

Title: Re: Tech Editor - Period
Post by: FaustWolf on May 09, 2008, 01:04:47 pm
That reminds me, the contest entry rules would necessitate that entrants list all the values for the various tech aspects in their creations. That way we can reproduce the results in case a patch gets lost or something.

For the Youtube video that shows off the best entries, I could either make video clips with SNES9x's AVI function or the entrants could make their own clips and submit them for judging. If everyone's going to do their own clips, I'll need to set stipulations for which codec they need to use -- doing the Youtube vid will be harder if everyone encoded their videos differently. I'll have to see what encoding options SNES9x has to begin with.
Title: Re: Tech Editor - Period
Post by: BROJ on May 09, 2008, 02:38:16 pm
Quick question: Can one 'add' a tech to a character's tech list as opposed to replacing an existing 'reference entry'(pointer)?
Title: Re: Tech Editor - Period
Post by: Agent 12 on May 09, 2008, 03:52:08 pm
Couple things:

First off I made an update I know I said I was going to stop for awhile for CE but I found a huge bug in the program where I the program thought that the call sound 78 variant was three bytes instead of two.  This caused everything after a call sound to be loaded incorrectly.

It is now fixed, after fixing it some more things became clear:

24 XX && 36 (wait for section and section++)  have very similar commands
23 XX && 35 I called these wait for subsection and subsection++.

34 1B / 1A turn on/off graphics stored in graphic header byte 7.  So if you want to make LumniSlash after you have crono slash them call 34 1B and it'll trigger the luminaire.  you can then call 34 1A to turn it off.  It looks like you have to put a pause(69) Nand pause (1B) in order to give it enough time.  They split up the pauses because they divided the luminaire into 2 sections, after the pause (69) they do a section++ which triggers the enemies to turn white.

D9 30 loads the graphics that are stored in the other graphic byte headers, but it's unclear which byte does what.

Making a red luminaire could be hard it's to bad we can't see how frog flare is done which leads me to my next point:

We don't have any of the double tech mapped right now.  In order to map them we would have to find the Bytes that they start at, the bytes that they end at, the bytes that the graphics header is stored at, and finally the bytes that the properties are stored at.  If someone finds those it's really easy to add them. 

Also based off what chickenlump did in the "I think it's time to work on techs thread" with gatos song enemy techs use the exact same code, if someone documents all of those I can add them as well.

Onto some questions:

Quote
Quick question: Can one 'add' a tech to a character's tech list as opposed to replacing an existing 'reference entry'(pointer)?

I talked about this earlier, there's dummy tech graphics data  but it would involved adding animations data/properties data/ hacking the asm of the battle/menus to display etc.  I don't forsee this happening anytime soon.

Quote
That reminds me, the contest entry rules would necessitate that entrants list all the values for the various tech aspects in their creations. That way we can reproduce the results in case a patch gets lost or something.

Definately.



Quote
Should we wait to start the contest until more things can be edited and enemy tech graphics accessed, and the like?

I'm gunna focus on CE hardcore for awhile, but if people document new techs (double/triple/enemy) I can add them it's as easy as inputting the numbers at this point.  Also if people decode more commands I'll add them, general rule of thumb is you haven't decoded a command until you see it used twice or you physically use it yourself once.

Best way to decode commands is to open the editor twice, clear out someones tech and add the nodes one at a time and see what changes.


Quote
When I get a chance to work with your tech editor I'll do a PhantomBolt tech for Magus, though maybe it should be a double tech between Magus and Crono.

We can't edit double techs.....Yet bwa haha.



--JP
Title: Re: Tech Editor - Period
Post by: BROJ on May 09, 2008, 04:09:52 pm
I talked about this earlier, there's dummy tech graphics data  but it would involved adding animations data/properties data/ hacking the asm of the battle/menus to display etc.  I don't forsee this happening anytime soon.
Shoot! I was just thinking that Magus could be a much more effective character with Drain, and further 'Vortex Drain' (Crono's Cyclone + Magus's Drain -- Damages all enemies(n/elemental), Heals all allies.) Although I could see Lucca with Death definitely becoming way 'overpowered', let alone if used in a multi-tech... :twisted:
I guess I'll have to wait for the bugs and features to get hammered out before I can do these, though. :cry: *cue gloomy music*
Title: Re: Tech Editor - Period
Post by: FaustWolf on May 09, 2008, 04:17:47 pm
jsondag, if I'm not mistaken the "graphics headers" for double and triple techs should directly follow the ones for single techs, though I could be mistaken 'cause it's been awhile since I took a look at the hex. I'll post again in this thread when I find out more, unless someone else gets to it first.

EDIT:

A hypothesized model for the tech "header" thingies:

0xD45AD ~ 0xD4735: Single Techs, seven-byte stride
0xD4735 ~ 0xD4870: Double Techs, seven-byte stride
0xD4870 ~ 0xD4926: Triple Techs, seven-byte stride

The tech order is simply what's in our list of techs:
http://www.chronocompendium.com/Term/Tech_Data_Notes.html

WITH the exception that the graphics pointers are definitely in a slightly different order than what's in our tech list, as you saw with the Ice/Cure switcharoo. However, I believe you could definitely say the Dual Tech data is stored in "Aura Whirl, Ice Slash, etc." order, and the Triple Techs are stored in "Delta Force, Life Line, etc." order.
Title: Re: Tech Editor - Period
Post by: Ozzie on May 10, 2008, 07:27:18 am
I could do a breakpoint on unknowns and paste the code for those commands here or in the other thread if someone knowledgeable in assembly wants to take a crack at figuring out what they do in this manner. It's mostly all greek to me, but maybe someone can decipher it.

Example:

Command 27 Used in Cyclone, probably related to command 28, which usually follows after 27

$C1/5806   A9 01       LDA #$01               A:0000   X:004E   Y:0000   P:envMxdiZc   
$C1/5808   85 8E       STA $8E    [$00:008E]   A:0001   X:004E   Y:0000   P:envMxdizc   
$C1/580A   AD 10 A0   LDA $A010  [$7E:A010]   A:0001   X:004E   Y:0000   P:envMxdizc   
$C1/580D   C9 08       CMP #$08               A:0000   X:004E   Y:0000   P:envMxdiZc   
$C1/580F   B0 2A       BCS $2A    [$583B]     A:0000   X:004E   Y:0000   P:eNvMxdizc   
$C1/5811   C9 04       CMP #$04               A:0000   X:004E   Y:0000   P:eNvMxdizc   
$C1/5813   F0 11       BEQ $11    [$5826]     A:0000   X:004E   Y:0000   P:eNvMxdizc   
$C1/5815   AA          TAX                     A:0000   X:004E   Y:0000   P:eNvMxdizc   
$C1/5816   BD 14 A0   LDA $A014,x[$7E:A014]   A:0000   X:0000   Y:0000   P:envMxdiZc   
$C1/5819   AA          TAX                     A:0000   X:0000   Y:0000   P:envMxdiZc   
$C1/581A   BD CD A5   LDA $A5CD,x[$7E:A5CD]   A:0000   X:0000   Y:0000   P:envMxdiZc   
$C1/581D   29 80       AND #$80               A:0000   X:0000   Y:0000   P:envMxdiZc   
$C1/581F   05 8E       ORA $8E    [$00:008E]   A:0000   X:0000   Y:0000   P:envMxdiZc   
$C1/5821   9D CD A5   STA $A5CD,x[$7E:A5CD]   A:0001   X:0000   Y:0000   P:envMxdizc   
$C1/5824   80 15       BRA $15    [$583B]     A:0001   X:0000   Y:0000   P:envMxdizc   
$C1/583B   A9 01       LDA #$01               A:0001   X:0000   Y:0000   P:envMxdizc   
$C1/583D   4C BB 75   JMP $75BB  [$7E:75BB]   A:0001   X:0000   Y:0000   P:envMxdizc

Command 28 Used in Cyclone, probably related to command 27, which usually comes before 28

$C1/5840   64 8E       STZ $8E    [$00:008E]   A:0000   X:0050   Y:0000   P:enVMxdiZc   
$C1/5842   80 C6       BRA $C6    [$580A]     A:0000   X:0050   Y:0000   P:enVMxdiZc   
$C1/580A   AD 10 A0   LDA $A010  [$7E:A010]   A:0000   X:0050   Y:0000   P:enVMxdiZc   
$C1/580D   C9 08       CMP #$08               A:0000   X:0050   Y:0000   P:enVMxdiZc   
$C1/580F   B0 2A       BCS $2A    [$583B]     A:0000   X:0050   Y:0000   P:eNVMxdizc   
$C1/5811   C9 04       CMP #$04               A:0000   X:0050   Y:0000   P:eNVMxdizc   
$C1/5813   F0 11       BEQ $11    [$5826]     A:0000   X:0050   Y:0000   P:eNVMxdizc   
$C1/5815   AA          TAX                     A:0000   X:0050   Y:0000   P:eNVMxdizc   
$C1/5816   BD 14 A0   LDA $A014,x[$7E:A014]   A:0000   X:0000   Y:0000   P:enVMxdiZc   
$C1/5819   AA          TAX                     A:0000   X:0000   Y:0000   P:enVMxdiZc   
$C1/581A   BD CD A5   LDA $A5CD,x[$7E:A5CD]   A:0000   X:0000   Y:0000   P:enVMxdiZc   
$C1/581D   29 80       AND #$80               A:0001   X:0000   Y:0000   P:enVMxdizc   
$C1/581F   05 8E       ORA $8E    [$00:008E]   A:0000   X:0000   Y:0000   P:enVMxdiZc   
$C1/5821   9D CD A5   STA $A5CD,x[$7E:A5CD]   A:0000   X:0000   Y:0000   P:enVMxdiZc   
$C1/5824   80 15       BRA $15    [$583B]     A:0000   X:0000   Y:0000   P:enVMxdiZc   
$C1/583B   A9 01       LDA #$01               A:0000   X:0000   Y:0000   P:enVMxdiZc   
$C1/583D   4C BB 75   JMP $75BB  [$7E:75BB]   A:0001   X:0000   Y:0000   P:enVMxdizc


Command 2E

$C1/58E4   9C FF CF   STZ $CFFF  [$7E:CFFF]   A:0000   X:005C   Y:0000   P:enVMxdiZc   
$C1/58E7   A9 01       LDA #$01               A:0000   X:005C   Y:0000   P:enVMxdiZc   
$C1/58E9   4C BB 75   JMP $75BB  [$7E:75BB]   A:0001   X:005C   Y:0000   P:enVMxdizc

Command 01

$C1/4CF7   AD D1 A3   LDA $A3D1  [$7E:A3D1]   A:001B   X:000F   Y:CC74   P:enVmxdIzC   
$C1/4CFA   F0 04   BEQ $04    [$4D00]   A:001B   X:000F   Y:CC74   P:enVmxdIzC   
$C1/4CFC   7B    TDC   A:001B   X:000F   Y:CC74   P:enVmxdIzC   
$C1/4CFD   4C BB 75   JMP $75BB  [$7E:75BB]   A:001B   X:000F   Y:CC74   P:enVmxdIzC   


Title: Re: Tech Editor - Period
Post by: Agent 12 on May 10, 2008, 05:20:40 pm
27/28:

it seems to be that when moving sprites post 27 but before 28 gives them highest drawing priority (they are loaded ontop of other sprites).  Best example is with cat attack they use the 27 and 28's to make ayla go through the enemy with her first attack and then come back out in front of him with her second attack.

here's how I saw it


27:
move sprite be on one side of enemy
Pause FF  <-------she's in front of enemy during this pause
28 
Pause FF  <---------She's behind enemy during this pause
Title: Re: Tech Editor - Period
Post by: FaustWolf on May 22, 2008, 12:08:48 am
Ah, seeing Magus perform Lightning has always been a dream of mine. Thanks jsondag!
(http://img233.imageshack.us/img233/4340/image3fr0.gif)

I imagine volunteers could help you flesh this out by trying random values for unknown property specifications and documenting the results. Is there anything specific you wanted to tackle first? Maybe figuring out what all the graphics "header" bytes do?
Title: Re: Tech Editor - Period
Post by: Agent 12 on May 22, 2008, 01:31:32 am
There's not really any "most wanted" anymore.  I happily found my biggest question marks.  I talked to Geiger and he thinks 01 (which was bugging the heck out of me) is a "debugging command". 

Here's my current scratch paper:


DA 71?: 
   Hide super sprites like the grenade in megabomb

76 XX YY:  XX:  Seems to be angle, YY=target same as above
   Need more research

   
0D 24:  In all of cures Stars, in heal beams start, in Frog's Heal
   always has 01 after it


10 XX YY:
   10 70 1E:  In Life
   10 01 20:  In mega bomb
   10 02 11:  In triple kick



The best thing anyone can do is just play around with it..these aren't really imossible just tedious at this point.  Headers are important so there are some unknowns there, Justin I believe documented alot of the "super graphics" (*2/luminaire/flare)  i know it's possible to put some of lavos attacks in.

Oh yea one big question mark still is determining what element the magic is....like fire2  Ice2 I can't see any difference in the headers.

Share what you make, i'd like to see a "phantom bolt" for CE actually, try to replace fire2.  Actually I guess I should implement an export/import feature.


--JP
Title: Re: Tech Editor - Period
Post by: FaustWolf on May 22, 2008, 01:49:25 am
My "PhantomBolt" idea might necessitate a palette change for Layer 3 graphics I think, whereas the fifth graphics header byte only affects Layer 1&2 graphics. Thus I was able to get the little explody circle thingies that accompany the lightning bolt to turn purple, but there may or may not be a byte that determines the palette of the lightning bolt itself. I'll focus my efforts on getting the graphics header bytes explored for the time being, and seeing where elemental determinations might be made.
Title: Re: Tech Editor - Period
Post by: justin3009 on May 22, 2008, 09:10:58 am
It's possible to use any enemy graphics inside techs.
Title: Re: Tech Editor - Period
Post by: FaustWolf on May 22, 2008, 02:55:35 pm
I saw an option for the Shadow Doom Blaze sound effect somewhere, but can the editor currently access enemy spell graphics packets? And would the "switch" we discussed in Chakrafire's thread  (http://www.chronocompendium.com/Forums/index.php/topic,4979.msg86795.html#msg86795) come into play at all?
Title: Re: Tech Editor - Period
Post by: Agent 12 on May 22, 2008, 03:28:18 pm
I'm pretty sure the Byte 7 of the graphics header is shared by enemies and PC's.  I'm also pretty sure the same sound bank is used so the call sound command of this editor probably can call the sound you are looking for but it's not documented.  This conclusion is reached cause it's confirmed that gato's singing attack uses the exact same code (see the I think it's time to work on techs thread). 

However alot of byte 7 graphics causes the game tofreeze but someone can go through and try to find the ones that don't freeze, it's as easy as loading something that uses it....say hypnowave, open properties and type in the byte you want to try cast the spell and repeat.

Like I said alot of them freeze, maybe they use a different Command to load some bytes (for example try typing in 04 and you get a pretty cool one but it freezes afterwards).  Maybe eventually we'll get the enemy techs and see how it is done.

I don't think chakras codes will help out that much.  Some of them (the make PC2 cast spell for example) is already editable it's byte 1 of the animations header in properties.

--JP
Title: Re: Tech Editor - Period
Post by: FaustWolf on May 23, 2008, 12:31:39 am
jsondag, your tech editor is capable of providing hours upon hours of fun! In an attempt to create a "Fire Bomb," I accidentally created "DiscoBomb" :lol:
http://www.youtube.com/watch?v=PVg7-WLks74

Graphics Header values:
1st: 0x03
2nd: 0xF1
3rd: 0x00
4th: 0x22
5th: 0x03
6th: 0x06
7th: 0x13

The value 0x13 for the seventh byte is labeled "Fire" in the editor, so either some of the seventh-byte values are mislabeled, or I've stumbled upon some kind of switch (hopefully not; that would just make things too darned complicated).

I'm starting to feel that the first byte may determine the path sprite-layer spell graphics follow onscreen, whereas the sixth byte is the pointer to the sprite-layer spell graphics and the seventh byte is the pointer to the Layer 3 spell graphics. I'm probably wrong on that, but wanted to note it here in case I can find more evidence of this. In any case, there may be some complex relationship between the first and sixth header bytes.

json, once we get some cool samples, should we advertise the editor at Chrono Crisis, ChronoShock, GameFAQs CT board, etc? If people at other forums become interested enough, they might pitch in with more observations and accelerate the process, not to mention it would give people the necessary background tech editing skills they would need for a Tech Creation Contest. It's your work, so it's your call.

EDIT: With further experimentation, I'm becoming more confident that the first graphics header byte, at the very least, determines the "path" the sprite-layer graphics pack takes around the caster, whereas the sixth byte is the actual graphics pack to be used on the sprite layer. When I "sprite-layer," I'm using the terminology I'm familiar with in ZSNES, so it's the layer that can be toggled with the 5 key.

EDIT: Hee, one more before I turn in for the night. The following combination of header bytes freezes the game:
1st: 0x35
2nd: 0xEB
3rd: 0x00
4th: 0x0B
5th: 0x11
6th: 0x07
7th: 0x35

But, damn, doesn't Magus just look like the MAN standing there with that spotlight on him? Looks like he'd fit right in Saturday Night Fever.

Once again, some things are mislabeled in the edition I've got at least, and I think the mislabeling is probably restricted to header byte 7. There seem to be multiple Dark Matters and some others listed, so first priority for me is to find out what's labeled correctly and incorrectly there.

Thanks again for coding this! It is seriously awesome.

[attachment deleted by admin]
Title: Re: Tech Editor - Period
Post by: Agent 12 on May 23, 2008, 03:15:17 am
You were right about the mislabels thanks for pointing out the newest version has that fixed ( i had copy pasted the techs and were just reordering them by byte7, so where it stops being in numerical order was where it started being wrong).

That tech looks awesome by the way keep it up.  Go ahead and spread the news to other forums.  I probably won't be updating for awhile as I work on CE but it'd be great to come back and have alot of the commands figured out.

I suppose priority at this point should be:

A) Figuring out what determines the element
B) Figuring out headers, graphical and animation
C) Figuring out commands
D) Adding new techs (double triple, enemy).  In order to do this I need
         i) Location of MP (this is probably known i just have to confirm it myself, but we don't know if enemy techs even have this)
         ii) location of graphics header  (we probably know this too....but do we know if enemy techs have one?)
          iiii)  This is the hardest by far but also the most important.  Location of where the animations and sounds start AND end.  The best way is to just start one byte after the last known value, the first 4 byte will be the animation header.  Then look for another animation header after (they are usually something like 90 80 80 00).  Blank out what is in between and see if the tech stops working AND other techs continue to run flawlessly.

--JP
Title: Re: Tech Editor - Period
Post by: justin3009 on May 23, 2008, 08:31:39 am
THIS IS HEADERED ROM!  REMOVE 200 BYTES!

MP cost of techs begins at C273C, 1 byte each.
Crono:
C273C: Cyclone
C273D: Slash
C273E: Lightning
C273F: Spincut
C2740: Lightning 2
C2741: Life
C2742: Confuse
C2743: Luminaire
Marle:
C2744: Aura
C2745: Provoke
C2746: Ice
C2747: Cure
C2748: Haste
C2749: Ice 2
C274A: Cure 2
C274B: Life 2
Lucca:
C274C: Flame Toss
C274D: Hypno Wave
C274E: Fire
C274F: Napalm
C2750: Protect
C2751: Fire 2
C2752: Mega Bomb
C2753: Flare
Robo:
C2754: Rocket Punch
C2755: Cure Beam
C2756: Laser Spin
C2757: Robo Tackle
C2758: Heal Beam
C2759: Uzzi Punch
C275A: Area Bomb
C275B: Shock
Frog:
C275C: Slurp
C275D: Slurp Cut
C275E: Water
C275F: Heal
C2760: Leap Slash
C2761: Water 2
C2762: Cure 2
C2763: Frog Squash
Ayla:
C2764: Kiss
C2765: Rollo Kick
C2766: Cat Attack
C2767: Rock Throw
C2768: Charm
C2769: Tail Spin
C276A: Dino Tail
C276B: Triple Kick
Magus:
C276C: Lightning 2
C276D: Ice 2
C276E: Fire 2
C276F: Dark Bomb
C2770: Magic Wall
C2771: Dark Mist
C2772: Black Hole
C2773: Dark Matter

Tech effects start at C1CCD, 2 bytes each.
Crono:
C1ACD: Cyclone
C1CCF: Slash
C1CD1: Lightning
C1CD3: Spincut
C1CD5: Lightning 2
C1CD7: Life
C1CD9: Confuse
C1CDB: Luminaire
Marle:
C1CDD: Aura
C1CDF: Provoke
C1CE1: Ice
C1CE3: Cure
C1CE5: Haste
C1CE7: Ice 2
C1CE9: Cure 2
C1CEB: Life 2
Lucca:
C1CED: Flame Toss
C1CEF: Hypno Wave
C1CF1: Fire
C1CF3: Napalm
C1CF5: Protect
C1CF7: Fire 2
C1CF9: Mega Bomb
C1CFB: Flare
Robo:
C1CFD: Rocket Punch
C1CFF: Cure Beam
C1D01: Laser Spin
C1D03: Robo Tackle
C1D05: Heal Beam
C1D07: Uzzi Punch
C1D09: Area Bomb
C1D0B: Shock
Frog:
C1D0D: Slurp
C1D0F: Slurp Cut
C1D11: Water
C1D13: Heal
C1D15: Leap Slash
C1D17: Water 2
C1D19: Cure 2
C1D1B: Frog Squash
Ayla:
C1D1D: Kiss
C1D1F: Rollo Kick
C1D21: Cat Attack
C1D23: Rock Throw
C1D25: Charm
C1D27: Tail Spin
C1D29: Dino Tail
C1D2B: Triple Kick
Magus:
C1D2D: Lightning 2
C1D2F: Ice 2
C1D31: Fire 2
C1D33: Dark Bomb
C1D35: Magic Wall
C1D37: Dark Mist
C1D39: Black Hole
C1D3B: Dark Matter

Double Techs:
C1D3D: Aura Whirl
C1D3F: Ice Sword
C1D41: Ice Sword 2
C1D43: Fire Whirl
C1D45: Fire Sword
C1D47: Fire Sword 2
C1D49: Rocket Roll
C1D4B: Max Cyclone
C1D4D: Super Volt
C1D4F: X Strike
C1D51: Sword Stream
C1D53: Spire
C1D55: Drill Kick
C1D57: Volt Bite
C1D59: Falcon Hit
C1D5B: Antipode
C1D5D: Antipode 2
C1D5F: Antipode 3
C1D61: Aura Beam
C1D63: Ice Tackle
C1D65: Cure Touch
C1D67: Ice Water
C1D69: Glacier
C1D6B: Double Cure
C1D6D: Twin Charm
C1D6F: Ice Toss
C1D71: Cube Toss
C1D73: Fire Punch
C1D75: Fire Tackle
C1D77: Double Bomb
C1D79: Flame Kick
C1D7B: Fire Whirl
C1D7D: Blaze Kick
C1D7F: Blade Toss
C1D81: Bubble Snap
C1D83: Cure Wave
C1D85: Boogie
C1D87: Spin Kick
C1D89: Beast Toss
C1D8B: Slurp Kiss
C1D8D: Bubble Hit
C1D8F: Drop Kick
C1D91: Red Pin
C1D93: Line Bomb
C1D95: Frog Flare

Triple Techs:
C1D97: Delta Force
C1D99: Life Line
C1D9B: Arc Impulse
C1D9D: Final Kick
C1D9F: Fire Zone
C1DA1: Delta Storm
C1DA3: Gatling Kick
C1DA5: Triple Raid
C1DA7: Twister
C1DA9: 3D Attack
C1DAB: Dark Eternal
C1DAD: Omega Flare
C1DAF: Spin Strike
C1DB1: Poyozo Dance
C1DB3: Grand Dream

Each 2 byte field indicates the targets of the tech.
Examples:
07 00: One enemy (Example: Confuse, Charm)
08 00: All enemies (Example: Dark Matter, Ice 2, Luminaire)
80 00: One ally (Example: Cure, Aura)
81 00: All allies (Example: Heal Beam, Aura Whirl)
03 00: One fallen ally (Example: Life)
04 00: All fallen allies
12 03: Enemy area (Example: Cyclone, Dark Bomb)
0B 01: Enemy line (Example: Slash)
0C 05: Enemy line (Example: Flame Toss)
11 02: Area around character (Example: Area Bomb, Tail Spin)
1B 0A: Area around character (Example: Black Hole)
13 02: Area around character (Example: Max Cylone, Fire Zone)
0F 0B: Horizontal line (Example: Falcon Hit)
00 00: One ally status (Example: Haste, Magic Wall)
01 00: All allies status (Example: Life Line)
13 06: (Example: Double Bomb)
0D 01: (Example: Blade Toss)
Title: Re: Tech Editor - Period
Post by: FaustWolf on May 23, 2008, 11:34:29 am
0x00 for Byte 7 is the totally awesome Layer 3 effect for Antipode 3. :D

However, having edited DarkMatter, I've found that the sixth graphic header byte may not be in total control of the graphics pack used for the sprite-layer animation specified by the first byte. I can use the sixth byte to change what the little dark bubbles around Magus turn into as they disappear, but not what they begin as. Garrr, how confuzzling!

Oh, and using 0xFF for the seventh byte has caused freezes on me. Strange, as that should simply specify no Layer 3 effect (and actually works as expected graphically). My guess is there's some conflct within the spell coding when you try to pull an 0xFF on a seventh byte when the spell was using a non-FF value to begin with.

EDIT: A-ha! The third header byte also gives some control over the sprite-layer graphics pack used in the tech. In Dark Matter's case, this is the byte I have to use to alter the little bubblies around Magus as he's casting.

EDIT: Well, dern it if the second header byte doesn't also control which sprite-layer graphics pack is used! For the moment, here are my findings regarding the purpose of each header byte:

1st: Sprite-Layer Animation & Sound ID; if you want DarkMatter bubblies around Magus but the Fire 2 sound, one will have to go and edit Dark Matter's code if he or she uses Dark Matter's index. Note that I still haven't found where the appropriate CallSound() function is for changing DarkMatter's second sound effect; I can change the sound effect used for the bubblies just fine though.
2nd: Sprite-layer graphics pack index
3rd: Sprite-layer graphics pack index

4th: Do Not Touch. It has great potential for screwing up one's beautifully crafted tech. Not sure what it's purpose is yet.
5th: Sprite-layer graphics pack palette.
6th: Sprite-layer graphics pack index
7th: Layer 3 spell effect.


That three of the seven header bytes would all have some control over the sprite-layer graphics pack seems unrealistic to me though, so I'll investigate this further. Too bad there doesn't seem to be any function to change the palettes of Layer 3 effects.

EDIT:
Alrighty, here's something good enough to advertise with, though I'm miffed at the audio/video mismatch.
http://www.youtube.com/watch?v=AhI4900RBqY

Here's my notes on each tech:
Doom Blaze
*Based on Magus' Fire2
Main Window
*Second Object -> CallSound(E4)
View -> Properties
*Header
**First: 0x33
**Second: 0xEB
**Third: 0x00
**Fourth: 0x0B
**Fifth: 0x05
**Sixth: 0x13
**Seventh: 0x00

Curse
*Based on Magus' Magic Wall
View -> Properties
*Hacking
**Magic Type: 0x01
**Target: 0x0700
**Tech Type: 0x02
**Status Offenses: all set to "true," with STOP apparently taking precedence.
Title: Re: Tech Editor - Period
Post by: Agent 12 on May 23, 2008, 02:31:01 pm
The freezing may be that you are still using the "CallByte7Graphics" command but byte 7's graphics are pointing to nothing?  See if it's in the code I'm not sure which tech you are editing but it is almost always in object 00.

I looked into Dark Matter and found what the problem was (totally my fault).  I remember thinking dark matter and Blackhole were confusing me and it was because it was before I realized how much sharing of objects there was.  At the time I thought they used the same animations and sounds code and just different indexes for graphics/sounds.  Relooking at it I was totally off.  I fixed the problem and you can now easily change the sound effects of dark matter.  They weren't sharing all their code they were just sharing all their code except the big first three (If you remember the first three objects are always Caster, primary enemy hit, secondary enemy hit for multi enemy techs)

EDIT:  there was a short period of time where I had a version of the program up that had some debugging message boxes in it, you can redownload it if that bugs you.

--JP
Title: Re: Tech Editor - Period
Post by: FaustWolf on May 23, 2008, 02:45:19 pm
Suh-weeet, I'll do some more Dark Matter work and check on the CallByte7Graphics function. That's almost positively the source of the problem I was having, since I didn't even look at that function when I changed byte seven to 0xFF.
Title: Re: Tech Editor - Period
Post by: Agent 12 on May 23, 2008, 02:48:26 pm
By the way I didn't notice your edits when I made that post, those techs seriously look awesome.  It's amazing how much you can do just by editing the properties.  The stop probably takes precedence only visually.  From what I can tell the game only shows one bad status effect but the rest are still there.  If you wait for the stop to wear off they'll probably be blind or something.


EDIT:  You should save these spc files and in a few weeks I'll make an export/import function.  Right now I'm in the middle of a move across the country so i'm quite busy.


--JP
Title: Re: Tech Editor - Period
Post by: FaustWolf on May 23, 2008, 02:58:17 pm
Wow, good luck with the move. That the techs turned out well is a major testament to how user-friendly your editor is. Hopefully by the time you're able to sit still, we'll have recruited some helpers to identify graphics packets values or something. I haven't seen anything that looks like it corresponds to elements yet; I figure comparing Magus' elemental spell data (Lightning, Fire, Ice and Shadow all next to one another) will be the best way to identify the elemental addresses.
Title: Re: Tech Editor - Period
Post by: Agent 12 on May 23, 2008, 03:08:07 pm
Yea I really thought It would be in the properties where the status effect/power/hit% are located.  Unfortunately those are identical for fire/ice.  There may be yet another location in the rom that has to do with techs and what element they are.  ....i wouldn't know how to start looking for something like that.

--JP
Title: Re: Tech Editor - Period
Post by: FaustWolf on May 23, 2008, 05:48:26 pm
Suh-weeeet! Graphics packets for enemy techs and player techs are all stored together randomly. I just got Magus to perform "Dreamless!" YEAH, BABY!

HOWEVER -- two considerations that are going to make life miserable for a bit. First, some really cool-looking Layer 3 graphics packets, like Hexagon Mist and Lavos' Chaos attack, apparently require some additional code to finish the tech effect. For example, Magus' Lightning2 code has everything needed to open the Lavos/Chaos black hole thingy, but said black hole thingy doesn't release its cool lightning or close. The game freezes at that point.

Secondly, a lot of spell effects are going off in the corner of the screen. There may be some code that specifies the origin coordinates of the tech effects.

I'm keeping all the values I find in a spreadsheet, which I will upload in this thread at some point. If anyone is testing out Layer 3 spell Graphics Pack values, I've got 0x00 through 0x37 covered.

EDIT: YES! It has been confirmed before my very eyes -- for Layer 3 graphics that freeze, everybody, try those with Magus' Black Hole tech. Since it contains code necessary to close the Black Hole normally, that code apparently makes Lavos' chaos attack finish as well. I assume the case is similar with most techs that freeze mid-execution.
Title: Re: Tech Editor - Period
Post by: Agent 12 on May 23, 2008, 06:32:44 pm
Excellent is there an unknown in black hole that stands out?

Jp
Title: Re: Tech Editor - Period
Post by: FaustWolf on May 23, 2008, 06:54:19 pm
The animation headers are different, but the thing I find most unique about Black Hole is the sheer number of NewObjects it has in the main tech editing window. My guess is Black Hole might have extra animation functions necessary to close out the tech graphics. Dark Bomb might be a similar case.

Next time I look at the techs, I'll focus on what, exactly, Black Hole has that techs like Lightning2 and Dark Matter do not.

EDIT: Okay, I've definitely learned that the animation headers aren't what give Black Hole the special property of being compatible with Layer 3 graphics packs that need "closure." I switched the values for Black Hole's and Dark Matter's animation headers, and Black Hole still completed the Lavos chaos tech, whereas DarkMatter still failed to carry it all the way through.

It's definitely some command tucked into the extra NewObjects Black Hole has. Now to see if Dark Bomb can carry through in the same way...

EDIT: Nope, Dark Bomb fails. Now to ferret through the NewObjects and see what's different between Dark Bomb and Black Hole...

EDIT: Searching through the last four out of the seven objects that Dark Bomb and Black Hole have, I see no difference with the exception that Black Hole has a "Return" byte at the end of its seventh object whereas Dark Bomb does not. However, I'm guessing that the major area of interest should be the first three objects. I'm taking a look.
Title: Re: Tech Editor - Period
Post by: Agent 12 on May 23, 2008, 08:07:06 pm
Black holes objects are:

1- Caster
2- primary enemy
3- secondary enemy
4-7 = the 4 spheres around him when he casts stuff

the unknown 41's are probably moving something around.  The move sprite commands also have a variant where the second parameter is 1E and 1F, maybe this is the mystery command that moves layer 3 stuff?

There's quite a few other unknowns though:

unknown 7B(78, 00):     70's have in the past had something to do withh sound but who knowns

unknown 2D is almost ALWAYS above flash screen color

I figured out unknown 27 and 28

unknown DA(34):  In my notes i say that DA XX may possibly be used to do a command XX to layer three sprites.  But I dont think we know what 34 does...this is probably what is doing it.....you may want to try putting it in lit/ice/fire 2




--JP
Title: Re: Tech Editor - Period
Post by: FaustWolf on May 23, 2008, 08:17:33 pm
I believe you are correct on the DA(34) observation. Changing the 0x34 to 0x33, at least, causes the spell animation to freeze at the very point it would when any other spell is used as a base.

EDIT: On the other hand, it's going to take some careful teasing to confirm that command DA(34) is what's needed. I overwrote something in Dark Bomb with DA(34) and the chaos tech froze still. However, the DA(34) may have to come after a certain sequence of bytes to be interpreted properly.
Title: Re: Tech Editor - Period
Post by: Belthasar on May 25, 2008, 05:07:25 pm
If only I could figure it out. Thanks for sending me a link here.
Title: Re: Tech Editor - Period
Post by: OmniUnknown on May 25, 2008, 06:00:58 pm
For checking if your rom is headered or unheadered, NSRT can scan it.  If needed, it can add or remove headers as well.  There are different versions depending on what you use.  Here is a link.

http://www.romhacking.net/?category=&Platform=&game=&author=&os=&level=&perpage=20&page=utilities&utilsearch=Go&title=NSRT&desc=

Going to make some copy pasta from my hard type topic...  Belongs here better.  Also, I did all of this with the 3rd and 4th objects pretty much empty, except for return, which seemed to make it freeze without them.

All I have seen so far, is that in the second object of cyclone, fooling around with the parameters in unknown 6c(00,04), changes the color of the enemy when it is getting hit and how fast it flashes.  The first parameter is what effects the color they flash, and the 2nd seems to effect how fast they flash.  The lower the number the faster it flashes, although 00 does not produce any flash at all.  The variant infront for the most part seems to make you freeze if it is not on 6c. 

When I changed that same 6C to C4, this was the result.  http://www.youtube.com/watch?v=gvDrLMph-JA
When I changed 6C to D7, I got this instead.                   http://www.youtube.com/watch?v=B4MrMTCmn2U
Seems like that variable controls movement of both caster and target for the most part.

This is what happens when I keep the variable at 6C, while I changed parameters one and two to (07,03).  I also went into the first object, and changed LoadByte2Graphics(30) to 2E.  (30->2E)  Playing around with the LoadByte2Graphic seems to either give you a different color of Chrono Spinning, and on certain numbers is able to turn him into multiple fireballs while he spins.  Whenever it is even, is when it seems to be just normal sword spinning (00,0A,32, etc.), but being on an odd number (01,0B,31, etc.), causes that fire ball effect.     

(2E) http://www.youtube.com/watch?v=lxwjWHzaFJA
(FF) http://www.youtube.com/watch?v=FIFGG313xtw

>.>...
Title: Re: Tech Editor - Period
Post by: FaustWolf on May 25, 2008, 06:23:48 pm
Awesome, good to see others are interested. If we want to do a division of labor on tech exploration, I'll claim the seventh byte in the graphics header. It's not one of jsondag's top priorities, but I'm extremely interested in identifying the Layer 3 graphics effects and seeing which ones will need special coding to work.
Title: Re: Tech Editor - Period
Post by: Agent 12 on May 25, 2008, 07:08:00 pm
Just so you know when you are exploring the unknowns you want to only change paramters in order to figure out what they do.

For example unknown 6C XX YY the command is 6C.  If you change 6C to anything else you are dealing with a whole new command.  6C probably does have something to do with palettes since almost all the palette commands have been in the 60's. 

--JP
Title: Re: Tech Editor - Period
Post by: OmniUnknown on May 25, 2008, 08:46:32 pm
Eh, thanks for that.  Think I am going to stay away from this editor for a bit, it is really distracting me from that CT hard type I am working on XD.  It is just very fun playing with the editor I suppose.  Anyways, the last thing I was working on, was trying to adjust Cyclone so that it spins in a bigger circle, and hits all enemies.  The all enemies part I got, and getting it to go around in a bigger area was not that bad, although it could look a bit better.  Can't record right now.  Probably will start up again when I finish my project.
Title: Re: Tech Editor - Period
Post by: Agent 12 on May 25, 2008, 09:10:21 pm
You got it to go in a bigger circle??   I was attempting to do this and failed....


--JP
Title: Re: Tech Editor - Period
Post by: OmniUnknown on May 25, 2008, 10:15:12 pm
Eh, I know I said I wouldn't upload a video for some time, but that post made me feel like going through with it >.>...

Anyways, here it is.

http://www.youtube.com/watch?v=4HmNuMpZ27I

I will also write the exact things I had that gave this outcome.  It still needs to be tweaked in my opinion.  If you can't tell, I made it aim for all enemies, seeing how that big area around enemy option did not work.

-[E0917][E094A][52]NewObject
Set SpeedLevel(0C)
Set FacingNode(0D)
Load Animation06(1D)
Pause(05)
LoadAnimation06(26)
SuperCommand(1D)
Unknown27()
LoadByte2Graphics(30)
Move to Target(02,03)
Hide Shadow
Section++
Supercommand(1F)
Displace00(00)
CallSound(FF)
Section++
SuperCommand(1E)
LoadStaticAnimation(0E,02)
Set Speed Level(0C)
Move To Target(02,19)
Hide Shadow
Unknown28()
UnknownDA(1B)
Teleport(03, 33)
LoadAnimation06(03)
Wait for Section 03
Pause(14)
UnknownA0()
Unknown01()
Return

-[E094B][EO95D][19] NewObject
LoadGraphicHeaderByte7(00)
Wait for Section 01
Pause(14)
UnknownD7(00,0C)
Wait for Section 02
Pause(02)
SuperCommand(00)
LoadAnimation06(03)
Section++
Return

[E095E][E096A][13] NewObject
Wait for Section 01
Pause(14)
Wait for Section 02
Pause(02)
SuperCommand(05)
LoadAnimation06(03)
Return

-[E096B][E097F][21] NewObject
LoadByte2Graphics(30)
Wait for section 01
LoadSpriteAt(00)
Set Priority(03)
Unknown60(00)
Pause(04)
LoadAnimation02(00)
DrawingStatus(70)
Wait for Section 02
DrawingStatus(71)
Return


Very sure I did not touch the 5th object.  Sorry I can't tell you exactly what I did, I should have kept a record of what I got rid of, but hopefully you can see what differs between my cyclone and the original cyclone...  I think the main changes were that I got rid of Unknown6C(00,04) in the 3rd object, and changed the Unknown6C(00,04) in the 2nd object to UnknownD7(00,0C).

Hope this helps.
Title: Re: Tech Editor - Period
Post by: Agent 12 on May 25, 2008, 10:42:11 pm
Hm,

sadly I dont have time to dissect this right now, i'm wondering if somehow making it "all enemies" affected this.

I'm not sure how this command:

Move to Target(02,03)

is affected when target is all enemies?

--JP
Title: Re: Tech Editor - Period
Post by: FaustWolf on May 29, 2008, 11:40:40 pm
More fascinating news on the Layer 3 gfx pack front, jsondag. It appears that some graphics, like Magus' Dark Bomb, get shoved to the corner of the screen when they're used with hit-all spells, like Lightning 2 or Dark Matter. Apparently there's a conflict when the game tells some spell effects to be centralized with respect to the screen. Therefore, lots of spell effects (especially expanding domes and ovals) work perfectly with Dark Bomb but get stuck in the corner of the screen with a hit-all spell. There's something about Dark Bomb that is *required* for certain Layer 3 gfx packs, just as there's something about Black Hole that is *required* for Lavos' Chaos attack and certain others. It's not simply the hit-all targeting property that's responsible, either. I can give Dark Matter an expanding red-dome graphic and give it an enemy zone targeting property, and the graphic is still shoved to the top-left screen corner.

I'm compiling a list of what all the Layer 3 gfx indices produce, and which ones need certain code to work properly. So far I've come across "Dark Bomb" and "Black Hole" special situations.

Also, I see there's some unknown bits in the tech properties. Is it possible that elemental info might be stored as bits? Let's see, it would probably have to be at least three bits involved if it's something like this:

000 = No element
001 = Lightning
010 = Water
011 = Fire
100 = Shadow

Or it might be something completely different, with the leading bit specifying whether there's an element at all, and the actual elemental scheme being like so:

00 = Lightning
01 = Water
10 = Fire
11 = Shadow

I wonder if something like this would be plausible? It might throw someone off during an investigation of the data at hexadecimal level, where we might expect 0x01 to be Lightning, 0x02 Fire, 0x03 Water, etc., etc. This is all hypothetical musing of course.
Title: Re: Tech Editor - Period
Post by: Agent 12 on May 29, 2008, 11:55:17 pm
The only reason I dont think that "properties" holds the elemental info is because Magus level 2 spells all have the same properties.

There's probably a "current target coordinates" variable somewhere.  For target spells it gets set to the enemies location hit all spells probably just set it to instead of picking one randomly. 

Getting a list of the "special" layer 3 graphics will definately be useful and we can find similar unknown commands for those spells.  It'll be exciting to be able to cast enemy techs that currently freeze.   :D

Great Job Faustwolf.

--JP
Title: Re: Tech Editor - Period
Post by: FaustWolf on May 30, 2008, 05:53:58 pm
My observations regarding the Layer 3 GFX packs are attached as a Microsoft Excel spreadsheet. I have a page for the CallSound () function values as well, but I haven't gotten to checking those out yet. Some spell effects are really awesome; I could easily see things like Quake and Poison Mist spells that affect groups of enemies. A few are suitable for double techs; there's one with some snazzy black triangles that turn into a Flare. It's originally some enemy tech I'm sure, but it's a great basis for a Lucca/Magus double tech.

Useful Layer 3 effects seem to terminate at index 0x7B, and may in fact summon tilesets from that point on. The list isn't quite orderly enough for the wiki, but should be a major help to anyone interested in exploring tech graphics in the meantime.

When I return to tech investigation, I'll focus on isolating the commands that determine where the GFX pack is applied on-screen and how to get certain Layer 3 effects to "progress." Some don't even work fully with Black Hole, but probably require repeating segments of "progression" code that tell the GFX pack to keep unloading its stuff. Delta Force is one of these.


[attachment deleted by admin]
Title: Re: Tech Editor - Period
Post by: Agent 12 on July 08, 2008, 01:07:40 pm
I added the much sought after import/export system.  I haven't debugged it much though just did a few tests real fast.  so make backups first!

--JP
Title: Re: Tech Editor - Period
Post by: Mauron on July 11, 2008, 11:54:59 am
Locating enemy techs:

1) Set Exec breakpoint C14CC4.
2) Wait for enemy to attack.
3) Note the offset given. Spekkio returned this:
Code: [Select]
$C1/4CC4 B7 E6 LDA [$E6],y[$CD:AD2B]
The attack Spekkio used has the animation data start at $CD:AD2B.
4) The fastest way to resume is to disable the breakpoint, as it will step through the entire animation if you just hit run.
5) Note the attack used. Spekkio cast ice in this case.
6) Open the AI editor and find what attacks the enemy has.
7) The AI editor lists Spekkio's Killwala form as having the attacks 25, 2A, and 2B.
8) The encyclopedia's attack list explains what those are: http://www.chronocompendium.com/Term/Attacks.html (http://www.chronocompendium.com/Term/Attacks.html) Spekkio used attack 2A.

Double and triple techs can be done the same way. Set an exec breakpoint on C1D5EF to find the header. Enemies do not use the same header reading (and probably not header in general).
Title: Re: Tech Editor - Period
Post by: Vehek on July 11, 2008, 01:43:18 pm
Most of the double techs I've looked at don't seem to have a simple header. For example, Aura Whirl loads the header data of Aura, and Fire Whirl loads the headers of Cyclone and Flame Toss. I think Double/Triple techs with different effects than the "components" might have their own headers. (Lifeline does, at 0C2427)
Title: Re: Tech Editor - Period
Post by: Mauron on July 11, 2008, 02:22:40 pm
That may be right; I didn't look at the headers very closely.

Some of the enemy attacks:

Code: [Select]

00 - CD9706
01 - CD9727
02 - CD97D4
03 - CD97F2
04 - CD982F
05 - CD98C4
06 - CD9920
07 - CD9987
08 - CD99D8
09 - CD9A3C
0A - CD9A3C?
0B - CD9BC6
0C - CD9BF8
0D - CD9C1A
0E - CD9D05
0F - CD9E1F
10 - CD9EF0

You can find which attack they represent with this list. http://www.chronocompendium.com/Term/Attacks.html (http://www.chronocompendium.com/Term/Attacks.html)
Title: Re: Tech Editor - Period
Post by: Agent 12 on July 11, 2008, 02:48:16 pm
Good job Mauron.

I was worried that double/triple techs would be complicated.  If we can still get the start/end of the events i'll  just make properties disabled for Enemies/Techs until we know more information.

I'll test out enemies when I get time. 

--JP
Title: Re: Tech Editor - Period
Post by: Mauron on July 11, 2008, 10:08:31 pm
Here's another set.
Code: [Select]

11 - CD9FB5
12 - CDA0E9
13 - CDA175
14 - CDA247
15 - CDA247
16 - CDA2B9
17 - CDA372
18 - CDA426
19 - CDA4CC
1A - CDA59D
1B - CDA5F4
1C - CDA6AA
1D - CDA73A
1E - CDA7C9
1F - CDA7E4
20 - CDA81A
Title: Re: Tech Editor - Period
Post by: Agent 12 on July 11, 2008, 11:31:30 pm
Mauron,

Where in the Rom are these things loacated?  For example if I load this in a hex editor what address should I go to?  The given addresses are out of range...

--JP
Title: Re: Tech Editor - Period
Post by: ZealKnight on July 12, 2008, 12:59:14 am
I don't do any programming so is this hard to do or could I make a tech in like a week?(of course I'm including experience) In other words how difficult will this be?
Title: Re: Tech Editor - Period
Post by: Vehek on July 12, 2008, 01:05:41 am
Repost (and reword):
Those are SNES addresses. Change that C to a 0.
Title: Re: Tech Editor - Period
Post by: Agent 12 on July 12, 2008, 01:10:30 am
Zeal knight

Hopefully you can make one in a week. Browse other techs and get a feel for what is going on. Yet put some stuff and let us know If you issues look for my post about haste 2
Vehek I did not know that ha ha I don't know basics thanks

Jp
Title: Re: Tech Editor - Period
Post by: ZealKnight on July 12, 2008, 01:20:00 am
Ok, but now for the stupid questions. What do I need, I downloaded the link under Where but it says " the application failed to initialize properly (0xc0000135). click ok to terminate the application." And I have no clue what that means.
Title: Re: Tech Editor - Period
Post by: Agent 12 on July 12, 2008, 03:21:36 am
First off you are going to need to get tf running to remove headers get that running first cause that will make sure you have the .net framework working.

Jp
Title: Re: Tech Editor - Period
Post by: Agent 12 on July 12, 2008, 03:22:25 am
Also for the link right click and choose save as don't just click it.

Jp
Title: Re: Tech Editor - Period
Post by: Ozzie on July 12, 2008, 07:36:48 am
http://fusoya.eludevisibility.org/la/index.html (http://fusoya.eludevisibility.org/la/index.html)

Download Lunar Address, it's an invaluable tool to convert between file addresses and snes addresses. Any addresses churned out by a debugger (Geiger's debugger for example) are in SNES format, where all the data and code are stored in banks. Hi ROM and Lo ROM are a bit different from each other, but still not a problem with Lunar Address.


Tick the third checkbox (HiROM) and enter the snes address in the lower righthand box, and the file address (for use with a regular hex editor) will appear in the lower left hand box. I have snapped a shot of me converting one of the enemy tech location addresses.

Alternately, you can type in a file address in the lower left, and it will convert it to an SNES address in the lower right, useful for setting a breakpoint in a debugger.





[attachment deleted by admin]
Title: Re: Tech Editor - Period
Post by: FaustWolf on July 12, 2008, 02:18:45 pm
ZealKnight, you could whip up some cool techs in a matter of minutes, probably. Layer 3 graphics effects are all listed in an Excel file attachment a page back or so. I haven't done any investigation of sound or much investigation of Layer 1 graphics effects though, so you're on your own there. Also, doing techs that involve a character actually moving during the tech (like Crono's Cyclone, or Ayla's Triple Kick) will be significantly more difficult than whipping up magic-only techs that involve only spellcasting animations.
Title: Re: Tech Editor - Period
Post by: Agent 12 on July 13, 2008, 12:35:23 am
Let thy enemy techs be editable!

This release is going to set up for the next release of tech editor where everything is loaded up from a file (like the AI editor).  Till then there's a new link on the front page load up the new techeditor.exe and the text file.  I haven't tested this besides loading in the enemy techs and making sure they were loading correctly.  But it seems to be exactly the same as PC techs!

There's still no "enemy tech properties" (like graphics...) but this is certainly step forward.


Note:

Mauron...if you do have the time while debugging out enemy techs it's be incredibly helpful if you could take the following extra steps:

1)  Debugger gives you address
2)  Load up address in hex editor
3)  Note current address...for example D[XX][YY] where XX YY are any hexadecimal number
4)  The bytes before this address are object pointers you want to find the object pointer to the this point.  so scan the bytes before for [YY][XX]] (note they are reversed)
5)  This is sthe true "beginning of the tech".  It would save me time....however that's very selfish of me.  So don't worry about it unless you have free time.

--JP
Title: Re: Tech Editor - Period
Post by: Mauron on July 13, 2008, 12:59:16 am
I'll start giving you the true beginning point from now on.
Title: Re: Tech Editor - Period
Post by: Mauron on July 13, 2008, 01:50:17 am
I tried looking up the beginning point, but I kept getting the same few values. Can you double check my work?

Code: [Select]

21 - CDA905 D95DC
22 - CDA9A7 D95DC
23 - CDAA42 D95DC
24 - CDA175 DA219
25 - CDAAC6 DAB80
26 - CDABA1 D95DC
27 - CDABD9 D95DC
28 - CDABD9 D95DC
29 - CDAC71 D97D4
2A - CDAD2B D95DC
2B - CDADA9 D97D4
2C - CDA426 D95DC
2D - CDADFA D97D4
2E - CDAE3B D95DC
2F - CDAF39 D95DC
Title: Re: Tech Editor - Period
Post by: Agent 12 on July 13, 2008, 03:28:51 am
I'm not at my computer right now. But just so you know I have had a few that have given me the ame values so far I think they are just stronger versions and the value is set in the properties which we have not found yet. Think rust tyrano fire breath vs black tyrano fire breath same animations different attack value.

Ill double check tomorrow.

Jp
Title: Re: Tech Editor - Period
Post by: Vehek on August 05, 2008, 12:03:41 am
I think I may have the (power, etc.) headers for enemy techs!
I set a write breakpoint on 7EAEE6 (the start of where it writes to when loading player techs or player physical attacks) and found that when an enemy made a tech attack, $C1/D838 was executed to load the data.

Enemy tech property headers start at 0C7AC9.
Title: Re: Tech Editor - Period
Post by: Agent 12 on August 05, 2008, 12:40:04 am
!!

Do you know how long their properties are??

--JP
Title: Re: Tech Editor - Period
Post by: Vehek on August 05, 2008, 01:32:08 am
They also seem to be 12 bytes long. However, they don't store all the possible effects.
Title: Re: Tech Editor - Period
Post by: Agent 12 on August 05, 2008, 02:24:04 am
Added the enemy techs that mauron posted earlier (it looks like they were still wrong, i'm not sure what you were doing wrong).  I also added support for enemy "properties".  Note that right now it says view properties but you can edit things like graphics headers etc.  Don't edit anything except what is labeled under "Properties" (it's more clear when you use the program). 

Judging off the enemy stat attacks it looks like vehek is correct.  They see to be syncing up.  It also looks like the final status affect unknown for offense is "slow" (nagettes slow spell gave it away).

Remember don't edit anything except things located under the properties category.

--JP
Title: Re: Tech Editor - Period
Post by: Vehek on October 01, 2008, 07:22:41 pm
Over in the 8th character topic, I posted a command the game uses to find what PC grouping a attack/tech falls under. It looks like element is in nearby data.
$C1/D6A4 BF EE 1B CC LDA $CC1BEE,x (x is attack/tech index * 0B)
I'm going to try to find how enemy attacks are determined.

edit-
I noticed that for PCs, it stored the value it got to 7EB190, and I used that to find the command for enemy techs.
$FD/AAF6 BF CC 6F CC LDA $CC6FCC,x
(x is same as before)
Title: Re: Tech Editor - Period
Post by: JLukas on October 02, 2008, 06:01:01 am
tech index * 0B

If it hasn't been mentioned already, $0B is the max number of objects in a battle (3 PCs, 8 enemies)  It may or may not apply to that specific example, but it's something to be on the lookout for.
Title: Re: Tech Editor - Period
Post by: Zakyrus on October 09, 2008, 05:38:38 pm
Could you make it so you can change what "enemy type" an enemy is? ...Dinosaur, Magical, Robot, etc.

This would be fantastic for use with weapons that have specific functions to such types.
Such as "extra damage to dinosaur types" or "150%/200% to magical" or "Stop on Machine types"

~Z
Title: Re: Tech Editor - Period
Post by: JLukas on October 09, 2008, 08:10:06 pm
I was looking into that a few days ago, in fact.  Yes, it's a simple bit setting in the enemy stats.  If you have a list of which monsters you want to update, post a list and I can find the bytes to change.

Is there a setting for dinosaur enemies, though?  I only saw Machines and Magical types.
Title: Re: Tech Editor - Period
Post by: Zakyrus on October 12, 2008, 06:11:09 pm
I was looking into that a few days ago, in fact.  Yes, it's a simple bit setting in the enemy stats.  If you have a list of which monsters you want to update, post a list and I can find the bytes to change.

Well, there's ALOT of them I'd like to know...is there a formulae for finding that out, or is the data staggered?

Quote
Is there a setting for dinosaur enemies, though?  I only saw Machines and Magical types.

In the "Chrono Trigger Editing Companion", there's a catagory for "extra damage to dinosaur types" (it's near the top of the weapon-stats combo-list) so I was assuming there was.
Title: Re: Tech Editor - Period
Post by: JLukas on October 14, 2008, 03:58:45 am
Quote
Well, there's ALOT of them I'd like to know...is there a formulae for finding that out, or is the data staggered?

Enemy index hex value x $17 +CC4715

the result is the byte to modify:

set bit 08 to be a magic enemy
set bit 40 to be a machine enemy

Ex: Gato $92 x $17 = $D1E
$D1E + $CC4715 = $CC5433

Quote
In the "Chrono Trigger Editing Companion", there's a catagory for "extra damage to dinosaur types"

It was probably confused with the Lightning Element then.  I don't know of any weapon/spell for use against a dinosaur enemy type.
Title: Re: Tech Editor - Period
Post by: Zakyrus on October 14, 2008, 05:25:03 pm
Enemy index hex value x $17 +CC4715

the result is the byte to modify:

set bit 08 to be a magic enemy
set bit 40 to be a machine enemy

Ex: Gato $92 x $17 = $D1E
$D1E + $CC4715 = $CC5433

Cool. I'll play around with this later tonight.  :D

Quote
It was probably confused with the Lightning Element then.  I don't know of any weapon/spell for use against a dinosaur enemy type.

I'll try putting the modifier on a weapon and see if it does anything different... I'll keep you informed.

~Z
Title: Re: Tech Editor - Period
Post by: Rickets on November 29, 2008, 09:54:57 pm
I can't get tech editor to run, I downloaded both files and the .exe just crashes and MS gives me an error report option.

"TechEditor-Provoke has encountered a problem and needs to close." Advice??

The .net 2 installer i downloaded and installed is called dotnetfx.exe (I heard this was needed in order to run techeditor)

I used this one...
http://www.microsoft.com/downloads/details.aspx?FamilyID=0856EACB-4362-4B0D-8EDD-AAB15C5E04F5&displaylang=en

Or could it be that I need this one too?
http://msdn.microsoft.com/en-us/netframework/default.aspx
Title: Re: Tech Editor - Period
Post by: Agent 12 on November 29, 2008, 10:23:33 pm
Well...i'm surprised that it doesn't work with 2.0, but just to be safe get the latest version (.net 3.5 sp1).  Maybe I'm using something from the newest version.  Are you able to run TF it also uses the .net frame work. 

http://www.microsoft.com/downloads/details.aspx?FamilyID=ab99342f-5d1a-413d-8319-81da479ab0d7&displaylang=en



--JP
Title: Re: Tech Editor - Period
Post by: Rickets on November 30, 2008, 03:43:34 pm
Thanks jsondag2, problem solved. Might wanna put that link in post 1 if you don't mind... :)
Now the adventure begins  :D
Title: Re: Tech Editor - Period
Post by: Rickets on November 30, 2008, 04:16:34 pm
My pc is on the fritz or something cuz i couldn't edit my post... sorry.
As for TE-P

I'll have to look for a step by step tut in order to figure out how to use this. I can't seem to understand the relationship between TE-P and the various tech info pages here...

Also, is this the right TE-P? I got it from post 1 of this topic... And it doesn't look like the picture in post 1 (Mine doesn't seem to have a open unheadered rom option...

[attachment deleted by admin]
Title: Re: Tech Editor - Period
Post by: Agent 12 on December 01, 2008, 04:51:30 am
good point :)  added.

Enjoy it, i'm stopped updating it to focus on CE but you can expect any revelations you find to be supported at SOME point in the future ;)


--JP

EDIT:  Here's a tutorial......I'll add it to the front page too haha. 

http://www.chronocompendium.com/Forums/index.php?topic=5379.0

Those pictures are from Version 1, definitely outdated.  Read through the tutorial I made it pretty thorough and if you have any problems let me know.  If you are trying to make the simple animation changes that were mentioned in the "ideas" thread it should be decently simple.  Look for the "animation" tree node. 

The tricky part is figuring out what the objects are but hopefully that's more clear after reading the tutorial.
Title: Re: Tech Editor - Period
Post by: FaustWolf on December 14, 2008, 07:00:22 pm
Not sure if it's been recorded here before, but just wanted to report that the first header byte of a tech does *not* control the Element of the attack, although it *does* seem to have bearing on the color an enemy flashes when struck with the Element. I was having problems changing Magus' Ice 2 into a whirlpool effect graphically in terms of proper placement on the screen, and I used his header byte from Dark Bomb. The resulting effect makes enemies flash black, but it's still a Water elemental.

EDIT: Also, I recall that I promised to upload a patch or something for the Doom Blaze and Curse techs. I've got them here, plus a few more goodies in Magus' repertoire.

[attachment deleted by admin]
Title: Re: Tech Editor - Period
Post by: Vehek on December 15, 2008, 07:52:43 pm
Back in October, I posted something that apparently controlled the element of the attack. The enemy one probably should be confirmed though.
Title: Re: Tech Editor - Period
Post by: FaustWolf on December 15, 2008, 08:07:25 pm
I see now:

Quote from: Vehek
Over in the 8th character topic, I posted a command the game uses to find what PC grouping a attack/tech falls under. It looks like element is in nearby data.
$C1/D6A4 BF EE 1B CC LDA $CC1BEE,x (x is attack/tech index * 0B)
I'm going to try to find how enemy attacks are determined.

edit-
I noticed that for PCs, it stored the value it got to 7EB190, and I used that to find the command for enemy techs.
$FD/AAF6 BF CC 6F CC LDA $CC6FCC,x
(x is same as before)

Does the BF EE 1B CC LDA $CC1BEE code refer to the Elemental determination then?
Title: Re: Tech Editor - Period
Post by: Agent 12 on December 15, 2008, 08:25:24 pm
FW i added that unheadered patch to the front page so people can see it more prominantly.

As a bit of an update to you guys I dabbled in the TFPA and it is definitely going to be enough for our needs :) The only real hold up I had was a silly error by me which Geiger help me with.  I'll probably make a tutorial it definitely requires a bit of programming knowledge but nothing I can't handle  8).  It's incredibly well documented and lets me put some cooler stuff in.....for example the first plugin i'll make is probably a shop editor.  For the like...4 of you that played with the shop editor i made you'll remember you had to have a txt file that the editor read the shops from cause I was to lazy to read them from the rom.  This was annoying cause if you changed the name of the items in the rom you had to manually change it in the txt file.  But being a plugin for TF I have access to the items name right away.

Anyways that was a bit of a rant.  Elemental determination would be a pretty big thorn out of my side if you guys can figure out where it's coming from.  It seems unlikely that it is more than one byte.

--JP
Title: Re: Tech Editor - Period
Post by: JLukas on December 19, 2008, 05:22:52 pm
PAR code C145A600 will load the enemy 7 byte tech data sets instead of the PC 7 byte sets.  Add 7EAE93xx where xx is the enemy tech index.  7EAE93B4 will allow PCs to use Zeal's Hallation/HP goes to 1 tech, for example.  However, at the moment this doesn't change the damage or target, which is somewhere else in the tech structure. 
Title: Re: Tech Editor - Period
Post by: Agent 12 on December 19, 2008, 10:37:50 pm
Oh, cool stuff!

We've actually found the "properties" for enemy techs IIRC.  I actually thought this got added in the TechEditor executable?  I can check when I go home.  Vehek found them either in this thread or the EnemyAI thread.

--JP
Title: Re: Tech Editor - Period
Post by: JLukas on December 21, 2008, 05:24:58 am
C145A600
7EAE93B4
CC1BFE0E
CC1ACD08
CC1ACE00

Fully working Hallation tech when Crono uses Cyclone.  The benefit was finding out where the data is loaded for PCs vs. enemies.  In this case, the special formula for the attack:

Special formula index (ex: set HP to 1)
PC Tech index * 0B + 0C1BF3
Enemy Tech index *0B + 0C6FD1

The special formula index is multiplied by 3 and used to read 3 byte data sets starting 0C2A05.  First byte is the routines index, second byte success chance, and third byte unknown.

0C6FC9:0C7AC8 is enemy data sets that are 11 bytes each, and there's 256 total.  Byte 4 is what Vehek described as element earlier*.  Byte 9 is the special formula index byte.

*Byte 3 and Byte 4 are loaded together, and this may be target related instead of element, at least for enemies.  Something isn't matching up correctly with the target bytes.
Title: Re: Tech Editor - Period
Post by: justin3009 on December 21, 2008, 09:22:11 am
Wow!  That's amazing JLukas!
Title: Re: Tech Editor - Period
Post by: Agent 12 on December 22, 2008, 05:20:40 pm
JLukas, I wanted to post this before but the encyclopedia had a hiccup.  Are the 11 bytes possible the "Tech Properties" for enemy Techs (Note that I have them as 12 bytes for the PC, maybe i'm wrong?)?

http://www.chronocompendium.com/wiki/index.php?title=Tech_Data_Notes#Tech_Properties

--JP
Title: Re: Tech Editor - Period
Post by: justin3009 on December 22, 2008, 06:52:40 pm
http://jp.youtube.com/watch?v=U6cA9uHij6E - Lucca +  Robo..Lol
http://jp.youtube.com/watch?v=xAqFiRIOXLQ
http://jp.youtube.com/watch?v=6UEW-JccUec

This is what happens when you disable one code and try out techs.  It's rather hilarious at times.
Title: Re: Tech Editor - Period
Post by: FaustWolf on December 22, 2008, 07:50:19 pm
Gotta love the Naga-Ette stomp. Nice work justin.
Title: Re: Tech Editor - Period
Post by: JLukas on December 22, 2008, 07:52:44 pm
Quote
Are the 11 bytes possible the "Tech Properties" for enemy Techs (Note that I have them as 12 bytes for the PC, maybe i'm wrong?)?

There's the 11 byte sets at 0C6FC9:0C7AC8 (256 total), followed by the 12 byte sets starting 0C7AC9 (also 256 total)

This format also appears to hold true for the PCs (11 byte sets followed by 12 byte sets)  The exact range for PC 11 byte sets is still unknown.

Title: Re: Tech Editor - Period
Post by: Agent 12 on December 22, 2008, 08:13:21 pm
Hm....so perhaps these mysterious 11 byte sets hold the key for the elemental data?  You mentioned that target is within the 11 byte sets though.  Currently we load the data from C1ACD
 and onward (2 bytes each) for that. 

--JP

EDIT:  Note i'm not disproving your statement earlier cause obviously enemies could be different just pointing out the 11 bytes must be different for PC techs and enemy techs
Title: Re: Tech Editor - Period
Post by: JLukas on December 24, 2008, 12:20:56 pm
Ignore the earlier note about target located in the 11 byte sets (although, it's possible changing those bytes could modify target as a side effect).  The true 2 byte target sets for enemies was found at 0C86C9:0C88C2

The highest known enemy tech index is $FC, an attack used by enemy $25 Zeal.

0C1BEB:0C20F1 is the PC 11 byte sets, but the range is unconfirmed.  The PC 12 byte sets start at 0C213F.

In summary, PCs and enemies both have the following:

1. 2 byte target sets
2. 11 byte sets that contain an element related effect and damage formula
3. 12 byte sets that contain a % success, offense status effect, among other things.
4. 7 byte sets that contain the tech animations and graphics to load.
Title: Re: Tech Editor - Period
Post by: Mauron on January 07, 2009, 05:06:55 pm
I've explored the first tech animation header byte a little more, and found some other values for it. I believe the pattern is this:

Quote
D0 - Dual tech single target
D8 - Dual tech multiple target
F0 - Triple tech single target.
F8 - Triple tech multiple target

I'm sure that D0 and D8 transform object two's graphics into a PC, based on data starting at 0C249F, and I believe ending at 0C2534.

Edit: 2E 01 seems to be the stop processing animation command, found at the end of object 1 in every tech I've checked.

Edit 2: The Section++ command is missing from the add node dropdown.

Edit 3: It seems there's more to my earlier data on byte one of the tech editor. I haven't figured out the exact pattern yet.

Edit 4: Scratch that, I forgot one of my changes to the ROM had that data being read from a different location.

Edit 5: Load Animation variants: 02 and 03 load different animation sets. 06 freezes when not used on a PC object.
Title: Re: Tech Editor - Period
Post by: Chrono7045 on January 23, 2009, 10:59:34 pm
Hi, i just downloaded the Tech Editor and the .NET Framework, but it still won't work. When I try to open it, i get "TechEditor-Provoke has stopped working.
'Windows is checking for a solution to the problem.'
'A problem has caused the program to stop working correctly. Windows will close the program and notify you if a solution is available'"
Which... It never did. I cant even open it. What do I do? I have Vista, so maybe that's the problem. Do you have a Vista-compatible Tech Editor?
Title: Re: Tech Editor - Period
Post by: Agent 12 on January 23, 2009, 11:27:28 pm
I definitely used it on my vista computer, heck i created it on a vista computer.   Are you 100% sure you have the latest version of the .Net framework?

--JP
Title: Re: Tech Editor - Period
Post by: Chrono7045 on January 25, 2009, 05:07:08 pm
Yeah, I'm pretty sure. I clicked http://www.microsoft.com/downloads/details.aspx?FamilyID=ab99342f-5d1a-413d-8319-81da479ab0d7&displaylang=en (http://www.microsoft.com/downloads/details.aspx?FamilyID=ab99342f-5d1a-413d-8319-81da479ab0d7&displaylang=en)
(which is the link you gave on the first post)
It said "Microsoft .NET Framework 3.5 Service Pack 1" I downloaded it, installed it, then I restarted my comp. and it still says "TechEditor-Provoke stopped working" when i try to run the .exe. Is there some other installation thing i need to do?

I just found something, should i download this?
http://www.microsoft.com/downloads/details.aspx?familyid=333325FD-AE52-4E35-B531-508D977D32A6&displaylang=en
Title: Re: Tech Editor - Period
Post by: FaustWolf on January 25, 2009, 05:12:54 pm
jsondag, I have to admit very sheepishly that I never got the newest version working either. I guess I'm waiting for the TF plugin version and keeping my fingers crossed that it will work.

Well, son of a -- actually, I find that my old version works fine in the folder I originally put it in, but flips out with the error message mentioned above when I try to launch it from my desktop. json, is the program assuming a certain directory structure or anything?
Title: Re: Tech Editor - Period
Post by: Agent 12 on January 25, 2009, 09:35:08 pm
Chrono 7045: yes you want that version of .net framework.

FW: The enemy tech names are in a file name enemy tech.txt.  As long as the exe and that file are in the same directory it should be fine.

--JP
Title: Re: Tech Editor - Period
Post by: FaustWolf on January 25, 2009, 09:51:54 pm
Youdaman. Works without a hitch now!
Title: Re: Tech Editor - Period
Post by: Chrono7045 on January 26, 2009, 01:27:32 am
ooh... OK, Ive got it working now. I didn't have the enemy tech in that folder, i didn't know i needed it. ty!
Title: Re: Tech Editor - Period
Post by: FaustWolf on February 26, 2009, 09:06:39 pm
AWWWW YEAAAH!

Just figured out how to make a tech damage and cause status abnormalities simultaneously! Hope everyone's as hyped about this as I am (and that I didn't "rediscover" something already uncovered in this thread).

I'll give an example of a version of Magus' Dark Mist that stops enemies:

Normally Dark Mist's properties are as follows:

00
03
00
00
03
3C
70
00
19
00
00

To turn this baby into a grand showstopper for enemies, change the first byte ("Magic Type") to 0x32. Also change the blue byte to 0x94. The purple bytes control the percentage success rate of the attack itself (now Dark Mist can miss if I set both to 0x00), but also possibly the success rate of the status effect. Not quite clear on that. But definitely, the first byte must be 0x32 and the blue byte must be 0x94. There's some kind of interaction between the bytes, and both are needed apparently. Oh -- of course you have to specify the status abnormality on the lower menus in jsondag's tech editor as you would a non-damaging status inflicting tech.

Now the downside -- I don't think all status abnormalities can affect enemies. For example, I thought it would be really cool for Dark Mist to blind enemies, but I've been testing with these darn imps that hit back, blind or not, 100% of the time. Luckily, "Stop" works perfectly, so I know it's not a matter of activating the graphical and statistical effect of the status separately.

EDIT: I also wanted to post my findings on which status abnormalities are useful and not useful.

*Blind: Effect shows graphically, but does not seem to have an impact on the opponent's hit rate.
*Confuse: We all know this works.
*Doom: Jury's out on this one; I'm not sure if it needs special coding associated with Black Hole or not.
*Poison: Works.
*Silence: Effect shows graphically, but I'm not sure if it really works. I need to find an enemy that uses special techs to test on I guess.
*Sleep: Works.
*Stop: Works.
*Unknown: I suspect this is actually "Slow" but I can't tell because it hasn't affected any enemies I've tried it on yet.


EDIT AGAIN: Random notes: Change the first two bytes of tech properties to 0x40 and 0x05 and you'll have an MP drain attack. Problem -- enemies tend not to have MP.  :picardno
Title: Re: Tech Editor - Period
Post by: Agent 12 on February 27, 2009, 05:18:37 am
awesome job!  Definite potential there, i'm really surprised there weren't techs that had this originally now. 

Also I'm sorry to everyone for not updating this in so long....i'm spending all the my "hacking time" on a super not so secret project :)

--JP
Title: Re: Tech Editor - Period
Post by: FaustWolf on February 27, 2009, 11:54:27 am
The key to duplicating effects like MP steal, HP steal, and some other cool things will be to examine already-existing enemy techs. Do the enemy AI sets contain pointers to their techs, or how did you find them json?
Title: Re: Tech Editor - Period
Post by: Agent 12 on February 27, 2009, 02:44:29 pm
Mauron was just telling me where they were :)

--JP
Title: Re: Tech Editor - Period
Post by: FaustWolf on February 27, 2009, 03:31:38 pm
I've got the MP steal properties down (I just copied stuff from an enemy tech for that), but do enemies even have MP? Maybe just certain enemies? Seems pretty useless unless there's a way to manually give enemies MP in Chrono Tweaker.

I'll need to find another HP steal tech. The "Mutant/HP suck" attack properties aren't doing it, but I may be doing something wrong.
Title: Re: Tech Editor - Period
Post by: Agent 12 on February 27, 2009, 04:42:47 pm
i'm 99.9% sure enemies don't have MP.  There's nothing in the enemy AI that suggests it (i.e. some sort of conditional or something).

--JP
Title: Re: Tech Editor - Period
Post by: Mauron on February 27, 2009, 10:26:43 pm
I'm 100% sure they don't.

It might be possible to make a hack that gives them MP though, as the in-battle data leaves room for MP. You'd have to do a few things though.

- Relocate enemy stats to another place in the ROM. One more byte would be needed per enemy (Two if you wanted to max them at 999/65535).
- Rewrite the routines to copy enemy data so the MP byte is placed at the proper point.
- Most importantly, have a reason for doing this. That would probably involve rewriting enemy AI to have a failure condition on techs, and adding a list of MP costs for the techs.

Hmm, I kinda want to do this now. Maybe after I finish another hack I'm attempting.
Title: Re: Tech Editor - Period
Post by: FaustWolf on March 01, 2009, 01:48:18 pm
Here's some news to me: turns out that the ability to use techs like Black Hole, Delta Storm, Hexagon Mist, and others that I thought required "special coding" last summer is actually a function of the tech animation byte.

This might mean we'll soon be using the likes of Geyser, Hexagon Mist, etc., etc. It's just a matter of finding the right values for one byte, silly me! I'm about 75% sure of this based on recent tests.

EDIT: Yesss, after some additional tests, I'm even more sure of this. Duplicating any tech, and mixing and matching, is merely a matter of getting the correct first byte (animation), sprite spell effects, and layer 3 effects.

json, does the first animation byte under "Properties" just refer to the code that shows up in the middle window of the main editor? Probably already well-known, but I'm just now realizing that (if it's true to begin with).


Mauron, how did you go about identifying enemy techs? That'll be the fastest way to attach labels to animations and sprite spell effects.


EDIT AGAIN: Actually, I just realized that enemies always have 0x80 for their first animation byte. Well, that's just craptacular.
Title: Re: Tech Editor - Period
Post by: Agent 12 on March 01, 2009, 03:02:50 pm
Unless you're using a pretty old version of the editor I don't think so.  The animation header is viewable under View=> properties.  The stuff in the middle is the actual objects of the tech (not the header of the tech).

Just so you know if you get new enemies you can make them editable w/o me releasing a new version of the editor (I'm pretty proud of this and when i make the TF plugin I'd like for it to be like this  for PC techs as well).   It's tab delimited:

[enemy index] [tab] [description/name] [tab] [first byte of header] [tab] [last byte of tech] [tab] [not applicable] [tab] [start of tech properties] [tab] [n/a] [tab] [n/a] [tab] [n/a] [tab] [n/a]
0   Weird flash?   890618   890650   0   817865   0   0   0   0

n/a above means put 0 in the file (it sitll has to be there).  It's stuff like MP cost and such.

--JP
Title: Re: Tech Editor - Period
Post by: FaustWolf on March 01, 2009, 03:28:09 pm
Sweet, so it's just a matter of editing enemytech.txt then.

Oh, I might have misspoken earlier -- it's the tech index I was talking about, not the first animation byte, now that I see there's an animation header for each tech. Changing the tech index automatically changes things like ShowDamage and CallSound(), which is what was making me curious. I suppose it's perfectly natural.

Man, enemy techs seem to work completely differently from player techs, so that'll take some getting used to.
Title: Re: Tech Editor - Period
Post by: Agent 12 on March 01, 2009, 03:32:45 pm
Changing Tech Index in my experience changes everything animation wise (not properties)....like swapping Slash/cyclone was as easy as decreasing the tech index if i remember correctly...

Not sure if it's the same for enemies but changing that value doesn't really help decode how to make things happen because it's no longer running the code for that tech.

--JP
Title: Re: Tech Editor - Period
Post by: Mauron on March 01, 2009, 03:34:25 pm
Here's what I posted a few pages back.

Locating enemy techs:

1) Set Exec breakpoint C14CC4.
2) Wait for enemy to attack.
3) Note the offset given. Spekkio returned this:
Code: [Select]
$C1/4CC4 B7 E6 LDA [$E6],y[$CD:AD2B]
The attack Spekkio used has the animation data start at $CD:AD2B.
4) The fastest way to resume is to disable the breakpoint, as it will step through the entire animation if you just hit run.
5) Note the attack used. Spekkio cast ice in this case.
6) Open the AI editor and find what attacks the enemy has.
7) The AI editor lists Spekkio's Killwala form as having the attacks 25, 2A, and 2B.
8) The encyclopedia's attack list explains what those are: http://www.chronocompendium.com/Term/Attacks.html (http://www.chronocompendium.com/Term/Attacks.html) Spekkio used attack 2A.

It would probably be easier to edit whatever form of Spekkio you have access to so he does the attacks in order. Then you can have him perform the next three techs you're looking for.

jsondag added this bit:

Mauron...if you do have the time while debugging out enemy techs it's be incredibly helpful if you could take the following extra steps:

1)  Debugger gives you address
2)  Load up address in hex editor
3)  Note current address...for example D[XX][YY] where XX YY are any hexadecimal number
4)  The bytes before this address are object pointers you want to find the object pointer to the this point.  so scan the bytes before for [YY][XX]] (note they are reversed)
5)  This is sthe true "beginning of the tech".  It would save me time....however that's very selfish of me.  So don't worry about it unless you have free time.

--JP
Title: Re: Tech Editor - Period
Post by: Agent 12 on March 01, 2009, 04:39:54 pm
Yes the break point gives the beginning of the first object you have to backtrace it to the beginning of the header.

--JP
Title: Re: Tech Editor - Period
Post by: FaustWolf on March 01, 2009, 10:18:58 pm
Thanks Mauron!

Hey json, I'm reading the first enemy tech's Properties @0xC7AC9 in an unheadered ROM. What I see in the ROM is this:

03
00
00
3A
3B
04
3E
F0
00
03
00
00

But the tech editor reads this:

00
03
3A
3B
04
3E
F0
00
03
00
00

I just wanted to make sure the slight mismatch is intentional, and bytes are being skipped because they're always 00 or something.

I'm trying to find some kind of pointer table to some facet of all the enemy techs, but I haven't found anything pointing to the data Mauron's found yet.
Title: Re: Tech Editor - Period
Post by: Agent 12 on March 01, 2009, 10:34:01 pm
the property grid (the component i use to display the data to you) is alphabatizing the properties.....At first it was totally random then I was a genius and added byte_XX before each name of the property...then it turned out I was an idiot and put byte_01 twice so the alphabatizing is swapping the two I guess? 

Byte 3 of the tech properties is actually the "status" byte.  I made an entire new section for status because it is at the granularity of "bits" instead of bytes.  So i made 8 "true/false" sections cause i thought it'd be more userfriendly.  Also note that there's two sections for status (good/bad) but you're actually affecting hte same byte in the rom so changing a bit in the good status change the same bit in the bad status.

http://chronocompendium.com/Term/Tech_Data_Notes.html

The tech properties section in there explains it more.

--JP
Title: Re: Tech Editor - Period
Post by: FaustWolf on March 01, 2009, 10:45:39 pm
Okay, yeah, you made a note about the alphabetization earlier. Next question: the seven-byte graphical properties for enemy techs currently all read the same values:

80
5B
82
3C
2C
82
F7

Is our current understanding of the enemy tech graphical properties that they don't need this section at all? There should definitely be some changes in the seventh byte position if these behave anything like player techs (which I'm not sure of at all, really).
Title: Re: Tech Editor - Period
Post by: Agent 12 on March 01, 2009, 10:56:46 pm
IIRC all of those are garbage.  They are probably just reading the 0th byte of the ROM sinc ethat's what we put there in the enemy tech file.  I didn't disable it because I wanted to be able to just put the right value in there later if we did find it.

--JP
Title: Re: Tech Editor - Period
Post by: FaustWolf on March 02, 2009, 01:29:27 am
I think we've got it guys!

Enemy tech 7-byte graphics sets are in the range 0xD552D ~ 0xD5C11. Or thereabouts. Could be 0xD5526 starting, since that coincides with a 0x00 tech index.

For example, Lavos' "Crying Heavens" lightning attack starts at 0xD594E in an unheadered ROM.

I've got jury duty potentially starting tomorrow and I'm not sure how long I'll be out of it. Someone wanna double check my findings in the meantime? To find these I did a relative search on both tech indices (first byte out of every seven) and Layer 3 graphics packs (7th byte out of every seven) in WinHex. Any hex editor will do now, though, since it's just a matter of making sure things check out now that we've zero'd in on an address range.

Use the following as a marker of sorts and count back from there to double check. I'll do the math myself to make sure eventually, but I wanted to leave some notes here in case I can't work on anything else for awhile.

Starting addresses for enemy techs 0x98 through 0x9B...
Lavos' "Crying Heavens" 0xD594E
"Evil Star" 0xD5955
"Destruction Rains from the Heavens" 0xD595C
"Grand Stone" 0xD5963

For everyone's convenience I'm attaching my tech data values spreadsheet, which is a real mess. For now, just look at the "Layer 3 Graphic" tab for the rundown on which Layer 3 graphics pack indices do what.
Title: Re: Tech Editor - Period
Post by: FaustWolf on March 02, 2009, 09:04:25 pm
As long as the enemy techs start with an index of 0x00, I'm very confident in saying that the 7-byte graphics portion of the enemy tech data goes from 0xD5526 ~ 0xD5C1F, with the last (useful) enemy tech -- index 0xFE -- beginning @ 0xD5C18.

Earlier Jlukas listed the following PAR codes to get Crono to use Hallation correctly: (http://www.chronocompendium.com/Forums/index.php/topic,5055.msg125863.html#msg125863)

C145A600
7EAE93B4
CC1BFE0E
CC1ACD08
CC1ACE00

So we know that player characters can use enemy character techs. Question is, how do we hardcode such things? The enemy tech index doesn't help (unless I'm uninformed) because it would just point to a player character tech's code. For the same reason, we can't make enemies use player techs with the tech index byte alone.

Given the proximity of the Player 7-byte graphics tech data to the enemy 7-byte graphics tech data, should we expect a similar proximity for all other tech elements? I can put labels to addresses for most aspects of a tech in a spreadsheet, but first I'll need to know how you guys went about finding the execution code (the stuff that appears in the middle window of json's editor) for the enemy techs listed so far.


EDIT: Ahaaaa, I see now that the header to the tech code (what shows up in the middle window) consists of or otherwise contains a series of two-byte pointers to each object in the tech. I'll try to backtrace this to a pointer table for player character techs, then do the same for enemy character techs.

json, have you guys found the starting addresses for all enemy tech code yet? At least, as an example, the Naga-Ette slow spell tech code is actually the Naga-ette slow spell tech code and not garbage, right? We should be able to find the tech code for every enemy tech now. I'll whip up a spreadsheet for this. Hopefully I'll find a pointer table to easy-fy all this.


The major roadblock now is just figuring out how to hardcode what JLukas accomplished through PAR codes. Any ideas anybody?



EDIT: Fascinating! The pre-tech-code object pointers for Magus' "Lightning 2" all point to the objects in Crono's "Lightning 2." This might just mean that if we can find an enemy that uses the code from a character tech, we can run a search on the object pointers to find the enemy tech code in general. That's if the enemy tech code hasn't been found yet. Guess I should look into that right now.
Title: Re: Tech Editor - Period
Post by: FaustWolf on March 03, 2009, 12:47:15 am
Ha! Found the pointer table to the enemy tech code. Starts at 0xD61F0.

Format is a two byte stride, relative to address 0xD0000


You already knew this, but just to record this somewhere, the tech code format for enemies is virtually identical to that of player characters:

Target Header: 4 bytes
Pointers to tech objects
Tech code


To run through a few quick examples, at 0xD61F0, we have the pointer 0xFA 96, which points to addy 0xD96FA, the target header of the "Weird flash" enemy tech. That's enemy attack 0x00.


Here's the really interesting thing -- the tech code pointers for enemy techs are relative to address 0xD0000; the tech code pointers for player techs are relative to address 0xE0000. That's why player techs and enemy techs can have the same index values and point to way different locations in the ROM.

I'll get started on a spreadsheet detailing the starting address of all enemy techs, and maybe we can just load those addresses into json's tech editor. Enemy techs will be fully editable in a couple days.

However, knowing all this, is there any hope for making player techs point to enemy tech code on an individual basis? I personally have no clue how to do this. Seems like it would require either ASM hacking or just physically porting enemy tech code into player tech slots, which could get messy. Maybe doable though.
Title: Re: Tech Editor - Period
Post by: Agent 12 on March 03, 2009, 02:37:05 am
Phew...lots of updates haha.

a) It'd probably be easier to port the raw data over (tech editor supports copy/paste)
b) yea the magus pointing to the tech objects of crono is the main warning that I give everyone who edits techs.....editig one tech can affect any number of other techs.
c) The most significant byte is hardcoded in the tech editor I believe something like if enemy tech use E0, else use D0 so I think if you repointed it you would be able to use my editor.

--JP
Title: Re: Tech Editor - Period
Post by: FaustWolf on March 03, 2009, 02:49:40 pm
Oh, sweet, so there is a way to change what address the tech code pointers are relative to, on an individual basis? Like, if we wanted, we could use the editor to make Crono's "Cyclone" actually point to the "Cure" enemy tech just by changing that most significant byte (both techs have an index of 0x01)? Is this something already implemented in the tech editor, or will that be in an update?

I can generate a spreadsheet pretty quickly detailing where all the parts of the various enemy techs are. Should get to that tomorrow sometime. If I gave you an Excel spreadsheet would you be able to process that into a tab delimited text file? I might be able to do the conversion on my end too.
Title: Re: Tech Editor - Period
Post by: Agent 12 on March 03, 2009, 02:52:42 pm
The adding the byte is just for the tech editors purposes so it know where to find it in the data in the rom.  Internally (to the rom) it's only local (two byte) pointers.

--JP
Title: Re: Tech Editor - Period
Post by: FaustWolf on March 03, 2009, 02:58:55 pm
Ah, hence the talk of copying and pasting the code manually. Since we know where the pointers to each tech's code are, I guess we can repointer if necessary.

Currently the tech editor prevents the user from inserting code that would make edited tech code longer than it originally was. If we repointer to make more room for a specific tech's code, will the editor adjust accordingly, or is it hard-coded to ensure that the edited tech code is less than or equal to the length of the original tech code?
Title: Re: Tech Editor - Period
Post by: FaustWolf on March 04, 2009, 03:36:24 am
Here we go!  :D

A comprehensive tech address list based on all the testimony in this thread. I know the 7-byte graphics sections for the Double and Triple techs follow the single techs, so I'm hoping that the other types of data follow suit. However, other than the 7-byte graphics sections, it's mostly theoretical for the Double and Triple Techs.

Addresses for each component of the Enemy tech data are on the second tab, whereas player character tech data addresses are on the first tab. For enemy techs, I would suggest implementing only up to 0xBC for now, because slightly after that the tech code pointers get really weird. I suspect the game engine skips a portion of the pointers from around 0xD6372 ~ 0xD63BE and starts reading more pointers after that, but I still can't get all the numbers to add up, so I'm not quite sure what's going on there. But enemy tech data up to index 0xBC should be pretty safe for editing.

I'm not exactly sure what the "11-byte data" vs. the "12-byte data" was that JLukas had been referring to, but hopefully you do.  :)  I hope one of those sections also includes the status inflicting/buffing aspects of techs, because I didn't look for those yet. I can snoop around for their addresses if they aren't included in either the 11-byte or the 12-byte data.

ATTACHMENT REMOVED PER JUSTIN3009'S OBSERVATIONS, REATTACHED IN A SUBSEQUENT POST
Title: Re: Tech Editor - Period
Post by: justin3009 on March 04, 2009, 09:13:01 am
I think the addresses are off.  I went in and checked Luminaire's 7-Byte GFX Info, and that was Confuse's data.
Title: Re: Tech Editor - Period
Post by: FaustWolf on March 04, 2009, 11:37:07 pm
Boy, am I glad I took a second look at the spreadsheet! Turns out a simple VLOOKUP table cleaned up immense incorrections. Now it should be perfect.

I still don't know quite what's going on with enemy techs after 0xBC. I suspect that a bunch of values are actually skipped and the functional addresses associated with positions after 0xFF are brought into the space that would be freed up by such a move. Seems like that's going to be really messy, but I'd recommend just implementing editing of enemy techs up to 0xBC for now.

EDIT: Here's a quick demo of the fact that this spreadsheet has correct addresses for double and triple tech info.
http://www.youtube.com/watch?v=hcJMp2aohvQ
Title: Re: Tech Editor - Period
Post by: FaustWolf on March 05, 2009, 01:15:18 am
That's...one small step for fans, one giant leap for Frogkind. (http://www.youtube.com/watch?v=Vy3k0ZW5Y3k)

This is extremely encouraging, because it took all of a few minutes to transfer the code -- just a matter of getting the tech code object pointers right. Unfortunately it looks like Hexagon Mist lacks code to make the caster actually do stuff. Frog Squash is 0x71 bytes or so, whereas Hexagon Mist is 0x44 bytes, so hopefully there's enough room to make Frog do stuff and for the screen to darken menacingly (if there's a command for that). Maybe bubbles should pop up all over the screen for added awesomeness.
Title: Re: Tech Editor - Period
Post by: Agent 12 on March 05, 2009, 01:31:22 am
Remember, object 00 (which you may have repointed) is the "caster" object.  So if you repointed that to someone doing nothing then frog will do nothing.  You can probably safely repoint it to .....like whatever Water's object 00 is.

--JP
Title: Re: Tech Editor - Period
Post by: FaustWolf on March 05, 2009, 01:49:39 am
Bah, there might be something specific to the caster object in Hexagon Mist that's necessary for the Layer 3 effect to proceed, if that's possible. Frog does his spell animation, but the game hangs, with the animation playing and the enemies doing their "hit" animation, but the hexagon doesn't even appear.

I'm going to move on to Magus' Geyser for now.
Title: Re: Tech Editor - Period
Post by: Agent 12 on March 05, 2009, 02:15:38 am
It's probably a "wait for section" command.....water probably has a section ++ that hexagon mist doesn't have.

--JP
Title: Re: Tech Editor - Period
Post by: FaustWolf on March 05, 2009, 02:23:19 am
That's probably it. Maybe if I just deleted the "wait for section" command...but then I'd be screwing up Frog's other spell, heh heh.

Yeowch! "Geyser" weighs in at a mighty 0x1B4 bytes, whereas Magus' "Black Hole" is only 0x99 bytes. Looks like it's time to experiment with pointering into unused space. I could probably just copy and paste the entire Geyser code there, then have all of Black Hole's object pointers point there. Actually, if we do that, we'd probably be able to replace any spell with "Geyser" because it would essentially be a set of object pointers, right? Is there any rule that a tech can't just be a set of pointers to objects existing elsewhere?

EDIT: Oh, of course! I could just go to Black Hole's root pointer in the code pointer table and repoint it to "Geyser" code pasted into the unused space.

EDIT: Stuffed Geyser's code at 0xEDC20, near the start of a block of unused space, and repointered Black Hole's tech code pointer to that location, and it's a mess. The code seems to grab the other player characters and move them as opposed to producing the little ghosties, so the game hangs. I'll have to study the specifics of how the code itself works before attempting this again I think.


EDIT: Scratch that, it's almost working! I made a simple error by copying all seven of the Geyser graphics bytes, when I should have left the first one alone (that's the one that tells the game engine which tech code pointer to use). Something's up though, because it's pulling from the Haste clock graphics pack as opposed to the ghost graphics pack, and has the wrong palette. If I figure that out, we'll have a fully working Geyser!
Title: Re: Tech Editor - Period
Post by: Agent 12 on March 13, 2009, 12:02:54 am
FW just wanted to let you know that I successfully used your excel sheet in a secret project I'm working on :) Worked like a charm.

--JP
Title: Re: Tech Editor - Period
Post by: FaustWolf on March 13, 2009, 12:18:17 am
Sweet, can't wait to see the results! During my spring break next week I'll hopefully be able to whip up some new character techs based on enemy techs, and post one patch per tech.
Title: Re: Tech Editor - Period
Post by: Mauron on March 13, 2009, 12:41:46 am
c) The most significant byte is hardcoded in the tech editor I believe something like if enemy tech use E0, else use D0 so I think if you repointed it you would be able to use my editor.

When I was working on dual techs for Magus, I had a problem getting the tech editor to read the new tech. I had modified the enemytech.txt file to make it readable by the editor. Earlier I had moved all techs into the 5Exxxx range to make room for the new ones. Is it possible that hardcoded byte was causing the problem, or was I just doing something wrong?
Title: Re: Tech Editor - Period
Post by: Agent 12 on March 13, 2009, 01:10:30 am
almost certainly yes.    The tech editor won't read from a another bank. 

--JP
Title: Re: Tech Editor - Period
Post by: Mauron on March 13, 2009, 01:49:18 am
Damn, that makes things a little more difficult. I guess I'll have to do some copying around as I work with it then.
Title: Re: Tech Editor - Period
Post by: FaustWolf on March 27, 2009, 02:03:52 am
You know those little ghosts in Magus' "Geyser" attack and in enemy Cyrus' projectile attack? There's apparently a command embedded in each ghost object or in the tech as a whole to pull the freakin' palette from the environment. I kid you not:
(http://img246.imageshack.us/img246/9861/image1uid.png)
(http://img246.imageshack.us/img246/215/image2z.png)

The first image shows a couple ghosts with an ugly black palette, and the second image shows them with the correct palette. Exact same ROM, different locations, and different spell palettes. Holy hell, I can't believe the developers stooped to a trick like that. I can't even think of a situation in which such a command would be generally useful other than some kind of geomancing spell that's supposed to change with the environment. "Geyser" in its original state is thus non-portable apparently. It's got to be the screwiest tech in the game.


Also, another discovery:

To make a tech steal a % of the enemy's HP, go to the "12 byte tech properties" and set the first byte to 0x80 and the second byte to 0x05 using the Tech Editor (if editing the ROM directly, those are switched, hehe). Now the tricky part is, to set the actual % HP to be transferred from the enemy(s) to the caster, you have to edit the third byte in that series, which is not currently editable in the Tech Editor. The byte progresses approximately in 5% intervals, so to steal 10% of the target's HP, you have to set it to 0x02. This works on bosses too -- you can literally suck all 4000 odd HP out of the Mega Mutant guarding the Black Omen's first room by setting the byte to 0x14 or above!

EDIT: Whoa, looks like that third byte I was talking about above is actually factored in as the "status offense/defense" byte. That's pretty wild -- looks like changing the first two bytes to 0x80 and 0x05 change the function of the status offense/defense byte!
Title: Re: Tech Editor - Period
Post by: Agent 12 on March 27, 2009, 04:46:00 am
Yea this came up before I think :)

the property grid (the component i use to display the data to you) is alphabatizing the properties.....At first it was totally random then I was a genius and added byte_XX before each name of the property...then it turned out I was an idiot and put byte_01 twice so the alphabatizing is swapping the two I guess? 

Byte 3 of the tech properties is actually the "status" byte.  I made an entire new section for status because it is at the granularity of "bits" instead of bytes.  So i made 8 "true/false" sections cause i thought it'd be more userfriendly.  Also note that there's two sections for status (good/bad) but you're actually affecting hte same byte in the rom so changing a bit in the good status change the same bit in the bad status.

http://chronocompendium.com/Term/Tech_Data_Notes.html

The tech properties section in there explains it more.

--JP

Feel free to edit the wiki page in that quote, nice exploring FW. 

--JP
Title: Re: Tech Editor - Period
Post by: FaustWolf on March 28, 2009, 11:49:55 pm
Brain dump here for now:

The LoadAnimation command has three variations of course, 06 xx, 03 xx and 02 xx. At least those are the only ones I've seen. Here's what each one does:

06: Static first frame of the animation
03: Plays the entire animation before moving on with the tech
02: Plays the entire animation while moving on with the tech

So let's say we have a command that makes Frog move toward the enemy and we want Frog to do a critical hit animation while he's doing that. 06 is the incorrect command because it'll just be Frog moving toward the enemy frozen in his first attack animation frame. Likewise, 03 is incorrect because Frog will do his entire attack animation, then move toward the enemy (I think he might remain frozen in the last animation frame, not sure). 02 is the one we want, and made for a kickass Nirvana Strike technique.

Speaking of Frog animations:

30: Some kind of attack, but one frame and not very useful
31: Normal attack (overhead sword swing)
32: Critical upper
33: Landing
34: Tongue toss
35: Sideswipe (I think it might be just one frame though, not sure)
36: Standing - North
37: Standing - South
38: Leap slash airborne strike (down)

3E: Surprised (I think...)
3F: Raise sword straight overhead -- like Liono.
40: Sword sparkles while raised overhead (a continuation of 3F in techs like "Leap Slash")

There's an unknown routine in Ayla's Triple Kick consisting of the bytes 10 02 11. This is surprisingly a LoadAnimation02 command sandwiched between two animations! At least that's how it was behaving for me. This determines what Ayla does while standing and her sprite gets copied.

One final random fact: to make a tech self-targeting only, change the targeting bytes to 0200. If I had to make a wild guess, I'd say the first byte in the targeting set determine where the cursor can go, and it cycles through a finite number of possibilities. Meaning that if there are 5 possibilities, 00 and 05 will give you the exact same result. I haven't investigated that thoroughly though. Also, making a tech self-targeting has the unfortunate effect of causing the caster to face upward, because the game engine is trying to make the sprite face itself basically.
Title: Re: Tech Editor - Period
Post by: FaustWolf on March 30, 2009, 07:06:44 pm
Blargh! Elemental determination is still defying me. Comparing the 11-byte data for a few spells, I get this:
(http://img21.imageshack.us/img21/7638/image1vgm.png)

No pattern; there should be a byte position that's identical for Lightning, Lightning 2, and Spire, and that position should also be the same for Water, Water 2 and Ice, but different from the lightning ones. However, I'm not sure I'm looking at the right data. I have Cyclone's 11-byte data beginning at 0xC1BEB. Is that verified at all?

I haven't tried decomposing the bytes into bits yet either...
Title: Re: Tech Editor - Period
Post by: Vehek on March 30, 2009, 07:17:29 pm
It should be byte 4 according to what I posted earlier.

Slash: 82
Lightning: 82
Lightning 2: 82
Luminaire: 82

Ice: 22
Ice 2: 22

Flame toss: 12
Fire: 12

Edit:  0xC1BEB would be the empty tech before Cyclone.
Title: Re: Tech Editor - Period
Post by: justin3009 on March 30, 2009, 07:19:24 pm
Probably not posted, but has anything for the Draw Geometry graphics for techs been found at all?
Title: Re: Tech Editor - Period
Post by: FaustWolf on March 30, 2009, 08:42:07 pm
Oh snap, I totally forgot about the dummy tech and started straight with Cyclone. I'll update my spreadsheet Vehek, huge thanks for pointing this out.

Man, the DrawGeometry data would be great to explore. I don't think I've seen any exploration of it lately though...
Title: Re: Tech Editor - Period
Post by: Agent 12 on March 30, 2009, 09:04:58 pm
Probably not posted, but has anything for the Draw Geometry graphics for techs been found at all?

You can check the Robo Tackle tech.  It's definitely there and I would manipulate it by changing the right commands but not enough where I felt comfortable saying it was "decoded"

--JP
Title: Re: Tech Editor - Period
Post by: justin3009 on March 30, 2009, 09:13:10 pm
Alright.  Thanks for that heads up.
Title: Re: Tech Editor - Period
Post by: FaustWolf on March 30, 2009, 11:19:51 pm
Awwww yeah, tested on a Golem and Vehek is absolutely correct. Byte #3 is still the same value for all the techs I looked up, so I'm not sure if that needs to be set to 0x40 as part of the elemental effect or if it has some other function.

(http://img5.imageshack.us/img5/241/image1krh.png)

So we have the following elemental values:

Lightning: 0x82
Fire: 0x12
Water: 0x22
Shadow: 0x42
Physical: 0x02 and 0x04 from a quick investigation of Ayla's techs -- there may be a range of different values for these. I wonder what the nuances are?

In sum:  :grimm

EDIT: I'm attaching the updated version of the comprehensive tech address guide to adjust the 11-byte info starting addresses in accordance with Vehek's observations. Now I'm kind of afraid of what happens to the player techs after tech index 0x53 on the guide; not sure what the blank space is about.
Title: Re: Tech Editor - Period
Post by: Geiger on March 31, 2009, 02:51:33 pm
So we have the following elemental values:

Lightning: 0x82
Fire: 0x12
Water: 0x22
Shadow: 0x42
Physical: 0x02 and 0x04 from a quick investigation of Ayla's techs

Just kibitzing here, but it looks like they are bitfields.  80 - Lightning, 40 - Shadow, 20 - Water, 10 - Fire.  Physical is the absence of all elements.  A spell with all elements would have F0 as the value.  One would think that Antipode would have the value 30 for water and fire, but it looks like they went with Shadow instead (if your spreadsheet is correct), probably for elemental affinity reasons.  The lower half of the byte is probably used for a non-element purpose.
Title: Re: Tech Editor - Period
Post by: FaustWolf on March 31, 2009, 03:13:39 pm
Ooh, if we made a spell that was bi-or tri-Elemental, say Fire and Shadow, would enemies weak to Fire and enemies weak to Shadow be weak to that spell, making it more versatile? I'll have to check that out.
Title: Re: Tech Editor - Period
Post by: Geiger on April 02, 2009, 10:40:23 am
Ooh, if we made a spell that was bi-or tri-Elemental, say Fire and Shadow, would enemies weak to Fire and enemies weak to Shadow be weak to that spell, making it more versatile?

Maybe, but if other games are any indication, it will just exit at the first condition it finds.  So if an enemy absorbs fire and is weak against shadow, it will absorb a Fire/Shadow spell.
Title: Re: Tech Editor - Period
Post by: FaustWolf on April 02, 2009, 09:00:08 pm
Holy crap is my spreadsheet off on the Dual and Triple Tech 12-byte data! Good thing Vehek found out earlier that Lifeline's 12-byte data begins at 0xC2427 almost a year ago, or I wouldn't have been able to get a really awesome tech working correctly.

I had Fire Sword 2's 12-byte data beginning at 0xC2427. I wonder how these are arranged? There's got to be a pointer table somewhere to the 12-byte data...the single techs and enemy techs match up perfectly but the dual and triple techs are just all over the place!
Title: Re: Tech Editor - Period
Post by: Vehek on April 02, 2009, 09:41:43 pm
Well, something I found while working on the 8th character:
0C1BF0 contains 11-byte data which determines the attack/tech indices used, which are used to determine which 12-byte tech headers to load.