Also the files to use with FILE: are searched there and the Roms to install. The occasional user doesn't need to know the place, but if somebody wants to emulate complex things, it will be very important.
That's not true in this form. In Xep128 there is a function responsible for open files, ie for ROM image to load, the config file to be parsed, and so on. This function has some heuristic logic designed (by me, I mean) to avoid some headaches. Ie, the default configuration (even without config file) would use "combined.rom" for ROM images, which is searched at MULTIPLE places, INCLUDING the directory where the EXE is. So the preferences directory is not the sole place it tries to be used, especially for reasons you mentioned as well, for a simple user "download & try" experience, it's just enough to put every files in a single directory, EXE, combined.rom, etc, and will work, even without the user know anything about the "preferences directory" and its role. The default sdcard.img SD card image file is similar, ie is tried to be opened from the EXE's directory as well, for the same reason: the user can just download the EXE (and DLL, btw), ROM image and an SD card image file, putting all of them into a single directory, and it will work, without any configuration file, or the preferences directory. What I tried to be done it to provide a cross-platform, multiple OS/multiple version, single/multi user "installation" etc capable solution *WITH* also the possibility to provide the most simple approach for "try it", with just putting files into a desired directory, and that's all. This is somewhat different from ep128emu, where you have to do some work before the emulator is able to be used.
With the FILE:, you have some truth, however, I consider FILE: as an "advanced" stuff which is not the "very basic" usage of Xep128, so it needs more knowledge on the emulation details, directories etc, what emulator uses. By the way, if you check xep128.h out in the source, you will see this:
#define COMBINED_ROM_FN "combined.rom"
#define SDCARD_IMG_FN "sdcard.img"
#define PRINT_OUT_FN "@print.out"
#define DEFAULT_CONFIG_FILE "@config"
#define DEFAULT_CONFIG_SAMPLE_FILE "@config-sample"
File names begin with '@' means the preferences directory. File names without that (or given path) are tried to be guessed with opened at multiple places, ie in the current directory, in the directory which contains the EXE (and even the preferences directory, also on Linux/UNIX, the "data directory" it tried to open the given file as well). So you can see, that the default ROM image and default SD card image can be found even without anything in the preferences directory itself, though the default configuration file is indeed, tried to be opened from the preferences directory.
And yes, of course: you're right, of course if you want some "complex" the situation is more complex, it's quite logical
While the default basic usage of Xep128 does not need to any deal with custom/pref/etc directories, and paths, if you have something more complicated, you need to know more on Xep128 details. I can't see it can be avoided easily, to also provide the simple case, while also serve the purporse of multi platform / multi user / system installed EXE, etc all of the cases at the same time.
I understand your reasons. Of course I don't want to influence your future work with Android.....
it was just an example
But of course it's possible. However even *only* with Windows/Unix, and different usage needs, you can see the problematic part here, and the need of some "interesting" solutions
Symlinks? I only know about "direct accesses", but I think they only deal with the Windows GUI, not with the deeps of DOS.
Symbolic links in UNIX OSes, maybe "shortcuts" in Windows, just in UNIX, it's a kernel level OS stuff, so I can "symlink" a file or directory to another name and/or directory, and I can "see" that directory/file there too. Maybe Windows is lame enough not to have this capability?
It's a kinda elementary knowledge about UNIX OSes (btw, there are even hard links, but i's another question).
I have an idea, just like you create the config and the directory, put a direct access to the config directory on the executable dir.
Sorry, I don't clearly understand what you mean here. I assume, "config directory" is the "preferences directory", ie the stuff with "nemesys.lgb" in its PATH. What would you do with it?
Then the final user doesn't need to know where the config is.
That is correct, this is the exact reason why Xep128 works without *any* configuration file at all, just putting ROM image, EXE, DLL, sd card image into the same directory and that's all
But you can't avoid the complexity if you want to retain this possibility as well also with other use cases and goals at the same time. WHat I've already mentioned, of course.
Here is a copy of the direct access I use to reach the config dir. I have deleted the LNK tag it had, because windows doesn't treat it as a normal file.
Ah, so that should be the Windows-like notion of "symlinks"
However I can't do anything with this file, it's a data garbage, no idea what it is, maybe it's a Windows stuff
Unix symlinks are not like that, the link itself cannot be saved, because it's a link, if you try to save, the pointed file is saved, what it should do, I think