To mark the 25th Anniversary of NBA Live, we’re taking a look back at every game in the series with retrospectives and other fun content! This also includes re-running some features from our 20th Anniversary celebrations, with a few revisions. Whether you’re a long-time basketball gamer who grew up with NBA Live and are keen on taking a trip down memory lane, or you’re new to the series and want to learn about its history, we hope that you enjoy celebrating the 25th Anniversary of NBA Live here at the NLSC! Today, I’m exploring the exe file for NBA Live 96 PC.
It’s time to go Easter egg hunting! As I’ve mentioned in previous articles, modding the early NBA Live games on PC required editing the game’s executable (exe) files. The editors for NBA Live 96 were sufficient for the most part, but there were times when we needed to edit a text string – such as a team name or the years displayed for the previous season’s stats – or a pointer to an art file. That required opening the exe file with a Hex Editor, and searching for the data that we wanted to change. While making changes to text strings for NBA Live 96 mods, I’ve come across a few interesting and amusing things. Join me as I comb through the file and point them out!
Early on in the file, there isn’t really anything of interest. The only legible text strings of note are the DOS/4G copyright and Protected Run-Time notice, and various error and troubleshooting messages that are displayed if the game fails to load.
As I mentioned in my NBA Live 96 retrospective, I had to use a boot disk to run NBA Live 96 properly. If I didn’t, chances are I’d see that error about extended memory. When we upgraded our computer with an additional 8 MB of RAM and Windows 95, the boot disk was no longer required to free up the necessary system resources. With DOS games being phased out by the late 90s, it became easier to run PC games. You still needed to at least meet the minimum requirements of course, but newer versions of Windows alleviated the need to mess around with extended and expanded memory, thankfully rendering gaming boot disks obsolete.
Continuing to scroll through the file, it’s a long time before we encounter any more legible text strings. In case you’re wondering, this is what the file looks like, for lines, and lines, and lines.
Every so often, there’ll be a stray bit of recognisable text – usually an error message – or a reference to one of the game files. At last, we come across some more copyright notices and error messages:
This continues for a little while, and then it’s back to gibberish. It’s a long, long scroll until the next point of interest, past the halfway point in the file. At the 000F2BE0 offset, we encounter the text “Mouse Sensitivity”, then more gibberish, save for a couple more error messages and copyright notices. As you’ve probably guessed, this is why you would use the Search function when looking for a text string to modify, rather than manually scrolling through the whole file. There are probably things that we could edit here if we were able to decode them, but unlike the text strings, it isn’t immediately apparent what they are. It would take a lot of trial and error.
Over three quarters of the way through the file, at the 00142E50 offset, we finally come across the text for various in-game pop-ups. These include the names of plays, notifications about fouls and injuries, and the labels for the different camera angles.
Immediately following that, we have a bunch of pointers to various art files, and other assets. You might notice that the reference to the files for the Toronto Raptors is “craptor”, which surely can’t be a coincidence. There are two “craptor” references in the NBA Live 96 exe file, both located in this general area. All other team names are abbreviated in a logical and fairly unremarkable manner.
I have to believe that this was a hidden dig on behalf of fellow expansion team the Vancouver Grizzlies, since NBA Live 96 was developed at EA Canada in Burnaby, BC. When it comes to Easter eggs like this, there’s a long history of programmers sneaking messages and in-jokes into game code, including pot shots at other games and developers, threats towards would-be pirates, and anything else they think they can get away with. The Intellivision game US Ski Team Skiing infamously used a variety of obscenities as the names of variables and subroutines, much to the surprise of another programmer who looked up the source code a couple of years later!
In any case, our journey through the NBA Live 96 exe file continues. A little further on, we can find messages referring to features that aren’t available in the demo version of NBA Live 96. Clearly that text wasn’t removed from the final version of the game, and isn’t ever called upon or meant to be seen as everything is fully functional.
Incidentally, I’ve tried to track down the demo with no success. I was able to find the long-lost NBA Live 95 PC demo, but I’ve had no luck with NBA Live 96. I would assume that the demo was mainly distributed through sampler discs that came with computer magazines, most of which have probably been lost or destroyed. It would be great if such a disc was found and its contents were uploaded to archive.org, but it hasn’t happened yet. Failing that, perhaps a disc with the NBA Live 96 demo will surface on eBay at some point, but as a retro gaming collectible, it might be quite expensive. Unfortunately, game preservation isn’t a high priority for everyone.
After some more error messages, we get to the copyright screen that appears before the intro video, along with the names of the various options in the menus. This includes the names of the modes, the difficulty level, rules, and other settings.
Fun fact about that copyright screen: in their roster updates, Tim and Lutz changed “in whole and in part” to “in holes and in parts”, which was a subtle way of watermarking their work and identifying when someone else was trying to pass it off as their own. It’s something that I’d never noticed until I went looking through the exe files of the original NLSC roster updates to see how certain things were changed. That’s what made it so clever though, as you tended to ignore that screen after seeing it so many times, and so you wouldn’t think to change it back. Of course, once I knew that “in holes and in parts” was there, I couldn’t help but see it every time I used their rosters.
This is followed by further messages related to the NBA Live 96 demo, pointers to art files, a couple of error messages, and all the available Playoff formats. There are also pointers to DAT files, the format used for saved settings and custom roster data. We weren’t actually able to save and load different rosters until NBA Live 97 PC, so Tim and Lutz came up with the idea of changing the references to rosters.dat to custom extensions, such as rosters.s97 for the 1997 season patch. The modified exe file would subsequently save and load a roster file with this new extension, allowing for multiple roster mods to be used with the same installation of NBA Live 96.
A little further on, we find the labels for various player attributes, as well as the names of all the colleges in the game.
Following on from the names of the colleges, we have text strings that refer to how a player was acquired by their current team: signed as a free agent, drafted, traded from another team, or created. There are also the years for the previous season – 94/95 – text that we’d edit when we created rosters for newer or older seasons, and wanted the player stats for the previous year to be labelled accordingly.
Now we’re getting to some interesting stuff! Scrolling on, in between notifications and error messages, we find a couple of references to Kansas City and San Diego. These were left in the game because at the time, there were players in the league who had been drafted by teams in those cities. Otis Thorpe was taken by the Kings in 1984 when they were still in Kansas City, while Terry Cummings had been drafted by the Clippers first overall in 1982 when they were still in San Diego. Thorpe is in NBA Live 96 PC, but Cummings isn’t. He was in NBA Live 95 however, so it’s clearly leftover data that was meant for him (and indeed, he did play in the 1996 season).
Moving on, we find some references to animation files:
And not too long after that, we find the credits:
Following the credits, we have the city and team names. As I noted earlier, when we were actually editing these back in the day, we’d be using the Find function rather than manually scrolling all the way down to this part of the NBA Live 96 exe. Also, while it was easy enough to overwrite team and city names, they couldn’t be longer than the original text. The new text could be shorter, but spaces had to be used in place of any unused letters of the original name. Simply deleting the letters resulted in crashes, so it wasn’t advisable. Editing this data and updating the rosters in general became much easier when NBA Live PC switched to using DBF files.
After some text strings that reference days, months, and times, all for the calendar and schedule in Season mode, we come to some more text strings related to the player bio data. Notice anything interesting?
Once again, there are references for the Kansas City Kings and San Diego Clippers. However, there are also references to the St. Louis Hawks, San Francisco Warriors, Minneapolis Lakers, Tri-Cities Blackhawks, and the Utah Stars of the American Basketball Association. The presence of the Utah Stars makes sense, as that’s the team that drafted Moses Malone. He was in NBA Live 95, and might have been in an early version of NBA Live 96 PC, before he retired from the NBA. Those references to the former cities of the Hawks, Lakers, and Warriors are unexpected and interesting, though. Perhaps unlockable Legends were once planned for the PC version as well.
Even more curious is an unused text string among the names of player positions. Along with Point Guard, Shooting Guard, Small Forward, Power Forward, and Center, there’s also Bench Warmer. This never shows up in the game, so it was either included as a joke, or at one point would’ve been used to designate player roles. I’m leaning towards it being a joke, as there aren’t any other such references to roles in the rotation beyond positions for the starters, numbers for the bench, and crosses for the inactive roster. In-depth rotation logic and player roles are features that wouldn’t be implemented for many years, though it’d be cool if they were considered back then.
After that, it’s mostly more frontend labels, notifications, and error messages. At the 0014E590 offset, the gibberish begins again, before we start seeing some more frontend labels. Once again, this includes the labels for the camera angles, rules, and other gameplay settings, as well as the names of the plays (Sideline Triangle, High Post, and so on).
At the 00161C70 offset, the player data begins with the first player in the roster: Andrew Lang.
At the 001767A0 offset, you can see the data for the developers that make up the secret players in the game, unlockable in Create-a-Player.
Amusingly, the nickname data for one of the developers is “I tore my ACL”.
And that’s pretty much it, as far as points of interest are concerned! As I mentioned, editing data became a lot easier when NBA Live switched to DBF files with NBA Live 98 PC. Before that change however, it was fun discovering how to modify different elements through hex editing, as well as stumbling across some of the more interesting Easter Eggs. I hope you enjoyed this journey through the NBA Live 96 exe file, and picked up a couple of fun trivia notes that you weren’t aware of before. As for the “Craptors” pot shot…well, as of 2019, I guess they had the last laugh!