Jump to content

The Possible Data Structure Of Roster.iff


Tony3

Recommended Posts

In fact, every roster can also be default roster if "Reset Roster" is checked.

In the "Management" menu, there is a option called "Reset Roster",

just click that miracle button and you're good to go.

btw, while exploring the "roster.iff", I found out that there are some team names in that file, such as

Bandit, Barbarian, Bird, Bobcat, Bulldog, Castle, Caesar, Comet, Eskimo, Gargoyle, Giant, Viking.

Does anyone know what these teams really are?

tony from memory because i have done this once. This is the names i think that is used when you create a team, when doing the trading card stuff. You can do a trading card game or something like that. As said, i did this once and this is what i think i remember, i dont have time to boot up the game and check it out.

Link to comment
Share on other sites

  • Replies 71
  • Created
  • Last Reply

Tony3,

This is great work! I am excited to use this to work on my roster!

My question is how can I open up my created roster ?

HexEditor will only open the .iff file not a .ros save right ?

Is there a way to make my roster the default roster ?

Im sorry if you already told us how to do this and I didnt get it. I already have enough knowledge of hex so editing the file should be

do-able for me. I am just not sure how to open up my created roster.

Thanks for any advice!

Link to comment
Share on other sites

I have your roster and it's great. Glad I can help.

When I open your SnashRoster.ROS with Hex Editor,

it seems that your file and roster.iff are almost the same.

Take Lincecum for example. It's all there from 2aa50 to 2ab57 in your file,

comparing to my first post.

51 4c 38 00 00 00 00 00 c9 27 38 00 5b 1e 38 00

41 4c 38 00 f5 fe 36 00 d1 24 0e 00 24 75 00 00

00 00 00 10 00 00 08 20 00 00 00 00 00 00 00 00

96 d7 04 00 78 26 04 08 04 20 00 38 63 00 00 00

00 00 c8 42 00 00 34 43 00 00 2a 43 00 09 2d 0c

4d 52 4f 60 32 4e 26 41 40 53 4c 60 18 56 09 0d

57 42 01 55 3c 41 50 45 51 09 60 62 28 0c 52 1b

09 5e 1e 00 62 52 41 3c 14 04 05 05 05 05 05 05

05 00 00 00 05 49 46 52 4a 28 46 51 49 0f 5f 3c

0b 38 05 09 33 2f 44 18 16 11 0d 1c 00 6a a0 70

f9 1b f9 1b 00 00 00 00 7e 19 7e 19 c0 07 7e 19

00 00 00 00 00 00 00 00 7e 19 7e 19 ff ff ff ff

38 2b fc 02 ff ff 2d 1f 2c 1f ff ff ff ff ff ff

ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff

ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff

ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff

ff ff ff ff 61 00 37 00

So if you change 78 26 "04" 08 into 78 26 "05" 08, Lincecum will become editable with in-game editor.

Really cool!

Now the only problem is "checksum", which applies for all created files in game.

The checksum solution is here. http://www.eamods.com/phpBB3/viewtopic.php...=a&start=45

Good luck, my friend. B)

Link to comment
Share on other sites

There is another option here - Unlock Edit Tool, which is made by a Taiwan modder.

Running this tool before starting the in-game editor, and you will find all the players become editable.

Save the changes and quit the tool before you go into a game. Wala :lol:

Link to comment
Share on other sites

Thanks alot Tony 3 you original roster.iff works perfect

I have updated to all new transactions if anyone wants it

I can edit everything and it didnt crash like the Unlock edit tool

Link to comment
Share on other sites

Is there a trigger that tells the game to use a generic face or not.

If you trade a player that player loses his face and get a generic face, I took the franchise file and extracted the roster. When looking at the roster the the player still has the correct face ID 6280 (8818).

BEFORE TRADE

beforetrade.th.png

AFTER TRADE

aftertrade.th.png

He looks like Rick Fox after the trade.

Link to comment
Share on other sites

hi Tony, From what you have seen so far how difficult would it be to do a global edit? I have a hunch program will need to be written but I was curious if you see the possibility.

Link to comment
Share on other sites

The possibility is always there, but I don't do roster, nor write editing tools,

'cause it's gonna be too darn hard for me.

I enjoy exploring new things, sharing new knowledge, not creating new stuff,

but I do encourage you to do whatever you want to help this game.

There are a lot of talented modders here, sometimes help comes everywhere.

You never know. B)

Link to comment
Share on other sites

The possibility is always there, but I don't do roster, nor write editing tools,

'cause it's gonna be too darn hard for me.

I enjoy exploring new things, sharing new knowledge, not creating new stuff,

but I do encourage you to do whatever you want to help this game.

There are a lot of talented modders here, sometimes help comes everywhere.

You never know. B)

exactly what i was guessing thanks Tony.

Link to comment
Share on other sites

I probably should have replied earlier in this thread. I did find out most of what Tony3 has found a while ago.

Here is Lincecum's data again. (268 bytes)

0x2AA98|0||1||2||3||4||5||6||7||8||9||A||B||C||D||E||F|

0x000| 51 4C 38 00 00 00 00 00 C9 27 38 00 5B 1E 38 00

0x010| 41 4C 38 00 F5 FE 36 00 D1 24 0E 00 24 75 00 00

0x020| 00 00 00 10 00 00 08 20 00 00 00 00 00 00 00 00

0x030| 96 D7 04 00 78 26 04 08 00 00 00 38 63 00 00 00

0x040| 00 00 C8 42 00 00 34 43 00 00 2A 43 00 09 2D 0C

0x050| 4D 52 4F 60 32 4E 26 41 40 53 4C 60 18 56 09 0D

0x060| 57 42 01 55 3C 41 50 45 51 09 60 62 28 0C 52 1B

0x070| 09 5E 1E 00 62 52 41 3C 14 04 05 05 05 05 05 05

0x080| 05 00 00 00 05 49 46 52 4A 28 46 51 49 0F 5F 3C

0x090| 0B 38 05 09 33 2F 44 18 16 11 0D 1C 00 6A A0 70

0x0A0| F9 1B F9 1B 00 00 00 00 7E 19 7E 19 C0 07 7E 19

0x0B0| 00 00 00 00 00 00 00 00 7E 19 7E 19 FF FF FF FF

0x0C0| 38 2B 1C 03 FF FF 2D 1F 2C 1F FF FF FF FF FF FF

0x0D0| FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF

0x0E0| FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF

0x0F0| FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF

0x100| FF FF FF FF 61 00 37 00 24 03 00 00

And Here is Tony3's list again with 0x2AA98 subtracted from all of his addresses:

00-03: Last Name Offset

08-0B: First Name Offset

0C-0F: Nickname Offset

10-13: Short form Last Name Offset -- Note from tywiggins -- Jersey Name Offset

14-17: Face ID No. and Equipment Offset

18-1B: Team Offset (00 00 00 00: Free Agent)

1E : Throwing Arm (00:R, 10:L) and Injury Status

1F : Rookie Eligibility (80: Rookie Eligible)

23 : Years Pro. and Days of Injury

26 : Batting Side (00:R, 08:L, 10:S)

30-33: Annual Salary

34 : Day Birth

35 : Contract Length and Month Birth

36 : Editability (01, 05: Editable)

3B : Draw a Walk (Hitting Ability)

46 : Height (Inches x 2.54 - 128)

4A : Weight (Pounds - 128)

50 : Against Left Hand Batter (Pitching Ability)

51 : Against Right Hand Batter (Pitching Ability)

52 : HR Against Right Hand Batter (Pitching Ability)

53 : Stamina (Pitching Ability)

54 : Pickoff (Pitching Ability)

55 : Composure (Pitching Ability)

59 : HR Against Left Hand Batter (Pitching Ability)

5A : Walks (Pitching Ability)

5B : Strike Outs (Pitching Ability)

5D : Pitch 5 Movement (Pitch Type)

5E : Pitch 4 Throwing Percentage

5F : Pitch 5 Type (Pitch Type)

60 : Pitch 5 Speed (Pitch Type)

61 : Pitch 5 Control (Pitch Type)

62 : Pitch 4 Type (Pitch Type)

63 : Pitch 4 Speed (Pitch Type)

64 : Pitch 4 Control (Pitch Type)

65 : Pitch 4 Movement (Pitch Type)

66 : Pitch 3 Speed (Pitch Type)

67 : Pitch 3 Control (Pitch Type)

68 : Pitch 3 Movement (Pitch Type)

69 : Pitch 3 Throwing Percentage

6A : Pitch 2 Control (Pitch Type)

6B : Pitch 2 Movement (Pitch Type)

6C : Pitch 2 Throwing Percentage

6D : Pitch 3 Type (Pitch Type)

6E : Pitch 1 Movement (Pitch Type)

6F : Pitch 1 Throwing Percentage

70 : Pitch 2 Type (Pitch Type)

71 : Pitch 2 Speed (Pitch Type)

72 : Acceleration (Hitting Ability)

73 : Pitch 1 Type (Pitch Type)

74 : Pitch 1 Speed (Pitch Type)

75 : Pitch 1 Control (Pitch Type)

76 : Running Speed (Hitting Ability)

79 : Stealing Aggressiveness (Hitting Ability)

7A : As Right Fielder (Fielding Ability)

7B : As Center Fielder (Fielding Ability)

7C : As Left Fielder (Fielding Ability)

7D : As First Baseman (Fielding Ability)

7E : As Second Baseman (Fielding Ability)

7F : As Third Baseman (Fielding Ability)

80 : As Shortstop (Fielding Ability)

81 : Catcher's ability 1 (Fielding Ability)

82 : Catcher's ability 2 (Fielding Ability)

83 : Catcher's ability 3 (Fielding Ability)

84 : As Catcher (Fielding Ability)

85 : Fielding Range (Fielding Ability)

86 : Jumping and Diving (Fielding Ability)

87 : Arm Strengh (Fielding Ability)

88 : Throwing Accuracy (Fielding Ability)

8A : Fielding Anticipation (Fielding Ability)

8B : Catching (Fielding Ability)

8D : Pitch 5 Throwing Percentage

91 : Out by Strikeouts (Hitting Ability)

93 : Power vs. Righties (Hitting Ability)

94 : Contact vs. Righties (Hitting Ability)

95 : Contact vs. Lefties (Hitting Ability)

96 : Bunting (Hitting Ability)

9A : Power vs. Lefties (Hitting Ability)

9E : Position

AC-AD: Year Birth

AE-AF: Portrait ID No.

B8-B9: Pitcher's Inside Edge #1 (Pitch type by count, Pitch location)

BA-BB: Pitcher's Inside Edge #2 (General, Scouting report)

BC-BD: Hitter's Inside Edge #1 (The Other IE)

BE-BF: Hitter's Inside Edge #2 (General)

C6-103: Historical Statistics Offset

104-105: Trading Card No.

106 : Jersey No.

Later, I will go through this list and compare it to what I have found on my own.

Tony3 some of the offsets are wrong (likely typos).

Example -- 2aa05 : Pitch 3 Type (Pitch Type)

should be -- 2ab05 : Pitch 3 Type (Pitch Type)

I think the only other ones are Pitch 2 Type and Pitch 1 Type.

Link to comment
Share on other sites

Ty, thanks for pointing out the type error and willingness to share your knowledge.

Your work is always admired by all of us upon using your amazing tools.

Thanks again. :)

About the Jersey Name offset you mentioned,

it turns out you are right, thanks.

Good luck, my friend.

Link to comment
Share on other sites

Great work Tony3, Tywiggins and everyone. It seems the collective effort here is really making headway on cracking the rosters.

I have a question about the editing cap - any chance it is a set value that could be changed, rather than a physical limit to a file size?

Link to comment
Share on other sites

There is limit about name editing with in-game editor,

based on the free space left in roster.iff for edited name storage,

unless you choose the name from the list provided by the in-game editor.

I have no idea what other editing cap is. :huh:

The name storage structure in game is very complicated,

that way name list from in-game editor will be announced while playing.

But what we show here is to edit roster.iff directly,

name editing limit might gradually become an issue

to be solved somehow.

......

While exploring the roster file, what I really want is just trying to locate the

fake name players and make others easier to idenfy them with a comprehensive list.

Who knows, there might be a fake-name-to-real-name project someday.

Link to comment
Share on other sites

So if I understand that properly, the direct editing of the roster.iff file will theoretically be able to change the in-game or default 'fake' names of with real player names and attributes, therein circumvent the in-game editing cap for new names. Sound right?

Link to comment
Share on other sites

Well, never thought about that.

But I can tell you where I found Lincecum's Face ID in Roster.iff.

It's not really at address 2aaac-af, that's just a index.

The real ID # is at address 39a9a4-a5, usually after something like Fx FF, and

the whole section after this is about his equipment attribute,

including Head, Arms, Hands, Mitts and Legs.

You might knew all this already, just tell you what I know so far.

Tony3

How were you able to determine where the real ID# address was located?

Link to comment
Share on other sites

Glad you're interested in Hex editing.

The value of address "2 aa ac"-af is "F5 FE 36" from my first post,

so we add this two # togerther with a Hexadecimal calculator:

2 aa ac + 36 fe f5 - 1 = 39 a9 a0

And "39 a9 a0" is where the Lincecum's face ID # and equipment section really is.

Now you open roster.iff with Hex Editor, and goto address "39a9a0"

Here would be what it is from 39a9a0 to 39a9d7

D5 35 FB FF 7E 19 81 00 00 00 02 00 84 EC BD B7

00 00 B0 77 BD F7 CD FB 7B EF BD 37 84 10 42 70

EC BD F7 DE ED BD C1 DE 00 76 E9 20 01 C0 08 3A

12 00 00 36 7B 07 00 00

And the possible attribute location would be:

39a9a4-a5: Face ID No.

39a9a6 : Build, Chest size and Stomach size (Appearance)

39a9a7 : Stomach size, Butt size ,Thigh size (Appearance) and Shoes_Legs #2 (Equipment)

39a9a8 : Calf size (Appearance)

39a9a9 : Muscle definition (Appearance) and Hands #13 (Equipment)

39a9aa : Pants/Socks_Legs #1 and Stripes/Tongue Color_Legs #3 (Equipment)

39a9ab : Legs #3 and Undershirt Collar_Arms #1 (Equipment)

39a9ac : Laces/Sole Color_Legs #4 (Equipment)

39a9ad : Head #7 and Head #8 (Equipment)

39a9ae : Head #8 and Head #9 (Equipment)

39a9af : Head #9 (Equipment)

39a9b0 : Hands #5 and Hands #6 (Equipment)

39a9b1 : Hands #6 and Hands #7 (Equipment)

39a9b4 : Catcher #2 and Catcher #3 (Equipment)

39a9b5 : Catcher #3 and Catcher #4 (Equipment)

39a9b7 : Arms #2 (Equipment)

39a9b8 : Catcher #10 and Catcher #11 (Equipment)

39a9b9 : Catcher #11 and Catcher #12 (Equipment)

39a9bb : Catcher #9 (Equipment)

39a9bd : Mitts #2 (Equipment)

39a9be : Catcher Mitts #2 and Catcher Mitts #4 (Equipment)

39a9bf : Mitts #3, Mitts #4 and Catcher Mitts #2 (Equipment)

39a9c0 : Legs #5, Legs #6 and Legs #7 (Equipment)

39a9c1 : Legs #7 and Legs #8 (Equipment)

39a9c2 : Legs #8, Catcher #6 and Catcher #7 (Equipment)

39a9c3 : Catcher #7 and Catcher #8 (Equipment)

39a9c4 : Arms #5 (Equipment)

39a9c6 : Arms #9 (Equipment)

39a9c7 : Arms #7 and Arms #9 (Equipment)

39a9c8 : Arms #4, Arms #6 and Arms #8 (Equipment)

39a9c9 : Catcher #1 (Equipment)

39a9ca : Mitts #1, Arms #3 and Catcher #5 (Equipment)

39a9cc : Head #1, Head #2, Head #3, Head #4 and Head #5 (Equipment)

39a9cd : Head #5, Head #6 and Hands #1 (Equipment)

39a9ce : Hands #2, Hands #3 and Hands #4 (Equipment)

39a9d0 : Skin Tone and EC (Appearance)

39a9d1 : HS, HC and BS (Appearance)

39a9d2 : Hands #8 (Equipment) and BS (Appearance)

39a9d3 : Hands #8 and Hands #9 (Equipment)

39a9d4 : Hands #12 and Hands #15 (Equipment)

39a9d5 : Hands #10, Hands #11, Hands #14 and Hands #15 (Equipment)

Link to comment
Share on other sites

Thanks for the info Tony3. :D

Although I am a "Rookie" here, I've been a PC Baseball gamer since the 80's, and have been working with Hex Editors to edit the games' data files as well. That being said, I am always looking to learn more about the methods in hex editing, and I don't have a problem asking questions. So, I appreciate your willingness to share what you know.

Here's another question. How were you able to determine where Tim Lincecum's offset data was located?

Link to comment
Share on other sites

You edit Lincecum's attribute in game and save to file everytime you change,

so you have many files with minor change to compare in Editor.

Is this what you ask for?

I'm not quite following you. :huh:

Link to comment
Share on other sites

Well, it's all there, the 8663 historical stats/years, from 1a0b80 to 25ad67, 88 bytes each.

Like always, Lincecum's 2008 stats, from 24c2f8 to 24c34f

_______________________ 0B 10 00 00 00 01 01 00

00 00 00 00 D8 07 09 00 46 00 01 00 20 00 00 00

07 50 00 00 05 00 02 00 11 20 40 00 0E 00 80 01

05 10 01 00 00 00 00 00 02 00 01 00 12 0A 20 04

54 00 C0 02 48 70 82 08 03 03 14 06 21 E3 90 10

38 03 97 01 B6 00 5A 00 00 00 00 00 35 0C EC FF

And the possible stats location would be:

24c2f8 : H (Batting)

24c2f9 : H and 2B (Batting)

24c2fa : 2B and AL All Stars Index

24c2fb : NL All Stars Index

24c2fc : AL Cy Young and World Series Index

24c2fd : AL Cy Young and NL Cy Young Index

24c2fe : AL MVP and NL Cy Young Index

24c2ff : AL Rolaids and NL MVP Index

24c300 : AL Best Fielder (Gold Glove) and NL Rolaids Index

24c301 : AL Silver Slugger and NL Best Fielder (Gold Glove) Index

24c302 : Rookie Of the Year and NL Silver Slugger Index

24c304-05: Year

24c306-07: Putout (Fielding)

24c308-09: AB (Batting)

24c30a : 3B (Batting)

24c30b : HBP (Batting)

24c30c : G (Batting)

24c30d : G and HR (Batting)

24c30e : HR and SB (Batting)

24c30f : SB (Batting)

24c310 : R (Batting)

24c311 : R and RBI (Batting)

24c312 : RBI (Batting)

24c313 : Hold (Pitching)

24c314 : BB (Batting)

24c315 : BB and SO (Batting)

24c316 : SO (Batting)

24c317 : SF (Batting)

24c318 : AB_Scoring position (Batting)

24c319 : AB_Scoring position and AB_Base Loaded (Batting)

24c31a : AB_Base Loaded and H_vs Lefties (Batting)

24c31b : H_vs Lefties (Batting)

24c31c : AB_vs Lefties (Batting)

24c31d : AB_vs Lefties and H_Base Loaded (Batting)

24c31e : H_Base Loaded and SH (Batting)

24c31f : SH (Batting)

24c320 : H_Scoring position (Batting)

24c321 : H_Scoring position and Assist

24c322 : Assist (Fielding)

24c323 : Save Opportunity

24c324 : Error (Fielding)

24c325 : CS (Batting)

24c326 : CS (Catcher's Fielding)

24c327 : SB (Catcher's Fielding)

24c328 : CG (Pitching)

24c32a : Shutout (Pitching)

24c32b : Blown Save (Pitching)

24c32c : W (Pitching)

24c32d : L (Pitching)

24c32e : IP+ and ER (Pitching)

24c32f : ER (Pitching)

24c330 : BB (Pitching)

24c331 : BB and SV (Pitching)

24c332 : SV and HR (Pitching)

24c333 : HR (Pitching)

24c334 : R (Pitching)

24c335 : R and 2B (Pitching)

24c336 : 2B and GP (Pitching)

24c337 : GP (Pitching)

24c338 : 3B (Pitching)

24c339 : CS (Pitching)

24c33a : SB (Pitching)

24c33b : HBP (Pitching)

24c33c : GS (Pitching)

24c33d : IP (Pitching)

24c33e : IP and SO (Pitching)

24c33f : SO (Pitching)

24c340-41: AB (Pitching)

24c342-43: AB_vs Lefties (Pitching)

24c344-45: H (Pitching)

24c346 : H_vs Lefties (Pitching)

24c34c-4f: Team No. Offset

That's about all.

Link to comment
Share on other sites

Lots of, what would you like to hear about?

There are 3319 players in this game, most of AA and above players are real, yet with fake name.

There are also 50 classic players, and 243 generated fake players from TC system.

It's all there from the roster.iff, I'm thinking of releasing a roster sheet with all players in game.

Right now I use this sheet to identify all the fake name players with their birthday and height data, tracking over 600 players.

When I finish correcting fake names, a new and correct roster.iff file would be posted here.

That's what I'm gonna do with my roster sheet.

Thanks for your concern, see you. :)

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.


×
×
  • Create New...