EXPERT TIPS FOR USING NBA-ED

This document describes some useful hints that you can use when working
with NBA-ED 2.0, the NBA Live 95 Player Editor. It also describes how
you can make your own league patches. Also included are some useful
resources for player data. It is assumed you are familiar with the
workings of NBA-ED 2.0.

HINTS AND TIPS

The purpose of this section is to help the NBA-ED user create leagues
that are free of statistical anomalies and potential crash situations.
Most of these problems arise from the use of the Copy function in the
Trade/Copy option of NBA-ED, and the use of the Image ID editor.

*** Image IDs and Player Photos:

Every player in the default league of NBA Live 95 has an Image ID
number. This includes All-Stars, and fake player slots. Counting all
these players there are 395 players in the league, assigned a number
from 0 to 394. The numbers are assigned by team (alpabetically, Atlanta
being 0, Boston 1, etc... on to 28 for ASW), then by roster slot
(starting center 0, starting PF 1, etc... on to 11). Fake slots start
after ASW, and there are 47 of them.

The default Image ID for a roster slot can be determined with the following:

Default_Image_ID = (12 * team_number) + slot_number

Fake slot Image IDs can be determined this way:

Fake_Slot_Image_ID = (12 * 29) + slot_number

The most visible use of the Image ID numbers in the game is that the ID
is used to assign portraits to a particular player slot. However, the
Image ID apparently is used for more than that in Season play. Any
reassigning of Image IDs must be carefully done to avoid statistical
anomalies and system crashes. Both the Copy function of NBA-ED and the
Image ID editor can assign Image IDs such that these situations arise.
These problems affect Season/Playoff play only and not Exhibition play,
or the All-Star Teams.

The most serious problem is assigning improper Image IDs which can
lead to a crash. This can be done in 2 basic ways:

1. Using the Image ID Editor to assign the Image IDs 345 and 394 to
a player on one of the league teams (not counting All-Stars).

2. Copying player data to a player in the league from two specific
slots: All Star West 10, and Fake 47. This indirectly transfers the IDs
345 and 394.

If you'll notice, in gameplay this Image ID signifies the 'no photo
available' image. Some older patches use this photo in place of the
image of previously missing players. While this works in exhibition
mode, using this Image ID indicates that the player has no stats
available, either. With no stats available, this causes a crash when
Season play tries to project a players performance using their stats.

To fix this problem, the Image ID editor flags any improperly assigned
Image IDs, and allows you to assign any Image ID to any player. Note
that you can still assign 345 and 394 to any player, but it is not
recommended you do so unless you intend only to play exhibition games.
Note that you may assign any Image ID to any All-Star slot.

The second problem arises when the same Image ID is assigned to more
than one player. The problem occurs when one of the players using the
common Image ID uses fake stats. Then all players using that Image ID
use the Fake Stats in Season play, causing them to give identical
performance in Season play. It is recommended that every league player
have a unique Image ID. Any problems with Image IDs are flagged when
using the Copy Players option, when using the Image ID Editor, and
when exiting NBA-ED. You may use the Image ID Editor to fix such problems.

*** Adding and Changing Names:

The most powerful new feature of NBA-ED 2.0 is its name editing features.
This feature allows you to add the name of almost any player, and assign
it to any roster slot. The main problem is that you have a limited amount
of space to store names. Here are some tips to keep note of when working
with names.

The Name Pointer Editor allows you to associate any roster slot's first,
last and nick names with any string used in the game. The Name Pointer
Editor searches all strings used in the game, including college names,
credits, error messages and internal symbols (but none of the strings
used by the DOS extender). Take advantage of this feature. Players named
Joe Montana, Indiana Jones, Magic Johnson, John Wayne ("Duke"), and
Tony Orlando could all be created with the Name Pointer Editing feature.

If possible try and use the places in the list of player name strings of
any players you have replaced.

Exploit the redundancies in the player name list. Some players share
common last names, such as Johnson, Smith, Miller, Malone, Harper,
Wilkins, Hardaway, and Williams. However, some of these names are
duplicated in the names list, but have a first initial added for
different players. For example, Reggie Miller's full last name is
R. Miller, and Oliver Miller's is O. Miller. This is presumably for
indicating substitutions during gameplay. If you can live without
the first initial indication on substitutions, create one copy of
the name (some already have one uninitialled copy) and have all the
players sharing that name use the single copy. You will then have
many, many slots with which to add players names.

Mark off any free slots you may have in the player name list with a
unique character (a punctuation symbol for example). This makes it
easier to do a search on free spaces in the name list.

If you like, forego the use of nicknames, or perhaps some of the less
well known ones, and use the spaces in the name list for 'real' names.
This is especially useful for longer names.

Use unused slots in the college name list. This can be especially useful
if you have done a lot of editing of the entire league. Again, be sure
you are overwriting a college name that is not being used by any player,
as any player using that college will have the edited name show up as
his college.

If you still can't find enough room, you can always use some other
part of the string space in the .EXE file to store names. This is
not supported in NBA-ED 2.0, so you will have to add them with a hex
editor. NBA-ED 2.0 allows only for editing the string spaces in the
.EXE file containing college names and player names. Each name
must be terminated with a zero byte. You can then use the Name Pointer
Editor to have a player's name point to the added string. This method
is not recommended as it may cause the program to crash on some systems.

*** Making Your Own Patches

Now that you have created your own super league with NBA-ED, perhaps you'd
like to share it with others. Distributing the .EXE file, even compressed,
results in a large file that takes a long time to transfer and takes up
a good deal of disk space. It is much better to create and distribute a
small 'patch' file of your changes that you can apply to the original.
It would also be useful to create patches for both the original and the
official PAS-16 fix. This version of NBA-ED contains all the tools necessary
to create and convert patches for NBA95.EXE Here are the steps:

1. Make sure you have two copies of an *unmodified* NBA95.EXE. One will
be a source from which you will create the patch (I will call this
NBA95OLD.EXE) , the other will be the copy which contains your changes made
by NBA-ED (I will call this NBA95NEW.EXE). You can get an unmodified copy
of the original NBA95.EXE off the CD-ROM, but you must make sure yourself
that you have an unmodified copy of the PAS-16 version of NBA95.EXE.

2. Make your changes to NBA95NEW.EXE (you can use the filename switch
NBA-ED -F NBA95NEW.EXE to edit NBA95NEW.EXE rather than NBA95.EXE)

3. Once you have finished all your changes, use the BINDIFF program to
generate a patch file. The command is:

BINDIFF NBA95OLD.EXE NBA95NEW.EXE MYPAT.PAT

This will create a small file MYPAT.PAT containing the differences
between NBA95OLD.EXE and NBA95NEW.EXE to create NBA95NEW.EXE from
NBA95OLD.EXE.

4. To create a PAS-16 compatible version of your patch, you need two
unmodified copies of the PAS-16 version of NBA95.EXE, one source
(NBAPAOLD.EXE) and one to change (NBAPANEW.EXE)

5. Run the NBACOPY program to convert the data for the original NBA95.EXE
to the PAS-16 version of NBA95.EXE (Actually NBACOPY will do the same
thing in the other direction as well (PAS-16 to original) automatically)
The command in this case is:

NBACOPY NBA95NEW.EXE NBAPANEW.EXE

This will copy all the player data, player names list, and college names
list from NBA95NEW.EXE to the proper places in NBAPANEW.EXE.

5a. NBACOPY will not (yet) convert name pointers, so you will have to
adjust name pointers using NBA-ED's Name Pointer Editor option. You will
only have to do this for those players whose Name Pointers you have changed.

6. Apply BINDIFF to NBAPANEW.EXE to create a PAS-16 version of your
patch:

BINDIFF NBAPAOLD.EXE NBAPANEW.EXE MYPATP16.PAT

Applying the patch:

You can use the BINPATCH program to apply the patch files you created to
an unmodified copy of NBA95.EXE to create a version of NBA95.EXE that
contains all the changes you made and saved in the patch.

The command for using BINPATCH is:

BINPATCH <oldfile> <patchfile>

You must be careful to use 'original version' patches with *only* the
original NBA95.EXE and PAS-16 patches with the PAS-16 version of NBA95.EXE.
Using the wrong patch on the wrong .EXE file will cause crashes!
If you intend to distribute your patches, it is suggested that you write
a batch file to back up your original NBA95.EXE, determine which version of
NBA95.EXE you have, and apply the correct patch. Included with this version
of NBA-ED is a small utility (FST.EXE) that can compare a file with a size
given as part of the command line of FST.EXE. This can be used to determine
which version of NBA95.EXE you are running. The syntax of FST.EXE is:

FST <file> <size>

The errorlevel returned by FST is 1 if the size of <file> in bytes is 
equal to the number <size>. If the size of <file> is greater than <size>,
the errorlevel returned is 2, if less, the errorlevel is 3.

Here is a sample batch file that creates a patched version of NBA95.EXE:

@echo off
if not exist nba95.exe goto xit
copy nba95.exe nbapatch.exe
fst nbapatch.exe 1101579
if errorlevel 2 goto try2
if errorlevel 1 goto old
:try2
fst nbapatch.exe 1097483
if errorlevel 2 goto err
if errorlevel 1 goto p16
:old
echo You have an old version of NBA95.EXE.
binpatch nbapatch.exe superpat.pat
goto xit
:p16
echo You have the PAS-16 version of NBA95.EXE.
binpatch nbapatch.exe superp16.pat
goto xit
:err
echo The size of NBA95.EXE is not correct
:xit

*** Resources

Here are some good resources for player stats (parts taken from the
rec.sport.basketball.pro FAQ List)

Media Resources

- the annual Sporting News NBA Guide and NBA Register.
- the NBA Encyclopedia
Both available at fine bookstores everywhere.

- any team Media Guide, especially the Philadelphia 76ers',
which has all sorts of odd stuff.
        
- Microsoft Complete NBA Basketball CD-ROM
This disc truly lives up to its name. I couldn't imagine basketball fan
with a system capable of running NBA Live 95 to be without this disc,
despite what you might think of Bill Gates. An excellent resource for
finding older players' stats, and lots of cool multimedia to boot.

Internet Resources

- NBA Stats project (FTP)
The Usenet newsgroup rec.sport.basketball.pro has its own archive 
available via anonymous ftp at wuarchive.wustl.edu in the directory
/doc/misc/sports/nba

- ESPNET SportsZone (WWW)
A WWW site catering to the sports fan. Presented by the ESPN sports
network and Starwave Corporation. Features continually updated scores,
stats, news, and features for all major sports. Has excellent college
basketball and NBA sections. Great source for current players. You can
get to it through your Web Browser at http://espnet.sportszone.com
