Разработка и ромхакинг > Ромхакинг и программирование
[NES] Мой NES ASM Компилятор
<< < (3/3)
CaH4e3:
хотелось бы послушать отзывы пользователей (если кто-нибудь вообще пытался этим "компилятором" что-то "скомпилять")
Ximial:
На счёт компилятора. Что касается как такового переделывания кода существующего рома, то я перспектив в этом не вижу. Хотя к примеру CaH4e3 утверждал в одной из тем что у каждого кода асма, есть отступ из FF, и можно было бы сместить код вниз и затерев FF-ы, но это не так. Код забит полностью без отступов. Чащще такие отступы могут принадлежать графике или пост-кодовому пространству в тестовых ромах. Куску кода в итоге надо было бы вернуть его старый размер. Т.е. Сделать и своё изменение и изменение какое то ещё. Которое нужно только для  возврата размера. Хотя подсчета размера кода до компиляции как функции и хотя рекомендованной у меня пока нет.

Добавлено позже:
Также в РОМ-е мною была обнаружена такая субстанция как data инфа. Т.е. Она несла константы и пока я определил ее как идущую не сплошную. Константы установлены в ней - не через асм. С чем она чередуется непонятно.
Изменение ее структуры изменяет характер рома. Которое даже может несколько повлиять на правила развития игры. Но это не изменение на уровне асма.
Это изменение которое легче.

Добавлено позже:
Для качественного изменения асма, я бы вообще определил что нужно пересобрать ром под новый плюсовой размер. И фактически видел такие ромы очень редко. Т.е. Ромы с одинаковой игрой и разного размера. Я например не считаю что возможно использовать пространство пустой графики под вставку кода через команды типа:
JMP и RET (ПК) в это место рома.

Добавлено позже:
Опять выявил отсутствие команд следующих но не как ошибку программы:
BMI $xx
BEQ $xx
BNE $xx
Сдесь один маленький икс означает одну однобайтную константу.

Добавлено позже:
Но это команды какие-то относительно адресные. Для их использования надо использовать отношение к реальным адресам. Они не транслируемо-подобны.
Такая же безполезность есть и в gameboy ассемблере (если интересно). 

Добавлено позже:
Константно они транслируются скажем дизассемблером в почти тоже самое, но только с константами в 1 байт.
Размер по памяти РОМа у них одинаковый, с их заменителями. Трансляцию кода они не смещают, и константного значения не меняют.
Но в виде передней константы у них идёт первая цифра адресного диапазона. И адреса обязательно того на котором они располагаются в данный момент.
И на это значение увеличена их константа.
supremacy:

--- Цитата ---О сколько нам открытий чудных Готовят просвещенья дух
--- Конец цитаты ---
  0_0
Ximial:
И что таки вы думаете  по поводу моего компилятора, сделанного по науке и технике? (Можно ли с этим поспорить?)
KykyPyky:
Ximial, лучше расскажите о себе. К примеру, какой язык  у вас родной?
Ximial:
Я его уже выучил. Я уже в перспективе. В горизонте. У меня и гражданство то и сразу.
Т.е. И знание языка и гражданство.

Добавлено позже:
А знаете ли что консольная версия моего компилятора, на не русифицированной системе может в связи с написанием в ней не английскими буквами надписей - в итоге через систему - проявить не то.

Добавлено позже:
Только вот предыдущий аватар почему-то «сам за себя не отвечал»... А он может быть полезным?
Berstain:
Чтиво занимательно.
Перевод сбоит машинный?
Подозрительно.

krocki:
Ximial, Тебе надо написать гайд, типа мнемоники, только на понятном языке для юзеров\ламеров. ^_^ А то они так будут халявить\просить сделай то сделай это. <_<
Mr2:

--- Цитата: krocki от 15 Ноябрь 2018, 19:09:42 ---А то они так будут халявить\просить сделай то сделай это. <_<

--- Конец цитаты ---
Ага, как с читами, ты всех выучил, и остался без работы. :lol:
Ximial:
У другой нации, по-моему эта работа. Хотя путать их модно. А выводы... (не спрашиваю).

Добавлено позже:
В итоге, как надо делать, - мне известно, а с остальным проблемы.

Добавлено позже:
Berstsin: Если идти по основному квесту, то там трансляционный, основной для данного проекта модуль - длинный и дилетантский.
Аж заглядывать на предмет педантичности - не по себе чтоб сразу.
krocki:
Лучше кто нибудь конвертер сделал PSX(Mips) to HEX... ^_^
Ximial:
Сильно ничего не изменил. Как основное добавил полный список ассемблерных кодов для работы.

Добавлено позже:
Добавил ещё одну команду, для правильного завершения текста программы, чтобы она тут же переходила в правильный РОМ.

Добавлено позже:
Как сказать, я бы мог и за другую платформу взятся. Хотелось то что проще. Денди - это основной тренд хака и массового выбора.

Добавлено позже:
Так, у меня был на очереди Ассемблер ПК стандартный, 16-разрядный, с поддержкой всех команд, но с ним сильно тяжело.
Команд во много раз больше, и я их обрабатываю не по «науке» а дословно.
Ximial:
Mr2: Хотя в принципе и предполагалась бы «работа», но например такой компилятор как Delphi на котором и написано, сам по себе, он таковую исключает. По моему согласно его лицензии, все его программные продукты и так обречены на бесплатность. Ибо наворотов в нем очень много, и имеется запрет на коммерческое использования его продуктов.

Добавлено позже:
К примеру писать на нем во много раз удобнее чем на любом другом аналоговом компиляторе данного языка. Это все упирается в использование скрытых модулей компилятора, облегчающие надписи кодов. Но сами по себе эти коды слишком замашистые.

Добавлено позже:
Я даже не говорю про то что программа как таковая бы, вообще ссылалась бы на внутренний язык хоть какой либо существующей платформы.

Добавлено позже:
Хотя законы данные и пишут в США, а сдесь перевод лицензии на русский. Но остального сдесь в отличае от США - тоже нет.
Yoti:

--- Цитата: Ximial от 16 Ноябрь 2018, 17:02:42 ---на любом другом аналоговом компиляторе данного языка
--- Конец цитаты ---
Ммм… Тёплые ламповые компиляторы…
Ximial:
Да и те чисто условно обозначенные. Но все равно идея не у нас-с.
Ximial:
Кто нибудь может подсказать значение команды: NOP? Как она работает, когда она посередине кода?

Добавлено позже:
И если знакомо то и команду или псевдо-команду: FF? Если она посередине кода?
krocki:

--- Цитата ---Как она работает, когда она посередине кода?
--- Конец цитаты ---
Покажи наглядный пример...а то...
NOP - Это код без действия... значение её это EA
FF - своего рода пустой код для заплаток\патчей.
Ximial:
Надо чем-то затереть команду но неопределенной длинны.
Я предполагаю заменить ее по размеру комбинацией команд или NOP или FF.
Делает ли NOP останов? А FF - какой нибудь сброс (регистров).
Если использовать несколько NOP подряд для затирания команды, по количеству ее размера в байтах?

Добавлено позже:
И ещё вопрос:
Я сделал функционирование отображения адресов (адресации) при компиляции с возможностью задания начальной точки отсчета, через команду исходника.
Вроде пока ее не обкатывал на ошибки при практической работе.
Адресация как таковая может сместиться в виде константного отображения отладчика, в связи с протеканием рабочего кода?
Если исходно она определилась как определенное начинание отсчета?


Добавлено позже:
И ещё... Может ли быть нужен программеру, пишущему программу от руки, вон тот байт слева, перед константой 16-разрядного адреса в отладчике эмулятора FCEUX? Поскольку я его не эмулировал. Вопрос в его надобности при программировании.
Он пишется вот так: 02:C323: а дальше транслит команды.

Добавлено позже:
И ещё: Адресация команд, должна начинаться с нулевого или первого адреса размещения?
Ximial:
Обновил версию. Но новые ошибки пока не проверял.

Добавлено позже:
В итоге добавил то о чем и писал:
1) При компиляции в поле текста, будет отображаться адрес расположения каждой команды. Чтобы его можно было найти, фиксировать и применять эти данные на команды переходов. Хотя не факт что они правильно считаются. Номерация адресов считается с нуля. Т.е. Считается что первая команда размещена в нулевом адресе.
Это при нумерации по умолчанию.
Если надо сместить отсчёт, то сделана новая команда.

2)Также добавлены две, вообщем одинаковые команды, для затирания смысла ассемблерной команды с сохранением ее размера.
Навигация
Главная страница сообщений
Предыдущая страница

Перейти к полной версии