Let's Code MS DOS 0x22: 2nd Reality Tunnel Effect

preview_player
Показать описание
In 1993 the Future Crew released the seminal demo “Second Reality”. One of the more simple effects they showed in this demo was the “Dot Tunnel”. It is a simple, yet mesmerizing oldskool demo effect. We can build on our knowledge of fixed point maths to implement this effect and maybe even improve on the original!

Music: A Little Wonder by Spino2006

0:00 Introduction
1:20 The Code Stub
3:15 Lissajous
8:40 Precomputed Tunnel
16:20 Drawing The Tunnel
24:12 THE DEMO
26:00 Closing words

#demoscene #letscode #msdos #retrocomputing #programming
Рекомендации по теме
Комментарии
Автор

Just found your channel, will watch this video after work.
Very cool channel!
I am looking into old-school demo effects as I want to make a demo / music disk for the Nintendo 3DS homebrew.

NoiseCommanderDS
Автор

Amazing. Could you do some videos showing these demo scene tricks in Assembly language?

wintersgrass
Автор

in fact, in “Second Reality”, in addition to bending the tunnel, they also simulate camera movement (the overall center of the rendering shifts during the movement in the opposite direction from the bend of the trajectory), which creates a more mesmerizing effect. Many who try to copy this scene miss this point.

sevendump
Автор

looks like youtube really wants to promote that recent bigclive video

KrisisVal
Автор

regarding optimization. Well, on 386-SX PC with ISA you couldn’t afford to use a video buffer in the system memory. In the Second Reality, everything is drawn immediately into video memory, the old pixels are painted over with black pixels with coordinates from the previous frame.

But MODE-X can also be used. There is no need to switch the plane for each pixel;
You can do this:
- first we write the coordinates (and color) of all calculated points of the current frame into a linear array.
- turn on write for plane 0x0
- we run through the array and draw into video memory only those points where: X & 3 = 0
- turn on write for plane 0x1
- we run through the array and draw into video memory only those points where (X+3) & 3 = 0.
Etc.
Or in advance, after calculating the coordinates of the point, we define it in one of four arrays in order to create a convenient structure for transfer in the plane. This is even better, since we can copy 4 points at a time to video memory.

In total, we will switch the plane only 4 times per frame, this will not affect the speed.

sevendump
welcome to shbcf.ru