summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBad Diode <bd@badd10de.dev>2021-04-15 14:37:26 +0200
committerBad Diode <bd@badd10de.dev>2021-04-15 14:37:26 +0200
commit07cc344c87306309316d30cb3fce1f6c1f15c0be (patch)
tree8bf15c1aff9b8c7b3a278197ad0dfd02dae55d33
parent15bbf02a92688dfe38b892d327fb54cf051a0808 (diff)
downloadgba-experiments-07cc344c87306309316d30cb3fce1f6c1f15c0be.tar.gz
gba-experiments-07cc344c87306309316d30cb3fce1f6c1f15c0be.zip
Test Bresenham's algorithm
-rw-r--r--src/main.c47
1 files changed, 33 insertions, 14 deletions
diff --git a/src/main.c b/src/main.c
index c179dc4..7f04f28 100644
--- a/src/main.c
+++ b/src/main.c
@@ -71,6 +71,10 @@ rgb15(u32 red, u32 green, u32 blue ) {
71 return (blue << 10) | (green << 5) | red; 71 return (blue << 10) | (green << 5) | red;
72} 72}
73 73
74#define COLOR_RED rgb15(31, 0, 12)
75#define COLOR_BLUE rgb15(2, 15, 30)
76#define COLOR_CYAN rgb15(0, 30, 30)
77
74// Using bd-font, an 8x8 bitmap font. 78// Using bd-font, an 8x8 bitmap font.
75static inline void 79static inline void
76put_char(int x, int y, Color clr, u8 chr) { 80put_char(int x, int y, Color clr, u8 chr) {
@@ -175,23 +179,38 @@ int main(void) {
175 set_display_mode(DISP_MODE_3 | DISP_BG2); 179 set_display_mode(DISP_MODE_3 | DISP_BG2);
176 180
177 181
178 put_text(0, 0, rgb15(18, 0, 0), "\n\n\n\n"); 182 put_text(8, 8, COLOR_RED, "Testing Bresenham's algorithm");
179
180 draw_line(0, 0, 3, 8,rgb15(0, 30, 0));
181 draw_line(8, 0, 16, 8,rgb15(0, 0, 30));
182 183
183 draw_line(0, 0, 8, 3,rgb15(0, 0, 30)); 184 for (size_t i = 70; i <= SCREEN_WIDTH - 70; i += 5) {
184 draw_line(8, 0, 16, 8,rgb15(0, 0, 30)); 185 int x0 = i;
185 186 int y0 = 30;
186 // Testing a "rectangle" 187 int x1 = SCREEN_WIDTH - i;
187 draw_line(0, 0, 0, 7,rgb15(0, 0, 30)); 188 int y1 = SCREEN_HEIGHT - 30;
188 draw_line(0, 0, 7, 0,rgb15(0, 30, 30)); 189 draw_line(x0, y0, x1, y1, COLOR_BLUE);
189 draw_line(0, 7, 7, 7,rgb15(30, 0, 0)); 190 }
190 draw_line(7, 0, 7, 7,rgb15(0, 30, 0)); 191 for (size_t i = 30; i <= SCREEN_HEIGHT - 30; i += 5) {
192 int x0 = 70;
193 int y0 = i;
194 int x1 = SCREEN_WIDTH - 70;
195 int y1 = SCREEN_HEIGHT - i;
196 draw_line(x0, y0, x1, y1, COLOR_BLUE);
197 }
191 198
192 draw_line(8, 7, 15, 0,rgb15(0, 0, 30)); 199 for (size_t i = 70; i <= SCREEN_WIDTH - 70; i += 10) {
200 int x0 = i;
201 int y0 = 30;
202 int x1 = SCREEN_WIDTH - i;
203 int y1 = SCREEN_HEIGHT - 30;
204 draw_line(x0, y0, x1, y1, COLOR_CYAN);
205 }
206 for (size_t i = 30; i <= SCREEN_HEIGHT - 30; i += 10) {
207 int x0 = 70;
208 int y0 = i;
209 int x1 = SCREEN_WIDTH - 70;
210 int y1 = SCREEN_HEIGHT - i;
211 draw_line(x0, y0, x1, y1, COLOR_CYAN);
212 }
193 213
194 char scanline_counter[16];
195 while(true) { 214 while(true) {
196 wait_vsync(); 215 wait_vsync();
197 }; 216 };