diff --git a/028.game2/constants.i b/028.game2/constants.i index 6267d77..4b871e9 100644 --- a/028.game2/constants.i +++ b/028.game2/constants.i @@ -3,6 +3,9 @@ FOREGROUND_DELAY_BIT equ 0 FOREGROUND_SCROLL_SHIFT_CONVERT equ 1 FOREGROUND_SCROLL_PIXELS equ 2 + +BACKGROUND_SCROLL_SHIFT_CONVERT equ 1 +BACKGROUND_SCROLL_PIXELS equ 2 SCREEN_WIDTH equ 320 SCREEN_HEIGHT equ 256 diff --git a/028.game2/game1.s b/028.game2/game1.s index 4ed8f3b..6f5a0b7 100644 --- a/028.game2/game1.s +++ b/028.game2/game1.s @@ -43,8 +43,7 @@ Entry: Reset: move.l #-FOREGROUND_SCROLL_PIXELS,foregroundScrollX ; x pos (d1) move.l #0,fg_tileIndex ; tile index (d3) - move.l #0,backgroundScrollX - move.l #0,bg_shift ; shift counter (d2) + move.l #-BACKGROUND_SCROLL_PIXELS,backgroundScrollX move.l #0,bg_tileIndex ; tile index (d3) jsr BlueFill move.l #-1,frameCount @@ -77,9 +76,8 @@ Update: bne .skipBackgroundUpdates ;; ---- Background updates ---------------------------------------- .backgroundUpdates: - add.l #1,backgroundScrollX + add.l #FOREGROUND_SCROLL_PIXELS,backgroundScrollX add.l #2,bg_tileIndex ; increment tile index by a word - bsr UpdateBackgroundShiftCounter .skipBackgroundUpdates: btst #FOREGROUND_DELAY_BIT,d6 @@ -107,7 +105,7 @@ HoriScrollPlayfield: ;; movem.l d0-d6,-(sp) move.l backgroundScrollX,d0 - + lsr.l #BACKGROUND_SCROLL_SHIFT_CONVERT,d0 ; convert to pixels move.w d0,d2 lsr.w #3,d0 ; bytes to scroll and.w #$F,d2 ; pixels = 0xf - (hpos - (hpos_bytes*8)) @@ -188,27 +186,20 @@ ClearForegroundTile RenderBackgroundTile: ;; a2 - map move.l backgroundScrollX,d0 + lsr.w #BACKGROUND_SCROLL_SHIFT_CONVERT,d0 ; convert to pixels lsr.w #3,d0 ; bytes to scroll move.l backgroundOffscreen,a0 add.l d0,a0 lea backgroundTilemap,a1 add.l #BITPLANE_WIDTH_BYTES-2,a0 ; dest add.w (a2),a1 ; source tile - move.l bg_shift,d2 + move.l backgroundScrollX,d2 + lsr.b #BACKGROUND_SCROLL_SHIFT_CONVERT,d2 ; convert to pixels + andi.w #$f,d2 ; find the shift component jsr BlitTile rts -UpdateBackgroundShiftCounter: - cmp.l #15,bg_shift - bne .s1 - move.l #0,bg_shift - bra .s2 -.s1: - add.l #1,bg_shift -.s2: - rts - Level3InterruptHandler: movem.l d0-a6,-(sp) @@ -280,8 +271,6 @@ foregroundScrollX: dc.l 0 fg_tileIndex: dc.l 0 -bg_shift: - dc.l 0 backgroundScrollX: dc.l 0 bg_tileIndex: diff --git a/028.game2/image.s b/028.game2/image.s index d58f95e..1e308a1 100644 --- a/028.game2/image.s +++ b/028.game2/image.s @@ -17,6 +17,7 @@ SwitchBuffers: ;; background is not double buffered move.l backgroundScrollX,d0 + lsr.l #BACKGROUND_SCROLL_SHIFT_CONVERT,d0 ; convert to pixels lsr.l #3,d0 ; bytes to scroll move.l backgroundOnscreen,a1 lea copperListBpl2Ptr,a0