n64tutorial/main.go

51 lines
1.2 KiB
Go

package main
import (
"fmt"
"image"
"image/color"
"github.com/clktmr/n64/drivers/controller"
"github.com/clktmr/n64/drivers/display"
"github.com/clktmr/n64/drivers/draw"
"github.com/clktmr/n64/fonts/gomono12"
_ "github.com/clktmr/n64/machine"
"github.com/clktmr/n64/rcp/video"
)
var face = gomono12.NewFace()
var background = &image.Uniform{color.RGBA{0x7f, 0x7f, 0xaf, 0x0}}
func main() {
// Enable video output
video.Setup(false)
// Allocate framebuffer
display := display.NewDisplay(image.Pt(320, 240), video.BPP16)
controllers := make(chan [4]controller.Controller)
go func() {
var states [4]controller.Controller
for {
controller.Poll(&states)
controllers <- states
}
}()
for {
fb := display.Swap() // Blocks until next VBlank
input := <-controllers
textarea := fb.Bounds().Inset(15)
pt := textarea.Min.Add(image.Pt(0, int(face.Ascent)))
draw.Src.Draw(fb, fb.Bounds(), background, fb.Bounds().Min)
text := fmt.Appendln(nil, "N⁶⁴ - Get N or Get Out ♫")
text = fmt.Appendln(text, input[0].Down())
pt = draw.DrawText(fb, textarea, face, pt, image.Black, nil, text)
draw.Flush() // Blocks until everything is drawn
}
}