GAMEPAD 1 PAUSE OFF GLOBAL CX, CY, CZ, FOV, MODE FOV = 50 CX = 0 CY = 30 CZ = 64 CSPEED = 3 DIM GLOBAL POSX(64) DIM GLOBAL POSY(64) DIM GLOBAL POSZ(64) MODE = 0 'MAIN LOOP DO CLW CALL ANIMATE 'CALL SORT CALL DRAWALL CALL SHOWDEBUG IF PAUSE THEN IF MODE = 0 THEN MODE = 1 WAIT 10 ELSE MODE = 0 WAIT 10 END IF END IF IF MODE = 0 THEN IF UP(0) THEN ADD CZ,-1*(CSPEED/3) IF DOWN(0) THEN ADD CZ,CSPEED/3 IF LEFT(0) THEN ADD CX, CSPEED IF RIGHT(0) THEN ADD CX, -1*CSPEED IF BUTTON(0,0) THEN ADD CY, -1*CSPEED IF BUTTON(0,1) THEN ADD CY, CSPEED 'PAUSE SETTINGS MENU ELSE PAL 0 TEXT 0,13,"SETTINGS" TEXT 0,15,"FOV(L/R):" NUMBER 9,15,FOV,LEN(STR$(FOV)) TEXT 0,14,"SPEED(U/D):" NUMBER 11,14,CSPEED,LEN(STR$(CSPEED)) IF LEFT(0) THEN DEC FOV IF RIGHT(0) THEN INC FOV IF UP(0) THEN INC CSPEED IF DOWN(0) THEN DEC CSPEED END IF WAIT VBL LOOP 'PUT ANIMATIONS IN HERE SUB ANIMATE 'BOTTOM PLANE CALL LINE(55,4,0,0,0,0,0,16) CALL LINE(50,4,0,0,16,32,0,0) CALL LINE(45,4,32,0,16,0,0,-16) CALL LINE(40,4,32,0,0,-32,0,0) 'TOP PLANE CALL LINE(35,4,0,32,0,0,0,16) CALL LINE(30,4,0,32,16,32,0,0) CALL LINE(25,4,32,32,16,0,0,-16) CALL LINE(20,4,32,32,0,-32,0,0) 'CONNECTING LINES CALL LINE(15,4,0,32,0,0,-32,0) CALL LINE(10,4,0,32,16,0,-32,0) CALL LINE(5,4,32,32,16,0,-32,0) CALL LINE(0,4,32,32,0,0,-32,0) END SUB SUB DRAWALL FOR I = 0 TO 63 X = POSX(I) Y = POSY(I) Z = POSZ(I) IF NOT Z + CZ > 90 OR NOT CZ - Z > 0 THEN ADD X, CX ADD Y, CY ADD Z, CZ IF X = 0 THEN X = 1 IF Y = 0 THEN Y = 1 IF Z = 0 THEN Z = 1 SX = ((X / Z) * FOV) + 80 SY = ((Y / Z) * FOV) + 64 SPR = (Z / 9) IF SPR < 0 THEN SPR = 0 IF SPR > 20 THEN SPR = 0 SPRITE I, SX, SY, SPR IF SX > 160 OR SX < -8 THEN SPRITE OFF I IF SY > 128 OR SY < -8 THEN SPRITE OFF I END IF NEXT I END SUB SUB SHOWDEBUG TRACE "SIMPLE 3D ENGINE" TRACE "DEBUG - 0.9B" FOR I = 0 TO 9 TRACE "" NEXT I TRACE "FOV:",FOV TRACE "CX:",CX TRACE "CY:",CY TRACE "CZ:",CZ END SUB SUB POINT(I, X, Y, Z) POSX(I) = X POSY(I) = Y POSZ(I) = Z END SUB SUB LINE(S, NS, X1, Y1, Z1, X2, Y2, Z2) X=X1 Y=Y1 Z=Z1 FOR I=0 TO NS-1 CALL POINT(S+I, X, Y, Z) X = X + X2 / NS Y = Y + Y2 / NS Z = Z + Z2 / NS NEXT I END SUB SUB SORT 'DO NOT USE YET! CHANGE = 1 WHILE CHANGE = 1 CHANGE = 0 FOR I=0 TO 63 IF POSZ(I)-CZ > POSZ(I+1)-CZ THEN A = POSZ(I) B = POSZ(I+1) POSZ(I) = B POSZ(I+1) = A CHANGE = 1 END IF NEXT I WEND END SUB #1:MAIN PALETTES 003F2A1500383400003C0C00003F3C00 003F2A15003F2A15003F2A15003F2A15 #2:MAIN CHARACTERS 00000000000000000000000000000000 FFFFFFFFFFFFFFFF0000000000000000 FEFEFEFEFEFEFE000000000000000000 FCFCFCFCFCFC00000000000000000000 0000000000000000F8F8F8F8F8000000 0000000000000000F0F0F0F000000000 0000000000000000E0E0E00000000000 C0C0000000000000C0C0000000000000 80000000000000008000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 7EFFFFFFFFFFFF7E0000000000000000 7CFEFEFEFEFE7C000000000000000000 78FCFCFCFC7800000000000000000000 000000000000000070F8F8F870000000 000000000000000060F0F06000000000 000000000000000040E0400000000000 40800000000000004080000000000000 80000000000000008000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 1F3F6060C0C0C0C00000000000000000 F8FC0606030303030000000000000000 3F7F6060606060600000000000000000 F8FC0606030303030000000000000000 3F7F6060606060600000000000000000 F8FC0606030303030000000000000000 67676060606060600000000000000000 FFFF1818181818180000000000000000 C3C70606060606060000000000000000 FCF80000000000000000000000000000 03010000000000000000000000000000 FCFE0606060606060000000000000000 3F7F6060606060600000000000000000 E0F018180C0C0C0C0000000000000000 003C4020403C007C0000000000000000 00000000000000000000000000000000 C0C0C0C0C0703F0F0000000000000000 000000000000F0FC0000000000000000 6060606060607F7F0000000000000000 030303030606FCF80000000000000000 6060606060607F7F0000000000000000 030303030606FCF80000000000000000 60606060606060600000000000000000 18181818181818180000000000000000 06060606070706060000000000000000 00000000E0E000000000000000000000 00000000000000000000000000000000 060606067C7C06060000000000000000 60606060606060600000000000000000 0C0C0C0C0C0C0C0C0000000000000000 345C000C700C007C0000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 0E030303030303030000000000000000 60606060606060600000000000000000 00000000000000000000000000000000 786C6663616060600000000000000000 0000000080C060300000000000000000 60606060606060600000000000000000 18181818181818180000000000000000 06060606060606060000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 06060606060606060000000000000000 60606060606060600000000000000000 0C0C0C0C0C0C0C0C0000000000000000 107C0038444438000000000000000000 00000000000000000000000000000000 C0C0C0C060603F1F0000000000000000 030303030606FCF80000000000000000 60606060606060600000000000000000 00000000000000000000000000000000 60606060606060600000000000000000 180C0606060606060000000000000000 60606060606060600000000000000000 18181818181818180000000000000000 06060606060607030000000000000000 000000000000F8FC0000000000000000 00000000000001030000000000000000 060606060606FEFC0000000000000000 6060606060607F3F0000000000000000 0C0C0C0C1818F0E00000000000000000 7C4438007C5444000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00181818180018000000000000000000 006C6C24000000000000000000000000 00247E24247E24000000000000000000 00083E380E3E08000000000000000000 00626408102646000000000000000000 001C34386E643A000000000000000000 00181830000000000000000000000000 000C183030180C000000000000000000 0030180C0C1830000000000000000000 000024187E1824000000000000000000 000018187E1818000000000000000000 00000000181830000000000000000000 000000007E0000000000000000000000 00000000001818000000000000000000 00060C18306040000000000000000000 003C666E76663C000000000000000000 0018381818187E000000000000000000 003C660C18307E000000000000000000 003C660C06663C000000000000000000 0066667E060606000000000000000000 007E607C06067C000000000000000000 001C307C66663C000000000000000000 007E060C183030000000000000000000 003C663C66663C000000000000000000 003C663E06663C000000000000000000 00000018001800000000000000000000 00000018001830000000000000000000 00000C1830180C000000000000000000 0000007E007E00000000000000000000 000030180C1830000000000000000000 003C660C180018000000000000000000 003C666E6E603C000000000000000000 00183C667E6666000000000000000000 007C667C66667C000000000000000000 003C666060663C000000000000000000 00786C66666C78000000000000000000 007E607860607E000000000000000000 007E6078606060000000000000000000 003C606E66663C000000000000000000 0066667E666666000000000000000000 003C181818183C000000000000000000 001E060606663C000000000000000000 00666C78786C66000000000000000000 0060606060607E000000000000000000 0042667E7E6666000000000000000000 0066767E6E6666000000000000000000 003C666666663C000000000000000000 007C667C606060000000000000000000 003C66666A6C3E000000000000000000 007C667C786C66000000000000000000 003E603C06067C000000000000000000 007E1818181818000000000000000000 0066666666663C000000000000000000 00666666663C18000000000000000000 0066667E7E6642000000000000000000 00663C183C6666000000000000000000 0066663C181818000000000000000000 007E0C1830607E000000000000000000 003C303030303C000000000000000000 006030180C0602000000000000000000 003C0C0C0C0C3C000000000000000000 00183C66000000000000000000000000 0000000000007E000000000000000000