Skip to content

Latest commit

 

History

History
56 lines (53 loc) · 2.6 KB

0117-2023-07-18.md

File metadata and controls

56 lines (53 loc) · 2.6 KB

18 Jul 2023

Previous journal: Next journal:
0116-2023-07-16.md 0118-2023-07-19.md

Targeting Tiny Tapeout with Raybox

  • Make the map just 16x16x2 (512 bits). Internal or external?
    • Kinda needs to be internal, because we need random access during tracing, and an 8 bit address, and there aren't enough outputs to support that. It would probably only work externally if we could somehow write the address thru the bidirs, then read via spare inputs.
    • If internal, updating the map is easy with SPI.
    • If external, updating the map requires lots of external logic...? Map would then be static (e.g. ROM)
    • If the map is STILL too much, just do bitwise logic, and maybe have programmable blocks:
      • 4x (4+4+2) bits, i.e. X/Y/colour => 40 bits
      • Or treat them like overlay rectangles: 4x ((4+4)*2+2+2) bits, i.e. 2x X/Y corners, pattern option, colour => 80 bits
  • No sprites.
  • No doors, though these could be treated like an interesting and cheap gameplay addition?
  • No textures: They need too many extra trace buffer bits for doing texture column num and scaling?
  • Make trace buffer external.
  • 320x128 resolution:
    • Allows for 2 clocks per pixel, if needed. This COULD allow for 2 reads, and hence 16 trace buffer bits per column.
    • Assuming 8 bits per trace buffer column:
      • 6 bits needed for wall height (0..63, mirrored)
      • 1 bit for side: 2 tones.
      • 1 bit for wall colour: 2 colours (red and blue, or even configurable?)
  • Q9.9 (or even less, given resolution?) - hence even smaller vectors.
  • RGB222 internally, but output as RGB111 with temporal ordered dither.
  • Configurable ceiling/floor colour.
  • SPI slave for:
    • Vectors
    • Map writes (individual?)
    • Colour palette
    • Show map overlay
  • Essential outputs:
    • HSYNC
    • VSYNC
    • R
    • G
    • B
    • Trace buffer address clock
    • Trace buffer address reset
    • Trace buffer mode: read/write
  • Essential inputs:
    • CLK
    • Reset
    • MOSI
    • SCLK
    • SS
    • 5 more inputs available - Could be used for selecting mode/debug stuff.
  • Bidir would be used specifically for trace buffer reads/writes
  • Make 1 input a blanking signal, i.e. put certain things into tristate mode?
  • Add a small number of rectangle overlay buffers?
  • Remember that trace buffer could be a giant shift register/loop, if that helps.
  • Have a think about what games could be made with this, e.g. maze, dodge walls, find fake walls...?