Signature Skills
UPDATE #1: Signature Skills, just like everything else it seems, are not byte-aligned. They're 6-bit enums (which makes sense, since there's 33 of them), and I've verified this. I was able to copy Defensive Anchor from Signature Skill 5 to Signature Skill 4 (and give a player 2 defensive anchors

UPDATE #2: Think I've cracked the Signature Skills format. For each player, the format is as follows:
6 bits (SS1) + 6 bits (SS2) + 14 bits set to 0 (???) + 6 bits (SS3) + 6 bits (SS4) + 6 bits (SS5).
It's too bad you have to find out the alignment for yourself, but setting Signature Skill 1 to Defensive Anchor which makes it 011111 should help you find the start of the sig skills for that player. Just the same way, setting Signature Skill 5 to Defensive Anchor and counting 44 bits backwards from the end of the 011111 should lead you to the start of the sig skills entry for that player.
Maybe if we figure out the length in bits of each player entry, we could automate this, but for that I would need to know two players that are in consecutive entries in the roster, so that I could measure the distance between their signature skills entries, which should be the player entry length.
UPDATE #3: The Signature Skills enum follows the order of the signature skills in the selection menu in-game. So it's as follows:
- Code: Select all
000001: Posterizer
000010: Highlight Film
000011: Finisher
000100: Acrobat
000101: Spot Up Shooter
000110: Shot Creator
000111: Deadeye
001000: Corner Specialist
001001: Post Proficiency
001010: Ankle Breaker
001011: Post Playmaker
001100: Dimer
001101: Break Starter
001110: Alley-Ooper
001111: Brick Wall
010000: Lockdown Defender
010001: Charge Card
010010: Interceptor
010011: Pick Pocket
010100: Active Hands
010101: Eraser
010110: Chasedown Artist
010111: Bruiser
011000: Hustle Points
011001: Scraper
011010: Anti-Freeze
011011: Microwave
011100: Heat Retention
011101: Closer
011110: Floor General
011111: Defensive Anchor
1. Save a roster before the changes. Save it a second time under a different name, so that Autosave doesn't replace your original after the edits.
2. Change all 5 signature skills. Even if the player has only 1, assign all 5 of them, and make sure to change any existing ones to ones he didn't have before.
3. Let the game autosave the new roster.
4. Open both rosters in Hex Workshop.
5. Do a Tools > Compare > Resynchronizing Compare.
6. You'll see 4 bytes changed at offset 0, (maybe) 4 bytes changed at offset 863052, and maybe about 54000 bytes changed at the bottom of the file. Ignore them. What you care about is the 5 or 6 bytes that were changed that aren't at those 3 offsets/ranges.
7. Now comes the hard part. In the bytes that you've tracked down, there's a 44-bit long piece of information that is the Signature Skills part of the player's entry. I recommend setting either the first or last signature as Defensive Anchor in-game, which has a binary representation of 011111, so you'll be able to know which 4 bits of the 6 bytes that were changed are not part of the SS entry by following the information in Update #2 above. Once you know which 44 bits are the ones you want, you can change any of the signature skills to 000000 (no signature skill set) or to anything between 000001 (1) and 011111 (31) which are the 31 signature skills available (without the 2 MyCareer exclusive ones).
8. Recalculate the roster's CRC32, save, load in-game.
Example: Andrew Bynum's range seems to be 42826-42832
Recalculating Roster Checksums
1. Select the whole file except the first 4 bytes.
2. Go to Tools > Generate Checksum > Selection & CRC32 > OK.
3. The checksum will appear at the bottom-right.
4. Select the first 4 bytes and type in the checksum as you see it on the bottom-right. Copy-pasting could paste the values in the opposite order, so just type them in.