Jump to content
NHL'94 Forums

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


bcrt2000

Recommended Posts

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
  • Like 1
Link to comment
Share on other sites

  • bcrt2000 changed the title to New NHL95 PC Tools for extracting In-Game Sprites, Music, Sounds & more coming soon
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.

Link to comment
Share on other sites

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
Link to comment
Share on other sites

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
  • Like 2
Link to comment
Share on other sites

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
Link to comment
Share on other sites

  • 2 weeks later...

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
Link to comment
Share on other sites

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)

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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.

 

Link to comment
Share on other sites

  • 1 month later...

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