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.

72 lines
1.6 KiB

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