Jump to content
anthony

A deeper question about playbook/formation hacking

Recommended Posts

I was wondering if any of you bigtime hackers could help me. I thought it would be cool to make a rom with the 1920's style of play....you know, single wing, notre dame box, red grange, the whole thing.

I was trying to tinker with the formations to make some of those old time formations where all 11 players were inside the box, but I'm kind of confined to what has already been programmed in.

For example, I'm trying to make some of the formations you see on this page: http://www.hickoksports.com/history/pro ... ns01.shtml. Most of it is possible...I've even gotten so far as to line up the left tackle and wide receiver directly to the left of the center, with the rest of the players spread right. But in the olden days, the quarterback was just a blocking back and lined up directly behind the pulling guards. And there doesn't seem to be any way to put a player in that location on a formation.

Does anybody know if its possible to hack player formations a different way, not just by using what the already-designed Tecmo plays have established for player locations? Any help would be greatly appreciated!

Share this post


Link to post
Share on other sites

Yeah, this is quite possible but would be very involved. You need to edit the actual design code and not use the pre-made locations.

This is from I program I made to extract formations, play design, and the like:

Offensive Formation: 04

QB A1D6:SetPosFromHike(F0 12); QB-Stance;

HB A222:SetPosFromHike(D4 40); 3pt;

FB A273:SetPosFromHike(0C 40); 3pt;

WR1 A29A:SetPosFromMid(36 14); 2pt;

WR2 A2D3:SetPosFromMid(C0 0C); 2pt;

TE A2F7:SetPosFromHike(CC 0C); 3pt;

OC A2FF:SetPosFromHike(F0 06); Hike;

LG A303:SetPosFromHike(E4 0C); 3pt;

RG A307:SetPosFromHike(FC 0C); 3pt;

LT A30B:SetPosFromHike(D8 0C); 3pt;

RT A30F:SetPosFromHike(08 0C); 3pt;

This formation is the normal Pro T in the game. To create a formation like the Single Wing you would need to edit the SetPosFromHike(Y X) or SetPosFromMid(Y X) where Y X are coordinates on the field.

So if you goto x8232 in the rom and change the D0 D4 40 to D0 D4 14 then the HB will be lined up directly behind the OL.

This actually sounds quite interesting. Hit me up if you need playbooks or more help. I have plenty of info on the Single Wing, Short Punt, T, Spread from the 40/50s, and etc.

Share this post


Link to post
Share on other sites

Yeah, it will be neat if I could get it work. I've been lurking here for so long, I thought I might as well contribute SOMETHING!

The cool this is, you could change some of the stuff, like make the players very slow, defenses very fast, make punting very important, make fumbles happen way more often, stuff like that. I don't know if its possible, but maybe theres a way to institute a short/fake punt? Essentially, it would become a whole different game, where mistakes are bound to happen and it becomes way more defensive. But I haven't gotten that far yet.

Now, I'm going to play with what you suggested. Some of the indepth hex is a bit over my head, but im comfortable enough with it to get some of it going. If I could get the game going well enough, I was thinking of screwing with some of the graphics in an in-depth way, maybe put red grange and jim thorpe in the startup screens, redrawing an image completely and not just slapping their name on the stale old LT and Barry Sanders openings.

On that note, do you know anywhere where I could find jersey designs and whatnot for those old time jerseys? Some of them are easy (Bears, Packers, Cardinals), but some of the more defunct teams are harder to pinpoint.

Share this post


Link to post
Share on other sites

I fiddled with the hex info provided by Jstout and came up with an I-formation. Haven't tested it out very much... some plays run ok, but in others, the HB hesitates.

x8233: F0 45          HB
x8284: F0 33 FB

Offensive Formation: 04

QB A1D6:SetPosFromHike(F0 12); QB-Stance;

HB A222:SetPosFromHike(D4 40); 3pt;

FB A273:SetPosFromHike(0C 40); 3pt;

WR1 A29A:SetPosFromMid(36 14); 2pt;

WR2 A2D3:SetPosFromMid(C0 0C); 2pt;

TE A2F7:SetPosFromHike(CC 0C); 3pt;

OC A2FF:SetPosFromHike(F0 06); Hike;

LG A303:SetPosFromHike(E4 0C); 3pt;

RG A307:SetPosFromHike(FC 0C); 3pt;

LT A30B:SetPosFromHike(D8 0C); 3pt;

RT A30F:SetPosFromHike(08 0C); 3pt;

This formation is the normal Pro T in the game. To create a formation like the Single Wing you would need to edit the SetPosFromHike(Y X) or SetPosFromMid(Y X) where Y X are coordinates on the field.

So if you goto x8232 in the rom and change the D0 D4 40 to D0 D4 14 then the HB will be lined up directly behind the OL.

Jstout, could you (or anyone else) provide this information for all of the formations or explain how to figure it out? Maybe even upload the program you made that extracted this info? :lol: I would like to make tons of different formations. Any help in this area would be greatly appreciated!

post-9024-13413725349538_thumb.png

Share this post


Link to post
Share on other sites

I attached what my program outputted for the NES formation section (this text file is old though but should work). At x4010 will be the pointers to the formations and at x4410 will be the pointers to the play design. If needed, you can add more pointers (for more formations) before you reach x4410.

I'm in the process of updating my program to have a much cleaner output but can upload it when I'm fully done with that.

viewtopic.php?f=22&t=11941 can be useful for the various codes and sections.

Formations.zip

Share this post


Link to post
Share on other sites

Thanks, jstout! A good while ago, I found that thread that you provided a link to. So far, I haven't been able to do too much with it. I understand some of the QB stuff. I've been wanting to emulate some of the wide receiver screens that you've done, but I can't figure out where the running plays are. It seems that you have set up the QB to pitch to a WR or a RB, in a run play slot. Figuring out how to alter the running routes, so the WR or RB can take the pitch behind the line of scrimmage is also a challenge and I'm not close to getting to that part.

I don't understand much about pointers, so I'll have to read up on them. Maybe that's the area that's hindering me so much.

Share this post


Link to post
Share on other sites
I fiddled with the hex info provided by Jstout and came up with an I-formation. Haven't tested it out very much... some plays run ok, but in others, the HB hesitates.

x8233: F0 45          HB
x8284: F0 33 FB

Offensive Formation: 04

QB A1D6:SetPosFromHike(F0 12); QB-Stance;

HB A222:SetPosFromHike(D4 40); 3pt;

FB A273:SetPosFromHike(0C 40); 3pt;

WR1 A29A:SetPosFromMid(36 14); 2pt;

WR2 A2D3:SetPosFromMid(C0 0C); 2pt;

TE A2F7:SetPosFromHike(CC 0C); 3pt;

OC A2FF:SetPosFromHike(F0 06); Hike;

LG A303:SetPosFromHike(E4 0C); 3pt;

RG A307:SetPosFromHike(FC 0C); 3pt;

LT A30B:SetPosFromHike(D8 0C); 3pt;

RT A30F:SetPosFromHike(08 0C); 3pt;

This formation is the normal Pro T in the game. To create a formation like the Single Wing you would need to edit the SetPosFromHike(Y X) or SetPosFromMid(Y X) where Y X are coordinates on the field.

So if you goto x8232 in the rom and change the D0 D4 40 to D0 D4 14 then the HB will be lined up directly behind the OL.

Jstout, could you (or anyone else) provide this information for all of the formations or explain how to figure it out? Maybe even upload the program you made that extracted this info? :| I would like to make tons of different formations. Any help in this area would be greatly appreciated!

After some testing, I found out something. I made this I-formation out of formation 04, Pro T. This also changes formations 05 Slot, 07 2TE, and 14 Pro T (:lol:, and others possibly, which is not good. :|

I'm going to try some other stuff, starting with changing 0B Offset I into a regular I-formation.

Share this post


Link to post
Share on other sites

1st of all, you are going into deep territory which requires a lot of time and testing and experiment.

2nd, search around here for bruddog's play hackers guidebook - a lot of info is in it, I believe the following list of pointers was taken from it.

Here's how this list is situated for the default formations:

Address Formation Player position pointer

  • Address QB RB1 RB2 WR1 WR2 TE C LG RG LT RT
    4068 Pro T d6a1 22a2 73a2 9aa2 d3a2 f7a2 ffa2 03a3 07a3 0ba3 0fa3
    407e Slot d6a1 13a2 73a2 96a2 cfa2 f3a2 ffa2 03a3 07a3 0ba3 0fa3
    4094 Onesetback d6a1 0fa2 6fa2 96a2 cba2 f3a2 ffa2 03a3 07a3 0ba3 0fa3
    40aa 2TE d6a1 0fa2 6ba2 96a2 cba2 f3a2 ffa2 03a3 07a3 0ba3 0fa3
    40c0 Motiond d6a1 0fa2 6fa2 96a2 bca2 f3a2 ffa2 03a3 07a3 0ba3 0fa3
    40d6 Shiftone d6a1 ffa1 5ca2 8da2 b3a2 f3a2 ffa2 03a3 07a3 0ba3 0fa3
    40ec Oneback d6a1 f6a1 53a2 84a2 aaa2 f7a2 ffa2 03a3 07a3 0ba3 0fa3
    4102 Offset I d6a1 f2a1 4fa2 96a2 cba2 f3a2 ffa2 03a3 07a3 0ba3 0fa3
    4118 R&S d6a1 0fa2 4ba2 96a2 d3a2 efa2 ffa2 03a3 07a3 0ba3 0fa3
    412e R&S 3wing d6a1 0fa2 47a2 96a2 a6a2 eba2 ffa2 03a3 07a3 0ba3 0fa3
    4144 Shotguna d2a1 3ba2 43a2 96a2 e3a2 e7a2 fba2 03a3 07a3 0ba3 0fa3
    415a Shotgunb d2a1 3ba2 43a2 96a2 9ea2 e3a2 fba2 03a3 07a3 0ba3 0fa3
    4170 shot 3 wing d2a1 eea1 3fa2 80a2 a6a2 dfa2 fba2 03a3 07a3 0ba3 0fa3
    4186 Shotgunc d2a1 eaa1 3ba2 96a2 9ea2 dba2 fba2 03a3 07a3 0ba3 0fa3
    419c Redgun d2a1 e6a1 37a2 77a2 9ea2 d7a2 fba2 03a3 07a3 0ba3 0fa3
    41b2 No back d6a1 daa1 26a2 8da2 b3a2 f3a2 ffa2 03a3 07a3 0ba3 0fa3
    41c8 Pro T(:lol: d6a1 73a2 22a2 9aa2 d3a2 f7a2 ffa2 03a3 07a3 0ba3 0fa3
    41de Onebackb d6a1 6fa2 0fa2 96a2 cba2 f3a2 ffa2 03a3 07a3 0ba3 0fa3

These are pointers - to go to the actual rom address, you need to convert the pointers.

I use this formula (need excel add-on for HEX2DEC and DEC2HEX)

For example QB on Pro T (d6a1):

1 - swap bytes (switch d6a1 to a1d6)

2 - subtract hex value 'x2000' from it

3 - add hex value 'x10' to it

4 - it becomes x81E6 (this is where to go hack)

Also, just because you move guys around doesn't mean they're gonna behave like you want. Like I've told you before, use fceux (tools - hex editor - view rom file) and you can test "live". Set up a save state, tweak some values, repeat.

Good luck.

Here's a pic of my T-Formation (pass 4 is HB pass) and 2-back shotgun in upcoming Time Machine 2:

post-3789-1341372535046_thumb.gif

Share this post


Link to post
Share on other sites

Thanks, buck, you gave me a lot of info. I used FCEUX to do the i-formation stuff I posted earlier in this thread, and it helped tremendously. For some reason, however, I can't get that emulator to search hex addresses very well; it will let me do it once, but not again thereafter. I must be doing something wrong. Regardless, I can search on my regular hex editor (XVI32, the one provided by bruddog).

Thanks for directing me to bruddog's Playbook Hacker's Guide. I've had it for awhile, but forgot all about it. When I first looked through it (back when I first started hacking), it was overwhelming; now it makes sense (mostly)! Your post was timely, too, as I spent last night working on converting the offset-i into an i-formation. I could rearrange the HB and the FB positions, but not the name that appears in the playcalling screen. The info was in that guide, and it was an easy edit. Thanks!

The instructions you provided for the hex conversion were incredibly useful. I may be able to figure out some of jstout's posts on this stuff, now. My only problem is that I don't get the same result when I convert using the example you provided. I come up with 81E6, whereas you came up with 8283. I used windows calculator (don't have Excel).

In the screenshot for your playbook, run 4 looks exactly like a play I came up with! I've had problems with the QB (while in shotgun) running forward before handing off. I can only have him pitch to the FB to prevent him from doing this, and the run play I came up with looks like your run 4. Your run 1 looks like a RB play; does the QB run forward on that play, or did you tinker with hex to solve that problem? Maybe you converted another formation (so you would have two versions of the T) and switched the HB and FB? I might try that myself...

Also, in my earlier post, I mentioned that the running back in my i-formation hesitated; well, he was supposed to (I just didn't realize it)! I had converted a sweep play where he hesitates before receiving the handoff. Anyhoo...

Thanks again for this info. If I can figure out how to properly convert hex and use pointers, I will have jumped a major hurdle! Now if I could just write code...

Share this post


Link to post
Share on other sites

You are right - it is 81E6 ! You passed the test :lol:

Have you found BAD_AL's TSB Playmaker? It's not perfect, but has helped me A LOT. Look here: viewtopic.php?f=34&t=9094&st=0&sk=t&sd=a&start=20

BTW, you don't have to be able to write code to do what you want to do. But you will need to understand what certain commands do and be able to swap things around...nevermind, you will need to write "basic" code for player mechanics, sequences and movements.

The one area I don't know how to hack is defensive mechanics and sequences, I just copy and paste that stuff.

Share this post


Link to post
Share on other sites

Yeah buck, I've used TSB Playmaker a good bit. I'm not sure I would be diving in this part of the pool without it! Still, there are some things you can't do with it, and I'm hoping I can combine it with the notes jstout has provided to come up with a few things.

As far as coding goes, I would like to understand assembly so I could do more advanced stuff like eliminating the playoffs, scrambling the play-calling screen after every play, etc. Basically, the kinds of stuff that cxrom and jstout come up with! But, that's all a dream. The best I can hope for is just following along and doing what others have done before me, and hopefully adding some of my own creative touches.

I've had a blast learning all of this stuff. I wouldn't be able to do it without this site and all of the helpful people, like you, here. I love you guys! AND Tecmo. Sweet, sweet Tecmo.

Share this post


Link to post
Share on other sites

Thanks, buck. I copied and pasted an opcode list last week in my pathetic attempt to understand assembly. The problem is, giving me an opcode list for assembly is like giving an illiterate an alphabet. I have no idea what the codes mean or how to use them. Furthermore, every primer that I read said something along the lines of, "First, you need to know basic..." or "Assembly is one of the harder computer languages...", or, well, you get my point. One programmer wrote, "... and after 6 months of teaching myself assembly, I finally was able to blah blah blah". I knew it already, but that made me certain that I wasn't going to get very far.

I tried to follow a few tutorials, to no avail. Thanks anyway. Maybe someday I'll learn enough to try it again. I've exceeded my expectations just to get where I am now, so I'm not discouraged or anything.

Share this post


Link to post
Share on other sites
hey buck did you change the defensive reactions when you made the new offensive plays?

Yes, if by "change" you mean "swap around" and use trial and error with TSB Playmaker. :lol:

I haven't jumped in and made detailed defensive sequence modifications yet. There are a couple of plays that need a defender or two tweaked, I just haven't found much information for defense.

Are defense sequences similar to offense (each player has 2 byte pointer which points to a sequence)? (A bruddog defense hacker's guidebook would be cool!)

I guess the things I need to know are:

1 - where are the defensive (2 byte?) pointers for each "play" located in the rom? (are they grouped similar to offense pointers?)

2 - just add x10 to get the rom sequence location ???

3 - then I need to study the TSB commands for defense

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Recently Browsing   0 members

    No registered users viewing this page.

×