milk_cool

Baba is SNES

Aug 27th, 2023
1,463
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.71 KB | None | 0 0
  1. #include <snes.h>
  2.  
  3. extern char tilfont, palfont;
  4. extern char gfxbaba, gfxbaba_end, palbaba, palbaba_end;
  5.  
  6. //---------------------------------------------------------------------------------
  7. int main(void) {
  8.     char baba_x = 0; // baba x
  9.     char baba_y = 0; // baba y
  10.     char baba_s = 0; // baba state
  11.     char baba_f = 0; // baba bigger frame
  12.     char baba_S = 0; // baba stage, smaller frame
  13.    
  14.    
  15.    
  16.     // Initialize SNES
  17.     consoleInit();
  18.  
  19.     // Initialize text console with our font
  20.     consoleSetTextVramBGAdr(0x6800);
  21.     consoleSetTextVramAdr(0x3000);
  22.     consoleSetTextOffset(0x0100);
  23.     consoleInitText(0, 16 * 2, &tilfont, &palfont);
  24.  
  25.     // Init background
  26.     bgSetGfxPtr(0, 0x2000);
  27.     bgSetMapPtr(0, 0x6800, SC_32x32);
  28.  
  29.     // Init sprites
  30.     oamInitGfxSet(&gfxbaba, (&gfxbaba_end-&gfxbaba), &palbaba, (&palbaba_end-&palbaba), 0, 0x16000, OBJ_SIZE32_L64);
  31.  
  32.     // Now Put in 16 color mode and disable Bgs except current
  33.     setMode(BG_MODE1, 0);
  34.     bgSetDisable(1);
  35.     bgSetDisable(2);
  36.  
  37.     // Draw a BABA
  38.    
  39.     oamSetEx(0, OBJ_SMALL, OBJ_SHOW);
  40.  
  41.     // Wait for nothing :P
  42.     setScreenOn();
  43.  
  44.     while (1)
  45.     {
  46.         baba_S += 1;
  47.         baba_S %= 60;
  48.         unsigned short int pad0 = padsCurrent(0);
  49.         if(pad0 && baba_S % 5 == 0) {
  50.             if(pad0 & KEY_UP) {
  51.                 baba_y -= 1;
  52.                 baba_s = 1;
  53.             }
  54.             if(pad0 & KEY_DOWN) {
  55.                 baba_y += 1;
  56.                 baba_s = 3;
  57.             }
  58.             if(pad0 & KEY_LEFT) {
  59.                 baba_x -= 1;
  60.                 baba_s = 2;
  61.             }
  62.             if(pad0 & KEY_RIGHT) {
  63.                 baba_x += 1;
  64.                 baba_s = 0;
  65.             }
  66.             baba_x %= 10;
  67.             baba_y %= 9;
  68.             baba_f += 1;
  69.             baba_f %= 4;
  70.         }
  71.         unsigned short int baba_p = baba_s * 4 * 3 + baba_f * 3 + baba_S / 20;
  72.         oamSet(0, baba_x * 24, baba_y * 24, 0, 0, 0, (baba_p / 4) * 64 + (baba_p % 4) * 4, 0);
  73.         WaitForVBlank();
  74.     }
  75.     return 0;
  76. }
Advertisement
Add Comment
Please, Sign In to add comment