| Разработка и ромхакинг > Ромхакинг и программирование |
| PSX хакинг. Сбивайтесь в стаи |
| << < (4/5) > >> |
| ViToTiV:
M3tro ™, тебя спасёт "psx-mode2.exe" - вставка файлов в образ без пересборки, файлы могут быть любого размера. погугли. |
| paul_met:
Что-то никак не могу найти в различных доках чёткое описание виртуального адреса VRAM. С обычной RAM понятно (0x80000000), а вот с какого адреса начинается видеопамять так и не вкурил. Как прочитать что-нить из видеопамяти? |
| MetalliC:
--- Цитата: paul_met от 23 Июнь 2017, 21:21:19 ---а вот с какого адреса начинается видеопамять так и не вкурил --- Конец цитаты --- ни с какого, в PSX процессор не имеет прямого доступа к VRAM. переброска данных туда-сюда делается коммандами GPU. |
| paul_met:
--- Цитата: MetalliC от 23 Июнь 2017, 21:30:35 ---ни с какого, в PSX процессор не имеет прямого доступа к VRAM. переброска данных туда-сюда делается коммандами GPU. --- Конец цитаты --- Ну в какую-то промежуточную область памяти должны записываться / читаться данные. Эмулятор PCSX дампит vram, но не хочет писать её обратно. Не понятно только на кой этот дамп нужен, если есть сейвстейты? |
| MetalliC:
я не эксперт по плойке, но вроде GPU DMA напрямую с CD-ROM данные брать не может. так что да - играм сперва нужно загрузить текстурки с диска куда-то в RAM, затем командой GPU + DMA закинуть в VRAM |
| Mr2:
--- Цитата: paul_met от 23 Июнь 2017, 23:40:50 ---Ну в какую-то промежуточную область памяти должны записываться / читаться данные. --- Конец цитаты --- GPU передаётся адрес пакетов примитивов. GPU Регистры. Два 32-х битных регистра ввода вывода: $1f801810 GPU Данные(примитивы) $1f801814 GPU управления/состаяния Тут всё о GPU. Для загрузки картинки в VRAM сделайте следующие шаги: 1 - Wait for the GPU to be idle and DMA to finish. Enable DMA channel 2 if necessary. 2 - Send the 'Send image to VRAM' primitive. (You can send this through dma if you want. Use the linked list method described above) 3 - Set DMA to CPU->GPU ($04000002) (if you didn't do so already in the previous step) 4 - Set D2_MADR to the start of the list 5 - Set D2_BCR with : bits 31-16 = Number of words to send (H*W /2) bits 15- 0 = Block size of 1 word. ($01) if H*W is odd, add 1. (Pixels are 2 bytes, send an extra blank pixel in case of an odd amount) 6 - Set D2_CHCR to continuous mode, mem -> GPU and dma enable. ($01000201) Note that H, W, X and Y are always in frame buffer pixels, even if you send image data in other formats. You can use bigger block sizes if you need more speed. If the number of words to be sent is not a multiple of the blocksize, you'll have to send the remainder seperately, because the GPU only accepts an extra halfword if the number of pixels is odd. (ie. of the last word sent, only the low half word is used.) Also take care not to use blocksizes bigger than $10, as the buffer of the GPU is only 64 bytes (=$10 words). Давно ещё, писал программу, для экспериментов с GPU командами. |
| paul_met:
Я не преследовал цель влазить в эти дебри рисования примитивов. Мне лишь нужно было найти способ вычислить чем кодируется текстура. Например, есть текстурки кнопок пада. Практически все их коды мне известны (L1 = E70B$, R1 = E70A$ и так далее). Неизвестны коды кнопок "start" и "select". Я так понимаю, эти коды является частью смещения, которое формирует адрес тектуры в видео памяти. Но так как мне неизвестен абсолютный адрес текстуры (только относительный в дампе vram), то это приводит в тупки. Я пробовал наугад перебирать коды (E70E$, E70F$ и т.д.). Но текстурки "start" и "select" находятся немного в другом месте vram и их коды, наверное, будут существенно отличаться. Тупо перебирать кучу кодов желания нет. Ещё загвоздка в том, что в тексте этих текстурок я пока не встречал. |
| MetalliC:
--- Цитата: paul_met от 24 Июнь 2017, 10:09:30 ---Но так как мне неизвестен абсолютный адрес текстуры (только относительный в дампе vram), то это приводит в тупки. --- Конец цитаты --- блин, ты в доки заглядывал вообще ? в GPU плойки не используются адреса VRAM, ни абсолютные ни относительные. вся врама рассматривается как одна текстура 512 линий на сколько-то там точек. и к примеру в команде загрузки данных из CPU RAM в GPU RAM указывается X, Y, ширина и высота "окошка" назначения в этой большой текстуре-врам, а не адрес/смещение как ты думаешь. |
| paul_met:
--- Цитата: MetalliC от 24 Июнь 2017, 18:18:02 ---и к примеру в команде загрузки данных из CPU RAM в GPU RAM указывается X, Y, ширина и высота "окошка" назначения в этой большой текстуре-врам, а не адрес/смещение как ты думаешь. --- Конец цитаты --- Тогда что означают эти коды (к примеру E70B$)? Для меня нифига не очевидно. |
| MetalliC:
что-угодно. ты хоть скажи что конкретно и для чего ты хочешь сделать, а то это совсем не очевидно. |
| paul_met:
--- Цитата: MetalliC от 24 Июнь 2017, 20:15:47 ---ты хоть скажи что конкретно и для чего ты хочешь сделать, а то это совсем не очевидно. --- Конец цитаты --- Так я же сверху описал, что нужно узнать коды текстурок "start" и "select", чтобы их можно было пихать в тело текста в игре так же, как и остальные кнопки. |
| UltraFatalSlash:
Может просто буквами их писать (нажми "старт" и т.д.)? Обычно в текстах игр эти две кнопки так и пишутся словами. :neznayu: |
| paul_met:
--- Цитата: UltraFatalSlash от 26 Июнь 2017, 15:13:51 ---Может просто буквами их писать (нажми "старт" и т.д.)? Обычно в текстах игр эти две кнопки так и пишутся словами. :neznayu: --- Конец цитаты --- Текстурами красивее, да и буквы латиницы не сохранилась (не писать же "селект"). Впрочем, я уже решил эту проблему, разобравшись с координатами примитивов. |
| RikuKH3:
Может это просто внутритекстовая псевдокоманда, которой присвоили процедуру вывода картинок посреди текста. Это не обязательно адреса. Могут быть совершенно рандомные числа, которые выбрали, чтобы они с кодировкой текста не пересекались. Например, первый байт в ней указывает на то, что нужно вставить изображение в текст, а второй - аргумент, какую именно (или наподобие такого же в битах). |
| VitGil:
У кого-нибудь получалось пересобрать образ Final Fantasy Tactics на PSX? Если да, то чем? |
| Томахомэ:
Как-то однажды после прочтения ефремовского "Часа Быка" возникла мысль о том, что можно было бы создать отличный глобальный мод-хак Xenogears (где исходная игра переделана до неузнаваемости, и напоминает скорее новую игру на том же движке, что и оригинал, нежели на него самого) по его мотивам. Благодарить за это нужно не только специфику ефремовского романа, который даже сам по себе может послужить неплохой литературной основой для игры, но и наличие у этих двух, казалось бы, таких разных произведений общего сюжетного хода - населённой людьми-дальними потомками землян планеты, на которую человеческий вид принесли в своё время экстренно посадившие на неё свой корабль космические путешественники, в условиях отрыва от остальной цивилизации скатившиеся по мере прихода в негодность техники в каменный век, после чего их потомкам пришлось фактически заново проходить путь исторического развития человеческой цивилизации с нуля. |
| SeregaZ:
дайте мне две девятиножки! :))) ну и коммунистического мыла там просто трындец... эти места "перематывал". кто-ж тогда знал, когда писалось произведение, что коммунизмъ не победит... |
| Томахомэ:
--- Цитата: SeregaZ от 27 Октябрь 2017, 14:43:16 ---ну и коммунистического мыла там просто трындец... --- Конец цитаты --- Ну, от него мод там, где потребуется, можно очищать. А заодно и реплики с диалогами подправить в сторону более "человеческого" языка. |
| Томахомэ:
Ресурсы, кстати, для мода Xenogears - в частности, карты локаций, или послужащие в дальнейшем основой для спрайтов в моде текстуры с моделей персонажей мульта, можно попросить у создателя не вышедшего пока мультеца по мотивам "Часа Быка". |
| SeregaZ:
о... не знал что кто-то пытался это дело снять :) попадалось где-то что "Рыцари 40 островов" был в разработке, но видимо все стухло. хотя я бы больше писался от восторга, если б "Лорд с Планеты Земля" сделали :) мульт или кино... пофих :) а еще докучи "Планета Смерти"... в глазах стоит сцена боя в периметре, где из под земли выбивался корень, из которого лезли мелкие вижжащие твари, а в окружении этих корней оказался главный герой и один местный. местный выкинул главгероя в единственное свободное от корня место, где аркой этот корень поднимался над землей, а вот сам прыгнуть следом уже не успел. сожрали. потом была гибель десантной группы в стиле Чужих - в пещере. но поскольку боян - уже не так интересно. в Чужих тема была раскрыта полностью :))) |
| Навигация |
| Главная страница сообщений |
| Следующая страница |
| Предыдущая страница |