Editing Overlays

From NLSC Wiki
Jump to: navigation, search

This tutorial will assist you in editing the score overlays in NBA Live.


This tutorial applies to the following games:

The Guide

Extract the overlay you want to edit from the fe/overlays.viv

You should use DOLFFIN Live for this since it autmatically decompresses it. That will make it easier to hex edit the BIG file directly without having to re-import the APT file everytime you make a change to the positioning. Also, I used the BIG file offsets, and not the apt file itself.

Most of the overlay names are straight forward. When editing the statisitcs overlay, there are 3 files you will need to extract and edit.

  • overlays~statbg.fsh - this is the graphic background that is used when the game displays team stats and player stats.
  • overlays~stat.fsh - this contains the text information for displaying team stats.
  • overlays~plyrstat.fsh - this contains the text information for displaying player stats.

Find the texture limits

Overlay graphics are different to 3d modeled graphics because they aren't "fit" into the space, they are only "overlayed." That means that you can't make any of the textures bigger then they already are without a problem. If you go beyond the texture limits, the rest of the image gets cutoff when displayed in-game. Most overlayed graphics don't use the entire image size, even if they take all of it up. I'm sure its possible with some ebo editing or something, I don't know. The texture limits can be found after each image in a FSH file, but you will need a hex editor or DOLFFIN Live to view them. EA uses texture limits for all menu and overlayed graphics.

Here's where to find the texture limits with DOLFFIN Live. Click the little plus sign on the texture, then click on the part that I highlighted in yellow. In the right window, I have highlighted the part that tells you what the texture limits are, you only have to convert them from hex into decimal. You always invert hex values when converting to decimal, but you only invert the numbers in pairs. So, a Hex value of 1234 is not 4321 on calculator, but it is 3412. Now open Calculator. Make sure it is set to "Scientific" which can be changed in the "View" menu.

Click the button to the left of "Hex" and enter the hex value, it has been highlighted in yellow. The first value was 0C, which of course comes up to only C on the calculator. Now we click the button to the left of "Dec", which is the Decimal button. That converts the hex to decimal, which ended up being 12. So for that image in the FSH, its X limit is 12. The hex for the Y value is 1C, which ends up being 28 when converted.

Overlay1.jpg Overlay2.jpg

Save yourself sometime and use Hex Workshop. Open your BIG file, "Find" (CTRL+F) a hex value of "7C01". Click one of the results and it will jump to that offset with the "7C01" highlighted. 2 lines below the 7C01 is your X limit, and to the right is your Y limit. Click on one so that the cursor is to the left of the value. Now look at the bottom left window of Hex Workshop. Those are hex to decimal conversions. The one you want to look at is "Unsigned Short." Notice it is "12", the same thing we got when we did it the other way. This way is much faster. Sometimes a "7C01" will come up in the search that isn't what we are trying to find.


FYI, For all the background graphics of the score overlay the texture limit for height is 28, and since those textures are 32 pixels high, the bottom 4 pixels of the image aren't displayed. The logo, the shotclock's background and the shotclock numbers all have their own texture limits.

Make your graphics

In Photoshop, when you are making each part, you should create guides using the values you found for the texture limits. That way you know how big to make your graphic inside the canvas. Click the "view" menu and select "New guide". For the X limit, select "vertical" and enter the limit you found for that part in the box, make sure it sais "px" after the value, which is an abbreviation for pixels. Do the same for the Y limit, but choose "horizontal" and enter the Y value you found for that part in the box. You should save each part as a psd because some of the parts are stretched or squeezed horizontally in-game, that way yo can easily make any changes that are needed.

When you are done making all the parts, check it out in-game.

Positioning, size and font color

Welcome to hell. This is the part that takes the most time. Once you know where to edit in the file, you will have to go in-game, take screens, or use your memory to remember whether you increased or decreased the hex values and what direction it went. The format isn't too hard to understand.

How to find the parts

If you just want the "how to" and "where to" for editing parts on the overlays which I have already edited before, then skip to the next step.

Here is how to find the name of the parts so you can locate where they are in the APT file. This can be useful for anyone who wants to edit the positioning of menu's or part's on a front-end screen or any other overlay that I haven't edited and found the parts for already.

Open up the BIG file in a hex editor. Do a search for "constant". You should find some text that sais "Apt constant file" This is the beginning of the "const" file, which means that above it is the "Apt" file. The part names are towards the end of the apt file. Scroll up because usually they aren't directly at the end of the file, although there is some text that can confuse us because it appears as if we found it. Keep scrolling up until there isn't any more words. Now scroll back down a little bit and look for words that look like they are referring to parts. This isn't always a perfect science, but it can help guide you on where you want to look to change a part.

For example, in the score overlay we find the following text-


So we can assume that the order is:

  1. Shotclock
  2. Intensity
  3. Away Logo
  4. Home Logo
  5. Momentum Home
  6. Momentum Away
  7. Home Score
  8. Away Score
  9. Clock
  10. Period

That is pretty accurate, but it doesn't tell us everything or every part. The easiest way to find out what part is referred to is by changing the size. Since most of the sizes are 803F, change them to 403F and see what shrunk in-game, you can find out where the size is for each part in the next section. Also, I have no idea what the mcintensityIcon at the beginning and the Offball stuff at the end are.

Now we want to scroll up in the hex editor until we see the end of a pattern. You should recognize the pattern by all the F's you see. The first pattern from the bottom is usually the last one on the list. So that would be the quarter or period. The pattern is in the image.


Editing the parts


Quick tutorial about Hex characters.

Hex goes like this, 0 is the smallest, and F is the biggest. "A" comes after 9, but 10 doesn't. 10 comes after "F". So 10 is not 10. If you see this "1042" (4210) and you want to decrease it, the next step is "0F42" (420F). If you are at "0042" (4200) and want to decrease it by 1, then you will end up with "FF41" (41FF). Say you have "FF00" (00FF) and you want to increase it by 1, then you will get "0001" (0100). I hope you I explained it good enough. If not, here's a hexadecimal guide that goes much deeper - http://www.lyzrdstomp.com/binary/hex1.html

I suggest when you start editing positions that you write the stuff down in a word processor like notepad, wordpad, etc. I like to write down the original hex values for each position, especially with things like stat overlays because it can take forever trying to get certain text to display, but there is a way around that which I will tell you about later. 99% of each part's size is always 0000 803F (3F80 0000 when inverted). That makes it easier to recognize parts. To keep the aspect ratio of the text part, make sure both values equal whenever you change them. There is a size value for both X and Y, or width and height.

Take a look at the purple highlighted part. That is the horizontal, or X position. It is 66B6 6042, which is actually 4260 B666. I usually stay away from the first part (66B6) because those only make very minor changes, but are still useful when you are trying to precisely align a part. I usually edit the first digit to see which way the part moves. So in this case I would change 6042 into 5042, save it, and check it out in-game to see which way it went. Repeat for both the X an Y positions until you are happy with where it is.

You will also notice that most or all of the positions start with a 4 or a C. Whenever your part seems to be stuck and not moving anymore when you change a value, change the 4 to a C or vice versa. Your part will jump farther then you wanted it to, but you should be able to get it to where you wanted it in the first place without it hitting a virtual wall.

Here is a little trick I use for stat overlays without having to play entire games or intervene in the third quarter(which is the second best option). First, many of the parts are either on the same horizontal or vertical line. Meaning they have very similar values when you look at the hex. That is why it is important to write the values down so you can group which parts are aligned. That way, you only have to change one part and just copy the value for the other part. When you call a timeout, that triggers the overlay and it uses the overlays~stat.BIG file for text positioning. It shows the team logo, the word "Timeout" and the team name. I have shown you where they are in the BIG file below, so you can use one of those to figure out where the other parts are displayed, by copying the other parts' x and y positions onto the "timeout" position. Then you can guess what those parts are and finetune their positions without having to intervene in a simulated game and hope the overlay comes up on its own.

Font colors

Most of the fonts are white, that makes them easier to find. They are very close to the beginning of the Apt file.

They show up like this: FFFF FFFF


Say you want to use this blue. Notice in the image the highlighted characters at the bottom? Those are the values you insert.


But, there are only 6 numbers. So, with FFFF FFFF, we don't touch the last two F's. Also, we invert again, we invert the first two and the last two. So I have 123456. Put FF at the front like this FF12 3456. Then we invert to 12FF 5634.

Positions for score, and stat overlays

I start my offsets on the line from where the part's size is. I wrote notes on certain parts.

Score overlay

1950-1960 ENTIRE SCOREBOARD INCLUDING ALL PARTS, increase y to lower
19D0-19f0 EA Logo individually
26b0-26c0 Shot clock background individually - decreasing x moves to right, but this does not move the shot clock numbers
6210-6220 Scoreboard Background 			   					
6250-6260 ?            			   				
6290-62a0 Shot Clock/EA Logo    			   				
62d0-62e0 Intensity stripe       			  					
6310-6320 Away Team Logo        			    				
6350-6360 Home Team Logo        			   			
6390-63a0 Momentum Home                        					
63d0-63e0 Momentum Home           			    
6410-6420 Momentum Away           			  					
6450-6460 Momentum Away         			
6490-64a0 Home Team Score								
64d0-64e0 Away Team Score       								
6510-6520 Quarter Time    	  								
6550-6560 Quarter number 

Score overlay fonts - not exact offsets, just the lines they are on

0870 - Home Team Score
08b0 - Away Team Score
08e0 - Time
0920 - Quarter

Stat Overlay - overlays~plyrstat.big

0aa0 Stat background
0ae0 Team logo
0b20 Player Portrait - This is the main player portrait, moving this one moves them all.
0b60 Portrait 0
0ba0 Portrait 1
0be0 Portrait 2
0c20 Portrait 3
0c60 Portrait 4
0ca0 Portrait 5
0ce0 Portrait 6
0d20 Portrait 7
0d60 Portrait 8
0da0 Portrait 9
0de0 ?  Probably player stats number   - Don't worry about them
0e30 ?  Most likely the stat word like Assists or Rebounds
0e60 Team Fouls number
0ea0 Team Fouls word
0ee0 Personal Foul number
0f20 Personal Foul word
0f60 Last Name
0fa0 First Name

I didn't write down the font offsets.

Stat overlay - overlays~stat.big

I didn't find what everything was, but enough of the positioning was similar for me to guess where it is on the overlay. Most of the parts have the same position as another part, that makes it easier to align.

0be0 Stat Background
0c20 Team logo
0c60 Bottom Right - Most likely the stat value that gets locked next to the word
0ca0 Bottom Left  - Most likely a word
0ce0 Bottom Left  - "
0d20 Bottom Left  - "
0d60 Middle Right - Most likely the stat value that gets locked next to the word
0da0 Middle Left  - Most likely a word
0de0 Middle Left  - "
0e20 Middle Left  - Team name - during timeout and maybe more
0e60 Top Right    - This displays at the top of the overlay, it has the same vertical offset as the other "Top"
0ea0 Top Left     -  
0ee0 Top Left     -
0f20 Top Left     - "Timeout" word

I didn't write down the fonts for these either.

That's about it. I'd like to thank "SoccerAccess" from the GamingAccess Fforums for making a guide using the 2005 score overlay, which is where I first learned this. I would also like to thank MJ_realm for giving me a clue last year that just opened up my understanding of the file in general.