Jump to content

TSBm 1.3: Making your own FACES


Recommended Posts

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 ?

I wouldn't say that is entirely right.  The high 2 bits control mirroring and the low 6 bits control the row as %VHRRRRRR (V = Vertical Mirror, H = Horizontal Mirror, R = Row).

 

So:

x00-x3F = Set Tile Normally (Row 00 to 3F)

x40-x7F = Set Tile with Horizontal Mirror (Row 00-3F)

x80-xBF = Set Tile with Vertical Mirror (Row 00-3F)

xC0-xFF = Set Tile with Horizontal and Vertical Mirror (Row 00-3F)

Link to comment
Share on other sites

dude, I've written so many number and letter sequences on tiles to try to understand graphics...


 



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


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


 



 


Edited by buck
Link to comment
Share on other sites

I wouldn't say that is entirely right.  The high 2 bits control mirroring and the low 6 bits control the row as %VHRRRRRR (V = Vertical Mirror, H = Horizontal Mirror, R = Row).

 

So:

x00-x3F = Set Tile Normally (Row 00 to 3F)

x40-x7F = Set Tile with Horizontal Mirror (Row 00-3F)

x80-xBF = Set Tile with Vertical Mirror (Row 00-3F)

xC0-xFF = Set Tile with Horizontal and Vertical Mirror (Row 00-3F)

 

Cool, gotcha

Link to comment
Share on other sites

  • 1 month later...

Wow!


 


How did you compile the images for each piece - hair, faces, mouths, etc? The individual frames were jpgs and then the master you pasted is a png.


 


Any chance of the individuals in png format? I could script it up in Photoshop and you could automagically rearrange faces that way as well.


Link to comment
Share on other sites

Wow!

 

How did you compile the images for each piece - hair, faces, mouths, etc? The individual frames were jpgs and then the master you pasted is a png.

 

Any chance of the individuals in png format? I could script it up in Photoshop shop and you could automagically rearrange faces that way as well.

 

I essentially arranged them in Excel and then just snipped them into one image.

Saving the individual images into files from Excel would be trivial in time compared to generating them out of an emulator.

I might need to rethink how I did this...which could be faster than saving them out of Excel.

 

If the blue backgrounds were made transparent then combining the images would be as simple as layering PNGs.

 

I have yet to breakdown how many times each individual tiles was used.  This will play a big role in determining how easy the components are to replace.

Link to comment
Share on other sites

So you compile in Excel and then took a screenshot? Where did the tile pictures come from?

 

The way the image building works is that each feature ends with a FE or FF.  FE = get more tiles.  FF = Done.

I first changed every tile to FF so it would only draw one tile.

Then I changed the pointer of QB Bill's image one by one and snipped the screen.

It was very brute force.

Link to comment
Share on other sites

This is a fairly crappy view that I'll edit later.


There are 256 tiles here, starting 00 going through FF


Following is the breakdown of the number of times each tile is used.  Just because a number isn't listed below doesn't mean it's free...it's probably being used for a big helmet or something else


 


3nH3F.png


 


 


 


 



00 - 14

01 - 4

02 - 4

03 - 6

04 - 2

05 - 2

06 - 4

07 - 8

08 - 4

09 - 6

0A - 10

0B - 4

0C - 8

0D - 2

0E - 2

0F - 2

10 - 2

11 - 2

12 - 2

13 - 4

14 - 2

16 - 2

17 - 1

18 - 2

1B - 2

1C - 3

1D - 2

1E - 2

1F - 2

20 - 6

21 - 12

22 - 4

23 - 2

24 - 4

25 - 2

26 - 6

27 - 4

28 - 3

29 - 1

2A - 1

2B - 4

2C - 1

2D - 4

2E - 3

2F - 2

31 - 2

32 - 2

33 - 4

34 - 3

35 - 13

36 - 2

37 - 12

38 - 2

3A - 8

3B - 2

3C - 4

3D - 4

3E - 2

3F - 4

40 - 2

41 - 4

42 - 3

43 - 6

44 - 4

45 - 9

46 - 8

47 - 9

48 - 11

49 - 4

4A - 2

4B - 1

4C - 6

4D - 18

4E - 10

4F - 2

50 - 6

51 - 6

52 - 6

53 - 6

54 - 4

55 - 4

56 - 2

57 - 2

58 - 5

59 - 3

5A - 10

5B - 2

5C - 2

5E - 4

60 - 4

61 - 3

62 - 7

63 - 2

64 - 2

65 - 2

66 - 4

67 - 12

68 - 1

69 - 2

6A - 2

6B - 1

6D - 4

6E - 2

6F - 12

70 - 4

71 - 4

72 - 2

73 - 2

74 - 2

76 - 6

78 - 12

79 - 2

7A - 20

7B - 2

7C - 2

7E - 1

FE - 1
Link to comment
Share on other sites

Got it. Totally awesome.


 


I'm not sure how else to ask this.


 


EXAMPLES:


3nVNS.png3nVNF.png - These are compressed jpegs. They cannot be split because of the dithering caused by the compression.


 


^^ Can these be exported into uncompressed png format? I should be able to write a script for Photoshop to rearrange these based on some arbitrary criteria making creating new faces a piece of cake.


Link to comment
Share on other sites

Got it. Totally awesome.

 

I'm not sure how else to ask this.

 

EXAMPLES:

3nVNS.png3nVNF.png - These are compressed jpegs. They cannot be split because of the dithering caused by the compression.

 

^^ Can these be exported into uncompressed png format? I should be able to write a script for Photoshop to rearrange these based on some arbitrary criteria making creating new faces a piece of cake.

 

I know what you mean...i'll get that done in the near future

Link to comment
Share on other sites

Knobbe, should you create a new thread dedicated to your work, so we can document it's benefits / uses, etc?

 

http://tecmobowl.org/topic/53200-reference-of-the-tecmo-faces/

 

BTW. this is the sort of stuff that tags were MADE for.

The "Tecmo Faces" tag allows me to easily find these threads back.

Link to comment
Share on other sites

  • 4 months later...
  • 4 weeks later...
  • 10 years later...
On 5/20/2013 at 2:11 PM, jstout said:

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

 

There's a bit of magic in here that I'm hoping someone can help me understand.

 

I get in concept how x1C054 points to x1C3C9.

- I don't really understand how the CC10 gets us to x1CC20 / $AC10, especially when the pattern is different for the B074 -> x1D084/ $B074. 

 

--------------------

 

Problem #2 (bruddog let me know I was misunderstanding this issue a it).

- x1C010 has 56 bytes that represent 28 pointers to "Designs"

- Designs aren't just a sequence of pointer "pairs"

- These appear to be some instructions (including x04->x1C018->x1C240) 

- I noticed some that have a value (or two) between x80-x9F that appear to be some modifier before the "Feature" instructions that do the TILE-ROW-COLUMN 3-byte pattern.

- So, I for x04->x1C018->x1C240, there's some x82 modifier that is then followed by the xCA x7A with 7-tile instructions starting at x1CA8A

- Anyone know if I'm on the right track with this modifier concept?

 

Previous Background

I think understanding that will better help me understand Face x04 that looks like it starts at x1C018. 

- The values/pointer at x1C018 are x30 xA2 which would take us to the Design at x1C240, I believe - though I'm not certain.

- The first pair at x1C240 is x82 xCA, and I was going to guess that took us to x1A2DA. But that looks like it has 246 bytes of instructions before an xFE or xFF (at x1A3D0 which looks like just empty space). 

 

 

Edited by averagetsbplayer
Link to comment
Share on other sites

2 hours ago, averagetsbplayer said:

There's a bit of magic in here that I'm hoping someone can help me understand.

 

I get in concept how x1C054 points to x1C3C9.

- I don't really understand how the CC10 gets us to x1CC20 / $AC10, especially when the pattern is different for the B074 -> x1D084/ $B074.

The design section acts different than a true pointer. The first byte is checked for if >x80, then >xA0, then >xC0, then >xE0 with each moving to a different branch of code. So when the design starts with xCC, the branch of >xC0 and <xE0 is ran and that part of the code subtracts x20. When the design starts with xB0, the branch of >xA0 and <xC0 is ran and that part of the code keeps the value intact. Short answer without a lot of details but hopefully that helps clarify why.

Link to comment
Share on other sites

8 hours ago, jstout said:

The design section acts different than a true pointer. The first byte is checked for if >x80, then >xA0, then >xC0, then >xE0 with each moving to a different branch of code. So when the design starts with xCC, the branch of >xC0 and <xE0 is ran and that part of the code subtracts x20. When the design starts with xB0, the branch of >xA0 and <xC0 is ran and that part of the code keeps the value intact. Short answer without a lot of details but hopefully that helps clarify why.

 

For face 02 you have
CA50CF36CDDF9FCE7E80CFA4B074 which breaks into

 

CA50 (Hair)

CF36 (Eyes)

CDDF (Ears)

9F CE7E 80 (Mouth)

CFA4 (Bottom background)

B074 (Top Background)
 

From what I can decipher, there are various 'command codes' for lack of a better descriptor that tells me i'm going to do something special, which is eventually followed by a '80' to signify i'm going to back normal.

 

It looks like at some point if I have a 81, 82, or 83, eventually I'll have a 80 to end that command.

Otherwise I have a 9E or 9F, which also seems to be escaped out of with a 80.

 

What do 81, 82, 83, 9E and 9F do?

 

 

 

Link to comment
Share on other sites

1 hour ago, Knobbe said:

What do 81, 82, 83, 9E and 9F do?

 

These shift the tiles up or down.

 

Tony Jones hair starting with a 83

image.png?ex=65d4d77a&is=65c2627a&hm=da9

 

Starting with a 81

image.png?ex=65d4d79f&is=65c2629f&hm=d02

 

Starting with a 9E

image.png?ex=65d4d7e8&is=65c262e8&hm=6c6

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...