Skip to content

AtomicJon/tsemu

Folders and files

NameName
Last commit message
Last commit date
Aug 24, 2021
Jun 13, 2021
Jun 13, 2021
Jun 13, 2021
Jan 28, 2023
Aug 24, 2021
Jun 13, 2021
Aug 24, 2021

Repository files navigation

TSEmu

An experiment writing a Game Boy emulator in TypeScript

Try the latest build here: https://atomicjon.github.io/tsemu/

Getting Started

Dev

Parcel is used for building, in development simply run:

yarn start

This will start the dev server at http://localhost:1234

Build

To build a production build run:

yarn build

TODO

  • Basic instruction processing
  • Basic rendering
  • OAM DMA transfers
  • Interrupt handling
  • Joypad input
  • Timer clock
  • Divider clock
  • Basic Tone Audio channels (1 & 2) - frequency only
  • Sprite flags
    • Proper palette implementation
    • Sprite flip
    • Sprite rendering priority
  • Sound
    • Channel 1 - Tone & Sweep
    • Channel 2 - Tone
    • Channel 3 - Wave Output
    • Channel 4 - Noise Output
  • Configurable input for joypad
  • Clock adjustment based on FPS (clock is tied to framerate)
  • Handle STOP/HALT
  • Cartridge type parsing (0x0147)
  • ROM bank switching
  • Scanline based rendering
  • VRAM DMA transfers

Reference Material

The following are the main reference material used during development:

About

TypeScript Game Boy emulator

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages