baekalfen / pyboy Goto Github PK
View Code? Open in Web Editor NEWGame Boy emulator written in Python
License: Other
Game Boy emulator written in Python
License: Other
When pausing the game, the "pause" text is split in two horizontally.
It would be useful to implement a feature in a GameWindow, which allows to record the game frame-by-frame. Contrary to regular screen-capture, this would allow perfectly timed frame-rates.
The output formats would preferably be GIF and MP4.
It is hardly control in SDL2 in playing Super_Mario_Land.gb
It would be nice to have a settings window to change keybindings, ROM directory, screen recording settings etc.
The window view has some problems with horizontal movement. It can be seen as "jumping left and right" in Pokemon battles.
It's worth checking, if it worked before adding 8x16 sprites. 427fd4d
I tried following the instructions for Ubuntu. I ran pip install -r requirements.txt
and it failed to build pillow
Blargg's test-ROMs supposedly writes the text on the screen to the Link Cable as well as the screen. For the tests, it would be useful to not start the (SDL) window, but simply have it print out in the terminal.
This could also be used for automatic testing, as the output could check where errors have occurred.
To start off, it doesn't matter which model of RPi, or under which circumstances. It might require overclocking, multithreading and/or use of OpenGL.
Hi, im trying to make an IA for Motocross Maniacs but I need to load state in order to dont spend hours between bootrom loadings and such, also the rom crashes if the game timesup or loses the race so I need this to work as I intend. I was modifying tetris_bot.py in order to see if I can load rom states but it seems either this isn't implemented or I'm not using the correct method.
Im trying pyboy.sendInput([WindowEvent.LoadState]) but this does nothing.
Investigate if it could be changed to compile with Cython and if it makes the emulator faster in runtime.
To better optimize performance, we will need a reference workload, which is accurate. With BotSupport
, it will be easy to make a frame-accurate benchmark.
For some games, nearly 50% of the CPU time goes into rendering the screen. This could easily be moved to another thread, to better utilize the available hardware.
Currently, the GameWindow
is imported from outside of the PyBoy
module. It would de preferable, if it was selected with a flag through sys.argv
, but the internals of PyBoy handled it.
Python 2.7 will inevitably be discontinued.
Saving and loading state generally works, but it sometimes causes crashes or side-effects.
The getScreenBuffe()
method returns a PyBoy.GameWindow.GameWindow_SDL2.SdlGameWindow
object instead of a numpy array
The timer starts at 465 and wraps around after hitting 460. This means the player cannot get past first level, as it goes into an infinite loop while counting down the seconds left of the game.
The game is not put into an exact lock, as the check for PC-change is not triggered. It is likely a subroutine, which does not get the correct flag on a jump.
PyPy in ubuntu package repository is very old (5.1.2+dfsg-1~16.04 in xenial updates, and latest version is 5.6.0)
It's better to use Portable pypy binaries: https://github.com/squeaky-pl/portable-pypy they can run almost on any linux distribution (including ubuntu) and does not depend on system libs)
The Pan Docs describe each sprite having its own color palette. We currently have a fixed palette.
http://bgb.bircd.org/pandocs.htm#vramspriteattributetableoam
With Python's lack of static types, it's easy to break external API's.
Since some packages (OpenGL, imageio) are only needed for certain features like video recording and experimental GameWindows, it would be nice if we could lazily import either those packages or the modules that import them. That way, someone could try the code without having to install all the dependencies (e.g., my brother had a hard time trying the code because gcc
fails to compile Pillow on macOS). It would also speed up the startup, since there would be less work to do before the game can launch.
One place this is a problem is the GameWindows. Since GameWindow/__init__.py
imports all of the GameWindows to its namespace, the references to that package in main.py
trigger the imports even though it's trying to import just one of the GameWindows. While having an empty __init__.py
and importing from the submodules would fix that, I think it would fragment the code too much (and already it's a bit interdependent that main.py
has to check the names of the GameWindows instead of keeping that functionality in the module). So, I thought I'd open this up as an issue to see if there were any ideas about how to handle this in general and whether it's something to pursue yet.
When starting a new game in Pokemon Gold, the game gives the error message "No windows available for popping." and locks up.
It might be RTC and save/load state related. The clock inside the game counts around 1 hour pr. second compared to the real world. This soft-locks the game, as it's not possible to end the phone call from the NPC Wade before he is triggered to call again.
MBC look-up determines there are no RAM banks, but the game tries to use them
Me and @Fieoner are working on a bot and we are using your (awesome) emulator in headless mode to make it work. However, the frames are limited so that it runs in real time, which makes sense for direct standard use. For computing frames, however, it makes more sense to run it as fast as possible, so we would like to know if there's any option to make this happen or if it can be implemented.
We are happy to help.
Thanks in advance!
Opening Pokemon Gold and letting it play the introductions, causes "Invalid command for MBC: Address: 27, Value: 28" on one of the transitions.
The emulation currently runs as fast as possible. We should have a way to wait for the next frame.
We are beginning to have several optional features: GameWindow
, ScreenRecorder
, BotSupport
and likely more to come.
We should make one or more subpages, which describes these things in detail. Both how to use them, and how to install them.
It might be a Wiki page, or subpages of .md
.
First on the list, is the new dependencies in #59, which are only required for the optional ScreenRecorder
.
First, thanks for answering me before. Now, this is more a doubt than an issue... When I use the tileview I get two windows, one for the "current map without the player" and other for the HUD (the remaining time bar, power, and such). At the moment I can retreive the "on screen" sprites but I cant get the sprites in the tileviews and I need to get the sprites near the racer (in the tileview but not on screen). How should I proceed?
This is what I see:
https://i.imgur.com/3yrvuSg.png
The current implementation if Window_SDL2.py does not work well with scaling, as it has a huge impact on framerate.
For cartridges, which has a built-in battery, we should same the contents of the external RAM.
Preferably between two separate computers.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.