OpenOrbis Toolchain PS4: Difference between revisions
From GameBrew
More actions
Created page with "{{Infobox PS4 Homebrews |title=OpenOrbis Toolchain |image=openorbistoolchainps4.png |description=The OpenOrbis PS4 custom toolchain. Allows developers to build homebrew for the PS4 without the official SDK. |author=Cryptogenic |lastupdated=2021/12/22 |type=Developments |version=0.5.2 |license=GPL-3.0 |download=https://dlhb.gamebrew.org/ps4homebrews/openorbistoolchainps4.7z |website=https://github.com/OpenOrbis/OpenOrbis-PS4-Toolchain |source=https://github.com/OpenOrbis/..." |
No edit summary |
||
| (One intermediate revision by one other user not shown) | |||
| Line 6: | Line 6: | ||
|lastupdated=2021/12/22 | |lastupdated=2021/12/22 | ||
|type=Developments | |type=Developments | ||
|version=0.5. | |version=0.5.3 | ||
|license=GPL-3.0 | |license=GPL-3.0 | ||
|download=https://dlhb.gamebrew.org/ps4homebrews/openorbistoolchainps4.7z | |download=https://dlhb.gamebrew.org/ps4homebrews/openorbistoolchainps4.7z | ||
| Line 19: | Line 19: | ||
|image_alt=OpenOrbis Toolchain | |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 == | == External links == | ||
* | * GitHub - https://github.com/OpenOrbis/OpenOrbis-PS4-Toolchain | ||
Latest revision as of 00:30, 16 May 2025
| OpenOrbis Toolchain | |
|---|---|
| General | |
| Author | Cryptogenic |
| Type | Developments |
| Version | 0.5.3 |
| License | GPL-3.0 |
| Last Updated | 2021/12/22 |
| Links | |
| Download | |
| Website | |
| Source | |
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 @bucanero in #174
- Fix SaveData.h compiling error in #173
- Update SystemService.h to include dependency by @Al-Azif in #175
- Piglet sample: censor out sceKernelDlsym by @sleirsgoevy in #182
- libkernel.h: add scePthreadSelf definition by @Cpasjuste in #184
- Add RegMgr methods by @bucanero in #179
- .NET Core 3.0 Runtime is required to run LibOrbisPkg by @illusion0001 in #176
- Update libkernel.h by @Backporter in #186
- Readd keyboard sample (fixed a typo) by @Klairm in #183
- Remove specific versioning from Dockerfile by @Al-Azif in #194
- Fix #178 by @Al-Azif in #193
- Add Trophy Support and add a sample for the trophy system by @Backporter in #188
- Add HTTP sample by @bucanero in #196
- Add a MsgDialog sample by @bucanero in #197
- Update Rtc.h by @Backporter in #202
- Add sceNetResolver...() methods by @bucanero in #207
- fix firmware structure, fix sceKernelFstat's args, sceRtcCurrentClockLocalTime's args, add error dialog structures and function definitions, add Np defs. by @Backporter in #203
- For convenience, add 2 XML tags to MyTemplate.vstemplate by @SummerFalls in #204
- Update fliprate and Screenshot Overlay Stub by @illusion0001 in #212
- CI: fix build by @illusion0001 in #217
- Add user service methods by @bucanero in #215
- Update bash script to exclude non make folders by @illusion0001 in #222
- dialogs: use
show_dialogfor condition example by @illusion0001 in #221 - Force sce sections to appear in the elf. by @nkrapivin in #211
- Move fliprate to enum by @illusion0001 in #216
- Update ScreenShot defs by @illusion0001 in #214
- Add appinfo data type and functions. by @OSM-Made in #220
- Defined some networking functions. by @OSM-Made in #219
- Fix net http build by @illusion0001 in #224
- Update readme badges by @illusion0001 in #225
- CI: Download latest releases from URLs by @illusion0001 in #227
- add definitions by @bucanero in #230
- Fix C definitions by @bucanero in #231
- Add sceUsbd definitions by @InvoxiPlayGames in #229
- Update save_data.h by @illusion0001 in #234
- Fix
#endiforder by @illusion0001 in #233 - Add some definitions for GnmDriver and VideoOut by @pipehuffer in #235
- Add extension controller support to Pad.h header. by @InvoxiPlayGames in #228
- kernel: replace BSD types with stdint's in kevent's flags by @pipehuffer in #236
- Update scePadReadExt+scePadReadStateExt by @illusion0001 in #246
- Rename
inttoint32_tandunsigned inttouint32_tby @illusion0001 in #248 - Update .gitignore by @illusion0001 in #244
- Fix build for llvm 14+ by @illusion0001 in #242
- Fix undefined symbols by @illusion0001 in #245
- Change sys/time.h to time.h in save_data.h in #238
- Added Save Data Missing Info by @xXxTheDarkprogramerxXx in #187
- App launching definitions (from @LightningMods) by @illusion0001 in #232
- Convert macro definitions into enums by @illusion0001 in #243
- Fix map protection types by @illusion0001 in #247
- Update libmonovm.h by @kiwidoggie in #251
- GnmDriver: Add definitions for SetEmbeddedShader and DrawIndexAuto by @pipehuffer in #240
- Update CommonDialog.h by @illusion0001 in #252
- Update CRT version to 1.00 to allow building on older firmwares. by @kiwidoggie in #253
- build library stub from separate file by @0xcaff in #258
- Update action versions and rebuild every month by @illusion0001 in #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
SECTIONentry (thanks sleirsgoevy). - Fixed copy/paste induced bugs in the autobuild.py script (thanks alazif).
- Fixed a minor issue where the
__bswap32macro 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
sce_module/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
/samples/_common/graphics.cppdue 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
usingstatements for functions that are macros on FreeBSD targets (thanks kiwidog). - Fixed an issue where the
sockaddr_instructure 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
include/c++/v1headers 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
/docsfor libkernel, pad, sysmodule, userservice, and videoout. - Common functionality between samples (graphics and logging as well as PNG decoding) have been moved into
/samples/_common. - 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
DT_INIT_ARRAY_SZandDT_FINI_ARRAY_SZtags to be incorrectly identified asDT_INIT_ARRAYandDT_FINI_ARRAYtags. - 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
DEBUGLOGmacro insamples/_uncommon/log.h. 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
drawPixel()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
.got.pltsection 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
.sce_proc_paramsection (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
.data.rel.rosection was present (thanks IDC). - Added a build script for create-eboot/create-lib for Windows (thanks IDC).
- Fixed an issue where the
__GNUC__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
include/x86directory 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.
.got.pltis now forced into the build, even if there are no PLT entries (thanks IDC).
v0.1.1
- Fixes issue #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 #7 where makefiles were not creating intermediate directories and would thus fail on build.
- Fixes issue #8 where the
setup-*.shscripts in/extrahad 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.