gbdk-2020 | GameBoy Development Kit |
| download: https://git.y1.nz/archives/gbdk.tar.gz | |
| README | Files | Log | Refs | LICENSE |
gbdk-lib/examples/cross-platform/banks_autobank/src/banks.c
1 #include <gbdk/platform.h>
2 #include <stdint.h>
3 #include <stdio.h>
4
5 // The header files below include provide bank references for the
6 // banked const vars and functions in the other source files
7 #include "srcfile_1.h"
8 #include "srcfile_2.h"
9 #include "srcfile_3.h"
10 #include "srcfile_4_not-autobanked.h"
11
12
13 // Non-banked const
14 const uint8_t some_const_var_0 = 0;
15
16 // Non-banked function
17 void bank_fixed(void) NONBANKED
18 {
19 puts("I'm in fixed ROM");
20 }
21
22 void main(void)
23 {
24 uint8_t _saved_bank;
25
26 #if !defined(MSXDOS) && !defined(NINTENDO_NES) // TODO
27 set_default_palette();
28 #endif
29 printf("Program Start...\n\n");
30
31 // Call the functions, unbanked first then the banked ones
32 bank_fixed();
33
34 func_1();
35 func_2();
36 func_3();
37 func_4();
38
39 printf("\n");
40
41
42 // Print the const vars, unbanked first then the banked ones
43 printf("Const0= %u nonbanked\n", some_const_var_0);
44
45 SWITCH_ROM(BANK(some_const_var_1));
46 printf("Const1= %u in bank %hu\n", some_const_var_1, BANK(some_const_var_1));
47 SWITCH_ROM(BANK(some_const_var_2));
48 printf("Const2= %u in bank %hu\n", some_const_var_2, BANK(some_const_var_2));
49 SWITCH_ROM(BANK(some_const_var_3));
50 printf("Const3= %u in bank %hu\n", some_const_var_3, BANK(some_const_var_3));
51
52 // If you want to temporarily save and then restore the previous active bank:
53 //
54
55 // Save the currently active bank
56 _saved_bank = CURRENT_BANK;
57
58 // Switch to the desired one
59 SWITCH_ROM(BANK(some_const_var_4));
60 printf("Const4= %u in bank %hu\n", some_const_var_4, BANK(some_const_var_4));
61
62 // Then restore the previous bank
63 SWITCH_ROM(_saved_bank);
64
65
66
67 printf("\n");
68 puts("The End...");
69
70 // Loop forever
71 while(1) {
72
73 // Yield CPU till the end of each frame
74 vsync();
75 }
76 }
This webpage is intended to be an accessible preview of this repository. To get a fuller picture, clone it and use the git CLI.