-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathmain.c
125 lines (81 loc) · 2.6 KB
/
main.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
/**********************************************************
MEGA CAR WARS
MAIN.C (TEST)
**********************************************************/
// SGDK LIBS //////////////////////////////////////////////
#include <genesis.h>
// ASSETS /////////////////////////////////////////////////
#include "gfx.h"
#include "sprite.h"
// LIBS ///////////////////////////////////////////////////
#include "inc/car.h"
#include "inc/scenario.h"
#include "inc/scroll.h"
#include "inc/screen.h"
// FUNCTIONS //////////////////////////////////////////////
static void handleInput();
///////////////////////////////////////////////////////////
// MAIN
///////////////////////////////////////////////////////////
int main()
{
// Local data _________________________________________
// Camera variables
u16 mapx = 266;
u16 mapy = 12;
// Process ____________________________________________
// Init and load the sprite
SPR_init(80, 256, 256);
Screen_setLanguage(LANGUAGE_SPANISH);
Scenario_setCurrent(SCENARIO_FIRST);
Scenario_load(scenario.current);
Car_init(64, 64, CAR_DIR_LEFT);
VDP_setHilightShadow(TRUE);
Scenario_setRegion(SCENARIO_POS_X, SCENARIO_POS_Y, mapx, mapy,
SCREEN_WIDTH_TILES, SCREEEN_HEIGHT_TILES);
Scroll_cameraInit(SCENARIO_POS_X, SCENARIO_POS_Y, CAMERA_DEFAULT_SPEED);
//Screen_infoSplashOpen(2);
// MAIN LOOP
while(TRUE)
{
handleInput();
//Scroll_cameraUpdate();
Car_update();
SPR_update();
VDP_waitVSync();
}
return 0;
}
/*********************************************************/
static void handleInput()
{
u16 value = JOY_readJoypad(JOY_1);
if ((value & BUTTON_LEFT))
{
camera.posx += camera.speed;
car.angle += car.turnspeed;
// if (camera.posx < CAMERA_BOUNDARY_LEFT) camera.posx = CAMERA_BOUNDARY_LEFT;
}
else if ((value & BUTTON_RIGHT))
{
camera.posx -= camera.speed;
car.angle -= car.turnspeed;
// if (camera.posx > CAMERA_BOUNDARY_RIGHT) camera.posx = FIX32(0);
}
if ((value & BUTTON_UP))
{
camera.posy -= camera.speed;
//car.posy--; // WIP
fix16 cdx = sinFix16(car.angle);
fix16 cdy = - cosFix16(car.angle);
car.dirx = fix16ToInt(cdx);
car.diry = fix16ToInt(cdy);
// if (camera.posx < CAMERA_BOUNDARY_UP) camera.posx = CAMERA_BOUNDARY_UP;
}
else if ((value & BUTTON_DOWN))
{
camera.posy += camera.speed;
car.posy++; // WIP
// if (camera.posy > CAMERA_BOUNDARY_DOWN) camera.posy = FIX32(0);
}
}