diff options
| author | John Wilbert M. Villamor <lameguy64@gmail.com> | 2019-11-22 09:11:12 +0800 |
|---|---|---|
| committer | John Wilbert M. Villamor <lameguy64@gmail.com> | 2019-11-22 09:11:12 +0800 |
| commit | ea46d05aed0343c20d8fdfaa0e67d54d51e8e2a0 (patch) | |
| tree | 43e2a53f4e5f7f55b075cfc9d6dc7a652a7b0837 /libpsn00b/readme.txt | |
| parent | d80d92e13330d527ddb94420b19f9e21bf0e74eb (diff) | |
| download | psn00bsdk-ea46d05aed0343c20d8fdfaa0e67d54d51e8e2a0.tar.gz | |
Added long awaited CD-ROM library and loads of fixes, see changelog for details
Diffstat (limited to 'libpsn00b/readme.txt')
| -rw-r--r-- | libpsn00b/readme.txt | 136 |
1 files changed, 72 insertions, 64 deletions
diff --git a/libpsn00b/readme.txt b/libpsn00b/readme.txt index 43b120a..1e2e6d7 100644 --- a/libpsn00b/readme.txt +++ b/libpsn00b/readme.txt @@ -3,100 +3,108 @@ LibPSn00b, PSn00bSDK software libraries Licensed under Mozilla Public License -LibPSn00b make up the majority of PSn00bSDK as it provides the functions -necessary for developing software for the PSX. Most libraries, mainly the -GPU and GTE libraries are written mostly in assembly language. +LibPSn00b is a collection of libraries which make up the core backbone of +PSn00bSDK as it provides an essential software framework for developing +homebrew software for the PSX platform. Great majority of the libraries +are been written from scratch written in a mix of C and hand optimized +assembly language for best performance. -Brief library overview: +These libraries can only be compiled with a build of GCC that supports mipsel +as one of the supported targets, naturally as these libraries are intended +for the PSX hardware which uses a MIPS R3000 CPU supported by mipsel. +Compiler version shouldn't matter much and should build fine in 9.1.0, +though 7.4.0 is the most recommended version to use as it is the version +currently used for the majority of the development and testing of LibPSn00b. + + +Brief summary of libraries: libc - Standard C library. Contains only a small subset of the full - standard C library, mostly string and memory manipulation - functions. + standard C library such as string and memory manipulation + functions. Should include libgcc for special compiler specific + dependencies and prevents libc related linker hell. - psxgpu - GPU library for video and graphics control. Most of the - important functions are implemented. + psxgpu - GPU library for video and graphics control. Also includes + interrupt handling for various library subsystems. - psxgte - GTE library for GTE accelerated vector transformations. Most - important functions are implemented. + psxgte - GTE library for GTE accelerated vector transformations necessary + for high performance 3D graphics. - psxapi - Provides access to most of the BIOS functions calls of the - PSX BIOS. + psxapi - Provides access to various BIOS functions in the PSX BIOS. - psxetc - Provides some misc functions such as debug font. + psxetc - Provides some miscellaneous features such as debug font. - psxspu - SPU library. Basic functions such as hardware init, uploading - data to SPU RAM via DMA transfer and playing sound playback - are fully working but is currently lacking a number of - important functions, especially reverb. + psxspu - SPU library. Basic capabilities such as hardware init, + sample upload using DMA and playing samples are supported. + Lacks support for reverb and various sequenced music related + features. - Each library has its own readme file that contains its changelog, todo - list, credits and some additional details of the library. + Each library has its own readme file that contains a todo list, credits + and some additional details of the library. Changelog of all libraries are + compiled in the changelog.txt file. Compiling: - Compiling the LibPSn00b libraries requires GCC and binutils targetting + Compiling the LibPSn00b libraries requires GCC and binutils targeting mipsel-unknown-elf built with libgcc. The path to those binaries must be specified in your PATH environment variable and the binaries must be prefixed by the target architecture (ie. mipsel-unknown-elf-gcc). - Simply run the Makefile in this directory using make (or gmake if you're - in a BSD environment). The Makefile should parse though each library - directory and run the makefile in it. + Simply run the Makefile in this directory with make (or gmake if you're + working in a BSD environment). The Makefile should parse though each + library directory and run the makefile in it. Documentation: - Documentation of all the libraries are found in libn00bref.odf and it features - the same formatting as the official library documents. The document can be - exported in PDF format for easier viewing with a web browser or PDF viewer. + Documentation of all the libraries are found in libn00bref.odf and it + features the same formatting as the official library documents. It is + recommended to export it as a PDF document for easier viewing. Contributing: - Contributions are open for this project. Just obey the following rules - when making a contribution: + Contributions are open for this project. But it is recommended to at + least follow the following rules when contributing to prevent headaches. * If you add new functions to libpsn00b make sure you document them in - libn00bref.odf. Documentation using Doxygen is discouraged. - * This project desires functions that interact with hardware registers to - be written in assembly language. If you decide to write your functions - that interact with hardware registers in C make sure you define your - register pointers as volatile and they must work properly when compiled - with -O2 optimization. - * Functions must work flawlessly on both emulators and real hardware. - * Don't forget to put your user name in the readme file of the library - you've made a contribution on, and details of what you've changed in the - changelog. + libn00bref.odf. Documentation using Doxygen is not recommended. + + * Library functions can either be written in C or assembly language + whichever you prefer. Though it is not entirely mandatory but + recommended to write functions that directly interact with hardware + registers in assembly. + + * Functions must work on both emulators and real hardware. + + * Don't forget to put your name in the readme file of the library you've + made a contribution on and details of what you've changed in the + changelog.txt file. Annoyingmous is not tolerated in this project. + * New functions that are not originally in the official SDK must be marked - as original code in both the library headers and the libn00bref document. + as original code in both the library headers and the libn00bref document + to help differentiate from original functions and new additions. -Library to-do list: - - Since the PSn00bSDK project still a work in progress, essential libraries - for CD and controllers support are not yet created but are high priority. +LibPSn00b to-do list: - libc - Yet to include a complete C standard function + Because the PSn00bSDK project still a work in progress, a number of + essential libraries are considered but not yet developed. The following + lists a number of essential libraries not yet developed. - psxcd - CD library. Not much progress as getting the CD controller to - cooperate has been one heck of a force to be reckoned with. - Gave up with my repeated attempts with no success. Absolutely - huge props to anyone who can figure out how to use the CD - controller properly! -Lameguy64 - - psxpad - Pad/tap/gun library. No work has been done on it currently. - Supporting the Konami Justifier can be ignored as the way how - that lightgun works is pretty crude and likely going to be - awful to implement. Namco's Guncon is a lot simpler to - implement. - - psxpress - MDEC library. No work has been done on it currently. libpress - from the official libraries also contains functions for - encoding SPU compatible ADPCM data from raw PCM samples. - - Before implementing CD and controller support a better interrupt handling - scheme must be implemented as it would save a lot of trouble. Details - regarding this interrupt handler implementation can be found in psxgpu's - readme document.
\ No newline at end of file + psxcd - Full CD-ROM support library. + + psxpad - Pad/tap/gun library for better controller support. May support + PS2 controllers natively. Should provide functions for directly + controlling the controller/memory card interfaces to cater to + development of custom peripherals. + + psxmcrd - Better and faster memory card library that works alongside the + psxpad library. + + psxpress - MDEC and data decompression library. May use DEFLATE for + compressing MDEC data instead of Huffman as used in the + official libraries, which may yield better compression and + higher quality FMVs.
\ No newline at end of file |
