| Разработка и ромхакинг > Ромхакинг и программирование |
| Вопрос. Алгоритм сжатия vram в PSX. |
| (1/1) |
| q0099:
Здравствуйте. На эмуляторе ePSXe сделал с помощю видеоплагина P.E.Op.S. 1.18b скриншот vram. Оказалось что там почти вся графика сжата. Подскажите что за алгоритм использован при сжатии и где есть описание алгоритма. Скриншот vram Дополнительный вопрос. В плагинах Pete's OpenGL2/D3D DX7 vram тоже хранится в сжатом виде? А если нет, то можно ли его просмотреть и с помощью каких программ это делается? (если тема уже существует, дайте ссылку или ключевые слова для поиска) |
| HoRRoR:
Сжатия тут никакого нет. Просто не вся графика находится там в том формате, в котором ты смотришь. А если бы было сжатие - ты бы графики не увидел вообще. Да и во VRAM сжатия не может быть в принципе, ибо оттуда графика берётся уже на вывод. Хотя, точных принципов работы с видеопамятью на PSX я не знаю. На GBA вон, например, что угодно можно творить с видеопамятью без всяких DMA, только писать надо по чётным адресам и парами байт. А хранится VRAM везде абсолютно одинаково. Более того, плагины к её хранению отношения не имеют совершенно - это лишь часть памяти приставки. |
| edgbla:
--------------------------------------------------------------------------- Texture --------------------------------------------------------------------------- A texture is an image put on a polygon or sprite. It is necessary to prepare the data beforehand in the frame buffer. This image is called a texture pattern. The texture pattern is located on a texture page which has a standard size and is located somewhere in the frame buffer, see below. The data of a texture can be stored in 3 different modes: * 15bitDirect mode. bit |0f|0e 0d 0c 0b 0a|09 08 07 06 05|04 03 02 01 00| desc.|S |Blue |Green |Red | This means each color has a value of 0-31. The MSB of a pixel (S)is used to specify it the pixel is semi transparent or not. More on that later. * 8bit CLUT mode, Each pixel is defined by 8bits and the value of the pixel is converted to a 15bit color using the CLUT(color lookup table) much like standard vga pictures. So in effect you have 256 colors which are in 15bit precision. Bit: |0F-08|07-00| desc:|I1 |I0 | I0 is the index to the CLUT for the left pixel, I1 for the right. * 4bitCLUT mode, Same as above except that only 16 colors can be used. Data is arranged as follows: Bit |F-C|B-8|7-4|3-0| desc. |I3 |I2 |I1 |I0 | 0 is drawn to the left взято из gpu.txt |
| q0099:
HoRRoR Ясно. Меня сбило с толку то, что часть графики нормально отображается. edgbla Пожалуйста, дайте ссылку на этот gpu.txt |
| edgbla:
Ну отображается норм только фрейм буфер в 24bit Direct: --------------------------------------------------------------------------- The Frame Buffer. --------------------------------------------------------------------------- 15bitDirect display. pixel| | bit |0f|0e 0d 0c 0b 0a|09 08 07 06 05|04 03 02 01 00| desc.|M |Blue |Green |Red | This means each color has a value of 0-31. The MSB of a pixel (M) is used to mask the pixel. 24bit Direct Display. The GPU can also be set to 24bit mode, in which case 3 bytes form one pixel, 1 byte for each color. Data in this mode is arranged as follows: pixel|0 |1 |2 | Bit |F-8|7-0|F-8|7-0|F-8|7-0| desc.|G0 |R0 |R1 |B0 |B1 |G1 | Thus 2 display pixels are encoded in 3 frame buffer pixels. They are displayed as follows: [R0,G0,B0] [R1,G1,B1] http://psx.rules.org/gpu.txt Добавлено позже: Не совсем ясно что тебе нужно конечно, просто раз текстуры индексные, нужно знать где расположены таблицы цветов, из скриншота vram этого явно не узнать ;) |
| q0099:
edgbla Большое, большое спасибо за ссылку - сижу, читаю. Таблицы цветов... Я ещё не очень освоился с терминологией и могу ошибаться, но судя по всему они под 24 битными изображениями. Остаётся только понять по какому принципу они расположены. |
| edgbla:
%) ты бы цель написал, если выдрать текстуры надо, то проще прямо с диска игры какой-нить прогой типа timgrab и ей подобными, ну это уже скорее к HoRRoR. Таблицы расположены по принципу - как Бог на душу положит :-D |
| q0099:
edgbla Не, я имею в виду именно этот случай. В нижнем левом углу - блок пикселей. Зачем всё это? Сначала было желание кое-какие спрайты вынуть, из другой игры, правда. Потом, когда не получилось, появилось желание узнать "а почему же получается?", "а как сделать так чтобы получилось?" Пользовался программой PSX Multi Converter Ver3.23. А есть ссылка на описание параметров запуска Timgrab.exe? На официальном сайте разработчика по Timgrab никаких упоминаний не нашёл, только две "новости" от 30 и 31 октября 2002. |
| edgbla:
хех, ну я вижу что палитры внизу, ну и что? перебирать все? у Timgrab.exe один параметр это файл в котором искать тим файлы, очевидно же. А вообще жди HoRRoR, он скажет пиши выдиралку сам :-D |
| HoRRoR:
--- Цитата: edgbla от 10 Март 2009, 13:07:29 ---А вообще жди HoRRoR, он скажет пиши выдиралку сам :-D --- Конец цитаты --- Я скажу - используй TimViewer. PSicture пропускает картинки, PsxMC я бы вообще только для видео/аудио советовал. А насчёт "таблиц цветов" - есть прекрасное всем понятное слово "Палитра", именно так переводится с английского Color Table. И зачем пугать товарища ссылками на спецификации, если на деле то всё на порядок проще? |
| edgbla:
ыыы, чего проще-то? я ответил на его вопросы, дал ему нужную информацию о представлении данных в видеопамяти psx, к чему какие-то левые выпады на меня? И вообще таблица цветов самое настоящее название, CLUT(color lookup table). |
| HoRRoR:
Товарищ похож на программиста или хакера? Ему твоя информация как китайская грамота. А всего-то хочет выдрать графику. Это как объяснять принципы фотосинтеза на вопрос о цвете листьев, вместо ответа "зелёные". |
| edgbla:
Ну вот назвал парня дауном :lol: Он ж сам сказал что интересно ему. ;) Ждём пока хозяин закроет темку. гы, ну или злой админ. |
| HoRRoR:
Кроме нас, "психов", существуют нормальные люди, не сведущие в программировании, области интересов которых несколько иные. Называть их даунами, хм, глупо. |
| q0099:
В общем всё, всем спасибо за предоставленные информацию и разъяснения. Было интересно немного узнать о том как работает PSX. В итоге, из того что узнал, могу сделать вывод что для вынимания графики по типу "хочу этого персонажа" годится именно использование vram - нету проблем со сжатием и прочими оптимизационными выкрутасами программистов. Минус - придётся караулить загрузку спрайтов в память и потом приводить их в нормальное состояние (конвертировать и перекрашивать). Если такие вещи буду делать в промышленных масштабах - напишу утилиту и обязательно выложу сюда. |
| edgbla:
Ну дерзай, только тут не утилита пожалуй нужна, в просто добавить в peopsSoft код дампа нужной текстурной страницы в какой-нить bmp, ессно чтобы нормально сдампить надо запоминать соответственно палитры, лучше вообще дампить при отрисовке, чтобы были все данные. |
| BoreS:
одну утилиту на все игры ты не напишешь, для каждой игры (почти) придётся писать свою утилитку :) всё зависит от разрабов, они между собой не советовались, когда делали игры и пихали графику в них. |
| q0099:
BoreS В том то и дело что графика вынимается не из данных игры, где она может храниться в собственном формате, да ещё и не один раз сжатая, а из vram приставки (или эмулятора) - там графика находится в стандартном виде (поправьте меня если я что-то не так понял). Правда, могут быть заморочки с вылавливанием момента подгрузки в память нужной графики, с перекрашиванием, с текстурами для трёхмерных моделей, да и программисты могут снова соригинальничать, но в целом этот метод надёжнее. edgbla Хм. А Пит предоставил исходники от пеопс? |
| edgbla:
Хех, ну заморочек во время подгрузки нету, подгрузилась текстура по дма и всего делов, анимацию если что так же по кадрам, больше ничего там особенного нету, повторю ещё раз, большими буквами чтоль писать... тебе надо дампить текстуры во время их непосредственного использования при отрисовке полигона/спрайта, т.к. в этот момент известно положение clut. Насчёт peopsSoft, ну ты что-то вообще лентяй, гугл бы тут очень помог: http://www.google.ru/search?hl=ru&q=peops+soft+source+download&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA+%D0%B2+Google&lr=&aq=f&oq= но если вдруг не осилишь то вот: http://sourceforge.net/projects/peops/ |
| Навигация |
| Главная страница сообщений |