This commit is contained in:
parent
97a4855bea
commit
edac661d26
@ -10,6 +10,7 @@ const graphicsBufferSize = 64 * 32
|
||||
type Chip8 struct {
|
||||
addressRegister uint16
|
||||
beepTimer byte
|
||||
beepRequired bool
|
||||
drawRequired bool
|
||||
delayTimer byte
|
||||
graphics [graphicsBufferSize]byte
|
||||
@ -70,11 +71,22 @@ func (cpu *Chip8) TickTimers() {
|
||||
if cpu.delayTimer > 0 {
|
||||
cpu.delayTimer--
|
||||
}
|
||||
if cpu.beepTimer > 0 {
|
||||
if cpu.beepTimer == 1 {
|
||||
cpu.beepRequired = true
|
||||
cpu.beepTimer--
|
||||
} else if cpu.beepTimer > 1 {
|
||||
cpu.beepTimer--
|
||||
}
|
||||
}
|
||||
|
||||
func (cpu *Chip8) BeepNeeded() bool {
|
||||
if cpu.beepRequired == true {
|
||||
cpu.beepRequired = false
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (cpu *Chip8) zeroIndexOpcodes() {
|
||||
if cpu.opcode == 0x00E0 {
|
||||
// fuck it the gc can do the hard work for us
|
||||
|
@ -22,7 +22,7 @@ var drawBuf = [64 * 32]byte{}
|
||||
var drawNeeded = false
|
||||
var graphicsLock sync.Mutex
|
||||
var keysLock sync.Mutex
|
||||
var window js.Value
|
||||
var window, beep js.Value
|
||||
var keys [16]byte
|
||||
var gameRunning = true
|
||||
|
||||
@ -45,10 +45,10 @@ var keyMap = map[int]int{
|
||||
86: 15, // v
|
||||
}
|
||||
|
||||
var gameMap = map[string]func() []byte {
|
||||
"pong": getPong,
|
||||
var gameMap = map[string]func() []byte{
|
||||
"pong": getPong,
|
||||
"spaceinv": getSpaceInvaders,
|
||||
"tetris": getTetris,
|
||||
"tetris": getTetris,
|
||||
}
|
||||
|
||||
func keyEventHandle(event js.Value) {
|
||||
@ -81,6 +81,10 @@ func cpuCycle(cpu *chip8.Chip8, c chan int, i int) {
|
||||
cpu.TickTimers()
|
||||
//println("here!")
|
||||
}
|
||||
if cpu.BeepNeeded() {
|
||||
go playSound()
|
||||
}
|
||||
|
||||
c <- 1
|
||||
}
|
||||
|
||||
@ -95,7 +99,7 @@ func runGame(game []byte) {
|
||||
for gameRunning {
|
||||
c := make(chan int)
|
||||
go timeCycle(c)
|
||||
i ++
|
||||
i++
|
||||
go cpuCycle(cpu, c, i)
|
||||
if i > 7 {
|
||||
i = 0
|
||||
@ -125,10 +129,17 @@ func changeGame(event js.Value) {
|
||||
}
|
||||
}
|
||||
|
||||
func playSound() {
|
||||
beep.Call("play")
|
||||
//window.Get("navigator").Call("vibrate", 300)
|
||||
}
|
||||
|
||||
func main() {
|
||||
println("CHIP8 IS HERE!")
|
||||
window = js.Global()
|
||||
|
||||
beep = window.Get("Audio").New("data:audio/mp3;base64,SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU2LjI1LjEwMQAAAAAAAAAAAAAA/+NAwAAAAAAAAAAAAFhpbmcAAAAPAAAAAwAAA3YAlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaW8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw////////////////////////////////////////////AAAAAExhdmYAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAN2UrY2LgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/jYMQAEvgiwl9DAAAAO1ALSi19XgYG7wIAAAJOD5R0HygIAmD5+sEHLB94gBAEP8vKAgGP/BwMf+D4Pgh/DAPg+D5//y4f///8QBhMQBgEAfB8HwfAgIAgAHAGCFAj1fYUCZyIbThYFExkefOCo8Y7JxiQ0mGVaHKwwGCtGCUkY9OCugoFQwDKqmHQiUCxRAKOh4MjJFAnTkq6QqFGavRpYUCmMxpZnGXJa0xiJcTGZb1gJjwOJDJgoUJG5QQuDAsypiumkp5TUjrOobR2liwoGBf/X1nChmipnKVtSmMNQDGitG1fT/JhR+gYdCvy36lTrxCVV8Paaz1otLndT2fZuOMp3VpatmVR3LePP/8bSQpmhQZECqWsFeJxoepX9dbfHS13/////aysppUblm//8t7p2Ez7xKD/42DE4E5z9pr/nNkRw6bhdiCAZVVSktxunhxhH//4xF+bn4//6//3jEvylMM2K9XmWSn3ah1L2MqVIjmNlJtpQux1n3ajA0ZnFSu5EpX////uGatn///////1r/pYabq0mKT//TRyTEFNRTMuOTkuNaqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq/+MQxNIAAANIAcAAAKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqg==")
|
||||
|
||||
window.Call("addEventListener", "keydown", js.FuncOf(func(this js.Value, args []js.Value) interface{} {
|
||||
keyEventHandle(args[0])
|
||||
return nil
|
||||
|
Loading…
x
Reference in New Issue
Block a user