comparison pic8bpp.s16 @ 56:fa9cf7108ab7

Add 8bpp picture example
author Michael Pavone <pavone@retrodev.com>
date Wed, 31 Aug 2016 23:50:20 -0700
parents
children
comparison
equal deleted inserted replaced
55:f9846719aa26 56:fa9cf7108ab7
1 ;high databank points to ROM, low databank poits to VRAM
2 ldim 0, db
3 ldimh $E0, db
4
5 ;load address of image in r1
6 ldim image, r1
7 ldimh image, r1
8 ldim 0, r2
9 ldimh $80, r2
10 add r2, r1, r1
11
12 ;VRAM offset, this allows the 204 pixel display to be centered on 32K point
13 ldim $80, r3
14 ldimh 0, r3
15 ;set display offset register
16 outi $C, r3
17
18 ;zero reg, for use in loads and stores
19 ldim 0, r0
20
21
22 ;copy palette
23 ld16 r1, r0, r4
24 addi 2, r1
25 mov r4, r5
26 ldimh 0, r5
27 outi $E, r5
28 pal_loop
29 ld16 r1, r0, r5
30 addi 2, r1
31 outi $E, r5
32 addi -1, r4
33 bne pal_loop
34
35 ;copy first 102 lines
36 ;r4 = 320 * 102
37 ldim $80, r4
38 ldimh $7F, r4
39 copy_loop:
40 ld8 r1, r0, r5
41 str8 r3, r0, r5
42 addi 1, r1
43 bcc no_adjust
44 ;we've hit the end of the upper data bank, adjust it and reset r1 to point to begining of bank
45 addi 1, db
46 ldim 0, r1
47 ldimh $80, r1
48 no_adjust
49 addi 1, r3
50 addi -1, r4
51 bne copy_loop
52
53 ;r4 = 320 * 102
54 ldim $80, r4
55 ldimh $7F, r4
56
57 ;point lower bank at second half of frame buffer
58 ldimh $E1, db
59 ;reset framebuffer pointer
60 ldim 0, r3
61 copy_loop2:
62 ld8 r1, r0, r5
63 str8 r3, r0, r5
64 addi 1, r1
65 bcc no_adjust2
66 ;we've hit the end of the upper data bank, adjust it and reset r1 to point to begining of bank
67 addi 1, db
68 ldim 0, r1
69 ldimh $80, r1
70 no_adjust2
71 addi 1, r3
72 addi -1, r4
73 bne copy_loop2
74
75 ;enable display/set mode/flip buffer
76 ldim $A5, r5
77 ldimh $C4, r5
78 outi $D, r5
79
80 forever:
81 bra forever
82
83 image:
84 incbin fish.raw