NHL94.com It's In the GA! – Pt. 2 Smozoma

If you missed them check out Part 1 and Part 3

NHL94.com Interview Series – ROM Editor Smozoma

For part 2 of my interview series on the biggest community for one of my all-time favorite games NHL ‘94 and NHL94.com I talked to one of the top modder/hackers Smozoma. He has fixed things both major and minor, with one of the biggest being the weight bug that we will talk more about below. He is also one of the top league organizers hosting the hugely popular Blitz league, a league where coaches participate in a fantasy draft of the players from NHL ’94 and play each other online save the games and post the save online to extract the stats. He is the website host for the US-Canada 2on2 Summit Series each year, created a comprehensive stats extracting tool, and even made it so we can play as our own customized player in the Summit Series and added more selectable players into the list. He is also a successful player having recently won a Classic League title. Read the full interview after the jump.

One-Quest: How did you find NHL94.com?

Smozoma: I checked out the game on Wikipedia, and there was a link to nhl94.com at the bottom of the page. But, why did check it out in the first place, and why did I stay around nhl94(online).com and get involved on the forums? Like most people on the site, I played NHL 94 a lot as kid. Had a couple epic Stanley Cup runs with line changes and 20-minute periods. I didn’t play it against other people much, though. In my last year of university (2004-05), I lived in residence, in a 4-person suite. Over time we ended up with a TV, Super Nintendo, and my Sega Genesis in the suite. A couple friends and I really got into NHL 94 on the Sega. I also had brought in NHL 95 for the SNES, but we didn’t like it, so always played NHL 94. NHL 94 seemed to keep the games closer between players of different skill levels (I could score at will in NHL 95). After graduating, I still played the game with those same friends. Around Christmas 2005, I looked up the game on Wikipedia, and that is where I found the link to nhl94.com. I checked out the forums, and someone named dmitry posted saying they were starting a league with statistics. I joined the league, which actually had its own forum on a Tecmo Bowl site. Some of the guys from the current community were also there: hokkee, vocally caged (who I had a great divisional rivalry with), habs, and some others (surely carse and bo, but I can’t remember them in the league). The league was really fun, but had a lot of disappearing coach problems, and I don’t think the playoffs were ever finished. I guess I must have joined the nhl94.com forums when dmitry’s league finished. The fun I had in dmitry’s league is the only reason I’m here still playing NHL 94 today. He is the one who discovered how to extract the statistics from the games automatically and turn them into a website, eventually creating the GDL league, and inspiring me to make my own statistics system, which turned into the Blitz 94 league. Without dmitry’s stats system, I would not have been interested in playing the game online. And, of course, I should thank Evan for making the site and paying the bills! Guys like Halifax and Chaos keep things running smoothly, too.

One-Quest: How did you know there was a weight bug and then go about isolating and fixing it?

Smozoma: The weight bug is a bug in the original game that makes it so light players are better checkers than heavy players, instead of the reverse. When I was in dmitry’s league, I didn’t know about the weight bug. I couldn’t figure out why my team couldn’t check. I was Anaheim, which was a pretty big, rough team at the time, but my checks would always just bounce off guys. Luckily I had one of the best goalies in the ROM to steal wins for me. I probably found out about the weight bug from a post on the NHL94.com forums after that league ended. My first attempt at fixing the weight bug didn’t work. I downloaded the source code for an emulator and reprogrammed some of it to print out the code to a text file as it was executing. However, it slowed down so much when printing, that I made it only print out every 10th line of code. Then, I made a few code logs from different scenarios using a 1-on-1 ROM: the players skated but didn’t throw any checks; a player checked, but bounced off; and a player checked, and knocked the guy over. The idea was that I could see what code was common to the last 2 scenarios (failed check, successful check), but that the first (no check) didn’t have, to find the code involved in checking. Unfortunately, because I was only printing out every 10th line of code, I didn’t find anything. Eventually, Tony H posted a hacking tutorial on the forums in May 2007. At that time, I posted, “Sweet! Next stop for me.. fixing the checking/weight bug!” And then I promptly ignored his thread for about a year. In that time, I made a ROM where the weights of the players were reversed. The problem with that, though, was that heavy players accelerate slower than light players, so suddenly Eric Lindros was the zippiest player on the ice. I started up the Blitz 94 League based on this ROM and even held the draft, but the acceleration issue really bothered me. Eventually I read Tony H’s tutorial, and that enabled me to actually track down and fix the weight bug. One thing that really helped is that, at university, I actually took a course that had me write some code for a 68000-based CPU – the same type of CPU used in the Sega Genesis! To find the code that was causing the bug required me to use the RAM hook and code trace tools in the emulators to track down where the game was accessing the weights of the players, and where the game was incrementing the successful check counts. In between there had to be the code for deciding if a check was successful. There was a bit more to it than that, but that’s the basic idea. In the end, the bug was caused by a very simple mistake. The coders meant to subtract the weight of the checked player from the weight of the checking player, but accidentally got it backwards, and subtracted them the other way. I decided to do more than just reverse the subtraction, though. I rewrote part of the checking equation to take into account the actual checking rating of the players, so if they have a high checking rating, they can check above their weight. I also changed the Player Stats screen to display the number of checks each player made (and had to add some code to only count checks that happened before the whistle, so you couldn’t rack up checking stats after a goal).

One-Quest: Is there any other bug or bugs you know of that you have not been able to fix yet?

Smozoma: One bug I could probably fix is the one where a successful one-timer pass is not counted as a successful pass, bringing down your passing percentage. This hack would be somewhat similar to the weight bug fix, but it’s not that interesting to me (you can just add the one-timer count to the successful pass count, as I do in the Blitz 94 website stats). I’ve picked off a few other bugs over time, such as the second assist bug and the incorrect player ratings in Edit Lines, but I’ve been more interested in adding new features or improving parts of the game. I improved the 3 Stars formula, added a +/- statistic, and changed the player rating scheme from 0-6 to 0-15. Another “bug” I’m tempted to fix is the “B check.” Pressing the B button without the puck does a poke-check, and you can trip any player with a well placed poke-check (although, to me, it looks an awful lot like punching the guy in the nuts).

One-Quest: Do you have a particular favorite league to play in?

Smozoma: Well, I run the Blitz 94 League, and it’s my favourite to play in. I think I am done playing in leagues, except Blitz, though. Not that they aren’t fun, but I already spend enough time on my own league and want to work on other projects. Actually, I may not even play in Blitz anymore. I may retire from playing. Oh, I’ll play in the 2on2 Summit League, though. Great league. I may have a special hack up my sleeve for the next season, too…

One-Quest: What is your favorite team to use?

Smozoma: I’m a big Leafs fan, and I like using the Leafs in this game, too, even though they aren’t very good beyond Gilmour and Potvin. They just have so much 16-bit heart and guts and other internal organs on that team. With the weight bug fix, Pittsburgh is fun to play with. They’re just so unbelievably dominant.

One-Quest: What skills, if any, have you gained since starting to play online?

Smozoma: I pretty much never used to use goalie control, other than to prevent icing. Good goalie control is really important to being a good player online, because if you can make 2 saves that the AI goalie would have let in, that can turn a loss into a win. I used to feel that the “B check” was cheating, since it was basically tripping (or sacking), but you have to use it now in order to compete at a high level. I’m getting pretty good at the pass-shot when I’m on a breakaway, picking one of the corners. However, I’m nowhere near as good with it as other guys who can score on diagonal pass-shots. I think it was cr0ssbar back in the day who could pick the far top corner from the faceoff circle. Actually, I don’t see anyone use that shot these days, come to think of it!

One-Quest: How impressed are you of the skill of the players/modders in the community?

Smozoma: The skill level of some players is amazing. I recently watched the first two games of the Blitz season 6 “A” league finals, and I think they were the best 2 games I’ve ever seen, skill-wise. There are some great manual goalie saves. The thing that sets a great player apart from a good player, is that they can work 2 angles at once. You’ll see good coaches (as we call the human players, to avoid confusion with the players on the ice) use a defender to pressure an attacker on one side, and then switch to the goalie to block the other side of the net. Players like AngryJay93 are amazing at “forking” you – this is getting into a position where there is nothing you can do to stop him, because if you try to block the attacking player, he will pass it to a guy for a guaranteed one-timer goal, and if you block the passing lane, he will have a guaranteed goal on the AI goalie. This is where working 2 angles defensively comes in, you need to be able to use your defender to block the pass, AND take control of the goalie to block the shot or deke, or do the reverse (block the shooter, and use the goalie to block the one-timer). I honestly don’t really keep up with the modders, although I answer any hacking questions I can. It’s very rare for me to download a customized ROM and play it. Lots of people are producing ROMs with current rosters, but I never try them out. So, I’m sorry, I can’t really comment much on the current modders and hackers! wboy was king of the hackers. He created the 30-team NHL94 ROM, and uncompressed the graphics. He also made the NOSE editor that everyone uses. It’s a shame he no longer hacks the game or develops NOSE further. My EARE editor picks up some of the slack, allowing people to apply a few hacks left out of NOSE, but the level of effort put into NOSE amazes me. And that’s just the programming effort – the effort that went into finding all the hacks is even more impressive. He’s the giant whose shoulders all the current modders and hackers are standing upon. That guy is really, really talented, and is probably make oodles of money as a software developer wherever he is now.

One-Quest: What is your favorite accomplishment in NHL ’94?

Smozoma: In terms of fun for other people, creating a statistics database, and making and running the Blitz 94 league.

In terms of improving the game, the weight bug fix. The +/- stat could be very cool if anyone ever made a stats league with line changes. In terms of playing the game, winning the Fall 2011 Classic league “B” championship with Toronto.

One-Quest: What’s one tip you have for any new players out there?

Smozoma: I’m not a particularly good player and never practice, so there isn’t really any advice I can give to anyone who wants to be good. My skill level is mainly just from having played online longer than most people, plus having a natural knack on defense for getting in the way of attackers. Don’t let the game distract you from more important things in life

One-Quest: What are some of your favorite games outside of NHL ’94?

Smozoma: A couple of my favourite console games to play with friends were Rock and Roll Racing (SNES, 1993) and River City Ransom (NES, 1989). I finally beat those games in 2003! A couple PC games I spent a lot of time on, single player, were Warcraft II (1995) (zug zug!) and Civilization IV (1998). Duke Nukem 3D (PC, 1996) versus mode was so much fun. Half-Life 2 is my favourite single-player first-person-shooter. Homeworld (1999) is an amazing game (an RTS in 3D space), and its expansion/sequel game, Homeworld: Cataclysm (2000) was even better. I actually played these in the months before finding nhl94.com. Portal (part of the “The Orange Box” Half-Life bundle, 2007) is a must-play. If you haven’t played it, play it! That reminds me, I still need to take the time to finish the Portal 2 (2011) single-player (already beat the co-op mode). These days, I’m playing Medieval 2: Total War (2006) and Skyrim (2011). And Portal 2, now that I remember it.

One-Quest: And lastly, what do you see or would you like to see happen in the future for NHL94.com?

Smozoma: Things I would like to see are… Full statistics for all leagues, especially Classic. The league system on nhl94online.com set up by chaos is great, but stats uploading would make it amazing. A 30-team SNES NHL 94 with decompressed graphics. A wiki. And the pipe-dream of re-written network code for the Gens emulator so it doesn’t desynch all the time and has the ability to load a game from a save like ZSNES.