Sewer56 / FileEmulationFramework

Framework for emulating files using Reloaded-II.
GNU Lesser General Public License v3.0
7 stars 7 forks source link

Add BF Emulator #6

Closed AnimatedSwine37 closed 1 year ago

AnimatedSwine37 commented 1 year ago

The primary addition in this is BF Emulator which uses Atlus Script Tools to merge/emulate bf files. Note that I named it Bf.File.Emulator to differentiate it from the other emulators which are stream based (from the two types listed in the docs).

There are also a few miscellaneous fixes/additions to the base FileEmulationFramework mod and PAK Emulator.

AnimatedSwine37 commented 1 year ago

Ok, I'm finally done with all that. Hopefully everything's good now

AnimatedSwine37 commented 1 year ago

Actually, I've noticed one last problem. When publishing, the Libraries folder which is needed by script compiler isn't being copied to the outputted files however the Charsets folder (which is also needed) is.

I had a look around but it seems to me like it should work, maybe you can see the problem? I imagine it's some simple mistake. If you don't have time (or don't want to) I might try again tomorrow, I'm tired for today

AnimatedSwine37 commented 1 year ago

Turns out Libraries is excluded by default in Reloaded.Publisher. I added it to the includes in 18af4ec and it gets copied over as it should now.

That should actually be everything now

Sewer56 commented 1 year ago

Will probably take at least another day for check. Got work tomorrow, and I've spent the whole weekend sorting through my old files, before wiping all my drives as maintenance.

Sewer56 commented 1 year ago

I was considering making AtlusScriptLibrary trimmable; however that would require me to write a source generator to safely deal with the cases where TGE used dynamic dispatch/multimethods (dynamic cast to resolve overload). I don't have sufficient experience with Roslyn stuff, and it's not something I can do with size of my backlog. I could do it by hand but that's potentially error prone.

[Besides trimming this specific library wouldn't gain that much]

I'll allow this for now; but remember, the code is slated to be ported to Rust due to our limitations; could do that at that point. Anyway, better get going :sweat_smile: