More actions
(Created page with "{{Infobox homebrew | title = µLibrary | image = File:Ulibraryds.PNG | type = Game engine | version = 1.12 | licence = Mixed | author = Brunn...") |
No edit summary |
||
Line 6: | Line 6: | ||
| licence = Mixed | | licence = Mixed | ||
| author = Brunni | | author = Brunni | ||
| website = http://brunni.dev-fr.org | | website = https://web.archive.org/web/20080507043108/http://brunni.dev-fr.org/index.php?page=ndssoft_ulib | ||
| download = Media:ULibrary112ds.rar | | download = Media:ULibrary112ds.rar | ||
| source = Media:ULibrary112ds.rar | | source = Media:ULibrary112ds.rar | ||
}} | }} | ||
µLibrary is a new library for Nintendo DS. Basically, it is meant to use the 3D GPU to create nice 2D games very easily, using a different approach than existing libraries ( | µLibrary is a new library for Nintendo DS. Basically, it is meant to use the 3D GPU to create nice 2D games very easily, using a different approach than existing libraries (similar to OSLib). A few examples are supplied, as well as a Doxygen documentation and a small .chm documentation with a FAQ. There are also 2 templates for VHAM, Programmers Notepad or just make, one with PALib and one without it. | ||
The 3D GPU provides additional effects over the 2D GPU, like full transparency with alpha channel (objects can blend amongst them), a larger number of sprites (up to 1536 instead of 128), no zoom or rotation limit (2x with the 2D GPU), a larger limit for the sprite size (2048x2048 instead of 64x64). It is also possible to draw primitives like lines, rectangles, etc. allowing nice effects like in Yoshi's island for example. | The 3D GPU provides additional effects over the 2D GPU, like full transparency with alpha channel (objects can blend amongst them), a larger number of sprites (up to 1536 instead of 128), no zoom or rotation limit (2x with the 2D GPU), a larger limit for the sprite size (2048x2048 instead of 64x64). It is also possible to draw primitives like lines, rectangles, etc. allowing nice effects like in Yoshi's island for example. | ||
Line 17: | Line 17: | ||
µLibrary also provides a low level layer and is open to the hardware. You can also mix 2D and 3D in a single project. | µLibrary also provides a low level layer and is open to the hardware. You can also mix 2D and 3D in a single project. | ||
It was participated in the NEO Spring Compo 2007(winner). | It was participated in the [https://www.neoflash.com/forum/index.php?topic=3954.0 NEO Spring Compo 2007] (winner). | ||
==Features== | ==Features== | ||
*Supported image formats: PNG, GIF, JPG | * Supported image formats: PNG, GIF, JPG. | ||
*Special image effects: stretching, tinting (4 corners), mirroring, rotation (with a defined center), selection of an image frame to display (just like on spritesheets). | * Special image effects: stretching, tinting (4 corners), mirroring, rotation (with a defined center), selection of an image frame to display (just like on spritesheets). | ||
*18-bit render quality instead of 15-bit: provides 8 times more colors | * 18-bit render quality instead of 15-bit: provides 8 times more colors. | ||
*Virtual file system: | * Virtual file system: possible to load files independantly from the actual support (RAM, libFat, GBFS are supported by default, but you can define your own). Allows to create more easily software that are compatible with all existing linkers. | ||
*Untextured geometry (rectangles, gradients, lines, etc. | * Untextured geometry (rectangles, gradients, lines, etc). | ||
*Basic message box system | * Basic message box system. | ||
*VideoGL wrapper for texture and palette loading in VRAM: | * VideoGL wrapper for texture and palette loading in VRAM: Able to load and unload things dynamically and more flexible (you can choose which banks you want to use for what, etc). | ||
*Keypad and touchscreen handler namely with support of stylus speed and double click and support of autorepeated keys (menus for example). | * Keypad and touchscreen handler namely with support of stylus speed and double click and support of autorepeated keys (menus for example). | ||
*Includes 2 splash screens | * Includes 2 splash screens. | ||
*Low level wrapper to draw primitives | * Low level wrapper to draw primitives. | ||
*Text system using the same font format as OSLib | * Text system using the same font format as OSLib. | ||
==Installation== | ==Installation== | ||
Enter into the Install folder of your distribution. | |||
There is a batch file, named Install.bat, that will copy files. First edit it and verify that the paths are corrects (ROOTPATH=C:\devkitpro\libnds by default, change it to the path where libnds is located). | |||
Once finished, execute it. | |||
After a confirmation, it will copy all files to their respective locations so that you can use it. | |||
==User guide== | ==User guide== | ||
Library comes with two templates, located in the Templates folder of its install | Library comes with two templates, located in the Templates folder of its install: | ||
*uLib_with_PALib | * uLib_without_PALib - This project will begin with µLibrary only. | ||
* uLib_with_PALib - As its name suggests, this project contains everything to get started on a new project using simultaneously µLibrary and PALib. | |||
The render method is similar to a sheet of paper | The render method is similar to a sheet of paper. You first draw a background, then put some mountains, then some trees, some characters and so on: you draw your objects in the order they should appear on the screen (the first is behind, the last one is over the others). | ||
Some examples are provided by the developer: | |||
* [http://www.mobile-dev.ch/ulib/tmp/Example01b.rar Example01b.rar] | |||
* [http://www.mobile-dev.ch/ulib/tmp/Example09.rar Example09.rar] | |||
The doxygen documentation is available [http://www.mobile-dev.ch/ulib/doc/doxygen/index.html here]. | The doxygen documentation is available [http://www.mobile-dev.ch/ulib/doc/doxygen/index.html here]. | ||
==Screenshots== | |||
[[File:Ulibraryds2.PNG]] | [[File:Ulibraryds2.PNG]] | ||
==Changelog== | ==Changelog== | ||
'''Version 1.12 | '''Version 1.12 17.03.2009''' | ||
*This release is only to keep working with the newest devkitpro & libnds releases. | * This release is only to keep working with the newest devkitpro & libnds releases. | ||
*A lot of things have changed and some important things must have been rewritten | * A lot of things have changed and some important things must have been rewritten | ||
*This was the occasion of creating better makefiles, update samples, changing the logo and do other minor changes | * This was the occasion of creating better makefiles, update samples, changing the logo and do other minor changes | ||
'''Version 1.11 | '''Version 1.11 23.08.2008''' | ||
*devKitPro has not really changed (thankfully), so no mandatory updates were needed | * devKitPro has not really changed (thankfully), so no mandatory updates were needed | ||
*fixes a few bugs, namely the palette issues reported by some people | * fixes a few bugs, namely the palette issues reported by some people | ||
'''Version 1.10 | '''Version 1.10 26.12.2007''' | ||
*As usual, works with and requires the latest libnds version; that's a shame because nothing will run on emulators from now. You can however solve this problem by replacing your copy of basic.arm7 in your libnds folder by mine (you can find it in the tools folder). | * As usual, works with and requires the latest libnds version; that's a shame because nothing will run on emulators from now. You can however solve this problem by replacing your copy of basic.arm7 in your libnds folder by mine (you can find it in the tools folder). | ||
*Added ulMoveScreenView, ulRotateScreenView, ulScaleScreenView and ulResetScreenView to apply special transformations to your screen. You can for example rotate the screen as a whole or only a list of objects without any effort. This will namely allow you to scale and rotate objects like maps and text, which isn't available by default. | * Added ulMoveScreenView, ulRotateScreenView, ulScaleScreenView and ulResetScreenView to apply special transformations to your screen. You can for example rotate the screen as a whole or only a list of objects without any effort. This will namely allow you to scale and rotate objects like maps and text, which isn't available by default. | ||
*Fonts now work better. Now the font2oft tool is in the 'tools' folder. | * Fonts now work better. Now the font2oft tool is in the 'tools' folder. | ||
*Added ulGetColorRed, ulGetColorGreen, ulGetColorBlue to retrieve the component values of a color. | * Added ulGetColorRed, ulGetColorGreen, ulGetColorBlue to retrieve the component values of a color. | ||
*Added ulLoadFontFile to directly load a font from a file. | * Added ulLoadFontFile to directly load a font from a file. | ||
*PNG files with alpha can now be loaded directly as UL_PF_PAL5_A3 and UL_PF_PAL3_A5. The alpha will be taken in account and set in the resulting image. Note that you will have to enable blending as usual with ulSetAlpha and by setting another polygroup, because if all objects are with the same polygroup, none will blend with any other. | * PNG files with alpha can now be loaded directly as UL_PF_PAL5_A3 and UL_PF_PAL3_A5. The alpha will be taken in account and set in the resulting image. Note that you will have to enable blending as usual with ulSetAlpha and by setting another polygroup, because if all objects are with the same polygroup, none will blend with any other. | ||
*Loading unpaletted PNG files to paletted formats reworked. If there isn't enough colors for the whole image, the nearest is taken. However you should avoid this situation because it's an extremely simple but weak method for reducing the colors of an image. | * Loading unpaletted PNG files to paletted formats reworked. If there isn't enough colors for the whole image, the nearest is taken. However you should avoid this situation because it's an extremely simple but weak method for reducing the colors of an image. | ||
'''Version 1.00 bêta 4 | '''Version 1.00 bêta 4 14.07.07''' | ||
*Works with, and requires the last libnds version | * Works with, and requires the last libnds version. | ||
*Added ulDeleteMap function | * Added ulDeleteMap function. | ||
*Using bank B for textures wasn't working correctly; all my excuses | * Using bank B for textures wasn't working correctly; all my excuses. | ||
*Some JPG files with a vertical size not multiple of 8 or 16 were loaded incorrectly. | * Some JPG files with a vertical size not multiple of 8 or 16 were loaded incorrectly. | ||
[[Category:Homebrew | <br> | ||
[[Category:DS homebrew games]] | |||
[[Category:Homebrew game engines on DS]] |
Revision as of 06:13, 9 Haziran 2021
µLibrary | |
File:Ulibraryds.PNG | |
General | |
---|---|
Author(s) | Brunni |
Type | Game engine |
Version | 1.12 |
Licence | Mixed |
Links | |
[Media:ULibrary112ds.rar Download] | |
Website | |
[Media:ULibrary112ds.rar Source] |
<htmlet>adsense</htmlet>
µLibrary is a new library for Nintendo DS. Basically, it is meant to use the 3D GPU to create nice 2D games very easily, using a different approach than existing libraries (similar to OSLib). A few examples are supplied, as well as a Doxygen documentation and a small .chm documentation with a FAQ. There are also 2 templates for VHAM, Programmers Notepad or just make, one with PALib and one without it.
The 3D GPU provides additional effects over the 2D GPU, like full transparency with alpha channel (objects can blend amongst them), a larger number of sprites (up to 1536 instead of 128), no zoom or rotation limit (2x with the 2D GPU), a larger limit for the sprite size (2048x2048 instead of 64x64). It is also possible to draw primitives like lines, rectangles, etc. allowing nice effects like in Yoshi's island for example.
µLibrary also provides a low level layer and is open to the hardware. You can also mix 2D and 3D in a single project.
It was participated in the NEO Spring Compo 2007 (winner).
Features
- Supported image formats: PNG, GIF, JPG.
- Special image effects: stretching, tinting (4 corners), mirroring, rotation (with a defined center), selection of an image frame to display (just like on spritesheets).
- 18-bit render quality instead of 15-bit: provides 8 times more colors.
- Virtual file system: possible to load files independantly from the actual support (RAM, libFat, GBFS are supported by default, but you can define your own). Allows to create more easily software that are compatible with all existing linkers.
- Untextured geometry (rectangles, gradients, lines, etc).
- Basic message box system.
- VideoGL wrapper for texture and palette loading in VRAM: Able to load and unload things dynamically and more flexible (you can choose which banks you want to use for what, etc).
- Keypad and touchscreen handler namely with support of stylus speed and double click and support of autorepeated keys (menus for example).
- Includes 2 splash screens.
- Low level wrapper to draw primitives.
- Text system using the same font format as OSLib.
Installation
Enter into the Install folder of your distribution.
There is a batch file, named Install.bat, that will copy files. First edit it and verify that the paths are corrects (ROOTPATH=C:\devkitpro\libnds by default, change it to the path where libnds is located).
Once finished, execute it.
After a confirmation, it will copy all files to their respective locations so that you can use it.
User guide
Library comes with two templates, located in the Templates folder of its install:
- uLib_without_PALib - This project will begin with µLibrary only.
- uLib_with_PALib - As its name suggests, this project contains everything to get started on a new project using simultaneously µLibrary and PALib.
The render method is similar to a sheet of paper. You first draw a background, then put some mountains, then some trees, some characters and so on: you draw your objects in the order they should appear on the screen (the first is behind, the last one is over the others).
Some examples are provided by the developer:
The doxygen documentation is available here.
Screenshots
Changelog
Version 1.12 17.03.2009
- This release is only to keep working with the newest devkitpro & libnds releases.
- A lot of things have changed and some important things must have been rewritten
- This was the occasion of creating better makefiles, update samples, changing the logo and do other minor changes
Version 1.11 23.08.2008
- devKitPro has not really changed (thankfully), so no mandatory updates were needed
- fixes a few bugs, namely the palette issues reported by some people
Version 1.10 26.12.2007
- As usual, works with and requires the latest libnds version; that's a shame because nothing will run on emulators from now. You can however solve this problem by replacing your copy of basic.arm7 in your libnds folder by mine (you can find it in the tools folder).
- Added ulMoveScreenView, ulRotateScreenView, ulScaleScreenView and ulResetScreenView to apply special transformations to your screen. You can for example rotate the screen as a whole or only a list of objects without any effort. This will namely allow you to scale and rotate objects like maps and text, which isn't available by default.
- Fonts now work better. Now the font2oft tool is in the 'tools' folder.
- Added ulGetColorRed, ulGetColorGreen, ulGetColorBlue to retrieve the component values of a color.
- Added ulLoadFontFile to directly load a font from a file.
- PNG files with alpha can now be loaded directly as UL_PF_PAL5_A3 and UL_PF_PAL3_A5. The alpha will be taken in account and set in the resulting image. Note that you will have to enable blending as usual with ulSetAlpha and by setting another polygroup, because if all objects are with the same polygroup, none will blend with any other.
- Loading unpaletted PNG files to paletted formats reworked. If there isn't enough colors for the whole image, the nearest is taken. However you should avoid this situation because it's an extremely simple but weak method for reducing the colors of an image.
Version 1.00 bêta 4 14.07.07
- Works with, and requires the last libnds version.
- Added ulDeleteMap function.
- Using bank B for textures wasn't working correctly; all my excuses.
- Some JPG files with a vertical size not multiple of 8 or 16 were loaded incorrectly.