Comparative analysis between OFW 4.82 and 4.89

SrGato

Member
Introduction

Good day.

Previously, many, many days ago, I started this thread questioning the safety of an update to OFW 4.87 for a jailbroken non-CFW compatible PS3 console user. My primary concern was both the possibility of exploitable bugs being patched on versions following 4.83 and the unexpected changes to some system components that, from my perspective, Sony should not have a reason to change, like PS2 or PSP emulators.

I received good explanations indicating that there was no risk of upgrading to OFW/HFW 4.87 . However, I was still not totally convinced, so I never updated; and with the arrival of OFW 4.89 and its many changes in comparison with previous versions, I decided to make a rather comprehensive comparative analysis between OFW 4.82 and OFW 4.89 . The main reason for this comparison is the scarce information publicly available and easily accesible about the changes between official firmware versions of the PS3; one example is the PS3 Developer wiki.

Comparison

I can start saying that OFW version 4.89 brought more changes over version 4.88 than 4.88 over previous ones. The changes mentioned at the PS3 Developer wiki are right for the most part.

The were some for the Core OS, especially for lv0, which is some sort of program loader; while lv1.self and lv2_kernel.self, the hypervisor and the Game OS kernel, respectively, had little changes.

The Blue-ray Disc player had one file changed; other two had only version numbers changed.

Also, there were many root certification authorities added to the certificates list.

I have to say that @sandungas was right for the most part, the changes to the emulators were just version numbers and timestamps; except for ps2_emu.self, one of the PS2 emulators, which had a rather small region with lots of changes, not taking into account the timestamp and version changes. Also, ps1_netemu.self, one of the PS emulators, which had a lot of changes, was changed before 4.89, as reported by @sandungas; indeed, when compared between OFW 4.88 and 4.89, there were only changes on timestamps and version numbers.

In the case of OS libraries and modules, among the external libraries there were four files with many changes, nine with only timestamps or version numbers changed, and one with a version number change and another tiny change; while among the internal libraries/modules, there were only two files with version numbers changed.

Among the user interface configuration files, there were five layout files with changes. One of them looked encrypted, compressed or something alike; the other four had very similar changes: seven contiguous lines inserted.

Moreover, examining the user interface modules, there were 61 files changed, 12 of which had been changed before OFW 4.89, while the other 49 changed between 4.88 and 4.89 ; it is important to note that seven of the 49 that changed in 4.89 had also changed before, but only in version numbers. Not included in the count, there were four files that had only timestamps or version numbers changed (pre-4.89), and 12 which had tiny changes that I guess they are not timestamps and probably not version numbers, since they have not changed in recent previous versions but on version 4.89 (technically, one of these changed before 4.89, but only in a version number).

It is interesting that many user interface modules with very little changes had values whose numerical difference between the two versions was seven. This did not happen in all modules with little changes, but did happen among many of them. As found by @sandungas, it is possible that there is a correlation between the seven lines added to the layout configuration files and the increment of some values of these modules by seven. For more information on this, look at sandungas's post.

Finally, most of the user interface resources changed only in OFW 4.89, as per the PS3 Developer wiki; they are a rather new type of change coming with version 4.89 that had not been in the last previous versions, only one resource container changed before 4.89 . There are 44 resource containers with changes; most of them had changes only in the layout of the UI elements, only four did not have layout changes and three had more than just layout changes. Six resource containers had text strings changed or added, while three had images changed or added. It is interesting that one resource container, newstore_plugin.rco, had changed but was not mentioned at the PS3 Developer wiki. In addition, one layout file which is not into a resource container had some entries deleted on version 4.89 .

Resources

Examining the resources in more depth, we can see that those related to the Blue-ray Disc player had the same change: a text message which previously prompted the user to update the firmware in order to get the last encryption keys for BD playback, now says that the PS3 can not play the Blue-ray Disc; it looks like this might be the last firmware update for the PS3, maybe Sony will no longer update the encryption keys, hence the message change.

Other resources, related to the PS Store, had some new text messages presenting some URL and QR codes, of which one URL and one QR code is for getting a mandatory device password for PSN sign-in, which is enforced only for PS3 and PS Vita users; accordingly, some resources had additional images, QR codes in particular, while another one had one image changed, the PSN cloud storage icon. Also, an XMB resource, the one that is not into a resource container, had removed entries for PSN account registration.

Finally, the general changes in the layout of UI elements found throughout the changed resource containers suggest that some UI elements might have increased in size and/or shifted bottom-right. Please, confirm these if you already made the update.

Closing

I think the PS3 developer wiki should be updated with some of this information instead of the boring...
This system software update improves system performance.

Moreover, I would like you to comment about whether these small changes found in some files are significant enough to consider them as changed. Note that I don't take as changed in the appendix below those files that only have timestamps or version numbers changed.

On the other hand, I would like to ask whether it is recommended to update to 4.89 given the previous findings. Update: I see no problem in updating to version 4.88 , although I still doubt for 4.89 , there seems to be some UI glitches on OFW 4.89 .

Appendix

I am leaving here some text files detailing the comparison for some files in the PS3 firmware.

ps3-update-diffs_4.82-4.89.txt has a general listing of the changes between 4.82 and 4.89; the letter "Y" at the start of the entries means those files have changed, those marked with "N" had not (neither timestamps nor version numbers count), and the "?" mark means they have so few or little changes that they could be counted as not changed, but I cannot assert that. There are some extra symbols, they are explained at the end of the file.

resources_xml_comparison_4.82-4.89.txt has a comparison of the main XML file for each resource container that had it changed.

resources_comparison_4.82-4.89.txt has a comparison of the other files found into the resources containers for each that had at least one its resources changed (excluding the main XML file).

comparison_ps1_netemu.self_4.82-4.89.txt has a somewhat low-level comparison of the ps1_netemu.self. This is because the changes were rather patterned or understandable. In the file, there are byte ranges written in hexadecimal numbers. An equal sign means those ranges between the two versions of the file are equal; likewise the "!=" means they are not equal. The "=>" means that the range from the OFW 4.82 version was removed in the OFW 4.89 version, while the "<=" means the opposite, there was an inclusion in the newer version.

Tools used

Many thanks to @Evilnat for his great PUAD tool, it did the harder part. I also used and enhanced version of the rcomage.exe found here at PSX-Place, thanks @sandungas. Also, the HxD hexadecimal editor from Maël Hörz was of great help at examining some files. Finally, I made use of some Python scripts to automate some tasks that would have taken too much manual effort otherwise, like comparing all the XML files to find the differences.

  • Code:
    ----- 4.88
    
    Core_OS
    Y lv0
    Y lv1.self (little changes)
    Y lv2_kernel.self (little changes)
    
    dev_flash/bdplayer/
    Y AacsModule.spu.isoself
    N bdp_BDMV.self (only four version numbers)
    N bdp_BDVD.self (only three version numbers)
    
    dev_flash/data/cert/
    Y CA_LIST.cer (many certification authorities added)
    
    dev_flash/ps1emu/
    N ps1_emu.self (only a timestamp and a version number)
    Y ps1_netemu.self (yes, a lot)
    N ps1_newemu.self (only a timestamp and two version numbers)
    
    dev_flash/ps2emu/
    Y ps2_emu.self (timestamps, version number and 0x507AC0:0x507CDF = 352 bytes)
    
    dev_flash/pspemu/
    N psp_emulator.self (only two version numbers)
    N psp_translator.self (only a version number)
    
    dev_flash/pspemu/release
    N PEmuCoreLib.sprx (em, probably a weird version number)
    
    dev_flash/sys/external
    Y libadec.sprx
    Y libadec2.sprx
    Y libadec_internal.sprx
    [email protected] (note below)
    N#libhttp.sprx (only a version number)
    ? liblv2coredump.sprx (two consecutive bytes, 0x00 -> 0xFF and a version number)
    N libmedi.sprx (only version number and timestamp)
    N#libsail.sprx (only a version numbers)
    N#libsail_rec.sprx (only a version number)
    N@libspurs_jq.sprx (note below)
    [email protected] (note below)
    Y libssl.sprx
    [email protected] (note below)
    N libvdec.sprx (only three version numbers)
    
    dev_flash/sys/internal/
    N sys_audio.self (only two version numbers)
    N sys_init_osd.self (only two version numbers)
    
    dev_flash/vsh/module/
    N avc2_text_plugin.sprx (only a version number)
    Y dtcpip_util.sprx (very little changes)
    N explore_category_friend.sprx (only a version number)
    N explore_plugin.sprx (only a version number)
    N explore_plugin_np.sprx (only a version number)
    N friendim_plugin.sprx (only a version number)
    N friendml_plugin.sprx (only a version number)
    N friendtrophy_plugin.sprx (only a version number)
    N hknw_plugin.sprx (only a version number)
    N msmw2.sprx (only two timestamps)
    Y newstore_plugin.sprx
    ? np_oauth.sprx (only two bytes)
    N profile_plugin.sprx (only a version number)
    N@rec_plugin.sprx (note below)
    Y regcam_plugin.sprx
    Y silk_base.sprx
    Y silk_webkit.sprx
    Y silk_wk.sprx (some weird aligned changes)
    Y swagner.self (some shifts and more)
    Y swreset.self (some shifts and more)
    Y sysconf_plugin.sprx (little changes)
    Y vsh.self
    Y x3_mdimp10.sprx (little changes)
    Y x3_mdimp7.sprx (little changes)
    
    dev_flash/vsh/resource/
    Y newstore_plugin.rco (one text string added)
    
    ----- 4.89
    
    dev_flash/vsh/etc/
    ? layout_factor_table_272.txt (looks encrypted)
    Y layout_grid_table_272.txt (five lines followed by two empty inserted at 0x2320)
    Y layout_grid_table_480.txt (seven lines inserted at 0x22F4)
    Y layout_grid_table_720.txt (seven lines inserted at 0x243A)
    Y layout_grid_table_1080.txt (seven lines inserted at 0x2568)
    
    dev_flash/vsh/module/
    Y audioplayer_plugin.sprx (very little changes)
    Y autodownload_plugin.sprx (little changes)
    Y avc_plugin.sprx (little changes)
    Y avc2_text_plugin.sprx
    Y basic_plugins.sprx (weird byte column aligned changes)
    Y bdp_plugin.sprx (relatively little changes)
    Y category_setting_plugin.sprx (little changes)
    Y closedcaption_config_plugin.sprx (little changes)
    Y download_plugin.sprx (very little changes)
    Y edy_plugin.sprx (little changes)
    Y eula_cddb_plugin.sprx (very little changes)
    ? eula_hcopy_plugin.sprx (only two bytes, from 0x46 to 0x3C)
    Y eula_net_plugin.sprx (very little changes)
    Y explore_category_friend.sprx (very little changes)
    Y explore_category_game.sprx
    Y explore_category_music.sprx (relatively little changes)
    Y explore_category_network.sprx
    Y explore_category_photo.sprx (little changes, string shift)
    Y explore_category_psn.sprx
    Y explore_category_sysconf.sprx (very little changes)
    Y explore_category_tv.sprx
    Y explore_category_user.sprx (very little changes)
    Y explore_category_video.sprx
    Y explore_plugin.sprx
    Y explore_plugin_ft.sprx
    Y explore_plugin_game.sprx
    ? explore_plugin_np.sprx (only three bytes, one byte column shift)
    Y friendim_plugin.sprx (little changes)
    Y game_ext_plugin.sprx (very little changes)
    ? gameupdate_plugin.sprx (only one byte)
    Y hknw_plugin.sprx
    ? nas_plugin.sprx (only four bytes)
    Y np_eula_plugin.sprx (little changes)
    ? np_multisignin_plugin.sprx (only one byte)
    Y np_oauth.sprx
    Y np_sns_plugin.sprx (relatively little changes)
    Y np_trophy_ingame.sprx (little changes)
    Y np_trophy_plugin.sprx (little changes)
    Y npsignin_plugin.sprx
    Y osk_plugin.sprx (relatively little changes)
    Y oskfullkeypanel_plugin.sprx (repetitive patterns of changes)
    Y oskpanel_plugin.sprx
    ? photo_network_sharing_plugin.sprx (only two bytes)
    ? photoupload_plugin.sprx (very little changes, various from 0x36 to 0x3D)
    ? playlist_plugin.sprx (only one byte)
    Y premo_game_plugin.sprx (little changes)
    Y premo_plugin.sprx (little changes, same as above)
    Y profile_plugin.sprx (relatively little changes)
    Y ps3_savedata_plugin.sprx
    Y ps3_savedata_plugin_game.sprx
    Y ps3_savedata_plugin_psp.sprx
    ? sacd_plugin.sprx (only one byte)
    ? scenefolder_plugin.sprx (only one byte)
    Y software_update_plugin.sprx (very little changes)
    ? strviewer_plugin.sprx (only two bytes)
    ? upload_util.sprx (only one byte)
    Y videoeditor_plugin.sprx
    Y videoplayer_plugin.sprx (very little changes)
    Y videoplayer_util.sprx
    Y vmc_savedata_plugin.sprx (relatively little changes)
    Y ycon_manual_plugin.sprx (very little changes)
    
    dev_flash/vsh/resource/
    Y*avc2_text_plugin.rco
    Y bdp_disccheck_plugin.rco (one text string changed)
    Y bdp_plugin.rco (one text string changed)
    Y bdp_storage_plugin.rco (one text string changed)
    Y*comboplay_plugin.rco
    Y*download_plugin.rco
    Y*eula_cddb_plugin.rco
    Y*eula_hcopy_plugin.rco
    Y*explore_category_user.rco
    Y*explore_plugin_full.rco (one image changed)
    Y*friendim_plugin.rco
    Y*friendim_plugin_game.rco
    Y*game_ext_plugin.rco
    Y*game_indicator_plugin.rco
    Y*gamedata_plugin.rco
    Y*hknw_plugin.rco
    Y*impose_plugin.rco
    Y*musicbrowser_plugin.rco
    Y*nas_plugin.rco
    Y*np_eula_plugin.rco
    Y*np_multisignin_plugin.rco
    Y*np_sns_plugin.rco
    Y*np_trophy_ingame.rco
    Y*np_trophy_plugin.rco
    Y*npsignin_plugin.rco (one image and two text strings added)
    Y*osk_plugin.rco
    Y*oskfullkeypanel_plugin.rco
    Y*oskpanel_plugin.rco
    Y*photo_network_sharing_plugin.rco
    Y*photoviewer_plugin.rco
    Y*playlist_plugin.rco
    Y*premo_plugin.rco
    Y*profile_plugin.rco
    Y*profile_plugin_mini.rco
    Y*ps3_savedata_plugin.rco
    Y*regcam_plugin.rco (three images added; two text strings changed, six added)
    Y*remotedownload_plugin.rco
    Y*software_update_plugin.rco
    Y*system_plugin.rco
    Y*upload_util.rco
    Y*user_plugin.rco
    Y*videoeditor_plugin.rco
    Y*vmc_savedata_plugin.rco
    
    dev_flash/vsh/resource/explore/xmb/
    Y category_psn.xml (deleted entries referencing "seg_reg_quick", PSN registration?)
    
    # they have similar changes; they could be version numbers
      (from 0x600002 to 0x600009, or from 0x600020 to 0x600090)
    @ they have very similar changes, spreaded throughout the files;
      it is highly probable that they are lots of version numbers
      (from 0x60A52000 to 0x60A59000)
    * they have changed in the layout of some elements
    
      It appears that many vsh modules have this same sequence
      except that some bytes change because they are version numbers.
      Hex: 26 bytes                it changes here __
      38 00 00 00 38 C0 00 04 38 E0 00 08 39 00 00 08 39 20 00 00 7B 7B 00 20 38 A5

    Note: Now I compared OFW version 4.88 as an intermediate comparison between 4.82 and 4.89; i.e. 4.82 against 4.88, and 4.88 against 4.89. As such, I updated the file with new findings, mostly comfirming that many changes were just version numbers; and I repeated some files for the comparison against 4.88 and the one against 4.89, because they really changed on 4.89, while on 4.88 they just had version numbers changed.
  • Code:
    @#! avc2_text_plugin.rco.xml
    @#  comboplay_plugin.rco.xml
    @#  download_plugin.rco.xml
    @#  eula_cddb_plugin.rco.xml
    @#  eula_hcopy_plugin.rco.xml
    @   explore_category_user.rco.xml
    @   explore_plugin_full.rco.xml
    @   friendim_plugin.rco.xml
    @   friendim_plugin_game.rco.xml
    @#  gamedata_plugin.rco.xml
    @#! game_ext_plugin.rco.xml
    @#  game_indicator_plugin.rco.xml
    @#! hknw_plugin.rco.xml
    @#  impose_plugin.rco.xml
    @   musicbrowser_plugin.rco.xml
    @#  nas_plugin.rco.xml
        npsignin_plugin.rco.xml (one qr code image added!)
    @#  np_eula_plugin.rco.xml
    @   np_multisignin_plugin.rco.xml
    @#  np_sns_plugin.rco.xml
    @#  np_trophy_ingame.rco.xml
    @#  np_trophy_plugin.rco.xml
    @#! oskfullkeypanel_plugin.rco.xml
    @#! oskpanel_plugin.rco.xml
    @#! osk_plugin.rco.xml
    @   photoviewer_plugin.rco.xml
    @#  photo_network_sharing_plugin.rco.xml
    @#  playlist_plugin.rco.xml
    @#  premo_plugin.rco.xml
    @#! profile_plugin.rco.xml
    @#! profile_plugin_mini.rco.xml
    @#  ps3_savedata_plugin.rco.xml
        regcam_plugin.rco.xml (three qr code images added!)
    #   remotedownload_plugin.rco.xml
    @#  software_update_plugin.rco.xml
    @#! system_plugin.rco.xml
    @#  upload_util.rco.xml
    @#  user_plugin.rco.xml
    @#  videoeditor_plugin.rco.xml
    @#! vmc_savedata_plugin.rco.xml
    
    @ These files have changed in positions of the layout's elements
      (changed attributes: positionOverrideX and/or positionOverrideY)
    # These files have changed in sizes of the layout's elements
      (changed attributes: sizeOverrideX and/or sizeOverrideY)
    ! These files have changed in something related to text layout
      (changed attributes: textOverrideUnkNN, where NN is some number)
  • Code:
    Changes in image resources
    
    explore_plugin_full.rco (one image changed)
        changed item_tex_online_storage.png (ps plus online storage icon)
    
    npsignin_plugin.rco (one image added)
        added tex_qr_code.png (QR code for PSN device password)
    
    regcam_plugin.rco (three images added)
        added QrCodeCam.png (QR code for PSN account management)
        added QrCodeReg.png (QR code for PSN account creation)
        added QrCodeRegBind.png (QR code for PSN device password, same as above)
    
    Changes in text resources
    
    bdp_disccheck_plugin.rco (one text string changed)
        00_Japanese.xml
        01_English_US.xml
        02_French.xml
        03_Spanish.xml
        04_German.xml
        05_Italian.xml
        06_Dutch.xml
        07_Portuguese_PT.xml
        08_Russian.xml
        09_Korean.xml
        10_Chinese_T.xml
        11_Chinese_S.xml
        12_Finnish.xml
        13_Swedish.xml
        14_Danish.xml
        15_Norwegian.xml
        16_Polish.xml
        17_Portuguese_BR.xml
        18_English_GB.xml
        19_Turkish.xml
     
        changed msg_error_bd_prohibit_sysupdate
            This appears when the PS3 doesn't have the encription key to
            play a Blue-ray Disc, usually prompting to update the firmware.
            It doesn't say that anymore.
    
    bdp_plugin.rco (one text string changed)
        00_Japanese.xml
        01_English_US.xml
        02_French.xml
        03_Spanish.xml
        04_German.xml
        05_Italian.xml
        06_Dutch.xml
        07_Portuguese_PT.xml
        08_Russian.xml
        09_Korean.xml
        10_Chinese_T.xml
        11_Chinese_S.xml
        12_Finnish.xml
        13_Swedish.xml
        14_Danish.xml
        15_Norwegian.xml
        16_Polish.xml
        17_Portuguese_BR.xml
        18_English_GB.xml
        19_Turkish.xml
     
        changed msg_error_bd_prohibit_sysupdate
            Same as for bdp_disccheck_plugin.rco
    
    bdp_storage_plugin.rco (one text string changed)
        00_Japanese.xml
        01_English_US.xml
        02_French.xml
        03_Spanish.xml
        04_German.xml
        05_Italian.xml
        06_Dutch.xml
        07_Portuguese_PT.xml
        08_Russian.xml
        09_Korean.xml
        10_Chinese_T.xml
        11_Chinese_S.xml
        12_Finnish.xml
        13_Swedish.xml
        14_Danish.xml
        15_Norwegian.xml
        16_Polish.xml
     
        changed msg_error_bd_prohibit_sysupdate
            Same as for bdp_disccheck_plugin.rco
    
    newstore_plugin.rco (one text string added)
        00_Japanese.xml
        01_English_US.xml
        01_English_US_mod.xml
        02_French.xml
        03_Spanish.xml
        04_German.xml
        05_Italian.xml
        06_Dutch.xml
        07_Portuguese_PT.xml
        08_Russian.xml
        09_Korean.xml
        10_Chinese_T.xml
        11_Chinese_S.xml
        12_Finnish.xml
        13_Swedish.xml
        14_Danish.xml
        15_Norwegian.xml
        16_Polish.xml
        17_Portuguese_BR.xml
        18_English_GB.xml
        19_Turkish.xml
    
        added msg_payment_error
            It prompts to complete purchases or add funds
            through a web browser
    
    npsignin_plugin.rco (two text strings added)
        00_Japanese.xml
        01_English_US.xml
        02_French.xml
        03_Spanish.xml
        04_German.xml
        05_Italian.xml
        06_Dutch.xml
        07_Portuguese_PT.xml
        08_Russian.xml
        09_Korean.xml
        10_Chinese_T.xml
        11_Chinese_S.xml
        12_Finnish.xml
        13_Swedish.xml
        14_Danish.xml
        15_Norwegian.xml
        16_Polish.xml
        17_Portuguese_BR.xml
        18_English_GB.xml
        19_Turkish.xml
    
        added msg_sign_in_device_pwd_ps3
            It asks to create a device setup password
        added msg_device_pwd_url
            URL pointing to the page where you can create
            such device password
    
    regcam_plugin.rco (two text strings changed, six added)
        00_Japanese.xml
        01_English_US.xml
        02_French.xml
        03_Spanish.xml
        04_German.xml
        05_Italian.xml
        06_Dutch.xml
        07_Portuguese_PT.xml
        08_Russian.xml
        09_Korean.xml
        10_Chinese_T.xml
        11_Chinese_S.xml
        12_Finnish.xml
        13_Swedish.xml
        14_Danish.xml
        15_Norwegian.xml
        16_Polish.xml
        17_Portuguese_BR.xml
        18_English_GB.xml
        19_Turkish.xml
    
        changed msg_can_create_with_pc_see_site_psn
            An intro message to show an URL.  Deleted references to a PC
        added msg_sign_in_device_pwd_ps3
            Same as for npsignin_plugin.rco
        added msg_device_pwd_url
            Same as for npsignin_plugin.rco
        changed msg_account_create_site_psn
            URL pointing to the page where you can create
            a PSN account
        added msg_url_account_cam
            URL pointing to the page where you can manage
            your PSN account
        added msg_create_accout_qr_url
            It introduces the QR code and URL for account creation
        added msg_manage_account_qr_url
            It introduces the QR code and URL for account management
        added msg_payment_error
            Same as for newstore_plugin.rco
  • Code:
    PS1 Netemu
    4.82 = 4.89
    
    [240:14E6CF] = [240:14E6CF]
    [14E6DX:14F39X] = [14E6DX:14F39X] for X in [0:5] U [8:F]
    [14E6DX:14F39X] != [14E6DX:14F39X] for X in [6:7]
    [14F800:1622AF] = [14F800:1622AF]
      Except:
      [14F81E:14F81F] != [14F81E:14F81F]
      1613DB != 1613DB
      [161D3A:161D3B] != [161D3A:161D3B]
    [1622B0:1622BF] => 1622AF:1622B0
    1622BF:1622C0 <= [1622B0:16234F]
    [1622C0:162B6D] = [162350:162BFD]
    [162B6E:162B6F] != [162BFE:162BFF]
    [162B70:163A4F] = [162C00:163ADF]
    163A4F:163A50 <= [163AE0:163BCF]
    [163A50:163A5F] != [163BD0:163BDF]
    [163A60:167DE7] = [163BE0:167F67]
    [167DE8:167DF5] != [167F68:167F75]
    [167DF6:1991C9] = [167F76:199349]
      Except:
      19918E != 19930E
      1991B6 != 199336
    [1991CA:19FFFF] = Zeroes = [19934A:19FFFF]
    [1A0000:1A1E5F] ? [1A0000:1A1E5F] weird mix of differences and similarities
    [1A1E6X:1A2D5X] = [1A1E6X:1A2D5X] for X in [0:D]
    [1A1E5X:1A1EDX] => 1A1E4X:1A1E5X for X in [E:F]
    [1A1EEX:1A332X] = [1A1E5X:1A329X] for X in [E:F]
    [1A2D60:1A37CF] ? [1A2D60:1A37CF] weird mix of differences and similarities
    [1A37D0:1A39CF] = [1A37D0:1A39CF]
    [1A53E0:1A558F] = [1A54D0:1A567F]
    [1A559X:1ABC3F] = [1A568X:1ABD2F] for X in [0:5] U [8:D]
    [1A559X:1ABC3F] != [1A568X:1ABD2F] for X in [6:7] U [E:F]
    [1A559X:1ABC3F] = "0x3C40" and [1A568X:1ABD2F] = "0x3D30" for X in [6:7] U [E:F]
    [1AE660:2C63F0] = [1AE750:2C64E0]
    
    For the remaining of the files, there are differences and similarities
    here and there.

EDIT: Added information about changes not mentioned at the PS3 developer wiki. Also, added the comparison of the layout configuration files whose interesting changes were reported by @sandungas.

EDIT 2: Added information about the changes in ps1_netemu.self reported by @sandungas. Thank you again. Also, I fixed/updated some comparison data.
 

Attachments

Last edited:
I have to say that @sandungas was right for the most part, the changes to the emulators were just version numbers and timestamps; except for ps1_netemu.self, one PS emulator, which had a lot of changes, and ps2_emu.self, the PS2 emulator, which had a rather small region with lots of changes, not taking into account the timestamp and version changes.
I moved that tables in wiki since the last time we was talking, now are located here:
https://www.psdevwiki.com/ps3/PS1_Emulation#PS1_Emulator_Types_and_Revisions
https://www.psdevwiki.com/ps3/PS2_Emulation#PS2_Emulator_Types_and_Revisions
https://www.psdevwiki.com/ps3/PSP_Emulation#PSP_Emulator_Types_and_Revisions

I updated them to add a green row indicating the exact version where the emulator was abandoned by sony, i added also another red row (in the ps1 emus) indicating when they extracted the BIOS from the emu (note how the size of the emu decreased when they extracted the BIOS, this is not fully documented though)

And i have to say sony didnt changed them in 4.89... the misunderstading in your report about the differences in ps1_netemu.self is because you are comparing 4.82 with 4.89. Sony updated ps1_netemu.self in 4.83 (this is the last version)
In other words... if you compare ps1_netemu.self 4.82 and 4.83 you are going to find the same diffrences you mentioned... but if you compare ps1_netemu.self 4.83 and 4.89 there are no differences (not counting the bytes that differs from the timestamps and firmware versions)

In ps2_emu.self there are not differences either... im not sure why you are having that differences, but when i was checking your report i got an error in scetool.exe (because i forgot to add the keys for 4.89)
Code:
C:\>scetool.exe -d ps2_emu_489.self ps2_emu_489.elf
scetool 0.2.9 <public build> (C) 2011-2012 by naehrwert
NP local license handling (C) 2012 by flatz

[*] Error: Could not find keyset for SELF.
[*] Error: Could not decrypt header.

As said... after adding the keys... and decrypting the file... and comparing it with previous versions... there are no differences (not counting the bytes that differs from the timestamps and firmware versions)
 
Last edited:
For a recap, the full list of the latest emulator revisions is as this:

Abandoned at (last revision)
3.72 - ps2_softemu.self

4.78 - ps2_emu.self
4.78 - ps2_gxemu.self
4.78 - ps2_netemu.self
4.78 - psp_emulator.self
4.78 - psp_translator.self

4.82 - ps1_emu.self
4.82 - ps1_newemu.self

4.83 - ps1_netemu.self

----------------------------------------------------------
In other words... if the goal is to have all the emulators updated to the latest version, is needed to use a firmware 4.83 or newer
Alternativelly... you can take the files from the new firmwares and add them to an older firmware... this process is relativelly safe because when the PS3 boots it doesnt really checks the sanity of the emulator files, so even if you replace them by... a potato... the PS3 is going to boot normally because the potato is ignored in the boot process (so you can use a filemanager or FTP to restore them and/or to try different versions)
 
And i have to say sony didnt changed them in 4.89... the misunderstading in your report about the differences in ps1_netemu.self is because you are comparing 4.82 with 4.89. Sony updated ps1_netemu.self in 4.83 (this is the last version)
In other words... if you compare ps1_netemu.self 4.82 and 4.83 you are going to find the same diffrences you mentioned... but if you compare ps1_netemu.self 4.83 and 4.89 there are no differences (not counting the bytes that differs from the timestamps and firmware versions)

Yes, you are absolutely right. Thank you for the correction.

In ps2_emu.self there are not differences either... im not sure why you are having that differences, but when i was checking your report i got an error in scetool.exe

Ok. I had the same problem with naehrwert's scetool; but I didn't know what to do about it, so I tried evilnat's PUAD, which uses something called unself. The difference for ps2_emu.self starts at offset 0x507AC0 ; it looks like an ELF file embedded into the emulator's main ELF file, perhaps that chunk needs to be decrypted or decompressed too. The said piece of the emulator's contents changed on 4.88 and 4.89 ; it appears to me that it is always changing with every release.

By the way, I want to update my first post to reflect these and other changes I made to my analysis, but the forum's system does not allow me to save the edit, it thinks that I am posting spam (perhaps the ps1_netemu.self comparison is the culprit). Please, could you, @sandungas, or @Coro, or the admin, @STLcardsWS, allow me to update my post?
 
Alternativelly... you can take the files from the new firmwares and add them to an older firmware... this process is relativelly safe because when the PS3 boots it doesnt really checks the sanity of the emulator files, so even if you replace them by... a potato... the PS3 is going to boot normally because the potato is ignored in the boot process (so you can use a filemanager or FTP to restore them and/or to try different versions)

Ok, thanks for the information. That makes me worry less for emulator changes. But, wait a minute...

PS3 Developer wiki said:
Emulators are self files, but not typical one. Emulators are not truly PS3 Game OS elf executables, but Guest OS'es running on LV1 of PS3. This mean that LV2, or more friendly Game OS is unloaded before emulator is loaded. This also mean that while emulators are running we can't call any LV2 function. Also LV1 syscalls are limited to call from all emulators, but can be fully unlocked.

...I read this on the wiki, and now you say that the PS3 does not check the integrity/authenticity of the emulators, that I can change it with anything... so, what forbids me then to put Linux instead of the emulator and let the lv1 hypervisor replace the Game OS kernel with Linux? Can I run Linux on a SuperSlim model this way? :eek new:
 
I could update my post now. Thanks for your help.
you have to make a few posts on a new account before it lets you edit any posts. it for spam protection (otherwise someone could make a good post, get it approved, and them change it to ad/spam).
 
...I read this on the wiki, and now you say that the PS3 does not check the integrity/authenticity of the emulators, that I can change it with anything... so, what forbids me then to put Linux instead of the emulator and let the lv1 hypervisor replace the Game OS kernel with Linux? Can I run Linux on a SuperSlim model this way? :eek new:
I mean only in the standard boot process (that happens between pressing power button up to loading XMB), there are some files of the PS3 firmware not checked in this boot process because is intended to be made as fast as posible

If for some reason you replace the emulator by an invalid file ...and... after loading XMB... you try to boot a game with the emulator then yeah... the PS3 is going to freeze or crash

But as far i remember this is not a software brick because in the next reboot the PS3 is going to ignore the problematic file. It will load XMB and you can restore it by using custom apps (ftp, filemanagers)
Before doing experiments someone else should confirm it though, im not completly sure
 
Back
Top