Curly / Medieval presents
my contribution to the Tiny Tapeout 8 demo competition. Code, graphics, and music by Curly (Toivo Henningsson) of Medieval.
This is the deluxe version, with Pmod VGA RGB444 output support and a few changes from the original, in 2x2 tiles compared to the original's 1x2.
The demo can be seen at https://youtu.be/pkiTu3iLA_U (captured from a Verilator simulation).
See the documentation for the original version: https://github.com/toivoh/tt08-demo/blob/main/docs/info.md / Tiny Tapeout 8 project [770]. The deluxe version adds some tweaks such as a shadow beneath the logo, and credits.
Plug in a TinyVGA compatible Pmod on the TT08 demo board's out Pmod.
Plug in a Pmod compatible with Mike's audio Pmod on the TT08 demo board's bidir Pmod.
Set all inputs to zero to get the default behavior.
Warning: The default behavior includes some flashing ligts. Set v_bass_off
and v_drums_off
(keep ui_in
at 3 instead of 0) to remove flashing.
The demo starts directly after reset.
This demo is best viewed with the monitor rotated 90 degrees, with the left side facing down.
There is no guarantee that changing the inputs after reset is released works as intended, but it probably does. Some of the inputs provide options on how the demo is run:
v_bass_off
: Setting this high reduces flashing when the audio visualizer is on by turning off the bass.v_drums_off
: Setting this high reduces flashing when the audio visualizer is on by turning off the drums.v_bass_low
: Setting this high keeps the bass at its default octave even when the audio visualizer is on, which increases flashing.pause
: While this is high, the demo is paused and the sound is turned off. Can probably be used to start the demo paused.step_frame
: While this is high, the the demo advances one frame per cycle. Used for testing.rgb444_mode
: Setting this high sets the output to RGB444 mode instead of the default RGB222pmod_vga_pinout
: Setting this high enables the alternative Pmod VGA pinout.
t_
outputs are used when pmod_vga_pinout
is low. This fits the TinyVGA Pmod pinout. (p_
only outputs are not driven.)p_
outputs are used when pmod_vga_pinout
is high. This fits the Pmod VGA pinout.logo_shadow_off
: When high, removes the logo's shadow (like in the non-deluxe version).If using A Pmod VGA as output, you can set rgb444_mode
to increase the color depth, or leave it unset to get the original RGB222 experience. Please try both: which to prefer is a matter of taste.
For the demo competition, only use a Pmod VGA if you have one and can get sound output while using it.
If using Pmod VGA, set pmod_vga_pinout
, and you can set rgb444_mode
as well. Don't set any other inputs.
If using TinyVGA for output, set all inputs to zero.
This project needs
The choice of pinout is controlled by the pmod_vga_pinout
input.
# | Input | Output | Bidirectional |
---|---|---|---|
0 | v_bass_off | t_R1 / p_R0 | p_G0 |
1 | v_drums_off | t_G1 / p_R1 | p_G1 |
2 | v_bass_low | t_B1 / p_R2 | p_G2 |
3 | pause | t_vsync / p_R3 | p_G3 |
4 | rgb444_mode | t_R0 / p_B0 | p_hsync |
5 | pmod_vga_pinout | t_G0 / p_B1 | p_vsync |
6 | logo_shadow_off | t_B0 / p_B2 | audio_out_n |
7 | step_frame | t_hsync / p_B3 | audio_out |