lol its in c
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

77 lines
1.7 KiB

  1. #ifndef IS_GAME_H_
  2. #define IS_GAME_H_
  3. #include "sdk/video.h"
  4. #define _VRAM 0x8000
  5. #define _VRAM8000 _VRAM
  6. #define _VRAM8800 (_VRAM + 0x800)
  7. #define _VRAM9000 (_VRAM + 0x1000)
  8. #define _SCRN0 0x9800
  9. #define _SCRN1 0x9c00
  10. #define SCRN_X 160
  11. #define SCRN_Y 144
  12. #define SCRN_X_B 20
  13. #define SCRN_Y_B 18
  14. #define SCRN_VX 256
  15. #define SCRN_VY 256
  16. #define SCRN_VX_B 32
  17. #define SCRN_VY_B 32
  18. #define SCREEN_HEIGHT_TILES 18
  19. #define SCREEN_WIDTH_TILES 20
  20. #define ALLOC_SIZE_FONT 39
  21. #define ALLOC_SIZE_PLAYER 52
  22. #define ALLOC_SIZE_BACKGROUND 32
  23. #define ALLOC_SIZE_ITEMS 20
  24. #define ALLOC_SIZE_MONSTERS 108
  25. #define TILE_INDEX_FONT 0
  26. #define TILE_INDEX_PLAYER ALLOC_SIZE_FONT
  27. #define TILE_INDEX_BACKGROUND (ALLOC_SIZE_FONT + ALLOC_SIZE_PLAYER)
  28. #define TILE_INDEX_ITEMS \
  29. (ALLOC_SIZE_FONT + ALLOC_SIZE_PLAYER + ALLOC_SIZE_BACKGROUND)
  30. #define TILE_INDEX_MONSTERS \
  31. (ALLOC_SIZE_FONT + ALLOC_SIZE_PLAYER + ALLOC_SIZE_BACKGROUND + \
  32. ALLOC_SIZE_ITEMS)
  33. #define TILE_SIZE 16 //!< Size of 1 tile in bytes
  34. #define VRAM_TILE_PTR(idx) \
  35. ((void*)(_VRAM + \
  36. (idx)*TILE_SIZE)) //!< Compute VRAM pointer for tile section
  37. typedef enum {
  38. GAME_STATE_TITLE,
  39. GAME_STATE_LEVEL,
  40. GAME_STATE_MENU,
  41. } game_state_t;
  42. extern game_state_t game_state;
  43. /**
  44. * @brief Render the title screen.
  45. */
  46. void title(void);
  47. /**
  48. * @brief Render the current game level.
  49. */
  50. void level(void);
  51. /**
  52. * @brief Enable interrupts.
  53. */
  54. void interrupts_enable(void) __preserves_regs(a, b, c, d, e, h, l);
  55. /**
  56. * @brief Disable interrupts.
  57. */
  58. void interrupts_disable(void) __preserves_regs(a, b, c, d, e, h, l);
  59. #define lcd_disable() lcd_off()
  60. #define lcd_enable() rLCDC = LCDC_ON | LCDC_OBJON | LCDC_BGON | LCDC_BG8000
  61. #endif