OpenOrbis Toolchain PS4: Difference between revisions
From GameBrew
More actions
No edit summary |
No edit summary |
||
| 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== | ==Changelog== | ||
| Line 201: | Line 177: | ||
==Credits + Special Thanks== | ==Credits + Special Thanks== | ||
* Specter: Create-eboot/lib relinker, miralib, assistant suite, readelf, samples and documentation | * Specter: Create-eboot/lib relinker, miralib, assistant suite, readelf, samples and documentation. | ||
* CrazyVoid: Stub generator, headers, samples and documentation | * CrazyVoid: Stub generator, headers, samples and documentation. | ||
* maxton: Create-pkg pkg and SFO generation tools | * maxton: Create-pkg pkg and SFO generation tools. | ||
* Kiwidog: Mira, assistance, documentation | * Kiwidog: Mira, assistance, documentation. | ||
* IDC: Lots of help with libraries and other bug fixes | * IDC: Lots of help with libraries and other bug fixes. | ||
* flatz: Homebrew research and writeups, SELF reversing and documentation | * flatz: Homebrew research and writeups, SELF reversing and documentation. | ||
* m0rph3us1987: Help with debugging stuff | * m0rph3us1987: Help with debugging stuff. | ||
* bigboss / psxdev: Library research and reverse engineering, used for reference by various samples | * bigboss / psxdev: Library research and reverse engineering, used for reference by various samples. | ||
* John Tormblom: Build system prototyping | * John Tormblom: Build system prototyping. | ||
* LightningMods / LM: Testing via APP_HOME and lib loading help on the Mira side | * LightningMods / LM: Testing via APP_HOME and lib loading help on the Mira side. | ||
* Lord Friky: Proper macOS support | * Lord Friky: Proper macOS support. | ||
* sleirsgoevy: Bug fixes and support, various samples | * sleirsgoevy: Bug fixes and support, various samples. | ||
* ChendoChap: Bug fixes and support | * ChendoChap: Bug fixes and support. | ||
* astrelsky: Bug fixes and support | * astrelsky: Bug fixes and support. | ||
* Nikita Krapivin: C++ exception support, openGL/piglet work | * Nikita Krapivin: C++ exception support, openGL/piglet work. | ||
* MrSlick: Awesome logo | * MrSlick: Awesome logo. | ||
* OpenOrbis Team | * OpenOrbis Team. | ||
* Other anonymous contributors | * 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.