I built a Game Boy emulator in F#

hackernews
let stepper () =
    // Execute a single instruction
    // Each instruction uses a different amount of cycles
    let mCycles = stepCpu cpu io

    for _ in 1..mCycles do  
        stepTimers timer io  
        stepSerial serial io
        // The APU technically runs at 4x CPU-cycles, but can be batched
        stepApu apu  

    let tCycles = mCycles * 4  

    // The PPU operates at 4x CPU-cycles. The APU should be here too
    for _ in 1..tCycles do  
        stepPpu ppu  

    // Return cycles taken so the frontend runs the emulator at the right speed
    mCycles 

Source: hackernews

arrow_back Back to News