ps2homebrew / Open-PS2-Loader

Game and app loader for Sony PlayStation 2
https://ps2homebrew.github.io/Open-PS2-Loader/
Academic Free License v3.0
2.05k stars 262 forks source link

[FR]: Beta 1668 causes a bug in the _common partition about config files (HDD) #514

Open ElPatas1 opened 2 years ago

ElPatas1 commented 2 years ago

Checks

Describe the issue

Looking with the beta 1759 the problem of loading the games and saving the configurations that had been opened in this issue, which is now solved:

https://github.com/ps2homebrew/Open-PS2-Loader/issues/511

I discovered that in the _common partition an OPL folder is always created with a configuration file when it did not happen before saving my OPL configs. If i delete it, every time i start the OPL it is created again.

I always save my configuration files in MC0, i never use the HDD to save configurations. And so the OPL notifications always tells me when i load the program that the configuration file has been loaded from MC0 and not from the HDD.

I have discovered it when i have gone to use the POPS emulator and other applications that use this partition.

I have been testing all the beta versions since OPL v1.0.0 until i have found the last beta where this does not happen which is in 1666, in beta 1668 is where this problem begins to occur.

This is the 1668 commit where there must be something causing the problem:

https://github.com/ps2homebrew/Open-PS2-Loader/commit/68797a5c55179e5919cf977a6e0009b21fb44071

Best regards.

Console model

SCPH-30004

OPL version / revision

OPL v1.0.0, Beta 1760, Beta 1668, Beta 1666 and all from OPL v1.0.0

In which device(s) have you experienced this issue?

HDD

Context and extra information

No response

J013k commented 2 years ago

Currently OPL creates conf_hdd.cfg in hdd0:/__common/OPL. In this file there is: hdd_partition=+OPL

In a commit (rev 1668) that you provide there is info: Add option to use partitions other than +OPL.

For HDD users, OPL will read hdd0:__common/OPL/conf_hdd.cfg for the config entry "hdd_partition" to use as your OPL partition.
If not found a config file and a 128Mb +OPL partition will be created, you can edit the config if you wish to use/create a different partition.
All partitions created by OPL will be 128Mb (it is not recommended to enlarge partitions as it will break LBAs, instead remove and recreate manually with uLaunchELF at a larger size if needed).

Additionally starting from rev1753 - Add partition notification - has been added.

https://i.postimg.cc/PJfXMWRx/156.png https://i.postimg.cc/cCDskvpc/157.png

I am not sure, but you want that conf_hdd.cfg to be only on the specific device? If settings have been saved to mc0:/ also conf_hdd.cfg should be there?

AKuHAK commented 2 years ago

@ElPatas1 this is not a bug but a feature. Look, from OPL readme:

OPL will automatically create the above directory structure the first time you launch it and enable your favorite device.

This means: when you enable USB - OPL will create a folder structure in USB. when you enable SMB - OPL will create a folder structure in SMB share. when you enable HDD - OPL will create a partition +OPL with folder structure inside

Recently, we just a bit extended HDD flexibility: when you enable HDD - OPL will create the file hdd0:/__common/OPL/conf_hdd.cfg and a partition $OPL with folder structure inside

Of course, when I type create I actually mean create if absent.

So this is not a bug but is now a part of the necessary file structure on the device. For example, you can edit conf_hdd.cfg type there __common, copy content from +OPL partition into __common/OPL/ and remove +OPL partition for saving space on the HDD. Now OPL will use __common/OPL/ for storing everything. Now OPL will become more flexible, but this will lead to that additional file and additional folder being created.

As for using the memory card for storing OPL configuration, it is a bit different situation. We cannot store everything on the memory card, only basic OPL settings

ElPatas1 commented 2 years ago

@ElPatas1 this is not a bug but a feature. Look, from OPL readme:

OPL will automatically create the above directory structure the first time you launch it and enable your favorite device.

This means: when you enable USB - OPL will create a folder structure in USB. when you enable SMB - OPL will create a folder structure in SMB share. when you enable HDD - OPL will create a partition +OPL with folder structure inside

Recently, we just a bit extended HDD flexibility: when you enable HDD - OPL will create the file hdd0:/__common/OPL/conf_hdd.cfg and a partition $OPL with folder structure inside

Of course, when I type create I actually mean create if absent.

So this is not a bug but is now a part of the necessary file structure on the device. For example, you can edit conf_hdd.cfg type there __common, copy content from +OPL partition into __common/OPL/ and remove +OPL partition for saving space on the HDD. Now OPL will use __common/OPL/ for storing everything. Now OPL will become more flexible, but this will lead to that additional file and additional folder being created.

As for using the memory card for storing OPL configuration, it is a bit different situation. We cannot store everything on the memory card, only basic OPL settings

@AKuHAK , A feature? Well, i have never seen anyone who has complained that the partition named + OPL is the OPL data partition, nor has there been anyone who has made a request for it to be another partition.

If you want an alternate partition, create this mandatory OPL configuration folder on another partition that is always empty and not used by anything like net, system, or sysconf, instead common.

I don't want to have an extra mandatory OPL folder on the common partition where the POPS emulator is used with its configuration files and VMCs, as well as other apps that can use the common partition.

And what is worse, the OPL is in continuous development, it constantly has new bugs, some of them very serious like the last one that happened recently that left all the games unable to run on all devices.

Tomorrow there may be a corruption caused by the OPL on the __common partition destroying all configuration files and saved games of the POPS emulator messing up tons of people around the globe. Nobody thought of this?

Or you can create a custom partition just for you where to save this OPL folder, in this way if corruption occurs by the OPL it will only affect you and not others.

Please create this OPL folder in another partition, for example in __net.

Or if a user wants to use an alternate partition for OPL data, have him create a partition just for himself with this OPL folder inside.

If really it is not possible to put the conf_hdd.cfg inside the mc0.

Best regards.

AKuHAK commented 2 years ago

@ElPatas1 __common partition isn't that exclusive for POPS. Its purpose is to be common for all apps that use HDD. According to Sony specs, games and apps may use the __common partition for their needs. Any game, that supports saving to the HDD, will use __common for this purpose. Of course, for safety, it is allowed to use only one folder per game/app and is not allowed to touch other folders. So basically each app should store its settings inside some folder in the __common partitions. The fact that POPS did it first doesn't make __common to be exclusive for POPSTARTER.

__common/POPS
__common/OPL
__common/RETROARCH
etc, etc

We cannot use __net, __sysconf or other partitions, cause their purposes are different. If we will move it into net we can break network settings, and net is used for storing console unique IDs.

As about, that you are afraid that something bad can happen, and that recently beta version was broken. The answer is simple - use stable versions, as the purpose of beta version - testing new features, and during testing can happen things that are not expected. I personally don't think that one file creation can affect anything on the partition, but of course, more testings is needed.

Anyway, until an issue happened it cannot be called an issue.

I personally received many requests for removing the +OPL partition. Some users don't like that 128Mb is a waste of space (like Berion). Some users use HDD OSD/BB Navigator/XMB PSX DESR for launching apps and they cannot use +OPL and are forced to hexedit the ELF and change +OPL to PP.OPL for example. Some users would like to store all their content in an enormous __common partition (POPS users, yeah). Honestly, I received many requests about the ability to remove +OPL.

I very much appreciate @KrahJohlito work on this, he made huge work on making the OPL setup more flexible and usable. This option will not be reverted, but of course, more testing is needed, as always.

Maybe, moving this option into GUI will be useful, but this is not related to that issue.

ElPatas1 commented 2 years ago

@ElPatas1 __common partition isn't that exclusive for POPS. Its purpose is to be common for all apps that use HDD. According to Sony specs, games and apps may use the __common partition for their needs. Any game, that supports saving to the HDD, will use __common for this purpose. Of course, for safety, it is allowed to use only one folder per game/app and is not allowed to touch other folders. So basically each app should store its settings inside some folder in the __common partitions. The fact that POPS did it first doesn't make __common to be exclusive for POPSTARTER.

__common/POPS
__common/OPL
__common/RETROARCH
etc, etc

We cannot use __net, __sysconf or other partitions, cause their purposes are different. If we will move it into net we can break network settings, and net is used for storing console unique IDs.

As about, that you are afraid that something bad can happen, and that recently beta version was broken. The answer is simple - use stable versions, as the purpose of beta version - testing new features, and during testing can happen things that are not expected. I personally don't think that one file creation can affect anything on the partition, but of course, more testings is needed.

Anyway, until an issue happened it cannot be called an issue.

I personally received many requests for removing the +OPL partition. Some users don't like that 128Mb is a waste of space (like Berion). Some users use HDD OSD/BB Navigator/XMB PSX DESR for launching apps and they cannot use +OPL and are forced to hexedit the ELF and change +OPL to PP.OPL for example. Some users would like to store all their content in an enormous __common partition (POPS users, yeah). Honestly, I received many requests about the ability to remove +OPL.

I very much appreciate @KrahJohlito work on this, he made huge work on making the OPL setup more flexible and usable. This option will not be reverted, but of course, more testing is needed, as always.

Maybe, moving this option into GUI will be useful, but this is not related to that issue.

@AKuHAK, i know that __common partition is not exclusive to the POPStarter, but it cannot cause any problems being a project dead for years, while the OPL does.

And there is the big key difference, which is that the POPS folder and any other folder of all other applications ARE OPTIONAL, while the new OPL folder is MANDATORY.

Whoever does not want one of those application folders can delete them there, if they do not want them or do not need them, they are optional. But the OPL folder cannot be deleted, it is mandatory.

And i do not want to have this mandatory folder bothering there that i'm not going to use, and that i'm not going to use any alternative partition to the +OPL one, i'm happy with this partition like many people is happy with it.

So this new OPL folder should be optional exactly like the rest of the folders of the rest of the applications that can go in __common.

Regarding the 128MB size of the partition, in fact normally most of the people who use the OPL like to use ART and VMC a lot, and 128MB stays very small, so people create this partition as 1GB size, much larger than that small size of 128MB. This is already done by people and there is no problem, nor is an alternate partition needed.

Another thing is that all this has been done with the HDD-OSD in mind, which is not used by most people, only a small percentage of people use the HDD-OSD on a daily basis, compared to the vast majority who do not use it, and this is not right and just.

I don't see what problem there may be choosing the __net partition because it might break network settings or for storing console unique IDs.

Because in the same way that you say that so that nothing bad can happen it is as simple as using stable versions of the OPL, then this can be applied in the same way for the __net partition or any of the other two partitions.

Of course, the work of @KrahJohlito is very appreciable, and i'm not against flexibility, but choosing the __common partition by making that OPL folder mandatory when the rest of the applications are not, is not the way.

Best regards.

AKuHAK commented 2 years ago

And i do not want to have this mandatory folder bothering there that i'm not going to use

And I do not want to have +OPL partition mandatory I am not going to use it. Honestly, I cant see the differences between these 2 statements. There should be one default location that will be used when OPL is launched when no devices are connected except HDD. We decided to use common partition cause it is what common partition was designed for. It was designed to be a mess and full of folders at the root of it. One folder per app. And when you said that there are no mandatory folders, you are wrong, one mandatory folder there is. 'Your Saves' folder is created when you launch any HDD games or HDD OSD, so it can be called mandatory. Of course, you can say that you will never use HDD OSD or any HDD-based game, but it will be not true for everyone. If it is crucial, we can move the HDD configuration there, in the Your Saves folder. As regarding moving to another partition - I cannot see the difference. This folder is bothering you in the common partition and will be bothering somebody else in the net partition. Your many users and my many users are different. In my segment, everyone who uses HDD also uses it with FHDB+HDDOSD installed.

I personally also don't like that OPL is creating so many annoying folders in the root of USB, and I am not the only one who dislikes that. But the fact is that when no other devices connected OPL should know what is the default location and load settings from the default location. These folders also are mandatory for USB and this also not the best solution and not the most flexible one.

Maybe in the future will be released OPL portable version, which will load and save settings from the location where is it loaded from. This will solve these mandatory structure problems.

szpieg-z-krainy-deszczowcow commented 2 years ago

I have never seen anyone who has complained that the partition named + OPL is the OPL data partition, nor has there been anyone who has made a request for it to be another partition.

Personally I do not want +OPL as I'm more HDD OSD lover and also I thinking that automatic +OPL creation is a war crime (such things should be always a user choice, especially that not for all 128MiB is enough). ;) But! If I don't want +OPL, then it is fine because now I can choose any partition. If You like +OPL, then just stay with it... Maybe solution for this would be: if found +OPL, don't create config on _common, else read hdd config on common. However, this introduce some mess in code, while mandatory "hdd0:/common/OPL/conf_hdd.cfg" is just clean solution (now I point there OPL resources). In addition, following by AkuHak, __common partition is designed to be partition for user data.

I don't want to have an extra mandatory OPL folder on the common partition where the POPS emulator is used with its configuration files and VMCs, as well as other apps that can use the common partition.

Not everyone using POPStarter and not everyone using __common for games storing (if I would use POPS, I would rather follow by per game, bootable partition).

Tomorrow there may be a corruption caused by the OPL on the __common partition destroying all configuration files and saved games of the POPS emulator messing up tons of people around the globe. Nobody thought of this?

Then make backups. This can be apply for all other partitions when conf hdd could be stored... Making FHDB/HDD OSD/PSBBN/XMB broken.

I don't see what problem there may be choosing the __net partition because it might break network settings or for storing console unique IDs.

Because servers are dead and this data can be unobtainable now. Just guessing. For me it was always empty so I even delete it and shrink all system partitions to 128MiB in size, except __common.

israpps commented 2 years ago

Because servers are dead and this data can be unobtainable now. Just guessing. For me it was always empty so I even delete it and shrink all system partitions to 128MiB in size, except __common.

__net can be used by some games

tuccy commented 3 months ago

Im not familiar c and just view thia in mobile phone but.

static void hddFindOPLPartition(void) { static config_set_t *config; char name[64]; int fd, ret = 0;

fileXioUmount(hddPrefix);

ret = fileXioMount("pfs0:", "hdd0:__common", FIO_MT_RDWR);
if (ret == 0) {
    fd = open("pfs0:OPL/conf_hdd.cfg", O_RDONLY);
    if (fd >= 0) {

I think Need a double check with memory card slot maybe more considering multitags you can start in this point with collection of units to check posible that can be mount. Iterating them and determine if exits in any of them to load.

Second file open is cause create all time in pfs0 use var where is found in case found It.

    fd = open("pfs0:OPL/conf_hdd.cfg", O_CREAT | O_TRUNC | O_WRONLY);
    if (fd >= 0) {

Regards.

Sorry im in mobile cannot do a full request.