From 00cbe656cf31099751875b577a23cc1b5154eeca Mon Sep 17 00:00:00 2001 From: Dennis Ranke Date: Sun, 12 Dec 2021 00:54:58 +0100 Subject: [PATCH] add graphicsText mode and finish font_palette example --- examples/curlywas/font_palette.uw8 | 32 ++++++++++++++++++++++------- platform/bin/platform.uw8 | Bin 2303 -> 2347 bytes platform/src/platform.cwa | 29 ++++++++++++++++++++------ 3 files changed, 48 insertions(+), 13 deletions(-) diff --git a/examples/curlywas/font_palette.uw8 b/examples/curlywas/font_palette.uw8 index df3de4c..7cb199a 100644 --- a/examples/curlywas/font_palette.uw8 +++ b/examples/curlywas/font_palette.uw8 @@ -5,24 +5,38 @@ import "env.printString" fn printString(i32); import "env.printChar" fn printChar(i32); import "env.setCursorPosition" fn setCursor(i32, i32); import "env.setTextColor" fn setTextColor(i32); +import "env.line" fn line(f32, f32, f32, f32, i32); +import "env.isButtonTriggered" fn triggered(i32) -> i32; + +global mut mode: i32 = 0; export fn upd() { cls(0); - printString(0); + if triggered(4) { + mode = !mode; + } + + setTextColor(15); + printString(mode * 0x20000); let y: i32; loop y { - setCursor(y + 2, 3); + line(0 as f32, (y * 9 + 39) as f32, (14+16*9) as f32, (y * 9 + 39) as f32, 1); + line((y * 9 + 15) as f32, 24 as f32, (y * 9 + 15) as f32, (38+16*9) as f32, 1); + setTextColor(15); + setCursor(y * 9 + 16, 24); let lazy hexChar = select(y < 10, y + 48, y + 87); printChar(hexChar); - setCursor(0, y + 5); + setCursor(0, y * 9 + 24+16); printChar(hexChar); - printChar(32); let x = 0; loop x { -// setTextColor(x + y * 16); - printChar(x + y * 16); + setCursor(x * 9 + 16, y * 9 + 24+16); + setTextColor(select(mode, x + y * 16, -9)); + if y >= 2 | mode { + printChar(select(mode, 0xa4, x + y * 16)); + } branch_if (x := x + 1) < 16: x; } branch_if (y := y + 1) < 16: y; @@ -30,5 +44,9 @@ export fn upd() { } data 0 { - "Default font:" i8(0) + "Default font: (press " i8(0xcc) " for palette)" i8(5, 0) +} + +data 0x20000 { + "Default palette: (press " i8(0xcc) " for font)" i8(5, 0) } \ No newline at end of file diff --git a/platform/bin/platform.uw8 b/platform/bin/platform.uw8 index 31094729cd8076491389b70483acefa1762850b3..ae99f3645968481ba74a9a1e10a0dd37bc612ee0 100644 GIT binary patch literal 2347 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 RNP{;!ETS6H@IHo%!vGHipj7|> literal 2303 zcmV?w4>-fbVFqs! zhnWjCX`eUoH_&t=w)rn=)ZC;hM1X$pb(*VQEDzv-g2*Pgx)ryxY*Gm^ylt>UO}y~j zER?Uvq-%>u16WtS3D~cWi;oA=zzQhCc%LBXU2u5V+pp&Rru&EjQQAwCC|k3%?hHJd z(kfoQAM+Z8zueVAD9`b;=a=U9vMdTi15d@n-_BRE&bjg|Q2{?Rs$DHSZdC-e<6GD4 zsv!k-APBbQbBz?fEQ{R4)Ty@(!DTk1V&uO@`TU1JCOWOpEypAj=K)Icb>Ux+zIL{u zXtK@aFhs*QPns9Ttb?`r2vID;EhAu&V=`c)@!a^Z{$Y~?WNkCE&?d2htEJRI`>Yk- z1%J-;$hT8sjypTQBHn>lMD;oI2$}dktE~ixF~RUGVFS|k z1IYf~8ia24;`BhO-uK5#H23{ivwW7%OopGb*FD5SMSP^C+|bb=oGe0 z`qQ55+Gt}mXov6;=S(^e0imRi?cm6zFZ;}knsfxT@3GcGBZ?W+rGfk_RkI>3e-+#3 zlh0HWo?cdj7U+tH1LAXTb+%?qZb8=TgKTjYX5@&0EkDLT6?H6QWnzJCL=acSuYdlG z3Z=a~Fi2YR$#^(SqaEeF^_)Y$VcFHRKdX#V7-`S@m3nvj>rqHXSG!8`*-VPI4qTp~ zBNI+Ki&>3E;%wQu*ouKDA5zgFm&5hv=~epKV7Ad;H>gm>p*WkaS_dwxbS!~;&qJ); zDHWdurM|Q2rj&MBwjT-(#cyY~$u7jEOw_>^QqHppvbU*fSuG3DZQPEoYm2a|DUnVh zPTI=(F2ZdaGykb^jc^?#L<)T%_kgq~-k?=U2w~&Xw&w#^UA!k&yVhxE2KME4L$f_Q z5{EMk)vXN-u#g|?`=8W*Dhf7iyI2ni=c`LEk}B`##81Vm@!Ly4NNhc6Gu zSKj$RithSq&hF7o_j>hKcy$O+^irL^#1|=y-96?0wa{W9@^q2jLPx4E7+^Nr zWXYYpQ8WoK5Fm-rh4r~V|4_Rdb$;4w40V`U5vWluv*(@6@_rXsg{$z6pN6+!2b^`< zskaxZU}qc)JbDkZO9#k6li{D4mNUm_YA!f4+#j_{y+8@f9+QP)gRH<%w0+tq*F$y( z07irkDCjH)&f{x{dVLVzu@S|ZF%5-hCz_(}=rz7Sd)kY3sc8bQaf{sYo3FZxY`o0z zpqRF$Z|RM*hfW=giYy3$4Q;(Mbs(k2XmzQWsRU@$@-|s$;4X`%bYV4KYC*{w%lcip z5;3ULYyY8*HsSP#@Zty(>;NHTIS(sK^`0OQU=|2d8ItYpNDYg`0TCFuv7W|!t)Ry; zd;${IP@ zUIOQwrdJ-|S6gx2+FqQwj@-O4WIzMNA=&rI5mh?`O`FOYp2idtWeTwaRh`K8VHm8{ ztc(rWSW9NG4b5M_a=?jymXBAOcWcy;mtyl7F>J#*k}N=_QU3J*6b&yYv>4kX#d@v< z(G0E*;-5H83TbF zW-WC?6rnlK3SJ|k@mn8YQ(#3sxk7F=V}KgTNr_h83raI(I^SpHt5?zbOFT%sy==Et z^bPH@dgH=51()`8TC7S!|DwRxRY-R$j=Lk7nBoFcWG`li`-4^1ay z5@)E=%rA^|{f`cvQJDIvR&(su4S6O#(ESp%G@#@uK&2XCc#|64 z($J#Qtmwein5+Bo*C=C~`Hl-A^5xsA7_w} zCN=IQS7~Qd5g_*)vX&0%jh%>mJ|Fitakiyc($|*`N69LC3&$vIbb}_DxfGoYREx&| ZTsWZgZiU~h4L<)^1z= 320 { + if char == 4 | char == 5 { + graphicsText = char == 5; + return; + } + + if char == 10 | (!graphicsText & textCursorX >= 320) { textCursorX = 0; textCursorY = textCursorY + 8; return; @@ -238,9 +245,18 @@ export fn printChar(char: i32) { loop rows { let bits = (char * 8 + y)?0x13400; let x = 0; - loop pixels { - setPixel(textCursorX + x, textCursorY + y, select((bits := bits << 1) & 256, textColor, bgColor)); - branch_if (x := x + 1) < 8: pixels; + if graphicsText { + loop pixels { + if (bits := bits << 1) & 256 { + setPixel(textCursorX + x, textCursorY + y, textColor); + } + branch_if (x := x + 1) < 8: pixels; + } + } else { + loop pixels { + setPixel(textCursorX + x, textCursorY + y, select((bits := bits << 1) & 256, textColor, bgColor)); + branch_if (x := x + 1) < 8: pixels; + } } branch_if (y := y + 1) < 8: rows; } @@ -281,8 +297,9 @@ export fn setBackgroundColor(col: i32) { } export fn setCursorPosition(x: i32, y: i32) { - textCursorX = x * 8; - textCursorY = y * 8; + let lazy scale = select(graphicsText, 1, 8); + textCursorX = x * scale; + textCursorY = y * scale; } ///////////