Важная информация

User Tag List

Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 19

Тема: Sea Dragon GameBoy

  1. #1
    Veteran Аватар для nzeemin
    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    1,996
    Спасибо Благодарностей отдано 
    1,061
    Спасибо Благодарностей получено 
    1,224
    Поблагодарили
    478 сообщений
    Mentioned
    15 Post(s)
    Tagged
    0 Thread(s)

    Lightbulb Sea Dragon GameBoy

    Напомню, Андрей Жиглов (ace210) со товарищи сделал порт игры Sea Dragon на ZX Spectrum: http://zx.pk.ru/showthread.php?t=11233

    Страница оригинальной игры для TRS-80: http://www.trs-80.org/sea-dragon/
    Sea Dragon на SpeccyWiki: http://speccy.info/Sea_Dragon
    Скриншоты с разных платформ на MobyGames: http://www.mobygames.com/game/sea-dragon/screenshots

    Собственно, я задался целью сделать также порт под GameBoy, самую старую модель, вот такую:

    Чёрно-белый экран (строго говоря, зелёно-серый без подсветки), 160x144 пиксела, 4 градации серого. Z80-like процессор 4 МГц.



    На сегодня, 26.04.2011 сделан пока первый очень грубый набросок:
    - Главный экран с надписью
    - Игровой режим -- отрисовка ландшафта, скроллинг и управление лодкой
    - Часть ландшафта -- до пещер и пещеры

    Нужно делать дальше:
    - Решить проблему с неровным скроллингом -- часто есть рывки
    - Ограничить движение лодки
    - Столкновения с ландшафтом и другими объектами
    - Поведение мин и прочих объектов
    - и ещё много всего прочего...

    Исходники: http://code.google.com/p/nzeemin-ope...oy%2FSeaDragon

    Проект открытый, буду рад любой помощи -- советам, подсказкам, тестированию, критике.

    В аттаче файл seadragon.gb -- цепляем к любому эмулятору GB, например, VirtualBoyAdvance http://vba.ngemu.com/
    Кнопка Start -- переход в игровой режим.
    Вложения Вложения

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2
    Guru Аватар для jerri
    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,751
    Спасибо Благодарностей отдано 
    256
    Спасибо Благодарностей получено 
    266
    Поблагодарили
    200 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    а там разве не 4 цвета? в смысле градации серого
    С уважением,
    Jerri / Red Triangle.

  4. #3
    Veteran Аватар для nzeemin
    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    1,996
    Спасибо Благодарностей отдано 
    1,061
    Спасибо Благодарностей получено 
    1,224
    Поблагодарили
    478 сообщений
    Mentioned
    15 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от jerri Посмотреть сообщение
    а там разве не 4 цвета? в смысле градации серого
    В принципе да. Но на практике, там (по современным меркам) просто ужасный экран, различать эти градации довольно сложно. Да и чем контрастнее -- тем лучше. Так что я пока остановился на чисто чёрно-белом варианте.

  5. #4
    Guru Аватар для bigral
    Регистрация
    12.07.2006
    Адрес
    г. Киев, Украина
    Сообщений
    2,147
    Спасибо Благодарностей отдано 
    25
    Спасибо Благодарностей получено 
    95
    Поблагодарили
    82 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от nzeemin Посмотреть сообщение
    В принципе да. Но на практике, там (по современным меркам) просто ужасный экран, различать эти градации довольно сложно. Да и чем контрастнее -- тем лучше. Так что я пока остановился на чисто чёрно-белом варианте.
    Даже буквы сливаются на заставке, лучше обрисовать их тонкой каемкой из более светлого черного (так же само можно сделать с краями берега).

  6. #5
    Guru Аватар для jerri
    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,751
    Спасибо Благодарностей отдано 
    256
    Спасибо Благодарностей получено 
    266
    Поблагодарили
    200 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    nzeemin, на чем пишешь? чем компилишь?
    С уважением,
    Jerri / Red Triangle.

  7. #6
    Veteran Аватар для nzeemin
    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    1,996
    Спасибо Благодарностей отдано 
    1,061
    Спасибо Благодарностей получено 
    1,224
    Поблагодарили
    478 сообщений
    Mentioned
    15 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от bigral Посмотреть сообщение
    Даже буквы сливаются на заставке, лучше обрисовать их тонкой каемкой из более светлого черного (так же само можно сделать с краями берега).
    Слепленные буквы на заставке -- это уже традиция Sea Dragon, см. версию для Атари. Буквы нарисованы ландшафтом, поэтому как есть. Что касается обрисовки -- это явно снизит число вариантов комбинирования тайлов ландшафта. В общем, пока оставлю как есть.

    ---------- Post added at 20:23 ---------- Previous post was at 20:19 ----------

    Цитата Сообщение от jerri Посмотреть сообщение
    nzeemin, на чем пишешь? чем компилишь?
    Пишу на асме в нотепаде.
    Компилю и линкую пакетом RGBDS: http://www.otakunozoku.com/rednex-ga...opment-system/
    В качестве редактора уровней используется Tiled: http://sourceforge.net/apps/mediawik...itle=Main_Page
    Пара мелких утилит для конвертации написаны на C#.
    Гоняю в эмуляторе VisualBoyAdvance.

    ---------- Post added at 20:44 ---------- Previous post was at 20:23 ----------

    Некоторые технические детали.

    У GameBoy довольно интересная организация экрана. Как таковой сплошной экранной памяти (как в БК или хотя бы как в ZX Spectrum) вообще нету. Отдельно лежат тайлы 8x8 в количестве до 192 штук. На экран выводится проекция аж трёх планов, снизу вверх: фона, окна и объектов (т.е. спрайтов). И фон и окно -- это матрицы 32x32 индексов тайлов. И для фона и для окна можно задать координаты от угла, с точностью до пиксела -- тем самым, полноэкранный скроллинг не стоит буквально ничего, значение в регистр занести! Объекты (они же спрайты) -- это те же тайлы, но для каждого спрайта задано положение с точностью до пиксела, и цвет 00 считается прозрачным. При этом можно создать до 40-ка спрайтов размером 8x8 либо 8x16 (размер одинаков для всех спрайтов). Каждому спрайту можно задать отражение по вертикали и/или горизонтали -- тоже даром, один битик взвести. Но в одной строке может быть не более 10-ти спрайтов.
    В общем, получается вещь довольно удобная для разного рода платформеров и скроллеров -- загружаем кучу тайлов, набираем из них игровую сцену, сверху плюхаем подвижные спрайты. С другой стороны, работать с экраном как со сплошным полем -- довольно тяжело.

    В Sea Dragon использую все три плана: фон скроллируется попиксельно, над ним статичные индикаторы в окне, а над этим всем подвижные спрайты.
    Первая засада оказалась в том что окно, которое над фоном -- непрозрачно. Т.е. даже белые тайлы не позволяют увидеть под ними фон. Но оказалось, что можно ловить прерывание и перед каждой скан-строкой включать или выключать окно -- вывод строк окна приостанавливается или продолжается дальше.
    У меня выводятся вверху 17 строк окна (верхние две строки надписей), затем 115 строк скроллируемого фона, затем ещё 12 строк окна (индикатор воздуха).
    Получается, что высота видимой части фона -- примерно 14,5 знакомест. Поэтому ландшафт делается высотой в 15 тайлов. На хранении ландшафта не экономил, просто записываю линейно номера тайлов. Сейчас в целом ландшафт нарисован, занимает около 12 КБ.

  8. #7
    Guru Аватар для jerri
    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,751
    Спасибо Благодарностей отдано 
    256
    Спасибо Благодарностей получено 
    266
    Поблагодарили
    200 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    кстати по поводу рывков - не видел
    но есть 1 наблюдение

    при копировании данных спрайтов через ДМА во всех играх которые я ломал
    переброс осуществлялся из блока находящегося по адресу #ffхх
    как то так
    С уважением,
    Jerri / Red Triangle.

  9. #8
    Veteran Аватар для nzeemin
    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    1,996
    Спасибо Благодарностей отдано 
    1,061
    Спасибо Благодарностей получено 
    1,224
    Поблагодарили
    478 сообщений
    Mentioned
    15 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от jerri Посмотреть сообщение
    при копировании данных спрайтов через ДМА во всех играх которые я ломал
    переброс осуществлялся из блока находящегося по адресу #ffхх
    как то так
    Хорошо бы пример, потому как то что вы говорите плохо согласуется вот с этим:
    http://gbdev.gg8.se/wiki/articles/Vi..._DMA_Transfers
    Вы уверены что в вашем случае был GB а не GBC?

    ---------- Post added at 14:24 ---------- Previous post was at 13:01 ----------

    В общем походу понял я про DMA.
    В примерах везде переносят код работы с DMA в область High RAM. Дело в том, что пока работает DMA, чтение из памяти невозможно, кроме HRAM. Соответственно, код ожидания тоже может исполняться только оттуда.
    Спасибо за подсказку.
    Последний раз редактировалось nzeemin; 29.04.2011 в 15:52.

  10. #9
    Guru Аватар для jerri
    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,751
    Спасибо Благодарностей отдано 
    256
    Спасибо Благодарностей получено 
    266
    Поблагодарили
    200 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    я смотрел в Trip World там именно на адрес #ff80 переносится эта процедура.

    ковырял no$gmb - там удобный дебуггер
    С уважением,
    Jerri / Red Triangle.

  11. #10
    Veteran Аватар для nzeemin
    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    1,996
    Спасибо Благодарностей отдано 
    1,061
    Спасибо Благодарностей получено 
    1,224
    Поблагодарили
    478 сообщений
    Mentioned
    15 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Странное дело по поводу инструкций HALT.
    Судя по доке, рекомендуется их применять как можно чаще, с тем чтобы экономить батарею, и HALT должен останавливать процессор до следующего прерывания. Но на практике я вижу что эмуляторы no$gmb и bgb отрабатывают появление HALT просто как зависание. При этом в эмуляторах KiGB и VisualBoyAdvance всё нормально.
    Видимо, есть ещё какие-то тонкости вокруг этой инструкции.

Страница 1 из 2 12 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Sea Dragon
    от ace210 в разделе Игры
    Ответов: 585
    Последнее: 15.10.2017, 12:51
  2. Nintendo GameBoy
    от BYTEMAN в разделе Nintendo
    Ответов: 13
    Последнее: 28.07.2010, 11:55
  3. Куплю в Белоруси(желательно в Бресте) Nintendo GameBoy
    от Ash Ketchum в разделе Барахолка (архив)
    Ответов: 0
    Последнее: 07.09.2009, 16:44
  4. Звездное наследие для gameboy и не только
    от F0lken в разделе Зарубежные компьютеры
    Ответов: 9
    Последнее: 25.11.2008, 00:57
  5. New CEZ Silver game: Mariano the dragon
    от riskej в разделе Игры
    Ответов: 8
    Последнее: 16.05.2008, 13:37

Ваши права

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