News: 11 March 2016 - Forum Rules
Current Moderators - DarkSol, KingMike, MathOnNapkins, Azkadellia, Danke

Author Topic: Getting started hacking NBA JAM for SNES; Looking for some help  (Read 20091 times)

dext3r

  • Jr. Member
  • **
  • Posts: 9
    • View Profile
Getting started hacking NBA JAM for SNES; Looking for some help
« on: December 09, 2010, 08:03:20 pm »
Hello all.
This is my first foray into ROM hacking. I'd like to make a player editor for NBA JAM Tournament Edition for SNES. It should be able to edit pictures, names and stats.

A small amount of background: I can program C and I'm somewhat familiar with Motorola 68000 ASM, so I'm not a horrible n00b. I've programmed PIC microcontrollers in ASM. I understand pointers.  :laugh:


I've been using vSNES and geiger's debugger for snes9x to try and learn what's going on behind the scenes.
After some research, I've come up with the following assumptions/findings:

Player pictures are drawn to the background using DMA. More specifically, drawn to BG1 - Priority 0 (with BG Mode = 3).
Player names are sprite tiles.
Player stats are drawn to 8x8 sprite tiles.

I'm assuming all of these are wrapped into some kind of struct, with player picture data, name sprite data, stats numbers and possibly what team they play for, but thats more for later hacking.
Right now, I'd mainly like to figure out where/how the player graphics are stored. I did a DMA trace in geiger's on the team select screen:


The PRESS START flashes on and off, which continually floods the DMA trace with text. I saved the dump and removed the data that repeated, leaving me with the following:
Code: [Select]
DMA[0]: CPU->PPU Mode:1 0x0FD101->0x2118 Bytes:200 (inc) V:229 VRAM: 7C00 (1,0) word
DMA[0]: CPU->PPU Mode:1 0x0FD301->0x2118 Bytes:200 (inc) V:233 VRAM: 7D00 (1,0) word
DMA[0]: CPU->PPU Mode:1 0x0FD101->0x2118 Bytes:200 (inc) V:236 VRAM: 6400 (1,0) word
DMA[0]: CPU->PPU Mode:1 0x0FD301->0x2118 Bytes:200 (inc) V:240 VRAM: 6500 (1,0) word
DMA[0]: CPU->PPU Mode:1 0x7EED00->0x2118 Bytes:1C0 (inc) V:243 VRAM: 75C0 (1,0) word
DMA[0]: CPU->PPU Mode:0 0x108000->0x2122 Bytes:20 (inc) V:247 CGRAM: E0 (0)
DMA[0]: CPU->PPU Mode:0 0x0CF31C->0x2122 Bytes:A (inc) V:247 CGRAM: 09 (0)
DMA[0]: CPU->PPU Mode:0 0x0CF30E->0x2122 Bytes:A (inc) V:248 CGRAM: 02 (0)
DMA[0]: CPU->PPU Mode:1 0x7EC300->0x2118 Bytes:A80 (inc) V:230 VRAM: 27A0 (1,0) word
DMA[0]: CPU->PPU Mode:0 0x7F70B0->0x2122 Bytes:40 (inc) V:247 CGRAM: 50 (0)
DMA[0]: CPU->PPU Mode:0 0x0CF31C->0x2122 Bytes:A (inc) V:248 CGRAM: 09 (0)
DMA[0]: CPU->PPU Mode:0 0x0CF30E->0x2122 Bytes:A (inc) V:248 CGRAM: 02 (0)
DMA[0]: CPU->PPU Mode:1 0x7ECD80->0x2118 Bytes:A80 (inc) V:230 VRAM: 2CE0 (1,0) word
DMA[0]: CPU->PPU Mode:0 0x44BA09->0x2122 Bytes:40 (inc) V:247 CGRAM: 70 (0)
DMA[0]: CPU->PPU Mode:0 0x0CF31C->0x2122 Bytes:A (inc) V:248 CGRAM: 09 (0)
DMA[0]: CPU->PPU Mode:0 0x0CF30E->0x2122 Bytes:A (inc) V:248 CGRAM: 02 (0)
DMA[0]: CPU->PPU Mode:1 0x29CFA5->0x2118 Bytes:C0 (inc) V:230 VRAM: 6800 (1,0) word
DMA[0]: CPU->PPU Mode:1 0x29D065->0x2118 Bytes:C0 (inc) V:231 VRAM: 6900 (1,0) word
DMA[0]: CPU->PPU Mode:1 0x2AD5AC->0x2118 Bytes:C0 (inc) V:232 VRAM: 6860 (1,0) word
DMA[0]: CPU->PPU Mode:1 0x2AD66C->0x2118 Bytes:C0 (inc) V:234 VRAM: 6960 (1,0) word
DMA[0]: CPU->PPU Mode:1 0x7EED00->0x2118 Bytes:1C0 (inc) V:235 VRAM: 75C0 (1,0) word
DMA[0]: CPU->PPU Mode:0 0x0CF31C->0x2122 Bytes:A (inc) V:239 CGRAM: 09 (0)
DMA[0]: CPU->PPU Mode:0 0x0CF30E->0x2122 Bytes:A (inc) V:239 CGRAM: 02 (0)

I'm assuming this might be the player picture data (in addition to loading some palette information). I've got a couple questions about this information. First, how does one read what this is saying?
For example, the first line:
Code: [Select]
DMA[0]: CPU->PPU Mode:1 0x0FD101->0x2118 Bytes:200 (inc) V:229 VRAM: 7C00 (1,0) word
I think I get DMA Channel 0, from CPU to PPU (duh), Mode 1 (duh), Starting address 0x0FD101 (???) to 0X2118 (VRAM write), copy 200 total bytes(?)
What is V:229 VRAM: 7C00 (1,0) word telling me? Is VRAM: 7C00 the ending location of VRAM written to? I see the next VRAM is 7D00, but 7C00 + 200 = 7E00, so I'm not really following. I figure I'm on the right track though...

Is this the correct way to go about finding the player picture data? If not, could someone give me a pointer on how to go about finding it?
I just need a little help here and can probably move on and figure out the player name stuff on my own. I'm sure I'll be back for the modifying the stats though.  :D

Much thanks for the help!

Auryn

  • Hero Member
  • *****
  • Posts: 650
    • View Profile
Re: Getting started hacking NBA JAM for SNES; Looking for some help
« Reply #1 on: December 09, 2010, 09:08:09 pm »
Oh the good old SNES and NBA Jam...good memories :)

Hi Dext3r..i think u maybe has gone a little bit overboard heheh.
Your approach is probably good for a game with compressions but just remember that there are many tool around to hack SNES.
Just a plain text search in the rom with an hex editor (or even wordpad because it's in ascii), would show u all the names of the players :p


And a view with a tile editor would show u the team name with alot of other uncompressed graphics:


The programs i used in the pics are Translhextion (or any other hex editors) and TilEd2002 (tile editor).
Both can be found in the utility section of this site.

For the ASM part, i let that to the megaminds of RH because i'm not sure myself heheh


PS: Sorry moderator..i forgot how to make the pics smaller in the forum

« Last Edit: December 09, 2010, 09:48:11 pm by Auryn »

dext3r

  • Jr. Member
  • **
  • Posts: 9
    • View Profile
Re: Getting started hacking NBA JAM for SNES; Looking for some help
« Reply #2 on: December 09, 2010, 09:17:21 pm »
I have already searched through the ROM with a hex editor and have found the player names. Unfortunately, modifying the ASCII in the ROM only changes the name in the "Starring" roll call screen; it does not modify the player name in the game. For example, I replaced Toni Kukoc with my friends name because it was the exact same size:


I tried my name (much longer) and the game crashes, probably cuz I've moved too much stuff around and the CPU gets wonky. I'm pretty sure there is a routine to draw the "Starring" screen by reading the ASCII, looking up the appropriate graphic and drawing to VRAM, then loop until null character or something similar.

Thanks for the reply about the tile editors! I will check them out right now. Eventually though I would like my editor to be an all-in-one solution.

Auryn

  • Hero Member
  • *****
  • Posts: 650
    • View Profile
Re: Getting started hacking NBA JAM for SNES; Looking for some help
« Reply #3 on: December 09, 2010, 09:58:49 pm »
Wow..that was fast :p
I was fighting to upload the images heheh
Anyway, i saw some names with the tile editor, maybe that are the one u are looking for.

About the name being too long: it's possible that there are some limitations with the programming and u have maybe 16 characters max (not sure if 16). I belive that u forgot the x00 at the end of the name and respectively that by moving that x00 u maybe got some problems with the next pointer to point to a x00 instead of a character (maybe the program doesn't like that).
All this assuming that u are overwriting and not inserting bytes in your rom. If u insert bytes, u will change the dimentions of the tom and mess it up.

dext3r

  • Jr. Member
  • **
  • Posts: 9
    • View Profile
Re: Getting started hacking NBA JAM for SNES; Looking for some help
« Reply #4 on: December 09, 2010, 10:05:53 pm »
Wow..that was fast :p
I was fighting to upload the images heheh
Anyway, i saw some names with the tile editor, maybe that are the one u are looking for.

About the name being too long: it's possible that there are some limitations with the programming and u have maybe 16 characters max (not sure if 16). I belive that u forgot the x00 at the end of the name and respectively that by moving that x00 u maybe got some problems with the next pointer to point to a x00 instead of a character (maybe the program doesn't like that).
All this assuming that u are overwriting and not inserting bytes in your rom. If u insert bytes, u will change the dimentions of the tom and mess it up.

Thanks again about the tile editor, I found the names and the addresses. That is a big help for me.  :thumbsup:
Regarding the name being long: Yeah, I had inserted bytes.

I'm still going to dig through the ASM because I eventually have more plans for this game and need to learn as much as I can.

Auryn

  • Hero Member
  • *****
  • Posts: 650
    • View Profile
Re: Getting started hacking NBA JAM for SNES; Looking for some help
« Reply #5 on: December 10, 2010, 04:35:03 pm »
A little precisation about long names (if there is no programming limits):

Let's assume that u have the names " AAA BBB.CCC DDD" where the "." is the famous x00 and " " is x20 (space).
U want to change the "AAA BBB" to "EEEE FFFF", u can overwrite the AAA BBB till u get something like this:
"EEEE FFFF. C DDD". If u load the game now, if the game want to call AAA BBB, u will get EEEE FFFF on screeen but if it want the name CCC DDD, u will get only FF on screeen.
To correct this, u have to mess with the pointers (in this case with the second name pointer to be 3bytes higher).
Because all the name are adiancent to each others with no empty spaces in between (i didn't check after the names in the rom), the total ammount of bytes for the names could become an issue.

dext3r

  • Jr. Member
  • **
  • Posts: 9
    • View Profile
Re: Getting started hacking NBA JAM for SNES; Looking for some help
« Reply #6 on: December 14, 2010, 02:43:23 am »
Hello again,

I am getting confused as to how memory addressing works...

From the debugger:
Code: [Select]
$A9/87D3 8E 0B 42    STX $420B  [$00:420B]   A:0200 X:0001 Y:0094 P:envmXdIzcAfter this line is executed, I check $420B, and do not find 01 there (nor 00). I also check $0B42. Could someone explain what I'm doing wrong? The DBR is $00, correct?

Code: [Select]
$A9/87DC A5 2E       LDA $2E    [$00:002E]   A:7D00 X:0001 Y:0094 P:envmXdIzcThe Direct Page register is 0, so I'm expecting A to be loaded from $2E and $2F. $2E shows 01, $2F shows D3.
After I exectute that line, my assumptions are correct:
Code: [Select]
$A9/87DE 8D 02 43    STA $4302  [$00:4302]   A:D301 X:0001 Y:0094 P:eNvmXdIzc
Thanks for the help.

KingMike

  • Forum Moderator
  • Hero Member
  • *****
  • Posts: 7086
  • *sigh* A changed avatar. Big deal.
    • View Profile
Re: Getting started hacking NBA JAM for SNES; Looking for some help
« Reply #7 on: December 14, 2010, 11:21:27 am »
You'll need to read-up on DMA to understand those.
(it's a feature where you feed a few registers (addresses) some information, and the console will automatically copy a block of data faster than any manual copying loop would)
"My watch says 30 chickens" Google, 2018

dext3r

  • Jr. Member
  • **
  • Posts: 9
    • View Profile
Re: Getting started hacking NBA JAM for SNES; Looking for some help
« Reply #8 on: December 14, 2010, 12:13:56 pm »
Ah yes, thank you KingMike.
I kinda forgot to reread about how DMA works. :-[

Mattrizzle

  • Jr. Member
  • **
  • Posts: 46
    • View Profile
Re: Getting started hacking NBA JAM for SNES; Looking for some help
« Reply #9 on: December 18, 2010, 10:38:09 am »
I've been working on a hack of NBA Jam TE for over four years now, and have found a lot of info related to it. I've hoarded these findings for long enough.

Here are my notes and offsets pertaining to players:

$11/F995-$11/FAE8 Lower word of each portrait pointer (2 bytes per player; ordered by player value)
$11/FAE9-$11/FC3C Upper word (bank byte) of each portrait pointer (2 bytes per player; A bank byte in RAM ($7F) means the portrait is compressed)
Notes:
Each player portrait is 0x6D0 bytes long. The first 0x690 bytes are the graphics data, which are in a unusual 5BPP planar composite format. The last 0x40 bytes are for the portrait's 32-color palette (in the SNES' standard 15-bit BGR format).

$44/8121-$44/83C8 Player name sprite pointers (4 bytes per player; ordered by player value)

Player values:
00: Tim Hardaway
01: Chris Mullin
02: Danny Manning
03: Oliver Miller
04: James Worthy
05: Vlade Divac
06: Dan Majerle
07: Kevin Johnson
08: Clyde Drexler
09: Terry Porter
0A: Shawn Kemp
0B: Detlef Schrempf
0C: Wayman Tisdale
0D: Mitch Richmond
0E: Derek Harper
0F: Jim Jackson
10: Dikembe Mutombo
11: LaPhonso Ellis
12: Hakeem Olajuwon
13: Vernon Maxwell
14: Christian Laettner
15: Chuck Person
16: David Robinson
17: Sean Elliott
18: Karl Malone
19: John Stockton
1A: Dominique Wilkins
1B: Stacey Augmon
1C: Larry Johnson
1D: Alonzo Mourning
1E: Scottie Pippen
1F: Horace Grant
20: Mark Price
21: Brad Daugherty
22: Muggsy Bogues
23: Shawn Bradley
24: Reggie Miller
25: Stanley Roberts
26: Sean Rooks
27: Kevin Edwards
28: Dee Brown
29: Calbert Cheaney
2A: Rony Seikaly
2B: Harold Miner
2C: Derrick Coleman
2D: Kenny Anderson
2E: Patrick Ewing
2F: John Starks
30: Nick Anderson
31: Scott Skiles
32: Clarence Weatherspoon
33: Jeff Hornacek
34: Tom Gugliotta
35: Robert Pack
36: Chris Webber
37: Luc Longley
38: Anthony Peeler
39: Gerald Wilkins
3A: Clifford Robinson
3B: Gary Payton
3C: Kendall Gill
3D: John Williams
3E: Bobby Hurley
3F: Spud Webb
40: Jamal Mashburn
41: Dino Radja
42: Robert Horry
43: Steve Smith
44: Isaiah Rider
45: Dennis Rodman
46: Loy Vaught
47: David Benoit
48: Kevin Willis
49: Hersey Hawkins
4A: B.J. Armstrong
4B: Toni Kukoc
4C: Lionel Simmons
4D: Joe Dumars
4E: Dell Curry
4F: Malik Sealy
50: Rik Smits
51: Vin Baker
52: Todd Day
53: Xavier McDaniel
54: Mookie Blaylock
55: Glen Rice
56: Terry Cummings
57: Mahmoud Abdul-Rauf
58: Anthony Mason
59: Charles Oakley
5A: Anfernee Hardaway
5B: Terry Mills
5C: Latrell Sprewell
5D: Otis Thorpe
5E: Sam Cassell
5F: Derrick McKey
60: Antonio Davis
61: Pooh Richardson
62: Nick Van Exel
63: Terry Davis
64: Billy Owens
65: John Carlton
66: Sal DiVita
67: Shawn Liptak
68: Mark Turmell
69: Tony Goskie
6A: Jamie Rivett
6B: Wes Little (Scooter Pie)
6C: Scott Scheno (Kid Silk)
6D: Chris Kirby
6E: Steve "Snake" Palmer
6F: Jason Falcus
70: Mike Muskett
71: Neil Hill
72: Larry Bird
73: Carol Blazekowski (Blaze)
74: Benny
75: Hugo
76: Crunch
77: Suns Gorilla
78: Bill Clinton
79: Prince Charles
7A: Steven Tyler (No picture; Looks like Darren Hodgson in game)
7B: Asif Chaudhri (Chow-Chow)
7C: Brett Gow (Brutah)
7D: Dan Feinstein (Weasel)
7E: Eric Samulski (Air Dog)
7F: Alex de Lucia (Facime)
80: Jay Moon
81: Eric Kuby (Kabuki)
82: Aaron McKie
83: Juwan Howard (Definition data removed; defaults to Mookie Blaylock)
84: Rex Chapman
85: Eric Murdock
86: Doug West
87: Armon Gilliam
88: Shaquille O'Neal (has A C Green's picture)
89: Dennis Scott
8A: Jeff Malone
8B: Dana Barros
8C: Rod Strickland
8D: A C Green
8E: Tony Dumas
8F: Eric Montross
90: Jason Kidd
91: Jalen Rose
92: Grant Hill
93: Clifford Rozier (Definition data removed; defaults to Mookie Blaylock)
94: Khalid Reeves
95: Glenn Robinson
96: Donyell Marshall
97: Sharone Wright
98: Hillary Clinton
99: Dwight Myers (Heavy D)
9A: Greg Fischbach (Stud Muffin)
9B: ?Milo Stubbington? (Moosekat)
9C: Bill Curley
9D: Eddie Jones
9E: Eric Mobley
9F: Yinka Dare
A0: Monty Williams
A1: Brooks Thompson
A2: Wesley Person
A3: Jeff Townes (Jazzy Jeff)
A4: Will Smith (Fresh Prince)
A5: Frank Thomas
A6: Randall Cunningham
A7: Mike Diamond (Mike D)
A8: Adam Horovitz (Adrock)
A9: Adam Yauch (MCA)


$29/A231-$29/A26A Relative offsets for $29/A26B (in order by team value)

Team values:
00: Golden State Warriors
01: Los Angeles Clippers
02: Los Angeles Lakers
03: Phoenix Suns
04: Portland Trailblazers
05: Seattle Supersonics
06: Sacramento Kings
07: Dallas Mavericks
08: Denver Nuggets
09: Houston Rockets
0A: Minnesota Timberwolves
0B: San Antonio Spurs
0C: Utah Jazz
0D: Atlanta Hawks
0E: Charlotte Hornets
0F: Chicago Bulls
10: Cleveland Cavaliers
11: Detroit Pistons
12: Indiana Pacers
13: Milwaukee Bucks
14: Boston Celtics
15: Miami Heat
16: New Jersey Nets
17: New York Knickerbockers
18: Orlando Magic
19: Philadelphia 76ers
1A: Washington Bullets
1B: All-Stars
1C: Rookies


$29/A26B-$29/A2A4 Relative pointers to each team's roster data (added to $16/98CF; in alphabetical order by team name, except All-Stars and Rookies are the last two)
$16/98CF-$16/A1DE Roster data (0x50 (80) bytes reserved for each team; 29 teams)
Notes:
  • #$FFFE designates the end of a team's combo data if the team has less than 20 pairings.
  • #$8000, when added to the second byte of the first player value in a combination, designates the first pair in the expanded roster of the team.
    (e.g.: 1A 80 53 00 is the first hidden combo of the Boston Celtics: Dominique Wilkins/Xavier McDaniel. Changing the 80 to 00 would allow you to access all of
    Boston's hidden players without beating the 27 NBA teams.)


$3F/B8CF-$3F/C9F8 Player definition data (0x1A bytes per player)
These structures define all of the in-game attributes of a player, including their appearance, strengths and weaknesses.
Or, more specifically:
Bytes 00-01: Player value
Bytes 02-03: Body size flag
#$0000: Tall (height >= 6'4")
#$0001: Short (height < 6'4")

Bytes 04-05: Speed rating
#$13F8?: 0
#$1455: 1
#$14A7: 2
#$14FA: 3
#$154C: 4
#$159F: 5
#$15F1: 6
#$1644: 7
#$1711: 8
#$1777: 9
#$17DE: 10

Bytes 06-07: 3-point rating
#$02BC: 0
#$02EE: 1
#$0320: 2
#$035C: 3
#$03A2: 4
#$03CA: 5
#$0410: 6
#$044C: 7
#$0460: 8
#$0492: 9
#$04E2: 10

Bytes 08-09: Dunk rating (0000-000A)
Bytes 0A-0B: Block rating (0000-000A)
Bytes 0C-0D: Steal rating (0000-000A)
Bytes 0E-0F: AI Level
#$FFF5: Dallas
#$FFF6: Minnesota
#$FFF7: Miami
#$FFF8: Washington
#$FFF9: Philadelphia
#$FFFA: Sacramento
#$FFFB: Denver
#$FFFC: Milwaukee
#$FFFD: Indiana
#$FFFE: Atlanta
#$0000: Boston, Charlotte, Cleveland, Golden State, L.A. Clippers, New Jersey
#$0001: Detroit, L.A. Lakers, San Antonio
#$0002: New York, Orlando, Seattle, Utah
#$0003: Phoenix, Portland
#$0004: Chicago
#$0005: Houston, Rookies not assigned to a team, Secret Players

Bytes 10-11: Pass rating (0000-000A)
Bytes 12-13: Power rating (0000-000A)
Bytes 14-15: Clutch rating (0000-000A)
Bytes 16-17: Skin color pointer
B775: black duplicate(unused)
B77F: black
B789: white

Bytes 18-19: Head graphic pointer
B793: Brad Lohaus (NBA Jam)
B797: White Skin/Black Hair
B79B: White Skin/Black Fade
B79F: Tan Skin/Black Hair
B7A3: White Skin/Red Fade
B7A7: Black Skin/Black Hair
B7AB: James Worthy/Horace Grant
B7AF: Black Skin/Bald
B7B3: Black Skin/Black Fade
B7B7: Black Skin/Balding
B7BB: Black Skin/Bald/Goggles (Unused)
B7BF: Dennis Rodman
B7C3: Vlade Divac (NBA Jam)
B7C7: Stacey Augmon, Dell Curry
B7CB: Isiah Thomas (Unused)
B7CF: Robert Horry
B7D3: Isaiah Rider (Unused)
B7D7: Todd Day
B7DB: Benoit Benjamin (Unused)
B7DF: John Starks
B7E3: Charles Oakley
B7E7: Derek Harper
B7EB: Nick Anderson (Intended to be A. Hardaway?)
B7EF: ? (Unused)   (Intended to be N. Anderson?)
B7F3: Clarence Weatherspoon(Unused)
B7F7: Gary Payton
B7FB: Isaiah Rider, Cedric Ceballos (Beta)
B7FF: Vernon Maxwell
B803: Larry Nance (Beta)
B807: Kevin Willis, Alonzo Mourning, Sean Rooks
B80B: Joe Dumars
B80F: Small/White Skin/Black Hair
B813: Small/White Skin/Black Fade (Unused)
B817: Small/Tan Skin/Black Hair (Unused)
B81B: Small/Black Skin/Black Hair
B81F: Small/Black Skin/Bald
B823: Small/Black Skin/Black Fade
B827: Small/Black Skin/Balding (Unused)
B82B: Scott Skiles
B82F: Tony Goskie
B833: John Carlton
B837: Jamie Rivett
B83B: Sal DiVita
B83F: Shaun Liptak
B843: Mark Turmell
B847: Larry Bird
B84B: Dan Feinstein
B84F: Eric Samulski
B853: Eric Kuby
B857: Jazzy Jeff
B85B: Heavy D
B85F: Scott Scheno
B863: Alex de Lucia
B867: Jay Moon
B86B: Wes Little
B86F: Asif Chaudhri
B873: Brett Gow
B877: Chris Kirby
B87B: Steve Snake
B87F: Carol Blazekowski
B883: Benny
B887: Hugo
B88B: Crunch
B88F: Suns Gorilla
B893: Bill Clinton
B897: Prince Charles
B89B: Jason Falcus
B89F: Mad Mike Muskett
B8A3: Neil Ziggy Hill
B8A7: Darren Hodgson (Steven Tyler placeholder)
B8AB: Stud Muffin
B8AF: Moosekat
B8B3: Fresh Prince
B8B7: Frank Thomas
B8BB: Randall Cunningham
B8BF: Mike D
B8C3: Adrock
B8C7: MCA
B8CB: Hillary Clinton


$12/B0C9-$12/B8C8 On-screen stat ratings (0x10 bytes per player; players are in the same order as the player definition data, except ratings for the secret players do not exist (the last player is Glenn Robinson))
Note:
The ratings themselves are in the same order as what you see on the screen: Spd,  3pts, Dunk, Pass, Power, Steal, Block, Cltch.

Player Definition data order:
Mookie Blaylock
Stacey Augmon
Kevin Willis
Dominique Wilkins
Dee Brown
Xavier McDaniel
Dino Radja
Eric Montross
Larry Johnson
Hersey Hawkins
Alonzo Mourning
Dell Curry
Muggsy Bogues
Scottie Pippen
B.J. Armstrong
Tony Kukoc
Luc Longley
Mark Price
Brad Daugherty
John Williams
Gerald Wilkins
Jim Jackson
Jamal Mashburn
Sean Rooks
Jason Kidd
Tony Dumas
Dikembe Mutombo
Laphonso Ellis
Mahmoud Abdul-Rauf
Robert Pack
Jalen Rose
Joe Dumars
Terry Mills
Oliver Miller
Grant Hill
Bill Curley
Tim Hardaway
Chris Mullin
Chris Webber
Latrell Sprewell
Hakeem Olajuwon
Vernon Maxwell
Robert Horry
Otis Thorpe
Sam Cassell
Reggie Miller
Rik Smits
Derrick McKey
Antonio Davis
Loy Vaught
Stanley Roberts
Malik Sealy
Pooh Richardson
Anthony Peeler
Vlade Divac
James Worthy
Nick Van Exel
Eddie Jones
Glen Rice
Rony Seikaly
Harold Miner
Steve Smith
Khalid Reeves
Vin Baker
Todd Day
Eric Murdock
Eric Mobley
Christian Laettner
Isaiah Rider
Doug West
Donyell Marshall
Derrick Coleman
Kenny Anderson
Yinka Dare
Kevin Edwards
Armon Gilliam
Patrick Ewing
Anthony Mason
John Starks
Charles Oakley
Derek Harper
Shaquille O'Neal(unused)
Horace Grant
Anfernee Hardaway
Nick Anderson
Dennis Scott
Clarence Weatherspoon
Shawn Bradley
Jeff Malone
Dana Barros
Sharone Wright
Dan Majerle
Kevin Johnson
Wayman Tisdale
A C Green
Danny Manning
Clyde Drexler
Terry Porter
Clifford Robinson
Rod Strickland
Aaron McKie
Bobby Hurley
Mitch Richmond
Spud Webb
Lionel Simmons
David Robinson
Dennis Rodman
Terry Cummings
Sean Elliott
Chuck Person
Shawn Kemp
Gary Payton
Kendall Gill
Detlef Schrempf
Karl Malone
John Stockton
David Benoit
Jeff Hornacek
Tom Gugliotta
Calbert Cheaney
Scott Skiles
Rex Chapman
Terry Davis
Billy Owens
Monty Williams
Wesley Person
Brooks Thompson
Glenn Robinson
Larry Bird
Chris Kirby
Steve Snake
Carol Blazekowski
Benny
Hugo
Crunch
Suns Gorilla
Bill Clinton
Prince Charles
Jason Falcus
Mad Mike Muskett
Neil Ziggy Hill
Steven Tyler(unused)
Brutah
Weasel
Air Dog
Scooter Pie
Kid Silk
Facime
Jay Moon
Tony Goskie
Jamie Rivett
John Carlton
Jazzy Jeff
Sal Divita
Heavy D
Shaun Liptak
Mark Turmell
Kabuki
Chow-Chow
Fresh Prince
Frank Thomas
Randall Cunningham
Mike D
Adrock
MCA
Hillary Clinton
**DUMMIED SECRET PLAYER**
Stud Muffin
Moosekat

Auryn

  • Hero Member
  • *****
  • Posts: 650
    • View Profile
Re: Getting started hacking NBA JAM for SNES; Looking for some help
« Reply #10 on: December 18, 2010, 06:09:50 pm »
And this was the Christmas present for dext3r lol

Next Gen Cowboy

  • Hero Member
  • *****
  • Posts: 1766
  • "People are like dice"
    • View Profile
Re: Getting started hacking NBA JAM for SNES; Looking for some help
« Reply #11 on: December 23, 2010, 09:53:31 pm »
I just read that list of names, and in turn recalled my youth as an NBA fan, that's alot of interesting data!
"Remember when we were in Japan? You said you were my gun, if you're the gun then that means I'm the bullet."

"All my life I've been waiting for the gunpowder to go off, you know what you need to ignite gunpowder? You need a gun."

dext3r

  • Jr. Member
  • **
  • Posts: 9
    • View Profile
Re: Getting started hacking NBA JAM for SNES; Looking for some help
« Reply #12 on: December 29, 2010, 12:48:37 pm »
I've been working on a hack of NBA Jam TE for over four years now, and have found a lot of info related to it. I've hoarded these findings for long enough.

Here are my notes and offsets pertaining to players:

AMAZING AMOUNT OF INFO

Holy shit, thanks Mattrizzle! I've seen your work on the TE Old School hack and it is really amazing. Thank you for sharing this info.  :woot!:

And this was the Christmas present for dext3r lol

haha tell me about it.

dext3r

  • Jr. Member
  • **
  • Posts: 9
    • View Profile
Re: Getting started hacking NBA JAM for SNES; Looking for some help
« Reply #13 on: February 02, 2011, 08:00:45 pm »
I'm making some progress  :crazy:

so far, it just loads and displays the portrait/pallette at specified address in the ROM.

 

Mattrizzle

  • Jr. Member
  • **
  • Posts: 46
    • View Profile
Re: Getting started hacking NBA JAM for SNES; Looking for some help
« Reply #14 on: February 22, 2011, 11:28:01 pm »
Great work! Glad that I could be of assistance.  :)

Here's some other useful info, pertaining to secret players:

$29/8A7F-$29/8B6E Secret Player unlock data (0x06 bytes per player; 40 players)
Bytes 00-02: Initials
00 = A
01 = B
02 = C
03 = D
04 = E
05 = F
06 = G
07 = H
08 = I
09 = J
0A = K
0B = L
0C = M
0D = N
0E = O
0F = P
10 = Q
11 = R
12 = S
13 = T
14 = U
15 = V
16 = W
17 = X
18 = Y
19 = Z
1A = _(Blank)
1B-1F = invalid, unenterable characters
value+20 = Start button hold letter

Byte 03: Value of Player unlocked
Bytes 04-05: Button combination
X1 0X = A**
X2 0X = B**
X4 0X = Y**
X8 0X = *A*
1X 0X = *B*
2X 0X = *Y*
4X 0X = **A
8X 0X = **B
XX 01 = **Y


Order:
Tony Goskie
Jamie Rivett
John Carlton
Sal DiVita
Shawn Liptak
Mark Turmell
Scooter Pie
Kid Silk
Chris Kirby
Steve Snake
Jason Falcus
Mad Mike Muskett
Neil Ziggy Hill
Larry Bird
Carol Blazejowski
Benny
Hugo
Crunch
Suns Gorilla
Bill Clinton
Prince Charles
Steven Tyler (Can't normally be unlocked due to invalid initials)
Chow-Chow
Brutah
Weasel
Air Dog
Facime
Jay Moon
Kabuki
Hillary Clinton
Stud Muffin (Requires a special button combination at the Licensed by Nintendo screen to be unlockable; Left+L+R)
Moosekat
Heavy D
Jazzy Jeff
Fresh Prince
Frank Thomas
Randall Cunningham
Mike D
Adrock
MCA

dext3r

  • Jr. Member
  • **
  • Posts: 9
    • View Profile
Re: Getting started hacking NBA JAM for SNES; Looking for some help
« Reply #15 on: February 25, 2011, 02:11:08 am »
Thanks! Much changed since the last update. Heres a screenshot of a previous GUI (and some proof that it works :happy:) :
you can load portraits, 'nametags' (what i call the graphic data for the names), and the stats.



Then i went ahead and added code so you can type in a name (Only A-Z chars right now) and it will automatically generate the graphic and center it. You can then write the nametag to the ROM.


The final GUI will be much more intuitive than this, haha!

In game pic:


I'm taking a small break from this while i look for a new job (damn economy  :'() but I plan on cleaning up some of the code and then working on portrait editing next.

Quote from: Mattrizzle
Secret Player Info
Sweet! Thanks for the additional info. It will be very cool to incorporate this into the editor.

JCE3000GT

  • Sr. Member
  • ****
  • Posts: 433
    • View Profile
Re: Getting started hacking NBA JAM for SNES; Looking for some help
« Reply #16 on: June 27, 2012, 12:05:00 am »
Any updates to the hack and or editor?  I'd love to get my hands (*err arms*) elbow deep in some NBA Jam!

Mattrizzle

  • Jr. Member
  • **
  • Posts: 46
    • View Profile
Re: Getting started hacking NBA JAM for SNES; Looking for some help
« Reply #17 on: June 27, 2012, 05:07:45 pm »
Here is the latest evidence I've seen of any progress being made, and this is from around a year ago:
https://github.com/dext3r/NBA-JAM-Player-Editor

JCE3000GT

  • Sr. Member
  • ****
  • Posts: 433
    • View Profile
Re: Getting started hacking NBA JAM for SNES; Looking for some help
« Reply #18 on: July 18, 2012, 12:50:12 am »
While waiting for dext3r to update his editor and make a proper x86 release I've been coding my own utility to help me edit some player stats in NBA Jam TE.  A little more beta testing and bug fixing to do and I'll put it up for a beta release.   :)


Millertime2325

  • Jr. Member
  • **
  • Posts: 8
    • View Profile
Re: Getting started hacking NBA JAM for SNES; Looking for some help
« Reply #19 on: August 11, 2013, 05:56:32 pm »
I just found this on google. Have there been any updates to this? I've been interested in attempting an NBA Jam roster update, seems like these tools would come in handy.