Jump to content
NHL'94 Forums

TOOL: Roster extracter/importer tool


smozoma

Recommended Posts

Dervin10 made this a couple years ago. really useful.

You can create a CSV file (which can be opened with excel) of the players in a ROM. then you can change the skills of the players and import the players from the CSV back into the ROM.

It works with NHL 94 (and maybe 93?), but as Cam Kneely points out, you can use NOSE to copy rosters from a different game into an NHL 94 ROM, and extract from there.

A couple usage notes:

1: do not change the order of the players

2: do not change the player names, positions, or teams.

You can only change the skills/attributes.

Installation

1: Download and unzip to wherever you want: NHL_Hockey_Roster_Tool.zip

2: Also, this requires the .NET framework. I think version 2.0 will work, but if not, try version 1.1

(if you need to install the framework, can you please tell me which one works so i can update this to be more accurate? thanks)

Source Code

Dennis has provided the source code. Also included is his SRM file editor (which would allow you to fake User Records on an emulator, if you so wished to do...)

 

NHL_Hockey_Roster_Tool.src.zip

Link to comment
Share on other sites

Dervin10 made this a couple years ago. really useful.

You can create a CSV file (which can be opened with excel) of the players in a ROM. then you can change the skills of the players and import the players from the CSV back into the ROM.

A couple usage notes:

1: do not change the order of the players

2: do not change the player names, positions, or teams.

You can only change the skills/attributes.

Installation

1: Download and unzip to wherever you want: NHL_Hockey_Roster_Tool.zip

2: Also, this requires the .NET framework. I think version 2.0 will work, but if not, try version 1.1

(if you need to install the framework, can you please tell me which one works so i can update this to be more accurate? thanks)

Worked like a charm on the first pass, I didn't need to install framework. Thanks again.

  • Like 1
Link to comment
Share on other sites

  • 8 months later...
  • 1 year later...
  • 8 months later...

i've never tried it but I think this is how:

open 2 instances of NOSE (2 NOSE windows..)

open a ROM in each NOSE

copy/paste stuff between windows

i have no idea which versions of EA NHL can be copied between, though

Link to comment
Share on other sites

i've never tried it but I think this is how:

open 2 instances of NOSE (2 NOSE windows..)

open a ROM in each NOSE

copy/paste stuff between windows

i have no idea which versions of EA NHL can be copied between, though

I have got it to work with 94-97 Rom bases.

On a side note, the players are rated differently in 96 and 97 but NOSE will calculate the results for you

Link to comment
Share on other sites

i've never tried it but I think this is how:

open 2 instances of NOSE (2 NOSE windows..)

open a ROM in each NOSE

copy/paste stuff between windows

i have no idea which versions of EA NHL can be copied between, though

That's what I tried to do... but the number of players in the teams are not the same...

You copy and past, or just past the attributes ?

You delete or create some players first, for having the exact match ?

Link to comment
Share on other sites

That's what I tried to do... but the number of players in the teams are not the same...

You copy and past, or just past the attributes ?

You delete or create some players first, for having the exact match ?

Yes, you can delete some players, and to make sure you have the same amount of forwards and defense you can adjust the ''Forwards'' number above the rosters in the ''Players'' window.

Edited by PlabaxV2
Link to comment
Share on other sites

  • 3 years later...

When I used this tool to export the new VHL ROM to a CSV, it leaves out some players? (Well at least one: Ovechkin. But I figure if there is one left out, perhaps there are more?)

The vast majority of players, which it does export, are in tact and uncorrupted.

Any reason why some players would fail to export?

The ROM usd is "NHL16v8.bin" from http://forum.nhl94.com/index.php/topic/17330-nhl16-rom-midseason-update-by-skip/

Link to comment
Share on other sites

When I used this tool to export the new VHL ROM to a CSV, it leaves out some players? (Well at least one: Ovechkin. But I figure if there is one left out, perhaps there are more?)

The vast majority of players, which it does export, are in tact and uncorrupted.

Any reason why some players would fail to export?

The ROM usd is "NHL16v8.bin" from http://forum.nhl94.com/index.php/topic/17330-nhl16-rom-midseason-update-by-skip/

I just checked and it worked fine. Did you change the number of teams from 28 to 30?

Link to comment
Share on other sites

I just checked and it worked fine. Did you change the number of teams from 28 to 30?

I did not. That was the problem! Thanks!

Do I just leave "TeamOffset Hex" at "30E"? (I did, but want to make sure.)

Thanks a lot, QD!

Link to comment
Share on other sites

  • 4 months later...

Hey guys,

Is there a way to get the actual PlayerId's as far as Gens is concerned? The ones spit out of the excel don't seem to match what Gens is outputting.

I'm working on parsing the save games for exhibition matches.

Thanks

Raven

Link to comment
Share on other sites

I think the 'actual' IDs of the players are team specific and the number is the slot of the player on the team (starting with 0 and going from G-->F-->D, or the same order the program extracts, like an index)

For example, BOS would have Moog as 0, Blue as 1, Oates as 2, Poulin as 3, or CGY would have Vernon as 0, Reese as 1, Nieuwendyk as 2, Reichel as 3 and so on.

---------------------------------

So, if using a database... it would probably look like:

Get PLAYER where TEAM is the team of the player and PLAYERINDEX is the "ID" from the uploader

If you were extracting a goal scored by Adam Oates, the extractor would search for the player on Boston with an index of 2, who is Oates.

Edited by Premium
Link to comment
Share on other sites

I think the 'actual' IDs of the players are team specific and the number is the slot of the player on the team (starting with 1 and going from G-->F-->D, or the same order the program extracts, like an index)

For example, BOS would have Moog as 1, Blue as 2, Oates as 3, Poulin as 4, or CGY would have Vernon as 1, Reese as 2, Nieuwendyk as 3, Reichel as 4 and so on.

---------------------------------

So, if using a database... it would probably look like:

Get PLAYER where TEAM is the team of the player and PLAYERINDEX is the "ID" from the uploader

If you were extracting a goal scored by Adam Oates, the extractor would search for the player on Boston with an index of 3, who is Oates.

The first player is the 0 offset.

So, in Plabax's example, if it says the 03 for player who scored, it would actually be Poulin and not Oates.

If you are making your own stat extractor, the easiest way would be to have the rosters and team order already extracted and saved in a DB. Upload the game, pull all the game stats (SP1, GP1, SP2, GP2, etc), and player stats (G,A, Chks, TOI, etc), using the team order and roster with offsets to pull the right data for the right team/player, then check the scoring summary and penalty summary. When going through the scoring and penalty summaries, you can use the DB roster with offset to figure out who scored, assisted, got a penalty, etc for displaying purposes in the box score. You would also use the summaries to decide if it was a PP or SH or EV goal, type of assist, PIM for each player, and add that data in the DB if you desire.

Link to comment
Share on other sites

  • 3 months later...
7 minutes ago, Stefan said:

Is there some way to transfer the players and their ratings from a genesis Rom to an snes one, as opposed to manually copying it? 

I think the data format is pretty much identical. So you could manually copy/paste the data using a hex editor.

Double-check this first with an original Sega ROM and original SNES ROM, as there may be a few differences. But I think if you look for say Wayne Gretzky in both ROMs, you'll see his data is mostly (if not completely) the same. The one thing that I wouldn' tbe surprised is different is the name length counter (which is the 2 bytes preceding the player name), the bytes might be reversed between Sega/SNES ROMs

Link to comment
Share on other sites

Okay.

I guess where I'd be confused is that I'm copying an updated genesis roster to a snes roster so wayne gretzky wont be on the genesis one...

 

Yeah, I tried copying Boston Bruins from Sega to SNES and it totally didn't work.

Any way I could copy the CSV data over from the spreadsheet? 

Edited by Stefan
Link to comment
Share on other sites

  • 3 years later...

Figure it's about time I ask about this. I can export just fine, but any time I try to import, even if it's just re-importing the unchanged file I literally just exported mere seconds ago, I get this.

image.png

Full details:

See the end of this message for details on invoking 
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.IndexOutOfRangeException: Index was outside the bounds of the array.
   at NHL_Hockey_Roster_Tool.MainForm.ImportToolStripMenuItem_Click(Object sender, EventArgs e)
   at System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
   at System.Windows.Forms.ToolStripMenuItem.OnClick(EventArgs e)
   at System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
   at System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
   at System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
   at System.Windows.Forms.ToolStripDropDown.OnMouseUp(MouseEventArgs mea)
   at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.ToolStrip.WndProc(Message& m)
   at System.Windows.Forms.ToolStripDropDown.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Loaded Assemblies **************
mscorlib
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.8762 (QFE.050727-8700)
    CodeBase: file:///C:/Windows/Microsoft.NET/Framework64/v2.0.50727/mscorlib.dll
----------------------------------------
NHL Hockey Roster Tool
    Assembly Version: 1.0.0.0
    Win32 Version: 1.0.0.0
    CodeBase: file:///C:/Users/Me/Desktop/STUFF/games/NHL%20MODS/EA%20NHL94/tools/NHL%20Hockey%20Roster%20Tool.exe
----------------------------------------
Microsoft.VisualBasic
    Assembly Version: 8.0.0.0
    Win32 Version: 8.0.50727.5483 (Win7SP1GDR.050727-5400)
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/Microsoft.VisualBasic/8.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.dll
----------------------------------------
System
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.8770 (QFE.050727-8700)
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Windows.Forms
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.5491 (Win7SP1GDR.050727-5400)
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System.Drawing
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.5495 (Win7SP1GDR.050727-5400)
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System.Runtime.Remoting
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.8771 (QFE.050727-8700)
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Runtime.Remoting/2.0.0.0__b77a5c561934e089/System.Runtime.Remoting.dll
----------------------------------------
System.Xml
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.5494 (Win7SP1GDR.050727-5400)
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------

************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.

For example:

<configuration>
    <system.windows.forms jitDebugging="true" />
</configuration>

When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.

Anyone with any idea what's going on here? And more importantly, how I can stop it from doing this and start working as intended instead?

Link to comment
Share on other sites

Quote
System.IndexOutOfRangeException: Index was outside the bounds of the array.

Some number somewhere was too big... I wonder if the tool doesn't work with 32-team ROMs... Or 0-15 attribute ROMs... something like that.

 

 

Link to comment
Share on other sites

13 hours ago, smozoma said:

Some number somewhere was too big... I wonder if the tool doesn't work with 32-team ROMs... Or 0-15 attribute ROMs... something like that.

This is something I wondered about. I was hoping to use 0-15 in this case, although I had the same problem with 0-6. Didn't think about the number of teams being an issue. Although I think[?] I was encountering errors with the 30-team too. I will try to test. Worse comes to worse, I guess if it works on the OG ROM, I could always copy/paste it in batches. Still quicker than doing everyone by hand.

19 hours ago, AdamCatalyst said:

unfortunately I can’t read Windows-speak, but if you ZIP your roster tool install folder and send it to me, I can try something. Also send a ROM that fails.

I can't say I'm that good at translating Windows to English either, but I can do that if you're willing to look at it. I did kind of move on for now so I'm not quite prepared to do that right away though.

Link to comment
Share on other sites

2 hours ago, AdamCatalyst said:

It works fine for me with 32-teams, 0-15 ratings. Make sure that you’re setting the number of teams correctly in the Roster tool on export and import. 

Of course had the correct number of teams. I'm not an idiot.

Although I did notice that I was using the hex letter instead of the number for the player weights [never said I was smart either] Sadly this moment of inspiration wasn't the droid I was looking for.

I did test on an original 26-team ROM and it seemed to work. I even got it to work on a 32-team team ROM, exporting 26 teams [so it skipped the last six] and then re-importing the resulting .csv data to a new 32-team ROM. This saved as a new .bin file just fine. So I obviously tried to take this one step further and exported a default 26-team ROM and then edited all of the player attributes to a rating of one. Saved the .csv. Tried to import it back to the original ROM and it worked fine.

Keep ruling out variables. Export a 32-team ROM, re-import to that same ROM, saved as a new .bin file. Hmm, it's working this time...

Okay, next step open the .csv in notepad. Edit the top player to a bunch of 1s. Rinse and repeat. This works too.

Okay, open in notepad again. Edit the first team to be a bunch of random numbers from 1-15. [This particular ROM is still using 0-6] Import still works and new file saved.

Okay, open in OpenOffice [because I never paid for Excel and it's a long story] type in some 1s for that first skater again and save. Go back to import and.... WHAT!! ARE YOU BLOODY KIDDING ME!!

<many muttered expletives deleted>

So yeah... apparently OpenOffice is taking that .csv file, and even though it saves as a .csv file that opens just fine in notepad and whatever, it's doing something to it that .csv file the Import tool simply does not like. Why this even happens is well beyond my pay grade and completely stupid and arbitrary and stupid.

Just a minute...

The story was about to end there in a huff when I decided to try one last thing before hitting submit.
I opened an original clean exported .csv file side by side with an edited .csv file and that's when I finally noticed it. The unedited export, when opened in notepad has tab delimiters represented by the common comma. OpenOffice saves it's tab delimiters as commas holding periods over their heads like they're John bloody Cusack or something. So I opened the spreadsheet as a text doc and gave it a semi-colonoscopy and pasted that into a new text file, saved as a new .csv file, and what do you know.
Commas man.

Probably would have been less grumpy about this whole situation if I didn't miss lunch trying to figure it out...

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...