2024-12-27 03:17:41 re generating video signal in assembly: A frame buffer or simple display list scanner is much easier to do in hardware. 2024-12-27 03:19:09 this reminds me. What was that vector tracing thing that Atari used in Asteroids called again? 2024-12-27 03:19:23 vectrex or vectroid something? 2024-12-27 03:20:39 one thing I have mused on is how to support rotation of such vector graphics 2024-12-27 03:22:30 as https://datagenetics.com/blog/august32013/index.html mentions you can do it in three sheers/slants 2024-12-27 03:24:54 and what is a sheer or slant other than adding an offset to say x coordnate that increases certain amount at every y line(s) 2024-12-27 15:06:57 is gforth good? 2024-12-27 15:14:52 it seems to work pretty well, though you'll probably want/need to build a recent version (the copy available in various package managers is quite old, and missing a lot of updates) 2024-12-27 18:15:19 Zarutian_iPad: it's easy to do things in hardware when you're designing hardware, but hard to do things in hardware when you're writing software 2024-12-27 18:18:31 I don't think the Vectrex was the same hardware Atari used in Asteroids, which was Quadrascan 2024-12-27 18:20:31 the three-shears trick is useful for rotating images for several reasons: it allows you to strength-reduce the multiplications normally needed for a rotation down to Bresenham-style additions, it allows you to use only three of those strength-reduced multiplies instead of the usual four, and it avoids resampling the image data 2024-12-27 18:21:34 in the case of rotating vector graphics, only the second of these is relevant 2024-12-27 18:23:12 the three rotations are, in the example shown, y ← y + εx ; x ← x - 2εy ; y ← y + εx 2024-12-27 18:23:50 you might note that if you are rotating something repeatedly, the y ← y + εx will be followed by drawing the thing and then another y ← y + εx 2024-12-27 18:24:30 so if you can tolerate a little bit of distortion, you can swap the order of those two operations and you have y ← y + εx ; y ← y + εx 2024-12-27 18:24:42 which you can collapse down to y ← y + 2εx 2024-12-27 18:24:59 allowing you to get by with only two multiplications per point per frame 2024-12-27 18:26:12 if you can choose the speed of rotation, you can choose it so that 2ε has a value like 2⁻⁷ or something 2024-12-27 18:26:40 so you don't even need a multiplication, just a bit shift 2024-12-27 18:28:05 at this point we've reduced three-shears rotation to Minsky's circle algorithm! 2024-12-27 18:28:54 you might be concerned that the approximations involved in these operations will build up over time, but as you're likely aware with respect to Minsky's circle algorithm, they don't; in integer arithmetic it's perfectly stable