GameBoy Color emulator written in golang.

Overview

logo

🌏 Worldwide

Go Go Report Card GitHub stars GitHub license

日本語のドキュメントはこちら

GameBoyColor emulator written in golang.

This emulator can play almost all ROMs work without problems and has many features.


🚩 Features & TODO list

  • 60fps
  • Pass cpu_instrs and instr_timing
  • Low CPU consumption
  • Sound(ported from goboy)
  • GameBoy Color ROM support
  • Multi-platform support
  • Joypad support
  • MBC1, MBC2, MBC3, MBC5 support
  • RTC
  • SRAM save
  • Quick save
  • Resizable window
  • Pallete color change in DMG
  • Serial DMG communication in local network
  • RaspberryPi support
  • Debugger
  • HQ2x mode
  • Serial CGB communication in local network
  • Serial communication with global network
  • SuperGameBoy support

🎮 Usage

Download worldwide.exe from here.

./worldwide.exe "***.gb" # or ***.gbc

🐛 Debug

You can play this emulator in debug mode.

./worldwide.exe --debug "***.gb"

✨ HQ2x

You can play games in HQ2x(high-resolution) mode.

HQ2x can be enabled in config file.

🔨 Build

For those who want to build from source code.

Requirements

  • Go 1.15
  • make
make
./worldwide "***.gb" # ./worldwide.exe on Windows

# or
make run ROM="***.gb"

📥 Download

Please download here.

📄 Command

keyboard game pad
← ← button
↑ ↑ button
↓ ↓ button
→ → button
X A button
Z B button
Enter Start button
Right shift Select button
Issues
  • Inaccurate emulation: mooneye-gb tests

    Inaccurate emulation: mooneye-gb tests

    Test ROMs source code: https://github.com/Gekkio/mooneye-gb/tree/master/tests/acceptance Assembled package: https://gekkio.fi/files/mooneye-gb/latest/mooneye-gb_hwtests.zip

    I have tried running, from the basic acceptance directory, the following tests:

    • [x] add_sp_e_timing
    • [x] div_timing
    • [x] call_cc_timing
    • [x] jp_timing
    • [x] push_timing
    • [x] oam_dma/basic
    • [x] oam_dma/reg_read
    • [x] instr/daa.gb
    • [x] ld_hl_sp_e_timing
    • [x] intr_timing
    • [x] oam_dma_restart

    The ones with the checkbox not marked have failed. div_timing seems to be testing something that some of the other tests implicitly rely on. I did not run the whole test suite as I was only interested in a rough accuracy metric.

    accuracy 
    opened by NieDzejkob 3
  • Unable to build on macOS

    Unable to build on macOS

    I can not build this package on macOS Catalina.

    make osx
    

    The error message:

    ld: warning: ignoring file /var/folders/f6/hntbqtjx31lflw_4hxp6kjs80000gn/T/go-link-125565020/000000.o, building for macOS-x86_64 but attempting to link with file built for unknown-unsupported file format ( 0x64 0x86 0x01 0x00 0x00 0x00 0x00 0x00 0xB8 0x11 0x00 0x00 0x01 0x00 0x00 0x00 )

    $ go version
    go version go1.15.3 darwin/amd64
    
    opened by jserv 2
  • Boot ROM doesn't react to buttons

    Boot ROM doesn't react to buttons

    When I run a DMG game and press an arrow during the boot animation to change the palette, the background of the animation doesn't change, and the ROM still plays with the classic green palette.

    bug 
    opened by NieDzejkob 2
  • Revise the general information

    Revise the general information

    This patch mentioned the supported ".gb" or ".gbc" suffix, the generated configuration fix and clarified executable files built with "go build".

    opened by jserv 0
  • Inaccurate emulation: mooneye-gb timer tests

    Inaccurate emulation: mooneye-gb timer tests

    • [x] div_write
    • [x] rapid_toggle
    • [x] tim00
    • [x] tim00_div_trigger
    • [x] tim01
    • [x] tim01_div_trigger
    • [x] tim10
    • [x] tim10_div_trigger
    • [x] tim11
    • [x] tim11_div_trigger
    • [x] tima_reload
    • [x] tima_write_reloading
    • [x] tma_write_reloading

    https://github.com/Gekkio/mooneye-gb/tree/master/tests/acceptance/timer

    accuracy 
    opened by pokemium 0
  • Multiplayer

    Multiplayer

    Is it possible to emulate the link cable? https://en.wikipedia.org/wiki/Game_Link_Cable

    I remember playing against friends years ago. Is this feature supported? If not, is it possible?

    opened by jsirianni 0
  • Pokemon Crystal JP dose not work.

    Pokemon Crystal JP dose not work.

    Worldwide

    image

    00:045f

    https://github.com/pret/pokecrystal/blob/2641f93ad084b1329b3f3b9f7c8c222445fc4832/home/delay.asm#L8

    image

    image

    00:3e63

    https://github.com/pret/pokecrystal/blob/9a927c1b3efa2eca886f346a4fcca0eb57278faf/home/mobile.asm#L123

    image

    image

    bug accuracy 
    opened by pokemium 0
  • Inaccurate emulation: mooneye-gb general tests

    Inaccurate emulation: mooneye-gb general tests

    related to #4

    • [x] call_cc_timing2
    • [x] call_timing2
    • [ ] di_timing-GS.gb (note: this test is expected to pass only when ran on a DMG or SGB, and fail when ran on a CGB or AGB. This is because the name ends in -GS, as explained here)
    • [x] ei_sequence
    • [x] ei_timing
    • [x] halt_ime0_ei
    • [x] halt_ime0_nointr_timing
    • [x] halt_ime1_timing
    • [ ] halt_ime1_timing2-GS (-GS, so the note above also applies)
    • [x] if_ie_registers
    • [ ] interrupts/ie_push
    • [ ] oam_dma/sources-GS (this CRASHES the emulator itself)
    • [ ] oam_dma_start
    • [x] pop_timing
    • [x] rapid_di_ei
    • [ ] ../manual-only/sprite_priority.gb (here's how it should look)
    accuracy 
    opened by pokemium 0
  • Inaccurate emulation: SameSuite

    Inaccurate emulation: SameSuite

    The repository is here. I'm not aware of any pre-compiled ROMs, but you only need RGBDS and make to compile them.

    I picked some tests at random, all failed:

    • [ ] ppu/blocking_bgpi_increase
    • [ ] apu/channel_1/channel_1_align
    • [ ] apu/div_write_trigger_volume
    • [ ] apu/div_write_trigger
    • [ ] apu/div_write_trigger_10
    accuracy 
    opened by NieDzejkob 0
  • Inaccurate emulation: Game Boy Video Player

    Inaccurate emulation: Game Boy Video Player

    ROM available here.

    Expected behavior: https://www.youtube.com/watch?v=c5HfmaDCVsY

    Actual behavior: a few colorful rectangles display on screen and change a few times.

    bug accuracy 
    opened by NieDzejkob 0
Releases(v0.2.0)
Owner
Akatsuki
💻Super Nerd💻
Akatsuki
A captcha library written in golang

gocaptcha 一个简单的Go语言实现的验证码 图片实例 简介 基于Golang实现的图片验证码生成库,可以实现随机字母个数,随机直线,随机噪点等。可以设置任意多字体,每个验证码随机选一种字体展示。 实例 使用: go get github.com/lifei6671/gocaptcha/

Minho 168 Apr 26, 2022
Simple ANSi to PNG converter written in pure Go

AnsiGo Description AnsiGo is a simple ANSi to PNG converter written in pure Go. It converts files containing ANSi sequences (.ANS) into PNG images. Fo

Frederic Cambus 51 May 17, 2022
Super fast static photo and video gallery generator (written in Go and HTML/CSS/native JS)

fastgallery Fast static photo and video gallery generator Super fast (written in Go and C, concurrent, uses fastest image/video libraries, 4-8 times f

Toni Melisma 24 May 25, 2022
Storage and image processing server written in Go

Mort An S3-compatible image processing server written in Go. Still in active development. Features HTTP server Resize, Rotate, SmartCrop Convert (JPEG

Marcin Kaciuba 458 Jun 9, 2022
An image resizing server written in Go

picfit picfit is a reusable Go server to manipulate images (resize, thumbnail, etc.). It will act as a proxy on your storage engine and will be served

Florent Messa 1.7k Jun 24, 2022
A path tracer written in Go.

pt: a golang path tracer This is a CPU-only, unidirectional path tracing engine written in Go. It has lots of features and a simple API. Features Supp

Michael Fogleman 2k Jun 15, 2022
Pixelizer is an efficient image pixelizer written in go

Pixelizer is an image pixelizer written in go. It allows very simple and intuitive CLI pixelization. Installation To install Pixelizer, you

Rewan_ 104 Jun 15, 2022
Gorched is terminal based game written in Go inspired by "The Mother of all games" Scorched Earth

Gorched Gorched is terminal based game written in Go inspired by "The Mother of all games" Scorched Earth. How the game looks like depends on your ter

Ján Čabala 319 Jun 23, 2022
Dendrite is a second-generation Matrix homeserver written in Go!

Dendrite Dendrite is a second-generation Matrix homeserver written in Go. It intends to provide an efficient, reliable and scalable alternative to Syn

matrix.org 3.6k Jun 26, 2022
Quake 2 Level Renderer written in Go and OpenGL

go-quake2 Quake 2 Map Renderer written in Go and OpenGL. Features Loads any BSP file from Quake 2 Free roam around the environment Renders only a smal

Samuel Yuan 24 Jan 21, 2022
Favicon service written in Go

favicon-service (besticon) This is a favicon service: Supports favicon.ico and apple-touch-icon.png Simple URL API Fallback icon generation Docker ima

Matthias Lüdtke 588 Jun 10, 2022
A simple API written in Go that creates badges in SVG format, based on the requested route.

A simple API written in Go that creates badges in SVG format, based on the requested route. Those graphics can be used to style README.md files, or to add tags to webpages.

Toby 3 Jul 2, 2021
Pbm - Package ppm implements a Portable Bit Map (PBM) image decoder and encoder written in Go

Package pbm import "github.com/slashformotion/pbm" Package pbm implements a Portable Bit Map (PBM) image decoder and encoder. The supported image col

slashformotion 0 Jan 5, 2022
OpenStreetMap PBF golang parser

pbf OpenStreetMap PBF golang encoder/decoder A golang based OpenStreetMap PBF encoder/decoder with a handy command line utility, pbf. pbf Command Line

Alan D. Cabrera 35 Jun 14, 2022
golang OpenGL helper functions

glh: golang OpenGL helpers This package contains a number of functions useful for applications using OpenGL. Code Reference Features Textures and Text

go-gl legacy 22 Apr 8, 2022
A library for playing with colors in go (golang).

go-colorful A library for playing with colors in Go. Supports Go 1.13 onwards. Why? I love games. I make games. I love detail and I get lost in detail

Lucas Beyer 960 Jun 24, 2022
gumble is a Mumble client implementation in Go (golang)

gumble gumble is a Mumble client implementation in Go Sub-projects gumble (docs) Client library gumbleopenal (docs) OpenAL audio system for gumble gum

null 149 Jun 17, 2022
Rasterx is an SVG 2.0 path compliant rasterizer that can use either the golang vector or a derivative of the freetype anti-aliaser.

rasterx Rasterx is a golang rasterizer that implements path stroking functions capable of SVG 2.0 compliant 'arc' joins and explicit loop closing. Pat

Steven R Wiley 97 Jun 11, 2022
Pure golang image resizing

This package is no longer being updated! Please look for alternatives if that bothers you. Resize Image resizing for the Go programming language with

Jan Schlicht 2.8k Jun 26, 2022