PS3 PKGi PS3 development

With normal mode i get download speed of ~ 1.5MB/s...still slow . After download , the pkg can be installed from Package Manager .
With background mode something strage happens.. it displays dl speed of 7.5MB/s but , after finishing , there's no pkg . After a reboot the pkg shows in the XMB , downloading in the background . After completing , you need to install it . So it's not faster at all .

Actually you're mixing stuff; the ~ 7.5 MB/s that you saw for background download is not the actual download speed: the app is only creating an empty .pkg file so the Download Manager can actually download the file later. (the actual download starts when you reboot)

if you have done any background download with the original PS3 apps, you probably remember that when you click the "background download" button, the PS3 starts to save the complete file on the HDD, and then continues from the Download manager. (that's the same step you saw on PKGi)
 
Last edited:
Is it possible to auto-install the pkg after the background download ? Right now it goes into Package Manager , needs another X to begin installing
 
Is it possible to auto-install the pkg after the background download ? Right now it goes into Package Manager , needs another X to begin installing

that's probably another flag in the internal d0.pdb file, but I don't know which one ... we don't have all the information about those files and flags, but we might find more information in the future. It's a matter of time, trial, error and reversing info from other downloads.
 
that's probably another flag in the internal d0.pdb file, but I don't know which one ... we don't have all the information about those files and flags, but we might find more information in the future. It's a matter of time, trial, error and reversing info from other downloads.
Param seems to be be 0 or anything, but i can't figure out offset in pdb file. I looked at notification handling, there are 2 types of that for game download while downloading finish. msg_download_complete, and msg_downloaded_install_game_pls. First one is used if param is not 0.

Not sure that helps anyhow, maybe tracking those names in rco will give some info. When you know which msg is used, then you at least know that search 0 or not in pdb. I don't know is helpful anyhow, tasks are handled by esse files in firmware, someone with ppc skills should reverse that without some bigger issues. .


Code:
0x38C4                 lwz       r9, 0(r28)
0x38C8                 lwz       r0, 0xB8(r9)
0x38CC                 extrdi    r9, r0, 4,36    # r9 = music, video, game dl type
0x38D0                 cmpwi     cr7, r9, 1      # 1
0x38D4                 beq       cr7, loc_3910   # msg_download_complete //music
0x38D8                 cmplwi    cr7, r9, 1      # logical imm (1)
0x38DC                 blt       cr7, loc_38F4   # msg_download_complete //video
0x38E0                 cmpwi     cr7, r9, 2      # 2
0x38E4                 beq       cr7, loc_392C   # msg_downloaded_install_video_pls
0x38E8                 cmpwi     cr7, r9, 3      # 3
0x38EC                 bne       cr7, loc_3B7C   # end function
0x38F0                 b         loc_396C        # msg_downloaded_install_game_pls
 # ---------------------------------------------------------------------------
0x396C
0x396C loc_396C:                               # XREF: 0x3700+1F0↑j
0x396C                 rlwinm    r0, r0, 0,10,10
0x3970                 lis       r11, aMsgGame@ha
0x3974                 cmpwi     cr7, r0, 0
0x3978                 bne       cr7, loc_3994   # msg_download_complete //game
0x397C                 lis       r9, aMsgDownloadedI_0@ha
0x3980                 addi      r0, r11, aMsgGame@l # "msg_game"
0x3984                 addi      r9, r9, aMsgDownloadedI_0@l # "msg_downloaded_install_game_pls"
0x3988                 mr        r27, r0
0x398C                 mr        r3, r9
0x3990                 b         loc_39A8
 # ---------------------------------------------------------------------------
0x3994
0x3994 loc_3994:                               # XREF: 0x3700+278↑j
0x3994                 lis       r9, aMsgDownloadCom@ha
0x3998                 addi      r0, r11, aMsgGame@l # "msg_game"
0x399C                 addi      r9, r9, aMsgDownloadCom@l # "msg_download_complete"
0x39A0                 mr        r27, r0
0x39A4                 mr        r3, r9
 
Code:
0x38C4                 lwz       r9, 0(r28)
0x38C8                 lwz       r0, 0xB8(r9)
0x38CC                 extrdi    r9, r0, 4,36    # r9 = music, video, game dl type
0x38D0                 cmpwi     cr7, r9, 1      # 1
0x38D4                 beq       cr7, loc_3910   # msg_download_complete //music
0x38D8                 cmplwi    cr7, r9, 1      # logical imm (1)
0x38DC                 blt       cr7, loc_38F4   # msg_download_complete //video
0x38E0                 cmpwi     cr7, r9, 2      # 2
0x38E4                 beq       cr7, loc_392C   # msg_downloaded_install_video_pls
0x38E8                 cmpwi     cr7, r9, 3      # 3
0x38EC                 bne       cr7, loc_3B7C   # end function
0x38F0                 b         loc_396C        # msg_downloaded_install_game_pls
 # ---------------------------------------------------------------------------
0x396C
0x396C loc_396C:                               # XREF: 0x3700+1F0↑j
0x396C                 rlwinm    r0, r0, 0,10,10
0x3970                 lis       r11, aMsgGame@ha
0x3974                 cmpwi     cr7, r0, 0
0x3978                 bne       cr7, loc_3994   # msg_download_complete //game
0x397C                 lis       r9, aMsgDownloadedI_0@ha
0x3980                 addi      r0, r11, aMsgGame@l # "msg_game"
0x3984                 addi      r9, r9, aMsgDownloadedI_0@l # "msg_downloaded_install_game_pls"
0x3988                 mr        r27, r0
0x398C                 mr        r3, r9
0x3990                 b         loc_39A8
 # ---------------------------------------------------------------------------
0x3994
0x3994 loc_3994:                               # XREF: 0x3700+278↑j
0x3994                 lis       r9, aMsgDownloadCom@ha
0x3998                 addi      r0, r11, aMsgGame@l # "msg_game"
0x399C                 addi      r9, r9, aMsgDownloadCom@l # "msg_download_complete"
0x39A0                 mr        r27, r0
0x39A4                 mr        r3, r9

thanks for sharing @kozarovv ! I had no idea about this info, I think it's really useful to understand the .pdb files better

my assembler knowledge is quite rusty and I'm mostly guessing, but perhaps the code is checking for flag 0xB8 ?
if it's equal 1, then it's music
if equal 2, then video -> call "msg_downloaded_install_video_pls"
if equal 3, then game -> call "msg_downloaded_install_game_pls"
for any other value, go to end

(in a sense, it would match the flag 0x6B values for the task subtype)

I'll try to craft a new file with this flag and see what happens! :)
 
@bucanero can confirm that the official TSVs are now supported, using db_format.txt, in version 1.05. Congratulations on the work on this app!

thanks, I'm glad to know the generic dbformat is working properly :)

btw, if you add a line to the config.txt file, you can define a remote URL for your database and refresh it whenever you want from the App.
Config line should be:
Code:
url http://www.myweb.com/dir/mylist.file
 
build failed~ how to fix
commands.c:(.opd+0xa8): multiple definition of `internal_commandBufferPutCmd8'
/t/msys64/usr/local/ps3dev/portlibs/ppu/lib/libtiny3d.a(tiny3d.o):tiny3d.c:(.opd
+0x168): first defined here
/t/msys64/usr/local/ps3dev/portlibs/ppu/lib/libtiny3d.a(commands.o): In function
`.internal_commandBufferPutCmd8':
commands.c:(.text.internal_commandBufferPutCmd8+0x0): multiple definition of `.i
nternal_commandBufferPutCmd8'
/t/msys64/usr/local/ps3dev/portlibs/ppu/lib/libtiny3d.a(tiny3d.o):tiny3d.c:(.tex
t.internal_commandBufferPutCmd8+0x0): first defined here
/t/msys64/usr/local/ps3dev/portlibs/ppu/lib/libtiny3d.a(commands.o): In function
`.rsxtiny_MakeCmdSpace':
commands.c:(.text.rsxtiny_MakeCmdSpace+0x50): undefined reference to `.tiny_rsxC
ontextCallback'
commands.c:(.text.rsxtiny_MakeCmdSpace+0xe4): undefined reference to `.tiny_rsxC
ontextCallback'
/t/msys64/usr/local/ps3dev/portlibs/ppu/lib/libtiny3d.a(commands.o): In function
`.rsxtiny_SetReferenceCommand':
commands.c:(.text.rsxtiny_SetReferenceCommand+0x58): undefined reference to `.ti
ny_rsxContextCallback'
commands.c:(.text.rsxtiny_SetReferenceCommand+0x108): undefined reference to `.t
iny_rsxContextCallback'
/t/msys64/usr/local/ps3dev/portlibs/ppu/lib/libtiny3d.a(commands.o): In function
`.rsxtiny_SetWriteBackendLabel':
commands.c:(.text.rsxtiny_SetWriteBackendLabel+0x60): undefined reference to `.t
iny_rsxContextCallback'
/t/msys64/usr/local/ps3dev/portlibs/ppu/lib/libtiny3d.a(commands.o):commands.c:(
.text.rsxtiny_SetWriteBackendLabel+0x148): more undefined references to `.tiny_r
sxContextCallback' follow
collect2: error: ld returned 1 exit status
 
build failed~ how to fix
commands.c:(.opd+0xa8): multiple definition of `internal_commandBufferPutCmd8'
/t/msys64/usr/local/ps3dev/portlibs/ppu/lib/libtiny3d.a(tiny3d.o):tiny3d.c:(.opd
+0x168): first defined here
/t/msys64/usr/local/ps3dev/portlibs/ppu/lib/libtiny3d.a(commands.o): In function
`.internal_commandBufferPutCmd8':
commands.c:(.text.internal_commandBufferPutCmd8+0x0): multiple definition of `.i
nternal_commandBufferPutCmd8'
/t/msys64/usr/local/ps3dev/portlibs/ppu/lib/libtiny3d.a(tiny3d.o):tiny3d.c:(.tex
t.internal_commandBufferPutCmd8+0x0): first defined here
/t/msys64/usr/local/ps3dev/portlibs/ppu/lib/libtiny3d.a(commands.o): In function
`.rsxtiny_MakeCmdSpace':
commands.c:(.text.rsxtiny_MakeCmdSpace+0x50): undefined reference to `.tiny_rsxC
ontextCallback'
commands.c:(.text.rsxtiny_MakeCmdSpace+0xe4): undefined reference to `.tiny_rsxC
ontextCallback'
/t/msys64/usr/local/ps3dev/portlibs/ppu/lib/libtiny3d.a(commands.o): In function
`.rsxtiny_SetReferenceCommand':
commands.c:(.text.rsxtiny_SetReferenceCommand+0x58): undefined reference to `.ti
ny_rsxContextCallback'
commands.c:(.text.rsxtiny_SetReferenceCommand+0x108): undefined reference to `.t
iny_rsxContextCallback'
/t/msys64/usr/local/ps3dev/portlibs/ppu/lib/libtiny3d.a(commands.o): In function
`.rsxtiny_SetWriteBackendLabel':
commands.c:(.text.rsxtiny_SetWriteBackendLabel+0x60): undefined reference to `.t
iny_rsxContextCallback'
/t/msys64/usr/local/ps3dev/portlibs/ppu/lib/libtiny3d.a(commands.o):commands.c:(
.text.rsxtiny_SetWriteBackendLabel+0x148): more undefined references to `.tiny_r
sxContextCallback' follow
collect2: error: ld returned 1 exit status
i remember how i "fixed" that lol. i installed the library, then removed the .a file, kept the headers, and THEN i added the source files from the library to the main code. i know, shitty coding, but that's the only thing that made the code work on windows.
 
another thing that bothers me with pkgi is the lack of a "clean exit" button besides the ps button (this would prove useful for dualshock 4 users)
what do you think @bucanero ?
also, what about an option of downloading the latest release pkg when it's available? i noticed that 1.0.0 does tell you that the latest 1.0.5 is available, however, without an option of downloading from the console...
 
another thing that bothers me with pkgi is the lack of a "clean exit" button besides the ps button (this would prove useful for dualshock 4 users)
what do you think @bucanero ?
also, what about an option of downloading the latest release pkg when it's available? i noticed that 1.0.0 does tell you that the latest 1.0.5 is available, however, without an option of downloading from the console...

actually the app has an "exit" button, but I forgot to mention it in the documentation :biggrin2: it should work if you press (START).

about the auto-update, yes, I was thinking about adding that to the next release. It should be easily added as a background task queue, so next time you boot your PS3 you'll have the latest version ready to be installed. :D
 
the upcoming version is looking nice :cool2:

screenshot_2019_12_17_02_38_27.png
 
I've just released PKGi PS3 v1.0.8

With improved UI, an additional "details" screen, improved update version check, and faster .pkg file creation in background mode using async IO.
 
Last edited:
Back
Top