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
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.
Please register or to comment