# HG changeset patch # User Laurens Holst # Date 1595001261 -7200 # Fri Jul 17 17:54:21 2020 +0200 # Node ID 022a67e61a351186020e3040d6937e5cfd9bf750 # Parent b17c13dac3567c7e8aa26abbc8cdbd8259446d97 MapView: Manipulate e register directly instead of going through a. A bit slower on 4bpp, but a bit faster on 8bpp, and no need to preserve a. diff --git a/src/MapView.asm b/src/MapView.asm --- a/src/MapView.asm +++ b/src/MapView.asm @@ -544,49 +544,49 @@ ; de = VRAM destination (14-bit | 4000H) ; hl = tile pixels MapView_DrawRowTile_M: MACRO ?pixels - ld a,e - MapView_DrawRowTileLine_M ?pixels, a, d + MapView_DrawRowTileLine_M ?pixels IF Video_X_BYTE = 2 - add a,80H + set 7,e ELSE inc d ENDIF - MapView_DrawRowTileLine_M ?pixels, a, d + MapView_DrawRowTileLine_M ?pixels IF Video_X_BYTE = 2 - add a,80H + res 7,e ENDIF inc d - MapView_DrawRowTileLine_M ?pixels, a, d + MapView_DrawRowTileLine_M ?pixels IF Video_X_BYTE = 2 - add a,80H + set 7,e ELSE inc d ENDIF - MapView_DrawRowTileLine_M ?pixels, a, d - dec d - IF Video_X_BYTE = 2 - add a,80H + ?pixels / Video_X_BYTE - ELSE + MapView_DrawRowTileLine_M ?pixels + IF Video_X_BYTE = 1 dec d dec d - add a,?pixels / Video_X_BYTE ENDIF + dec d + ld a,e + add a,(-100H + ?pixels) / Video_X_BYTE ld e,a ENDM ; c = VDP port 0 ; hl = tile pixels -MapView_DrawRowTileLine_M: MACRO ?pixels, ?vramLSB, ?vramMSB +MapView_DrawRowTileLine_M: MACRO ?pixels inc c di - out (c),?vramLSB + out (c),e ei - out (c),?vramMSB + out (c),d dec c REPT ?pixels / Video_X_BYTE outi ENDM - REPT (16 - ?pixels) / Video_X_BYTE - inc l + IF ?pixels != 16 + ld a,l + add a,(16 - ?pixels) / Video_X_BYTE + ld l,a + ENDIF ENDM - ENDM