Elite Demo
CHARVEL DEMO DISK#1 October 1991 Welcome to the first (official) Charvel Demo Disk (Don't buy inferior versions), featuring: *A three dimensional development collection from the basics to active three dimensional environments. *A hands off (the keyboard onto the joystick!) three dimensional Elite Demo. *Pictures drawn with peintre,eye q and painter (in that order). *QSPEC a spectrum compatable tape system with conversion routines. 3Dv1-5 value meanings. RI R oll (0-254 step2) X co-ordinate (wraps) HI H eading (0-254 step2) Y co-ordinate (wraps) PI P itch (0-254 step2) D istance (wraps) I ncrement (for X,Y&D) P erspective (or off) (MODE) (DIRECTION) (STYLE) F rames per second RI,HI & PI: These are increments for the roll, heading and pitch used during rotation (by ROT or R+D mode or space and left/right). I.E: If RI=1, HI=2 and PI=0 after each rotation frame roll would increase by 2 (1*2) heading by 4(2*2) and pich by none. Modes: ROT ate continuous, DIR ect rotation, R+D rotate and DIRect active Direction: Rotation direction L eft, R ight (with using space and left/right) Style: O verdraw (don't CLS after frames), L ucid faces (Draws one face each frame), W ireframe (no hidden lines). A HISTORY OF OUR THREE DIMENSION EXPLOITS. 3Dv1 This was a result of initial experiments into three dimensional graphics back in early 89. A myth hung over Rob and me (Dave) that it was a very complex subject but in it wasn't, just a serial rotation around three circles, easy! Having already written a line routine it wasn't long before our first object was moving on the screen (Actually both of us wrote versions during a late night and early morn at Rob's nan's but Rob's didn't work). Rob's the mathamatician and realy without his assistance I probably would have stuck to 2D programming (for better or worse). Next was a line clipping routine. Again the battle was set, Rob and Me were at ends to write one in Basic first; Rob did, followed by me ,though mine was shorter and Rob's was an endless list of exception clauses. After studying the problem from a clearer view at work (in a Pub) I found a tidier logic method. It was soon written in basic (much better and shorter) and then converted into machine code (Rob did the math half I did the logic), after a heavy night. Rob fixed some signed branch decisisions a bug that I was too tired to notice. I wrote some control code for the 3D routine which checked keys and displayed values. We both designed and coded graphics. I did the perspective (in a couple of minutes) after Rob with all his mathamatical alogarythms failed. The perspective can glitch though when the object is too close because values are magnified so much more due to the logarithmical nature of perspective. Perspective also looks wierd on wireframe. Version 1 was tidied up after version 2 to conform to some new keypress's and visual layout. 3Dv2 The step to the faced version 2 was realy a big one. We laboured on a the problem of whether a face was visiable or no for over a week trying numerous methods in Basic. Rob came up with the most, half of which I couln't understand and insisted wouldn't work, and they didn't! Finally Rob came up with a method that worked, and we employed it. It worked by each face (side) having a point that was especially coded, which was on a vector at right angles from the object's centre and the plane of the face, and if after rotation the z value was positive the face was not visable. The only problem with this method was calculating these points! It was 1% calculation and 99% guess work, and coding all version 2's graphics was a real bane. Perspective doesn't work with this method either but was kept anyway. The object data was completely diferent to that of version 1 and took up much more memory. Mark appears on the scene (a weirdo rocker come sex maniac who liked computers (the usual specification for an Amiga owner)). We drew all the Elite ships from the Elite manual and the Ami Elite startup (where all the ships appear, stay a bit then dissapear) in Mark's bedroom one evening (We discover Rob who finished his third in no time can't draw (his Thargoid looked like an upside down yoghurt pot)). Mark discovers he isn't able to code in the graphics (despite much primary style tuition) after he realises how boring it is (smart kid). I finish Version 2 and make many modifications to the control code and other subroutines including a rewrite of the line clipping routine after seeing a 3x3 boolean matrix method in a book (one glance was all I needed. "Of course!"), it made version 1 run 15% quicker mainly because it was self selective of the maths it had to do and the Scrolly, (painfully slow, and I never replaced it after the version 3 re-write) Mark drew the character set from a typestyle book that I chose after winning after a guess the random number on the calculator game (I actually won it three times ater the first two were ruled void by Rob and Mark (predictable tactics!)). 3Dv3 All change again. Rob and Mark become rather allergic to QL's, I'm on my own (again). Version 3 needed a fast shape fill routine and it was a long time comming. I started it many times leaving bits of code going 'in the wrong direction', though not essentially a very complex program, but it had many ways of doing it (programmer's bane), and I'm not good at deciding best ways and get frustrated. It was written, and perfected many times which resulted in my most prided piece of code. One thing that also came out of the FillSHAPE routine was that it also did the face check (no more face points, "YIPEE!"). After a quick sneak at a book in the local computer shop a diagram explained all, points that were in a rotational order, so if all the points were coded for example in a clockwise order from an external viewpoint and when rotated were then anti-clockwise the face wasn't visable. Easy, and when the FSHAPE routine goes to draw a horizontal line and the points are not left to right when drawing a face shape it's not visable. Another way to do it was find the top point and calculate gradients to the two points left and right of it, if the gradient to the right point was less than that of the left point then it's not visable. Perspective worked fine with these methods. The scrolly was re-written (try messing with the cursor keys, enter and \). Code was written to enable it to run on 128k machines though it would not return to basic (CALL address,128) and it was ported to the earlier versions. The new object data structure was much better, and all those stripples (press Y), I did all the colours (boring). Did some more graphics, and could get away with more being able to overdraw. I was very pleased and relieved on the final speed of the solid version. Seeing the 3D routines running on a Gold Card makes me wonder why I spent so long perfecting routines to obtain optimum speeds. Awesome!. 3Dv4 "Cor, wouldn't it be great to see x-wing in solid, DAVE!" said Mark, after seeing version 3, hence version 4. It was meant to be able to display any complex object, and it could cope with many but the method was too simple to be very, effective, it virtually worked with x-wing (two very minor gliches) but struggled on the guitar and bird of prey. Version 4 decided not suitable, and left. 3Dv5 All change again. Wireframe, Faced and Solid combined version (Use 'A' to toggle). The main problem with v5 was the data format and the colours (I actually couldn't be bothered with them). It was inevitable that this was written and as mentioned e The line routines were later significantly speeded up 6-20% making the wireframe and faced outputs extra zippy, with a smaller improvement to solid and scrolly speeds. 3Dv6 Another try at complex shapes. Close but not perfect, faster than version 4 and more adept, though and also with view-(A)xis and 0,0 cross(W)ires. It still looks like I'll have to call on even more complex methods (and a considerably slower). I'm now thinking about light shading. Hmm, that would be nice. Now lets see, plane normals, colour list... The rotaing head looks alright, but thats about all! I've worked out how to store 150+ equally complex animation frames in 512k! Maybe later... Elite Demo A pretty boring demo, but I got fed up with it. I may write the proper thing soon any way. Dave Barker 22nd August 1992 (p.s. I need a job!) Y & T the worlds greatest ever rock band. 1976 - 1991. Dave Barker Demo disk assembly 021-350-2252 Programming 3D1, 3D2, 3D3, 3D4, 3D5, 3D6, Elite Demo Qspec Picshow, All 2D & Some 3D Graphics Robert Nash Some 3D Graphics 021-356-6875 Some programming 3D1,3D2 (visual face theory#1) Mark Handley Some 3D Graphics 021-588-5532
[ back to the prod ]