wip bob and associated optimisations

This commit is contained in:
alpine9000
2016-05-25 20:42:25 +10:00
parent bd3d11c705
commit 1597964870
9 changed files with 212 additions and 126 deletions
Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

+1 -1
View File
@@ -5,7 +5,7 @@
</tileset>
<layer name="background" width="200" height="16">
<data encoding="base64" compression="zlib">
eJztmsluAjEMhqdSObTqLnU5dN9EC+//fDUqlkbpZCa2/9gZyuETIAGO4zXOLLuuWyp5IV4Nv4/miDg2/P6UOCPOiYsG9JHodgCU5b0Piy3sf/y5ljytfl/Et0Huevt6OPG9nC2tdrkkrgTfT9d5TdwQt8Qd0B6IvCPVzbK3kn0YsvWUrPvkM8cD+18/PhZgato55Rn8f5Z1nwDkPxCPxJNQt6nczXbP1QCPfC3ZW+0+aO3IvvtGvHe4+Pjsvf/o/adVvzFq2tKy7jQnefmdhFwN8MhnNX3CKqtWfOTqh8aXSvGqTQjmslaE7+ZsiqirKdZzXgr77qr77dGj4yPalnPyuz1/ydXBqXNnjuj6oYl3zTxkDZDbKhpdvPUv6SenfDhihsn7FBUf1tlHCUN13EMukrG+U6MLSv/SOEP0k9YZZg72/bF92oX+qhbSXCutb3O+2ymNs5b7yY3v585C0f3VHEDk2rHeoVZeRKHt3S20cp8aER+WGdWe/4E1J6Hmg+y7rfVX2vjfhdjzuBvhmlBjxtoCqH6u1f6qpfsB77s8lO7SdVt6Gq89inr+Kqp+5M6yHue50nOxd6yidJeu29LTlMqy1neELSR5oNX6oUUyOyo9F6Nj1fo8a6l9W35uY2hPeF/G8pZGTjpfGMsDaX2Krh+7gPeZJ/ruBvm8+hCR87y0PuV8Fx0bG34AHDOqDg==
eJztmmdrAzEMhg/ag2vpho4P3Ys0zf//fVXoGYJ7XtJryXfNh4ckZMjasp1V13UrJsMI9/vWHBHHgu+fEmfEOXHRgD4luvVAWdp26EeGEfe6ljyufm59XLmb8fEwwx41/HJJXBV83l/nNXFD3BJ3QH9I7crRTWLbEjtM+Tol6957HcuPHkxNP/s8g39Psu4TgPwH4pF4KtTtIPG+83uoB2jU6xLbcu3A9aOL3TfivcPlx+fO84+d35TqF6OmLyXr9muSVtyVEOoBGvWsZkxIZdXKj1D/4MRSLlq9CcFc1oqI3ZBPEX3VR7rP83Gx+939zujW+WHtyznF3Z6/hPpgat8Zwrp/cPI9NVNPsQHIbRWOLtr658yTqRh+IV6NbGuVH9Kzjxym+riGXCSxuZOjC0r/3DxDzJNfxLqCbV3sx+y0hPmqFqW1trS/WdRFFLl51vI8uY390F7Ier6aA4haG5sdatVFFNzZXUIr96kW+SE5o9rzP5DWJNT5oIvd1uYrbv4vIfc07kZcT6hxxtoCqHmu1fmqpfsB7bs8lO6l65bMNFo2svr/lVX/CO1lNfZzufti7VxF6V66bslMkytL2t8RviipA632Dy4lZ0e5+2J0rnLubzj+bfl/G1M2GcbnsbrFkeOfL8TqgN+frPvHEtDe81jf3UjzO4XleZ7fn0Kxi86NLT+BOKjL
</data>
</layer>
</map>
+35 -10
View File
@@ -5,7 +5,6 @@
xdef BlitBackgroundTile
xref BlueFill
xref SimpleBlit
;; A(mask) B(bob) C(bg) D(dest)
;; - - - -
@@ -103,28 +102,54 @@ _BlitScroll:
BlitTile:
;; a0 - dest bitplane pointer
;; a1 - source tile pointer
;; d2 - y tile index
;; a0.l - dest bitplane pointer
;; a1.l - source tile pointer
;; d2.w - y tile index
movem.l d2/a0/a2,-(sp)
if 0
mulu.w #BITPLANE_WIDTH_BYTES*SCREEN_BIT_DEPTH*16,d2
adda.w d2,a0
endif
lea blitTileMuluTable(pc),a2
add.w d2,d2
adda.w 0(a2,d2.w),a0
WaitBlitter
movem.l d2/a0,-(sp)
move.w #0,BLTCON1(a6) ;
move.w #BC0F_SRCA|BC0F_DEST|$f0,BLTCON0(a6)
move.w #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
movem.l (sp)+,d2/a0/a2
rts
blitTileMuluTable:
dc.w BITPLANE_WIDTH_BYTES*SCREEN_BIT_DEPTH*16*0
dc.w BITPLANE_WIDTH_BYTES*SCREEN_BIT_DEPTH*16*1
dc.w BITPLANE_WIDTH_BYTES*SCREEN_BIT_DEPTH*16*2
dc.w BITPLANE_WIDTH_BYTES*SCREEN_BIT_DEPTH*16*3
dc.w BITPLANE_WIDTH_BYTES*SCREEN_BIT_DEPTH*16*4
dc.w BITPLANE_WIDTH_BYTES*SCREEN_BIT_DEPTH*16*5
dc.w BITPLANE_WIDTH_BYTES*SCREEN_BIT_DEPTH*16*6
dc.w BITPLANE_WIDTH_BYTES*SCREEN_BIT_DEPTH*16*7
dc.w BITPLANE_WIDTH_BYTES*SCREEN_BIT_DEPTH*16*8
dc.w BITPLANE_WIDTH_BYTES*SCREEN_BIT_DEPTH*16*9
dc.w BITPLANE_WIDTH_BYTES*SCREEN_BIT_DEPTH*16*10
dc.w BITPLANE_WIDTH_BYTES*SCREEN_BIT_DEPTH*16*11
dc.w BITPLANE_WIDTH_BYTES*SCREEN_BIT_DEPTH*16*12
dc.w BITPLANE_WIDTH_BYTES*SCREEN_BIT_DEPTH*16*13
dc.w BITPLANE_WIDTH_BYTES*SCREEN_BIT_DEPTH*16*14
dc.w BITPLANE_WIDTH_BYTES*SCREEN_BIT_DEPTH*16*15
BlitBackgroundTile:
;; a0 - dest bitplane pointer
;; a1 - source tile pointer
+50 -52
View File
@@ -16,11 +16,11 @@ DrawText8:
;; a1 - text
;; d0 - xpos
;; d1 - ypos
movem.l d0-d6/a0-a4,-(sp)
movem.l d0-d4/a1-a4,-(sp)
WaitBlitter
;; blitter config that is shared for every character
move.w #BC0F_SRCB|BC0F_SRCC|BC0F_DEST|BLIT_LF_MINTERM,d6 ; BLTCON0 value
move.w #BC0F_SRCB|BC0F_SRCC|BC0F_DEST|BLIT_LF_MINTERM,d4 ; BLTCON0 value
move.w #FONTMAP_WIDTH_BYTES-BLIT_WIDTH_BYTES,BLTBMOD(a6) ; B modulo
move.w #_BITPLANE_WIDTH_BYTES-BLIT_WIDTH_BYTES,BLTCMOD(a6) ; C modulo
move.w #_BITPLANE_WIDTH_BYTES-BLIT_WIDTH_BYTES,BLTDMOD(a6) ; D modulo
@@ -29,61 +29,43 @@ DrawText8:
move.w #$ffff,BLTADAT(a6) ; preload source mask so only BLTA?WM mask is used
move.l a1,a3 ; character pointer
move.l #font,a5 ; font pointer
move.w #FONTMAP_WIDTH_BYTES*_SCREEN_BIT_DEPTH*FONT_HEIGHT,d3 ; bytes per font line
;; move.w #FONTMAP_WIDTH_BYTES*_SCREEN_BIT_DEPTH*FONT_HEIGHT,d3 ; bytes per font line
.loop:
clr.l d2
move.b (a3)+,d2 ; get next character
cmp.b #0,d2 ; 0 terminates the string
beq .done
move.l a0,a4 ; bitplane pointer
bsr DrawChar8 ; draw it
add.l #FONT_WIDTH,d0 ; increment the x position
bra .loop
.done:
movem.l (sp)+,d0-d6/a0-a4
rts
DrawChar8:
;; kills d2,d4,d5,a1,a2,a4
;; d0 - xpos
;; d1 - ypos bytes
;; d2* - char
;; d3 - bytes per font line
;; d6 - bltcon0 value
;; a4* - bitplane
;; a5 - #font
sub.w #' ',d2 ; index = char - ' '
move.w d2,d5
lsr.w #5,d5 ; char / 32 = fontmap line
andi.w #$1f,d2 ; char index in line (char index - start of line index)
add.l #1,d5 ; while we have a weird font image, ' ' starts on second line
move.l a5,a1 ; #font
mulu.w d3,d5 ; d5 *= #FONTMAP_WIDTH_BYTES*_SCREEN_BIT_DEPTH*FONT_HEIGHT
add.w d5,a1 ; add y offset in lines to font address
add.w d2,a1 ; add offset into font
.blitChar8:
;; kills a4,d2,d4,d5
;; d0 - xpos
;; d1 - ypos bytes
;; d2.0 - odd character = 1, even character = 0
;; d3 - bytes per font line
;; d6 - bltcon0 value
;; a4 - display
;; a1 - object
;; a2 - mask
move.l d0,d4 ; xpos
move.l d0,d5 ; xpos
lsr.w #3,d4 ; d4 = xpos bytes
sub.w #' ',d2 ; index = char - ' '
move.w d2,d3
andi.w #$1f,d2 ; char index in line (char index - start of line index)
adda.w d2,a1 ; add offset into font
add.w #1<<5,d3 ; while we have a weird font image, ' ' starts on second line
;; lsr.w #5,d3 ; char / 32 = fontmap line
;; lsl.w #5,d3 ; d3 *= #FONTMAP_WIDTH_BYTES*_SCREEN_BIT_DEPTH*FONT_HEIGHT
andi.w #$e0,d3
lsl.w #5,d3
adda.w d3,a1 ; add y offset in lines to font address
move.w d0,d3 ; xpos
lsr.w #3,d3 ; d3 = xpos bytes
adda.w d3,a4 ; dest += XPOS_BYTES
adda.w d1,a4 ; dest += YPOS_BYTES
move.l d0,d3 ; xpos
WaitBlitter
btst #0,d2 ; check if odd or even char
beq .evenChar ;
.oddChar
subq #8,d5 ; offset the x position for the odd character
subq #8,d3 ; offset the x position for the odd character
move.w #$00FF,BLTAFWM(a6) ; select the second (odd) character in the word
subq #1,a4 ; move the destination pointer left by one byte
bra .continue
@@ -91,21 +73,37 @@ DrawChar8:
move.w #$FF00,BLTAFWM(a6) ; select the first character in the word
.continue:
;; this shift will give us the bits to shift (bits 0-3) in bits (12-15) of d5
swap d5 ; d5 << 12
lsr.l #4,d5 ;
move.w d5,BLTCON1(A6) ; set the shift bits 12-15, bits 00-11 cleared
;; this shift will give us the bits to shift (bits 0-3) in bits (12-15) of d3
swap d3 ; d3 << 12
lsr.l #4,d3 ;
move.w d3,BLTCON1(A6) ; set the shift bits 12-15, bits 00-11 cleared
move.l a1,BLTBPTH(a6) ; source bitplane
or.w d6,d5 ; d5 = BLTCON0 value
move.w d5,BLTCON0(a6) ; set minterm, dma channel and shift
add.l d4,a4 ; dest += XPOS_BYTES
add.l d1,a4 ; dest += YPOS_BYTES
or.w d4,d3 ; d3 = BLTCON0 value
move.w d3,BLTCON0(a6) ; set minterm, dma channel and shift
move.l a4,BLTCPTH(a6) ; background top left corner
move.l a4,BLTDPTH(a6) ; destination top left corner
move.w #(FONT_HEIGHT*_SCREEN_BIT_DEPTH)<<6|(BLIT_WIDTH_WORDS),BLTSIZE(a6) ;rectangle size, starts blit
move.w #(FONT_HEIGHT*_SCREEN_BIT_DEPTH)<<6|(BLIT_WIDTH_WORDS),BLTSIZE(a6) ;rectangle size, starts blit
add.l #FONT_WIDTH,d0 ; increment the x position
bra .loop
.done:
movem.l (sp)+,d0-d4/a1-a4
rts
DrawChar8:
;; kills d2,d3,a1,a2,a4
;; d0 - xpos
;; d1 - ypos bytes
;; d2* - char
;; d4 - bltcon0 value
;; a4* - bitplane
;; a5 - #font
rts
font:
incbin "out/font8x8.bin"
+1 -1
View File
@@ -45,5 +45,5 @@ BALOON_BOB: macro
endm
CLOUD_BOB: macro
BLITTER_OBJECT \1,320,\2,\3,24,18
BLITTER_OBJECT \1,320,\2,\3,0,16
endm
+31 -11
View File
@@ -13,19 +13,42 @@
;; BLITTER_OBJECT
;; index,startX,y,dx,mapLine,blitHeight
bob:
BALOON_BOB 0,15,24
CLOUD_BOB 0,15,8
endBob:
BALOON_BOB 1,150,32
CLOUD_BOB 2,64,8
CLOUD_BOB 3,170,12
CLOUD_BOB 1,96,10
CLOUD_BOB 2,170,12
BALOON_BOB 3,15,24
dc.l 0
ResetBobs:
move.w #2,bobsEnabled ; disables bob movement
bsr RestoreBobBackgrounds
bsr RenderBob
eor.l #4,bobBufferOffset
move.l backgroundOffscreen,a0
move.l backgroundOnscreen,backgroundOffscreen
move.l a0,backgroundOnscreen
bsr RestoreBobBackgrounds
bsr RenderBob
eor.l #4,bobBufferOffset
move.l backgroundOffscreen,a0
move.l backgroundOnscreen,backgroundOffscreen
move.l a0,backgroundOnscreen
move.w #0,bobsEnabled
lea bob,a5
.loop:
cmp.l #0,(a5)
beq .done
lea BOB_LAST_DEST_ADDRESS(a5),a1
move.l #0,(a1)
adda.l bobBufferOffset,a1
move.l #0,(a1)
move.l #320<<BOB_SHIFT_CONVERT,BOB_X(a5)
adda.l #endBob-bob,a5
bra .loop
.done:
rts
@@ -68,13 +91,6 @@ RestoreBobBackgrounds:
movem.l (sp)+,d0/a2
rts
SaveBackground:
;; a5.l bob address
;; kills a0,a2
rts
SaveBobBackgrounds:
WaitBlitter
move.w #$ffff,BLTAFWM(a6)
@@ -91,7 +107,10 @@ SaveBobBackgrounds:
beq .done
move.l BOB_X(a5),d2
cmp.w #2,bobsEnabled
beq .dontMoveBob
sub.l BOB_DX(a5),d2
.dontMoveBob:
cmp.l #-32<<BOB_SHIFT_CONVERT,d2
bgt .dontReset
move.l #320<<BOB_SHIFT_CONVERT,d2
@@ -133,6 +152,7 @@ RenderBob:
beq .dontRenderBobs
movem.l d0-a5,-(sp)
bsr SaveBobBackgrounds
WaitBlitter
+1 -1
View File
@@ -26,6 +26,7 @@ RenderNumber4:
jsr DrawText8
rts
RenderNumber5:
;; d0.l number
;; d1.w x position
@@ -92,7 +93,6 @@ DecrementCounter:
ToAscii:
;; d0.l number
;; d2.l numb chars
;; a0.l buffer
;; movem.l d0-d2/a1,-(a7)
lea staticBuffer,a0
move.l a0,a1
+92 -49
View File
@@ -7,42 +7,44 @@ RenderPathway:
move.l pathwayPlayerTileAddress,d5
andi.w #$fff0,d5 ; point the address to the last tile of the previous column
move.l d5,a4
move.w #0,d5
moveq #0,d5
move.l foregroundScrollX,d3
lsr.w #FOREGROUND_SCROLL_SHIFT_CONVERT,d3 ; convert to pixels
lsr.w #3,d3 ; bytes to scroll
move.l foregroundOffscreen,a3
bsr BlitTileLoopSetup
.loopX:
move.w #6,d6 ; y index
move.w #0,d7 ; number of rows without a pathway
moveq #6,d6 ; y index
moveq #0,d7 ; number of rows without a pathway
.loopY:
move.l pathwayMapPtr,a2
jsr GetMapTile
bsr GetMapTile
cmp.l a4,a2 ; search for the start column
ble .next
cmp.l pathwayPlayerTileAddress,a2
beq .next
move.l d0,a2
move.w (a2),d0
cmp.w #0,d0
beq .dontBlit
lea foregroundTilemap,a1
add.w d0,a1 ; source tile
move.l foregroundScrollX,d0
lsr.w #FOREGROUND_SCROLL_SHIFT_CONVERT,d0 ; convert to pixels
lsr.w #3,d0 ; bytes to scroll
move.l foregroundOffscreen,a0
add.l d0,a0
move.l #-BITPLANE_WIDTH_BYTES*SCREEN_BIT_DEPTH*8,d0
move.w d5,d4
mulu.w #2,d4
add.l d4,d0
add.l #10,d0
add.l d0,a0
move.l #10,d2
sub.l d6,d2
jsr BlitTile
move.l a3,a0 ; move.l foregroundOffscreen,a0
adda.w d3,a0
move.w #-BITPLANE_WIDTH_BYTES*SCREEN_BIT_DEPTH*8,d0
move.w d5,d4
add.w d4,d4 ; mulu.w #2,d4
add.w d4,d0
add.w #10,d0
adda.w d0,a0
moveq #10,d2
sub.w d6,d2
bsr BlitTileLoop
bra .next
.dontBlit:
add.w #1,d7
@@ -67,43 +69,41 @@ ClearPathway:
sub.w #1,pathwayClearPending
move.l foregroundPlayerTileAddress,d7
andi.w #$fff0,d7 ; address of the last tile in the previous column
move.w #0,d5 ; x index
moveq #0,d5 ; x index
lea foregroundTilemap,a3
;; stuff that is the same for every tile
move.l foregroundScrollX,d3
lsr.w #FOREGROUND_SCROLL_SHIFT_CONVERT,d3 ; convert to pixels
lsr.w #3,d3 ; bytes to scroll
bsr BlitTileLoopSetup
.loopX:
move.w #6,d6 ; y index
moveq #6,d6 ; y index
.loopY:
move.l foregroundMapPtr,a2 ;; todo: this will be too slow, it will render too many tiles
bsr GetMapTile
cmp.l d7,a2 ; finished clearing...
bgt .done
move.l d0,a2
move.w (a2),d0
if 0
move.l foregroundMapPtr,a3
move.w (a3),d0
endif
move.l a3,a1 ; lea foregroundTilemap,a1
add.w d0,a1 ; source tile
cmp.w #0,d0
beq .dontBlit
lea foregroundTilemap,a1
add.w d0,a1 ; source tile
move.l foregroundScrollX,d0
lsr.w #FOREGROUND_SCROLL_SHIFT_CONVERT,d0 ; convert to pixels
lsr.w #3,d0 ; bytes to scroll
move.l foregroundOffscreen,a0
add.l d0,a0
add.l d3,a0
move.l #-BITPLANE_WIDTH_BYTES*SCREEN_BIT_DEPTH*8,d0
move.w d5,d4
mulu.w #2,d4
move.w d5,d4
add.w d4,d4 ;; mulu.w #2,d4
add.l d4,d0
add.l #10,d0
add.l d0,a0
move.l #10,d2
sub.l d6,d2
jsr BlitTile
bsr BlitTileLoop
bra .next
.dontBlit:
.next:
@@ -158,22 +158,65 @@ GetMapTile:
;; calculate the a2 offset of the top right tile based on foreground scroll
move.l foregroundScrollX,d0
lsr.l #FOREGROUND_SCROLL_TILE_INDEX_CONVERT,d0
lsr.l #1,d0
lsr.w #FOREGROUND_SCROLL_TILE_INDEX_CONVERT+1,d0
and.b #$f0,d0
add.l d0,a2
adda.w d0,a2
move.l #(FOREGROUND_PLAYAREA_WIDTH_WORDS/2)-1,d1
sub.w d5,d1 ; x column
mulu.w #FOREGROUND_PLAYAREA_HEIGHT_WORDS*2,d1
sub.l d1,a2 ; player x if y == bottom ?
lsl.w #4,d1 ; mulu.w #FOREGROUND_PLAYAREA_HEIGHT_WORDS*2,d1
suba.w d1,a2 ; player x if y == bottom ?
sub.l d1,d1
move.w #FOREGROUND_PLAYAREA_HEIGHT_WORDS-1,d1
moveq #FOREGROUND_PLAYAREA_HEIGHT_WORDS-1,d1
sub.w d6,d1 ; y row
lsl.w #1,d1
add.l d1,a2
adda.w d1,a2
;; a2 now points at the tile at the coordinate
move.l a2,d0
rts
rts
BlitTileLoopSetup:
WaitBlitter
move.w #0,BLTCON1(a6)
move.w #BC0F_SRCA|BC0F_DEST|$f0,BLTCON0(a6)
move.w #TILEMAP_WIDTH_BYTES-2,BLTAMOD(a6)
move.w #BITPLANE_WIDTH_BYTES-2,BLTDMOD(a6) ;
move.w #$ffff,BLTAFWM(a6)
move.w #$ffff,BLTALWM(a6)
rts
BlitTileLoop:
;; a0.l - dest bitplane pointer
;; a1.l - source tile pointer
;; d2.w - y tile index
;; kills d2,a0,a2
lea blitTileLoopMuluTable(pc),a2
add.w d2,d2
adda.w 0(a2,d2.w),a0
WaitBlitter
move.l a1,BLTAPTH(a6) ; source
move.l a0,BLTDPTH(a6) ; dest
move.w #(16*SCREEN_BIT_DEPTH)<<6|(1),BLTSIZE(a6) ;rectangle size, starts blit
rts
blitTileLoopMuluTable:
dc.w BITPLANE_WIDTH_BYTES*SCREEN_BIT_DEPTH*16*0
dc.w BITPLANE_WIDTH_BYTES*SCREEN_BIT_DEPTH*16*1
dc.w BITPLANE_WIDTH_BYTES*SCREEN_BIT_DEPTH*16*2
dc.w BITPLANE_WIDTH_BYTES*SCREEN_BIT_DEPTH*16*3
dc.w BITPLANE_WIDTH_BYTES*SCREEN_BIT_DEPTH*16*4
dc.w BITPLANE_WIDTH_BYTES*SCREEN_BIT_DEPTH*16*5
dc.w BITPLANE_WIDTH_BYTES*SCREEN_BIT_DEPTH*16*6
dc.w BITPLANE_WIDTH_BYTES*SCREEN_BIT_DEPTH*16*7
dc.w BITPLANE_WIDTH_BYTES*SCREEN_BIT_DEPTH*16*8
dc.w BITPLANE_WIDTH_BYTES*SCREEN_BIT_DEPTH*16*9
dc.w BITPLANE_WIDTH_BYTES*SCREEN_BIT_DEPTH*16*10
dc.w BITPLANE_WIDTH_BYTES*SCREEN_BIT_DEPTH*16*11
dc.w BITPLANE_WIDTH_BYTES*SCREEN_BIT_DEPTH*16*12
dc.w BITPLANE_WIDTH_BYTES*SCREEN_BIT_DEPTH*16*13
dc.w BITPLANE_WIDTH_BYTES*SCREEN_BIT_DEPTH*16*14
dc.w BITPLANE_WIDTH_BYTES*SCREEN_BIT_DEPTH*16*15
+1 -1
View File
@@ -570,7 +570,7 @@ SelectNextPlayerSprite:
UpdatePlayerScore:
AddToScore 10
RenderPlayerScore:
RenderPlayerScore:
jsr RenderScore
move.l playerXColumn,d0
move.w #PANEL_COLUMNS_REMAINING_X,d1