Jump to content
NHL'94 Forums

New NHL95 PC Tools for extracting In-Game Sprites, Music, Sounds & more coming soon


Recommended Posts

Posted (edited)

Hey all, I've created 3 new tools for NHL95 PC to extract in-game sprites, music & sounds. The sprite extractor leverages gfxpak to get the raw image data out of the PPV files before the sprites are converted to .raw (Photoshop RAW, not Camera RAW) and .bmp format. Note that the music & sound extractors are WIP and aren't perfect. Also note that these are all written in js so they should be very easy to modify & or reverse engineer for importing.

Grab them here: https://github.com/abdulahmad/EA-NHL-Tools (each tool has it's own README with more info on it)

Here's a sample of some of the extracted sprites:

image.png

I've also created a few videos where I walk through how I figured out these file formats. It was originally intended for a fellow modder, but I feel like anyone who wants to know more about file format hacking can learn something. Here is a playlist of them:

 

Just an FYI-- I used to be someone who modded the EA NHL PC games starting with NHL 95 and then NHL 98 all the way to NHL 06. If I recall correctly I was the first one who released modded rinks (under the pseudo name Chris and the group RTM but then later with my own name) and also figured out the Centre Ice file format. I have been sad to see threads from 2012-13 with people trying to figure out how mod NHL 95, so I figure I should publish as much as this info as possible. I am working on an Engine remake of NHL 94/95 in Unity so this is why I have been spending so much time hacking.

 

I intend to make more tools soon-- the next one I'm looking to do is around palettes & extracting palettes from NHL 95 PC, and perhaps even 94 Genesis/SNES and have them in a format that can be applied to the extracted sprites and/or potentially even the ability to extract all the sprites with a specified palette.

I also have started to create a document with information on all the file formats in NHL 95. I figure I will post that information in this thread as I spend more time on it, and also add it to EA NHL Tools github above.

Edited by bcrt2000
  • Love 2
  • Thanks 1
  • Like 1
  • bcrt2000 changed the title to New NHL95 PC Tools for extracting In-Game Sprites, Music, Sounds & more coming soon
Posted
On 2/16/2023 at 1:46 AM, bcrt2000 said:

Hey all, I've created 3 new tools for NHL95 PC to extract in-game sprites, music & sounds. The sprite extractor leverages gfxpak to get the raw image data out of the PPV files before the sprites are converted to .raw (Photoshop RAW, not Camera RAW) and .bmp format. Note that the music & sound extractors are WIP and aren't perfect. Also note that these are all written in js so they should be very easy to modify & or reverse engineer for importing.

Grab them here: https://github.com/abdulahmad/EA-NHL-Tools (each tool has it's own README with more info on it)

Here's a sample of some of the extracted sprites:

image.png

I've also created a few videos where I walk through how I figured out these file formats. It was originally intended for a fellow modder, but I feel like anyone who wants to know more about file format hacking can learn something. Here is a playlist of them:

 

Just an FYI-- I used to be someone who modded the EA NHL PC games starting with NHL 95 and then NHL 98 all the way to NHL 06. If I recall correctly I was the first one who released modded rinks (under the pseudo name Chris and the group RTM but then later with my own name) and also figured out the Centre Ice file format. I have been sad to see threads from 2012-13 with people trying to figure out how mod NHL 95, so I figure I should publish as much as this info as possible. I am working on an Engine remake of NHL 94/95 in Unity so this is why I have been spending so much time hacking.

 

I intend to make more tools soon-- the next one I'm looking to do is around palettes & extracting palettes from NHL 95 PC, and perhaps even 94 Genesis/SNES and have them in a format that can be applied to the extracted sprites and/or potentially even the ability to extract all the sprites with a specified palette.

I also have started to create a document with information on all the file formats in NHL 95. I figure I will post that information in this thread as I spend more time on it, and also add it to EA NHL Tools github above.

Nhl95 PC is my favorite sports PC game.I tried mod WHA https://forum.nhl94.com/index.php?/topic/19459-wha-73-74-nhl95pc-mod/ perhaps someone even liked it. I would welcome any improvements to this great game and I'm really looking forward to it.

Posted (edited)

Finished the PAL-to-ACT tool to extract team palettes from the game so you can apply them to extracted sprites. It's available in the 0.4 WIP version. I need to update the QFS extractor so it is able to apply the correct palettes to all images extracted from the game (whereas gfxpak by default will only correctly apply a palette if the palette exists in the same QFS file) before I make 0.4 final.

I may create a tool to reverse the process for 0.5 as I'm thinking about creating a team swap mod so that you'd be able to play with all 32 teams in NHL 95 PC-- albeit only 28 teams at a time in the game, and a script that you'd run at startup to choose which teams you want in the game. But at least you'd be able to play a playoffs with all of the  teams you like, as well as a regular season with the 26 teams you'd like in that season. And the reason I'd want to reverse the process is that it's much easier to see how well your jersey is going to translate across all sprites if you can do it in Photoshop rather than in JED.

Example of extracted palette applied to extracted sprites.

image.png

Edited by bcrt2000
  • Like 1
Posted (edited)

OK will try to add all the progress I've made since last post.

Finished the QFS-To-BMP converter (available on my Github). It will extract almost all the image assets from the game with correct palettes automatically applied. Just need to look into one issue with the CTLogos.

image.png

 

Started on an NHL95 Team Swap mod. Super WIP at this point. This won't expand the game to 32 teams in the traditional way like the Genesis ROM hacks have, but it will give you the ability to start the game with 26 of the 32 NHL Teams plus 2 of the 4. Just for simplicity sake the way it will probably work is that the UI will allow you to select 6 or 7 out of the 8 teams in each division to be able to play the game with. Will let you play a playoffs with the 16 teams you want to or a season with the 26 teams you want to. So far I'm quickly prototyping jersey designs in photoshop, created a shader of sorts in Photoshop based on how EA shaded sprites originally in NHL 95 so that I can just work with flat colours and apply the shading on top. Here's an example of how it works with Minnesota plus some prototype designs for other teams:

image.png

 

I have also created a document which explains what parts of the .EXE have to be modified to expand the game from 26 to 32 teams. Not a priority for me but a starting point for anyone else.

Created a document which explains how Centre Ices work and how to modify them. Documents the .TIL, .MAP and even some locations in the .EXE where this is all configured and how it all works. This may eventually turn into a Centre Ice exporter/importer (especially as I continue on the Team Swap mod, I'd probably want to have a tool).

 

One thing I figured out after running the completed QFS-To-BMP tools is that the palettes used to create the team palettes in HOMEPALS/AWAYPALS.bin are actually stored in the HOMEPAL3/AWAYPAL3.QFS files. Here's how some of the sprites look like with it applied:

image.png

Here's a comparison between the palette which was extracted via my PAL-To-ACT tools (left) versus the palettes from the QFS (right)

image.png

 

Also added two more videos to my NHL 95 hacking series on youtube which go over how palettes work in the game, and what my workflow looks like when working with paletted sprites. And the second video goes over the Centre Ice format

 

The next thing for me to work on is figuring out how to pull NHL 23 ratings + official '22-23 stats and put them in a format that I can both use for my engine remake, and the team swap mod.

Edited by bcrt2000
  • Love 1
  • Thanks 1
  • Like 3
Posted

Final release of v0.4 for https://github.com/abdulahmad/EA-NHL-Tools

Release notes:

  • 95 Team Swap Mod added (WIP), included prototype jerseys for NSH, CBJ, WPG, MIN, SEA, VGK, All-Star Teams
  • Documentation on expanding NHL95 PC to 32 teams added
  • First release of PAL-To-ACT
  • First release of QFS-To-BMP (all images extracted with correct palettes)
  • First release of Roster-Generator
  • Split out SPIT-To-BMP from PPV-To-BMP
  • Documentation on Centre Ice logos in TIL-To-BMP
  • Added palette support to SPIT-To-BMP
  • Love 2
  • 2 weeks later...
Posted

I do have a work in progress rink-graphics importer, that should allow you to not just import Centre Ices, but also board ads & ice ads (both at centre ice & behind the nets), and this is pretty much the biggest piece of the puzzle before I can complete the NHL 95 32-team swap mod, but also felt like I was spending a little too much time on it compared to my engine remake, so I'm putting it on pause for now so that I can get back to coding the engine remake I've been working on. I also was just really busy with work the last few weeks so haven't really worked on much of anything, Want to get my feet wet on working on the game engine again, and then maybe in 2-3 weeks I'll circle back around to the rink graphics importer when I have time.

  • Like 1
Posted
6 minutes ago, Jlsegafan2001 said:

I tried to extract MAINDESK.IFF into a WAV file, only for this error to pop up. Is there anything I can do?

image.png

Looks like an error with the tool you're using (compilation error). Not installed correctly? Missing a dependency? Run the wrong way? (it errors out on the very first character)

Posted
5 hours ago, smozoma said:

Looks like an error with the tool you're using (compilation error). Not installed correctly? Missing a dependency? Run the wrong way? (it errors out on the very first character)

1) I downloaded it from releases, so THAT can't be the problem.

2) I installed Node, which didn't do anything.

3) I followed the instructions more carefully, and this was the result: image.png

"Conversion complete!" is misleading, as no .wav file called "output.wav" exists on my computer, as you can see here:

image.png

In the readme, he says this:

"To generate the base code I fed ChatGPT a 1985 whitepaper by an EA Employee on the .IFF format."

Using ChatGPT as a base might have been the mistake that sealed the program's fate, as AI tends to not be very intelligent at all.

Posted
3 hours ago, Jlsegafan2001 said:

1) I downloaded it from releases, so THAT can't be the problem.

2) I installed Node, which didn't do anything.

3) I followed the instructions more carefully, and this was the result: image.png

"Conversion complete!" is misleading, as no .wav file called "output.wav" exists on my computer, as you can see here:

image.png

In the readme, he says this:

"To generate the base code I fed ChatGPT a 1985 whitepaper by an EA Employee on the .IFF format."

Using ChatGPT as a base might have been the mistake that sealed the program's fate, as AI tends to not be very intelligent at all.

So like I suggested, it wasn't installed correctly -- Node was missing.

Also in the readme it says "This isn't perfect, doesn't work with every file. But will work with some of them at least." and discusses the known problems:

"The code generated had some issues-- the header definition seemed wrong. This was a real quick & dirty tool to get out so I didn't spend enough time to understand if the documentation wasn't read properly by ChatGPT or if EA had changed the header definition by the time NHL 95 came out.

Calculating the size of the destination file also seems to be incorrect. It's something I need to spend more time looking into."

And without the chatGPT base, the tool might not even exist at all.

Please read instructions carefully. I have had people tell me they don't help you because you are not careful enough and require too much guidance / hand-holding, and it becomes a "boy who cried wolf" situation so that when there actually IS a problem they just expect that you weren't careful so they don't bother trying to help.

The people who make these tools are usually very busy, please respect their time by working more carefully.

Posted
33 minutes ago, Jlsegafan2001 said:

Here's proof that Node was installed.

image.png

Alright...

Maybe I misunderstood your "2)" point, it sounded like you were saying you installed node after asking for help the first time, but it didn't fix the problem ("didn't do anything").

Posted

What if you try other IFFs, do any work? The docs say that "some of them" will work

Posted

Not all of the headers in the IFF files are the same, so the script isn't set up to read them. It's still a WIP tool.

Abdul works on the tool as he works on a particular section of the game. He'll update it when it comes time to access files in that particular part of the game.

 

  • 1 month later...
Posted

Just want to say that I’ve been extremely busy recently. Going to circle back around to this project in a few weeks.

  • Thanks 2
  • 2 years later...
Posted (edited)

Hey folks, you may have seen that there has been some activity on my end-- released a tool to extract 92/93/94 sprites, which is in the Tools section of this forum.

I was just noodling around and found the list of animation names in the PC version of NHL95. Would be useful for anyone reverse engineering 93/94 and needing to create names for the new animations added since NHL92

gready
gready2
gglover
gglovel
gglovel2
gstickr
gstickl
gstackr
gstackl
gdive
gswing
gskate
pflip
glide
skatewp
skate
turnl
turnr
stop
passf
passb
shotf
shotb
glideback
skateback
sweepchk
shoulderchkl
shoulderchkr
hipchkl
hipchkr
burst
hold
hold2
flail
fallfwd
fallback
celebrate
pump
wallright
wallleft
faceoff
faceoffr
siren
bglass
stanley
catch
hook
hook2
stumble
fake
flip
injury1
refglide
refskate
refturnl
refturnr
refstop
reffallback
armupglide
armupskate
armupturnl
armupturnr
armupstop
refpickup
refpointgoa
refdrop
reffowait
refrough
refcharge
refslash
refxcheck
refhook
reftrip
refinterfer
refhold
refabuseoff
refbehind
faceoffpoke
gwallright
gwallleft
anthem1
anthem2
anthem3
anthem4
anthem5
drink
refanthem1
refanthem2
onetimef
onetimeb
getcup
brcup
gvcup
clap
stansk
crosscheck
boardback
boardfront
boardright
boardleft
benchcheckr
benchcheckl
refpenshot
goaliepoke
goalieknee
gokneehold
gofallback
gofallglove
gofallstick
fakeshotf
fakeshotb
fakeonetimef
fakeonetimeb
blockleft
blockright
blockfront
blockknee
refelbow
refhistick

and then there seems to be a list of AI routines (from Logic1.asm):

defo
defd
wingd
wingo
centd
cento
score
stan
exben
expen
bench
pen
dopen
goalie
goalieget
puckc
nearest
shoot
passrec
3star
r3star
fowait
pnorm
pshad
pnothing
pface
pface2
gamemiscon
rfaceoff
rnorm
rcallpen
rpickup
rgotofo
rpointgoal
rgetnew
anth
ranth
agotofo
benwait
initper
pgivecup
rpenshot
apswait
abreak

Thank you to chaos for identifying the AI routines

Edited by bcrt2000
  • Like 1
Posted

Here's another thing I've taken a look at-- the differences of animations between 92-94 Genesis and 94-95 PC:

# Sprite Investigation:

## NHL 92:
Sprites.anim: Frame 0-548
0-376: player sprites
377-382: arrows
383-385: star
386-396: puck
397-398: net
399-510: goalie sprites
511-534: team centre ice
535-548: goal light

## NHLPA 93:
0-369: identical player sprites as 92
370-375: new fight loss injury sprites
376-382: same as 92 370-376
383-388: arrows
389-391: star
392: new instant replay cross hair
393-403: puck
404-405: net
406-553: goalie sprites (518-553 new save/stick tap anims for 93)
554-567: goal light
568-643: new player animations for 93 (swat puck, hooking, wobble, flip, injury)
644-648: broken glass

## NHL 94 Genesis:
0-351: identical player sprites as 93
352-375: empty fighting sprites
376-382: identical player sprites as 93
383-388: arrows (identical to 93)
389-391: star (identical to 93)
392: instant replay cross hair (identical to 93)
393-403: puck (identical to 93)
404-405: net (identical to 93)
406-537: goalie sprites (identical to 93)
538-561: new goalie twitch animation (goalie animation from 93 in this spot may have been cut?)
562-575: goal light (identical to 93)
576-651: player sprites (swat puck, hooking, wobble, flip, injury) -- same as 568-643 for 93, but without blood on injury
652-656: broken glass (identical to 93)
657-712: new goalie animations (shoulder save, stick save, pokecheck)
713-836: new player animations (one-timer, check into boards)
837-844: player 3/4 arrows/star

## NHL 94 DOS:
Sprites 000-875
Crowd Sprites F000-F149
0-351: identical player sprites as 93/94
352-355: arrows
356: mouse control crosshair
357-358: player accepting stanley cup
359-368: faceoff sprites (new for PC)
369-371: national anthem sprites (new for PC)
372-379: goalie/player line change (are these new?)
380-381: national anthem sprites (new for PC)
382: player on bench/penalty box
383-388: arrows (identical to 93/94)
389-391: star (identical to 93/94)
392: instant replay cross hair (identical to 93/94)
393-403: puck (identical to 93/94)
405-406: net (identical to 93/94)
407-553: goalie sprites (identical to 93)
554-567: goal light (same index as 93 but sprites look modified)
568-643: player animations (swat puck, hooking, wobble, flip, injury) -- identical to 93
644-648: broken glass (same index as 93 but sprites look modified)
649-698: referee animations (new for PC)
699-702: between play at bench animations (new for PC)
703-871: referee animations, mouse control UI (new for PC)
872-875: stanley cup skating sprites (new for PC)

## NHL 95 DOS:
Sprites 000-875 are identical to 94 (not 100% verified)
876-886: player checked into bench (new for 95 PC)
887: player celebration
888-903: upright crosscheck (new for 95 PC)
904-973: checked into boards (new for 95 PC-- 94 Genesis has similar sprites but seems like these were created from scratch)
974-1071: goalie animations (new for 95 PC-- are these from SNES version?)
1072-1127: shot blocking (new for 95 PC)
1128-1133: referee animations (new for 95 PC)

 

  • Love 1
  • Thanks 1
  • 7 months later...
Posted

I have found the location of animations in NHL 94 & 95 for PC


NHL94PC Animation data (SPAList) starts at 0x358A6 (Hockey.exe)

NHL95PC Animation data (SPAList) starts at 0x110475 (Hockey.exe)

The format is identical to NHL92-94 Genesis where it starts with an animation header which has offsets to each direction's animation data, which is then followed by the animation data for each direction.

The only differences are:

  • its little endian instead of big endian, so you'll need to byte swap the data for it to be readable
  • the frame data starts at index 0 on PC instead of index 1 on Genesis

I would love to build a tool that lets you view all of the animations across 92-97 Genesis, 94-95 PC and 94 SNES (just recently posted another topic on some progress on 94 sprite/frames and animation format).

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...