Author Topic: Sprite Assembly  (Read 10532 times)

Vehek

  • Errare Explorer (+1500)
  • *
  • Posts: 1761
    • View Profile
Sprite Assembly
« on: June 15, 2006, 05:02:02 pm »
I think I may understand the sprite assembly data.
00 00 for example, loads tile 00, which in Chrono's sprites is the blank tile marked 00 in the attached image. 01 00 loads Crono's left (from his perspective) side of his hair. 10 00 loads the right side of his face. 11 00 loads the other side of his face, marked 11. Hopefully this is enough to establish in your mind the pattern of what tiles are loaded with what hex. The last 8 bytes of sprite assembly are divided into four groups of two, each group determining the X and Y position of (presumedly) four loaded tiles.
Revision Edit-The first 16 bytes load 8 tiles. In groups of 2, these are the the first rows of each four-tile group. The next 16 bytes are much the same, except they load the second row of their group.
The first four bytes load up the top two tiles for group 1, the next four bytes load up for group 2, and so on.

[attachment deleted by admin]
« Last Edit: August 11, 2006, 04:04:27 am by Vehek »

Vargose

  • Chrono Trigger Threads of Time
  • Guardian (+100)
  • *
  • Posts: 170
    • View Profile
Re: Sprite Assembly
« Reply #1 on: June 15, 2006, 05:13:05 pm »
Great work Vehek. Custom Sprites here we come. lol.

Vehek

  • Errare Explorer (+1500)
  • *
  • Posts: 1761
    • View Profile
Re: Sprite Assembly
« Reply #2 on: June 15, 2006, 05:17:51 pm »
Some of my work was inspired by some posts from the old ACMLM forum, where Temporal Flux was released
Quote from: Kyoufu Kawa on 11-29-04
Just telling that I can't quite grasp those eight bytes of sprite assembly data.

I can however tell you that the sprite, assuming Crono's idle forward anim, is split up in 16x16 blocks and each of the eight bytes controls a block's relative position. Seems rather negative too.

The 32 tile bytes are simply flag/tile combos. 4030 for Crono's left foot for example, flipped from 0030, his right foot.
I should note that in the actual data, the order for Crono's left foot is 30 40.
« Last Edit: June 16, 2006, 03:02:27 am by Vehek »

Chrono'99

  • Guru of Reason Emeritus
  • God of War (+3000)
  • *
  • Posts: 3605
    • View Profile
Re: Sprite Assembly
« Reply #3 on: June 15, 2006, 05:31:48 pm »
It seems to be a great news! Though I have no idea what and where those 00 00 are meant to be

Vehek

  • Errare Explorer (+1500)
  • *
  • Posts: 1761
    • View Profile
Re: Sprite Assembly
« Reply #4 on: June 15, 2006, 05:33:59 pm »
It seems to be a great news! Though I have no idea what and where those 00 00 are meant to be
00 00 is a loading of a single tile, the first tile of Crono's sprites, and that tile is blank. The 00 00 is at the start of the sprite assembly data for Crono. I haven't really checked others yet.

Edit- I currently have no idea how to reach graphics lower down, such as Crono kneeling down.
« Last Edit: June 24, 2006, 03:23:39 pm by Vehek »

Vehek

  • Errare Explorer (+1500)
  • *
  • Posts: 1761
    • View Profile
Re: Sprite Assembly
« Reply #5 on: June 15, 2006, 07:46:30 pm »
The main use of modifying sprite assembly would be forming new sprites that don't have to fit in the space shapes as the old one. For example, the CTCE team has trouble replacing Frog with Glenn because Frog is so small. Modifying the sprite assembly could solve that problem

I think I now know how to load tiles beyond 0xFF of the sprite graphics.
The sprite assembly hex XX 01 loads a tile from the second set of 256 tiles.
« Last Edit: June 15, 2006, 09:22:34 pm by Vehek »

justin3009

  • Fan Project Leader
  • God of War (+3000)
  • *
  • Posts: 3296
    • View Profile
Re: Sprite Assembly
« Reply #6 on: June 15, 2006, 08:07:37 pm »
interesting...

Chickenlump

  • Architect of Kajar
  • Chronopolitan (+300)
  • *
  • Posts: 327
  • O_o
    • View Profile
Re: Sprite Assembly
« Reply #7 on: June 16, 2006, 12:33:43 am »
I was working on this waaaaaay back when, but gave up, because I have the attention span of a stool sample. Seeing it in picture form makes it very easy to understand, especially if it works as described. Playable Schala, Nu, brand new sprites, FF6 characters fully animated as playable characters and/or enemies with ALL of their animations... (not just FF6, but any sprite rip from other games, Secret of Mana would work well with this engine)

« Last Edit: June 16, 2006, 02:11:07 am by Chickenlump »

Vehek

  • Errare Explorer (+1500)
  • *
  • Posts: 1761
    • View Profile
Re: Sprite Assembly
« Reply #8 on: June 16, 2006, 02:21:37 pm »
I can combine XX 40 which reverses a tile with XX 0Y to load a tile from a later group of 256 tiles with XX 4Y.

Vehek

  • Errare Explorer (+1500)
  • *
  • Posts: 1761
    • View Profile
Re: Sprite Assembly
« Reply #9 on: June 17, 2006, 03:06:05 am »
This might be considered double posting, but...
Yaaaaaargh! I wasted several hours trying to modify the 1000 AD soldier because it would seem that the byte that is supposedly sprite assembly in the sprite data is actually starting animation and vica versa! So for several hours, I was studying the sprite assembly of some other sprite! :shock:
« Last Edit: June 17, 2006, 03:21:00 am by Vehek »

Chickenlump

  • Architect of Kajar
  • Chronopolitan (+300)
  • *
  • Posts: 327
  • O_o
    • View Profile
Re: Sprite Assembly
« Reply #10 on: June 17, 2006, 02:08:28 pm »
Double posting on this board will not cause any problems and will be fine. This board isn't as strict and has nicer people by far than any other board I've been to. Since you are the thread's creator and are constantly contributing information, you can post 200 times in a row and nobody should say anything (if they do, they will get smacked down, by me *evil laugh*).

It would be easier to copy the pointer table, and list the offsets so you know what you are editing for sure, kind of like what I did with the enemy AI list I posted awhile back. I may create another list just for sprite assembly and animation data (animation data is fun to edit, and very easy) in the next day or 8. Now that I have time again, I have alot of things I wish to get done, and this is one of them. :)


Animation data is essential for new sprites anyway. My first animation hack, I tracked down Crono's battle winning animation, and changed it to a spin and then had him laughing for a few frames.

Vehek

  • Errare Explorer (+1500)
  • *
  • Posts: 1761
    • View Profile
Re: Sprite Assembly
« Reply #11 on: June 17, 2006, 06:06:54 pm »
The problem was that the sprite data byte marked "sprite assembly" in both Chrono Tweaker and Geiger's data format document, was actually the animation data byte. I discovered this after wiping out sprite assembly pointers one by one until I erased the 1000 AD guard's assembly pointer. I then discovered that the value of the pointer number was the same as the value marked "starting animation" in Chrono Tweaker.

Right now, I'm going to replace Tata with someone from FF6.

but2002

  • Enlightened One (+200)
  • *
  • Posts: 297
  • Death Omen.
    • View Profile
Re: Sprite Assembly
« Reply #12 on: June 17, 2006, 06:07:53 pm »
FF6? Nice!   BTW the doub;le posting is strict at the Qhimm Forums so he is in a habit!~

 :D

justin3009

  • Fan Project Leader
  • God of War (+3000)
  • *
  • Posts: 3296
    • View Profile
Re: Sprite Assembly
« Reply #13 on: June 17, 2006, 06:24:36 pm »
heh, this'll be funny :P

Chickenlump

  • Architect of Kajar
  • Chronopolitan (+300)
  • *
  • Posts: 327
  • O_o
    • View Profile
Re: Sprite Assembly
« Reply #14 on: June 17, 2006, 06:27:41 pm »
Ah, interesting. :)

Double posting here at the Compendium is a habit you guys can get into, especially given the overall intelligence of virtually all the members here. Talent is in no short supply in these forums, and restricting it would be silly.

I made a Sprite Assembly editor a very long time ago to edit Crono's sprite assembly, perhaps I can fix it up some, have a textbox that allows the user to input an offset, and have the proper amount of animation frames in a listbox, renamable to reflect what animation it is, and have the values be editable (no graphics or anything, just easier editing of values).

Vehek, could you post an example of the tile reversal with XX 4Y? I'm curious on how that would apply to a tile with 01 79 (for example), unless I'm misunderstanding (graphic page 1, tile 79 (121 in decimal)).