diff --git a/examples/curlywas/font_palette.uw8 b/examples/curlywas/font_palette.uw8 new file mode 100644 index 0000000..df3de4c --- /dev/null +++ b/examples/curlywas/font_palette.uw8 @@ -0,0 +1,34 @@ +import "env.memory" memory(4); + +import "env.cls" fn cls(i32); +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); + +export fn upd() { + cls(0); + + printString(0); + + let y: i32; + loop y { + setCursor(y + 2, 3); + let lazy hexChar = select(y < 10, y + 48, y + 87); + printChar(hexChar); + setCursor(0, y + 5); + printChar(hexChar); + printChar(32); + let x = 0; + loop x { +// setTextColor(x + y * 16); + printChar(x + y * 16); + branch_if (x := x + 1) < 16: x; + } + branch_if (y := y + 1) < 16: y; + } +} + +data 0 { + "Default font:" i8(0) +} \ No newline at end of file diff --git a/platform/bin/loader.wasm b/platform/bin/loader.wasm index 0221d2f..dc8fc96 100644 Binary files a/platform/bin/loader.wasm and b/platform/bin/loader.wasm differ diff --git a/platform/bin/platform.uw8 b/platform/bin/platform.uw8 index 3a4ecd7..c1ba9e9 100644 Binary files a/platform/bin/platform.uw8 and b/platform/bin/platform.uw8 differ diff --git a/platform/src/font.png b/platform/src/font.png index c531dd4..783a691 100644 Binary files a/platform/src/font.png and b/platform/src/font.png differ diff --git a/platform/src/font.pxo b/platform/src/font.pxo index c11d7a9..5fe7f8a 100644 Binary files a/platform/src/font.pxo and b/platform/src/font.pxo differ diff --git a/platform/src/platform.cwa b/platform/src/platform.cwa index a53be17..e986fdc 100644 --- a/platform/src/platform.cwa +++ b/platform/src/platform.cwa @@ -55,9 +55,6 @@ export fn fmod(a: f32, b: f32) -> f32 { // DRAWING // ///////////// -global mut textCursorX = 0; -global mut textCursorY = 0; - export fn cls(col: i32) { let i: i32; textCursorX = 0; @@ -142,7 +139,10 @@ export fn circle(cx: f32, cy: f32, radius: f32, col: i32) { // TEXT // ////////// +global mut textCursorX = 0; +global mut textCursorY = 0; global mut textColor = 15; +global mut bgColor = 0; export fn printChar(char: i32) { if char == 10 | textCursorX >= 320 { @@ -156,9 +156,7 @@ export fn printChar(char: i32) { let bits = (char * 8 + y)?0x13400; let x = 0; loop pixels { - if (bits := bits << 1) & 256 { - setPixel(textCursorX + x, textCursorY + y, textColor); - } + 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; @@ -191,6 +189,19 @@ export fn printInt(num: i32) { printString(p); } +export fn setTextColor(col: i32) { + textColor = col; +} + +export fn setBackgroundColor(col: i32) { + bgColor = col; +} + +export fn setCursorPosition(x: i32, y: i32) { + textCursorX = x * 8; + textCursorY = y * 8; +} + /////////// // SETUP // /////////// diff --git a/uw8-tool/src/base_module.rs b/uw8-tool/src/base_module.rs index 567bd6e..1085adb 100644 --- a/uw8-tool/src/base_module.rs +++ b/uw8-tool/src/base_module.rs @@ -84,6 +84,9 @@ impl BaseModule { add_function(&mut functions, &type_map, "printChar", &[I32], None); add_function(&mut functions, &type_map, "printString", &[I32], None); add_function(&mut functions, &type_map, "printInt", &[I32], None); + add_function(&mut functions, &type_map, "setTextColor", &[I32], None); + add_function(&mut functions, &type_map, "setBackgroundColor", &[I32], None); + add_function(&mut functions, &type_map, "setCursorPosition", &[I32, I32], None); for i in functions.len()..64 { add_function(