git.y1.nz

gbdk-2020

GameBoy Development Kit
download: https://git.y1.nz/archives/gbdk.tar.gz
README | Files | Log | Refs | LICENSE

gbdk-lib/examples/msxdos/smoke/smoketest.c

      1 #include <gbdk/platform.h>
      2 
      3 BANKREF_EXTERN(earth_data)
      4 extern const unsigned char earth_data[];
      5 
      6 BANKREF_EXTERN(earth_data_size)
      7 extern const unsigned int earth_data_size;
      8 
      9 const uint8_t tilemap[] = {2, 4, 6, 8, 3, 5, 7, 9};
     10 const uint16_t tilemapw[] = {2, 4, 6, 8, 3, 5, 7, 9};
     11 
     12 uint16_t banked_func(uint8_t be, uint8_t ef) BANKED;
     13 
     14 int16_t x = 8 << 4, y = 0;
     15 int8_t xspd = 0, yspd  = 0;
     16 
     17 uint8_t anim = 0, tick = 0;
     18 
     19 uint8_t joy;
     20 void main(void) {
     21 //    HIDE_LEFT_COLUMN;
     22 //    SPRITES_8x16;
     23     DISPLAY_ON;
     24 
     25 //  vmemcpy(0x4000, earth_data, sizeof(earth_data));
     26 
     27     SWITCH_ROM(BANK(earth_data));
     28     if (banked_func(0xBE, 0xEF) == 0xBEEF) {
     29         set_bkg_data(2, earth_data_size >> 4, earth_data);
     30         set_sprite_data(0, earth_data_size >> 4, earth_data);
     31         set_sprite_tile(0, 0);
     32         set_sprite_tile(1, 2);
     33     }
     34 
     35     set_bkg_tiles(4, 10, 4, 2, tilemap);
     36 
     37     set_tile_map(4, 16, 4, 2, tilemapw);
     38 
     39     while(TRUE) {
     40         joy = joypad();
     41 
     42         if (joy & J_LEFT) {            
     43             if (xspd > -32) xspd -= 2; 
     44         } else if (joy & J_RIGHT) {
     45             if (xspd < 32) xspd += 2;
     46         } else {
     47             if (xspd < 0) xspd++; else if (xspd > 0) xspd--;            
     48         }
     49         
     50         if (joy & J_UP) {
     51             if (yspd > -32) yspd -= 2; 
     52         } else if (joy & J_DOWN) {
     53             if (yspd < 32) yspd += 2;
     54         } else {
     55             if (yspd < 0) yspd++; else if (yspd > 0) yspd--;
     56         }
     57 
     58         x += xspd;
     59         if (x < (8 << 4)) x = 8 << 4; else if (x > (30 * 8) << 4) x = (30 * 8) << 4;
     60 
     61         
     62         y += yspd;
     63         if (y < 0) y = 0; else if (y > (22 * 8) << 4) y = (22 * 8) << 4;
     64         
     65         tick++; tick &= 7;
     66         if (!tick) {
     67             anim++; if (anim == 7) anim = 0;
     68             set_sprite_tile(0, anim << 2);
     69             set_sprite_tile(1, (anim << 2) + 2);
     70         }
     71 
     72         move_sprite(0, x >> 4, y >> 4);
     73         move_sprite(1, (x >> 4) + 8, y >> 4);
     74 /*
     75         if (joy & J_LEFT) {
     76             scroll_bkg(-1, 0);
     77         } else if (joy.joy1 & J_RIGHT) {
     78             scroll_bkg(1, 0);
     79         }
     80         if (joy & J_UP) {
     81             scroll_bkg(0, -1);
     82         } else if (joy.joy1 & J_DOWN) {
     83             scroll_bkg(0, 1);
     84         }
     85 */        
     86         vsync();
     87     }
     88 }

This webpage is intended to be an accessible preview of this repository. To get a fuller picture, clone it and use the git CLI.