gbdk-2020 | GameBoy Development Kit |
| download: https://git.y1.nz/archives/gbdk.tar.gz | |
| README | Files | Log | Refs | LICENSE |
commit ba3dc955729f01959709861fcd7423682b349dbe parent c472f674631b1c599c31f1e84685f2f3b8a0a264 Author: Toxa <untoxa@mail.ru> Date: Sun, 18 Jul 2021 22:07:42 +0300 use BANKREF/BANKREF_EXTERN macros in banks_farptr example Diffstat:
| M | gbdk-lib/examples/gb/banks_farptr/Makefile | 4 | ++-- |
| M | gbdk-lib/examples/gb/banks_farptr/bank2code.c | 4 | +++- |
| M | gbdk-lib/examples/gb/banks_farptr/banks_farptr.c | 13 | +++++++------ |
3 files changed, 12 insertions(+), 9 deletions(-)
diff --git a/gbdk-lib/examples/gb/banks_farptr/Makefile b/gbdk-lib/examples/gb/banks_farptr/Makefile @@ -27,8 +27,8 @@ clean: # Banks using Far pointers example bank2code.o: bank2code.c - $(CC) -Wf-bo1 -c -o $@ $< + $(CC) -c -o $@ $< banks_farptr.gb: banks_farptr.o bank2code.o - $(CC) -Wl-yt1 -Wl-yo4 -o $@ bank2code.o banks_farptr.o + $(CC) -Wl-yt0x19 -Wl-yoA -o $@ bank2code.o banks_farptr.o diff --git a/gbdk-lib/examples/gb/banks_farptr/bank2code.c b/gbdk-lib/examples/gb/banks_farptr/bank2code.c @@ -4,15 +4,17 @@ #include <stdint.h> #include <stdio.h> -int local_bank2_proc(int param1, int param2) { +static int local_bank2_proc(int param1, int param2) { printf(" sum: %d (bank=%d)\n", param1 + param2, (int)_current_bank); return (param1 + param2) << 1; } +BANKREF(some_bank2_proc0) void some_bank2_proc0() __banked { printf("some_bank2_proc0\n"); } +BANKREF(some_bank2_proc1) int some_bank2_proc1(int param1, int param2) __banked { printf("some_bank2_proc1\n"); return local_bank2_proc(param1, param2); diff --git a/gbdk-lib/examples/gb/banks_farptr/banks_farptr.c b/gbdk-lib/examples/gb/banks_farptr/banks_farptr.c @@ -4,12 +4,13 @@ #include <stdio.h> -typedef int (*some_bank2_proc_t)(int, int) __banked; - // functions from bank2code.c -#define bank2code_bank 2 +BANKREF_EXTERN(some_bank2_proc0) extern void some_bank2_proc0() __banked; + +BANKREF_EXTERN(some_bank2_proc1) extern int some_bank2_proc1(int param1, int param2) __banked; +typedef int (*some_bank2_proc_t)(int, int) __banked; // define type for some_bank2_proc1() function // far pointers FAR_PTR farptr_var0, farptr_var1, farptr_var2; @@ -19,9 +20,9 @@ int res; void run() { // compose far pointer at runtime - farptr_var0 = to_far_ptr(&some_bank2_proc1, bank2code_bank); - farptr_var1 = to_far_ptr(&some_bank2_proc1, bank2code_bank); - farptr_var2 = to_far_ptr(&some_bank2_proc0, bank2code_bank); + farptr_var0 = to_far_ptr(some_bank2_proc1, BANK(some_bank2_proc1)); + farptr_var1 = to_far_ptr(some_bank2_proc1, BANK(some_bank2_proc1)); + farptr_var2 = to_far_ptr(some_bank2_proc0, BANK(some_bank2_proc0)); // output far pointers (must be identical) printf("FAR PTR0: %x:%x\n", (int)FAR_SEG(farptr_var0), (int)FAR_OFS(farptr_var0));
This webpage is intended to be an accessible preview of this repository. To get a fuller picture, clone it and use the git CLI.