----------------------------------------------------------------------------
 Level 7 : "Man, I still like MEKA !" - How to register
----------------------------------------------------------------------------

 Thanks. In this case, if you want to help further development and support
 the author, you are welcome to register MEKA.

 To do so, you will simply have to help the SMS Power cause. This can be
 done by several ways. The first is to donate Sega 8-bit cartridges to us.
 We would love that. Donating hardware is even more welcome. If you plan
 to donate anything, be sure to e-mail me beforehand. And remember it is
 not because a game or a system is common that I have it. I am actually
 missing a billion of common game I would love to get.

 If you cannot find any cartridges then you can send money. Money helps
 SMS Power in buying cartridges to dump and/or for the museum, as well as
 getting weird pieces of related hardware. Due to me trusting the cool
 people who are happy to help a great cause, there is no more minimal
 amount to send to get registered. So basically even if you send $1 you
 will get registered. Of course the more the better. I honnestly tend to
 get depressed when someone send $1 for a four-years work.

 If you don't have an idea on how much you must send, then you are not on
 the right track. What matter is that you are helping a cause, and for that
 reason the more is always the better. Don't stop feeding your children or
 plan to sell your house to donate the money to our cause, though. Just
 think about how much *you* would pay for that software if it was commercial.

 I like to have fun writing documentations, so here is a formula to
 calculate a good price:
   P = (S / (k * 5)) + (M / k)

 Where:
   P is the price a nice guy would pay.
   S is the speed of your CPU.
   M is the amount of memory in your video card.
   k is defined as 3 * Pi for year 2002, and will increase with time.
     (approximately 9.4247)

 For my own computer:
   P = (350 / (3 * Pi * 5)) + (8 / (3 * Pi)) = 8.25$ (pretty cheap)

 A faster computer:
   P = (1600 / (3 * Pi * 5)) + (32 / (3 * Pi)) = 37.34$ (ouch)

 With in-between prices for average computers, obviously.
 Isn't that a great idea to accomodate programs prices to the speed of
 your computer ? The rich pay more than the poor. :)

 Of course if you end with something like 19.50 or 22.25 don't bother
 sending coins, you can round it up. And of course you can still round
 it up without any specific reason, it you feel it is too much or too
 low to pay. In fact, you are the one who decide.

 Please do not send checks, since they are expensive to cash (for me).
 Please do not send money orders, since they are expensive to send (for you).
 In both cases, it is not worth wasting a lot of money on a small donation.
 Cash in your country currency is usually a good thing.
 Please e-mail be beforehand if you are unsure about anything.

 My address is:    Omar Cornut
                   45 rue Rebeval
                   75019 Paris
                   France

 And I can also receive money with PayPal (very practical), under the
 following address: cornut @ noos.fr.

 Finally, if your main pretext for not registering is lazyness, then you
 know yourself it is not a valid pretext :)

 If you do not agree these terms, then you can delete this software now, as
 it will destroy your computer after a certain amount of time using a non
 registered version. Also, if you have dogs living in your house, MEKA will
 autodetect them and kill them by sending ultra sonic waves through the PC
 speakers. Just don't say I made it for the money, please.

 Registered users will receive information and new version before others.
 They will also get access to ROMs on SMS Power, other things I may
 show off, and more importantly: a clean conscience.

 Enjoy!
