avoid fully recomputing HL while loading cells to HRAM, 10 => 9 VBLs

This commit is contained in:
2019-01-01 02:53:41 +01:00
parent 8d95806abe
commit 6429f8ec92

View File

@@ -107,27 +107,16 @@ ENDM
LoadCellToHRAM: MACRO LoadCellToHRAM: MACRO
; \1 = offset to Old pointer ; \1 = offset to Old pointer
; destroys A, D, E, H, L ; destroys A, H, L
; increments C ; increments C
; does not touch B, D, E
; load old pointer into hl
ld hl, Old
ld a, [hl+]
ld h, [hl]
ld l, a
; add offset
IF \1 != 0
ld de, \1
add hl, de
ENDC
; load neighbor ; load neighbor
ld a, [hl] ld a, [hl]
; store in HRAM ; store in HRAM
ld [$FF00+c], a ld [$FF00+c], a
; increment hram pointer ; increment hram pointer
inc c inc c
ENDM ENDM
@@ -140,16 +129,38 @@ ConwayGroup: MACRO
; pointer to HRAM ; pointer to HRAM
ld c, LOW(Cells) ld c, LOW(Cells)
; load old pointer into hl
ld hl, Old
ld a, [hl+]
ld h, [hl]
ld l, a
; load current 2x2 cell then neighbor 2x2 cells to HRAM from old buffer ; load current 2x2 cell then neighbor 2x2 cells to HRAM from old buffer
LoadCellToHRAM 0 LoadCellToHRAM
LoadCellToHRAM \1 ld de, \1
LoadCellToHRAM \2 add hl, de
LoadCellToHRAM \3 LoadCellToHRAM
LoadCellToHRAM \4 ld de, \2 - \1
LoadCellToHRAM \5 add hl, de
LoadCellToHRAM \6 LoadCellToHRAM
LoadCellToHRAM \7 ld de, \3 - \2
LoadCellToHRAM \8 add hl, de
LoadCellToHRAM
ld de, \4 - \3
add hl, de
LoadCellToHRAM
ld de, \5 - \4
add hl, de
LoadCellToHRAM
ld de, \6 - \5
add hl, de
LoadCellToHRAM
ld de, \7 - \6
add hl, de
LoadCellToHRAM
ld de, \8 - \7
add hl, de
LoadCellToHRAM
; reset result ; reset result
xor a xor a