xjas Posted January 11, 2015 Share Posted January 11, 2015 Found this looking for spinning cubes for the other thread - Atari VCS: Mole, I think your 8x2 version looks pretty damn good all considering. I definitely think the fluidity wins over the higher resolution version. Not so sure about the colour choice but nice job making something that seems very playable. Quote Link to comment Share on other sites More sharing options...
TheMole Posted January 13, 2015 Share Posted January 13, 2015 Mole, I think your 8x2 version looks pretty damn good all considering. I definitely think the fluidity wins over the higher resolution version. Not so sure about the colour choice but nice job making something that seems very playable. Thanks, although it's actually 4x2 . I agree on the color choice, it doesn't really look all that perty but I just wanted to test two different colored walls with two shades each and a different colored floor/ceiling. In a game I would probably try to emulate a sort of green-screen scanline sort of look to hide the low fidelity nature of the graphics in the artistic choice (we have three shades of green + black and perhaps white, should give plenty of room for neat looking 3D). I haven't looked at this in ages though, and doubt if I can make it fast enough for my tastes and needs... Quote Link to comment Share on other sites More sharing options...
TheMole Posted January 13, 2015 Share Posted January 13, 2015 (edited) Thanks, although it's actually 4x2 . Nope, I'm lying... I just looked at it again, and it is indeed 8x2... Edited January 13, 2015 by TheMole Quote Link to comment Share on other sites More sharing options...
Asmusr Posted January 13, 2015 Share Posted January 13, 2015 Nope, I'm lying... I just looked at it again, and it is indeed 8x2... Did you consider doing a multicolor mode version? Multicolor mode is pretty efficient for drawing vertical bars if you choose the right memory layout for the name table. Quote Link to comment Share on other sites More sharing options...
TheMole Posted January 13, 2015 Share Posted January 13, 2015 Did you consider doing a multicolor mode version? Multicolor mode is pretty efficient for drawing vertical bars if you choose the right memory layout for the name table. Yeah, that was the original plan. But then sometimes99er came up with the idea of using bitmap mode via the color table for improved vertical resolution. Although much prettier, I never found a way of making that fast enough for real world use (given the need to push 4k to the VDP every frame). In the end I ended up doing the nametable version with the idea of supporting 4x2 via pattern definitions, but apparently never got to it. Quote Link to comment Share on other sites More sharing options...
Asmusr Posted January 17, 2015 Share Posted January 17, 2015 Yeah, that was the original plan. But then sometimes99er came up with the idea of using bitmap mode via the color table for improved vertical resolution. Although much prettier, I never found a way of making that fast enough for real world use (given the need to push 4k to the VDP every frame). In the end I ended up doing the nametable version with the idea of supporting 4x2 via pattern definitions, but apparently never got to it. I have pursued my idea for a raycaster engine in multicolor mode. I haven't programmed a raycaster, I have only programmed the routine to display the results on screen, but it turns out that it's possible to display a full multicolor screen in slightly more than 30 FPS. The good thing about multicolor mode is that you can display a whole screen of the vertical bars you need for a raycaster without changing the VDP write address more than once. The drawing in multicolor mode is a bit complicated because there are two horizontal pixels per byte, so the are five regions for each vertical strip: Sky Sky and 1 pixel wall 2 pixels wall Floor and 1 pixel wall Floor Still the inner loops to copy the bytes to the VDP can be unrolled nicely. So my drawing routine would fit straight into a raycaster routine where you have to draw 64 columns of 48 pixels each. To run the demo, run EA#3:DSK1.MS from the disk. Use joystick 1 to pan/zoom. The 3D is all bogus, but the drawing engine is real. The is also a spinning multicolor cube demo on the disk (EA#3: P3D3) if you have difficulties falling asleep :-). Use joystick 1 to rotate in different directions, Multicolor.zip 6 Quote Link to comment Share on other sites More sharing options...
RXB Posted January 18, 2015 Share Posted January 18, 2015 Looks like you could obtain some decent speeds with it. Quote Link to comment Share on other sites More sharing options...
artrag Posted January 18, 2015 Share Posted January 18, 2015 Which tile layout do you use in order to speed up the rendering? Quote Link to comment Share on other sites More sharing options...
Asmusr Posted January 18, 2015 Share Posted January 18, 2015 Which tile layout do you use in order to speed up the rendering? 00 06 12 18 ... 00 06 12 18 00 06 12 18 00 06 12 18 01 07 13 ... 01 07 13 01 07 13 01 07 13 02 08 ... 02 08 02 08 02 08 03 09 03 09 03 09 03 09 04 10 04 10 04 10 04 10 05 11 05 11 05 11 05 11 Quote Link to comment Share on other sites More sharing options...
TheMole Posted January 19, 2015 Share Posted January 19, 2015 (edited) Still the inner loops to copy the bytes to the VDP can be unrolled nicely. So my drawing routine would fit straight into a raycaster routine where you have to draw 64 columns of 48 pixels each. So I've been looking at how I can plug this into my raycaster. If I see it correctly, you would expect the engine to call DSPSCR after 64 columns have been cast into a structure somewhere in memory pointed at by r0? Can you tell me how this structure must be defined? I think it might be something like this: typedef struct { unsigned char top, height, color; } coldef; unsigned coldef* slices[64]; And then when calling DSPSCR, I'd need to make sure r0 contains the address of slices. Or am I completely off base? Edited January 19, 2015 by TheMole Quote Link to comment Share on other sites More sharing options...
Asmusr Posted January 19, 2015 Share Posted January 19, 2015 Yes, except that the fields are words - not bytes. The color must be in the high byte of the word. You could also call STRIP directly after fireing every two rays, and you could change it to accept the parameters in regs instead of the struct. Quote Link to comment Share on other sites More sharing options...
Asmusr Posted January 20, 2015 Share Posted January 20, 2015 ... ahh, I just noticed, it's not the height but the bottom of the strip, or actually the bottom + 1, so a strip with top=0 and bottom=1 is one pixel heigh. Quote Link to comment Share on other sites More sharing options...
+OLD CS1 Posted January 20, 2015 Share Posted January 20, 2015 Forget a first-person shooter, I am thinking Tron: Lightcycles in first-person perspective. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.