Payk, the main reason why "good" developers don't like palib is that it hides the hardware. You can do something like PA_zOMG_InitHardware(); but don't actually know what it does. Also, there is a big difference bethween palib and libnds. Libnds is a low level library that mostly consists of defines for hardware adresses. Palib on the other hand is a "high level" library that consists of functions that are meant to make things easy for new comers. But in reality, these "sort cut" functions only hide the hardware and teach bad habbits to people who use them. And to be honest, the hardware is not that hard to use as you (Payk) most likely have noticed. It's just a matter of knowing what your doing.