Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*********************************************************************
- *
- * main.c
- *
- ********************************************************************/
- #include "myLib.h"
- #include "background1.h"
- #include "background2.h"
- #include "lightning.h"
- #include <stdio.h>
- #define SPRITEOFFSET16(r,c) (r)*32+(c)
- #define SPRITEOFFSET256(r,c) (r)*16+(c)
- #define MASKCOL (0x1FF)
- #define MASKROW (0xFF)
- #define MAXWIDTH 239
- #define MAXHEIGHT 159
- #define BG1 1
- #define BG2 2
- int state;
- int main(void)
- {
- int state = BG1;
- int voff = 0; // These two variables store our values for vertical
- int hoff = 0; // and horizontal offset. During vblank we will
- // store these values into the appropriate hardware
- // register
- /*****************************************************************
- *
- * Step 4 -- Store Tile Images
- *
- ****************************************************************/
- DMA[3].src = background1Tiles;
- DMA[3].dst = CHARBLOCKBASE;
- DMA[3].cnt = background1TilesLen | DMA_ON;
- /*****************************************************************
- *
- * Step 5 -- Store map
- *
- ****************************************************************/
- DMA[3].src = background1Map;
- DMA[3].dst = SCREENBLOCKBASE + 27;
- DMA[3].cnt = background1MapLen | DMA_ON;
- /*****************************************************************
- *
- * Step 6 -- Store palette
- *
- ****************************************************************/
- DMA[3].src = background1Pal;
- DMA[3].dst = PALETTE;
- DMA[3].cnt = background1PalLen | DMA_ON;
- /*****************************************************************
- *
- * Step 7 -- Set image controls
- *
- ****************************************************************/
- REG_DISPCTL = MODE0 | BG0_ENABLE | OBJ_ENABLE;
- REG_BG0HOFS = 0;
- REG_BG0VOFS = 0;
- DMA[3].src = lightningTiles;
- DMA[3].dst = &CHARBLOCKBASE[4];
- DMA[3].cnt = lightningTilesLen/2 | DMA_ON;
- DMA[3].src = lightningPal;
- DMA[3].dst = SPRITEPAL;
- DMA[3].cnt = 256 | DMA_ON;
- ObjAttr shadowOAM[128];
- int spriteCol= 40;
- int spriteRow = (160-48);
- int i;
- int direction = 1;
- for(i=0; i<128; i++)
- {
- shadowOAM[i].attr0 = ATTR0_HIDE;
- }
- shadowOAM[0].attr0 = spriteRow | ATTR0_TALL | ATTR0_REG | ATTR0_4BPP;
- shadowOAM[0].attr1 = spriteCol | ATTR1_SIZE64 | ATTR1_NOFLIP;
- //shadowOAM[0].attr2 = SPRITEOFFSET16(0,0) | ATTR2_PALETTE_BANK
- REG_BG0CNT = BG_SIZE0 | SBB(27) | COLOR256 | CBB(0);
- while(1)
- {
- switch(state)
- {
- case BG1:
- {
- if(KEY_DOWN_NOW(BUTTON_LEFT)){
- hoff--;
- spriteCol--;
- direction = -1;
- }
- if(KEY_DOWN_NOW(BUTTON_RIGHT)){
- hoff++;
- spriteCol++;
- direction = 1;
- }
- if(KEY_DOWN_NOW(BUTTON_UP)){
- voff--;
- if (voff < 0){
- voff = 0;
- }
- }
- if(KEY_DOWN_NOW(BUTTON_DOWN)){
- voff++;
- if (voff > 256-MAXHEIGHT){
- voff = 256-MAXHEIGHT;
- }
- }
- waitForVblank();
- REG_BG0HOFS = hoff;
- REG_BG0VOFS = voff;
- if(KEY_DOWN_NOW(BUTTON_START))
- {
- /*****************************************************************
- *
- * Step 4 -- Store Tile Images
- *
- ****************************************************************/
- DMA[3].src = background2Tiles;
- DMA[3].dst = CHARBLOCKBASE;
- DMA[3].cnt = background2TilesLen | DMA_ON;
- /*****************************************************************
- *
- * Step 5 -- Store map
- *
- ****************************************************************/
- DMA[3].src = background2Map;
- DMA[3].dst = SCREENBLOCKBASE + 27;
- DMA[3].cnt = background2MapLen | DMA_ON;
- /*****************************************************************
- *
- * Step 6 -- Store palette
- *
- ****************************************************************/
- DMA[3].src = background2Pal;
- DMA[3].dst = PALETTE;
- DMA[3].cnt = background2PalLen | DMA_ON;
- /*****************************************************************
- *
- * Step 7 -- Set image controls
- *
- ****************************************************************/
- REG_DISPCTL = MODE0 | BG0_ENABLE;
- REG_BG0HOFS = 0;
- REG_BG0VOFS = 0;
- REG_BG0CNT = BG_SIZE0 | SBB(27) | COLOR256 | CBB(0);
- state = BG2;
- }
- break;
- }
- case BG2:
- {
- if(KEY_DOWN_NOW(BUTTON_LEFT)){
- hoff--;
- //if (hoff <= 0){
- //hoff = 0;
- //}
- }
- if(KEY_DOWN_NOW(BUTTON_RIGHT)){
- hoff++;
- //if (hoff > 256-MAXWIDTH){
- //hoff = 256-MAXWIDTH;
- //}
- }
- if(KEY_DOWN_NOW(BUTTON_UP)){
- voff--;
- if (voff < 0){
- voff = 0;
- }
- }
- if(KEY_DOWN_NOW(BUTTON_DOWN)){
- voff++;
- if (voff > 256-MAXHEIGHT){
- voff = 256-MAXHEIGHT;
- }
- }
- waitForVblank();
- REG_BG0HOFS = hoff;
- REG_BG0VOFS = voff;
- if(KEY_DOWN_NOW(BUTTON_START))
- {
- /*****************************************************************
- *
- * Step 4 -- Store Tile Images
- *
- ****************************************************************/
- DMA[3].src = background1Tiles;
- DMA[3].dst = CHARBLOCKBASE;
- DMA[3].cnt = background1TilesLen | DMA_ON;
- /*****************************************************************
- *
- * Step 5 -- Store map
- *
- ****************************************************************/
- DMA[3].src = background1Map;
- DMA[3].dst = SCREENBLOCKBASE + 27;
- DMA[3].cnt = background1MapLen | DMA_ON;
- /*****************************************************************
- *
- * Step 6 -- Store palette
- *
- ****************************************************************/
- DMA[3].src = background1Pal;
- DMA[3].dst = PALETTE;
- DMA[3].cnt = background1PalLen | DMA_ON;
- /*****************************************************************
- *
- * Step 7 -- Set image controls
- *
- ****************************************************************/
- REG_DISPCTL = MODE0 | BG0_ENABLE;
- REG_BG0HOFS = 0;
- REG_BG0VOFS = 0;
- REG_BG0CNT = BG_SIZE0 | SBB(27) | COLOR256 | CBB(0);
- state = BG1;
- }
- break;
- }
- }
- if(KEY_DOWN_NOW(BUTTON_LEFT)){
- hoff--;
- spriteCol--;
- direction = -1;
- }
- if(KEY_DOWN_NOW(BUTTON_RIGHT)){
- hoff++;
- spriteCol++;
- direction = 1;
- }
- if(KEY_DOWN_NOW(BUTTON_UP)){
- voff--;
- if (voff < 0){
- voff = 0;
- }
- }
- if(KEY_DOWN_NOW(BUTTON_DOWN)){
- voff++;
- if (voff > 256-MAXHEIGHT){
- voff = 256-MAXHEIGHT;
- }
- }
- waitForVblank();
- REG_BG0HOFS = hoff;
- REG_BG0VOFS = voff;
- }
- return 0;
- }
Add Comment
Please, Sign In to add comment