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
$ makeRequirements:
- 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_shmupThe API is basically a GBDK binding.
Some are not yet implemented.
./main.gomain file in project../main.cin gbdk../**.gosub file in project../**.cin gbdk../asset/**.goasset 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.