Page 4 of 5

Re: NESEmDev - Russian

Posted: Thu Sep 11, 2014 7:34 am
by Ti_
Кто подумал что ничего не сделано, кое-что ещё есть, и думаю ещё будет для демки:

Пушки и стены:
http://www.youtube.com/watch?v=G7aCAy1-70c

Re: NESEmDev - Russian

Posted: Thu Jan 29, 2015 2:22 pm
by nya
Пытаюсь делать игру для денди. :)

Re: NESEmDev - Russian

Posted: Sun Jan 31, 2016 4:37 am
by ipaSoft
nya wrote:Пытаюсь делать игру для денди. :)
Красавелла) Я так понимаю, это еще не игра, а полигон, так сказать.. проба пера. Тайлики потыренные)))
Не забрасывай.
P.S. Исходники можно зыркнуть? )

Re: NESEmDev - Russian

Posted: Tue Jul 31, 2018 1:05 pm
by nya
Обновление.
Contra Force взято как образец.
Объекты за пределами экрана не живут и есть некоторые ограничения в графике. Так вроде нормально работает, но подтормаживает.

Re: NESEmDev - Russian

Posted: Sun Mar 10, 2019 12:22 pm
by nya
Mario допилю, контра сложно изза количества объектов, это нужно под игру подстраивать.
Всё вобщем готово кроме всякой мелочи, играть можно, собираемое борохло сделаю сохраняемым, чтобы не появлялось снова, или сделаю скроллинг в одну сторону, чтобы объекты врагов постоянно не загружались при ходьбе влево вправо. Дракон будет один в конце игры(возможно), уровни будут идти подряд. Ограничение в комнатах 336 штук, не позволяет делать много уровней, и лень.

select во время игры, следующий уровень.

Re: NESEmDev - Russian

Posted: Sat Nov 16, 2019 12:26 pm
by nya
Доделал Марио. В игре нет подводных уровней, и звёздочки и всякой мелочи. Возможно будут баги.

Re: NESEmDev - Russian

Posted: Sat Nov 23, 2019 9:05 am
by lancuster
Всем, кто хочет научиться программировать NES игры на языке Си, но не хочет делать всё-всё с нуля - данный ресурс придётся очень кстати:
https://cppchriscpp.github.io/nes-start ... /home.html
Данный автор сделал на своём движке уже несколько игр, последнюю из которых сделал всего за 48 часов. 8-)

Re: NESEmDev - Russian

Posted: Sat Apr 18, 2020 5:37 pm
by aa-dav
Пишу серию уроков "Программирование для Famicom/NES/Денди в IDE Nesicide и ассемблере CA65": http://hype.retroscene.org/blog/967.html на русском.

Re: NESEmDev - Russian

Posted: Tue Nov 08, 2022 2:32 pm
by nya
Обновление 1.2, теперь работает на реальной приставке, тестировал на приставке Денди, с NTSC думаю проблем не должно быть. Работает на mapper 7 (74ls161), по такой же схеме как Battletoads, но такой микросхемы у меня не оказалось, поэтому тестировал на к555тм8+74ls32.

Исправлены некоторые уровни, физика игрока, и многое другое :)

Добавлены скрытые переходы через уровни :D

Re: NESEmDev - Russian

Posted: Thu Mar 21, 2024 7:39 am
by leopard_
Написал дизассемблер для NES с кучей функций .
Если что-то не понятно как пользоваться пишите .

Re: NESEmDev - Russian

Posted: Thu Mar 21, 2024 8:18 am
by leopard_
Вот еще несколько скриншотов программы DisAsmNes .

Re: NESEmDev - Russian

Posted: Sun Mar 24, 2024 12:42 am
by leopard_
Немного пояснений насчет программы DisAsmNes . Краткая помощь по возможностям .

Главная закладка с названием "Ассемблерный код" . Название говорит само за себя .

В первой колонке указывается тип строчки :
L - означает метка ( для условный и безусловных переходов )
P - начало процедуры ( первая команда )
I - начало прерывания ( первая команда )
M - это сразу и начало процедуры и метка , то есть M = L + P
D - Начало данных ( например первый байт массива )

Вторая колонка - Номер банка в HEX виде ( от 0 до 255 включительно )

Третья колонка - Адрес в адресном пространстве CPU в HEX виде ( от 0 до $FFF9 включительно - то есть без адресов 3 векторов в конце )

Четвертая колонка - Байты команды ( от 1 до 3 байт )

Пятая колонка - Название команды или DB если это просто данные

Шестая колонка - Параметры команды

Седьмая колонка - различные комментарии ( направление перехода - вперед или назад с указанием значения смещения относительно данной команды в десятичном виде для условных ( Bxx ) и безусловных ( JMP ) переходов , вызовов функций ( JSR ) , значение регистров A , X , Y после статического анализа и их отображение там где они известны , то есть где для определения не нужен отладчик , а также подробная информация по регистрам видео- и звукового процессоров и еще сокращенная ( когда неизвестны значения регистров маппера ) или полная информация о маппере ( когда известны значения регистров маппера ) . Как пример можно посмотреть для маппера номер 69 игра "Бэтмэн . Возвращение джокера" ) .

Чтобы посмотреть комментарии в удобном виде ( когда строка информации очень длинная ) , нужно выбрать соответствующую строку ( подсветить кнопками клавиатуры или правой кнопкой мыши ) и наведя курсор на поле комментария нажать правую кнопку мыши . Из открывшегося окна можно скопировать всю информацию .

Чтобы посмотреть список перекрестный ссылок для команд , нужно выбрать соответствующую строку ( подсветить кнопками клавиатуры или правой кнопкой мыши ) и наведя курсор на одну из первых трех колонок ( тип метки , номер банка или адрес CPU ) . В открывшемся окне будет список перекрестных ссылок и если сделать двойной щелчок левой кнопкой мыши на какой-либо строке , то будет переход на этот адрес .

Закрываются эти окна с помощью кнопки "Escape" .


В закладке с названием "Код Ассемблер ( Паскаль , Си )" - Отображается когда на ассемблере , паскале ( дельфи ) или си при выборе соответствующих пунктов главного меню NES , но только после того как загрузили образ NES через пункт меню "Формат NES ( NSF )". Кстати , кроме NES файлов можно дизассемблировать и файлы NSF . Высокоуровневый код намного удобнее для анализа кода , чем простой ассемблерный . Его можно копировать из этого окна , а также сохранять в файл через пункты главного меню .

Re: NESEmDev - Russian

Posted: Sun Mar 24, 2024 1:13 am
by leopard_
В закладке "Информация" отображаются сведения из заголовка NES или NSF файла . Причем можно просто посмотреть только одну информацию о файле без полного дизассемблирования образа . А полная информация при анализе всего кода файла содержит также адреса векторов прерываний , статистику по командам ( сколько раз в исследуемом коде встречается каждая команда ) , сколько всего команд пройдено , условных ( Bxx ) и безусловных ( JMP ) переходов , меток , процедур , ссылок на данные , неизвестных команд ( недокументированных ) и вызовов пользовательских прерываний ( BRK ) . Также после анализа кода отображаются адреса бесконечных циклов , так называемого
самомодифицирующегося кода ( и такое я тоже встречал ) и еще дублируется информация из окна "Ошибки ( Неразрешенные переходы )" с закладки "Списки" , которое содержит найденные непрямые безусловные переходы ( JMP ) и еще к примеру адреса вызовов процедур из банков , которые не были загружены в ручную , когда используются мапперы .


Закладка "Видеоданные" содержит окно , где отображаются спрайты ( тайлы ) . Они загружаются через пункты главного меню , причем есть 2 отдельных варианта :

1. Из CHR банков где точно есть картинки .

2. Из PRG банков где тоже могут быть спрайты ( тайлы ) , например когда в файле NES нет банков CHR и в PRG банках вместе с кодом и данными находятся еще и картинки .

При этом при наведении курсора на картинку отображается смещение начала спрайтов ( тайлов ) в файле в HEX или десятичном виде . Можно менять цвета пикселей картинки по своему усмотрению ( выбирать даже те , которых нет в палитре NES ) . Дополнительно можно выбирать режим "Смещение" от 1 до 15 включительно , но реально полностью все видео данные будут сильно меняться только при выборе значений 1 , 3 , 5 и так далее , то есть при нечетных значениях этого параметра . Очень удобно использовать чтобы искать тайлы ( спрайты ) и сразу знать в каком месте файла и по какому смещению они находятся .

Re: NESEmDev - Russian

Posted: Sun Mar 24, 2024 2:07 am
by leopard_
На закладке "Списки" в окне ''Данные' показываются начальные адреса данных ( первые байты ) и число ссылок на них .

Таким же образом в окне "JSR ( Процедуры )" отображаются адреса начала процедур и число ссылок на них , то есть из скольких мест они вызываются .

Аналогично как и с предыдущим окном "JSR ( Процедуры )" окно "JMP , Переходы (Bxx)" содержит адреса меток для условных и без условных переходов и число ссылок на них .

В окне "Неизвестные команды" - адреса и названия недокументированных команд ( например команд "JAM" или "HLT" разные названия в разных источниках , но например компилятор ca65 знает эту команду именно под названием "JAM" ) , которые найдены в коде , если их нет , то это окно пустое .

Пункт главного меню "Сохранить ассемблер в файл" - сохранит в текстовый файл содержимое окна "Ассемблерный код" в том виде , в котором оно в нем собственно и отображается , а пункт главного меню "Сохранить Ассемблер ( Паскаль , Си )" сохраняет ассемблерный код в виде пригодном для компиляции с помощью компилятора ca65 .

Кстати , код на паскале и си тоже будет хорошо компилироваться с помощью "Дельфи" и "Визуал Студио" соответственно .

В программе есть возможность посмотреть содержимое заголовков файлов для Супер NES ( Супер нинтендо ) , Сеги , Геймбоя через пункты главного меню с аналогичным названием .


В самом низу главного окна есть кнопки для поиска в окне кода на закладке "Ассемблерный код" .
Можно искать по меткам ( L , P , I , M , D ) , байтам команды ( учитываются только сразу все байты команды ) названию команды ( только полное название , к примеру AND ) , параметрам ( только полностью , например "$2000" найдет команду "STA $2000" то есть команду управления видеопроцессором ) , и комментариям ( Только здесь при этом типе поиска учитывается регистр символов . Тут можно искать и частично , то есть только по части комментария , причем если указать знак вопроса "?" вместо буквы или символа как '"?PU" , то получится поиск по маске , а по ней найдется и "PPU" и "APU" ) .

Предусмотрен переход по любому адресу ( например $8000 или $0001 - длина указываемого адреса всегда 4 цифры в HEX виде ).

В Главном окне справа внизу в окошечке "Смещение в файле" показывается смещение от начала файла NES ( NSF ) в HEX виде .

Re: NESEmDev - Russian

Posted: Sun Mar 24, 2024 2:42 am
by leopard_
Закладка "Мапперы" .

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

Поле "Номер маппера" - содержит список номеров мапперов , для которых в данный момент показывается дополнительная информация , зависящая от его типа устройства , то есть список мапперов работает эта функция .

Поле "Адрес загрузки" - выбор начального адреса памяти в пространстве CPU ( в HEX виде ) , куда будет загружаться указанный "Номер банка" из файла NES .

Поле "Размер банка" - выбор размера банка в байтах ( в HEX виде ) , который будет загружаться для указанного "Номера банка" и "Адреса загрузки" из файла NES .

Кнопка "Добавить" - Добавляет в таблицу ( список ) номер банка , адрес загрузки выбранного банка и его размер , автоматически c пометкой "+" , которая означает , что эта строчка таблицы будет учитываться .

Кнопка "Удалить" - удаляет выбранную строку из таблицы

Кнопка "Удалить всё" - удаляет сразу все строки из таблицы

Кнопка "Отметить все" - помечает все строки таблицы как используемые

Кнопка "Снять все" - помечает все строки таблицы как неиспользуемые

Галочка "По умолчанию" пока не используется ( не задействована ) .


Смысл всей этой канители такой . При загрузке файла NES для анализа ( дизассемблирования ) учитывается содержимое этой таблицы ( начальный адрес загрузки банка , его размер и его номер ) , то есть можно вручную добавлять переключаемые банки из файла NES для маппера с конкретным номером и они будут загружаться и анализироваться , причем фиксированные банки загрузятся сами ( автоматически ) в зависимости от номера используемого маппера , указанного в заголовке файла NES .