{"id":17059585,"url":"https://github.com/trapexit/3do-example-folio","last_synced_at":"2025-03-23T07:44:31.690Z","repository":{"id":237582979,"uuid":"794817870","full_name":"trapexit/3do-example-folio","owner":"trapexit","description":"An example folio (shared library) for the 3DO Portfolio OS","archived":false,"fork":false,"pushed_at":"2024-05-04T22:55:25.000Z","size":4,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-28T14:42:18.313Z","etag":null,"topics":["3do","retrogaming"],"latest_commit_sha":null,"homepage":"https://3dodev.com","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/trapexit.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-05-02T02:36:32.000Z","updated_at":"2025-01-19T06:54:39.000Z","dependencies_parsed_at":"2024-05-04T23:28:31.447Z","dependency_job_id":"e8e57a51-86d5-4c7e-bbf1-d08206797160","html_url":"https://github.com/trapexit/3do-example-folio","commit_stats":null,"previous_names":["trapexit/3do-example-folio"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trapexit%2F3do-example-folio","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trapexit%2F3do-example-folio/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trapexit%2F3do-example-folio/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trapexit%2F3do-example-folio/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/trapexit","download_url":"https://codeload.github.com/trapexit/3do-example-folio/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245072252,"owners_count":20556353,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["3do","retrogaming"],"created_at":"2024-10-14T10:34:51.463Z","updated_at":"2025-03-23T07:44:31.663Z","avatar_url":"https://github.com/trapexit.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# example folio\n\nFolios are a form of dynamically loaded shared libraries. Similar to\n`dlopen` on Unix but instead of loading individual functions you load\nthe a collection of functions. Folios can contain both \"user\" and\n\"privilaged\" (SWI) functions.\n\n3DO did not advertise the existence Folios besides how to use the ones\nthey created. In early revisions of the official SDK you can find a\nsimple example showing how to build a folio but strictly for user\nspace functions. However, the example was incomplete and later\nremoved.\n\nUsing the [Portfolio OS\nsource](https://github.com/trapexit/portfolio_os) we have pieced\ntogether how to build a proper Folio allowing for both user and SWI\nfunctions. With SWI functions it is possible to interact with the\nhardware directly.\n\nAs seen in the Makefile it is necessary to:\n* Give the file the extension `.privfolio` if using privileged\n  features.\n* Sign with 3DO key.\n* Set the executable's flags to 2 (to indicate it is to run privileged).\n* Set the executable's folio subtype to 1 (KERNELNODE).\n* Set the executable's node type to 4 (FOLIONODE).\n* Set the executable's name to match that of the Folio name used in\n  the code.\n\n\n## Building\n\n1. Get [3do-devkit](https://github.com/trapexit/3do-devkit)\n2. `source 3do-devkit/activate-env`\n3. `make`\n4. `make install` will install the header and library into 3do-devkit\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftrapexit%2F3do-example-folio","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftrapexit%2F3do-example-folio","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftrapexit%2F3do-example-folio/lists"}