use screen size constants directly...

This commit is contained in:
2021-11-30 23:21:47 +01:00
parent bab32fa68d
commit 9c0346bc61
5 changed files with 25 additions and 32 deletions

View File

@@ -1,5 +1,6 @@
INCLUDE "hardware.inc"
INCLUDE "automata.inc"
BUFFER_SIZE = SCRN_X_B * SCRN_Y_B
; automata buffers with 4 cells per byte
; 2x2 bytes per cell, bit ordering:
@@ -157,19 +158,19 @@ SECTION "Update Automata", ROM0
UpdateAutomata:
.topleft
; handle top left corner
ConwayGroup 1, (TILE_WIDTH + 1), TILE_WIDTH, (2 * TILE_WIDTH - 1), (TILE_WIDTH - 1), (BUFFER_SIZE - 1), (BUFFER_SIZE - TILE_WIDTH), (BUFFER_SIZE - TILE_WIDTH + 1)
ConwayGroup 1, (SCRN_X_B + 1), SCRN_X_B, (2 * SCRN_X_B - 1), (SCRN_X_B - 1), (BUFFER_SIZE - 1), (BUFFER_SIZE - SCRN_X_B), (BUFFER_SIZE - SCRN_X_B + 1)
; advance to next cell in top row
ld hl, Progress
inc [hl]
; handle all cells in top row except corners
ld a, (TILE_WIDTH - 2)
ld a, (SCRN_X_B - 2)
.top
ld [XLoop], a
; handle top row cell
ConwayGroup 1, (TILE_WIDTH + 1), TILE_WIDTH, (TILE_WIDTH - 1), -1, (BUFFER_SIZE - TILE_WIDTH - 1), (BUFFER_SIZE - TILE_WIDTH), (BUFFER_SIZE - TILE_WIDTH + 1)
ConwayGroup 1, (SCRN_X_B + 1), SCRN_X_B, (SCRN_X_B - 1), -1, (BUFFER_SIZE - SCRN_X_B - 1), (BUFFER_SIZE - SCRN_X_B), (BUFFER_SIZE - SCRN_X_B + 1)
; advance to next cell in top row
ld hl, Progress
@@ -182,18 +183,18 @@ UpdateAutomata:
; handle top right corner
.topright
ConwayGroup (-TILE_WIDTH + 1), 1, TILE_WIDTH, (TILE_WIDTH - 1), -1, (BUFFER_SIZE - TILE_WIDTH - 1), (BUFFER_SIZE - TILE_WIDTH), (BUFFER_SIZE - 2 * TILE_WIDTH + 1)
ConwayGroup (-SCRN_X_B + 1), 1, SCRN_X_B, (SCRN_X_B - 1), -1, (BUFFER_SIZE - SCRN_X_B - 1), (BUFFER_SIZE - SCRN_X_B), (BUFFER_SIZE - 2 * SCRN_X_B + 1)
; advance pointers to next row
ld hl, Progress
inc [hl]
ld a, (TILE_HEIGHT - 2)
ld a, (SCRN_Y_B - 2)
.leftcolumn
ld [YLoop], a
; handle first element in row
ConwayGroup 1, (TILE_WIDTH + 1), TILE_WIDTH, (2 * TILE_WIDTH - 1), (TILE_WIDTH - 1), -1, (-TILE_WIDTH), (-TILE_WIDTH + 1)
ConwayGroup 1, (SCRN_X_B + 1), SCRN_X_B, (2 * SCRN_X_B - 1), (SCRN_X_B - 1), -1, (-SCRN_X_B), (-SCRN_X_B + 1)
; advance to next cell
ld hl, Progress
@@ -204,7 +205,7 @@ UpdateAutomata:
ld [XLoop], a
; handle element inside row
ConwayGroup 1, (TILE_WIDTH + 1), TILE_WIDTH, (TILE_WIDTH - 1), -1, (-TILE_WIDTH - 1), (-TILE_WIDTH), (-TILE_WIDTH + 1)
ConwayGroup 1, (SCRN_X_B + 1), SCRN_X_B, (SCRN_X_B - 1), -1, (-SCRN_X_B - 1), (-SCRN_X_B), (-SCRN_X_B + 1)
; advance to next cell
ld hl, Progress
@@ -223,7 +224,7 @@ UpdateAutomata:
; handle last element in row
.rightcolumn
ConwayGroup (-TILE_WIDTH + 1), 1, TILE_WIDTH, (TILE_WIDTH - 1), -1, (-TILE_WIDTH - 1), -TILE_WIDTH, (-2 * TILE_WIDTH + 1)
ConwayGroup (-SCRN_X_B + 1), 1, SCRN_X_B, (SCRN_X_B - 1), -1, (-SCRN_X_B - 1), -SCRN_X_B, (-2 * SCRN_X_B + 1)
; advance to next row
ld hl, Progress
@@ -236,19 +237,19 @@ UpdateAutomata:
; handle bottom left element
.bottomleft
ConwayGroup 1, (-BUFFER_SIZE + TILE_WIDTH + 1), (-BUFFER_SIZE + TILE_WIDTH), (-BUFFER_SIZE + 2 * TILE_WIDTH - 1), (TILE_WIDTH - 1), -1, (-TILE_WIDTH), (-TILE_WIDTH + 1)
ConwayGroup 1, (-BUFFER_SIZE + SCRN_X_B + 1), (-BUFFER_SIZE + SCRN_X_B), (-BUFFER_SIZE + 2 * SCRN_X_B - 1), (SCRN_X_B - 1), -1, (-SCRN_X_B), (-SCRN_X_B + 1)
; advance to next cell in bottom row
ld hl, Progress
inc [hl]
; handle all cells in bottom row except corners
ld a, TILE_WIDTH - 2
ld a, SCRN_X_B - 2
.bottom
ld [XLoop], a
; handle top row cell
ConwayGroup 1, (-BUFFER_SIZE + TILE_WIDTH + 1), (-BUFFER_SIZE + TILE_WIDTH), (-BUFFER_SIZE + TILE_WIDTH - 1), -1, (-TILE_WIDTH - 1), (-TILE_WIDTH), (-TILE_WIDTH + 1)
ConwayGroup 1, (-BUFFER_SIZE + SCRN_X_B + 1), (-BUFFER_SIZE + SCRN_X_B), (-BUFFER_SIZE + SCRN_X_B - 1), -1, (-SCRN_X_B - 1), (-SCRN_X_B), (-SCRN_X_B + 1)
; advance to next cell in top row
ld hl, Progress
@@ -261,7 +262,7 @@ UpdateAutomata:
; handle last element
.bottomright
ConwayGroup (-TILE_WIDTH + 1), (-BUFFER_SIZE + 1), (-BUFFER_SIZE + TILE_WIDTH), (-BUFFER_SIZE + TILE_WIDTH - 1), -1, (-TILE_WIDTH - 1), (-TILE_WIDTH), (-2 * TILE_WIDTH + 1)
ConwayGroup (-SCRN_X_B + 1), (-BUFFER_SIZE + 1), (-BUFFER_SIZE + SCRN_X_B), (-BUFFER_SIZE + SCRN_X_B - 1), -1, (-SCRN_X_B - 1), (-SCRN_X_B), (-2 * SCRN_X_B + 1)
; move buffer address back to beginning
ld hl, Old

View File

@@ -1,6 +0,0 @@
CELLS_WIDTH = 40
CELLS_HEIGHT = 36
CELLS_PER_TILE = 2
TILE_WIDTH = CELLS_WIDTH / CELLS_PER_TILE
TILE_HEIGHT = CELLS_HEIGHT / CELLS_PER_TILE
BUFFER_SIZE = TILE_WIDTH * TILE_HEIGHT

View File

@@ -1,6 +1,5 @@
INCLUDE "hardware.inc"
INCLUDE "utils.inc"
INCLUDE "automata.inc"
SPRITE_ANIM_DELAY EQU 6
REPEAT_START_DELAY EQU 16
@@ -17,9 +16,9 @@ SpriteDelay: ds 1
EXPORT InitEdit
SECTION "Init edit", ROM0
InitEdit:
ld a, TILE_WIDTH
ld a, SCRN_X_B
ldh [SelectX], a
ld a, TILE_HEIGHT
ld a, SCRN_Y_B
ldh [SelectY], a
xor a
ldh [Down], a
@@ -223,7 +222,7 @@ ToggleCell:
ld l, a
ldh a, [Old]
ld h, a
MoveToCell TILE_WIDTH
MoveToCell SCRN_X_B
; toggle bit
ld a, [hl]
@@ -272,7 +271,7 @@ Clear:
ld [Rendered + 1], a
; clear old buffer
ld bc, TILE_WIDTH * TILE_HEIGHT
ld bc, SCRN_X_B * SCRN_Y_B
ld d, 0
call MemorySet

View File

@@ -75,9 +75,9 @@ ENDR
; copy default map into 20x18 automata buffer
ld hl, DefaultMap
ld de, Buffer0
ld c, 18
ld c, SCRN_Y_B
.loopY
ld b, 20
ld b, SCRN_X_B
.loopX
ld a, [hl+]
@@ -90,7 +90,7 @@ ENDR
jr z, .next
ld a, l
add a, 32 - 20
add a, SCRN_VX_B - SCRN_X_B
ld l, a
jr nc, .loopY

View File

@@ -1,6 +1,5 @@
INCLUDE "hardware.inc"
INCLUDE "utils.inc"
INCLUDE "automata.inc"
RENDER_IN_HBL EQU 0
@@ -72,7 +71,7 @@ LCDStatInterruptHandler:
; go to next line
ld a, e
add a, SCRN_VX_B - TILE_WIDTH
add a, SCRN_VX_B - SCRN_X_B
ld e, a
jr nc, .nocarry
inc d
@@ -83,7 +82,7 @@ LCDStatInterruptHandler:
jr z, .finish
; reset tile counter
ld c, TILE_WIDTH
ld c, SCRN_X_B
jr .loop
@@ -137,9 +136,9 @@ StartRender:
ld [Rendered + 1], a
; start rendering
ld a, TILE_WIDTH
ld a, SCRN_X_B
ldh [TilesLeft], a
ld a, TILE_HEIGHT
ld a, SCRN_Y_B
ldh [LinesLeft], a
; enable v-blank and lcd stat interrupt for h-blank