=A=L=X=
> разного быстродействия (за счёт ширины шины) - 32Кб 32-битной ОЗУ, 256Кб
> 16-битного ОЗУ
=A=L=X=
> что код в native выгодно размещать как раз в 32-битном ОЗУ
32х32килобайта=1024килобайтов
16х256килобайта=4096килобайтов
Rikk
16- или 32-битная ширина шины, а килобайты всегда килобайты по определению.
Исправил, дополнил и перепубликовал уроки по программированию GBA здесь: http://hype.retroscene.org/blog/872.html
Здесь на gamedev.ru к сожалению размер уже написанных жж-шных статей не позволил выкладывать уже написанное, т.к. у жж лимиты на размер статей больше, а перенумеровывать там всё я бы замучился.
Правда сам редактор жж жестяной и постоянно форматирование слетает, так что прямо просилось оно на какой то ресурс где бы было более железобетонное редактирование с нормальными тегами code, поэтому какие либо исправления и дополнения будут уже там.
Вопрос:
Есть ли среда разработки? В смысле можно ли как нибудь разрабатывать и компилировать код на Visual C, что бы он нормально компилировался и запускался в эмуляторе, а то жутко не удобно.
Ответ:
В сквозном примере Contra Force Advance (cfa) я использовал в качестве среды разработки Code::Blocks настроив его так, чтобы постройка проекта просто запускала build.bat (который делает всё что нужно), а запуск запускал run.bat который по указанному в нём пути запускает эмулятор с собранным образом. Собственно там есть проект под Code::Blocks уже готовый, но пути все надо перепроверить в соответствующих файлах. Естественно что и эмулятор и devkitpro должны быть установлены и пути до них указаны в соответствии с readme.txt. Даже ошибки от компилятора, т.к. он есть gcc правильно подхватываются Code::Blocks и отображаются если что-то идёт не так корректно. Так что не работает только отладка и вот это да - тут не вижу путей как бы её заставить.
Думаю что и студию можно так же настроить, если опыта хватит.
Вопрос:
А у тебя случаем нет инструкции как настроить Code::Blocks чтобы постройка проекта просто запускала build.bat (который делает всё что нужно), а запуск запускал run.bat который по указанному в нём пути запускает эмулятор с собранным образом. =)
Ответ:
Во первых там уже лежит файл с проектом Code::Blocks - cfa-cb.cbp.
По идее он настроен, но если нужно сделать с нуля попробую восстановить в памяти как это делается.
Во первых - делаем проект C++ указывая уже имеющуюся нашу папку. Не помню точно какой тулчейн там надо указать. Добавляем все файлы в папке src. Вообще сборка происходит через Makefile и он сейчас настроен так, чтобы компилировать все .cpp-файлы в папке src, так что в Code::Blocks мы добавляем просто для редактирования.
Далее идём в Project->Properties.
В первой закладке ставим галку напротив "This is a custom Makefile".
В поле "Execution directory" тут же указываем путь до папки где лежат build.bat и clean.bat.
Тут же снизу жмём кнопку "Projects build options..." и идём в закладку "Make commands".
Тут уже в поле "Build......" пишем "build.bat", а в поле "Clean......." - "clean.bat".
В Project->Properties закладке "build targets" ставим "Type" -> "Console application" и в поле "Output filename" -> "emul.bat" - это чтобы при запуске запускался батник запускающий эмулятор.
Так же замечу, что в Project->Properties в закладке "C/C++ parser options" нужно добавить пути к папкам "devkitPro\devkitARM\arm-none-eabi\include" и "devkitPro\devkitARM\arm-none-eabi\include\c++\6.3.0" чтобы работала подсветка синтаксиса Code::Blocks.
Блин, мне прям так приятно что из этого моего учебного материала что-то всё-таки вышло действительно интересного, что я прям хочу еще раз подчеркнуть, что все исходные коды и ресурсы изложенные мой в этой теме являются 100% полностью свободным достоянием и свободны к использованию в любом виде.
Защищены авторским правом (на их собственное усмотрение) только ресурсы от Konami, Darkman007 и Warentino что в проекте по каждому файлу оговорено.
Здесь же просто для официального пункта еще раз подчёркиваю как автор "Реактивного программирования под Game Boy Advance" я проговариваю что все учебные материалы включая исходные коды являются полностью свободными к использованию в любых целях и каким угодно образом.
Потому что действительно начинаюсь задумываться - а глупость та еще, когда всё то что публиковал как то сразу лицензией не обложил.
Гхм, так что легализую любые и какие угодно производные работы: всё можно, нужно только упомянуть исходник и автора.
Код обучающих уроков к Реактивному введению в программирование под Game Boy Advance полностью свободен для любого использования в любых проектах как коммерческих так и бесплатных с одним только требованием упоминания авторства.
Так вот - к чему я выше вдруг написал - уже давно пытаюсь затянуть в наши коварные сети человека под ником Cojam который делает проект своей мечты под Game Boy Advance и я верю он создаст всё-таки страничку и у нас тут, но пока нет я всё-таки дам ссылку от себя.
Тадам: https://cojam.itch.io/graveblood
Знакомьтесь, homebrew проект Graveblood:



Забавно, что как то так получилось, что автор сам даже придумал логотип CFA Engine, где CFA это от Contra Force Advance. :D
Давно на самом деле вижу как проект развивается и всякий раз когда выходят обновления (как вчера вот) удивляюсь прогрессу - выглядит совсем как актуальный продукт для этой консоли.
=A=L=X=
Спасибо за ваш монументальный труд! Было очень интересно прочитать и попробовать программировать под GBA. Понравилось. До этого был опыт с PSP, но там не так задротски всё устроено. Купил консоль и начал писать свою игру, решив, что 2020 год вполне этого заслуживает. Жаль только, что нельзя картридж свой замутить, в наличии есть только на 32 килобайта, а у меня с музыкой и фонами будет сильно больше. Так что только Омега, увы.
elmortem
> Жаль только, что нельзя картридж свой замутить
В принципе, достаточно простая железка

https://douevenknow.us/post/68126856498/arduino-based-gba-rom-dum… -part-1/embed
но опытная партия (с золочёными контактами, чтобы не запороть контакты слота оловом) обойдётся дороже чем EZ Flash Omega. Я порывался было сделать себе перепрограммируемый картридж для GB-DMG01, но увидел EZ Flash Junior и свою поделку забросил
> До этого был опыт с PSP
А можно ссылку на детальный учебник по?
elmortem
Спасибо за тёплые слова! :) Рад что кому то полезно, ибо хобби такое оказалось достаточно редким (в целом по ретропрограммированию). Т.е. в пост-СССР спектрум просто доминирует и остальные платформы уже редкость в плане энтузиастов на них программирующих.
Я вот совсем недавно "хакнул" свою уже морально устаревшую PS3 (благо "хак" там чисто программный) и уже тоже зашевелились мысли глядя на то что там в экосистеме творится - а не наваять ли графическое приложение под PS3? :) Но времени решительно нет уже.
> в наличии есть только на 32 килобайта
Для GBA 32Кб это конечно ни о чём. Это больше похоже на совместимость с GB(C).
Впрочем всякие EZ Flash для того и созданы чтобы всё что угодно запускать. Я лично смысл в физическом картридже на ПЗУ вижу рассматривать только с позиций физического же распространения.
FordPerfect
> А можно ссылку на детальный учебник по?
Скорее всего речь про первое что гуглится: https://en.wikibooks.org/wiki/PSP_Development
=A=L=X=
> так что прямо просилось оно на какой то ресурс где бы было более железобетонное
> редактирование с нормальными тегами code,
А, эта площадка не интересна для размещения статей http://demoscene.ru/
P.S. Можно, наверное, статьи и ссылки на них постить по разным сайтам, не ограничиваясь одним ресурсом.
Хабр, например, с недавнего времени допускает публикацию авторских статей размещённых ещё где то.
А, у меня есть оригинальная приставка GameBoy в полуразобранном состоянии, но как то на ней что то сделать ... (как плохому танцору :)
Rikk
> 32х32килобайта=1024килобайтов
> 16х256килобайта=4096килобайтов
32х32килобайта=128килобайтов
16х256килобайта=512килобайтов (или 256 килослов)
Знать о разрядности шины полезно в конкретном, например, микроконтроллере
так как, например у AVR 16-ти битная система команд, а в характеристиках указывают именно Килобайты, у PIC вообще ширина команды зависить от семейства (12, 14, 16 ...),
у MSP430 (16-ти разрядная, но может быть и больше в зависимости от способов адресации)
Форт на GameBoy тоже находится на Github :) https://github.com/search?q=gameboy+forth&type=
И, да, 32К... это достаточно много, например, в рамках использования Forth.
Например, игра разработанная на Форт была выпущена под DOS студией Electronic Arts в 1986. (разработанная Binary Systems) и размер её был около 300-400Кб в суммарном исполнении
Проект по реверсу её кода на Github https://github.com/s-macke/starflight-reverse
(хотя, исходники этой игры есть почти полные, но любитель решил всё же её полностью восстановить)
Есть и возможность "запустить" эту игру в рамках SDL в Windows, с небольшими "танцами с бубном"
(у меня получилось)
KPG
> Хабр, например, с недавнего времени допускает публикацию авторских статей
> размещённых ещё где то.
О, вот это они наконец то молодцы. А то я там покрутился-покрутился и ливнул из-за ощущения, что с тебя по каждому пункту хищнически требуют чтобы ты им популярность ковал, вся система от условий публикации до того как лайки работают на это была заточена. Типа трудись пчёлка, трудись, неси медок, а мы тебе обнулять будем статистику ежемесячно чтобы ты не дай бог не почувствовала что хватит. Прям неприятные остались ощущения, хотя сам материал там конечно классный, авторы молодцы, но вот как издание оно меня оттолкнуло. Хотя надо признать своего они добились - популярность в своей нише на максимуме.
Тема в архиве.