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.

87 lines
1.9 KiB

2 years ago
  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_WIDTH 8 //!< Width of 1 tile in pixels
  34. #define TILE_HEIGHT 8 //!< Height of 1 tile in pixels
  35. #define TILE_SIZE 16 //!< Size of 1 tile in bytes
  36. #define VRAM_TILE_PTR(idx) \
  37. ((void*)(_VRAM + \
  38. (idx)*TILE_SIZE)) //!< Compute VRAM pointer for tile section
  39. typedef enum {
  40. GAME_STATE_TITLE,
  41. GAME_STATE_LEVEL,
  42. GAME_STATE_MENU,
  43. } game_state_t;
  44. extern game_state_t game_state;
  45. /**
  46. * @brief Render the title screen.
  47. */
  48. void title(void);
  49. /**
  50. * @brief Render the current game level.
  51. */
  52. void level(void);
  53. /**
  54. * @brief Enable interrupts.
  55. */
  56. void interrupts_enable(void) __preserves_regs(a, b, c, d, e, h, l);
  57. /**
  58. * @brief Disable interrupts.
  59. */
  60. void interrupts_disable(void) __preserves_regs(a, b, c, d, e, h, l);
  61. #define lcd_disable() lcd_off()
  62. #define lcd_enable() rLCDC = LCDC_ON | LCDC_OBJON | LCDC_BGON | LCDC_BG8000
  63. uint8_t player_bg_collides(void);
  64. uint8_t player_in_air(void);
  65. void audio_init(void);
  66. void audio_reset(void);
  67. #endif