while paused, press select to clear screen

This commit is contained in:
2019-01-06 22:40:39 +01:00
parent 83bf451af0
commit 860b68256b
2 changed files with 55 additions and 14 deletions

View File

@@ -2,7 +2,7 @@ INCLUDE "hardware.inc"
INCLUDE "utils.inc" INCLUDE "utils.inc"
SPRITE_ANIM_DELAY EQU 12 SPRITE_ANIM_DELAY EQU 12
REPEAT_START_DELAY EQU 24 REPEAT_START_DELAY EQU 16
REPEAT_DELAY EQU 3 REPEAT_DELAY EQU 3
Section "Edit memory", HRAM Section "Edit memory", HRAM
@@ -48,6 +48,11 @@ EditOldBuffer:
ld a, SPRITE_ANIM_DELAY ld a, SPRITE_ANIM_DELAY
ldh [SpriteDelay], a ldh [SpriteDelay], a
; set video address to displayed
ldh a, [Video + 1]
xor a, %100
ldh [Video + 1], a
.loop .loop
; clear interrupts ; clear interrupts
xor a xor a
@@ -92,6 +97,10 @@ EditOldBuffer:
and a, JOYPAD_A and a, JOYPAD_A
call nz, ToggleCell call nz, ToggleCell
ldh a, [JoypadDown]
and a, JOYPAD_SELECT
call nz, Clear
; check start has been pressed ; check start has been pressed
ldh a, [JoypadDown] ldh a, [JoypadDown]
and a, JOYPAD_START and a, JOYPAD_START
@@ -193,6 +202,11 @@ EditOldBuffer:
and a, ~LCDCF_OBJON and a, ~LCDCF_OBJON
ldh [rLCDC], a ldh [rLCDC], a
; set video address to next displayed
ldh a, [Video + 1]
xor a, %100
ldh [Video + 1], a
ret ret
Section "Value to flag", ROM0, ALIGN[8] Section "Value to flag", ROM0, ALIGN[8]
@@ -242,7 +256,6 @@ ToggleCell:
ldh a, [Video] ldh a, [Video]
ld l, a ld l, a
ldh a, [Video + 1] ldh a, [Video + 1]
xor a, %100 ; change to displayed video buffer
ld h, a ld h, a
ToggleInTargetBuffer 32 ToggleInTargetBuffer 32
ldh a, [Progress] ldh a, [Progress]
@@ -251,3 +264,43 @@ ToggleCell:
ld h, a ld h, a
ToggleInTargetBuffer 20 ToggleInTargetBuffer 20
ret ret
Clear:
; load old buffer address and store into rendered
ldh a, [Progress]
ld l, a
ld [Rendered], a
ldh a, [Old]
ld h, a
ld [Rendered + 1], a
; clear old buffer
ld bc, 20 * 18
ld d, 0
call MemorySet
; render cleared buffer
call StartRender
call WaitRender
; reset video pointer
ld hl, Video
ld a, [hl+]
ld h, [hl]
ld l, a
ld de, -(32 * 18)
add hl, de
ld a, l
ldh [Video], a
ld a, h
ldh [Video + 1], a
; reset rendered pointer
ldh a, [Progress]
ld l, a
ld [Rendered], a
ldh a, [Old]
ld h, a
ld [Rendered + 1], a
ret

View File

@@ -154,16 +154,4 @@ IF RENDER_IN_HBL != 0
halt halt
ENDC ENDC
; move video pointer back to beginning
ld hl, Video
ld a, [hl+]
ld h, [hl]
ld l, a
ld de, -(32*18)
add hl, de
ld a, l
ldh [Video], a
ld a, h
ldh [Video + 1], a
ret ret