Browse code

Fixed issue with emulator colors

neauoire authored on 30/03/2021 19:21:00
Showing 3 changed files
... ...
@@ -45,9 +45,10 @@
45 45
 ;pt1 { x 2 y 2 }
46 46
 ;pt2 { x 2 y 2 } ( paint-rect )
47 47
 ;px { x 1 y 1 }
48
-;document { state 1 edit 1 }
48
+;document { state 1 edit 1 presentation 1 }
49 49
 ;path { length 1 name 20 }
50 50
 ;timer { byte 1 }
51
+;theme { r0 2 g0 2 b0 2 r1 2 g1 2 b1 2 }
51 52
 
52 53
 ( devices )
53 54
 
... ...
@@ -68,7 +69,10 @@
68 69
 @RESET ( -- )
69 70
 	
70 71
 	( theme ) 
71
-	#e0fd =System.r #30fd =System.g #30fd =System.b
72
+	#e0cd =theme.r0 #30fd =theme.g0 #30fd =theme.b0 ( normal mode )
73
+	#00fe =theme.r1 #00f3 =theme.g1 #00f3 =theme.b1 ( presentation mode )
74
+
75
+	~theme.r0 =System.r ~theme.g0 =System.g ~theme.b0 =System.b
72 76
 
73 77
 	( default canvas )
74 78
 	#002a =canvas.w #001a =canvas.h
... ...
@@ -233,22 +237,26 @@ BRK
233 237
 
234 238
 		( background interface )
235 239
 		~Mouse.y STEP8 ~Screen.height #0010 SUB2 NEQ2 ^$no-touch-background JNZ
236
-			~Mouse.x ~Screen.width #0020 SUB2 SUB2 8/ 
237
-			DUP2 #0000 NEQ2 ^$no-clear-button JNZ
238
-				,clear JSR2
240
+			~Mouse.x ~Screen.width #0028 SUB2 SUB2 8/ SWP POP
241
+			DUP #00 NEQ ^$no-eye-button JNZ
242
+				,present JSR2
243
+				( release ) #00 =Mouse.state
244
+			$no-eye-button
245
+			DUP #01 NEQ ^$no-rename-button JNZ
246
+				,rename JSR2
239 247
 				#01 =document.edit
240 248
 				( release ) #00 =Mouse.state
241
-			$no-clear-button
242
-			DUP2 #0001 NEQ2 ^$no-load-button JNZ
249
+			$no-rename-button
250
+			DUP #02 NEQ ^$no-load-button JNZ
243 251
 				,path.name ,load-file JSR2
244 252
 				,draw-canvas JSR2
245 253
 				( release ) #00 =Mouse.state
246 254
 			$no-load-button
247
-			DUP2 #0002 NEQ2 ^$no-save-button JNZ
255
+			DUP #03 NEQ ^$no-save-button JNZ
248 256
 				,path.name ,save-file JSR2
249 257
 				( release ) #00 =Mouse.state
250 258
 			$no-save-button
251
-			POP2
259
+			POP
252 260
 		$no-touch-background
253 261
 
254 262
 		( jump label )
... ...
@@ -348,12 +356,15 @@ BRK
348 356
 
349 357
 RTN
350 358
 
351
-@clear ( -- )
359
+@rename
352 360
 	
353
-	( new label )
354 361
 	,untitled_txt ,path.name ,strcpy JSR2
355 362
 	#00 =path.length
356
-	( erase data )
363
+
364
+RTN
365
+
366
+@clear ( -- )
367
+	
357 368
 	,data FILESIZE ,data ADD2
358 369
 	$loop
359 370
 		( write ) OVR2 #00 ROT ROT POK2
... ...
@@ -364,6 +375,29 @@ RTN
364 375
 
365 376
 RTN
366 377
 
378
+@present
379
+
380
+	~document.presentation #00 EQU =document.presentation
381
+
382
+	~document.presentation 
383
+	DUP #00 NEQ ^$skip0 JNZ
384
+		~theme.r0 =System.r ~theme.g0 =System.g ~theme.b0 =System.b 
385
+	$skip0
386
+	DUP #01 NEQ ^$skip1 JNZ
387
+		~theme.r1 =System.r ~theme.g1 =System.g ~theme.b1 =System.b 
388
+	$skip1
389
+	POP
390
+
391
+	~toolpane.x1 #0002 SUB2 ~toolpane.y1 #0002 SUB2 ~toolpane.x2 ++ ~toolpane.y2 ++ #00 ,fill-rect JSR2
392
+	~pattpane.x1 #0002 SUB2 ~pattpane.y1 #0002 SUB2 ~pattpane.x2 ++ ~pattpane.y2 ++ #00 ,fill-rect JSR2
393
+	~sizepane.x1 #0002 SUB2 ~sizepane.y1 #0002 SUB2 ~sizepane.x2 ++ ~sizepane.y2 ++ #00 ,fill-rect JSR2
394
+	~viewpane.x1 #0002 SUB2 ~viewpane.y1 #0002 SUB2 ~viewpane.x2 ++ ~viewpane.y2 ++ #00 ,fill-rect JSR2
395
+
396
+	( clear panes )
397
+	,redraw JSR2
398
+
399
+RTN
400
+
367 401
 @load-file ( path -- )
368 402
 
369 403
 	=File.name FILESIZE =File.length ,data =File.load
... ...
@@ -646,7 +680,9 @@ RTN
646 680
 RTN
647 681
 
648 682
 @draw-toolpane ( -- )
649
-	
683
+
684
+	~document.presentation #00 EQU ^$skip JNZ RTN $skip
685
+
650 686
 	( frame )	
651 687
 	~toolpane.x1 -- ~toolpane.y1 -- ~toolpane.x2 ~toolpane.y2 #00 ,line-rect JSR2
652 688
 	~toolpane.x1 #0002 SUB2 ~toolpane.y1 #0002 SUB2 ~toolpane.x2 ~toolpane.y2 #01 ,line-rect JSR2
... ...
@@ -668,7 +704,9 @@ RTN
668 704
 RTN
669 705
 
670 706
 @draw-pattpane ( -- )
671
-	
707
+
708
+	~document.presentation #00 EQU ^$skip JNZ RTN $skip
709
+
672 710
 	( frame )	
673 711
 	~pattpane.x1 -- ~pattpane.y1 -- ~pattpane.x2 ~pattpane.y2 #00 ,line-rect JSR2
674 712
 	~pattpane.x1 #0002 SUB2 ~pattpane.y1 #0002 SUB2 ~pattpane.x2 ~pattpane.y2 #01 ,line-rect JSR2
... ...
@@ -684,7 +722,9 @@ RTN
684 722
 RTN
685 723
 
686 724
 @draw-sizepane ( -- )
687
-	
725
+
726
+	~document.presentation #00 EQU ^$skip JNZ RTN $skip
727
+
688 728
 	( frame )
689 729
 	~sizepane.x1 -- ~sizepane.y1 -- ~sizepane.x2 ~sizepane.y2 #00 ,line-rect JSR2
690 730
 	~sizepane.x1 #0002 SUB2 ~sizepane.y1 #0002 SUB2 ~sizepane.x2 ~sizepane.y2 #01 ,line-rect JSR2
... ...
@@ -701,6 +741,8 @@ RTN
701 741
 
702 742
 @draw-viewpane ( -- )
703 743
 	
744
+	~document.presentation #00 EQU ^$skip JNZ RTN $skip
745
+
704 746
 	( frame )
705 747
 	~viewpane.x1 -- ~viewpane.y1 -- ~viewpane.x2 ~viewpane.y2 #00 ,line-rect JSR2
706 748
 	~viewpane.x1 #0002 SUB2 ~viewpane.y1 #0002 SUB2 ~viewpane.x2 ~viewpane.y2 #01 ,line-rect JSR2
... ...
@@ -727,41 +769,44 @@ RTN
727 769
 @draw-background
728 770
 	
729 771
 	( draw hor line )
730
-	#0000 ~Screen.width ~Screen.height #0002 DIV2 ,line-horizontal-dotted JSR2
772
+	#0000 ~Screen.width ~Screen.height #0002 DIV2 ~document.presentation #00 EQU ,line-horizontal-dotted JSR2
731 773
 	( draw ver line )
732
-	~Screen.width #0002 DIV2 #0000 ~Screen.height ,line-vertical-dotted JSR2
733
-
734
-	( draw size )
735
-	#0010 =Sprite.y
736
-	( draw width )
737
-	~Screen.width #00a0 SUB2 =Sprite.x ,font_hex ~canvas.w #f0 AND #04 SFT #08 MUL ADD2 =Sprite.addr
738
-	( draw ) #01 =Sprite.color
739
-	~Sprite.x 8+ =Sprite.x ,font_hex ~canvas.w #0f AND #08 MUL ADD2 =Sprite.addr
740
-	( draw ) #01 =Sprite.color
741
-	( draw height )
742
-	~Sprite.x 8+ =Sprite.x ,font_hex ~canvas.h #f0 AND #04 SFT #08 MUL ADD2 =Sprite.addr
743
-	( draw ) #01 =Sprite.color
744
-	~Sprite.x 8+ =Sprite.x ,font_hex ~canvas.h #0f AND #08 MUL ADD2 =Sprite.addr
745
-	( draw ) #01 =Sprite.color
774
+	~Screen.width #0002 DIV2 #0000 ~Screen.height ~document.presentation #00 EQU ,line-vertical-dotted JSR2
775
+
776
+	~document.presentation #01 EQU ,$skip-size JNZ2
777
+		( draw size )
778
+		#0010 =Sprite.y
779
+		( draw width )
780
+		~Screen.width #00a0 SUB2 =Sprite.x ,font_hex ~canvas.w #f0 AND #04 SFT #08 MUL ADD2 =Sprite.addr
781
+		( draw ) #01 =Sprite.color
782
+		~Sprite.x 8+ =Sprite.x ,font_hex ~canvas.w #0f AND #08 MUL ADD2 =Sprite.addr
783
+		( draw ) #01 =Sprite.color
784
+		( draw height )
785
+		~Sprite.x 8+ =Sprite.x ,font_hex ~canvas.h #f0 AND #04 SFT #08 MUL ADD2 =Sprite.addr
786
+		( draw ) #01 =Sprite.color
787
+		~Sprite.x 8+ =Sprite.x ,font_hex ~canvas.h #0f AND #08 MUL ADD2 =Sprite.addr
788
+		( draw ) #01 =Sprite.color
789
+	$skip-size
790
+
746 791
 	( draw save/load/guides icons )
747 792
 	~Screen.height #0010 SUB2 =Sprite.y
748
-	~Screen.width #0020 SUB2 =Sprite.x
749
-	( TODO: Presentation mode button
750
-	,guides_icn =Sprite.addr
751
-	#01 =Sprite.color
793
+	~Screen.width #0028 SUB2 =Sprite.x
794
+	,eye #00 ~document.presentation #08 MUL ADD2 =Sprite.addr
795
+	#03 =Sprite.color
752 796
 	~Sprite.x 8+ =Sprite.x
753
-	)
754 797
 	,filestate_icn =Sprite.addr
755
-	#01 =Sprite.color
798
+	#03 =Sprite.color
756 799
 	~Sprite.x 8+ =Sprite.x
757 800
 	,load_icn =Sprite.addr
758
-	#01 =Sprite.color
801
+	#03 =Sprite.color
759 802
 	~Sprite.x 8+ =Sprite.x
760 803
 	,save_icn =Sprite.addr
761
-	#01 =Sprite.color
762
-	( filename )
763
-	#0008 =Sprite.x
764
-	,path.name #01 ,draw-label JSR2
804
+	#03 =Sprite.color
805
+	
806
+	~document.presentation #01 EQU ^$skip-path JNZ
807
+		#0008 =Sprite.x
808
+		,path.name #01 ,draw-label JSR2
809
+	$skip-path
765 810
 
766 811
 RTN
767 812
 
... ...
@@ -811,22 +856,22 @@ RTN
811 856
 
812 857
 RTN
813 858
 
814
-@line-horizontal-dotted ( x0 x1 y -- )
859
+@line-horizontal-dotted ( x0 x1 y color -- )
815 860
 	
816
-	=Screen.y OVR2 =Screen.x
861
+	=color =Screen.y OVR2 =Screen.x
817 862
 	$draw-hor
818
-		( draw ) #01 =Screen.color
863
+		( draw ) ~color =Screen.color
819 864
 		( incr ) SWP2 #0002 ADD2 DUP2 =Screen.x SWP2
820 865
 		OVR2 OVR2 LTH2 ^$draw-hor JNZ
821 866
 	POP2 POP2
822 867
 
823 868
 RTN
824 869
 
825
-@line-vertical-dotted ( x y0 y1 -- )
870
+@line-vertical-dotted ( x y0 y1 color -- )
826 871
 	
827
-	STH2 SWP2 =Screen.x STH2r OVR2 =Screen.y
872
+	=color STH2 SWP2 =Screen.x STH2r OVR2 =Screen.y
828 873
 	$draw-ver
829
-		( draw ) #01 =Screen.color
874
+		( draw ) ~color =Screen.color
830 875
 		( incr ) SWP2 #0002 ADD2 DUP2 =Screen.y SWP2
831 876
 		OVR2 OVR2 LTH2 ^$draw-ver JNZ
832 877
 	POP2 POP2
... ...
@@ -898,8 +943,8 @@ RTN
898 943
 	[ 4040 4070 f8f8 f870 ]
899 944
 
900 945
 @eye
901
-	[ 0000 0082 4438 0000 ] ( open )
902
-	[ 0038 4492 2810 0000 ] ( closed )
946
+	[ 0038 4492 2810 0000 ] ( open )
947
+	[ 0000 0082 4438 0000 ] ( closed )
903 948
 
904 949
 @load_icn       [ feaa d6aa d4aa f400 ]
905 950
 @save_icn       [ fe82 8282 848a f400 ]
... ...
@@ -154,7 +154,7 @@ loadtheme(Uint8 *addr)
154 154
 			r = (*(addr + i / 2) >> (!(i % 2) << 2)) & 0x0f,
155 155
 			g = (*(addr + 2 + i / 2) >> (!(i % 2) << 2)) & 0x0f,
156 156
 			b = (*(addr + 4 + i / 2) >> (!(i % 2) << 2)) & 0x0f;
157
-		theme[i] = (r << 20) + (g << 12) + (b << 4);
157
+		theme[i] = (r << 20) + (r << 16) + (g << 12) + (g << 8) + (b << 4) + b;
158 158
 	}
159 159
 	screen.reqdraw = 1;
160 160
 }
... ...
@@ -444,6 +444,7 @@ Uint8
444 444
 system_poke(Uxn *u, Uint16 ptr, Uint8 b0, Uint8 b1)
445 445
 {
446 446
 	Uint8 *m = u->ram.dat;
447
+	m[PAGE_DEVICE + 0x00f0 + b0] = b1;
447 448
 	loadtheme(&m[PAGE_DEVICE + 0x00f8]);
448 449
 	(void)ptr;
449 450
 	(void)b0;
... ...
@@ -466,7 +467,6 @@ start(Uxn *u)
466 467
 {
467 468
 	int ticknext = 0;
468 469
 	evaluxn(u, PAGE_VECTORS);
469
-	loadtheme(u->ram.dat + PAGE_DEVICE + 0x00f8);
470 470
 	if(screen.reqdraw)
471 471
 		redraw(pixels, u);
472 472
 	while(1) {