PS3 Apollo save tool (development thread)

Discussion in 'Homebrew Development' started by bucanero, Jan 25, 2020.

  1. 2,696
    2,650
    372
    Berion

    Berion Developer

    Joined:
    Feb 3, 2015
    Messages:
    2,696
    Likes Received:
    2,650
    Trophy Points:
    372
    Gender:
    Male
    Location:
    Poland
    @bucanero I think it is also worth to add buttons to mark menu items (for multiply marking) and filters (to filter on list only PS3 saves, PSP saves, PS2 vmc, PSX vmc). Pressing square would mark item, pressing for i.e 3s mark all/unmark all.

    I also added few options to context menu but do not suggest to much, as I forgot that Upload Save will not be existed (?) and Import option should contain ZIP word.

    I'm not sure if in second layer we should have HEXes from those cheats displaying.

    Third layer, for warnings, asks etc.

    Anyway, new previews and new asset pack no.3: ^^
    apollo_saves_1b.jpg apollo_saves_2b.jpg apollo_saves_3.jpg apollo_saves_4.jpg
     

    Attached Files:

    bucanero likes this.
  2. 2,696
    2,650
    372
    Berion

    Berion Developer

    Joined:
    Feb 3, 2015
    Messages:
    2,696
    Likes Received:
    2,650
    Trophy Points:
    372
    Gender:
    Male
    Location:
    Poland
    @bucanero
    Asset Pack no.4
    • some files are replaced
    • added updated preview images
    • added settings and user backups menus
    • rename "list_bg.png" to "list_bg_1.png"
    Still missing Online Database menu because I have no idea how it looks like and what is functionality. ^^" So it looks like that is the only one left to design.
     

    Attached Files:

    bucanero and ayassinsayed like this.
  3. 395
    669
    147
    bucanero

    bucanero Developer

    Joined:
    Jun 29, 2019
    Messages:
    395
    Likes Received:
    669
    Trophy Points:
    147
    Gender:
    Male
    Location:
    Argentina
    Home Page:
    hi @Berion , just a quick update, I've been playing around with the first batch of assets, and I got the basic main menu working :)

    one thing though, the text circling around the Apollo head is really hard to read on the TV (testing on Samsung 49' HD LED), so I was thinking if you could provide me with a logo without text, like in the ICON0.PNG ?

    notes: this shot is from last night, I already improved the positioning of the columns/jar to the bottom as the original design

    screenshot_2020_02_18_01_12_58.png
     
  4. 2,696
    2,650
    372
    Berion

    Berion Developer

    Joined:
    Feb 3, 2015
    Messages:
    2,696
    Likes Received:
    2,650
    Trophy Points:
    372
    Gender:
    Male
    Location:
    Poland
    I can but it is not a good idea (I'll send You it anyway). It think our "problem" is the background; to light for most of the f*ed TV screens (most of the peoples doesn't care about that, and using in a state what they bought; and common practices of producers is overcontrast/overbright the screen...). To be honest, I'm strongly against to tinkering it for low quality screens, even if they are majority of market, but I'll see what I can do. ;) Promise.

    Meanwhile, if someone reading this, I'm welcome any feedback how Your screenshot from app looks like on their TVs/monitors.
    @sandungas ?

    I see few other problems. ^^
    1. Screen is somehow overscreen/downscreen. It shouldn't be any black borders.
    2. bg_water is scaled because I don't see crisp 1px water line.
    3. Shadow under text should be transparent and in opposite direction (because light is from right ^^), and if possible a little blured.
    4. And most thing which concern me and also is a flaw of Apollo and Artemis: all GFX are in 16bit mode, not 24 as it should be. This means colours are drastically reduced (from few millions to ~16000). If You zoomed in enough, You will see i.e on the Pantheon edges created distortions/dithering because of that. This also killing shadow under bitmaps, making it solid or even disappeared (like i.e in logo ;)).
    5. WWW address at the bottom killing a composition. ^^
    6. Another scaling problem are "*_hover.png", they should fit perfectly but on preview I see scaling artefacts which makes "borders" around them.
    In summary, I don't want to be sounds like ranting. Just pointing bugs. I hope this gfx lib (Tiny3D?) is polished enough to make all this possible. Also I think, before we trying makes text more visible, most important here is fix bit depth, because this extremely falsify results.

    unscaled 24bit on left, and scaled 16bit on right:
    apollo_16bit_vs_24bit.png
     
    Last edited: Feb 18, 2020
  5. 395
    669
    147
    bucanero

    bucanero Developer

    Joined:
    Jun 29, 2019
    Messages:
    395
    Likes Received:
    669
    Trophy Points:
    147
    Gender:
    Male
    Location:
    Argentina
    Home Page:
    quick note: yeah the Apollo code is using Tiny3D, (I haven't done any "changes" to the default tiny3d behaviour) so I assume most issues are related to tiny3d way of re-scaling everything to the virtual 848x512 coords. For example in the screenshot you see the black border, but when I see it on my TV, there's no black border at all.
    Once I get all the screens built (as close as possible to the design) then I'll dig into tiny3d code and check for improvements there

    about the 24bit /16bit thing, I had no idea about that... :confused3: I'm wondering if it's a tiny3d thing or it's just my screenshot code that did it (I also compressed the png before uploading so I'm not sure). Anyway, tonight I'll try to take another raw screenshot, and check again about the color stuff.

    well if you have a chance to, send the "no-text" logo version and I'll do some additional test with it. thanks again for your help!
    cheers

    edit: added raw screenshot (saved from the video buffer memory) if you want to check
     

    Attached Files:

    • raw.zip
      File size:
      1 MB
      Views:
      13
    Last edited: Feb 18, 2020
  6. 2,696
    2,650
    372
    Berion

    Berion Developer

    Joined:
    Feb 3, 2015
    Messages:
    2,696
    Likes Received:
    2,650
    Trophy Points:
    372
    Gender:
    Male
    Location:
    Poland
    Attached screen is much better and we can eliminate 16bit conversion. But this news is even worst because border still exist and shadows are still broken, which means not proper alpha channel support (on top of that scaling ;]). I have bad feelings about this...

    BTW: For screenshots, on CFW is the best XMB Screenshot functionality or (if it is not possible for hombrews on HEN) a plugin named VSH Menu. I don't know if it works on HEN but provide lossless (almost...) quality everywhere where XMB option doesn't work or is blocked.
     

    Attached Files:

    bucanero likes this.
  7. 7,077
    6,642
    622
    sandungas

    sandungas Moderator Developer

    Joined:
    Dec 31, 2014
    Messages:
    7,077
    Likes Received:
    6,642
    Trophy Points:
    622
    Location:
    Babylon 20xxE series
    Cheers to that :D
    [​IMG]

    Im a bit lost at which point you are now with the interface design, but i agree with bucanero, the texts inside the circle are hard to read, maybe moving them to the outside of the circle could help, but not sure is it would be a bad approach
    Anoter solution could be to make that texts shorter, this allows you to use a bigger font (or font effects in bold, or add and "stroke" efect all around the characters with photoshop layer effects)

    Another detail i would change is that "celestial ray lights" effect that are located in diagonal all over the screen
    In my oppinion it would be better to reduce his intensity, just for comparison purposes... compare the intensity of them with the intensity of the horizontal bars used with the save names... the horizontal bars are more important but the diagonal rays are more notables


    Edit:
    Instead of reducing the intensity of the light rays you could do a filter "gausian blur"... this way they will become more blurry
    Actually i would try to do both things, first the gausian blur, then reduce his intensity
     
    Last edited: Feb 18, 2020
    bucanero likes this.
  8. 2,696
    2,650
    372
    Berion

    Berion Developer

    Joined:
    Feb 3, 2015
    Messages:
    2,696
    Likes Received:
    2,650
    Trophy Points:
    372
    Gender:
    Male
    Location:
    Poland
    @sandungas Try previews from asset pack 4 because those are not crippled by Tin3D.

    Anyway, if my tests confirm those problems. I see two possible solutions: making bg more dim and/or less glowy on upper part, and/or as You said, less visible rays.
     
    bucanero likes this.
  9. 395
    669
    147
    bucanero

    bucanero Developer

    Joined:
    Jun 29, 2019
    Messages:
    395
    Likes Received:
    669
    Trophy Points:
    147
    Gender:
    Male
    Location:
    Argentina
    Home Page:
    tiny3d has a lot of Alpha channel flags but I honestly don't have proper knowledge on how to use them (I'm just using whatever flags Dnawrkshp used with Artemis). For example, this is the current code:
    Code:
            // Enable alpha Test
            tiny3d_AlphaTest(1, 0x0, TINY3D_ALPHA_FUNC_GEQUAL);
    
            // Enable alpha blending.
            tiny3d_BlendFunc(1, TINY3D_BLEND_FUNC_SRC_RGB_SRC_ALPHA | TINY3D_BLEND_FUNC_SRC_ALPHA_SRC_ALPHA,
                TINY3D_BLEND_FUNC_SRC_ALPHA_ONE_MINUS_SRC_ALPHA | TINY3D_BLEND_FUNC_SRC_RGB_ONE_MINUS_SRC_ALPHA,
                TINY3D_BLEND_RGB_FUNC_ADD | TINY3D_BLEND_ALPHA_FUNC_ADD);
    
    there might be a different setting or combination that improves the alpha blending, but again, I lack the graphic and Tiny3d knowledge to "connect the dots".

    The XMB screenshot function is available on HEN and it works fine for games, but it never worked (PS3 crashes) when I tried with my homebrews, no idea why. :confused3: (that's the reason I used my own code to get the raw data from the video buffer)

    btw, I tried the "clean logo" (no text) and at least on my TV it looks much better, as I my eyes don't try to focus on the text they can't read.

    @sandungas thanks for your ideas and feedback, :encouragement: I like your suggestion about reducing the "heaven ray lights" intensity/blur so the horizontal bars for the items are more clear to the user.

    @Berion now I'm working on the save list pages, I still have a few issues trying to match the horizontal lines with the text and stuff, but I have a few ideas to try. When I have a chance I'll send additional screenshots.
     
    Berion likes this.
  10. 8,487
    9,577
    797
    DeViL303

    DeViL303 Developer PSX-Place Supporter

    Joined:
    Jan 23, 2016
    Messages:
    8,487
    Likes Received:
    9,577
    Trophy Points:
    797
    Off topic, but its worth noting that this webpage that xps3riments created is great for grabbing screens shots from the PS3. It relies on webMAN Mod, but it does work in lots of places where vsh menu will not work like in settings menus and browser download screens etc. Also it is much more convenient as you can preview the images on the webpage, then just right click and copy and paste.


    Just put your ps3s local IP in here and click the red button
    https://codepen.io/xps3riments/full/qGradv
     
    Berion and bucanero like this.
  11. 2,696
    2,650
    372
    Berion

    Berion Developer

    Joined:
    Feb 3, 2015
    Messages:
    2,696
    Likes Received:
    2,650
    Trophy Points:
    372
    Gender:
    Male
    Location:
    Poland
    @bucanero Trying fit in "rows"/"cells" (40px high) would be hard when Apollo still scalling gfx. And if You find a way to force him not scale, all those positions would require again fixing.

    You could try every flag here and after that making screenshot. ^^ I wonder what 0x0 means.
    tiny3d_AlphaTest(1, 0x0, TINY3D_ALPHA_FUNC_GEQUAL);
     
  12. 395
    669
    147
    bucanero

    bucanero Developer

    Joined:
    Jun 29, 2019
    Messages:
    395
    Likes Received:
    669
    Trophy Points:
    147
    Gender:
    Male
    Location:
    Argentina
    Home Page:
    yes, I spend like a whole day trying to fit the rows and it didn't work :( ... I mean, it shows up, but ended up always a bit off, because of the scaling and the virtual coordinates (so 40px in in the file is like 17.6666666 px in Tiny3d)

    anyways, I kept playing around with the UI files you sent, and I thought about going really "ancient greek" with the design. Since we were playing around with the amphoras, I thought about using the yellow/orange/black (terracota?) colors. (I hope you don't hate me for what I did to your files :sem blush: )
    I'm attaching some mock-ups, I honestly really like the ancient style, if I could add a "greeky" letter font for the titles that would be really funny. :D

    screenshot_2020_02_21_00_00_22.png screenshot_2020_02_21_00_52_17.png

    p.s.: pls don't shoot me for my hacky gfx edit :sfun tomato:
     
    sandungas likes this.
  13. 2,696
    2,650
    372
    Berion

    Berion Developer

    Joined:
    Feb 3, 2015
    Messages:
    2,696
    Likes Received:
    2,650
    Trophy Points:
    372
    Gender:
    Male
    Location:
    Poland
  14. 8,487
    9,577
    797
    DeViL303

    DeViL303 Developer PSX-Place Supporter

    Joined:
    Jan 23, 2016
    Messages:
    8,487
    Likes Received:
    9,577
    Trophy Points:
    797
    Maybe theme support could be added. :)
     
    bucanero likes this.
  15. 2,696
    2,650
    372
    Berion

    Berion Developer

    Joined:
    Feb 3, 2015
    Messages:
    2,696
    Likes Received:
    2,650
    Trophy Points:
    372
    Gender:
    Male
    Location:
    Poland
    In current state with probably unfixable look (because broken by design Tiny3D lib) I lost any hope. Scaling is unacceptable killing blow to the artist soul. I have hope after @Zar commentary about predefined xy for bitmaps in opposite for this stupid block system, that it is possible to make normal good looking GUI like i.e on PS2 or PSX, or... C64, but it looks like it still somehow transition screen. If @bucanero didn't find anything for fix it, it means we must live with it and with whatever theme is applied it will be broke. I must drink something for bitterness of this situation. :D
     
    bucanero likes this.
  16. 395
    669
    147
    bucanero

    bucanero Developer

    Joined:
    Jun 29, 2019
    Messages:
    395
    Likes Received:
    669
    Trophy Points:
    147
    Gender:
    Male
    Location:
    Argentina
    Home Page:
    I'm pretty sure it can be fixed (either by setting up tiny3d properly or by just replacing the lib with something else), but it will surely take time until I can figure it out, as my experience with PS3 gfx code is quite "short".
    (the amount of time I spent this week just to build the first main menu screen taught me that I'll need lots of hours in that department)

    anyways, for now I'll park the UI stuff and get back to the new features I want to add, as I can make many improvements there. I'm already able to parse the Bruteforce Data "ps3patch" files, so next I want to see if I can properly handle the BSD script language and apply those patches.
    Also the licenses and trophy export backup seems to work properly; license stuff is exported to "licenses.zip" , and trophy folders are copied in bulk. No import feature for now, mainly to avoid data corruption issues, and to avoid mistakes by unaware users. If you really want to import stuff back, for now you'll need to use ftp, multiman or another manager to overwrite files.
     
    Berion, DeViL303 and Algol like this.
  17. 395
    669
    147
    bucanero

    bucanero Developer

    Joined:
    Jun 29, 2019
    Messages:
    395
    Likes Received:
    669
    Trophy Points:
    147
    Gender:
    Male
    Location:
    Argentina
    Home Page:
    Some notes about the "Game Genie" patch codes for future reference:

    Code:
    Standard Code types 
    0TXXXXXX 000000YY
    1TXXXXXX 0000YYYY
    2TXXXXXX YYYYYYYY
      XXXXXX = Offset to write to
                   YY = 8-Bit value to write
                 YYYY = 16-Bit value to write
             YYYYYYYY = 32-Bit value to write
     T = Offset Type
         0 = From start of the data
         8 = From found from a search
    ___________________________________________________
    Multi Write/Value
    4TXXXXXX YYYYYYYY
    4NNNWWWW VVVVVVVV
      XXXXXX = Offset to start with
             YYYYYYYY = 8/16/32-Bit value to start with
     NNN = Number of times to repeat
        WWWW = Increase address by (in bytes)
             VVVVVVVV = Increase value by
     T = Bit Size
         0 = 8-Bit from start of the data
         1 = 16-Bit from start of the data
         2 = 32-Bit from start of the data
         8 = 8-Bit from found from a search
         9 = 16-Bit from found from a search
         A = 32-Bit from found from a search
    Copy Bytes
    5TXXXXXX ZZZZZZZZ
    5TYYYYYY 00000000
      XXXXXX = Offset to copy from
      YYYYYY = Offset to copy to
             ZZZZZZZZ = Number of bytes to copy
     T = Bit Size
         0 = From start of the data
         8 = From found from a search
    Search Type
    8ZZZXXXX YYYYYYYY
     ZZZ = Number of times to find data
        XXXX = Size of data to be found
             YYYYYYYY = Raw data to search for
    Last edited by SkillerCMP; 02-18-2013 at 01:14 AM
    
    Code:
    Here is the decryption process for game genie codes so once you decrypt a game save you know what to change. All the known game codes are at game genie's web site.
    
    example code
    28BF4FD5 646951FB
    ^
    negates 32bit
    28BF4FD5 646951FB
    ..^
    offset from pointer
    
    28BF4FD5646951FB
    ....^^^^^
    address
    28BF4FD5 646951FB
    .................^^^^^^
    value to change too
    
    Code Types
    
    0TXXXXXX 000000YY = 8Bit Write
    1TXXXXXX 0000YYYY = 16Bit Write
    2TXXXXXX YYYYYYYY = 32Bit Write
    
    X= Address/Offset
    Y= Value to write
    T=Address/Offset type (0 = Normal / 8 = Offset From Pointer
    
    Multi Write
    4TXXXXXX YYYYYYYY
    4NNNWWWW VVVVVVVV
    
    X= Address/Offset
    Y= Value to write (Starting)
    N=Times to Write
    W=Increase Address By
    V=Increase Value By
    T=Address/Offset type
    Normal/Pointer
    0 / 8 = 8bit
    1 / 9 = 16bit
    2 / A = 32bit
    
    Search Type
    8ZZZXXXX YYYYYYYY
    
    Z= Amount of times to find before Write
    X= Amount of data to Match
    Y= Seach For (note can be xtended for more just continue it like YYYYYYYY YYYYYYYY under it)
    Once u have your Seach type done then place one of the standard code types under it with setting T to the Pointer type
    
    Special Code Types
    Mega Code
    
    6T?????0 YYYY
    AAAAAAAA CCCC
    FFFFFFFF 0011
    22334455 6677
    8899
    
    ?=Don't care
    AA= Break address
    YY= Count in bytes to insert at location 40
    CC= Coprocessor break type (upper half)
    FF= Breakpoint mask (usually FFFFFFFF)
    00= bytes of code in address order
    11
    
     
    Algol and DeViL303 like this.
  18. 395
    669
    147
    bucanero

    bucanero Developer

    Joined:
    Jun 29, 2019
    Messages:
    395
    Likes Received:
    669
    Trophy Points:
    147
    Gender:
    Male
    Location:
    Argentina
    Home Page:
    I implemented all the Game Genie code types, except "type 6" (couldn't find if it's actually used in any game) and "type 9" (9XXXXXXX).

    type 9 are used in a few games like Batman Arkham City but they're tagged as "not working" in Bruteforce Data

    I'm thinking about running some tests and then I might release a new version with "game genie" patch support.
     
    Last edited: Feb 25, 2020
    Algol and Berion like this.
  19. 395
    669
    147
    bucanero

    bucanero Developer

    Joined:
    Jun 29, 2019
    Messages:
    395
    Likes Received:
    669
    Trophy Points:
    147
    Gender:
    Male
    Location:
    Argentina
    Home Page:
    oops, I actually found information about Type 9 codes in aldo's source code. I also found a few code types I missed (type 7, and type A). Type 6 codes are quite weird and I'm still trying to understand them.

    Code:
    '7TXXXXXX YYYYYYYY = Add Write (T: 0=1byte/1=2byte/2=4byte)
    
    'Move pointer to offset in address XXXXXXXXX (CONFIRMED CODE)
    '90000000 XXXXXXXX
    
    'Step Forward Code (CONFIRMED CODE)
    '92000000 XXXXXXXX
    
    'Step Back Code (CONFIRMED CODE)
    '93000000 XXXXXXXX
    
    'Step Back From End of File Code (CONFIRMED CODE)
    '94000000 XXXXXXXX
    
    'Multi-write
    'Axxxxxxx 0000yyyy  (xxxxxxxx = address, yyyy = size)
    'zzzzzzzz zzzzzzzz  <-data to write at address
    
          '--------------------------------
          '6TWX0Y0Z VVVVVVVV <- Code Type 6
          '--------------------------------
          '6 = Type 6: Pointer codes
          'T = Data size of VVVVVVVV: 0:8bit, 1:16bit, 2:32bit, search-> 8:8bit, 9:16bit, A:32bit
          'W = operator:
          '      0 = Read "address" from file
          '      1X = Move pointer from obtained address ?? (X = 0:add, 1:substract, 2:multiply)
          '      2X = Move pointer ?? (X = 0:add, 1:substract, 2:multiply)
          '      4X = Write value: X=0 at read address, X=1 at pointer address
          'Y = flag relative to read add (very tricky to understand)
          'Z = flag relative to current pointer (very tricky to understand)
          'v = Data
    
     
    Algol likes this.
  20. 395
    669
    147
    bucanero

    bucanero Developer

    Joined:
    Jun 29, 2019
    Messages:
    395
    Likes Received:
    669
    Trophy Points:
    147
    Gender:
    Male
    Location:
    Argentina
    Home Page:
    I did a bit of research and got the source code for "offzip" and "packzip" tools (https://aluigi.altervista.org/mytoolz.htm), used by Bruteforce data to unpack some savegames after decryption. I'm quite confident that the source can be ported to PS3 and have the functions available to Apollo.

    But before I jump into that rabbit hole (decrypt -> unzip -> patch -> zip -> encrypt), I'll try to clean up the Gamegenie code, do some tests and then release to see how it works.
    Apollo already has an option to copy/export to USB, so hopefully users will do some backups before applying cheats :D (just in case!)
     
    Algol likes this.

Share This Page