Gameboy emulator

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
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.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
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. :-)
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

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.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Antworten