kingraph

NHL'95 Expanded ROM Project

Recommended Posts

segathon    50
11 hours ago, CoachMac said:

Great work King!  Love following this progress.

Is 95 the next big thing?

Has Segathon finally brainwashed us all.

rs-196043-MrBurns.jpg

KEEP 95 ALIVE!

Share this post


Link to post
Share on other sites
kingraph    136

Player Cards

Okay, so here is what I found out about the player cards in '95.  First, anyone really interested should read wboy's tutorial on player cards.

Now, I found out that there is another "pointer" type of table located at @C4754 through @C47FB that contains single bytes that relate to the player cards.  The byte determines how many bytes from the player card pointer table to move to get the correct player card picture.  It's almost like a pointer to the pointer.  Every 6 bytes (6 cards per team) is for a team, and there were 168 bytes (28 teams).  The last 12 bytes were for the all-star teams.  

I won't get into the 68k Assembly Language details (but trust me, I got deep into this here), but if you increased the teams past 28, you need to extend this table for the player cards to work properly.  So to get the player cards to work properly, I extended this new index table by 36 bytes (6 more teams), and I also changed the data for teams 27-28 (ASE/ASW) to their own player cards (they previously had index values to other teams' player cards).

Again, without getting into too much more detail, for some reason the game had two "check" functions that caused teams 31, 33, and 34 to not work properly.  '

To fix team 31, you have to change the value at @A0A9E from 1E to 22.  1E is team 31 (though the value is 32, the first team is 00) and the game has a specific command that says "if the team is 31", skip the entire player card sequence.  So changing to 22 (team 35) ensure this works.

To fix teams 33 & 34, change @A0A9A from 1F to 3F.  This requires a little more 68k assembly language knowledge, but the function the game uses is an "AND" function.  This is a great 68k learning site btw - http://mrjester.hapisan.com/04_MC68/Sect03Part02/Index.html

In short, teams 33 and 34 (20 and 21 in hex) that ran through this "AND" command would kick back to team 00 (team 1) and 01 (team 2).  Changing it to 3F makes sure that all teams through 30 (team 49 if ever that happened) would "pass" this function. 

So in short, I have the player cards working properly for all 34 teams.  :D

The player text is messed up on the later teams...will investigate that next, but I am pretty stoked about this find/fix.  Anyone who is really interested in the guts of this, happy to expand further, but I will likely post everything in a "notes" thread when I finish this project.

  • Like 2

Share this post


Link to post
Share on other sites
smozoma    100

Nice!! 

 

  • Thanks 1

Share this post


Link to post
Share on other sites
kingraph    136
On 9/10/2017 at 11:24 AM, kingraph said:

The player text is messed up on the later teams...will investigate that next,

Turns out the game writes a new table to the SRAM (offsets 20000 - 20FFFF) that the game references at offset @207C28.  The table contains the line data for each team (NLC, SC1, SC2..etc), which is the roster number (in hex) of the player on the team, 6 people per line.  The data is the same numbers found in the team data sections, except this new table in the SRAM adds a byte to each value, so it's twice as long.  For example, the team data will show 011214 (goalie, LD, RD...etc), but the new table is 000100120014.  Anyway, the table in the SRAM stops at the 28th team and my original intent was to find the code that generated this table in the RAM to "tell it" to go to 34 but I couldn't find it.  At least not yet. 

So as a band-aid, I included an expanded table in the ROM, and changed the offsets that referenced 207C28.  The player cards AND names work for all 34 teams, but the names that show up during the home screen match will be incorrect after someone edits the lines since the table I pasted is static.  The SRAM is still written, so it's easy enough to flip the offsets back to the SRAM, which I will eventually have to do since I believe the game also uses the SRAM for line changes data.

So as of now I have a playable 34 team ROM, with editable logos and banners, and players. (YAY!)

Things I need to continue to work on, expected level of difficulty:

* Teams 29-34 won't work with line changes (MED/HIGH)

* Add music for new teams (MED)

* Find out how to make playoffs work for teams past 26 (MED)

* Decompress some additional graphics like the splash screens, timer logo, John Schrader, etc. (LOW)

* Figure out the season data stuff -- calendars, teams, matchups, standings, divisions, etc (HIGH)

Moving along...

  • Like 2

Share this post


Link to post
Share on other sites
CoachMac    98
1 hour ago, kingraph said:

Turns out the game writes a new table to the SRAM (offsets 20000 - 20FFFF) that the game references at offset @207C28.  The table contains the line data for each team (NLC, SC1, SC2..etc), which is the roster number (in hex) of the player on the team, 6 people per line.  The data is the same numbers found in the team data sections, except this new table in the SRAM adds a byte to each value, so it's twice as long.  For example, the team data will show 011214 (goalie, LD, RD...etc), but the new table is 000100120014.  Anyway, the table in the SRAM stops at the 28th team and my original intent was to find the code that generated this table in the RAM to "tell it" to go to 34 but I couldn't find it.  At least not yet. 

So as a band-aid, I included an expanded table in the ROM, and changed the offsets that referenced 207C28.  The player cards AND names work for all 34 teams, but the names that show up during the home screen match will be incorrect after someone edits the lines since the table I pasted is static.  The SRAM is still written, so it's easy enough to flip the offsets back to the SRAM, which I will eventually have to do since I believe the game also uses the SRAM for line changes data.

So as of now I have a playable 34 team ROM, with editable logos and banners, and players. (YAY!)

Things I need to continue to work on, expected level of difficulty:

* Teams 29-34 won't work with line changes (MED/HIGH)

* Add music for new teams (MED)

* Find out how to make playoffs work for teams past 26 (MED)

* Decompress some additional graphics like the splash screens, timer logo, John Schrader, etc. (LOW)

* Figure out the season data stuff -- calendars, teams, matchups, standings, divisions, etc (HIGH)

Moving along...

Awesome.

Already planning my Original 6 Seasons!

AND a trip to Segathon!

  • Like 2

Share this post


Link to post
Share on other sites
segathon    50
7 hours ago, CoachMac said:

Awesome.

Already planning my Original 6 Seasons!

AND a trip to Segathon!

 

1vx1cz.jpg

Edited by segathon
  • Haha 1

Share this post


Link to post
Share on other sites
segathon    50
8 hours ago, kingraph said:

Turns out the game writes a new table to the SRAM (offsets 20000 - 20FFFF) that the game references at offset @207C28.  The table contains the line data for each team (NLC, SC1, SC2..etc), which is the roster number (in hex) of the player on the team, 6 people per line.  The data is the same numbers found in the team data sections, except this new table in the SRAM adds a byte to each value, so it's twice as long.  For example, the team data will show 011214 (goalie, LD, RD...etc), but the new table is 000100120014.  Anyway, the table in the SRAM stops at the 28th team and my original intent was to find the code that generated this table in the RAM to "tell it" to go to 34 but I couldn't find it.  At least not yet. 

So as a band-aid, I included an expanded table in the ROM, and changed the offsets that referenced 207C28.  The player cards AND names work for all 34 teams, but the names that show up during the home screen match will be incorrect after someone edits the lines since the table I pasted is static.  The SRAM is still written, so it's easy enough to flip the offsets back to the SRAM, which I will eventually have to do since I believe the game also uses the SRAM for line changes data.

So as of now I have a playable 34 team ROM, with editable logos and banners, and players. (YAY!)

Things I need to continue to work on, expected level of difficulty:

* Teams 29-34 won't work with line changes (MED/HIGH)

* Add music for new teams (MED)

* Find out how to make playoffs work for teams past 26 (MED)

* Decompress some additional graphics like the splash screens, timer logo, John Schrader, etc. (LOW)

* Figure out the season data stuff -- calendars, teams, matchups, standings, divisions, etc (HIGH)

Moving along...

Me trying to help out on this...

 

  • Haha 1

Share this post


Link to post
Share on other sites
kingraph    136

Interesting note on the title screen.  The screen is 32 x 28 tiles, which means a fully decompressed image would be 896 tiles.  However, the game has 1,013 tiles stored in the image!  I've confirmed that over 120+ tiles are not used in the title image, which means decompressing the image actually saves a ton of room on the ROM!  The extra tiles look to be the NHL Shield and NHLPA logo.  My guess is originally they wanted the shield and NHLPA logo to "fly in" as an overlay like it does in '94, but due to whatever reason (graphic constraints?), they just stuck directly on the picture.  Anyway, graphic edits are more fun, so I'm playing with those now. :)

NHL95_34TM_15f_000.png

  • Like 4

Share this post


Link to post
Share on other sites
kingraph    136
20 hours ago, kingraph said:

Things I need to continue to work on, expected level of difficulty:

* Teams 29-34 won't work with line changes (MED/HIGH)

 

DONE! 

Change @08A5EA from 001B to 0021

Change @96448 from 001C to 0022

Both numbers relate to a function the game is using related to number of teams that loads the SRAM byte by byte.  The first (8A5EA) puts the number 1B into data register D0, and then there is a function used DBFa, which in the simplest terms compares that value to another and if it's false, subtracts 1 from the number and repeats a part of the program (loading the table), or if it goes below zero then the game moves onto something else.  To put it another way, it's like a counter...do THIS function 1B (27, but including zero makes it 28) times.  After that, go do something else.  So changing 1B to 21 says, do THIS function 33 (plus zero is 34) times.

The other offset @96448 has a comparison that says, if it's lower than 1C (28), branch (go do another thing).  It was related to teams again.  So changing to 22 (34) made sure all teams continued to be loaded.

Good news is now the SRAM tables are loaded themselves AND the line changes work for all 34 teams!

  • Like 2
  • Thanks 1

Share this post


Link to post
Share on other sites
kingraph    136

Interesting find on the 2nd splash (High Score Productions).  The splash screen is actually two images, one a 13 x 13 image and another is a 9 x 8 image that load in the center of the page.  The black surrounding everything is just the background color, not an actual repeated graphic tile.  So, if you simply want to replace this image with another, your new image will load in the middle of the page. I figured there must be an xy coordinate offset similar to what @wboy found in his scoreboard timer notes. 

So I mapped it out and found the corresponding values through a RAM search/trace!  In my picture below, you can see that the xy of the first image is E3, while the 2nd image loads 10-10.  The entire screen is 40 x 28.

2nd splash example.png

Once I found those values, it was a little bit easier to narrow down my search.  Here are the offsets that need to be changed:

A173C

Value is BE 0E 03 00 (0E and 03)

A176A

Value is BE 10 10 00 (10 and 10)

That will move both images by the x and y value, so setting to zero will bring it to the top left.  I haven't decompressed and added a replacement yet, but I figure I can skip the 2nd image altogether...so maybe you don't have to change anything on the 2nd offset.   OR, use the second image to have an overlay.  Not sure yet. 

Interestingly, wboy took a completely different approach in the '94 30 team ROM.  From what I gathered looking at his work, he seemed to have changed the original image to a 1 tile image, and then overlayed an entirely new 40 x 28 image with a transparent palette, such that the original palette remains in effect and works on the new image.  If that sounds confusing, it's because I'm not entirely sure I understand it either, lol.

In any event, I think the 2nd splash will be easier to update now that I can make a 40x28 image load from the top left. 

 

 

  • Like 1

Share this post


Link to post
Share on other sites
segathon    50
On 9/15/2017 at 3:54 PM, kingraph said:

Interesting note on the title screen.  The screen is 32 x 28 tiles, which means a fully decompressed image would be 896 tiles.  However, the game has 1,013 tiles stored in the image!  I've confirmed that over 120+ tiles are not used in the title image, which means decompressing the image actually saves a ton of room on the ROM!  The extra tiles look to be the NHL Shield and NHLPA logo.  My guess is originally they wanted the shield and NHLPA logo to "fly in" as an overlay like it does in '94, but due to whatever reason (graphic constraints?), they just stuck directly on the picture.  Anyway, graphic edits are more fun, so I'm playing with those now. :)

NHL95_34TM_15f_000.png

is this a shot from NHL 95?

Share this post


Link to post
Share on other sites
kingraph    136
3 minutes ago, segathon said:

is this a shot from NHL 95?

Yes sir!  Updated the title screen and fly in nhl'95 logo.

  • Like 1

Share this post


Link to post
Share on other sites
CoachMac    98

Seems as if you are getting close, :big_smile:

Any idea on when you might be able to release?

Share this post


Link to post
Share on other sites
kingraph    136
9 minutes ago, CoachMac said:

Seems as if you are getting close, :big_smile:

Any idea on when you might be able to release?

I have no idea, but realistically I can get out a "beta" for people to play pretty soon.  I have a 5-6 hour plane to Vegas coming up soon :D so that seems like a good time for me to blast through graphic updates.  

  • Like 3
  • Thanks 1

Share this post


Link to post
Share on other sites
mack    5

This is amazing. Keep up the great work guys.

  • Thanks 1

Share this post


Link to post
Share on other sites
kingraph    136

Graphic updates moving along.  Thanks to @naples39, I lifted a ton of team graphics from his beta'18 '94 ROM with permission.  I got the 1st splash, 2nd splash, title screen, title logo, John Schrader (change to Doc Emrick), "1995" (change to '18) on the Stanley Cup Champions page, team logos, ice logos, scoreboard banners, and in-game banners all ready to go.  I am not going to do the timer logo as 1 extra tile messes up the logo.  I will add the player data, and try to figure out some other known bugs before posting, but either way should get out a playable copy sometime tomorrow night.  In the meantime, enjoy these teaser photos, lol.

 

NHL95_34TM_19_000.png

NHL95_34TM_19_001.png

NHL95_34TM_19_002.png

  • Like 3
  • Thanks 1

Share this post


Link to post
Share on other sites
CoachMac    98
5 minutes ago, kingraph said:

Graphic updates moving along.  Thanks to @naples39, I lifted a ton of graphics from his beta'18 '94 ROM with permission.  I got the 1st splash, 2nd splash, title screen, title logo, John Schrader (change to Doc Emrick), "1995" (change to '18) on the Stanley Cup Champions page, team logos, ice logos, scoreboard banners, and in-game banners all ready to go.  I am not going to do the timer logo as 1 extra tile messes up the logo.  I will add the player data, and try to figure out some other known bugs before posting, but either way should get out a playable copy sometime tomorrow night.  In the meantime, enjoy these teaser photos, lol.

 

NHL95_34TM_19_000.png

NHL95_34TM_19_001.pngNHL95_34TM_19_002.png

Amazing!

Photo of Emrick is awesome.

Looks great!

Only complaint is it should be Vegas vs Colorado in teaser in honor of Next Thursday.

Very excited to play and see this.

In Naples rom team 31 and 32 are not editable in NOSE.

I assume this will be the same and are their any plans to fix this?

Share this post


Link to post
Share on other sites
kingraph    136
16 minutes ago, CoachMac said:

Amazing!

Photo of Emrick is awesome.

Looks great!

Only complaint is it should be Vegas vs Colorado in teaser in honor of Next Thursday.

Very excited to play and see this.

In Naples rom team 31 and 32 are not editable in NOSE.

I assume this will be the same and are their any plans to fix this?

Yes, you have to add some text to the roms.ini file in your NOSE folder.  I couldn't get Naples ROM to work, but I will post the ini addition for '95, it works just fine in NOSE. :)

  • Like 1

Share this post


Link to post
Share on other sites
Blake    10

Yay!

Share this post


Link to post
Share on other sites
segathon    50

Mother-of_God.gif

  • Haha 1

Share this post


Link to post
Share on other sites
smozoma    100

Awesome

I wish there was time at the tourneys to showcase all the cool stuff guys have done with ROMs

  • Like 1

Share this post


Link to post
Share on other sites
CoachMac    98
45 minutes ago, smozoma said:

Awesome

I wish there was time at the tourneys to showcase all the cool stuff guys have done with ROMs

Lets do it.

I will have my everdrive and Old Time Roms

  • Like 1

Share this post


Link to post
Share on other sites
smozoma    100
12 minutes ago, CoachMac said:

Lets do it.

I will have my everdrive and Old Time Roms

Check with Halifax about the possibility? There could be an equipment issue, limited number of consoles or tvs.

Share this post


Link to post
Share on other sites
CoachMac    98
32 minutes ago, smozoma said:

Check with Halifax about the possibility? There could be an equipment issue, limited number of consoles or tvs.

I plan to bring a console, everdrive, controllers.

Maybe a CRT TV.

Share this post


Link to post
Share on other sites
kingraph    136
16 minutes ago, Engelby77 said:

Is today the day king ? Feeeeeening hahah

Yes, I'll post whatever I have when I get home later tonight!  

  • Thanks 3

Share this post


Link to post
Share on other sites
kingraph    136

Alrighty, here is my current working ROM.  I have not done a lot of testing with the ROM, so please feel free to report any bugs that you may notice while playing. This seems to have 34 working teams in the regular season format. 

KNOWN BUGS / WORK IN PROGRESS ITEMS:

* Playoff Teams can't select past team 26 (Tampa Bay).  I'm working on this now and hope to find this fix soon. 

* The playoff bracket page graphics are messed up.  This is a result of expanding the team banners and the game running out of graphic memory.  My plan is to change that spinning Stanley Cup to a static one, or smaller version.  The spinning cup takes a boatload of graphic data and early tests show changing that graphic will fix that screen.  I am not as familiar with the code to make graphics move, so this could be a while to figure out.

* Graphic updates are not bugs -- so teams 32-34, player card photos, etc. are to be done at a future date.  All teams, player data were copied from Naples39 beta ROM.

* No testing on the season or trading has been done.  I highly doubt teams 27+ will be available or incorporated into the season mode.

* No music updates have been done.  As such, I don't believe there is any music for teams 29+.

I guess that's it.  For now this seems to be a stable build with the noted exceptions above.  Enjoy, and appreciate any feedback.

NHL95_34TM_beta_01.bin

EDIT:  If you want NOSE to read this ROM properly, copy this text on the bottom of the roms.ini file and save:

[GM T-50856 -34]
Comments=NHL 95 - 30 Team ROM
OriginalROMProductCode=GM T-50856 -00
Teams=34

  • Like 2

Share this post


Link to post
Share on other sites
CoachMac    98
2 hours ago, kingraph said:

Alrighty, here is my current working ROM.  I have not done a lot of testing with the ROM, so please feel free to report any bugs that you may notice while playing. This seems to have 34 working teams in the regular season format. 

KNOWN BUGS / WORK IN PROGRESS ITEMS:

* Playoff Teams can't select past team 26 (Tampa Bay).  I'm working on this now and hope to find this fix soon. 

* The playoff bracket page graphics are messed up.  This is a result of expanding the team banners and the game running out of graphic memory.  My plan is to change that spinning Stanley Cup to a static one, or smaller version.  The spinning cup takes a boatload of graphic data and early tests show changing that graphic will fix that screen.  I am not as familiar with the code to make graphics move, so this could be a while to figure out.

* Graphic updates are not bugs -- so teams 32-34, player card photos, etc. are to be done at a future date.  All teams, player data were copied from Naples39 beta ROM.

* No testing on the season or trading has been done.  I highly doubt teams 27+ will be available or incorporated into the season mode.

* No music updates have been done.  As such, I don't believe there is any music for teams 29+.

I guess that's it.  For now this seems to be a stable build with the noted exceptions above.  Enjoy, and appreciate any feedback.

NHL95_34TM_beta_01.bin

EDIT:  If you want NOSE to read this ROM properly, copy this text on the bottom of the roms.ini file and save:

[GM T-50856 -34]
Comments=NHL 95 - 30 Team ROM
OriginalROMProductCode=GM T-50856 -00
Teams=34

Nice Job.

Played around with season mode.
Simmed a season and then played some playoff games, went thru to the Cup and the awards show.
Cool features.
Team Calendars are inaccurate and don't show correct games.
Conferences and Divisions are obviously messed up as teams show based on the slot they are in.

I don't care about teams 27+ in season mode (though I know many do)
I wonder if we could just limit teams and adjust schedule.

Loved the graphics/logos/your player cards etc...

Really think this will be great.

As usual strong work here KingRaph.

Edited by CoachMac
  • Thanks 1

Share this post


Link to post
Share on other sites
kingraph    136
34 minutes ago, CoachMac said:

 


Team Calendars are inaccurate and don't show correct games.
Conferences and Divisions are obviously messed up as teams show based on the slot they are in.

I don't care about teams 27+ in season mode (though I know many do)
I wonder if we could just limit teams and adjust schedule.

 

I think once, or IF, I figure out how the game generates the season, there should be a way to adjust the teams/games up or down.  Same with divisions, my guess is it will be a mapping of team #'s. 

Thanks for the quick sim/test!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now