Browse code

Implemented color palette in memory

neauoire authored on 19/02/2021 19:48:40
Showing 14 changed files
... ...
@@ -106,7 +106,6 @@ A device that works like a NES controller, each button is a bit from a single by
106 106
 
107 107
 ### Misc TODOs
108 108
 
109
-- Defining theme colors in memory
110 109
 - Includes
111 110
 - Defines
112 111
 - Lint, print unused labels
... ...
@@ -172,6 +172,20 @@ error(char *msg, const char *err)
172 172
 	return 0;
173 173
 }
174 174
 
175
+void
176
+loadtheme(Uint8 *addr)
177
+{
178
+	Uint8 r, g, b;
179
+	r = *(addr + 0) >> 4 & 0xf, g = *(addr + 2) >> 4 & 0xf, b = *(addr + 4) >> 4 & 0xf;
180
+	theme[0] = ((r + (r << 4)) << 16) + ((g + (g << 4)) << 8) + (b + (b << 4));
181
+	r = *(addr + 0) & 0xf, g = *(addr + 2) & 0xf, b = *(addr + 4) & 0xf;
182
+	theme[1] = ((r + (r << 4)) << 16) + ((g + (g << 4)) << 8) + (b + (b << 4));
183
+	r = *(addr + 1) >> 4 & 0xf, g = *(addr + 3) >> 4 & 0xf, b = *(addr + 5) >> 4 & 0xf;
184
+	theme[2] = ((r + (r << 4)) << 16) + ((g + (g << 4)) << 8) + (b + (b << 4));
185
+	r = *(addr + 1) & 0xf, g = *(addr + 3) & 0xf, b = *(addr + 5) & 0xf;
186
+	theme[3] = ((r + (r << 4)) << 16) + ((g + (g << 4)) << 8) + (b + (b << 4));
187
+}
188
+
175 189
 void
176 190
 drawdebugger(Uint32 *dst, Uxn *u)
177 191
 {
... ...
@@ -307,6 +321,7 @@ screenr(Device *d, Memory *m, Uint8 b)
307 321
 	case 2: return (HEIGHT >> 8) & 0xff;
308 322
 	case 3: return HEIGHT & 0xff;
309 323
 	}
324
+	loadtheme(m->dat + 0xfff0);
310 325
 	(void)m;
311 326
 	return d->mem[b];
312 327
 }
... ...
@@ -355,6 +370,7 @@ start(Uxn *u)
355 370
 {
356 371
 	int ticknext = 0;
357 372
 	evaluxn(u, u->vreset);
373
+	loadtheme(u->ram.dat + 0xfff0);
358 374
 	if(screen.reqdraw)
359 375
 		redraw(pixels, u);
360 376
 	while(1) {
... ...
@@ -7,4 +7,5 @@
7 7
 |c000 @FRAME BRK 
8 8
 |d000 @ERROR BRK 
9 9
 
10
+|FFF0 [ f2ac 35bb 2b53 ] ( palette )
10 11
 |FFFA .RESET .FRAME .ERROR
... ...
@@ -61,4 +61,5 @@ BRK
61 61
 
62 62
 |d000 @ERROR BRK 
63 63
 
64
+|FFF0 [ f2ac 35bb 2b53 ] ( palette )
64 65
 |FFFA .RESET .FRAME .ERROR
... ...
@@ -114,4 +114,5 @@ BRK
114 114
 @eyeeye_chr [ aa55 aa55 aa55 aa55 aa55 aa55 aa55 aa55 ]
115 115
 
116 116
 |d000 @ERROR BRK 
117
+|FFF0 [ f2ac 35bb 2b53 ] ( palette )
117 118
 |FFFA .RESET .FRAME .ERROR
... ...
@@ -92,4 +92,5 @@ RTS
92 92
 
93 93
 |c000 @FRAME BRK 
94 94
 |d000 @ERROR BRK 
95
+|FFF0 [ f2ac 35bb 2b53 ] ( palette )
95 96
 |FFFA .RESET .FRAME .ERROR
... ...
@@ -94,4 +94,5 @@ BRK
94 94
 |c000 @FRAME
95 95
 |d000 @ERROR 
96 96
 
97
+|FFF0 [ f2ac 35bb 2b53 ] ( palette )
97 98
 |FFFA .RESET .FRAME .ERROR
98 99
\ No newline at end of file
... ...
@@ -77,4 +77,5 @@ RTS
77 77
 
78 78
 |c000 @FRAME BRK 
79 79
 |d000 @ERROR BRK 
80
+|FFF0 [ f2ac 35bb 2b53 ] ( palette )
80 81
 |FFFA .RESET .FRAME .ERROR
... ...
@@ -37,4 +37,5 @@ BRK
37 37
 	RTS
38 38
 
39 39
 |d000 @ERROR BRK 
40
+|FFF0 [ f2ac 35bb 2b53 ] ( palette )
40 41
 |FFFA .RESET .FRAME .ERROR
... ...
@@ -3,22 +3,23 @@
3 3
 :dev/r fff8 ( std read port )
4 4
 :dev/w fff9 ( std write port )
5 5
 
6
-;mousex 2 ;mousey 2 ;lastx 2 ;lasty 2 ;color 1 ;mode 1 ;state 1 ;brush 2
6
+;mousex 2 ;mousey 2 ;lastx 2 ;lasty 2 
7
+;state 1 ;color 1 ;brush 2
7 8
 
8 9
 |0100 @RESET 
9 10
 
10 11
 	#05 =dev/r ( set dev/read mouse )
11 12
 	#02 =dev/w ( set dev/write to sprite ) 
12 13
 
13
-	#05 =color
14
-	,draw-interface JSR
15
-	,brush_large ,brush STR2
14
+	#05 =color ( select a default color )
15
+	,brush_large ,brush STR2 ( select a default brush )
16
+
17
+	,draw-interface JSR 
16 18
 
17 19
 BRK
18 20
 
19 21
 |c000 @FRAME
20 22
 	
21
-	#02 =dev/w ( set dev/write to sprite ) 
22 23
 	( clear last cursor )
23 24
 	#10 ,clear_icn ~lastx ~lasty ,draw-sprite JSR
24 25
 	( record mouse values )
... ...
@@ -58,7 +59,7 @@ BRK
58 59
 		~color ~brush ~mousex #0004 SUB2 ~mousey #0004 SUB2 ,draw-sprite JSR
59 60
 	@end-touch
60 61
 
61
-	~mousex =lastx ~mousey =lasty
62
+	~mousex =lastx ~mousey =lasty ( update last post )
62 63
 
63 64
 BRK
64 65
 
... ...
@@ -90,4 +91,5 @@ BRK
90 91
 
91 92
 |d000 @ERROR BRK 
92 93
 
94
+|FFF0 [ f2af 35bb 2b5f ] ( palette )
93 95
 |FFFA .RESET .FRAME .ERROR
... ...
@@ -39,4 +39,5 @@ BRK
39 39
 	RTS
40 40
 
41 41
 |d000 @ERROR BRK 
42
+|FFF0 [ f2ac 35bb 2b53 ] ( palette )
42 43
 |FFFA .RESET .FRAME .ERROR
... ...
@@ -32,4 +32,5 @@ BRK
32 32
 	RTS
33 33
 
34 34
 |d000 @ERROR BRK 
35
+|FFF0 [ f2ac 35bb 2b53 ] ( palette )
35 36
 |FFFA .RESET .FRAME .ERROR
... ...
@@ -31,4 +31,5 @@ BRK
31 31
 |c000 @FRAME BRK
32 32
 |d000 @ERROR BRK 
33 33
 
34
+|FFF0 [ f2ac 35bb 2b53 ] ( palette )
34 35
 |FFFA .RESET .FRAME .ERROR
... ...
@@ -55,4 +55,5 @@ BRK
55 55
 
56 56
 |d000 @ERROR BRK 
57 57
 
58
+|FFF0 [ f2ac 35bb 2b53 ] ( palette )
58 59
 |FFFA .RESET .FRAME .ERROR