I still remember when I make my SMW Hack in early days, I always fear about my ROM will be corrupted unexpectly. So, I made countless backups, and that's pretty inefficient.
Nowadays, when I using version controlling programs (like Git) frequently in my coding projects, I think it should be possible to do the same thing in SMW Hacking.
I already noticed SMWCP2 already using Git to manage versions of the project, but it seems not that perfect:
1. Lots of files are in binary format. For example, Git is mostly designed for projects with mostly text files, and it makes Git works inefficiently, and cause
2. We need a standard directory structure. You see, C++, Java, Node.js, etc. already have conventional convention of project directory structure, but SMW Hacking dosen't. Though it doesn't seems a big deal for private SMW Hacking projects, conventional convention of directory structure would make other people works with you easier (especially for collab hacks).
3. It would be better if we have fully automated way for building ROMs. For example, we can use a script file to insert everything (.mwl, .map16, ExGFXxx.bin, .asm, etc.) into the ROM just like what Makefile or webpack.conf.js does, then get a fully-working ROM file. Projects like SMWCP2 can even setup a CI for generating latest BPS patch automatically. Though Lunar Magic 3.0+ supports a limited number of command line functions, it seems not really enough for that. Since Lunar Magic is not open-source and acts like a black box, it seems not that possible at all and can be considered at very last.
Nowadays, when I using version controlling programs (like Git) frequently in my coding projects, I think it should be possible to do the same thing in SMW Hacking.
I already noticed SMWCP2 already using Git to manage versions of the project, but it seems not that perfect:
1. Lots of files are in binary format. For example, Git is mostly designed for projects with mostly text files, and it makes Git works inefficiently, and cause
.git
folder unnecessary huge. Here is a bad example. Git-LFS seems to be a better solution, though.2. We need a standard directory structure. You see, C++, Java, Node.js, etc. already have conventional convention of project directory structure, but SMW Hacking dosen't. Though it doesn't seems a big deal for private SMW Hacking projects, conventional convention of directory structure would make other people works with you easier (especially for collab hacks).
3. It would be better if we have fully automated way for building ROMs. For example, we can use a script file to insert everything (.mwl, .map16, ExGFXxx.bin, .asm, etc.) into the ROM just like what Makefile or webpack.conf.js does, then get a fully-working ROM file. Projects like SMWCP2 can even setup a CI for generating latest BPS patch automatically. Though Lunar Magic 3.0+ supports a limited number of command line functions, it seems not really enough for that. Since Lunar Magic is not open-source and acts like a black box, it seems not that possible at all and can be considered at very last.