summaryrefslogtreecommitdiffstats
path: root/_log/matrix-digital-rain.md
blob: d3f6ab43903dbd0b96fd78b1d8489e1a160ea0ae (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
---
title: 'Matrix Rain: 2025 refactor'
date: 2025-12-21
layout: post
project: true
thumbnail: thumb_sm.png
---

Fixed the Unicode issue finally. Can now mix ASCII + Katakana.

<video style="max-width:100%;" controls="" poster="poster.png">
  <source src="matrix.mp4" type="video/mp4">
</video>

Moved Phosphor decay level into the 4th byte of the RGB union - should’ve done
this in 2022 instead of separate array. What was I thinking.

Keeping the RGB/PD union as it is. I'm aware of the portability issues, but I’m
on a little-endian machine, and I’m the only one reading this anyway. It’s
cleaner.

New charset array works. UNICODE(min, max) macro packs the range into uint64.
insert_code() unpacks block and picks random char.

Full-width Katakana breaks columns. Stick to half-width (U+FF61-U+FF9F) range .
Compile with -DNOKANA to disable Katakana altogether.

blend() is still good, left it alone.

Tossed license and automake cruft. Just `cc -O3 main.c -o matrix`. Don't need
the ceremony.

Performance regressions: none. Runs like a charm on the T490. 2% CPU. No
whirring fans.

Commit:
[03f8d87](https://git.asciimx.com/matrix-digital-rain/commit/?id=03f8d87ba7c2e46bd3f3cc4c772fb3a2ac740c92)