Author Topic: Tech Editor - Period  (Read 21829 times)

Mauron

  • Guru of Reason Emeritus
  • Errare Explorer (+1500)
  • *
  • Posts: 1764
  • Nu-chan
    • View Profile
    • Maurtopia
Re: Tech Editor - Crono/Marle
« Reply #30 on: February 27, 2008, 07:09:22 pm »
Updated mirror.

Nice update. I've been hoping for a chance to examine Confuse.

Agent 12

  • Zurvan Surfer (+2500)
  • *
  • Posts: 2572
    • View Profile
Re: Tech Editor - Crono/Marle
« Reply #31 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.



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
« Last Edit: April 28, 2008, 08:51:22 pm by jsondag2 »

Agent 12

  • Zurvan Surfer (+2500)
  • *
  • Posts: 2572
    • View Profile
Re: Tech Editor - Crono/Marle/Lucca/Robo
« Reply #32 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:



--JP
« Last Edit: May 01, 2008, 12:06:43 am by jsondag2 »

FaustWolf

  • Guru of Time Emeritus
  • Arbiter (+8000)
  • *
  • Posts: 8972
  • Fan Power Advocate
    • View Profile
Re: Tech Editor - Crono/Marle/Lucca/Robo
« Reply #33 on: April 30, 2008, 10:02:47 pm »
Holy cow jsondag, awesome work!

Agent 12

  • Zurvan Surfer (+2500)
  • *
  • Posts: 2572
    • View Profile
Re: Tech Editor - Crono/Marle/Lucca/Robo
« Reply #34 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

Agent 12

  • Zurvan Surfer (+2500)
  • *
  • Posts: 2572
    • View Profile
Re: Tech Editor - Crono/Marle/Lucca/Robo
« Reply #35 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

Agent 12

  • Zurvan Surfer (+2500)
  • *
  • Posts: 2572
    • View Profile
Re: Tech Editor - Crono/Marle/Lucca/Robo
« Reply #36 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

Anacalius

  • Alternate Primary Member
  • Enlightened One (+200)
  • *
  • Posts: 286
  • Boredom is not a burden that anyone should bear.
    • View Profile
Re: Tech Editor - Crono/Marle/Lucca/Robo/Frog
« Reply #37 on: May 02, 2008, 05:18:28 pm »
Holy crap, this is amazing! Great work.  :shock:

Agent 12

  • Zurvan Surfer (+2500)
  • *
  • Posts: 2572
    • View Profile
Re: Tech Editor - Crono/Marle/Lucca/Robo/Frog
« Reply #38 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

Mauron

  • Guru of Reason Emeritus
  • Errare Explorer (+1500)
  • *
  • Posts: 1764
  • Nu-chan
    • View Profile
    • Maurtopia
Re: Tech Editor - Period
« Reply #39 on: May 03, 2008, 12:32:25 am »
Awesome.

I'll have to study Magus's when I get to this next.

Ozzie

  • Porrean (+50)
  • *
  • Posts: 53
    • View Profile
Re: Tech Editor - Period
« Reply #40 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]

Agent 12

  • Zurvan Surfer (+2500)
  • *
  • Posts: 2572
    • View Profile
Re: Tech Editor - Period
« Reply #41 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

Ozzie

  • Porrean (+50)
  • *
  • Posts: 53
    • View Profile
Re: Tech Editor - Period
« Reply #42 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. :)

Ozzie

  • Porrean (+50)
  • *
  • Posts: 53
    • View Profile
Re: Tech Editor - Period
« Reply #43 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.
« Last Edit: May 03, 2008, 04:04:35 pm by Ozzie »

Ozzie

  • Porrean (+50)
  • *
  • Posts: 53
    • View Profile
Re: Tech Editor - Period
« Reply #44 on: May 03, 2008, 03:12:56 pm »
Triple POST!

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



[attachment deleted by admin]