Easier ways to mod¶
Ways to avoid PDIPFS exist to allow modding game files more easily.
Raw Reading Patch (GT5 2.11)¶
GT5 can be patched to read files loose to help testing mods faster. To publish mods continue on with the packing section of Volume System.
Edit RPCS3\patches\patch.yml, add the following under the correct PPU hash entry (indentation matters!). Also change the game code accordingly!
EU:
PPU-7a5ee7bc2fef9566dd80e35893fe2c5571197726US:
PPU-d73f342bf28ee016ef3d0ccb309b1acb03d8ecceJP:
PPU-26c56a42dbc303893506c4b76b496780f204d329
BCES00569
PPU-7a5ee7bc2fef9566dd80e35893fe2c5571197726:
"Raw Reading Patch":
Games:
"Gran Turismo 5":
BCES00569: [ 02.11 ]
Author: "Nenkai"
Patch Version: 1.0
Group: ""
Notes: ""
Patch:
- [ be32, 0x000120a0, 0x386004A0 ] # Adjust sizeof(PDIPS3::FileDevicePFSGameData) to sizeof(PDIPS3::FileDeviceCellFS) for new
- [ be32, 0x000120d8, 0x3888E308 ] # Adjust parameters PDIPS3::FileDeviceGameData(device, param1, param2, param3)
- [ be32, 0x000120dc, 0x38A8E330 ] # Change pointer to a vtable name
- [ be32, 0x000120e0, 0x7D064378 ] # Change pointer to a vtable name
- [ be32, 0x00a73160, 0x48004ED5 ] # Rectify pointer offset to device list field
- [ be32, 0x00a7316c, 0x941D0498 ] # Change PDIPS3::FileDevicePFSGameData device to PDIPS3::FileDeviceCellFS
- [ utf8, 0x013dde10, /dev_hdd0\0 ] # param_1
- [ be16, 0x013dde19, 0x0000 ] # Null terminate
- [ utf8, 0x013dde38, /game/BCES00569/USRDIR/direct ] # <-- Change BCES00569 accordingly!
- [ be16, 0x013dde55, 0x0000 ] # Null terminate
BCUS98114
PPU-d73f342bf28ee016ef3d0ccb309b1acb03d8ecce:
"Raw Reading Patch":
Games:
"Gran Turismo 5":
BCUS98114: [ 02.11 ]
Author: "Nenkai, chmcl95"
Patch Version: 1.1
Group: ""
Notes: ""
Patch:
- [ be32, 0x000120a0, 0x386004A0 ] # Adjust sizeof(PDIPS3::FileDevicePFSGameData) to sizeof(PDIPS3::FileDeviceCellFS) for new
- [ be32, 0x000120d8, 0x3888E328 ] # Adjust parameters PDIPS3::FileDeviceGameData(device, param1, param2, param3)
- [ be32, 0x000120dc, 0x38A8E350 ] # Change pointer to a vtable name
- [ be32, 0x000120e0, 0x7D064378 ] # Change pointer to a vtable name
- [ be32, 0x00a73160, 0x48004ED5 ] # Rectify pointer offset to device list field
- [ be32, 0x00a7316c, 0x941D0498 ] # Change PDIPS3::FileDevicePFSGameData device to PDIPS3::FileDeviceCellFS
- [ utf8, 0x013dde90, /dev_hdd0 ] # param_1
- [ be16, 0x013dde99, 0x0000 ] # Null terminate
- [ utf8, 0x013ddeb8, /game/BCUS98114/USRDIR/direct ]
- [ be16, 0x013dded5, 0x0000 ] # Null terminate
BCJS30001
PPU-26c56a42dbc303893506c4b76b496780f204d329:
"Raw Reading Patch":
Games:
"Gran Turismo 5":
BCJS30001: [ 02.11 ]
Author: "chmcl95"
Patch Version: 1.0
Notes:
Patch:
- [ be32, 0x0001209c, 0x386004A0 ] # Adjust sizeof(PDIPS3::FileDevicePFSGameData) to sizeof(PDIPS3::FileDeviceCellFS) for new
- [ be32, 0x000120d4, 0x3888E338 ] # Adjust parameters PDIPS3::FileDeviceGameData(device, param1, param2, param3)
- [ be32, 0x000120d8, 0x38A8E360 ] # Change pointer to a vtable name
- [ be32, 0x000120dc, 0x7D064378 ] # Change pointer to a vtable name
- [ be32, 0x00a73160, 0x48004ED5 ] # Rectify pointer offset to device list field
- [ be32, 0x00a7316c, 0x941D0498 ] # Change PDIPS3::FileDevicePFSGameData device to PDIPS3::FileDeviceCellFS
- [ utf8, 0x013dde10, /dev_hdd0 ] # param_1
- [ be16, 0x013dde19, 0x0000 ] # Null terminate
- [ utf8, 0x013dde38, /game/BCJS30001/USRDIR/direct ]
- [ be16, 0x013dde55, 0x0000 ] # Null terminate
Enable the patch in the game patches menu by right clicking on the game and clicking on Manage Game Patches.
TrueAncestorSELFResigner is required. decrypt EBOOT.BIN with 1. Decrypt EBOOT.BIN Only.
With a hex editor, edit EBOOT.ELF and place bytes at the following offsets:
BCES00569
BCUS98114
BCJS30001
Then resign it using the 2. Resign to NON-DRM EBOOT option.
BCES00569
Original
000120a0 38 60 02 40 li param_1,0x240
000120d8 7f 44 d3 78 or param_2=>PTR_s_KALAHARI-37863889_017cc738,r26,r26
000120dc 7f 85 e3 78 or param_3=>s_BCES-00569_013dee60,r28,r28
000120e0 7f 26 cb 78 or param_4=>s_PDIPFS_013dfb00,r25,r25
00a73160 4b ff fe ed bl FUN_00a7304c
00a7316c 94 1d 02 38 stwu r0,0x238(r29)
13dde10 - "N6PDISTD24RuntimeResourceInstanceTIPvEE" (null terminated)
13dde38 - "N6PDISTD21RuntimeResourceValueTIPvEE" (null terminated)
Edited:
000120a0 38 60 04 a0 li param_1,0x4a0
000120d8 38 88 e3 08 subi param_2,param_6,0x1cf8
000120dc 38 a8 e3 30 subi param_3,param_6,0x1cd0
000120e0 7d 06 43 78 or param_4,param_6,param_6
00a73160 48 00 4e d5 bl PDIPS3::FileDeviceCellFS::FileDeviceCellFS
00a7316c 94 1d 04 98 stwu r0,0x498(r29)
13dde10 - "/dev_hdd0" (null terminated)
13dde38 - "/game/BCES00569/USRDIR/direct" (null terminated)
BCUS98114
Original
000120a0 38 60 02 40 li param_1,0x240
000120d8 7f 44 d3 78 or param_2=>PTR_s_KALAHARI-37863889_017cc738,r26,r26
000120dc 7f 85 e3 78 or param_3=>s_BCES-00569_013dee60,r28,r28
000120e0 7f 26 cb 78 or param_4=>s_PDIPFS_013dfb00,r25,r25
00a73160 4b ff fe ed bl FUN_00a7304c
00a7316c 94 1d 02 38 stwu r0,0x238(r29)
13dde90 - "N6PDISTD24RuntimeResourceInstanceTIPvEE" (null terminated)
13ddeb8 - "N6PDISTD21RuntimeResourceValueTIPvEE" (null terminated)
Edited:
000120a0 38 60 04 a0 li param_1,0x4a0
000120d8 38 88 e3 28 subi param_2,param_6,0x1cd8 // param_6 stores 0x13dfb68h
000120dc 38 a8 e3 50 subi param_3,param_6,0x1cb0 // param_6 stores 0x13dfb68h
000120e0 7d 06 43 78 or param_4,param_6,param_6
00a73160 48 00 4e d5 bl PDIPS3::FileDeviceCellFS::FileDeviceCellFS
00a7316c 94 1d 04 98 stwu r0,0x498(r29)
13dde90 - "/dev_hdd0" (null terminated)
13ddeb8 - "/game/BCUS98114/USRDIR/direct" (null terminated)
BCJS30001
Original
0001209c 38 60 02 40 li param_1,0x240
000120d4 7f 44 d3 78 or param_2=>PTR_s_KALAHARI-37863889_017cc738,r26,r26
000120d8 7f 85 e3 78 or param_3=>s_BCES-00569_013dee60,r28,r28
000120dc 7f 26 cb 78 or param_4=>s_PDIPFS_013dfb00,r25,r25
00a73160 4b ff fe ed bl FUN_00a7304c
00a7316c 94 1d 02 38 stwu r0,0x238(r29)
13dde10 - "N6PDISTD24RuntimeResourceInstanceTIPvEE" (null terminated)
13dde38 - "N6PDISTD21RuntimeResourceValueTIPvEE" (null terminated)
Edited:
0001209c 38 60 04 a0 li param_1,0x4a0
000120d4 38 88 e3 38 subi param_2,param_6,0x1cc8 // param_6 stores 0x13dfad8h
000120d8 38 A8 e3 60 subi param_3,param_6,0x1ca0 // param_6 stores 0x13dfad8h
000120dc 7d 06 43 78 or param_4,param_6,param_6
00a73160 48 00 4e d5 bl PDIPS3::FileDeviceCellFS::FileDeviceCellFS
00a7316c 94 1d 04 98 stwu r0,0x498(r29)
13dde10 - "/dev_hdd0" (null terminated)
13dde38 - "/game/BCJS30001/USRDIR/direct" (null terminated)
Extracted game files go under USRDIR as such that /dev_hdd0/game/BCES00569/USRDIR/direct/font/vec/fontset_US.txt is valid. Base game contents must be extracted (GT.VOL), then update contents (PDIPFS) extracted ontop of it.
Warning
You may need to move some files from specdb/GT5_JP3009 to specdb/GT5_JP3010 if you get a crash.
Files that need to be copied:
specdb/GT5_JP3010/GENERIC_CAR_INFO.dbt
specdb/GT5_JP3010/BRAKECONTROLLER.dbt
specdb/GT5_JP3010/ASCC.dbt
specdb/GT5_JP3010/TCSC.dbt
specdb/GT5_JP3010/DISPLACEMENT.dbt
specdb/GT5_JP3010/INTERCOOLER.dbt
specdb/GT5_JP3010/NOS.dbt
specdb/GT5_JP3010/BOOST_CONTROLLER.dbt
specdb/GT5_JP3010/INDEP_THROTTLE.dbt
specdb/GT5_JP3010/TIRESIZE.dbt
specdb/GT5_JP3010/TIREFORCEVOL.dbt
specdb/GT5_JP3010/GENERIC_ITEMS.idi
specdb/GT5_JP3010/ALLOW_ENTRY.dbt
FSRoot (GT6)¶
FSRoot is a method of running the game that allows editing the game files in real time by streaming files from your PC, And drastically helps modding and testing much more quickly. To publish mods continue on with the packing section of Volume System.
Requirements:
- GT6 (FSRoot is only supported in GT6)
- A PS3 with the REBUG 4.84 D-REX CFW is required
- Kernel converted to DEX
- EBOOT converted to Debug
- PS3 SDK available and installed on your PC (if no emulator).
The requirements are a bit tedious to set-up, but all the more worth it.