Updated BG scroll register behaviour using anomie's formula. Got it done thanks to pagefault, too. Look at that bad-ass ASM, all cute in its macro.

This commit is contained in:
grinvader
2005-11-06 01:22:22 +00:00
parent 0e5094b120
commit 6d03880a72

View File

@@ -635,93 +635,59 @@ reg210Cw:
mov [bg4objptr],bx mov [bg4objptr],bx
ret ret
section .data
NEWSYM bgscrolPrev, db 0
section .text
%macro UpdateScrollReg 1
mov bh,al
mov bl,[bgscrolPrev]
mov [bgscrolPrev],al
shl ebx,13
mov bh,[%1+1]
shl bh,5
shr ebx,13
mov [%1],bx
%endmacro
; BG1 horizontal scroll register ; BG1 horizontal scroll register
reg210Dw: reg210Dw:
xor ebx,ebx UpdateScrollReg bg1scrolx
mov [bg1scrolx],al
shl word[bg1scrolx],8
mov bl,[bgscroltemp]
add word[bg1scrolx],bx
mov [bgscroltemp],al
ret ret
; BG1 vertical scroll register ; BG1 vertical scroll register
reg210Ew: reg210Ew:
xor ebx,ebx UpdateScrollReg bg1scroly
mov [bg1scroly],al
shl word[bg1scroly],8
mov bl,[bgscroltemp]
add word[bg1scroly],bx
mov [bgscroltemp],al
ret ret
SECTION .bss
bgscroltemp resb 1
SECTION .text
; BG2 horizontal scroll register ; BG2 horizontal scroll register
reg210Fw: reg210Fw:
xor ebx,ebx UpdateScrollReg bg2scrolx
mov [bg2scrolx],al
shl word[bg2scrolx],8
mov bl,[bgscroltemp]
add word[bg2scrolx],bx
mov [bgscroltemp],al
ret ret
; BG2 vertical scroll register ; BG2 vertical scroll register
reg2110w: reg2110w:
xor ebx,ebx UpdateScrollReg bg2scroly
mov [bg2scroly],al
shl word[bg2scroly],8
mov bl,[bgscroltemp]
add word[bg2scroly],bx
mov [bgscroltemp],al
ret ret
; BG3 horizontal scroll register ; BG3 horizontal scroll register
reg2111w: reg2111w:
xor ebx,ebx UpdateScrollReg bg3scrolx
mov [bg3scrolx],al
shl word[bg3scrolx],8
mov bl,[bgscroltemp]
add word[bg3scrolx],bx
mov [bgscroltemp],al
ret ret
section .data
NEWSYM latchbg3, db 0
section .text
; BG3 vertical scroll register ; BG3 vertical scroll register
reg2112w: reg2112w:
xor ebx,ebx UpdateScrollReg bg3scroly
mov [bg3scroly],al
shl word[bg3scroly],8
mov bl,[bgscroltemp]
add word[bg3scroly],bx
mov [bgscroltemp],al
ret ret
; BG4 horizontal scroll register ; BG4 horizontal scroll register
reg2113w: reg2113w:
xor ebx,ebx UpdateScrollReg bg4scrolx
mov [bg4scrolx],al
shl word[bg4scrolx],8
mov bl,[bgscroltemp]
add word[bg4scrolx],bx
mov [bgscroltemp],al
ret ret
; BG4 vertical scroll register ; BG4 vertical scroll register
reg2114w: reg2114w:
xor ebx,ebx UpdateScrollReg bg4scroly
mov [bg4scroly],al
shl word[bg4scroly],8
mov bl,[bgscroltemp]
add word[bg4scroly],bx
mov [bgscroltemp],al
ret ret
; Video port control ; Video port control