Skip to content

AtomicJon/tsemu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

85 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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:https://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