| Разработка и ромхакинг > Ромхакинг |
| Вопросы новичков |
| << < (5/22) > >> |
| Aleksey19:
Всем привет) народ подскажите как пользоваться отладчиком pSX emu, нужна полная информация, у кого может есть или ссылки, или сам может рассказать |
| Беларус:
Почему именно pSX? PsxIda уже заценил? |
| Aleksey19:
--- Цитата: perfect_genius от 06 Декабрь 2021, 01:17:29 ---Почему именно pSX? PsxIda уже заценил? --- Конец цитаты --- Я новичок в этом деле, не понимаю пока, хочу здесь разобраться |
| Беларус:
До PSX ещё не дошёл, но искал бы темы по ней тут. Даже Гугл направил на ЭмуЛенд: pSX 1.13 debugger. Учитывая опыт пользования GensIDA, порекомендую начать с PsxIda. Он должен оказаться лучше всех, но придётся привыкать к интерфейсу Иды. Благо что можно всё настроить. |
| Aleksey19:
perfect_genius, я посмотрел эту тему и там путного нет, на pcsx перекидывают, ладно спасибо будем пробовать psxida) |
| Selykreg:
--- Цитата: Cyneprepou4uk от 02 Декабрь 2021, 04:44:25 ---Selykreg, да, я и есть автор :) --- Конец цитаты --- Хоть где-то моё зрение и логика не подвели ^_^ --- Цитата: Cyneprepou4uk от 02 Декабрь 2021, 04:44:25 ---Selykreg, Советую перечитать https://vk.com/page-143731650_52348151 И пересмотреть домашнее задание 7 https://youtu.be/-qXYnXdOclU --- Конец цитаты --- Кай, спасибо, буду изучать дальше. Надеюсь, с "домашкой" справлюсь сам. --- Цитата: Cyneprepou4uk от 02 Декабрь 2021, 04:44:25 ---Selykreg, Во-вторых, просто вставив свой код где попало, еще не значит что он будет работать. Надо чтобы на него была какая-то ссылка, обычно это JSR или JMP. --- Конец цитаты --- Уже понял, что упустил это немаловажное условие :blush: --- Цитата: Миха42 от 02 Декабрь 2021, 08:48:01 ---Selykreg, мало того что как тебе уже написали выше про неправильное использование условия и то, что на данный код должен быть либо JMP либо вызов подпрограммы (JSR). Так по окончанию чтения процессором кода, он должен продолжить читать что-то далее, иначе будет остановлена его работа (зависание). В случае если ты использовал JMP на данный код, то в конце кода нужно так же вернуться к коду который будет исполняться после твоего вставленного. Если же ты использовал вызов подпрограммы (JSR) для вставки кода, то подпрограмму нужно обязательно закрыть по окончанию кода прописав в конце 60, тогда процессор достанет из стека прежний адрес где была вызвана подпрограмма и вернётся обратно исполнять код дальше. --- Конец цитаты --- Спасибо. Мне, двоечнику, ещё во многом предстоит разобраться ;) Блин, ну кто ж придумал общаться с 6502-м на таком языке o_0 Ладно, учу дальше. --- Цитата: Миха42 от 02 Декабрь 2021, 08:48:01 ---Selykreg,Правильно называть не в стек, а в аккумулятор. Стек это совершенно другое. --- Конец цитаты --- Да, спасибо за поправку. А то уже этот момент стал закрепляться в моём понимании. |
| Миха42:
--- Цитата: Selykreg от 07 Декабрь 2021, 10:46:38 ---Блин, ну кто ж придумал общаться с 6502-м на таком языке o_0 --- Конец цитаты --- Это не язык, а машинный код процессора. Писать можно и на любом языке, главное чтоб имелся ассемблер что преобразует код языка в машинный код данного процессора. Где-то уже попадался мне ассемблер с какого-то языка на nes. Но данный вариант подходит только если пишешь игру с нуля, или если у тебя есть исходники игры. В случае же чтоб изменить игру не имея ни чего кроме готового рома ни чего не остаётся кроме как ковырять машинный код в дизассемблере. ;) |
| Selykreg:
--- Цитата: Миха42 от 07 Декабрь 2021, 12:59:11 ---Это не язык, а машинный код процессора. Писать можно и на любом языке, главное чтоб имелся ассемблер что преобразует код языка в машинный код данного процессора. Где-то уже попадался мне ассемблер с какого-то языка на nes. Но данный вариант подходит только если пишешь игру с нуля, или если у тебя есть исходники игры. В случае же чтоб изменить игру не имея ни чего кроме готового рома ни чего не остаётся кроме как ковырять машинный код в дизассемблере. ;) --- Конец цитаты --- Спасибо, всегда путал ассемблер с...одним из вариантов языка программирования <_< Я в основном делал игры и программы в GM, там язык более-менее логичен. Порой смотришь в диз и понимаешь, что программисты- обособленная каста со своим мышлением, чуть-ли не алхимики 😨 :cool: Легче уж точно написать программу для игры с нуля. По делу. С кнопками ситуация прояснилась, уже сделал несколько хаков ромов с кнопками, причём в одном роме сделал по несколько комбинаций кнопок :wow:Разобрался более-менее с флагами и с тем, куда лучше скормить игре свою подпрограмму🍴 - вот эта ситуация чуть было не отбила моё желание обучаться. Минус - у меня сбился режим дня😴 💤 6502 - это ещё та сарделька в арбузном корпусе, и большой поклон тем, кто его освоил. Всем огромное спасибо, кто меня наставлял👋 Думаю, некоторые хаки стОит выложить на сайт. |
| GodKiller_222:
--- Цитата ---Думаю, некоторые хаки стОит выложить на сайт. --- Конец цитаты --- Думаю, не стоит маятся дурью, на сайте уже две раздутые темы из маминых хакеров, которые поменяли два байта в ром-е и исполнились величием. Перетерпите эту стадию и в будущем, возможно, вы действительно удивите всех)) |
| Nik Pi:
Доброго времени суток! У меня тут ещё один вопрос: Я решил покопаться в графике аркадных игр, но не понял, как именно просматривать тайлы :-\ Я открыл в Tile Molester Черепашек ниндзя, и..... Там какаой-то ужас 0_0 Я что только не пробовал, чтобы нормально просмотреть спрайты, какие только параметры не ставил, и всё равно не смог нормально настроить. Самые подходящие значения- 3 и 4bpp linear. Кто знает, как всё правильно сделать, и просмотреть, и отредактировать :neznayu: ? Буду очень признателен. Результаты моих поисков- внизу: |
| paul_met:
Похоже, что нужно изменить порядок байт (reverse-order). Первый и третий скрины, скорее всего - это 8bpp с меньшей в 2 раза шириной. |
| Sharpnull:
--- Цитата: paul_met от 19 Март 2022, 00:29:52 ---это 8bpp с меньшей в 2 раза шириной --- Конец цитаты --- Судя по MAME там 4bpp. Я пытался переставить по описанию и не получилось, не разбирался какой у MAME порядок битов. Для 963a28.h27 это "k052109" (https://github.com/mamedev/mame/blob/master/src/mame/drivers/tmnt.cpp), порядок такой: --- Цитата: https://github.com/mamedev/mame/blob/d8a7d884124e21780f72882ed86a17903ec5c6d9/src/mame/video/k052109.cpp#L136 --- --- Код: ---const gfx_layout k052109_device::charlayout = { 8,8, RGN_FRAC(1,1), 4, { 24, 16, 8, 0 }, { 0, 1, 2, 3, 4, 5, 6, 7 }, { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 }, 32*8 }; --- Конец кода --- --- Конец цитаты --- Структура: --- Цитата: https://github.com/mamedev/mame/blob/d8a7d884124e21780f72882ed86a17903ec5c6d9/src/emu/digfx.h#L128 --- --- Код: ---struct gfx_layout { u32 xoffs(int x) const { return (extxoffs != nullptr) ? extxoffs[x] : xoffset[x]; } u32 yoffs(int y) const { return (extyoffs != nullptr) ? extyoffs[y] : yoffset[y]; } u16 width; // pixel width of each element u16 height; // pixel height of each element u32 total; // total number of elements, or RGN_FRAC() u16 planes; // number of bitplanes u32 planeoffset[MAX_GFX_PLANES]; // bit offset of each bitplane u32 xoffset[MAX_GFX_SIZE]; // bit offset of each horizontal pixel u32 yoffset[MAX_GFX_SIZE]; // bit offset of each vertical pixel u32 charincrement; // distance between two consecutive elements (in bits) const u32 * extxoffs; // extended X offset array for really big layouts const u32 * extyoffs; // extended Y offset array for really big layouts }; --- Конец кода --- --- Конец цитаты --- Т. е., как я понял, для каждого тайла 8x8 пикселей строки идут по 32 бита подряд, но внутри строки каждые 8 бит подряд это по 1 биту для каждого пикселя. Но видимо я что-то не понял, потому что не получилось переставить для редактора тайлов. |
| Nik Pi:
Понятно... ...Что ничего не понятно :lol: Ладно, пойду дальше пробовать. А вообще, я где-то читал, что есть специальные график эдиторы, для аркадных игр, или мне кажется o_0 Ну, всё равно спасибо |
| paul_met:
--- Цитата: Nik Pi от 19 Март 2022, 01:38:15 ---Понятно... ...Что ничего не понятно :lol: Ладно, пойду дальше пробовать. А вообще, я где-то читал, что есть специальные график эдиторы, для аркадных игр, или мне кажется o_0 Ну, всё равно спасибо --- Конец цитаты --- Прикрепил бы этот файл (ы) для начала. Интересующиеся люди поковырялись бы. |
| Nik Pi:
--- Цитата: paul_met от 19 Март 2022, 11:24:10 ---Прикрепил бы этот файл (ы) для начала. Интересующиеся люди поковырялись бы. --- Конец цитаты --- EDIT: Все файлы находятся внутри архивов игр, которые можно скачать с сайта https://www.emu-land.net/arcade/mame/roms?act=showonly&id=8193 |
| paul_met:
Судя по всему, в этой игре используется какое-то удвоение разрешения по горизонтали, так как тайлы получаются по 4 пикеселя шириной. Ниже прикреплён самый вменяемый вариант отображения картинки. |
| Nik Pi:
О, спс Я то дурак думал, что все игры на аркаде по одному принципу ломаются, а открыл симпсонов- в режиме 2bpp Game boy всё нормально видно... может конами в черепахах пыталась так защиту от взлома сделать? ========= Вообще, как пересобрать аркадный ром? Ну распаковал я там файлы, перерисовал всё, вставил в архив с игрой, а оно не открывается... сделал другой архив- он его вообще не видит :-\ что делать? |
| Sibor:
У меня вопрос? Объясните хот примерно как в файтингах возможно сделать так чтобы вместо игрока управлял компьютер. В хаках мортал комбат видел такое. |
| krocki:
Sibor, Находишь адрес...значение 0 = CPU ... 1 = Player пример так... на ps1 игра smackdown было на сколько я помню. ^_^ значение может быть другим, но суть дела та же. |
| Беларус:
Sibor, т.е. ты хочешь бой компьютера против компьютера? Удивительно, не первый раз уже встречаю такой запрос. Как всегда, у каждой игры может быть индивидуально всё устроено внутри. Кроме варианта krocki может быть и вариант, что первый игрок как человек жёстко установлен в коде и опрашивается только второй игрок. Сам баловался так 10 лет назад, значение менял прямо в памяти игры, но можно и подправить код игры: Как называется такой хак Мортал Комбата? К какой игре хотел бы видеть такой хак? Такое можно провернуть в Cheat Engine. |
| Навигация |
| Главная страница сообщений |
| Следующая страница |
| Предыдущая страница |