Editing Overlays
This tutorial will assist you in editing the score overlays in NBA Live.
Contents
Games
This tutorial applies to the following games:
- NBA Live 07 PC
- NBA Live 08 PC
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.
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-
......mcIntensityIcon.shotClock...intensity...awayLogo....homeLogo....momentumHome....momentumAway....homeScore...awayScore...clock...period..
OffballShow.OffballHide
So we can assume that the order is:
- Shotclock
- Intensity
- Away Logo
- Home Logo
- Momentum Home
- Momentum Away
- Home Score
- Away Score
- Clock
- 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
09f0 ENTIRE OVERLAY AND TEXT 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.