Пример из Gentile
* Init VDP lea GFXCTRL,a0 ; GFX Control move #$8016,(a0) ; reg. 80, Enable Hor. Sync move #$8174,(a0) ; reg. 81, Enable Ver. Sync + Fast transfer move #$8238,(a0) ; reg. 82, A plane left half location = $E000 move #$8338,(a0) ; reg. 83, A plane right half location = $E000 move #$8405,(a0) ; reg. 84, B plane location = $E000 move #$8560,(a0) ; reg. 85, Sprite data table $C000 move #$8600,(a0) ; reg. 86, ? move #$8700,(a0) ; reg. 87, Background color #16 move #$8801,(a0) ; reg. 88, ? move #$8901,(a0) ; reg. 89, ? move #$8a01,(a0) ; reg. 8a, move #$8b00,(a0) ; reg. 8b, enabled interrupt 2 move #$8c00,(a0) ; reg. 8c, 40 cells mode move #$8d2e,(a0) ; reg. 8d, move #$8f02,(a0) ; reg. 8f, move #$9000,(a0) ; reg. 90, move #$9100,(a0) ; reg. 91, move #$92ff,(a0) ; reg. 92, move.w (sp)+,sr * Fill the palette move.l #$c0000000,GFXCTRL move.w #15,d0 lea rick_pal,a0 loopp: move.w (a0)+,GFXDATA dbf d0,loopp * Load the tiles move.l #$40000000,GFXCTRL move.w #$1f30,d0 ; (spoutnick:11936 bytes+rick:1728 bytes)/4 lea rick_tiles,a0 loopt: move.l (a0)+,GFXDATA dbf d0,loopt * Fill the tile map move.l #$60000003,GFXCTRL move.w #$640,d0 ;counter : 32*28=896 tiles lea spk_map,a0 loopm: move.l (a0)+,GFXDATA dbf d0,loopm
move #$8238,(a0) ; reg. 82, A plane left half location = $E000
Здесь устанавливается адрес расположения карты тайлов для Плана А в видеопамяти.
move #$8338,(a0) ; reg. 83, A plane right half location = $E000
Здесь на самом деле для Окна.
move #$8405,(a0) ; reg. 84, B plane location = $E000
Здесь для плана Б
move #$8560,(a0) ; reg. 85, Sprite data table $C000
Здесь для аттрибутов спрайтов.
move #$8700,(a0) ; reg. 87, Background color #16
В этом месте устанавливается номер цвета заднего фона в палитре
move #$8c00,(a0) ; reg. 8c, 40 cells mode
А здесь устанавливается режим 40 тайлов по горизонтали
* Fill the palette move.l #$c0000000,GFXCTRL ; move.w #15,d0; размер палитры в байтах lea rick_pal,a0;загружаем адрес палитры в роме loopp: move.w (a0)+,GFXDATA; цикл с передачей данных dbf d0,loopp
* Load the tiles move.l #$40000000,GFXCTRL; адрес в видеопамяти куда будем копировать графику тайлов move.w #$1f30,d0 ; (spoutnick:11936 bytes+rick:1728 bytes)/4 размер графики делённый на 4 lea rick_tiles,a0; адрес графики в роме loopt: move.l (a0)+,GFXDATA dbf d0,loopt
* Fill the tile map move.l #$60000003,GFXCTRL;адрес в видеопамяти куда будем копировать карту тайлов move.w #$640,d0 ;counter : 32*28=896 tiles lea spk_map,a0; адрес карты тайлов в роме loopm: move.l (a0)+,GFXDATA dbf d0,loopm