PSPSudoku is a Sudoku solver/explainer

This is my first program in Lua and first program on the PSP.
All the code is from myself and not really optimized...
Thanks to the scene for bringing homebrew to the PSP.
I hope you will enjoy this game :-)

What is Sudoku ?
----------------
Sudoku is a logic-based placement puzzle.
The aim of the puzzle is to enter a numerical digit from 1 through 9
in each cell of a 99 grid made up of 33 subgrids (called "regions"),
starting with various digits given in some cells (the "givens").
Each row, column, and region must contain only one instance of each numeral.
Completing the puzzle requires patience and logical ability. 

Features of PSPSudoku:
----------------------
 - Solve by logic method only. It means that the solver will not try to guess.
   The current solving methods are:
    Alone values
    Locked values
    Duo, Triplet, Quadruplet, Quintuplet
    Hidden Duo, Triplet, Quadruplet, Quintuplet
    X-Wing, Swordfish, Jellyfish, Squirmbag
 - Generate grids using the solver, up to 9999 grids with different difficulties:
      Impossible    0,9%
      Very hard     1,3%
      Hard          4,6%
      Medium       21,3%
      Easy         72,0%
    Each puzzles have a unique number from 1 to 9999. You can replay a puzzle
    giving its number for example to solve it faster or play with friends.
 - Explain how to solve a grid: you can ask hints and the solver will show
   you where and how you should play by displaying rules
 - Show available possibilities for each cell
 - Verify your current solving progress
 - Informations on the current grid: difficulty and number of rules used to solve
 - Allow manual input of grids
 - Save your best time to solve generated puzzles
 - Save current puzzle status and parameters on exit
 - Fully skinable
 - Support multiple languages

How to use it ?
---------------
In game buttons are:
 - X: Cycle through values by incrementing it for a given cell.
    If you press X multiple times, you will display all the possible values
 - O: same as X but decrementing the value
 - ^: Cycle through possibilities hiding/unhiding them possibility for a given cell
 - []: use to validate hide/unhide possibility if you want to do more
    than one hide/unhide by cell
 - Digital pad: move from one cell to another
 - Analog:
    Up        : Show possibilities
    Down      : Hide possibilities
    Right/Left: Cycle trough possibilities
 - Right:
    First press:  Ask the solver for a hint on the current grid progress
    Second press: Apply the hint
 - Left:
    First press:  Ask the solver to verify the current grid progress
    Second press: if there was wrong inputs, it will correct them
 - Select: main menu
 - Start: when press it will automatically save settings and current game
    progress then will prompt if you want to exit

Skin support
------------
The best way to create a new skin is to simply duplicate an existing skin directory
and modify it from there.
The new directory created will be directly available in skin from the main menu.
The main file is skin.ini which hold the position and color of each elements.

Multi Languages
---------------
The best way to translate to a new language is to simply duplicate an existing translation
and modify it from there.
The new language text file will be directly available in language from the main menu.

PSP Installation
----------------
For 1.5:
  Copy both __SCE__PSPSudoku and %__SCE__PSPSudoku to your \PSP\Game folder
For 2.0+:
  Copy __SCE__PSPSudoku to your \PSP\Game folder, you might want to rename it to PSPSudoku

Known bugs
----------
 - Music is not playing correctly. I don't know how to fix it...

To do
-----
 - Add more solving methods (XY-Wing, Coloriage, ...)
 - Fix the music
 - Many more with your feedback ;-)

Version
-------
 1.0 First public release
