#ifndef IS_GAME_H_
|
|
#define IS_GAME_H_
|
|
|
|
#include "sdk/video.h"
|
|
|
|
#define _VRAM 0x8000
|
|
#define _VRAM8000 _VRAM
|
|
#define _VRAM8800 (_VRAM + 0x800)
|
|
#define _VRAM9000 (_VRAM + 0x1000)
|
|
#define _SCRN0 0x9800
|
|
#define _SCRN1 0x9c00
|
|
|
|
#define SCRN_X 160
|
|
#define SCRN_Y 144
|
|
#define SCRN_X_B 20
|
|
#define SCRN_Y_B 18
|
|
|
|
#define SCRN_VX 256
|
|
#define SCRN_VY 256
|
|
#define SCRN_VX_B 32
|
|
#define SCRN_VY_B 32
|
|
|
|
#define SCREEN_HEIGHT_TILES 18
|
|
#define SCREEN_WIDTH_TILES 20
|
|
|
|
#define ALLOC_SIZE_FONT 39
|
|
#define ALLOC_SIZE_PLAYER 52
|
|
#define ALLOC_SIZE_BACKGROUND 32
|
|
#define ALLOC_SIZE_ITEMS 20
|
|
#define ALLOC_SIZE_MONSTERS 108
|
|
|
|
#define TILE_INDEX_FONT 0
|
|
#define TILE_INDEX_PLAYER ALLOC_SIZE_FONT
|
|
#define TILE_INDEX_BACKGROUND (ALLOC_SIZE_FONT + ALLOC_SIZE_PLAYER)
|
|
#define TILE_INDEX_ITEMS \
|
|
(ALLOC_SIZE_FONT + ALLOC_SIZE_PLAYER + ALLOC_SIZE_BACKGROUND)
|
|
#define TILE_INDEX_MONSTERS \
|
|
(ALLOC_SIZE_FONT + ALLOC_SIZE_PLAYER + ALLOC_SIZE_BACKGROUND + \
|
|
ALLOC_SIZE_ITEMS)
|
|
|
|
#define TILE_WIDTH 8 //!< Width of 1 tile in pixels
|
|
#define TILE_HEIGHT 8 //!< Height of 1 tile in pixels
|
|
#define TILE_SIZE 16 //!< Size of 1 tile in bytes
|
|
#define VRAM_TILE_PTR(idx) \
|
|
((void*)(_VRAM + \
|
|
(idx)*TILE_SIZE)) //!< Compute VRAM pointer for tile section
|
|
|
|
typedef enum {
|
|
GAME_STATE_TITLE,
|
|
GAME_STATE_LEVEL,
|
|
GAME_STATE_MENU,
|
|
} game_state_t;
|
|
|
|
extern game_state_t game_state;
|
|
|
|
/**
|
|
* @brief Render the title screen.
|
|
*/
|
|
void title(void);
|
|
|
|
/**
|
|
* @brief Render the current game level.
|
|
*/
|
|
void level(void);
|
|
|
|
/**
|
|
* @brief Enable interrupts.
|
|
*/
|
|
void interrupts_enable(void) __preserves_regs(a, b, c, d, e, h, l);
|
|
|
|
/**
|
|
* @brief Disable interrupts.
|
|
*/
|
|
void interrupts_disable(void) __preserves_regs(a, b, c, d, e, h, l);
|
|
|
|
#define lcd_disable() lcd_off()
|
|
#define lcd_enable() rLCDC = LCDC_ON | LCDC_OBJON | LCDC_BGON | LCDC_BG8000
|
|
|
|
uint8_t player_bg_collides(void);
|
|
|
|
uint8_t player_in_air(void);
|
|
|
|
void audio_init(void);
|
|
|
|
void audio_reset(void);
|
|
|
|
#endif
|