, (*1)
, (*2)
Want to play Dr Mario or Pokémon on your server terminal? That's for you!, (*3)
Table of Contents
Why
Some people will ask me: "Why you did that?", (*4)
Well, a friend asked me "What PHP can do?". I thought about that awhile and
the idea came up. With PHP7's performance improvement now it's possible to
emulate some systems :smile: and, come on, that's funny! :dancers:, (*5)
It's based on the GameBoy JS Emulator., (*6)
Requirements
The following PHP versions are supported:, (*7)
You will need a good terminal! I've tested only on MacOSX and Linux. I'm sorry
about that Windows guys :disappointed:, (*8)
Installation
Using composer:, (*9)
$ composer g require gabrielrcouto/php-terminal-gameboy-emulator:dev-master
Using PHAR:, (*10)
$ wget https://raw.githubusercontent.com/gabrielrcouto/php-terminal-gameboy-emulator/master/bin/php-gameboy.phar
$ chmod +x php-gameboy.phar
$ mv php-gameboy.phar /usr/local/bin/php-gameboy
Running
Your roms are loaded from the directory you are running the php-gameboy command., (*11)
$ php-gameboy drmario.gb
$ php-gameboy pokemon.gbc
If you like to run this emulator locally, simple clone the repository:, (*12)
$ git clone https://github.com/gabrielrcouto/php-terminal-gameboy-emulator.git
$ cd php-terminal-gameboy-emulator
$ composer install -o
For running roms, pass the full path to your rom or put then in the php-terminal-gameboy-emulator folder:, (*13)
$ bin/php-gameboy pokemon.gbc
$ bin/php-gameboy /full/path/to/your/rom/drmario.gb
Controls
_n_________________
|_|_______________|_|
| ,-------------. |
| | .---------. | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | `---------' | |
| `---------------' |
| _ |
| _|W|_ ,-. |
||A D| ,-. "._,"|
| |S| "._," Dot |
| _ _ Comma |
| // // |
| // // \\\\\\ |
| N M \\\\\\ ,
|________...______,"
- Left = A
- Up = W
- Down = S
- Right = D
- A = Comma (,)
- B = Dot (.)
- Select = N
- Start = M
Tests
You can use the following command to run the most common checks, such as php -l, phpcs:, (*14)
$ ant check
TO-DO
Converting from the JS paradigm was a lot of work, and I still need to adapt somethings like:, (*15)
- [x] Code standard - PSRs, please!
- [x] Array of functions - Maybe in PHP it's not the best approach
- [x] Pixel auxiliary array - Very CPU intensive to convert RGBA every time
- [ ] Classes - Core is too big!
- [ ] Profiling and otimizing - XHProf to find the most intensive functions
- [ ] Save/Restore - I need to save my Pokémon, please!
Credits
@gabrielrcouto, (*16)
Legal
The purpose of this project was to study all the capabilities of PHP., (*17)
It does not have any commercial or profitable intentions., (*18)
The user is responsible to use this code and its content in the terms of the law., (*19)
The author is completely against piracy and respects all the copyrights, trademarks and patents of Nintendo., (*20)