Ninety roster slots, sixty-two actual fighters, and twenty-five years of arguing about who is best. It was never settled because nobody could say what the numbers on the stat screen do. Now they can: the damage formula is decoded, so every fighter's real move table can be run through the game's own arithmetic against one standard opponent. This is that ranking, and the method behind it.

Who is the best wrestler in WCW/nWo Revenge?

Scott Norton, by the game's own arithmetic — first of 62. Goldberg lands 8th, Sting 12th, Hollywood Hogan 24th. The rest of this page is how that was worked out, and why every previous ranking disagreed with every other one.

First, though: who is even in the list?

Who is even in it

The ROM has 90 roster slots. Two filters cut that down, and both are mechanical rather than a matter of taste:

  • Thirteen slots are not wrestlers. Managers and valets carry placeholder move tables that sum to around 400 damage where a real fighter reaches 1,800–2,200. The cut is drawn at 1,200, which sits in empty space between the two clusters. That leaves 77.
  • Fifteen more are duplicates. Some slots share a parameter file byte for byte with another slot: the same fighter under a second name. Deduplicating leaves 62 distinct fighters.

Why the obvious scoring is arbitrary

The tempting approach is to normalise a few columns, weight them, and add them up. It is how tier lists are usually built, and the trouble is visible the moment you write the weights down: why is an ability byte worth as much as a whole move table? Any answer is a preference, not a measurement. Worse, min–max normalisation makes every number relative to whoever is in the table, and a final rescale puts exactly 100 at the top and exactly 0 at the bottom by construction — so a 100 means "best of these 62", never "strong".

Since the engine is decoded, none of that is necessary any more. The game itself says what a fighter does — and you can watch it do so: drop your own ROM into the AKI Inspector and the Analyse tab opens with this exact ranking, computed in the browser from the cartridge in front of you. There is nothing to set, because there are no weights.

The scoring, derived from the engine

Take the damage formula from part two and run every fighter's real move table through it against one standard opponent — the roster average, identical for everyone, so it is a comparison under equal conditions:

# a fresh limb has condition 50, so the condition term is exactly the
# move's base damage:  (50 + 50) * base / 100 == base

damage_per_move = base + (my attack[limb] - their defence[limb]) * base / 10

# average that over all of a fighter's moves, against the average defence
# of the 62-fighter field:

deals   = mean over my moves of damage_per_move        # health points
takes   = mean over the five limbs of the damage the   # health points
          average attacker's average move does to me

moves_to_finish = 255 / deals      # how long I need to empty someone
moves_i_survive = 255 / takes      # how long I last

index = moves_i_survive / moves_to_finish
No weights, no normalisation, no rescaling. Every figure is in health points or in moves, and the index is a plain ratio: above 1.0 means you outlast what you need to finish, below 1.0 means you do not. The self-check on this is that the same formula also reproduces the pin, which is measured against the ROM.

Run it, and two things fall out. The first is the answer to the legend:

#WrestlerDeals per moveTakes per moveMoves to finishMoves survivedIndex
1Scott Norton14.7012.4217.420.51.184
2Chris Benoit14.5712.5617.520.31.160
3Giant14.5512.7017.520.11.145
4Saturn14.1212.5018.120.41.129
5Eddy Guerrero14.0712.5218.120.41.124
6Diamond Dallas Page14.0612.5618.120.31.120
7Scott Steiner14.1912.7018.020.11.117
8Goldberg14.0312.6418.220.21.110
9Juventud Guerrera14.0412.6818.220.11.107
10Rick Steiner13.5812.3318.820.71.101
11Psychosis13.9612.6818.320.11.101
12Sting13.7012.5818.620.31.089
Top twelve by the engine-derived index. Scott Norton comes first — the hidden-gem reputation turns out to be right by the game's own arithmetic.

The second is more interesting than the first: the roster is far flatter than the arguing suggests. Damage per move runs from 11.71 to 14.70 across all 62 fighters — a spread of 25 %. The index spans 0.874 to 1.184, about 35 %. There is no character in this game who deals double what another does; the ability bytes nudge a move by a few percent each way and the move's own base damage does the rest.

It also settles a question the stat screen can only pose. Compared against this engine-derived order, the ability-byte column is off by 6.5 places on average, and the moveset-total column by 18.4. The stat sheet the game shows you is a decent proxy for what the engine actually does. The move-table totals are not.

For completeness, all 62 with both the engine figures and the raw inputs:

#WrestlerkgAbilities5sMove damageDealsTakesIndex
1Scott Norton1523322,02814.7012.421.184
2Chris Benoit99.83112,12314.5712.561.160
3Giant244.93421,96014.5512.701.145
4Saturn106.6302,06414.1212.501.129
5Eddy Guerrero933012,17214.0712.521.124
6Diamond Dallas Page106.6302,00214.0612.561.120
7Scott Steiner106.63012,00014.1912.701.117
8Goldberg129.33221,95114.0312.641.110
9Juventud Guerrera74.83011,94714.0412.681.107
10Rick Steiner112.53621,87213.5812.331.101
11Psychosis90.7282,12313.9612.681.101
12Sting114.3341,96713.7012.581.089
13Chris Jericho102.1302,00213.5312.441.088
14Rey Mysterio Jr.70.32612,06014.4413.301.086
15Raven107.5281,84713.5712.521.083
16Scott Hall130.2281,92313.5812.541.083
17Lex Luger122.53021,91213.6412.601.083
18Wrath134.7272,09813.6512.681.077
19Booker T1173211,85113.2812.371.074
20AKI man109.8251,98213.5912.861.057
21Kevin Nash166.52811,88813.8013.091.055
22Buff Bagwell114.32611,96913.4912.811.053
23Dean Malenko98302,03313.1512.561.047
24Hollywood Hogan124.73111,86713.3212.741.045
25Curt Hennig118.82811,90813.1012.541.045
26Brian Adams146.1271,95413.1212.561.045
27La Parka105.2292,01613.2812.741.043
28Reese163.3241,86413.1712.661.040
29Ultimo Dragon79.43012,07612.9812.641.027
30Disco Inferno108.9281,89212.6612.441.018
31Bret Hart106.1291,81112.6612.471.015
32Roddy Piper103291,76512.4812.401.007
33Kanyon114.3251,97912.7412.681.005
34Glacier111.12411,82413.0013.030.998
35Meng140.6271,86012.8112.840.998
36Konnan113.4251,99812.7612.840.994
37Executioner117.9192,02513.7613.890.991
38Dr. Frank127221,98313.2013.580.972
39Han Zo Mon94.8222,08213.1413.540.970
40Barbarian136.1251,90312.4512.840.970
41Macho Man Randy Savage104.3281,83712.5612.980.967
42Maya Inca Boy119.7202,04012.4712.910.966
43Fit Finley104.8271,82012.4312.870.966
44Jim Neidhart123.8241,94012.3712.840.963
45Alex Wright98.9241,89512.3012.810.960
46Sick Boy113.4201,93812.5813.150.957
47Jekel122.9181,95513.0113.610.956
48Yugi Nagata104.3251,82812.2012.790.954
49Kidman83.9172,00713.0113.650.953
50Kim Chee159.7221,88012.5513.280.945
51Chavo Guerrero Jr.89.8191,94212.6113.400.941
52Van Hammer124.7201,99012.4513.400.929
53British Bulldog114.8211,91212.1213.150.921
54Shogun109.8201,86312.5713.650.921
55Stevie Ray132.4201,82312.2213.280.920
56Hawk Hana119.7191,93212.5613.820.909
57Ming Chee119.7211,94411.9613.360.895
58Lodi99.8171,86812.1613.650.891
59Riggs101.6171,86812.1613.650.891
60Brickowski109.8201,95012.1913.860.880
61Dake Ken104.8191,88211.9513.610.878
62Larry Zbysko109.3181,77311.7113.400.874
All 62 fighters, ordered by the engine-derived index. Abilities is the sum of the ten parameter bytes, 5s how many of them are maxed, Move damage the total across all 279 moves. Deals and Takes are health points per move against the average opponent. Computed from the ROM; nothing here is hand-entered.

Norton's parameter file reads 3 5 5 1 2 for offence and 3 4 4 2 4 for defence — 33 points, and two maxed offence values, which only four fighters have: Giant, Norton, Luger and Goldberg. He pairs that with a move table near the top of the field, and the combination is what puts him first. Hollywood Hogan, for the record, lands 24th.

Methodology

Everything was computed from a dump of my own cartridge with the AKI Inspector; the Analyse tab shows the same table for any ROM you open, and bin/staerke.js <rom> prints it on the command line. The damage formula it uses was read out of the game code and then executed in a MIPS interpreter against the cartridge's own memory image — the full account is in the write-up on the pin mechanic. No ROM data is reproduced here.

ROMWCW/nWo Revenge (USA)
Product codeNW2E
SHA-25666c137d326565c6f31f992daba8f67c0aee7f025a142dd249d27019708014b60
Roster90 slots, 77 with a real move table, 62 distinct fighters
Fresh limb condition50, so the condition term is exactly the move's base damage