Skip to content
Snippets Groups Projects
Verified Commit 17dc77fb authored by João Magalhães's avatar João Magalhães :rocket:
Browse files

chore: more component control

parent f95fd229
No related branches found
No related tags found
1 merge request!36Support for Python
Pipeline #3603 passed
This commit is part of merge request !36. Comments created here will be created in the context of that merge request.
from time import time
from boytacean import GameBoy, CPU_FREQ
CLOCK_COUNT = 100000000
gb = GameBoy(ppu_enabled=False, apu_enabled=False, serial_enabled=False)
gb.load()
gb.load_rom("../../res/roms/demo/pocket.gb")
start = time()
cycles = gb.clocks(CLOCK_COUNT)
total = time() - start
print(f"Time taken: {total} seconds")
print(f"Speedup: {cycles / (CPU_FREQ * total)}x")
gb.save_image("pocket.png")
......@@ -52,6 +52,14 @@ impl GameBoy {
pybytes.into()
}
pub fn ppu_enabled(&self) -> bool {
self.system.ppu_enabled()
}
pub fn set_ppu_enabled(&mut self, value: bool) {
self.system.set_ppu_enabled(value);
}
pub fn apu_enabled(&self) -> bool {
self.system.apu_enabled()
}
......@@ -60,6 +68,22 @@ impl GameBoy {
self.system.set_apu_enabled(value);
}
pub fn dma_enabled(&self) -> bool {
self.system.dma_enabled()
}
pub fn set_dma_enabled(&mut self, value: bool) {
self.system.set_dma_enabled(value);
}
pub fn timer_enabled(&self) -> bool {
self.system.timer_enabled()
}
pub fn set_timer_enabled(&mut self, value: bool) {
self.system.set_timer_enabled(value);
}
pub fn serial_enabled(&self) -> bool {
self.system.serial_enabled()
}
......@@ -74,5 +98,6 @@ fn boytacean(_py: Python, module: &PyModule) -> PyResult<()> {
module.add_class::<GameBoy>()?;
module.add("DISPLAY_WIDTH", DISPLAY_WIDTH)?;
module.add("DISPLAY_HEIGHT", DISPLAY_HEIGHT)?;
module.add("CPU_FREQ", GameBoyBase::CPU_FREQ)?;
Ok(())
}
from PIL import Image
from .boytacean import DISPLAY_WIDTH, DISPLAY_HEIGHT, GameBoy as GameBoyRust
from .boytacean import DISPLAY_WIDTH, DISPLAY_HEIGHT, CPU_FREQ, GameBoy as GameBoyRust
class GameBoy:
def __init__(self, apu_enabled=True, serial_enabled=True):
def __init__(
self,
ppu_enabled=True,
apu_enabled=True,
dma_enabled=True,
timer_enabled=True,
serial_enabled=True,
):
super().__init__()
self._system = GameBoyRust()
self._system.set_ppu_enabled(ppu_enabled)
self._system.set_apu_enabled(apu_enabled)
self._system.set_dma_enabled(dma_enabled)
self._system.set_timer_enabled(timer_enabled)
self._system.set_serial_enabled(serial_enabled)
def load(self):
......@@ -38,6 +48,13 @@ class GameBoy:
)
image.save(filename, format=format)
@property
def ppu_enabled(self) -> bool:
return self._system.ppu_enabled()
def set_ppu_enabled(self, value: bool):
self._system.set_ppu_enabled(value)
@property
def apu_enabled(self) -> bool:
return self._system.apu_enabled()
......@@ -45,6 +62,20 @@ class GameBoy:
def set_apu_enabled(self, value: bool):
self._system.set_apu_enabled(value)
@property
def dma_enabled(self) -> bool:
return self._system.dma_enabled()
def set_dma_enabled(self, value: bool):
self._system.set_dma_enabled(value)
@property
def timer_enabled(self) -> bool:
return self._system.timer_enabled()
def set_timer_enabled(self, value: bool):
self._system.set_timer_enabled(value)
@property
def serial_enabled(self) -> bool:
return self._system.serial_enabled()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment