northstar91 Posted June 8, 2011 Report Posted June 8, 2011 Hey everybody! I've been reading around the forums for a while now, impressed by all of the hacks/edits performed on the GENS version (most notably the new Clockwise ROM and new stat creations). With the increased interest on hacking for the SNES side, including attempting to get 30+ teams and to deal with logos, I want to help out as much as possible. That said, the first thing we should do to streamline SNES hacking/editing is to compile all the information we have on the ROM in one location. The eventual goal is to have a complete ROM mapping of NHL '94 for SNES (which I know will be difficult, but it can be done). For now, I have started a Google Spreadsheet to compile information related to locations of palettes and pointer tables I have found on the forums (click on the link below to view it). If you have information about any other locations of pointer tables/palettes/etc. that is not on the document, post it on this topic and I can add it to the spreadsheet. Spreadsheet (Note: offsets assume header on the ROM) https://spreadsheets.google.com/spreadsheet/ccc?key=0ArV1f1EnnLgZdElrZ3d0NUFWeGhSMndIQkpNSkRlMEE&hl=en_US&authkey=CMSFy4kC Quote
trudatman Posted June 8, 2011 Report Posted June 8, 2011 YAY! a few things: -I think this thread should have the data in it, too, not just as a link. maybe the in-thread text would be a streamlined version with the obscure or super-detailed stuff left to the spreadsheet. -what is "ptr?" -why are you assuming a header? I don't mean "don't do that," I just want to examine the choice. when I hack, I don't add nor remove headers, I don't think, so which would that be? -I want to say I will be adding a lot to this, but I'm just not that organized. here's hoping I pull it together. we very much will benefit from an organized, central location to cull data from. -screenshots of the tile editing stuff would be nice additions to this thread. -I can stop dropping irrelevant hints about the need for such a project. -I love you. Quote
northstar91 Posted June 8, 2011 Author Report Posted June 8, 2011 YAY! a few things: -I think this thread should have the data in it, too, not just as a link. maybe the in-thread text would be a streamlined version with the obscure or super-detailed stuff left to the spreadsheet. -what is "ptr?" -why are you assuming a header? I don't mean "don't do that," I just want to examine the choice. when I hack, I don't add nor remove headers, I don't think, so which would that be? -screenshots of the tile editing stuff would be nice additions to this thread. -I can stop dropping irrelevant hints about the need for such a project. 1. This is just a start. We can have stuff in both (I was imagining that I would make a reference document if people preferred). 2. "ptr" is pointer (CS shorthand, I'll try to avoid it) 3. I'll include both header and non-header stuff eventually. I've been using a header on my edits, so that's what I am used to, and I know that others use headerless ROMs. I'll work on that... 4. I personally haven't been trying tile editing stuff 5. I saw one of your posts mentioning the need for this, and I decided to follow through on it. Quote
trudatman Posted June 9, 2011 Report Posted June 9, 2011 I'm currently seeking fatigue and rest rates. might have to search for flipped hex data from the Genesis version, replace, test and repeat. Quote
trudatman Posted June 9, 2011 Report Posted June 9, 2011 ....header offsets to team data within each team are in Big Endian. Please note some of my notes/guesses may be wrong.... as I've never got into the SNES version to know any better (or care for that matter).Search for Hex 55000E00 to find the start header for all teams. Using LA at 0x000E3FB2 as an example (5500 0E00 7002 1D00 0E00 1300 1500): 5500 - 0x000E3FB2 + 5500 (85 bytes big endian relative offset) = 0x00E4007 (1st Goalie Player Name Byte length of 0E00 - 14 bytes until Jersey No). 0E00 - 0x000E3FB2 + 0E00 = Pallete? 7002 - 0x000E3FB2 + 7002 (624) = 0x000E4222 - 0D00 start of Team name length bytes 1D00 - 0x000E3FB2 + 1D00 (29) = best line - line changes off???????????? 0E00 - 0x000E3FB2 + 0E00 = Pallete? Same as above??? 1300 - 0x000E2857 + 1300 (19) = 0x000E286A. Bytes CBC0 - Amount of Goalies working from L to R... value > 0 = Goalie. Most likely acts as rating value of some sort too! As per the Genesis roms. Tested it within the SNES rom and worked as excepted... e.g. C000 only gave LA one goalie. 1500 - 0x000E2857 + 1500 = (21) = First line - line changes on?....[related image link] ....while the sega stored period lengths bytes are 012C 0258 04B0, the snes are 2C01 5802 B004....F9D2E - Period Lengths (find/change menu text to match) FC8A2 - Overtime.... ...(The first value is the default one)Game Mode - 0000 for Regular season, 0100 for Continue Playoffs, 0200 for New Playoffs etc. Home Team - 0B00 (Montreal, 0000 for Anaheim thru 001B for for ASW) Away Team - 0A00 (Los Angeles) Per. Length - 0001 - 0000 for 5 min, 0100 for 10 min, 0200 as 20 min (or as hacked) Penalties - 0000 - Off, 0100 = On, 0200 = Off, No Offside Line Change - 0000 - Off, 0100 = On, 0200 = Automatic Goalies - 0000 Manual, 0001 Auto.... The overall rating appears to be stored within each team's main data group (lines, roster, team name, venue etc). You can find the hex value of the overall rating two bytes before the line configuration data for the team....[related image link] ....These codes will work from the in-game/pause menu (use SNES9X's or ZSNES cheat utilities to dynamically add these codes after opening the rom):Address 7E1C90 Value 00 = Automatic Goalie (Game Genie code = DDFB-FA78) Address 7E1C90 Value 01 = Manual Goalie (Game Genie code = DFFB-FA78) Address 7E1C94 Value 00 = Defense Ctrl Off (Game Genie code = DDFB-F278) Address 7E1C94 Value 01 = Defense Ctrl On (Game Genie code = DFFB-F278)... ....Player stats (The individual stats of a player is directly after the player name.)XX 123456789ABCDE XX = Jersey # (decimal) 1 = Weight 2 = Agility 3 = Speed 4 = Off. Aware. 5 = Def. Aware. 6 = Shot Power 7 = Checking 8 = Stick hand: Uneven = Right. Even = Left. 9 = Stick Handling A = Shot Accuracy B = Endurance C = ? [editor's note: pass/shoot bias rating] D = Passing E = Aggression Goalie stats (The individual stats of a player is directly after the player name.) XX 123456789ABCDE XX = Jersey # (decimal) 1 = Weight 2 = Agility 3 = Speed 4 = ? 5 = Def. Aware. 6 = Puck Cont. 7 = ? (0) 8 = Handness 9 = ? (0) A = ? (0) B = Stick Right C = Stick Left D = Glove Right E = Glove Left Stats are 0-6 (0 = 25, 1 = 35, 2 = 45, 3 = 55, 4 = 65, 5 = 85, 6 = 100) Weight is 0-F (0 = 140, 1 = 148, 2 = 156, 3 = 164, 4 = 172, 5 = 180, 6 = 188, 7 = 196, 8 = 204, 9 = 212, A = 220, B = 228, C = 236, D = 244, E = 252, F = 260) Note: 789A in the goalie stats are almost always 0000, Daren Puppa is one of the few goalies that right handed. Thereby 0100 at those positions to create a right handed goalie.... =========================-- LINES -- Each teams lineup is in hex, between "team overall" and "number of players". In the following order: SC1, SC2, CHK, PP1, PP2, PK1, PK2. And each line is in the following order: G, LD, RD, LW, C, RW and then the extra attacker, when you pull your goalie. -- NO. OFF/DEF PLAYERS -- In 94, the single byte before the "team overall" bytes defines the amount of forwards and defense players. Anaheim for example has Hex 97, so 9 forwards and 7 defense players. Usual hex rules apply, A = 10, B = 11, .... F = 15. -- STATS/WEIGHT -- Stats are 0-6: 0 = 25 1 = 35 2 = 45 3 = 55 4 = 65 5 = 85 6 = 100 Weight is 0-F 0 = 140 1 = 148 2 = 156 3 = 164 4 = 172 5 = 180 6 = 188 7 = 196 8 = 204 9 = 212 A = 220 B = 228 C = 236 D = 244 E = 252 F = 260 --DEFAULT GAME SETTINGS-- At hex offset 000E9EC2 you can change the default game settings: -in game- -default- Game mode 0000 for Regular season, 0100 for Continue Playoffs, 0200 for New Playoffs etc. Team home 0B00 (Montreal, 0000 for Anaheim thru 1B00 for for ASW) Team away 0A00 (Los Angeles) Per. Length 0100 - 0000 for 5 min, 0100 for 10 min, 0200 as 20 min (or as hacked) Penalties 0000 - Off, 0100 = On, 0200 = Off, No Offside Line Change 0000 - Off, 0100 = On, 0200 = Automatic Goalies 0000 Manual, 0100 Auto -- Timers -- Offset Def. Hex Sec 5 min F9D2E 5 min 2C01 300 10 min F9D30 10 min 5802 600 20 min F9D32 20 min B004 1200 OT FC8A2 5 min 2C01 300 SO ?? ....Anaheim Mighty DucksPlayers: 18 Goalies: 2 Forwards: 9 Defense: 7 #HEX Name #DEC 01 Guy Hebert 1 02 Ron Tugnutt 2 03 Steven King 3 04 Troy Loney 4 05 Stu Grimson 5 06 Terry Yake 6 07 Bob Corkum 7 08 Anatoli Semenov 8 09 Lonnie Loach 9 0A Robin Bawa 10 0B Tim Sweeney 11 0C Alexei Kasatonov 12 0D Sean Hill 13 0E Randy Ladouceur 14 0F David Williams 15 10 Bill Houlder 16 11 Bobby Dollas 17 12 Dennis Vial 18 Team number: 0000 Offsets: 945504: Players 945505: Overall 945506-07: Unknown bytes. 945508: Best 945516: SC1 945524: SC2 945532: CHK 945540: PP1 945548: PP2 945556: PK1 945564: PK2 945572: First player (Goalie).... Quote
trudatman Posted June 9, 2011 Report Posted June 9, 2011 The hex code to edit the SNES playoffs exists at offset E6F59. It appears as if the teams are in hex numerical order even with the addition of Anaheim and Florida. You can easily add the all star teams by replacing any hex in the area with 1A or 1B....Anaheim ‘00 Boston ‘01 Buffalo ‘02 Calgary ‘03 Chicago ‘04 Dallas ‘05 Detroit ‘06 Edmonton ‘07 Florida ‘08 Hartford ‘09 Los Angeles ‘0A Montreal ‘0B New Jersey ‘0C NYI ‘0D NY R ‘0E Ottawa ‘0F Philadelphia ‘10 Pittsburgh ‘11 Quebec ‘12 San Jose ‘13 St Louis ‘14 Tampa Bay ‘15 Toronto ‘16 Vancouver ‘17 Washington ‘18 Winnipeg ‘19 ASE ‘1A ASW ‘1B To swop Toronto and Colorado, simply point your cursor to E6F59 in SNES; replace 12 with 1A; replace 16 with 12; and replace 1A with 16. To add an all star team, pick a team of your choice (I picked L.A. and Edmonton, because they sucked last year) and do a find but not replace all, and replace every other LA and Edmonton that appears with either 1A or 1B.... Here's how you add the all star teams as selectable playoff teams in SNES. Open a hex editor and make your way to byte 961299. You should see "1A 00" - change this to "1C 00". This will make the all star teams selectable in the menus. Make your way to byte 957182. You again should see a "1A 00" - change this to "1C 00" as well. This will not default the teams to Winnipeg (team 26) after you select them from the menu. Remember to put the all star teams in at least one of the playoff series or else the game will hang.... some notes on expanding player names for Statto's editor.. First, here is a document on pointers in SNES. They are waaay more confusing than in the Genesis. http://www.romhacking.net/docs/%5B50%5Dxcalpointers.txt. Here is an example: I thought that there must be a pointer to the start of the All Stars East team. I figured/guessed that the start was at offset 0E2857in the ROM, where there is a "U" character (value 55), since this character appeared right after all the rink names, except for the last team. So, my starting pointer is E2857. In SNES pointers, you only need the last 4 numbers in an address (don't ask why.. long story..), so you have 2857. Next, subtract the ROM header size, which is 0200. This gives you 2657. Next, you need the pointer's first digit to be between 8-F. So, if it's 0-7, add 8 to it. This gives you A657. Next, the SNES CPU is "little endian", so you reverse the bytes in the number, giving you 57A6. It turns out that this value, 57A6, appears in the ROM twice, and the 2nd time is the 'team pointer.' The pointers to the other teams are also in this area. Team Pointers are each followed by the value "9C00" (I don't know why.. (EDIT: this is the "bank" number.. it's part of the pointer, though sometimes it is found separate from the other part)) The team pointer table is from E27E7-E2857 (ie, it ends right were the ASE team data starts) As an excel sheet:snes94.zip... can you tell me where SNES stores the number of goalies? (i found it for forwards and D) Team Data format: starting at byte 0, using Anaheim as an example. 0: 55 (same for all teams?) 1: 00 (same for all teams?) ... 4: DD 5: 01 ... 14: 07 (0 offense, 7 defense strength) 15: 02 (0 home, 2 away strength) 16: 13 (1 PP, 3 PK strength) 17: 97 (9 forwards, 7 D) 18: 33 (team rating, 51 in decimal)... If you combine bytes 4-5 in reverse, you get 01DD (477 in decimal). This is the offset from the start of the team data to the City Name string ("..Anaheim" where ".." has the value "0900", which is 9, the length of the Anaheim string +2) If you change the length of a player name, you need to change the values in bytes 4-5 to match the change. ....The number of characters in the name of the arena precedes it by two bytes... so the "11" before "Pond in Anaheim" refers to the 17(decimal) bytes after and including that one... I was able to add letters to vanbiesbrouck's name! What I did: Part 1, move FLA and ANA to free bytes: Copy data from E6B4D-E6F59. This is the FLA and ANA team data. Paste (overwrite not insert) to E7B46. This puts FLA at E7B46 and ANA at E7D4B. Go back to E6B4D-E6F59 and overwrite it all with FFFFFF... Update the FLA team pointer at E2807 (see table in post above) to the value 46F9 (E7B46->7B46->7946->F946->46F9) Update the ANA team pointer at E2807 (see table in post above) to the value 48FB (E7D48->7D48->7B48->FB48->48FB) Part 2, extend player's name: Insert the missing characters in Vanbiesbrouck's name ("ouc", 3 extra characters) Update the length of Vanb's name from 1100 to 1400. Because data was inserted, you need to remove some of the 'free bytes'. Delete 3 of the FF bytes from before E8200. Update the "player info size" value in the 4-5th bytes of the team data. Old value: DD01. New value: DD01+0300=E001. Because we changed the total length of FLA's data, we need up update the pointers for all teams AFTER Florida in the ROM. In this case, it's just ANA: Team Pointer Location: E2807. Old data location: E7D48. New data location: E7D48+0003=E7D4B -> 4BFB NOTE: The 'data' section of the ROM ends at 0E81FF. The code starts at 0E8200. You have to make sure the code section doesn't move. NHL___94__U_____smoz.zip ....here are my notes from editing jerseys in SNES using a palette editor. The hex number next to the team represents the number '1' in the top part. If this doesn't make sense, too bad.1 DO NOT CHANGE 2 GLOVES AND SKATES AND STICK - keep black 3 SLEEVES 4 SHORTS 5 SOCKS primary 6 TOP PART primary 7 SKIN 8 TRIM top sleeve & sock trim - 9 TRIM bottom sleeve & main sock trim 10 TRIM middle sleeve and belt 11 OUTER JERSEY and HELMET TRIM 12 MIDDLE JERSEY and HELMET 13 TRIM - top stripe 14 NECK-SKIN & EYES 15 SKATES - DNChange 16 SKATES - DNChange Anaheim Ducks Away - $0B4BD0 Boston Bruins Away - $0B4BF0 Buffalo Sabres Away - $0B4C1E Calgary Flames Away - $0B4C30 Chicago Blackhawks Away - $0B4C50 Dallas Stars Away - $0B4C7C - green 1,9,7 Dallas Stars Home - $0B4FF0 Detroit Red Wings Away - $0B4C90 Florida Panthers Away - $0B4CD0 Hartford Whalers Away - $0B4CF0 New Jersey Devils Away - $0B4D50 NY Islanders Away - $0B4D70 NY Rangers Away - $0B4D90 Ottawa Senators Away - $0B4DB0 Philadelphia Away - $0B4DD0 Pittsburgh Penguins Away - $0B4DF0 Quebec Nordiques Away - $0B4E10 San Jose Sharks Away - $0B4E30 St Louis Blues Away - $0B4E50 Tampa Bay Lightning Away - $0B4E70 Toronto Maple Leafs Away - $0B4E90 Vancouver Canucks Away - 0B4EB0 Washington Capitals Away - 0B4ED0 Winnipeg Jets Away - $0B4EF0 All Stars 1 Away - $0B4F10 All Stars 2 Away - $0B4F30 Anaheim Ducks Home - $0B4F50 Boston Bruins Home - $0B4F70 Buffalo Sabres Home - $0B4F90 Calgary Flames Home - $0B4FB0 Edmonton Oilers Home - $0B5030 Florida Panthers Home - $0B5050 Hartford Whalers Home - $0B5070 LA Kings Home - $0B5090 Montreal Canadiens Home - $0B50B0 New Jersey Devils Home - $0B50D0 NY Islanders Home - $0B50F0 NY Rangers Home - $0B5110 Ottawa Senators Home - $0B5130 Philadelphia Flyers Home - $0B5150 Pittsburgh Penguins Home - $0B5170 Quebec Nordiques Home - $0B5190 San Jose Sharks Home - $0B51B0 St Louis Blues Home - $0B51D0 Tampa Bay Lightning Home - $0B51F0 Toronto Maple Leafs Home - $0B5210 Vancouver Canucks Home - $0B5230 Washington Capitals Home - $0B5250 Winnipeg Jets Home - $0B5270 All Star Team 2 Home - $0B5290 All Star Team 2 Home - $0B52B0 $0D7160 - Boston Team Banner also:0D5356 - Bruins to Stars centerice colors 0D5382 - Calgary Flames centerice color stumbled upon a 'pod' of teams, can't find any other ones though EDIT: 0D5356 to 0D5382 is the PALETTE for the centre ice logos, not any information about the centre ice logos themselves. Still useful. Pretty impressive tutorial from a Super Mario World editing forum: http://www.smwcentral.net/?p=thread&id=16714 I found it when I was trying to figure out the difference between DMA mode 0 and mode 1. mode 0 is 4 layers + 4 colours per palette mode 1 is 3 layers + 16 colours per palette. mode 1 would be used when loading a player portrait, since they're 16 colours. i suspect mode 0 is used to show team banners (upper half of banner = 4 colours, lower half = 4, text = 4..), but that's a guess. EDIT: reading the document made me realize that banner idea is wrong.. the mode 0 stuff i was seeing was actually changing palettes.. Here are some other references on:SNES Graphics: http://web.archive.org/web/20071111200111/...u/qsnesdoc.html General SNES programming info: http://en.wikibooks.org/wiki/Super_NES_Programming.... Apparently Anomie's documents are good:http://www.romhacking.net/?category=&P...itle=&desc= Register Map: http://www.romhacking.net/docs/%5B196%5Dregs.txt (Anomie's) http://fh.digitalmenagerie.org/coding/Snesmap.txt (someone else's) Found this stuff when looking for info about register 4202: 4202 wb++++ WRMPYA - Multiplicand A 4203 wb++++ WRMPYB - Multiplicand B mmmmmmmm Write $4202, then $4203. 8 "machine cycles" (probably 48 master cycles) after $4203 is set, the product may be read from $4216/7. $4202 will not be altered by this process, thus a new value may be written to $4203 to perform another multiplication without resetting $4202. The multiplication is unsigned. That bit about cycles is important: after setting 4202 and 4203 (to say 2 and 3), you need to wait a while (run some other instructions) before the result is ready. Once the result is ready, you can actually set a new value into 4202 (say 10), then immediately pull the old result from 4216 (2x3=6) before it changes to the new result a few cycles later (10x33=30). Quote
trudatman Posted June 9, 2011 Report Posted June 9, 2011 ....for anaheim: 07021307 is offense/defense 02 is home/away (set all teams to 11 to make them all average, not 00, sorry) 13 is pp/pk.... team, location begin/end, o/d h/a pp/pk advantages sequence ANH E6D5D-E6D5F 07 02 13 BOS E2DBA-E2DBC 41 21 21 BUF E3040-E3042 64 10 21 CGY E32CF-E32D1 42 00 00 CHI E354E-E3550 20 10 21 DAL E425D-E425F 14 10 00 DET E37E5-E3737 73 21 00 EDM E3AAB-E3AAD 16 02 12 FLA E6B5B-E6B5D 07 02 13 HFD E3D2B-E3D2D 17 02 00 LA. E3FC0-E3FC2 66 12 11 MTL E44E9-E44EB 52 11 21 NJ. E478C-E478E 34 11 12 NYI E4A39-E4A3B 53 21 00 NYR E4CAA-E4CAC 34 11 11 OTW E4F14-E4F16 07 02 13 PHI E51BA-E51BC 36 02 22 PIT E5445-E5447 71 20 21 QBC E56E0-E56E2 75 21 00 SJ. E596E-E5970 07 02 12 STL E5BE2-E5BE4 22 20 21 TB. E5E58-E5E5A 05 02 00 TOR E60EA-E60EC 20 20 11 VAN E638C-E638E 61 02 11 WPG E6613-E6615 45 11 11 WSH E68BB-E68BD 52 20 11 ASE E2865-E2867 77 20 00 ASW E2B12-E2B14 77 20 00 I just know the Genesis side where these are the meanings: Offense - Good 7 ... 0 Bad Defense - Good 0 ... 7 Bad PP - Good 2 ... 0 Bad PK - Good 0 ... 2 Bad Home - Good 2 ... 0 Bad Away - Good 0 ... 2 Bad (3 Really bad (OTT, FLA, ANH)) So to make everyone average, it's 441111. I think I remember checking the genesis version and finding that offense/defense are never actually used, so can be ignored. I believe 70 30 30 gives the best advantages and 07 03 03 gives the worst. Quote
trudatman Posted June 10, 2011 Report Posted June 10, 2011 I've been making some progress on the player portraits in NHL '94.NOTE: I am using a headerless ROM. This means the first 512 bytes ($200 in hex) have been deleted from the ROM, since the debugger emulator doesn't work with them. If you are using a ROM with a header (such as the default ROM), then add $200 onto offsets to translate to headerless. (Don't add to pointers, just offsets, which I mark with an @ symbol). Eg: headerless: @EC200. header: @EC400) Player-to-Portrait pointer table In the SNES version of the game, each team has 26 picture pointers allocated to it. This means each team can have up to 26 players with portraits. In the original NHL 94 ROM, only 6 players on each team (the starting lineup) actually have portraits, so their pointers point to their portraits, and the remaining pointers point to generic pictures. The exception to this is the All Star teams, which use most of their pointers, since most of the players are starting players on their normal teams. Within each team, the pointers go in the same order as the team roster data (goalies, then forwards, then defensemen). If the team doesn't have 26 players (none do, actually), then extra pointers still point to generic pictures. Starting at @0ecd53, there is a massive pointer table with 26 pointers for 28 teams. That's 728 pointers! As a pointer is 4 bytes and each team has 26 pointers, this means the start of each team is separated by 104 bytes ($68 bytes). @0ECD53 - ANA (1st: Hebert, 4th: Loney, 6th: Yake, 8th: Semenov 12th: Kasatonov, 14th: Ladouceur) @0ECDBB - BOS @0ECE23 - BUF @0ECE8B - CGY @0ECEF3 - CHI @0ECF5B - DAL @0ECFC3 - DET @0ED02B - EDM @0ED093 - FLA @0ED0FB - HFD @0ED163 - L.A @0ED1CB - MTL @0ED233 - N.J @0ED29B - NYI @0ED303 - NYR @0ED36B - OTT @0ED3D3 - PHI @0ED43B - PIT @0ED4A3 - QUE @0ED50B - S.J @0ED573 - STL @0ED5DB - T.B @0ED643 - TOR @0ED6AB - VAN @0ED713 - WSH @0ED77B - WPG @0ED7E3 - ASE @0ED84B - ASW For example, if you go to @0ecd53 in the ROM (Anaheim) (remember my offsets are headless! Add $200 if you have a header), the first pointer is $36ac9900. In data bank notation: $0099:ac36. Rom offset: @0cac36. So, Hebert's picture is stored at @0cac36. Now I just need to figure out how it decompresses the picture... The next pointer is $4EC69900. If you skip ahead $68 bytes (104 decimal), you'll see that the same pointer appears again. This is the generic goalie picture that the backup goalies use. A few teams don't have backups (NYI, NYR, to name two). I'll come up with an excel sheet with all the picture pointers some time. Palettes Immediately following the player portrait pointers section are the palettes. Each team gets its own palette. The palette is applied to any portrait loaded for that team, including the generic pictures. (Edmonton's portrait palette) They're 16 colours, 32 bytes ($20 bytes) Colour 0: usually magenta (31/0/31), used as the transparent colour * Colours 1-12: skin and hair tones. Colours 13-15: sweater and helmet colours. Sometimes used for black hair if the sweater has black. The fact that the player's hair and helmet will use the sweater colours will probably cause problems moving players between teams. * there are a couple teams that don't use magenta, they just use the grey/green background colour. Someone messed up! There are 25 palettes in one big group, and then the ones for Boston and Anaheim are crammed in elsewhere. The All Star teams each use the same palette (located between FLA and HFD for some reason), so there are 27 palettes in total. Palette locations: @0D747C - ANA @02FFDF - BOS @0D6A5C - BUF @0D6A7C - CGY @0D6A9C - CHI @0D6ABC - DAL @0D6ADC - DET @0D6AFC - EDM @0D6B1C - FLA @0D6B3C - ASE & ASW @0D6B5C - HFD @0D6B7C - L.A @0D6B9C - MTL @0D6BBC - N.J @0D6BDC - NYI @0D6BFC - NYR @0D6C1C - OTT @0D6C3C - PHI @0D6C5C - PIT @0D6C7C - QUE @0D6C9C - S.J @0D6CBC - STL @0D6CDC - T.B @0D6CFC - TOR @0D6D1C - VAN @0D6D3C - WSH @0D6D5C - WPG Sometimes the sweater colours get used in the players' helmets and hair, so if you change them, you have to watch out that a player doesn't end up with blue hair or a yellow helmet... There is a pointer table for these palettes at $ED8B3. The pointers are in alphabetical order (ANA-WPG), and then the two All Star teams at the end. I think I found the decompression routine.It's at @04373 (headerless) ($80/C373 in a trace).... Quote
smozoma Posted June 13, 2011 Report Posted June 13, 2011 Is this better than a thread guide? With a thread guide, you can fairly easily see all the topics, then follow the links to the a whole discussion on the topic you're interested in. At the least, you should provide a link to the topic you're quoting. On the plus side, you can eliminate the fluff and out-of-date info from the threads.. but what happens when the info here becomes out-of-date.. will people remember to update their quotes.. Quote
trudatman Posted June 13, 2011 Report Posted June 13, 2011 I don't know. I was just trying to cull some data from elsewhere and contribute. feel free to make another such link list. any work you put into the SNES side of things is greatly appreciated. I don't mean that your efforts in the Genesis stuff aren't, though. those efforts have surely helped me to actually enjoy those games through hacking. Quote
smozoma Posted June 13, 2011 Report Posted June 13, 2011 Oh I missed the spreadsheet. I like that... but I would add a column with links to the threads explaining those things. For a thread guide, do one of you want to take control on that? I wasn't a mod or anything when I set up the Gens thread guide. Quote
trudatman Posted June 13, 2011 Report Posted June 13, 2011 I like it all in one place, for my own ease of use, so... I'm not motivated to do it. I don't use smileys. http://twitter.com/diesmiley Quote
northstar91 Posted June 17, 2011 Author Report Posted June 17, 2011 (edited) I found the pointer table for center ice logos! They are located from @0E03B7-@0E0496 (headerless). It seems that the pointers are 8 bytes rather than 4. I'll update the Google spreadsheet. Experimenting with it, I found that if the second half is changed and the first half is unchanged, the logo gets distorted but the game is playable. By contrast, if the first half is unchanged and the second half is unchanged, the game breaks after the beginning of the game. Now we just have to figure out where the pointers for the logos in the main menu are located in the ROM. One would think since most of the pointer tables that have been found are in the Exxxx portion of the ROM, the main menu logo pointers would be there as well. Edited June 17, 2011 by northstar91 Quote
smozoma Posted June 17, 2011 Report Posted June 17, 2011 8-byte (64-bit) pointers? Sounds like one half is the pointer to the start of the graphic (something like 34 12 9D 00?) and the other is something else, maybe the size of the graphic, or a second pointer to something else used for the graphic (perhaps the tile map -- the logos are broken up into to 16x16 and 8x8 pixel tiles that then are arranged to create the graphic.. one of the reasons I got discouraged working on it was I had no idea where the tile maps were in 94 or how they worked). But excellent find. Quote
northstar91 Posted June 17, 2011 Author Report Posted June 17, 2011 (edited) 8-byte (64-bit) pointers? Sounds like one half is the pointer to the start of the graphic (something like 34 12 9D 00?) and the other is something else, maybe the size of the graphic, or a second pointer to something else used for the graphic (perhaps the tile map -- the logos are broken up into to 16x16 and 8x8 pixel tiles that then are arranged to create the graphic.. one of the reasons I got discouraged working on it was I had no idea where the tile maps were in 94 or how they worked). But excellent find. I'll keep playing around with that pointer section in order to figure out how exactly it works. It might be the arrangement of the logo, as you mentioned. Edited June 17, 2011 by northstar91 Quote
northstar91 Posted June 17, 2011 Author Report Posted June 17, 2011 Does anyone have any idea about possible locations for the main menu team logo pointer table, or how I could figure it out with an SNES debugger? I am having trouble figuring out where it could possibly be. Quote
smozoma Posted June 17, 2011 Report Posted June 17, 2011 There are 115 pointers from e03b7-e057f So probably all the logos are there? That's 4x28 + 3. Not sure what that extra 3 would be... Quote
northstar91 Posted June 18, 2011 Author Report Posted June 18, 2011 (edited) There are 115 pointers from e03b7-e057f So probably all the logos are there? That's 4x28 + 3. Not sure what that extra 3 would be... No, I don't think the menu logos are there. Here's what the pointers are from e03b7-e057f, based on information I have (I can always double check to confirm, I could have messed up somewhere): Center Ice Logos: @0E03B7-@0E0496 Menu Logo Palettes: @0E0497-@0E050E (28 teams + NHL shield + NHLPA logo) Banner Palettes: @0E050F-@0E057E Edited June 18, 2011 by northstar91 Quote
smozoma Posted June 18, 2011 Report Posted June 18, 2011 The centre-ice logo pointers are definitely logo/map pairs. The second pointer in each pair points to 70 bytes (46 hex) of data, representing the logo tile map. The first 6 bytes always seem to be 0800 0400 0803. 0800 (8 ) is the width, 0400 (4) is the height. I don't know what 0803 represents; I tried changing it and nothing happened. After that, you get 32 (i.e., 8x4) 2-byte tile IDs. So a typical logo would go 0000 0100 0200 0300, etc. saying to lay the tiles out in order. Some tiles will get reused. Some tile IDs have the form xx04 (e.g., 0004 0104 0204 0304). The 04 sometimes changes the colours; I don't really understand the point of it. Quote
northstar91 Posted June 18, 2011 Author Report Posted June 18, 2011 Interesting observations about the center ice logos. They seem to work quite differently from other graphics we have found so far. the 8-byte "unknown" portion of the pointer table area I referred to in an earlier post is actually two pointers to menu logo palettes; one for the NHL shield and the other for the NHLPA logo. Thus, it seems like that pointer table area does not pertain to the logos in the main menu. One would think that there would be a 70 or 140 byte pointer table (if including the NHL/NHLPA logos, 78 and 156) somewhere in that references those logos, assuming that they work in a similar fashion to player portraits. So far, it's been quite elusive. Quote
smozoma Posted June 18, 2011 Report Posted June 18, 2011 I've been looking, but I don't think there's a pointer table anymore. It probably has something like a base pointer and then sizes or relative offsets from that base pointer. Quote
trudatman Posted February 12, 2012 Report Posted February 12, 2012 (edited) this was almost setting defense control on whenever L or R is pressed in the game: at $FCF2F (or $FCD2F), change: A0 00 00 E0 0C 00 90 03 A0 02 00 B9 94 1C D0 01 to: A9 00 00 E0 0C 00 B0 01 6B 1A 8D 96 1C 1A 80 04 the asm for this is: LDA #$0000 CPX #$000C BCS $01 RTL INC STA 1C96 INC BRA 04 it doesn't work for the right defenseman when defending the bottom of the screen. this was an attempt at a fix: ....At $fcd2f A9 01 00 8d 94 1c 8d 96 1c 1a 80 08 to replace A0 00 00 E0 0C 00 90 03 A0 02 00 B9 LDA #0001 STA 1C94 STA 1C96 INC BRA 08 $1c94 is team 2's defense control and $1c96 is team 1's, or maybe vice versa sometimes, not really sure. This way removes the check against #0c and just sets both teams' defense control on. it was still glitchy. then Smozoma saved the day:....turn the defense control on in a clean way before the game starts (so you can turn it off or back on again in the game menu), you can do this:At ROM address @F857c old: 22 B2 C6 9F JSL 9F:6CB2 # Long Jump to Subroutine new: 20 30 FB EA JSR :FB30 # Jump to SubRoutine of our custome code NOP # No OPeration (space filler operation) @FFD30 old: FF FF FF .. (unused section) new: 22 B2 C6 9F A9 01 00 8D 94 1C 8D 96 1C 60 JSL 9F:6CB2 # do the code we cut out LDA #0001 # LoaD A=0001 STA 1C94 # STore A (0001) into :1C94 STA 1C96 # STore A (0001) into :1C96 RTS # ReTurn from this Subroutine it's quite functional. use it. there is no reason to have defense control off, ever. Edited February 18, 2012 by trudatman Quote
trudatman Posted February 8, 2013 Report Posted February 8, 2013 somebody stick this thread to the top of the page, please. Quote
trudatman Posted March 31, 2013 Report Posted March 31, 2013 thanks for sticking this. I come here often. that didn't seem to make it quite sticky enough. I want to gently encourage everybody to keep making progress. I sure could use some hand-holding. if anybody with the skills wants to help get a hack polished up, there are a few things I'm not comfortable with that others seem to have down. I'm still using initials for first names in the expansion teams (ANA and FLA) and there are plenty of things left to work on for adding to this thread. Quote
trudatman Posted June 15, 2013 Report Posted June 15, 2013 this thread should probably be linked from here: http://nhl94.com/html/editing/edit_smc.php Quote
trudatman Posted June 20, 2014 Report Posted June 20, 2014 Get a hex-editor (I recommend HxD, very easy to use and very user friendly) and open NHL'94 rom in it. Center ice logos are located at E03B7 - E0496 offsets, find it with "Goto" option. The center ice logos offset stars with 7B B4 9A 00 3C E5 9A 00 A1 BF etc etc and ends with 88 00 B6 D4 9A 00 C6 FF 88 00. You can also find beginning of the offset with "Find" option, search for 7B B4 9A 00 in Hex-values datatypes. The complete offsets values for center ice logos look like this in HxD: 7B B4 9A 00 3C E5 9A 00 A1 BF 9A 00 F8 E7 9A 00 96 CA 9A 00 6C E7 9A 00 3D FF 8D 00 E0 E6 9A 00 2E AC 9A 00 F6 E4 9A 00 38 FF 84 00 98 E3 9A 00 80 C8 9A 00 F4 E1 9A 00 15 C3 9A 00 26 E7 9A 00 57 C5 9A 00 54 E6 9A 00 A9 FE 82 00 B0 E4 9A 00 9C D7 9A 00 C6 E2 9A 00 4A DA 9A 00 3E E8 9A 00 F5 BB 9A 00 9A E6 9A 00 CB FE 98 00 82 E5 9A 00 A0 CB 9A 00 C8 E5 9A 00 C0 FE 99 00 0E E6 9A 00 36 C4 9A 00 B2 E7 9A 00 47 FF 83 00 68 E1 9A 00 AF D5 9A 00 AE E1 9A 00 67 C6 9A 00 3A E2 9A 00 74 C7 9A 00 80 E2 9A 00 85 FE 97 00 0C E3 9A 00 72 D9 9A 00 52 E3 9A 00 78 FE 86 00 DE E3 9A 00 33 DD 9A 00 24 E4 9A 00 73 BE 9A 00 6A E4 9A 00 B6 D4 9A 00 C6 FF 88 00 B6 D4 9A 00 C6 FF 88 00 It's a mess, after formatting and adding team names it makes much more sense: 7B B4 9A 00 3C E5 9A 00 Anaheim A1 BF 9A 00 F8 E7 9A 00 Boston 96 CA 9A 00 6C E7 9A 00 Buffalo 3D FF 8D 00 E0 E6 9A 00 Calgary 2E AC 9A 00 F6 E4 9A 00 Chicago 38 FF 84 00 98 E3 9A 00 Dallas 80 C8 9A 00 F4 E1 9A 00 Detroit 15 C3 9A 00 26 E7 9A 00 Edmonton 57 C5 9A 00 54 E6 9A 00 Florida A9 FE 82 00 B0 E4 9A 00 Hartford 9C D7 9A 00 C6 E2 9A 00 Los Angeles 4A DA 9A 00 3E E8 9A 00 Montreal F5 BB 9A 00 9A E6 9A 00 New Jersey CB FE 98 00 82 E5 9A 00 NY Islanders A0 CB 9A 00 C8 E5 9A 00 NY Rangers C0 FE 99 00 0E E6 9A 00 Ottawa 36 C4 9A 00 B2 E7 9A 00 Philadelphia 47 FF 83 00 68 E1 9A 00 Pittsburgh AF D5 9A 00 AE E1 9A 00 Quebec 67 C6 9A 00 3A E2 9A 00 San Jose 74 C7 9A 00 80 E2 9A 00 St. Louis 85 FE 97 00 0C E3 9A 00 Tampa Bay 72 D9 9A 00 52 E3 9A 00 Toronto 78 FE 86 00 DE E3 9A 00 Vancouver 33 DD 9A 00 24 E4 9A 00 Washington 73 BE 9A 00 6A E4 9A 00 Winnipeg B6 D4 9A 00 C6 FF 88 00 East B6 D4 9A 00 C6 FF 88 00 West Yes, it's that simple, every line represents one center ice logo. For instance, if you want to change Quebec ice cener logo in your custom NHL 99 rom with generic NHL logo, just rewrite the values on the Quebec line (AF D5 9A 00 AE E1 9A 00) with the values from East or West line (B6 D4 9A 00 C6 FF 88 00). I bolded values which differ to frequent 9A value. Do not edit just part of the line, the game freezes after that. If you edit only first two values, the game works but the logo looks ugly....Post NHL 94 teams do not need to use Jets, Whalers or Nordiques logos in modern NHL roms but generic NHL logo now. For international tournaments or non-NHL leagues roms you can choose the same logo for all teams.... Quote
DominikJagr Posted June 20, 2014 Report Posted June 20, 2014 (edited) also: 0D5356 - Bruins to Stars centerice colors 0D5382 - Calgary Flames centerice color stumbled upon a 'pod' of teams, can't find any other ones though EDIT: 0D5356 to 0D5382 is the PALETTE for the centre ice logos, not any information about the centre ice logos themselves. Still useful. I edited everything from D5556 (D5356+200) to D5582 (D5382+200) with AA and then 00 and nothing happened. Bruins, Flames and Stars centre ice logos remained, unchanged. Menu logos always change color after editing menu logos palette offsets. Not sure if these are really center ice logos colors. Edited June 20, 2014 by DominikJagr Quote
DominikJagr Posted June 20, 2014 Report Posted June 20, 2014 (edited) Spreadsheet, Pointer Table Offsets Tab, line 9: Menu NHL and NHLPA logos (do not appear in Regular Season mode) Edited June 20, 2014 by DominikJagr Quote
DominikJagr Posted June 25, 2014 Report Posted June 25, 2014 (edited) Music is located from DB53F+- to DBFA1. Intro theme, menu music. Anyone knows where the organ tunes are located? Some centre ice logos findings: http://forum.nhl94.com/index.php?/topic/16251-center-ice-logos-tutorial/ Edited June 25, 2014 by DominikJagr Quote
trudatman Posted June 25, 2014 Report Posted June 25, 2014 (edited) the organ tunes are pretty easy to spot in the hex editor, I think, but I've never messed with them to test them. a pattern of many large sections of code that look similar and have identifiable intro values.... rather than link to new developments, please continue to copy into this thread -- and keep updated -- any and all charts, rants, data that spell the larger book on our preferred game; this thread is meant to have all of the information a SNES hacker can collect from others to understand and/or build their own NHL '94. you seem to get a lot of this better than I do, so please help keep this thread well edited. rewrite, clarify, copy... keep bringing in content and get your first-line position secured. we are a lot closer to a map of this sucker than we were three years ago. you look to be the dude about to make the next set declarations. it had been well over a year that this thread was stagnant. Edited June 25, 2014 by trudatman Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.