Mercurial > repos > genjam1
annotate src/main.c @ 17:ea345aa9cc30
using new tile constants
author | William Morgan <bill@mrgn.org> |
---|---|
date | Sun, 12 Jan 2014 19:02:44 -0800 |
parents | f71eb24b3896 |
children | 60bb690233cf |
rev | line source |
---|---|
2
8f23be2db808
Movec creep.h into the src folder. Added main loop
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
1 #include <genesis.h> |
8f23be2db808
Movec creep.h into the src folder. Added main loop
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
2 #include "creep.h" |
8f23be2db808
Movec creep.h into the src folder. Added main loop
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
3 |
15
f71eb24b3896
placement of red walls with a button
William Morgan <bill@mrgn.org>
parents:
14
diff
changeset
|
4 // I now realize this should be one tile that uses the flipping flags. oops. |
10 | 5 const u32 cursor_tiles[4*8] = { |
6 0x21100000, // top left | |
7 0x10000000, | |
8 0x10000000, | |
9 0x00000000, | |
10 0x00000000, | |
11 0x00000000, | |
12 0x00000000, | |
13 0x00000000, | |
14 | |
15 0x00000000, // bottom left | |
16 0x00000000, | |
17 0x00000000, | |
18 0x00000000, | |
19 0x00000000, | |
20 0x10000000, | |
21 0x10000000, | |
22 0x21100000, | |
23 | |
24 0x00000112, // top right | |
25 0x00000001, | |
26 0x00000001, | |
27 0x00000000, | |
28 0x00000000, | |
29 0x00000000, | |
30 0x00000000, | |
31 0x00000000, | |
32 | |
33 0x00000000, // bottom right | |
34 0x00000000, | |
35 0x00000000, | |
36 0x00000000, | |
37 0x00000000, | |
38 0x00000001, | |
39 0x00000001, | |
40 0x00000112, | |
41 | |
42 }; | |
43 | |
15
f71eb24b3896
placement of red walls with a button
William Morgan <bill@mrgn.org>
parents:
14
diff
changeset
|
44 #define EMPTY 0 |
f71eb24b3896
placement of red walls with a button
William Morgan <bill@mrgn.org>
parents:
14
diff
changeset
|
45 #define WALL 'O' + TILE_FONTINDEX |
17 | 46 #define TOWER TILE_ATTR_FULL(1, 0, 0, 0, 'T' + TILE_FONTINDEX) |
47 #define GOAL TILE_ATTR_FULL(1, 0, 0, 0, 'G' + TILE_FONTINDEX) | |
15
f71eb24b3896
placement of red walls with a button
William Morgan <bill@mrgn.org>
parents:
14
diff
changeset
|
48 |
4
d73f53857e5f
Add placeholder walls and goal
Mike Pavone <pavone@retrodev.com>
parents:
2
diff
changeset
|
49 u16 tilemap[40*28]; |
7
3ed112d64b1b
Added basic creep spawning code
Mike Pavone <pavone@retrodev.com>
parents:
4
diff
changeset
|
50 u16 countdown; |
4
d73f53857e5f
Add placeholder walls and goal
Mike Pavone <pavone@retrodev.com>
parents:
2
diff
changeset
|
51 |
15
f71eb24b3896
placement of red walls with a button
William Morgan <bill@mrgn.org>
parents:
14
diff
changeset
|
52 int cursor_x = 0; // tiles |
f71eb24b3896
placement of red walls with a button
William Morgan <bill@mrgn.org>
parents:
14
diff
changeset
|
53 int cursor_y = 0; // tiles |
f71eb24b3896
placement of red walls with a button
William Morgan <bill@mrgn.org>
parents:
14
diff
changeset
|
54 int pixels_per_tile = 8; |
f71eb24b3896
placement of red walls with a button
William Morgan <bill@mrgn.org>
parents:
14
diff
changeset
|
55 const int cursor_width = 2; // tiles |
f71eb24b3896
placement of red walls with a button
William Morgan <bill@mrgn.org>
parents:
14
diff
changeset
|
56 |
f71eb24b3896
placement of red walls with a button
William Morgan <bill@mrgn.org>
parents:
14
diff
changeset
|
57 |
f71eb24b3896
placement of red walls with a button
William Morgan <bill@mrgn.org>
parents:
14
diff
changeset
|
58 u16 build_order[3] = { |
f71eb24b3896
placement of red walls with a button
William Morgan <bill@mrgn.org>
parents:
14
diff
changeset
|
59 EMPTY, |
f71eb24b3896
placement of red walls with a button
William Morgan <bill@mrgn.org>
parents:
14
diff
changeset
|
60 WALL, |
f71eb24b3896
placement of red walls with a button
William Morgan <bill@mrgn.org>
parents:
14
diff
changeset
|
61 TOWER, |
f71eb24b3896
placement of red walls with a button
William Morgan <bill@mrgn.org>
parents:
14
diff
changeset
|
62 }; |
f71eb24b3896
placement of red walls with a button
William Morgan <bill@mrgn.org>
parents:
14
diff
changeset
|
63 u8 build_order_size = 3; |
10 | 64 |
13
d118fe8fb1db
Make cursor and creeps play nice
Mike Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
65 void joy_event_handler(u16 joy, u16 changed, u16 state) { |
d118fe8fb1db
Make cursor and creeps play nice
Mike Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
66 u16 went_down = changed & state; |
d118fe8fb1db
Make cursor and creeps play nice
Mike Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
67 if (went_down & BUTTON_UP) { |
15
f71eb24b3896
placement of red walls with a button
William Morgan <bill@mrgn.org>
parents:
14
diff
changeset
|
68 cursor_y -= cursor_width; |
13
d118fe8fb1db
Make cursor and creeps play nice
Mike Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
69 } |
d118fe8fb1db
Make cursor and creeps play nice
Mike Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
70 if (went_down & BUTTON_DOWN) { |
15
f71eb24b3896
placement of red walls with a button
William Morgan <bill@mrgn.org>
parents:
14
diff
changeset
|
71 cursor_y += cursor_width; |
13
d118fe8fb1db
Make cursor and creeps play nice
Mike Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
72 } |
d118fe8fb1db
Make cursor and creeps play nice
Mike Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
73 if (went_down & BUTTON_LEFT) { |
15
f71eb24b3896
placement of red walls with a button
William Morgan <bill@mrgn.org>
parents:
14
diff
changeset
|
74 cursor_x -= cursor_width; |
13
d118fe8fb1db
Make cursor and creeps play nice
Mike Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
75 } |
d118fe8fb1db
Make cursor and creeps play nice
Mike Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
76 if (went_down & BUTTON_RIGHT) { |
15
f71eb24b3896
placement of red walls with a button
William Morgan <bill@mrgn.org>
parents:
14
diff
changeset
|
77 cursor_x += cursor_width; |
f71eb24b3896
placement of red walls with a button
William Morgan <bill@mrgn.org>
parents:
14
diff
changeset
|
78 } |
f71eb24b3896
placement of red walls with a button
William Morgan <bill@mrgn.org>
parents:
14
diff
changeset
|
79 if (went_down & BUTTON_A) { |
17 | 80 //u16 type_to_place = EMPTY; |
81 u16 type_to_place = WALL; | |
82 tilemap[cursor_x + (cursor_y ) * 40] = type_to_place; | |
83 tilemap[cursor_x + 1 + (cursor_y ) * 40] = type_to_place; | |
84 tilemap[cursor_x + (cursor_y + 1) * 40] = type_to_place; | |
85 tilemap[cursor_x + 1 + (cursor_y + 1) * 40] = type_to_place; | |
13
d118fe8fb1db
Make cursor and creeps play nice
Mike Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
86 } |
10 | 87 } |
88 | |
2
8f23be2db808
Movec creep.h into the src folder. Added main loop
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
89 int main(void) |
8f23be2db808
Movec creep.h into the src folder. Added main loop
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
90 { |
13
d118fe8fb1db
Make cursor and creeps play nice
Mike Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
91 JOY_init(); |
d118fe8fb1db
Make cursor and creeps play nice
Mike Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
92 JOY_setEventHandler(&joy_event_handler); |
d118fe8fb1db
Make cursor and creeps play nice
Mike Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
93 |
d118fe8fb1db
Make cursor and creeps play nice
Mike Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
94 u8 cursor_tile_index = 1; |
d118fe8fb1db
Make cursor and creeps play nice
Mike Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
95 VDP_loadTileData((const u32 *)cursor_tiles, cursor_tile_index, 4, 0); |
10 | 96 |
4
d73f53857e5f
Add placeholder walls and goal
Mike Pavone <pavone@retrodev.com>
parents:
2
diff
changeset
|
97 u16 i; |
d73f53857e5f
Add placeholder walls and goal
Mike Pavone <pavone@retrodev.com>
parents:
2
diff
changeset
|
98 VDP_setPlanSize(64, 32); |
d73f53857e5f
Add placeholder walls and goal
Mike Pavone <pavone@retrodev.com>
parents:
2
diff
changeset
|
99 for (i = 6; i < 40*28; i += 4) |
d73f53857e5f
Add placeholder walls and goal
Mike Pavone <pavone@retrodev.com>
parents:
2
diff
changeset
|
100 if ((i > 80 || i & 4) && (i < 40*26 || !(i & 4)) && i % 40 < 38) |
d73f53857e5f
Add placeholder walls and goal
Mike Pavone <pavone@retrodev.com>
parents:
2
diff
changeset
|
101 { |
17 | 102 tilemap[i] = WALL; |
103 tilemap[i+1] = WALL; | |
4
d73f53857e5f
Add placeholder walls and goal
Mike Pavone <pavone@retrodev.com>
parents:
2
diff
changeset
|
104 } |
d73f53857e5f
Add placeholder walls and goal
Mike Pavone <pavone@retrodev.com>
parents:
2
diff
changeset
|
105 |
17 | 106 tilemap[38 + 14*40] = GOAL; |
107 tilemap[39 + 14*40] = GOAL; | |
108 tilemap[38 + 15*40] = GOAL; | |
109 tilemap[39 + 15*40] = GOAL; | |
11
c0bb53eaa6f4
Calculate distances from goal for all passible points for pathfinding purposes
Mike Pavone <pavone@retrodev.com>
parents:
7
diff
changeset
|
110 gen_distances(38, 14); |
13
d118fe8fb1db
Make cursor and creeps play nice
Mike Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
111 for (i = 0; i < MAX_SPRITE; i++) |
d118fe8fb1db
Make cursor and creeps play nice
Mike Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
112 { |
d118fe8fb1db
Make cursor and creeps play nice
Mike Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
113 spriteDefCache[i].posx = -0x80; |
d118fe8fb1db
Make cursor and creeps play nice
Mike Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
114 } |
11
c0bb53eaa6f4
Calculate distances from goal for all passible points for pathfinding purposes
Mike Pavone <pavone@retrodev.com>
parents:
7
diff
changeset
|
115 //print_distances(); |
2
8f23be2db808
Movec creep.h into the src folder. Added main loop
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
116 for (;;) |
8f23be2db808
Movec creep.h into the src folder. Added main loop
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
117 { |
8f23be2db808
Movec creep.h into the src folder. Added main loop
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
118 VDP_waitVSync(); |
8f23be2db808
Movec creep.h into the src folder. Added main loop
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
119 VDP_updateSprites(); |
4
d73f53857e5f
Add placeholder walls and goal
Mike Pavone <pavone@retrodev.com>
parents:
2
diff
changeset
|
120 for (i = 0; i < 28; i++) |
d73f53857e5f
Add placeholder walls and goal
Mike Pavone <pavone@retrodev.com>
parents:
2
diff
changeset
|
121 { |
d73f53857e5f
Add placeholder walls and goal
Mike Pavone <pavone@retrodev.com>
parents:
2
diff
changeset
|
122 VDP_setTileMapRectByIndex(VDP_PLAN_B, tilemap + i*40, i*64, 40, 0); |
d73f53857e5f
Add placeholder walls and goal
Mike Pavone <pavone@retrodev.com>
parents:
2
diff
changeset
|
123 } |
15
f71eb24b3896
placement of red walls with a button
William Morgan <bill@mrgn.org>
parents:
14
diff
changeset
|
124 VDP_setSprite(0, cursor_x * pixels_per_tile, cursor_y * pixels_per_tile, SPRITE_SIZE(2,2), TILE_ATTR_FULL(PAL0, 1, 0, 0, cursor_tile_index), spriteDefCache[0].link); |
14
5c7f33441e43
Creeps now move towards the goal
Mike Pavone <pavone@retrodev.com>
parents:
13
diff
changeset
|
125 if (countdown) |
5c7f33441e43
Creeps now move towards the goal
Mike Pavone <pavone@retrodev.com>
parents:
13
diff
changeset
|
126 --countdown; |
5c7f33441e43
Creeps now move towards the goal
Mike Pavone <pavone@retrodev.com>
parents:
13
diff
changeset
|
127 else if (cur_creeps < 4) |
7
3ed112d64b1b
Added basic creep spawning code
Mike Pavone <pavone@retrodev.com>
parents:
4
diff
changeset
|
128 { |
14
5c7f33441e43
Creeps now move towards the goal
Mike Pavone <pavone@retrodev.com>
parents:
13
diff
changeset
|
129 spawn_creep(CREEP_NORMAL, 4, 122); |
5c7f33441e43
Creeps now move towards the goal
Mike Pavone <pavone@retrodev.com>
parents:
13
diff
changeset
|
130 countdown = 300; |
7
3ed112d64b1b
Added basic creep spawning code
Mike Pavone <pavone@retrodev.com>
parents:
4
diff
changeset
|
131 } |
14
5c7f33441e43
Creeps now move towards the goal
Mike Pavone <pavone@retrodev.com>
parents:
13
diff
changeset
|
132 update_creeps(); |
2
8f23be2db808
Movec creep.h into the src folder. Added main loop
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
133 } |
8f23be2db808
Movec creep.h into the src folder. Added main loop
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
134 return 0; |
8f23be2db808
Movec creep.h into the src folder. Added main loop
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
135 } |