Jump to content

The Final Frontier in Rom Editing


Gaffney

Recommended Posts

Ok i was just wondering something. With everyone looking at all the other aspects of tsb for nes, which i think is great and i support 100%, how come nobody had come up with a sim editor for tsbsnes? Is the hex code that much different from that of the nes version? I don't know just a thought.

Link to comment
Share on other sites

Actually I was kind of wondering the same thing (since nobody has been able to tell me how to change players from White to Black in the SNES rom).

It's all probably pretty similar, we should try to create the same types of editors for each. Honestly, that NCAA 2001 rom has convinced me that the TSB for the SNES can be better than TSB NES if utilized correctly. Get the play quicker and graphics edited right and it can look and play even nicer (I love being able to go forward and backward through receivers - quick outlets are a snap).

Anyway, if someone has the ability to make the editors for SNES as well I think there would be a pretty good audience. Being able to the edit the schedules on TSB SNES would be nice.

Gaffney

Link to comment
Share on other sites

I guess I wasn't really all that aware that TSBM 2000 had SNES support, but I guess that makes sense since it's been edited. Besides the player races and schedules, are there any other items that need to be changed? Kick-off teams for example?

As far as developing new Manager, I suppose there are ways to go about that. First, someone could ask Emuware about releasing their source code. Does anyone one know any of the 3-4 guys that own/code for the site? I know a guys who knows one of the program testors, so I'm about 2 degrees away.

Otherwise it's a matter of mapping where the infomation is in the rom. Much of the stuff that can be changed can be done without the assembly code knowledge or source code. A lot of it simply are hard coded variables so that the programmers could easily change the game as needed. I'm guessing that it's possible to change playbooks because there are 16 plays for the first pass and run slots, 16 for the second, etc.

A helmet editor could be made if someone knows how to code for it. All the images are made up of tiles that are made up of 16 2 digit Hex codes each. All the NES does is take those lines and re-arrange them on the screen. An editing program would only have to pull the right lines out of the rom and put them in the correct order.

A lot of this stuff is somewhat documented or known. It's really a matter of someone with knowledge of how the rom is laid out working with someone who can make a program to manipulate that the info in the rom and put it all back in the same place or someone who can do both.

Link to comment
Share on other sites

Well the guy who I'm talking to about coding an editor actually worked with Flash on TSBM. He said awhile ago he asked Flash for the source code, but Flash said it was long gone and was actually pretty much garbage anyway (I assume he meant it was inefficient). The thing with stuff like editing names is that apparently when you make a name longer (or shorter if you want to do it a 'clean' way) you need to change A TON of pointers in the rom, since the code length changes, which requires some formulation to re-calculate it all.

Apparently some guy who edited the helmets in one of the roms which included new ones actually added tiles to the Patriots helmet, meaning he not only assembled the old Pats tiles and edited them he actually re-coded the rom to include a new tile in the display. Since some of the helmets are limited in what you can change because of the number of and placement of tiles (like the Browns I would imagine) you may need to do this type of editing. If we could get someone to code a rom where tiles were added to all of the helmets so that each space on the visible helmet had a corresponding tile even if it went unused, then we could solve this problem permanantly. We just need someone capable of doing this. This is all based on what I have heard, anyway. I think we would need some similar coding in order to change palette associations (not the colors, but which palettes are actually used on the tiles) on the team selection screen as well.

So this is what I have right now for info. I'm waiting to hear back from a number of people. I would be great to make one big Tecmo editor that did helmets, endzones, simulations, plays, and all that stuff, but I would settle for many seperate ones as long as we can make their sum comprehensive of all we need to be able to change.

Link to comment
Share on other sites

All these ideas sound really great. I have always liked tsb for snes but without being able to edit things such as return teams, the players stats so they simulate to the players abilities, also being able to edit the plays so you can set up any play in any slot would be cool. Just anything to be able to edit these other things for the snes would open up all kinds of possibilities.

Link to comment
Share on other sites

I know exactly what you mean about the pointers. Partyman66 developed a program for extracting the names from a tsb rom and he used the pointers in the rom to pull out the names. Every name has a pointer on the address so that's up to 844 pointers that need to be changed when you resize the players names. Do you need to know where the pointers are because I can tell you that and explain how they work?

I'm assuming that all the helmets work by having pointers then as well? Who figured this out? If every team helmet can have their pointers changed then you could re-arrange that whole section of the rom in order to provide each helmet with it's own tiles, like you said before. Do you know where in the rom these pointers are?

Link to comment
Share on other sites

One of those things if I had the time...it looks manageable provided that's all code it outputs, and it's not mixed in with the data.

Well the disassembler makes something that looks like this:

32790 01:8013 CPX $FFFC

I don't know what an API is, but it's something that looks like a language like BASIC or PASCAL or C or something readable I'm all for that.

I remember there is one FAQ that has info on a lot of the save states.

Can anybody get the source code for TSBM or TSBM2000? We could probably work backwards to get the pointers from that.

I've been trying to assemble a team of people to get information. I just emailed the guy who was able to edit the large helmets in TSB by (I believe) adding tiles - which means he must know something about the code. If we could get an editor which filled each helmet with usable and editable tiles and allowed you to edit it and the pallette directly that would be good.

Rod, I think if you can post that information that would be good. Then everybody could begin posting the locations they know of and we could figure out what (as a whole) we know and what is left out there. Anyone who has a better idea or a better understanding of how this works please throw your input in....my advice may not be the best way to go about this.

Link to comment
Share on other sites

I know exactly what you mean about the pointers. Partyman66 developed a program for extracting the names from a tsb rom and he used the pointers in the rom to pull out the names. Every name has a pointer on the address so that's up to 844 pointers that need to be changed when you resize the players names. Do you need to know where the pointers are because I can tell you that and explain how they work?

I'm assuming that all the helmets work by having pointers then as well? Who figured this out? If every team helmet can have their pointers changed then you could re-arrange that whole section of the rom in order to provide each helmet with it's own tiles, like you said before. Do you know where in the rom these pointers are?

Are you sure you don't mean his extracting program didn't use pointers to point to certain player's names/abilities/stats? I would have no clue as to determining a hex or set of hex values on the rom would be a pointer to something else. Why wouldn't Partyman just parse the rom? How exactly did he do this? Did he post the source code to this extracting program somewhere?

Link to comment
Share on other sites

The reason the game has pointers to the names is because they are stored as jersey number, lowercase first name, upper case last name.

The problem with just parsing the rom for the names is that though you can tell where upper and lower case numbers start since they both fall in a certain range you can't tell where the jersey numbers start and stop.

For example:

0000:15BE 90 6E 65 69 6C 53 4D 49 54 48 58 64 65 72 72 69

Link to comment
Share on other sites

This post makes me think that we should all get together one weekend in a room with computers and a dry-erase board, figure out the Super Bowl Code and take back our game from those evil Tecmo People. We could then call it "repository" super bowl and forever rid ourselves of those lazy and ignorant tecmo turds forever.

Link to comment
Share on other sites

The reason the game has pointers to the names is because they are stored as jersey number, lowercase first name, upper case last name.

The problem with just parsing the rom for the names is that though you can tell where upper and lower case numbers start since they both fall in a certain range you can't tell where the jersey numbers start and stop.

For example:

0000:15BE 90 6E 65 69 6C 53 4D 49 54 48 58 64 65 72 72 69

Link to comment
Share on other sites

I've got to imagine it would be pretty tough to de-code it even as a team, but it we could that would be awesome. Even if we could just get it into groupings like :"Introduction" and "Gameplay" and "Playbook Selection" so we could know where to look to break it down further. And we could change all the Hex from location 0F23 to "Bills Kicker" or something to make it more comprehendable.

Someone suggested we just code it from scratch...I doubt we could duplicate the magic of the gameplay without endless testing - plus it wouldn't be Tecmo...

Link to comment
Share on other sites

Yeah, I wouldn't want to mess with the gameplay, but I'd just want to add new plays... new helmets... and a franchise mode. Rock on.

What about a salary cap, college and supplemental draft, career ending injuries and defensive substitutions? We should probably fix the punt block problem too.

Link to comment
Share on other sites

Anyway, I was dicking around looking for the play book pointers. The easiest way to find them since they've obviously would have been found already due to you being able to mod them in TSBM would be to make a copy of a rom, change a play, and find the point where the roms differ. It took me a little while to figure that out though.

Anyhoo, here is the code that tells the game what every team's default plays are:

0001:D310 01 04 60 20 70 46 65 26 10 24 02 60 76 55 65 62 ..` pFe&.$.`vUeb

0001:D320 01 54 50 62 11 26 20 00 10 26 62 60 42 02 13 30 .TPb.& ..&b`B..0

0001:D330 35 54 44 36 20 27 21 27 37 25 74 16 11 24 27 62 5TD6 '!'7%t..$'b

0001:D340 23 63 11 45 06 24 64 20 64 73 36 45 35 56 47 56 #c.E.$d ds6E5VGV

0001:D350 10 41 14 70 53 63 47 43 12 27 04 21 70 25 25 26 .A.pScGC.'.!p%%&

0001:D360 42 10 13 31 53 66 47 27 13 64 52 23 00 34 64 24 B..1SfG'.dR#.4d$

0001:D370 10 34 04 34 47 44 24 31 27 44 51 26 42 11 12 77 .4.4GD$1'DQ&B..w

0001:D380 04 0F 12 1D 20 2B 37 3E 00 09 13 1C 25 28 33 3C .... +7>....%(3

The first seven lines are for the 28 NFL teams while the last line is for the Pro Bowl team. For the NFL teams, the each play book is made up of 4 bytes and thus each play is represented by 1 digit. You will notice that the first seven lines only use the eight values in 0-7 and don't contain any values from 8-15. This is because for each place you can change a play you have only 8 to choose from.

For example, the first team is the Buffalo Bills and their run plays are represented by 0 1 0 4. If you check out my plays link, you will see that I actually have the plays in order the same way Tecmo does. Thus, 0 should represent T Fake Sweep R, 1 should represent FB Offtackle L, 0 should represent Shotgun Draw, and the final 4 would represent Pro T Dive. You can look that up, but I can assure you that this is the default playbook.

Now what if you use a number higher than 7 for a play? Since the plays are all fairly relative to each other a number higher than 7 will represent a play from the next spot over. Thus, if you had 8 for the first running play, it would correspond to 0 from the second running play and put that play that normally could only be used in the second slot into the first slot.

For example, taking our 0104 from the Buffalo Bills and changing it to 9104 would change the first play from T Fake Sweep R to FB Offtackle L.

The only side affects are:

1. When getting a running play from the next section the name of the player who will be running the ball doesn't appear over the play like normal

2. If you pick a play from the next set of plays in the run 4 slot, you will actually be picking a pass play. The only problem with this is that the game will treat this as a run play and the QB would be the running back.

3. If you pick a value above 7 from the last passing play slot, you will get gibberish to appear in the play select screen instead of a regular play and choosing that play will cause the game to misplay.

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

Finally we get to the Pro Bowl plays. For some reason they've decided to use two digits per play for the pro bowl and like the Bills run and pass plays I've highlighted the runnning plays in red and passing in blue.

With two digits for a pointer, you can put any play into any slot. This is cool except that you really can't put run plays into passing slots or vice versa without wierdness occurring. You know what happens with a pass play in a run slot but when you put a run play in a pass slot there are also strange results. After the QB hands off to the RB, the RB has the ability to throw the ball, except he can only throw it to the QB as long as he doesn't go over the line of scrimage. It's honestly like a wacked out option/lateral play.

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

What does this all mean?

- Well it's possible to put some plays into different slots, but if you try to change the plays that play won't be one of the options. (You can always get it back by resetting to original play books)

- It looks like it could be possible to make the NFL team pointers two digits like the Pro Bowl teams since there is enough "empty" space in the section to do so.

- This is probably more useful if you are going to change plays just once and a while and could be very useful in Online Tecmo leagues.

Link to comment
Share on other sites

Wow, that's a lot of info. Here's a thought. Let's say you made the regular teams have a two-bit play selection thing. That means if we could find out:

a) where the coding for the plays are

and

B) decode how the play picks its formations, routes, blocking assignments, etc...

then we could theoretically insert plays after play #64 and have them available to every slot in the playbook, but perhaps only available via hex editor not by in-game play selection.

Is there any way we could read the code before the playbook info to see how it indicates where these point to?

Link to comment
Share on other sites

Or perhaps a more simlpe place to start would be to see if it sets each digit to a play individually or to one starting point in a string of plays.

If its the former we could simply change the pointers from plays like WTE Flicker to ones people might actually want to put in their playbook.

Link to comment
Share on other sites

At the risk of looking like a moron for posting too many consecutive times I do want to say this - if you put in plays beginning with D (like D1 or DC) you get some crazy results. One of them comes out of the slot formation and hands off to the guy in motion, another is a Pro T where the ball is hiked then RB1 suddenly has the ball, one is 2TE that has three possible options:

1) QB runs forward with ball and begins chop-blockign people

2) QB hands off to RB1 who is running upwards

3) ball is hiked far over the head of the QB and you get a safety

unfortunately you have no control over which one happens. Also sometimes these plays will occasionally begin with a kick-off bar floating around at the top - that usually means you will be getting a safety imminently.

The point, though, is that the CPU seems to be using some trash pointer to decide what happens in the play, meaning we should be able to decifer what data yields what results and tinker with it until we have plays that function normally.

Link to comment
Share on other sites

It looks like it's possible to move plays around as well. The playbook pointer numbers control which play diagram will appear on the screen and which play will be run on the field.

Now I've found in the rom where the pointers are to which plays are run on the field. If you do a search for the text of the play names like T FAKE SWEEP R you will be in the section I'm talking about. Each play takes up 24 bytes. Most of this is filled up by the letters of the play and the rest are filled up with numbers that I assume are the pointers to the actual play.

Thus, if you took the 24 bytes for T POWER SWEEP and pasted them into the location where T FAKE SWEEP R is you'd get:

- The play to display T POWER SWEEP in text

- The diagram of the play would appear like T FAKE SWEEP R in your play book

- The play would be run like T POWER SWEEP

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

This means that:

- Right now you could eliminate any running or passing plays you want and replace them with any passing plays or running plays though you can't put passing plays in the running play slots without getting the wacky results I described above

- The only downfall to this is that the pictures would be wrong for the plays. This would be a matter of finding the pointers to the images and changing them. This is doable once the location of these pointers are found.

- There is room to add 32 more plays. I don't know exactly how you would reference them but the space is there.

- Designing new plays is still a mystery and I'm leaning towards doubtful without source code.

Link to comment
Share on other sites

Hey guys,

I'm the programmer that Gaffney contacted about doing work on this project....I haven't had time to read all through this thread, but I remember while I was working on my prior (now non-existant) project, my partner in crime had figured out how to modify pass plays....I don't remember the details, but there were variables that could be modify to change what route a particular receiver ran, etc, etc.

Anyway, drop me a line at [email protected] to discuss ideas you have. I honestly haven't torn into the rom in ages..and I don't have the time to...but I do have some killer ideas for a utility, and I can code anything you want.

Link to comment
Share on other sites

  • 2 weeks later...
  • 2 months later...

Did anyone find a way to make an option play in the run slots? I think someone found if you put a run play in the pass slots it runs like you have only one receiver option. Is there any way to do something like this in a run formation - where RB1 runs a route an the QB is commanded to do something like a pass play...or do run plays just never let you have control over whether you can throw the ball or not.

Link to comment
Share on other sites

  • 1 year later...
It looks like it's possible to move plays around as well. The playbook pointer numbers control which play diagram will appear on the screen and which play will be run on the field.

Now I've found in the rom where the pointers are to which plays are run on the field. If you do a search for the text of the play names like T FAKE SWEEP R you will be in the section I'm talking about. Each play takes up 24 bytes. Most of this is filled up by the letters of the play and the rest are filled up with numbers that I assume are the pointers to the actual play.

Thus, if you took the 24 bytes for T POWER SWEEP and pasted them into the location where T FAKE SWEEP R is you'd get:

- The play to display T POWER SWEEP in text

- The diagram of the play would appear like T FAKE SWEEP R in your play book

- The play would be run like T POWER SWEEP

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

This means that:

- Right now you could eliminate any running or passing plays you want and replace them with any passing plays or running plays though you can't put passing plays in the running play slots without getting the wacky results I described above

- The only downfall to this is that the pictures would be wrong for the plays. This would be a matter of finding the pointers to the images and changing them. This is doable once the location of these pointers are found.

- There is room to add 32 more plays. I don't know exactly how you would reference them but the space is there.

- Designing new plays is still a mystery and I'm leaning towards doubtful without source code.

Did anybody ever find the pointers to the play images?

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...