diff --git a/Makefile b/Makefile index dc76190..5f11bbe 100644 --- a/Makefile +++ b/Makefile @@ -1,3 +1,5 @@ +# [this is a copy of the libnds all-purpose template Makefile] + #--------------------------------------------------------------------------------- .SUFFIXES: #--------------------------------------------------------------------------------- diff --git a/README b/README index 43fcdcf..c1ac220 100644 --- a/README +++ b/README @@ -22,7 +22,7 @@ implement a reader (string-read.c) because you don't usually have a filesystem available on NDS. (i.e. model data is stored directly as text in the game ROM. the data-source directory contains the low-poly model files, -which are "compiled" to source files [*-mdl.c] via the "data2src" +which are "compiled" to model-data.c via the "data2src" script/program). I then copy-pasted libnds 3D example code by Dovoto to diff --git a/TODO b/TODO index 3fc7388..3c5cb5e 100644 --- a/TODO +++ b/TODO @@ -19,10 +19,10 @@ (small) range. A workaround for this quirk was added to model-draw.c; use drawModelWithGL_big(model*) to use this fixed version. - -- Faster code / optimize ++ Faster code / optimize * key model seems to be the [performance] culprit. - will have to decrease vertex count all over again... + +- More optimization ? - Add lighting/shininess/antialiasing/you-name-it effects to make things nicer diff --git a/bullet-mdl.c b/bullet-mdl.c deleted file mode 100644 index 4f50eb0..0000000 --- a/bullet-mdl.c +++ /dev/null @@ -1,31 +0,0 @@ -/* -#include -int main(int argc, char** argv) -{ - char c; - printf("char %s[] = \"", argv[1]); - while(!feof(stdin)){ - c = getchar(); - if(c=='\n') printf(" \\"); - putchar(c); - } - printf("\";\n"); - return 0; -} -*/ -char bullet_model[] = "newgroup \ -color 255 255 0 \ -vertex -1 -0.5 0.5 \ -vertex -1 0.5 0.5 \ -vertex 1 -0.5 0.5 \ -vertex 1 0.5 0.5 \ -vertex 1 -0.5 -0.5 \ -vertex 1 0.5 -0.5 \ -vertex -1 -0.5 -0.5 \ -vertex -1 0.5 -0.5 \ -face 1 2 4 3 \ -face 3 4 6 5 \ -face 5 6 8 7 \ -face 7 8 2 1 \ -face 2 8 6 4 \ -face 7 1 3 5"; diff --git a/bullet.c b/bullet.c index b5beed1..bc9b71f 100644 --- a/bullet.c +++ b/bullet.c @@ -1,8 +1,6 @@ #include "headers.h" #include -#define BULLET_YACCEL -1.0 - game_obj* newBullet(game_obj* list, float x, float y, float z, float angle) { game_obj* bul = newListNode(list); @@ -30,23 +28,13 @@ void bulletTick(game_obj* bul) deleteNode(bul); } - /* resulting from a special request, - the bullets have gravity */ - /* - stupid idea - if(bul->data[BULLET_YVEL] < BULLET_YACCEL) - bul->data[BULLET_YVEL] = BULLET_YACCEL; - bul->data[BULLET_YVEL] += BULLET_YACCEL * dtime; - movey = bul->data[BULLET_YVEL] * dtime + - (BULLET_YACCEL * dtime * dtime) / 2.0; - */ - #ifdef PC_TARGET +#ifdef PC_TARGET dirx = (float)sin(bul->data[BULLET_ANGLE] / 360.0 * (2*3.14)); dirz = (float)cos(bul->data[BULLET_ANGLE] / 360.0 * (2*3.14)); - #else +#else dirx = my_sin(bul->data[BULLET_ANGLE]); dirz = my_cos(bul->data[BULLET_ANGLE]); - #endif +#endif bul->data[BULLET_X] += 20 * dirx * dtime; bul->data[BULLET_Y] += movey; diff --git a/clown3d-DS.elf b/clown3d-DS.elf index 5fc48ce..a531d61 100644 Binary files a/clown3d-DS.elf and b/clown3d-DS.elf differ diff --git a/clown3d-DS.nds b/clown3d-DS.nds index 099f55b..e3500c5 100644 Binary files a/clown3d-DS.nds and b/clown3d-DS.nds differ diff --git a/collisions.c b/collisions.c index 63a343c..5b95dd0 100644 --- a/collisions.c +++ b/collisions.c @@ -13,11 +13,6 @@ #include #include "headers.h" -float avoidZero(float f) -{ - return f; -} - /* Compares using absolute values, equivalent to measuring the magnitude of a 1-dimensional vector. Ignores zero-length values as @@ -99,9 +94,9 @@ float smallestOfThree(float a, float b, float c) */ \ \ ratio = smallestOfThree \ - (x_offs /avoidZero(node->box.move.x), \ - y_offs / avoidZero(node->box.move.y), \ - z_offs / avoidZero(node->box.move.z)); \ + (x_offs / node->box.move.x, \ + y_offs / node->box.move.y, \ + z_offs / node->box.move.z); \ \ /* Cheap way to avoid glitches. Normally, \ ratio should be between 0 and 1. */ \ @@ -150,7 +145,7 @@ void resolveCollisions(game_obj* objs, void (*handler)(void*, void*)) game_obj *node, *node2; for(node = objs; node != NULL; node = node->next) { - if(node->type == SOLID) continue; /* SOLIDs don't move ! */ + if(node->type == SOLID) continue; /* heuristic: SOLIDs don't move ! */ for(node2 = objs; node2 != NULL; node2 = node2->next) { if(node != node2 && node->type != NONE && node2->type != NONE) { /* Check if any of the current boxe's diff --git a/data-source/models/key.model b/data-source/models/key.model index c942359..f865f68 100644 --- a/data-source/models/key.model +++ b/data-source/models/key.model @@ -1,294 +1,283 @@ newgroup -color 255 0 0 +color 255 0 0 +vertex -0.846866 0.613977 0.03 +vertex -1.274124 0.613977 0.462564 +vertex -1.965443 0.613977 0.297339 +vertex -1.965443 0.613977 -0.237339 +vertex -1.274124 0.613977 -0.402564 +vertex -1.261071 2.159813 0.03 +vertex -1.631088 1.946184 0.462564 +vertex -2.229788 1.600525 0.297339 +vertex -2.229788 1.600525 -0.237339 +vertex -1.631088 1.946184 -0.402564 +vertex -2.392702 3.291444 0.03 +vertex -2.606331 2.921427 0.462564 +vertex -2.951991 2.322727 0.297339 +vertex -2.951991 2.322727 -0.237339 +vertex -2.606331 2.921427 -0.402564 +vertex -3.938538 3.705649 0.03 +vertex -3.938538 3.278391 0.462564 +vertex -3.938538 2.587072 0.297339 +vertex -3.938538 2.587072 -0.237339 +vertex -3.938538 3.278391 -0.402564 +vertex -5.484374 3.291444 0.03 +vertex -5.270744 2.921427 0.462564 +vertex -4.925085 2.322727 0.297339 +vertex -4.925085 2.322727 -0.237339 +vertex -5.270744 2.921427 -0.402564 +vertex -6.616004 2.159813 0.03 +vertex -6.245987 1.946184 0.462564 +vertex -5.647288 1.600525 0.297339 +vertex -5.647288 1.600525 -0.237339 +vertex -6.245987 1.946184 -0.402564 +vertex -7.03021 0.613977 0.03 +vertex -6.602951 0.613977 0.462564 +vertex -5.911632 0.613977 0.297339 +vertex -5.911632 0.613977 -0.237339 +vertex -6.602951 0.613977 -0.402564 +vertex -6.616004 -0.931859 0.03 +vertex -6.245987 -0.718229 0.462564 +vertex -5.647287 -0.37257 0.297339 +vertex -5.647287 -0.37257 -0.237339 +vertex -6.245987 -0.718229 -0.402564 +vertex -5.484373 -2.063489 0.03 +vertex -5.270744 -1.693472 0.462564 +vertex -4.925085 -1.094773 0.297339 +vertex -4.925085 -1.094773 -0.237339 +vertex -5.270744 -1.693472 -0.402564 +vertex -3.938537 -2.477694 0.03 +vertex -3.938537 -2.050436 0.462564 +vertex -3.938537 -1.359117 0.297339 +vertex -3.938537 -1.359117 -0.237339 +vertex -3.938537 -2.050436 -0.402564 +vertex -2.392701 -2.063489 0.03 +vertex -2.606331 -1.693472 0.462564 +vertex -2.95199 -1.094772 0.297339 +vertex -2.95199 -1.094772 -0.237339 +vertex -2.606331 -1.693472 -0.402564 +vertex -1.261071 -0.931858 0.03 +vertex -1.631088 -0.718229 0.462564 +vertex -2.229788 -0.37257 0.297339 +vertex -2.229788 -0.372569 -0.237339 +vertex -1.631088 -0.718229 -0.402564 +vertex 1.195527 0.619157 0.106049 +vertex 1.380959 0.619156 0.106049 +vertex 1.102812 0.619157 0.266637 +vertex 1.56639 0.619156 0.106049 +vertex 1.010096 0.619158 0.427225 vertex 1.751821 0.619155 0.106049 -vertex 0.91738 0.619158 0.587813 vertex 1.751817 -0.521248 0.106049 vertex 0.917377 -0.521245 0.587813 +vertex 0.91738 0.619158 0.587813 vertex 1.751814 -1.661651 0.106049 vertex 0.917373 -1.661648 0.587813 vertex 1.75181 -2.802054 0.106049 +vertex 1.566379 -2.802053 0.106049 +vertex 1.010085 -2.802051 0.427225 vertex 0.917369 -2.802051 0.587813 -vertex 1.102801 -2.802052 0.266637 vertex 1.380948 -2.802052 0.106049 +vertex 1.102801 -2.802052 0.266637 +vertex 1.195516 -2.802052 0.106049 +vertex 1.102812 0.619157 -0.05454 +vertex 1.010096 0.619158 -0.215128 vertex 0.917377 -0.521245 -0.375716 vertex 0.91738 0.619158 -0.375716 vertex 0.917373 -1.661648 -0.375716 +vertex 1.010085 -2.802051 -0.215128 vertex 0.917369 -2.802051 -0.375716 vertex 1.102801 -2.802052 -0.054539 +vertex 3.054108 0.619151 0.106049 +vertex 3.239539 0.61915 0.106049 vertex 2.961392 0.619151 0.266637 +vertex 3.424971 0.61915 0.106049 +vertex 2.868677 0.619152 0.427225 +vertex 3.610402 0.619149 0.106049 vertex 3.610399 -0.521254 0.106049 vertex 2.775958 -0.521251 0.587813 vertex 2.775961 0.619152 0.587813 vertex 3.610395 -1.661657 0.106049 vertex 2.775954 -1.661654 0.587813 vertex 3.610391 -2.80206 0.106049 +vertex 3.42496 -2.802059 0.106049 +vertex 2.868666 -2.802058 0.427225 vertex 2.77595 -2.802057 0.587813 -vertex 2.961381 -2.802058 -0.05454 +vertex 3.239528 -2.802059 0.106049 +vertex 2.961381 -2.802058 0.266637 +vertex 3.054097 -2.802058 0.106049 vertex 2.961392 0.619151 -0.05454 -vertex 2.775961 0.619152 -0.375716 +vertex 2.868677 0.619152 -0.215128 vertex 2.775958 -0.521251 -0.375716 +vertex 2.775961 0.619152 -0.375716 vertex 2.775954 -1.661654 -0.375716 +vertex 2.868666 -2.802058 -0.215128 vertex 2.77595 -2.802057 -0.375716 +vertex 2.961381 -2.802058 -0.05454 +vertex -1.627242 0.348612 0.106049 vertex -1.627242 0.348612 -0.079383 -vertex -1.627242 0.830377 0.384196 +vertex -1.627242 0.5092 0.198764 +vertex -1.627242 0.348612 -0.264814 +vertex -1.627242 0.669789 0.29148 vertex -1.627242 0.348612 -0.450245 vertex 0.121182 0.348612 -0.450245 vertex 0.121182 0.830377 0.384196 +vertex -1.627242 0.830377 0.384196 vertex 1.869606 0.348612 -0.450245 vertex 1.869606 0.830377 0.384196 +vertex 3.61803 0.348612 -0.450245 vertex 3.61803 0.348612 -0.264814 +vertex 3.61803 0.669788 0.29148 vertex 3.61803 0.830377 0.384196 +vertex 3.61803 0.348612 -0.079383 vertex 3.61803 0.5092 0.198764 -vertex 0.121182 -0.133153 0.384196 +vertex 3.61803 0.348612 0.106049 +vertex -1.627242 0.188024 0.198764 +vertex -1.627242 0.027436 0.29148 vertex -1.627242 -0.133153 0.384196 +vertex 0.121182 -0.133153 0.384196 vertex 1.869606 -0.133153 0.384196 -vertex 3.61803 0.188024 0.198764 +vertex 3.61803 0.027435 0.29148 vertex 3.61803 -0.133153 0.384195 -vertex -0.656828 0.405316 0.082761 -vertex -0.786267 0.406413 0.459654 -vertex -1.266994 2.261401 0.482646 -vertex -1.156646 2.333972 0.106666 -vertex -1.112064 0.422068 0.688597 -vertex -1.542809 2.08419 0.709199 -vertex -1.509777 0.4463 0.682142 -vertex -1.878741 1.870027 0.699789 -vertex -1.827491 0.469854 0.442754 -vertex -2.146474 1.700716 0.45801 -vertex -1.943852 0.483734 0.061871 -vertex -2.243743 1.640927 0.076215 -vertex -1.814413 0.482636 -0.315022 -vertex -2.133396 1.713498 -0.299765 -vertex -1.488616 0.466982 -0.543965 -vertex -1.85758 1.890709 -0.526318 -vertex -1.090904 0.442749 -0.53751 -vertex -1.521649 2.104871 -0.516908 -vertex -0.773189 0.419195 -0.298122 -vertex -1.253916 2.274183 -0.275129 -vertex -2.746155 3.479868 0.477671 -vertex -2.69455 3.600829 0.101494 -vertex -2.86818 3.175972 0.704741 -vertex -3.014016 2.805217 0.69597 -vertex -3.127959 2.50922 0.454709 -vertex -3.166485 2.401041 0.073111 -vertex -3.11488 2.522002 -0.303066 -vertex -2.992855 2.825898 -0.530136 -vertex -2.847019 3.196653 -0.521366 -vertex -2.733077 3.49265 -0.280104 -vertex -4.65876 3.596402 0.446628 -vertex -4.683112 3.72199 0.069218 -vertex -4.581929 3.280389 0.676926 -vertex -4.481966 2.894658 0.672144 -vertex -4.397052 2.586545 0.434111 -vertex -4.359622 2.473738 0.053746 -vertex -4.383974 2.599327 -0.323665 -vertex -4.460804 2.91534 -0.553962 -vertex -4.560768 3.301071 -0.549181 -vertex -4.645682 3.609184 -0.311147 -vertex -6.27426 2.566491 0.401375 -vertex -6.362769 2.651178 0.022168 -vertex -6.029463 2.357559 0.636377 -vertex -5.721882 2.104188 0.637412 -vertex -5.469003 1.903156 0.404083 -vertex -5.367416 1.831251 0.025515 -vertex -5.455925 1.915938 -0.353692 -vertex -5.700721 2.124869 -0.588695 -vertex -6.008302 2.378241 -0.589729 -vertex -6.261182 2.579273 -0.356401 -vertex -6.975587 0.783525 0.359197 -vertex -7.091948 0.797404 -0.021686 -vertex -6.657873 0.759971 0.598584 -vertex -6.26016 0.735739 0.60504 -vertex -5.934363 0.720084 0.376096 -vertex -5.804924 0.718987 -0.000797 -vertex -5.921285 0.732866 -0.381679 -vertex -6.238999 0.75642 -0.621067 -vertex -6.636712 0.780653 -0.627522 -vertex -6.96251 0.796307 -0.398579 -vertex -6.49486 -1.071463 0.336204 -vertex -6.59213 -1.131251 -0.045592 -vertex -6.227128 -0.902151 0.577982 -vertex -5.891196 -0.687989 0.587392 -vertex -5.61538 -0.510778 0.36084 -vertex -5.505033 -0.438207 -0.01514 -vertex -5.602303 -0.497996 -0.396936 -vertex -5.870035 -0.667307 -0.638714 -vertex -6.205967 -0.881469 -0.648124 -vertex -6.481782 -1.058681 -0.421572 -vertex -5.015699 -2.28993 0.341179 -vertex -5.054225 -2.398108 -0.040419 -vertex -4.901756 -1.993933 0.58244 -vertex -4.755921 -1.623178 0.591211 -vertex -4.633895 -1.319281 0.364141 -vertex -4.58229 -1.198321 -0.012036 -vertex -4.620817 -1.306499 -0.393635 -vertex -4.73476 -1.602497 -0.634896 -vertex -4.880595 -1.973251 -0.643666 -vertex -5.002621 -2.277148 -0.416596 -vertex -3.103094 -2.406464 0.372222 -vertex -3.065665 -2.51927 -0.008143 -vertex -3.188008 -2.09835 0.610256 -vertex -3.287971 -1.712619 0.615037 -vertex -3.364803 -1.396606 0.384739 -vertex -3.389154 -1.271018 0.007329 -vertex -3.351725 -1.383824 -0.373036 -vertex -3.266811 -1.691938 -0.61107 -vertex -3.166847 -2.077669 -0.615851 -vertex -3.090016 -2.393682 -0.385554 -vertex -1.487595 -1.376553 0.417475 -vertex -1.386009 -1.448457 0.038907 -vertex -1.740474 -1.175521 0.650804 -vertex -2.048055 -0.922149 0.649769 -vertex -2.292852 -0.713217 0.414767 -vertex -2.381361 -0.62853 0.035559 -vertex -2.279774 -0.700436 -0.343009 -vertex -2.026895 -0.901468 -0.576337 -vertex -1.719314 -1.154839 -0.575303 -vertex -1.474517 -1.363771 -0.3403 -face 2 1 12 -face 4 3 1 2 -face 6 5 3 4 -face 8 7 5 6 -face 9 10 7 8 -face 9 15 10 -face 11 4 2 12 -face 13 6 4 11 -face 14 8 6 13 -face 15 9 8 14 -face 3 11 12 1 -face 5 13 11 3 -face 7 14 13 5 -face 10 15 14 7 -face 19 39 16 -face 18 17 39 19 -face 21 20 17 18 -face 23 22 20 21 -face 23 24 22 -face 26 19 16 25 -face 27 18 19 26 -face 28 21 18 27 -face 29 23 21 28 -face 24 23 29 -face 39 25 16 -face 39 26 25 -face 17 27 26 39 -face 20 28 27 17 -face 22 29 28 20 -face 24 29 22 -face 31 32 30 -face 34 33 32 31 -face 36 35 33 34 -face 38 37 35 36 -face 39 37 38 -face 39 43 37 -face 41 31 30 -face 40 34 31 41 -face 42 36 34 40 -face 44 38 36 42 -face 43 39 38 44 -face 32 41 30 -face 33 40 41 32 -face 35 42 40 33 -face 37 44 42 35 -face 37 43 44 -face 47 46 45 48 -face 50 49 46 47 -face 52 51 49 50 -face 54 53 51 52 -face 56 55 53 54 -face 58 57 55 56 -face 60 59 57 58 -face 62 61 59 60 -face 64 63 61 62 -face 48 45 63 64 -face 65 47 48 66 -face 67 50 47 65 -face 68 52 50 67 -face 69 54 52 68 -face 70 56 54 69 -face 71 58 56 70 -face 72 60 58 71 -face 73 62 60 72 -face 74 64 62 73 -face 66 48 64 74 -face 75 65 66 76 -face 77 67 65 75 -face 78 68 67 77 -face 79 69 68 78 -face 80 70 69 79 -face 81 71 70 80 -face 82 72 71 81 -face 83 73 72 82 -face 84 74 73 83 -face 76 66 74 84 -face 85 75 76 86 -face 87 77 75 85 -face 88 78 77 87 -face 89 79 78 88 -face 90 80 79 89 -face 91 81 80 90 -face 92 82 81 91 -face 93 83 82 92 -face 94 84 83 93 -face 86 76 84 94 -face 95 85 86 96 -face 97 87 85 95 -face 98 88 87 97 -face 99 89 88 98 -face 100 90 89 99 -face 101 91 90 100 -face 102 92 91 101 -face 103 93 92 102 -face 104 94 93 103 -face 96 86 94 104 -face 105 95 96 106 -face 107 97 95 105 -face 108 98 97 107 -face 109 99 98 108 -face 110 100 99 109 -face 111 101 100 110 -face 112 102 101 111 -face 113 103 102 112 -face 114 104 103 113 -face 106 96 104 114 -face 115 105 106 116 -face 117 107 105 115 -face 118 108 107 117 -face 119 109 108 118 -face 120 110 109 119 -face 121 111 110 120 -face 122 112 111 121 -face 123 113 112 122 -face 124 114 113 123 -face 116 106 114 124 -face 125 115 116 126 -face 127 117 115 125 -face 128 118 117 127 -face 129 119 118 128 -face 130 120 119 129 -face 131 121 120 130 -face 132 122 121 131 -face 133 123 122 132 -face 134 124 123 133 -face 126 116 124 134 -face 135 125 126 136 -face 137 127 125 135 -face 138 128 127 137 -face 139 129 128 138 -face 140 130 129 139 -face 141 131 130 140 -face 142 132 131 141 -face 143 133 132 142 -face 144 134 133 143 -face 136 126 134 144 -face 46 135 136 45 -face 49 137 135 46 -face 51 138 137 49 -face 53 139 138 51 -face 55 140 139 53 -face 57 141 140 55 -face 59 142 141 57 -face 61 143 142 59 -face 63 144 143 61 -face 45 136 144 63 +vertex 3.61803 0.188024 0.198764 +face 1 2 7 6 +face 2 3 8 7 +face 3 4 9 8 +face 4 5 10 9 +face 5 1 6 10 +face 6 7 12 11 +face 7 8 13 12 +face 8 9 14 13 +face 9 10 15 14 +face 10 6 11 15 +face 11 12 17 16 +face 12 13 18 17 +face 13 14 19 18 +face 14 15 20 19 +face 15 11 16 20 +face 16 17 22 21 +face 17 18 23 22 +face 18 19 24 23 +face 19 20 25 24 +face 20 16 21 25 +face 21 22 27 26 +face 22 23 28 27 +face 23 24 29 28 +face 24 25 30 29 +face 25 21 26 30 +face 26 27 32 31 +face 27 28 33 32 +face 28 29 34 33 +face 29 30 35 34 +face 30 26 31 35 +face 31 32 37 36 +face 32 33 38 37 +face 33 34 39 38 +face 34 35 40 39 +face 35 31 36 40 +face 36 37 42 41 +face 37 38 43 42 +face 38 39 44 43 +face 39 40 45 44 +face 40 36 41 45 +face 41 42 47 46 +face 42 43 48 47 +face 43 44 49 48 +face 44 45 50 49 +face 45 41 46 50 +face 46 47 52 51 +face 47 48 53 52 +face 48 49 54 53 +face 49 50 55 54 +face 50 46 51 55 +face 51 52 57 56 +face 52 53 58 57 +face 53 54 59 58 +face 54 55 60 59 +face 55 51 56 60 +face 56 57 2 1 +face 57 58 3 2 +face 58 59 4 3 +face 59 60 5 4 +face 60 56 1 5 +face 63 62 61 +face 65 64 62 63 +face 69 66 64 65 +face 68 67 66 69 +face 71 70 67 68 +face 75 72 70 71 +face 74 73 72 75 +face 77 76 73 74 +face 77 78 76 +face 79 63 61 +face 80 65 63 79 +face 82 69 65 80 +face 81 68 69 82 +face 83 71 68 81 +face 85 75 71 83 +face 84 74 75 85 +face 86 77 74 84 +face 86 78 77 +face 62 79 61 +face 64 80 79 62 +face 66 82 80 64 +face 67 81 82 66 +face 70 83 81 67 +face 72 85 83 70 +face 73 84 85 72 +face 76 86 84 73 +face 76 78 86 +face 89 88 87 +face 91 90 88 89 +face 95 92 90 91 +face 94 93 92 95 +face 97 96 93 94 +face 101 98 96 97 +face 100 99 98 101 +face 103 102 99 100 +face 103 104 102 +face 105 89 87 +face 106 91 89 105 +face 108 95 91 106 +face 107 94 95 108 +face 109 97 94 107 +face 111 101 97 109 +face 110 100 101 111 +face 112 103 100 110 +face 112 104 103 +face 88 105 87 +face 90 106 105 88 +face 92 108 106 90 +face 93 107 108 92 +face 96 109 107 93 +face 98 111 109 96 +face 99 110 111 98 +face 102 112 110 99 +face 102 104 112 +face 115 114 113 +face 117 116 114 115 +face 121 118 116 117 +face 120 119 118 121 +face 123 122 119 120 +face 127 124 122 123 +face 126 125 124 127 +face 129 128 125 126 +face 129 130 128 +face 131 115 113 +face 132 117 115 131 +face 133 121 117 132 +face 134 120 121 133 +face 135 123 120 134 +face 137 127 123 135 +face 136 126 127 137 +face 138 129 126 136 +face 138 130 129 +face 114 131 113 +face 116 132 131 114 +face 118 133 132 116 +face 119 134 133 118 +face 122 135 134 119 +face 124 137 135 122 +face 125 136 137 124 +face 128 138 136 125 +face 128 130 138 diff --git a/door-mdl.c b/door-mdl.c deleted file mode 100644 index e6c90a1..0000000 --- a/door-mdl.c +++ /dev/null @@ -1,367 +0,0 @@ -/* -#include -int main(int argc, char** argv) -{ - char c; - printf("char %s[] = \"", argv[1]); - while(!feof(stdin)){ - c = getchar(); - if(c=='\n') printf(" \\"); - putchar(c); - } - printf("\";\n"); - return 0; -} -*/ -char door_model[] = " \ - \ -newgroup \ -color 0 0 0 \ -vertex -0.935384 0.827798 -0.240658 \ -vertex -0.935384 0.544243 -0.432744 \ -vertex 1.064616 0.544243 -0.432744 \ -vertex -0.935384 0.10519 -0.350422 \ -vertex -0.935384 -0.041161 -0.158336 \ -vertex 1.064616 -0.041161 -0.158336 \ -vertex -0.935384 -0.086896 -0.167483 \ -vertex 1.064616 -0.086896 -0.167483 \ -vertex 1.064616 -0.88268 -0.377863 \ -vertex -0.935384 -0.919268 -0.377862 \ -vertex 1.064616 -0.919268 0.555126 \ -vertex 1.064616 -0.919268 0.619154 \ -vertex -0.935384 -0.836945 0.610007 \ -vertex 1.064616 -0.836945 0.610007 \ -vertex -0.935384 -0.059455 0.289864 \ -vertex 1.064616 -0.059455 0.289864 \ -vertex -0.935384 -0.022867 0.326452 \ -vertex 1.064616 -0.022867 0.326452 \ -vertex -0.935384 0.068602 0.445362 \ -vertex 1.064616 0.068602 0.445362 \ -vertex -0.935384 0.324716 0.57342 \ -vertex 1.064616 0.324716 0.57342 \ -vertex -0.935384 0.416186 0.57342 \ -vertex 1.064616 -0.919268 -0.377863 \ -vertex 1.064616 0.10519 -0.350422 \ -vertex 1.064616 0.416186 0.57342 \ -vertex 1.064616 0.827798 -0.240658 \ -vertex 1.064616 0.919268 0.15266 \ -vertex -0.935384 0.919268 0.15266 \ -vertex -0.935384 -0.88268 -0.377862 \ -vertex -0.935384 -0.919268 0.555126 \ -vertex -0.935384 -0.919268 0.619154 \ -face 1 29 28 27 \ -face 2 1 27 3 \ -face 4 2 3 25 \ -face 5 4 25 6 \ -face 7 5 6 8 \ -face 30 7 8 9 \ -face 10 30 9 24 \ -face 31 10 24 11 \ -face 32 31 11 12 \ -face 13 32 12 14 \ -face 15 13 14 16 \ -face 17 15 16 18 \ -face 19 17 18 20 \ -face 21 19 20 22 \ -face 23 21 22 26 \ -face 29 23 26 28 \ -face 9 11 24 \ -face 12 11 9 \ -face 14 12 9 \ -face 8 14 9 \ -face 8 6 14 \ -face 6 16 14 \ -face 25 16 6 \ -face 18 16 25 \ -face 20 18 25 \ -face 3 20 25 \ -face 3 22 20 \ -face 26 22 3 \ -face 27 26 3 \ -face 27 28 26 \ -face 2 29 1 \ -face 2 4 29 \ -face 4 23 29 \ -face 21 23 4 \ -face 5 21 4 \ -face 5 7 21 \ -face 7 19 21 \ -face 17 19 7 \ -face 15 17 7 \ -face 30 15 7 \ -face 30 10 15 \ -face 10 13 15 \ -face 31 13 10 \ -face 31 32 13 \ - \ -newgroup \ -color 0 0 0 \ -vertex -1.130435 0.544243 0.523625 \ -vertex 0.869565 0.10519 0.441302 \ -vertex -1.130435 -0.041161 0.249216 \ -vertex -1.130435 -0.086896 0.258363 \ -vertex 0.869565 -0.919268 0.468742 \ -vertex 0.869565 -0.919268 -0.528274 \ -vertex -1.130435 -0.919268 -0.528274 \ -vertex -1.130435 -0.836945 -0.519127 \ -vertex -1.130435 -0.022867 -0.235572 \ -vertex -1.130435 0.068602 -0.354482 \ -vertex 0.869565 0.324716 -0.48254 \ -vertex -1.130435 0.324716 -0.482539 \ -vertex 0.869565 0.416186 -0.48254 \ -vertex -1.130435 -0.919268 0.468743 \ -vertex -1.130435 -0.919268 -0.464245 \ -vertex -1.130435 -0.88268 0.468743 \ -vertex -1.130435 -0.059455 -0.198984 \ -vertex -1.130435 0.10519 0.441302 \ -vertex -1.130435 0.416186 -0.482539 \ -vertex -1.130435 0.827798 0.331539 \ -vertex -1.130435 0.919268 -0.06178 \ -vertex 0.869565 0.827798 0.331538 \ -vertex 0.869565 0.919268 -0.06178 \ -vertex 0.869565 0.544243 0.523624 \ -vertex 0.869565 -0.041161 0.249216 \ -vertex 0.869565 -0.086896 0.258363 \ -vertex 0.869565 0.068602 -0.354482 \ -vertex 0.869565 -0.022867 -0.235572 \ -vertex 0.869565 -0.059455 -0.198984 \ -vertex 0.869565 -0.88268 0.468742 \ -vertex 0.869565 -0.836945 -0.519127 \ -vertex 0.869565 -0.919268 -0.464246 \ -face 54 55 53 52 \ -face 56 54 52 33 \ -face 34 56 33 50 \ -face 57 34 50 35 \ -face 58 57 35 36 \ -face 62 58 36 48 \ -face 37 62 48 46 \ -face 64 37 46 47 \ -face 38 64 47 39 \ -face 63 38 39 40 \ -face 61 63 40 49 \ -face 60 61 49 41 \ -face 59 60 41 42 \ -face 43 59 42 44 \ -face 45 43 44 51 \ -face 55 45 51 53 \ -face 48 47 46 \ -face 39 47 48 \ -face 40 39 48 \ -face 36 40 48 \ -face 36 35 40 \ -face 35 49 40 \ -face 50 49 35 \ -face 41 49 50 \ -face 42 41 50 \ -face 33 42 50 \ -face 33 44 42 \ -face 51 44 33 \ -face 52 51 33 \ -face 52 53 51 \ -face 56 55 54 \ -face 56 34 55 \ -face 34 45 55 \ -face 43 45 34 \ -face 57 43 34 \ -face 57 58 43 \ -face 58 59 43 \ -face 60 59 58 \ -face 61 60 58 \ -face 62 61 58 \ -face 62 37 61 \ -face 37 63 61 \ -face 64 63 37 \ -face 64 38 63 \ - \ -newgroup \ -color 0 0 0 \ -vertex 0.169041 0.919268 -1.119686 \ -vertex -0.224277 0.827798 0.880314 \ -vertex -0.224278 0.827798 -1.119686 \ -vertex -0.416363 0.544243 0.880314 \ -vertex -0.416364 0.544243 -1.119686 \ -vertex -0.141956 -0.041161 -1.119686 \ -vertex -0.151102 -0.086896 0.880314 \ -vertex -0.151102 -0.086896 -1.119686 \ -vertex -0.361482 -0.88268 0.880314 \ -vertex -0.361482 -0.919268 -1.119686 \ -vertex 0.571506 -0.919268 -1.119686 \ -vertex 0.635535 -0.919268 0.880314 \ -vertex 0.635535 -0.919268 -1.119686 \ -vertex 0.626388 -0.836945 -1.119686 \ -vertex 0.306245 -0.059455 0.880314 \ -vertex 0.306245 -0.059455 -1.119686 \ -vertex 0.342832 -0.022867 -1.119686 \ -vertex 0.461743 0.068602 0.880314 \ -vertex 0.461743 0.068602 -1.119686 \ -vertex 0.589801 0.324716 0.880314 \ -vertex 0.5898 0.324716 -1.119686 \ -vertex 0.589801 0.416186 0.880314 \ -vertex -0.361482 -0.88268 -1.119686 \ -vertex -0.334041 0.10519 -1.119686 \ -vertex 0.5898 0.416186 -1.119686 \ -vertex 0.169041 0.919268 0.880314 \ -vertex -0.334041 0.10519 0.880314 \ -vertex -0.141955 -0.041161 0.880314 \ -vertex 0.342833 -0.022867 0.880314 \ -vertex -0.361482 -0.919268 0.880314 \ -vertex 0.626388 -0.836945 0.880314 \ -vertex 0.571507 -0.919268 0.880314 \ -face 66 90 65 67 \ -face 68 66 67 69 \ -face 91 68 69 88 \ -face 92 91 88 70 \ -face 71 92 70 72 \ -face 73 71 72 87 \ -face 94 73 87 74 \ -face 96 94 74 75 \ -face 76 96 75 77 \ -face 95 76 77 78 \ -face 79 95 78 80 \ -face 93 79 80 81 \ -face 82 93 81 83 \ -face 84 82 83 85 \ -face 86 84 85 89 \ -face 90 86 89 65 \ -face 87 75 74 \ -face 77 75 87 \ -face 78 77 87 \ -face 72 78 87 \ -face 72 70 78 \ -face 70 80 78 \ -face 88 80 70 \ -face 81 80 88 \ -face 83 81 88 \ -face 69 83 88 \ -face 69 85 83 \ -face 89 85 69 \ -face 67 89 69 \ -face 67 65 89 \ -face 68 90 66 \ -face 68 91 90 \ -face 91 86 90 \ -face 84 86 91 \ -face 92 84 91 \ -face 92 71 84 \ -face 71 82 84 \ -face 93 82 71 \ -face 79 93 71 \ -face 73 79 71 \ -face 73 94 79 \ -face 94 95 79 \ -face 96 95 94 \ -face 96 76 95 \ - \ -newgroup \ -color 0 0 0 \ -vertex -0.097419 0.919268 -0.950385 \ -vertex 0.2959 0.827798 -0.950385 \ -vertex 0.487986 0.544243 -0.950385 \ -vertex 0.487985 0.544243 1.049614 \ -vertex 0.405663 0.10519 -0.950385 \ -vertex 0.213577 -0.041161 -0.950385 \ -vertex 0.222724 -0.086896 -0.950385 \ -vertex 0.222724 -0.086896 1.049614 \ -vertex 0.433104 -0.88268 -0.950385 \ -vertex 0.433104 -0.88268 1.049614 \ -vertex 0.433104 -0.919268 -0.950385 \ -vertex -0.499884 -0.919268 -0.950385 \ -vertex -0.499884 -0.919268 1.049614 \ -vertex -0.563913 -0.919268 -0.950385 \ -vertex -0.563913 -0.919268 1.049614 \ -vertex -0.554766 -0.836945 -0.950385 \ -vertex -0.234623 -0.059455 -0.950385 \ -vertex -0.271211 -0.022867 -0.950385 \ -vertex -0.271211 -0.022867 1.049614 \ -vertex -0.390121 0.068602 -0.950385 \ -vertex -0.390121 0.068602 1.049614 \ -vertex -0.518178 0.324717 -0.950385 \ -vertex -0.518178 0.416186 -0.950385 \ -vertex 0.433104 -0.919268 1.049614 \ -vertex -0.554766 -0.836945 1.049614 \ -vertex 0.213577 -0.041161 1.049614 \ -vertex -0.234623 -0.059455 1.049614 \ -vertex 0.405663 0.10519 1.049614 \ -vertex -0.518178 0.324716 1.049614 \ -vertex -0.518178 0.416186 1.049614 \ -vertex 0.2959 0.827798 1.049614 \ -vertex -0.097419 0.919268 1.049614 \ -face 98 97 128 127 \ -face 99 98 127 100 \ -face 101 99 100 124 \ -face 102 101 124 122 \ -face 103 102 122 104 \ -face 105 103 104 106 \ -face 107 105 106 120 \ -face 108 107 120 109 \ -face 110 108 109 111 \ -face 112 110 111 121 \ -face 113 112 121 123 \ -face 114 113 123 115 \ -face 116 114 115 117 \ -face 118 116 117 125 \ -face 119 118 125 126 \ -face 97 119 126 128 \ -face 106 109 120 \ -face 111 109 106 \ -face 121 111 106 \ -face 104 121 106 \ -face 104 122 121 \ -face 122 123 121 \ -face 124 123 122 \ -face 115 123 124 \ -face 117 115 124 \ -face 100 117 124 \ -face 100 125 117 \ -face 126 125 100 \ -face 127 126 100 \ -face 127 128 126 \ - \ -newgroup \ -color 0 0 0 \ -vertex 0.2959 0.827798 -0.950385 \ -vertex -0.097419 0.919268 -0.950385 \ -vertex 0.487985 0.544243 -0.950385 \ -vertex 0.405663 0.10519 -0.950385 \ -vertex -0.518178 0.416186 -0.950385 \ -vertex -0.518178 0.324716 -0.950385 \ -vertex 0.213577 -0.041161 -0.950385 \ -vertex 0.222724 -0.086896 -0.950385 \ -vertex -0.390121 0.068602 -0.950385 \ -vertex -0.271211 -0.022867 -0.950385 \ -vertex -0.234623 -0.059455 -0.950385 \ -vertex 0.433104 -0.88268 -0.950385 \ -vertex 0.433104 -0.919268 -0.950385 \ -vertex -0.554766 -0.836945 -0.950385 \ -vertex -0.499884 -0.919268 -0.950385 \ -vertex -0.563913 -0.919268 -0.950385 \ -face 131 130 129 \ -face 131 132 130 \ -face 132 133 130 \ -face 134 133 132 \ -face 135 134 132 \ -face 135 136 134 \ -face 136 137 134 \ -face 138 137 136 \ -face 139 138 136 \ -face 140 139 136 \ -face 140 141 139 \ -face 141 142 139 \ -face 143 142 141 \ -face 143 144 142 \ - \ -newgroup \ -vertex -1.005803 -1 0.979191 \ -vertex -1.005803 1 0.979191 \ -vertex 0.994197 1 0.979191 \ -vertex 0.994197 -1 0.979191 \ -vertex 0.994197 1 -1.020809 \ -vertex 0.994197 -1 -1.020809 \ -vertex -1.005803 1 -1.020809 \ -vertex -1.005803 -1 -1.020809 \ -face 147 146 145 148 \ -face 149 147 148 150 \ -face 151 149 150 152 \ -face 146 151 152 145 \ -face 149 151 146 147 \ -face 148 145 152 150"; diff --git a/gen-make.sh b/gen-make.sh index 4494e2d..2710ea1 100644 --- a/gen-make.sh +++ b/gen-make.sh @@ -1,3 +1,6 @@ +# generate an ugly but functional Makefile +# for the PC target + echo "# now works in BSD \`make' CC ?= cc" diff --git a/headers.h b/headers.h index 5c4c511..f7827e7 100644 --- a/headers.h +++ b/headers.h @@ -248,6 +248,11 @@ extern float my_sin(float angle); extern float my_cos(float angle); #endif +extern void initFunction(void *va); +extern void tickFunction(void *va); +extern void drawFunction(void* va); +extern void collisionFunction(void* va, void* vb); + #endif diff --git a/key-mdl.c b/key-mdl.c deleted file mode 100644 index 32bcc28..0000000 --- a/key-mdl.c +++ /dev/null @@ -1,309 +0,0 @@ -/* -#include -int main(int argc, char** argv) -{ - char c; - printf("char %s[] = \"", argv[1]); - while(!feof(stdin)){ - c = getchar(); - if(c=='\n') printf(" \\"); - putchar(c); - } - printf("\";\n"); - return 0; -} -*/ -char key_model[] = " \ - \ -newgroup \ -color 255 0 0 \ -vertex 1.751821 0.619155 0.106049 \ -vertex 0.91738 0.619158 0.587813 \ -vertex 1.751817 -0.521248 0.106049 \ -vertex 0.917377 -0.521245 0.587813 \ -vertex 1.751814 -1.661651 0.106049 \ -vertex 0.917373 -1.661648 0.587813 \ -vertex 1.75181 -2.802054 0.106049 \ -vertex 0.917369 -2.802051 0.587813 \ -vertex 1.102801 -2.802052 0.266637 \ -vertex 1.380948 -2.802052 0.106049 \ -vertex 0.917377 -0.521245 -0.375716 \ -vertex 0.91738 0.619158 -0.375716 \ -vertex 0.917373 -1.661648 -0.375716 \ -vertex 0.917369 -2.802051 -0.375716 \ -vertex 1.102801 -2.802052 -0.054539 \ -vertex 2.961392 0.619151 0.266637 \ -vertex 3.610399 -0.521254 0.106049 \ -vertex 2.775958 -0.521251 0.587813 \ -vertex 2.775961 0.619152 0.587813 \ -vertex 3.610395 -1.661657 0.106049 \ -vertex 2.775954 -1.661654 0.587813 \ -vertex 3.610391 -2.80206 0.106049 \ -vertex 2.77595 -2.802057 0.587813 \ -vertex 2.961381 -2.802058 -0.05454 \ -vertex 2.961392 0.619151 -0.05454 \ -vertex 2.775961 0.619152 -0.375716 \ -vertex 2.775958 -0.521251 -0.375716 \ -vertex 2.775954 -1.661654 -0.375716 \ -vertex 2.77595 -2.802057 -0.375716 \ -vertex -1.627242 0.348612 -0.079383 \ -vertex -1.627242 0.830377 0.384196 \ -vertex -1.627242 0.348612 -0.450245 \ -vertex 0.121182 0.348612 -0.450245 \ -vertex 0.121182 0.830377 0.384196 \ -vertex 1.869606 0.348612 -0.450245 \ -vertex 1.869606 0.830377 0.384196 \ -vertex 3.61803 0.348612 -0.264814 \ -vertex 3.61803 0.830377 0.384196 \ -vertex 3.61803 0.5092 0.198764 \ -vertex 0.121182 -0.133153 0.384196 \ -vertex -1.627242 -0.133153 0.384196 \ -vertex 1.869606 -0.133153 0.384196 \ -vertex 3.61803 0.188024 0.198764 \ -vertex 3.61803 -0.133153 0.384195 \ -vertex -0.656828 0.405316 0.082761 \ -vertex -0.786267 0.406413 0.459654 \ -vertex -1.266994 2.261401 0.482646 \ -vertex -1.156646 2.333972 0.106666 \ -vertex -1.112064 0.422068 0.688597 \ -vertex -1.542809 2.08419 0.709199 \ -vertex -1.509777 0.4463 0.682142 \ -vertex -1.878741 1.870027 0.699789 \ -vertex -1.827491 0.469854 0.442754 \ -vertex -2.146474 1.700716 0.45801 \ -vertex -1.943852 0.483734 0.061871 \ -vertex -2.243743 1.640927 0.076215 \ -vertex -1.814413 0.482636 -0.315022 \ -vertex -2.133396 1.713498 -0.299765 \ -vertex -1.488616 0.466982 -0.543965 \ -vertex -1.85758 1.890709 -0.526318 \ -vertex -1.090904 0.442749 -0.53751 \ -vertex -1.521649 2.104871 -0.516908 \ -vertex -0.773189 0.419195 -0.298122 \ -vertex -1.253916 2.274183 -0.275129 \ -vertex -2.746155 3.479868 0.477671 \ -vertex -2.69455 3.600829 0.101494 \ -vertex -2.86818 3.175972 0.704741 \ -vertex -3.014016 2.805217 0.69597 \ -vertex -3.127959 2.50922 0.454709 \ -vertex -3.166485 2.401041 0.073111 \ -vertex -3.11488 2.522002 -0.303066 \ -vertex -2.992855 2.825898 -0.530136 \ -vertex -2.847019 3.196653 -0.521366 \ -vertex -2.733077 3.49265 -0.280104 \ -vertex -4.65876 3.596402 0.446628 \ -vertex -4.683112 3.72199 0.069218 \ -vertex -4.581929 3.280389 0.676926 \ -vertex -4.481966 2.894658 0.672144 \ -vertex -4.397052 2.586545 0.434111 \ -vertex -4.359622 2.473738 0.053746 \ -vertex -4.383974 2.599327 -0.323665 \ -vertex -4.460804 2.91534 -0.553962 \ -vertex -4.560768 3.301071 -0.549181 \ -vertex -4.645682 3.609184 -0.311147 \ -vertex -6.27426 2.566491 0.401375 \ -vertex -6.362769 2.651178 0.022168 \ -vertex -6.029463 2.357559 0.636377 \ -vertex -5.721882 2.104188 0.637412 \ -vertex -5.469003 1.903156 0.404083 \ -vertex -5.367416 1.831251 0.025515 \ -vertex -5.455925 1.915938 -0.353692 \ -vertex -5.700721 2.124869 -0.588695 \ -vertex -6.008302 2.378241 -0.589729 \ -vertex -6.261182 2.579273 -0.356401 \ -vertex -6.975587 0.783525 0.359197 \ -vertex -7.091948 0.797404 -0.021686 \ -vertex -6.657873 0.759971 0.598584 \ -vertex -6.26016 0.735739 0.60504 \ -vertex -5.934363 0.720084 0.376096 \ -vertex -5.804924 0.718987 -0.000797 \ -vertex -5.921285 0.732866 -0.381679 \ -vertex -6.238999 0.75642 -0.621067 \ -vertex -6.636712 0.780653 -0.627522 \ -vertex -6.96251 0.796307 -0.398579 \ -vertex -6.49486 -1.071463 0.336204 \ -vertex -6.59213 -1.131251 -0.045592 \ -vertex -6.227128 -0.902151 0.577982 \ -vertex -5.891196 -0.687989 0.587392 \ -vertex -5.61538 -0.510778 0.36084 \ -vertex -5.505033 -0.438207 -0.01514 \ -vertex -5.602303 -0.497996 -0.396936 \ -vertex -5.870035 -0.667307 -0.638714 \ -vertex -6.205967 -0.881469 -0.648124 \ -vertex -6.481782 -1.058681 -0.421572 \ -vertex -5.015699 -2.28993 0.341179 \ -vertex -5.054225 -2.398108 -0.040419 \ -vertex -4.901756 -1.993933 0.58244 \ -vertex -4.755921 -1.623178 0.591211 \ -vertex -4.633895 -1.319281 0.364141 \ -vertex -4.58229 -1.198321 -0.012036 \ -vertex -4.620817 -1.306499 -0.393635 \ -vertex -4.73476 -1.602497 -0.634896 \ -vertex -4.880595 -1.973251 -0.643666 \ -vertex -5.002621 -2.277148 -0.416596 \ -vertex -3.103094 -2.406464 0.372222 \ -vertex -3.065665 -2.51927 -0.008143 \ -vertex -3.188008 -2.09835 0.610256 \ -vertex -3.287971 -1.712619 0.615037 \ -vertex -3.364803 -1.396606 0.384739 \ -vertex -3.389154 -1.271018 0.007329 \ -vertex -3.351725 -1.383824 -0.373036 \ -vertex -3.266811 -1.691938 -0.61107 \ -vertex -3.166847 -2.077669 -0.615851 \ -vertex -3.090016 -2.393682 -0.385554 \ -vertex -1.487595 -1.376553 0.417475 \ -vertex -1.386009 -1.448457 0.038907 \ -vertex -1.740474 -1.175521 0.650804 \ -vertex -2.048055 -0.922149 0.649769 \ -vertex -2.292852 -0.713217 0.414767 \ -vertex -2.381361 -0.62853 0.035559 \ -vertex -2.279774 -0.700436 -0.343009 \ -vertex -2.026895 -0.901468 -0.576337 \ -vertex -1.719314 -1.154839 -0.575303 \ -vertex -1.474517 -1.363771 -0.3403 \ -face 2 1 12 \ -face 4 3 1 2 \ -face 6 5 3 4 \ -face 8 7 5 6 \ -face 9 10 7 8 \ -face 9 15 10 \ -face 11 4 2 12 \ -face 13 6 4 11 \ -face 14 8 6 13 \ -face 15 9 8 14 \ -face 3 11 12 1 \ -face 5 13 11 3 \ -face 7 14 13 5 \ -face 10 15 14 7 \ -face 19 39 16 \ -face 18 17 39 19 \ -face 21 20 17 18 \ -face 23 22 20 21 \ -face 23 24 22 \ -face 26 19 16 25 \ -face 27 18 19 26 \ -face 28 21 18 27 \ -face 29 23 21 28 \ -face 24 23 29 \ -face 39 25 16 \ -face 39 26 25 \ -face 17 27 26 39 \ -face 20 28 27 17 \ -face 22 29 28 20 \ -face 24 29 22 \ -face 31 32 30 \ -face 34 33 32 31 \ -face 36 35 33 34 \ -face 38 37 35 36 \ -face 39 37 38 \ -face 39 43 37 \ -face 41 31 30 \ -face 40 34 31 41 \ -face 42 36 34 40 \ -face 44 38 36 42 \ -face 43 39 38 44 \ -face 32 41 30 \ -face 33 40 41 32 \ -face 35 42 40 33 \ -face 37 44 42 35 \ -face 37 43 44 \ -face 47 46 45 48 \ -face 50 49 46 47 \ -face 52 51 49 50 \ -face 54 53 51 52 \ -face 56 55 53 54 \ -face 58 57 55 56 \ -face 60 59 57 58 \ -face 62 61 59 60 \ -face 64 63 61 62 \ -face 48 45 63 64 \ -face 65 47 48 66 \ -face 67 50 47 65 \ -face 68 52 50 67 \ -face 69 54 52 68 \ -face 70 56 54 69 \ -face 71 58 56 70 \ -face 72 60 58 71 \ -face 73 62 60 72 \ -face 74 64 62 73 \ -face 66 48 64 74 \ -face 75 65 66 76 \ -face 77 67 65 75 \ -face 78 68 67 77 \ -face 79 69 68 78 \ -face 80 70 69 79 \ -face 81 71 70 80 \ -face 82 72 71 81 \ -face 83 73 72 82 \ -face 84 74 73 83 \ -face 76 66 74 84 \ -face 85 75 76 86 \ -face 87 77 75 85 \ -face 88 78 77 87 \ -face 89 79 78 88 \ -face 90 80 79 89 \ -face 91 81 80 90 \ -face 92 82 81 91 \ -face 93 83 82 92 \ -face 94 84 83 93 \ -face 86 76 84 94 \ -face 95 85 86 96 \ -face 97 87 85 95 \ -face 98 88 87 97 \ -face 99 89 88 98 \ -face 100 90 89 99 \ -face 101 91 90 100 \ -face 102 92 91 101 \ -face 103 93 92 102 \ -face 104 94 93 103 \ -face 96 86 94 104 \ -face 105 95 96 106 \ -face 107 97 95 105 \ -face 108 98 97 107 \ -face 109 99 98 108 \ -face 110 100 99 109 \ -face 111 101 100 110 \ -face 112 102 101 111 \ -face 113 103 102 112 \ -face 114 104 103 113 \ -face 106 96 104 114 \ -face 115 105 106 116 \ -face 117 107 105 115 \ -face 118 108 107 117 \ -face 119 109 108 118 \ -face 120 110 109 119 \ -face 121 111 110 120 \ -face 122 112 111 121 \ -face 123 113 112 122 \ -face 124 114 113 123 \ -face 116 106 114 124 \ -face 125 115 116 126 \ -face 127 117 115 125 \ -face 128 118 117 127 \ -face 129 119 118 128 \ -face 130 120 119 129 \ -face 131 121 120 130 \ -face 132 122 121 131 \ -face 133 123 122 132 \ -face 134 124 123 133 \ -face 126 116 124 134 \ -face 135 125 126 136 \ -face 137 127 125 135 \ -face 138 128 127 137 \ -face 139 129 128 138 \ -face 140 130 129 139 \ -face 141 131 130 140 \ -face 142 132 131 141 \ -face 143 133 132 142 \ -face 144 134 133 143 \ -face 136 126 134 144 \ -face 46 135 136 45 \ -face 49 137 135 46 \ -face 51 138 137 49 \ -face 53 139 138 51 \ -face 55 140 139 53 \ -face 57 141 140 55 \ -face 59 142 141 57 \ -face 61 143 142 59 \ -face 63 144 143 61 \ -face 45 136 144 63 "; diff --git a/main.c b/main.c index c4bc966..aafc729 100644 --- a/main.c +++ b/main.c @@ -31,9 +31,16 @@ extern char bullet_model[]; #include "headers.h" +#ifdef PC_TARGET +/* vertex count checking */ int vc; -#ifdef PC_TARGET +/* lighting and materials for PC version */ +GLfloat light_position[] = { 0.0, 0.0, 0.0, 1.0 }; +GLfloat diffuse_light[] = { 1.0, 1.0, 1.0, 1.0 }; +GLfloat ambient_light[] = { 0.5, 0.5, 0.5, 1.0 }; +GLfloat mat_diffuse[] = { 1.0, 1.0, 1.0, 1.0 }; + /* SDL event structures */ SDL_Event event; Uint8 *keystate; @@ -50,14 +57,6 @@ model* targetModel; /* game objects */ game_obj *objs = NULL, *node = NULL, *player = NULL; -/* the game's lighting */ -GLfloat light_position[] = { 0.0, 0.0, 0.0, 1.0 }; -GLfloat diffuse_light[] = { 1.0, 1.0, 1.0, 1.0 }; -GLfloat ambient_light[] = { 0.5, 0.5, 0.5, 1.0 }; - -/* materials */ -GLfloat mat_diffuse[] = { 1.0, 1.0, 1.0, 1.0 }; - /* Here, everything runs at a constant 30 FPS, however the clown3d engine is designed for variable FPS */ @@ -69,131 +68,35 @@ float yoffs = /* 83.0 */20.0; void runGameFrame(void); -/* This adresses a quirk in libnds. +/* This addresses a quirk in libnds. The official GL version of glPopMatrix requires no parameters, but the libnds version has one parameter */ void PopMatrix(void) { - #ifdef PC_TARGET +#ifdef PC_TARGET glPopMatrix(); - #else +#else glPopMatrix(1); /* copied from Dovoto */ - #endif -} - -/* - * bunch of pseudo-OOP stuff follows - */ - -void initFunction(void *va) -{ - game_obj* a = va; - - switch(a->type) { - case PLAYER: - playerInit(a); - break; - case KEY: - keyInit(a); - break; - case DOOR: - doorInit(a); - break; - case TARGET: - targetInit(a); - break; - } -} - -void tickFunction(void *va) -{ - game_obj* a = (game_obj *)va; - - if(a==NULL) return; - - switch(a->type) { - case PLAYER: - playerTick(a); - break; - case KEY: - keyTick(a); - break; - case DOOR: - doorTick(a); - break; - case BULLET: - bulletTick(a); - break; - case TARGET: - targetTick(a); - break; - } - -} - -void drawFunction(void* va) -{ - game_obj* a = va; - - if(a==NULL) return; - - switch(a->type) { - case KEY: - keyDraw(a); - break; - case PLAYER: - playerDraw(a); - break; - case DOOR: - doorDraw(a); - break; - case BULLET: - bulletDraw(a); - break; - case TARGET: - targetDraw(a); - break; - } -} - -void collisionFunction(void* va, void* vb) -{ - game_obj* a = va; - game_obj* b = vb; - - if(a == NULL || b==NULL) return; - - switch(a->type) { - case PLAYER: - playerCollide(a, b); - break; - case BULLET: - bulletCollide(a, b); - break; - case TARGET: - targetCollide(a, b); - break; - } +#endif } int main(int argc, char* argv[]) { - #ifdef PC_TARGET +#ifdef PC_TARGET /* SDL video stuff */ SDL_Surface* display; SDL_VideoInfo* video_info; - #else - /* NDS: setup text logging */ - consoleDemoInit(); +#else + /* allow text on lower screen */ + consoleDemoInit(); videoSetMode(MODE_FB0); vramSetBankA(VRAM_A_LCD); - /* Credits */ printf("clown3d demo by bl0ckeduser\n"); printf("DS port based on 3d example code written by Dovoto (thanks !)\n"); printf("Made with devKitPro and libnds\n\n"); - #endif +#endif printf("Loading turtle model..."); turtleModel = loadModel(turtle_model); /* player model */ @@ -249,6 +152,7 @@ int main(int argc, char* argv[]) NDS 3D mode init code copied from nehe3.cpp by Dovoto */ + // Setup the Main screen for 3D videoSetMode(MODE_0_3D); @@ -297,32 +201,32 @@ int main(int argc, char* argv[]) #endif while(1) { - #ifdef PC_TARGET +#ifdef PC_TARGET SDL_PollEvent(&event); keystate = SDL_GetKeyState(NULL); if(keystate[SDLK_ESCAPE] || keystate[SDLK_q]) break; if(event.type == SDL_QUIT) break; - #endif +#endif runGameFrame(); - #ifdef PC_TARGET +#ifdef PC_TARGET LimitFPS(30); SDL_GL_SwapBuffers(); - #else +#else /* framerate sync code based on Dovoto's examples */ glFlush(0); swiWaitForVBlank(); swiWaitForVBlank(); /* 30 fps */ - #endif +#endif } freeObjs(objs); - #ifdef PC_TARGET +#ifdef PC_TARGET /* Free SDL display */ SDL_FreeSurface(display); - #endif +#endif /* Free game models */ freeModel(turtleModel); @@ -334,9 +238,9 @@ int main(int argc, char* argv[]) gc_stop(); - #ifdef PC_TARGET +#ifdef PC_TARGET SDL_Quit(); - #endif +#endif } /* RAM usage estimation on PC */ @@ -347,7 +251,6 @@ int main(int argc, char* argv[]) void runGameFrame(void) { - /* * Tick game objects and resolve collisions */ @@ -369,12 +272,12 @@ void runGameFrame(void) /* Setup the camera */ glMatrixMode(GL_PROJECTION); glLoadIdentity(); - #ifdef PC_TARGET +#ifdef PC_TARGET gluPerspective(60.0f, 640.0f/480.0f, 0.1f, 100.0f); - #else +#else gluPerspective(60.0f, 255.0f/192.0f, 0.1f, 100.0f); glPolyFmt(POLY_ALPHA(31) | POLY_CULL_NONE); /* copied from Dovoto */ - #endif +#endif glMatrixMode(GL_MODELVIEW); glLoadIdentity(); @@ -405,16 +308,14 @@ void runGameFrame(void) } - #ifdef PC_TARGET +#ifdef PC_TARGET /* the original lighting code. doesn't build with libnds */ light_position[0] = (GLfloat)(player->data[PLAYER_X] - player->data[PLAYER_DIRX]*5)/10.0; light_position[1] = (GLfloat)(player->data[PLAYER_Y]+10)/10.0; light_position[2] = (GLfloat)(player->data[PLAYER_Z]-player->data[PLAYER_DIRZ]*5)/10.0; glLightfv(GL_LIGHT1, GL_POSITION, light_position); - #endif -#ifdef PC_TARGET vc = 0; /* vertex count checking on PC */ #endif @@ -432,7 +333,7 @@ void runGameFrame(void) PopMatrix(); } - #ifdef PC_TARGET +#ifdef PC_TARGET /* vertex count checking on PC */ char buf[256]; sprintf(buf, "clown3d-DS :: PC build :: %d vertices", vc); @@ -440,7 +341,7 @@ void runGameFrame(void) if(vc > 6144){ printf("Vertex count too high: %d\n", vc); } - #endif +#endif gc_collect(); } diff --git a/maze-mdl.c b/maze-mdl.c deleted file mode 100644 index 0783203..0000000 --- a/maze-mdl.c +++ /dev/null @@ -1,169 +0,0 @@ -/* -#include -int main(int argc, char** argv) -{ - char c; - printf("char %s[] = \"", argv[1]); - while(!feof(stdin)){ - c = getchar(); - if(c=='\n') printf(" \\"); - putchar(c); - } - printf("\";\n"); - return 0; -} -*/ -char maze_model[] = " \ - \ -newgroup wall4 \ -color 10 10 200 \ -vertex -95.706001 -29.155506 84.58101 \ -vertex -95.706001 12.974489 84.580994 \ -vertex -75.420631 -29.155504 84.894142 \ -vertex -75.420631 12.97449 84.894135 \ -vertex -74.588905 -29.155512 31.014849 \ -vertex -74.588905 12.974483 31.014843 \ -vertex -94.874275 -29.155514 30.701708 \ -vertex -94.874275 12.974483 30.701702 \ -face 1 2 4 3 \ -face 3 4 6 5 \ -face 5 6 8 7 \ -face 7 8 2 1 \ -face 2 8 6 4 \ -face 7 1 3 5 \ - \ -newgroup plat \ -color 200 200 200 \ -vertex -57.566299 -12.688504 -67.416382 \ -vertex -57.566299 -7.889102 -67.416382 \ -vertex -57.566303 -12.688504 -17.416382 \ -vertex -57.566303 -7.889102 -17.416382 \ -vertex -27.566305 -12.688504 -17.416382 \ -vertex -27.566305 -7.889102 -17.416382 \ -vertex -27.566303 -12.688504 -67.416382 \ -vertex -27.566303 -7.889102 -67.416382 \ -face 9 10 12 11 \ -face 11 12 14 13 \ -face 13 14 16 15 \ -face 15 16 10 9 \ -face 10 16 14 12 \ -face 15 9 11 13 \ - \ -newgroup wall \ -color 10 10 200 \ -vertex -95.818581 -29.013639 1.76699 \ -vertex -95.818581 13.116357 1.766985 \ -vertex -75.533211 -29.013638 2.080131 \ -vertex -75.533211 13.116358 2.080126 \ -vertex -73.546425 -29.013655 -126.624077 \ -vertex -73.546425 13.116341 -126.624084 \ -vertex -93.831795 -29.013655 -126.937218 \ -vertex -93.831795 13.11634 -126.937225 \ -face 17 18 20 19 \ -face 19 20 22 21 \ -face 21 22 24 23 \ -face 23 24 18 17 \ -face 18 24 22 20 \ -face 23 17 19 21 \ - \ -newgroup wall5 \ -color 10 10 200 \ -vertex 33.718502 -26.707205 87.356003 \ -vertex 33.718502 15.422791 87.355995 \ -vertex 54.003872 -26.707203 87.669144 \ -vertex 54.003872 15.422792 87.669136 \ -vertex 56.417568 -26.707224 -68.690681 \ -vertex 56.417568 15.422771 -68.690681 \ -vertex 36.132198 -26.707224 -69.003822 \ -vertex 36.132198 15.422771 -69.003822 \ -face 25 26 28 27 \ -face 27 28 30 29 \ -face 29 30 32 31 \ -face 31 32 26 25 \ -face 26 32 30 28 \ -face 31 25 27 29 \ - \ -newgroup wall6 \ -color 10 10 200 \ -vertex 36.13987 -28.561388 -72.870064 \ -vertex 36.13987 13.568606 -72.870064 \ -vertex 36.13987 -28.561388 -52.582279 \ -vertex 36.13987 13.568606 -52.582279 \ -vertex 95.404305 -28.561388 -52.582275 \ -vertex 95.404305 13.568606 -52.582275 \ -vertex 95.404305 -28.561388 -72.870064 \ -vertex 95.404305 13.568606 -72.870064 \ -face 33 34 36 35 \ -face 35 36 38 37 \ -face 37 38 40 39 \ -face 39 40 34 33 \ -face 34 40 38 36 \ -face 39 33 35 37 \ - \ -newgroup wall1 \ -color 10 10 200 \ -vertex 95.583755 -36.010872 -129.30249 \ -vertex 95.583755 11.681953 -129.30249 \ -vertex 72.908615 -36.010872 -129.500351 \ -vertex 72.908615 11.681953 -129.500351 \ -vertex 72.25705 -36.010872 -54.833057 \ -vertex 72.25705 11.681953 -54.833057 \ -vertex 94.93219 -36.010872 -54.635189 \ -vertex 94.93219 11.681953 -54.635189 \ -face 41 42 44 43 \ -face 43 44 46 45 \ -face 45 46 48 47 \ -face 47 48 42 41 \ -face 42 48 46 44 \ -face 47 41 43 45 \ - \ -newgroup wall2 \ -color 10 10 200 \ -vertex 13.91043 -36.010872 -137.125778 \ -vertex 13.91043 11.681953 -137.125778 \ -vertex 13.910429 -36.010872 -114.449776 \ -vertex 13.910429 11.681953 -114.449776 \ -vertex 93.885513 -36.010872 -114.449768 \ -vertex 93.885513 11.681953 -114.449768 \ -vertex 93.885513 -36.010872 -137.125778 \ -vertex 93.885513 11.681953 -137.125778 \ -face 49 50 52 51 \ -face 51 52 54 53 \ -face 53 54 56 55 \ -face 55 56 50 49 \ -face 50 56 54 52 \ -face 55 49 51 53 \ - \ -newgroup wall3 \ -color 10 10 200 \ -vertex -164.513763 -34.806515 -137.532684 \ -vertex -164.513763 12.88631 -137.532684 \ -vertex -164.513763 -34.806515 -114.856682 \ -vertex -164.513763 12.88631 -114.856682 \ -vertex -20.693186 -34.806515 -114.856674 \ -vertex -20.693186 12.88631 -114.856674 \ -vertex -20.693184 -34.806515 -137.532684 \ -vertex -20.693184 12.88631 -137.532684 \ -face 57 58 60 59 \ -face 59 60 62 61 \ -face 61 62 64 63 \ -face 63 64 58 57 \ -face 58 64 62 60 \ -face 63 57 59 61 \ - \ -newgroup floor \ -color 100 200 100 \ -vertex -150.876083 -56.655327 -230.704742 \ -vertex -150.876083 -12.28933 -230.704742 \ -vertex -150.876099 -56.655327 76.426544 \ -vertex -150.876099 -12.28933 76.426544 \ -vertex 123.098297 -56.655327 76.426559 \ -vertex 123.098297 -12.28933 76.426559 \ -vertex 123.098312 -56.655327 -230.704727 \ -vertex 123.098312 -12.28933 -230.704727 \ -face 65 66 68 67 \ -face 67 68 70 69 \ -face 69 70 72 71 \ -face 71 72 66 65 \ -face 66 72 70 68 \ -face 71 65 67 69 "; diff --git a/turtle-mdl.c b/model-data.c similarity index 55% rename from turtle-mdl.c rename to model-data.c index 9477b82..8b3abe9 100644 --- a/turtle-mdl.c +++ b/model-data.c @@ -1,18 +1,824 @@ -/* -#include -int main(int argc, char** argv) -{ - char c; - printf("char %s[] = \"", argv[1]); - while(!feof(stdin)){ - c = getchar(); - if(c=='\n') printf(" \\"); - putchar(c); - } - printf("\";\n"); - return 0; -} -*/ + +char bullet_model[] = "newgroup \ +color 255 255 0 \ +vertex -1 -0.5 0.5 \ +vertex -1 0.5 0.5 \ +vertex 1 -0.5 0.5 \ +vertex 1 0.5 0.5 \ +vertex 1 -0.5 -0.5 \ +vertex 1 0.5 -0.5 \ +vertex -1 -0.5 -0.5 \ +vertex -1 0.5 -0.5 \ +face 1 2 4 3 \ +face 3 4 6 5 \ +face 5 6 8 7 \ +face 7 8 2 1 \ +face 2 8 6 4 \ +face 7 1 3 5"; + +char door_model[] = " \ + \ +newgroup \ +color 0 0 0 \ +vertex -0.935384 0.827798 -0.240658 \ +vertex -0.935384 0.544243 -0.432744 \ +vertex 1.064616 0.544243 -0.432744 \ +vertex -0.935384 0.10519 -0.350422 \ +vertex -0.935384 -0.041161 -0.158336 \ +vertex 1.064616 -0.041161 -0.158336 \ +vertex -0.935384 -0.086896 -0.167483 \ +vertex 1.064616 -0.086896 -0.167483 \ +vertex 1.064616 -0.88268 -0.377863 \ +vertex -0.935384 -0.919268 -0.377862 \ +vertex 1.064616 -0.919268 0.555126 \ +vertex 1.064616 -0.919268 0.619154 \ +vertex -0.935384 -0.836945 0.610007 \ +vertex 1.064616 -0.836945 0.610007 \ +vertex -0.935384 -0.059455 0.289864 \ +vertex 1.064616 -0.059455 0.289864 \ +vertex -0.935384 -0.022867 0.326452 \ +vertex 1.064616 -0.022867 0.326452 \ +vertex -0.935384 0.068602 0.445362 \ +vertex 1.064616 0.068602 0.445362 \ +vertex -0.935384 0.324716 0.57342 \ +vertex 1.064616 0.324716 0.57342 \ +vertex -0.935384 0.416186 0.57342 \ +vertex 1.064616 -0.919268 -0.377863 \ +vertex 1.064616 0.10519 -0.350422 \ +vertex 1.064616 0.416186 0.57342 \ +vertex 1.064616 0.827798 -0.240658 \ +vertex 1.064616 0.919268 0.15266 \ +vertex -0.935384 0.919268 0.15266 \ +vertex -0.935384 -0.88268 -0.377862 \ +vertex -0.935384 -0.919268 0.555126 \ +vertex -0.935384 -0.919268 0.619154 \ +face 1 29 28 27 \ +face 2 1 27 3 \ +face 4 2 3 25 \ +face 5 4 25 6 \ +face 7 5 6 8 \ +face 30 7 8 9 \ +face 10 30 9 24 \ +face 31 10 24 11 \ +face 32 31 11 12 \ +face 13 32 12 14 \ +face 15 13 14 16 \ +face 17 15 16 18 \ +face 19 17 18 20 \ +face 21 19 20 22 \ +face 23 21 22 26 \ +face 29 23 26 28 \ +face 9 11 24 \ +face 12 11 9 \ +face 14 12 9 \ +face 8 14 9 \ +face 8 6 14 \ +face 6 16 14 \ +face 25 16 6 \ +face 18 16 25 \ +face 20 18 25 \ +face 3 20 25 \ +face 3 22 20 \ +face 26 22 3 \ +face 27 26 3 \ +face 27 28 26 \ +face 2 29 1 \ +face 2 4 29 \ +face 4 23 29 \ +face 21 23 4 \ +face 5 21 4 \ +face 5 7 21 \ +face 7 19 21 \ +face 17 19 7 \ +face 15 17 7 \ +face 30 15 7 \ +face 30 10 15 \ +face 10 13 15 \ +face 31 13 10 \ +face 31 32 13 \ + \ +newgroup \ +color 0 0 0 \ +vertex -1.130435 0.544243 0.523625 \ +vertex 0.869565 0.10519 0.441302 \ +vertex -1.130435 -0.041161 0.249216 \ +vertex -1.130435 -0.086896 0.258363 \ +vertex 0.869565 -0.919268 0.468742 \ +vertex 0.869565 -0.919268 -0.528274 \ +vertex -1.130435 -0.919268 -0.528274 \ +vertex -1.130435 -0.836945 -0.519127 \ +vertex -1.130435 -0.022867 -0.235572 \ +vertex -1.130435 0.068602 -0.354482 \ +vertex 0.869565 0.324716 -0.48254 \ +vertex -1.130435 0.324716 -0.482539 \ +vertex 0.869565 0.416186 -0.48254 \ +vertex -1.130435 -0.919268 0.468743 \ +vertex -1.130435 -0.919268 -0.464245 \ +vertex -1.130435 -0.88268 0.468743 \ +vertex -1.130435 -0.059455 -0.198984 \ +vertex -1.130435 0.10519 0.441302 \ +vertex -1.130435 0.416186 -0.482539 \ +vertex -1.130435 0.827798 0.331539 \ +vertex -1.130435 0.919268 -0.06178 \ +vertex 0.869565 0.827798 0.331538 \ +vertex 0.869565 0.919268 -0.06178 \ +vertex 0.869565 0.544243 0.523624 \ +vertex 0.869565 -0.041161 0.249216 \ +vertex 0.869565 -0.086896 0.258363 \ +vertex 0.869565 0.068602 -0.354482 \ +vertex 0.869565 -0.022867 -0.235572 \ +vertex 0.869565 -0.059455 -0.198984 \ +vertex 0.869565 -0.88268 0.468742 \ +vertex 0.869565 -0.836945 -0.519127 \ +vertex 0.869565 -0.919268 -0.464246 \ +face 54 55 53 52 \ +face 56 54 52 33 \ +face 34 56 33 50 \ +face 57 34 50 35 \ +face 58 57 35 36 \ +face 62 58 36 48 \ +face 37 62 48 46 \ +face 64 37 46 47 \ +face 38 64 47 39 \ +face 63 38 39 40 \ +face 61 63 40 49 \ +face 60 61 49 41 \ +face 59 60 41 42 \ +face 43 59 42 44 \ +face 45 43 44 51 \ +face 55 45 51 53 \ +face 48 47 46 \ +face 39 47 48 \ +face 40 39 48 \ +face 36 40 48 \ +face 36 35 40 \ +face 35 49 40 \ +face 50 49 35 \ +face 41 49 50 \ +face 42 41 50 \ +face 33 42 50 \ +face 33 44 42 \ +face 51 44 33 \ +face 52 51 33 \ +face 52 53 51 \ +face 56 55 54 \ +face 56 34 55 \ +face 34 45 55 \ +face 43 45 34 \ +face 57 43 34 \ +face 57 58 43 \ +face 58 59 43 \ +face 60 59 58 \ +face 61 60 58 \ +face 62 61 58 \ +face 62 37 61 \ +face 37 63 61 \ +face 64 63 37 \ +face 64 38 63 \ + \ +newgroup \ +color 0 0 0 \ +vertex 0.169041 0.919268 -1.119686 \ +vertex -0.224277 0.827798 0.880314 \ +vertex -0.224278 0.827798 -1.119686 \ +vertex -0.416363 0.544243 0.880314 \ +vertex -0.416364 0.544243 -1.119686 \ +vertex -0.141956 -0.041161 -1.119686 \ +vertex -0.151102 -0.086896 0.880314 \ +vertex -0.151102 -0.086896 -1.119686 \ +vertex -0.361482 -0.88268 0.880314 \ +vertex -0.361482 -0.919268 -1.119686 \ +vertex 0.571506 -0.919268 -1.119686 \ +vertex 0.635535 -0.919268 0.880314 \ +vertex 0.635535 -0.919268 -1.119686 \ +vertex 0.626388 -0.836945 -1.119686 \ +vertex 0.306245 -0.059455 0.880314 \ +vertex 0.306245 -0.059455 -1.119686 \ +vertex 0.342832 -0.022867 -1.119686 \ +vertex 0.461743 0.068602 0.880314 \ +vertex 0.461743 0.068602 -1.119686 \ +vertex 0.589801 0.324716 0.880314 \ +vertex 0.5898 0.324716 -1.119686 \ +vertex 0.589801 0.416186 0.880314 \ +vertex -0.361482 -0.88268 -1.119686 \ +vertex -0.334041 0.10519 -1.119686 \ +vertex 0.5898 0.416186 -1.119686 \ +vertex 0.169041 0.919268 0.880314 \ +vertex -0.334041 0.10519 0.880314 \ +vertex -0.141955 -0.041161 0.880314 \ +vertex 0.342833 -0.022867 0.880314 \ +vertex -0.361482 -0.919268 0.880314 \ +vertex 0.626388 -0.836945 0.880314 \ +vertex 0.571507 -0.919268 0.880314 \ +face 66 90 65 67 \ +face 68 66 67 69 \ +face 91 68 69 88 \ +face 92 91 88 70 \ +face 71 92 70 72 \ +face 73 71 72 87 \ +face 94 73 87 74 \ +face 96 94 74 75 \ +face 76 96 75 77 \ +face 95 76 77 78 \ +face 79 95 78 80 \ +face 93 79 80 81 \ +face 82 93 81 83 \ +face 84 82 83 85 \ +face 86 84 85 89 \ +face 90 86 89 65 \ +face 87 75 74 \ +face 77 75 87 \ +face 78 77 87 \ +face 72 78 87 \ +face 72 70 78 \ +face 70 80 78 \ +face 88 80 70 \ +face 81 80 88 \ +face 83 81 88 \ +face 69 83 88 \ +face 69 85 83 \ +face 89 85 69 \ +face 67 89 69 \ +face 67 65 89 \ +face 68 90 66 \ +face 68 91 90 \ +face 91 86 90 \ +face 84 86 91 \ +face 92 84 91 \ +face 92 71 84 \ +face 71 82 84 \ +face 93 82 71 \ +face 79 93 71 \ +face 73 79 71 \ +face 73 94 79 \ +face 94 95 79 \ +face 96 95 94 \ +face 96 76 95 \ + \ +newgroup \ +color 0 0 0 \ +vertex -0.097419 0.919268 -0.950385 \ +vertex 0.2959 0.827798 -0.950385 \ +vertex 0.487986 0.544243 -0.950385 \ +vertex 0.487985 0.544243 1.049614 \ +vertex 0.405663 0.10519 -0.950385 \ +vertex 0.213577 -0.041161 -0.950385 \ +vertex 0.222724 -0.086896 -0.950385 \ +vertex 0.222724 -0.086896 1.049614 \ +vertex 0.433104 -0.88268 -0.950385 \ +vertex 0.433104 -0.88268 1.049614 \ +vertex 0.433104 -0.919268 -0.950385 \ +vertex -0.499884 -0.919268 -0.950385 \ +vertex -0.499884 -0.919268 1.049614 \ +vertex -0.563913 -0.919268 -0.950385 \ +vertex -0.563913 -0.919268 1.049614 \ +vertex -0.554766 -0.836945 -0.950385 \ +vertex -0.234623 -0.059455 -0.950385 \ +vertex -0.271211 -0.022867 -0.950385 \ +vertex -0.271211 -0.022867 1.049614 \ +vertex -0.390121 0.068602 -0.950385 \ +vertex -0.390121 0.068602 1.049614 \ +vertex -0.518178 0.324717 -0.950385 \ +vertex -0.518178 0.416186 -0.950385 \ +vertex 0.433104 -0.919268 1.049614 \ +vertex -0.554766 -0.836945 1.049614 \ +vertex 0.213577 -0.041161 1.049614 \ +vertex -0.234623 -0.059455 1.049614 \ +vertex 0.405663 0.10519 1.049614 \ +vertex -0.518178 0.324716 1.049614 \ +vertex -0.518178 0.416186 1.049614 \ +vertex 0.2959 0.827798 1.049614 \ +vertex -0.097419 0.919268 1.049614 \ +face 98 97 128 127 \ +face 99 98 127 100 \ +face 101 99 100 124 \ +face 102 101 124 122 \ +face 103 102 122 104 \ +face 105 103 104 106 \ +face 107 105 106 120 \ +face 108 107 120 109 \ +face 110 108 109 111 \ +face 112 110 111 121 \ +face 113 112 121 123 \ +face 114 113 123 115 \ +face 116 114 115 117 \ +face 118 116 117 125 \ +face 119 118 125 126 \ +face 97 119 126 128 \ +face 106 109 120 \ +face 111 109 106 \ +face 121 111 106 \ +face 104 121 106 \ +face 104 122 121 \ +face 122 123 121 \ +face 124 123 122 \ +face 115 123 124 \ +face 117 115 124 \ +face 100 117 124 \ +face 100 125 117 \ +face 126 125 100 \ +face 127 126 100 \ +face 127 128 126 \ + \ +newgroup \ +color 0 0 0 \ +vertex 0.2959 0.827798 -0.950385 \ +vertex -0.097419 0.919268 -0.950385 \ +vertex 0.487985 0.544243 -0.950385 \ +vertex 0.405663 0.10519 -0.950385 \ +vertex -0.518178 0.416186 -0.950385 \ +vertex -0.518178 0.324716 -0.950385 \ +vertex 0.213577 -0.041161 -0.950385 \ +vertex 0.222724 -0.086896 -0.950385 \ +vertex -0.390121 0.068602 -0.950385 \ +vertex -0.271211 -0.022867 -0.950385 \ +vertex -0.234623 -0.059455 -0.950385 \ +vertex 0.433104 -0.88268 -0.950385 \ +vertex 0.433104 -0.919268 -0.950385 \ +vertex -0.554766 -0.836945 -0.950385 \ +vertex -0.499884 -0.919268 -0.950385 \ +vertex -0.563913 -0.919268 -0.950385 \ +face 131 130 129 \ +face 131 132 130 \ +face 132 133 130 \ +face 134 133 132 \ +face 135 134 132 \ +face 135 136 134 \ +face 136 137 134 \ +face 138 137 136 \ +face 139 138 136 \ +face 140 139 136 \ +face 140 141 139 \ +face 141 142 139 \ +face 143 142 141 \ +face 143 144 142 \ + \ +newgroup \ +vertex -1.005803 -1 0.979191 \ +vertex -1.005803 1 0.979191 \ +vertex 0.994197 1 0.979191 \ +vertex 0.994197 -1 0.979191 \ +vertex 0.994197 1 -1.020809 \ +vertex 0.994197 -1 -1.020809 \ +vertex -1.005803 1 -1.020809 \ +vertex -1.005803 -1 -1.020809 \ +face 147 146 145 148 \ +face 149 147 148 150 \ +face 151 149 150 152 \ +face 146 151 152 145 \ +face 149 151 146 147 \ +face 148 145 152 150"; + +char key_model[] = " \ + \ +newgroup \ +color 255 0 0 \ +vertex 1.751821 0.619155 0.106049 \ +vertex 0.91738 0.619158 0.587813 \ +vertex 1.751817 -0.521248 0.106049 \ +vertex 0.917377 -0.521245 0.587813 \ +vertex 1.751814 -1.661651 0.106049 \ +vertex 0.917373 -1.661648 0.587813 \ +vertex 1.75181 -2.802054 0.106049 \ +vertex 0.917369 -2.802051 0.587813 \ +vertex 1.102801 -2.802052 0.266637 \ +vertex 1.380948 -2.802052 0.106049 \ +vertex 0.917377 -0.521245 -0.375716 \ +vertex 0.91738 0.619158 -0.375716 \ +vertex 0.917373 -1.661648 -0.375716 \ +vertex 0.917369 -2.802051 -0.375716 \ +vertex 1.102801 -2.802052 -0.054539 \ +vertex 2.961392 0.619151 0.266637 \ +vertex 3.610399 -0.521254 0.106049 \ +vertex 2.775958 -0.521251 0.587813 \ +vertex 2.775961 0.619152 0.587813 \ +vertex 3.610395 -1.661657 0.106049 \ +vertex 2.775954 -1.661654 0.587813 \ +vertex 3.610391 -2.80206 0.106049 \ +vertex 2.77595 -2.802057 0.587813 \ +vertex 2.961381 -2.802058 -0.05454 \ +vertex 2.961392 0.619151 -0.05454 \ +vertex 2.775961 0.619152 -0.375716 \ +vertex 2.775958 -0.521251 -0.375716 \ +vertex 2.775954 -1.661654 -0.375716 \ +vertex 2.77595 -2.802057 -0.375716 \ +vertex -1.627242 0.348612 -0.079383 \ +vertex -1.627242 0.830377 0.384196 \ +vertex -1.627242 0.348612 -0.450245 \ +vertex 0.121182 0.348612 -0.450245 \ +vertex 0.121182 0.830377 0.384196 \ +vertex 1.869606 0.348612 -0.450245 \ +vertex 1.869606 0.830377 0.384196 \ +vertex 3.61803 0.348612 -0.264814 \ +vertex 3.61803 0.830377 0.384196 \ +vertex 3.61803 0.5092 0.198764 \ +vertex 0.121182 -0.133153 0.384196 \ +vertex -1.627242 -0.133153 0.384196 \ +vertex 1.869606 -0.133153 0.384196 \ +vertex 3.61803 0.188024 0.198764 \ +vertex 3.61803 -0.133153 0.384195 \ +vertex -0.656828 0.405316 0.082761 \ +vertex -0.786267 0.406413 0.459654 \ +vertex -1.266994 2.261401 0.482646 \ +vertex -1.156646 2.333972 0.106666 \ +vertex -1.112064 0.422068 0.688597 \ +vertex -1.542809 2.08419 0.709199 \ +vertex -1.509777 0.4463 0.682142 \ +vertex -1.878741 1.870027 0.699789 \ +vertex -1.827491 0.469854 0.442754 \ +vertex -2.146474 1.700716 0.45801 \ +vertex -1.943852 0.483734 0.061871 \ +vertex -2.243743 1.640927 0.076215 \ +vertex -1.814413 0.482636 -0.315022 \ +vertex -2.133396 1.713498 -0.299765 \ +vertex -1.488616 0.466982 -0.543965 \ +vertex -1.85758 1.890709 -0.526318 \ +vertex -1.090904 0.442749 -0.53751 \ +vertex -1.521649 2.104871 -0.516908 \ +vertex -0.773189 0.419195 -0.298122 \ +vertex -1.253916 2.274183 -0.275129 \ +vertex -2.746155 3.479868 0.477671 \ +vertex -2.69455 3.600829 0.101494 \ +vertex -2.86818 3.175972 0.704741 \ +vertex -3.014016 2.805217 0.69597 \ +vertex -3.127959 2.50922 0.454709 \ +vertex -3.166485 2.401041 0.073111 \ +vertex -3.11488 2.522002 -0.303066 \ +vertex -2.992855 2.825898 -0.530136 \ +vertex -2.847019 3.196653 -0.521366 \ +vertex -2.733077 3.49265 -0.280104 \ +vertex -4.65876 3.596402 0.446628 \ +vertex -4.683112 3.72199 0.069218 \ +vertex -4.581929 3.280389 0.676926 \ +vertex -4.481966 2.894658 0.672144 \ +vertex -4.397052 2.586545 0.434111 \ +vertex -4.359622 2.473738 0.053746 \ +vertex -4.383974 2.599327 -0.323665 \ +vertex -4.460804 2.91534 -0.553962 \ +vertex -4.560768 3.301071 -0.549181 \ +vertex -4.645682 3.609184 -0.311147 \ +vertex -6.27426 2.566491 0.401375 \ +vertex -6.362769 2.651178 0.022168 \ +vertex -6.029463 2.357559 0.636377 \ +vertex -5.721882 2.104188 0.637412 \ +vertex -5.469003 1.903156 0.404083 \ +vertex -5.367416 1.831251 0.025515 \ +vertex -5.455925 1.915938 -0.353692 \ +vertex -5.700721 2.124869 -0.588695 \ +vertex -6.008302 2.378241 -0.589729 \ +vertex -6.261182 2.579273 -0.356401 \ +vertex -6.975587 0.783525 0.359197 \ +vertex -7.091948 0.797404 -0.021686 \ +vertex -6.657873 0.759971 0.598584 \ +vertex -6.26016 0.735739 0.60504 \ +vertex -5.934363 0.720084 0.376096 \ +vertex -5.804924 0.718987 -0.000797 \ +vertex -5.921285 0.732866 -0.381679 \ +vertex -6.238999 0.75642 -0.621067 \ +vertex -6.636712 0.780653 -0.627522 \ +vertex -6.96251 0.796307 -0.398579 \ +vertex -6.49486 -1.071463 0.336204 \ +vertex -6.59213 -1.131251 -0.045592 \ +vertex -6.227128 -0.902151 0.577982 \ +vertex -5.891196 -0.687989 0.587392 \ +vertex -5.61538 -0.510778 0.36084 \ +vertex -5.505033 -0.438207 -0.01514 \ +vertex -5.602303 -0.497996 -0.396936 \ +vertex -5.870035 -0.667307 -0.638714 \ +vertex -6.205967 -0.881469 -0.648124 \ +vertex -6.481782 -1.058681 -0.421572 \ +vertex -5.015699 -2.28993 0.341179 \ +vertex -5.054225 -2.398108 -0.040419 \ +vertex -4.901756 -1.993933 0.58244 \ +vertex -4.755921 -1.623178 0.591211 \ +vertex -4.633895 -1.319281 0.364141 \ +vertex -4.58229 -1.198321 -0.012036 \ +vertex -4.620817 -1.306499 -0.393635 \ +vertex -4.73476 -1.602497 -0.634896 \ +vertex -4.880595 -1.973251 -0.643666 \ +vertex -5.002621 -2.277148 -0.416596 \ +vertex -3.103094 -2.406464 0.372222 \ +vertex -3.065665 -2.51927 -0.008143 \ +vertex -3.188008 -2.09835 0.610256 \ +vertex -3.287971 -1.712619 0.615037 \ +vertex -3.364803 -1.396606 0.384739 \ +vertex -3.389154 -1.271018 0.007329 \ +vertex -3.351725 -1.383824 -0.373036 \ +vertex -3.266811 -1.691938 -0.61107 \ +vertex -3.166847 -2.077669 -0.615851 \ +vertex -3.090016 -2.393682 -0.385554 \ +vertex -1.487595 -1.376553 0.417475 \ +vertex -1.386009 -1.448457 0.038907 \ +vertex -1.740474 -1.175521 0.650804 \ +vertex -2.048055 -0.922149 0.649769 \ +vertex -2.292852 -0.713217 0.414767 \ +vertex -2.381361 -0.62853 0.035559 \ +vertex -2.279774 -0.700436 -0.343009 \ +vertex -2.026895 -0.901468 -0.576337 \ +vertex -1.719314 -1.154839 -0.575303 \ +vertex -1.474517 -1.363771 -0.3403 \ +face 2 1 12 \ +face 4 3 1 2 \ +face 6 5 3 4 \ +face 8 7 5 6 \ +face 9 10 7 8 \ +face 9 15 10 \ +face 11 4 2 12 \ +face 13 6 4 11 \ +face 14 8 6 13 \ +face 15 9 8 14 \ +face 3 11 12 1 \ +face 5 13 11 3 \ +face 7 14 13 5 \ +face 10 15 14 7 \ +face 19 39 16 \ +face 18 17 39 19 \ +face 21 20 17 18 \ +face 23 22 20 21 \ +face 23 24 22 \ +face 26 19 16 25 \ +face 27 18 19 26 \ +face 28 21 18 27 \ +face 29 23 21 28 \ +face 24 23 29 \ +face 39 25 16 \ +face 39 26 25 \ +face 17 27 26 39 \ +face 20 28 27 17 \ +face 22 29 28 20 \ +face 24 29 22 \ +face 31 32 30 \ +face 34 33 32 31 \ +face 36 35 33 34 \ +face 38 37 35 36 \ +face 39 37 38 \ +face 39 43 37 \ +face 41 31 30 \ +face 40 34 31 41 \ +face 42 36 34 40 \ +face 44 38 36 42 \ +face 43 39 38 44 \ +face 32 41 30 \ +face 33 40 41 32 \ +face 35 42 40 33 \ +face 37 44 42 35 \ +face 37 43 44 \ +face 47 46 45 48 \ +face 50 49 46 47 \ +face 52 51 49 50 \ +face 54 53 51 52 \ +face 56 55 53 54 \ +face 58 57 55 56 \ +face 60 59 57 58 \ +face 62 61 59 60 \ +face 64 63 61 62 \ +face 48 45 63 64 \ +face 65 47 48 66 \ +face 67 50 47 65 \ +face 68 52 50 67 \ +face 69 54 52 68 \ +face 70 56 54 69 \ +face 71 58 56 70 \ +face 72 60 58 71 \ +face 73 62 60 72 \ +face 74 64 62 73 \ +face 66 48 64 74 \ +face 75 65 66 76 \ +face 77 67 65 75 \ +face 78 68 67 77 \ +face 79 69 68 78 \ +face 80 70 69 79 \ +face 81 71 70 80 \ +face 82 72 71 81 \ +face 83 73 72 82 \ +face 84 74 73 83 \ +face 76 66 74 84 \ +face 85 75 76 86 \ +face 87 77 75 85 \ +face 88 78 77 87 \ +face 89 79 78 88 \ +face 90 80 79 89 \ +face 91 81 80 90 \ +face 92 82 81 91 \ +face 93 83 82 92 \ +face 94 84 83 93 \ +face 86 76 84 94 \ +face 95 85 86 96 \ +face 97 87 85 95 \ +face 98 88 87 97 \ +face 99 89 88 98 \ +face 100 90 89 99 \ +face 101 91 90 100 \ +face 102 92 91 101 \ +face 103 93 92 102 \ +face 104 94 93 103 \ +face 96 86 94 104 \ +face 105 95 96 106 \ +face 107 97 95 105 \ +face 108 98 97 107 \ +face 109 99 98 108 \ +face 110 100 99 109 \ +face 111 101 100 110 \ +face 112 102 101 111 \ +face 113 103 102 112 \ +face 114 104 103 113 \ +face 106 96 104 114 \ +face 115 105 106 116 \ +face 117 107 105 115 \ +face 118 108 107 117 \ +face 119 109 108 118 \ +face 120 110 109 119 \ +face 121 111 110 120 \ +face 122 112 111 121 \ +face 123 113 112 122 \ +face 124 114 113 123 \ +face 116 106 114 124 \ +face 125 115 116 126 \ +face 127 117 115 125 \ +face 128 118 117 127 \ +face 129 119 118 128 \ +face 130 120 119 129 \ +face 131 121 120 130 \ +face 132 122 121 131 \ +face 133 123 122 132 \ +face 134 124 123 133 \ +face 126 116 124 134 \ +face 135 125 126 136 \ +face 137 127 125 135 \ +face 138 128 127 137 \ +face 139 129 128 138 \ +face 140 130 129 139 \ +face 141 131 130 140 \ +face 142 132 131 141 \ +face 143 133 132 142 \ +face 144 134 133 143 \ +face 136 126 134 144 \ +face 46 135 136 45 \ +face 49 137 135 46 \ +face 51 138 137 49 \ +face 53 139 138 51 \ +face 55 140 139 53 \ +face 57 141 140 55 \ +face 59 142 141 57 \ +face 61 143 142 59 \ +face 63 144 143 61 \ +face 45 136 144 63 "; + +char maze_model[] = " \ + \ +newgroup wall4 \ +color 10 10 200 \ +vertex -95.706001 -29.155506 84.58101 \ +vertex -95.706001 12.974489 84.580994 \ +vertex -75.420631 -29.155504 84.894142 \ +vertex -75.420631 12.97449 84.894135 \ +vertex -74.588905 -29.155512 31.014849 \ +vertex -74.588905 12.974483 31.014843 \ +vertex -94.874275 -29.155514 30.701708 \ +vertex -94.874275 12.974483 30.701702 \ +face 1 2 4 3 \ +face 3 4 6 5 \ +face 5 6 8 7 \ +face 7 8 2 1 \ +face 2 8 6 4 \ +face 7 1 3 5 \ + \ +newgroup plat \ +color 200 200 200 \ +vertex -57.566299 -12.688504 -67.416382 \ +vertex -57.566299 -7.889102 -67.416382 \ +vertex -57.566303 -12.688504 -17.416382 \ +vertex -57.566303 -7.889102 -17.416382 \ +vertex -27.566305 -12.688504 -17.416382 \ +vertex -27.566305 -7.889102 -17.416382 \ +vertex -27.566303 -12.688504 -67.416382 \ +vertex -27.566303 -7.889102 -67.416382 \ +face 9 10 12 11 \ +face 11 12 14 13 \ +face 13 14 16 15 \ +face 15 16 10 9 \ +face 10 16 14 12 \ +face 15 9 11 13 \ + \ +newgroup wall \ +color 10 10 200 \ +vertex -95.818581 -29.013639 1.76699 \ +vertex -95.818581 13.116357 1.766985 \ +vertex -75.533211 -29.013638 2.080131 \ +vertex -75.533211 13.116358 2.080126 \ +vertex -73.546425 -29.013655 -126.624077 \ +vertex -73.546425 13.116341 -126.624084 \ +vertex -93.831795 -29.013655 -126.937218 \ +vertex -93.831795 13.11634 -126.937225 \ +face 17 18 20 19 \ +face 19 20 22 21 \ +face 21 22 24 23 \ +face 23 24 18 17 \ +face 18 24 22 20 \ +face 23 17 19 21 \ + \ +newgroup wall5 \ +color 10 10 200 \ +vertex 33.718502 -26.707205 87.356003 \ +vertex 33.718502 15.422791 87.355995 \ +vertex 54.003872 -26.707203 87.669144 \ +vertex 54.003872 15.422792 87.669136 \ +vertex 56.417568 -26.707224 -68.690681 \ +vertex 56.417568 15.422771 -68.690681 \ +vertex 36.132198 -26.707224 -69.003822 \ +vertex 36.132198 15.422771 -69.003822 \ +face 25 26 28 27 \ +face 27 28 30 29 \ +face 29 30 32 31 \ +face 31 32 26 25 \ +face 26 32 30 28 \ +face 31 25 27 29 \ + \ +newgroup wall6 \ +color 10 10 200 \ +vertex 36.13987 -28.561388 -72.870064 \ +vertex 36.13987 13.568606 -72.870064 \ +vertex 36.13987 -28.561388 -52.582279 \ +vertex 36.13987 13.568606 -52.582279 \ +vertex 95.404305 -28.561388 -52.582275 \ +vertex 95.404305 13.568606 -52.582275 \ +vertex 95.404305 -28.561388 -72.870064 \ +vertex 95.404305 13.568606 -72.870064 \ +face 33 34 36 35 \ +face 35 36 38 37 \ +face 37 38 40 39 \ +face 39 40 34 33 \ +face 34 40 38 36 \ +face 39 33 35 37 \ + \ +newgroup wall1 \ +color 10 10 200 \ +vertex 95.583755 -36.010872 -129.30249 \ +vertex 95.583755 11.681953 -129.30249 \ +vertex 72.908615 -36.010872 -129.500351 \ +vertex 72.908615 11.681953 -129.500351 \ +vertex 72.25705 -36.010872 -54.833057 \ +vertex 72.25705 11.681953 -54.833057 \ +vertex 94.93219 -36.010872 -54.635189 \ +vertex 94.93219 11.681953 -54.635189 \ +face 41 42 44 43 \ +face 43 44 46 45 \ +face 45 46 48 47 \ +face 47 48 42 41 \ +face 42 48 46 44 \ +face 47 41 43 45 \ + \ +newgroup wall2 \ +color 10 10 200 \ +vertex 13.91043 -36.010872 -137.125778 \ +vertex 13.91043 11.681953 -137.125778 \ +vertex 13.910429 -36.010872 -114.449776 \ +vertex 13.910429 11.681953 -114.449776 \ +vertex 93.885513 -36.010872 -114.449768 \ +vertex 93.885513 11.681953 -114.449768 \ +vertex 93.885513 -36.010872 -137.125778 \ +vertex 93.885513 11.681953 -137.125778 \ +face 49 50 52 51 \ +face 51 52 54 53 \ +face 53 54 56 55 \ +face 55 56 50 49 \ +face 50 56 54 52 \ +face 55 49 51 53 \ + \ +newgroup wall3 \ +color 10 10 200 \ +vertex -164.513763 -34.806515 -137.532684 \ +vertex -164.513763 12.88631 -137.532684 \ +vertex -164.513763 -34.806515 -114.856682 \ +vertex -164.513763 12.88631 -114.856682 \ +vertex -20.693186 -34.806515 -114.856674 \ +vertex -20.693186 12.88631 -114.856674 \ +vertex -20.693184 -34.806515 -137.532684 \ +vertex -20.693184 12.88631 -137.532684 \ +face 57 58 60 59 \ +face 59 60 62 61 \ +face 61 62 64 63 \ +face 63 64 58 57 \ +face 58 64 62 60 \ +face 63 57 59 61 \ + \ +newgroup floor \ +color 100 200 100 \ +vertex -150.876083 -56.655327 -230.704742 \ +vertex -150.876083 -12.28933 -230.704742 \ +vertex -150.876099 -56.655327 76.426544 \ +vertex -150.876099 -12.28933 76.426544 \ +vertex 123.098297 -56.655327 76.426559 \ +vertex 123.098297 -12.28933 76.426559 \ +vertex 123.098312 -56.655327 -230.704727 \ +vertex 123.098312 -12.28933 -230.704727 \ +face 65 66 68 67 \ +face 67 68 70 69 \ +face 69 70 72 71 \ +face 71 72 66 65 \ +face 66 72 70 68 \ +face 71 65 67 69 "; + char turtle_model[] = " \ \ newgroup \ diff --git a/model-draw.c b/model-draw.c index 4cb9195..2b04bb5 100644 --- a/model-draw.c +++ b/model-draw.c @@ -52,8 +52,10 @@ int drawModelWithGL_big(model* model) model -> vertices[currentFace -> vertnum[vertex_id]-1].x / model->x_scale * RES, model -> vertices[currentFace -> vertnum[vertex_id]-1].y / model->y_scale * RES, model -> vertices[currentFace -> vertnum[vertex_id]-1].z / model->z_scale * RES); - - vc++; + +#ifdef PC_TARGET + vc++; /* for vertex count checking */ +#endif vertex_id++; } @@ -64,7 +66,12 @@ int drawModelWithGL_big(model* model) currentGroup = currentGroup -> next; } +#ifdef PC_TARGET return vc; +#else + return 0; +#endif + } int drawModelWithGL(model* model) @@ -97,7 +104,9 @@ int drawModelWithGL(model* model) model -> vertices[currentFace -> vertnum[vertex_id]-1].y, model -> vertices[currentFace -> vertnum[vertex_id]-1].z); - vc++; +#ifdef PC_TARGET + vc++; /* for vertex count checking */ +#endif vertex_id++; } @@ -108,6 +117,11 @@ int drawModelWithGL(model* model) currentGroup = currentGroup -> next; } +#ifdef PC_TARGET return vc; +#else + return 0; +#endif + } diff --git a/oop.c b/oop.c new file mode 100644 index 0000000..a7c312d --- /dev/null +++ b/oop.c @@ -0,0 +1,97 @@ +/* + * Pseudo-OOP + */ + +#include "headers.h" + +void initFunction(void *va) +{ + game_obj* a = va; + + switch(a->type) { + case PLAYER: + playerInit(a); + break; + case KEY: + keyInit(a); + break; + case DOOR: + doorInit(a); + break; + case TARGET: + targetInit(a); + break; + } +} + +void tickFunction(void *va) +{ + game_obj* a = (game_obj *)va; + + if(a==NULL) return; + + switch(a->type) { + case PLAYER: + playerTick(a); + break; + case KEY: + keyTick(a); + break; + case DOOR: + doorTick(a); + break; + case BULLET: + bulletTick(a); + break; + case TARGET: + targetTick(a); + break; + } + +} + +void drawFunction(void* va) +{ + game_obj* a = va; + + if(a==NULL) return; + + switch(a->type) { + case KEY: + keyDraw(a); + break; + case PLAYER: + playerDraw(a); + break; + case DOOR: + doorDraw(a); + break; + case BULLET: + bulletDraw(a); + break; + case TARGET: + targetDraw(a); + break; + } +} + +void collisionFunction(void* va, void* vb) +{ + game_obj* a = va; + game_obj* b = vb; + + if(a == NULL || b==NULL) return; + + switch(a->type) { + case PLAYER: + playerCollide(a, b); + break; + case BULLET: + bulletCollide(a, b); + break; + case TARGET: + targetCollide(a, b); + break; + } +} + diff --git a/player.c b/player.c index 2e1b596..c3c2cf8 100644 --- a/player.c +++ b/player.c @@ -33,9 +33,9 @@ void playerTick(game_obj* player) /* platform independent controller bits */ int up, down, left, right, shoot, jump; - player->data[PLAYER_MOVEX] = 0.0; - player->data[PLAYER_MOVEY] = 0.0; - player->data[PLAYER_MOVEZ] = 0.0; + player->data[PLAYER_MOVEX] = 0.0; + player->data[PLAYER_MOVEY] = 0.0; + player->data[PLAYER_MOVEZ] = 0.0; if(player->data[PLAYER_YVEL] < -MAX_YVEL) player->data[PLAYER_YVEL] = -MAX_YVEL; @@ -59,15 +59,15 @@ void playerTick(game_obj* player) /* Convert the player angle to a unit vector, converting the said angle to radians along the way */ - #ifdef PC_TARGET +#ifdef PC_TARGET player->data[PLAYER_DIRX] = (float)sin(player->data[PLAYER_ANGLE] / 360.0 * (2*3.14)); player->data[PLAYER_DIRZ] = (float)cos(player->data[PLAYER_ANGLE] / 360.0 * (2*3.14)); - #else +#else player->data[PLAYER_DIRX] = my_sin(player->data[PLAYER_ANGLE]); player->data[PLAYER_DIRZ] = my_cos(player->data[PLAYER_ANGLE]); - #endif +#endif /* Make sure everything is within expected range */ if(player->data[PLAYER_ANGLE] < 0) @@ -149,16 +149,16 @@ void playerTick(game_obj* player) player->data[PLAYER_Y] += player->data[PLAYER_MOVEY]; player->data[PLAYER_Z] += player->data[PLAYER_MOVEZ]; - /* Player collision box and movement vector */ - player->box.min.x = (float)(player->data[PLAYER_X] - 10); - player->box.min.y = (float)(player->data[PLAYER_Y] - 10); - player->box.min.z = (float)(player->data[PLAYER_Z] - 10); - player->box.max.x = (float)(player->data[PLAYER_X] + 10); - player->box.max.y = (float)(player->data[PLAYER_Y] + 10); - player->box.max.z = (float)(player->data[PLAYER_Z] + 10); - player->box.move.x = (float)player->data[PLAYER_MOVEX]; - player->box.move.y = (float)player->data[PLAYER_MOVEY]; - player->box.move.z = (float)player->data[PLAYER_MOVEZ]; + /* Player collision box and movement vector */ + player->box.min.x = (float)(player->data[PLAYER_X] - 10); + player->box.min.y = (float)(player->data[PLAYER_Y] - 10); + player->box.min.z = (float)(player->data[PLAYER_Z] - 10); + player->box.max.x = (float)(player->data[PLAYER_X] + 10); + player->box.max.y = (float)(player->data[PLAYER_Y] + 10); + player->box.max.z = (float)(player->data[PLAYER_Z] + 10); + player->box.move.x = (float)player->data[PLAYER_MOVEX]; + player->box.move.y = (float)player->data[PLAYER_MOVEY]; + player->box.move.z = (float)player->data[PLAYER_MOVEZ]; } diff --git a/string-read.c b/string-read.c index a7c6d55..f0a1bb5 100644 --- a/string-read.c +++ b/string-read.c @@ -1,4 +1,4 @@ -/* read tokens in text datafiles stored in ROM */ +/* read tokens from text data stored in ROM */ char str[1024]; int i; @@ -6,13 +6,11 @@ float f; void whitespace(char** data) { - /* while(**data && !(isalnum(**data) || **data=='.' || **data=='-')) ++*data; */ while(**data && **data==' ') ++*data; } void to_whitespace(char** data) { - /* while(**data && (isalnum(**data) || **data=='.' || **data=='-')) ++*data; */ while(**data && **data!=' ') ++*data; }