Forums Logo

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

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

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

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


Фанат
***

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





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

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

Два вопроса:
- нужно ли? есть ли еще интересующиеся темой?
- (потому что возможно, что) есть ли уже проделанная такая же работа? (сам не нашёл)

Сообщение отредактировал aa-dav - Среда, 03 октября 2018, 10:11
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
 
Reply to this topicStart new topicStart Poll
Ответов
hqqddy
post Понедельник, 19 июня 2017, 06:39
Отправлено #2


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

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





aa-dav как руки до SuperCard дотянутся, я проверю. но думаю, что все и так ок.
подскажите, как пропатчить ром на тип сейвера? PDшный ром, использует стандартный sram. При запуске в эмуле или при выборе типа сейвера в EverDrive все ок. Но при открытии рома тулзой типа GBATA тип сейвера не определяется. Вручную в хексе что на что заменить?

Сообщение отредактировал hqqddy - Понедельник, 19 июня 2017, 06:49
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
aa-dav
post Понедельник, 19 июня 2017, 11:15
Отправлено #3


Фанат
***

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





QUOTE (hqqddy @ Понедельник, 19 июня 2017, 06:39)

aa-dav как руки до SuperCard дотянутся, я проверю. но думаю, что все и так ок.
подскажите, как пропатчить ром на тип сейвера? PDшный ром, использует стандартный sram. При запуске в эмуле или при выборе типа сейвера в EverDrive все ок. Но при открытии рома тулзой типа GBATA тип сейвера не определяется. Вручную в хексе что на что заменить?
*


Мне остаётся только процитировать сабжевый туториал, часть про сохранения: http://antistupd.livejournal.com/3580.html

QUOTE

...
Однако просто начать писать и читать байты в адреса 0xE000000-0xE007FFF недостаточно. Дело в том что все остальные виды перезаписываемой памяти в GBA мапятся тоже на эти же адреса, но с другим интерфейсом, а заголовок картриджа не содержит никаких отметок о том какой тип перезаписываемой памяти используется. Игра просто знает сама какой чип находится в картридже и записывает в него данные нужным способом. С настоящим картриджем естественно никаких проблем это не вызывает, а вот нам придётся предпринять еще один шаг.
Дело в том, что эта проблема актуальна и для эмуляторов GBA и их разработчики подметили, что картриджи созданные с использованием официального SDK от Nintendo как правило содержат небольшие строчки помогающие идентифицировать чип сохранений:
EEPROM_Vnnn для EEPROM 512 байт или 8 Кб
SRAM_Vnnn для SRAM 32 Кб
FLASH_Vnnn для FLASH 64 Кб
FLASH512_Vnnn для FLASH 64 Кб (в новых картриджах)
FLASH1M_Vnnn для FLASH 128 Кб
Эти строчки должны располагаться по адресам кратным 4, а их длина тоже должна быть кратна 4 байтам (с заливкой нулями остатка). Официальные утилиты Nintendo как правило вставляют вместо 'nnn' цифры версий, но нам лучше так и оставлять их как 'nnn'.
Поэтому всё что нам остаётся сделать - это вставить в программу static массив из char с текстом "SRAM_Vnnn" и убедиться, что оптимизатор не выкинет его из финального образа.
...


Больше никакой информации о сохранениях в ROM-е быть не может, но даже эти строчки не дают 100%-ой гарантии, потому что в некоторых образах они не присутствуют или присутствуют сразу несколько. Поэтому большинство эмуляторов кроме анализа файла на маркеры всё-таки содержат базу данных игр (код игры прописывается обязательно в заголовке - в первой сотне байт картриджа) и ориентируются на неё. Последним можно тоже попытаться сманипулировать - прошить код известной игры с нужным типом сохранения, вот и все возможные варианты.
Формат заголовка можно посмотреть тут http://problemkaputt.de/gbatek.htm#gbacartridges
0A0h 12 Game Title (uppercase ascii, max 12 characters)
0ACh 4 Game Code (uppercase ascii, 4 characters)

Сообщение отредактировал aa-dav - Понедельник, 19 июня 2017, 11:20
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

Posts in this topic
aa-dav   Реактивное введение в программирование под GBA   Четверг, 20 апреля 2017, 10:47
MoonTurtle   может и не прав, но мне кажется что это нафиг не н...   Четверг, 20 апреля 2017, 11:12
aa-dav   Я там во введении сразу же и написал, что GBA об...   Четверг, 20 апреля 2017, 11:39
DUX   Ну, если наклепаете контр, кастельваний и марио ...   Четверг, 20 апреля 2017, 11:59
MoonTurtle   RE: Реактивное введение в программирование под GBA   Четверг, 20 апреля 2017, 12:01
aa-dav   А у кого-нибудь тут есть возможность заливать на к...   Вторник, 23 мая 2017, 08:54
Boris   Тема интересная, спасибо! Надо срочно купить ф...   Вторник, 23 мая 2017, 11:09
dimm0505   А что из высокоуровневых языков может быть более ...   Вторник, 23 мая 2017, 12:59
aa-dav   Сейчас запаковал текущее состояние проекта так ска...   Вторник, 23 мая 2017, 14:38
dimm0505   Качнул, попробую в ближайшие 2-3 дня "на риал...   Вторник, 23 мая 2017, 14:46
dimm0505   Запускается все, но вот только что там должно быть...   Среда, 24 мая 2017, 12:42
aa-dav   Спасибо большое! Да, похоже что всё верно рабо...   Среда, 24 мая 2017, 13:31
dimm0505   Ну тогда поздравляю, все запустилось, правда я за...   Среда, 24 мая 2017, 13:36
aa-dav   Ну отлично. Большое спасибо! Просьба еще, если...   Среда, 24 мая 2017, 13:44
Gashik   С сохранением ничего сложного. Была библиотека, ко...   Среда, 24 мая 2017, 20:58
hqqddy   aa-dav тебе бы железку купить за недорого с флешко...   Пятница, 26 мая 2017, 18:20
aa-dav   Я не железячник, я софтовик. Мне возится с желез...   Пятница, 26 мая 2017, 18:51
MichaelForExample   А почему на гитхабе репо не создать? Хоть следить ...   Пятница, 26 мая 2017, 22:31
aa-dav   Когда будет законченная версия и каждая строчка бу...   Суббота, 27 мая 2017, 18:38
MichaelForExample   Ну неужели лишний пуш сделать в ремут ветку трудн...   Суббота, 27 мая 2017, 20:05
УльтраБлокС   Я бы сказал так - игры пишутся в основном на ...   Суббота, 27 мая 2017, 22:16
aa-dav   Да ну, имхо тут это совершенно не нужно. Просто ...   Воскресенье, 28 мая 2017, 03:40
aa-dav   Вновь прошу проверить на настоящем GBA тест воспро...   Вторник, 06 июня 2017, 11:19
hqqddy   Все работает. Стресс-тест не вешает ром, срабатыва...   Среда, 07 июня 2017, 16:06
aa-dav   Большое спасибо! Это радует, значит осталось...   Среда, 07 июня 2017, 16:29
Gashik   провалится :) многие флешки как-раз патчат ром в ч...   Среда, 07 июня 2017, 17:00
aa-dav   Ну всё, дописал цикл эти уроков, обрамил оглавлени...   Четверг, 15 июня 2017, 04:12
hqqddy   Не работает сейв/восстановление. По крайней мере, ...   Пятница, 16 июня 2017, 15:40
aa-dav   Хмм... Жалко что не всё так просто, но там этого с...   Пятница, 16 июня 2017, 16:06
hqqddy   Ну это я сократил. EverDrive GBA http://krikzz.com...   Пятница, 16 июня 2017, 22:04
aa-dav   Читаю вот здесь https://gbatemp.net/review/everd...   Суббота, 17 июня 2017, 00:28
hqqddy   Я совсем на это не посмотрел. Как-то поигрался в с...   Суббота, 17 июня 2017, 00:44
aa-dav   Отличные новости!!! :) Спасибо за те...   Суббота, 17 июня 2017, 01:10
hqqddy   Спасибо. Помогло не очень, но интерес был спортивн...   Понедельник, 19 июня 2017, 15:44
aa-dav   Как нынче говорят - тизер. Кто вспомнит с какой пл...   Суббота, 24 июня 2017, 08:49
hqqddy   Четно, не имею понятия. Что мутите? Игру?   Суббота, 24 июня 2017, 19:01
aa-dav   Да на денди была такая Contra Force, сегодня повыд...   Суббота, 24 июня 2017, 19:51
hqqddy   А, щас вспомнил. Но в нее не часто играли, она из ...   Воскресенье, 25 июня 2017, 00:51


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

Упрощённая версия Сейчас: Вт., 23 апр. 2024, 19:25
Skin Designed (c) by Rooq.net, All Rights Reserved.