NBA-ED v2.00 - Game Editor for EA Sports NBA Live '95
by Jose de Leon and Lutz van Hasselt

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

ABSTRACT:

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

It is intended *only* for use on two versions of NBA Live '95:
- the first public release of NBA Live '95 (NBA 95) on CD-ROM, dated
3-15-95, 3:12a on the CD-ROM
- an official patch release of NBA 95, fixing PAS-16 sound card
compatiblity and joystick calibration

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, describing a
method changing player stats, skills, and attributes by 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 (this is
made doubly hard since there are different offsets for different patch
versions of NBA95.EXE). 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!

*** WHAT'S NEW

- support for the new official EA PAS-16 patch -- one program handles
both versions of NBA95.EXE
- new attributes to edit -- agressiveness and endurance
- can now edit simulated stats for rookies and newcomers -- just 
enter "fake", "newcomer" or "rookie" as a team (these simulated stats
are used for league play)
- can now edit college names and player names without a hex editor
- can now associate any string in the game with a players first name,
surname and nickname
- can now trade and copy players between teams and between positions
- can now set players' portraits
- new command line parameters: -N (player name list), -F <file> (specify
filename other than NBA95.EXE)
- help included for facial features codes

*** 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, 
POINTERS.DAT, PTRSPA16.DAT and LENGTHS.DAT to the same directory on your
hard drive in which NBA95.EXE resides. NBA-ED will not work unless all
files are present.

*** VERY IMPORTANT NOTE!

This version of NBA95.EXE is designed to work with two versions of NBA 95:

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

- an official patch release of NBA 95 from EA, fixing PAS-16 sound card
compatiblity (not tested by me) and joystick calibration. This patch
consists of a new NBA95.EXE file of size 1097483 bytes. Contact EA 
for this patch (see LEGAL BITS for more information).

The date of the file on your hard disk may vary, but NBA-ED will likely
work correctly on those files. 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 EITHER 1101579 OR 1097483 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).

For the PAS-16 patch version I have three words: BACKUP, BACKUP, BACKUP!

*** USAGE

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

*** COMMAND LINE OPTIONS

-? : help
-c : list of colleges
-n : list of player names
-f <filename> : specify the filename to edit other than NBA95.EXE 

*** MAIN MENU

When you run NBA-ED you are then presented with a menu of options. One of
those options is (naturally) to quit. The other options are:

Player Editor - this is the option that incorporates the functionality
of NBA-ED v1.xx (keys have remained the same as in v1.xx).

Name Editor - this option sets first, last and nicknames for a player slot.

String Editor - this option allows the user to safely modify the list
of player names and college names.

Trade/Copy Players - this option allows the user to move players
(permanently) between teams and in and out of the starting lineup, and
to replace the player data located in one slot with the data in another.

Image ID Editor - Assign different portraits to a player slot.

The rest of this document describes each of these options in detail.
(For those NBA-ED veterans, I have changed very little of the player
editor section. You may want to skip to the other sections.)

*** PLAYER EDITOR

If you select the Player Editor option of 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). A list of valid team names is included as an appendix.

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 F1 key on any of the main menus, you will get an on line
help display.

If you press the F2 key on any of the main menus, you get a view of all
information on the three menus as an overview. You may print this to the
screen or a file. To send output to the printer, specify PRN as the output
filename.

If you press the F3 key on any of the main menus, you get a list of all
the colleges attended by all the players in the original version of NBA
Live 95. Beside each college name is a number, which you may enter as a
value for the College Code in the Player Attributes menu.

If you press the F4 key on any of the main menus, you will get help on
what values to enter as Facial Features codes. What is presented is a
summary of the information in Appendix B.

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.

*** QUICK SUMMARY OF KEYS FOR PLAYER EDITOR

KEYS:
Menu keys:
Up/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   F4: Facial Features Help

*** ROOKIES AND NEWCOMERS

Each rookie or player who did not play in 93-94 has a number assigned to
them between 1 and 47. This is apparently so that stats may be generated
for them during league play -- each newcomer has a second slot of "fake"
stats, each slot denoted by an number from 1 to 47. Returning veterans
(those that played in '93-94) have a number assigned to them between 54 
and 99. If you enter 0 for games played, you will be asked to enter a 
Newcomer code between 1 and 47, and the game will base the newcomer's
season stats on the stats in the slot with the given number. If you enter 
anything else, you will be asked to enter a Veteran code. You may enter 
almost any value for a Veterans code. If a veteran has a code between 1 
and 47, it will be ignored. The effect of different veterans codes has 
not yet been determined.

You may now change the "fake" stats for any of the 47 "player" slots that 
contain fake stats. Enter Fake or Rookie or Newcomer as a team name, enter 
a Newcomer slot between 1 and 47, and edit the player numbers (including 
ratings) as before (the value of the Veteran/Newcomer code is ignored here,
as well as the attributes and skills). Then, for any team with a rookie or 
newcomer, change the Newcomer Code for that player to the slot you have 
edited. (It should be noted that if you fill any fake stats slot with zero 
stats, any player using that slot will contribute *no stats* for the season!)

TIP: For those who would like to add a Michael Jordan type player, it is
best to make him a returning veteran and give him his 92-93 stats (or to
see him demolish the league, enter his 87-88 stats!). Making him a newcomer
does not give satisfactory results in league play. The lessons here are: 
- use real stats whenever possible for the best statistical performance
- stats have a bigger impact on performance thans skills.

*** CHANGING COLLEGES

The NBA players represented in NBA 95 attended 164 different colleges
(163 colleges actually, unless there actually *is* a 'None' College!).
A single copy of the names of all the colleges are hard-coded into the
game. Players who attended the same college share that one copy of the
college name. Though the list is editable using the String Editor option
(see below), it is not recommended that you do so unless you are positively
sure that the name of the college is not used by any player you are editing.

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. You can escape from the list by pressing ESC
or you may edit any entry by pressing the 'E' key and giving a value
between 1 and 164 representing the college entry to edit.

To get a copy of the college list, type NBA-ED -C at the DOS prompt. This
list may be redirected to a file, eg. NBA-ED -C > COLLEGE.TXT. A copy of
the list of player names is available by typing NBA-ED -N.

*** CHANGING NAMES: NAME POINTER EDITOR AND STRING EDITOR

In NBA-ED v1.xx it was not possible to change the names of players in
the league without a hex editor, and it was not possible to change the
pointers of players' names. NBA-ED v2.00 removes these limitations.

Changing players names is requires two basic steps:
-make sure the name is present as a string in the .EXE file
-set the pointers of a player slot's first name, last name and nickname
to point to a string in the .EXE file
NBA-ED provides two options to facilitate this.

*** STRING EDITOR

Choosing the String Editor option from the Main Menu allows the user 
to change the actual list of names in the .EXE file. There are 566
spaces available in the list of names, each space between 1 and 20 
characters long. In order for the .EXE to still function properly, you
are limited to the lengths of the names already in the default set (though 
you may make some names shorter than the actual space -- NBA-ED takes 
care of this for you, and flags the 'short' names in the list). You may
also edit the list of college names in a similar fashion.

The String Editor allows the user to list the player names and colleges,
as well as their IDs in the list. This is done by selecting the List option
from the String Editor Menu. You may then choose to view the list of
colleges or player names. You can abandon the listing by pressing ESC, or
edit an entry in the list by pressing the 'E' key.

Editng a string requires that you know its ID, which is provided in the
list. Entering the ID for a particular item in the list then allows you
to enter a new value in the slot held by the item in the list. If you know
the ID of a particular string in a list, you may enter it using the
Player String Edit or College String Edit options in the String Editor Menu.

NBA-ED's String Editor also allows for some simple searches to be performed
on the college and player name string lists. This can be useful for
determining if a particular name exists already in a list (such as Bryant
Reeves or Joe Smith)

*** NAME POINTER EDITOR

Choosing the Name Pointer Editor from the Main Menu allows the user to set
the associations of a player slot's first name, last name and nickname to
any string contained in NBA95.EXE. To do this enter a player slot (fake
slots will not be accepted, however). The current first name, last name,
and nickname will then be shown. You are then given the opportunity to
enter each of the three names. NBA-ED will then search (case-sensitive)
through the .EXE for the string you have entered. If a match is found,
you are given the opportunity to commit the change. If you would like
to set a name as blank, enter "none" (all lower case) as a name.

The name pointer editor is a very powerful feature of NBA-ED, as any
substring that terminates a word can be set as a name. This means that you
can use college names as player names (John Wayne, "Duke"), team names
(Magic Johnson), credits and error messages. Some patches use the space
for system message strings as room for player names. This is not recommended
as it may cause crashes. A suggestion is to use some of the redundancy in
the player name list: common last names such as Smith and Williams have
duplicates with differing first name initials (this is for indicating
substitutions during game play). This will require that the players using
that initialed name will need their pointers reset, and during gameplay
some substitutions may be a bit vague (Hardaway for Hardaway?). Other
suggestions are to use the spots in the name list of the players you are
replacing, or to do without some nicknames.

*** TRADE/COPY PLAYERS

Selecting the Trade/Copy Players option from the Main Menu takes the user
to the Trade/Copy menu. The Trade option allows the user to swap two 
players roster spots. The Copy option allows the user to copy all the data
for a particular player in one slot to another slot. You must specify the
player you are to make a copy of first (the source), then the slot you want
to copy the source player's data to (the destination). When trading two
players, the order in which they are specified does not matter.

THE COPY FUNCTION CANNOT BE UNDONE. Changes made copy function may also
affect Season play, so use it carefully! Most of the problems with Season
play can be remedied with the Image ID Editor.

*** CHANGING PICTURES: IMAGE ID EDITOR

Every player slot in NBA95.EXE has an associated portrait, identified by a
number from 0 to 394. The portrait info is very closely related to the 
statistical data. Changing the portrait number can cause crashes in Season
play mode. Every player in the league, excluding All-Star teams and fake
slots must have a unique Image ID from all the other players in the league.
The Image ID Editor option in NBA-ED allows you to assign any valid Image
ID to any player slot, and flags any possible conditions that may affect
Season play. If these conditions persist when you try to exit NBA-ED the 
user is asked if they would like to fix them. If the errors are not fixed, 
then only Exhibition games will work reliably. You may assign any valid 
Image ID to any slot on the All-Star teams. The Image IDs of the fake
players' slots are reset upon exit of NBA-ED.

For your information, the Image IDs for 'No Portrait Available'
are 345 and 394. Using these IDs on league players WILL CRASH THE GAME
IN SEASON PLAY MODE. You may assign these IDs for Exhibition play and
for All-Star Teams with no problems, however.

*** 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: If
you find this program useful, please take the time to voice your
concerns/wishes/thanks about this game 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 great game! Thanks for the patch!
Lutz van Hasselt, for his information on the player data format,
name pointer editing, and the idea for the copy/trade functions.
Bernd Schmidt, for BINPATCH and BINDIFF.
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.
There are a lot of others I surely have missed (especially those
'NBA-ED boosters' out there!). Thanks all!

*** APPENDIX A - TEAM LIST

This is the list of team names that NBA-ED will accept as valid team names.
When using the names, case does not matter:

Atlanta, Atl, Hawks
Boston, Bos, Celtics
Charlotte, Cha, Hornets
Chicago, Chi, Bulls
Cleveland, Cle, Cavaliers
Dallas, Dal, Mavericks
Denver, Den, Nuggets
Detroit, Det, Pistons
GoldenState, GS, Warriors
Houston, Hou, Rockets
Indiana, Ind, Pacers
LosAngelesC, LAC, Clippers
LosAngelesL, LAL, Lakers
Miami, Mia, Heat
Milwaukee, Mil, Bucks
Minnesota, Min, Timberwolves
NewJersey, NJ, Nets
NewYork, NY, Knicks
Orlando, Orl, Magic
Philadelphia, Phi, 76ers
Phoenix, Pho, Suns
Portland, Por, TrailBlazers
Sacramento, Sac, Kings
SanAntonio, SA, Spurs
Seattle, Sea, Supersonics
Utah, Uta, Jazz
Washington, Was, Bullets
EAllStar, ASE, East
WAllStar, ASW, West
Rookie, FAKE, Newcomer

*** APPENDIX B: FACIAL FEATURES CODE VALUES

There are 39 special settings (40 if you count headless) for the facial
features code. Some are arrived at by adding together several facial
features (Thanks to Lutz van Hasselt for this info):

0-31:
First, choose one of the following:
0  bald
4  very short black hair with shaved sides and back (eg. Larry Johnson)
8  short black hair (like Ewing)
12 medium black hair (like Stockton)
16 few black hair for old people (like Drexler)
20 blond (like Bird)
24 brown (like Majerle)
28 same as 16

Then, take the number and add one of the following:
0  no beard
1  moustache (like Barkley)
2  beard (like Pippen)
3  beard with side whiskers (like Divac)

So, for example, for Pippen, choose 8 for hair and 2 for beard, so you get
10. (all beards and moustaches are automatically the same color as the hair.
8 is meant for black guys and 12 for whites, but you don't have to stick to 
that.)

32-39: These are special.
32 same as 16 plus glasses
33 same as 0 plus headband
34 same as 24 plus glasses
35 Weird. Could be anything from a Mohawk like Joe Strummer of the Clash
to the Pope's cap (that red thing, only it's white in the game)
36 same as 34
37 This is looking really silly. Actually, I think it's supposed to be Kurt
Rambis
38 same as 5
39 Dennis Rodman 

Any value larger than 39 gives you a player with no head at all.
