Editing ISO.BIN.EDAT
Jump to navigation
Jump to search
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 1: | Line 1: | ||
== ISO.BIN.EDAT == | ==ISO.BIN.EDAT== | ||
This is an encryted container format, first step to work with it is to decrypt it <!--more info an internal links to other wiki pages needed--><br> | |||
After decryption we shoould refer to it as ISO.BIN.DAT (without the "E"... so the EDAT became a DAT) | |||
After decryption | |||
==ISO.BIN.DAT (decrypted)== | ==ISO.BIN.DAT (decrypted)== | ||
Line 51: | Line 49: | ||
! Cluster Nº !! Block Nº !! Offset !! Length !! Name !! Example !! Notes | ! Cluster Nº !! Block Nº !! Offset !! Length !! Name !! Example !! Notes | ||
|- | |- | ||
| rowspan=" | | rowspan="25" style="background-color:#DDDDDD;" | 0 <br /> '''Disc map header''' || rowspan="3" style="background-color:#DDDDDD;" | 1 || 0x0000 || 0x00C (12 bytes) || '''magic''' || PSISOIMG0000 || In "PSP Minis" It's NPUMDIMG ([[Environments|NP]] UMD Image) ..... probably another for "ps2 classics" (speculation) | ||
|- | |- | ||
| 0x000C || 0x004 (4 bytes) || '''section size''' || || Offset from the start of the PSISOIMG section to the next section<br>For uncompressed images this is usually 0x100000 + size of iso-image padded to 0x9300<br>If the disc contains CD-DA tracks then this number will also include all the ATRACK encoded audio that follows after the disk image. | | 0x000C || 0x004 (4 bytes) || '''section size''' || || Offset from the start of the PSISOIMG section to the next section<br>For uncompressed images this is usually 0x100000 + size of iso-image padded to 0x9300<br>If the disc contains CD-DA tracks then this number will also include all the ATRACK encoded audio that follows after the disk image. | ||
Line 57: | Line 55: | ||
| 0x0010 || 0x3F0 (1008 bytes) || ''padding'' || || | | 0x0010 || 0x3F0 (1008 bytes) || ''padding'' || || | ||
|- | |- | ||
| rowspan=" | | rowspan="2" style="background-color:#DDDDDD;" | 2 || 0x0400 || 0x010 (16 bytes) || '''disc id''' || _SLES_12345 || in games with several discs each disc has a different id | ||
|- | |- | ||
| 0x0410 || | | 0x0410 || 0x3F0 (1008 bytes) || ''padding'' || || | ||
|- | |- | ||
| rowspan="2" style="background-color:#DDDDDD;" | 3 || 0x0800 || 0x3FС (1020 bytes) || '''[[ISO.BIN.EDAT#Disc toc table|Disc toc table]]''' || variable || Table of content, like CUE sheet, supports upto 99 entries (102 entries total) | | rowspan="2" style="background-color:#DDDDDD;" | 3 || 0x0800 || 0x3FС (1020 bytes) || '''[[ISO.BIN.EDAT#Disc toc table|Disc toc table]]''' || variable || Table of content, like CUE sheet, supports upto 99 entries (102 entries total) | ||
Line 75: | Line 67: | ||
| rowspan="5" style="background-color:#DDDDDD;" | 5 || 0x1000 || 0x220 (544 bytes) || '''[[ISO.BIN.EDAT#Audio tracks table|Audio tracks table]]''' || || Datas of audio tracks (66-99). offset, size, and more | | rowspan="5" style="background-color:#DDDDDD;" | 5 || 0x1000 || 0x220 (544 bytes) || '''[[ISO.BIN.EDAT#Audio tracks table|Audio tracks table]]''' || || Datas of audio tracks (66-99). offset, size, and more | ||
|- | |- | ||
| | | 0x1220 || 0x0B4 (180 bytes) || '''[[ISO.BIN.EDAT#Game params table|Game params table]]''' || || <!-- doesnt makes sense to start using a block with a padding, i bet it was an unused area in the file/s i was looking at when i made this table --> | ||
|- | |- | ||
| 0x12D4 || 0x004 (4 bytes) || '''subchannel offset''' || 0x100400 || Offset to where subchannel data is stored. This is used with libcrypt. | | 0x12D4 || 0x004 (4 bytes) || '''subchannel offset''' || 0x100400 || Offset to where subchannel data is stored. This is used with libcrypt. | ||
|- | |- | ||
| 0x12D8 || 0x004 (4 bytes) || '''subchannel count''' || 0x178 || Number of subchannel blocks. Each block is 12 bytes. | | 0x12D8 || 0x004 (4 bytes) || '''subchannel count''' || 0x178 || Number of subchannel blocks. Each block is 12 bytes. Content is unknown. | ||
|- | |- | ||
| 0x12DC || 0x124 (292 bytes) || ''padding'' || || | | 0x12DC || 0x124 (292 bytes) || ''padding'' || || | ||
Line 156: | Line 148: | ||
| 0x08 || 0x04 (4 bytes) || '''unknown_0''' || || always zeroed | | 0x08 || 0x04 (4 bytes) || '''unknown_0''' || || always zeroed | ||
|- | |- | ||
| 0x0C || 0x04 (4 bytes) || '' | | 0x0C || 0x04 (4 bytes) || '''and more \o/''' || || encryption key | ||
|- | |- | ||
| style="background-color:#DDDDDD;" | Up to 98 || || || || || same structure than the previous entry | | style="background-color:#DDDDDD;" | Up to 98 || || || || || same structure than the previous entry | ||
|} | |} | ||
====Game params table==== | |||
There is a setting related with PS1 libcrypt protection in this area (located at <s>relative</s> absolute offset 0x12B0 for single disc or 0x16B0 in the first disc for Multidisc, lenght 0x4 little endian), see: [https://www.psx-place.com/threads/ps1-libcrypt-support-on-ps3-official-emus-research-thread.35836/page-7#post-316873 talk] | |||
Libcrypt in emulator is supported by supplying ready 16 bit key in little endian format (0xA371 in CTR example). | |||
List of keys can be obtained using [https://github.com/Red-J/LibcryptMagic-Word-Finder-PSX Libcrypt Magic Word Finder PSX] | |||
====Disc map table==== | ====Disc map table==== | ||
Line 207: | Line 203: | ||
====Subchannel data==== | ====Subchannel data==== | ||
This is data stored in separate .pgd in psar (0xED4 [0x12D4] in ISO header point to it if available), should be required only for games that use libcrypt protection (LC2 and higher). | This is data stored in separate .pgd in psar (0xED4 [0x12D4] in ISO header point to it if available), should be required only for games that use libcrypt protection (LC2 and higher). | ||
Header of decrypted file is FFFFFFFF | Header of decrypted file is FFFFFFFF FFFFFFFF FFFFFFFF, end of file is marked by FFFFFFFF 00000000 FFFFFFFF. | ||
Values are always 150 sectors lower than real disc sector (pregap?). Values are in little endian (sector only actually, others are 1 byte values) | Values are always 150 sectors lower than real disc sector (pregap?). Values are in little endian (sector only actually, others are 1 byte values). | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 215: | Line 211: | ||
|- | |- | ||
|- | |- | ||
| rowspan="9" style="background-color:#DDDDDD;" | 1 or 2? || Sector || 0x00 || 4 || || | | rowspan="9" style="background-color:#DDDDDD;" | 1 or 2? || Sector || 0x00 || 4 || || | ||
|- | |- | ||
| Track Number || 0x04 || 1 || | | Track Number || 0x04 || 1 || || | ||
|- | |- | ||
| Index || 0x05 || 1 || | | Index || 0x05 || 1 || || | ||
|- | |- | ||
| Pmin(relative) || 0x06 || 1 || || | | Pmin(relative) || 0x06 || 1 || || | ||
Line 237: | Line 233: | ||
|} | |} | ||
*More info: https://www.psx-place.com/threads/ps1-libcrypt-support-on-ps3-official-emus-research-thread.35836/page-13#post-318506 | *More info: https://www.psx-place.com/threads/ps1-libcrypt-support-on-ps3-official-emus-research-thread.35836/page-13#post-318506 | ||
*Unpacker able to extract that data: [[PS1_Emulation# | *Unpacker able to extract that data: [[Talk:PS1_Emulation#Psxtract]] | ||
== Minis ISO.BIN structure == | == Minis ISO.BIN structure == | ||
Line 427: | Line 423: | ||
=== Decrypting with PSL1GHT === | === Decrypting with PSL1GHT === | ||
* https://github.com/euss/psp_edat_decryptor (not my code, just git'ed it for convenience) | |||
* | * mirrors: [http://mir.cr/0XXBT99Z], [http://mir.cr/1SNVEH2D], [http://mir.cr/ZKZJFPET] | ||
* | |||
==About PS2 Classics== | ==About PS2 Classics== |