NESEmDev - Russian

NES development discussion in English, Español, Français, Português, русский язык, or any language.

Moderator: Moderators

Ti_
Posts: 61
Joined: Sat Aug 03, 2013 3:08 pm
Location: Russia
Contact:

Re: NESEmDev - Russian

Post by Ti_ »

Кто подумал что ничего не сделано, кое-что ещё есть, и думаю ещё будет для демки:

Пушки и стены:
http://www.youtube.com/watch?v=G7aCAy1-70c
nya
Posts: 6
Joined: Mon Jan 20, 2014 4:07 pm

Re: NESEmDev - Russian

Post by nya »

Пытаюсь делать игру для денди. :)
Attachments
game.rar
(4.92 KiB) Downloaded 1000 times
User avatar
ipaSoft
Posts: 2
Joined: Tue Feb 18, 2014 2:37 am
Location: Russia, Tyumen
Contact:

Re: NESEmDev - Russian

Post by ipaSoft »

nya wrote:Пытаюсь делать игру для денди. :)
Красавелла) Я так понимаю, это еще не игра, а полигон, так сказать.. проба пера. Тайлики потыренные)))
Не забрасывай.
P.S. Исходники можно зыркнуть? )
nya
Posts: 6
Joined: Mon Jan 20, 2014 4:07 pm

Re: NESEmDev - Russian

Post by nya »

Обновление.
Contra Force взято как образец.
Объекты за пределами экрана не живут и есть некоторые ограничения в графике. Так вроде нормально работает, но подтормаживает.
Attachments
game_062.rar
(28.06 KiB) Downloaded 762 times
nya
Posts: 6
Joined: Mon Jan 20, 2014 4:07 pm

Re: NESEmDev - Russian

Post by nya »

Mario допилю, контра сложно изза количества объектов, это нужно под игру подстраивать.
Всё вобщем готово кроме всякой мелочи, играть можно, собираемое борохло сделаю сохраняемым, чтобы не появлялось снова, или сделаю скроллинг в одну сторону, чтобы объекты врагов постоянно не загружались при ходьбе влево вправо. Дракон будет один в конце игры(возможно), уровни будут идти подряд. Ограничение в комнатах 336 штук, не позволяет делать много уровней, и лень.

select во время игры, следующий уровень.
Attachments
mario_067.rar
(24.37 KiB) Downloaded 664 times
nya
Posts: 6
Joined: Mon Jan 20, 2014 4:07 pm

Re: NESEmDev - Russian

Post by nya »

Доделал Марио. В игре нет подводных уровней, и звёздочки и всякой мелочи. Возможно будут баги.
Attachments
mario_v1.1_2019.zip
(35.74 KiB) Downloaded 419 times
lancuster
Posts: 235
Joined: Thu Feb 18, 2016 3:20 am
Contact:

Re: NESEmDev - Russian

Post by lancuster »

Всем, кто хочет научиться программировать NES игры на языке Си, но не хочет делать всё-всё с нуля - данный ресурс придётся очень кстати:
https://cppchriscpp.github.io/nes-start ... /home.html
Данный автор сделал на своём движке уже несколько игр, последнюю из которых сделал всего за 48 часов. 8-)
User avatar
aa-dav
Posts: 220
Joined: Tue Apr 14, 2020 9:45 pm
Location: Russia

Re: NESEmDev - Russian

Post by aa-dav »

Пишу серию уроков "Программирование для Famicom/NES/Денди в IDE Nesicide и ассемблере CA65": http://hype.retroscene.org/blog/967.html на русском.
nya
Posts: 6
Joined: Mon Jan 20, 2014 4:07 pm

Re: NESEmDev - Russian

Post by nya »

Обновление 1.2, теперь работает на реальной приставке, тестировал на приставке Денди, с NTSC думаю проблем не должно быть. Работает на mapper 7 (74ls161), по такой же схеме как Battletoads, но такой микросхемы у меня не оказалось, поэтому тестировал на к555тм8+74ls32.

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

Добавлены скрытые переходы через уровни :D
Attachments
mario_v1.2_2022.zip
(36.58 KiB) Downloaded 55 times
leopard_
Posts: 7
Joined: Thu Feb 15, 2024 12:40 pm

Re: NESEmDev - Russian

Post by leopard_ »

Написал дизассемблер для NES с кучей функций .
Если что-то не понятно как пользоваться пишите .
Attachments
DisAsmNes.rar
(775.35 KiB) Downloaded 5 times
leopard_
Posts: 7
Joined: Thu Feb 15, 2024 12:40 pm

Re: NESEmDev - Russian

Post by leopard_ »

Вот еще несколько скриншотов программы DisAsmNes .
Attachments
NES_.zip
(1.34 MiB) Downloaded 5 times
leopard_
Posts: 7
Joined: Thu Feb 15, 2024 12:40 pm

Re: NESEmDev - Russian

Post 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 . Высокоуровневый код намного удобнее для анализа кода , чем простой ассемблерный . Его можно копировать из этого окна , а также сохранять в файл через пункты главного меню .
Last edited by leopard_ on Sun Mar 24, 2024 1:35 am, edited 4 times in total.
leopard_
Posts: 7
Joined: Thu Feb 15, 2024 12:40 pm

Re: NESEmDev - Russian

Post by leopard_ »

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


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

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

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

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

Re: NESEmDev - Russian

Post 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 виде .
leopard_
Posts: 7
Joined: Thu Feb 15, 2024 12:40 pm

Re: NESEmDev - Russian

Post by leopard_ »

Закладка "Мапперы" .

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

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

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

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

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

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

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

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

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

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


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