More info on non-english PAL FF12 versions
I have now tested some more FF12 release versions and found that the ELFs for the French, German, Italian, and Spanish versions are almost identical, except for the following 6 bytes that differ (all numbers in hex):
Code:
Offset: SLES_543.55 SLES_543.56 SLES_543.57 SLES_543.58
-------- ----------- ----------- ----------- -----------
0000129C 02 03 04 05 Language index
003531BE 66 72=="fr" 64 65=="de" 69 74=="it" 65 73=="es" Folder path part
003531D3 66 72=="fr" 64 65=="de" 69 74=="it" 65 73=="es" Folder path part
0036F0B3 35 == "5" 37 == "6" 37 == "7" 38 == "8" Gamesave ID part
The two 'Folder path' entries above are part of the same string, starting at offset 0x3531B0, and looking like this for each version:
Code:
French: "p:/image/ff12/fr/bin/filelistmasterfr.bin"
German: "p:/image/ff12/de/bin/filelistmasterde.bin"
Italian: "p:/image/ff12/it/bin/filelistmasterit.bin"
Spanish: "p:/image/ff12/es/bin/filelistmasteres.bin"
That string refers to one of the files that are 'invisible' to normal DVD TOC methods. Apparently Square uses a customized device driver for such.
The final differing byte is part of a gamesave ID string starting at offset 0036F0A8, which looks like this for each of these versions:
Code:
French: "BESLES-54355FF12/FFXIISAVE%03d"
German: "BESLES-54356FF12/FFXIISAVE%03d"
Italian: "BESLES-54357FF12/FFXIISAVE%03d"
Spanish: "BESLES-54358FF12/FFXIISAVE%03d"
Note that the part starting with "/" will be replaced by a two digit number string representing the real gamesave index number ("00" for the first etc). The way this reference is encoded in that string indicates that there is an in-game script interpreter which can translate symbolic variable references to runtime value references. This could be extremely useful in further analysis of the program, if it turns out to be possible to extract those symbol definitions from one of the hidden files. Such symbol definitions could also be invaluable in designing new cheat codes.
Best regards: dlanor
FMV fix for French, German, Italian, and Spanish FF12
The ISO's for French, German, Italian, and Spanish FF12 versions have been found to be so similar that they can all use the same ISO patches and cheat codes that deal with HDL compatibility. That has now been tested for all of these versions.
The codes given below will thus work in all of the following versions:
SLES_543.55 == French version
SLES_543.56 == German version
SLES_543.57 == Italian version
SLES_543.58 == Spanish version
Note that these codes are intended for use with an unpatched FF12 ISO installed
for HDLoader (or ToxicOS).
Code:
Raw format for FR,DE,IT,ES FF12:
--------------------------------
Master Code:
9044D7E0 0C1135A0
HDD support with R3 FMV unstutter:
003B1294 00000000
E001FFFB 0056FBDC
003B1504 00000001
E001FFFB 1056FBDC
003B1504 00000000
CB format for FR,DE,IT,ES FF12:
-------------------------------
Master Code:
9A683BFF 18B7B847
HDD support with R3 FMV unstutter:
0AB74D33 00000000
EA5480B9 98F4BFE7
0A274D30 00000001
EA5480B9 68F4BFE7
0A274D30 00000000
Note that the codes are identical to the ones I posted earlier for the Italian release only, but I think the new finding that they also work in three more releases is reason enough to repost these codes now.
Best regards: dlanor
New cheats again, now including some non-HDL stuff
In this version of my codes I have added two 'normal' cheats to the HDL support stuff, and in so doing I discovered that I had to modify the master codes to avoid checksum problems in patching some variables. I've also dropped the habit of posting the CB version of the codes, as those are easily converted by others too, and they made the posts too bulky.
Of the two new cheats, the 'Max Gil' one needs no explanation, but the 'New Game+' cheat merits some more detail. That code simply resets the event system of the game so that the next storyline event will occur when you go into Migelo's tavern and speak to him, and the event triggered by that will be the same one that occurred when you did it early in the game, so he will again send you to fetch Kytes from the 'Sandsea' bar. You can thus replay the game, event by event, though with a few variations. For example, the tomato fiend will already be beneath the bluff where you first met it, as it jumped down there in your first battle with it. But the major variation is that you still have the same level and inventory that you had when you used the cheat. (You even have the same party for a while.)
Credit goes to a guy calling himself 'Trigin', who published a cheat FAQ for the US version containing lots of cheats from which I gathered some US patch locations, which I then translated for the PAL versions.
Codes for SLUS_209.63
Code:
Raw format for US FF12:
-----------------------
Master Code:
904497A0 0C112590
21780C20 03E00008
21780C24 24020001
HDL support with R2+R3 FMV unstutter:
003AFDC4 00000000
E001FDFB 0056BADC
003B0034 00000001
E001FDFB 1056BADC
003B0034 00000000
Max Gil to 99,999,999:
20547F08 05F5E0FF
New Game+ at L1+L2+R1+R2+Select+Start:
E001F0F6 0056BADC
10548100 0000002D
Codes for SLES_543.54
Code:
Raw format for UK FF12:
-----------------------
Master Code:
9044D7E0 0C1135A0
21780C18 03E00008
21780C1C 24020001
HDL support with R2+R3 FMV unstutter:
003B129C 00000000
E001FDFB 0056FBDC
003B150C 00000001
E001FDFB 1056FBDC
003B150C 00000000
Max Gil to 99,999,999:
2054C008 05F5E0FF
New Game+ at L1+L2+R1+R2+Select+Start:
E001F0F6 0056FBDC
1054C200 0000002D
Codes for SLES_543.55, SLES_543.56, SLES_543.57, and SLES_543.58
Code:
Raw format for FR,DE,IT,ES FF12:
--------------------------------
Master Code:
9044D7E0 0C1135A0
21780C18 03E00008
21780C1C 24020001
HDD support with R2+R3 FMV unstutter:
003B1294 00000000
E001FDFB 0056FBDC
003B1504 00000001
E001FDFB 1056FBDC
003B1504 00000000
Max Gil to 99,999,999:
2054C008 05F5E0FF
New Game+ at L1+L2+R1+R2+Select+Start:
E001F0F6 0056FBDC
1054C200 0000002D
Note that some *but not all* of the UK codes are identical to the corresponding codes of the other PAL versions. This is only because the variable areas of these 'two' versions are almost identical. But most cheats that patch program code sections, such as the FMV 'unstutter' cheat, will differ between the UK and the other PAL versions.
Btw: I no longer mistrust 'Raw' code usage for CB 9.2, provided that they are used with 100% consistency. If they are mixed with cheats using CB format, then they will malfunction, which is what caused me to doubt them earlier.
Best regards: dlanor
3 Attachment(s)
Yet another version of my FFXII cheats...
A week has gone by since the last post here, due to the server move, and in the meantime lots of things have happened with my FFXII testing.
One thing that should make all users of US FFXII happy is that I've confirmed the ability of CB2crypt to encrypt homemade cheats so that they can be added to a downloaded Day1 cheat set. I tried this myself by adding the HDL support cheat code to my downloaded FFXII Day1 set, which then worked fine when running the game from HDL.
Another thing that should make PAL users happy is that I've found a solution for the 'License board' problem that appeared when adding 'checksum patching' to the master code. Apparently it is ONLY the US version which will tolerate that patch in all (known) aspects of the game. With all other versions, including the japanese, patching the checksum calculator this way will cause problems in some parts of the game, including a total freeze when activating a new license. And yet the patch is needed if any unconditional patching has been made by cheat codes into the saveable RAM area (which includes all character stats, party Gil, etc). Otherwise loading gamesaves will always fail with those cheats active.
The solution is to only have that patch active when loading a gamesave, by pressing a button combo to activate it as needed, and having it turned off automatically, either when the load completes or after a suitable timeout. (I chose to do that after a delay of 2 minutes and 30 seconds.)
My current set of cheat codes is attached in the form of three text files, one for each of the significant western versions (US NTSC, UK PAL, and non-UK PAL). This code set is not intended as exhaustive (in fact it's tiny) because I have no interest in spending my time translating Day1 cheats, most of which I'll never use. Instead I've developed some generic tool cheats that will be useful for others who design new cheats in the future.
The most important cheats in the new set, apart from the new master code and the HDL support cheat, are two cheats that add improved gamepad support.
One of them is a gamepad debouncer which allows any other cheat to read gamepad input on a one-shot basis, so that the main work of such a cheat will only be executed once per button event, no matter how long the button combo is pressed. It will take a new pressing of that button combo to repeat the action again.
The other support cheat is what I call a 'data pump' which allows numeric entry of numbers in the range 0-31, which may then be used either as flexible choice flags, or simply to select patch amounts for various purposes.
Two 'demo' codes are provided that show how to use both the data pump and the debouncer. One of them allows adding a selectable amount of Gil to your purse, and the other is a new variation of the Exp multiplier cheat, allowing you to use any binary power multiplier from 2**0 through 2**31 (though only those less than 2**21 are meaningful to use).
All of the cheats in these files are heavily commented, so as to help others make use of their methods in cheats of their own. I've also documented some of the differences between the CB and ToxicOS cheat engines that all cheat coders should be aware of, so even if you don't want my cheats you may want to give one of these files a quick reading anyway, so as to pick up that info. (All three files contain the same info on this, so reading them all is not necessary.)
Best regards: dlanor