Сообщения без ответов | Активные темы Текущее время: 28 апр 2024, 05:59



Ответить на тему  [ Сообщений: 37 ]  На страницу 1, 2  След.
 [NES] Создание игры 
Автор Сообщение
Сообщение 19 мар 2008, 10:24
Профиль

Зарегистрирован:
01 авг 2007, 10:17
Сообщения: 68
Вот решил сделать че-нить свое на любимую платформу.
Есть некоторые трудности. Допустим, тайлсет простенький создать несложно.
А вот с программированием проблемы.
Все что удалось найти - это ассемблеры.
Вопрос - не существует ли какого-нибудь нормального языка программирования на NES? Просто когда-то у меня на "Сюборе" была такая вещь, как G-Basic, на котором я написал 5 лет назад первую "демку" (естественно, она не сохранилась). Есть ли что-либо подобное?


Сообщение 19 мар 2008, 10:44
Профиль

Зарегистрирован:
24 июл 2007, 21:00
Сообщения: 8
Может быть nbasic подойдет? http://bobrost.com/nes/resources.php


Сообщение 20 мар 2008, 11:09
Профиль

Зарегистрирован:
01 авг 2007, 10:17
Сообщения: 68
Не, это не то . Это просто бейсик.
G-Basic отличался тем, что там были спец. команды вроде вкл/выкл. слоя спрайтов, инициализация спрайтов, их движение, изменение палитры для фона/спрайтов, реакция на нажатия кнопок через простой рабочекрестьянский if, никакого там стробирования. Беда только в том, что все спрайты изначально заданы, от себя ничего не добавить, 3k свободной памяти ну и результат сохранить нельзя (и еще инструкция на русско-китайском-непоймикаком). А так язык настолько легкий, что я первую демку (летит себе корабль, управляется с джоя, врезается в Марио и БАХ) сделал в 5 классе примерно за 3 часа (чертова инструкция!))). Разрабы-то небось игры не на асме клепали (на нем и чипыдейл обыкновенный сложным кажется, а как на нем написать, скажем, Зельду?). И вот нигде не могу найти полный комповский вариант такого языка и че-то кажется, что придется все делать самому...


Сообщение 20 мар 2008, 11:54
Профиль WWW
Основатель сайта
Аватара пользователя

Зарегистрирован:
21 июл 2007, 15:40
Сообщения: 2234
Откуда: Москва
Я думаю, что для NES как раз на асме всё и делали. Там были жёсткие ограничения по объёму программы и быстродействию оборудования, а языки высокого уровня выдают слишком громоздкий и тормозной код по сравнению с ассемблером. Во всяком случае на basic-е уж точно игры не писали. =) Посмотри вот этот сайт:
http://nesdev.parodius.com/
Тут много информации по программированию под NES.


Сообщение 20 мар 2008, 18:05
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
22 июл 2007, 11:16
Сообщения: 787
DeniSS писал(а):
Не, это не то. Это просто бейсик.

Это максимум, на который ты можешь рассчитывать. Чтобы делать игры на денди, надо либо довольствоваться г-бейсиком, либо напрячь мозг.

_________________
1. Модератор всегда прав.
2. Если модератор не прав, см. п. 1.


Сообщение 20 мар 2008, 21:12
Профиль

Зарегистрирован:
01 авг 2007, 10:17
Сообщения: 68
Сурово. Значит ничего эпохального не написать =). Ладно попытаюсь осилить ассемблер...


Сообщение 21 мар 2008, 13:08
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
29 июл 2007, 22:33
Сообщения: 70
Откуда: Belarus
Далеко ходить не нужно
viewtopic.php?f=13&t=355
viewtopic.php?f=13&t=167


Сообщение 10 апр 2008, 17:29
Профиль WWW
Аватара пользователя

Зарегистрирован:
06 апр 2008, 13:46
Сообщения: 119
Есть очень интересный вариант выхода из ситуации, который я давно рассматривал на предыдущем форуме.

http://www.cc65.org/
Здесь нужно скачать 3 архива:
cc65-win32-2.11.0-1.zip — сам компилятор C для процессора 6502, который использовался в NES
cc65-nes-2.11.0-1.zip — стандартная Runtime Library для NES, для игр не подойдет, так как она жестко расчитана на эмуляцию консольного ввода-вывода
cc65-sources-2.11.0.tar.bz2 — исходники всего, в том числе и исходный код RTL для NES. То есть надо переписать RTL таким образом (изучая работу текущей RTL), чтобы в ней был заложен весь основной функционал приставки.
Если вы думаете что это все будет сильно тормозить, то спешу заверить вас, что это не так. Вызовы процедур, циклы, условия и т.д. компилятор способен сгенерировать не хуже, чем если бы это же писал человек на ассемблере, а так как все сами процедуры в RTL реализованы на ассемблере, все это дело должно работать очень даже шустро.
К сожалению, я знаю только ассемблер x86, я поглядел набор команд NES — там все совершенно другое, даже мнемоники условий другие. Жалко что нет таблички хотя бы примерного соответствия команда x86 и NES.
Кому-нибудь это интересно? Можно попробовать что-нибудь сделать на основе этого.


Сообщение 11 апр 2008, 00:05
Профиль WWW
Аватара пользователя

Зарегистрирован:
06 апр 2008, 13:46
Сообщения: 119
http://nesdev.parodius.com/6502guid.txt
Вот неплохое описание процессора нашей любимой приставки :) Очень понятное.


Сообщение 11 апр 2008, 16:05
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 570
Использовать Си на NES, это тоже самое что стрелять из пушки по воробьям. И ещё не факт, что он будет нормально компилировать, наверняка есть какие-то глюки с RAM/ROM переменными, и страннные глюки в циклах. Компиляторы для SMD например часто этим страдают.

Лучше выучите ассемблер для 6502, там мнемоник меньше чем букв в алфавите.

В качестве ассемблера могу порекомендовать DASM от Matthew Dillon (http://www.atari2600.org/DASM).


Сообщение 11 апр 2008, 20:55
Профиль WWW
Аватара пользователя

Зарегистрирован:
06 апр 2008, 13:46
Сообщения: 119
Я же говорю, что все системные функции все равно пишутся на асме. Только вызовы их оформляются на Сях, ну и объявления переменных там тоже конечно. Приятнее смотреть на программу не на асме, в любом случае :)
Если для этого процессора есть нормальный компилятор Си, значит смысл все-таки писать не только на асме есть...


Сообщение 11 апр 2008, 21:43
Профиль

Зарегистрирован:
12 мар 2008, 16:18
Сообщения: 37
Цитата:
Если вы думаете что это все будет сильно тормозить, то спешу заверить вас, что это не так. Вызовы процедур, циклы, условия и т.д. компилятор способен сгенерировать не хуже, чем если бы это же писал человек на ассемблере, а так как все сами процедуры в RTL реализованы на ассемблере, все это дело должно работать очень даже шустро.

Верхний пост
Цитата:
То есть надо переписать RTL таким образом (изучая работу текущей RTL), чтобы в ней был заложен весь основной функционал приставки.

Тогда легче писать на асме, просто используя макросы. Часть функционала уже заложена в статьях Blargg'a по CA65 (к макросам легко привыкаешь).


Сообщение 12 апр 2008, 03:36
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
25 июл 2007, 05:09
Сообщения: 211
Откуда: 39
Я думаю, нет смысла мучаться ради какой-нибудь полуигры. Обычно все что-то начинают, кое-как делают что-то типа ломаного тетриса, а дальше не хватает энтузиазма. А что-то типа Ninja Gaiden или Darkwing Duck сделать никому не удастся. Тогда какой смысл делать игры марки "жопарожец"?

Эффективнее сделать тотальный реверс хорошему движку и на нем сделать что-то толковое.

_________________
http://romhacking.net.ru - всё про ромхакинг


Сообщение 12 апр 2008, 07:03
Профиль
Аватара пользователя

Зарегистрирован:
24 июл 2007, 06:54
Сообщения: 492
Откуда: Embedded
TiberiyLTim писал(а):
Я думаю, нет смысла мучаться ради какой-нибудь полуигры. Обычно все что-то начинают, кое-как делают что-то типа ломаного тетриса, а дальше не хватает энтузиазма. А что-то типа Ninja Gaiden или Darkwing Duck сделать никому не удастся. Тогда какой смысл делать игры марки "жопарожец"?
Эффективнее сделать тотальный реверс хорошему движку и на нем сделать что-то толковое.

Чушь. Можно сделать нормальную игру. Но это должно быть интересно создателю или оплачиваемо. Нет интереса - нет игры. Так и отсеиваются "создатели" с лжежеланием. Т.е. восхищаются игрой и говорят "Я сделаю так и даже лучше!", начинают изучать основы игроделания и основы программирования, понимают как все это сложно и бросают. А ведь хорошие игры не только одними программистами сделаны. ;)

Использование компиляторов для написания игр под NES возможно. Правда, все же они генерируют достаточно мусора, что при скромных возможностях приставки может оказаться решающим фактором. Все же, писать под такую систему следует на АСМе, так ты четко контролируешь каждый байт памяти. Сложно? Отнюдь. Ну жно просто грамотно подойти к процессу. Например, нужно составить и использовать карту памяти ОЗУ. Организация ОЗУ вообще самый важный момент, ибо его не много. Контролировать ОЗУ в полном объеме используя компиляторы невозможно. Начинать следует с примитивов. Определиться какие процедуры самого низкого уровня необходимы, написать их и обкатать на тестовом коде. Потом, сделать себе небольшой справочник (можно даже в самом коде в виде комментария) и использовать эту библиотеку низкоуровневых процедур процедурами среднего уровня. Библиотека никогда не будет статична - всегда наступает время, когда понимаешь, чего-то не хватает, поэтому она будет развиваться параллельно проекту. И т.д. и т.п. В итоге, после написания хоть одной игры (или даже полуигры) останется мощный стартовый комплект для практически любой программы или собственно игры.

А для примера, я приведу ход моего проекта OS для Сеги. Сначала я работал чисто с железом, написал все необходимые функции для вывода информации на экран (печать символа, печать строки, всевозможные варианты печати HEX и DEC чисел), ввода информации (опрос джойстика, процедура ввода произвольного сообщения только джойстиком и даже подключал PS/2 клавиатуру и она работала). После, приступил непосредственно к управлению винчестером. Написал процедуру опроса ID, которая возвращала только нужные данные о физике винта из всех репортируемых. И собственно 2 процедуры: чтения и записи сектора/секторов, так же конвертор LBA => CHS согласно геометрии винта (на самом деле это трюк, ибо в программе удобнее иметь линейное пространство секторов, но старые винты LBA режим не понимают, поэтому введен этот фильтр, автоматически подключаемый по мере необходимости ;)). Все, на этом этапе мне было достаточно (инит аппаратуры я за низкий уровень не считаю - это обязательный блок и он берется по эталону). Затем начал писать процедуры, которые являются средним уровнем, а именно: детектор файловой системы (пока только FAT16/FAT32), обработчик разделов, чтение/запись кластера для FAT16 и чтение/запись кластера для FA32. Вот в принципе и все, что нужно для среднего уровня. А теперь высокий уровень, который собственно и будет виден приложениям: чтение/запись каталога/элемента каталога (с определением корневой директории или субдиректории - у FAT16 корневая папка находится не в блоке данных, в отличии от FAT32), чтение/запись файла, поиск файла по имени (при обнаружении возвращает указатель на каталог где элемент и первый кластер самого файла). Это ядро. Конечно туда еще много добавлять, но его уже можно использовать практически для любых целей. А уже здесь мы пишем оболочку, которая и использует все эти процедуры, правда пока она не закончена. Да и графика еще пока не отрисована. Но все что тут было озвучено написано 100% на АСМе и, как видите, я еще жив.

И еще, когда пишите на АСМе (особенно это касается новичков) пишите внятные комментарии и будет вам счастье.

PS О, скока букав написал....

_________________
Tried so hard and got so far, but in the end, it doesn't even matter...


Последний раз редактировалось HardWareMan 12 апр 2008, 14:47, всего редактировалось 1 раз.



Сообщение 12 апр 2008, 12:40
Профиль

Зарегистрирован:
12 мар 2008, 16:18
Сообщения: 37
Согласен, а на NES SnowBro написал Neotoxine - мне очень понравилось. По уровню близко к Terminator 2. Кстати, множество хоумбрюшек было опубликовано.


Сообщение 12 апр 2008, 18:34
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
22 июл 2007, 11:16
Сообщения: 787
VEG писал(а):
Я же говорю, что все системные функции все равно пишутся на асме. Только вызовы их оформляются на Сях, ну и объявления переменных там тоже конечно. Приятнее смотреть на программу не на асме, в любом случае :)
Если для этого процессора есть нормальный компилятор Си, значит смысл все-таки писать не только на асме есть...


Чем тогда плох вышеназванный бейсик? По сути он является макроассемблером с синтаксисом языка высокого уровня, а не бейсиком как таковым.

_________________
1. Модератор всегда прав.
2. Если модератор не прав, см. п. 1.


Сообщение 12 апр 2008, 21:51
Профиль WWW
Аватара пользователя

Зарегистрирован:
06 апр 2008, 13:46
Сообщения: 119
Мне бейсик сам по себе не нравится, в любых вариациях. Религия не позволяет что-ли :) Уж лучше асм.
Нет, ну конечно я понимаю что тут серьезные фанаты общаются, что даже время тратят на подробное изучение архитектуры, которая уже безвозвратно ушла в прошлое. То есть перспективы в любом случае никакой, все только в рамках личного интереса.
Очень интересно было почитать откоментированные дизассемблированные исходники танчиков. Это же сколько надо было времени потратить чтобы разобрать кучу кода :) Молодцы, конечно... :roll:
В общем отложим идею с Си для NES на потом в черный ящик. Все равно дальше запуска собственных ромов в эмуляторе это дело не дойдет, хотя было бы приятно зашить свою программу в картридж и испытать это на реальной приставке :) Правда никто этого не поймет, только для себя...
Ладно, расписался я что-то. Года 3 назад я шугался асма вообще, сейчас почитал доки по асму приставки - примитив конечно, согласен. Но все равно, когда в игры для Денди играют по сети, когда люди пользуются сохраненками для этих игр, когда для Денди разработано куча всякого инструментария, подозрительно что нет нормально адаптированного Си для этой приставки ;)


Сообщение 13 апр 2008, 03:34
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
25 июл 2007, 05:09
Сообщения: 211
Откуда: 39
Griever писал(а):
Согласен, а на NES SnowBro написал Neotoxine - мне очень понравилось. По уровню близко к Terminator 2. Кстати, множество хоумбрюшек было опубликовано.



Я не просто так сказал, то что сказал выше… т.к:

1. Не вижу серьезной капитальной игры, сделанной с нуля одним энтузиастом. Ну нет там таких игр, о которых скажешь – да, по этой игре видно, что человек реализовал свою идею на славу. Есть только такие, о которых скажешь – да, неплохо получилось, наверное за 30 баксов её кто-то и купит. Скажем, я играл в большинство этих игр, которые они там продают, - по сравнению… ни в какие ворота – они сделали то, что смогли, а не то, что хотели – это суть.

2. Про реверс и взятие движка определенной качественной игры я то же сказал не просто так. Т.к. на тех же сайтах хомбрю во многих случаях пишут так (об игре Castlevania - Vengeance on Hell) "This is a hack of Castlevania 2" и пр. – это суть.


Могу ошибаться, ткните носом на достойный пример, покажите игру, в которой есть высокая идея, мечта, что ли.

_________________
http://romhacking.net.ru - всё про ромхакинг


Сообщение 13 апр 2008, 07:25
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
22 июл 2007, 11:16
Сообщения: 787
TiberiyLTim писал(а):
Могу ошибаться, ткните носом на достойный пример, покажите игру, в которой есть высокая идея, мечта, что ли.

GrandThiefTendo от Brian Provinciano. Недавно пронеслась весть, что он опять взялся за работу.

Игры делаются на продажу. Люди, которые Игры делают, получают деньги. Все остальное - это игры в песочнице. Лучше делайте демки и шлите на ежегодные демо-пати.

_________________
1. Модератор всегда прав.
2. Если модератор не прав, см. п. 1.


Сообщение 14 апр 2008, 01:39
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
25 июл 2007, 05:09
Сообщения: 211
Откуда: 39
CaH4e3 писал(а):
TiberiyLTim писал(а):
Могу ошибаться, ткните носом на достойный пример, покажите игру, в которой есть высокая идея, мечта, что ли.

GrandThiefTendo от Brian Provinciano. Недавно пронеслась весть, что он опять взялся за работу.

Игры делаются на продажу. Люди, которые Игры делают, получают деньги. Все остальное - это игры в песочнице. Лучше делайте демки и шлите на ежегодные демо-пати.



Недавно все кричали, что это фейк... хех, я уже было начал им верить...

Какое ещё демо-пати, по NES разве есть? Есть адресок топика, где это обсуждается? А то я в инете мало, не в курсах за такое.

_________________
http://romhacking.net.ru - всё про ромхакинг


Показать сообщения за:  Поле сортировки  
Ответить на тему   [ Сообщений: 37 ]  На страницу 1, 2  След.

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 33


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by STSoftware for PTF (mod by Zeru-j).
Русская поддержка phpBB