Seite 1 von 1

Gameboy emulator

Verfasst: Dienstag 29. Oktober 2013, 16:40
von jens
EDIT: Abgetrennt von "Emulator in Python..."

Hab gerade zufällig https://bitbucket.org/pypy/lang-gameboy gefunden:
A Gameboy emulator in RPython called "PyGirl". Quite complete, can run some games.
Habs auch bei http://wiki.python-forum.de/Wer%20nutzt%20Python aufgelistet.

Es nutzt https://bitbucket.org/pypy/rsdl :
RSDL is an SDL library for use with RPython. It is used in the Gameboy emulator "PyGirl" and the Squeak VM "Spy". It currently supports a useful subset of the video, image, and audio SDL APIs.
EDIT: Wobei RPython hier nicht wirklich richtig ist??? Denn für mich sieht der Quellentext wie normales Python aus und RPython soll ja eigentlich nur zum schreiben von Interpretern sein, siehe: http://doc.pypy.org/en/latest/faq.html# ... in-rpython

Re: Emulator in Python...

Verfasst: Dienstag 29. Oktober 2013, 17:03
von BlackJack
@jens: RPython ist eine Untermenge von normalem Python, also sieht RPython natürlich auch wie normales Python aus, weil es normales Python *ist*. Nur der umgekehrte Weg gilt halt nicht, nicht jeder Python-Quelltext ist auch RPython-Quelltext.

Re: Gameboy emulator

Verfasst: Dienstag 29. Oktober 2013, 17:17
von jens
Hm. Ein Emulator ist aber ein wenig was anderes als ein Interpreter...

Woran kann man denn erkennen ob es normales Python oder RPython ist?
Im Quellentext gibt es jedenfalls ein normales #!/usr/bin/env python

Re: Gameboy emulator

Verfasst: Dienstag 29. Oktober 2013, 17:38
von BlackJack
@jens: Welche Untermenge das ist sollte doch eigentlich irgendwo bei PyPy dokumentiert sein. Und wie gesagt: Es ist normales Python. Nur dass man es neben dem Interpreter auch an einen Compiler füttern kann, der daraus effizienten nativen Code macht. Und weil nicht alles was Python bietet benutzt wird/benutzt werden darf, kann der Compiler effizienteren Code generieren als zum Beispiel Cython.

Eine kurze Übersicht was man benutzen darf steht hier http://doc.pypy.org/en/latest/coding-guide.html unter dem Abschnitt „RPython”. Also „nicht alles benutzen” ist vielleicht falsch herum aufgezogen. Man darf relativ wenig benutzen. :-)

Re: Gameboy emulator

Verfasst: Dienstag 29. Oktober 2013, 19:46
von Leonidas
Das es nicht dafür vorgesehen ist darin etwas anderes als Interpreter zu schreiben heißt nicht dass es nicht geht. Ich meine, PostScript ist auch nicht vorgesehen dass man es von Hand programmiert und ich habe eine ganze Reihe Programme damit gebastelt. Außerdem kannst du ja einen Emulator durchaus als Interpreter einer Assemblersprache sehen.

Re: Gameboy emulator

Verfasst: Dienstag 29. Oktober 2013, 20:31
von DasIch
jens hat geschrieben:Hm. Ein Emulator ist aber ein wenig was anderes als ein Interpreter...
Nicht wirklich, zumindest die "CPU" ist definitiv ein Interpreter. Eine Implementation von regular expressions, lässt sich z.B. auch durchaus als Interpreter betrachten. Letztendlich könntest du auch beliebige Anwendungen in RPython schreiben, es ist halt nur dafür nicht gedacht und dementsprechend ungeeignet.
Woran kann man denn erkennen ob es normales Python oder RPython ist?
Im Quellentext gibt es jedenfalls ein normales #!/usr/bin/env python
Es gibt irgendwo ein target*.py Modul mit etwas Boilerplate für den RPython Translator der den Code aufruft. Ansonsten fällt recht schnell auf das RPython Code nicht auf die stdlib zugreift, open nicht genutzt wird und der Code statisch typisiert ist.

Re: Gameboy emulator

Verfasst: Mittwoch 30. Oktober 2013, 09:13
von jens
DasIch hat geschrieben:Es gibt irgendwo ein target*.py Modul mit etwas Boilerplate für den RPython Translator der den Code aufruft.
Hast recht: https://bitbucket.org/pypy/lang-gameboy ... ntation.py