# HG changeset patch # User Michael Pavone # Date 1472712620 25200 # Node ID fa9cf7108ab7f9256475e8141a840cbfac3eba43 # Parent f9846719aa2643629051b6714bfb6e5d5f12c3f7 Add 8bpp picture example diff -r f9846719aa26 -r fa9cf7108ab7 fish.raw Binary file fish.raw has changed diff -r f9846719aa26 -r fa9cf7108ab7 pic8bpp.s16 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pic8bpp.s16 Wed Aug 31 23:50:20 2016 -0700 @@ -0,0 +1,84 @@ + ;high databank points to ROM, low databank poits to VRAM + ldim 0, db + ldimh $E0, db + + ;load address of image in r1 + ldim image, r1 + ldimh image, r1 + ldim 0, r2 + ldimh $80, r2 + add r2, r1, r1 + + ;VRAM offset, this allows the 204 pixel display to be centered on 32K point + ldim $80, r3 + ldimh 0, r3 + ;set display offset register + outi $C, r3 + + ;zero reg, for use in loads and stores + ldim 0, r0 + + + ;copy palette + ld16 r1, r0, r4 + addi 2, r1 + mov r4, r5 + ldimh 0, r5 + outi $E, r5 +pal_loop + ld16 r1, r0, r5 + addi 2, r1 + outi $E, r5 + addi -1, r4 + bne pal_loop + + ;copy first 102 lines + ;r4 = 320 * 102 + ldim $80, r4 + ldimh $7F, r4 +copy_loop: + ld8 r1, r0, r5 + str8 r3, r0, r5 + addi 1, r1 + bcc no_adjust + ;we've hit the end of the upper data bank, adjust it and reset r1 to point to begining of bank + addi 1, db + ldim 0, r1 + ldimh $80, r1 +no_adjust + addi 1, r3 + addi -1, r4 + bne copy_loop + + ;r4 = 320 * 102 + ldim $80, r4 + ldimh $7F, r4 + + ;point lower bank at second half of frame buffer + ldimh $E1, db + ;reset framebuffer pointer + ldim 0, r3 +copy_loop2: + ld8 r1, r0, r5 + str8 r3, r0, r5 + addi 1, r1 + bcc no_adjust2 + ;we've hit the end of the upper data bank, adjust it and reset r1 to point to begining of bank + addi 1, db + ldim 0, r1 + ldimh $80, r1 +no_adjust2 + addi 1, r3 + addi -1, r4 + bne copy_loop2 + + ;enable display/set mode/flip buffer + ldim $A5, r5 + ldimh $C4, r5 + outi $D, r5 + +forever: + bra forever + +image: + incbin fish.raw \ No newline at end of file