NBA-ED v1.01 - Player Editor for EA Sports NBA Live '95
by Jose de Leon

(for a quick summary search on "*** ")

ABSTRACT:

This program allows the user to edit some of the player attributes for any
player in the game NBA Live '95, by Electronic Arts (EA) Sports.

It is intended *only* for use on the first public release of NBA Live '95
(NBA 95) on CD-ROM, dated 3-15-95, 3:12a on the CD-ROM. This version of
the program will not (likely) work on any subsequent releases from EA.

INTRODUCTION:

This program is based on information from Lutz van Hasselt, received from
the Internet newsgroup comp.sys.ibm.pc.games.misc. In his post, Lutz
describes a method for hex editing the NBA 95 executable file NBA95.EXE,
which contains all the player data. This requires a knowledge of hexadecimal,
and is prone to error, since one must keep track of the offsets of
several bytes within the .EXE file. NBA-ED simplifies this process, allowing
the user to edit almost any attribute for any player in the game. This
allows the user to change any player from a benchwarmer to a superstar, and
back again! This program will *not* edit player names, including surnames 
and nicknames -- you will still need a hex editor for that (unless you
really want a black 6'6'' shooting guard from North Carolina named Jud
Buechler!). This program will also not allow changes to portraits.

For those hackers out there, I have included Lutz's post as an appendix.

*** INSTALLATION:

Make sure a copy of NBA95.EXE exists on your hard disk (naturally, you
will not be able to edit the file on the CD-ROM!). Copy NBA-ED.EXE to
the same directory on your hard drive in which NBA95.EXE resides.

*** VERY IMPORTANT NOTE!

This version of NBA95.EXE is designed to work with the first public
release of the game. This release is denoted by a file date on the
CD-ROM copy of NBA95.EXE of 3-15-95, a time of 3:12am, and a size of 
1101579 bytes. The date of the file on your hard disk may vary, 
but NBA-ED will likely work correctly on this file. If the file 
size is different, this program may corrupt the .EXE file and cause
a crash if any editing is done!

DO NOT USE THIS PROGRAM IF THE SIZE OF NBA95.EXE IS DIFFERENT
FROM 1101579 BYTES!!! YOU HAVE BEEN WARNED!!!

If you do try editing NBA95.EXE with NBA-ED and the editing process
corrupts the file, you can always get a fresh copy of the file off the
CD-ROM. Just make sure the file on your hard disk has the read-only
attribute set to off ("attrib -r nba95.exe" will take care of this).

*** USAGE:

At the DOS command line, change to your NBA 95 directory and type:
NBA-ED

You may add the options -? for help, or -c for a list of players' colleges.

*** QUICK SUMMARY OF KEYS:

KEYS:
Menu keys:
Up Arrow, Down Arrow: Move among menu items
Right Arrow, Enter: Select menu item
Left Arrow, ESC: Cancel menu selection

Function keys:
F1: Help
F2: Player Overview
F3: College List

Menu items:
More...: Cycle thru menus
Cancel: Abandon skin color and position selection menus

*** EDITING

After typing NBA-ED, the program will ask for a team. You may enter
one of three possibilities: a city name without spaces (GoldenState)
a city abbreviation (GS), or a team nickname without spaces (Trailblazers).
Names are not case-sensitive. You cannot enter full team names (MiamiHeat).

(For the record the two Los Angeles teams are LAL and LAC.)

The program will then ask for a roster slot for the specified team. Each
team in NBA 95 has 12 roster slots. Enter a number from 1 to 12.
The first five slots are for the team's starters, in the order of
(starting) center(1), power forward(2), small forward(3), shooting 
guard(4), and point guard(5). To edit a starter, enter a number from 1 
to 5 corresponding to the above positions. Entering the numbers 6 to 12 
allows the user to edit the reserves (the reserves are in no particular 
order).

The data for the player in the slot on the selected team is then
displayed on screen. All the information is presented over 3 screens,
grouped into categories: Statistics, Attributes, and Ratings. 
Each screen shows you which player (by team and roster slot) you are
currently editing. Each screen presents a menu of attributes which you
may change. Use the Up-arrow and Down-arrow keys to move between items 
in the menu. To move between screens move to the last item, "More..."
in each menu, and press the Enter key (or Right-arrow key).

To change an attribute, move to the item you would like to change and 
press the Enter key to select the item. You will then be prompted at the 
bottom of the screen to change the value. Make your changes and press 
enter -- they will be updated automatically.

To change skin color or position, select that item from the Attributes
menu, and a sub-menu will appear on the screen from which you may select
the proper value (in a manner identical to selecting items from the parent
menus). To abandon any changes with these menus, move to the last item, 
"Cancel", in each menu, and press the Enter key.

If you press the ESC key (or Left-arrow key) and have made changes to the
player, NBA-ED will ask if you want to commit your changes to NBA95.EXE. 
Answer Y to write your changes to NBA95.EXE.

If you press the ESC key and have not made any changes to the player, or
have committed changes to NBA95.EXE you will be asked if you would
like to edit the same player, a different player or quit the program.

*** CHANGING COLLEGES:

The NBA players represented in NBA 95 attended 164 different
colleges (163 colleges actually, unless there actually *is* a 'None'
College!). These are hard-coded into the game and should not be changed
with a hex editor. The College entry in the Attributes menu of NBA-ED
accepts a value from 1 to 164 representing the college a player attended.
To get a list of which value represents which college, press the F3
key at the stats, attributes or skills menus. To get a copy of the list,
type NBA-ED -c at the DOS prompt (this list may be redirected to a file,
eg. NBA-ED -c >  college.lis)

*** CHANGING PICTURES AND NAMES:

The reason changing of names is not allowed is because many players with
similar names share a single copy of that name in the .EXE file. For
example, you cannot change Antonio Lang's name without changing the name
of Antonio Davis and Andrew Lang. So it becomes necessary to find a player
with a unique name whose absence the user will not mind, edit his roster
slot with NBA-ED and change his name with a hex editor. See Lutz's post
(Appendix A) for more information.

It is not possible (yet) to change the pointers to names, so that one 
could change the name of a player to David Robinson, for example, by 
forcing the first name to point to David Wesley's first name, and to 
Glenn Robinson's last. Changing names is a real unholy mess for the 
hackers right now, and not the most intuitive thing, and so this 
functionality was left off of NBA-ED.

The reason pictures cannot be changed is that the portrait info is very
closely related to the statistical data. Changing portrait info can cause 
crashes in league play mode, and is disallowed in NBA-ED. However, NBA-ED 
allows the user to change the look of a player on the court in game play, 
and isn't that more important?

*** BUGS:

Game play using .EXE files edited with NBA-ED has been flawless (well,
flawless if you don't consider the bad AI and fiddly joystick controls
flaws -- if you do, see LEGAL BITS for details). With Lutz's help,
problems with league play have also been ironed out.

Of course, the author would like to find out about others' experiences.

*** CONTACTING THE AUTHOR

While the author has attempted to write a bug-free program (but then,
don't we all??) something may have escaped him. Feel free to send him 
any feedback, comments, criticisms, suggestions, beautiful women, cookies,
or job offers (can you guess that I'm a student??). You may contact him at:

Jose de Leon
ug930009@omega.scs.carleton.ca

Happy Playing!
Jose

*** LEGAL BITS:

This program is being released free of charge, and cannot be distributed
for profit. However to show your support, you may do the following:
many people (myself included) have voiced several complaints about the
need for a patch to NBA 95, or asked for features not in this game. If
you find this program useful, please take the time to voice your
concerns/wishes to EA by e-mailing EA at ElecArts@aol.com .

NBA Live '95 is a product of Electronic Arts, 1995.

EA Sports is a trademark of Electronic Arts, 1995.

The author, Jose de Leon, does not assume any responsibility for damage
caused by use of this program.

ACKNOWLEDGEMENTS:

EA Sports, for a(n) (almost) great game! Get that patch out!
Lutz van Hasselt, for his information on the player data format.
Len Carr, for his team name validation algorithm from NBA.C.
The book "Using C" from Que Press for the menuing routines.
Jon Burchmore for his public domain text input routine.

APPENDIX A: PLAYER DATA FORMAT - ORIGINAL POST

From: willwink@informatik.rwth-aachen.de (Lutz van Hasselt)
Newsgroups: comp.sys.ibm.pc.games.misc
Subject: Re: NBA Live '95
Date: 18 Apr 1995 15:00:27 GMT
Organization: RWTH -Aachen / Rechnerbetrieb Informatik

Sorry, this comes a bit late, I tried before, but my news server went dead.

I will not actually post the patch, but an instruction on how to do it. Its
pretty easy, since everyone has probably different views on whom to include
and whom not. However, I will mail the patch to anyone ordering it at
willwink@pool.informatik.rwth-aachen.de, just to decrease the sales of any
possible official patches by EA Sports. They deserve it.

Ok, first make sure to get a Hex editor, available at many places in the
net, figure out how to use it and how to calculate with Hex numbers. Now,
edit nba95.exe The first three quarters is program code, the rest is game 
data. The data part starts with the ASCII data (names of players, colleges, 
credits etc., more on that later) at position 925,781. Now, the binary data 
starts at position 995,497 (that is the 995,497th byte of the file, aka 
block 3889, just let the editor search for the following Hex data: EA 01 D7 
00 04 00 01 00 6A 00. The EA is the first important byte. Now, every player 
is characterized by 88 bytes. The players are sorted by teams (Atl,Bos,...,
Was), then by lineup, starting five (C,PF,SF,SG,PG in that order), then the 
reserves. So, that EA and the following 87 bytes are for Andrew Lang, the 
next 88 bytes for Grant Long etc. The last is All-Star Center at block 4025.

Now, the first 32 of the 88 bytes are the 93-94 stats:
01-02 FG att.
03-04 FG made 
05-06 3s att.
07-08 3s made
09-10 FT att.
11-12 FT made
13-14 Blocked shots
15-16 Off. Reb.
17-18 Assists
19-20 PFs
21-22 Steals
23-24 Def. Reb.
25-26 TOs
27-28 Minutes
Now, that's two bytes for each category. Make sure to enter the hex number
correctly. If someone, say made 665 FGs, you should figure out that this
would be Hex 299 (or so), then you want to enter 99 02.
29-30 Zero
31    Games played 93-94
32    Ejections 93-94

Next comes the individual player data:
33    Number on jersey
34    Position: 04-PG, 03-SG, 02-SF, 01-PF, 00-C
35    Height in inches: 5'6-Hex42, 6'0-48, 6'6-4E, 7'0-54, 7'6-5A to name
      a few, should be enough, the rest is obvious.
36    Weight minus 100 pounds. If someone weighs 240 pounds, make that 140 
      and enter 8C
37    Years pro
38    College. Look at the college list in the ASCII data part, and count
      to the college you want, then you got the number
39    Skin color: 00-brown, 01-black, 02-bright, 03-white 
40    Other stuff related to how a player looks during game action.
      Here, you have to look at the single bits. I have not figured that 
      out in detail, I think bits 2, 4 and 8 are for hair, 10 is for blond 
      hair, 20 for glasses and headbands and stuff. For a headband instead 
      of glasses, you should add 1. The rest is probably also used, for 
      beards or so, just try before you think, standard, is 00 for bald 
      people, 08 for dark hair and ten for blonde hair. You can combine 
      all that by adding the numbers, so someone with glasses and dark 
      hair would be 28 or so.
41    00 for right-handed and 01 for left-handed
42-43 Points total 93-94
44    ???

Now the skills, not quite in the order as in the game:
45    Overall skill. Increase or decrease it to alter the playing time
46    FGs
47    3s
48    Fts (equals FT%)
49    Dunking
50    Stealing
51    Shotblocking
52    Off. Reb.
53    Def. Reb.
54    Ballhandling
55    Off. Awareness
56    Def. Aw.
57    Speed
58    Quickness
59    Jumping
60    Dribbling
61    Strength
62    Fake Stats Pointer. I found out that during season play the stats
      are calculated from the 93-94 stats. Now, all players who did not 
      play in 93-94 (like Michael Jordan) have fake stats for that purpose 
      somewhere behind or before the rest of the player data. Byte 62
      (behind the last of the skill bytes) is a pointer to those fake 
      stats. Each of those players has its own fake stats, starting with 01, 
      ending with 30 or 38 or something in that region (Jason Kidd has 04 
      as an example). Every player not using fake stats has a higher value 
      on that byte, usually between 40 and 60. That means the regular 
      93-94 stats are used to calculate the season stats. You must be 
      careful with that, if you give a player 0 games played and 0 minutes 
      played in 93-94, he MUST have a pointer to fake stats, if he has not, 
      a division by zero error will make season play crash. 

63-71 ??? (all changes ignored)

Name information:
72-73 Address of surname. Now, you have to start counting bytes. 
      925,781 is zero (the obvious start of the ASCII data). Now, if 
      the name is, say O'Neal, look at what position the O is, take 
      that number minus 925,781 and change it to hex. DUE TO EVIL 
      PROTECTION BY EA SPORTS, CHANGES WILL NOT BE RECOGNIZED. THE 
      DATA IS SOMEWHERE ELSE IN HEAVILY PROTECTED FORM, PROBABLY IN 
      CRCVALS.DAT. You may change the names in the ASCII section, and 
      it will work, but you have to use the default addresses, which 
      is very annoying, as many players have duplicate names (Williams,
      Johnson,Steve,John etc.) and the names are only listed once.
      This has obviously been installed to increase the sales of updates. 
      Now, if anyone finds out how to hack this, please post it here. It
      might spoil some of the rather criminal methods EA Sports is using.
74-75 Zero
76-77 Prename (see above)
78-79 Zero
80-81 Nickname (see above)
82-83 Zero
84    Number of team
85-86 Number of player in league. This goes in order of team, with
      the players on each team in order of lineup. This is used
      calculating season data, in league play, as well as determining
      which portrait to use.
87    Number of player in team (00-0B)
88    Zero
        
The player data is followed by team data like address of stadium name etc.
You probably do not want to change that.

Changes recommended:

Replace Trevor Ruffin with Charles Barkley (You cannot change the name
Antonio Lang without changing the names of Antonio Davis and Andrew Lang.
You have to type Chuck Barkly or something though, it must not be longer 
than Trevor Ruffin)
Replace Jud Buechler with Air Jordan
Replace Jack Haley and All-Star Center with Dave Robin/Robinson David
Replace Alaa Abdelnaby with H. Turner
Replace Mike Brown with Darrick Martin
Replace Johnny Dawkins with Negele Knight
Replace Steve Henson with Aaron McKie (Unfortunately, you cannot replace
the name Steve, so you have Steve McKie)
Replace John Williams with Duane Ferrell (you cannot change the name, so
you would have John Williams with all the attributes of Ferrell)
Replace Antonio Lang with Richard Dumas (cannot change name)

You may want to skip some of those, especially the last two. Just find
the latest stats to enter the skills. You do not need to edit the 93-94
stats. They are not important. And be sure to put Barkley, Robinson, Jordan 
and McKie into the starting line-up. They are not in it automatically.

Any questions, flames etc. to willwink@informatik.rwth-aachen.de are 
appreciated.
