#include <string.h>
|
|
|
|
#include "game.h"
|
|
#include "sdk/assets.h"
|
|
#include "sdk/hardware.h"
|
|
#include "sdk/joypad.h"
|
|
#include "sdk/oam.h"
|
|
#include "sdk/video.h"
|
|
|
|
ASSET(bg_tiles, "bg/title.2bpp");
|
|
ASSET(bg_map, "bg/title.map");
|
|
|
|
void title(void) {
|
|
// NOTE: Replace with lcdc_off() if necessary
|
|
rLCDC &= ~LCDC_ON;
|
|
|
|
// Copy title screen to VRAM
|
|
memcpy((uint8_t *)_VRAM, &bg_tiles[0], bg_tiles_end - bg_tiles);
|
|
|
|
uint8_t *vram_ptr = (uint8_t *)_SCRN0;
|
|
const uint8_t *map_ptr = &bg_map[0];
|
|
|
|
for (uint8_t y = 0; y < SCRN_Y_B; ++y) {
|
|
memcpy(vram_ptr, map_ptr, SCRN_X_B);
|
|
vram_ptr += SCRN_VX_B;
|
|
map_ptr += SCRN_X_B;
|
|
}
|
|
|
|
rLCDC |= LCDC_ON;
|
|
interrupts_enable();
|
|
|
|
while (1) {
|
|
joypad_update();
|
|
if (joypad_state & PAD_START) {
|
|
game_state = GAME_STATE_LEVEL;
|
|
break;
|
|
}
|
|
|
|
// Wait for VBLANK. Clear IF since global interrupts are disabled.
|
|
HALT();
|
|
rIF = 0;
|
|
}
|
|
}
|