Сообщение от hasherfrog
Когда из UMDgen делается экспорт списка файлов образа, в первой колонке идёт некое число. Что оно обозначает, никто не подскажет? Почему цифры такие "круглые"? :] Это количество байт? слов? двойных слов? Наборов по 16 байт? Килобайтов?
|
Некоторые разработчики игровых дисков указывают на расположение файлов по их строго закреплённым позициям.
Некоторые хитрые разрабы, прибегают к адресному расположению, т.е. обращение к файлу происходит по его жёстко указанному и заранее упакованному по этому адресу(ам) файлу(ам).
Если, к примеру файл EBOOT.BIN имел определённый размер, то после декриптовки он приобретает другой размер.
И когда мы его засовываем обратно в образ, то из-за того, что размер изменился, все последующие файлы сдвигаются при сохранении. Отсюда все смещения сдвигаются и диск становиться не читаемым, т.к. в таком диске разрабы установили привязку по LBA, а не по названию.
Адресация LBA - аббревиатура этого вида дисковой адресации отражает сущность используемых в ней дисковых адресов:
Logical Block Address, то есть «адрес логического блока» или «логический адрес блока».
Так вот, в данном случае один блок здесь рассчитывается из расчёта 2048 байт на блок. Один блок состоит из 4 секторов по 512 байт.
Один блок здесь - это минимальная единица исчисления и всё подчиняется этому правилу в UMD пространстве.
Это я расписал просто литературным языком, чтобы более-менее было понятно простому народу, поэтому просьба не цитировать со всякими опровержениями и сообщениями об ошибках.
Теперь перейдём из теории к практике...
Число в FileList - что оно означает?
Это число означает закреплённую позицию LBA для каждого файла, присутствующего в образе (точной копии байт-в-байт физического UMD-диска).
Если мы видим на экране монитора файл, имеющий конкретное название, например EBOOT.BIN, то это не значит, что этот файл прямо так же и записывается с этим названием.
Все названия папок и файлов записываются отдельно в определённое место на диске, а оттуда, по этим названиям идёт ссылка на сам файл по позиции LBA.
Поэтому обычно обращение к файлу идёт по его названию, т.е. идёт обращение к названию, которое записано отдельно в положенном ему месте, затем от этого названия идёт ссылка на его начальную позицию.
Но разрабы иногда хитрят и производят обращение к файлу не по его наименованию, а напрямую по позиции LBA, застраховываясь тем самым от подмены файлов в образе кем-либо. Ведь при подмене файлов, их позиции уже смещаются.
Это число LBA так же можно увидеть в UMDGen, который умеет высчитывать и показывать эти позиции (на примере "Gran Turismo"):
LBA показывает количество блоков. В данном случае, один блок равен 2048 байт. Отсюда, если нам необходимо вычислить расположение файла PSP_GAME/SYSDIR/EBOOT.BIN в образе (на диске), то нужно произвести математическое действие:
LBA 32-ой блок (как видно на 2-ом рисунке) умножить на 2048 = 65536.
Что мы видим на самом деле в хексе:
То есть эта цифра как раз указывает на количество блоков от начала образа (физического диска).
Поэтому FileList выполняет функцию закрепления всех начальных позиций файлов на свои исходные места, как они были до изменения размера одного из них (EBOOT.BIN при декриптовке в данном случае).