Guest User

Untitled

a guest
Jul 17th, 2018
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.77 KB | None | 0 0
  1. /*********************************************************************
  2. *
  3. * main.c
  4. *
  5. ********************************************************************/
  6.  
  7. #include "myLib.h"
  8. #include "background1.h"
  9. #include "background2.h"
  10. #include "lightning.h"
  11. #include <stdio.h>
  12.  
  13. #define SPRITEOFFSET16(r,c) (r)*32+(c)
  14. #define SPRITEOFFSET256(r,c) (r)*16+(c)
  15. #define MASKCOL (0x1FF)
  16. #define MASKROW (0xFF)
  17. #define MAXWIDTH 239
  18. #define MAXHEIGHT 159
  19.  
  20. #define BG1 1
  21. #define BG2 2
  22.  
  23. int state;
  24.  
  25. int main(void)
  26. {
  27. int state = BG1;
  28. int voff = 0; // These two variables store our values for vertical
  29. int hoff = 0; // and horizontal offset. During vblank we will
  30. // store these values into the appropriate hardware
  31. // register
  32. /*****************************************************************
  33. *
  34. * Step 4 -- Store Tile Images
  35. *
  36. ****************************************************************/
  37. DMA[3].src = background1Tiles;
  38. DMA[3].dst = CHARBLOCKBASE;
  39. DMA[3].cnt = background1TilesLen | DMA_ON;
  40. /*****************************************************************
  41. *
  42. * Step 5 -- Store map
  43. *
  44. ****************************************************************/
  45. DMA[3].src = background1Map;
  46. DMA[3].dst = SCREENBLOCKBASE + 27;
  47. DMA[3].cnt = background1MapLen | DMA_ON;
  48.  
  49. /*****************************************************************
  50. *
  51. * Step 6 -- Store palette
  52. *
  53. ****************************************************************/
  54. DMA[3].src = background1Pal;
  55. DMA[3].dst = PALETTE;
  56. DMA[3].cnt = background1PalLen | DMA_ON;
  57.  
  58. /*****************************************************************
  59. *
  60. * Step 7 -- Set image controls
  61. *
  62. ****************************************************************/
  63. REG_DISPCTL = MODE0 | BG0_ENABLE | OBJ_ENABLE;
  64. REG_BG0HOFS = 0;
  65. REG_BG0VOFS = 0;
  66.  
  67. DMA[3].src = lightningTiles;
  68. DMA[3].dst = &CHARBLOCKBASE[4];
  69. DMA[3].cnt = lightningTilesLen/2 | DMA_ON;
  70.  
  71. DMA[3].src = lightningPal;
  72. DMA[3].dst = SPRITEPAL;
  73. DMA[3].cnt = 256 | DMA_ON;
  74.  
  75. ObjAttr shadowOAM[128];
  76.  
  77. int spriteCol= 40;
  78. int spriteRow = (160-48);
  79.  
  80. int i;
  81.  
  82. int direction = 1;
  83.  
  84. for(i=0; i<128; i++)
  85. {
  86. shadowOAM[i].attr0 = ATTR0_HIDE;
  87. }
  88.  
  89. shadowOAM[0].attr0 = spriteRow | ATTR0_TALL | ATTR0_REG | ATTR0_4BPP;
  90. shadowOAM[0].attr1 = spriteCol | ATTR1_SIZE64 | ATTR1_NOFLIP;
  91. //shadowOAM[0].attr2 = SPRITEOFFSET16(0,0) | ATTR2_PALETTE_BANK
  92.  
  93. REG_BG0CNT = BG_SIZE0 | SBB(27) | COLOR256 | CBB(0);
  94.  
  95. while(1)
  96. {
  97. switch(state)
  98. {
  99. case BG1:
  100. {
  101.  
  102. if(KEY_DOWN_NOW(BUTTON_LEFT)){
  103. hoff--;
  104. spriteCol--;
  105. direction = -1;
  106. }
  107. if(KEY_DOWN_NOW(BUTTON_RIGHT)){
  108. hoff++;
  109. spriteCol++;
  110. direction = 1;
  111. }
  112. if(KEY_DOWN_NOW(BUTTON_UP)){
  113. voff--;
  114. if (voff < 0){
  115. voff = 0;
  116. }
  117. }
  118. if(KEY_DOWN_NOW(BUTTON_DOWN)){
  119. voff++;
  120. if (voff > 256-MAXHEIGHT){
  121. voff = 256-MAXHEIGHT;
  122. }
  123. }
  124. waitForVblank();
  125. REG_BG0HOFS = hoff;
  126. REG_BG0VOFS = voff;
  127.  
  128. if(KEY_DOWN_NOW(BUTTON_START))
  129. {
  130. /*****************************************************************
  131. *
  132. * Step 4 -- Store Tile Images
  133. *
  134. ****************************************************************/
  135. DMA[3].src = background2Tiles;
  136. DMA[3].dst = CHARBLOCKBASE;
  137. DMA[3].cnt = background2TilesLen | DMA_ON;
  138. /*****************************************************************
  139. *
  140. * Step 5 -- Store map
  141. *
  142. ****************************************************************/
  143. DMA[3].src = background2Map;
  144. DMA[3].dst = SCREENBLOCKBASE + 27;
  145. DMA[3].cnt = background2MapLen | DMA_ON;
  146.  
  147. /*****************************************************************
  148. *
  149. * Step 6 -- Store palette
  150. *
  151. ****************************************************************/
  152. DMA[3].src = background2Pal;
  153. DMA[3].dst = PALETTE;
  154. DMA[3].cnt = background2PalLen | DMA_ON;
  155.  
  156. /*****************************************************************
  157. *
  158. * Step 7 -- Set image controls
  159. *
  160. ****************************************************************/
  161. REG_DISPCTL = MODE0 | BG0_ENABLE;
  162. REG_BG0HOFS = 0;
  163. REG_BG0VOFS = 0;
  164.  
  165. REG_BG0CNT = BG_SIZE0 | SBB(27) | COLOR256 | CBB(0);
  166. state = BG2;
  167. }
  168.  
  169. break;
  170. }
  171.  
  172. case BG2:
  173. {
  174. if(KEY_DOWN_NOW(BUTTON_LEFT)){
  175. hoff--;
  176. //if (hoff <= 0){
  177. //hoff = 0;
  178. //}
  179. }
  180. if(KEY_DOWN_NOW(BUTTON_RIGHT)){
  181. hoff++;
  182. //if (hoff > 256-MAXWIDTH){
  183. //hoff = 256-MAXWIDTH;
  184. //}
  185. }
  186. if(KEY_DOWN_NOW(BUTTON_UP)){
  187. voff--;
  188. if (voff < 0){
  189. voff = 0;
  190. }
  191. }
  192. if(KEY_DOWN_NOW(BUTTON_DOWN)){
  193. voff++;
  194. if (voff > 256-MAXHEIGHT){
  195. voff = 256-MAXHEIGHT;
  196. }
  197. }
  198. waitForVblank();
  199. REG_BG0HOFS = hoff;
  200. REG_BG0VOFS = voff;
  201.  
  202. if(KEY_DOWN_NOW(BUTTON_START))
  203. {
  204. /*****************************************************************
  205. *
  206. * Step 4 -- Store Tile Images
  207. *
  208. ****************************************************************/
  209. DMA[3].src = background1Tiles;
  210. DMA[3].dst = CHARBLOCKBASE;
  211. DMA[3].cnt = background1TilesLen | DMA_ON;
  212. /*****************************************************************
  213. *
  214. * Step 5 -- Store map
  215. *
  216. ****************************************************************/
  217. DMA[3].src = background1Map;
  218. DMA[3].dst = SCREENBLOCKBASE + 27;
  219. DMA[3].cnt = background1MapLen | DMA_ON;
  220.  
  221. /*****************************************************************
  222. *
  223. * Step 6 -- Store palette
  224. *
  225. ****************************************************************/
  226. DMA[3].src = background1Pal;
  227. DMA[3].dst = PALETTE;
  228. DMA[3].cnt = background1PalLen | DMA_ON;
  229.  
  230. /*****************************************************************
  231. *
  232. * Step 7 -- Set image controls
  233. *
  234. ****************************************************************/
  235. REG_DISPCTL = MODE0 | BG0_ENABLE;
  236. REG_BG0HOFS = 0;
  237. REG_BG0VOFS = 0;
  238.  
  239. REG_BG0CNT = BG_SIZE0 | SBB(27) | COLOR256 | CBB(0);
  240.  
  241. state = BG1;
  242. }
  243.  
  244. break;
  245. }
  246. }
  247.  
  248. if(KEY_DOWN_NOW(BUTTON_LEFT)){
  249. hoff--;
  250. spriteCol--;
  251. direction = -1;
  252. }
  253. if(KEY_DOWN_NOW(BUTTON_RIGHT)){
  254. hoff++;
  255. spriteCol++;
  256. direction = 1;
  257. }
  258. if(KEY_DOWN_NOW(BUTTON_UP)){
  259. voff--;
  260. if (voff < 0){
  261. voff = 0;
  262. }
  263. }
  264. if(KEY_DOWN_NOW(BUTTON_DOWN)){
  265. voff++;
  266. if (voff > 256-MAXHEIGHT){
  267. voff = 256-MAXHEIGHT;
  268. }
  269. }
  270. waitForVblank();
  271. REG_BG0HOFS = hoff;
  272. REG_BG0VOFS = voff;
  273.  
  274. }
  275.  
  276. return 0;
  277. }
Add Comment
Please, Sign In to add comment