DBZ BT3 Data Save Map Credits: Vega (all information in this entire txt file) Filname = DBZT3 Size = 0x13B800 Location (NTSC-U) = /title/00010000/52445345/data/DBZT3 How to get pointer of Data Save (for ASM Coders/Devs): Before Data Save is checksummed during the "Loading Data" screen. lwz rX, -0x6868 (r13) #Offset is for NTSC-U Rev1, NTSC-U Launch Version uses -0x6878. addi rX, rX, 56 rX = Data Save Pointer After Data Save is checksummed during the "Loading Data" screen. lwz rX, -0x6C40 (r13) #Offset is also same for NTSC-U Launch Version, but may differ for other regions rX = Data Save Pointer "Loading Data" screen checksum function location NTSC-U Rev1 0x8018FC88 Summary: Args (r3 - Pointer to Data Save, r4 - 0x13B800, r5 - 0) are set for checksum function call (NTSC-U Rev1 0x800C9858) Return value (r3) is checked. It's either 0 (no errors) or 1 (error) If r3 = 0, setup a loop to transfer the data from initial pointer to new pointer (pointer for after 'loading data' screen) If r3 = 1, then a different set of instructions are executed. Thus resulting in the "Game data is corrupted" prompt to appear on your screen. NOTE: When the Data Save is checksummed (from a different parent function) during Overwriting, r5 is set to 1 instead of 0. For NTSC-U Rev1, data save starts at address 0x90E57760 in memory (pointer used for after 'Loading Data' screen). Simply add this value to the address value for the item below to find it in memory for the NTSC-U Rev1 version of the game. Checksum 0x000003 (byte) = 1st byte of two-byte checksum 0x000007 (byte) = 2nd byte of two-byte checksum Dragon History & Dragon Balls 0x00000A (byte) = 0x00 if you just got 100% on Dragon History. Gets flipped back to 0x01 and stays there forever. Default setting is 0x01 when Dragon History is incomplete. 0x00000B (byte) Bit Breakdown~ Bit 0 = Whether or not you have entered dragon history at least once. Flip to 1 for Yes Bit 1 = Dragon ball 7 (flip bit to 1 to have ball) Bit 2 = Dragon ball 6 Bit 3 = Dragon ball 5 Bit 4 = Dragon ball 4 Bit 5 = Dragon ball 3 Bit 6 = Dragon ball 2 Bit 7 = Dragon ball 1 0x00000F (byte) = Dragon History difficulty. 0x00 - easy, 0x01 - medium, 0x02 - hard. All other values will cause game to freeze 0x000013 (byte) 0x000017 (byte) 0x00001B (byte) Three bytes above deal with Dragon History completion. For unlocking, set to 0x7F 0x00001F (byte) = Unknown? Was 0x00 on my Wii save. But for fresh data saves, this is set to 0x01. So something flips it, don't know what. 0x000023 (byte) 0x000027 (byte) 0x00002B (byte) 0x000033 (byte) 0x00003B (byte) 0x000043 (byte) 0x000047 (byte) 0x00004B (byte) 0x000053 (byte) 0x000056 (halfword) 0x00005A (halfword) 0x000063 (byte) 0x000067 (byte) 0x00006B (byte) 0x000073 (byte) 0x000077 (byte) 0x00007B (byte) 0x000083 (byte) 0x000087 (byte) 0x00008B (byte) All bytes and halfwords above deal with Dragon History completion. For unlocking set all bytes to 0x7F and all halfwords to 0xFFFF. 0x7F is not exactly the correct value for most of the byte locations (as finding every exact bit flip that does what is frustrating), but it will do for unlocker codes and such. 0x000093 (byte) = Unknown? Was 0x01 on my Wii Console save. 0x00020B (byte) = Is Survival Menu unlocked? 0x00 - No, 0x01 - Yes 0x00020F (byte) = Amount of Pages unlocked in Mission 100. For fresh data saves, this starts at 0x05. Max is 0x14. However to unlock hidden/unused Missions, set to 0x1B. Ultimate Battle Sim Dragon Battle Record Format Byte = Character Value Word = Score (Value mutipled by 0x64; Convert Result to Decimal = In-Game Score); highest possible value is 0x713C6D8A (game using incorrect display due to such a high number) before the game resets it down to 100 in game. Byte = Red Star? 0x00 - no, 0x01 - yes 0x000213 = Rank 1 0x00021F = Rank 2 0x00022B = Rank 3 0x000237 = Rank 4 0x000243 = Rank 5 0x00024F = Rank 6 0x00025B = Rank 7 0x000267 = Rank 8 0x000273 = Rank 9 0x00027F = Rank 10 Mission 100 Format Byte 0x00 or 0x01 (has mission ever been played)? Byte (Grade) 0x00 = Not completed, 0x01 = C, 0x02 = B, 0x03 = A, 0x04 = Z, 0x05+ = invalid (white square) Byte = Time (Minutes) Byte = Time (Seconds) Byte = Time (Milliseconds) 3 bytes of Null (unused bytes) Word = Score (Value mutipled by 0x64; Convert Result to Decimal = In-Game Score); highest possible value is 0x713C6D8A (game using incorrect display due to such a high number) before the game resets it down to 100 in game. 0x00028C = Mission Battle 1 0x000298 = Mission Battle 2 0x0002A4 = Mission Battle 3 0x0002B0 = Mission Battle 4 0x0002BC = Mission Battle 5 0x0002C8 = Mission Battle 6 0x0002D4 = Mission Battle 7 0x0002E0 = Mission Battle 8 0x0002EC = Mission Battle 9 0x0002F8 = Mission Battle 10 0x000304 = Mission Battle 11 0x000310 = Mission Battle 12 0x00031C = Mission Battle 13 0x000328 = Mission Battle 14 0x000334 = Mission Battle 15 0x000340 = Mission Battle 16 0x00034C = Mission Battle 17 0x000358 = Mission Battle 18 0x000364 = Mission Battle 19 0x000370 = Mission Battle 20 0x00037C = Mission Battle 21 0x000388 = Mission Battle 22 0x000394 = Mission Battle 23 0x0003A0 = Mission Battle 24 0x0003AC = Mission Battle 25 0x0003B8 = Mission Battle 26 0x0003C4 = Mission Battle 27 0x0003D0 = Mission Battle 28 0x0003DC = Mission Battle 29 0x0003E8 = Mission Battle 30 0x0003F4 = Mission Battle 31 0x000400 = Mission Battle 32 0x00040C = Mission Battle 33 0x000418 = Mission Battle 34 0x000424 = Mission Battle 35 0x000430 = Mission Battle 36 0x00043C = Mission Battle 37 0x000448 = Mission Battle 38 0x000454 = Mission Battle 39 0x000460 = Mission Battle 40 0x00046C = Mission Battle 41 0x000478 = Mission Battle 42 0x000484 = Mission Battle 43 0x000490 = Mission Battle 44 0x00049C = Mission Battle 45 0x0004A8 = Mission Battle 46 0x0004B4 = Mission Battle 47 0x0004C0 = Mission Battle 48 0x0004CC = Mission Battle 49 0x0004D8 = Mission Battle 50 0x0004E4 = Mission Battle 51 0x0004F0 = Mission Battle 52 0x0004FC = Mission Battle 53 0x000508 = Mission Battle 54 0x000514 = Mission Battle 55 0x000520 = Mission Battle 56 0x00052C = Mission Battle 57 0x000538 = Mission Battle 58 0x000544 = Mission Battle 59 0x000550 = Mission Battle 60 0x00055C = Mission Battle 61 0x000568 = Mission Battle 62 0x000574 = Mission Battle 63 0x000580 = Mission Battle 64 0x00058C = Mission Battle 65 0x000598 = Mission Battle 66 0x0005A4 = Mission Battle 67 0x0005B0 = Mission Battle 68 0x0005BC = Mission Battle 69 0x0005C8 = Mission Battle 70 0x0005D4 = Mission Battle 71 0x0005E0 = Mission Battle 72 0x0005EC = Mission Battle 73 0x0005F8 = Mission Battle 74 0x000604 = Mission Battle 75 0x000610 = Mission Battle 76 0x00061C = Mission Battle 77 0x000628 = Mission Battle 78 0x000634 = Mission Battle 79 0x000640 = Mission Battle 80 0x00064C = Mission Battle 81 0x000658 = Mission Battle 82 0x000664 = Mission Battle 83 0x000670 = Mission Battle 84 0x00067C = Mission Battle 85 0x000688 = Mission Battle 86 0x000694 = Mission Battle 87 0x0006A0 = Mission Battle 88 0x0006AC = Mission Battle 89 0x0006B8 = Mission Battle 90 0x0006C4 = Mission Battle 91 0x0006D0 = Mission Battle 92 0x0006DC = Mission Battle 93 0x0006E8 = Mission Battle 94 0x0006F4 = Mission Battle 95 0x000700 = Mission Battle 96 0x00070C = Mission Battle 97 0x000718 = Mission Battle 98 0x000724 = Mission Battle 99 0x000730 = Mission Battle 100 There are 35 Hidden/unused Battles. They follow the same format as the normal 100 Missions. 0x00073C = Mission Battle 101 0x000748 = Mission Battle 102 0x000754 = Mission Battle 103 0x000760 = Mission Battle 104 0x00076C = Mission Battle 105 0x000778 = Mission Battle 106 0x000784 = Mission Battle 107 0x000790 = Mission Battle 108 0x00079C = Mission Battle 109 0x0007A8 = Mission Battle 110 0x0007B4 = Mission Battle 111 0x0007C0 = Mission Battle 112 0x0007CC = Mission Battle 113 0x0007D8 = Mission Battle 114 0x0007E4 = Mission Battle 115 0x0007F0 = Mission Battle 116 0x0007FC = Mission Battle 117 0x000808 = Mission Battle 118 0x000814 = Mission Battle 119 0x000820 = Mission Battle 120 0x00082C = Mission Battle 121 0x000838 = Mission Battle 122 0x000844 = Mission Battle 123 0x000850 = Mission Battle 124 0x00085C = Mission Battle 125 0x000868 = Mission Battle 126 0x000874 = Mission Battle 127 0x000880 = Mission Battle 128 0x00088C = Mission Battle 129 0x000898 = Mission Battle 130 0x0008A4 = Mission Battle 131 0x0008B0 = Mission Battle 132 0x0008BC = Mission Battle 133 0x0008C8 = Mission Battle 134 0x0008D4 = Mission Battle 135 Survival Mode Format Halfword = Amount Defeated; Max value is 0x3E7 (999 = In-Game score) Word = Score (Value mutipled by 0x64; Convert Result to Decimal = In-Game Score); highest possible value is 0x713C6D8A (game using incorrect display due to such a high number) before the game resets it down to 100 in game. Byte (Grade) 0x00 = Not completed, 0x01 = C, 0x02 = B, 0x03 = A, 0x04 = Z, 0x05+ = invalid (white square) Byte = Time (Minutes) Byte = Time (Seconds) Byte = Time (Milliseconds) Halfword = Unused 0x00073E = Survival; Bardock War 0x00074A = Survival; Dragon Classic 0x000756 = Survival; All-Star Fyi: There is no byte for 'has been played?' for Survival Mode. Also note that the space used for Mission Battles (Hidden Missions) 101 thru 103 is also used by the Survival levels. So yes, setting a new record will effect the other records automatically. Dragon World Tour 0x000A0B (byte) Bit 0 = Unused Bit 1 = ??? Sometimes this is flipped high Bit 2 = ??? Seems to always be flipped high Bit 3 = Is Yamcha Games open? Bit 4 = Is Otherworld Tournament open? Bit 5 = Is Cell Games open? Bit 6 = Is World Martial Arts Big Tournament open? Bit 7 = Is World Tournament open? 0x000A0F (byte) = Time of Day (Hour on Clock) in Dragon World Tour 0x000A13 (byte) = Has DWT ever been played? 0x00 - No, 0x01 - Yes Character Unlocks Bit Value Breakdown (0 = locked, 1 = unlocked) 0x000C10 (byte) Bit 0 = Pan Bit 1 = Tapion Bit 2 = Pikkon Bit 3 = Yajirobe Bit 4 = ? Bit 5 = ? Bit 6 = Great Saiyaman 2 Bit 7 = Videl 0x000C11 (byte) Bit 0 = Hercule Bit 1 = SS4 Gogeta Bit 2 = ? Bit 3 = ? Bit 4 = ? Bit 5 = ? Bit 6 = ? Bit 7 = ? 0x000C12 thru 0x000C1F (bytes) Bits 0 thru 7 = ? 0x000C20 thru 0x000C22 (bytes) = Unused 0x000C23 (byte) Bits 0 thru Bit 6 = Unused Bit 7 = SS Future Gohan 0x000C24 (byte) Bit 0 = Future Gohan Bit 1 = ? Bit 2 = ? Bit 3 = ? Bit 4 = ? Bit 5 = ? Bit 6 = ? Bit 7 = ? There's a total of 161 characters... So getting all 161 bit values is too much for my laziness. Maybe somebody else can do it. Map Unlocks Bit Value Breakdown (0 = locked, 1 = unlocked) 0x000C2B (byte) = 1st byte of Map unlocks Bit 0 thru Bit 4 = unused Bit 5 = Planet Evening Bit 6 = Mountain Road Evening Bit 7 = Desert Night 0x000C2C (byte) = 2nd byte of Map unlocks Bit 0 = Desert Evening Bit 1 = City Ruins Night Bit 2 = City Ruins Evening Bit 3 = Cell Game Noon Bit 4 = World Tournament Stage Evening Bit 5 = Rocky Area Night Bit 6 = Rocky Area Evening Bit 7 = Wasteland Night 0x000C2D (byte) = 3rd byte of Map unlocks Bit 0 = Wasteland Evening Bit 1 = Mount Pazou Bit 2 = Muscle Tower Bit 3 = King's Castle Bit 4 = Desert Noon Bit 5 = Hell Bit 6 = Penguin Village Bit 7 = Outer Space 0x000C2E (byte) = 4th byte of Map unlocks Bit 0 = Ruined Earth Bit 1 = Glacier Bit 2 = Planet Night Bit 3 = Kame House Bit 4 = Islands Bit 5 = Mountain Road Noon Bit 6 = City Ruins Noon Bit 7 = Hyperbolic Timer Chamber 0x000C2F (byte) = 5th byte of Map unlocks Bit 0 = Supreme Kai's World Bit 1 = Cell Games Arena Evening Bit 2 = Kami's Lookout Bit 3 = World Tournament Stage Noon Bit 4 = Dying Namek Bit 5 = Namek Bit 6 = Rocky Area Noon Bit 7 = Wasteland Noon (flipping this bit to zero can cause weird graphics during character and map selection) 0x000C30 thru C33 (word) = Unknown, seems to always be 0x000FFFFF 0x000C37 (byte) = Duel Mode Duel Time Byte values: 0x00 = 60 0x01 = 90 0x02 = 180 0x03 = 240 0x04 = No Time Limit 0x000C3B (byte) = Duel Mode COM Level Byte values: 0x00 = Very Weak 0x01 = Weak 0x02 = Average 0x03 = Strong 0x04 = Very Strong 0x000C3F (byte) = Duel Mode Referee Byte values: 0x00 = Ox King 0x01 = Videl 0x02 = Supreme Kai 0x03 = Shenron 0x04 = Announcer 1 0x05 = Announcer 2 0x06 = Announcer 3 0x000C43 (byte) = Duel Mode Transformations (For Player 1) Byte values: 0x00 = ON 0x01 = OFF 0x000C47 (byte) = Duel Mode Transformations (For Player 2) Byte values: 0x00 = ON 0x01 = OFF 0x000C4B (byte) = Duel Mode Map Setting 0x00 = ON 0x01 = OFF Unknown 0x00120B (byte) = Unknown. Can be 0x00 or 0x01. Various Settings and Unknown 0x00160B (byte) = Controller and Voice Settings Bits 0 thru 2 = Unused Bit 3 = Controller Type 2P (0 = Normal, 1 = Simple) Bit 4 = Controller Type 1P (0 = Normal, 1 = Simple) Bit 5 = Rumble Setting 2P (0 = Off, 1 = On) Bit 6 = Rumble Setting 1P (0 = Off, 1 = On) Bit 7 = Change Voice (0 = Japanese, 1 = English) 0x00160F (byte) = Always 0x02? 0x001613 (byte) = Always 0x01? 0x001617 (byte) = Always 0x00? 0x00161B (byte) = Always 0x03? 0x00161F (byte) = Always 0x04? 0x001623 (byte) = Always 0x05? 0x001627 (byte) = Always 0x06? 0x00162B (byte) = Always 0x07? 0x00162F (byte) = Always 0x02? 0x001633 (byte) = Always 0x01? 0x001637 (byte) = Always 0x00? 0x00163B (byte) = Always 0x03? 0x00163F (byte) = Always 0x04? 0x001643 (byte) = Always 0x05? 0x001647 (byte) = Always 0x06? 0x00164B (byte) = Always 0x07? 0x00164F (byte) = Always 0x02? 0x001653 (byte) = Always 0x01? 0x001657 (byte) = Always 0x00? 0x00165B (byte) = Always 0x03? 0x00165F (byte) = Always 0x04? 0x001663 (byte) = Always 0x05? 0x001667 (byte) = Always 0x06? 0x00166B (byte) = Always 0x07? 0x00166F (byte) = Always 0x02? 0x001673 (byte) = Always 0x01? 0x001677 (byte) = Always 0x00? 0x00167B (byte) = Always 0x03? 0x00167F (byte) = Always 0x04? 0x001683 (byte) = Always 0x05? 0x001687 (byte) = Always 0x06? 0x00168B (byte) = Always 0x07? 0x00168F (byte) = Always 0x00? 0x001693 (byte) = Always 0x00? 0x001697 (byte) = Camera Type, (0x00 = A, 0x01 = B, 0x02 = C) 0x00169B (byte) = Screen Shake (0x00 = On, 0x01 = Off) 0x00169C (word; signed) Screen Position X-Axis 0x0016A0 (word; signed) Screen Position Y-Axis 0x0016A7 (byte) = Speaker (0x00 = Stereo, 0x01 = Mono) 0x0016AB (byte) = Music Volume (0x00 thru 0x09) 0x0016AF (byte) = Voice Volume (0x00 thru 0x09) Character Customize Format Halfword = Custom 1's First Z Item (it's byte value) Halfword = 2nd Z Item Halfword = 3rd Z Item Halfword = 4th Z Item Halfword = 5th Z Item Halfword = 6th Z Item Halfword = 7th Z Item Halfword = For Character Type Z Item (ex: Goku Type) Halfword = Custom 2's First Z Item (it's byte value) Halfword = 2nd Z Item Halfword = 3rd Z Item Halfword = 4th Z Item Halfword = 5th Z Item Halfword = 6th Z Item Halfword = 7th Z Item Halfword = For Character Type Z Item (ex: Goku Type) Halfword = Custom 3's First Z Item (it's byte value) Halfword = 2nd Z Item Halfword = 3rd Z Item Halfword = 4th Z Item Halfword = 5th Z Item Halfword = 6th Z Item Halfword = 7th Z Item Halfword = For Character Type Z Item (ex: Goku Type) Word = Z Points Halfword = Amount of Ability Limits beyond the character's default Halfword = Unused 0x001808 = Goku (Early) 0x001840 = Kid Gohan 0x001878 = Piccolo (Early) ... ... Increment by 0x38 for next character. Character order is how they are listed in game. Start at first row (Goku Early), go left to right. After that, move down to next row (to Goku Mid) and repeat this process until you end up at last character (Arale). 0x002D08 = Arale Unknown 0x002D58 thru 0x002ECF = Various repeating word values of 0xFFFFFFFF, unknown, same for all data saves, never changes Z Shop 0x002EC8 thru 0x002F5F = 152 total Bytes values for 152 total Z Items in Item Shop. Bit Breakdown: Bits 0 thru 5 = Unused Bit 6 = New! Bit 7 = Purchased 0x003028 (word) = Value for how many Z points you have, Max is 0x0098967F (9999999 in-game value) Replay Data Locations: 0x003030 = Replay #1 0x02F830 = #2 0x05C030 = #3 0x088830 = #4 0x0B5030 = #5 0x0E1830 = #6 0x10E030 = #7 Format 0x0003 (byte) = Always 0x01? 0x0004 (word) = Unused? 0x0008 (word) = Unused? 0x000C (word) = Unused? 0x0013 (byte) = Character #1 on First Team (Replay Data Preview) 0x0017 (byte) = #2 0x001B (byte) = #3 0x001F (byte) = #4 0x0023 (byte) = #5 0x0027 (byte)= Character #1 on Second Team (Replay Data Preview) 0x002B (byte) = #2 0x002F (byte) = #3 0x0033 (byte) = #4 0x0037 (byte) = #5 0x0038 (word) = ASCII for btls 0x003F (byte) = Always 0x07? 0x0043 (byte) = ? 0x0047 (byte) = ? 0x004B (byte) = Duel Time (4 = 240, 3 = 180, 2 = 90, 1 = 60, 0 = Infinite) 0x004F (byte) = ? 0x0053 (byte) = Always 0x01? 0x0057 (byte) = Map 0x005B (byte) = ? 0x005F (byte) = ? 0x0063 (byte) = Map (again) 0x00FB (byte) = Always 0x01? 0x00FF (byte) = Character #1 on First Team 0x010B (byte) = Some bit flipping going on in regards to varius Duel Settings, too lazy to figure them out 0x010C (halfword) = Always 0x42C8? 0x02F7 (byte) = Always 0x01? 0x02FB (byte) = Always 0x01? 0x0303 (byte) = ? Seems to only be 0x00 or 0x02 0x0308 thru 0x0x031F (4 words of F's, word of 1, then word of F's) #Maybe Costume and Item Settings of characters on First Team? 0x034B (byte) = Character #1 on First Team 0x0357 (byte) = Character #1 on First Team 0x036B (byte) = Always 0x01? 0x036F (byte) = Character #1 on Second Team 0x037B (byte) = Copy of byte value at 0x010B 0x037C (halfword) = Copy of halfword value at 0x010C 0x0567 thru 0x058F = Maybe Costume and Item Settings of characters on Second Team? 0x05BB (byte) = Character #1 on Second Team 0x05C7 (byte) = Character #1 on Second Team 0x05DB (byte) = Always 0x1? 0x05E0 thru 0xXXXX = Actual Replay Data, various bit flips for various actions, movements, etc. Actual length will vary ofc and I have no idea what the replay data limit is.