summaryrefslogtreecommitdiff
path: root/fig-emulator-gb/src/Fig/Emulator/GB.hs
diff options
context:
space:
mode:
authorLLLL Colonq <llll@colonq>2024-05-07 20:00:17 -0400
committerLLLL Colonq <llll@colonq>2024-05-07 20:00:17 -0400
commit9167b9ca9e5de8fddda016fb99a7d926625233bb (patch)
tree0346c104c11bf84bacdf83aaacd772f918013f6c /fig-emulator-gb/src/Fig/Emulator/GB.hs
parenta81c92dc2cdff02c55fdc197d943bc7a35c64be5 (diff)
fb-emulator-gb: It's not as slow
Diffstat (limited to 'fig-emulator-gb/src/Fig/Emulator/GB.hs')
-rw-r--r--fig-emulator-gb/src/Fig/Emulator/GB.hs12
1 files changed, 8 insertions, 4 deletions
diff --git a/fig-emulator-gb/src/Fig/Emulator/GB.hs b/fig-emulator-gb/src/Fig/Emulator/GB.hs
index 6f32682..cc68afe 100644
--- a/fig-emulator-gb/src/Fig/Emulator/GB.hs
+++ b/fig-emulator-gb/src/Fig/Emulator/GB.hs
@@ -1,5 +1,6 @@
module Fig.Emulator.GB where
+import Prelude (error)
import Fig.Prelude
import System.IO (withFile, IOMode (WriteMode))
@@ -8,6 +9,9 @@ import Control.Lens ((.=), use)
import Control.Monad (when)
import Control.Monad.State.Strict (StateT(..))
+import qualified Data.Vector as V
+import qualified Data.ByteString as BS
+
import qualified SDL
import Fig.Emulator.GB.CPU
@@ -20,7 +24,7 @@ import Fig.Emulator.GB.Component.Joystick
import Fig.Emulator.GB.Component.Serial
import Fig.Emulator.GB.Component.Interrupt (compInterrupt)
-cpuDMG :: (MonadIO m, MonadThrow m) => Maybe Handle -> ByteString -> Framebuffer -> CPU m
+cpuDMG :: Maybe Handle -> ByteString -> Framebuffer -> CPU
cpuDMG serial rom fb = CPU
{ _lastPC = 0x0
, _lastIns = Nop
@@ -37,7 +41,7 @@ cpuDMG serial rom fb = CPU
]
}
-testRun :: forall m. (MonadIO m, MonadThrow m) => Maybe FilePath -> ByteString -> m ()
+testRun :: Maybe FilePath -> ByteString -> IO ()
testRun serialOut rom = do
SDL.initializeAll
window <- SDL.createWindow "taking" SDL.defaultWindow
@@ -48,7 +52,7 @@ testRun serialOut rom = do
liftIO $ withSerial \hserial -> do
let cpu = cpuDMG hserial rom fb
let
- loop :: forall m'. Emulating m' => Int -> m' ()
+ loop :: Int -> Emulating ()
loop cycle = do
-- events <- SDL.pollEvents
-- forM_ events \ev ->
@@ -81,5 +85,5 @@ testRun serialOut rom = do
-- SDL.updateWindowSurface window
r <- use running
when r . loop $ cycle + 1
- void $ flip runStateT cpu do
+ void $ flip (runStateT . runEmulating) cpu do
loop 0