RSS лента

Shiny

Назад к GBC

Оценить эту запись
[IMG]https://upload.wikimedia.org/wikipedia/commons/thumb/f/f9/Game-Boy-Color-Purple.jpg/220px-Game-Boy-Color-Purple.jpg[/IMG]

Разбирая материалы на жестком диске наткнулся на заброшенный проект - демо, которое я писал для Chaos Constructions 2014.
Одна из частей представляла собой DYCP и сам эффект выглядел достаточно убого, риснул скролл исправить
Скачать можно [URL="http://g0blinish.ucoz.ru/gbc/piggy.zip"]здесь[/URL], запустите эмулятор bgb и сбросьте на окно файл piggy.gb. С исходниками можно ознакомиться просмотрев piggy.asm.
Файл сборки - assemble.bat, ассемблер приложен.

Для ознакомления с архитектурой gbc предлагаю ознакомиться с моей [URL="http://g0blinish.ucoz.ru/gbc/GameBoyColor.chm"]компиляцией материалаGameBoyColor.chm[/URL] или прочитать [URL="http://g0blinish.ucoz.ru/Articles/gbc.zip"]статью[/URL] для журнала Downgrade.

Еще один образец - [URL="http://g0blinish.ucoz.ru/gbc/plasma.zip"]плазма[/URL].

Коротко о реализации DYCP:
Для скролла используются спрайты, существуют некоторые трудности формирования спрайтов:
- известный SpriteBug : при использовании INC HL/DE/BC область памяти для спрайтов портится.
- при прямой записи данных в область спрайтов необходимо опрашивать статус порта, поэтому я реализовал формирование данных в памяти и переброску с помощью DMA
Согласно спецификациям делается это так:

[CODE]
ld a,$C1;DMA coy $C100 to OAM
ld [$FF46], a

ld a,$28 ; wait until DMA completes (160 microseconds)
wlp
dec a
jr nz,wlp
[/CODE]

Спрайты задаются следующими данными:
;form sprites at $FE00, $FF80-fariables
Y координата
X координата
номер тайла
флаг:%00001000(Byte3)
;Byte3 - Attributes/Flags:
; Bit7 OBJ-to-BG Priority (0=OBJ Above BG, 1=OBJ Behind BG color 1-3)
; (Used for both BG and Window. BG color 0 is always behind OBJ)
; Bit6 Y flip (0=Normal, 1=Vertically mirrored)
; Bit5 X flip (0=Normal, 1=Horizontally mirrored)
; Bit4 Palette number **Non CGB Mode Only** (0=OBP0, 1=OBP1) =0
; Bit3 Tile VRAM-Bank **CGB Mode Only** (0=Bank 0, 1=Bank 1)
; Bit2-0 Palette number **CGB Mode Only** (OBP0-7)

Да пребудет с Вами олдскул!
Метки: coding, gbc, retro Добавить / редактировать метки
Категории
Без категории

Комментарии

  1. Аватар для Raider
    Хорошая работа!
  2. Аватар для Shiny
    [QUOTE=Raider;bt596]Хорошая работа![/QUOTE]
    ну хоть кто-то посмотрел(:
  3. Аватар для alk0v
    Вот бы на живом глянуть
  4. Аватар для Shiny
    [QUOTE=alk0v;bt598]Вот бы на живом глянуть :)[/QUOTE]
    помочь не могу, увы:( bgb эмулирует нормально по идее.