15 октября 2012
| ||||||
25 сентября 2012
| ||||||
4 ноября 2010
| ||||||
5 декабря 2007 Недавно я начал исследование и восстановление исходного кода системной библиотеки libgpu. Я решил выложить то, что успел сделать. Остальную часть доделывать нет необходимости, потому что там нет ничего интересного. Также от старых сценеров мне стало известно, что у Sony произошла утечка исходного кода libgpu и ещё некоторых библиотек. Именно на исходниках libgpu было основано описание GPU от K-Communications, и в последствии - gpu.txt от Doomed/Padua. Что интересного найдено в libgpu: Установленный бит 11 в Texture Page ID, если координата Y >= 512. |F E D C B A 9|8 7|6 5|4 |3 2 1 0| |0 0 0 0 ? 0 0|tp |abr|ty|tx |Видимо используется для GPU у которых 2 мегабайта VRAM (размер видеобуфера 1024x1024), например у ZN1 или Namco System 11 (аркады на основе железа PSX). В исходниках GPU-плагина Pete Bernert также есть упоминание и о некоторых других полях, в частности недокументированный и не используемый в libgpu "Sprite Mirroring". Вызовы libgpu, которые работают с аппаратными регистрами. В библиотеке libgpu с регистрами работает единственный модуль - sys.obj, в нем находятся основные вызовы для управления GPU. Конкретнее (список не полный): ResetGraph - записывает команды сброса в GP1. DrawSync - осуществляет работу с GPU DMA. SetDispMask - записывает команду в GP1 для включения экрана. DrawPrim - выполняет примитив путем записи через IO, в регистр GP0. Рисование примитивов GPU происходит двумя способами - через обычные записи в GP0 (медленный способ) и через GPU DMA. DMA пересылки становятся в программную очередь, организованную libgpu (GPU Queue, длина очереди 64). Если очередь не успевает выполниться за 240 VSync, то происходит GPU Timeout (выводится сообщение, очередь очищается и отменяется DMA-пересылка). Выполнение очереди (и следовательно отрисовка) происходит после вызова DrawSync. Отдельного потока для обновления очереди не существует. Название регистра GP1 - "stat", упоминается в сообщении GPU timeout. Значит в doomed приведено правильное название и официальное имя регистра GP1: "GPU Status Register". Вот такое расследование :) То же касатется регистров DMA. Их названия упоминаются как: "chcr", "madr". Полный сброс GPU: GPU_DMA_CHCR = 0x0401 DMA_PCR |= 0x0800 GP1 = 0x00000000 GP1 = 0x09000001 (Только если версия GPU полученная с помощью команды 0x10000007 = 2) Отменить все операции рисования и очистить командный буфер: GPU_DMA_CHCR = 0x0401 DMA_PCR |= 0x0800 GP1 = 0x02000000 GP1 = 0x01000000 Включение экрана: GP1 = 0x03000001 Выключение экрана: GP1 = 0x03000000 Это исследование является предварительной работой над эмуляцией GPU: Скачать исходник libgpu. Также я обновил раздел Download несколькими патентами Sony на PSX. | ||||||
1-2 ноября 2007
| ||||||
18-23 октября 2007
| ||||||
10 июля 2007 Краткое пособие по хаку PSP: Как загружается PSP? - В центральном процессоре PSP Allegrex есть встроенный (embedded) бутром, который записывается в память после RESET. - Этот маленький загрузчик в свою очередь загружает вторую ступень, а потом стирается. Эти два шага загрузки препятствуют попыткам сдампить начальный загрузчик. - Вторая ступень загружает ядро (kernel), которое представляет собой кучу .PRX файлов, расположенных во флеш-памяти (т.н. Firmware). Вторая ступень тоже находится во флеш памяти, причем дублируется аж 10 раз. - Затем если в привод вставлен UMD, то загружается диск, иначе загружается оболочка ("VSH"). Что такое .PRX? PRX (PSP Relocateble Executable) - это модули ядра, аналог виндовым DLL. Каждая .PRX импортирует несколько системных вызовов. Каждый вызов имеет свой идентификационный номер и имя, например: 0xEB092469 sceIoDclose 0x54F5FB11 sceIoDevctl 0xB29DDF9C sceIoDopen 0xE3EB004C sceIoDreadВнутренне PRX представляют собой слегка измененные ELF-файлы. (а ELF-ы являются индустриальным стандартом для исполняемых файлов и динамических библиотек). В программе системный вызов вызывается инструкцией Syscall. Как устроена прошивка PSP? Прошивка PSP записывается во флеш-память (NAND), которая состоит из двух банков по 16 Мб (всего 32 Мб). В файловой системе эти устройства называются flash0: и flash1: На flash0 распологаются шрифты, PRX-модули ядра, сертификаты и оболочка VSH. На flash1 распологаются всякие настройки оболочки и прочая хрень. Как происходит обновление прошивки PSP? Прошивка - это специальный файл с расширением PBP. Вообще PBP используется для разных программ, в нем находятся PNG-картинка, музыка и задний фон для отображения в оболочке + сама программа состоящая из двух файлов: "PSP" и "PSAR". Можно сказать что PBP - это "дистрибутив". Конкретно в EBOOT.PBP, находится программа прошиватель (PSP) и данные для прошивки во флеш-память (PSAR). Данные для прошивки (PSAR) - это зашифрованные PRX-модули и другие данные, которые записываются вместо старых в flash0. flash1 не изменяется при прошивке, так как в этом нет необходимости (хотя это может измениться со временем, всё зависит от программы прошивателя). Примечание: Расшифровка содержимого PSAR-файла производится специальным чипом ("KIRK"), который умеет аппаратно вычислять SHA/AES и выполнять шифрование/сжатие. Точной информации по этому чипу на данный момент нет. Дополнительная информация находится на сайте Hitmen: - Подборка PDF - Yet Another PSP Documentation | ||||||
6 марта 2006 Появился новый эмулятор PlayStation, который не использует плагины PSEmuPro - psX. Домашняя страница эмулятора: http://psxemulator.gazaxian.com | ||||||
18 января 2006 Документация на PlayStation 2 в сети: - Wikipedia - PlayStation2; - Wikipedia - Emotion Engine (EE); - сравнение PS2 и PC; - хорошее описание устройства EE и PS2; - ещё про устройство EE; - сайт MIPS, регистрация бесплатная; - неофициальный FAQ по VU; - сайт PS2DEV-коммунити из IRC канала #PS2dev (IRC); - патент США 6,807,620 - "Игровая система с графическим процессором"; Также по ключевым словам "VU User's Manual" +pdf (набирать именно в кавычках) в Google можно найти официальную документацию (на EE, VU и GS). | ||||||
26-28 июня 2003 Мой динамический рекомпилятор, наконец-то стабильно заработал. Благодаря этому скорость эмуляции возросла примерно в 10 раз. В некоторых играх ещё остались кое-какие проблемы со звуком, но в целом эмулятор вполне стабилен. Из всех моих игр НЕ запустились только FF9 и MGS. Как и раньше, для правильной работы, нужны PSEmu-плагины и BIOS (scph1001.bin). На слабых машинах желательно включить frame skipping и отключить frame limit в GPU плагине. Скачать HLPSE 0.06 | ||||||
1 июня 2003 Появилась заплатка, которая позволяет устранить баг с Вот список того, что работает более-менее стабильно : | ||||||
31 мая 2003 Два этих скриншота говорят сами за себя : Правда, не всё так идеально в действии, как на картинках. Скачать новую версию эмулятора, вместе с плагинами. | ||||||
27 мая 2003 Главная новость - заработала Скачать эмулятор. | ||||||
26 мая 2003 Я наконец-то доделал VSync(). Ещё спасибо RomikB за то, что он нашёл пару ошибок в предыдущей beta 1.1. Новая версия содержит все функции, причем со 100% совпадениями на опкодах! Скачать финальную libetc 1.2. | ||||||
24-25 мая 2003 Раздел скринов пополнился несколькими экземплярами из моего экспериментального низкоуровнего эмулятора. Процент запускаемых демок пока не велик, но уже запускаются самые известные демки от HITMEN и DLCM-demo. Также запускаются заставки у некоторых игр =) Например Скачать эмулятор. | ||||||
20-30 апреля 2003 В связи с тем, что у меня накопился огромный материал по reverse engineering'у на PSX, я решил создать новый отдельный сайт, посвященный восстановлению исходных кодов BIOS и библиотек - На данный момент в завершающей стадии находится библиотека libetc. Компиляция дает почти 100% совпадения по опкодам - результат : libetc версии 1.1 можно скачать здесь. | ||||||
18 марта 2003
| ||||||
10-20 декабря 2002 В связи с непредвиденными обстоятельствами проект переезжает с ROMOV.NET. Новый адрес пока не известен, но скорее всего это будет PSXDEVRU.SOURCEFORGE.NET. На базе TEST был разработан новый эмулятор PSX совершенно иного типа, чем ePSXe или PCSX - HLPSE. Более подробно об архитектуре HighLevel PlayStation Emulator (HLPSE) можно узнать здесь. На данный момент готова версия 0.01 - она будет open source. | ||||||
4-9 декабря 2002 Сегодня я решил выложить три интересных "релиза": это эмулятор, дизассемблер и исходники библиотеки LIBETC.LIB.
Я надеюсь, что кому-то понадобятся эти вещи, и я буду рад услышать какие-нибудь отзывы или предложения. | ||||||
31 октября 2002 Удивительно, но TIMGRAB, написанная за пол-часа, ещё может и глючить! Обновление лежит там же. Новая версия успешно выдирает все картинки из любого файла, и даже больше ;) | ||||||
30 октября 2002 Появилась полезная утилита, для выдирания картинок из PSX EXE-файлов. Я не пробовал выдирать картинки из каких-нибудь игровых файлов, но в принципе, программа позволяет это делать. См. TIMGRAB в download. | ||||||
20-24 октября 2002 Наконец хоть что-то заработало! На нашем совместном эмуляторе удалось запустить DeadLine Caught Me Demo! Правда без GTE... Автоматически заработал PRINTGPU. Все эти демки можно скачать из download, а посмотреть полученные результаты - в скринах. | ||||||
18 октября 2002 Добавлен интерфейс плагинов PSEmuPro, в виде заголовка (.h-файла). скачать. Обновлена документация (информация по эмуляции printf(). wow!). Также стало известно, как програмным путем определить модель PSX (PAL или NTSC). | ||||||
13 октября 2002 Обновлено описание памяти PSX (не без помощи RomikB). Ведутся работы по созданию "умного" дизассемблера (сам создает структуру EXE-файла, удаляет ненужные метки, поддержка синтетических инструкций, а также распознование библиотечных вызовов). | ||||||
1-3 сентября 2002 Happy Birthday to PSXDEV.NAROD.RU =) Проекту исполнился один год. Новый год приготовил один сюрприз: Всем, кому нужен PsyQ, Yaroze SDK, официальные библиотеки и документация по PSX, качают её отсюда: http://www.psxdev.devilnet-uk.net а также три скрытых: http://www.psxdev.devilnet-uk.net/docs/OS.zip http://www.psxdev.devilnet-uk.net/docs/Dataconv.zip http://www.psxdev.devilnet-uk.net/docs/Hardware.zip Учтите, что в ближайшее время халяву могут прикрыть. Также: исправлена инфа по таймингу, но все равно это не окончательный вариант. Исправлено и дополнено описание памяти. И наконец, мне стало понятно, как подключить PSX к компу. | ||||||
25 июля 2002 Обновил дебагер (до версии 1.3). Была добавлена возможность поиска системных вызовов. Поддержка железа - отсутсвует. см. в разделе DOWNLOAD. Обновил документацию. | ||||||
11 июля 2002 Сегодня я купил PSX... | ||||||
3-7 июля 2002 Закончилась сессия, ура, и еще один учебный год. На конец то! С командой ничего не получилось -- сработало правило: хочешь что-то сделать, сделай это сам ;) Обновлен раздел KERNEL CALLS. в раздел DOWNLOAD добавлена хакнутая BIOS SHELL, в виде PS-X EXE. Добавлено описание прерываний и тайминга PSX. | ||||||
4 июня 2002 Сайт переехал на ROMOV.NET я надеюсь, что это событие изменит к лучшему отношение к отечественной ;) эму-сцене и PSX-сцене в частности. | ||||||
14 апреля 2002 Давно не было хороших новостей... Похоже скоро проект PSX обретет команду. И следовательно можно будет ожидать первого российского эмулятора Sony Playstation. В настоящее время ведутся работы по усовершенстованию ядра и создание дружественного пользовательского интерфейса. Также появился плагин-support. на сайте E}|{'а можно скачать его новый софтверный GPU-плагин. | ||||||
22 февраля 2002 Adri опубликовал исходники своего эмулятора. Только почему-то без DynaRec :[ Скачать их можно с его сайта. Только чтобы их откомпилить - нужен нелюбимый мной DJ Delorie C++ с пакетом RSXNTDJ. При просмотре исходного кода выяснились две вещи - 1) улучшить еще можно очень много, и 2) - на аргентинских клавиатурах отсутствует кнопка TAB ;) | ||||||
1 февраля 2002 Родился Rush. Подробности смотри тут. GPU-плагин тоже неплохо поживает (точнее уже доделан, осталось только сделать поддержку текстур (всего то...)). В любом случае приоритет проекта Rush теперь гораздо выше, чем GPU :) И GPU теперь лежит в пыльном углу. У Adri большие проблемы, ведь он живет в Аргентине... Поэтому, по его словам, исходники вряд-ли будут открыты в ближайшее время. Однако, на данный момент, существуют несколько эмуляторов с открытым кодом - PCSX, PSinex и FPSE. Причем первый - PCSX - довольно неплохо (но медленно) эмулирует PSX, и код написан по-человечески.. | ||||||
14 января 2002 Adri решил сделать свой эмулятор OpenSource, но исходники почему-то не выложил (буду ждать!)... Я не долго думая решил забить на ядро эмулятора - зачем делать то, что лучше сделать уже нельзя? И поэтому я тоже отдаю свои сурсы на всеобщее растерзание. А сам... сам я надумал писать GPU-плагин для ядра :) Причем под Glide :))) Первые наработки уже есть - плагин жмет 600 FPS при вращении треугольников, и 400-700 FPS на линиях и спрайтах.. | ||||||
25-28 октября 2001 Хорошая новость - заработал GPU. Правда совместимость с плагинами - хреновая, поэтому работает только под Glide. Я думаю скоро можно будет увидеть первые скриншоты. | ||||||
10-20 октября 2001 После того, как я сравнил скорость работы моего интерпретатора с реальной PSX - меня ошарашили результаты: интерпретатор в 80-100 раз медленнее, чем консоль! После недельной оптимизации результаты стали получше, но все равно МЕДЛЕННО... Начал HLE, а заодно и реверсинг BIOS. CPU плагин я пока оставил в покое. | ||||||
1 октября 2001 Полностью перевел весь GUI на плагины. Бедный AdriPSX... я разодрал его на диалоги, как Моська - грелку:) Надеюсь, Adri не очень обидется. | ||||||
20-30 сентября 2001 Сделал поддержку плагинов PSEmuPro. Таким образом уже работают: видео, звук, CDROM и джойстик. Непосредственно, всё это хозяйство я пока не тестил, так как... ...начал производить перевод GUI, динамической рекомпиляции и HLE в систему плагинов - PSEmuProEx. Вот, если кому надо, мой PSX-дебагер. | ||||||
10-20 сентября 2001 Закончил полностью интерпретатор и отладочную консоль (ну остались кое-какие косметические недочеты). | ||||||
1-3 сентября 2001 Сайт создан. wew! Начал работу над интерпретатором PSX. Работает всё жутко медленно, глючит - страшно, и вообще никуда не катит. |