annotate src/main.c @ 15:f71eb24b3896

placement of red walls with a button
author William Morgan <bill@mrgn.org>
date Sun, 12 Jan 2014 18:49:29 -0800
parents 5c7f33441e43
children a9500e8bff93 ea345aa9cc30
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
889227ec630c cursor and input code added.
William Morgan <bill@mrgn.org>
parents: 7
diff changeset
5 const u32 cursor_tiles[4*8] = {
889227ec630c cursor and input code added.
William Morgan <bill@mrgn.org>
parents: 7
diff changeset
6 0x21100000, // top left
889227ec630c cursor and input code added.
William Morgan <bill@mrgn.org>
parents: 7
diff changeset
7 0x10000000,
889227ec630c cursor and input code added.
William Morgan <bill@mrgn.org>
parents: 7
diff changeset
8 0x10000000,
889227ec630c cursor and input code added.
William Morgan <bill@mrgn.org>
parents: 7
diff changeset
9 0x00000000,
889227ec630c cursor and input code added.
William Morgan <bill@mrgn.org>
parents: 7
diff changeset
10 0x00000000,
889227ec630c cursor and input code added.
William Morgan <bill@mrgn.org>
parents: 7
diff changeset
11 0x00000000,
889227ec630c cursor and input code added.
William Morgan <bill@mrgn.org>
parents: 7
diff changeset
12 0x00000000,
889227ec630c cursor and input code added.
William Morgan <bill@mrgn.org>
parents: 7
diff changeset
13 0x00000000,
889227ec630c cursor and input code added.
William Morgan <bill@mrgn.org>
parents: 7
diff changeset
14
889227ec630c cursor and input code added.
William Morgan <bill@mrgn.org>
parents: 7
diff changeset
15 0x00000000, // bottom left
889227ec630c cursor and input code added.
William Morgan <bill@mrgn.org>
parents: 7
diff changeset
16 0x00000000,
889227ec630c cursor and input code added.
William Morgan <bill@mrgn.org>
parents: 7
diff changeset
17 0x00000000,
889227ec630c cursor and input code added.
William Morgan <bill@mrgn.org>
parents: 7
diff changeset
18 0x00000000,
889227ec630c cursor and input code added.
William Morgan <bill@mrgn.org>
parents: 7
diff changeset
19 0x00000000,
889227ec630c cursor and input code added.
William Morgan <bill@mrgn.org>
parents: 7
diff changeset
20 0x10000000,
889227ec630c cursor and input code added.
William Morgan <bill@mrgn.org>
parents: 7
diff changeset
21 0x10000000,
889227ec630c cursor and input code added.
William Morgan <bill@mrgn.org>
parents: 7
diff changeset
22 0x21100000,
889227ec630c cursor and input code added.
William Morgan <bill@mrgn.org>
parents: 7
diff changeset
23
889227ec630c cursor and input code added.
William Morgan <bill@mrgn.org>
parents: 7
diff changeset
24 0x00000112, // top right
889227ec630c cursor and input code added.
William Morgan <bill@mrgn.org>
parents: 7
diff changeset
25 0x00000001,
889227ec630c cursor and input code added.
William Morgan <bill@mrgn.org>
parents: 7
diff changeset
26 0x00000001,
889227ec630c cursor and input code added.
William Morgan <bill@mrgn.org>
parents: 7
diff changeset
27 0x00000000,
889227ec630c cursor and input code added.
William Morgan <bill@mrgn.org>
parents: 7
diff changeset
28 0x00000000,
889227ec630c cursor and input code added.
William Morgan <bill@mrgn.org>
parents: 7
diff changeset
29 0x00000000,
889227ec630c cursor and input code added.
William Morgan <bill@mrgn.org>
parents: 7
diff changeset
30 0x00000000,
889227ec630c cursor and input code added.
William Morgan <bill@mrgn.org>
parents: 7
diff changeset
31 0x00000000,
889227ec630c cursor and input code added.
William Morgan <bill@mrgn.org>
parents: 7
diff changeset
32
889227ec630c cursor and input code added.
William Morgan <bill@mrgn.org>
parents: 7
diff changeset
33 0x00000000, // bottom right
889227ec630c cursor and input code added.
William Morgan <bill@mrgn.org>
parents: 7
diff changeset
34 0x00000000,
889227ec630c cursor and input code added.
William Morgan <bill@mrgn.org>
parents: 7
diff changeset
35 0x00000000,
889227ec630c cursor and input code added.
William Morgan <bill@mrgn.org>
parents: 7
diff changeset
36 0x00000000,
889227ec630c cursor and input code added.
William Morgan <bill@mrgn.org>
parents: 7
diff changeset
37 0x00000000,
889227ec630c cursor and input code added.
William Morgan <bill@mrgn.org>
parents: 7
diff changeset
38 0x00000001,
889227ec630c cursor and input code added.
William Morgan <bill@mrgn.org>
parents: 7
diff changeset
39 0x00000001,
889227ec630c cursor and input code added.
William Morgan <bill@mrgn.org>
parents: 7
diff changeset
40 0x00000112,
889227ec630c cursor and input code added.
William Morgan <bill@mrgn.org>
parents: 7
diff changeset
41
889227ec630c cursor and input code added.
William Morgan <bill@mrgn.org>
parents: 7
diff changeset
42 };
889227ec630c cursor and input code added.
William Morgan <bill@mrgn.org>
parents: 7
diff changeset
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
f71eb24b3896 placement of red walls with a button
William Morgan <bill@mrgn.org>
parents: 14
diff changeset
46 #define TOWER 'T' + TILE_FONTINDEX
f71eb24b3896 placement of red walls with a button
William Morgan <bill@mrgn.org>
parents: 14
diff changeset
47 #define GOAL 'G' + TILE_FONTINDEX
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
889227ec630c cursor and input code added.
William Morgan <bill@mrgn.org>
parents: 7
diff changeset
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) {
f71eb24b3896 placement of red walls with a button
William Morgan <bill@mrgn.org>
parents: 14
diff changeset
80 tilemap[cursor_x + (cursor_y ) * 40] = TILE_ATTR_FULL(1, 0, 0, 0, WALL);
f71eb24b3896 placement of red walls with a button
William Morgan <bill@mrgn.org>
parents: 14
diff changeset
81 tilemap[cursor_x + 1 + (cursor_y ) * 40] = TILE_ATTR_FULL(1, 0, 0, 0, WALL);
f71eb24b3896 placement of red walls with a button
William Morgan <bill@mrgn.org>
parents: 14
diff changeset
82 tilemap[cursor_x + (cursor_y + 1) * 40] = TILE_ATTR_FULL(1, 0, 0, 0, WALL);
f71eb24b3896 placement of red walls with a button
William Morgan <bill@mrgn.org>
parents: 14
diff changeset
83 tilemap[cursor_x + 1 + (cursor_y + 1) * 40] = TILE_ATTR_FULL(1, 0, 0, 0, WALL);
13
d118fe8fb1db Make cursor and creeps play nice
Mike Pavone <pavone@retrodev.com>
parents: 12
diff changeset
84 }
10
889227ec630c cursor and input code added.
William Morgan <bill@mrgn.org>
parents: 7
diff changeset
85 }
889227ec630c cursor and input code added.
William Morgan <bill@mrgn.org>
parents: 7
diff changeset
86
2
8f23be2db808 Movec creep.h into the src folder. Added main loop
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
87 int main(void)
8f23be2db808 Movec creep.h into the src folder. Added main loop
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
88 {
13
d118fe8fb1db Make cursor and creeps play nice
Mike Pavone <pavone@retrodev.com>
parents: 12
diff changeset
89 JOY_init();
d118fe8fb1db Make cursor and creeps play nice
Mike Pavone <pavone@retrodev.com>
parents: 12
diff changeset
90 JOY_setEventHandler(&joy_event_handler);
d118fe8fb1db Make cursor and creeps play nice
Mike Pavone <pavone@retrodev.com>
parents: 12
diff changeset
91
d118fe8fb1db Make cursor and creeps play nice
Mike Pavone <pavone@retrodev.com>
parents: 12
diff changeset
92 u8 cursor_tile_index = 1;
d118fe8fb1db Make cursor and creeps play nice
Mike Pavone <pavone@retrodev.com>
parents: 12
diff changeset
93 VDP_loadTileData((const u32 *)cursor_tiles, cursor_tile_index, 4, 0);
10
889227ec630c cursor and input code added.
William Morgan <bill@mrgn.org>
parents: 7
diff changeset
94
4
d73f53857e5f Add placeholder walls and goal
Mike Pavone <pavone@retrodev.com>
parents: 2
diff changeset
95 u16 i;
d73f53857e5f Add placeholder walls and goal
Mike Pavone <pavone@retrodev.com>
parents: 2
diff changeset
96 VDP_setPlanSize(64, 32);
d73f53857e5f Add placeholder walls and goal
Mike Pavone <pavone@retrodev.com>
parents: 2
diff changeset
97 for (i = 6; i < 40*28; i += 4)
d73f53857e5f Add placeholder walls and goal
Mike Pavone <pavone@retrodev.com>
parents: 2
diff changeset
98 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
99 {
d73f53857e5f Add placeholder walls and goal
Mike Pavone <pavone@retrodev.com>
parents: 2
diff changeset
100 tilemap[i] = 'O' + TILE_FONTINDEX;
d73f53857e5f Add placeholder walls and goal
Mike Pavone <pavone@retrodev.com>
parents: 2
diff changeset
101 tilemap[i+1] = 'O' + TILE_FONTINDEX;
d73f53857e5f Add placeholder walls and goal
Mike Pavone <pavone@retrodev.com>
parents: 2
diff changeset
102 }
d73f53857e5f Add placeholder walls and goal
Mike Pavone <pavone@retrodev.com>
parents: 2
diff changeset
103
d73f53857e5f Add placeholder walls and goal
Mike Pavone <pavone@retrodev.com>
parents: 2
diff changeset
104 tilemap[38 + 14*40] = TILE_ATTR_FULL(1, 0, 0, 0, 'G' + TILE_FONTINDEX);
d73f53857e5f Add placeholder walls and goal
Mike Pavone <pavone@retrodev.com>
parents: 2
diff changeset
105 tilemap[39 + 14*40] = TILE_ATTR_FULL(1, 0, 0, 0, 'G' + TILE_FONTINDEX);
11
c0bb53eaa6f4 Calculate distances from goal for all passible points for pathfinding purposes
Mike Pavone <pavone@retrodev.com>
parents: 7
diff changeset
106 tilemap[38 + 15*40] = TILE_ATTR_FULL(1, 0, 0, 0, 'G' + TILE_FONTINDEX);
c0bb53eaa6f4 Calculate distances from goal for all passible points for pathfinding purposes
Mike Pavone <pavone@retrodev.com>
parents: 7
diff changeset
107 tilemap[39 + 15*40] = TILE_ATTR_FULL(1, 0, 0, 0, 'G' + TILE_FONTINDEX);
c0bb53eaa6f4 Calculate distances from goal for all passible points for pathfinding purposes
Mike Pavone <pavone@retrodev.com>
parents: 7
diff changeset
108 gen_distances(38, 14);
13
d118fe8fb1db Make cursor and creeps play nice
Mike Pavone <pavone@retrodev.com>
parents: 12
diff changeset
109 for (i = 0; i < MAX_SPRITE; i++)
d118fe8fb1db Make cursor and creeps play nice
Mike Pavone <pavone@retrodev.com>
parents: 12
diff changeset
110 {
d118fe8fb1db Make cursor and creeps play nice
Mike Pavone <pavone@retrodev.com>
parents: 12
diff changeset
111 spriteDefCache[i].posx = -0x80;
d118fe8fb1db Make cursor and creeps play nice
Mike Pavone <pavone@retrodev.com>
parents: 12
diff changeset
112 }
11
c0bb53eaa6f4 Calculate distances from goal for all passible points for pathfinding purposes
Mike Pavone <pavone@retrodev.com>
parents: 7
diff changeset
113 //print_distances();
2
8f23be2db808 Movec creep.h into the src folder. Added main loop
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
114 for (;;)
8f23be2db808 Movec creep.h into the src folder. Added main loop
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
115 {
8f23be2db808 Movec creep.h into the src folder. Added main loop
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
116 VDP_waitVSync();
8f23be2db808 Movec creep.h into the src folder. Added main loop
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
117 VDP_updateSprites();
4
d73f53857e5f Add placeholder walls and goal
Mike Pavone <pavone@retrodev.com>
parents: 2
diff changeset
118 for (i = 0; i < 28; i++)
d73f53857e5f Add placeholder walls and goal
Mike Pavone <pavone@retrodev.com>
parents: 2
diff changeset
119 {
d73f53857e5f Add placeholder walls and goal
Mike Pavone <pavone@retrodev.com>
parents: 2
diff changeset
120 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
121 }
15
f71eb24b3896 placement of red walls with a button
William Morgan <bill@mrgn.org>
parents: 14
diff changeset
122 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
123 if (countdown)
5c7f33441e43 Creeps now move towards the goal
Mike Pavone <pavone@retrodev.com>
parents: 13
diff changeset
124 --countdown;
5c7f33441e43 Creeps now move towards the goal
Mike Pavone <pavone@retrodev.com>
parents: 13
diff changeset
125 else if (cur_creeps < 4)
7
3ed112d64b1b Added basic creep spawning code
Mike Pavone <pavone@retrodev.com>
parents: 4
diff changeset
126 {
14
5c7f33441e43 Creeps now move towards the goal
Mike Pavone <pavone@retrodev.com>
parents: 13
diff changeset
127 spawn_creep(CREEP_NORMAL, 4, 122);
5c7f33441e43 Creeps now move towards the goal
Mike Pavone <pavone@retrodev.com>
parents: 13
diff changeset
128 countdown = 300;
7
3ed112d64b1b Added basic creep spawning code
Mike Pavone <pavone@retrodev.com>
parents: 4
diff changeset
129 }
14
5c7f33441e43 Creeps now move towards the goal
Mike Pavone <pavone@retrodev.com>
parents: 13
diff changeset
130 update_creeps();
2
8f23be2db808 Movec creep.h into the src folder. Added main loop
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
131 }
8f23be2db808 Movec creep.h into the src folder. Added main loop
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
132 return 0;
8f23be2db808 Movec creep.h into the src folder. Added main loop
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
133 }