Join Us and become a Member for a Verified Badge to access private areas with the latest PS4 PKGs.
PS4 CFW and Hacks       Thread starter PSXHAX       3,173       0      
Not open for further replies.


Staff Member
Following his PS4 Pong release and PlayStation 4 homebrew execution code through PS4 Eye by BigBoss, today PlayStation 4 developer @CTurt ported his Nintendo GameBoy Emulator Cinoop to PS4 via the WebKit Exploit.

Download: / Cinoop GIT

Below are some recent Tweets from Twitter on the port:
  • LLVM 3.7 released today, with official PS4 support (-target x86_64-scei-ps4). Thanks, Sony!
  • Ported my GameBoy emulator, Cinoop, to PS4 today:
GameBoy Emulator Cinoop on PS4

Native GameBoy emulator on the PS4 using the WebKit exploit. Rendered with an HTML5 canvas, and controlled wirelessly with a Nintendo DS.

From IRC:

[xerpi] nice
[Al3x_10m] awesome!!
[CTurt] thanks, lads!
[ZiL0G80] nice
[CTurt] thanks
[CTurt] need to go now though, bye
[ZiL0G80] CTurt: error while compiling ******
[ZiL0G80] using ubuntu in vmware
[CTurt] "void *restrict optval" -] "restrict void *optval"
[CTurt] or remove the restrict altogether
[CTurt] or #define restrict
[CTurt] or compile with -std=c99
[ZiL0G80] -std=c99 work fine , what toolchain do you youse? i want youse freebsd but there is problem with
[CTurt] I'm on Windows with MinGW
[CTurt] I've just updated the Makefile to use C11 standard
[ZiL0G80] oh yes doesnt matter uf you youse raw bin :)
[ZiL0G80] i mean mingw produce PE not ELF :D
[CTurt] yep
[CTurt] that's the main reason I can't be bothered to write an elf loader
[CTurt] developing on FreeBSD would be nice - because of having all the headers
[ZiL0G80] you can adapt some elf loader from freebsd
[ZiL0G80] ssources
[CTurt] yes, but I don't know how to compile to ELF
[ZiL0G80] use 64bit linux
[ZiL0G80] in vmware or
[CTurt] I'd rather keep to Windows
[ZiL0G80] iam using xubuntu now
[ZiL0G80] ok
[xerpi] mingw can't compile to ELF
[xerpi] it doesn't have the ELF target
[ZiL0G80] we know
[xerpi] today they've released LLVM 3.7
[ZiL0G80] CTurt using raw bin
[xerpi] which has ps4 support
[ZiL0G80] doesnt matter of compiler
[xerpi] it directly outputs SCE PS4 ELF
[CTurt] I will check it out now
[ZiL0G80] nice
[xerpi] I'm waiting for it to be available to download on the archlinux repos lol
[xerpi] it'll be nice to use clang
[xerpi] clang -triple=x86_64-scei-ps4
[CTurt] installing now
[CTurt] if all goes well, we can start making an ELF loader
[CTurt] no more fixed offsets
[ZiL0G80] nice :)
[xerpi] WOH
[xerpi] WORKING
[CTurt] what?
[xerpi] oops wrong chat :D
[ZiL0G80] wrong internet :D
[CTurt] OK I used -target x86_64-scei-ps4
[CTurt] but I still get a PE
[CTurt] -target x86_64-scei-ps4-elf
[CTurt] still get PE
[xerpi] hmm maybe it's still using GCC's ld
[xerpi] and assembler
[CTurt] probably not
[CTurt] idk
[flatz] why you don't use gcc?
[flatz] i mean gcc cross compiler on cygwin, for example
[CTurt] because LLVM 3.7 has official Sony support
[CTurt] it would be banter
[xerpi] yeah using a cross compiler would be the plan B
[xerpi] but I thought llvm/clang could generate ELFs on windows out of the box
[flatz] you don't need official sony support :) because you can't load elf using standard way on ps4
[CTurt] yes, I would write my own ELF loader
[CTurt] for now I just want to generate an ELF
[xerpi] yeah but I thought it would automatically generate an ELF using x86_64-scei-ps4-el
[xerpi] -elf*
[thexyz] clang uses gcc or ld for linking
[CTurt] ok, so apparently, the LLVM doesn't include the linker
[CTurt] it can't make ELF binaries

From the ReadMe file: Cinoop - A Game Boy emulator for Windows, DS, GameCube, 3DS, Linux based OSes, PSP, and PS4, written in C.

Read my article about writing Cinoop here.


CPU: All instructions are implemented
GPU: Can display tile maps, and sprites. Palette swapping is not implemented yet, so some colours may be displayed incorrectly.
Memory: Support for 32KB ROMs, without mappers, only (Tetris and Dr. Mario)
Input: Supported
Sound: None
Games: Tetris is most likely the only playable game,

The DS version does not run full speed, and the Linux port does not yet support input.


Just run make on the directory to build all binaries. You can also run make windows for just Windows, make ds for just DS, make gamecube for just GameCube, make 3ds for just 3DS, make linux for just Linux, make psp for just PSP, or make ps4 for just PS4.

Building the Windows version requires LDFS, and has been tested with MinGW, using another compiler may require some tweaking.

Building the DS version requires devkitARM and libnds, from devkitPro.

Building the GameCube version requires devkitPPC and libogc, from devkitPro.

Building the 3DS version requires devkitARM and ctrulib from devkitPro.

Building the Linux version requires X11, and the OpenGL development files. It has been tested with Ubuntu.

Building the PSP version requires the Minimalist PSP SDK.

Building the PS4 version requires PS4-***.


For Windows and Linux, pass the ROM you would like to run as the first argument. You can do this by either dragging the ROM onto Cinoop, or starting it from the command line:
To view the full debug log, you will need to redirect stdout to a file, like so:
cinoop 1>debug.txt
For PS4, the ROM is read from a USB flash drive as a raw image. Use Win32 Disk Imager or dd to write it for example.

For other versions, the ROM name is hard coded as

Windows Controls

B: Z
A: X
Start: Enter
Select: Backspace

DPad: Arrow keys

Debug: Space
Reset (not finished yet): *
Quit: Escape

DS Controls

B: B
A: A
Start: Start
Select: Select
DPad: DPad

GameCube Controls

B: B
A: A
Start: Start
Select: Z
DPad: DPad

3DS Controls

B: B
A: A
Start: Start
Select: Select
DPad: DPad or Circle Pad

Linux Controls

(not supported)

PSP Controls

B: Square
A: Cross
Start: Start
Select: Select
DPad: DPad

PS4 Controls

Use a DS as a wireless controller
Not open for further replies.