On this page
  1. Related
  2. Games
  3. References
  4. Sources

Player ratings are the per-player numbers a sports game keeps for traits such as speed and strength. Tecmo Super Bowl keeps each rating in 16 steps, shown as 6 to 1001 and moves it by the player’s condition. Its running speed, rushing power, and max speed set how fast a player starts, how often he speeds up, and his top speed2.

  • Steps into tablesTecmo Super Bowl (1991). 16 steps per rating, shown as 6 to 100, moved by condition; separate speed tables for offense and defense.1,2

Games

GameYearHowNote
Tecmo Super Bowl1991Steps into tables16 steps per rating, shown as 6 to 100, moved by condition; separate speed tables for offense and defense
Every claim about this mechanic, by game (2)

References

  1. ^ abTecmo Super Bowl stores each player rating as a 4-bit index from 0 to 15, two to a byte. The player data screen shows an index as 6, 13, 19, 25, 31, 38, 44, 50, 56, 63, 69, 75, 81, 88, 94, or 100. When the game reads a rating, it adds the player's condition (bad 0, average 1, good 2, excellent 3) less 1 and clamps the result to 0–15, so a bad player plays one step down and an excellent one two steps up.Codebruddog/Tecmo_Super_Bowl_NES_Disassembly
    How we know
    5039@get_player_skill:                                                   ; GET PLAYER SKILL(Y=STARTER ID, A = SKILL TO GET)
    ⋮
    5042	LSR                                                              ; SHIFT RIGHT SINCE TWO SKILLS PER BYTE
    ⋮
    5045	BCS @save_skill_value                                            ; SKILL IN SECOND NIBBLE? YES-> SKILL IS IN SECOND NIBBLE OF BYTE
    ⋮
    5049	AND #$0F                                                         ; MASK OUT UPPER NIBBLE
    
    Bank31_fixed_bank.asm lines 5039–5050 at f3bae0e · upstream ↗
    5063@add_condition_to_skill:                                             ; UPDATE PLAYER SKILL VALUE BASED ON CONDITION
    ⋮
    5066	CLC                                                              ; FINAL SKILL INDEX= SKILL VALUE INDEX + PLAYER CONDITION
    5067	ADC player_addr                                          		 ;
    5068	SEC                                                              ; SET FINAL SKILL INDEX = 0, IF FINAL SKILL INDEX <0
    5069	SBC #$01                                                         ;
    ⋮
    5073	CMP #MAX_SKILL + 1                                               ; SET FINAL SKILL INDEX = 0X0F, IF FINAL SKILL INDEX >0X0F
    
    Bank31_fixed_bank.asm lines 5063–5075 at f3bae0e · upstream ↗
    128BAD_CONDITION						= $00
    129AVERAGE_CONDITION					= $01
    130GOOD_CONDITION						= $02
    131EXCELLENT_CONDITION					= $03
    
    constants_variables/constants.asm lines 128–131 at f3bae0e · upstream ↗
    2726SKILL_NUMBER_VALUE_TABLE:							                                            ; SKILL VALUES 
    2727	.WORD $0006, $0013, $0019, $0025, $0031, $0038, $0044, $0050
    2728	.WORD $0056, $0063, $0069, $0075, $0081, $0088, $0094, $0100
    
    Bank25_leaders_player_data_pro_bowl_abbrev.asm lines 2726–2728 at f3bae0e · upstream ↗
    2245@draw_skill_number:		
    2246	LDA skill_value						                                        ; LOAD SKILL INDEX 
    2247	ASL							                                                ; SHIFT SINCE EACH ENTRY IS TWO DIGITS 
    2248	TAY							                                                ; LOAD FIRST DIGIT FROM SKILL VALUES
    2249	LDA SKILL_NUMBER_VALUE_TABLE+1,Y					                        ; 
    
    Bank25_leaders_player_data_pro_bowl_abbrev.asm lines 2245–2249 at f3bae0e · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-22.

    Checked by a second AI model, 2026-10-22.

    In the claim ledger

  2. ^ abOn the field each player carries a current speed and a max speed. The max speed (MS) rating picks a max speed of 21 to 36 for an offensive player and 37 to 52 for a defender, one per step. Running speed (RS) sets the starting current speed, 14 to 29, and rushing power (RP) sets a countdown of 13 frames at step 0 down to 1 at steps 14 and 15. On each frame a player is moving, the countdown drops by 1; when it reaches 0 it reloads, and the current speed rises by 1 unless it has reached max speed. A computer-controlled defense facing a human-controlled offense loads differently: it adds CPU_DEF_MS_BOOST to its max speed and to its RS and RP steps, capping the steps at 15.Codebruddog/Tecmo_Super_Bowl_NES_Disassemblyrevised
    How we know
    1211SET_OFFENSIVE_PLAYER_SKILLS:                        ; SET OFFENSIVE PLAYER SKILLS ($40 = PLAYER POINTER)
    ⋮
    1215	LDY #MAX_SPEED_INDEX                            ; SET SKILL INDEX = MAX SPEED INDEX 
    1216	JSR GET_PLAYER_SKILL                            ; GET PLAYER SKILL ( Y= SKILL INDEX)
    1217	LDA OFF_MAX_SPEED_VALS,Y                        ; LOAD SPEED VALUE FROM OFFENSIVE MAX SPEED TABLE
    ⋮
    1220SET_DEFENSIVE_PLAYER_SKILLS:                        ; SET DEFENSIVE PLAYER SKILLS NORMAL($40 = PLAYER POINTER)
    1221	LDY #MAX_SPEED_INDEX                            ; SET SKILL INDEX = MAX SPEED INDEX
    1222	JSR GET_PLAYER_SKILL                            ; GET PLAYER SKILL ( Y= SKILL INDEX)
    1223	LDA DEF_MAX_SPEED_VALS,Y                        ; LOAD SPEED VALUE FROM DEFENSIVE MAX SPEED TABLE
    ⋮
    1225SET_PLAYER_RUNNING_SPEED:                           ; SET PLAYER SPEED
    1226	LDY #MAX_SPEED                                  ; SET CURRENT PLAYER MAX SPEED = MAX SPEED VALUE
    ⋮
    1229	JSR GET_PLAYER_SKILL                            ; GET PLAYER SKILL ( Y= SKILL INDEX)
    ⋮
    1233	JSR GET_PLAYER_SKILL                            ; GET PLAYER SKILL ( Y= SKILL INDEX)
    ⋮
    
    Bank27_misc.asm lines 1211–1238 at f3bae0e · upstream ↗
    1146@p1_on_defense:                                     ; P1 ON DEFENSE
    ⋮
    1149	LDA TEAM_CONTROL_TYPES                          ; IS P1 PLAYER TYPE = MAN
    1150	AND #$F0                                        ;
    1151	BEQ @set_p1_defensive_skills                       ; YES->SET NORMAL DEFENSE SKILLS
    ⋮
    1153	LDA TEAM_CONTROL_TYPES                          ; IS P2 PLAYER TYPE = COA,COM, SKP
    1154	AND #$0F                                        ;
    1155	BNE @set_p1_defensive_skills                       ; YES->SET NORMAL DEFENSE SKILLS
    ⋮
    1158	JSR SET_DEFENSIVE_SKILLS_WITH_COM_BOOST          ; SET BOOSTED COM DEFENSIVE RS,RP,MS AND NORMAL HP($40 = PLAYER POINTER)
    
    Bank27_misc.asm lines 1146–1158 at f3bae0e · upstream ↗
    1241SET_DEFENSIVE_SKILLS_WITH_COM_BOOST:                ; SET BOOSTED COM DEFENSIVE RS,RP,MS AND NORMAL HP($40 = PLAYER POINTER)
    ⋮
    1244	LDA DEF_MAX_SPEED_VALS,Y                        ; LOAD SPEED VALUE FROM DEFENSIVE MAX SPEED TABLE 
    1245	CLC                                             ;
    1246	ADC CPU_DEF_MS_BOOST                            ; + DEFENSIVE COM MAXIMUM SPEED BOOST
    ⋮
    1251	JSR ADD_COM_DEF_MS_BOOST                                   ; ADD COM DEFENSIVE RS,RP,MS BOOST INDEX, SET TO MAX VALUE IF TO LARGE(A= MAX SPEED INDEX)
    ⋮
    1256	JSR ADD_COM_DEF_MS_BOOST                                   ; ADD COM DEFENSIVE RS,RP,MS BOOST INDEX, SET TO MAX VALUE IF TO LARGE(A= MAX SPEED INDEX)
    
    Bank27_misc.asm lines 1241–1261 at f3bae0e · upstream ↗
    1308ADD_COM_DEF_MS_BOOST:                               ; ADD COM DEFENSIVE SPEED BOOST INDEX, SET TO MAX VALUE IF TO LARGE(A= MAX SPEED INDEX)
    1309	CLC                                             ; = MAX SPEED INDEX
    1310	ADC CPU_DEF_MS_BOOST                            ; +  COM DEFENSIVE SPEED BOOST INDEX
    1311	CMP #MAX_SKILL + 1                               ; IS INDEX < MAX INDEX?
    ⋮
    1314	LDA #MAX_SKILL                                  ; SET MAXIMUM SPEED SKILL INDEX = MAX INDEX
    
    Bank27_misc.asm lines 1308–1314 at f3bae0e · upstream ↗
    5427OFF_MAX_SPEED_VALS:                                                  ; OFFENSIVE_MAX_SPEED_VALUES
    5428	.DB $15, $16, $17, $18, $19, $1A, $1B, $1C
    5429	.DB $1D, $1E, $1F, $20, $21, $22, $23, $24
    ⋮
    5431DEF_MAX_SPEED_VALS:                                                  ; DEFENSIVE_MAX_SPEED_VALUES
    5432	.DB $25, $26, $27, $28, $29, $2A, $2B, $2C
    5433	.DB $2D, $2E, $2F, $30, $31, $32, $33, $34
    
    Bank31_fixed_bank.asm lines 5427–5433 at f3bae0e · upstream ↗
    423RESET_CURRENT_SPEED_RP_TO_INITIAL_VALUES:                          ; INITIALIZE PLAYER RUSHING POWER AND CURRENT SPEED TO DEFAULT VALUES 
    ⋮
    428	LDA RUSHING_POWER_VALUES_TABLE,Y                              ; SET PLAYER RUSHING POWER COUNTER  FROM RUSHING POWER TABLE ADDR  + SKILL INDEX OFFSET
    ⋮
    433	LDA RUNNING_SPEED_VALUES_TABLE,Y                              ; SET PLAYER RUSHING CURRENT SPEED = STARTING SPEED TABLE ADDR + SKILL INDEX OFFSET
    
    Bank21_22_play_commands_on_field_logic.asm lines 423–434 at f3bae0e · upstream ↗
    440UPDATE_RP_CNT_AND_CUR_SPEED_THEN_COLL_CHECK:                      ; CHECK FOR PLAYER MOVING AND UPDATE SPEED. IF MOVING RP= RP - 1
    441	RETURN_PLAYER_ACTIONS_IN_1_FRAME
    ⋮
    452	BNE COLL_CHECK_START                                          ; RUSHING POWER COUNTER > 0 YES->COLLISION CHECK START. 
    ⋮
    459	LDA RUSHING_POWER_VALUES_TABLE,X                              ; SET PLAYER RUSHING POWER COUNTER = FROM RUSHING POWER TABLE ADDR + SKILL INDEX OFFSET
    ⋮
    467	CMP (CURRENT_PLAYER_ADDR),Y                                   ; PLAYER CURRENT SPEED >= MAX SPEED? 
    468	BCS COLL_CHECK_START                                          ; YES->COLLISION CHECK START
    ⋮
    471	CLC                                                           ; NO->PLAYER CURRENT SPEED++
    472	ADC #$01                                                      ; 
    
    Bank21_22_play_commands_on_field_logic.asm lines 440–475 at f3bae0e · upstream ↗
    11366RUSHING_POWER_VALUES_TABLE:                                       ;RUSHING_POWER_VALUES
    11367	.DB $0D,$0C,$0B,$0A,$09,$08,$07,$06,$05,$04,$03,$03,$02,$02,$01,$01
    ⋮
    11369RUNNING_SPEED_VALUES_TABLE:                                       ;RUNNING_SPEED_VALUES
    11370	.DB $0E,$0F,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$1A,$1B,$1C,$1D
    
    Bank21_22_play_commands_on_field_logic.asm lines 11366–11370 at f3bae0e · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-22.

    Revised after a check by a second AI model, 2026-10-22.

    In the claim ledger

Sources

Code