Import any S1 Save:
Tested on hardware.
Oh, but I'm sure some of you want to patch this into the game. In 1ST_READ.BIN, make the following changes:
At 04aaa4, Change 426206D1 to 41620B91 at
At 04aaaa, Change 048F to 03A0
To understand how this works, let's look at the relevant game code. This should be interesting if you've ever converted a save by hand:
- Code: Select all
H'8c05aaa0: H'2fe6 ./ mov.l R14, @-R15
H'8c05aaa2: H'6ef3 .n mov R15, R14
H'8c05aaa4: H'6242 Bb mov.l @R4, R2 //Change to mov.w -> 62 41
H'8c05aaa6: H'd106 .. mov.l @(H'8c05aac0), R1 (H'45454853) //Change to mov.w -> 91 0B
H'8c05aaa8: H'3210 .2 cmp/eq R1, R2
H'8c05aaaa: H'8f04 .. bf/s H'8c05aab6 //Change to bra 8c05aab4 -> A0 03
H'8c05aaac: H'e000 .. mov H'00, R0
H'8c05aaae: H'5241 AR mov.l @(1, R4), R2
H'8c05aab0: H'9104 .. mov.w @(H'8c05aabc), R1 (H'010e)
H'8c05aab2: H'3210 .2 cmp/eq R1, R2
H'8c05aab4: H'0029 ). movt R0
H'8c05aab6: H'6fe3 .o mov R14, R15
H'8c05aab8: H'000b .. rts
H'8c05aaba: H'6ef6 .n mov.l @R15+, R14
H'8c05aabc: H'010e .. mov.l @(R0, R0), R1
H'8c05aabe: H'0009 .. nop
H'8c05aac0: H'4853 SH ???
H'8c05aac2: H'4545 EE ???
At 8c05aaa4, it's loading 4 bytes at the area of your VMU save file with the "SHEE" text in it into register R2.
At 8c05aaa6, it's loading 4 bytes, the hard coded string "SHEE" into R1.
Then it checks if they're the same. If not, it jumps to the end of the method at 8c05aab6, cleans up, and returns. The result goes into R0, and because the value is never set, R0 contains 0, meaning "false". The save file is not compatible.
If they are the same, it continues performing comparisons. It checks for 0E01, the other value you have to change when you convert your save file. If they're equal, R0 is set to 1, (true) and the method returns.
The code simplifies the save file check. Per my comments above, instead of checking 4 bytes, we only check the first two, for SH, since all Shenmue 1 save files have that. (Japan is SHEN, US is SHEU, Europe is SHEE) Then we just skip over the other check completely, so as long as it finds SH, the save file is accepted.
Now I should probably disappear for a few weeks, since I still haven't finished playing MGSV.