void initState(int state) { if (state == STARTSCREEN) { loadPalette(startScreenPal); DMANow(3, startScreenTiles, &CHARBLOCKBASE[0], startScreenTilesLen); DMANow(3, startScreenMap, &SCREENBLOCKBASE[27], startScreenMapLen); DMANow(3, startScreenTiles, &CHARBLOCKBASE[1], startScreenTilesLen); DMANow(3, startScreenMap, &SCREENBLOCKBASE[25], startScreenMapLen); selector = 0; selectRow = 100; selectCol = 56; } else if (state == PAUSESCREEN) { loadPalette(startScreenPal); DMANow(3, pauseScreenTiles, &CHARBLOCKBASE[0], pauseScreenTilesLen); DMANow(3, pauseScreenMap, &SCREENBLOCKBASE[27], pauseScreenMapLen); DMANow(3, pauseScreenTiles, &CHARBLOCKBASE[1], pauseScreenTilesLen); DMANow(3, pauseScreenMap, &SCREENBLOCKBASE[25], pauseScreenMapLen); } else if (state == INSTRUCTIONSCREEN) { DMANow(3, instructionScreenTiles, &CHARBLOCKBASE[0], instructionScreenTilesLen); DMANow(3, instructionScreenMap, &SCREENBLOCKBASE[27], instructionScreenMapLen); DMANow(3, instructionScreenTiles, &CHARBLOCKBASE[1], instructionScreenTilesLen); DMANow(3, instructionScreenMap, &SCREENBLOCKBASE[25], instructionScreenMapLen); } else if (state == WINSCREEN) { loadPalette(startScreenPal); DMANow(3, winScreenTiles, &CHARBLOCKBASE[0], winScreenTilesLen); DMANow(3, winScreenMap, &SCREENBLOCKBASE[27], winScreenMapLen); DMANow(3, winScreenTiles, &CHARBLOCKBASE[1], winScreenTilesLen); DMANow(3, winScreenMap, &SCREENBLOCKBASE[25], winScreenMapLen); } else if (state == LOSESCREEN) { loadPalette(startScreenPal); DMANow(3, loseScreenTiles, &CHARBLOCKBASE[0], loseScreenTilesLen); DMANow(3, loseScreenMap, &SCREENBLOCKBASE[27], loseScreenMapLen); DMANow(3, loseScreenTiles, &CHARBLOCKBASE[1], loseScreenTilesLen); DMANow(3, loseScreenMap, &SCREENBLOCKBASE[25], loseScreenMapLen); } hideSprites(); clearShadowOAM(); if (state == PAUSESCREEN) { pauseSound(); } else { stopSound(); } REG_BG0HOFS = 0; REG_BG0VOFS = 0; REG_BG1HOFS = 0; }
// Level-independant setup logic void init() { REG_DISPCTL = MODE0 | BG2_ENABLE | SPRITE_ENABLE; REG_BG0CNT = CBB(0) | SBB(26) | BG_SIZE0 | COLOR256 | 0; // Priority 0 REG_BG1CNT = CBB(1) | SBB(27) | BG_SIZE0 | COLOR256 | 1; // Priority 1 REG_BG2CNT = CBB(2) | SBB(28) | BG_SIZE1 | COLOR256 | 2; // Priority 2 // Put Sprite on Screen loadSpritePalette(sprite_actorPal); DMANow(3, sprite_actorTiles, &CHARBLOCKBASE[4], sprite_actorTilesLen / 2); // DMA background 0 loadPalette(pause_screenPal); DMANow(3, pause_screenMap, &SCREENBLOCKBASE[26], pause_screenMapLen / 2); DMANow(3, pause_screenTiles, &CHARBLOCKBASE[0], pause_screenTilesLen / 2); // Initialize level-independant player values player.deltaRow = 1; player.deltaCol = 0; player.isRunning = 0; player.isJumping = 0; player.frameCount = 0; player.width = 16; player.height = 16; player.currentFrame = 0; player.facing = 0; // Facing to the right (1 is facing to the left) canJump = 0; // subject to change depending how beginning is designed hideSprites(); // Season-indicator icon position for all levels icon.row = 5; icon.col = 219; }