Commit Graph

973 Commits

Author SHA1 Message Date
Simon Forman 2b07553aa1 Draw chars when you click.
Pick a letter at random.

I wasn't checking that the destination values were not less than zero,
which let you click at the top/left edges of the screen and therefore
the carefree_alpha_blend_blit() would try to write to areas outside the
framebuffer.  I started to see "zalgol" pixels in the letters, so I'm
guessing the pixel data is getting stored just above the framebuffer,
which makes sense (because that's the order they appear in the source
code and this is a simple system!)  When you click at the top of the
screen it was writing pixels in the font data, eh?  Then when you click
elsewhere on the screen you get extra pixels with your letterforms and
it looks like Unicode Lovecraft puns.
2023-02-26 15:24:40 -08:00
Simon Forman 9ca4f81325 A sort of blit. 2023-02-26 15:06:30 -08:00
Simon Forman d7db105bc8 Depend on graphics.h. 2023-02-26 13:24:34 -08:00
Simon Forman dbc2fe5854 Move draw_background to own file graphics.h. 2023-02-26 13:20:38 -08:00
Simon Forman 27385e5319 Switch font size to 22.
My old eyes ain't what they used to be.
2023-02-26 13:09:02 -08:00
Simon Forman f7b644d210 Minor cleanup. 2023-02-26 13:04:04 -08:00
Simon Forman 057743c473 Try changing the font size. 2023-02-26 12:42:39 -08:00
Simon Forman f403b6caa2 Display font in anti-aliased glory! 2023-02-26 11:23:32 -08:00
Simon Forman 84f163b71c Alpha blend font FTW! 2023-02-26 11:21:18 -08:00
Simon Forman 2680d8ce1b Okay, alright, skipping blank pixels. 2023-02-26 11:12:07 -08:00
Simon Forman 051b9a46b8 We have a character on the screen!
It looks like potato because no alpha blending yet, but it's certainly
there!  I don't like the spelling of the C code, but who cares?  It
works.
2023-02-26 11:07:29 -08:00
Simon Forman 5d01480f3d A start on draw_char(). 2023-02-26 10:52:09 -08:00
Simon Forman c886a27ddd Rename anim_callback to draw_background
because that's what it is
2023-02-26 10:18:46 -08:00
Simon Forman fc8920a09c i can haz font data
ooo that's a finicky parser tho

Early days.  It's all good.

(But damn those Rust tracebacks, what a useless pile of text.  i know
the problem is in the parser!?  why is it showing me all the rust
internal crap and none of the actual stack trace of the ncc code?  I
mean, look at this thing:

    sforman@bock:~/src/Joypy/implementations/uvm-ncc % setenv RUST_BACKTRACE full
    sforman@bock:~/src/Joypy/implementations/uvm-ncc % gmake
    cd /home/sforman/src/uvm/ncc ; cargo run /home/sforman/src/Joypy/implementations/uvm-ncc/xerblin.c
        Finished dev [unoptimized + debuginfo] target(s) in 0.01s
         Running `target/debug/ncc /home/sforman/src/Joypy/implementations/uvm-ncc/xerblin.c`
    thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: ParseError { msg: "expected identifier", line_no: 139, col_no: 20 }', src/main.rs:98:43
    stack backtrace:
       0:          0x10d741f - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h919bef3d5abebde9
       1:          0x10ee08e - core::fmt::write::h6413343c5226105f
       2:          0x10bce85 - std::io::Write::write_fmt::had0ddcb25461208f
       3:          0x10d71d5 - std::sys_common::backtrace::print::h5ed9962f90e9b258
       4:          0x10c6eff - std::panicking::default_hook::{{closure}}::h3978a8a8f5c1f893
       5:          0x10c6b91 - std::panicking::default_hook::h0cdbdd5201407347
       6:          0x10c75bb - std::panicking::rust_panic_with_hook::h15bc8b6da20c2af3
       7:          0x10d7777 - std::panicking::begin_panic_handler::{{closure}}::h082a693f9436206b
       8:          0x10d756c - std::sys_common::backtrace::__rust_end_short_backtrace::h56343aa2331ff455
       9:          0x10c7142 - rust_begin_unwind
      10:          0x10ed3d3 - core::panicking::panic_fmt::hf18d1d226927e137
      11:          0x10efa93 - core::result::unwrap_failed::ha5725a0b4539229c
      12:          0x105b505 - core::result::Result<T,E>::unwrap::h0f336a18a308049e
                                   at /wrkdirs/usr/ports/lang/rust/work/rustc-1.66.0-src/library/core/src/result.rs:1113:23
      13:          0x1068314 - ncc::main::h189929cbc5450262
                                   at /usr/home/sforman/src/uvm/ncc/src/main.rs:98:20
      14:          0x10611cb - core::ops::function::FnOnce::call_once::h8146a3c8fa28ca14
                                   at /wrkdirs/usr/ports/lang/rust/work/rustc-1.66.0-src/library/core/src/ops/function.rs:251:5
      15:          0x106e13e - std::sys_common::backtrace::__rust_begin_short_backtrace::h4e9f285841c55b79
                                   at /wrkdirs/usr/ports/lang/rust/work/rustc-1.66.0-src/library/std/src/sys_common/backtrace.rs:121:18
      16:          0x1069fa1 - std::rt::lang_start::{{closure}}::h8ca60a785648e691
                                   at /wrkdirs/usr/ports/lang/rust/work/rustc-1.66.0-src/library/std/src/rt.rs:166:18
      17:          0x10c1514 - std::rt::lang_start_internal::hadf3843363799440
      18:          0x1069f7a - std::rt::lang_start::h3ee6ffb894d9f1d3
                                   at /wrkdirs/usr/ports/lang/rust/work/rustc-1.66.0-src/library/std/src/rt.rs:165:17
      19:          0x10684ee - main
      20:          0x104f472 - _start
                                   at /usr/src/lib/csu/amd64/crt1.c:76:7
    gmake: *** [GNUmakefile:11: /home/sforman/src/uvm/ncc/out.asm] Error 101

There's ONE LINE from the ncc source: uvm/ncc/src/main.rs:98:20 which is a call
to parse_unit, but it's the following unwrap that seems to be causing the error
message?
2023-02-26 10:11:58 -08:00
Simon Forman 3d419a3330 This compiles. 2023-02-26 10:06:39 -08:00
Simon Forman 843654861b I think I got it. 2023-02-26 10:01:40 -08:00
Simon Forman 7a289db111 Adding a function and it still compiles. 2023-02-26 09:39:21 -08:00
Simon Forman f5f6233302 This compiles and runs, include font.h but don't call init_font_data() yet. 2023-02-26 09:37:59 -08:00
Simon Forman 8c5e9aa105 So far... 2023-02-26 09:37:20 -08:00
Simon Forman b013168679 Drawing pixel per mouse move is slow at 1280x800.
So let's just use a smaller screen for now, eh?
2023-02-26 08:52:53 -08:00
Simon Forman e047af09b3 Repair damage during mouse move.
This is a compromise between updating the screen every frame (which
takes ~60% CPU on my old no-GPU hardware) and repairing damage from e.g.
dragging offscreen and back on, or covering and uncovering the window
with another window.
2023-02-26 08:42:37 -08:00
Simon Forman c48f1797b4 Ignore tryrax binary. 2023-02-26 07:58:18 -08:00
Simon Forman eb67419327 Let's use uvm.
https://github.com/maximecb/uvm
2023-02-26 07:53:47 -08:00
Simon Forman 7485383d9f Allocate a buffer just large enough.
I figure that's worth the overhead of iterating twice.  It's happening
during a user interaction so there's plenty of time, eh?
2023-02-20 16:23:41 -08:00
Simon Forman eeb935fa07 Break up completion into simple and prefixed cases. 2023-02-20 16:04:12 -08:00
Simon Forman c0b582567a Handle completion of symbols with a prefix...
You can type stuff and then tab and it will work.  Before it would try
to complete the whole line, which didn't work.
2023-02-20 15:48:59 -08:00
Simon Forman 2d3c17c152 Linenoise with rax. 2023-02-20 12:53:58 -08:00
Simon Forman 7d93262c81 Let's use rax to generate tab completions? 2023-02-20 11:19:27 -08:00
Simon Forman b32a3f2496 Line editing with linenoise.
https://github.com/antirez/linenoise
https://todo.sr.ht/~sforman/thun-der/33
2023-02-20 10:20:40 -08:00
Simon Forman d8263e0527 Move and rename push_thing_onto_expression(). 2023-02-20 08:35:03 -08:00
Simon Forman d0a43bea52 Minor cleanup. 2023-02-20 06:38:18 -08:00
Simon Forman 83f393a176 typedef FTW 2023-02-19 20:06:07 -08:00
Simon Forman c35396cf73 Wrap it? 2023-02-19 19:43:53 -08:00
Simon Forman 98e3e91345 I figured out how to spell it. 2023-02-19 19:41:11 -08:00
Simon Forman 5258f4d894 A little macro. 2023-02-19 19:40:43 -08:00
Simon Forman f06c261e81 Let's use the idiomatic functions, eh?
That way the code is simpler and there aren't error messages scattered
all over the place.
2023-02-19 17:54:34 -08:00
Simon Forman f194df8159 How would you compile this?
fn [+] step
2023-02-19 17:43:18 -08:00
Simon Forman 7d99bb4e23 SWIProlog 2023-02-18 20:09:19 -08:00
Simon Forman a33bb8cdaa eval_joy_ast 2023-02-17 13:56:37 -08:00
Simon Forman 0d51f7ec1f A simple Joy-to-AST program.
Written in GNU Prolog, doncha know!?  :D
2023-02-17 11:08:43 -08:00
Simon Forman efbca82064 vlist.c 2023-02-17 11:07:32 -08:00
Simon Forman d637a5015c Minor cleanup. 2023-02-16 17:45:25 -08:00
Simon Forman bf30bbe69b Minor cleanup. 2023-02-16 13:36:31 -08:00
Simon Forman e056831577 Minor cleanup. 2023-02-16 13:26:11 -08:00
Simon Forman 6cf168c280 pick and length 2023-02-16 12:12:42 -08:00
Simon Forman 55b48a0655 Minor cleanup. This is pretty nice.
It's hard to believe this datastructure is so obscure!
2023-02-16 11:45:54 -08:00
Simon Forman a6a2c2d955 Double list size each time; neat demo. 2023-02-16 11:42:17 -08:00
Simon Forman 823c53308c Set correct last_used when creating new vlist. 2023-02-16 11:41:35 -08:00
Simon Forman 95f927ae95 () is the null pointer 2023-02-16 11:27:39 -08:00
Simon Forman 8a3f3aff5c A start on VList. 2023-02-16 10:56:37 -08:00