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:
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user