Skip to content

Latest commit

 

History

History
61 lines (47 loc) · 3.03 KB

0081-2023-05-20.md

File metadata and controls

61 lines (47 loc) · 3.03 KB

20 May 2023

Previous journal: Next journal:
0080-2023-05-16.md 0082-2023-05-22.md

Raybox

Accomplishments

  • Updated sprite: Easy one; I added utils/asset_tool to help with conversion from PNG to HEX. Some sprite colours currently come out too intense (or with too much contrast) on my VGA display.
  • Improved rendering of first sprite.
  • Tracer FSM optimised a bit.

Thoughts

  • If we "share" the reciprocal and multipliers in the tracer, it'd probably pipeline in parallel pretty well without taking up too much additional area.
  • For sprites that are static and fixed in the centre of their map cell, is it possible to somehow optimise the ray casting to more-efficiently include their data in the trace buffer?
    • This could even be used for sprites where we can KNOW (by map designer) that the sprite will never be able to have something besides a wall BEHIND it.

Next steps

This list is mostly the same throughout the days/weeks, but occasionally I update it to look at the bits I care about most right now, or which seem like lowest-hanging fruit at the time:

  • Fix sprite limit of 512-wide (8× scaling), i.e. 256-half-width.
  • Check sprite texture coord wrapping glitch.
  • Try sprite rotation experiment: Idea to take original Wolf3D sprite rotations, and use something like Premiere Pro transforms/perspective to "interpolate" rotations and see if it improves the effect.
  • Make RGB222 VGA plug
  • Get full 640w working instead of 512w. Also, what about trying Wolf3D's slightly taller aspect from 320x200, i.e. stretch vertically by +20% (240/200) or compress horizontally by the same. With Wolf3D's aspect, scaling vertical 200 to 480 is ×2.4, so 2.4×320 = 768-equivalent. This could be achieved just by changing FOV (i.e. vplane magnitude).

Later

  • Try changing map to 32x32; give the tracer a workout.
  • Add extra wall IDs to the map.
  • Fix texture wrap glitch (occasional single wrapped pixel at top or bottom of columns) that is possibly due to reciprocal accuracy. Either clip the height by 1 dummy pixel after texel calculations are done, or just clamp texture coords.
  • Figure out how to send data to the FPGA from the host PC. Otherwise, try other input sources, whether FPGA interfacing (3.3V-safely) with PS/2 keyboard and mouse, or quadrature encoder, or Arduino, or whatever.
  • Work on "game" constroller MCU: Arduino, STM32, ESP8266, or ESP32?
  • Learn more about Makefiles and working with projects in subdirectories and multiple targets. Use case: Raybox utilities in utils/, inc. some shared code.

Notes