Browse code

Progress on 2-bit mode for nasu

neauoire authored on 17/04/2021 20:32:07
Showing 2 changed files
1 1
new file mode 100644
2 2
Binary files /dev/null and b/projects/pictures/ako10x10.chr differ
... ...
@@ -38,12 +38,14 @@
38 38
 
39 39
 ( variables )
40 40
 
41
-;settings { blending 1 depth 1 page 2 }
41
+;settings { blending 1 depth 1 brush 1 page 2 }
42 42
 
43
-;bankview { x 2 y 2 mode 1 addr 2 selection 1 }
43
+;frame { x1 2 y1 2 x2 2 y2 2 width 2 height 2 }
44
+;bankview { x 2 y 2 mode 1 selection 1 }
44 45
 ;tileview { x 2 y 2 addr 2 }
45 46
 ;colorview { x1 2 y1 2 x2 2 y2 2 }
46 47
 ;blendview { x1 2 y1 2 x2 2 y2 2 }
48
+;fileview { x1 2 y1 2 x2 2 y2 2 }
47 49
 ;rect { x1 2 y1 2 x2 2 y2 2 }
48 50
 ;mouse { x 2 y 2 }
49 51
 ;color { byte 1 }
... ...
@@ -70,16 +72,28 @@
70 72
 	( vectors ) ,on-mouse =Mouse.vector
71 73
 	( vectors ) ,on-transfer =File.vector
72 74
 
73
-	~Screen.width 2/ #008a SUB2 =bankview.x 
74
-	~Screen.height 2/ #003f SUB2 =bankview.y 
75
+	( set frame )
76
+	#0140 =frame.width
77
+	#0080 =frame.height
78
+	#01 =settings.brush
79
+
80
+	~Screen.width 2/ ~frame.width 2/ SUB2 
81
+	~Screen.height 2/ ~frame.height 2/ SUB2
82
+	~frame.width ~frame.height
83
+	SIZE-TO-RECT ,frame SET-RECT
84
+
85
+	~frame.x1 #0018 ADD2 =bankview.x 
86
+	~frame.y1 #0010 ADD2 =bankview.y 
75 87
 	BANK =settings.page
76 88
 
77 89
 	~Screen.width 2/ #0002 ADD2 =tileview.x 
78
-	~Screen.height 2/ #003f SUB2 =tileview.y 
90
+	~frame.y1 #0010 ADD2 =tileview.y 
79 91
 	BANK #0448 ADD2 =tileview.addr
80 92
 
81
-	~Screen.width 2/ #0002 ADD2 ~Screen.height 2/ #0048 ADD2 #0020 #0020 SIZE-TO-RECT ,colorview SET-RECT
82
-	~Screen.width 2/ #0061 ADD2 ~Screen.height 2/ #0048 ADD2 #0020 #0020 SIZE-TO-RECT ,blendview SET-RECT
93
+	~frame.x1 #0068 ADD2 ~Screen.height 2/ #0070 SUB2 #0020 #0020 SIZE-TO-RECT ,colorview SET-RECT
94
+	~frame.x1 #0018 ADD2 ~Screen.height 2/ #0070 SUB2 #0020 #0020 SIZE-TO-RECT ,blendview SET-RECT
95
+
96
+	~frame.x1 ~Screen.height #0018 SUB2 ~frame.x2 ~Screen.height #0008 SUB2 ,fileview SET-RECT
83 97
 
84 98
 	#01 =settings.blending
85 99
 
... ...
@@ -88,9 +102,12 @@
88 102
 	,filepath3 =File.name #1000 =File.length BANK #1000 ADD2 =File.load
89 103
 	,filepath4 =File.name #1000 =File.length BANK #2000 ADD2 =File.load
90 104
 	,filepath5 =File.name #1000 =File.length BANK #2800 ADD2 =File.load
105
+	,filepath6 =File.name #1000 =File.length BANK #3800 ADD2 =File.load
91 106
 
92 107
 	,redraw JSR2
93 108
 
109
+	( ~frame.x1 ~frame.y1 ~frame.x2 ~frame.y2 #01 ,line-rect JSR2 )
110
+
94 111
 BRK
95 112
 
96 113
 @on-transfer ( -> )
... ...
@@ -151,12 +168,6 @@ BRK
151 168
 			~Mouse.x ~bankview.x SUB2 8/ #000f GTH2 ^$no-brush-click JNZ
152 169
 				( select ) ~mouse.x ~bankview.x SUB2 8/ #000d SUB2 SWP POP =bankview.mode
153 170
 			$no-brush-click
154
-			~Mouse.x ~tileview.x SUB2 8/ #000e NEQ2 ^$no-load-click JNZ
155
-				( load ) ,filepath1  =File.name #0800 =File.length ~settings.page =File.load
156
-			$no-load-click
157
-			~Mouse.x ~tileview.x SUB2 8/ #000f NEQ2 ^$no-save-click JNZ
158
-				( save ) ,filepath1  =File.name #0800 =File.length ~settings.page =File.save
159
-			$no-save-click
160 171
 			~Mouse.x ~bankview.x SUB2 8/ #0005 NEQ2 ^$no-toggle-depth JNZ
161 172
 				,toggle-depth JSR2
162 173
 			$no-toggle-depth
... ...
@@ -281,6 +292,8 @@ BRK
281 292
 	
282 293
 	( channel ) ~Mouse.y ~colorview.y1 SUB2 8/ SWP POP STH
283 294
 	( rgb ) ~Mouse.x ~colorview.x1 SUB2 8/ SWP POP
295
+	DUP #00 NEQ ^$no-brush JNZ
296
+		DUPr STHr =settings.brush $no-brush
284 297
 	DUP #01 NEQ ^$no-red JNZ
285 298
 		DUPr STHr ,System.r ,set-color JSR2 $no-red
286 299
 	DUP #02 NEQ ^$no-green JNZ 
... ...
@@ -297,16 +310,24 @@ BRK
297 310
 	
298 311
 	STH2
299 312
 	DUP #00 NEQ ^$no-red0 JNZ
300
-		DUP2r STH2r PEK2 DUP #04 SFT #01 ADD ~Mouse.state #10 EQU #fe MUL ADD #40 SFT SWP #0f AND ADD DUP2r STH2r POK2
313
+		DUP2r STH2r PEK2 DUP #04 SFT #01 ADD 
314
+		( add/sub ) ~Mouse.state #10 EQU #fe MUL ADD 
315
+		( resume ) #40 SFT SWP #0f AND ADD DUP2r STH2r POK2
301 316
 		$no-red0
302 317
 	DUP #01 NEQ ^$no-red1 JNZ
303
-		DUP2r STH2r PEK2 DUP #0f AND #01 ADD ~Mouse.state #10 EQU #fe MUL ADD #0f AND SWP #f0 AND ADD DUP2r STH2r POK2
318
+		DUP2r STH2r PEK2 DUP #0f AND #01 ADD 
319
+		( add/sub ) ~Mouse.state #10 EQU #fe MUL ADD 
320
+		( resume ) #0f AND SWP #f0 AND ADD DUP2r STH2r POK2
304 321
 		$no-red1
305 322
 	DUP #02 NEQ ^$no-red2 JNZ
306
-		DUP2r STH2r #0001 ADD2 PEK2 DUP #04 SFT #01 ADD ~Mouse.state #10 EQU #fe MUL ADD #40 SFT SWP #0f AND ADD DUP2r STH2r #0001 ADD2 POK2
323
+		DUP2r STH2r #0001 ADD2 PEK2 DUP #04 SFT #01 ADD 
324
+		( add/sub ) ~Mouse.state #10 EQU #fe MUL ADD 
325
+		( resume ) #40 SFT SWP #0f AND ADD DUP2r STH2r #0001 ADD2 POK2
307 326
 		$no-red2
308 327
 	DUP #03 NEQ ^$no-red3 JNZ
309
-		DUP2r STH2r #0001 ADD2 PEK2 DUP #0f AND #01 ADD ~Mouse.state #10 EQU #fe MUL ADD #0f AND SWP #f0 AND ADD DUP2r STH2r #0001 ADD2 POK2
328
+		DUP2r STH2r #0001 ADD2 PEK2 DUP #0f AND #01 ADD 
329
+		( add/sub ) ~Mouse.state #10 EQU #fe MUL ADD 
330
+		( resume ) #0f AND SWP #f0 AND ADD DUP2r STH2r #0001 ADD2 POK2
310 331
 		$no-red3
311 332
 	POP
312 333
 	POP2r
... ...
@@ -366,6 +387,7 @@ RTN
366 387
 	,draw-tileview JSR2
367 388
 	,draw-blendview JSR2
368 389
 	,draw-colorview JSR2
390
+	,draw-fileview JSR2
369 391
 
370 392
 RTN
371 393
 
... ...
@@ -399,14 +421,6 @@ RTN
399 421
 	,tool_eraser =Screen.addr
400 422
 	#21 ~bankview.mode #02 EQU ADD =Screen.color
401 423
 
402
-	~tileview.x #0070 ADD2 =Screen.x
403
-	,load_icn =Screen.addr
404
-	#21 =Screen.color
405
-
406
-	~tileview.x #0078 ADD2 =Screen.x
407
-	,save_icn =Screen.addr
408
-	#21 =Screen.color
409
-
410 424
 	( guides )
411 425
 
412 426
 	#00 =i ,font_hex =Screen.addr
... ...
@@ -451,7 +465,10 @@ RTN
451 465
 	~tileview.x #0028 ADD2 =Screen.x
452 466
 	~tileview.y #0010 SUB2 =Screen.y
453 467
 	~tileview.addr =Screen.addr
454
-	#23 =Screen.color
468
+
469
+	( get blending ) ~settings.blending
470
+	( get depth ) ~settings.depth #20 MUL
471
+	( draw ) #20 ADD ADD =Screen.color
455 472
 
456 473
 	( position )
457 474
 
... ...
@@ -505,7 +522,7 @@ RTN
505 522
 	#00 =i
506 523
 	$bytes
507 524
 		~tileview.x #0088 ADD2 =Screen.x
508
-		~tileview.addr #00 ~i ADD2 PEK2 ,draw-byte JSR2
525
+		~tileview.addr #00 ~i ADD2 PEK2 #22 ,draw-byte JSR2
509 526
 		( incr ) ~i #01 ADD =i
510 527
 		( incr ) ~Screen.y 8+ =Screen.y
511 528
 	~i #08 LTH ,$bytes JNZ2
... ...
@@ -519,7 +536,7 @@ RTN
519 536
 	,moveup_icn =Screen.addr
520 537
 	#21 =Screen.color
521 538
 
522
-	( draw tiles )
539
+	( draw tiles 2x2 )
523 540
 	~tileview.y =Screen.y
524 541
 	#00 =pt.x #00 =pt.y ~tileview.addr =Screen.addr
525 542
 
... ...
@@ -560,6 +577,8 @@ RTN
560 577
 RTN
561 578
 
562 579
 @draw-blendview ( -- )
580
+	
581
+	~blendview.x1 #0002 SUB2 ~blendview.y1 #0002 SUB2 ~blendview.x2 #0001 ADD2 ~blendview.y2 #0001 ADD2 #03 ,line-rect JSR2
563 582
 
564 583
 	~tileview.addr =Screen.addr
565 584
 	#00 #10
... ...
@@ -572,12 +591,13 @@ RTN
572 591
 		DUP2 LTH ^$loop JNZ
573 592
 	POP2
574 593
 
575
-	~blendview.x1 #0019 SUB2 =Screen.x
576
-	~blendview.y1 #0018 ADD2 =Screen.y
594
+	~blendview.x1 #0002 SUB2 ~blendview.y2 #0001 ADD2 ~blendview.x1 #000e ADD2 ~blendview.y2 #0009 ADD2 #03 ,line-rect JSR2
595
+	~blendview.x1 #0001 SUB2 =Screen.x
596
+	~blendview.y2 #0001 ADD2 =Screen.y
577 597
 
578 598
 	( get blending ) ~settings.blending
579 599
 	( get depth ) ~settings.depth #20 MUL
580
-	( draw ) #20 ADD ADD ,draw-byte JSR2
600
+	( draw ) #20 ADD ADD #2c ,draw-byte JSR2
581 601
 
582 602
 RTN
583 603
 
... ...
@@ -594,10 +614,11 @@ RTN
594 614
 	~System.b ,draw-color-code JSR2	
595 615
 
596 616
 	~colorview.x1 =Screen.x
597
-	,full_icn =Screen.addr
617
+	,circle_icns =Screen.addr
598 618
 
599 619
 	#00 #04
600 620
 	$loop
621
+		OVR ~settings.brush EQU #00 SWP #0008 MUL2 ,circle_icns ADD2 =Screen.addr
601 622
 		OVR ~colorview.y1 ROT #00 SWP #0008 MUL2 ADD2 =Screen.y
602 623
 		OVR #20 ADD =Screen.color
603 624
 		SWP #01 ADD SWP
... ...
@@ -606,6 +627,31 @@ RTN
606 627
 
607 628
 RTN
608 629
 
630
+@draw-fileview ( -- )
631
+
632
+	( line hor )
633
+	~fileview.y1 =Screen.y
634
+	~fileview.x1 ~fileview.x2
635
+	$line-hor
636
+		OVR2 =Screen.x
637
+		( draw ) #03 =Screen.color
638
+		( incr ) SWP2 #0002 ADD2 SWP2
639
+		OVR2 OVR2 LTH2 ^$line-hor JNZ
640
+	POP2 POP2
641
+
642
+	~fileview.y1 #0008 ADD2 =Screen.y
643
+	~fileview.x1 #0008 ADD2 =Screen.x
644
+	,rename_icn =Screen.addr
645
+	#21 =Screen.color
646
+	~fileview.x2 #0018 SUB2 =Screen.x
647
+	,load_icn =Screen.addr
648
+	#21 =Screen.color
649
+	~fileview.x2 #0010 SUB2 =Screen.x
650
+	,save_icn =Screen.addr
651
+	#21 =Screen.color
652
+
653
+RTN
654
+
609 655
 @draw-color-code ( color* -- )
610 656
 	
611 657
 	DUP ,font_hex ROT #0f AND #08 MUL #00 SWP ADD2 =Screen.addr
... ...
@@ -642,14 +688,14 @@ RTN
642 688
 
643 689
 RTN
644 690
 
645
-@draw-byte ( byte -- )
691
+@draw-byte ( byte color -- )
646 692
 	
647
-	STH
693
+	=color STH
648 694
 	,font_hex #00 DUPr STHr #f0 AND #04 SFT #08 MUL ADD2 =Screen.addr
649
-	( draw ) #22 =Screen.color
695
+	( draw ) ~color =Screen.color
650 696
 	~Screen.x 8+ =Screen.x
651 697
 	,font_hex #00 STHr #0f AND #08 MUL ADD2 =Screen.addr
652
-	( draw ) #22 =Screen.color
698
+	( draw ) ~color =Screen.color
653 699
 
654 700
 RTN
655 701
 
... ...
@@ -694,7 +740,10 @@ RTN
694 740
 
695 741
 RTN
696 742
 
697
-@full_icn      [ 0038 7cfe fefe 7c38 ]
743
+@circle_icns 
744
+	[ 0038 7cfe fefe 7c38 ] ( full )
745
+	[ 0038 4482 8282 4438 ] ( line )
746
+
698 747
 @tool_selector [ 80c0 e0f0 f8e0 1000 ]
699 748
 @tool_hand     [ 4040 4070 f8f8 f870 ]
700 749
 @tool_eraser   [ 2050 b87c 3e1c 0800 ]
... ...
@@ -708,15 +757,22 @@ RTN
708 757
 	00fe 9292 fe92 92fe
709 758
 ]
710 759
 
711
-@load_icn      [ feaa d6aa d4aa f400 ]
712
-@save_icn      [ fe82 8282 848a f400 ]
760
+@eye_icns
761
+	[ 0038 4492 2810 0000 ] ( open )
762
+	[ 0000 0082 4438 0000 ] ( closed )
763
+
764
+@rename_icn     [ 1054 28c6 2854 1000 ]
765
+@load_icn       [ feaa d6aa d4aa f400 ]
766
+@save_icn       [ fe82 8282 848a f400 ]
767
+
713 768
 @moveup_icn    [ 0010 387c fe10 1000 ]
714 769
 @movedown_icn  [ 0010 1010 fe7c 3810 ]
715 770
 @filepath1     [ projects/fonts/specter8.bit 00 ]
716 771
 @filepath2     [ projects/pictures/cibo.bit 00 ]
717 772
 @filepath3     [ projects/pictures/zerotwo10x10.chr 00 ]
718 773
 @filepath4     [ projects/fonts/katahira8.bit 00 ]
719
-@filepath5     [ projects/pictures/daria10x10.chr 00 ]
774
+@filepath5     [ projects/pictures/ako10x10.chr 00 ]
775
+@filepath6     [ projects/pictures/cyr4x4.chr 00 ]
720 776
 
721 777
 @font_hex ( 0-F ) 
722 778
 [