Rinnegatamante / lpp-3ds

Lua Player Plus for 3DS
GNU General Public License v3.0
180 stars 32 forks source link

Makefile needs romfs arguments when building 3dsx #48

Closed Cruel closed 7 years ago

Cruel commented 7 years ago

Romfs fails with 3dsx because it's not specifying a romfs directory to 3dsxtool. Here's an example how to do it:

https://github.com/devkitPro/3ds-examples/blob/master/romfs/Makefile#L126

Rinnegatamante commented 7 years ago

romFs is correctly supported even with 3dsx builds (at least on real hw). Only on Citra3DS, lpp-3ds fails to init romFs.

An example is CHMM2 that uses romFs for lua scripts even in the 3dsx build.

Cruel commented 7 years ago

I see, you have --romfs in your buildscript in the release. However, your 3dsx builds (including CHMM2) set the 3dsx headerSize field to 0x20 which usually only happens when romfs/smdh aren't used (or old 3dsxtool is used).

I would think this would cause the following to fail, but doesn't seem to: https://github.com/smealum/ctrulib/blob/master/libctru/source/romfs_dev.c#L233

This same check is done by citra: https://github.com/citra-emu/citra/blob/0c8df1046f789c9f965300c54d03004fc0b8721e/src/core/loader/3dsx.cpp#L319

Hard to find the root of the problem since you embed the lib/tool builds in the repo, but you're perhaps using romfs in an unconventional way that citra doesn't expect. (but citra still shouldn't crash)

Either way, it may not be worth looking into at this point if you don't have plans on maintaining your 3DS stuff.