Ray casting engine implemented on the mBuino platform using the ST7735 LCD controller.
Ray casting engine written to test performance of the LCD_ST7735 library I wrote as a learning exercise on the mbed platform.
main.cpp@0:303768292f44, 2014-09-21 (annotated)
- Committer:
- taylorza
- Date:
- Sun Sep 21 22:04:22 2014 +0000
- Revision:
- 0:303768292f44
- Child:
- 2:4de2cb6f6fe8
LCD_ST7735 Raycaster on mBuino mbed platform
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
taylorza | 0:303768292f44 | 1 | #include "mbed.h" |
taylorza | 0:303768292f44 | 2 | #include "common.h" |
taylorza | 0:303768292f44 | 3 | #include "LCD_ST7735.h" |
taylorza | 0:303768292f44 | 4 | #include "Color565.h" |
taylorza | 0:303768292f44 | 5 | #include "Raycaster.h" |
taylorza | 0:303768292f44 | 6 | |
taylorza | 0:303768292f44 | 7 | static const uint8_t g_map[] = |
taylorza | 0:303768292f44 | 8 | { |
taylorza | 0:303768292f44 | 9 | 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, |
taylorza | 0:303768292f44 | 10 | 1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,4, |
taylorza | 0:303768292f44 | 11 | 1,0,1,1,1,1,0,1,1,0,1,1,1,1,0,4, |
taylorza | 0:303768292f44 | 12 | 1,0,1,0,0,0,0,1,1,0,0,0,0,1,0,4, |
taylorza | 0:303768292f44 | 13 | 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, |
taylorza | 0:303768292f44 | 14 | 1,1,3,4,3,3,3,0,0,2,2,2,2,2,2,4, |
taylorza | 0:303768292f44 | 15 | 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, |
taylorza | 0:303768292f44 | 16 | 1,0,0,0,0,0,1,0,0,1,0,0,0,0,0,4, |
taylorza | 0:303768292f44 | 17 | 1,1,1,1,0,0,1,0,0,1,0,0,3,3,3,4, |
taylorza | 0:303768292f44 | 18 | 3,0,0,0,0,0,1,0,0,1,0,0,0,0,0,4, |
taylorza | 0:303768292f44 | 19 | 3,0,0,1,1,1,0,0,0,0,1,1,1,0,0,4, |
taylorza | 0:303768292f44 | 20 | 3,0,0,1,0,0,0,0,0,0,0,0,1,0,0,4, |
taylorza | 0:303768292f44 | 21 | 3,0,0,1,0,0,2,4,4,2,0,0,1,0,0,4, |
taylorza | 0:303768292f44 | 22 | 3,0,0,1,0,0,0,0,0,0,0,0,1,0,0,4, |
taylorza | 0:303768292f44 | 23 | 3,0,0,0,0,1,0,0,0,0,1,0,0,0,0,4, |
taylorza | 0:303768292f44 | 24 | 3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4, |
taylorza | 0:303768292f44 | 25 | }; |
taylorza | 0:303768292f44 | 26 | |
taylorza | 0:303768292f44 | 27 | static const uint16_t g_palette[] = |
taylorza | 0:303768292f44 | 28 | { |
taylorza | 0:303768292f44 | 29 | Color565::Black, |
taylorza | 0:303768292f44 | 30 | Color565::Red, |
taylorza | 0:303768292f44 | 31 | Color565::Green, |
taylorza | 0:303768292f44 | 32 | Color565::Blue, |
taylorza | 0:303768292f44 | 33 | Color565::Yellow |
taylorza | 0:303768292f44 | 34 | }; |
taylorza | 0:303768292f44 | 35 | |
taylorza | 0:303768292f44 | 36 | AnalogIn stickX(P0_11); |
taylorza | 0:303768292f44 | 37 | AnalogIn stickY(P0_13); |
taylorza | 0:303768292f44 | 38 | |
taylorza | 0:303768292f44 | 39 | main() |
taylorza | 0:303768292f44 | 40 | { |
taylorza | 0:303768292f44 | 41 | Raycaster rayCaster(0, 10, 160, 108, |
taylorza | 0:303768292f44 | 42 | 96, CELL_SIZE / 2, |
taylorza | 0:303768292f44 | 43 | g_map, 16, 16, |
taylorza | 0:303768292f44 | 44 | g_palette); |
taylorza | 0:303768292f44 | 45 | |
taylorza | 0:303768292f44 | 46 | rayCaster.setCellPosition(8, 8); |
taylorza | 0:303768292f44 | 47 | |
taylorza | 0:303768292f44 | 48 | while (true) |
taylorza | 0:303768292f44 | 49 | { |
taylorza | 0:303768292f44 | 50 | rayCaster.renderFrame(); |
taylorza | 0:303768292f44 | 51 | |
taylorza | 0:303768292f44 | 52 | if (stickX < 0.3) rayCaster.rotate(-0.1); |
taylorza | 0:303768292f44 | 53 | else if (stickX > 0.7) rayCaster.rotate(0.1);; |
taylorza | 0:303768292f44 | 54 | |
taylorza | 0:303768292f44 | 55 | if (stickY < 0.3) rayCaster.move(4); |
taylorza | 0:303768292f44 | 56 | else if (stickY > 0.7) rayCaster.move(-4); |
taylorza | 0:303768292f44 | 57 | } |
taylorza | 0:303768292f44 | 58 | } |
taylorza | 0:303768292f44 | 59 |