From 638128a153dfa2d3ec408559238b1e8a0f4c53f3 Mon Sep 17 00:00:00 2001 From: Marcus Ramse Date: Fri, 12 Apr 2024 01:52:20 +0200 Subject: [PATCH] Update embedded font (#22) --- build.zig | 18 + samples/feature_test.zig | 2 + simulator/assets/font.png | Bin 1936 -> 0 bytes simulator/src/constants.ts | 227 ---- simulator/src/font.ts | 226 ++++ simulator/src/framebuffer.ts | 3 +- src/cart.zig | 2020 +--------------------------------- src/font.zig | 2017 +++++++++++++++++++++++++++++++++ 8 files changed, 2266 insertions(+), 2247 deletions(-) delete mode 100644 simulator/assets/font.png create mode 100644 simulator/src/font.ts create mode 100644 src/font.zig diff --git a/build.zig b/build.zig index 385580d..b1a8534 100644 --- a/build.zig +++ b/build.zig @@ -88,6 +88,24 @@ pub fn build(b: *Build) void { }); mz.install_firmware(b, mvp, .{}); } + + const font_export_step = b.step("generate-font.ts", "convert src/font.zig to simulator/src/font.ts"); + font_export_step.makeFn = struct { + fn make(_: *std.Build.Step, _: *std.Progress.Node) anyerror!void { + const font = @import("src/font.zig").font; + var file = try std.fs.cwd().createFile("simulator/src/font.ts", .{}); + try file.writer().writeAll("export const FONT = Uint8Array.of(\n"); + for (font) |char| { + try file.writer().writeAll(" "); + for (char) |byte| { + try file.writer().print(" 0x{X:0>2},", .{byte}); + } + try file.writer().writeByte('\n'); + } + try file.writer().writeAll(");\n"); + file.close(); + } + }.make; } pub const Cart = struct { diff --git a/samples/feature_test.zig b/samples/feature_test.zig index 0d0757f..7f0c686 100644 --- a/samples/feature_test.zig +++ b/samples/feature_test.zig @@ -88,4 +88,6 @@ export fn update() void { wasm4.rect(.{ .red = 31, .green = 31, .blue = 31 }, .{ .red = 0, .green = 63, .blue = 31 }, 100, 100, 10, 10); wasm4.text(.{ .red = 0, .green = 0, .blue = 0 }, .{ .red = 31, .green = 63, .blue = 31 }, fbs.getWritten(), 0, 0); + + wasm4.text(.{ .red = 0, .green = 0, .blue = 0 }, .{ .red = 31, .green = 63, .blue = 31 }, "\x80\x81\x82\x83\x84\x85\x86\x87\x88", 0, 120); } diff --git a/simulator/assets/font.png b/simulator/assets/font.png deleted file mode 100644 index 0697f291e72d2e0a3e1769810178e4bf3c3477be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1936 zcmV;B2XFX^P)EX>4Tx04R}tkv&MmKpe$iQ^l&43U&~2$WWauh>AFB6^c+H)C#RSm|Xe=O&XFE z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMyc6k5c1aNLh~_a1le0HIc5n$f_we!cF3PjK&;2?2)U3q-pGZ8*4AUmwAfDc| z4bJ<-VOEe;;&b9LlP*a7$aTf#H_rJ63p_Jyrjql-VPY}g#!4Hrf~gTt5l2)_r+gvp zvdVdjvsS9G<~{ifgIRrLnd>x%5yv8yAVGwJ3W_MfMwC{a6bnh(k9qiq8h(jf3b~44 z<+@xR(=zMXUj}f427pPYq=lj@k>L-Bz8MxA0{&EeN`6RvC z(jrGdXdAe=ZfVLMaJd5vJ{htpHzYqzA(sQ*&*+;nz`!lgv*z~J+{ftykfN>~IR?jNMAa%t{iWR0LARI;9m~2Qf3lGwEWG6k8++nI?1J3O2PNkBWvx zJ;NzUCO$!OhU{0W0yWfb0bm+Ci~1?7L@|-Zhq#mt$r+Yk*_W2X(d&t!i4zipEu~8A zUpJw`_=2}WVe4oT58SY_O!s_%hDcLAvB6Q!LFXtG&jQq0X`r^SHCAOjmU->SQxM8m z0{Ue_%{ZTp+!LH~T+CEmj@<2F%r#$hK@NJ4&Z!!X__Zjc>`q!y9OFkaYsOzW1mmmj z3j-(%DN}WvLBqxM^_J(OeX563h@-MNeF#d+ z9S#-c_3?ZbYE13UzT=Ql>Gna=XRzu8m|*ffd&*J?qbspCOnHiV-34=I+w(`&X!)*Z*pv4nZ1lP83kZ_$5B*x% zq%|nF$oTM{PpU%;W_8$l-8`M*u(U%FumW~;Hovqa3O;hUxHW`=EOez41ivgnLzVzc zu`KL*SzI+>YNla4Yz?bY+WQ|Hc6(et9a%t zi)LOvFdB`Y7S5qxF?gv@mwcvGH{;W-XBR}A;puqoGq)!}S0A^cuajHhZEZa1_mC|&umQ7&;4VE)96QrWZ0m}6xodi;crQO^5ISjz% z@Oq|^wwiq*GJd24q2{-a0va`G0lqF>=~|t&Qi`p@?qX_DffLGaUN(Ovu)I- z5nN$VRp;SsFqYEA;GL9Rpq}b4=5k&+@}0G@TyX09Pq3Occ_L*T(cWgeRHa!bn2cb0 zxrIX!SGD#1rRwMz0k?6};!}tT%8PVEE3%?ZRtmP2MRYLZ=!z4ZUcpKAbB&{&Ne}oK zjVZ&XJ}L`8;REx>%F6=1UT*~)sTMclY}Uz^9kx_#Muh}Dd0XMMvaX+7oUG~UDKleDCNJd|#w<`t}CUw^p>_~=u;vM_GRPGc;EG{OanT_(g|C0-+k_;M%IUR`dr~m`~4Va((h+D z^L{_oCpGo0&LIFCN;s7lD;#;9UDY8CQh6nvkYG{R5xLo4S2)x9Im4Oze#$2mK%$z* zMd>@ef|K;Q!#TRX#$mN-91IPc2V?EK?{}JCF8~*QHE?e0xtG_zo^SNI#A)?KPaoBY zI0MGvN%7V+Kt9r*Bn`XJC-~kfn?|4B;!OMW4CmzfTY35GPH-Zm!Mi@4-g+Pl^7#i> WjVBR^+U{)t0000