Jump to content

TSBm 1.3: Making your own FACES


Recommended Posts

I get the feeling that this is a very annoying question to ask, but I've scoured the internet for a couple hours looking for some answers (Including multiple TSB forums).

In TSBm 1.3, when you create your own face image, or even if you slightly edit one of the existing ones, are you ever able to save them and see them in the rom? When ever a select a player to have an altered face, TSBm 1.3 shows them as having it, but when I save it and open the rom, they are one of the white guys with the black mullets, but they have all blue for a face.

Everything else works fine. I can even change their faces to all ready existing faces. Change attributes, names and jersey numbers. But for some reason that face image just will not save.

I notice in the readme that came in the zip that certain player face bugs have been fixed. Is it still in the WIP phase as far as character faces go?

Link to comment
Share on other sites

As far as I know, the faces are rendered.

They are not bitmaps, so in order to change them, I believe that you would have to change the drawing algorithms.

Ok, so I am not suppsoe to be able to have it work with TSBm 1.3 alone? Ok, that's good to know.

Is changing the algorithms super hard? I've no experience in hacking roms. Any chance knowledge in C will help?

Link to comment
Share on other sites

The faces in the rom are made in tile pieces that get grouped together.

So the rom is setup with pointers where the first half are white players and the second half are dark players. Those pointers go to more pointers for the parts (so the face shape, hair, eyes, mouth, etc each have pointers). Those pointers go to the tiles to be used and placement.

Not really hard to do once you know what you are doing (I could make an example for better knowledge). But all of it currently requires doing it in hex or an assembler.

But when you actually edit a tile then every face using that tile will change and that isn't usually what you want. So any editing program would actually have to be more drag and drop (like the helmet editor by Konforce).

Link to comment
Share on other sites

The faces in the rom are made in tile pieces that get grouped together.

So the rom is setup with pointers where the first half are white players and the second half are dark players. Those pointers go to more pointers for the parts (so the face shape, hair, eyes, mouth, etc each have pointers). Those pointers go to the tiles to be used and placement.

Not really hard to do once you know what you are doing (I could make an example for better knowledge). But all of it currently requires doing it in hex or an assembler.

But when you actually edit a tile then every face using that tile will change and that isn't usually what you want. So any editing program would actually have to be more drag and drop (like the helmet editor by Konforce).

I always thought they were rendered because I could never find the tiles, do where the tiles are at?

Link to comment
Share on other sites

For every image, a group of tiles are ordered. Each image group is then mapped back to a pointer. That pointer is then what is used when defining the players image, along with their attributes.

One way to make different faces would be to edit the current tiles, which would effect any other image that the tile is included in.

Another option would be increase the amount of tiles used for face pictures, which would leave the current images intact.

Is it very difficult to increase the number of tiles from which the images are pulled and is there room for more tiles?

I'd love to know for the next Repository Rom

Bad_Al, x58810 is the location of the face tiles.

They will look like this:

faceskl7.gif

Link to comment
Share on other sites

Rod, currently the game can only handle 256 faces(x00 to xFF) and not all are used so you can use the current face parts for more. The default also has half being light and half being dark (this can be modified with some hex editing and a small amount of code work). There should be plenty of room to create a face to replace a default one that you don't need as well.

It isn't overly hard to add a few tiles (unless you have a free bank available you'll need to double the tile section making the rom larger). I have been able to add 64 tiles safely to the face section before (I don't remember the max but it is less than 126 tiles you can add for certain).

If you are still interested I can do an example creating a new face with the just the current tiles.

Link to comment
Share on other sites

I'm sure there are combinations of faces that haven't been made from the existing tiles, but i'm thinking of things that currently don't exist, such as a mohawk.

Do you have a rom already with added tiles?

Link to comment
Share on other sites

Yes this would truely be awesome for the next Repository rom. When I was doing faces for the 2007 rom the main thing I noticed was that many of the black players now have dreadlocks and there is nothing like that on the rom. Just the guy that looks half bald with the small bit of hair behind him. Also the Deion Sanders jheri curl is nonexistent now. White guys also need a long hair version.

Link to comment
Share on other sites

I'm sure there are combinations of faces that haven't been made from the existing tiles, but i'm thinking of things that currently don't exist, such as a mohawk.

Do you have a rom already with added tiles?

I didn't have one saved so I whipped one up using the original rom. I added the maximum of 126 new tiles (at the end of the rom the new usable tiles are the ones with my initials). I used 5 tiles to draw up a test to make sure everything was working (QB Bills has that test face).

TSB_Face.zip

Link to comment
Share on other sites

  • 2 years later...

Face Pointers

There are FF possible faces or 256 possible faces

Each player is assigned a face pointer as part of their attributes

The face pointers link to the following location

1C010x to 1C21Fx

Each pointer consists of two bytes, the first byte being "00 A2", the next being 0C A2", etc

The value for QB Bills is 52 - this corresponds to the value "21 A6"

Somewhere else on the rom are pointers that actually draw the picture...the face pointers point to these

Link to comment
Share on other sites

  • 2 years later...

2 years later....


 


The pointers for the tiles for the faces follow immediately after the 256 face pointers, most of which are duplicates of the white dude with the mustache.


 


The first pointer value we saw was "00 A2", which corresponds to A200 which given our relative location + 10 hex for the header = 1c210 and starts "ca 42 cf 21"


The next pointer value is to "0C A2" which is 12 bytes away.  This means that it should take 6 tiles to build up an image.


 


Since I now know what the heck I'm looking for I should be able to verify this mapping and if so should be able to build a rough Excel based face editor

Link to comment
Share on other sites

 

 

Since I now know what the heck I'm looking for I should be able to verify this mapping and if so should be able to build a rough Excel based face editor

 

doo it

Link to comment
Share on other sites

Got a little frustrated by not being able to figure it out.


Started on a rom that numbers roms based on the PPU calls


 


2VwQr.png 2Vxen.png


 


This is Frank Reich


I'm numbering from 00-FF though only only 10 through 8F seems necessary.


As you notice items are mirrored


The mouth is made up of 22 on the left and 22 mirrored on the right


The left side is 3A 38 3A


Not sure what's going on with the eyes...is there a place I didn't edit yet or do I have multiple tiles on top of each other?


 


2Vx9Z.png 2VxiO.png


 


Al Edwards uses one tile for a mouth


As you can deduct from the side of the heads, he has the same ears/head sides as Frank Reich


 


I'm upping the rom i'm using that needs a bit more work as locations 50 through 8F needs to be finished.


I'll also put a border around the tiles to ultimately show their max sizes.


tsbFaceNumbers.nes

Link to comment
Share on other sites

Here is an example of how the faces are done:

 

Frank Reich:

x1C054 $A064 (POINTER) = B9A3
x1C3C9 $A3B9 (DESIGN) = CC10 CF60 CDCC CEBD CF97 B074
x1CC20 $AC10 (HAIR) = 700088 704090 710888 710890 7A0080 7A4098 FE
x1CDDC $ADCC (EARS) = 7A0080 7A4098 380800 384818 3A1000 3A5018 FE
x1CECD $AEBD (MOUTH) =  221408 225410 FE
x1CF70 $AF60 (EYES) = 1B0988 1B4990 FE
x1CFA7 $AF97 (LOWER HEAD) =  021008 025010 071808 075810 FE
x1D084 $B074 (UPPER HEAD) =  210008 214010 000808 004810 FF

Format: TILE ROW COLUMN
*ROW = +00 = NORMAL, +40 = HORIZONTAL MIRROR, +80 = VERTICAL MIRROR, +C0 = HORIZONTAL AND VERTICAL MIRROR
*COLUMN = +00 = PALETTE 0, +40 = PALETTE 01, +80 = PALETTE 02, +C0 = PALETTE 03
FE = NEXT
FF = END

Link to comment
Share on other sites

Awesome...I'll see if I can follow along in the code


 


oooooooooooooooooooooooh....I get it now.  I didn't consider that the pointers were pointing to essentially more pointers.


 


Player Data has a pointer to the "Face Number."  


Each Face Number corresponds to a two byte address which is a lookup for the Face Design.


That address corresponds to 6 values of two bytes.  Those six pointers draw out the Hair, Ears, Mouth, Eyes, lower and upper head.


All of the individual components are made up of a variable number of blocks.  


The length of the each block is 3 bytes which corresponds to the tile used, and the vertical and horizontal location of the tile.


A FE or FF is thrown to let the system know that no more blocks will be needed to draw that section.


 


One point of clarification...


When you have the line 


*ROW = +00 = NORMAL, +40 = HORIZONTAL MIRROR, +80 = VERTICAL MIRROR, +C0 = HORIZONTAL AND VERTICAL MIRROR


Does that denote that the byte hex value should be broken out into bits as in 55 hex = 01 01 01 01 bin ?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...