If you are still using the old URL (datacrystal.romhacking.net), please update your bookmarks! The old URL may stop working at any time.
The current URL is datacrystal.tcrf.net.
The current URL is datacrystal.tcrf.net.
Monster Rancher DS/Notes
Jump to navigation
Jump to search
Save file
Save files for the game consist of 3 main sections:
- Header - The text `MonsterRancherDS` in ASCII repeated twice.
- Save entry 1 - First instance of the save data.
- Save entry 2 - Second instance of the save data.
Each save entry contains the player information, monster data, etc. of the playthrough. The file having two copies of the data is likely to have a backup copy in case the game is turned off in the middle of writing the save file. Each save entry includes two checksums, and if the checksum is incorrect for one of the save entries then the game will load from the other save entry.
Checksums
Each save entry has two checksums:
- Header checksum
- Body checksum
The checksums are calculated using the following algorithm:
# Checksum the header data
checksum = 0xFFFFFFFF
for byte in data[:56]:
lookup = SAVE_FILE_CHECKSUM_MAPPING[(checksum ^ byte) & 0xFF]
checksum = lookup ^ checksum >> 8
header_checksum = checksum ^ 0xFFFFFFFF
# Update the header checksum in the data, since it is processed as a part of the body
# checksum
data[56:60] = header_checksum.to_bytes(4, "little")
# Checksum the header + body
checksum = 0xFFFFFFFF
for byte in data[:0x3CDC]:
lookup = SAVE_FILE_CHECKSUM_MAPPING[(checksum ^ byte) & 0xFF]
checksum = lookup ^ checksum >> 8
body_checksum = checksum ^ 0xFFFFFFFF
The algorithm uses the following byte to 32-bit unsigned int mapping:
# Index is the byte value. Ex. \x01 maps to 0x77073096
SAVE_FILE_CHECKSUM_MAPPING = [
0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, 0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3,
0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988, 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91,
0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE, 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7,
0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC, 0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5,
0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172, 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B,
0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940, 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59,
0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116, 0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F,
0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924, 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D,
0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A, 0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433,
0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818, 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01,
0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E, 0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457,
0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C, 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65,
0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2, 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB,
0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0, 0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9,
0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086, 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F,
0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4, 0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD,
0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A, 0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683,
0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8, 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1,
0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE, 0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7,
0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC, 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5,
0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252, 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B,
0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60, 0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79,
0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236, 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F,
0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04, 0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D,
0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A, 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713,
0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38, 0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21,
0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, 0x1FDA836E, 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777,
0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C, 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45,
0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2, 0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB,
0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0, 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9,
0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, 0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF,
0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94, 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D,
]
Format
struct Monster {
u8 name[12];
u8 unknown_a[6];
u16 species_id;
u8 unknown_b[20];
u16 power;
u16 intelligence;
u16 skill;
u16 speed;
u16 defense;
u16 life;
u8 unknown_c[368];
};
struct SaveEntry {
u8 save_counter;
u8 unknown_a[4];
bool did_not_quit;
u8 unknown_b[4];
u8 ranch_name[13];
u8 unknown_c[4];
u8 player_name[13];
u8 unknown_d[16];
u32 header_checksum;
u8 unknown_e[292];
u32 gold;
u16 items[50];
Monster monsters[31];
u8 unknown_f[2104];
u32 checksum;
};
struct SaveFile {
u8 header[34];
SaveEntry entries[2];
};
SaveFile save @ 0x0;
IDs
Items
ID Item -- ------- 00 Banana Ring 01 Medicinal Herb 02 Honey Shroom 03 Monster Candy 04 Elixir 05 Sea Angel 06 Soda Lozenge 07 Worm Fungus 08 Roll Cake 09 Shock Rock 0A Fatty Meat 0B Blade Weed 0C Rosemoon 0D Silver Peach 0E Gold Peach 0F Hot Lozenge 10 Soybean Flour 11 Dragon Scale 12 Spook Bug 13 Red Mango 14 Bell Flower 15 Lif. Fruit 16 Pow. Fruit 17 Int. Fruit 18 Skil. Fruit 19 Spd. Fruit 1A Def. Fruit 1B Slate Fragment (Abyss) 1C Slate Fragment (Ogyo) 1D Slate Fragment (Golem) 1E Slate Fragment (Color Pandora) 1F Slate Fragment (Suezo) 20 Slate Fragment (Ducken) 22 Slate Fragment (Baku) 23 Slate Fragment (Mew) 24 Slate Fragment (Hare) 25 Slate Fragment (Pancho) 26 Slate Fragment (Pixie) 27 Slate Fragment (Piroro) 28 Slate Fragment (Falco) 29 Slate Fragment (Plant) 2A Slate Fragment (Mocchi) 2B Slate Fragment (Tiger) 2C Slate Fragment (Lesione) 2D Slate Fragment (Zan) 2E Slate Fragment (Joker) 2D Slate Fragment (Xenon) 2F Slate Fragment (Durahan) 30 Slate Fragment (Dragon) 31 Slate Fragment (Beaclon) 32 Slate Fragment (Pheonix) 33 Slate Fragment (Hengar) 34 Slate Fragment (Gali) 35 Slate Fragment (Centaur) 36 Slate Fragment (Naga) 37 Slate Fragment (Monol) 38 King's Proof 39 None (Pot) 3A None (Duck) 3B Dragon Fang 3C Twin Edge 3D Fire Feather 3E Cursed Mask 3F None (Mew doll) 40 None (Sword in sheath) 41 Ancient Weapon 42 Gali Mask 43 Knight's Lance 44 Naga Scale 45 Black Slate 46 Pupa 47 Silver Nugget 48 Gold Nugget 49 Platinum 4A Sculpture 4B Gemini's Pot 4C Weather Doll 4D Ice Cube 4E Cricket Chime 4F Fire Stone 50 Music Box 51 Ancient Relief 1 (Abyss) 52 Ancient Relief 2 (Falco) 53 Old Sheath 54 Old Sword 55 None (Hengar part 1) 56 None (Hengar part 2) 57 None (Hengar part 3) 58 None (Hengar part 4) 59 None 5A None (Crystal 1) 5B None (Crystal 2) 5C None (Crystal 3) 5D None (Crystal 4) 5E None (Crystal 5) 5F None (Crystal 6) 60 None (Crystal 7) 61 None (Crystal 8) 62 None (Crystal 9) 63 None (Crystal 10) 64 None (Crystal 11) 65 None (Crystal 12) 66 No Food 67 Potato 68 Pasta 69 Turnip 6A Fish 6B Milk 6C Cup Jelly 6D Meat 6E Tofu 6F Tablet
Collapse Internal Data for Monster Rancher DS
| |
---|---|