mupen64plus / mupen64plus-core

Core module of the Mupen64Plus project
1.32k stars 258 forks source link

Please support the savegame format of the Virtual Console : the official Nintendo Emulator #891

Open ytrezq opened 3 years ago

ytrezq commented 3 years ago

Once deciphered, the Virtual Console seems to use the same raw format as on Console except one thing : it seems the written bytes are somewhat written with a naïve filter : The 2 files linked here are about a fresh new savefile with one generated on the console and the other the Wii’s Virtual Console using the exact same ʀᴏᴍ (extracted from the real console). The size doesn’t matter as the data after 32Kb is rubbish so the internal file size is the same.

As a result, the savestates can’t be exchanged with Mupen64Plus.

jfolker commented 2 years ago

Do you know where to find documentation on the Wii VC savegame format? If not, are you willing to figure out what the format is and document it?

ytrezq commented 2 years ago

@jfolker problem is I m a player. Not a reverse engineer. Neverless you can see the filter is naive as the bytes set to 0 remains at 0 in the example.

Jj0YzL5nvJ commented 2 years ago

$ xxd -seek 0 -l 560 RAM_NTEP

00000000: 25e4 2b50 77af ed6a 0000 0400 0300 0000  %.+Pw..j........
00000010: 0900 0400 0300 0000 1200 0400 0300 0000  ................
00000020: 0004 0003 0000 03e8 0904 0003 0000 0320  ............... 
00000030: 1204 0003 0000 0258 1b00 0400 0300 0000  .......X........
00000040: 2400 0400 0300 0000 2800 0400 0300 0000  $.......(.......
00000050: 1b04 0003 0000 0fa0 2404 0003 0000 0bb8  ........$.......
00000060: 2804 0003 0000 07d0 3100 0400 0301 1e00  (.......1.......
00000070: 3a00 0400 0301 2800 0300 0400 0301 3200  :.....(.......2.
00000080: 3104 0003 0000 0fa0 3a04 0003 0000 0bb8  1.......:.......
00000090: 0304 0003 0000 07d0 0c00 0400 0302 0000  ................
000000a0: 1000 0400 0302 0a00 1900 0400 0302 1400  ................
000000b0: 0c04 0003 0000 0fa0 1004 0003 0000 0bb8  ................
000000c0: 1904 0003 0000 07d0 2200 0400 0302 0000  ........".......
000000d0: 2b00 0400 0302 0a00 3400 0400 0302 1400  +.......4.......
000000e0: 2204 0003 0000 1388 2b04 0003 0000 0fa0  ".......+.......
000000f0: 3404 0003 0000 0bb8 3800 0400 0302 1e00  4.......8.......
00000100: 0100 0400 0302 2800 0a00 0400 0302 3200  ......(.......2.
00000110: 3804 0003 0000 1388 0104 0003 0000 0fa0  8...............
00000120: 0a04 0003 0000 0bb8 1300 0400 0302 1e00  ................
00000130: 1c00 0400 0302 2800 2000 0400 0302 3200  ......(. .....2.
00000140: 1304 0003 0000 1388 1c04 0003 0000 0fa0  ................
00000150: 2004 0003 0000 0bb8 2900 0400 0302 0000   .......).......
00000160: 3200 0400 0302 0a00 3b00 0400 0302 1400  2.......;.......
00000170: 2904 0003 0000 1388 3204 0003 0000 0fa0  ).......2.......
00000180: 3b04 0003 0000 0bb8 0dcd a165 b564 6ae8  ;..........e.dj.
00000190: 0000 0020 0504 0003 0000 3a98 0000 03e8  ... ......:.....
000001a0: 0000 3a98 0000 0fa0 0000 3a98 0000 c350  ..:.......:....P
000001b0: 0000 0029 0504 0003 0000 2ee0 0000 03e8  ...)............
000001c0: 0000 2ee0 0000 0bb8 0000 2ee0 0000 9c40  ...............@
000001d0: 0000 0032 0504 0003 0000 2328 0000 01f4  ...2......#(....
000001e0: 0000 2328 0000 09c4 0000 2328 0000 7530  ..#(......#(..u0
000001f0: e342 4801 0a7b 1db0 001f 0001 0004 0000  .BH..{..........
00000200: 0000 0000 0000 0000 0000 0808 08aa aaaa  ................
00000210: e984 3f52 fdf7 2f0e aaaa 8000 0000 0000  ..?R../.........
00000220: 0000 0000 aaaa aaaa 9cfc c75b 9706 1efc  ...........[....

$ xxd -seek 32216 -l 552 RAM_NTEP

00007dd8: 0000 0400 0300 0000 0900 0400 0300 0000  ................
00007de8: 1200 0400 0300 0000 0004 0003 0000 03e8  ................
00007df8: 0904 0003 0000 0320 1204 0003 0000 0258  ....... .......X
00007e08: 1b00 0400 0300 0000 2400 0400 0300 0000  ........$.......
00007e18: 2800 0400 0300 0000 1b04 0003 0000 0fa0  (...............
00007e28: 2404 0003 0000 0bb8 2804 0003 0000 07d0  $.......(.......
00007e38: 3100 0400 0301 1e00 3a00 0400 0301 2800  1.......:.....(.
00007e48: 0300 0400 0301 3200 3104 0003 0000 0fa0  ......2.1.......
00007e58: 3a04 0003 0000 0bb8 0304 0003 0000 07d0  :...............
00007e68: 0c00 0400 0302 0000 1000 0400 0302 0a00  ................
00007e78: 1900 0400 0302 1400 0c04 0003 0000 0fa0  ................
00007e88: 1004 0003 0000 0bb8 1904 0003 0000 07d0  ................
00007e98: 2200 0400 0302 0000 2b00 0400 0302 0a00  ".......+.......
00007ea8: 3400 0400 0302 1400 2204 0003 0000 1388  4.......".......
00007eb8: 2b04 0003 0000 0fa0 3404 0003 0000 0bb8  +.......4.......
00007ec8: 3800 0400 0302 1e00 0100 0400 0302 2800  8.............(.
00007ed8: 0a00 0400 0302 3200 3804 0003 0000 1388  ......2.8.......
00007ee8: 0104 0003 0000 0fa0 0a04 0003 0000 0bb8  ................
00007ef8: 1300 0400 0302 1e00 1c00 0400 0302 2800  ..............(.
00007f08: 2000 0400 0302 3200 1304 0003 0000 1388   .....2.........
00007f18: 1c04 0003 0000 0fa0 2004 0003 0000 0bb8  ........ .......
00007f28: 2900 0400 0302 0000 3200 0400 0302 0a00  ).......2.......
00007f38: 3b00 0400 0302 1400 2904 0003 0000 1388  ;.......).......
00007f48: 3204 0003 0000 0fa0 3b04 0003 0000 0bb8  2.......;.......
00007f58: 0dcd a165 b564 6ae8 0000 0020 0504 0003  ...e.dj.... ....
00007f68: 0000 3a98 0000 03e8 0000 3a98 0000 0fa0  ..:.......:.....
00007f78: 0000 3a98 0000 c350 0000 0029 0504 0003  ..:....P...)....
00007f88: 0000 2ee0 0000 03e8 0000 2ee0 0000 0bb8  ................
00007f98: 0000 2ee0 0000 9c40 0000 0032 0504 0003  .......@...2....
00007fa8: 0000 2328 0000 01f4 0000 2328 0000 09c4  ..#(......#(....
00007fb8: 0000 2328 0000 7530 e342 4801 0a7b 1db0  ..#(..u0.BH..{..
00007fc8: 001f 0001 0004 0000 0000 0000 0000 0000  ................
00007fd8: 0000 0808 08aa aaaa e984 3f52 fdf7 2f0e  ..........?R../.
00007fe8: aaaa 8000 0000 0000 0000 0000 aaaa aaaa  ................
00007ff8: 9cfc c75b 9706 1efc                      ...[....

$ xxd -seek 0 -l 560 "1080 Snowboarding (E) (M4) [b1][f2] (PAL).sra"

00000000: a400 e47b c242 b0cb 0004 0000 0000 0003  ...{.B..........
00000010: 0004 0009 0000 0003 0004 0012 0000 0003  ................
00000020: 0300 0400 e803 0000 0300 0409 2003 0000  ............ ...
00000030: 0300 0412 5802 0000 0004 001b 0000 0003  ....X...........
00000040: 0004 0024 0000 0003 0004 0028 0000 0003  ...$.......(....
00000050: 0300 041b a00f 0000 0300 0424 b80b 0000  ...........$....
00000060: 0300 0428 d007 0000 0004 0031 001e 0103  ...(.......1....
00000070: 0004 003a 0028 0103 0004 0003 0032 0103  ...:.(.......2..
00000080: 0300 0431 a00f 0000 0300 043a b80b 0000  ...1.......:....
00000090: 0300 0403 d007 0000 0004 000c 0000 0203  ................
000000a0: 0004 0010 000a 0203 0004 0019 0014 0203  ................
000000b0: 0300 040c a00f 0000 0300 0410 b80b 0000  ................
000000c0: 0300 0419 d007 0000 0004 0022 0000 0203  ..........."....
000000d0: 0004 002b 000a 0203 0004 0034 0014 0203  ...+.......4....
000000e0: 0300 0422 8813 0000 0300 042b a00f 0000  ...".......+....
000000f0: 0300 0434 b80b 0000 0004 0038 001e 0203  ...4.......8....
00000100: 0004 0001 0028 0203 0004 000a 0032 0203  .....(.......2..
00000110: 0300 0438 8813 0000 0300 0401 a00f 0000  ...8............
00000120: 0300 040a b80b 0000 0004 0013 001e 0203  ................
00000130: 0004 001c 0028 0203 0004 0020 0032 0203  .....(..... .2..
00000140: 0300 0413 8813 0000 0300 041c a00f 0000  ................
00000150: 0300 0420 b80b 0000 0004 0029 0000 0203  ... .......)....
00000160: 0004 0032 000a 0203 0004 003b 0014 0203  ...2.......;....
00000170: 0300 0429 8813 0000 0300 0432 a00f 0000  ...).......2....
00000180: 0300 043b b80b 0000 65a1 cd0d e86a 64b5  ...;....e....jd.
00000190: 2000 0000 0300 0405 983a 0000 e803 0000   ........:......
000001a0: 983a 0000 a00f 0000 983a 0000 50c3 0000  .:.......:..P...
000001b0: 2900 0000 0300 0405 e02e 0000 e803 0000  )...............
000001c0: e02e 0000 b80b 0000 e02e 0000 409c 0000  ............@...
000001d0: 3200 0000 0300 0405 2823 0000 f401 0000  2.......(#......
000001e0: 2823 0000 c409 0000 2823 0000 3075 0000  (#......(#..0u..
000001f0: 0148 42e3 b01d 7b0a 0100 1f00 0000 0400  .HB...{.........
00000200: 0000 0000 0000 0000 0808 0000 0000 0008  ................
00000210: fce9 2eea bad9 a1fc 0000 0000 0000 0000  ................
00000220: 0000 0000 0000 0000 05f2 51f2 a8c9 5bec  ..........Q...[.

$ xxd -seek 32216 -l 552 "1080 Snowboarding (E) (M4) [b1][f2] (PAL).sra"

00007dd8: 0004 0000 0000 0003 0004 0009 0000 0003  ................
00007de8: 0004 0012 0000 0003 0300 0400 e803 0000  ................
00007df8: 0300 0409 2003 0000 0300 0412 5802 0000  .... .......X...
00007e08: 0004 001b 0000 0003 0004 0024 0000 0003  ...........$....
00007e18: 0004 0028 0000 0003 0300 041b a00f 0000  ...(............
00007e28: 0300 0424 b80b 0000 0300 0428 d007 0000  ...$.......(....
00007e38: 0004 0031 001e 0103 0004 003a 0028 0103  ...1.......:.(..
00007e48: 0004 0003 0032 0103 0300 0431 a00f 0000  .....2.....1....
00007e58: 0300 043a b80b 0000 0300 0403 d007 0000  ...:............
00007e68: 0004 000c 0000 0203 0004 0010 000a 0203  ................
00007e78: 0004 0019 0014 0203 0300 040c a00f 0000  ................
00007e88: 0300 0410 b80b 0000 0300 0419 d007 0000  ................
00007e98: 0004 0022 0000 0203 0004 002b 000a 0203  ...".......+....
00007ea8: 0004 0034 0014 0203 0300 0422 8813 0000  ...4......."....
00007eb8: 0300 042b a00f 0000 0300 0434 b80b 0000  ...+.......4....
00007ec8: 0004 0038 001e 0203 0004 0001 0028 0203  ...8.........(..
00007ed8: 0004 000a 0032 0203 0300 0438 8813 0000  .....2.....8....
00007ee8: 0300 0401 a00f 0000 0300 040a b80b 0000  ................
00007ef8: 0004 0013 001e 0203 0004 001c 0028 0203  .............(..
00007f08: 0004 0020 0032 0203 0300 0413 8813 0000  ... .2..........
00007f18: 0300 041c a00f 0000 0300 0420 b80b 0000  ........... ....
00007f28: 0004 0029 0000 0203 0004 0032 000a 0203  ...).......2....
00007f38: 0004 003b 0014 0203 0300 0429 8813 0000  ...;.......)....
00007f48: 0300 0432 a00f 0000 0300 043b b80b 0000  ...2.......;....
00007f58: 65a1 cd0d e86a 64b5 2000 0000 0300 0405  e....jd. .......
00007f68: 983a 0000 e803 0000 983a 0000 a00f 0000  .:.......:......
00007f78: 983a 0000 50c3 0000 2900 0000 0300 0405  .:..P...).......
00007f88: e02e 0000 e803 0000 e02e 0000 b80b 0000  ................
00007f98: e02e 0000 409c 0000 3200 0000 0300 0405  ....@...2.......
00007fa8: 2823 0000 f401 0000 2823 0000 c409 0000  (#......(#......
00007fb8: 2823 0000 3075 0000 0148 42e3 b01d 7b0a  (#..0u...HB...{.
00007fc8: 0100 1f00 0000 0400 0000 0000 0000 0000  ................
00007fd8: 0808 0000 0000 0008 fce9 2eea bad9 a1fc  ................
00007fe8: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00007ff8: 05f2 51f2 a8c9 5bec                      ..Q...[.
ytrezq commented 2 years ago

@Jj0YzL5nvJ what do you mean?

Jj0YzL5nvJ commented 2 years ago

Those are the relevant data blocks, you can use a hex editor and overwrite the blocks from one container over another.

ytrezq commented 2 years ago

@Jj0YzL5nvJ you seems to not understand my point that the data is stored in those blocks where there is a differrence.

ytrezq commented 2 years ago

@Jj0YzL5nvJ : the problem isn’t to copy those bytes in order to get the second file accepted since they have the same meaning only for comparison purposes but to understand what lies in those bytes different when there’s no equivalent for mupen64plus leaving only the official version Nintendo version.