main.cpp 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. #include <cstdio>
  2. #include <cstdarg>
  3. #include <os.h>
  4. #include "timers.h"
  5. #include "Graphics.h"
  6. #include "Pixel.h"
  7. #include "Map.h"
  8. #include "Camera.h"
  9. #include "Text.h"
  10. #include "misc.h"
  11. using namespace WalrusRPG;
  12. using namespace WalrusRPG::Graphics;
  13. using namespace WalrusRPG::Graphics::Text;
  14. void print_debug_camera_data(const Camera &camera) {
  15. print_format(0,8, "CAM : X : %d Y: %d", camera.get_x(), camera.get_y());
  16. }
  17. void print_debug_map_data(const Map &map) {
  18. print_format(0,16, "MAP : W: %d, H:%d", map.get_width(), map.get_height());
  19. }
  20. void map_loop(unsigned x, unsigned y, Map &map)
  21. {
  22. timer_mode(0, 0b0000010); // Free-running, no interrupts, divider = 1, 32 bit, wrapping
  23. timer_load(0, 0);
  24. unsigned loop_time = 546; // 32768Hz/60ups
  25. unsigned loop_next = -loop_time;
  26. unsigned keep_running = 1;
  27. Camera camera((signed) x, (signed) y);
  28. while (keep_running)
  29. {
  30. if (isKeyPressed(KEY_NSPIRE_ESC))
  31. keep_running = 0;
  32. camera.update(0);
  33. // Frameskip
  34. if (timer_read(0) > loop_next)
  35. {
  36. Pixel pix(Green);
  37. // TODO?: Preset color macros/consts?
  38. buffer_fill(pix);
  39. map.render(camera, loop_next);
  40. print_string("WalrusRPG test build \001", 0, 0);
  41. print_debug_camera_data(camera);
  42. print_debug_map_data(map);
  43. lcd_vsync();
  44. buffer_swap();
  45. }
  46. // Frame limiting
  47. while (timer_read(0) > loop_next)
  48. ;
  49. loop_next -= loop_time;
  50. }
  51. }
  52. int main(int argc, char *argv[])
  53. {
  54. UNUSED(argc);
  55. UNUSED(argv);
  56. buffer_allocate();
  57. timer_init(0);
  58. unsigned mapdata0[] =
  59. {
  60. 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
  61. 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
  62. 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
  63. 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
  64. 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
  65. 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2,
  66. 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2,
  67. 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2,
  68. 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2,
  69. 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2,
  70. 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2,
  71. 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2,
  72. 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2,
  73. 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2,
  74. 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2,
  75. 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2,
  76. 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
  77. 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
  78. 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
  79. 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
  80. 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2};
  81. unsigned mapdata1[] =
  82. {
  83. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  84. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  85. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  86. 0, 0, 0, 0, 0, 0, 6, 0, 0, 4, 0, 0, 0, 0, 0,
  87. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  88. 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0,
  89. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  90. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  91. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  92. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  93. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  94. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  95. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  96. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  97. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  98. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  99. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  100. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  101. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  102. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  103. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
  104. Map map(15, 21, mapdata0, mapdata1);
  105. map_loop(0, 0, map);
  106. timer_restore(0);
  107. buffer_free();
  108. return 0;
  109. }