diff --git a/028.bs/Makefile b/028.bs/Makefile index d758162..e34e0c6 100644 --- a/028.bs/Makefile +++ b/028.bs/Makefile @@ -103,7 +103,7 @@ out/%_tileFadeFrom.pal: assets/%_foreground_playarea.pal out/%_tileFadeTo.pal: assets/%_foreground_playarea.pal cat assets/$*_foreground_playarea.pal | tail -3 | head -2 > out/$*_tileFadeTo.pal -out/background.bin: assets/assets.png +out/background.bin: assets/background.png $(IMAGECON) --use-palette=assets/paletteA_background.pal --input $< $(IMAGECON_ARGS) --colors 8 --output-bitplanes --output-palette --full-color-palette-file --output-palette-asm --output-grey-palette --output-palette --output-png --output-copperlist --output out/background --palette-offset 8 out/panel.bin: assets/panel.png diff --git a/028.bs/assets/assets.png b/028.bs/assets/assets.png index 9a44527..cd62c6b 100644 Binary files a/028.bs/assets/assets.png and b/028.bs/assets/assets.png differ diff --git a/028.bs/assets/background.png b/028.bs/assets/background.png new file mode 100644 index 0000000..85dd497 Binary files /dev/null and b/028.bs/assets/background.png differ diff --git a/028.bs/background.s b/028.bs/background.s index d39e684..39655f7 100644 --- a/028.bs/background.s +++ b/028.bs/background.s @@ -36,7 +36,7 @@ RenderBackgroundTile: move.l backgroundScrollX,d2 lsr.b #BACKGROUND_SCROLL_SHIFT_CONVERT,d2 ; convert to pixels andi.w #$f,d2 ; find the shift component - jsr BlitTile + jsr BlitBackgroundTile cmp.l #backgroundBitplanes1,backgroundOffscreen bne .offsetSub add.l #backgroundBitplanes2-backgroundBitplanes1,a0 @@ -44,7 +44,7 @@ RenderBackgroundTile: .offsetSub: sub.l #backgroundBitplanes2-backgroundBitplanes1,a0 .doBlit: - jsr BlitTile + jsr BlitBackgroundTile rts RenderNextBackgroundFrame: diff --git a/028.bs/background.tmx b/028.bs/background.tmx index ab2ef99..721dcce 100644 --- a/028.bs/background.tmx +++ b/028.bs/background.tmx @@ -1,11 +1,11 @@ - - + + - eJztmssNwjAMhrsA4sICIF4LQMtjBR4LwA6w/wH3gFRFJbEdhwbyH74DUhqSz2oSu2mqqpp0mDu/P9Ew27UsiCWxItbM/m7EPTA2yRg0c4ILuAhRG/SxI/bEgTgyn3kQT6Mxv/1x4gEXcBE7r5YpMWO2PRFn4kJcjf7/W/GAi7JdjJV9bojtgHNqkb73vnjUzD7goiwX2vcjNZz923oNtFxH4eI/XAy5r8VivT/DBVxI6asXlApcwIVLTL2gyyiDucAFXPwS3DxKUhPxYdUPXMAFl5g6ODePktREfOtR6toKXMCFJbnUv3MALuAiJ5BfwoXEheYMluK7fCrc/dWXX8IFXLjtNGcw6XcY6zwoVRzgAi4skJ4TY/KgvvzKFwfufVO4gItYtLUIyT1jzZ3kUBxcFxb3oOGiLBcv7ZMzAQ== + eJztmstuAjEMRQepLEAqL4mWBX3ACvr/H1hvKlWjycP2je0MLM6qmjq24xvH4TYMw03IhbgqvvdmRawV378SG2JL7AL4w/FtAbQVOQ6e/t2JH4D9l8LfU7nU5mVPHBTrPBJvxDtxAuYDoTtc3zSx5cRhKtclW2dgbCW0yvPc1/1BfBJfxDfju5J2/+lO6gyw0GtObKVx8MrjckQpR1r/crTMpWbdU5oUrU9InQEW+6nlnkDbKp2341yj86w537w1fo5rRexdy55Fe88rwe3zI+XZUoceaa09kToHS/fOqHmW1DtiHtJaZyyR+GLtf02fUdrDvc8wJWhnH73ZlZLrUSS+oPyvrTNEn4GaYUp9eIKJH/d861kXa+sscj9pqZXe8+Oo8cv1Dq10EYVH7x7lPbVG6yTxWWT+9xxr6AkWrSZFmhu1QFr/c6g9i7cRr3mOFZH7OQSR6t/6LQ/lO3fdmp7GKkbR3lVzILQ61YNZ1H/tvdi6VlG+c9et6WlqbWn3DCIXqHkVqlYt52ec2VHtvRhdq9r3m9p49vS7jf/31ZxuSeyMe8mcDnBmiZJancp9b28NXKzvPN7xRP5efQrPeR7HNlp/fgE3ztiW diff --git a/028.bs/blit.s b/028.bs/blit.s index f77f007..d0de5ea 100644 --- a/028.bs/blit.s +++ b/028.bs/blit.s @@ -2,6 +2,7 @@ xdef BlitFillColor xdef BlitTile + xdef BlitBackgroundTile xref BlueFill xref SimpleBlit @@ -123,6 +124,29 @@ BlitTile: move.w #(16*SCREEN_BIT_DEPTH)<<6|(1),BLTSIZE(a6) ;rectangle size, starts blit movem.l (sp)+,d2/a0 rts + +BlitBackgroundTile: + ;; a0 - dest bitplane pointer + ;; a1 - source tile pointer + ;; d2 - y tile index + + WaitBlitter + movem.l d2/a0,-(sp) + move.w #0,BLTCON1(a6) ; + move.w #BC0F_SRCA|BC0F_DEST|$f0,BLTCON0(a6) + + move.w #BACKGROUND_TILEMAP_WIDTH_BYTES-2,BLTAMOD(a6) + move.w #BITPLANE_WIDTH_BYTES-2,BLTDMOD(a6) ; + + mulu.w #BITPLANE_WIDTH_BYTES*SCREEN_BIT_DEPTH*16,d2 + add.l d2,a0 + move.l a1,BLTAPTH(a6) ; source + move.l a0,BLTDPTH(a6) ; dest + move.w #$ffff,BLTAFWM(a6) + move.w #$ffff,BLTALWM(a6) + move.w #(16*SCREEN_BIT_DEPTH)<<6|(1),BLTSIZE(a6) ;rectangle size, starts blit + movem.l (sp)+,d2/a0 + rts BlueFill: diff --git a/028.bs/constants.i b/028.bs/constants.i index e4d6276..5725b0b 100644 --- a/028.bs/constants.i +++ b/028.bs/constants.i @@ -92,6 +92,10 @@ BITPLANE_WIDTH_WORDS equ BITPLANE_WIDTH_BYTES/2 TILEMAP_WIDTH equ 320 TILEMAP_WIDTH_BYTES equ TILEMAP_WIDTH/8 TILEMAP_WIDTH_WORDS equ TILEMAP_WIDTH_BYTES/2 +BACKGROUND_TILEMAP_WIDTH equ 128 +BACKGROUND_TILEMAP_WIDTH_BYTES equ BACKGROUND_TILEMAP_WIDTH/8 +BACKGROUND_TILEMAP_WIDTH_WORDS equ BACKGROUND_TILEMAP_WIDTH_BYTES/2 + SCREEN_BIT_DEPTH equ 3