Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/trapexit/3do-example-folio
An example folio (shared library) for the 3DO Portfolio OS
https://github.com/trapexit/3do-example-folio
3do retrogaming
Last synced: about 1 month ago
JSON representation
An example folio (shared library) for the 3DO Portfolio OS
- Host: GitHub
- URL: https://github.com/trapexit/3do-example-folio
- Owner: trapexit
- Created: 2024-05-02T02:36:32.000Z (8 months ago)
- Default Branch: master
- Last Pushed: 2024-05-04T22:55:25.000Z (8 months ago)
- Last Synced: 2024-10-15T10:34:46.574Z (3 months ago)
- Topics: 3do, retrogaming
- Language: C
- Homepage: https://3dodev.com
- Size: 3.91 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# example folio
Folios are a form of dynamically loaded shared libraries. Similar to
`dlopen` on Unix but instead of loading individual functions you load
the a collection of functions. Folios can contain both "user" and
"privilaged" (SWI) functions.3DO did not advertise the existence Folios besides how to use the ones
they created. In early revisions of the official SDK you can find a
simple example showing how to build a folio but strictly for user
space functions. However, the example was incomplete and later
removed.Using the [Portfolio OS
source](https://github.com/trapexit/portfolio_os) we have pieced
together how to build a proper Folio allowing for both user and SWI
functions. With SWI functions it is possible to interact with the
hardware directly.As seen in the Makefile it is necessary to:
* Give the file the extension `.privfolio` if using privileged
features.
* Sign with 3DO key.
* Set the executable's flags to 2 (to indicate it is to run privileged).
* Set the executable's folio subtype to 1 (KERNELNODE).
* Set the executable's node type to 4 (FOLIONODE).
* Set the executable's name to match that of the Folio name used in
the code.## Building
1. Get [3do-devkit](https://github.com/trapexit/3do-devkit)
2. `source 3do-devkit/activate-env`
3. `make`
4. `make install` will install the header and library into 3do-devkit