Upload
louise-chandler
View
214
Download
2
Embed Size (px)
Citation preview
democoding democoding made easymade easy
What is RetroArchWhat is RetroArch
Crossplatform emulator/game/demo Crossplatform emulator/game/demo platform (well we can abuse it :D)platform (well we can abuse it :D)
What is RetroArchWhat is RetroArch
Has tons of features likeHas tons of features like- Custom Cg-based pixel shader supportCustom Cg-based pixel shader support- Audio DSP supportAudio DSP support- Fast forward/rewindFast forward/rewind- Rock solid GUI systemRock solid GUI system- NetplayNetplay- FFmpeg based recording (RIP FFmpeg based recording (RIP
kkapture)\kkapture)\- And tons more…And tons more…
RetroArch’s APIRetroArch’s API
Libretro: the base of it allLibretro: the base of it all• C basedC based• Easy to implementEasy to implement• StraightforwardStraightforward• Allows for blitting to 2D surfaces (as Allows for blitting to 2D surfaces (as
well as FBO’s ;) )well as FBO’s ;) )
Implementing our demoImplementing our demo We need to implement as a DLL/SO/etcWe need to implement as a DLL/SO/etc Needs certain amount of exports: see demo Needs certain amount of exports: see demo
sourcecode for example.sourcecode for example. Think about crossplatform calls (stdlib?)Think about crossplatform calls (stdlib?) OpenGL 2/3/ES (non fixed function) is the OpenGL 2/3/ES (non fixed function) is the
key, unless you wanna go software or make key, unless you wanna go software or make your software not run on mobile systems.your software not run on mobile systems.
We run per frame, not all at once.We run per frame, not all at once. Libretro treats top-left as origin. Be Libretro treats top-left as origin. Be
mindful!mindful! YMMV with MSVCYMMV with MSVC
Our prodOur prod
SummarySummary
• Cuts out the middleman (SDL, Cuts out the middleman (SDL, GLFW, etc)GLFW, etc)
• Leaves you to code your prodLeaves you to code your prod• Dead simple to implementDead simple to implement• Potential to easily target plenty of Potential to easily target plenty of
platformsplatforms• Fully open sourceFully open source
ResourcesResources
Website: www.libretro.orgWebsite: www.libretro.org Demo featured in this seminar: Demo featured in this seminar:
https://github.com/mudlord/bundhttps://github.com/mudlord/bund (fixed function, code horrors beware!)(fixed function, code horrors beware!) Emulators: Emulators: https://github.com/libretrohttps://github.com/libretro Model viewer: Model viewer:
https://github.com/libretro/modelviewer-librhttps://github.com/libretro/modelviewer-libretroetro
Coding in OpenGL doc by Themaister: Coding in OpenGL doc by Themaister: https://github.com/libretro/https://github.com/libretro/
libretro.github.com/raw/master/libretro.github.com/raw/master/documents/libretro-gl.pdfdocuments/libretro-gl.pdf
ResourcesResources
Doc on using the libretro API:Doc on using the libretro API:
https://github.com/libretro/https://github.com/libretro/libretro.github.com/raw/master/libretro.github.com/raw/master/documents/libretro.pdfdocuments/libretro.pdf
• Paper on Cg/HLSL shaders and Paper on Cg/HLSL shaders and game/demo aware shading:game/demo aware shading:
https://github.com/libretro/https://github.com/libretro/libretro.github.com/raw/master/libretro.github.com/raw/master/documents/libretro-shader.pdfdocuments/libretro-shader.pdf