Forums Logo

Здравствуйте Гость ( Вход | Регистрация )

Reply to this topicStart new topicStart Poll

Каскадный · [ Стандартный ] · Линейный

> Реактивное введение в программирование под GBA

aa-dav
post Четверг, 20 апреля 2017, 10:47
Отправлено #1


Продвинутый
**

Группа: Пользователи
Сообщений: 34
Регистрация: 20 апр. 2017
Пользователь №: 58 717





Столкнувшись сам несколько дней назад с отсутствием русских вменяемых введений в предмет на днях решил создать некую очень короткую и сжатую, но по возможности достаточно полную для начала программирования реальной игры вводную в программирование под GBA.
Начал делать это тут: http://antistupd.livejournal.com/842.html

При этом цель не состоит в обучении программированию - напротив, целевая аудитория уже должно хорошо знать C/C++ и представлять себе архитектуру компьютера, что такое память, указатели в неё, зачем нужен volatile и т.п.

Два вопроса:
- нужно ли? есть ли еще интересующиеся темой?
- (потому что возможно, что) есть ли уже проделанная такая же работа? (сам не нашёл)
User is offlinePM
Go to the top of the page
+Quote Post
MoonTurtle
post Четверг, 20 апреля 2017, 11:12
Отправлено #2


Безумец
*****

Группа: Пользователи
Сообщений: 844
Регистрация: 05 янв. 2013
Из: Minsk
Пользователь №: 46 701





может и не прав, но мне кажется что это нафиг не нужно.
Делать абы сделать, для мертвой платформы...
Есть энтузиасты которые пишут сеговские 16 битные игры, видел их поделки, мне не зашло.
Профита не получить, опыт сомнителен, применение ...
Писать игру на си , сейчас так делают? вроде не тренд.

А вообще как хош так и раби и дэвай что хош, только бы прикалывало.

Сообщение отредактировал MoonTurtle - Четверг, 20 апреля 2017, 11:14
User is offlinePM
Go to the top of the page
+Quote Post
aa-dav
post Четверг, 20 апреля 2017, 11:39
Отправлено #3


Продвинутый
**

Группа: Пользователи
Сообщений: 34
Регистрация: 20 апр. 2017
Пользователь №: 58 717





QUOTE (MoonTurtle @ Четверг, 20 апреля 2017, 11:12)

Писать игру на си , сейчас так делают? вроде не тренд.


Я там во введении сразу же и написал, что GBA обладает интересным соотношением в архитектуре.
ЦП мейнстримовый 32-битный ARM, поэтому свободно можно писать код на C/C++ и не парится - компилятор обычный GCC, никаких заморочек нет, связанных с необходимостью шпарить на ассемблере или прикладывать бит к биту как на микроконтроллерах или тех же 16-битках.
Но при этом он обладает всеми характерными особенностями аппаратуры 16-битных консолей - особенно это касается программирования видеоадаптера, сами выполняемые действия, спрайты, фоновые задники и регистры их сдвига - всё это ровно то, чем занимались бессчисленные геймдевелоперы на широчайшем классе консолей былых лет, от NES и выше.

Поэтому для меня лично это именно что "прикоснуться к тому чем дышали раньше", но уже достаточно простое, чтобы мозги не закипали.

Почти все мощные игры пишутся на C++ сейчас. Наиболее часто распространён подход, когда ядро движка на нём написано для дого чтобы давить самый мощный графон, в то же время присутствует скриптовый или околоскриптовый интерфейс для логики, аддонов и в целом ускорения разработки.
User is offlinePM
Go to the top of the page
+Quote Post
DUX
post Четверг, 20 апреля 2017, 11:59
Отправлено #4


уже пятый год сижу
*****

Группа: Пользователи
Сообщений: 783
Регистрация: 06 нояб. 2012
Из: Стольный град Москов
Пользователь №: 46 279





QUOTE (aa-dav @ Четверг, 20 апреля 2017, 11:39)

Я там во введении сразу же и написал, что GBA обладает интересным соотношением в архитектуре.
ЦП мейнстримовый 32-битный ARM, поэтому свободно можно писать код на C/C++ и не парится - компилятор обычный GCC, никаких заморочек нет, связанных с необходимостью шпарить на ассемблере или прикладывать бит к биту как на микроконтроллерах или тех же 16-битках.
Но при этом он обладает всеми характерными особенностями аппаратуры 16-битных консолей - особенно это касается программирования видеоадаптера, сами выполняемые действия, спрайты, фоновые задники и регистры их сдвига - всё это ровно то, чем занимались бессчисленные геймдевелоперы на широчайшем классе консолей былых лет, от NES и выше.

Поэтому для меня лично это именно что "прикоснуться к тому чем дышали раньше", но уже достаточно простое, чтобы мозги не закипали.

Почти все мощные игры пишутся на C++ сейчас. Наиболее часто распространён подход, когда ядро движка на нём написано для дого чтобы давить самый мощный графон, в то же время присутствует скриптовый или околоскриптовый интерфейс для логики, аддонов и в целом ускорения разработки.
*

Ну, если наклепаете контр, кастельваний и марио

Добавлено спустя 50 секунд:
Хочу Контру Operation C на 2 игрока

Сообщение отредактировал DUX - Четверг, 20 апреля 2017, 12:00


--------------------
User is offlinePM
Go to the top of the page
+Quote Post
MoonTurtle
post Четверг, 20 апреля 2017, 12:01
Отправлено #5


Безумец
*****

Группа: Пользователи
Сообщений: 844
Регистрация: 05 янв. 2013
Из: Minsk
Пользователь №: 46 701





QUOTE (aa-dav @ Четверг, 20 апреля 2017, 11:39)

Я там во введении сразу же и написал, что GBA обладает интересным соотношением в архитектуре.
ЦП мейнстримовый 32-битный ARM, поэтому свободно можно писать код на C/C++ и не парится - компилятор обычный GCC, никаких заморочек нет, связанных с необходимостью шпарить на ассемблере или прикладывать бит к биту как на микроконтроллерах или тех же 16-битках.
Но при этом он обладает всеми характерными особенностями аппаратуры 16-битных консолей - особенно это касается программирования видеоадаптера, сами выполняемые действия, спрайты, фоновые задники и регистры их сдвига - всё это ровно то, чем занимались бессчисленные геймдевелоперы на широчайшем классе консолей былых лет, от NES и выше.

Поэтому для меня лично это именно что "прикоснуться к тому чем дышали раньше", но уже достаточно простое, чтобы мозги не закипали.

Почти все мощные игры пишутся на C++ сейчас. Наиболее часто распространён подход, когда ядро движка на нём написано для дого чтобы давить самый мощный графон, в то же время присутствует скриптовый или околоскриптовый интерфейс для логики, аддонов и в целом ускорения разработки.
*
[/quote

не в этом дело, то что арм и так понятно.

ты будеш писать и скрипты и движок. ихмо зачем изобретать велосидед, я про движок, если игра не в стиле атари то будет сложно и долго добиться норм эффекта.
Возьми к примеру в сравнение фьюжн, гэйммэйкер, юнити или рпг мэйкер на худой конец. Там можно сконцентрироваться на игре а не движке...
Есть еще прикольная тема pico8.


Платформа не популярна.
я не говорю что си плох, просто с нуля писать игры на нем не эффективно.
User is offlinePM
Go to the top of the page
+Quote Post
aa-dav
post Вторник, 23 мая 2017, 08:54
Отправлено #6


Продвинутый
**

Группа: Пользователи
Сообщений: 34
Регистрация: 20 апр. 2017
Пользователь №: 58 717





А у кого-нибудь тут есть возможность заливать на какой-нибудь Flash-картридж образы *.gba и запускать их на настоящем аппаратном (не эмуляторе) Game Boy Advance?
Просто накопилось несколько тестовых примеров уроков (уже написал 6 частей по ссылке в первом сообщении) и хотелось бы проверить хотя бы дистанционно насколько они адекватно ведут себя на настоящем железе. На эмуляторе конечно же проверено - на нём всё нормально. Спрайтики всякие вращаются да фоны летают, типа такого.
User is offlinePM
Go to the top of the page
+Quote Post
Boris
post Вторник, 23 мая 2017, 11:09
Отправлено #7


Uphold the law
Group Icon

Группа: Модераторы
Сообщений: 904
Регистрация: 07 авг. 2006
Из: Bulltown
Пользователь №: 17 455





Тема интересная, спасибо! Надо срочно купить флэху, с удовольствием буду тестировать ваши разработки. На чем пишете то?


--------------------
User is offlinePM
Go to the top of the page
+Quote Post
dimm0505
post Вторник, 23 мая 2017, 12:59
Отправлено #8


Console Addict
Group Icon

Группа: Модераторы
Сообщений: 7 635
Регистрация: 21 янв. 2007
Из: Петропавловск-Камчатский
Пользователь №: 20 637





QUOTE (MoonTurtle @ Четверг, 20 апреля 2017, 21:01)

Платформа не популярна.
я не говорю что си плох, просто с нуля писать игры на нем не эффективно.
*

А что из высокоуровневых языков может быть более эффективным чем С для GBA? =))) Платформа очень интересна с точки зрения первого опыта, имеет крайне низкий порог вхождения, создано несколько (!) IDE для разработки. Сцена и форум еще живы:
http://gbadev.org/

QUOTE (aa-dav @ Вторник, 23 мая 2017, 17:54)

А у кого-нибудь тут есть возможность заливать на какой-нибудь Flash-картридж образы *.gba и запускать их на настоящем аппаратном (не эмуляторе) Game Boy Advance?
Просто накопилось несколько тестовых примеров уроков (уже написал 6 частей по ссылке в первом сообщении) и хотелось бы проверить хотя бы дистанционно насколько они адекватно ведут себя на настоящем железе. На эмуляторе конечно же проверено - на нём всё нормально. Спрайтики всякие вращаются да фоны летают, типа такого.
*

Лет 10 назад пробовал кодить в Visual HAM-е, очень мошная вещь была, можете попробовать, здесь есть версия 2.7:
https://www.zophar.net/utilities/gbadev/ham.html
А вообще самая последняя версия ХАМа была 2.80 вроде бы.
Насчет теста твоих прог. Есть GBA SP и Gameboy Micro, где то флэшкарик EZ-Flash IV валяется. Есть еще EZFlash V для NDS, на ней тоже можно попробовать. Так что при случае могу проверить твои "примеры". Только давай в формате *.gba.


--------------------
GBA/DS/3DS/WiiU/SWITCH/PSP/PS2/XB360/XBO
User is offlinePM
Go to the top of the page
+Quote Post
aa-dav
post Вторник, 23 мая 2017, 14:38
Отправлено #9


Продвинутый
**

Группа: Пользователи
Сообщений: 34
Регистрация: 20 апр. 2017
Пользователь №: 58 717





Сейчас запаковал текущее состояние проекта так сказать, и с исходниками и вместе с уже собранными образами GBA сюда: http://www.gamedev.ru/files/?id=125957
Там помимо прочего есть файл "Описания примеров.txt" и в нём написано какой пример как должен себя вести и на какие кнопки реагировать.
Буду признателен за отчёт о полевых испытаниях на реальном железе.

Я лично делаю даже не в средах компиляции, а прямо в командной строке и FAR-е фигачу, но это мой бзик. Поэтому там инструкции как завести с *.bat-файла (даже не make, а тупо батник, т.к. некогда даже на это заморачиваться).
Использую GNU C/C++ (под Windows) сборку под GBA.
В первых уроках использовал древнюю как окаменелое гэ мамонта Dev Kit Advance (2003 год сборки), но с 6-ой (и на пока последней) части перешёл на свежий и пахнущий розами Dev Kit Pro - там тоже всё есть как установить и через те же *.bat файлы компилировать.

Наверное будет составлять определенную проблему то, что я как раз без всяких сред и IDE фигачу - для новичков не очень удобно.
User is offlinePM
Go to the top of the page
+Quote Post
dimm0505
post Вторник, 23 мая 2017, 14:46
Отправлено #10


Console Addict
Group Icon

Группа: Модераторы
Сообщений: 7 635
Регистрация: 21 янв. 2007
Из: Петропавловск-Камчатский
Пользователь №: 20 637





Качнул, попробую в ближайшие 2-3 дня "на риале".


--------------------
GBA/DS/3DS/WiiU/SWITCH/PSP/PS2/XB360/XBO
User is offlinePM
Go to the top of the page
+Quote Post
dimm0505
post Среда, 24 мая 2017, 12:42
Отправлено #11


Console Addict
Group Icon

Группа: Модераторы
Сообщений: 7 635
Регистрация: 21 янв. 2007
Из: Петропавловск-Камчатский
Пользователь №: 20 637





Запускается все, но вот только что там должно быть - непонятно.
5_scroll_bg.gba вроде что-то толковое, управляется стрелками и тп.
А там где спрайты мне кажется, что они некорректно отображаются (как будто они из точек состоят). Мне кажется спрайты там другие должны быть. Как будто какие-то тайминги некорректные. Было бы неплохо, чтобы ты по каждой проге дал краткое описание (что она должна делать) и скрин из эмуля (как это должно все выглядеть по твоей задумке). Ну а так все запустилось на реальном GBA SP =))


--------------------
GBA/DS/3DS/WiiU/SWITCH/PSP/PS2/XB360/XBO
User is offlinePM
Go to the top of the page
+Quote Post
aa-dav
post Среда, 24 мая 2017, 13:31
Отправлено #12


Продвинутый
**

Группа: Пользователи
Сообщений: 34
Регистрация: 20 апр. 2017
Пользователь №: 58 717





Спасибо большое! Да, похоже что всё верно работает. Описание что там и как должно работать словами содержится в текстовой файле "Описание примеров.txt", там написано примерно что должно быть на экране и на какие кнопки и как оно должно реагировать по каждому из примеров.

Спрайты и фоны действительно "никакие" по одной простой причине - это примеры и чтобы максимально их упростить всё необходимое содержится прямо в коде программы, что исключает сложные битмапы и красивые рисунки.
User is offlinePM
Go to the top of the page
+Quote Post
dimm0505
post Среда, 24 мая 2017, 13:36
Отправлено #13


Console Addict
Group Icon

Группа: Модераторы
Сообщений: 7 635
Регистрация: 21 янв. 2007
Из: Петропавловск-Камчатский
Пользователь №: 20 637





QUOTE (aa-dav @ Среда, 24 мая 2017, 22:31)

Спасибо большое! Да, похоже что всё верно работает. Описание что там и как должно работать словами содержится в текстовой файле "Описание примеров.txt", там написано примерно что должно быть на экране и на какие кнопки и как оно должно реагировать по каждому из примеров.

Спрайты и фоны действительно "никакие" по одной простой причине - это примеры и чтобы максимально их упростить всё необходимое содержится прямо в коде программы, что исключает сложные битмапы и красивые рисунки.
*

Ну тогда поздравляю, все запустилось, правда я забыл по запарке 8_intrs.gba запустить =))


--------------------
GBA/DS/3DS/WiiU/SWITCH/PSP/PS2/XB360/XBO
User is offlinePM
Go to the top of the page
+Quote Post
aa-dav
post Среда, 24 мая 2017, 13:44
Отправлено #14


Продвинутый
**

Группа: Пользователи
Сообщений: 34
Регистрация: 20 апр. 2017
Пользователь №: 58 717





Ну отлично. Большое спасибо! Просьба еще, если уже этого не делали, потом как будет время - прочитать всё таки "Описание примеров.txt" по каждому примеру и сверить реакцию на кнопки с тем что там написано. Написать, если где-то будут отличия.
Номера перед примерами это названия глав из ссылки в первопосте. Таким образом каждый пример рассматривает по очереди те или иные аспекты железа - фоны обычные, спрайты, спрайты вращающиеся, фоны вращающиеся, таймеры, прерывания, и т.п. Сейчас осталось изучить и написать на русском у себя про генерацию звука и в общем то этот цикл обучалок будет завершен. Единственное что не смогу охватить наверное важного для создания игры - это перезаписываемая память в катридже для сохранений. А так вроде всё что нужно для какой нибудь зельды охвачено. Очень забавная действительно система с нижайшим порогом вхождения, основное описание "API" на 200 строк всего лишь С-кода. smile.gif
User is offlinePM
Go to the top of the page
+Quote Post
Gashik
post Среда, 24 мая 2017, 20:58
Отправлено #15


Eat me, drink me...
Group Icon

Группа: Профи
Сообщений: 2 270
Регистрация: 24 нояб. 2003
Из: Москва
Пользователь №: 6 234





С сохранением ничего сложного. Была библиотека, которая создавала файл srm заданного объема и сохраняла значение любых заданных переменных. Две строчки текста, если правильно помню.
Прикольное ты дело затеял smile.gif я пробовал когда-то в HAM, все получилось без опыта программирования.
User is offlinePM
Go to the top of the page
+Quote Post
hqqddy
post Пятница, 26 мая 2017, 18:20
Отправлено #16


Продвинутый
**

Группа: Пользователи
Сообщений: 88
Регистрация: 06 июля 2016
Пользователь №: 55 920





aa-dav тебе бы железку купить за недорого с флешкой или для мелких хомбрюх кабель запилить для заливки, на лпт был такой, я делал, помнится. А вообще, какой-то проект есть или просто так инересно?
User is offlinePM
Go to the top of the page
+Quote Post
aa-dav
post Пятница, 26 мая 2017, 18:51
Отправлено #17


Продвинутый
**

Группа: Пользователи
Сообщений: 34
Регистрация: 20 апр. 2017
Пользователь №: 58 717





QUOTE (hqqddy @ Пятница, 26 мая 2017, 18:20)

aa-dav тебе бы железку купить...
*


Я не железячник, я софтовик. Мне возится с железом как раз неинтересно, не самоцель, а интересно только то, что в принципе реальная работоспособность присутствует у программы. Вообще просто для интереса. На английском литературы много, а на русском ничего не смог найти, вот и решил что пока вникну как да что напишу экспресс-туториал на русском языке с выжимкой всего самого важного, может кому то не знающему английский в будущем пригодится, или по скорости вникания будет быстрее.

=== 2 ALL ===

Порылся, кстати, насчёт savegame-ов, действительно всё не так уж и трудно. На деле самый примитивный SRAM на батарейке программно выглядит как просто 32Кб памяти по определенному адресу. Нужно только соблюдать одно правило - побайтовый доступ к ней. В самом обстоятельном руководстве еще написано, что при чтении код выполняющий чтение из SRAM должен находится в WRAM - это вот заметное усложнение, но в других руководствах и даже примерах это требование игнорируется. На эмуляторе элементарный тест работает, но через еще одну хитрость - т.к. картридж никак не отчитывается перед системой о наличии SRAM, просто при её отсутсвии запись в эту область памяти будет проигнорирована, а чтение вернет мусор, то эмулятору нужно как то сообщить - и сообщается очень просто - достаточно в ROM-е иметь строку "SRAM_Vnnn" в любом месте, начиная с адреса кратного 4-м. Это воспринимается эмулятором как сигнал, что надо имитировать SRAM. На деле такие строчки действительно, как я понял, остаются в коде при использовании тулчейнов от самого Нинтендо, хотя для реального картриджа это совершенно необязательно.
Вот когда звук доделаю наверное подобью в один пакет с ним еще тест записи/эмуляции SRAM - тут уже вопрос как эмулирует его тот чип в который образ прошивается - потянет или нет, вот это тоже будет любопытно посмотреть...
User is offlinePM
Go to the top of the page
+Quote Post
MichaelForExample
post Пятница, 26 мая 2017, 22:31
Отправлено #18


Ветеран
******

Группа: Пользователи
Сообщений: 1 879
Регистрация: 03 мар. 2013
Пользователь №: 47 146





А почему на гитхабе репо не создать? Хоть следить было бы удобнее.


--------------------
Не будь побежден злом, но побеждай зло добром. 12:21
User is offlinePM
Go to the top of the page
+Quote Post
aa-dav
post Суббота, 27 мая 2017, 18:38
Отправлено #19


Продвинутый
**

Группа: Пользователи
Сообщений: 34
Регистрация: 20 апр. 2017
Пользователь №: 58 717





Когда будет законченная версия и каждая строчка будет еще раз перечитана - тогда я перевыложу куда-нибудь в более адресное место, скорее всего gamedev.ru. Гитхаб не знаю нужен ли, просто архив с исходниками и текстом будет достаточно мне кажется.
User is offlinePM
Go to the top of the page
+Quote Post
MichaelForExample
post Суббота, 27 мая 2017, 20:05
Отправлено #20


Ветеран
******

Группа: Пользователи
Сообщений: 1 879
Регистрация: 03 мар. 2013
Пользователь №: 47 146





QUOTE (aa-dav @ Суббота, 27 мая 2017, 19:38)

Когда будет законченная версия и каждая строчка будет еще раз перечитана - тогда я перевыложу куда-нибудь в более адресное место, скорее всего gamedev.ru. Гитхаб не знаю нужен ли, просто архив с исходниками и текстом будет достаточно мне кажется.
*

Ну неужели лишний пуш сделать в ремут ветку трудно?
Просто интересно смотреть именно на эволюцию, может кто и подключился бы заодно.


--------------------
Не будь побежден злом, но побеждай зло добром. 12:21
User is offlinePM
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
 

Упрощённая версия Сейчас: Ср., 13 дек. 2017, 00:42
Skin Designed (c) by Rooq.net, All Rights Reserved.