CFW 4.89.3 Evilnat Cobra (8.4) (CEX/DEX/PEX)

PS3 CFW 4.89.3 Evilnat Cobra (8.4) (CEX/DEX/PEX) -

Every time vsh sends to PSN the following files located in /dev_hdd0/home/USER_ID/community
  • CI.TMP (console information): internal/external IPs, router information (brand, model), console firmware information;
  • MI.TMP (media information): latest title ID, timestamp, etc;
  • PTL.TMP (process information?): list of running processes and plugins, timestamps, etc.
How about to block the creation of those files somehow?

Or at least the PTL.TMP, why sony need to know which processes are running? maybe it's used for crash reports?

MI.TMP is probably used to show which game the user is playing under the PSN CARD, probably it is safe as HEN users are not banned even after running homebrews, i've seen many users showing multiMAN and never got banned.

CI.TMP is useful for what?
 
There are details regarding these files (examples, programs for decryption). Of course, these logs are needed by Sony to find out the details when the user contacts, as well as to make a decision about the ban.
In general, nothing prevents deleting these files when initializing HEN

Code:
...
char path4[0x40];
sprintf(path4, "/dev_hdd0/home/%08i/community/CI.TMP", xsetting_CC56EB2D()->GetCurrentUserNumber());
char path5[0x40];
sprintf(path5, "/dev_hdd0/home/%08i/community/MI.TMP", xsetting_CC56EB2D()->GetCurrentUserNumber());
char path6[0x40];
sprintf(path6, "/dev_hdd0/home/%08i/community/PTL.TMP", xsetting_CC56EB2D()->GetCurrentUserNumber());
...
if(cellFsStat(path4,&stat)==0)
{
cellFsUnlink(path4);
}
if(cellFsStat(path5,&stat)==0)
{
cellFsUnlink(path5);
}
if(cellFsStat(path6,&stat)==0)
{
cellFsUnlink(path6);
}
Although the PTL.TMP file is still created after deletion
 
Every time vsh sends to PSN the following files located in /dev_hdd0/home/USER_ID/community
  • CI.TMP (console information): internal/external IPs, router information (brand, model), console firmware information;
  • MI.TMP (media information): latest title ID, timestamp, etc;
  • PTL.TMP (process information?): list of running processes and plugins, timestamps, etc.
How about to block the creation of those files somehow?

Or at least the PTL.TMP, why sony need to know which processes are running? maybe it's used for crash reports?

MI.TMP is probably used to show which game the user is playing under the PSN CARD, probably it is safe as HEN users are not banned even after running homebrews, i've seen many users showing multiMAN and never got banned.

CI.TMP is useful for what?

I'm way in over my head on this discussion, but maybe if there was an option to clean these files up, similar to the one we already have to disable syscalls, before we sign in on PSN?
 
It will enable the gameboot + sound (requires the gameboot.ac3) no rco needed, the gameboot can also be enabled by modding the rco but without sound.

So the sprx is the best way
After thinking about it a lot I think that I will not add the gameboot in the CFW, I will create a PKG so that it can be enabled and disabled. Why have I decided this? Because if I add the full gameboot (sprx, ac3, rco) in the PUP, the flash literally runs out of space to, for example, load an external kernel or create the lck file to block access to PSN with sycalls enabled

EDIT: Maybe I can find a workaround
 
Last edited:
@Evilnat did you solve the remaining RCO issues in 4.89?
The fix by sandungas works partially and many of the mods in Ultimate Toolbox by DeViL303 are broken on Evilnat 4.89.

If you plan to patch game_ext_plugin.sprx, it would be great to have the option to enable the custom_render_plugin.rco to have individual gameboot for emulators.

By the way, I was checking your mappath.c in Cobra and noticed that it isn't checking if malloc() failed to allocate the memory. In MAMBA, I pre-allocate the memory on the first call to mappath to avoid issues due lack of memory.

In Evilnat 4.89 I noticed that mappath fails occasionally (maybe due memory fails). That's why I removed unlocking PSP Launchers & PSN access blocker in webMAN MOD 1.47.42. These features rely on mappath and was affecting the user experience.
Sorry for double post

@aldostools I have update map_path function:

int len = strlen(oldpath);
char *oldpath_size = malloc(len + 1);
char *newpath_size = malloc(MAX_PATH);

if(!oldpath_size || !newpath_size)
return -1;

............

map_table[firstfree].oldpath = (char *)oldpath_size;
map_table[firstfree].newpath = (char *)newpath_size;


Code:
int map_path(char *oldpath, char *newpath, uint32_t flags)
{
    int i, firstfree = -1;

    if (!oldpath || strlen(oldpath) == 0)
        return -1;
    
    -------------------- NEW --------------------
    int len = strlen(oldpath);
    char *oldpath_size = malloc(len + 1);
    char *newpath_size = malloc(MAX_PATH);

    if(!oldpath_size || !newpath_size)
        return -1;
    -------------------------------------------------

    DPRINTF("Map path: %s -> %s\n", oldpath, newpath);

    if (newpath && strcmp(oldpath, newpath) == 0)
        newpath = NULL;

    if (strcmp(oldpath, "/dev_bdvd") == 0)
        condition_apphome = (newpath != NULL);

    for (i = 0; i < MAX_TABLE_ENTRIES; i++)
    {
        if (map_table[i].oldpath)
        {
            if (strcmp(oldpath, map_table[i].oldpath) == 0)
            {
                if (newpath && strlen(newpath))
                {
                    strncpy(map_table[i].newpath, newpath, MAX_PATH - 1);
                    map_table[i].newpath[MAX_PATH - 1] = 0;
                    map_table[i].newpath_len = strlen(newpath);
                    map_table[i].flags = (map_table[i].flags&FLAG_COPY) | (flags&(~FLAG_COPY));
                }
                else
                {
                    if(init_map_entry(i))
                        continue;

                    if (map_table[i].flags & FLAG_COPY)
                        free(map_table[i].oldpath);

                    free(map_table[i].newpath);
                    map_table[i].oldpath = NULL;
                    map_table[i].newpath = NULL;
                    map_table[i].flags = 0;
                }

                break;
            }
        }
        else if (firstfree < 0)
            firstfree = i;
    }
    
    if (i == MAX_TABLE_ENTRIES)
    {
        if (firstfree < 0)
            return EKRESOURCE;

        if (!newpath || strlen(newpath) == 0)
            return SUCCEEDED;

        map_table[firstfree].flags = flags;
        if (flags & FLAG_COPY)
        {
            map_table[firstfree].oldpath = (char *)oldpath_size; // <- NEW
            strncpy(map_table[firstfree].oldpath, oldpath, len);
            map_table[firstfree].oldpath[len] = 0;
        }
        else
            map_table[firstfree].oldpath = oldpath;

        map_table[firstfree].newpath = (char *)newpath_size; // <- NEW
        strncpy(map_table[firstfree].newpath, newpath, MAX_PATH - 1);
        map_table[firstfree].newpath[MAX_PATH - 1] = 0;
        map_table[firstfree].newpath_len = strlen(newpath);
    }

    return SUCCEEDED;
}
 
@Evilnat your new code has some memory leaks. I made some changes:

- renamed oldpath_size/newpath_size to oldpath_buf/newpath_buf
- moved malloc() to bottom of the function
- added free(newpath_buf) if malloc(oldpath_buf) fails
- added check for variable length
- *oldpath == 0 is faster than strlen(oldpath) because only checks first byte

Code:
int map_path(char *oldpath, char *newpath, uint32_t flags)
{
    int i, firstfree = -1;
    if (!oldpath || *oldpath == 0)
        return -1;
    DPRINTF("Map path: %s -> %s\n", oldpath, newpath);
    if (newpath && strcmp(oldpath, newpath) == 0)
        newpath = NULL;
    if (strcmp(oldpath, "/dev_bdvd") == 0)
        condition_apphome = (newpath != NULL);
    for (i = 0; i < MAX_TABLE_ENTRIES; i++)
    {
        if (map_table[i].oldpath)
        {
            if (strcmp(oldpath, map_table[i].oldpath) == 0)
            {
                if (newpath && *newpath)
                {
                    int len = strlen(newpath); if(len >= MAX_PATH) return - 1;
                    strncpy(map_table[i].newpath, newpath, len);
                    map_table[i].newpath[len] = 0;
                    map_table[i].newpath_len = len;
                    map_table[i].flags = (map_table[i].flags&FLAG_COPY) | (flags&(~FLAG_COPY));
                }
                else
                {
                    if(init_map_entry(i))
                        continue;
                    if (map_table[i].flags & FLAG_COPY)
                        free(map_table[i].oldpath);
                    free(map_table[i].newpath);
                    map_table[i].oldpath = NULL;
                    map_table[i].newpath = NULL;
                    map_table[i].flags = 0;
                }
                break;
            }
        }
        else if (firstfree < 0)
            firstfree = i;
    }
   
    if (i == MAX_TABLE_ENTRIES)
    {
        if (firstfree < 0)
            return EKRESOURCE;
        if (!newpath || *newpath == 0)
            return SUCCEEDED;
        int len2 = strlen(newpath);
        if(len2 >= MAX_PATH) return -1;
        char *newpath_buf = malloc(MAX_PATH);
        if(!newpath_buf) return -1;
        map_table[firstfree].flags = flags;
        if (flags & FLAG_COPY)
        {
            int len = strlen(oldpath);
            char *oldpath_buf = malloc(len + 1);
            if(!oldpath_buf) {free(newpath_buf); return -1;} // <- FREE MEM
            map_table[firstfree].oldpath = (char *)oldpath_buf; // <- NEW
            strncpy(map_table[firstfree].oldpath, oldpath, len);
            map_table[firstfree].oldpath[len] = 0;
        }
        else
            map_table[firstfree].oldpath = oldpath;
        map_table[firstfree].newpath = (char *)newpath_buf; // <- NEW
        strncpy(map_table[firstfree].newpath, newpath, len2);
        map_table[i].newpath[len2] = 0;
        map_table[i].newpath_len = len2;
    }
    return SUCCEEDED;
}
 
Is the new FW going to have more options for PS2 fan settings? Perhaps an option to go lower than 40% or a custom setting?

I noticed this fan setting affected games running on the BC hardware while the PS2 fan settings within Webman mod were used for netemu sw ps2 emulation.
 
Hi! Before firmware reached its final release state, may I ask if it is possible to make cell/rsx temperature in ps2 game pause menu in the corner not being cut on 32' tv? I guess it is some kind of fixed layout setting maybe for other screen size. I wonder could it be "adaptive" placement?
 
I have a Fat CECHG04 model without a reader, the new 4.89.3 no-bd could convert it to dex or not? I want to try it, I use the console every day in version 4.89 no-bd and it works perfectly
 
I have a Fat CECHG04 model without a reader, the new 4.89.3 no-bd could convert it to dex or not? I want to try it, I use the console every day in version 4.89 no-bd and it works perfectly
It's a very interesting question you asked, but I think accepting yes because evilnat said on his twitter that he will do the noBD and noBT versions, sorry if I typed it wrong because I'm using the translator
 
It's a very interesting question you asked, but I think accepting yes because evilnat said on his twitter that he will do the noBD and noBT versions, sorry if I typed it wrong because I'm using the translator
Yes, he put that, but I don't know if it could be converted, that's why I wanted him to answer me and if he sends me the new version, I'll try it
 
Guys, i am still using 4.88.2 and haven't used my ps3 since april this year. I read that the 4.89.2 has some bugs and instability issues and a new 4.89.3 revision is soon to be released.
Do you recommend that i wait? Or install the already available 4.98.2?
 
Guys, i am still using 4.88.2 and haven't used my ps3 since april this year. I read that the 4.89.2 has some bugs and instability issues and a new 4.89.3 revision is soon to be released.
Do you recommend that i wait? Or install the already available 4.98.2?

4.89.1 had some minor bugs from Sony
4.89.2 Corrected those issue's
4.89.3 will be coming soon, you can use 4.89.2 until then
 
Guys, i am still using 4.88.2 and haven't used my ps3 since april this year. I read that the 4.89.2 has some bugs and instability issues and a new 4.89.3 revision is soon to be released.
Do you recommend that i wait? Or install the already available 4.98.2?
I had no problems or instability in 4.88 or in the last 4.89, you can update to be in the latest or if you stay in 4.88 it's perfect too
 
Mate, just change aspect ratio on remote control. It should fix your problem

Rather disable overscan in the TV settings.

It's definitely not aspect ratio or overscan. It is default video mode
Image signal is 720p and system interface and netemu pause menu is widescreen as usual
Game itself is 4:3 and upscale in ps3 settings is set to normal
 

Attachments

  • C894CC75-014B-4996-8D81-5040ED51C9D4.jpeg
    C894CC75-014B-4996-8D81-5040ED51C9D4.jpeg
    1.8 MB · Views: 94
Last edited:
It's definitely not aspect ratio or overscan. It is default video mode
Image signal is 720p and system interface and netemu pause menu is widescreen as usual
Game itself is 4:3 and upscale in ps3 settings is set to normal
change aspect ratio to auto or 16:9 on the tv settings. you have a 32 inch bravia tv man, i had a 1080p 40 inch kdl bx400 in the past, the picture quality was superb, the upscaling on these sony tvs made ps3 native 720p games look almost as good as native 1080p. even the 360 upscaler chip had no chance and made 360 games appear as if there is a vaseline filter on the screen due to the low res+upscaling. setting 360 to 720p on that tv made games look higher resolution. not to mention the perfect upscaling and interlacing of 480p/480i.
 
Back
Top