Quantcast

Results 1 to 7 of 7

Thread: Hacking NBA Live 96 Title Screen

  1. #1
    Hedgehog-in-Training Hedgehog-in-TrainingNameless One
    Join Date
    Sep 2019
    Location
    Texas
    Posts
    54
    Rep Power
    1

    Default Hacking NBA Live 96 Title Screen

    Hello!

    Now that I've reached the 50 posts mark, I need to ask for help!

    As some of you may know, I "hacked" NBA Live 96 with updated rosters for 1996, 2019, and 2020:
    https://tecmobowl.org/files/file/645...?ct=1588811729
    https://tecmobowl.org/files/file/593...?ct=1588811493
    https://tecmobowl.org/files/file/651...?ct=1588811533

    Anyway, I'm still a novice ROM hacker, and there's still one last important hack I'd like to add--an updated title screen (for each).

    So, for example, does anyone know how to update the following title screen for NBA Live 19 Hardwood Classics ROM to say "NBA Live 19"?
    https://tecmobowl.org/screenshots/mo...534ac5cddc.png

  2. #2
    Comrade as in friend. Master of Shinobi ComradeOj's Avatar
    Join Date
    Dec 2012
    Location
    New Mexico, USA
    Age
    25
    Posts
    1,408
    Rep Power
    61

    Default

    You'll probably have to either rip and edit that title screen, or just make a new one from scratch. It won't be as easy as just editing text.

    Putting the graphics back in the game will probably be kind of a process, but is doable. A lot of Genesis games use compression for their graphics. There are a few common types like Kosinski, enigma, saxman, or Nemesis compression, but some games might use something custom. There is a tool for the four I mentioned called "The Sega Data Compressor". You can edit the decompressed art with a tool called "tile layer pro". You can skip straight to tile layer pro, if the title screen art isn't compressed.

    You'll want to find where the old title screen is stored in ROM, and overwrite it with your edited one. To find the data, you can run the game in a debug emulator, and find the part of the code related to starting the title screen sequence. From there you can see what data is being read, and hopefully find the title screen art. If the data isn't compressed, then you can just open the entire ROM file in tile layer pro and just edit it directly.

    If your new art is smaller than the old one, then you can just pad out the extra area. If it's too large, you could move it to the very end of the ROM instead, but you'll have to change any code that points to this data to reflect the new location. If the titlescreen art is uncompressed, then you probably won't have to worry about this.
    Modded consoles:
    Master System (v7040) with s-video & direct AV out
    Model 1 with 10mhz overclock & halt switches
    Model 1 with 10mhz 68010
    Model 2 VA2.3 with unfiltered Mega Amp, & s-video
    Model 3 VA1 with compatibility fixes & s-video
    32X with s-video
    Visit my web site at www.mode5.net
    Or my collection of homebrew Genesis games, programs, and music on SEGA-16!

  3. #3
    Hedgehog-in-Training Hedgehog-in-TrainingNameless One
    Join Date
    Sep 2019
    Location
    Texas
    Posts
    54
    Rep Power
    1

    Default

    OK,

    I'll get started down the rabbit hole with the gensKMod_073 emulator.

    I started the game in the emulator with some of the debug windows, and some quick poking around shows the following:
    *In Plane Explorer Window, I can see Plane A shows the target graphic (NBA Live 96), with useful tile address locations
    *In Layer Window, filtering out all but Show Layer A shows the same graphic
    *In VDP Window, I can see the different tile pieces making up the target graphic around offset 0x02F2
    *In VDP Registers Window, I can see some calls that appear most relevant:
    Code:
    Reg    Value   Desc                          My Notes (Best Guess)
    #11    0x00    Full Vscroll Full HScroll     # Load intro player images, scrolling left to right
    #12    0x81    H40
    #13    0x3F    HScroll: 0xFC00               # Load "NBA Live 96" graphic, scrolling
    #14    0x00
    #15    0x02    Auto Increment of 2           # Load graphic horizontal scrolling "timer" (i.e. "appears" on screen from right to center)
    #16    0x03    V32 Cell H128 Cell            # Size of graphic
    Here's a copy of that graphic...
    Attached Images Attached Images
    Last edited by kdubmods; 05-08-2020 at 12:05 AM.

  4. #4
    Comrade as in friend. Master of Shinobi ComradeOj's Avatar
    Join Date
    Dec 2012
    Location
    New Mexico, USA
    Age
    25
    Posts
    1,408
    Rep Power
    61

    Default

    That's a pretty good start. What I would do next, is find where that graphic is stored in ROM. If you know where it is in VRAM, you can sort of work backwards and find where it's stored in ROM. If the graphic was found at 2F2 in VRAM, then an instruction that initiates a write to that VRAM address would look something like:

    move.l #$42f20000, $C00000

    or move.l #$42f200C0, $C00000 depending on if it used DMA.

    That might help you narrow down the part of the game's code that loads the graphic in to VRAM. If you find where the titlescreen graphic is being loaded, you can see where in ROM that graphic is being loaded from, and rip it from the ROM. Using that $2F2 address might not be a guarantee though, if the graphic was loaded along with some other tiles that came before it.

    Another way I've found graphics is ROM is to use a hex editor's search function. If you know the bytes that make up the first tile in the graphic, you can search for it and find the graphic. This only works for uncompressed stuff though.
    Modded consoles:
    Master System (v7040) with s-video & direct AV out
    Model 1 with 10mhz overclock & halt switches
    Model 1 with 10mhz 68010
    Model 2 VA2.3 with unfiltered Mega Amp, & s-video
    Model 3 VA1 with compatibility fixes & s-video
    32X with s-video
    Visit my web site at www.mode5.net
    Or my collection of homebrew Genesis games, programs, and music on SEGA-16!

  5. #5
    Hedgehog-in-Training Hedgehog-in-TrainingNameless One
    Join Date
    Sep 2019
    Location
    Texas
    Posts
    54
    Rep Power
    1

    Default

    OK,

    I'm getting lost, so let me back up and ask some questions:
    1) Regarding ROM storage, should I be viewing the Genesis - 68k ROM debug window and its instructions (not the Z80)?
    2) If I perform a Genesis - 68k "Dump ROM", is Notepad++ w/HexEdit a good enough editor? If so, should I change any options (e.g. Start Layout of 8-bit vs. 16-bit)?
    3) Is there a way to find out where the graphic is stored in ROM from an updated graphic I'm attaching?

    I currently have the game paused, so I'll also attach more relevant pics, including a VRAM screenshot and updated graphic highlighting tile 0x02F3.

    NOTE: Just found out (the hard way) I cannot include any RAM or ROM dumps as attachments.

  6. #6
    Comrade as in friend. Master of Shinobi ComradeOj's Avatar
    Join Date
    Dec 2012
    Location
    New Mexico, USA
    Age
    25
    Posts
    1,408
    Rep Power
    61

    Default

    1. Yes, you want to be viewing 68k, not Z80.

    2. I haven't used Gens in a while, but I don't think a ROM dump will really do anything for you. If you want to disassemble the code, I would recommend something like IDA. The exodus emulator also has a great disassembler as well as many other tools.

    3. Kind of. It looks like that tile you have highlighted is using the first (topmost) color palette. In that case, the first row of pixels on that tile would be something like: 0A AA AA AA. Each pixel takes up a half byte. You can see the color palette used in the image you linked. The top-left pixel in that tile is black, and would be a 0. The one just to the right is that dark blue, which is the 10th ($A) color in the palette, so would be an A (0A for both pixels). The next 6 are the same color of blue, and would also be $A. This makes the first 8 pixels in that tile 0A AA AA AA. The next are the same blue, therefore AA AA AA AA. This is something that could be searched for using a hex editor.

    Going by the photo, it seems that the graphic isn't at VRAM $02f3, but is actually tile number $2f3 in VRAM. This co-responds to a VRAM address of $5E60. You can multiply the tile number in hex by $20(hex) to get the VRAM address that tile is at. $2F3 * $20 = $5E60. This is useful for finding the part of the game's code that loads that graphic into VRAM.

    I poked around the NBA 96 ROM myself. I tried to search for bytes that match parts of the titlescreen image, but I couldn't find it in the ROM. This could mean that it's stored in a compressed format. This makes sense, as this is a large image, and compressing it would save a lot of space. If the titlescreen graphic is compressed, then the compressed image data first needs to be found in ROM. This might be kind of a process, but is very much doable. You can then extract it and decompress it. From there, edit it, re-compress it, and insert it back in to the ROM.
    Modded consoles:
    Master System (v7040) with s-video & direct AV out
    Model 1 with 10mhz overclock & halt switches
    Model 1 with 10mhz 68010
    Model 2 VA2.3 with unfiltered Mega Amp, & s-video
    Model 3 VA1 with compatibility fixes & s-video
    32X with s-video
    Visit my web site at www.mode5.net
    Or my collection of homebrew Genesis games, programs, and music on SEGA-16!

  7. #7
    Hedgehog-in-Training Hedgehog-in-TrainingNameless One
    Join Date
    Sep 2019
    Location
    Texas
    Posts
    54
    Rep Power
    1

    Default

    Excellent info!

    Thanks again. Let me absorb some of that and take another look at things tonight or tomorrow evening; see if I can make any more progress.

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •