Mutant League Hockey - ROM Hack Project


Recommended Posts

MUTANT LEAGUE HOCKEY FANS - I started to tinker around with hacking this game again and figured I would share my findings as I made some significant progress.  Ultimately the goal is to create a ROM that can be modded for future updates.  I don't think I will expand the teams, but that may be something to consider for the future.  

This game is 2MB with no real extra room in the ROM.  It uses up a ton of space on graphics data with all the animations, as well as text (there's a lot of descriptions, talking, etc).  In theory I can expand to 4MB, but I know it gets tricky with the RAM space.  TBD if that's even necessary.  

Please let me know if you are interested in helping, investigating or suggesting things to unlock.

Items to investigate:

  • Remove checksum
    • Offset 0690:  4EB9 001F FD60 change to 4E71 4E71 4E71
  • Data
    • Player Structure/Location - Done
    • Player Ratings - Done
    • Team Structure/Location - Done
    • Stadium/Rinks - Location found, haven't looked into structure
    • Coach Info - Done, it's just the name offset.
    • Period Length
    • Special Plays
  • Graphics
    • Team Logos (location, palette, possible decompress) - Done (will post later)
    • Team palette - Done (will post later)
    • Scoreboard
    • Start Menu
    • MLH Logo
    • Referee
    • Coaches
    • Fighting Players
    • Away Team colors
    • Other?
  • Framerate Issue
  • Puns! - posted here
  • Like 4
  • Wow 1
Link to comment
Share on other sites

9 minutes ago, segathon said:

Can the frame rate be tweaked at all?  

I'm not exactly sure how that works or what causes the jumpiness of the game.  My guess is all the sprite animations are overloading.  So actually maybe?  If we reduce some animations, it may help?  I'll add it to the list to investigate, thanks!

Link to comment
Share on other sites

That would be great,

 I know the big brains over at Tecmo made a ROM that doesn't flicker on NES emulator.   Not sure how they accomplished that as the forum is gone now.

I love both Mutant League games, but the hockey frame rate has not aged well.

Also make sure not to offend @clockwise because Coach Wimpson was based on him..... 

648.gif

 

  • Haha 1
Link to comment
Share on other sites

this sounds interesting, I wonder if it would be possible to set up cpu/demo games like in the nhl 94 or uniform colors can be modified in the game, i am not much ofa fan with every away team wearing only the grey and red colors every time in the game.

Edited by bushhockeyfan
  • Like 1
Link to comment
Share on other sites

15 minutes ago, bushhockeyfan said:

uniform colors can be modified in the game, i am not much ofa fan with every away team wearing only the grey and red colors every time in the game.

I'm pretty sure I can swap the palette of the away team, but there may be some other reasons it's locked to red/grey.  Likely the scoreboard or Mutant League logo is also linked to that same red/grey palette.  I'll add it to the list.  

  • Like 1
Link to comment
Share on other sites

On 1/14/2021 at 7:23 PM, kingraph said:

I'm pretty sure I can swap the palette of the away team, but there may be some other reasons it's locked to red/grey.  Likely the scoreboard or Mutant League logo is also linked to that same red/grey palette.  I'll add it to the list.  

i believe the unreleased amiga version of mutant league hockey game, didn't have a problem giving the away team their correct team colors rather then the red and grey colors like the sega version i think it could be possible. If we are able to get the the game not only modded but also able to work on the modding programs used for the sega nhl games. then it opens to possibilities of how many things can be modded to MLH similar to the nes kunio-kun hockey modding. Until then, lets see where this code breaking lead this project.

Edited by bushhockeyfan
Link to comment
Share on other sites

22 minutes ago, bushhockeyfan said:

If we are able to get the the game not only modded but also able to work on the modding programs used for the sega nhl games. then it opens to possibilities of how many things can be modded to MLH similar to the nes kunio-kun hockey modding. Until then, lets see where this code breaking lead this project.

This would be really cool if it can be done. I figured I could change the art assets around, but not a lot else.
But to have some way to change team names, rosters, colours and what type of monster each player is, would really make it interesting.

Although part of me wants to redo the player sprites as just regular goons in kind of a Hit the Ice style.

  • Love 1
Link to comment
Share on other sites

Team Data

There are 23 teams in MLH.  There are two sections in the team data structure that I'm not sure what they do right now.

Each team is 158 bytes, broken out as follows.  It starts with the Black Hearts:

Offset - 

  • 18D8A - Pointer: Team Name 1 Offset (4 bytes).
    • This value is 0004CF04, which is the offset to the text "Black"
  • 18D8E - Pointer: Team Name 2 Offset (4 bytes)
    • This value is 0004CF0A, which is the offset to the text "Hearts".  Every team has 2 text values for their names.
  • 18D92  - TBD.  I'm not sure what these 4 bytes represent right now.  Could be special plays, advantages, etc.  TBD
  • 18D96 - Pointer: Coach Data Offset (4 bytes)
    • This value is 0001B668, which is the offset location to coach data.  The coach data contains the name offset, speech text, etc.  This offset is for Coach Sputter
  • 18D9A - Pointer: Stadium Data Offset (4 bytes)
    • Same concept as Coach Data.  I'm not sure what other data the Stadium contains outside of the name right now.  Skatium
  • 18D9E  - TBD.  I'm not sure what these 4 bytes represent right now. 
  • 18DA2  - 24 Roster Pointers (96 bytes).
    • Each 4 bytes is a roster offset to the player data.  Follows the C,LW,RW,LD,RD,G pattern for 3 lines and reserves.  
  • 18E02 - Pointer: Team Logo Offset (4 bytes)
  • 18E06 - Team Logo Palette Offset (4 bytes)
  • 18E0A - Team Palette, 11 colors (22 bytes)
  • 18E20 - Pointer: Team Description Text (4 bytes)
    • "These are the well-named Black Hearts..."
  • 18E24 - Pointer: Coach Text (4 bytes)
    • "I'm coach Sputter..."

And this follows for the next 22 teams.

  • 18D8A - Black Hearts
  • 18E28 - Bruiser Bots
  • 18EC6 - Chilly Liars
  • 18F64 - Deathskin Razors
  • 19002 - The Derangers
  • 190A0 - Mighty Weenies
  • 1913E - Motroyale Cadavers
  • 191DC - Mutant Monsters
  • 1927A - St. Mucus Ooze
  • 19318 - War Slammers
  • 193B6 - Darkstar Dragons
  • 19454 - Dead Things
  • 194F2 - Ice Slashers
  • 19590 - Lizard Kings
  • 1962E - Pucksucker Pukes
  • 196CC - Screaming Evils
  • 1976A - The Shrimps
  • 19808 - Slaycity Slayers
  • 198A6 - Terminator Trolz
  • 19944 - Turbo Techies
  • 199E2 - Toxic All-Pros
  • 19A80 - Maniac All-Stars
  • 19B1E - Galaxy Aces
     
  • Wow 1
Link to comment
Share on other sites

Player Data / Ratings

Immediately following the Team Data is the Player Data.

Each player has 14 bytes, except 2 players on each team that are "Enforcers".  Those players have 16 bytes.  There are 482 players listed.  It's the 24 players on the 20 non-All-Star teams (total 480), plus Buggy Skull and Maim Zitzky are listed twice.  The duplicate entries are the same except the jersey numbers for when they have duplicates on the all-stars.  Buggy is #8 on the Toxic All-Pros and Zitzky is 89 on the Maniac All-Stars.

I'll post the complete rosters and ratings separately as a Google Sheet in the future

Here's the breakdown of 14/16 bytes:

 

  • Offset to Player Name Text - 4 bytes
  • Jersey Number (hex) - 1 byte
  • TBD Next 2 bytes all value either 0001, 0002, 0003, 0004, 0005, 0006.
  • The next 7 bytes are the ratings/info:
    • ? (not sure...value is either 0 or 1, I'm guessing L/R?)
    • Monster Type
      • 1 = Skeleton
      • 2 = Robot
      • 3 = Troll
      • 4 = Goalie
    • Stamina
    • ? (goes from 2 - A)
    • Fighting/Wounding (if goalie)
    • Skating
    • Passing
    • Speed
    • Offense
    • Defense
    • Power/Block Left (if goalie)
    • Accuracy/Block Right (if goalie)
    • Enforcer Flag (1 = Enforcer)
    • Checking/Consistency (if goalie)
    • The following 2 bytes only exist for the Enforcers:
      • Aggression
      • ? (values 0, 1,2,4)
      • Instinct
      • ? (values 5-A)

 

So at this point I'm not sure what a few of these values represent.  The displayed stats are all identified above.  

 

  • Thanks 1
Link to comment
Share on other sites

Continuing on, following the players is the Coach offsets.  These are the pointers to the 20 coach's names.  Each is 4 bytes, there's no other data other than the name offset:

0001B668 - Coach Sputter
0001B66C - Doc Whizz
0001B670 - Coach Wimpson
0001B674 - Coach Trickster
0001B678 - Coach Spleenin
0001B67C - Coach McWhimple
0001B680 - Coach Le Jocque
0001B684 - Coach Bricka
0001B688 - Coach Scary
0001B68C - The Admiral
0001B690 - Coach Le Bludbathe
0001B694 - Coach Bowbot
0001B698 - Coach Thunder
0001B69C - Coach Smellnose
0001B6A0 - Coach Ralph
0001B6A4 - Buddy Riot
0001B6A8 - Coach Scampi
0001B6AC - Buck Troll
0001B6B0 - Dante N. Ferno
0001B6B4 - Coach Cyclone
 

Link to comment
Share on other sites

Stadium Data

Here are the offset locations for the stadium data (23 stadiums):

0001B6B8 - Skatium
0001B6D0 - Freeze Land
0001B6E8 - The Tomb
0001B700 - Cavern Palace
0001B718 - Madness Sq. Garden
0001B748 - Weenieworld Center
0001B754 - The Ice Room
0001B76C - The Graveyard
0001B784 - St. Mucus Arena
0001B79C - Rink War Arena
0001B7C0 - Fog Dome
0001B7D8 - The Crypt
0001B7F0 - Ice Asylum
0001B808 - The Mausoleum
0001B820 - Puke Palace
0001B838 - Tripout Rink
0001B850 - Prig Palace
0001B868 - K.T. Coliseum
0001B880 - The Skunk Centre
0001B898 - Buckle Dome
0001B8B0 - The Pole
0001B8C8 - Frozen Palace
0001B8E0 - Puck Dome
 

The first 2 bytes for each is the offset to the Stadium Name.  After that most stadiums have 20 bytes afterwards with the exception of 3 -- Madness Sq. Garden has 44 bytes, Weenieworld only has 8, and Rink War Arena seems to have 32.  I have not looked into what those are yet. 

Link to comment
Share on other sites

7 minutes ago, bushhockeyfan said:

Wow, what a rundown of codes, I am impressed what you dug up so far @kingraphkeep up the good work  and i can agree with you @von Ozbourme it would look awesome if all that would be possible in a moddable rom of MLH.

All of this is and will be possible.  Names, logos, ratings, text, etc. are already solved.  I'll post more and eventually post a ROM with easy to edit graphics.  Just need to test a few things out more to make sure I understand the relationships between the graphics/palettes

  • Like 1
Link to comment
Share on other sites

Team Logos

The team logos are 6x4 (like the center ice logos in 94), with the one exception being the Bruiser Bots, which in the default ROM is 6x5. 

There are 7 unique colors on the palette that are used for the logo. These are the first 7 colors on the team palette offset in the team data, and end up being colors 3-9 on the full palette.  Colors 1 (transparent) 2 and 10-16 are not changeable and is probably used for the menu screen bricks, torches, MLH logo,etc (TBD, haven't looked there yet).  As far as I can tell for now, these 7 colors are only for the logo, it doesn't look to be shared with the sprites.

The logos can be seen in TM when you put in a 1x4 block.  For some reason the first 4 columns of each logo are first and then the other 2 columns are in another spot.  The good news is they are pretty easy to see, to rearrange them to be 6x4 in one section is pretty easy.  The logo data in the team data is laid out as follows.  The 0F is 16 in hex and is the first 16 tiles, followed by the tile # they start with.  The 07 is the other 8 tiles, followed by the start of the tile number, to put together the 24 tiles.  Again, you'll see the Bruiser Bots have a "0B" in their second logo piece, which for whatever reason makes their logo 6x5.  

 

00024886 - Galaxy Aces - 0002 0000 0F00 64AA 2000 0700 6626
00024894 - Toxic All-Pros - 0002 0000 0F00 64BA 2000 0700 662E
000248A2 - Maniac All-Stars - 0002 0000 0F00 64CA 2000 0700 6636
000248B0 - Motroyale Cadavers - 0002 0000 0F00 64DA 2000 0700 663E
000248BE - Bruiser Bots - 0002 0000 0F00 64EA 2000 0B00 661A
000248CC - Darkstar Dragons - 0002 0000 0F00 64FA 2000 0700 6646
000248DA - Dead Things - 0002 0000 0F00 650A 2000 0700 664E
000248E8 - The Derangers - 0002 0000 0F00 651A 2000 0700 6656
000248F6 - Black Hearts - 0002 0000 0F00 652A 2000 0700 665E
00024904 - Lizard Kings - 0002 0000 0F00 653A 2000 0700 6666
00024912 - Mutant Monsters - 0002 0000 0F00 654A 2000 0700 666E
00024920 - St. Mucus Ooze - 0002 0000 0F00 655A 2000 0700 6676
0002492E - Ice Slashers - 0002 0000 0F00 656A 2000 0700 667E
0002493C - Pucksucker Pukes - 0002 0000 0F00 657A 2000 0700 6686
0002494A - Deathskin Razors - 0002 0000 0F00 658A 2000 0700 668E
00024958 - The Shrimps - 0002 0000 0F00 659A 2000 0700 6696
00024966 - Screaming Evils - 0002 0000 0F00 65AA 2000 0700 669E
00024974 - War Slammers - 0002 0000 0F00 65BA 2000 0700 66A6
00024982 - Slaycity Slayers - 0002 0000 0F00 65CA 2000 0700 66AE
00024990 - Turbo Techies - 0002 0000 0F00 65DA 2000 0700 66B6
0002499E - Terminator Trolz - 0002 0000 0F00 65EA 2000 0700 66BE
000249AC - Chilly Liars - 0002 0000 0F00 65FA 2000 0700 66C6
000249BA - Mighty Weenies - 0002 0000 0F00 660A 2000 0700 66CE

You can accomplish this in different ways, but what I did was make all 24 tiles in order for the Blackhearts and updated these tile references.  Worked perfectly, so it's just a matter of doing them for all the teams.  The logos start in TM C9540:

 

MLH Logos.png

The tricky part will be to make the palettes easy to update in TM for hackable ROM because each team has 7 unique colors and the other 12 are shared.  So they aren't all in one 16 color block for TM.  I have some ideas on how to do this, but need to test it out.  

In general, once you set the 1x4 block size, you'll see all the sprites and graphics much more clearly in TM.  

  • Wow 1
Link to comment
Share on other sites

its interesting that the logos on the pucks are different colors in the menu and easy to tell while here seem to use some of sort of corresponding coloring for every logo, perhaps the colors are coded in for each layer? i hope this does not disrupt the idea of custom logos.

Edited by bushhockeyfan
Link to comment
Share on other sites

50 minutes ago, bushhockeyfan said:

its interesting that the logos on the pucks are different colors in the menu and easy to tell while here seem to use some of sort of corresponding coloring for every logo, perhaps the colors are coded in for each layer? i hope this does not disrupt the idea of custom logos.

No, each logo has a separate palette that you have to load in order to see it properly.  The colors I had loaded for that particular image was for the Black Hearts only.  

  • Wow 1
Link to comment
Share on other sites

5 hours ago, kingraph said:

No, each logo has a separate palette that you have to load in order to see it properly.  The colors I had loaded for that particular image was for the Black Hearts only.  

Oh thanks for clearing that up for me. As you were.

Link to comment
Share on other sites

I rearranged the tiles for the team logos so it's much easier to see and manipulate in TM.  Now the 23 logos are each 6x4 in order as you can see in the screenshot.  I also remapped the palettes to make it possible to edit in TM easily.  So as of now, it's pretty easy to edit the logos.  

Each team has 7 unique colors they can change (3-9) and the other 8 are shared (2; 10-16), which is the two reds and the black/whites/greys.  Color 1 is transparent.

logos_arranged.PNG

0123 post 03.png

(Some snapshots of the 15 colors all working properly from TM to the game, as well as what the puck looks like unedited and the full space of the 6x4 grid)

0123 post 02.png

Direct port of the Anaheim ice logo from the original ROM.  

 

  • Like 1
Link to comment
Share on other sites

  • 2 weeks later...

So looking at the home team colors in the main menu, i kind of see the problem with most of the team player colors in the game, more so then just the away team being the red and grey the whole time. Infact, most of teams seem to have colors that are the same or don't really match up with the colors of their team logos, i don't think mutant league football had this problem. in certain sense it kind of made me think, mlh was rushed and not in a 2010 EA way either. hopefully this hack with fix that, the unreleased amiga copy kind of did.

Edited by bushhockeyfan
Link to comment
Share on other sites

  • 2 months later...
7 hours ago, bushhockeyfan said:

bump for possible progress on this project.

Thanks for the continued interest in this project!  Once I uncovered how to hack the logos, players, player ratings, etc. I sort of lost steam as that would be enough to create a new updated/custom ROM.  However, I can plow through some graphic hacks as those are the easiest (at least for me).  If there's anything in particular you're looking for, I can surely focus on that next as well.  

  • Thanks 1
Link to comment
Share on other sites

  • 4 weeks later...
On 4/15/2021 at 6:28 AM, kingraph said:

Thanks for the continued interest in this project!  Once I uncovered how to hack the logos, players, player ratings, etc. I sort of lost steam as that would be enough to create a new updated/custom ROM.  However, I can plow through some graphic hacks as those are the easiest (at least for me).  If there's anything in particular you're looking for, I can surely focus on that next as well.  

Well i ofcourse talk about how most of the teams player sprites have the similar colors not just the away always being red and white, but how some of the home teams colors have colors that are identical to each other and not don't really correspond with their colors in their team logos. now if we can get this hacked rom to change the colors of the away and home team uniforms, this would make MLH look more like a complete game.

Also i still wonder if its possible to code a demo mode or cpu vs cpu in the selection screen so we can watch both teams battle each other for the puck for a full game.

Edited by bushhockeyfan
Link to comment
Share on other sites

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.

 Share

  • Who's Online   0 Members, 0 Anonymous, 13 Guests (See full list)

    There are no registered users currently online