Jump to content
NHL'94 Forums

Leaderboard

Popular Content

Showing content with the highest reputation since 06/09/2025 in all areas

  1. @bcrt2000 Change 0x180B0 from 0001 to 0002. This will cause the code that forces a playoff series to continue in head to head mode to apply to series that started in head to head mode. Series started in Teammates mode will now continue in teammates mode. I believe this is what the code was intended to do, I think this was a coding error. @mrg If you PM me, I can send you a custom build with this fix. @von Ozbourne I asked Claude.ai if this could fix your friendship problem. Highlights from the results attached.
    4 points
  2. If you are into side scrolling hockey, this one might be for you. A nut for stats? This game keeps track of endless in-game stats, whatever you can think of as a viable stat, it's probably there in the start menu whilst playing a game. International teams are also available to play with, why not go with Kazakhstan, or even team Egypt! This game is basically Mario Lemieux hockey in my humble opinion. Shootout mode is available, in-game fights and a nifty little faceoff system as well. Good ole 90's memories here for me
    3 points
  3. Hand this man the Bud of the Year award! Said it plenty of times before... great work @chaos!
    3 points
  4. Some good suggestions and requests as of late and one scary one (3 goalies in the net). LOL At the risk of Brett Favring/Aaron Rodgering, I should have cut those requests off at the pass rather than say "open to suggestions" or "tbd". While I won't make the mistake of saying "no more", it's not looking like I'll do a rom for the upcoming NHL season. At least, not for the beginning of the season. I have a big trip coming up with the family and then some business trips & projects so the next couple of months will be hectic/busy and I don't want to promise and then not come through. The good news is, as most likely know, @AdamCatalyst is killin' it on the NHL season rom front. He's become the "gold standard" today by pushing limits/innovation and sounds like he'll have some cool stuff in the future. Plus, he's generous enough to provide you all with several updates during the season. As I tried to do the same, I can confirm it is time consuming so make sure to always say "thanks". So, stay tuned for what he's releasing for next season! Like most, I'm looking forward to fighting being added to the game as one day I'll probably tinker with adding it to a rom for fun! If I do, I'll see about potentially posting it for fun. Cheers!
    3 points
  5. Good lord that' a lot of blood. Then the guy skates right over his bleeding face! What have you done to my G-rated game!?!
    3 points
  6. Grumble grumble. Yeah I thought I'd looked at that but evidently forgot. I couldn't directly copy the playoff draws from '97 due to the Winnipeg/Phoenix thing happening and messing up the team order, but I was able to just swap over any instance of Colorado from the East to the West. The Islanders were just using their default colours, which was oddly more red than orange. It was an unfortunate choice by the original dev team to not only pick that, but to make the new sprites use a much less detailed colour scheme. I did go through and give them the two blue tone and orange look. Update is in the original post.
    3 points
  7. I can tell you the value in A2 when it crashed was $30A. When I changed the PowerPlay clock display and Line Changes to no longer load $30A, the problem went way. I can't tell you why any of this happens, only what I've observed from tests and interventions. It happens most often when a) two players on the same team receive a penalty at the same time or b) two players exit the penalty box at the same time.
    2 points
  8. I give it a prompt like this. Essentially I'm giving it all of the known information I have: the uncompressed image format the hex code for decompressing the compressed image a sample of the same image compressed and uncompressed the first X bytes that the decompressor script is able to decompress correctly and the correct output of that the first X bytes that the decompressor script is able to decompress + the next command that its unable to decompress correctly, and what the actual and expected responses are Generally I have had good luck with it correcting it's own mistakes using this. (using Claude in VSCode Github Copilot Extension w/Claude 4). I'm going to give you the following: 1. The file format for .map.jim files which are image files in the NHL Hockey for Sega Genesis source code. 2. Then I'm going to give you an uncompressed example which matches that. 3. Then I'm going to give you the same image, but compressed-- from NHL 94 for Sega Genesis. 4. Then I'm going to give you an explanation of how some of the compression works based on what I've observed (I might not be fully right! its a guess!) 5. And then I'm going to give you some 68k hex code from NHL94 for sega genesis which is related to decompressing this image. The compressed version of this image lives at $B389C in the NHL94 rom, and the hex code references that. 1. File format for uncompressed .map.jim files: ## NHL92 .map.jim file details (Big Endian) | Byte (All values in hexadecimal) | Value | Description | | -------- | ------- | ------- | | `0x00..0x03` | `<uint32>` | Palette Section Offset | | `0x04..0x07` | `<uint32>` | Map Section Offset | | `0x08..0x09` | `<uint16>` | Number of Tiles/Stamps | | `0x0A..0x0A+numTiles*32` | `Tile Data` | Raw 8x8 tile data, 4 bits per pixel, 32 bytes per tile. | | `0xPaletteSectionOffset..0xPaletteSectionOffset+80`| `Palette Data`| 128 bytes of Palette Data. 4 palettes of 16 colors. Each color is 2 bytes in Genesis format (0000BBB0GGG0RRR0, where BBB=Blue bits, GGG=Green bits, RRR=Red bits). | | `0xMapSectionOffset..0xMapSectionOffset+1` | `<uint16>` | Map Width | | `0xMapSectionOffset+2..0xMapSectionOffset+3`| `<uint16>` | Map Height | | `0xMapSectionOffset+4..0x(MapSectionOffset+4)+(mapWidth*mapHeight*2)`| `Map Data Section` | Map Data | ## Map Data Section | Byte (All values in hexadecimal) | Value | Description | | -------- | ------- | ------- | | `0x00..0x01` | `<uint16>:Bits 0-10` | Tile Index | | `0x00..0x01` | `<uint16>:Bit 11` | Horizontal flip | | `0x00..0x01` | `<uint16>:Bit 12` | Vertical flip | | `0x00..0x01` | `<uint16>:Bit 13-14` | Palette Index (0–3, selects one of 4 CRAM palettes). | | `0x00..0x01` | `<uint16>:Bit 15` | Priority (0=low, 1=high) | 2. Uncompressed Ron Barr .map.jim image in hex: 00 00 07 AA 00 00 08 2A 00 3D 66 66 66 66 65 55 55 55 65 44 44 44 65 47 77 77 65 47 77 77 65 47 77 77 65 47 77 77 65 47 77 77 66 66 66 66 55 55 55 55 44 44 44 44 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 66 66 66 66 55 55 55 55 44 44 44 44 77 77 77 77 77 77 77 77 77 77 77 18 77 77 18 88 77 18 88 92 66 66 66 66 55 55 55 55 44 44 44 44 77 11 11 11 11 22 28 82 22 33 32 22 34 44 32 98 22 99 98 88 66 66 66 66 55 55 55 55 44 44 44 44 11 77 77 77 99 88 11 77 98 11 18 77 81 11 11 11 11 11 11 11 66 66 66 66 55 55 55 55 44 44 44 44 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 82 87 77 77 66 66 66 61 55 55 55 21 44 44 43 21 77 77 73 21 77 77 73 21 77 77 73 21 77 77 73 21 77 77 73 21 65 47 77 77 65 47 77 77 65 47 77 77 65 47 77 77 65 47 77 77 65 47 77 77 65 47 77 77 65 47 77 77 77 77 77 77 77 77 77 77 77 77 77 71 77 77 77 18 77 77 77 18 77 77 77 18 77 77 71 11 77 77 11 11 71 88 89 22 18 88 89 99 88 88 81 11 88 11 11 18 11 18 89 AB 11 AC CD DC 18 BD DD DD 8A DD EE EE 99 98 11 88 81 81 11 11 18 88 88 9A 9A AB BC CC CC CC CD DD DD DD DD DD DD FF 66 FE EF F6 66 FF 88 88 99 98 88 89 AC CA CC CC CC CB DD DD CD CC DD DD DE DC DE EE ED ED EE EE ED ED FF FF FE DD 18 81 17 77 81 81 11 77 A8 82 21 77 B8 11 21 17 CA 81 12 17 CB A1 12 11 DC A1 11 11 DC B8 11 21 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 17 77 77 77 77 77 73 21 77 77 73 21 77 77 73 21 77 77 73 21 77 77 73 21 77 77 73 21 77 77 73 21 77 77 73 21 77 77 11 11 77 77 11 11 77 77 11 11 77 77 11 11 77 77 11 11 77 77 11 11 77 77 11 11 77 77 11 11 8C DD DD DD 9A CD DD DD 89 CD DD DD 89 CD DD DD 89 CD DD DE 8A CD DD DD 8B CD DE ED 8B DD DF 66 FF 66 66 66 DE EE EE EE DD DD DD DD DD DD DD EE EE DD EE EF DE EE FF FF DE EE EE EE FD DD DD DD FF FF EE DD DE EE DD DD DD DD DE EE EE EE EE FE FF F6 6F FE 66 66 FF EE FF FF FF FD DD CC CC CC DD C9 11 11 DD C9 81 11 DD C9 81 11 ED C9 81 11 DC C9 81 11 DC CA 81 11 DD CC 91 11 DC CD A1 11 17 77 77 77 17 77 77 77 11 77 77 77 11 77 77 77 11 77 77 77 11 77 77 77 11 77 77 77 11 77 77 77 77 77 11 11 77 77 11 11 77 77 11 11 77 77 19 91 77 77 7A C1 77 77 7A CA 77 77 79 CA 77 77 78 CB 9C DD CC CC 9C DC A9 88 9C DB AD DC BD DC DB A1 CD DD CA 48 BC DD CC CC AB DD DD DD BA DD FF FF CF FD DD DC 81 8C CD DC CA 18 CD ED 11 19 CD ED 18 49 CD 6D DD CA CD 6D DC CB CD 6D DD DB CD 6D CC BA 99 99 BB 98 18 88 C9 81 8B ED C9 A1 11 1A C9 A6 81 96 CD 9C CD DC CC DD CC BC DC EE DD DD CC CD B1 11 9C CD C8 11 C9 DC C8 11 BD DC C8 8C AC DC C8 9C CD DC CA AC DE DC CA BC EF EC BA BC 11 77 77 77 11 77 77 77 11 77 77 77 97 77 77 77 A7 77 77 77 B7 77 77 77 B8 77 77 77 A7 77 77 77 77 77 77 DC 77 77 77 DC 77 77 77 DF 77 77 77 CE 77 77 77 7D 77 77 77 78 77 77 77 77 77 77 77 77 CA DD F6 66 DA CD E6 66 EA CD DF 66 EA CC DE ED CA BC DD EC CA BC CD CB BA BB CC BA 78 9B BC BB 6F DC CD 66 6F DC DE E6 FC DD EF ED B9 CA BC CC 9C CC A8 11 BC DD CB A9 BC DE ED CA C9 CD DD DD DC CE EF F6 DD CC DF 66 DD DC CE FF BA CA BC EF AB CD DA CD AC DD DD CC BC DE DC CC DD DD DC 9C FF DC BA CD FE DC BA DD FE DC BA DD ED DC BA DC ED CC BA C9 DD CC BA 77 DD CC BA 77 DC CC B9 77 97 77 77 77 87 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 72 77 77 77 21 78 9B BC BB 77 98 BB CB 77 88 BA BC 77 88 8A AC 77 38 8A 9B 72 31 88 A9 21 48 88 AA 11 43 88 8A BB 19 99 99 BC 92 45 55 BC AC AA AA CC CA DD FE CC CC AA AA DD CC BB BB 9D DC CC BB 9A CD DC CC 99 BB 91 CC 55 32 19 CC AC DD BD DC ED CA DD DC AA AD DD CC BC CC CC CA CC CC CD CB CD ED ED CA CC CB A9 77 CC CB A8 77 CB BA 98 77 BB B9 88 77 AA A8 88 77 AA 98 91 27 AA 89 81 12 A8 9A C2 11 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 11 27 77 77 65 47 77 77 65 47 77 77 65 47 77 77 65 47 77 72 65 47 72 21 65 42 21 11 65 41 11 11 65 41 11 11 77 77 21 11 77 21 11 11 72 11 11 11 21 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 44 A8 88 11 36 28 A8 11 36 2A 8A 11 26 42 9A 11 14 64 98 11 13 66 29 11 11 46 42 11 11 36 64 9A CD EE EE 89 BC DD EE 98 AB CC CA A8 99 AB AB 8A 88 88 89 89 89 81 11 98 88 99 99 29 88 88 88 FF FF CC CA FF ED CC 99 AA CC C9 89 BA AB 98 9A 88 88 88 88 18 88 98 89 99 98 88 99 88 88 88 92 89 AB 22 11 9A AB 43 11 AA A2 63 11 A9 C4 62 11 9A 26 51 11 A2 46 31 11 24 64 11 11 46 63 11 11 11 11 27 77 11 11 11 27 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 77 77 73 21 77 77 73 21 27 77 73 21 12 27 73 21 11 11 23 21 11 11 13 21 11 11 13 21 11 11 13 21 65 41 11 11 65 41 11 11 65 41 11 11 65 41 11 11 65 41 11 11 65 41 11 11 65 41 11 11 65 41 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 26 66 11 11 16 66 11 11 16 66 11 11 14 66 11 11 13 66 11 11 11 46 11 11 11 36 11 11 11 26 42 99 98 88 64 29 98 88 66 64 29 98 66 66 53 98 66 65 31 11 66 53 11 8C 65 31 18 BB 53 11 99 BC 88 98 99 24 88 88 24 56 89 92 46 66 82 46 66 66 13 46 66 66 B1 14 66 66 BB 81 46 66 CB A9 14 66 66 62 11 11 66 61 11 11 66 41 11 11 66 31 11 11 64 21 11 11 63 11 11 11 62 11 11 11 61 11 11 11 11 11 13 21 11 11 13 21 11 11 13 21 11 11 13 21 11 11 13 21 11 11 13 21 11 11 13 21 11 11 13 21 65 41 11 11 65 41 11 11 65 41 11 11 65 41 11 11 65 41 11 11 65 41 11 11 65 22 22 22 61 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 22 22 22 22 11 11 11 11 11 11 11 15 11 11 11 14 11 11 11 13 11 11 11 11 11 11 11 11 11 11 11 11 22 22 22 22 11 11 11 11 31 18 99 BC 11 18 9A BC 11 88 9A BC 18 28 8A BC 26 62 89 CB 26 41 88 AA 22 22 22 22 11 11 11 11 CA 98 81 56 CA A8 81 24 AB 88 12 12 AB 81 33 21 AA 12 44 42 A1 14 66 43 22 22 22 22 11 11 11 11 51 11 11 11 41 11 11 11 31 11 11 11 21 11 11 11 11 11 11 11 21 11 11 11 22 22 22 22 11 11 11 11 11 11 13 21 11 11 13 21 11 11 13 21 11 11 13 21 11 11 13 21 11 11 13 21 22 22 22 21 11 11 11 11 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 00 00 04 44 06 66 0A AA 0C CC 0E EE 08 40 00 04 00 06 00 08 00 2A 02 4C 06 8C 08 AE 0A CE 00 08 00 09 60 00 60 01 60 02 60 03 60 04 60 05 60 01 60 06 60 07 60 08 60 09 60 0A 60 0B 60 0C 60 0D 60 0E 60 07 60 0F 60 10 60 11 60 12 60 13 60 14 60 0E 60 07 60 15 60 16 60 17 60 18 60 19 60 1A 60 0E 60 07 60 1B 60 1C 60 1D 60 1E 60 1F 60 20 60 0E 60 07 60 21 60 22 60 23 60 24 60 25 60 26 60 0E 60 27 60 28 60 29 60 2A 60 2B 60 2C 60 2D 60 2E 60 2F 60 30 60 31 60 32 60 33 60 34 60 30 60 35 60 36 60 37 60 38 60 39 60 3A 60 3B 60 37 60 3C 3. Compressed Ron Barr .map.jim image in hex: 00 00 04 C4 00 00 05 44 80 3D 31 66 00 65 30 55 00 65 30 44 03 65 47 77 77 8D 04 31 66 31 55 31 44 3F 77 9B 1F 00 18 51 00 88 51 00 92 8A 20 31 11 0E 22 28 82 22 33 32 22 34 44 32 98 22 99 98 88 89 20 00 11 30 77 01 99 88 68 04 98 11 18 77 81 34 11 9C FF 01 82 87 82 80 00 61 30 55 07 21 44 44 43 21 77 77 73 8E 04 8F D4 8B 04 38 77 00 71 83 B8 5E 00 71 80 8F 00 11 CC 03 88 89 22 18 58 08 99 88 88 81 11 88 11 11 18 48 12 89 AB 11 AC CD DC 18 BD DD DD 8A DD EE EE 99 98 11 88 81 80 AD 06 18 88 88 9A 9A AB BC 30 CC 00 CD 33 DD 04 FF 66 FE EF F6 CC E0 37 04 98 88 89 AC CA 30 CC 00 CB E1 18 58 04 DE DC DE EE ED C0 59 07 FF FF FE DD 18 81 17 77 80 40 13 77 A8 82 21 77 B8 11 21 17 CA 81 12 17 CB A1 12 11 DC A1 11 58 80 11 3F 77 37 77 00 17 6B 8F F4 8B 04 E2 C3 9B 03 00 8C 30 DD 00 9A 80 B3 00 89 5F 02 DD DE 8A 79 03 8B CD DE ED CC 02 DF 66 FF 30 66 00 DE 30 EE 34 DD 80 09 05 EE EF DE EE FF FF 81 14 00 FD 81 E7 03 FF EE DD DE 82 1E 81 12 05 EE FE FF F6 6F FE E0 32 80 22 02 FF FD DD 30 CC 03 DD C9 11 11 58 00 81 5B 00 ED 59 00 DC 5A 00 CA 80 10 01 CC 91 78 02 CD A1 11 81 C4 5A 80 8D 99 03 8B B0 01 19 91 58 01 7A C1 59 00 CA 58 00 79 59 02 78 CB 9C 80 65 10 9C DC A9 88 9C DB AD DC BD DC DB A1 CD DD CA 48 BC 80 14 00 AB 30 DD 00 BA 80 9E 0D CF FD DD DC 81 8C CD DC CA 18 CD ED 11 19 58 05 18 49 CD 6D DD CA 58 01 DC CB 79 00 DB 58 1C CC BA 99 99 BB 98 18 88 C9 81 8B ED C9 A1 11 1A C9 A6 81 96 CD 9C CD DC CC DD CC BC DC 80 D8 09 CC CD B1 11 9C CD C8 11 C9 DC 58 00 BD 58 01 8C AC 58 80 1E 02 CA AC DE 58 04 BC EF EC BA BC 89 AC 00 97 59 00 A7 59 00 B7 59 00 B8 84 0C 41 00 DC 5D 00 DF 59 00 CE 59 00 7D 59 E0 B9 44 0A CA DD F6 66 DA CD E6 66 EA CD DF 58 06 CC DE ED CA BC DD EC 58 0D CD CB BA BB CC BA 78 9B BC BB 6F DC CD 66 58 12 DE E6 FC DD EF ED B9 CA BC CC 9C CC A8 11 BC DD CB A9 BC 80 2B 0B C9 CD DD DD DC CE EF F6 DD CC DF 66 80 09 01 FF BA 80 93 04 AB CD DA CD AC 80 B7 01 BC DE 80 C3 07 DD DC 9C FF DC BA CD FE 58 00 DD 5A 00 ED 58 C4 03 CC BA C9 DD 58 00 77 5A 02 DC CC B9 82 B4 00 87 3F 77 A8 40 00 72 59 00 21 81 A4 07 77 98 BB CB 77 88 BA BC 58 1F 8A AC 77 38 8A 9B 72 31 88 A9 21 48 88 AA 11 43 88 8A BB 19 99 99 BC 92 45 55 BC AC AA AA CC CA 02 DD FE CC D1 05 DD CC BB BB 9D DC 60 01 9A CD 60 11 99 BB 91 CC 55 32 19 CC AC DD BD DC ED CA DD DC AA AD 80 BC 02 CC CC CA 50 04 CD CB CD ED ED 78 02 CB A9 77 58 03 A8 77 CB BA E0 65 04 B9 88 77 AA A8 59 0A 98 91 27 AA 89 81 12 A8 9A C2 11 3F 77 E8 09 00 27 58 01 65 47 8A 04 00 72 58 08 72 21 65 42 21 11 65 41 11 5B 80 C3 58 50 01 11 72 30 11 71 3F 11 06 44 A8 88 11 36 28 A8 58 11 2A 8A 11 26 42 9A 11 14 64 98 11 13 66 29 11 11 46 42 58 14 36 64 9A CD EE EE 89 BC DD EE 98 AB CC CA A8 99 AB AB 8A 88 88 30 89 06 81 11 98 88 99 99 29 30 88 0F FF FF CC CA FF ED CC 99 AA CC C9 89 BA AB 98 9A 31 88 04 18 88 98 89 99 80 21 30 88 1A 92 89 AB 22 11 9A AB 43 11 AA A2 63 11 A9 C4 62 11 9A 26 51 11 A2 46 31 11 24 64 80 62 00 63 31 11 00 27 E0 A3 60 3F 11 44 02 77 77 73 E0 C1 58 00 27 59 01 12 27 58 02 11 11 23 59 00 13 5F 85 E8 9A 83 9F 80 01 26 66 58 00 16 5D 00 14 59 00 13 59 00 11 E0 9B 01 11 36 81 1D 00 42 80 C9 01 64 29 58 00 66 61 02 66 66 53 58 02 65 31 11 70 01 11 8C 70 01 18 BB 70 01 99 BC E0 1D 01 24 88 C0 05 56 89 92 46 66 82 50 01 66 13 59 01 B1 14 58 05 BB 81 46 66 CB A9 80 09 00 62 E0 4D 00 61 59 80 8C 01 66 31 58 00 64 80 B6 81 F7 80 17 00 11 80 17 41 87 CC 98 83 8F DC 5D 30 22 83 40 99 80 31 22 34 11 00 15 59 E0 D9 00 11 E3 69 8C 20 06 31 18 99 BC 11 18 9A 58 00 88 58 0B 18 28 8A BC 26 62 89 CB 26 41 88 AA 85 20 17 CA 98 81 56 CA A8 81 24 AB 88 12 12 AB 81 33 21 AA 12 44 42 A1 14 66 43 85 20 00 51 59 80 8F 00 11 E1 48 80 B1 43 7A 87 80 8F D8 5A 30 22 82 2F E0 00 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 08 0E 00 00 04 44 06 66 0A AA 0C CC 0E EE 08 40 00 04 00 06 00 08 00 2A 02 4C 06 8C 08 AE 0A CE 00 08 00 09 60 00 60 01 60 02 60 03 60 04 60 05 60 01 60 06 60 07 60 08 60 09 60 0A 60 0B 60 0C 60 0D 60 0E 60 07 60 0F 60 10 60 11 60 12 60 13 60 14 60 0E 60 07 60 15 60 16 60 17 60 18 60 19 60 1A 60 0E 60 07 60 1B 60 1C 60 1D 60 1E 60 1F 60 20 60 0E 60 07 60 21 60 22 60 23 60 24 60 25 60 26 60 0E 60 27 60 28 60 29 60 2A 60 2B 60 2C 60 2D 60 2E 60 2F 60 30 60 31 60 32 60 33 60 34 60 30 60 35 60 36 60 37 60 38 60 39 60 3A 60 3B 60 37 60 3C FF FF FF FF 4. Explanation of compressed file: You should be able to understand the uncompressed file format from the file format description. You should understand the compressed file format from the assembly. 5. Here is the code from the NHL 94 ROM for sega genesis related to decompression: $11086-$110BD: 48 E7 E0 00 30 38 D0 68 32 00 34 38 D0 66 C0 FC E6 2D C2 FC BB 40 C4 FC E6 2D D2 42 48 40 D0 41 48 40 52 80 21 C0 D0 66 E0 80 C0 EF 00 02 48 40 58 4F 4C DF 00 06 4E 75 $1169A-$1197D: 3F 38 B0 2A 3F 38 BF 78 08 F8 00 02 BF 78 48 E7 F6 F0 3C 01 36 7C BD 28 60 00 00 18 17 B0 00 00 00 00 51 C8 FF F8 D1 FC 00 00 00 20 D7 FC 00 00 00 20 70 1F E2 4D 65 E4 66 EC 3A 38 B0 2C 02 45 F8 00 34 2F 00 0E 53 42 61 00 02 6E 30 06 C0 D1 D0 6F 00 02 E3 40 32 2F 00 0A 53 41 36 31 00 04 D6 44 BB 43 30 83 54 40 51 C9 FF F2 52 78 B0 2A 52 46 51 CA FF D4 08 38 00 00 C2 F8 66 00 00 06 61 00 00 1C 4C DF 0F 6F 31 DF BF 78 31 DF B0 2A 4E 75 21 D7 CF 32 61 00 00 0A 50 97 4E 75 42 B8 CF 32 48 E7 C0 FE 20 4A 32 04 EB 41 30 18 67 00 00 2A 6B 00 00 1C D8 40 E9 40 48 79 00 01 17 74 4A B8 CF 32 67 00 FC 70 22 78 CF 32 60 00 F7 78 02 40 7F FF D8 40 61 00 00 08 4C DF 7F 03 4E 75 32 7C CF 36 36 7C CF 36 38 7C CF 32 2A 7C 00 01 0E E0 2C 7C 00 01 13 D0 48 E7 F0 E0 36 01 42 41 42 42 10 18 02 40 00 F0 E6 48 45 FA 00 0C 30 32 00 00 4E B2 00 00 60 EA 00 20 00 20 00 3C 00 58 00 78 00 78 00 78 00 78 00 AA 00 B8 00 D2 00 EC 01 06 01 06 01 38 01 58 10 28 FF FF 02 40 00 1F 13 98 10 00 52 01 66 00 00 06 61 00 01 3E 51 C8 FF F0 4E 75 10 28 FF FF 02 40 00 0F 42 31 10 00 52 01 66 00 00 06 61 00 01 22 51 C8 FF F0 4E 75 10 28 FF FF 02 40 00 0F 54 40 14 18 13 82 10 00 52 01 66 00 00 06 61 00 01 02 51 C8 FF F0 4E 75 10 28 FF FF 02 40 00 07 52 40 14 28 FF FF E6 4A 02 42 00 07 52 42 44 02 D4 01 13 B1 20 00 10 00 52 02 52 01 66 00 00 06 61 00 00 D0 51 C8 FF EC 4E 75 10 28 FF FF 02 40 00 0F 54 40 14 18 60 D6 10 10 E3 00 10 28 FF FF E3 10 02 40 00 1F 54 40 14 18 02 42 00 7F 52 42 60 BC 10 28 FF FF E1 40 10 10 EC 48 02 40 00 3F 54 40 14 18 02 42 00 3F 52 42 60 A2 10 28 FF FF E1 40 10 10 EA 48 02 40 00 7F 54 40 14 18 02 42 00 1F 52 42 60 88 10 28 FF FF 02 40 00 03 52 40 14 28 FF FF E4 4A 02 42 00 07 52 42 44 02 D4 01 13 B1 20 00 10 00 53 02 52 01 66 00 00 06 61 00 00 42 51 C8 FF EC 4E 75 10 28 FF FF 02 40 00 0F 54 40 14 18 66 D6 4A 41 67 00 00 06 61 00 00 24 58 4F 4C DF 07 0F 4E 75 10 10 E3 00 10 28 FF FF E3 10 02 40 00 1F 54 40 14 18 02 42 00 7F 52 42 60 AA 48 E7 C0 C0 30 01 66 00 00 06 30 3C 01 00 E2 48 32 03 D6 40 D6 40 20 49 4A 94 67 00 00 0A 22 54 4E 95 60 00 00 04 4E 96 4C DF 03 03 4E 75 48 E7 E0 00 30 38 B0 28 32 38 B0 2A 20 7C FF FF B0 04 D0 F8 B0 2E 34 28 00 02 E5 61 D0 41 E3 40 D0 50 61 00 FD 0A 4C DF 00 07 4E 75 $17CA0-$18031: 48 E7 FF F0 36 7C D0 88 61 00 03 94 30 38 CE EC 80 78 CE EA 67 00 00 5A 61 00 00 C6 70 07 4A 78 D0 46 67 00 00 06 30 3C 00 0B 4A 78 D0 46 66 00 00 14 0C 78 00 02 CE F0 6D 00 00 2E 55 78 CE F0 60 00 00 26 0C 78 00 01 CE F0 66 00 00 0C 31 FC 00 03 CE F0 60 00 00 12 0C 78 00 02 CE F0 66 00 00 08 31 FC 00 04 CE F0 90 78 CE F0 31 C0 D0 4A 4C DF 0F FF 4E 75 70 20 61 00 93 6C 52 40 02 40 00 1F E9 40 20 7C 00 00 55 76 D0 C0 E8 48 72 0F 34 38 D0 4C B4 7C 00 19 63 00 00 04 74 19 B4 18 57 C9 FF FC 66 D6 0A 41 00 0F 31 C1 CE EE 31 C0 CE E8 42 78 CE EC 31 FC 00 07 CE EA 0C 78 00 02 D0 48 67 00 00 1C 42 78 CE EA 70 07 30 7C CE 66 42 68 00 04 42 68 00 06 D0 FC 00 10 51 C8 FF F2 48 E7 F8 F0 32 38 CE E8 E9 41 30 7C CE F4 22 7C 00 00 55 76 D2 C1 20 91 21 69 00 04 00 04 21 69 00 08 00 08 21 69 00 0C 00 0C 43 E8 00 10 74 0E 30 38 CE F2 32 00 02 41 00 01 12 F0 10 00 54 48 E2 48 51 CA FF F0 61 00 04 C2 4A 41 6B 00 00 30 30 7C CE F4 D0 C2 D0 C2 32 7C CE 66 42 69 00 0A 42 69 00 0C 42 69 00 08 08 A9 00 01 00 0E 61 00 00 14 D2 FC 00 10 51 C9 FF E4 61 00 00 46 4C DF 0F 1F 4E 75 0C 78 00 02 CE EA 67 00 00 26 0C 78 00 03 CE EA 67 00 00 1C 0C 78 00 05 CE EA 67 00 00 12 08 E9 00 00 00 0E 13 58 00 03 13 58 00 01 4E 75 08 A9 00 00 00 0E 13 58 00 01 13 58 00 03 4E 75 48 E7 F0 C0 42 78 C3 28 42 78 C3 2A 42 78 C3 2C 42 78 C3 2E 4A 78 D0 64 67 00 01 80 4A 78 D0 48 67 00 01 36 08 38 00 00 C2 FA 66 00 01 2C 61 00 04 18 30 7C CE F4 34 38 CE EE 14 30 20 00 32 7C CE 66 78 10 C8 C1 D2 C4 50 F8 CE E6 42 40 B4 51 67 00 00 32 B4 69 00 02 67 00 00 0E 92 FC 00 10 51 C9 FF EC 60 00 01 38 70 04 4A 78 D0 46 67 00 00 06 30 3C 00 05 31 D1 D0 4E 31 E9 00 02 D0 4C 60 00 00 0E 42 40 31 E9 00 02 D0 4E 31 D1 D0 4C D0 78 CE F0 31 C1 CE E6 31 D1 C3 30 31 E9 00 02 C3 32 E5 40 41 FA 00 6A 4A 78 D0 46 67 00 00 06 41 FA 00 7E 31 F0 00 00 C3 28 31 F0 00 02 C3 2A 4A 78 D0 46 67 00 00 D8 B0 7C 00 04 67 00 00 0E B0 7C 00 18 67 00 00 06 60 00 00 12 31 F8 C3 28 C3 2C 31 F8 C3 2A C3 2E 60 00 00 B4 B0 7C 00 08 67 00 00 0E B0 7C 00 1C 67 00 00 06 60 00 00 A0 31 F8 C3 28 C3 2C 31 FC 00 00 C3 2E 60 00 00 90 00 01 00 00 00 01 00 01 00 01 00 02 00 02 00 01 00 02 00 00 00 02 00 02 00 02 00 01 00 01 00 02 00 01 00 00 00 01 00 02 00 01 00 02 00 01 00 01 00 01 00 02 00 02 00 00 00 02 00 01 00 02 00 01 00 02 00 02 00 02 00 01 30 38 D0 4A E5 40 41 FA 00 44 31 F0 00 00 C3 28 31 F0 00 02 C3 2A B0 7C 00 14 66 00 00 12 31 F8 C3 28 C3 2C 31 FC 00 00 C3 2E 60 00 00 16 B0 7C 00 18 66 00 00 0E 31 F8 C3 28 C3 2C 31 F8 C3 2A C3 2E 61 00 00 24 4C DF 03 0F 4E 75 00 00 00 00 00 01 00 00 00 02 00 00 00 01 00 01 00 01 00 02 00 01 00 02 00 01 00 02 50 F8 CE E6 42 83 32 38 C3 30 03 C3 32 38 C3 32 03 C3 32 7C CE 66 74 07 61 00 00 16 32 80 61 00 00 10 33 40 00 02 D2 FC 00 10 51 CA FF EC 4E 75 $F70A2-$F70D5: 48 E7 FF 00 32 3C 01 9F 30 3C 00 09 4E B9 00 01 10 7A 2F 08 D1 FC 00 00 01 A2 11 80 10 00 20 5F 51 C9 FF E6 4C DF 00 FF 4E 75 4A 43 6A 00 00 06 42 43 4E 75 B6 7C 00 64 6F 00 00 06 36 3C 00 64 4E 75 $F7318-$F78A1: 48 E7 7F FE 20 7C FF FF C6 CE 61 00 00 5A 31 C1 BF 12 20 7C FF FF CA 32 61 00 00 4C 31 C1 BF 14 32 38 BF 12 34 38 BF 14 94 41 31 FC 00 00 BF 50 4A 42 6B 00 00 08 31 FC 00 01 BF 50 4A 42 6A 00 00 04 44 42 30 3C FF FF B4 7C 00 5E 6D 00 00 12 30 3C 00 22 B4 7C 00 BD 6D 00 00 06 30 3C 00 23 4C DF 7F FE 4E 75 61 00 FE 70 30 3C 00 06 20 7C FF FF BF 20 42 41 14 28 00 01 48 82 D2 42 4A 58 51 C8 FF F4 4E 75 4E B9 00 0F E6 60 26 7C FF FF D0 88 4E B9 00 01 80 3E 31 F8 D0 72 D0 58 31 F8 D0 74 D0 48 08 B8 00 01 C2 FC 4E B9 00 0F D7 3C 4E B9 00 0F 9C 68 61 00 0D 98 42 78 D4 22 42 78 D4 24 61 00 0C 94 4A 78 D0 64 66 00 00 1A 70 1C 4E B9 00 01 10 86 31 C0 D0 4C 70 1C 4E B9 00 01 10 86 31 C0 D0 4E 50 F8 D0 64 0C 78 00 04 D0 48 66 00 00 06 60 00 00 1E 0C 78 00 02 D0 48 6D 00 00 06 61 00 02 AC 0C 78 00 01 D0 48 66 00 00 06 61 00 02 A4 42 47 42 40 61 00 02 A2 61 00 04 6C 31 F8 C3 30 D4 2A 31 F8 C3 30 D4 28 61 00 11 6A 31 F8 C3 32 D4 2C 31 F8 C3 32 D4 28 61 00 11 B2 31 FC 00 18 BD 26 08 B8 00 02 BF 78 0C 78 00 04 D0 48 66 00 00 14 31 FC 00 01 D0 58 31 FC 00 00 D0 56 31 FC 00 01 D0 54 61 00 0E 82 4A 41 66 00 00 06 60 00 0F 8C 08 01 00 07 66 00 0F AA 08 01 00 01 67 00 00 90 4A 78 D0 4A 66 00 00 12 BE 7C 00 08 66 00 00 0A 30 3C 00 04 60 00 00 06 30 3C 00 02 0C 78 00 04 D0 48 67 00 00 1A 4A 78 D0 4A 66 00 00 12 BE 7C 00 08 66 00 00 0A 30 3C 00 06 60 00 00 46 BE 7C 00 06 66 00 00 1A 0C 78 00 04 D0 48 66 00 00 10 4A 78 D0 4A 66 00 00 28 42 40 60 00 00 26 BE 7C 00 0A 66 00 00 1E 0C 78 00 04 D0 48 66 00 00 08 42 40 60 00 00 0E 4A 78 D4 58 6A 00 00 06 30 3C 00 04 61 00 01 B2 61 00 03 7C 60 00 FF 3A 08 01 00 00 67 00 00 7C 4A 78 D0 4A 66 00 00 12 BE 7C 00 0C 66 00 00 0A 30 3C FF FC 60 00 00 28 30 3C FF FE 0C 78 00 04 D0 48 67 00 00 1A 4A 78 D0 4A 66 00 00 12 BE 7C 00 0E 66 00 00 0A 30 3C FF FA 60 00 00 32 BE 7C 00 0A 66 00 00 0C 0C 78 00 04 D0 48 67 00 00 1C BE 7C 00 0E 66 00 00 18 0C 78 00 04 D0 48 67 00 00 0A 4A 78 D4 58 6A 00 00 06 30 3C FF FC 61 00 01 30 61 00 02 FA 60 00 FE B8 74 01 08 01 00 03 66 00 00 0C 08 01 00 02 67 00 FE A6 74 FF 0C 78 00 04 D0 48 67 00 00 08 4E B9 00 01 7E 42 3F 38 D0 4E 3F 38 D0 4C 61 00 03 66 30 1F 0C 78 00 04 D0 48 67 00 00 0A 4A 78 D0 48 66 00 00 0E 31 F8 D0 4C C3 30 31 F8 D0 4E C3 32 31 F8 C3 30 D4 28 08 38 00 06 D4 2E 67 00 00 16 48 A7 80 00 30 38 D4 2A B0 78 C3 30 4C 9F 00 01 67 00 00 0C 31 F8 C3 30 D4 2A 61 00 0F 86 08 38 00 07 D4 2E 67 00 00 16 48 A7 80 00 30 38 D4 2C B0 78 C3 32 4C 9F 00 01 67 00 00 18 31 F8 C3 32 D4 2C 31 F8 C3 32 D4 28 61 00 0F B0 31 F8 C3 30 D4 28 4A 5F 60 00 00 5A 30 1F B0 78 C3 32 67 00 00 50 31 F8 C3 32 D4 28 48 A7 80 00 30 38 C3 32 B0 78 C3 32 4C 9F 00 01 67 00 00 0C 31 F8 C3 32 D4 2C 61 00 0F 76 48 A7 80 00 30 38 D4 2A B0 78 C3 30 4C 9F 00 01 67 00 00 18 31 F8 C3 30 D4 2A 31 F8 C3 30 D4 28 61 00 0E FA 31 F8 C3 32 D4 28 61 00 01 E2 60 00 FD A0 4E 75 4E F9 00 01 7D 16 4E F9 00 01 7C A0 36 07 08 B8 00 02 C2 F6 4A 40 6A 00 00 2A 3F 00 30 07 E2 40 B0 78 D4 22 66 00 00 1A 31 F8 D4 22 D4 24 08 F8 00 02 C2 F6 53 78 D4 22 6A 00 00 06 42 78 D4 22 30 1F 31 C7 BF 12 DE 40 6A 00 00 04 42 47 4A 40 6B 00 00 4E 3F 00 30 07 E2 40 90 78 D4 22 B0 7C 00 05 6E 00 00 06 60 00 00 36 31 F8 D4 22 D4 24 08 F8 00 02 C2 F6 52 78 D4 22 30 07 E2 40 90 78 D4 22 B0 7C 00 05 6F 00 00 06 52 78 D4 22 0C 78 00 03 D4 22 6F 00 00 08 31 FC 00 03 D4 22 30 1F 08 38 00 02 C2 F6 66 00 00 08 31 F8 D4 22 D4 24 BE 7C 00 12 6D 00 00 04 9E 40 0C 78 00 01 D0 48 66 00 00 10 4A 47 67 00 00 0A BE 7C 00 06 63 00 FF 3E 0C 78 00 02 D0 48 6D 00 00 14 0C 78 00 04 D0 48 67 00 00 0A BE 7C 00 06 67 00 FF 22 61 00 00 54 48 E7 FF FE 38 38 D4 26 20 7C 00 0B EF B8 22 48 24 48 D1 DA D3 DA 30 38 B0 28 53 40 36 01 32 38 B0 2A 04 41 00 0E 74 17 7A 00 08 F8 00 00 C2 F8 4E B9 00 01 16 9A 08 B8 00 00 C2 F8 4C DF 7F FF 36 07 61 00 00 66 31 FC 60 00 B0 2C 4E F9 00 01 19 B8 4E B9 00 01 1B 92 00 06 FF 10 0E 00 30 3C 00 17 32 3C 00 0D 4E 75 D7 78 B0 2A 30 38 D4 24 D0 40 91 78 B0 2A 0C 78 00 18 B0 2A 6F 00 00 08 31 FC 00 18 B0 2A 70 17 72 03 0C 78 00 02 D0 48 6D 00 00 54 0C 78 00 04 D0 48 67 00 00 4A B6 7C 00 04 66 00 00 42 72 05 4E 75 4E B9 00 01 1B 92 00 06 FF 10 0E 00 D7 78 B0 2A 30 38 D4 22 D0 40 91 78 B0 2A 70 17 72 03 0C 78 00 02 D0 48 6D 00 00 16 0C 78 00 04 D0 48 67 00 00 0C B6 7C 00 04 66 00 00 04 72 05 4E 75 $F8070-$F80D3: 48 E7 C0 00 08 F8 00 03 C2 F8 22 7C 00 0F 80 D4 30 3C 00 0F 32 38 D4 22 D2 41 90 41 31 C0 B0 2A 0C 78 00 0F B0 2A 6C 00 00 08 D2 D1 60 00 00 24 0C 78 00 19 B0 2A 6E 00 00 20 31 FC 00 03 B0 28 31 FC 00 00 B0 2C 31 FC 00 00 B0 2E 4E B9 00 01 1A 48 54 78 B0 2A 60 C8 08 B8 00 03 C2 F8 4C DF 00 03 4E 75 $F8168-$F8416: 21 FC 00 01 7C 42 B0 3A 46 FC 25 00 08 B8 00 00 BF 78 08 F8 00 02 BF 78 08 B8 00 01 BF 78 31 FC 00 00 B0 00 31 FC B4 00 B0 02 31 FC B8 00 B0 0C 31 FC 00 05 B0 0E 31 FC C0 00 B0 08 31 FC 00 06 B0 0A 31 FC E0 00 B0 04 31 FC 00 06 B0 06 30 3C 00 00 4E B9 00 01 15 94 4E B9 00 01 12 BC 4E B9 00 0F 84 D0 31 C4 B0 1E 24 7C 00 0B F5 4A 4E B9 00 01 17 2C 03 56 75 64 89 AB CD EF 31 C4 B0 12 24 7C 00 0A AC 5A 4E B9 00 01 17 2C 0F C0 45 67 89 AB CD EF 31 C4 BF 52 24 7C 00 0B E2 72 4E B9 00 01 17 2C 01 23 45 67 89 AB CD EF 4E B9 00 01 1B 92 00 06 FF 00 00 00 70 28 72 1C 34 3C 07 FF 4E B9 00 01 19 7E 4E B9 00 01 1B 92 00 06 FE 00 00 00 20 7C 00 04 B7 A0 22 48 24 48 D1 DA D3 DA 42 40 42 41 74 28 76 1C 7A 0D 4E B9 00 01 16 9A 31 C4 D4 32 06 44 00 24 4E B9 00 01 1B 92 00 06 FF 00 00 00 20 7C 00 04 DE EE 22 48 24 48 D1 DA D3 DA 42 40 42 41 74 28 76 04 7A 00 4E B9 00 01 16 9A 4E B9 00 01 1B 92 00 06 FF 01 0E 00 31 C4 D4 26 20 7C 00 0B EF B8 22 48 24 48 D1 DA D3 DA 42 40 42 41 74 26 76 0D 7A 00 4E B9 00 01 16 9A 31 C4 D4 30 06 44 00 24 31 C4 D4 36 24 7C 00 0B F7 0A 4E B9 00 01 17 38 31 C4 D4 38 24 7C 00 0B F7 0A 4E B9 00 01 17 2C 03 41 45 67 89 AB CD EF 4E B9 00 01 6E 82 31 FC 00 28 B0 66 31 FC 00 28 B3 66 50 F8 C6 CE 50 F8 CA 32 4E 75 2C 3C 00 00 54 60 32 38 B0 3E 92 78 B0 40 67 F6 31 F8 B0 3E B0 40 08 B8 00 05 D4 2E 4E B9 00 0F 84 F8 4E B9 00 01 13 40 4E B9 00 01 13 18 4A 41 67 00 00 20 08 01 00 05 67 00 00 D8 08 02 00 05 67 00 00 0A 33 FC 00 53 FF FF D4 3C 08 F8 00 05 D4 2E 4E B9 00 01 13 58 4E B9 00 01 13 18 4A 41 67 00 00 10 08 01 00 05 67 00 00 A8 08 F8 00 05 D4 2E 4A 78 D0 46 67 00 00 42 4E B9 00 01 13 70 4E B9 00 01 13 18 4A 41 67 00 00 10 08 01 00 05 67 00 00 80 08 F8 00 05 D4 2E 4E B9 00 01 13 88 4E B9 00 01 13 18 4A 41 67 00 00 10 08 01 00 05 67 00 00 60 08 F8 00 05 D4 2E 08 38 00 06 D4 2E 67 00 00 16 08 38 00 07 D4 2E 66 00 00 20 31 F8 D4 2C D4 28 61 00 02 2E 08 38 00 07 D4 2E 67 00 00 0C 31 F8 D4 2A D4 28 61 00 01 C2 BC 7C 46 50 6E 00 00 16 08 38 00 00 D4 2E 66 00 00 0C 4E B9 00 0F 87 D2 60 00 00 08 4E B9 00 0F 87 EA 51 CE FE F6 4E 75 $F9C68-$F9CA3: 08 B8 00 06 C2 F8 48 E7 FF FE 22 3C 00 00 00 80 20 3C 00 00 0D A0 20 7C FF FF D4 5A 08 38 00 06 C2 F8 67 00 00 0C 4E B9 00 01 A1 E4 60 00 00 08 4E B9 00 01 A2 44 4C DF 7F FF 4E 75 $FCC76-$FCF85: 4E B9 00 0F 9C 68 4E B9 00 0F 71 A2 42 78 D5 A4 3F 3C 00 7A 4E B9 00 01 11 56 21 FC 00 01 5E 4C B0 3A 4E B9 00 01 71 02 2F 08 20 7C FF FF C6 CE 4E B9 00 0F 70 A2 20 7C FF FF CA 32 4E B9 00 0F 70 A2 20 5F 4E B9 00 0F 71 A2 08 B8 00 01 BF 78 31 FC 00 06 B0 06 31 FC 00 06 B0 0A 30 3C 00 00 4E B9 00 01 15 94 38 3C 00 02 31 C4 D4 30 06 44 00 24 31 C4 D4 32 06 44 00 24 31 C4 B0 10 24 7C 00 0A 9A 18 4E B9 00 01 17 2C 05 43 15 67 79 AB CD EF 4E B9 00 01 1F 04 31 C4 B0 14 24 7C 00 0A AC 5A 4E B9 00 01 17 2C 0A 23 45 67 89 AB CD EF 24 7C 00 05 5B 86 31 C4 B0 1E 4E B9 00 01 17 2C 05 42 25 61 89 AB CD EF 4E B9 00 01 1B 92 00 06 FE 00 00 00 20 7C 00 05 4E 24 22 48 24 48 D1 DA D3 DA 42 40 42 41 74 28 76 1C 7A 03 4E B9 00 01 16 9A 4E B9 00 01 1D E2 00 0E DF 0C 0D 4D 41 54 43 48 55 50 53 00 31 FC 00 00 B0 30 4E B9 00 01 1B 92 00 10 FF 10 11 41 44 56 41 4E 54 41 47 45 3A 00 4E B9 00 01 1B 92 00 06 DE 06 03 00 70 21 72 09 4E B9 00 01 19 B8 4E B9 00 01 1B 92 00 06 DE 01 0E 00 30 3C 00 08 32 3C 00 08 4E B9 00 01 19 B8 4E B9 00 01 1B 92 00 06 DE 1F 0E 00 30 3C 00 08 32 3C 00 08 4E B9 00 01 19 B8 4E B9 00 01 1B 92 00 06 FF 01 01 00 20 7C 00 0B 38 9C 22 48 24 48 D1 DA D3 DA 42 40 42 41 34 11 36 29 00 02 7A 0C 4E B9 00 01 16 9A 24 7C 00 0F 5A FE 31 C4 DE E4 4E B9 00 01 17 38 24 7C 00 0F 5D 24 31 C4 DE E6 4E B9 00 01 17 38 42 78 D5 98 42 78 D5 9A 33 FC 01 0D FF FF D5 A8 61 00 06 2C 61 00 02 40 61 00 03 B6 31 FC 00 18 BD 26 21 FC 00 01 5E 4C B0 3A 46 FC 25 00 4E B9 00 01 77 18 30 FC 00 1B 30 FC 00 1D 30 FC 00 1A 30 FC 00 1D 4E B9 00 0F 73 18 4A 40 6B 00 00 08 30 C0 30 FC 00 1D 30 38 C3 30 30 FC 00 1E 30 FC 00 1D B0 78 C3 32 67 00 00 06 30 FC 00 1F 30 FC 00 1D 30 FC 00 20 30 FC 00 1D 30 FC 00 21 30 BC FF FF 42 78 B0 44 31 FC 7F FF D5 B6 21 FC 00 00 8C A0 DE EC 70 00 4E B9 00 01 11 76 53 78 D5 A8 6A 00 00 0A 33 FC 01 0E FF FF D5 A8 61 00 05 EE 08 01 00 07 66 00 00 9A 0C 78 01 0E D5 A8 67 00 00 18 08 01 00 05 67 00 00 20 31 FC 7F FF D5 B6 21 FC 00 00 8C A0 DE EC 61 00 05 B8 30 3C 00 01 61 00 00 76 60 00 00 38 08 01 00 06 67 00 00 20 31 FC 7F FF D5 B6 21 FC 00 00 8C A0 DE EC 61 00 05 92 30 3C FF FF 61 00 00 50 60 00 00 12 42 78 B0 44 08 01 00 01 67 00 00 06 50 F8 B0 44 08 38 00 01 DE D5 67 00 00 06 50 F8 B0 44 4E B9 00 01 77 30 53 78 D5 B6 6A 00 FF 5C 4A 78 D0 4A 67 00 00 10 31 FC FF FF D5 B6 53 B8 DE EC 6A 00 FF 46 31 FC 00 00 B0 30 4E 75 I had you write this script but there are some issues. The main one I want to focus on now is that the 0x50-0x5F command seems broken. I have a file that has the following in it: 31 66 00 65 30 55 00 65 30 44 03 65 47 77 77 8D 04 31 66 31 55 31 44 3F 77 9B 1F 00 18 51 00 88 51 00 92 8A 20 31 11 0E 22 28 82 22 33 32 22 34 44 32 98 22 99 98 88 89 20 00 11 30 77 01 99 88 68 04 98 11 18 77 81 34 11 9C FF 01 82 87 82 80 00 61 30 55 07 21 44 44 43 21 77 77 73 8E 04 8F D4 8B 04 38 77 00 71 83 B8 it correctly outputs the following as expected: 66 66 66 66 65 55 55 55 65 44 44 44 65 47 77 77 65 47 77 77 65 47 77 77 65 47 77 77 65 47 77 77 66 66 66 66 55 55 55 55 44 44 44 44 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 66 66 66 66 55 55 55 55 44 44 44 44 77 77 77 77 77 77 77 77 77 77 77 18 77 77 18 88 77 18 88 92 66 66 66 66 55 55 55 55 44 44 44 44 77 11 11 11 11 22 28 82 22 33 32 22 34 44 32 98 22 99 98 88 66 66 66 66 55 55 55 55 44 44 44 44 11 77 77 77 99 88 11 77 98 11 18 77 81 11 11 11 11 11 11 11 66 66 66 66 55 55 55 55 44 44 44 44 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 82 87 77 77 66 66 66 61 55 55 55 21 44 44 43 21 77 77 73 21 77 77 73 21 77 77 73 21 77 77 73 21 77 77 73 21 65 47 77 77 65 47 77 77 65 47 77 77 65 47 77 77 65 47 77 77 65 47 77 77 65 47 77 77 65 47 77 77 77 77 77 77 77 77 77 77 77 77 77 71 I have another file which has the following in it: 31 66 00 65 30 55 00 65 30 44 03 65 47 77 77 8D 04 31 66 31 55 31 44 3F 77 9B 1F 00 18 51 00 88 51 00 92 8A 20 31 11 0E 22 28 82 22 33 32 22 34 44 32 98 22 99 98 88 89 20 00 11 30 77 01 99 88 68 04 98 11 18 77 81 34 11 9C FF 01 82 87 82 80 00 61 30 55 07 21 44 44 43 21 77 77 73 8E 04 8F D4 8B 04 38 77 00 71 83 B8 5E I would expect it to output: 66 66 66 66 65 55 55 55 65 44 44 44 65 47 77 77 65 47 77 77 65 47 77 77 65 47 77 77 65 47 77 77 66 66 66 66 55 55 55 55 44 44 44 44 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 66 66 66 66 55 55 55 55 44 44 44 44 77 77 77 77 77 77 77 77 77 77 77 18 77 77 18 88 77 18 88 92 66 66 66 66 55 55 55 55 44 44 44 44 77 11 11 11 11 22 28 82 22 33 32 22 34 44 32 98 22 99 98 88 66 66 66 66 55 55 55 55 44 44 44 44 11 77 77 77 99 88 11 77 98 11 18 77 81 11 11 11 11 11 11 11 66 66 66 66 55 55 55 55 44 44 44 44 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 82 87 77 77 66 66 66 61 55 55 55 21 44 44 43 21 77 77 73 21 77 77 73 21 77 77 73 21 77 77 73 21 77 77 73 21 65 47 77 77 65 47 77 77 65 47 77 77 65 47 77 77 65 47 77 77 65 47 77 77 65 47 77 77 65 47 77 77 77 77 77 77 77 77 77 77 77 77 77 71 77 77 77 18 77 77 77 18 77 77 77 18 77 77 But it outputs: 66 66 66 66 65 55 55 55 65 44 44 44 65 47 77 77 65 47 77 77 65 47 77 77 65 47 77 77 65 47 77 77 66 66 66 66 55 55 55 55 44 44 44 44 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 66 66 66 66 55 55 55 55 44 44 44 44 77 77 77 77 77 77 77 77 77 77 77 18 77 77 18 88 77 18 88 92 66 66 66 66 55 55 55 55 44 44 44 44 77 11 11 11 11 22 28 82 22 33 32 22 34 44 32 98 22 99 98 88 66 66 66 66 55 55 55 55 44 44 44 44 11 77 77 77 99 88 11 77 98 11 18 77 81 11 11 11 11 11 11 11 66 66 66 66 55 55 55 55 44 44 44 44 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 82 87 77 77 66 66 66 61 55 55 55 21 44 44 43 21 77 77 73 21 77 77 73 21 77 77 73 21 77 77 73 21 77 77 73 21 65 47 77 77 65 47 77 77 65 47 77 77 65 47 77 77 65 47 77 77 65 47 77 77 65 47 77 77 65 47 77 77 77 77 77 77 77 77 77 77 77 77 77 71 65 47 77 77 77 77 77 77 77 77 77 77 77 77 77 71 this is the output from the script: C:\repository\EA-NHL-Tools\Kosinski-Tools> node nhl94-decompressor.js ronbarr_short.bin output.bin --verbose Processing .\ronbarr_short.bin (106 bytes) Starting decompression from offset 0 Command byte: 0x31 at offset 0 Repeat with count: 0x66 × 4 Command byte: 0x00 at offset 2 Literal bytes: 1 bytes Byte 0: 0x65 Command byte: 0x30 at offset 4 Repeat with count: 0x55 × 3 Command byte: 0x00 at offset 6 Literal bytes: 1 bytes Byte 0: 0x65 Command byte: 0x30 at offset 8 Repeat with count: 0x44 × 3 Command byte: 0x03 at offset 10 Literal bytes: 4 bytes Byte 0: 0x65 Byte 1: 0x47 Byte 2: 0x77 Byte 3: 0x77 Command byte: 0x8d at offset 15 Long copy (8D): copy last 4 bytes and repeat 4 times Command byte: 0x31 at offset 17 Repeat with count: 0x66 × 4 Command byte: 0x31 at offset 19 Repeat with count: 0x55 × 4 Command byte: 0x31 at offset 21 Repeat with count: 0x44 × 4 Command byte: 0x3f at offset 23 Repeat with count: 0x77 × 18 Command byte: 0x9b at offset 25 Extended 90: copy 25 bytes from offset -32 (subcmd=11) Command byte: 0x00 at offset 27 Literal bytes: 1 bytes Byte 0: 0x18 Command byte: 0x51 at offset 29 Extended 50: copy 3 bytes from recent output position (cmd=0x51) Command byte: 0x00 at offset 30 Literal bytes: 1 bytes Byte 0: 0x88 Command byte: 0x51 at offset 32 Extended 50: copy 3 bytes from recent output position (cmd=0x51) Command byte: 0x00 at offset 33 Literal bytes: 1 bytes Byte 0: 0x92 Command byte: 0x8a at offset 35 Long copy (8A): copy pattern starting from offset -32 (parameter=0x20) Command byte: 0x31 at offset 37 Repeat with count: 0x11 × 4 Command byte: 0x0e at offset 39 Literal bytes: 15 bytes Byte 0: 0x22 Byte 1: 0x28 Byte 2: 0x82 Byte 3: 0x22 Byte 4: 0x33 Byte 5: 0x32 Byte 6: 0x22 Byte 7: 0x34 Byte 8: 0x44 Byte 9: 0x32 Byte 10: 0x98 Byte 11: 0x22 Byte 12: 0x99 Byte 13: 0x98 Byte 14: 0x88 Command byte: 0x89 at offset 55 Long copy (89): copy 12 bytes from offset -32 (parameter=0x20) Command byte: 0x00 at offset 57 Literal bytes: 1 bytes Byte 0: 0x11 Command byte: 0x30 at offset 59 Repeat with count: 0x77 × 3 Command byte: 0x01 at offset 61 Literal bytes: 2 bytes Byte 0: 0x99 Byte 1: 0x88 Command byte: 0x68 at offset 64 Extended 60: copy 2 bytes from offset -6 (cmd=0x68) Command byte: 0x04 at offset 65 Literal bytes: 5 bytes Byte 0: 0x98 Byte 1: 0x11 Byte 2: 0x18 Byte 3: 0x77 Byte 4: 0x81 Command byte: 0x34 at offset 71 Repeat with count: 0x11 × 7 Command byte: 0x9c at offset 73 Extended 90: copy 28 bytes from offset -128 (subcmd=12, param=0xff as signed=-1) Command byte: 0x01 at offset 75 Literal bytes: 2 bytes Byte 0: 0x82 Byte 1: 0x87 Command byte: 0x82 at offset 78 Long copy (82): copy 5 bytes from offset -128 (parameter=0x80) Command byte: 0x00 at offset 80 Literal bytes: 1 bytes Byte 0: 0x61 Command byte: 0x30 at offset 82 Repeat with count: 0x55 × 3 Command byte: 0x07 at offset 84 Literal bytes: 8 bytes Byte 0: 0x21 Byte 1: 0x44 Byte 2: 0x44 Byte 3: 0x43 Byte 4: 0x21 Byte 5: 0x77 Byte 6: 0x77 Byte 7: 0x73 Command byte: 0x8e at offset 93 Long copy (8e): copy 17 bytes from offset -4 (parameter=0x4) Command byte: 0x8f at offset 95 Long copy (8f): copy 18 bytes from offset -212 (parameter=0xd4) Command byte: 0x8b at offset 97 Long copy (8b): copy 14 bytes from offset -4 (parameter=0x4) Command byte: 0x38 at offset 99 Repeat with count: 0x77 × 11 Command byte: 0x00 at offset 101 Literal bytes: 1 bytes Byte 0: 0x71 Command byte: 0x83 at offset 103 Long repeat (83): termination/control command (parameter=0xb8) Command byte: 0x5e at offset 105 Extended 50: copy 16 bytes from recent output position (cmd=0x5e) Decompression complete. Output length: 284 Decompressed 284 bytes Saved decompressed data to output.bin First 16 bytes: 66 66 66 66 65 55 55 55 65 44 44 44 65 47 77 77 It seems like the 0x50-0x5F command isn't implemented correctly. It works for 51 earlier in the file, but not for 5E. Can you disassemble the hex code I included above and understand how this should be implemented and implement it?
    2 points
  9. I hope you do make more roms in the future man. Your players ratings are always the best for me. Especially now that Columbus had a decent year, I'm going to have some real players to play with next year.
    2 points
  10. Fight_w_inj.mp4 Injury is working, along with the toddle getting to the penalty box after injury. I checked multiplayer, and there are no problems! In a 2 controller H2H game, both fighters will be joypad controlled. Compatible with 3 and 4 player too. Next I will work on adding Fighting attribute to be displayed with the rest of the attributes.
    2 points
  11. Not sure about that request as I had my reasons for the change BUT, I will keep an open mind to the suggestion. TBD. Certainly, feel free to make suggestions as who knows... Which older rom(s) are you playing?
    2 points
  12. Ah yes, how could I forget. I found it funny how they're talking about taking fighting out in that scene when they're playing NHLPA '93 (hence making Gretzky's head bleed). A fun little anecdote to pass along. In the past I worked on the NHL 2K series of games, and our sound guy back then, Joel Simmons, is the brother of the guy who animated the blood and players kicking their feet when they got injured in NHLPA '93. That was the work of George Simmons.
    2 points
  13. SUper cool that you placed everything together like this. WOuld be amazing If we can get 95 stuff simialr to this.
    1 point
  14. K22067 - North Huron, ON The rare box with the old EA logo inside the box
    1 point
  15. I looked into this more, I'll prob post some info on how acceleration and top speed works soon. In 94, where we have a 0-30 range for Speed, there are only 15 entries in the MaxSpeed table. So, when the value is divided by 2 (shifted right by 1 bit), it will check if the Speed value was odd. Since there's no way to handle remainders, it needs to do extra math. So if it finds the starting Speed value was odd, it will take the difference between the 2 steps, divide that by 2, and add it to the lower MaxSpeed entry (So that it is halfway between the 2), and use that for MaxSpeed. Why are the MaxSpeed values squared? Because it is adding the squares of the new X and Y velocities and using that number to compare to MaxSpeed. Also, should be noted, if the player has the puck and is joypad controlled, their velocity adjustment will be halved. So they will be slower to get up to speed than without the puck (does not affect CPU players carrying puck though)
    1 point
  16. Thanks @JamaL! Truth be told, I've only scratched the surface of what Rhombus can do. Do you have any documentation or tips on it? p.s. just saw the new version!
    1 point
  17. This is great work! I am impressed by what you've accomplished and happy to see Rhombus in action here. It has motivated me to continue development.
    1 point
  18. This deserves a Bud lifetime achievement award and automatic entry into the Bud HOF. ❤️
    1 point
  19. I decided to make some research of skating speed. I have assumed, that distance from center line to goal line is 25+64 feets, make special ROM for experiment and made teams with skaters speed from 0 to 6. Then make several attempts, and using frame-by-frame video editor calculated the results. Here they are: ╔══════════════╦═══════╗ ║ Speed rating ║ KMH ║ ╠══════════════╬═══════╣ ║ 0 ║ 31,84 ║ ║ 1 ║ 36,62 ║ ║ 2 ║ 40,13 ║ ║ 3 ║ 44,39 ║ ║ 4 ║ 48,03 ║ ║ 5 ║ 51,40 ║ ║ 6 ║ 54,25 ║ ╚══════════════╩═══════╝ Then I found Adam Catalyst's post about changing speed rating inside the ROM, at address 0x10D76 (16 values for different speed levels, values are squared). So I made specific ROM's, where all 16 levels were equal to level 0, 8, and 15. I found good correlation between value in table and speed, coefficient 180. Here is the table: ╔═════════════╦═══════════════════╦═══════════════╦═══════╗ ║ Speed level ║ Initial HEX value ║ SQRT of value ║ KMH ║ ╠═════════════╬═══════════════════╬═══════════════╬═══════╣ ║ 0 ║ 01CD 9410 ║ 5500 ║ 30,56 ║ ║ 1 ║ 01FC E3E1 ║ 5775 ║ 32,08 ║ ║ 2 ║ 022E 8284 ║ 6050 ║ 33,61 ║ ║ 3 ║ 0262 6FF9 ║ 6325 ║ 35,14 ║ ║ 4 ║ 0298 AC40 ║ 6600 ║ 36,67 ║ ║ 5 ║ 02D1 3759 ║ 6875 ║ 38,19 ║ ║ 6 ║ 030C 1144 ║ 7150 ║ 39,72 ║ ║ 7 ║ 0349 3A01 ║ 7425 ║ 41,25 ║ ║ 8 ║ 0388 B190 ║ 7700 ║ 42,78 ║ ║ 9 ║ 03CA 77F1 ║ 7975 ║ 44,31 ║ ║ 10 ║ 040E 8D24 ║ 8250 ║ 45,83 ║ ║ 11 ║ 0454 F129 ║ 8525 ║ 47,36 ║ ║ 12 ║ 049D A400 ║ 8800 ║ 48,89 ║ ║ 13 ║ 04E8 A5A9 ║ 9075 ║ 50,42 ║ ║ 14 ║ 0535 F624 ║ 9350 ║ 51,94 ║ ║ 15 ║ 0585 9571 ║ 9625 ║ 53,47 ║ ╚═════════════╩═══════════════════╩═══════════════╩═══════╝ And if I'm trying to find correlation between Speed rating and Speed level - it's hard, there is no direct link to some levels, and max speed level (at speed 6 of players) is even more than 15. ╔══════════════╦══════════════════════════╦═══════╦═════════════╗ ║ Speed rating ║ Speed value(SQRT of HEX) ║ KMH ║ Speed level ║ ╠══════════════╬══════════════════════════╬═══════╬═════════════╣ ║ 0 ║ 5732 ║ 31,84 ║ 0,84 ║ ║ 1 ║ 6592 ║ 36,62 ║ 3,97 ║ ║ 2 ║ 7224 ║ 40,13 ║ 6,27 ║ ║ 3 ║ 7990 ║ 44,39 ║ 9,06 ║ ║ 4 ║ 8645 ║ 48,03 ║ 11,44 ║ ║ 5 ║ 9252 ║ 51,40 ║ 13,64 ║ ║ 6 ║ 9766 ║ 54,25 ║ 15,51 ║ ╚══════════════╩══════════════════════════╩═══════╩═════════════╝ Anyway, players skate like rockets, I'll try do "real speed" mod, but possibly it will be not so fun to play.
    1 point
  20. No, this was just recently found out, a few years ago. EARE has it wrong still. Just set the PK to the PP values you want and vice versa
    1 point
  21. Curious what others use. I've used a different weighted system to smoz depending on the context, but usually I have full line changes on so the Team Overall rating is simply just an straight up average of the Overall rating of every player on that team.
    1 point
  22. No, there's no standard. I used to use a function that did a weighted average like this. Sort the players by rating and position. Call the best forward F1, etc. Sum = F1x3 + F2x2 + F1x1 + D1x2 + D1 + G1x3 Rating = Sum/12 Except I think I factored F4 and D3 into the rating as well... This was for a no-line-changes draft league. For a general ROM, you might do something like... Sum = F1x9+F2x8+...+F9x1 + D1x6+D2x5...+D6x1 + G1x9 + G2x3 Rating = Sum/(sum of multipliers in the line above) I think I also added the best player in an extra time since a single good player can make a bad team OK (e.g. Klima on the Oilers)
    1 point
  23. Thanks for the hard work @Sauce!!
    1 point
  24. yeah just didn't have the licensing for Super Nintendo for some reason. I love this game, super fun.
    1 point
  25. If I might add to this. I've already made a spreadsheet template [OpenOffice format but should be importable your program of choice] You don't actually need to stick to the original calendar, [This file has the 1917-18 season in it as an example] but you do need to make sure that the days are all accounted for. This one was based on NHL98, but the calendars for 96-98 all start on a different day, so you would need to add or delete some days at the beginning to make sure that the dates line up. And note that every day is represented with the format of [Number of games on that day], [Game 1 Home Team], [Game 1 Away Team], [Game 2 Home Team], [Game 2 Away Team], etc... So in the example of 1917-18, the first games are on 19 December, so after a bunch of 00s representing every day from 04 October to 18 December, and teams numbers are zero indexed, so the first official day would look like: 02 02 00 01 03 02 = Number of games played on that day. 02 = First Game, Home Team, 3rd Team [Ottawa Senators] 00 = First Game, Away Team, 1st Team [Montreal Canadiens] 01 = Second Game, Home Team, 2nd Team [Montreal Wanderers] 03 = Second Game, Away Team, 4th Team [Toronto Arenas] The day after there are no games so that is followed by another 00, but the 21st has two games as well so the format is carried on. The other thing to note is that every day must be accounted for, [even 29 Feburary] so the full range in the addresses in each game need to be 00'd out [I think NHL'95's season mode used FF's to nullify the extra space, but '96-'98 uses 00's] I also might recommend going in small chunks of dates. I did a few seasons and had a few typos I'd missed and would end up with dates not lining up or some days with 27 games on them or something and it was a pain to track some of those mistakes down. Last bit. The divisional alignments are listed in another post here [somewhere] so you can set which teams play in which conference, and you don't actually need to include every team in the standings if you don't want, but unfortunately the extra All-Star teams seem to cause some glitches if you try to include them in the season standings in '97 or '98 ['96 had no All-Star teams]. This did open things up for some fun possibilities despite the risks though. 96-98 Season Template.ods
    1 point
  26. Well, that’s a bummer! Maybe things will change down the line and you’ll be back to do some more roms.
    1 point
  27. I believe it’s the same game as Sega’s Mario Lemieux Hockey. Both fun games.
    1 point
  28. For those who don't want to watch me ramble for over an hour on my stream (btw stream is here - https://www.twitch.tv/videos/2120586640) Using the source code from 92 (Link - NHL Hockey Source Code), we are now able to find out how things work a lot easier than finding a needle in a haystack like we had done in the past. NHL94 has improved upon 92, but much of the code is the same (with some refinements and added things, like bonuses). The most important thing is we have an idea how the RAM is laid out (basically all the variables for the game). How does checking work in 94? Weight is involved. Where you are on the rink is involved (You're getting checked against the boards? You're getting knocked down). Checking rating is involved. Also, impact value is involved (how hard you are hitting depending on your velocity and your opponents velocity, and the distance between the 2 of you). Are you controlling the player checking, or is the AI? Also, the weight bug (lets lighter players check heavier players, regardless of a lot of factors above) - Here's the checking formula for 94: Check if checking player is in checking animation If impact value is more than 20 decimal, the check will initiate. If not, there will only be momentum transferred between the 2. Starting value for calculation (120 decimal or 240 decimal if player controlled) - Subtract (Wgt * 8) of player checking - Add (Wgt * 8) of player being checked - Divide total by 2 - Check if player will hit the wall (see below) - Subtract impact value - If the total is 0 or negative, proceed to knock down. - If total is positive, then check if player will hit wall. If he will, proceed to knock down. - If total was positive, and player is not near a wall, then randomize the result from above (the RNG will choose a number >= 0 and < result from above) - Load the checking attribute (which is Chk rating * 5 + bonuses (Hot/Cold and 3rd Period Bonus). Divide it by 2 (Value will be between 0 and 15) - Next, subtract Checking value from above from the RNG result. If the answer is <= 0, then proceed to knock down. If positive, then check Agression attribute and see if there will be a penalty from the hit. Knock down section also checks for penalty from contact, but there is slightly less of a chance of a penalty compared to them not getting knocked down. After this part of the code, it will check for toddle (related to stickhandling). This checking formula is almost the same as it is in 92, except for the fact that some math is different (there's no bonuses, attributes are on a 0-15 scale instead of 0-6), the starting value for ALL checks is 60 decimal. In 94, the attributes are stored in RAM with a 0-30 scale (which is why you see a divide by 2 in a few places here). What's the weight bug problem? Lighter player can check heavier players with ease, when player controlled. This is because of the large boost given to the starting value. The subtracting and adding of the weight in this formula is done "byte" size, which means that value can never be over 255, it will overflow and 256 = 0 (it will start over at 0). Because of this, the rest of the calculation is pretty much thrown out the window (impact value will play a very small role in a weight bug check). So how to fix the weight bug? Remove the boost to the starting value when player controlled. I believe this may have been left in during testing, since the formula itself is almost the save as in 92. If the starting value was set to 120 decimal for both AI and player controlled checks, we would see much more "realistic" results. Weight difference won't be a huge factor anymore (still a bit of a factor), but impact and checking attribute would play more of a role. What's impact value? This is something I was able to figure out using the source code. The game tracks the velocity of the players (speed + direction). When it senses 2 players are close enough for contact, it will calculate a transfer of momentum between the players (when players hit, they slow down, bump each other back, etc). So it will calculate impact based on the velocity of both players, and the distance between them. The players speed is controlled by their acceleration, which in turn is controlled by Wgt and Agl attributes. So the faster a player is going, the more impact they will cause. If 2 skaters are skating at each other, the impact will be higher. If a player getting checked is skating away from the checker, the impact will be lower. If you hit the player near the end of your speed burst, the impact may be lower (not going as fast as you originally were). Funny thing is even with the weight bug, its actually harder for Theo Fleury (3 wgt) to check Marty McSorley (14 wgt), than it would be for him to check someone like Mats Sundin (7 wgt). He needs some impact to check Marty, where as with Mats, as long as he meets the minimum impact value to initiate the checking calculation, hes knocking him down. Here are some examples with weight and impact: 4 wgt checking (player controlled) a 10 wgt with minimal impact just makes it to the knock down phase (-4). 4 wgt AI player can do it with a ton of impact though (and some RNG luck). Closer weights here. 5 wgt AI checking a 7 wgt player with 50 impact value can definitely have a shot with some RNG luck (RNG result would be between 0 and 18 here), then subtracting the Checking attribute (0-15 scale after divide by 2). Marty McSorley might be able to survive this check from Theo Fleury with the right RNG and minimal impact. AI controlled Mario Lemieux might struggle knocking down Mike Gartner with low impact. Gotta get a good RNG roll (low value here).
    1 point
  29. It's up to you whichever weight bug fix you'd like to do. But if you want to do this one, yeah, I would remove the WBF and then change the bytes
    1 point
  30. A gentleman and a scholar! Thanks, this fixed it. I was actually able to launch it through Retroarch itself, so it was showing up on the list in RA. But this helped it show up under the game files.
    1 point
  31. its been a while since I used OnionOS but I believe you may have to manually refresh your rom list
    1 point
  32. I’ve added the troubleshooting sections from the NHL 94 & 95 pc manuals. I think you need to make sure you have enough conventional memory, and you need to make sure your memory configuration is correct, and have files=30 and buffers=30 in your config.sys
    1 point
  33. I've been trying to solve some of the bugs in this ROM, and am graduating to slightly more powerful tools. I need some help rounding out my toolset. HEX editing. I've gone from a basic HEX editor to ImHex, and despite it being a little glitchy and a pain to setup, I can't recommend it highly enough. It is vastly superior to a basic HEX editor for hacking a ROM. https://imhex.werwolv.net Emulation. The forums suggest using various builds of Gens for hacking, but I cannot get any build of Gens to show some errors that users have reported on original hardware, or show up in Genesis Plus GX or Exodus. I know in the past the author of Genesis Plus GX has warned about accuracy issues in Gens, and FWIW, I am finding Exodus the most powerful and accurate emulator for debugging, but this stuff is all pretty new to me, so take it with a grain of salt. For folks that use Gens. Do you know of any any settings that I might be missing, that improves it's accuracy? For folks that recommend Gens, have you compared it against Exodus? Would you still recommend Gens? For folks that recommend Gens, which build? In the past I've seen @smozoma suggest Gens_ReRecording_r352.zip, @kingraph suggest Gens r57shell Mod, and off-site I've been encouraged to try Gens Kmod. I've found the latter the most helpful, followed by r57shell mod, but have had accuracy problems with both. For folks who DON’T recommend Gens, what emulator do you recommend for debugging & hacking? For everyone: do you know of a Mac native build of Exodus? For everyone: do you know of a build of Genesis Plus GX with debugging / hacking tools? Any and all advice appreciated! cheers, -a
    1 point
  34. null pointer exception! how very "C" programming language.
    1 point
  35. I think that's $30E. Maybe it is different in the 32 team ROMs? I looked, I don't know what it's trying to do with $30A. Right before it enters the routine where it's crashing, it is setting A2 and A3 to the start of the team structs. EDIT: Looks like A2 is set to $30A in 12 spots, and in all cases, few instructions after, there's a call to doBitMap. EDIT2: OK, when looking at the 92 source code, there are instances before doBitMap called, a2 is set to #null. null is a long variable set to 0. At $30A, it is a long word of 0.
    1 point
  36. 1 point
  37. Going into that subroutine starting at $12A2E, A2 is the start of the Home Team Struct ($C6CE) or the start of the Away Team Struct ($CA32), depending on who has the PP (A2 is the team on the penalty kill). The other team struct (PP team) will be in A3. D0 is the end result in seconds and is returned from the function and used to calculate the displayed time. ; a2 = team struct on PK ROM:00012A2E ; a3 = team struct on PP ROM:00012A2E ROM:00012A2E CalcPenTime: ; CODE XREF: updatepwrplay+82↓p ROM:00012A2E 4240 clr.w d0 ROM:00012A30 4243 clr.w d3 ROM:00012A32 41EA 009A lea $9A(a2),a0 ; Move penalty box list start into a0 ($C768 for Home, $CACC for Away) ROM:00012A36 ROM:00012A36 _getstatus: ; CODE XREF: CalcPenTime+18↓j ROM:00012A36 ; CalcPenTime+20↓j ROM:00012A36 4242 clr.w d2 ROM:00012A38 1418 move.b (a0)+,d2 ; move value at a0 (then increment) into d2 ROM:00012A3A 6B00 0014 bmi.w _endoflist ROM:00012A3E 3432 2066 move.w $66(a2,d2.w),d2 ; move status of d2 player into d2 (pen time) ROM:00012A42 0802 000E btst #$E,d2 ; test bit 14 if set ROM:00012A46 66EE bne.s _getstatus ; branch if set (player on ice, injured, on bench) ROM:00012A48 9443 sub.w d3,d2 ; sub d3 from d2 ROM:00012A4A D042 add.w d2,d0 ; add d2 to d0 ROM:00012A4C 3602 move.w d2,d3 ; move d2 into d3 ROM:00012A4E 60E6 bra.s _getstatus ; loop till end of list ROM:00012A50 ; --------------------------------------------------------------------------- ROM:00012A50 ROM:00012A50 _endoflist: ; CODE XREF: CalcPenTime+C↑j ROM:00012A50 0C6B 0006 0024 cmpi.w #6,$24(a3) ; checks how many players are on ice (6 = everyone) ROM:00012A56 6700 2A0C beq.w rtss2 ; exit if so ROM:00012A5A 9043 sub.w d3,d0 ; sub d3 from d0 ROM:00012A5C 41EB 009A lea $9A(a3),a0 ; same as above, opposite team ROM:00012A60 4242 clr.w d2 ; clear d2 ROM:00012A62 ROM:00012A62 _getstatusopp: ; CODE XREF: CalcPenTime+40↓j ROM:00012A62 1418 move.b (a0)+,d2 ROM:00012A64 6B00 29FE bmi.w rtss2 ROM:00012A68 0833 0006 2066 btst #6,$66(a3,d2.w) ; check if bit 6 is set (pen time 64 sec+) ROM:00012A6E 66F2 bne.s _getstatusopp ; branch if set ROM:00012A70 B073 2066 cmp.w $66(a3,d2.w),d0 ; compare pen time a3 to d0 (total time for PP) ROM:00012A74 6D00 29EE blt.w rtss2 ; exit if less than ROM:00012A78 D043 add.w d3,d0 ; add d3 to d0 ROM:00012A7A 4E75 rts ROM:00012A7A ; End of function CalcPenTime
    1 point
  38. I’ll echo BB and say thanks for all your work this season!
    1 point
  39. Alright. How about whatever logic defines the sixth skater and the goaltender, and put them both on the ice at the same time? There is a 1920 Olympics mod already out there that could use some accurate rules. Plus a potential for an old Pacific Coast Hockey Association mod with this addition.
    1 point
  40. Nice work! Cool to see an old classic brought back to life this way!
    1 point
  41. @Toe-Knee You saw well into the future...good call/prediction! https://www.nhl.com/video/lane-hutson-awarded-calder-memorial-trophy-6374058307112 @Flame4Life Sorry. I was feeling that Wolf deserved it as well but Hutson had a great year and I can't knock the voters for giving him the Calder.
    1 point
  42. I am. Thank you! Recently won the Cup with the Oilers. It was fun. Hope real life imitates art in this case!
    1 point
  43. Actually if it's okay with you Adam, I think I'm going to edit your game to make the default match up Winnipeg vs Washington. I know that it's supposed to be the teams that made the Finals, but aside from normally using the Jets anyway, I'll just justify it as going with the top Regular Season teams, rather than have to look at those dumb Panthers for another year.
    1 point
  44. Alright. We're breaking a weird one out of its cage today. Cage match that is. The basis of this one is a big what if. What if the folks who made this classic, tag teamed up with the folks who made this... classic?, then play into a tie-in with a tournament format and you get this classic. Now to frame this as a retro review, We'll have to start with the obvious. Returning to the developer role after 1989's WWF Superstars and 1991's WWF WrestleFest arcade games, Technōs Japan Corp and their subsidiary American Technōs were looking for a win and hoped that returning to the only well that had been commercially successful for them, outside of their Kunio-kun and Double Dragon franchises, would help the failing company. Apparently also taking a page out of the Kunio-kun book where Technōs combined fighting characters with contact sports, Vince McMahon decided that it would be a good idea to license his WWF brand to a non-arcade-wrestling game this time around. It is probably just a coincidence, but it is too bad that Technōs filed for bankruptcy protection less than a year after completing this game. Not that I'm saying that this game did them in, but the timing leads one to believe otherwise. Not getting off on the right foot here... Never mind all that. Now that the stage, or ring, is set up, it's time to look at the game. I'm not sure if the "winners" campaign was still in swing by this time, but that splash screen brings back some memories. Being a North American release, the game is localized with the American Technos distribution label. Titan Sports is of course the parent company of the WWF at the time. Getting right into it, while listening to the chuggy music, the branding is right out of the Superstars era, with many references to previous games, tv shows and events. The text is flavoured with references as well and a player can mark out in different types of events from a Single Match, an Ironman Single Elimination Tournament or a full Best-of-7 Survivor Series and matches varying in length of nine, 15, 24 or take on Ric Flair in a full 60 minute match. Tagging between lines can be turned off if you just want to play with your top five favourites, or set to Player or Manager [computer] controlled. The goalie can be controlled by the player as well, or locked out of player control. Macho Man approves of penalties. Getting into a game, one is treated to a pre-match introduction by the legendary Mean Gene Okerlund as he runs down the teams and who is hot or cold. I should probably note here that the RNG variance on the Hot and Cold streaking is quite high. This makes things a bit interesting as you will never really know who is popping versus who is probably hiding a bad injury. On to the game menu screen, it starts to become obvious that the arena is not your typical hockey rink. The boards are replaced with ropes, the plexiglass with steel cage bars and the Zamboni with a runaway cart from Wrestlemania 2 and 3. The banners and jumbotron also callback to previous WWF games. Evidently, the Ultimate Warrior and Bret are feeling really good today. And a familiar pair is seated ring rink side providing commentary. Once in a game, more features are visible. The referee is sporting a gold WWF logo on his shirt and the game clock advertises the Technōs America Sports Network, which unfortunately didn't become a thing. While The Rock wasn't a thing either, yet, his dad was, lending his tag team's name to one of the teams. There are only sixteen teams featured in the game. Enough to hold a Survivor Series bracket, but given the limited number of Superstars in the featured era, that is plenty. It should also be mentioned at some point that each team only comprises of twelve players, enough for two full lines and two goalies, plus two managers that are only going to get involved when the goalie is pulled and they can run some interference. Or not at all, in the case of some managers who prefer to let others get their hands dirty. Despite the slight anachronism, the Mega Bucks are united as the brute squad blocks the net. While by today's standard, about half of the wrestlers featured in this game are dead now, it could be noted that a small handful in the game had already passed by the 1995 release date. But the game draws from notable wrestlers who were prominent between 1980 and 1995 just to fill every team so it works in universe. Also, why would anyone want to not play as Andre? The game features colour photos for at least 224 wrestles and managers. While not available to be put on a line by the player, the managers can be viewed in the profiles screen like every other player. Getting into the game finally, it soon becomes clear that there have been some tweaks to the rules from your typical hockey video game. Aggressive play is promoted, even if sometimes it is penalized and your entire top line has to take a seat on some folding chairs. Due to the small teams, minor penalties are only a minute long and a major, usually for injuring another player, is two minutes. But it should also be noted that since you are effectively only swapping between two lines, the player fatigue rate is slow, while a player on the bench recharges very quickly as they stomp the side ready to jump back in. Vince didn't even have time to react to the chaos in front of him. Another thing to keep in mind is that the opposing manger will try to push in the dying minutes while behind. If your computer controlled opponent is down by one, two or three goals with less than a minute to play, they will pull their goalie for an all out attack. But you can attack them first, such as throwing them into the concrete wall that is meant to separate the teams so they keep their transgressions to the ice. [it was probably too hard to animate the players getting up to yell at each other back in the 16-bit era anyway] Another notable difference is that the Match Superstars is rated based on who gets over with the crowd the most. And since hitting gets the crowd to their feet, Certain players will get the fans' vote, even if their team gets outscored. Note that the same RNG that causes the wild swings in Hot and Cold also boosts a players boost, so big hits can be plentiful if you're not afraid to dish them out. Winning the tournament will give you the prestige of raising a championship belt, but the losing team did get to take out their frustrations on the hapless jobronis. I think I featured all of the graphics in this one, but to recap the game play and highlight a few other bits I may not have mentioned yet: RNG is jacked up for cheap pops, dozy painkiller induced slumps and bit hits that your opponent will sell like a champ. With only two complete lines [plus a third "best of" hybrid] fatigue is programmed to facilitate long shifts and quick recoveries. Team names adopt a four letter format. Match length refers to total game length. 9 minutes [3x3], 15 minutes [5x3], 24 minutes [8x3] and 60 minute man. Three-Star calculator favours rough play. Penalties of one or two minutes in length. Players can be moved around to play any position but goal. Two non-player assigned managers are on each team. Of which one will usually jump in if the goalie is pulled. X-Button selects the goalie. Goalies don't wear masks as they fearlessly roam the entire rink. To save the player from themselves however, if the goalie crosses over center ice, the play is whistled dead. Because nothing is worse than goalie rushing the other end of the rink and then losing the puck or getting knocked down by the opposing goalie. But player controlled goalie can roam with the puck indefinitely, while the CPU cannot. Please use responsibly. Off-sides are optional, Icing is not. As in there are none. Use however you want. I lied, there is a 17th playable team, but that one is more of a "Be a Player" mode edition featuring You! and a few ringers to help you out. Number of teams has been increased to 21. Sixteen "main" teams, plus "Your" team, plus three additional "Enhancement teams", plus an unlocked bonus team. NEW!! 3.0 update with even more RNG for those days when the painkillers either work well, or don't. Cage [glass] might break a little easier Non-player controlled wrestlers are going to get a little more aggressive out there. Injuries are slightly less uncommon, but the aim of the name is to survive after all... Rather than end on a fake rating, I may as well note that this one has been in and out of development for quite a while but if anyone comes across something I missed, or hopefully if you just like it, let me know eh. Now updated with four more playable teams! "Wide screen" viewing. Things are heating up off the ice Definitive Version WWF-SSShoot-Out v3.0.bin Previous version with most notable difference being the non "wide-screen" view. WWF-SSShoot-Out v2.1.bin
    1 point
  45. Okay, it's been more than a few days, but I was busy. But on the other hand, I decided to stick to a visual representation of the teams, so I took some more time to whip these up as some digital instructional manual pages. New teams added for V2.0 update. Wait. Update you say? [or maybe you didn't] Well yes. Admittedly the teams aren't that great, but you do get a decent central Americas team with less Luchas than originally thought. While originally omitted, long time announcer/spot talent Jerry Lawler gets a team mentoring some up-and-comers with some help from a few more back-niners. And finally, a team of perhaps some guys who think higher of themselves than warranted, [even when they are called "mid"] but one can't go about calling themselves the "Enhancers" without sounding even more lofty or like a '50s doo wop band. Update in the original post
    1 point
  46. Rom with all the correct player names from 1993. KGBcomplete.smc
    1 point
  47. Not at all. However, playing '95 with '94 sprites and arena / visuals would be interesting. And I'm sure @segathon has a patch for you to wear.
    1 point
  48. Having the season mode and other features from 95-98 with but still having the game play from 94 would be ideal. Floating doing this for a while but never got started because of how old / outdated the hardware is.
    1 point
  49. This debate has finally come to an end with this super scientific scoring method by NARCH_TV For those who can't sit through / find the results 1 - Sega Genesis 2 - Sega CD 3 - Super Nintendo
    1 point
  50. Okay, I have tested and validated what happens so I can clear the air here. I'll explain how it works in detail first, and then how it has been applied to Blitz/GDL leagues. The Detail You can set the lines for Sc1, Sc2, Chk, PP1, PP2, PK1, and PK2 in NOSE. When you play a game with no line changes (assume Sc1 = NLC), the sub that comes in for each position will be the next player in that position on the next line in the order I referenced before. So for example, if your Sc1 Center gets injured or gets a penalty, the player that comes in will be the Sc2 center. If that player is unavailable (already on ice or injured), the Chk center goes in, etc. and that progression follows all the way down to PK2. So the replacement logic for the C is initially: Sc1-C --> Sc2-C --> Chk-C --> PP1-C --> PP2-C --> PK1-C --> PK2-C And this is true for all positions. Sc1-LW --> Sc2-LW --> Chk-LW --> PP1-LW --> PP2-LW --> PK1-LW --> PK2-LW Sc1-RW --> Sc2-RW --> Chk-RW --> PP1-RW --> PP2-RW --> PK1-RW --> PK2-RW (yes, there is a PK-RW that you have to set in NOSE even though that person never plays!) Sc1-C --> Sc2-C --> Chk-C --> PP1-C --> PP2-C --> PK1-C --> PK2-C Sc1-RD --> Sc2-RD --> Chk-RD --> PP1-RD --> PP2-RD --> PK1-RD --> PK2-RD Sc1-LD --> Sc2-LD --> Chk-LD --> PP1-LD --> PP2-LD --> PK1-LD --> PK2-LD Now, what happens after you exhaust those options (i.e. you have the same setup for each line)? After the Center options are done, the next player is the available LW (in the same order as referenced above...Sc1-LW, Sc2-LW,Chk-LW...). After that goes the RW. The sequence for the other positions is C-->LW-->RW LW-->RW-->C RW --> LW LD --> RD --> LW RD --> LD --> LW Again, each of those positions goes down each line (Sc1,Sc2,Chk,PP1,PP2,PK1,PK2) How does this work in Blitz/GDL? Well, to simplify the process, we set Sc1 and Sc2, and leave Chk,PP1,PP2,PK1,PK2 equal to SC1. In effect, leaving only 2 lines and asking people to just post those two lines. To post everything else would be time consuming, overkill and confusing. So how do I set a 3rd defensemen to come in for either my LD or RD? Let's say you had your starting two defensemen (Def 1 and Def 2) and you wanted Def 3 to come in for either. This is the lineup that should be set: Sc1 - LD Def 1 RD Def 2 Sc2 - LD Def 3 RD Def 2 Chk - LD Def 4 RD Def 3 (remaining lines - PP1,PP2,PK1,PK2 set to Sc1) SO, If Def 1 (Sc1-LD) gets a penalty, the next LD available comes in and that is Sc2-LD, or Def 3. Check! If Def 2 (Sc1-RD) gets a penalty, the next RD available comes in. Sc2-RD is Def 2, who is unavailable because he just got a penalty, so the next available is Chk-RD, or Def 3. Check! In that same scenario, if two defensmen get a penalty, Def 4 makes his appearance. You can do the progression in your head, but essentially everyone in unavailable until it gets to him. So in order to have that work, the lines in the ROM for defensemen should include Chk, or we ask people to post "defensemen to come in for either LD/RD" if they don't want to list the other two in Sc2 and the person making the ROM uses the lineup above. Happy to clear up any questions as I feel like I have a pretty good grasp of this now.
    1 point
×
×
  • Create New...