Разработка и ромхакинг > Ромхакинг
PlayStation instructions generator.
Mr2:
Программа выдаёт инструкции в машинном представлении.
PSIG v0.2
Добавлена генерация из файла в файл.
Подправлены условные переходы.
PSIG v0.3
Исправлен порядок регистров в команде сравнения.
Увеличено колличество допустимых строк, добавлена обработка превышения лимита.
Инструкции.
О PSX.
babulya:
Mr2, а для чего это все надо? :?
Mr2:
--- Цитата: babulya от 02 Ноябрь 2012, 17:51:53 ---Mr2, а для чего это все надо? :?
--- Конец цитаты ---
Ну например в игре есть код стрельбы из пистолета:
--- Код: ---sll $v0, $s1, 2
lw $s2, 0($v0)
li $v0, 0x11
jal sub_6D2A0
sw $v0, 0($s7)
move $s5, $0
sll $v0, $s1, 2
sw $s5, 0($v0)
lw $v0, 0x18($s7)
addiu $s1, 1
bne $s1, $v0, loc_3E750
li $v0, 0xC6090
srl $s1, $v0, 2
--- Конец кода ---
Ты хочешь заменить его на стрельбу из базуки:
--- Код: ---addiu $sp, -0x18
lui $v0, 0xC
lw $s1, dword_C60E8
li $v0, 0xC60E0
srl $v0, 2
sw $ra, 0x18+var_8($sp)
jal sub_3E6F0
sw $v0, 0x18($s7)
lw $ra, 0x18+var_8($sp)
nop
jr $ra
addiu $sp, 0x18
--- Конец кода ---
Пишешь код базуки, но текст PSX не поймёт, тут в дело и вступает PSIG! :wow:
Кормишь PSIG текстом, а он тебе выдаёт кучку машинных команд, которые PSX должна скушать и не поморщиться.
Griever:
Чем spAsm плох?
Mr2:
--- Цитата: Griever от 05 Ноябрь 2012, 10:15:11 ---Чем spAsm плох?
--- Конец цитаты ---
Я не умею пользоваться консольными программами. :blush:
r57shell:
Печально.
Mr2:
--- Цитата: r57shell от 05 Ноябрь 2012, 13:31:36 ---Печально.
--- Конец цитаты ---
Да, не расстраивайся! :D
Есть же PSIG. :wow:
UltraFatalSlash:
Когда предъявишь первые результаты своей деятельности в этом ПСИГе?) Желательно на примере МК))
Mr2:
--- Цитата: UltraFatalSlash от 05 Ноябрь 2012, 18:55:54 ---Когда предъявишь первые результаты своей деятельности в этом ПСИГе?) Желательно на примере МК))
--- Конец цитаты ---
Дело не только в PSGI, нужно вникнуть в работу с графическим процессором.
Mr2:
PSIG v0.4
Добавлены некоторые функции компилятора:
Константы, переменные, метки, установка начала кода и переменных.
Так как в код было внесено много изменений, требуется углублённое тестирование.
PSIG v0.4.1
Информация о неизвестной ошибке заменена на известную - возникала при проверке сдвигов hi/lo.
Исправлена ошибка в ключевом слове "variables".
Установлены ограничения для начала кода и переменных.
Размер кода и переменных ограничен памятью консоли.
Добавлено сообщение о неверном втором регистре в инструкциях загрузки и сохранения.
Изменена очистка сообщений об ошибках.
Добавлен сдвиг "high data" без увеличения старшей части: _hd.
Добавлена очистка code start/variables.
Исправлена проверка меток меток.
Добавлено сообщение об ошибке при пропуске цифры в инструкции.
Изменена проверка ошибок в инструкциях загрузки и сохранения.
Добавлено сообщение об ошибке при генерации инструкции введённой с клавиатуры.
PSIG v0.5
Добавлены строки.
PSIG v0.6
Добавлена возможность создавать указатели.
Лимит строк увеличен до 500.
PSIG v0.6.1
Исправлена обработка инструкций загрузки и сохранения с отрицательным индексом.
В архиве файл(PSIG.xml) подсветки синтаксиса для Notepad++.
Mr2:
PSIG v0.7
Исправлено увеличение hi значения.
Исправлена адресация в инструкциях загрузки и сохранения.
Лимит строк увеличен до 2500.
PSIG v0.8
PSIG всунут в окно.
Добавлена генерация кода в исполняемый файл(PSX-EXE/SLUS/SLES ).
Доступен выбор In/Out файлов через браузер.
Обновлён файл подсветки "PSIG Highlighting syntax.xml".
Добавлено полное описание синтаксиса PSIG.( файл "Syntax.txt")
Ключевое слово "code start" заменено на "code_start".
Добавлено ключевое слово file_index.
Клавиша F1 - вывод информации о программе.
PSIG v0.9
Исправлено декодирование констант.
Лимит строк увеличен до 3500.
Мануал, из которого можно узнать для чего нужен PSIG.
Mr2:
PSIG v1.0
Изменён интерфейс программы.
Добавлена поддержка броска файла в окно программы.
Добавлен флаг генерации инструкции.
paul_met:
Что-то я не понял, а куда делся регистр R0? Почему генератор его не признаёт?
krocki:
Как я понял это типа конвертера ASM to HEX?
dedok179:
--- Цитата: krocki от 04 Июль 2017, 23:05:31 ---Как я понял это типа конвертера ASM to HEX?
--- Конец цитаты ---
Да. Почти как SPASM от Hitmen, только в графической оболочке с поддержкой новых WIN ОС.
Mr2:
--- Цитата: paul_met от 04 Июль 2017, 20:56:42 ---Что-то я не понял, а куда делся регистр R0? Почему генератор его не признаёт?
--- Конец цитаты ---
В архиве с программой идёт документация(Синтаксис.txt), там есть ответы на большинство вопросов. ;)
Нулевой регистр называется zr.
--- Цитата: krocki от 04 Июль 2017, 23:05:31 ---Как я понял это типа конвертера ASM to HEX?
--- Конец цитаты ---
Это типа ASM компилятора, но чуть до него не дотягивает по функционалу. :)
paul_met:
--- Цитата: Mr2 от 07 Июль 2017, 08:29:51 ---В архиве с программой идёт документация(Синтаксис.txt), там есть ответы на большинство вопросов.
Нулевой регистр называется zr.
--- Конец цитаты ---
В этой документации ни слова нет о том, что регистр R0 заменён на ZR и по каким соображением эта путаница затеяна.
paul_met:
Предлагаю внести некоторые изменения в интерфейс программы, дабы улучшить её удобство:
* Стоит избавиться от привязки к регистру букв. Ввод инструкций исключительно в верхнем регистре это как-то странно. Тоже самое касается и нижнего регистра для "регистров" (тавтология прям получилась).
* Думаю, дабы избежать путаницы, надо всё-таки вернуть название нулевому регистру R0, а не ZR. Всё-таки во все дебаггерах, да и в доке по Мипсам нулевой регистр называется именно R0.
* Удобнее будет вместо переключателя Reverse Instruction сделать отдельные кнопки для генерации прямого и обратного кода. Это быстрее и логичнее, чем переключение и повторная генерация.
* Раз информационное окно не очищается после очередной генерации кода, то нагляднее будет на против ранее сгенерированного кода выводить текст инструкции, чтобы история ввода была информативнее. Оставлять голый код в окне смыла особого нет. Тогда уж проще очищать окно.
* Не помешала бы и отдельная кнопка копирования последнего сгенерированного кода, чтобы лишний раз не выделять его и не копировать ручками.
Mr2:
--- Цитата: paul_met от 26 Апрель 2018, 20:10:32 ---Стоит избавиться от привязки к регистру букв. Ввод инструкций исключительно в верхнем регистре это как-то странно. Тоже самое касается и нижнего регистра для "регистров" (тавтология прям получилась).
--- Конец цитаты ---
Такой синтаксис совместим с дизассемблером Munch.
--- Цитата: paul_met от 26 Апрель 2018, 20:10:32 ---Думаю, дабы избежать путаницы, надо всё-таки вернуть название нулевому регистру R0, а не ZR. Всё-таки во все дебаггерах, да и в доке по Мипсам нулевой регистр называется именно R0.
--- Конец цитаты ---
r0-r31 это не имена регистров, это сами регистры. ;)
--- Цитата: paul_met от 26 Апрель 2018, 20:10:32 ---Удобнее будет вместо переключателя Reverse Instruction сделать отдельные кнопки для генерации прямого и обратного кода. Это быстрее и логичнее, чем переключение и повторная генерация.
--- Конец цитаты ---
+1
--- Цитата: paul_met от 26 Апрель 2018, 20:10:32 ---Раз информационное окно не очищается после очередной генерации кода, то нагляднее будет на против ранее сгенерированного кода выводить текст инструкции, чтобы история ввода была информативнее.
--- Конец цитаты ---
+1
--- Цитата: paul_met от 26 Апрель 2018, 20:10:32 ---Оставлять голый код в окне смыла особого нет. Тогда уж проще очищать окно.
--- Конец цитаты ---
В контекстном меню главного окна, есть ручная очистка.(если что)
--- Цитата: paul_met от 26 Апрель 2018, 20:10:32 ---Не помешала бы и отдельная кнопка копирования последнего сгенерированного кода, чтобы лишний раз не выделять его и не копировать ручками.
--- Конец цитаты ---
+1
paul_met, в ближайшее время обновлений не планируется :(, если так раздражает регистр инструкций и название нулевого регистра, можешь по старинке поправить их через хекс редактор. :D
paul_met:
--- Цитата: Mr2 от 27 Апрель 2018, 13:23:22 ---Такой синтаксис совместим с дизассемблером Munch.
--- Конец цитаты ---
Так пусть и остаётся совместим. Можно ведь сделать так, чтобы при вводе с клавы регистр игнорировался, а в окошке ввода инструкции всё отображалось как и раньше (имена инструкций в верхнем, регистры - в нижнем). Так будет проще, чем постоянно жонглировать шивтом или капсом.
--- Цитата: Mr2 от 27 Апрель 2018, 13:23:22 ---r0-r31 это не имена регистров, это сами регистры.
--- Конец цитаты ---
Я в курсе, просто привык, что в дебаггере PCSX порядковый номер нулевого регистра совпадает с его именем. А в No$PSX он просто нуль.
Навигация
Перейти к полной версии