Commit graph

19 commits

Author SHA1 Message Date
ff4f947e69 document everything 2025-02-25 21:41:44 -06:00
Liz
d4a26331dd CI, clang, readme 2025-02-24 12:29:05 -05:00
f1535956ef Use camelCase for method names 2025-02-24 11:09:51 -06:00
c2318b9fd3 fix column alignment 2025-02-21 10:43:10 -06:00
924b1897f2 Add "very low intensity" 2025-02-21 08:31:39 -06:00
c4bb02cc0b Add background color support
RP2350 HSTX RGB111 text mode theory:

 * Cached font in memory is 13 pixels across, organized as the low 26 bits of 32-bit words
 * A 14th pixel is always black
 * Pixels in the cache are all adjacent
 * Each output pixel is 1 byte
 * "R2G2B2" values are created by selecting 2 bits out of the font data and multiplying them by the color value (SWAR)

The old implementation performed one multiply per output pixel, or 13
8-bit multiplies per character.  The new implementation carefully
re-orders the data in the font cache so that 32-bit multiplies can be
performed instead. In this case, 4 multiplies per character are needed.

Each two characters make 28 bytes (7 32-bit values) in the output buffer,
so the character generator is unrolled manually once, making all stores
to the output buffer 32 bits at a time.

This gains enough efficiency that the loop can be written in C instead
of assembler and also there's enough time to add background color. The
background color is XOR'd into each output pixel.

The final new trick is reduced intensity: When reduced intensity is
selected, the low bit of the font data is masked away, so that instead
of intensities 0/1/2/3, the possible intensities are 0/0/2/2.

As neither the regular nor reduced intensity text are visible on the
matching background color, there are effectively 8 * 14 = 112 useful
combinations.
2025-02-21 08:20:03 -06:00
b4280411cc Test terminal-like printing in the text test 2025-02-19 14:21:51 -06:00
24d8426b8f Correct P/N lane info again 2025-02-19 11:32:04 -06:00
40857c0f7e I was confused about whether to give the "P" or "N" pin numbers 2025-02-19 10:42:02 -06:00
f88380b4db Let's push it back to the Arduino board definition to provide pinout info 2025-02-19 10:31:45 -06:00
08fa806c2f Add hardware cursor 2025-02-18 17:27:18 -06:00
c4f7283eba Add bare minimum text mode & example 2025-02-18 16:51:54 -06:00
32de12a0e8 Add 8-bit palette mode 2025-02-18 16:12:47 -06:00
ba25264d3e Don't wait for serial at start 2025-02-18 11:08:03 -06:00
df8f28614d Create Arduino library to wrap dvhstx
The most basic test (320x240x16bpp) works on the Metro RP2350.
2025-02-17 15:37:33 -06:00
34546a5ad0 remove everything we don't need 2025-02-17 10:43:25 -06:00
Mike Bell
3a750c55cb Fix release build 2024-08-10 23:13:25 +01:00
Mike Bell
ec3f15cecb RiscV support, textmode example 2024-08-10 22:08:11 +01:00
Mike Bell
b0255f2c62 Initial commit 2024-08-10 13:04:51 +01:00