@startwbs
* PWA Gameboy Emulator
** Application
*** FR1 - APP.PWA
**** Design and build user interface
***** Create button and screen interface
*** FR2 - App.Delete
**** Design and build user interface
***** Create button to delete ROM data
**** Remove save state data from browser
***** Clear data stored in localdb or localstorage
*** FR3 - App.Upload
**** Design and build user interface
***** Create button to receive ROM file as input
**** Receive input from browser to take in a ROM file
***** Load ROM file into emulator memory
** Quality of life
*** FR4 - Extra.Mute
**** Add mute toggle interface
**** Stop emulator from playing sound
*** FR5 - Extra.Save
**** Add save button interface
**** Save game into browser
***** Serialize game state
***** Store serialized game state in browser localdb or localstorage
*** FR6 - Extra.Load
**** Add load button interface
**** Receive saved state data input from browser
***** Load previous save state into emulator memory
** Emulator Controls
*** FR7 - Controls.Touchpad
*** FR8 - Controls.CustomKeymap
*** FR9 - Controls.CustomTouchpad
** CPU
*** FR10 - CPU.Register
*** FR11 - CPU.LoadAndStoreOpcodes 
*** FR12 - CPU.ArithmeticOpCodes
*** FR13 - CPU.StackOperations
*** FR14 - CPU.BitShiftAndRotate
*** FR15 - CPU.ControlFlowOperations
*** FR16 - CPU.MiscellaneousOperations
*** FR17 - CPU.Speed
** PPU
*** FR18 - PPU.Background
*** FR19 - PPU.Scrolling
*** FR20 - PPU.Window
*** FR21 - PPU.Sprites
*** FR22 - PPU.Timing
*** FR23 - PPU.Palettes
** APU
*** FR24 - APU.Channels
**** 2 wave generator channels need to be made
**** A waveram channel needs to be made
**** A noise generator needs to be made
*** FR25 - APU.Terminals
**** The terminals should produce the left and right sound data
**** Convert from GB memory to data which is easier to play
*** FR26 - APU.Registers
**** Create the APU Registers
**** Memory map their location so they are readable and writable from the CPU
**** Control the 4 channels
**** Control the 2 terminals from these registers
*** FR27 - APU.WaveRAM
**** Create read and writable memory for the waveform RAM
**** Produce sound data from the waveform RAM
** Interrupt Controller
*** FR28 - Interrupt.Flag
**** Create interrupt enable, disable flags
**** Create the instructions that can set and clear this flags
**** Ensure interrupts are only called when allowed
*** FR29 - Interrupt.Handle
**** Create an interrupt vector mapped to specific points in memory
**** Trigger an interrupt whenever the JoyPad is pressed
**** Create an interrupt timer
**** Trigger an interrupt whenever the timer overflows
**** Trigger V-BLANK, and LCD STAT interrupts from the PPU
@endwbs
