51 lines
1.2 KiB
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
|
|
}
|
|
}
|