gbdk-go is a Go binding for GBDK. You can do GameBoy software development with Go.
gbdk-go compiles Go source code and outputs C code.
The output C code is built into GB ROM by GBDK.
package main
import "github.com/Akatsuki-py/gbdk-go/api/stdio"
func main() {
stdio.Printf("Hello World!")
stdio.Printf("\n\nPress Start")
}
The above Go code is compiled into the following C code.
#include <stdio.h>
void main() {
printf("Hello World!");
printf("\n\nPress Start");
}
You need to build binary from source.
Requirements:
- Go 1.14
- Make
$ git clone https://github.com/Akatsuki-py/gbdk-go.git
$ cd ./gbdk-go
$ make
Requirements:
- gbdk-go/gbdkgo
- gbdk-go/go2c
- gbdk-go/gbdk2020
They must be in the same directory.
If you are doing the above Install step, there should be no problem.
$ gbdkgo [options] dir
$ gbdkgo example/simple_shmup
The API is basically a GBDK binding.
Some are not yet implemented.
./main.go
main file in project../main.c
in gbdk../**.go
sub file in project../**.c
in gbdk../asset/**.go
asset file in project. these file is converted intoasset.h
You must create a Go directory project according to above format.
The directory structure also needs to be specific.
Although gbdk-go allows GB development with Go, there are some grammars such as defer and goroutine that cannot be used.
So I'm going to write a linter for gbdk-go.
gbdk-go outputs GB ROM with C in between.
When using C language, the performance is greatly inferior compared to the raw assembly.
You should read to_c_or_not_to_c.md.