aboutsummaryrefslogtreecommitdiff
path: root/libpsn00b/readme.txt
diff options
context:
space:
mode:
Diffstat (limited to 'libpsn00b/readme.txt')
-rw-r--r--libpsn00b/readme.txt134
1 files changed, 82 insertions, 52 deletions
diff --git a/libpsn00b/readme.txt b/libpsn00b/readme.txt
index b1b37ec..940746c 100644
--- a/libpsn00b/readme.txt
+++ b/libpsn00b/readme.txt
@@ -1,70 +1,98 @@
LibPSn00b, PSn00bSDK software libraries
-2019 Lameguy64 / Meido-Tek Productions
+2019 - 2020 Lameguy64 / Meido-Tek Productions
Licensed under Mozilla Public License
-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.
-
-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.
+LibPSn00b is a collection of libraries that make up the core backbone of
+PSn00bSDK, as it provides a higher level software interface for developing
+software for the PS1 platform. The majority of the libraries are been written
+from scratch in a mix of C and hand optimized assembly language for optimal
+software performance.
+These libraries can only be compiled using a build of GCC that targets
+mipsel-unknown-elf. Compiler version shouldn't matter much and it should work
+fine with GCC 9.1.0, though 7.4.0 is the recommended version as that is what
+LibPSn00b is most tested most on.
+
Brief summary of libraries:
- libc - Standard C library. Contains only a small subset of the full
- standard C library such as string and memory manipulation
- functions. Should include libgcc for special compiler specific
- dependencies and prevents libc related linker hell.
+ libc - Standard C library. Covers only a small subset of the full
+ standard C library such as basic string and memory manipulation
+ functions. Should include libgcc to avoid libc/libgcc linker
+ hell (endless cross referencing).
- psxgpu - GPU library for video and graphics control. Also includes
- interrupt handling for various library subsystems.
+ psxgpu - GPU library for video, graphics control, and interrupt service
+ subsystem that other libraries that uses interrupts depend on.
- psxgte - GTE library for GTE accelerated vector transformations necessary
- for high performance 3D graphics.
+ psxgte - GTE library for hardware accelerated vector transformations
+ that are integral for high performance 3D graphics on the PS1
+ (it is a Geometry Transformation Engine, NOT Transfer Engine).
- psxapi - Provides access to various BIOS functions in the PSX BIOS.
+ psxapi - Provides function calls for using functions provided by the PS1
+ BIOS.
psxetc - Provides some miscellaneous features such as debug font.
- 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.
+ psxspu - SPU library (work in progress). Currently supports hardware
+ init, sample data upload via DMA and playing sound samples.
+ Lacks support for reverb and a sequenced music subsystem.
- psxcd - CD-ROM support library. Provides greater CD-ROM functionality
- than what the BIOS subsystem can provide.
+ psxcd - CD-ROM library for loading files, parsing directories
+ (PSn00bSDK addition), CD Audio/XA playback with provisions for
+ data streaming. Also supports multi-session discs (must be
+ selected manually).
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.
+ and some additional details of the library. Changes of all the libraries
+ must be covered in the changelog.txt file.
Compiling:
- 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 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.
+ To compile the LibPSn00b libraries, you will first need a working GCC
+ toolchain which you can either build yourself as described in the
+ toolchain.txt file (preferred on Linux/BSDs) or download a precompiled
+ toolchain from the PSn00bSDK page of Lameguy64's website:
+ http://lameguy64.net/?page=psn00bsdk
+
+ Once the toolchain is set up, you may want to set the following
+ environment variables if they're required for your particular setup:
+
+ * PSN00BSDK_TC specifies the base directory of the GCC toolchain to
+ compile the libraries with. If GCC_BASE is defined in the environment it
+ will use the path of that variable instead. If neither variable is
+ defined the makefiles will assume the toolchain binaries are accessible
+ from your PATH variable and the GCC toolchain directory is at
+ C:\mipsel-unknown-elf in Windows or /usr/local/mipsel-unknown-elf
+ in Linux/BSD.
+
+ * GCC_VERSION specifies the version of the toolchain. If not specified
+ the makefiles will default to 7.4.0. This is only used for building the
+ libc library which needs to inherit the libgcc library from the
+ toolchain directories to avoid the aforementioned linker hell, and the
+ path to that library file includes a directory named after the version
+ number.
+
+ * PSN00BSDK_LIBS specifies the absolute directory path you wish the
+ compiled libraries will be copied to. If not defined the compiled
+ libraries will simply be copied to the parent directory of the libraries
+ (libpsn00b).
+
+ Once the environment variables are set, building the libraries should just
+ be a matter of simply running 'make all install' within the LibPSn00b
+ directory and it should run through all the libraries. You may specify a
+ -j parameter to run the jobs in parallel on a mult-processor/core/thread
+ system.
Documentation:
- 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.
+ LibPSn00b documentation is all covered in the LibPSn00b Reference.odf
+ document complete with the same document formatting as found in official
+ library documents. It may be wise to export the document as a PDF
+ document for easier viewing.
Contributing:
@@ -84,28 +112,30 @@ Contributing:
* 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.
+ changelog.txt file. Updates by 'annoyingmous' are 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
to help differentiate from original functions and new additions.
-LibPSn00b to-do list:
+LibPSn00b Library to-do list:
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.
+ libraries have been considered but not yet developed. The following
+ lists a number of libraries that are not yet in development.
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.
+ the development of custom peripherals.
- psxmcrd - Better and faster memory card library that works alongside the
- psxpad library.
+ psxmcrd - Better and faster memory card library with provisions for
+ low-level card access. The psxpad library would provide
+ communication routines for the card 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
+ psxpress - MDEC and data decompression library. May use DEFLATE or LZ77
+ for compressing MDEC data instead of Huffman as used in the
+ official libraries. It may yield better compression which may
+ potentially result in higher quality FMVs. \ No newline at end of file