You do not have permission to edit this page, for the following reason:
Free text:
{{#seo: |title= (Developments) - GameBrew |title_mode=append |image=openorbistoolchainps4.png |image_alt=OpenOrbis Toolchain }} An open source PS4 toolchain for developing PS4 homebrew without the need of Sony's official SDK. ==Changelog== '''v0.5.3''' * Fix OrbisSaveDataParam definition by [https://github.com/bucanero @bucanero] in [https://github.com/OpenOrbis/OpenOrbis-PS4-Toolchain/pull/174 #174] * Fix SaveData.h compiling error in [https://github.com/OpenOrbis/OpenOrbis-PS4-Toolchain/pull/173 #173] * Update SystemService.h to include dependency by [https://github.com/Al-Azif @Al-Azif] in [https://github.com/OpenOrbis/OpenOrbis-PS4-Toolchain/pull/175 #175] * Piglet sample: censor out sceKernelDlsym by [https://github.com/sleirsgoevy @sleirsgoevy] in [https://github.com/OpenOrbis/OpenOrbis-PS4-Toolchain/pull/182 #182] * libkernel.h: add scePthreadSelf definition by [https://github.com/Cpasjuste @Cpasjuste] in [https://github.com/OpenOrbis/OpenOrbis-PS4-Toolchain/pull/184 #184] * Add RegMgr methods by [https://github.com/bucanero @bucanero] in [https://github.com/OpenOrbis/OpenOrbis-PS4-Toolchain/pull/179 #179] * .NET Core 3.0 Runtime is required to run LibOrbisPkg by [https://github.com/illusion0001 @illusion0001] in [https://github.com/OpenOrbis/OpenOrbis-PS4-Toolchain/pull/176 #176] * Update libkernel.h by [https://github.com/Backporter @Backporter] in [https://github.com/OpenOrbis/OpenOrbis-PS4-Toolchain/pull/186 #186] * Readd keyboard sample (fixed a typo) by [https://github.com/Klairm @Klairm] in [https://github.com/OpenOrbis/OpenOrbis-PS4-Toolchain/pull/183 #183] * Remove specific versioning from Dockerfile by [https://github.com/Al-Azif @Al-Azif] in [https://github.com/OpenOrbis/OpenOrbis-PS4-Toolchain/pull/194 #194] * Fix [https://github.com/OpenOrbis/OpenOrbis-PS4-Toolchain/issues/178 #178] by [https://github.com/Al-Azif @Al-Azif] in [https://github.com/OpenOrbis/OpenOrbis-PS4-Toolchain/pull/193 #193] * Add Trophy Support and add a sample for the trophy system by [https://github.com/Backporter @Backporter] in [https://github.com/OpenOrbis/OpenOrbis-PS4-Toolchain/pull/188 #188] * Add HTTP sample by [https://github.com/bucanero @bucanero] in [https://github.com/OpenOrbis/OpenOrbis-PS4-Toolchain/pull/196 #196] * Add a MsgDialog sample by [https://github.com/bucanero @bucanero] in [https://github.com/OpenOrbis/OpenOrbis-PS4-Toolchain/pull/197 #197] * Update Rtc.h by [https://github.com/Backporter @Backporter] in [https://github.com/OpenOrbis/OpenOrbis-PS4-Toolchain/pull/202 #202] * Add sceNetResolver...() methods by [https://github.com/bucanero @bucanero] in [https://github.com/OpenOrbis/OpenOrbis-PS4-Toolchain/pull/207 #207] * fix firmware structure, fix sceKernelFstat's args, sceRtcCurrentClockLocalTime's args, add error dialog structures and function definitions, add Np defs. by [https://github.com/Backporter @Backporter] in [https://github.com/OpenOrbis/OpenOrbis-PS4-Toolchain/pull/203 #203] * For convenience, add 2 XML tags to MyTemplate.vstemplate by [https://github.com/SummerFalls @SummerFalls] in [https://github.com/OpenOrbis/OpenOrbis-PS4-Toolchain/pull/204 #204] * Update fliprate and Screenshot Overlay Stub by [https://github.com/illusion0001 @illusion0001] in [https://github.com/OpenOrbis/OpenOrbis-PS4-Toolchain/pull/212 #212] * CI: fix build by [https://github.com/illusion0001 @illusion0001] in [https://github.com/OpenOrbis/OpenOrbis-PS4-Toolchain/pull/217 #217] * Add user service methods by [https://github.com/bucanero @bucanero] in [https://github.com/OpenOrbis/OpenOrbis-PS4-Toolchain/pull/215 #215] * Update bash script to exclude non make folders by [https://github.com/illusion0001 @illusion0001] in [https://github.com/OpenOrbis/OpenOrbis-PS4-Toolchain/pull/222 #222] * dialogs: use <code>show_dialog</code> for condition example by [https://github.com/illusion0001 @illusion0001] in [https://github.com/OpenOrbis/OpenOrbis-PS4-Toolchain/pull/221 #221] * Force sce sections to appear in the elf. by [https://github.com/nkrapivin @nkrapivin] in [https://github.com/OpenOrbis/OpenOrbis-PS4-Toolchain/pull/211 #211] * Move fliprate to enum by [https://github.com/illusion0001 @illusion0001] in [https://github.com/OpenOrbis/OpenOrbis-PS4-Toolchain/pull/216 #216] * Update ScreenShot defs by [https://github.com/illusion0001 @illusion0001] in [https://github.com/OpenOrbis/OpenOrbis-PS4-Toolchain/pull/214 #214] * Add appinfo data type and functions. by [https://github.com/OSM-Made @OSM-Made] in [https://github.com/OpenOrbis/OpenOrbis-PS4-Toolchain/pull/220 #220] * Defined some networking functions. by [https://github.com/OSM-Made @OSM-Made] in [https://github.com/OpenOrbis/OpenOrbis-PS4-Toolchain/pull/219 #219] * Fix net http build by [https://github.com/illusion0001 @illusion0001] in [https://github.com/OpenOrbis/OpenOrbis-PS4-Toolchain/pull/224 #224] * Update readme badges by [https://github.com/illusion0001 @illusion0001] in [https://github.com/OpenOrbis/OpenOrbis-PS4-Toolchain/pull/225 #225] * CI: Download latest releases from URLs by [https://github.com/illusion0001 @illusion0001] in [https://github.com/OpenOrbis/OpenOrbis-PS4-Toolchain/pull/227 #227] * add definitions by [https://github.com/bucanero @bucanero] in [https://github.com/OpenOrbis/OpenOrbis-PS4-Toolchain/pull/230 #230] * Fix C definitions by [https://github.com/bucanero @bucanero] in [https://github.com/OpenOrbis/OpenOrbis-PS4-Toolchain/pull/231 #231] * Add sceUsbd definitions by [https://github.com/InvoxiPlayGames @InvoxiPlayGames] in [https://github.com/OpenOrbis/OpenOrbis-PS4-Toolchain/pull/229 #229] * Update save_data.h by [https://github.com/illusion0001 @illusion0001] in [https://github.com/OpenOrbis/OpenOrbis-PS4-Toolchain/pull/234 #234] * Fix <code>#endif</code> order by [https://github.com/illusion0001 @illusion0001] in [https://github.com/OpenOrbis/OpenOrbis-PS4-Toolchain/pull/233 #233] * Add some definitions for GnmDriver and VideoOut by [https://github.com/pipehuffer @pipehuffer] in [https://github.com/OpenOrbis/OpenOrbis-PS4-Toolchain/pull/235 #235] * Add extension controller support to Pad.h header. by [https://github.com/InvoxiPlayGames @InvoxiPlayGames] in [https://github.com/OpenOrbis/OpenOrbis-PS4-Toolchain/pull/228 #228] * kernel: replace BSD types with stdint's in kevent's flags by [https://github.com/pipehuffer @pipehuffer] in [https://github.com/OpenOrbis/OpenOrbis-PS4-Toolchain/pull/236 #236] * Update scePadReadExt+scePadReadStateExt by [https://github.com/illusion0001 @illusion0001] in [https://github.com/OpenOrbis/OpenOrbis-PS4-Toolchain/pull/246 #246] * Rename <code>int</code> to <code>int32_t</code> and <code>unsigned int</code> to <code>uint32_t</code> by [https://github.com/illusion0001 @illusion0001] in [https://github.com/OpenOrbis/OpenOrbis-PS4-Toolchain/pull/248 #248] * Update .gitignore by [https://github.com/illusion0001 @illusion0001] in [https://github.com/OpenOrbis/OpenOrbis-PS4-Toolchain/pull/244 #244] * Fix build for llvm 14+ by [https://github.com/illusion0001 @illusion0001] in [https://github.com/OpenOrbis/OpenOrbis-PS4-Toolchain/pull/242 #242] * Fix undefined symbols by [https://github.com/illusion0001 @illusion0001] in [https://github.com/OpenOrbis/OpenOrbis-PS4-Toolchain/pull/245 #245] * Change sys/time.h to time.h in save_data.h in [https://github.com/OpenOrbis/OpenOrbis-PS4-Toolchain/pull/238 #238] * Added Save Data Missing Info by [https://github.com/xXxTheDarkprogramerxXx @xXxTheDarkprogramerxXx] in [https://github.com/OpenOrbis/OpenOrbis-PS4-Toolchain/pull/187 #187] * App launching definitions (from [https://github.com/LightningMods @LightningMods]) by [https://github.com/illusion0001 @illusion0001] in [https://github.com/OpenOrbis/OpenOrbis-PS4-Toolchain/pull/232 #232] * Convert macro definitions into enums by [https://github.com/illusion0001 @illusion0001] in [https://github.com/OpenOrbis/OpenOrbis-PS4-Toolchain/pull/243 #243] * Fix map protection types by [https://github.com/illusion0001 @illusion0001] in [https://github.com/OpenOrbis/OpenOrbis-PS4-Toolchain/pull/247 #247] * Update libmonovm.h by [https://github.com/kiwidoggie @kiwidoggie] in [https://github.com/OpenOrbis/OpenOrbis-PS4-Toolchain/pull/251 #251] * GnmDriver: Add definitions for SetEmbeddedShader and DrawIndexAuto by [https://github.com/pipehuffer @pipehuffer] in [https://github.com/OpenOrbis/OpenOrbis-PS4-Toolchain/pull/240 #240] * Update CommonDialog.h by [https://github.com/illusion0001 @illusion0001] in [https://github.com/OpenOrbis/OpenOrbis-PS4-Toolchain/pull/252 #252] * Update CRT version to 1.00 to allow building on older firmwares. by [https://github.com/kiwidoggie @kiwidoggie] in [https://github.com/OpenOrbis/OpenOrbis-PS4-Toolchain/pull/253 #253] * build library stub from separate file by [https://github.com/0xcaff @0xcaff] in [https://github.com/OpenOrbis/OpenOrbis-PS4-Toolchain/pull/258 #258] * Update action versions and rebuild every month by [https://github.com/illusion0001 @illusion0001] in [https://github.com/OpenOrbis/OpenOrbis-PS4-Toolchain/pull/263 #263] '''v0.5.2''' * C++ exception support has been added (thanks Nikita Krapivin)! * Added OpenGL/piglet GPU rendering sample + headers (thanks Nikita Krapivin)! * Added automated package generation to sample build scripts! * Added C++ support for building libraries/PRXs! * Added and updated prototypes/types for over 13 PS4-specific headers (thanks 0x199, sleirsgoevy, Nikita Krapivin, OSM, al-azif, bucanero)! * Updated build system/scripts for samples and VS project templates to a more clean and convenient system. * Fixed an issue where homebrew apps were hard to debug in GDB due to improper .dynamic section (thanks sleirsgoevy)! * Fixed more discrepancies between BSD and MUSL headers (thanks sleirsgoevy, al-azif). * Fixed an issue where C++ cmath headers failed to use certain namespaces (thanks Nikita Krapivin). * Fixed various miscalculation bugs in create-fself. * Reworked musl to use libkernel instead of syscalls for compatibility (thanks sleirsgoevy, John Tornblom). * Merged create-eboot and create-lib into one tool for ease-of-use. '''v0.5.1''' * Fixed various discrepancies between BSD and MUSL including function prototypes, structure definitions, and macros! * Added Docker container support (thanks alazif)! * Added proper TLS support (thanks sleirsgoevy)! * Added a battery of unit tests for issues addressed in v0.5.1. These tests will be kept up to date with future additions to attempt to improve release qualities. * Fixed an issue where MUSL was not thread-safe due to custom CRT. * Added support '+' and '-' escaping in NIDs (thanks sleirsgoevy). * Fixed an issue where relocations could refer to incorrect symbols due to not accounting for an additional <code>SECTION</code> entry (thanks sleirsgoevy). * Fixed copy/paste induced bugs in the autobuild.py script (thanks alazif). * Fixed a minor issue where the <code>__bswap32</code> macro in the endian include header produced compiler warnings (thanks astrelsky). '''v0.5''' * The toolchain now includes stub/empty libc and libSceFios2 modules to avoid breaking non-homebrew games and applications! ** ''Note: This change works in conjunction with Mira, meaning you'll want to update the version of Mira you're loading as well.'' ** ''Additional note: these modules can be found in /bin/data/modules/libc.prx and /bin/data/modules/libSceFios2.prx, and should be placed in <code>sce_module/</code> in your homebrew's package file.'' * SDL2 headers as well as a mini game sample have now been added (thanks znullptr for the original SDL port)! * C++ threading (std::thread) support has been added! * C++ locking / synchronization support has been added! * Fixed a performance issue in create-eboot, giving it a 7858% performance boost (measured with the SDL sample)! * Visual studio project templates now support and link with C++ by default. * Added various macros and function definitions to libkernel, libScePad, libSceUserService, and libSceVideoOut, as well as documentation for these additions. * Added right.prx by IDC to all samples (thanks IDC for right.prx). * Slightly adjusted sample pkg gp4 files to use the same eboot.bin created by build scripts instead of unnecessarily using a copy. * Fixed jagged text rendering in <code>/samples/_common/graphics.cpp</code> due to not factoring in the freetype greyscale bitmap alpha properly. * Buffering is now disabled on stdout automatically due to it not handling buffering well. * Updated pthread header to use PS4/BSD-specific values. * Samples now have DWARF / debug symbols included by default (thanks sleirsgoevy). * Reworked the threading sample to use std::thread and std::mutex now that C++ threading is supported. * Reworked the networking sample to a TCP server instead of a TCP client. * Fixed an issue where a really silly FreeBSD change broke any networking functions that need to use the sockaddr struct such as bind. * Fixed an issue where GP4 project files were using non-portable windows-style path separators (thanks sleirsgoevy). * Fixed an issue where the non-sce sleep() function didn't work due to a MUSL-related issues (thanks LM, ChendoChap). * Fixed an issue where SPRX visual studio projects contained a typo in an include statement and an incorrect set of libraries for the build script. * Fixed the cmath c++ header, which included <code>using</code> statements for functions that are macros on FreeBSD targets (thanks kiwidog). * Fixed an issue where the <code>sockaddr_in</code> structure was incorrect due to a discrepancy between Linux and FreeBSD (thanks kiwidog). * Fixed an issue where AF_INET6 was erroneously set to 10 due to a discrepancy between Linux and FreeBSD (thanks sleirsgoevy). '''v0.4''' * Added C++ support via <code>include/c++/v1</code> headers and statically built libcxx. * Added support for C++ init_array/fini_array dynamic tags in create-eboot / create-lib. * Remade a new fancy windows installer. * Created a script to streamline the release creation process. * Added initial PS4 library documentation into <code>/docs</code> for libkernel, pad, sysmodule, userservice, and videoout. * Common functionality between samples (graphics and logging as well as PNG decoding) have been moved into <code>/samples/_common</code>. * Font sample has been rewritten to use C++. * Hello world sample has been rewritten to use C++. * Input sample has been rewritten to use C++ and now has a visual component to make the sample more obvious in what it does. * PNG decoding sample has been rewritten to use C++. * System sample has been rewritten to use C++ and now prints to the screen instead of stdout to better demonstrate what it does. * Threading sample has been rewritten to use C++ and similar to system sample, now prints to the screen. * Fixed an issue where the create-eboot/lib and readelf build scripts were not building for macOS. * Fixed a minor typo in readelf which caused <code>DT_INIT_ARRAY_SZ</code> and <code>DT_FINI_ARRAY_SZ</code> tags to be incorrectly identified as <code>DT_INIT_ARRAY</code> and <code>DT_FINI_ARRAY</code> tags. * Updated various sample readmes to account for reworked samples. * Removed old installer NSIS script. ''Known Issues'' * iostream's std::cout does not function properly and will cease to work after one write. For writing to stdout, use the <code>DEBUGLOG</code> macro in <code>samples/_uncommon/log.h</code>. We hope to address this in the future. '''v0.3''' * Added MUSL libc support, removed old BSD headers, and reworked samples to use MUSL. * Added libraries sources for Continuous Integration (CI). * Added debugging info via section header table into OELFs via create-eboot. * Fixed an issue in create-eboot where NIDs were written for local symbols when they shouldn't be. * Fixed an issue where <code>drawPixel()</code> in the font, graphics, and pngdec samples were not inlined, causing performance slowdown (thanks m0rph3us1987). * Added interpreter string write to linker script and removed it from create-eboot. * Removed condition from create-eboot where requiring a <code>.got.plt</code> section was only checked for SPRX libraries and not SELF eboots; all binaries need this section. * Removed sample package files to reduce bloat. They will later be available as separate releases. * Disabled buffering on stdout on various samples for MUSL. ''' v0.2 ''' * Added macOS support (thanks Lord Friky). * Added package file sources for samples to make deploying samples easier, and to better demonstrate how packages should be constructed. * Fixed an issue where create-lib did not properly export NIDs and therefore dynamic resolving would fail (thanks IDC). * Fixed an issue where create-eboot/create-lib would occasionally calculate an incorrect data program size due to not accounting for the size of the <code>.sce_proc_param</code> section (thanks IDC). * Fixed an issue where create-eboot/create-lib would occasionally calculate an incorrect size of the string table due to an off by one via a subtle logic bug related to section padding (thanks IDC). * Fixed an issue where libraries would not have their Global Offset Table (GOT) / Procedure Linkage Table (PLT) aligned if no <code>.data.rel.ro</code> section was present (thanks IDC). * Added a build script for create-eboot/create-lib for Windows (thanks IDC). * Fixed an issue where the <code>__GNUC__</code> fix was being applied even if it was already defined, causing the compiler to complain if you manually defined it via compiler flags (thanks IDC). * Added <code>include/x86</code> directory for systems that don't have it. * Fixed an issue where even if there was no GOT/PLT, the PS4 would complain on libraries because it needs it for some silly reason. <code>.got.plt</code> is now forced into the build, even if there are no PLT entries (thanks IDC). '''v0.1.1''' * Fixes issue [https://github.com/OpenOrbis/OpenOrbis-PS4-Toolchain/issues/6 #6] where samples would fail to build on clang 10.0+. Credit to IDC, frangarcj for help root causing the issue, 1UP, and Tustin for initial reports. * Fixes issue [https://github.com/OpenOrbis/OpenOrbis-PS4-Toolchain/issues/7 #7] where makefiles were not creating intermediate directories and would thus fail on build. * Fixes issue [https://github.com/OpenOrbis/OpenOrbis-PS4-Toolchain/issues/8 #8] where the <code>setup-*.sh</code> scripts in <code>/extra</code> had CRLF line endings, causing errors when attempting to run the scripts. '''v0.1 BETA ''' The first public BETA release of the OpenOrbis PS4 Toolchain. Attached is a copy of the release zip with binaries, as well as a windows NSIS installer for convenience. ==Credits + Special Thanks== * Specter: Create-eboot/lib relinker, miralib, assistant suite, readelf, samples and documentation. * CrazyVoid: Stub generator, headers, samples and documentation. * maxton: Create-pkg pkg and SFO generation tools. * Kiwidog: Mira, assistance, documentation. * IDC: Lots of help with libraries and other bug fixes. * flatz: Homebrew research and writeups, SELF reversing and documentation. * m0rph3us1987: Help with debugging stuff. * bigboss / psxdev: Library research and reverse engineering, used for reference by various samples. * John Tormblom: Build system prototyping. * LightningMods / LM: Testing via APP_HOME and lib loading help on the Mira side. * Lord Friky: Proper macOS support. * sleirsgoevy: Bug fixes and support, various samples. * ChendoChap: Bug fixes and support. * astrelsky: Bug fixes and support. * Nikita Krapivin: C++ exception support, openGL/piglet work. * MrSlick: Awesome logo. * OpenOrbis Team. * Other anonymous contributors. == External links == * GitHub - https://github.com/OpenOrbis/OpenOrbis-PS4-Toolchain
Advertising: