Jump to content
NHL'94 Forums


  • Posts

  • Joined

  • Last visited

  • Days Won


Everything posted by kingraph

  1. Yes! @UltraMagnusis running a dynasty league that is in it's 5th season and there is a pretty active '95 community! Check out the '95 discord here: https://discord.gg/KYUs8zd3Qn
  2. And here's the Sega Genesis Font in case anyone else comes across this thread: NHL'94.ttf
  3. I also made an SNES '94 font for those interested:NHL94SNES.ttf
  4. Haha, awesome man! We have a live tournament in Toronto coming up Oct 15th! I expect we'll have another in Minnesota sometime around February and maybe NYC area in the later spring/summer. Aside from live in-person events, we play '94 all year round in leagues. Best to join our Discord server for immediate chat/help. https://discord.gg/5aQwEcH3HG
  5. For '96, '97 and '98, the game should pretty much play identical on the emulator and console as the ROMs are unchanged. Not sure what would possibly be causing the CPU to act differently unless something has changed in the code.
  6. This is pretty cool and useful. It was posted before I had my elementary understanding of assembly language (which I learned from Markey Jester's site!). Makes a lot more sense, I like the way the subroutines are identified into pieces. Yes, there is a TON of work to do, but this organization helps a lot.
  7. This was fun to read 5 years later. I could have definitely done a better job explaining as I found it hard to follow some items...and I'm the one who friggin' wrote it! Perhaps @UltraMagnus, you can continue to post updates and other items related to anything you find in season mode and data. I'll also have to re-check my last local notes. You never know who can see this and get inspired!
  8. Definitely give me a PM when you're ready. Not sure if all my notes are typed up here but I'm pretty sure everything that was needed to hack has been done.
  9. Hey! I had found the palettes, team graphics, team and player data structure. So basically if anyone wanted to make an update the information exists now to make it happen. I haven't touched it since then, but if anyone is interested in making new names, teams graphics and such, I'd be happy to collaborate on a '23 MLH!
  10. Just have to redraw the tiles. If you're not sure which ones, the best thing to do is to overwrite the tiles with a 1,2,3,4 and map it out. I usually do something like this:
  11. Yet again, bumping this amazing post!
  12. I recently did this with intro, menu AND organ music from '93. I had the same issue on looping and/or stopping (in the case of organ music) when a goal was scored. Swapping the pure music is easy, but there MUST be some other reference bytes regarding looping/stopping. What I CAN say is that when copying the organ music from '93 (there are only 5 unique instances) into '94, the data for the songs/sounds is back to back. Meaning, immediately after the first organ song, the header of the 2nd song started. And it wasn't just songs, each sound is stored in a giant block. For example, the goal horn is the first sound, followed immediately by "lower ding", "higher ding", etc. until we start getting to longer data sets for organ songs and it finishes with the opening game music/menu/matchups. The data for the sounds/songs is all a large block of data, if that makes sense. So I thought if I copy one organ sound from '93 to replace another, this would be easy. However, I was surprised that the new organ sounds wouldn't "stop" at a goal, OR that the menu music during intermission wouldn't loop (or stop). Even if it's in the same location! Having said all of that, my current theory is that the information containing the start/stop/loop was stored somewhere else, perhaps tied to a particular data size. I haven't spend more time yet on this, but this triggered my memory and wanted to share as this IS a current hack I would like to spend more time working on. I'll post a separate/more cohesive thread on my findings.
  13. Hope this helps. I did this years ago, and I know it holds plenty for the entire Genesis library.
  14. Well, if you are skilled in building a database driven website like nhl94online.com, and wanted to play on an emulator, you could create your own season, take save states and load them into the site. That way it will spit out stats like we do for our leagues. The only issue would be simulating the rest of the games and stats. And just like others have done, I did the pencil/paper stats for NHL'93 when I was younger, as well as Mario Lemieux Hockey.
  15. Nothing that's built into the ROM. Season mode is in '95 and on.
  16. CDL 05 "A" Vegas Odds 1. AngryJay93 (SJS) - 900 8. Scribe99 (LAK) + 900 Season Series (3-1 SJS) @angryjay93, a.k.a CalmGreg, has put together the best regular season record in the CDL A league history in these first 5 seasons, going 35-9 (.795), averaging 5.29 GF/G and a GA/G of 2.81, for a GDIF of 2.48! That also happens to be 2nd all-time best GDIF, only eclipsed by AJ's second season (2.57), in which he went on to win a CDL title. The Sharks forward lineup is nothing fancy - a mix of Ricci | Shanahan | Savard, each ending up with over 100 points this season. If the forwards are a weak spot, I can't really tell! On the backend, the defense is one of the most formidable ever put together with Ray Bourque and Chris Chelios. They are responsible for keeping those shots against to a minimum (#1 rank again) while contributing a fairly decent amount to that offense. If there's a true weak point in the Sharks roster it's Kelly Hrudey. AJ's stifling defense means Hrudey doesn't usually face a lot of shots, which is how he's able to keep Hrudey at a 2.78 GAA and .699 save %. The Sharks first round matchup will be @Scribe99 and his Los Angeles Kings (20-24, .455...with the sweet purple/yellow sweaters!). The Kings are HEAVILY dependent on Teemu Selanne, who finished with 119 points, and next up is Geoff Sanderson with 61. The Defense is led by slick-skating Glen Wesley and a mix of Jyrki Lumme and Luke Richardson. Terreri sits between the pipes. Scribe is a great player, and in fact has beaten AJ in a Classic finals (CHI vs QUE) 4-1 in 2020. However, this Sharks team is dialed in on both ends of the ice and I just can't see them losing in a 7 game series. Maybe the Kings grab a close one, but that mounting pressure that AJ brings is too much to overcome. PREDICTION: SJS in 5 2. Corbettkb (DAL) - 225 7. Sebe82 (EDM) + 225 Season Series (2-2 tied) The #2 seed Dallas Stars (31-13, .705) and their blinding white jerseys have put together their best CDL season in franchise history. 4.11 GF/G with 3.00 GA/G are both franchise records, leading to a 1.11 GDIF. The roster is terrifying with Mike Gartner, Luc Robitaille and Dallas Drake as the starting forward lineup with big Steve Smith and Doug Lidster on defense. More impressive is the use of Jon Casey in net. The Stars goalie put up a stellar 2.93 GAA (6th all-time) with a .717 save % (8th all-time). @corbettkb has used his manual goalie skills to quel any fears of a "weak" goalie in net. The Stars also set the all-time record for fewest checks against at 23.5! This a well-deserved #2 seed that is poised to make a deep run in the playoffs with a potent offense and tight defense. BRING ON THE TRAPON! @Sebe_The_Legend and his Edmonton Oilers (23-21, .523) love to grind things down to an uncomfortable halt. They don't mind letting their opponents hang in the zone (they have the highest AZA), but reduce shots to low-scoring chances that Patrick Roy can gobble up. In fact, Roy led the league in save % with a ridiculous .761 (2nd all time). Helping out Roy on defense is Dave Ellett (10th in checks F this season) and Patrice Brisebois. The forwards are led by the Great One, #99 Wayne Gretzky. Gretz has been a defensive monster this season for the Oilers, 2nd in checks next to Ellett. He's also the primary playmaker with 53 assists to mainly Jimmy Carson and a mixture of Tony Amonte/Cam Neely (depends on how Sebe is feeling his players are performing). These guys split their season series with a lot of close games (including a ridiculous 1-0 OT win by the Stars). I have been very impressed with both of these teams this season and when either team is ON they can beat anybody. Now clearly the Stars are the #2 seed and favorite, but the question is can they generate enough offense against this tight Edmonton team. Composure will be key for both these guys as grinding out a 7 game series can be mentally fatiguing. This is one matchup I can't wait to watch, and I think each game will be close! PREDICTION: DAL in 6 3. Indio (HAM) - 110 6. Tickenest (HEL) +125 Season Series (4-0 HAM, 2 OT) We have a couple of new faces in the 3-6 matchup this season! @INDIO and the Hamilton Tigers (31-13, .705) take the #3 seed in an impressive sophomore season in CDL A! Indio has been steadily improving his play over the last few years and it has culminated into the recent Classic A title and now a favorite in the first round of CDL 05. Offense is the name of the game as Indio likes to play fast and loose! Steve Yzerman leads this Tigers team with 135 points, with Kamensky and Kvartalnov on his sides. We'll see some Owen Nolan as well if those two aren't playing up to Indio's liking. The Tigers put up 4.55 goals/game, and that is the first team to go above 4.5 outside of AJ/Raph/Seth/Schmidt (aka "the big 4"). The defense also features Paul Coffey who is known for more offense, and Smehlik/Konstantov share duties as the #2. Mike Richter is letting up 3.94 GAA with a .668 save %. So at the end, Indio and the Tigers will look to outscore you by a goal. Speaking of which, he led the league with 18 one-goal wins (thanks to these @Tickenestcharts!). I feel like @Tickenest and the Helsingin Jokerit (28-18, .591) are the most underrated team this season and is my darkhorse to make a run in the playoffs. Tick's game has improved tremendously as he's averaging 4.48 goals/game this season, up from 3.55 last season and keeping a 3.57 GA/G vs 4.23 last season! So monster improvement on both sides of the ice in just one season. In addition, the Jokerit like to whip the puck around the ice, usually leading the league in passing attempts and even more importantly passing completion percentage! Speaking of leading the league, Helsingin finished with a faceoff win percentage of 62.1%, the best ever in CDL A history! The Jokerit have NHL'94 superstar Jeremey Roenick at center, who led the league in goals and finished 3rd all-time in goals/game. Accompanying JR are Stephan LeBeau and Pelle Eklund, who finished with 106 and 99 points, respectively. There were some questions going into the season if Kevin Hatcher and Marty McSorley would be too big and slow on defense, but they are helping Sean Burke keep a 3.47 GAA. Burke's save percentage is a little concerning at .652, but the Jokerit have held opponents back by letting in only 10.3 shots per game. Hatcher and McSorley finished 8th and 10th in checks this season and JR was #1, which led the Jokers to be 3rd in checks/game. Hamilton won all 4 matchups this season vs Helsingin, including two overtime victories, so it looks like Hamilton has the advantage in this series. All signs point to them being the odds on favorite, but I'll go out on a limb and predict a playoff upset here as I like the way Tickenest has been playing recently. PREDICTION: HEL in 7 4. kingraph (ANH) - 110 5. Uncle Seth (CAR) +100 The defending champion Anaheim Ducks (29-15, .659) end up as the #4 seed this season, their lowest seed in CDL so far. This team has the lowest goals for/game in franchise history at 4.43, but a stingy 2.89 goals against, for a GDIF of 1.55. That GDIF ends up being 2nd in the league after the #1 seeded Sharks. @kingraph built this team for defense, starting with Ed Belfour in net who finished with a .743 save % (3rd all-time) and 2.80 GAA (4th all-time). Helping out the Eagle are two talented heavy defensemen in Al Iafrate and Zarley Zalapski. They fit kingraph's aggressive style of defense and finished 1st and 3rd in checking for defensemen this season, and 2nd in total checks/game in league history. While the defense is strong, the offense took some time to figure out. Led by speedster Russ Courtnall, the Ducks finished 4th in goals this season. Evgeny Davydov and Joe Nieuwendyk try to keep up with Russ, but they are not traditional puck handlers. Each has a 4shp and varying skills, but stick handling ain't one of 'em! The Ducks will rely on individual creativity to generate offense, and that can be seen by their low assists this season. A two time CDL champion, @Uncle Seth finds himself in the 5th seed this year, a strange place to land. The Minnesota Wild (28-16, .636) had the 5th best record, but nobody in their right mind would call them an underdog. The Wild finished with a Gdif of 1.3, 3rd in the league. On top of that, this entire season was an experiment for Coach Uncle Seth as all 10 of his skaters have participated in the games. It's hard to figure out what kind of lineup you'll see, and in true Seth fashion you can expect to see any and all of them at any given time. He's notoriously known for mixing things up until he finds something that works. If I had to guess, you're going to see a healthy dose of Gary Roberts and Robert Reichel, the Calgary stars, and the 3rd forward will likely be swapping around between Zhamnov, Claude...hell even Kozlov or Thomas! On Defense Doug Wilson and Darius Kasparitis are the mainstays, but you may see Rob Ramage called in if one of those two are a step off. In the pipes is Ron Hextall, who finished with a low 3.03 GAA (10th all time) and .700 save %. When Seth is locked in, there may not be a scarier person to face in a game. A dominant champion in season 1 and 3, Seth was knocked out in the first round last year. His stats show a decline from where was in the first 3 seasons, but if you take him lightly you'll pay dearly. kingraph has had the better of Seth recently, going 12-1 in their last 13 CDL regular season and playoff meetings. However, you'd have to be crazy not to expect anything but a 7 game, life-draining match to the death when these two meet. A first round matchup of the "big 3" (AJ/Seth/Raph have been the only 3 to play in all 4 CDL finals) is a tough draw for both! Season Series (4-0 ANH) PREDICTION: ANH in 7 ODDS TO WIN THE CUP (based on projected playoff path) AngryJay93 (SJS) +380 kingraph (ANH) +500 Uncle Seth (MIN) + 625 Corbettkb (DAL) + 1000 Indio (HAM) +1500 Tickenest (HEL) + 1800 Sebe (EDM) +4000 Scribe (LAK) +5000
  17. As I suspected, the blood is a separate tile sequence that is on top of the sprite. I found a few blood tiles and changed them to 1,2,3. I think this will be helpful once I can identify which tile numbers they are in reference to the sprites. The trace will be easier to identify (I think). Original Tiles Altered Another Example (I've since found the first tiles) I've gotten about 19 tiles so far...I have to see all the blood animations. I think there are two more from fighting...left and right.
  18. I have been thinking about this for a while and decided I should at least start this hack and post on the forums for documentation/progress. My initial thought process is as follows: I assume the blood animation is a separate graphic and not an entirely new set of sprites (CONFIRMED) Find the blood animation tiles in NHLPA'93 (DONE, most likely) Trace and reverse engineer the code on a blood injury in '93 (current phase) Bring those elements into '94 I think the first two bullets I will confirm and get done rather quickly, but the hard work will be understanding and isolating the code in '93. My starting assumption will be that when an injury for game is triggered, the blood animation sequence is called and overlayed by the sprites head. Who knows if that's right. I'll continue to post updates here as I work on this project.
  19. Apparently it's been two years! I need this reminder! I'll take a look and update for some of the recent releases this week.
  20. The graphics in SNES are way more advanced than Sega, and I can't even comment on how it actually works as I haven't done much SNES hacking. This article summarizes the graphic differences nicely: nicely: https://en.wikipedia.org/wiki/List_of_video_game_console_palettes So tiles are 8x8, but the palettes are more complex (see article). As far as logos, I venture to guess they are 7x7 solely based on the screenshots I've taken of logos (56x56 pixels) The big issue with SNES is that the graphics are actually compressed. Meaning, you won't find any graphics if you open up a SNES '94 ROM in Tile Molester. There is some algorithm that the SNES applies to translate pieces of code into the graphics we see. Even more difficult, those compression routines are unique to each game (or my understanding is some games have similar compression routines), so it's not like a piece of software exists that decompresses ALL SNES graphics for you to edit, and then recompress to the ROM. You basically have to figure out the routine for '94 yourself. My understanding is it's complicated too. And that's why we haven't had any progress on SNES graphic hacks. Recently, on the '94 Discord Server (#rom-hacking), and I think you've seen this, there was a Microsoft Direct X developer who gave some good advice on how to possibly think about this differently for SNES (thanks for sharing @INDIO) "I haven't tried to edit logos yet. I had some notes and observations when doing stuff for the player profile photos that might help For editing player profile photos, I went with a "path of least resistance". I didn't try to reverse-engineer the whole decompression mechanism. Instead I put full decompressed images into the ROM and changed the decompress into a very dumb copy. I have a thing of "work smarter not harder" given I want only a certain end result, doesn't matter how elegant it is or whether it requires ROM expansion. For purposes of this project I treat ROM expansion as free. If you have the same priorities, you might want to do the same thing. Why do the same thing? Because the decompression code is organized weirdly and is complicated. Although I didn't strictly have to I looked at it out of curiosity for profile images. And team logos use the same thing, from what I can tell. But if you still want to know about it: I disassembled most of the decompression code, added some labels, factored out some loops. See here: https://github.com/clandrew/nhl94e/blob/main/docs/rough/DecompressProfileMain.asm There is a bunch of code with data sprinkled in. That data is jump tables. Each element of the jump tables in general is short offset. The real meat of the decompression is in this function: DecompressFB30(). To get started you would probably want to set a breakpoint there at 0x80BBB3. That's a common path between profile images and team logos. General vibe is the compression optimizes for sequential series of like numbers. So like, if there's a sea of 99 0s, rather than store 0 repeatedly it will just store "99" "0" so to speak."
  • Create New...