Difference between revisions of "Modifying Techs"

From Chrono Compendium
Jump to: navigation, search
 
(Update for Hi-Tech.)
Line 1: Line 1:
Report bugs and check progress [http://www.chronocompendium.com/Forums/index.php/topic,5055.0.html here]. Download the tech editor [http://chronofan.com/Black/Other/TechEditor.exe here].
+
Report bugs and check progress [https://www.chronocompendium.com/Forums/index.php?topic=10245.0 here]. Download the tech editor from the link in the first post.
  
 
jsondag2: Hey all, I decided to make a short tutorial on how to make some new techs using my tech editor. It's sort of a way to show off what it can do. Before we begin here is the final product after following this tutorial:
 
jsondag2: Hey all, I decided to make a short tutorial on how to make some new techs using my tech editor. It's sort of a way to show off what it can do. Before we begin here is the final product after following this tutorial:
  
*[http://www.youtube.com/watch?v=zCz9R3iBhLU http://www.youtube.com/watch?v=zCz9R3iBhLU]
+
Mauron: I've updated this to work with Hi-Tech.  
  
 
'''MAKE A BACKUP NOW!'''
 
'''MAKE A BACKUP NOW!'''
  
==Ice Storm==
+
==The Necessities==
  
===Animations===
+
All techs, at the bare minimum, should have the following at the end of their first caster object.
  
The first tech we'll create is Ice Storm.  Basically we want to throw ice at an enemy.  One can imagine that this is going to require a good chunk of since it'll have a lot of objects.  So we'll have to replace a tech that uses a lot of space....glancing at Marle's techs we see that Cure 2 uses quite a bit of space...let's replace that one.
+
[code]Object 1
 +
Pause for 0A
 +
Unknown 2E
 +
End Tech (01)
 +
Return[/code]
  
When it first opens you'll see Cure's Data:
+
Pause gives enough of a break in between your animation and any counter attack to look smooth.
 +
Unknown 2E resets a value. I'm not clear on what or why, but every tech has it.
 +
End Tech finishes processing the current tech, and moves back into normal battle.
 +
Return marks the end of an object, and Hi-Tech will fail to save if it is not present.
  
[[Image:firstOpen.PNG]]
+
==Ice Storm==
 
+
First we'll clear out the objects (Highlight the object and click ctrl + D or Edit->Delete:
+
 
+
[[Image:objectsClearedOut.PNG]]
+
 
+
Now the key to techs since there's so many unknowns is to use existing techs and edit instead of building from scratch so at this point I copied over data from Slash since I felt it was similar to what I wanted.  One of the good things about the latest release of Tech editor is data is copied to the clipboard.  So you can have 2 versios of tech editor open one on slash and one on the tech you are editing and copy paste between them, (you have to save and refresh after the copy/pase though).
+
 
+
Now slash is bigger than cure 2  (you can check lower left corners for sizes) so we can't copy ALL of it over, but we don't need as many ice storms as slash has.  Looking at the data it's obvious that some of the objects are almost a direct copy paste and thus aren't THAT important to the tech.  We'll copy over the first second and third object first, these are the caster/ the target/ and the target again I believe they have a target if hit and a target if miss in every tech.
+
 
+
First I copied over object one, refresh (save, load another tech, reload this tech) made sure everything was cool clicked add object and copied over object2, repeat for object three.
+
 
+
[[Image:firstThreeObjects.PNG]]
+
 
+
Awesome, ok now lets look at the rest of the objects for slash.  The lengths of each object are displayed as the third number, it's obvious that the 4th object is important, taking a look at it you can see that this object sets the palette, and does sound effects, we should probably add that one.
+
 
+
The next three objects are carbon copies of each other.  If we cut out 2 of these objects then we should be able to fit the rest of them into cure 2's space.  The next object has one extra command an "EndSection" if you've been paying attention to the other thread the command StartSection/EndSectiosn are used to handle timing of techs (for example in the caster you wait for section 4 before you end the tech).  We can add that section just to be safe, finally the last section is smaller than the rest but we'll add it too....(this is just trial and error...).
+
 
+
So we are adding  4/6 of the rest object scratch two of the "20 length' objects.  I know it's a pain, i'll add the ability to copy/paste objects later but for now just copy them over one node at a time.
+
 
+
[[Image:allobjectsadded.PNG]]
+
 
+
Now you probably would think that you'd be able to load up and see your new tech and to be hones tI thought you'd be able to as well, I mean all we did was get rid of two carbon copy objects with seemingly no useful data in them.  However if you run it it ALMOST complete, the graphics are for cure so it looks kind of goofy but it just doesn't quite end.
+
 
+
You'll notice the screen darkens, and comes back, and the caster goes back to her fighting stance this is handled by "super Command 1D and 1E" in the first object (casters object).  What doesn't happen is the Tech end and no damage is displayed on the target (second object).  Looking at the first and second objects we notice that they both have the unknown command 23 02.  Right before the end of the tech and showing damage command
+
 
+
[[Image:unknowncommand.PNG]]
+
  
This command is very similar to the StartSection command in the sense the the code stops but unlike the start section (24 XX by the way, very close to 23 XX), I dont know how to increment the parameter to move on to this start section yet.  However, you can change 23 02 to 23 01 and the tech should continue.
+
The first tech we'll create is Ice Storm.  Basically we want to throw ice at an enemy.  We can replace any tech, but removing the usable in menu flag is difficult at the moment. Let's make this a modified Ice.
  
Load up the tech and run it and Voila the tech continues, apparantly the XX in 23 XX gets up to one somehow but we deleted something that sets the XX to 2.
+
Now the key to techs since there's so many unknowns is to use existing techs and edit instead of building from scratch so at this point I copied over data from Slash since I felt it was similar to what I wanted.  One of the good things about the latest release of Hi-Tech is data is copied to the clipboard. You can also use Temporal Flux's Import and Export feature if both are in the same list of data (Player Tech, Enemy Tech, Player Attack, etc).
  
===Properties===
+
[[Image:Tech_Graphics_Header.png]]
  
Now it's pretty cool but there's a couple problems.  We shouldn't be selecting an ally, the grapics look  weird cause they are for cure still (stars). Lucky it's not that hard to fix this go to View-> Properties. You can collapse all the properties except:  Animation Header, Graphics and Hacking.
+
Note the animation index for both Slash and Ice. Go to File -> Export..., choose a filename, set App / Plugin to Hi-Tech, Type to Player Tech Animation, Slot to 2, and click Export. Then go to File -> Import..., choose your exported file, set Slot to C, and click Import. Now you can switch to Ice for editing.
  
[[Image:propertiesBefore.PNG]]
+
Since we're working with an identical copy of Slash using Ice's graphics header, we don't really need to do much. At this point you can save the ROM and it will look pretty nice.
  
So Animation header and graphics seem to be intermingled to me,  I made both  of them the same as Ice's (again I recommend having two progams open at the same time). WARNING don't change graphic header byte 01 because it changes the animations that are loaded (all the work you did at the beginning of this tutorial!)    If you load it up now she doesn't throw stars she throws ice ball things.
+
Slash flies forward and off the screen, so we want to change Ice Storm's targeting to match. Click Save Targeting once you're done.
  
Now for the hacking tab. I mainly just copied over spincut's data,  Some of these are not fully explored, makes sure you make hit% not 00, I forgot when I first did this and it never hit the enemies.  Change target to one enemy, tech type to Damage, physical damage is just sort of the level of damage the tech does (cyclone is low, while spincut/leapslash are high for example).  Really I guess this shouldn't be a physical attack but right now I dont know how to specifically say this is an "Ice" attack.    Here's how mine looked
+
[[Image:Tech_Targeting.png]]
  
[[Image:propertiesAfter.PNG]]
+
That's it!  If you load up the ROM and cast Cure 2. She should choose an enemy and throw ice at him.  You can tweak the animations/sound effects to your liking.
  
That's it!  If you load up the rom and cast cure 2 she should choose an enemy and throw ice at him.  You can tweak the animations/sound effects to your liking.
+
==Haste All==
  
==Haste 2==
+
OK, I'll try to make this one faster, we're going to upgrade Haste to Haste All.
  
OK, I'll try to make this one faster, were going to replace Ice 2 (I sort of chose this randomly). Delete all the objects but one and copy over the data from haste:
+
Since this is will target the whole party, change the targeting from One Ally (0x00) to All Allies (0x01) and click Save Targeting.
  
[[Image:hasteObjectsCopied.PNG]]
+
Now we'll start on the animation. We want all the party members to animate, so we'll duplicate the target object.
  
Now since this time we'll be doing more event editing it makes since to change the properties now. Copy over all the properties for regular haste into ice2's properties (except graphics header byte 01).  Set Target to all allies
+
In the Target Objects section, copy Object 2 and paste it back in. (If CTRL+C and CTRL+V doesn't work, you can right click the object and select copy, then paste.)
  
[[Image:hasteproperties.PNG]]
+
You'll need to delete '''Increment Counter 1A Process Draw Geometry flag?''', '''Increment Counter 1B Process Layer 3 flag''',  and '''Increment Counter 1D''' from the New Object. These will mess up flow control if we leave them in.
  
If you load the rom and caste ice2 now it should do haste, but it affects everyone. It doesn't seem like it should affect everyone though...Yet!  Let's go back to the animations and see what we can do.  Doing a quick glance it is clear that object1 is the caster (as always) object 2 is the targets (as always), that means the last object is the clock.
+
In the Effect Objects section, we want to create a copy of Object 3. In the new object, delete all commands up to '''Wait for Counter 1D to reach 02''', and both '''Increment Counter 1D''' commands below it. Copy this object and paste another one in.
  
[[Image:theclock.PNG]]
+
Now we'll change the new objects commands of '''Store coordinates of target 03 - Target''' and '''Slide Sprite to 0C - Target''' to '''Store coordinates of target 04 - Target + 1''' and '''Slide Sprite to 0D - Target + 1''' and '''Store coordinates of target 05 - Target + 2''' and '''Slide Sprite to 0E - Target + 2''' in the two objects, using the command view above.
  
We'll edit this, the goal of this tech is to start the object on the caster, move it to PC1, move it to PC2 and move it to PC3. We'll take care not to remove any endsections cause they are used to set up timing.  It takes some trial and error but:  The basic idea is:
+
[[Image:Tech_Command_View.png]]
  
Before section2:
 
  
*Don't mess with any of the loading parts of the clock
+
We need to move the clocks in order, so starting with Object 3, we'll add flow control instructions. Select '''Teleport to Stored Coordinates''', then go to the command list at the top, select '''Increment Counter 1C/1D''', and click Add Command. Then select '''Wait for Counter #''' and click Add Command. (Hi-Tech Beta 22 has a bug with Wait for Counter 1C/1D, or we'd use that.) We'll edit '''Wait for Counter #''' to use Counter 1C and a value of 3.
*Start the clock in spinning animation (load animation 1 instead of 0)
+
*Give the clock one setspeed you can delete the others
+
*In section 2
+
*instead of sendtoTarget(03) make it sendToTarget 01 (instead of target we make it PC1)
+
*Pause
+
*send to target 02 (that's pc )
+
*Pause
+
*send to target 00 (that's the caster)
+
  
After awhile you'll get it working, make sure you don't remove endsections or the tech will wait indefinitely looking for one. Also in the 'target object' (that's object 2) I removed the 34 1a and 34 1b, those commands make the red aura around them.
+
Next we'll edit one of the New Objects. We'll add a '''Wait for Counter #''' after '''Wait for Counter 1D to reach 02''', change it to 1C and 01, then add an '''Increment Counter 1C''' and '''Wait for Counter 1C to reach 03''' after '''Teleport to Stored Coordinates'''. We can delete the '''Wait for Counter 1D to reach 02'''.
  
[[Image:newCode.PNG]]
+
On the other New Object, we'll do the same, except the first wait for counter 1C will be set to 02.
  
That does it!  Load up the game and cast ice 2, it should select everyone, have the clock do a circle, no red aura, and everyone has haste!
+
Your Effect Objects should look something like this:
  
One problem is only the "target" spins.....i don't know how on some techs it applies the target code to EVERYONE (like frog's heal), as opposed to just the "main target". comparing heal to techs like aura and cure should eventually yield the answer.
+
<pre>New Object
 +
Wait for Counter 1C Flow Control to reach 02
 +
Set Sprite Priority 03 - In Front of Sprite
 +
Store coordinates of target 04 - Target + 1
 +
Set Counter 1F Y Coordinate to 10
 +
Teleport to Stored Coordinates
 +
Increment Counter 1C
 +
Wait for Counter 1C Flow Control to reach 03
 +
Play Animation (Loop) (01)
 +
Speed: Fast
 +
Pause for 28
 +
Drawing Status: Show
 +
Slide Sprite to 0D - Target + 1
 +
Pause for 48
 +
Drawing Status: Hide
 +
Return
 +
New Object
 +
Wait for Counter 1C Flow Control to reach 01
 +
Set Sprite Priority 03 - In Front of Sprite
 +
Store coordinates of target 05 - Target + 2
 +
Set Counter 1F Y Coordinate to 10
 +
Teleport to Stored Coordinates
 +
Increment Counter 1C
 +
Wait for Counter 1C Flow Control to reach 03
 +
Play Animation (Loop) (01)
 +
Speed: Fast
 +
Pause for 28
 +
Drawing Status: Show
 +
Slide Sprite to 0E - Target + 2
 +
Pause for 48
 +
Drawing Status: Hide
 +
Return
 +
Object 3
 +
Teleport Sprite to 09 - Caster
 +
Set Sprite Facing 03 - East
 +
Set Sprite Priority 00 - Behind Sprite
 +
Set Palette to 00
 +
Load Graphics Packet 1, Unknown: 30
 +
Wait for Counter 1D to reach 01
 +
Drawing Status: Show
 +
Play Sound 86, Unknown: 00
 +
Play Animation (Loop) (00)
 +
Pause for 0A
 +
Speed: Normal
 +
Set Angle C0
 +
Move forward. Distance: 0A
 +
Speed: Fast
 +
Move forward. Distance: 0A
 +
Speed: Fastest
 +
Move forward. Distance: 32
 +
Drawing Status: Hide
 +
Increment Counter 1D
 +
Wait for Counter 1D to reach 02
 +
Set Sprite Priority 03 - In Front of Sprite
 +
Store coordinates of target 03 - Target
 +
Set Counter 1F Y Coordinate to 10
 +
Teleport to Stored Coordinates
 +
Increment Counter 1C
 +
Wait for Counter 1C Flow Control to reach 03
 +
Play Animation (Loop) (01)
 +
Speed: Fast
 +
Pause for 28
 +
Drawing Status: Show
 +
Slide Sprite to 0C - Target
 +
Increment Counter 1D
 +
Pause for 48
 +
Drawing Status: Hide
 +
Increment Counter 1D
 +
Return</pre>
  
ALSO:  Note that cure2 and Ice2 are shared techs, this means that Frog's heal2 and Magus Ice 2 are gunna be screwed up right now.  
+
The exact pattern of the wait for counter 1C and Target + ? doesn't matter. Counter 1C was used so we didn't have to mess with any wait for counter 1D commands that were already set up, and we grouped them so they'd go to the right places. Without the grouping, they'd all draw over one PC and move out.
  
 
''From'': [[Tutorials (Chrono Trigger)]]
 
''From'': [[Tutorials (Chrono Trigger)]]

Revision as of 02:37, 9 November 2017

Report bugs and check progress here. Download the tech editor from the link in the first post.

jsondag2: Hey all, I decided to make a short tutorial on how to make some new techs using my tech editor. It's sort of a way to show off what it can do. Before we begin here is the final product after following this tutorial:

Mauron: I've updated this to work with Hi-Tech.

MAKE A BACKUP NOW!

The Necessities

All techs, at the bare minimum, should have the following at the end of their first caster object.

[code]Object 1 Pause for 0A Unknown 2E End Tech (01) Return[/code]

Pause gives enough of a break in between your animation and any counter attack to look smooth. Unknown 2E resets a value. I'm not clear on what or why, but every tech has it. End Tech finishes processing the current tech, and moves back into normal battle. Return marks the end of an object, and Hi-Tech will fail to save if it is not present.

Ice Storm

The first tech we'll create is Ice Storm. Basically we want to throw ice at an enemy. We can replace any tech, but removing the usable in menu flag is difficult at the moment. Let's make this a modified Ice.

Now the key to techs since there's so many unknowns is to use existing techs and edit instead of building from scratch so at this point I copied over data from Slash since I felt it was similar to what I wanted. One of the good things about the latest release of Hi-Tech is data is copied to the clipboard. You can also use Temporal Flux's Import and Export feature if both are in the same list of data (Player Tech, Enemy Tech, Player Attack, etc).

Tech Graphics Header.png

Note the animation index for both Slash and Ice. Go to File -> Export..., choose a filename, set App / Plugin to Hi-Tech, Type to Player Tech Animation, Slot to 2, and click Export. Then go to File -> Import..., choose your exported file, set Slot to C, and click Import. Now you can switch to Ice for editing.

Since we're working with an identical copy of Slash using Ice's graphics header, we don't really need to do much. At this point you can save the ROM and it will look pretty nice.

Slash flies forward and off the screen, so we want to change Ice Storm's targeting to match. Click Save Targeting once you're done.

Tech Targeting.png

That's it! If you load up the ROM and cast Cure 2. She should choose an enemy and throw ice at him. You can tweak the animations/sound effects to your liking.

Haste All

OK, I'll try to make this one faster, we're going to upgrade Haste to Haste All.

Since this is will target the whole party, change the targeting from One Ally (0x00) to All Allies (0x01) and click Save Targeting.

Now we'll start on the animation. We want all the party members to animate, so we'll duplicate the target object.

In the Target Objects section, copy Object 2 and paste it back in. (If CTRL+C and CTRL+V doesn't work, you can right click the object and select copy, then paste.)

You'll need to delete Increment Counter 1A Process Draw Geometry flag?, Increment Counter 1B Process Layer 3 flag, and Increment Counter 1D from the New Object. These will mess up flow control if we leave them in.

In the Effect Objects section, we want to create a copy of Object 3. In the new object, delete all commands up to Wait for Counter 1D to reach 02, and both Increment Counter 1D commands below it. Copy this object and paste another one in.

Now we'll change the new objects commands of Store coordinates of target 03 - Target and Slide Sprite to 0C - Target to Store coordinates of target 04 - Target + 1 and Slide Sprite to 0D - Target + 1 and Store coordinates of target 05 - Target + 2 and Slide Sprite to 0E - Target + 2 in the two objects, using the command view above.

Tech Command View.png


We need to move the clocks in order, so starting with Object 3, we'll add flow control instructions. Select Teleport to Stored Coordinates, then go to the command list at the top, select Increment Counter 1C/1D, and click Add Command. Then select Wait for Counter # and click Add Command. (Hi-Tech Beta 22 has a bug with Wait for Counter 1C/1D, or we'd use that.) We'll edit Wait for Counter # to use Counter 1C and a value of 3.

Next we'll edit one of the New Objects. We'll add a Wait for Counter # after Wait for Counter 1D to reach 02, change it to 1C and 01, then add an Increment Counter 1C and Wait for Counter 1C to reach 03 after Teleport to Stored Coordinates. We can delete the Wait for Counter 1D to reach 02.

On the other New Object, we'll do the same, except the first wait for counter 1C will be set to 02.

Your Effect Objects should look something like this:

New Object
	Wait for Counter 1C Flow Control to reach 02
	Set Sprite Priority 03 - In Front of Sprite
	Store coordinates of target 04 - Target + 1
	Set Counter 1F Y Coordinate to 10
	Teleport to Stored Coordinates
	Increment Counter 1C
	Wait for Counter 1C Flow Control to reach 03
	Play Animation (Loop) (01)
	Speed: Fast
	Pause for 28
	Drawing Status: Show
	Slide Sprite to 0D - Target + 1
	Pause for 48
	Drawing Status: Hide
	Return
New Object
	Wait for Counter 1C Flow Control to reach 01
	Set Sprite Priority 03 - In Front of Sprite
	Store coordinates of target 05 - Target + 2
	Set Counter 1F Y Coordinate to 10
	Teleport to Stored Coordinates
	Increment Counter 1C
	Wait for Counter 1C Flow Control to reach 03
	Play Animation (Loop) (01)
	Speed: Fast
	Pause for 28
	Drawing Status: Show
	Slide Sprite to 0E - Target + 2
	Pause for 48
	Drawing Status: Hide
	Return
Object 3
	Teleport Sprite to 09 - Caster
	Set Sprite Facing 03 - East
	Set Sprite Priority 00 - Behind Sprite
	Set Palette to 00
	Load Graphics Packet 1, Unknown: 30
	Wait for Counter 1D to reach 01
	Drawing Status: Show
	Play Sound 86, Unknown: 00
	Play Animation (Loop) (00)
	Pause for 0A
	Speed: Normal
	Set Angle C0
	Move forward. Distance: 0A
	Speed: Fast
	Move forward. Distance: 0A
	Speed: Fastest
	Move forward. Distance: 32
	Drawing Status: Hide
	Increment Counter 1D
	Wait for Counter 1D to reach 02
	Set Sprite Priority 03 - In Front of Sprite
	Store coordinates of target 03 - Target
	Set Counter 1F Y Coordinate to 10
	Teleport to Stored Coordinates
	Increment Counter 1C
	Wait for Counter 1C Flow Control to reach 03
	Play Animation (Loop) (01)
	Speed: Fast
	Pause for 28
	Drawing Status: Show
	Slide Sprite to 0C - Target
	Increment Counter 1D
	Pause for 48
	Drawing Status: Hide
	Increment Counter 1D
	Return

The exact pattern of the wait for counter 1C and Target + ? doesn't matter. Counter 1C was used so we didn't have to mess with any wait for counter 1D commands that were already set up, and we grouped them so they'd go to the right places. Without the grouping, they'd all draw over one PC and move out.

From: Tutorials (Chrono Trigger)