Difference between revisions of "MLlib"
Minishlink (talk | contribs) |
Minishlink (talk | contribs) (→FAQ) |
||
Line 131: | Line 131: | ||
===I got some multiple definition errors when I compile...=== | ===I got some multiple definition errors when I compile...=== | ||
This can happen sometimes, I don't know why. (for me it compiles well) But the solution is [http://code.google.com/p/mllib/issues/detail?id=1 there]. :) | This can happen sometimes, I don't know why. (for me it compiles well) But the solution is [http://code.google.com/p/mllib/issues/detail?id=1 there]. :) | ||
+ | |||
+ | ===I got "undefined reference to 'FT_Done_FreeType'" when I compile...=== | ||
+ | If you're upgrading to 1.2 or newer, you could have this error. In order to compile your project you'll need to install FreeType-PPC, check how to do it [http://wiibrew.org/wiki/MLlib#How_to_install_.3F here] in the '''FreeType-PPC''' section. :) | ||
==Bugs & Suggestions== | ==Bugs & Suggestions== |
Revision as of 21:21, 4 January 2010
MLlib | |
![]() | |
General | |
---|---|
Author(s) | Minishlink |
Type | Framework library |
Version | 1.2 |
Links | |
Download | |
Website | |
Discussion | |
Source |
The MLlib (or Minishlink's Library) is a simple library to develop on Nintendo Wii. Technically, it's a wrapper of libogc and others librairies. Coding with this lib on Wii is way easier and faster now ! :-) I created this because I needed a library with I could code with easy functions. It uses GX for drawing, libpng for handling PNG, FreeTypeGX for TTF fonts (I needed to recode it in C) and libs of libogc...
Features
- Proper code so that it's nice to see;
- Easy for all;
- Friendly functions;
- Handles drawing;
- Sprite system;
- Handles PNG images;
- Special effects;
- Write graphically text (TTF font support);
- MP3 system;
- MOD system;
- Input (Wiimote, Nunchuk, and extensions...) system;
- And much more...
How to install ?
On Windows
First you need to have the lastest devkitPro installed. Go install it ! ;)
[OPTIONAL] Then, libpng for Wii must be installed. (if you want to re-code the library only !)
- Download it at my FTP or elsewhere.
- Extract it and place the .a in "devkitpro\libogc\lib\wii" and the folder "png" in "devkitpro\libogc\include".
- It's done !
You will need FreeType-PPC to compile your code.
- Download it here.
- Extract it and place the .a in "devkitproc\libogc\lib\wii" and the folder "freetype" and the file "ft2build.h" in "devkitpro\libogc\include".
- It's done !
You'll also need to set the environment variable of the library.
- Right-Click on My Computer and select Properties.
- Go to advanced settings and click Environment Variables at the bottom.
- Verify that the DEVKITPRO and DEVKITPPC are already in there.
- Add that variable : "MLPATH" and its value "/path/to/MLlib" (It should be "/c/devkitpro/MLlib")
Now the MLlib it self.
- Download the MLlib on the Google Code MLlib page
- Extract the archive and place the folder (recommended in C:\devkitPro)
- Examples, documentation and more are in the "MLlib_Others_XXXXXX.zip" package.
- Verify that you've set the environment variable. If compiling an example doesn't work, restart the computer and try again to compile. If you still can't, go to the forums or contact me ! ;) (Twitter or email)
- It should be done ! Go explore examples ! :D (test if it works via an example)
On Linux
First you need to have devkitPro installed. Go install it ! ;)
[OPTIONAL] Then, libpng for Wii must be installed. (if you want to re-code the library only !)
- Download it at my FTP or elsewhere.
- Extract it and place the .a in "devkitpro/libogc/lib/wii" and the folder "png" in "devkitpro/libogc/include".
- It's done !
You will need FreeType-PPC to compile your code.
- Download it here.
- Extract it and place the .a in "devkitproc/libogc/lib/wii" and the folder "freetype" and the file "ft2build.h" in "devkitpro/libogc/include".
- It's done !
You'll also need to set the environment variable of the MLlib.
- Edit the file "/etc/environment" in root mode (sudo gedit /etc/environment)
- Add these lines if they're not already in the file : DEVKITPRO="/path/to/devkitpro" DEVKITPPC="/path/to/devkitpro/devkitPPC"
- Add : MLPATH="/path/to/devkitpro/MLlib"
- Save and close the editor.
- Type "source /etc/environment" in the console or reboot.
Now the MLlib.
- Download the MLlib on the Google Code MLlib page
- Extract the archive and place the folder where you want (recommended in /home/user/devkitpro)
- Examples, documentation and more are in the "MLlib_Others_XXXXXX.zip" package.
- Verify that you've set the environment variable. If compiling an example doesn't work, restart the computer and try again to compile. If you still can't, go to the forums or contact me ! ;) (Twitter or email)
- It should be done ! Go explore examples ! :D (test if it works via an example)
On Mac OS X
You should be able to do it if you read Windows/Linux instructions. Updated tutorial will coming soon though, with Mac OS X ;)
Notes
Quickstart
For a quickstart, see the section How to install ? and go see the examples in the "MLlib_Others_XXXXXX.zip" package ! ;)
Tutorials and Wiki
Some tutorials and more info are available at the MLlib Wiki.
Documentation
Online documentation is available here. Or in the "MLlib_Others_XXXXXX.zip" package.
"MLlib_Others_XXXXXX.zip" package
It can be downloaded on Google Code !
Makefile & Commands
Editing Makefile
In order to use the MOD part of the MLlib, you need to uncomment the line "USE_MOD" at the top of the Makefile. It's the same thing when you need to compile code that uses MP3 or FAT.
Make
Compiles the project.
Make clean
Cleans the project, it destroys dependancies too.
Make run
It sends the app/game previously compiled to the Wii via the wiiload program. It's quiet useful because you don't need to type "wiiload projectXYZ.dol", "make run" is faster ! You have to put the original Wiiload program (eg. the command-line program, which is provided with Twilight Hack or HBC) in the system folder of your OS. Example : "C:\Windows\System32" for Windows ; "/usr/bin" for Linux ; "??? #FixIt" for MaxOSX.
Wiiload program can be downloaded here. (in the HackMii Installer package)
Make all
It cleans the project, then compiles and then sends to the Wii.
FAQ
I got an error when I compile your examples...
To test correctly the examples and the template, make sure you have done a "make clean" before, because it will give you the error
make[1]: *** No rule to make target `/home/minishlink/devkitpro/MLlib_Others/template/source/main.c', needed by `main.o'. Stop.
if you don't do this ! :p
I got a code dump when it loads my image...
Make sure your file is a multiple of 4 and is a 32bits png image with transparency enabled.
I got some multiple definition errors when I compile...
This can happen sometimes, I don't know why. (for me it compiles well) But the solution is there. :)
I got "undefined reference to 'FT_Done_FreeType'" when I compile...
If you're upgrading to 1.2 or newer, you could have this error. In order to compile your project you'll need to install FreeType-PPC, check how to do it here in the FreeType-PPC section. :)
Bugs & Suggestions
If you have any bugs or suggestions, feel free to report them on Google Code.
See also
Special Thanks
- Chaosteil
- Cid2Mizard
- Crayon
- Dhewg
- Dykam
- EvilSpoon
- Feesh
- Mollusk
- Morukutsu
- NoNameNo
- Svpe
- T4ils
- WntrMute
- Zeblackos
and these communities :
- www.dev-fr.org + IRC Channel #dev-fr
- www.nintendomax.com
- www.wiibrew.org + IRC Channel #wiidev
- www.wiigen.fr
Update History
1.2 - December 24, 2009
Compatible with DevkitPPC r19 and libogc 1.8.1. Go update them ! :) TTF Font support, at last ! :) Collisions detection functions ! :)
- added: float ML_Distance(x1, y1, x2, y2)
- added: float ML_TrueDistance(x1, y1, x2, y2)
- added: bool ML_IsCollisionSpriteRect(sprite, x, y, width, height)
- added: bool ML_IsCollisionSpriteCircle(sprite, centerX, centerY, radius)
- added: bool ML_IsCollisionRectRect(x1, y1, width1, height1, x2, y2, width2, height2)
- added: bool ML_IsCollisionCircleCircle(centerX1, centerY1, radius1, centerX2, centerY2, radius2)
- added: bool ML_IsCollisionRectCircle(x, y, width, height, centerX, centerY, radius)
- added: ML_Font structure
- added: ML_InitFont()
- added: ML_QuitFont()
- added: ML_DeleteFont(ML_Font *font)
- added: ML_LoadFontFromBuffer(ML_Font *font, const uint8_t *filename, FT_Long bufferSize, FT_UInt pointSize)
- added: ML_LoadFontFromFile(ML_Font *font, const char *filename, FT_UInt pointSize)
- added: ML_DrawText(ML_Font *font, int x, int y, char *text, ...) (arguments are not currently working though)
- fixed: relative paths now working
- fixed: ML_ShutdownWii() now freeing like ML_Exit()
- fixed: ML_ReturnToWii() now freeing like ML_Exit()
1.1.5b - October 14, 2009
Now compatible with DevkitPPC r18 and libogc 1.8.0. Go update them ! :)
- added: ML_GetFPS()
- added: ML_AnimateSpriteEx2(ML_Sprite *sprite, bool enabled, u8 waitForXRefreshBetweenFrames, u8 from, u8 to, u8 timesLooped)
- fixed: bug when you had more than one Wiimote
- fixed: bug when using ML_Cursor with animated or tiled sprite
- fixed: ML_AnimateSpriteEx wasn't doing his job properly, skipping one frame.
1.1.5 - September 05, 2009
- added: ML_InitRand()
- added: ML_Rand(min, max)
- added: Wiimote[x].IR.Angle
- added: New sprite flipping system (ML_FlipSpriteX, ML_FlipSpriteY,
ML_FlipSpriteXY)
- added: ML_EnableClipping(), ML_DisableClipping
- added: ML_IsWiimoteInSpriteEx()
- modified: ML_SplashScreen(), there's a fadeIn and a fadeOut now.
- fixed: ML_FadeIn() and ML_FadeOut().
- fixed: ML_IsWiimoteInSprite, it's now working well. Don't use ML_IsCollision
and ML_IsCollisionEx for collision between sprite cursor and another sprite. Use ML_IsWiimoteInSprite instead - and that's logical.
- fixed: ML_IsCollision and ML_IsCollisionEx, there was a bug with tiled or
animated sprites.
- removed: ML_FlipImageX, ML_FlipImageY
1.1 - June 20, 2009
- New method of programming. It uses seriously very less memory now. ML_Image, ML_Sprite, ML_Background.
- added : ML_Screenshot(filename)
- added : ML_IsSpriteVisible(sprite)
- added : ML_AnimateSpriteEx(sprite, enabled, waitForXRefreshBetweenFrames, from, to)
- added : ML_TextBox(ML_Sprite *sprite, x, y, x2, y2, const char *text, ...)
- added : ML_DrawRect(int x, int y, u16 width, u16 height, u32 rgba)
- added : ML_Debug(text)
- added : ML_CloneImage(image1, image2)
- added : ML_DrawSpriteTextLimit(sprite, x, y, text, limit)
- added : ML_FlipImageX(image)
- added : ML_FlipImageY(image)
- added : ML_InvertImageColors(image)
- added : ML_ApplyGrayscaleToImage(image)
- added : ML_FlushImage(image)
- modified : Input is now finished
- modified : ML_GetPixelColor
- modified : ML_SetPixelColor
- modified : ML_SplashScreen
- modified : ML_Cursor, so that it draws your cursor/sprite with the center of the image, and then modifies the sprite.x and sprite.y so that if you point to the left-up edge of the screen it gives you 0, 0.
- fixes and optimizations
1.0 - May 31, 2009
- First public release