BrianPeek / gg2img

Inserts a file built with Golden Gate into a disk image file (.po), preserving resource information
MIT License
2 stars 0 forks source link

Maybe better documentation? #1

Closed xandark closed 1 year ago

xandark commented 1 year ago

I heard about this utility when it was mentioned in Juiced.GS and I thought it was the answer to what I needed: a way to combine the executable and resource fork into a IIgs disk image. Except this only runs on Windows it seems and there's no documentation in the main cpp file. Where is the resource fork stored? In the ._(filename) file? In some data stream of the file? Who knows?

All I see is:

    readfile(argv[1], "AFP_AfpInfo", (void**)&afpInfo, NULL);
    readfile(argv[1], "AFP_Resource", (void**)&afpResource, &fileRsrcSize);
    readfile(argv[1], NULL, (void**)&fileData, &fileDataSize);

What does AFP_Resource mean here?

I ultimately put this down after compiling the dependent libs on Linux and then realizing that this depends on Windows API so that's that.

BrianPeek commented 1 year ago

Hi xandark,

This was very much a tool I wrote for myself and decided to throw on GitHub in the off chance someone else could use it. I didn't realize it was mentioned in Juiced.GS. Neat.

Yes, this is Windows only. I figured the Visual Studio 2022 requirement for building would make that clear, but I'll see about adding a bit more detail to the readme. Thanks for the note.

As for where the resource names come from, as the Golden Gate docs mention, on Windows, GG uses the NTFS file system and writes the IIgs resource info to the alternate data stream of the file, which is an NTFS-specific thing. I don't know how this works on Linux or other file systems. The names are standard Apple names for these things, and are also found in the Golden Gate source, or simply by using a utility that will display alternate data streams on an NTFS file.

Anyway, sorry for the confusion, I'll try to update the readme/add some code comments when I get some time.

Thanks, Brian

BrianPeek commented 1 year ago

Updated the readme with Windows/NTFS requirements.

xandark commented 1 year ago

Okay thanks for the clarification, and I've found an alternate tool for Linux.

BrianPeek commented 1 year ago

Do you have a link? I can add it to my readme, maybe it'll help someone else in the future.

xandark commented 1 year ago

Yes, the Cadius tool by Brutal Deluxe. The "ADDFILE" sub-command can add resource forks.

https://www.brutaldeluxe.fr/products/crossdevtools/cadius/

xandark commented 1 year ago

Actually, this is a better link because it has a Linux release:

https://github.com/mach-kernel/cadius

BrianPeek commented 1 year ago

Thanks, I'll add some links soon. Cadius, on Windows at least, expects the resource forks to be in separate files, which isn't how Golden Gate operates, hence why I wrote this utility. It would be nice if Cadius were Golden Gate-aware...maybe I'll look into creating a PR for that at some point.

Thanks!

xandark commented 1 year ago

On Linux, if you want to have resource forks that are larger than 64K, you have to reconfigure and compile GG to separate the resource forks into a separate file that begins with ._

I realize this is very very niche, so I'm not pressing others to add support to their utilities. I'm just happy that Cadius allows me to construct a full fat file piece by piece.