Previous journal: | Next journal: |
---|---|
0080-2023-05-16.md | 0082-2023-05-22.md |
- 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.
- 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.
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).
- 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.
- Side-by-side visual diff using
git difftool
configured to usevimdiff
: https://diethardsteiner.github.io/git/2021/01/07/Git-Visual-Side-By-Side-Diffs.html - Different bit packing in Verilog memory files (
.hex
,.mem
,.bit
, etc. along with$readmemh
,$readmemb
, etc.): https://projectf.io/posts/initialize-memory-in-verilog/