aboutsummaryrefslogtreecommitdiff
path: root/libpsn00b/readme.txt
diff options
context:
space:
mode:
authorJohn Wilbert M. Villamor <lameguy64@gmail.com>2019-11-22 09:11:12 +0800
committerJohn Wilbert M. Villamor <lameguy64@gmail.com>2019-11-22 09:11:12 +0800
commitea46d05aed0343c20d8fdfaa0e67d54d51e8e2a0 (patch)
tree43e2a53f4e5f7f55b075cfc9d6dc7a652a7b0837 /libpsn00b/readme.txt
parentd80d92e13330d527ddb94420b19f9e21bf0e74eb (diff)
downloadpsn00bsdk-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.txt136
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