{"id":29246756,"url":"https://github.com/AntonioND/ulibrary","last_synced_at":"2025-07-03T23:06:19.609Z","repository":{"id":250229666,"uuid":"833757767","full_name":"AntonioND/ulibrary","owner":"AntonioND","description":"Port of µLibrary to BlocksDS.","archived":false,"fork":false,"pushed_at":"2025-01-14T18:32:00.000Z","size":1244,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-07-01T07:08:06.022Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AntonioND.png","metadata":{"files":{"readme":"readme.md","changelog":"changelog.md","contributing":null,"funding":null,"license":"LICENSE_en.txt","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,"zenodo":null}},"created_at":"2024-07-25T17:25:15.000Z","updated_at":"2025-04-22T06:06:24.000Z","dependencies_parsed_at":"2025-06-04T13:13:57.639Z","dependency_job_id":"cb527f93-f858-449e-b648-230ba79095e7","html_url":"https://github.com/AntonioND/ulibrary","commit_stats":{"total_commits":53,"total_committers":1,"mean_commits":53.0,"dds":0.0,"last_synced_commit":"52bba2906e899e878629ec2c979333d66644a0a9"},"previous_names":["antoniond/ulibrary"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/AntonioND/ulibrary","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AntonioND%2Fulibrary","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AntonioND%2Fulibrary/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AntonioND%2Fulibrary/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AntonioND%2Fulibrary/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AntonioND","download_url":"https://codeload.github.com/AntonioND/ulibrary/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AntonioND%2Fulibrary/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263416471,"owners_count":23463144,"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":[],"created_at":"2025-07-03T23:06:17.048Z","updated_at":"2025-07-03T23:06:19.577Z","avatar_url":"https://github.com/AntonioND.png","language":"C","funding_links":[],"categories":["Development libraries for NDS"],"sub_categories":[],"readme":"# µLibrary\r\n\r\n## 1. Introduction\r\n\r\nThis is a library that provides functions to create 2D games using the 3D engine\r\nof the Nintendo DS. The 3D GPU is more flexible than the 2D GPU:\r\n\r\n- You can blend sprites with each other.\r\n- You can display up to 1536 sprites (vs 128 of the 2D GPU).\r\n- You can rotate and scale your sprites without restrictions.\r\n- You can use bigger sprites (up to 2048x2048 vs 64x64).\r\n- You can draw primitives like lines, rectangles, etc, allowing nice effects\r\n  like in Yoshi's island for example. :)\r\n\r\nThe render method is similar to a sheet of paper: you first draw a background,\r\nthen put some mountains, then some trees, some characters and so on: you draw\r\nyour objects in the order they should appear on the screen (the first is behind,\r\nthe last one is over the others).\r\n\r\nThe problem of using the 3D GPU is clear: you can only use one screen at a time\r\n(or 2 screens but at 30 FPS). However, µLibrary is fully compatible with PALib\r\nand you can use it to handle the second screen at 60 FPS. It's a good solution\r\nif you do not plan to use the second screen intensively: displaying a BG with\r\nsome sprites and get the stylus state could be enough, and you can concentrate\r\non the main screen which is driven by µLibrary.\r\n\r\nHere is a small list of features of µLibrary:\r\n\r\n- Supported image formats: PNG, GIF, JPG\r\n- Special image effects: stretching, tinting (4 corners), mirroring, rotation\r\n  (with a defined center), selection of an image frame to display (just like on\r\n  spritesheets).\r\n- 18-bit render quality instead of 15-bit: provides 8 times more colors!\r\n- Virtual file system: it is possible to load files independantly from the\r\n  actual support (RAM, FAT, NitroFS are supported by default, but you can define\r\n  your own). It allows you to create more easily software that are compatible\r\n  with all existing flashcards.\r\n- Untextured geometry (rectangles, gradients, lines, etc).\r\n- Basic message box system.\r\n- VideoGL wrapper for texture and palette loading in VRAM: it is now possible to\r\n  load and unload things dynamically. Furthermore, it is more flexible (you can\r\n  choose which banks you want to use for what, etc).\r\n- Keypad and touchscreen handler namely with support of stylus speed and double\r\n  click and support of autorepeated keys (menus for example).\r\n- Includes 2 splash screens.\r\n- Low level wrapper to draw primitives.\r\n- Text system using the same font format as OSLib (development library for PSP).\r\n\r\nPerformance is good, one of the examples shows that an unoptimized C++ code that\r\ndraws 400 balls bouncing on the screen uses less than 15% of CPU...\r\n\r\nA few examples are supplied, as well as a Doxygen documentation. There are also\r\ntwo templates: one with PAlib and one without it.\r\n\r\n## 2. Installation\r\n\r\nYou can install this library directly with ``wf-pacman`` by running:\r\n\r\n```bash\r\nwf-pacman -Sy blocksds-ulibrary\r\n```\r\n\r\nYou can use µLibrary and [PAlib](https://github.com/AntonioND/palib) at the same\r\ntime (some examples require PAlib!). You can install it with this command:\r\n\r\n```bash\r\nwf-pacman -Sy blocksds-palib\r\n```\r\n\r\nIf you want to build µLibrary from source instead, simply clone this repository\r\nand run this to build and install the library in your BlocksDS environment:\r\n\r\n```bash\r\nmake -j`nproc` install\r\n```\r\n\r\n## 3. Examples\r\n\r\nOnce you have installed the library, go to the folder of any example or template\r\nand run:\r\n\r\n```bash\r\nmake\r\n```\r\n\r\nNote that the examples and templates that use PAlib won't work because there\r\nisn't a working up-to-date port of PAlib to BlocksDS.\r\n\r\n## 4. About\r\n\r\nProgrammed by Florian Brönnimann, aka Brunni: http://brunni.dev-fr.org\r\n\r\nOriginal website: https://web.archive.org/web/20110725231708/http://brunni.dev-fr.org/index.php?page=ndssoft_ulib\r\n\r\nOfficial forum: http://www.playeradvance.org/forum/forumdisplay.php?f=103\r\n\r\nPort to BlocksDS by Antonio Niño Díaz, aka AntonioND.\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAntonioND%2Fulibrary","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FAntonioND%2Fulibrary","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAntonioND%2Fulibrary/lists"}