Jump to content

Tecmo Bowl Hacking Document


TheFes75

Recommended Posts

For the original Tecmo Bowl!!
HUGE thanks to Jstuout for helping me find this.

To change individual plays:
Each play is made up of 8 bytes.  The first 2 bytes change the play and the last 6 are most likely the blitz bytes. I just replaced all 8 and it worked perfect.  You can put any play in any slot.

Indianapolis x18010
Play 1: 02 00, 02 55, 02 5B, 02 5B
Play 2: 02 53, 02 01, 02 5C, 02 5C
Play 3: 02 02, 02 1A, 02 1C, 02 1B
Play 4: 02 0F, 02 03, 02 1D, 02 1F

Miami x18030
03 04 03 62 03 04 03 04
03 05 03 22 03 3C 03 21
03 06 03 23 03 25 03 24
05 07 05 26 05 27 05 28

Cleveland x18050
02 00 02 55 02 5B 02 5B
02 53 02 01 02 5C 02 5C
02 08 02 2A 02 2B 02 29
02 2C 02 09 02 2D 02 2E

Denver x18070
03 0A 03 57 03 60 03 60
03 55 03 00 03 5B 03 5B
03 03 03 2F 03 1F 03 1D
05 31 05 0B 05 32 05 33

Seattle x18090
03 0A 03 57 03 60 03 60
03 55 03 00 03 5B 03 5B
03 03 03 2F 03 1F 03 1D
03 36 03 0C 03 37 03 38

LA x180B0
04 0D 04 58 04 61 04 61
04 0E 04 0E 04 0E 04 0E
04 63 04 1E 04 3B 04 20
04 39 04 10 04 3A 04 3B


 

 

Wash x180D0
02 00 02 55 02 5B 02 5B
02 11 02 11 02 11 02 11
02 05 02 3D 02 22 02 21
02 3E 02 13 02 3F 02 40

SF x180F0
03 5B 03 5B 03 5B 03 5B
03 03 03 1F 03 1D 03 34
03 08 03 29 03 2B 03 2A
05 12 05 41 05 42 05 43

Dal x18110
03 14 03 54 03 5D 03 5D
03 59 03 15 03 5F 03 5F
03 06 03 44 03 25 03 45
05 46 05 16 05 47 05 48

NY x18130
03 14 03 54 03 5D 03 5D
03 59 03 15 03 5F 03 5F
03 05 03 3C 03 22 03 21
03 2C 03 09 03 2D 03 2E

Chi x18150
03 0A 03 57 03 60 03 60
03 59 03 15 03 5F 03 5F
03 17 03 49 03 4B 03 4A
03 4C 03 18 03 4D 03 4E

Min x18170
02 0A 02 57 02 60 02 60
02 19 02 19 02 19 02 19
02 13 02 4F 02 40 02 3F
02 2A 02 08 02 29 02 2B

 

02 00 02 55 02 5B 02 5B (Washington's Run 1 from a single back set)

If you change the 4 sets of 02 to one of the Hex numbers below you will get the corresponding formation and you can run the play from it.

 

00=Kick Return

01=Kickoff

02=Single back

03=Single back offset

04=Split backs

05=Shotgun

06=3-4 defense

07=4-3 defense

08=FG offense

09=FG defense

0A=Punt Offense

0B=Punt Return

 

Playbook Pics
Unfortunately, the picture does not change with the play.  You'll have to do that manually, it's VERY easy, just copying and pasting with a good hex editor like hex workshop.
The pictures are in perfect order: IND run 1, run 2, pass 1, pass 2, MIA run 1, pass 1, pass 2, pass 3, CLE, etc. Each picture has 62 bytes.  You don't want to change the last 4 bytes on any play, as this tells the game which slot to use.
You can tell the begging and end of a play by:

2060616263 is run 1

2060616264 is run 2

5C5D5E5F63 is pass 1

5C5D5E5F64 is pass 2

5C5D5E5F65 is pass 3

(these make up the text for run 1 pass 1, etc. so change 63,64,65 for 1,2,3).
 

IND x890C
MIA x8A04
CLE x8AFC
DEN x8BF4
SEA x8CEC
LA x8DE4
WAS x8EDC
SF x8FD4
DAL x90CC
NY x91C4
CHI x92BC
MIN x93B4

The next section immediatly after the playbooks, x18190, may have to do with individual routes and such.  the defense "routes" are also affected.
Have fun. 

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

 

The Blitz bytes are in red. In order, play 1, 2, 3, 4. Here are the Def play bytes to match offensive plays:

VS IND x1A510

06 03
06 02 06 00 06 01
06 06 06 03
06 05 06 04
06 08 06 14 06 0B 06 0D
06 09 06 07 06 0A 06 0E

VS MIA x1A550

06 03 06 11 06 0F 06 10
06 07 06 0E 06 0A 06 14
06 12 06 0C 06 0E 06 13
06 08 06 30 06 15 06 2F

VS CLE x1A590

06 03 06 02 06 00 06 01
06 06 06 03 06 05 06 04
06 08 06 0C 06 42 06 16
06 09 06 08 06 16 06 0E

VS DEN x1A5D0

06 03 06 19 06 17 06 18
06 02 06 03 06 01 06 00
06 07 06 09 06 0E 06 0A
06 1C 06 08 06 1D 06 2F

VS SEA x1A610

06 03 06 19 06 17 06 18
06 02 06 03 06 01 06 00
06 07 06 09 06 0E 06 0A
06 14 06 08 06 13 06 0E

VS LA x1A650

06 03 06 21 06 1F 06 20
06 25 06 03 06 24 06 23
06 08 06 40 06 3D 06 41
06 3E 06 08 06 3F 06 3D

VS WAS x1A690

06 03 06 02 06 00 06 01
06 2E 06 03 06 2D 06 2C
06 07 06 09 06 0E 06 16
06 0C 06 1A 06 13 06 0E

VS SF x1A6D0

06 03 06 02 06 00 06 01
06 07 06 0E 06 0A 06 14
06 12 06 14 06 42 06 0A
06 08 06 31 06 32 06 2F

VS DAL x1A710

06 03 06 06 06 04 06 05
06 35 06 03 06 34 06 33
06 12 06 0C 06 0E 06 13
06 32 06 08 06 36 06 2F

VS NY x1A750

06 03 06 06 06 04 06 05
06 35 06 03 06 34 06 33
06 07 06 0C 06 0E 06 16
06 09 06 08 06 14 06 0E

VS CHI x1A790

06 03 06 19 06 17 06 18
06 35 06 03 06 34 06 33
06 08 06 14 06 3B 06 2B
06 14 06 08 06 09 06 0E

VS MIN x1A7D0

06 03 06 19 06 17 06 18
06 3A 06 03 06 39 06 38
06 1A 06 0C 06 0E 06 13
06 0C 06 12 06 16 06 42

The Def play pointers seem to begin at x1A810. The second byte in the pointers above are the actual defensive play numbers. For example, the blitz byte pointer "06 03", "03" is the defensive play number.
To get to the defensive play instructions you must do the following in hex:

03 * 12 + 1A810 = x1A846

That would be the location of def play #03 pointers. You will find these pointers:

3D B1 8C AD 50 B1 63 B1 76 B1 89 B1 94 B1 A7 B1 C2 B1

Take each pointer such as "3D B1", swap the bytes to get "B13D", add x10 in hex to get "B14D", now finally add a "1" in front of it to get "x1B14D". That is where that particular player instructions are located.

So far I have found that each defender's instructions start with a "21". If you change it, the defender's graphic is messed up and the most of the time misplays.

I'm find the offensive plays and instructions next.

I hope this helps out.

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

Using the offensive playbooks you posted, here is how the offense play pointers go. The player order is like this (Offense going right on screen): Singleback Set: Top WR, TE, RB, QB, Bot WR, LG, C, RG, LT. Two Back Set: TE, Top RB, Bot RB, QB, Bot WR, LG, C, RG, LT (9 sets of pointers; 18 bytes total) The second byte is play number just like on defense.

Here is an example using IND's play 1:

Indianapolis x18010
Play 1: 02 00
, 02 55, 02 5B, 02 5B

To get offensive play instructions, do the following in hex:

00 * 12 + 18190 = x18190


You'll find these pointers:

88 88 95 88 A5 88 B6 88 DF 88 EF 88 FD 88 08 89 16 89

Take each pointer such as "95 88", swap the bytes to get "8895", add x10 in hex to get "88A5", now finally add a "1" in front of it to get "x188A5". That is where that particular player instructions are located.

I notice that majority of offensive player instructions start with "20". Then only exception I've seen with this so far is the QB always uses "02". I will be looking for offensive formation pointer next. You can swap the play pointers for QB & RB and make wildcat plays, however, they stay in their original positions.

I have found all the play graphics. They are 62 bytes long. Ignore the first 2 bytes(just tells part of screen to place play graphics). The next 60 bytes are 6 rows of 10 tiles across from x8908 until x94A7. They are in order: play 1, 2, 3, 4.

IND x8908 x8946 x8984 x89C2
MIA x8A00 x8A3E x8A7C x8ABA
CLE x8AF8 x8B36 x8B74 x8BB2
DEN x8BF0 x8C2E x8C6C x8CAA
SEA x8CE8 x8D26 x8D64 x8DA2
LA x8DE0 x8E1E x8E5C x8E9A
WAS x8ED8 x8F16 x8F54 x8F92
SF x8FD0 x900E x904C x908A
DAL x90C8 x9106 x9144 x9182
NY x91C0 x91FE x923C x927A
CHI x92B8 x92F6 x9334 x9372
MIN x93B0 x93EE x942C x946A

Team names as they appear on the playcall screen, starts at x94A8 until x951F, they are up to 10 bytes long.

I am also figuring out what some of the offensive instructions do. I will use the IND Run 1 as an example again. The QB pointer is "B6 88", which is at x188C6. There you will find:

02 13 FF 02 00 00 00 00 00 01 C6 88 06 00 1F FE 1D 12 50 C4 9D 12 70 09 9E 12 60 15 9E 09 10 00 00 00 00 17 00 20 FF 1F FC

I took it that "02" means pitch to RB since he is third in the player order. So since the WR1 is first in player order, I changed "02" to "00" and the QB now pitch to the WR1 at the sideline just like a quick screen. So now soon we will be able to create our own plays for TB as well, but their is much more for me to figure out. I will post a copy of the rom with that new play & new play graphic.

Team uniform colors white players then black players:

IND x10350 x10354
MIA x10360 x10364
CLE x10370 x10374
DEN x10380 x10384
SEA x10390 x10394
LA x103A0 x103A4
WAS x103B0 x103B4
SF x103C0 x103C4
DAL x103D0 x103D4
NY x103E0 x103E4
CHI x103F0 x103F4
MIN x10400 x10404 

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

Roms are hexidecimal based. That means that they are base 16 instead of base 10. The range is from 0-F. A=10, B=11, C=12, D=13, E=14, F=15, 10=16, 11=17, 1F=31, etc...

Bo Jackson 4
3
0B 50 8A

Bit 1: 4 -> Acceleration time (Rushing Power) - The larger the number, the more time it takes for the player to get to max speed. Every offensive player in the game has a 3 for this value except Bo with 4 and Indy WR Bill Brooks with an 8 (I believe they messed up on the RP for Bill Brooks and John Elway. Elway is a 3 when all other QB's are an 8 and Brooks is an 8 when all other WR's are a 3.) Bo is likely this way to nerf the fact that he has the highest max speed. For defensive players this varies from 7 to 9. Most players are 8 or 9 with several of your elite guys like a LT at 7. All kickers and punters have a value of A meaning they change direction slower than anyone else in the game.

Bit 2: 3 -> Initial speed (Running Speed) - This is the speed you run at while you are accelerating to max speed. For offensive players this number varies from 0-4. For defensive players, it varies from 0-3 though only Ronnie Lott and LT have a 3 value.

Bit 3 and 4: 0B -> Max speed - The speed at which players top out at after accelerating from their initial speed. Offensive players vary from 05 to 0B while defensive players vary from 0C to 12. You can really tell the difference in offensive players when this is changed but I had a hard time finding differences in defensive players. It be nice if someone could verify or disprove the defensive part.

Bit 5 and 6: 50 -> Hitting Power - The higher the hitting power, the more likely you are to win grapples or "popcorn" the other player. Offensive players vary from 20-60 though 30-38 is the norm. Defensive players vary from 30-56. My guess is that there is a equation for popcorn, grapple, and tackles based on the variences between hitting powers. (A 32 point difference will create "popcorn" i.e 56HP defender and 88HP Kevin Mack or 48HP defender and 80HP Herschel Walker or Bo Jackson)

Bit 7: 8 -> Race - Tecmo has it's basic black or white player setting. 0 is used for white and 8 is used for black. Any value from 0-7 is white or any value from 8-F is black. (Washington uses a different color "black" than the other teams due to their dark red uniform color)

Bit 8: A -> Special Ability -
Quarter Backs: All QBs have the value 8 here except for John Elway, who has the value 3. I have no idea why this is or what it does. Any one notice anything different about Elway than the other QBs besides the fact he is fast. (His other stats make him faster) Does he run more than other QBs? If so this could be a scrambling number similar to the one TSB has.

RBs, WRs, TE: This value controls the QB passing speed/pitching speed plus it possibly might control the receiving ability. The numbers vary from 8-E here while most players on the same team have the same values.

Kickers and Punters - These probably control either the max distance the ball travels or the speed of the kick meter, but I honestly didn't care enough to figure it out. Kickers vary from 5 - A while Punters vary from 6 to E.

Kick Returners and Defensive players - These players all have a value of 0 which means that they don't use this bit. Changing it also seems to have no affect. 

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

The place to edit team uniform colors begins at address 10350. That line is for Indianapolis. Miami begins at 10360, Cleveland at 10370, etc. Indy's line breaks down like this:
0F 30
36
11 0F 30 15 11 0F 19 12 30

The first four bytes are four white players. The second four are for black players. The third four are for the field. You can use the TSB Manager to get the hex values for each color. If you go to where you edit team colors you get a 4 x 16 chart. The four rows represent the first digit, beginning with 0. The 16 columns represent the second digit, also start with 0. So Dark Gray is 00, Green is 0A, White is 30, Black 8 is 3F.

The green numbers are for the team's helmets & pants. The blue numbers are for the team's jerseys. The red numbers are for the players' skin color. 36 is used for all white players. Black players have 15, 05, or 0F depending on the team. The violet numbers are for the team's end zone. This is generally just a variation on one of the uniform colors, but not exactly the same, or else players would partially disappear. The other numbers are constant for all teams. 0F is black, the first two times this appears in each team line does not seem to affect anything. The third 0F is for the black parts of the field. The 19 is green, the color of the field. The 30 is the white part of the field.

Another place you might want to edit is the data for the touchdown screen, where the players jump & high-five each other. This begins at address 12510 and each team has one line, beginning with Indy. Their line looks like this:
30 11 0F 30 21 11 0F 36 21 11

The green numbers are again for the players' helmets. The first two blue numbers are for the players' jerseys. The third occurrence seems to be one of the colors in the background crowd. All the other numbers are constant for all teams. 

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

TECMO BOWL PLAYER COMMANDS

 

0x00 = Hike Under Center
0x01 = Hike From Shotgun
0x02 = Take Snap Under Center
0x03 = Take Snap From Shotgun
0x04 = Take Snap For Field Goal/Extra Point
0x05 = Stand (Time)
0x06 = Turn (Time)
0x07 = Wait (Chance, Start Time, End Time)
0x08 = Move-Relative (Location, Player)
0x09 = Move-Ball Placement (Location, Player)
0x0A = Run Rush (Player)
0x0B = Vertically Mirror Ball Carrier (Player)
0x0C = Pass Rush (Player)
0x0D = Run Rush (Player) *Same as 0x0A
0x0E = Pass Route
0x0F = Run Block (Man, Player)
0x10 = Pass Block (Player)
0x11 = Man-to-Man (Man, Player)
0x12 = Random (Chance, Pointer)
0x13 = Pass (Chance, Receiver, Pointer)
0x14 = Punt
0x15 = Set RS (Value)
0x16 = Set HP (Value)
0x17 = Computer Takes Control (Player)
0x19 = Kickoff
0x1A = Field Goal/Extra Point
0x1B = Kickoff Return Stance
0x1C = Kickoff Stance
0x1D = Player Takes Control
0x1E = Face Direction (Direction)
0x1F = Loop (Amount)
0x20 = Offensive 4-Point Stance
0x21 = Defensive 4-Point Stance
0x22 = Punt Return Stance *Set RS*2 to x12 and switches icon for return
0x23 = Set MS (Value)
0x24 = COA/COM Jump To (Pointer)
0x25 = COA/COM Random (Week, Pointer)
0x26 = Move-Relative (Location, Location, Location, Location)
0x27 = Random (Week, Pointer, Pointer)
0x28 = Take Snap For Punt

 

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

Fix for Bo Jackson Run so top defender is blocked:

 

SET(0x19062, 0x20163809D4E01000000F031000001FFB);

SET(0x19DF2, 0x250172A01505230A0F070100001FF715);

SET(0x1907E, 0x201505230A0F008000001FF7);

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

Fix for Pat Beach play so he is covered on play pick:

 

Still to come

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

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