PsyCommando / ppmdu

Combined code for several utilities used to export and import things to and from the "Pokemon Mystery Dungeon : Explorers of" games on the NDS.
Other
45 stars 6 forks source link

Moved to a New Repository!

Since I basically can't build the project on recent MSVC, I decided to port the build system over to cmake instead. The current build system is a frankeinstein mess of hacks and failed experiments to circumvent various ancient bugs with older versions of Visual Studio. And now I can't be assed anymore to try to maintain that mess. So I'm going to archive this repository and any new development will happen on the new repository: https://github.com/PsyCommando/ppmdu_2

forthebadge forthebadge forthebadge forthebadge

Pokemon Mystery Dungeon Utilities

Combined code for several utilities used to export and import things to and from the "Pokemon Mystery Dungeon : Explorers of" games on the NDS.

I used this as a personal test ground for a lot of little things, so the code isn't very well organized yet, and you'll probably spot a lot of weirdness and incoherences. However I try as much as possible to avoid dangerous practices, macros and etc. And I've been trying to use as much as possible the subset of C++11 that Visual Studio offers (Which is ridiculously limited and buggy) So you'll see very little dynamic memory allocation in here, and mainly RAII managed pointers / templates when possible.

With that said, there is a lot of room for improvement, and I'll eventually try to fix most of those issues.(I wouldn't mind some help from time to time) And keep in mind that, math isn't natural to me, so I often overlook easy ways to calculate things.(I wouldn't mind help with that either..) And also, I'm constantly looking to improve my coding, considering I've been taught C++03 first, and I'm on my own learning C++11..

Oh, and the revision number system I'm using is complete BS. I was going to go with the one suggested by github, but I couldn't find a way to figure if a release was a breaking change considering the codebase is pretty "immature" and disorganized as I haven't yet completely figured out the game's inner working, and things changes as I discover new details..

Here's my development thread on Project Pokemon:
http://projectpokemon.org/forums/showthread.php?40199-Pokemon-Mystery-Dungeon-2-Psy_commando-s-Tools-and-research-notes

And here's the wiki for the file formats in PMD2:
http://projectpokemon.org/wiki/Pokemon_Mystery_Dungeon_Explorers_of_Sky

Utilities Info:

Future:

Eventually more tools will come. Even possibly full-fledged editors with a user interface! Ideally, I'd let 3rd parties make their own editors that uses my tools, as it lets me focus on research, while they can focus on making a good GUI. But we'll see.

Portability:

This was mainly made on several version of Visual Studio. So while I tried to keep everything portable, and use portable libraries, there might be some issues from time to time compiling on GCC or using Clang+LLVM.

Mingw

If you're using Mingw on windows, I suggest you use MSys for building the dependencies. Especially since POCO for some reasons won't compile on Mingw without some messing around. Unless if ran in MSys using ./configure and make. The line I used to configure it is (Feel free to remove --static or --shared or add --no-tests and play around with it): ./configure --prefix=INSERT_PATH_TO_LIB_RELEASE_HERE --no-samples --no-tests --static --shared --omit=Crypto,NetSSL_OpenSSL,Zip,Data,Data/SQLite,Data/ODBC,Data/MySQL,MongoDB,PDF,CppParser,PageCompiler,Net

Then I just ran "make -j 8"(-j 8 is for 8 core machines) and "make install". The --minimal switch makes the whole thing only compile the

License:

Those tools and their source code, excluding the content of the /lib/ directory (present only for convenience), is Creative Common 0, AKA Public Domain. Do what you want with it. Use the code in your coding horror museum, copy-paste it in your pmd2 tools, anything.. XD You don't have to credit me, but its always appreciated if you do ! And I'd love to see what people will do with this code.

However, right now, the libraries within the "lib" folders each have their own licenses, all which allow redistribution. I eventually intend to link those library dynamically once/before we reach 1.0, once I can figure out a few major issues(Issues that would probably be solved if I'd distribute the thing as a DLL/SO itslelf.. Or if I'd make an editor..), to respect their licenses better (The viral GPL/LGPL clause is problematic, as it requires code that it statically links to, to be GPL/LGPL as well. Even though my CC0 license is immensly more permissive/practical. That's copyrights in a nutshell.. ) even though I give away my sources freely and met most of the LGPL requirements

As required by some of the licenses of the libraries in here, their respective licenses are in their folders, and for those that required it, in the LICENSE file in the root of the repository.