From 6948e84b321152026be77b0e06c2cf1a5f7f6123 Mon Sep 17 00:00:00 2001 From: radumacocian Date: Thu, 17 Apr 2025 18:02:33 +0200 Subject: [PATCH] basic memory and cpu --- README.md | 9 ++++++-- cpu/cpu.go | 29 +++++++++++++++++++++++++ errorHandling/exceptions.go | 5 +++++ gameboy.go | 39 ++++++++++++++++++++++++++++++++++ journal/Day 1 - 2025.04.17.md | 22 +++++++++++++++++++ journal/assets/day1.png | Bin 0 -> 92650 bytes memory/memory.go | 35 ++++++++++++++++++++++++++++++ roms/rom.gb | 1 + 8 files changed, 138 insertions(+), 2 deletions(-) create mode 100644 cpu/cpu.go create mode 100644 errorHandling/exceptions.go create mode 100644 gameboy.go create mode 100644 journal/Day 1 - 2025.04.17.md create mode 100644 journal/assets/day1.png create mode 100644 memory/memory.go create mode 100644 roms/rom.gb diff --git a/README.md b/README.md index 2bcfe15..246ecf0 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,7 @@ -# goboy -Gameboy emulator in go +# GoBoy +As an effort to improve my technical abilities and a challenge to myself +I've decided to start writing a GameBoy emulator in go. +This is the first time I've ever written an emulator \(outside of university +classes on FPGA emulation\). This is also my first project written in go. +I will be documenting everything in a series of blogs on my +[Personal Website](https://radu.macocian.me/GoBoy/) \ No newline at end of file diff --git a/cpu/cpu.go b/cpu/cpu.go new file mode 100644 index 0000000..9651473 --- /dev/null +++ b/cpu/cpu.go @@ -0,0 +1,29 @@ +package cpu + +import ( + "radu.macocian.me/goboy/memory" +) + +type cpu_struct struct { + A int8 + F int8 + B int8 + C int8 + D int8 + E int8 + H int8 + L int8 + IR int8 + IE int8 + + PC int16 + SP int16 +} + +var cpu = new(cpu_struct) + +func Execute(addr int) { + instr := memory.Read(addr + int(cpu.PC)) + cpu.PC++ + print(string(instr)) +} diff --git a/errorHandling/exceptions.go b/errorHandling/exceptions.go new file mode 100644 index 0000000..692d2ed --- /dev/null +++ b/errorHandling/exceptions.go @@ -0,0 +1,5 @@ +package errorHandling + +const InvalidRomError = "Critical Error. Invalid ROM file. Please make sure you input a valid .gb file. Exiting..." + +const OutOfMemoryBoundsError = "Critical Error. Trying to access data outside memory bounds. Exiting..." diff --git a/gameboy.go b/gameboy.go new file mode 100644 index 0000000..e1f6a58 --- /dev/null +++ b/gameboy.go @@ -0,0 +1,39 @@ +package main + +import ( + "fmt" + "os" + "radu.macocian.me/goboy/cpu" + "radu.macocian.me/goboy/errorHandling" + "radu.macocian.me/goboy/memory" + "strings" +) + +func main() { + if len(os.Args) < 2 { + fmt.Println("Missing rom, please provide a rom") + return + } + + checkExtension(os.Args[1]) + + data, err := os.ReadFile(os.Args[1]) + check(err) + + startMem := 1000 + memory.WriteAll(startMem, data) + cpu.Execute(startMem) +} + +func checkExtension(file string) { + splits := strings.Split(file, ".") + if splits[len(splits)-1] != "gb" { + panic(errorHandling.InvalidRomError) + } +} + +func check(e error) { + if e != nil { + panic(e) + } +} diff --git a/journal/Day 1 - 2025.04.17.md b/journal/Day 1 - 2025.04.17.md new file mode 100644 index 0000000..f299047 --- /dev/null +++ b/journal/Day 1 - 2025.04.17.md @@ -0,0 +1,22 @@ +# First wrote a brief overview of the first milestone of the project: +- load files form the os +- create the memory struct with read/write functions on the memory +- create a cpu state with registers + +# For the day: +- Setup goland +- Disable autocomplete on space because it doesn't work +- Find ways to store memory state in go +- Write memory module with read, write, writeall functions +- Reading or writing outside of memory bounds will close app +- Write cpu module with registers, PC, SP +- Are registers only 8bits? +- Where are instructions stored? + +# Conclusion +- Can read roms from external files +- Have a 64kb memory with functions to read and write to it +- Have a cpu which reads instructions from the memory and increments the PC + +# References: +[Game Boy: Complete Technical Reference](https://gekkio.fi/files/gb-docs/gbctr.pdf) \ No newline at end of file diff --git a/journal/assets/day1.png b/journal/assets/day1.png new file mode 100644 index 0000000000000000000000000000000000000000..76efab822683e0ebbaf2e146a1f496715d2b9ade GIT binary patch literal 92650 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 U+2L<~WKyUr>)b6;y!Y^b0agM{fB*mh literal 0 HcmV?d00001 diff --git a/memory/memory.go b/memory/memory.go new file mode 100644 index 0000000..402c6db --- /dev/null +++ b/memory/memory.go @@ -0,0 +1,35 @@ +package memory + +import ( + "radu.macocian.me/goboy/errorHandling" +) + +var memory = new([64000]byte) + +func Read(addr int) []byte { + checkInside(addr) + checkInside(addr + 8) + + return memory[addr : addr+9] +} + +func Write(addr int, val [8]byte) { + checkInside(addr) + for i := 0; i < 8; i++ { + memory[addr+i] = val[i] + } +} + +func WriteAll(addr int, val []byte) { + checkInside(addr) + checkInside(addr + len(val)) + for b := 0; b < len(val); b++ { + memory[addr+b] = val[b] + } +} + +func checkInside(addr int) { + if addr < 0 || addr >= len(memory) { + panic(errorHandling.OutOfMemoryBoundsError) + } +} diff --git a/roms/rom.gb b/roms/rom.gb new file mode 100644 index 0000000..5308e77 --- /dev/null +++ b/roms/rom.gb @@ -0,0 +1 @@ +noop \ No newline at end of file