Hey there. Wondering how these demos work. Are those pre-rendered tiles in the 3D Demo? :O Because I don't think that there is a framebuffer on the GB as there is on the GBA.
No. There's a triangle in the background and I scroll it up and down in a per-line basis.If you take a look at the debugger of any emulator and you open the VRAM viewer (BGB, VBA-M...) you will be able to see the triangle.
I've seen this effect before but what has always perplexed me is how you determine the widths of each horizontal segments in order to determine where on the background map you want to be to render a horizontal segment.
Oh, I hadn't seen this comment. Well, it's not too hard. Basically, I have 4 vertices that rotate around the center of coordinates in 2D. Then, I project them with sin and cos, and use one coordinate as depth (width of the segment), and another one as height (Y of the screen). Then, I interpolate between the two values to fill the pixels in between.
THIS IS A HIT
What a sweet demo~ Thanks for make it!
i loved this demo when it first came out and i still love it :3
Already played this 10 times today
cool demo and cool sounds. never thougth the gbc was capable of this.
Grande, gracias por compartir!
Very good colors.
Wooow.
Hey there. Wondering how these demos work.
Are those pre-rendered tiles in the 3D Demo? :O
Because I don't think that there is a framebuffer on the GB as there is on the GBA.
No. There's a triangle in the background and I scroll it up and down in a per-line basis.If you take a look at the debugger of any emulator and you open the VRAM viewer (BGB, VBA-M...) you will be able to see the triangle.
I've seen this effect before but what has always perplexed me is how you determine the widths of each horizontal segments in order to determine where on the background map you want to be to render a horizontal segment.
Oh, I hadn't seen this comment. Well, it's not too hard. Basically, I have 4 vertices that rotate around the center of coordinates in 2D. Then, I project them with sin and cos, and use one coordinate as depth (width of the segment), and another one as height (Y of the screen). Then, I interpolate between the two values to fill the pixels in between.