На счёт компилятора. Что касается как такового переделывания кода существующего рома, то я перспектив в этом не вижу. Хотя к примеру CaH4e3 утверждал в одной из тем что у каждого кода асма, есть отступ из FF, и можно было бы сместить код вниз и затерев FF-ы, но это не так. Код забит полностью без отступов. Чащще такие отступы могут принадлежать графике или пост-кодовому пространству в тестовых ромах. Куску кода в итоге надо было бы вернуть его старый размер. Т.е. Сделать и своё изменение и изменение какое то ещё. Которое нужно только для возврата размера. Хотя подсчета размера кода до компиляции как функции и хотя рекомендованной у меня пока нет.
Добавлено позже:
Также в РОМ-е мною была обнаружена такая субстанция как data инфа. Т.е. Она несла константы и пока я определил ее как идущую не сплошную. Константы установлены в ней - не через асм. С чем она чередуется непонятно.
Изменение ее структуры изменяет характер рома. Которое даже может несколько повлиять на правила развития игры. Но это не изменение на уровне асма.
Это изменение которое легче.
Добавлено позже:
Для качественного изменения асма, я бы вообще определил что нужно пересобрать ром под новый плюсовой размер. И фактически видел такие ромы очень редко. Т.е. Ромы с одинаковой игрой и разного размера. Я например не считаю что возможно использовать пространство пустой графики под вставку кода через команды типа:
JMP и RET (ПК) в это место рома.
Добавлено позже:
Опять выявил отсутствие команд следующих но не как ошибку программы:
BMI $xx
BEQ $xx
BNE $xx
Сдесь один маленький икс означает одну однобайтную константу.
Добавлено позже:
Но это команды какие-то относительно адресные. Для их использования надо использовать отношение к реальным адресам. Они не транслируемо-подобны.
Такая же безполезность есть и в gameboy ассемблере (если интересно).
Добавлено позже:
Константно они транслируются скажем дизассемблером в почти тоже самое, но только с константами в 1 байт.
Размер по памяти РОМа у них одинаковый, с их заменителями. Трансляцию кода они не смещают, и константного значения не меняют.
Но в виде передней константы у них идёт первая цифра адресного диапазона. И адреса обязательно того на котором они располагаются в данный момент.
И на это значение увеличена их константа.