From e5e8d2c5efef108e0102b10de30da716c6e879ca Mon Sep 17 00:00:00 2001 From: alpine9000 Date: Wed, 30 Mar 2016 19:18:15 +1100 Subject: [PATCH] Optimisations --- 024.simple_text/Makefile | 8 +++++--- 024.simple_text/blittext.s | 6 +++--- 024.simple_text/constants.i | 23 +++++++++++++++++++++-- 024.simple_text/simple_text.s | 4 ++-- assets/font8x10.png | Bin 5935 -> 0 bytes assets/font8x8.png | Bin 0 -> 5848 bytes 6 files changed, 31 insertions(+), 10 deletions(-) delete mode 100644 assets/font8x10.png create mode 100644 assets/font8x8.png diff --git a/024.simple_text/Makefile b/024.simple_text/Makefile index 87beb12..b85953b 100644 --- a/024.simple_text/Makefile +++ b/024.simple_text/Makefile @@ -6,12 +6,14 @@ USERSTACK_ADDRESS=7fffc BASE_ADDRESS=4000 # note: this must be high enough not to conflict with MFMbufE +NUM_COLORS=16 + BOOTBLOCK_ASM=alpine_bootblock.s OBJS=out/init.o out/utils.o out/image.o out/blittext.o out/cpu.o out/blit.o -IMAGES=font8x10.png +IMAGES=font8x8.png IMAGEDATA=$(addprefix out/, $(IMAGES:.png=.bin)) -VASM_EXTRA_ARGS= +VASM_EXTRA_ARGS=-DNUM_COLORS=$(NUM_COLORS) #SYMBOL_INFO=-M LINKER_OPTIONS=-T link.script.x @@ -19,7 +21,7 @@ LINKER_OPTIONS=-T link.script.x include ../shared/base.mk out/%.bin: ../assets/%.png - $(IMAGECON) --input $< $(IMAGECON_ARGS) --output-bitplanes --output-grey-palette-asm --output-palette-asm --output-palette --output out/$* --colors=16 --use-palette palette.pal --full-color-palette-file --output-mask --transparent-color=0,0,0 --output-png + $(IMAGECON) --input $< $(IMAGECON_ARGS) --output-bitplanes --output-grey-palette-asm --output-palette-asm --output-palette --output out/$* --colors=$(NUM_COLORS) --use-palette palette.pal --full-color-palette-file --output-mask --transparent-color=0,0,0 --output-png out/simple_image.o: constants.i macros.i diff --git a/024.simple_text/blittext.s b/024.simple_text/blittext.s index 6f86c0b..e6aeb3d 100644 --- a/024.simple_text/blittext.s +++ b/024.simple_text/blittext.s @@ -64,7 +64,7 @@ DrawChar8: add.l #1,d5 ; while we have a weird font image, '!' starts on second line move.l a5,a1 ; #font - if 0 + if 1 mulu.w d3,d5 ; d5 *= #FONTMAP_WIDTH_BYTES*SCREEN_BIT_DEPTH*FONT_HEIGHT else move.w d5,d3 @@ -145,6 +145,6 @@ DrawChar8: rts font: - incbin "out/font8x10.bin" + incbin "out/font8x8.bin" fontMask: - incbin "out/font8x10-mask.bin" + incbin "out/font8x8-mask.bin" diff --git a/024.simple_text/constants.i b/024.simple_text/constants.i index 2a26e52..ccc1d29 100644 --- a/024.simple_text/constants.i +++ b/024.simple_text/constants.i @@ -1,4 +1,4 @@ -MASKED_FONT equ 1 +MASKED_FONT equ 0 if MASKED_FONT==1 BACKGROUND_COLOR equ 4 @@ -7,12 +7,31 @@ BACKGROUND_COLOR equ 3 endif FONT_WIDTH equ 8 -FONT_HEIGHT equ 10 +FONT_HEIGHT equ 8 SCREEN_WIDTH equ 320 SCREEN_HEIGHT equ 256 SCREEN_WIDTH_BYTES equ (SCREEN_WIDTH/8) SCREEN_WIDTH_WORDS equ SCREEN_WIDTH_BYTES/2 + + if NUM_COLORS==64 +SCREEN_BIT_DEPTH equ 6 + endif + if NUM_COLORS==32 +SCREEN_BIT_DEPTH equ 5 + endif + if NUM_COLORS==16 SCREEN_BIT_DEPTH equ 4 + endif + if NUM_COLORS==8 +SCREEN_BIT_DEPTH equ 3 + endif + if NUM_COLORS==4 +SCREEN_BIT_DEPTH equ 2 + endif + if NUM_COLORS==2 +SCREEN_BIT_DEPTH equ 1 + endif + SCREEN_RES equ 8 ; 8=lo resolution, 4=hi resolution RASTER_X_START equ $81 ; hard coded coordinates from hardware manual RASTER_Y_START equ $2c diff --git a/024.simple_text/simple_text.s b/024.simple_text/simple_text.s index 5111523..b5cef38 100644 --- a/024.simple_text/simple_text.s +++ b/024.simple_text/simple_text.s @@ -147,11 +147,11 @@ copperListBplPtr: dc.l $fffffffe InstallPalette: - include "out/font8x10-palette.s" + include "out/font8x8-palette.s" rts GreyPalette: - include "out/font8x10-grey.s" + include "out/font8x8-grey.s" rts onscreen: dc.l bitplanes1 diff --git a/assets/font8x10.png b/assets/font8x10.png deleted file mode 100644 index 690e45ed15e97da171faf61d9f0710c98747eb25..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5935 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