Author Topic: I think it's time to work on the Techs  (Read 12871 times)

LegacyCrono

  • Earthbound (+15)
  • *
  • Posts: 28
    • View Profile
Re: I think it's time to work on the Techs
« Reply #60 on: April 14, 2007, 04:00:05 pm »
I tried using a corruptor to change bytes from $C1C00 to $C37FF. Funny things happened. First, skills are all scrambled (See photo below) and when Marle attacks, Crono uses Thunder!! Amazing, isn't it? Odd is that it inflicts no damage at all...  :(

Another corruption test... This time, when I use a skill, the 1st slot character uses it! Check bellow, I made Magus uses Robo's RocketPunch and Marle uses Magus' Thunder 2. Some Double Techs works, but most doesn't. Oddly, I couldn't use any Triple tech but Delta Attack (Is that the name? I can't remember. It's Crono/Marle/Lucca, but I can use with any trio). Still, it does no damage. When you attack, appears 0 in a monster and "miss" in other. Really weird, but fun (lol, Magus using Robo Tackle!! :lol:)
Check Gato using Laser, awesome!! xD

That's all for now. BTW, I've searched for "Haste" (A7BA CCCD BE) and I found two address... Why?  :? There should be only one, right?

SEE YA!!!!!

[attachment deleted by admin]

justin3009

  • Fan Project Leader
  • God of War (+3000)
  • *
  • Posts: 3296
    • View Profile
Re: I think it's time to work on the Techs
« Reply #61 on: April 14, 2007, 04:05:05 pm »
Yes.  This has happened alot.  The first byte 90 96 99 or w/e it is, is whoever uses the tech.  1st character 2nd character 3rd character or monster.  It's really weird.  You can make anyone use any tech really, it's really confusing on how to get it work.

justin3009

  • Fan Project Leader
  • God of War (+3000)
  • *
  • Posts: 3296
    • View Profile
Re: I think it's time to work on the Techs
« Reply #62 on: April 14, 2007, 06:56:38 pm »
Alright, so this is going to be the breakdown that I know of for techs.

Using Transhlextion or w/e 0eXXXX is the data for the techs.  So for example,  Ice is 36 11 so reverse that and it's 0e1136 for ice!  In Translhextion, all that stuff is, is the palette for some of the stuff, the SFX, where everything is located, and who does it.  So that doesn't have the data for the tech.

In Translhextion again, C1ACD is who the tech affects and what it does.  IDK who posted it but I give huge credit to him.  MP cost of techs begins at C273C, 1 byte each.  C1ACD: Cyclone---------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)

In Geiger's SNES9X Debugger, CD5EE6 is the start for the 2 byte header of techs.  09 09 = Cyclone to start it off.

Again in Geiger's SNES9X Debugger, CD45AD is the tech bytes.  What tech performs, the palette of the tech, what animation the tech does, what graphics the tech use.

That is my breakdown of the techs as of now.  I'm still not exactly sure how to get custom techs yet, but i'm trying to work on one but just 1 palette won't change and it's ticking me off DX

justin3009

  • Fan Project Leader
  • God of War (+3000)
  • *
  • Posts: 3296
    • View Profile
Re: I think it's time to work on the Techs
« Reply #63 on: April 29, 2007, 12:52:00 pm »
Tech Editing/Hacking
By: Justin3009 (AKA Shishisenkou or Justin3007)

Requirements
-----------------
1) Geiger's SNES9X Debugger
2) Translhextion
3) Unheadered Chrono Trigger ROM

Introduction
----------------------

Ok everyone, I decided to try making my first tutorial ever!  As you all know, the game that i've been hex editing is Chrono

Trigger.  Very great game indeed, but anyways, on to the tutorial!

What to do
------------
First, Download Geiger's SNES9X Debugger.  Once you do, Open it up.  Then, click load and then select your Chrono Trigger

rom.  You should have a menu appear with many buttons.  Click Run, then click Show Hex.

In Show Hex, on the left blank, is where the address starts and the right box is where it ends.  The 2 byte header for techs

is at starting at CD5EE6.  It starts with Cyclone which is 09 09.  But this isn't important that I know of except for finding

out where the tech is.  Now down to the real business.

The Tech data starts at CD45EF and ends at CD4925.  The first part is Cyclone.  But we're going to go to Ice and Cure.  So

for the address put cd45F2 on the left and cd4600 on the right.  This focus's on  Ice's data AND CURES!  But if you want just

pure Ice.  Go to CD45F2 and cd45F9.

As every tech, it starts and ends with FF.  Do NOT change that.  As it can make the tech not work and thus causing the game

to freeze.  Anyways, now lets get started.

FF 0C F4 00 25 3A 0C 44 is Ice's data.  This could be different from the actual game graphics because I might have accidentally edited it a tiny tiny bit.  FF as I said before, starts and ends the tech.  Or It just is the thing that tells

the tech to end.  I'm going to make a seperate thing for each byte so here it goes.

0C - This is what number the techs are.  Changing this will change the tech that will be used.  For example, Change 0C to 01,

and you have Cyclone.  00 is nothing 01 is cyclone 02 is Slash etc...Therefore, 0C is Ice.  So that slims it down a bit to

help us out.

F4 00 - These 2 bytes are the graphics that appear around Marle when she casts.  AKA the little Ice crystals that spin around

her.  If you change it to F4 01, then you have fire graphics.

25 3A 0C - These control the graphics and palette of the Ice that flows to the enemy.  25 is the Ice Crystals while 3A is the

palette.  If you change 3A to F1, the Ice glows like the aura around you when you use protect, except its more rainbowish and

random.  It's hard to explain.  I wouldn't change 0C though, it can change graphics and move the Ice swirling crystals

somewhere else.  Not entirely sure what it does

44 - Ahh...44..I love this one.  This displays the graphics of the tech when it hits the enemy.  Thus, making 44 the Ice

Block that appears.  Changing it to 65 will do Lavos's Laser Beams attack.

And that's about it for ice.

FF 0C F4 00 25 3A 0C 44 0B E1 02 1E 0B 0B FF is the full 2 techs.  0B E1 02 1E 0B 0B is Cure.  Feel free to experiment with

it.  This sums it up for Geiger's SNES9X Debugger.




Translhextion
-----------------------------
As Vargose and Jsondag2 told us, Provoke started at 0E106F.  By luck, 0E is always the first part of the techs.  So let's

work on Ice.  Ice is 36 11, so to get the tech data, put the bytes in reverse order so its 0E1136.  And that's where Ice

Starts.

Using Transhlextion or w/e 0eXXXX is the data for the techs.  So for example,  Ice is 36 11 so reverse that and it's 0e1136

for ice!  In Translhextion, all that stuff is, is the palette for some of the stuff, the SFX, where everything is located,

and who does it.  So that doesn't have the data for the tech.

In Translhextion again, 0C1ACD is who the tech affects and what it does.  IDK who posted it but I give huge credit to him. 

MP cost of techs begins at 0C273C, 1 byte each.  0C1ACD: Cyclone---------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)

For example, here's Ice's data (173 Bytes Long) I think it's this size...

90 F0 11 6E   49 11 52 11   BB AA 6E 11  A3 11 BA 11   A0 09 52 0D   05 5A 02 11
24 02 02 31   24 03 3D 0C   78 76 34 1B  22 1B 00 A4   03 2E 01 00   24 03 20 14
1E 09 22 1B   00 50 00 1B   09 72 03 73  00 20 10 33   03 41 1E 06   41 1F 07 33
09 78 72 1E   26 24 02 78   6F 1B 00 1E  22 00 1B 09   72 03 73 00   20 10 1E 27
24 02 0A 1B   00 76 00 03   A8 09 1E 22  00 1B 09 72   03 73 00 20   10 1E 28 24
02 0A 1B 00   76 00 03 A8   12 1E 22 00  1B 09 72 03   73 00 20 10   1E 29 36 24
02 0A 1B 00   76 00 03 A8   1B 1E 22 22  36 00 90 10   10 00 DF 11   F1 11 04 12
A0 A0 3D 03   72

Now for the first Row:

90 - Represents which character does what.  00-10 No one 20-30 1st slot 40-60 2nd Slot 80 - Broken 90 - Whoever uses Tech
F0 - Not entirely sure, but I'm guessing this tells the tech whether to start or skip the effects.
11 - Doesn't do anything...Left over byte?
6E - Same as above
49 - How much time before to cast the tech
11 - Where Marle is and is going to go to cast it
52 - Where the enemy is located?
11 - Same as above
BB AA - Nothing?
6e - Where the Ice surrounds marle and the palette and if the tech works
11 - same as above
A3 - Where the Ice surrounds Marle Starts
11 - same as above
ba - Unsure, but it won't let tech go on if changed
11 - Same as above
A0 - Nothing
09 - Timer?
52 - Nothing
0D - Same as First Byte
05 - ?
5A - Nothing
02 - Animation Frame for Marle
11 - Animation frame for Marle
24 - Marle's Location when casting
02 - Animation Frame For Marle
02 - End Tech Early?
31 - Animation frame for Marle
24 - Enemies Location
03 - Timer for Ice Block
3d - Where Ice block goes, or whether it cast or not, where monster goes, where marle goes
0C - Who Ice block casts on

Well that covers the first row and the first 2 parts of the 2nd row.  You get the point.  This is the basic data for the

techs.

I posted this before, but I really don't want to go through 173 bytes of data and pin point everything out.  But this is the

basic idea for techs.

Zakyrus

  • Entity
  • Magical Dreamer (+1250)
  • *
  • Posts: 1351
  • "Bouncy, bouncy, bouncy... --!!"
    • View Profile
Re: I think it's time to work on the Techs
« Reply #64 on: April 30, 2007, 08:28:13 am »
OOOOOHHHHHH!
Awesome.  8)
I will try this out very soon (as of late I am too busy working on CT+).

justin3009

  • Fan Project Leader
  • God of War (+3000)
  • *
  • Posts: 3296
    • View Profile
Re: I think it's time to work on the Techs
« Reply #65 on: May 07, 2007, 10:26:10 am »
- Can you say Water Whirl :O

Kyronea

  • Errare Explorer (+1500)
  • *
  • Posts: 1913
    • View Profile
Re: I think it's time to work on the Techs
« Reply #66 on: May 07, 2007, 10:34:00 am »
What in the hell?! You created a new tech! You created a new tech! Fantastic! This is wonderful news for all Chrono ROM hackers!

justin3009

  • Fan Project Leader
  • God of War (+3000)
  • *
  • Posts: 3296
    • View Profile
Re: I think it's time to work on the Techs
« Reply #67 on: May 07, 2007, 07:19:46 pm »
Chrono Trigger - Water Whirl!  Takes place of Fire Whirl.  I was trying to find the SFX for the fire noise but I couldn't find it.  And I was hoping I could get rid of the Fire that goes to Crono or change it to water, but when I did, it removed the whirly thing around Crono. >___<  So frikin hard to work with.

Edit: Does not work with more then 1 enemy in range.  I'm going to edit it so it only works on 1 enemy at a time.

[attachment deleted by admin]
« Last Edit: May 08, 2007, 07:37:17 pm by justin3009 »

justin3009

  • Fan Project Leader
  • God of War (+3000)
  • *
  • Posts: 3296
    • View Profile
Re: I think it's time to work on the Techs
« Reply #68 on: May 10, 2007, 11:46:27 am »
Prolly too much to ask but, I was thinking about this for techs.  With most of the information provided, we could probably make a VB program that can change the graphics of the tech.  I don't think it would be to difficult to do but since i'm a novice in VB and barely know how to code then I really don't have much room to say.  If I must, I could provide all of the data for each tech.

justin3009

  • Fan Project Leader
  • God of War (+3000)
  • *
  • Posts: 3296
    • View Profile
Re: I think it's time to work on the Techs
« Reply #69 on: May 25, 2007, 01:53:48 pm »
Thought I'd update a bit more with the palettes for the magical stuff that appears around them before they cast it.  Updated a bit more but I accidentally skipped alot of values.

[attachment deleted by admin]

Zakyrus

  • Entity
  • Magical Dreamer (+1250)
  • *
  • Posts: 1351
  • "Bouncy, bouncy, bouncy... --!!"
    • View Profile
Re: I think it's time to work on the Techs
« Reply #70 on: May 28, 2007, 01:58:44 am »
Ooooh.  :shock: This thread looks better and better everytime I come here...

I so wish I understood this ROM stuff better. I can code C++ but ROM asm is alien to me, otherwise I would write a thousand editors...  :(

justin3009

  • Fan Project Leader
  • God of War (+3000)
  • *
  • Posts: 3296
    • View Profile
Re: I think it's time to work on the Techs
« Reply #71 on: May 28, 2007, 09:23:01 am »
This is why I wish I knew how to code this stuff in VB or C++ >.<!  It really doesn't seem that hard since there's item editors but that's just me.

ZeaLitY

  • Entity
  • End of Timer (+10000)
  • *
  • Posts: 10795
  • Spring Breeze Dancin'
    • View Profile
    • My Compendium Staff Profile
Re: I think it's time to work on the Techs
« Reply #72 on: October 05, 2007, 01:38:56 am »
Bumping.

justin3009

  • Fan Project Leader
  • God of War (+3000)
  • *
  • Posts: 3296
    • View Profile
Re: I think it's time to work on the Techs
« Reply #73 on: October 05, 2007, 08:40:10 am »
I'll be working on more techs sooner or later, i'm just kinda lazy this week >_>

Chickenlump

  • Architect of Kajar
  • Chronopolitan (+300)
  • *
  • Posts: 327
  • O_o
    • View Profile
Re: I think it's time to work on the Techs
« Reply #74 on: October 05, 2007, 01:44:32 pm »
I've been busy with family problems and no internet, but during that time I worked a bit on techs. I'll post a bit of it if you guys want to play around with it. All addresses are in SNES format.

There are like 4 different sets of techs which I believe to be player techs enemy techs, player attacks and in-battle items.

2 useful RAM Addresses
7E9877                  Attack index is held here for the 4 different attack types
7E9878 - 7E9879    Pointer for current attack is held here for all attack types


The following 4 sections of code load the pointers for the 4 different kinds of techs.

Code: [Select]
$C1/46EF BF F0 61 CD LDA $CD61F0,x[$CD:6210] A:0020 X:0020 Y:0006 P:envmxdizc   // Load the 2 byte pointer (Singing Attack is the 20th Tech)
$C1/46F3 8D 78 98 STA $9878  [$7E:9878] A:9EDA X:0020 Y:0006 P:eNvmxdizc   // Store the pointer in RAM at 7E9878
$C1/46F6 AA TAX A:9EDA X:0020 Y:0006 P:eNvmxdizc   // Transfer the pointer to X
$C1/46F7 A8 TAY A:9EDA X:9EDA Y:0006 P:eNvmxdizc   // Transfer the pointer to Y
$C1/46F8 7B TDC A:9EDA X:9EDA Y:9EDA P:eNvmxdizc
$C1/46F9 E2 20 SEP #$20 A:0000 X:9EDA Y:9EDA P:envmxdiZc
$C1/46FB BF 00 00 CD LDA $CD0000,x[$CD:9EDA] A:0000 X:9EDA Y:9EDA P:envMxdiZc   // Load CD0000 with X (CD9EDA)
$C1/46FF 85 81 STA $81    [$00:0081] A:0098 X:9EDA Y:9EDA P:eNvMxdizc
$C1/4701 BF 01 00 CD LDA $CD0001,x[$CD:9EDB] A:0098 X:9EDA Y:9EDA P:eNvMxdizc
$C1/4705 85 80 STA $80    [$00:0080] A:00F8 X:9EDA Y:9EDA P:eNvMxdizc
$C1/4707 BF 02 00 CD LDA $CD0002,x[$CD:9EDC] A:00F8 X:9EDA Y:9EDA P:eNvMxdizc
$C1/470B 85 83 STA $83    [$00:0083] A:0080 X:9EDA Y:9EDA P:eNvMxdizc
$C1/470D BF 03 00 CD LDA $CD0003,x[$CD:9EDD] A:0080 X:9EDA Y:9EDA P:eNvMxdizc

$C1/4617 BF F0 5E CD LDA $CD5EF0,x[$CD:5EF2] A:0002 X:0002 Y:0002 P:envmxdizc   // Load the 2 byte pointer (Cyclone is the 2nd script)
$C1/461B 8D 78 98 STA $9878  [$7E:9878] A:0909 X:0002 Y:0002 P:envmxdizc   // Store the pointer in RAM at 7E9878
$C1/461E AA TAX A:0909 X:0002 Y:0002 P:envmxdizc   // Transfer the pointer to X
$C1/461F A8 TAY A:0909 X:0909 Y:0002 P:envmxdizc   // Transfer the pointer to Y
$C1/4620 7B TDC A:0909 X:0909 Y:0909 P:envmxdizc
$C1/4621 E2 20 SEP #$20 A:0000 X:0909 Y:0909 P:envmxdiZc
$C1/4623 BF 00 00 CE LDA $CE0000,x[$CE:0909] A:0000 X:0909 Y:0909 P:envMxdiZc   // Load CE0000 with X (CE0909)
$C1/4627 85 81 STA $81    [$00:0081] A:0098 X:0909 Y:0909 P:eNvMxdizc
$C1/4629 BF 01 00 CE LDA $CE0001,x[$CE:090A] A:0098 X:0909 Y:0909 P:eNvMxdizc
$C1/462D 85 80 STA $80    [$00:0080] A:0080 X:0909 Y:0909 P:eNvMxdizc
$C1/462F BF 02 00 CE LDA $CE0002,x[$CE:090B] A:0080 X:0909 Y:0909 P:eNvMxdizc
$C1/4633 85 83 STA $83    [$00:0083] A:0080 X:0909 Y:0909 P:eNvMxdizc
$C1/4635 BF 03 00 CE LDA $CE0003,x[$CE:090C] A:0080 X:0909 Y:0909 P:eNvMxdizc

$C1/47CB BF F0 63 CD LDA $CD63F0,x[$CD:63F2] A:0002 X:0002 Y:0002 P:envmxdizc   // Load the 2 byte pointer (Tonic is the 2nd script)
$C1/47CF 8D 78 98 STA $9878  [$7E:9878] A:829C X:0002 Y:0002 P:eNvmxdizc   // Store the pointer in RAM at 7E9878
$C1/47D2 AA TAX A:829C X:0002 Y:0002 P:eNvmxdizc   // Transfer the pointer to X
$C1/47D3 A8 TAY A:829C X:829C Y:0002 P:eNvmxdizc   // Transfer the pointer to Y
$C1/47D4 7B TDC A:829C X:829C Y:829C P:eNvmxdizc
$C1/47D5 E2 20 SEP #$20 A:0000 X:829C Y:829C P:envmxdiZc
$C1/47D7 BF 00 00 CE LDA $CE0000,x[$CE:829C] A:0000 X:829C Y:829C P:envMxdiZc   // Load CE0000 with X (CE829C)
$C1/47DB 85 81 STA $81    [$00:0081] A:0090 X:829C Y:829C P:eNvMxdizc
$C1/47DD BF 01 00 CE LDA $CE0001,x[$CE:829D] A:0090 X:829C Y:829C P:eNvMxdizc
$C1/47E1 85 80 STA $80    [$00:0080] A:00C0 X:829C Y:829C P:eNvMxdizc
$C1/47E3 BF 02 00 CE LDA $CE0002,x[$CE:829E] A:00C0 X:829C Y:829C P:eNvMxdizc
$C1/47E7 85 83 STA $83    [$00:0083] A:0080 X:829C Y:829C P:eNvMxdizc
$C1/47E9 BF 03 00 CE LDA $CE0003,x[$CE:829F] A:0080 X:829C Y:829C P:eNvMxdizc

$C1/442C BF C6 5E CD LDA $CD5EC6,x[$CD:5EC6] A:0000 X:0000 Y:0098 P:envmxdiZc   // Load the 2 byte pointer (Crono's attack is the first script)
$C1/4430 8D 78 98 STA $9878  [$7E:9878] A:0380 X:0000 Y:0098 P:envmxdizc   // Store the pointer in RAM at 7E9878
$C1/4433 AA TAX A:0380 X:0000 Y:0098 P:envmxdizc   // Transfer the pointer to X
$C1/4434 A8 TAY A:0380 X:0380 Y:0098 P:envmxdizc   // Transfer the pointer to Y
$C1/4435 7B TDC A:0380 X:0380 Y:0380 P:envmxdizc
$C1/4436 E2 20 SEP #$20 A:0000 X:0380 Y:0380 P:envmxdiZc
$C1/4438 BF 00 00 CE LDA $CE0000,x[$CE:0380] A:0000 X:0380 Y:0380 P:envMxdiZc   // Load CE0000 with X (CE0380)
$C1/443C 85 81 STA $81    [$00:0081] A:0090 X:0380 Y:0380 P:eNvMxdizc
$C1/443E BF 01 00 CE LDA $CE0001,x[$CE:0381] A:0090 X:0380 Y:0380 P:eNvMxdizc
$C1/4442 85 80 STA $80    [$00:0080] A:0080 X:0380 Y:0380 P:eNvMxdizc
$C1/4444 BF 02 00 CE LDA $CE0002,x[$CE:0382] A:0080 X:0380 Y:0380 P:eNvMxdizc
$C1/4448 85 83 STA $83    [$00:0083] A:0090 X:0380 Y:0380 P:eNvMxdizc
$C1/444A BF 03 00 CE LDA $CE0003,x[$CE:0383] A:0090 X:0380 Y:0380 P:eNvMxdizc


Using the decoded byte lengths, I attempted to decode Gato's Singing attack to some degree...
The first part of the techs is a header containging pointers to different sections of the tech. Directly following the headers are the scripts themselves.


Code: [Select]
98 F8 80 00 F0 9E 0A 9F 18 9F 21 9F 3B 9F 4F 9F 62 9F 76 9F 8B 9F  - Header for Gato's Singing Attack

CD9EF0 24 05
3D 00 // Set Target (Puts the Spotlight on Gato, setting to 3D 80 puts the spotlight on Crono)
30 1B 01 // Assumed to darken the screen
32 0A
72 0D // Set Facing (Gato faces forward for singing animation)
02 06 // Play Animation (Gato does his singing animation)
24 0C
30 1A 01 // Assumed to lighten screen back up
20 20 // Timer
06 03 // Play Animation Frame?
50 // Damage Related
2E // Damage Related
01 // Damage Related
00 // End Section

CD9F0A 24 0A
02 09 // Play Animation
78 AA // Play Sound (Plays Gato's Singing diddly)
24 0B
20 0F // Timer
36 // Return 
06 03 // Play Animation Frame? 
00 // End Section

CE9F18 24 0A
02 09 // Play Animation
24 0C
06 03 // Play Animation Frame? 
00 // End Section

CD9F21 60 00 // Set Palette (Sets palette for Musical Note Graphics)
73 00
33 00 // Another Set Target (Starts the Musical Notes off from Gato, changing to 33 80 sets them off from Crono)
3A 1E 09 // Assumed to affect the starting position of the notes from the target sprite they originate from
3A 1F D7 // Assumed to affect the starting position of the notes from the target sprite they originate from
1A // Set X,Y coords 
36 // Return 
24 0A
70 // Show Sprite
02 00 // Play Animation
09 // Set Speed - Medium (sets the speed of the Musical Note)
85 00 // Set Direction (Sets Direction of Musical Note #1)
A8 30 // Slide Sprite (Move Musical Note #1 graphic to the right)
71 // Hide Sprite
00 // End Section

CD9F3B 73 00
24 01
1A // Set X,Y coords
36 // Return 
24 0A
20 1E // Timer 
70 // Show Sprite
02 00 // Play Animation
09 // Set Speed - Medium (sets the speed of the Musical Note) 
85 E0 // Set Direction (Sets Direction of Musical Note #2) 
A8 30 // Slide Sprite (Move Musical Note #2 graphic)
71 // Hide Sprite
00 // End Section

CD9F4F 73 00
24 02
1A // Set X,Y coords 
36 // Return
20 3C // Timer
70 // Show Sprite
02 00 // Play Animation
09 // Set Speed - Medium (sets the speed of the Musical Note)
85 20 // Set Direction (Sets Direction of Musical Note #3)
A8 30 // Slide Sprite (Move Musical Note #3 graphic)
71 // Hide Sprite
36 // Return
00 // End Section

CD9F62 73 00
24 03
1A // Set X,Y coords 
36 // Return
24 0A
20 0F // Timer 
70 // Show Sprite
02 00 // Play Animation
09 // Set Speed - Medium (sets the speed of the Musical Note) 
85 10 // Set Direction (Sets Direction of Musical Note #4) 
A8 30 // Slide Sprite (Move Musical Note #4 graphic) 
71 // Hide Sprite
00 // End Section

CD9F76 73 00
24 04
1A // Set X,Y coords 
36 // Return
24 0A
20 3C // Timer 
70 // Show Sprite
02 00 // Play Animation
09 // Set Speed - Medium (sets the speed of the Musical Note) 
85 F0 // Set Direction (Sets Direction of Musical Note #5)   
A8 30 // Slide Sprite (Move Musical Note #5 graphic) 
71 // Hide Sprite
36 // Return
00 // End Section

CD9F8B 02 06 // Play Animation
20 1E // Timer 
06 05
20 0F // Timer 
06 03
20 0F // Timer 
50 // Damage related?
2E // Damage related?
01 // Damage related?
00 // End Section


Command 1E has it's own pointer table for it's arguments.

Code: [Select]
Pointer Table is located at CE0000 and ends at CE009B
78 pointers total (00 - 4E)

28 D4
39 D4
4A D4
5B D4
6C D4
7D D4
8B D4
99 D4
A7 D4
B5 D4
C3 D4
CB D4
DF D4
E6 D4
EE D4
F6 D4
0B D5
11 D5
19 D5
28 D5
3A D5
49 D5
58 D5
6B D5
7E D5
88 D5
A3 D5
B1 D5
C1 D5
12 D6
17 D6
1C D6
62 D6
73 D6
85 D6
C0 D6
C7 D6
CD D6
E5 D6
0C D7
30 D7
54 D7
76 D7
95 D7
9E D7
B9 D7
D8 D7
F7 D7
20 D8
60 D8
67 D8
76 D8
C6 D8
16 D9
2E D9
62 D9
67 D9
70 D9
97 D9
BE D9
CF D9
E1 D9
32 DA
42 DA
53 DA
67 DA
BB DA
E0 DA
10 DB
1C DB
5D DB
65 DB
6D DB
6E DB
75 DB
8D DB
BC DB
E9 DB



And here are the decoded byte lengths. I just realized I'm missing a few entries, I'll add them when I have more time, and some of the descriptions of the commands may be a little off or just plain wrong.   :)

Code: [Select]
Command Decodes Notes

00 - 1 byte
01 - 1 byte
02 - 2 bytes // Play Animation?
03 - 2 bytes // Play Animation?
04 - 2 bytes
05 - 2 bytes
06 - 2 bytes (same code as 05)
07 - 1 byte
08 - 1 byte
09 - 1 byte // Set Speed - Slow
0A - 1 byte // Set Speed - Medium
0B - 1 byte // Set Speed - Fast
0C - 1 byte (same code as 08)
0D - 2 bytes
0E - 1 byte
0F - 1 byte (same code as 08)
10 - 3 bytes // Slide Sprite to XX YY
11 - 1 byte
12 - 2 bytes
13 - 4 bytes
14 - 2 bytes
15 - 3 bytes

19 - 3 bytes // Sprite Teleport
1A - 1 byte
1B - 2 bytes
1C - 2 bytes

1E - 2 bytes // Sprite Effect/Action
1F - 1 byte
20 - 2 bytes // Time To Wait
21 - 1 byte
22 - 2 bytes
23 - 2 bytes
24 - 2 bytes
25 - 2 bytes
26 - 3 bytes
27 - 1 byte
28 - 1 byte
29 - 1 byte
2A - 1 byte
2B - 1 byte
2C - 1 byte
2D - 1 byte
2E - 1 byte
2F - 1 byte (same code as 01)
30 - 3 bytes
31 - 2 bytes
32 - 2 bytes
33 - 2 bytes // Set Target?
34 - 2 bytes
35 - 1 byte
36 - 1 byte
37 - 2 bytes
38 - 1 byte
39 - 1 byte
3A - 3 bytes
3B - 2 bytes
3C - 2 bytes
3D - 2 bytes
3E - 2 bytes (same code as 3D)
3F - 2 bytes (same code as 3D)
40 - 2 bytes (same code as 3D)
41 - 3 bytes
42 - 2 bytes
43 - 4 bytes
44 - 1 byte
45 - 2 bytes (same code as 3D)
46 - 2 bytes (same code as 3D)
47 - 2 bytes
48 - 2 bytes (same code as 47)
49 - 3 bytes
4A - 1 byte
4B - 1 byte (same code as 01)
4C - 1 byte (same code as 01)
4D - 1 byte (same code as 4A)
4E - 1 byte
4F - 1 byte
50 - 1 byte
51 - 1 byte (same code as 50)
52 - 1 byte (same code as 50)
53 - 1 byte (same code as 50)
54 - 1 byte (same code as 50)
55 - 1 byte (same code as 50)
56 - 1 byte (same code as 01)
57 - 1 byte (same code as 01)
58 - 1 byte (same code as 01)
59 - 1 byte (same code as 01)
5A - 1 byte (same code as 01)
5B - 1 byte (same code as 01)
5C - 1 byte (same code as 01)
5D - 1 byte
5E - 1 byte
5F - 1 byte
60 - 2 bytes // Get and Apply Palette?
61 - 4 bytes
62 - 4 bytes (same code as 61)
63 - 4 bytes (same code as 61)
64 - 4 bytes (same code as 61)
65 - 1 byte
66 - 1 byte (same code as 65)
67 - 1 byte (same code as 65)
68 - 1 byte (same code as 65)
69 - 2 bytes
6A - 1 byte
6B - 2 bytes
6C - 3 bytes
6D - 1 byte
6E - 1 byte
6F - 1 byte
70 - 1 byte
71 - 1 byte
72 - 2 bytes // Set Facing?
73 - 2 bytes
74 - 2 bytes
76 - 3 bytes
77 - 2 bytes
78 - 2 bytes // Play Sound
79 - 2 bytes (same code as 78)
7A - 3 bytes
7B - 3 bytes (same code as 7A)
7C - 1 byte // Play Sound Based on Weapon Equipped
7D - 1 byte
7E - 1 byte (same code as 01)
7F - 1 byte (same code as 01)
80 - 3 bytes // Screen Color Flash
81 - 2 bytes (same code as 47)
82 - 2 bytes (same code as 47)
83 - 2 bytes (same code as 47)
84 - 2 bytes (same code as 47)
85 - 2 bytes // Set Direction
86 - 1 byte (same code as 01)
87 - 1 byte (same code as 01)
88 - 1 byte (same code as 01)
89 - 1 byte (same code as 01)
8A - 1 byte (same code as 01)
8B - 1 byte (same code as 01)
8C - 1 byte (same code as 01)
8D - 1 byte (same code as 01)
8E - 1 byte (same code as 01)
8F - 1 byte (same code as 01)
90 - 1 byte (same code as 01)
91 - 1 byte (same code as 01)
92 - 1 byte (same code as 01)
93 - 1 byte (same code as 01)
94 - 1 byte (same code as 01)
95 - 1 byte (same code as 01)
96 - 1 byte (same code as 01)
97 - 1 byte (same code as 01)
98 - 3 bytes
99 - 1 byte
9A - 3 bytes
9B - 1 byte
9C - 3 bytes (same code as 98)
9D - 1 byte (same code as 99)
9E - 1 byte (same code as 01)
9F - 1 byte (same code as 01)
A0 - 1 byte (same code as 01)
A1 - 1 byte (same code as 01)
A2 - 1 byte
A3 - 1 byte (same code as 01)
A4 - 3 bytes
A5 - 1 byte
A6 - 1 byte
A7 - 1 byte (same code as 01)
A8 - 2 bytes // Slide Sprite?
A9 - 2 bytes
AA - 1 byte (same code as 01)
AB - 1 byte (same code as 01)
AC - 1 byte (same code as 01)
AD - 1 byte (same code as 01)
AE - 1 byte (same code as 01)
AF - 1 byte (same code as 01)
B0 - 1 byte (same code as 01)
B1 - 1 byte (same code as 01)
B2 - 1 byte (same code as 01)
B3 - 1 byte (same code as 01)
B4 - 1 byte (same code as 01)
B5 - 1 byte (same code as 01)
B6 - 1 byte (same code as 01)
B7 - 1 byte (same code as 01)
B8 - 1 byte (same code as 01)
B9 - 1 byte (same code as 01)
BA - 1 byte (same code as 01)
BB - 1 byte (same code as 01)
BC - 1 byte (same code as 01)
BD - 1 byte (same code as 01)
BE - 1 byte (same code as 01)
BF - 1 byte (same code as 01)
C0 - 5 bytes // Circular Sprite Movement
C1 - 4 bytes // Circular Sprite Movement
C2 - 5 bytes // Circular Sprite Movement
C3 - 4 bytes // Circular Sprite Movement
C4 - 3 bytes // Moves sprite downward?
C5 - 2 bytes
C6 - 1 byte (same code as 01)
C7 - 1 byte (same code as 01)
C8 - 1 byte (same code as 01)
C9 - 1 byte (same code as 01)
CA - 1 byte (same code as 01)
CB - 1 byte (same code as 01)
CC - 1 byte (same code as 01)
CD - 1 byte (same code as 01)
CE - 1 byte (same code as 01)
CF - 1 byte (same code as 01)
D0 - 1 byte
D1 - 1 byte
D2 - 2 bytes
D3 - 1 byte
D4 - 1 byte
D5 - 1 byte
D6 - 1 byte
D7 - 3 bytes
D8 - 4 bytes
D9 - 2 bytes
DA - 2 bytes
DB - 1 byte
« Last Edit: October 06, 2007, 09:25:13 am by Chickenlump »