gba-x3dtest

diff src/game.c @ 8:fb0a0d6a8b52

sortof works
author John Tsiombikas <nuclear@member.fsf.org>
date Thu, 19 Jun 2014 05:53:46 +0300
parents 73b5f2e5d18a
children b0ed38f13261
line diff
     1.1 --- a/src/game.c	Wed Jun 18 06:20:07 2014 +0300
     1.2 +++ b/src/game.c	Thu Jun 19 05:53:46 2014 +0300
     1.3 @@ -1,29 +1,46 @@
     1.4  #include "config.h"
     1.5  #include "game.h"
     1.6  #include "gbasys.h"
     1.7 -#include "polyfill.h"
     1.8 +#include "x3d.h"
     1.9 +#include "sincos.h"
    1.10 +#include "fixed.h"
    1.11  
    1.12  #define X16INT(x)	((x) << 16)
    1.13  
    1.14 -static const pvec3 poly[] = {
    1.15 -	{X16INT(80), X16INT(10), 0},
    1.16 -	{X16INT(140), X16INT(100), 0},
    1.17 -	{X16INT(40), X16INT(80), 0}
    1.18 +static const int32_t poly[] = {
    1.19 +	X16INT(80), X16INT(10), 0,
    1.20 +	X16INT(140), X16INT(100), 0,
    1.21 +	X16INT(40), X16INT(80), 0
    1.22  };
    1.23 +static const short vcount = sizeof poly / sizeof *poly / 3;
    1.24 +
    1.25 +int game_init(void)
    1.26 +{
    1.27 +	sincos_init();
    1.28 +
    1.29 +	return 0;
    1.30 +}
    1.31  
    1.32  void game_draw(void)
    1.33  {
    1.34 -	int i;
    1.35 +	unsigned long msec = get_millisec();
    1.36 +
    1.37  	clear_buffer(back_buffer, 0);
    1.38  
    1.39 -	draw_poly(3, poly, 0xffff);
    1.40 +	x3d_load_identity();
    1.41 +	x3d_translate(-itox16(WIDTH / 2), -itox16(HEIGHT / 2), 0);
    1.42 +	x3d_rotate((msec / 64) << 16, 0, 0, 65536);
    1.43 +	x3d_translate(itox16(WIDTH / 2), itox16(HEIGHT / 2), 0);
    1.44  
    1.45 -	for(i=0; i<sizeof poly / sizeof *poly; i++) {
    1.46 -		int x = poly[i].x >> 16;
    1.47 -		int y = poly[i].y >> 16;
    1.48 +	x3d_vertex_array(vcount, poly);
    1.49  
    1.50 -		((uint16_t*)back_buffer->pixels)[y * WIDTH + x] = RGB(0, 255, 0);
    1.51 -	}
    1.52 +	x3d_color(65536, 65536, 65536);
    1.53 +	x3d_draw_arrays(X3D_TRIANGLES, vcount);
    1.54 +
    1.55 +	x3d_color(0, 65536, 0);
    1.56 +	x3d_draw_arrays(X3D_POINTS, vcount);
    1.57 +
    1.58 +	x3d_vertex_array(0, 0);
    1.59  
    1.60  	flip();
    1.61  }