• Ever wanted an RSS feed of all your favorite gaming news sites? Go check out our new Gaming Headlines feed! Read more about it here.
  • We have made minor adjustments to how the search bar works on ResetEra. You can read about the changes here.
Sony website API about back-compat
  • andshrew

    Member
    Oct 27, 2017
    1,941
    There is definitely something to these claims. As I mentioned in the PT compatibility thread, the new https://library.playstation.com web site has an API which can query the BC compatibility of PS4 games.

    If you put in some of these games they return a state of bootable rather than compatible:

    Star Trek Bridge Crew
    nUQy5EB.png


    Assassins Creed Syndicate
    AiNBsba.png


    For comparison, Division 2 reports as compatible:
    PSTV5BE.png
     
    Rumor: more games with the "unexpected behaviour" or "errors" in the psn store
  • gofreak

    Member
    Oct 26, 2017
    7,740
    I posted this in the Playstation Studios OT, but I guess it makes more sense here now.

    I was curious to see how many other games this might apply to, and if you do a Google site search on the Playstation store for that specific wording around 'unexpected behaviour or errors', you currently get around 100 games:

    Project CARS
    DOOM Eternal
    Zero Escape: The Nonary Games
    Call of Duty®: Black Ops 4
    Call of Duty®: Infinite Warfare
    The Walking Dead: The Complete First Season
    Batman: Return to Arkham
    The Surge
    Assetto Corsa
    Sea of Solitude
    Ghostbuster: The Video Game Remastered
    Tropico 6 El Prez Edition
    Mafia III
    Mafia III: Definitive Edition
    Mafia: Trilogy
    EA SPORTS NHL 19
    Werewolves Within
    Dungeon Rushers
    Need for Speed
    Need for Speed™ Ultimate Bundle
    Darius Cozmic Collection Arcade
    SMITE
    Metal Slug Anthology
    EVE: Valkyrie
    DOOM VFR
    Dead Island Definitive Collection
    Assassin's Creed® Chronicles: Russia
    Assassin's Creed® Syndicate
    Assassin's Creed® Syndicate Gold Edition
    Assassin's Creed Chronicles – Trilogy
    Star Trek™: Bridge Crew
    Roundabout
    Sleeping Dogs
    NBA 2K19
    NBA 2K19 + NBA 2K Playgrounds 2 Bundle
    NBA 2K20
    Valhalla Hills - Definitive Editiuons
    SENRAN KAGURA Peach Beach Splash
    SENRAN KAGURA Burst Re:Newal
    SENRAN KAGURA Burst Re:Newal Shinobi Rivals Edition
    SENRAN KAGURA ESTIVAL VERSUS
    MLB® The Show™ 19
    MLB The Show™ 18
    MLB® The Show™ 17 All Star Edition
    MLB® The Show 16™
    Paddle Vs Paddle
    Lara Croft and the Temple of Osiris
    Dino Frontier
    The Surge
    Disney Classic Games: Aladdin and The Lion King
    Manhunt
    EA Family Bundle
    DYNASTY WARRIORS 8 Empires
    DYNASTY WARRIORS 8: Xtreme Legends Complete Edition
    Realm Royale Founder's Pack
    Realm Royale Bass Drop Bundle
    Realm Royale Cute But Deadly Pack
    GRIP Digital Deluxe
    Super Kids Racing
    Pinball Arcade
    The Escapists + The Escapists 2
    Pure Pool
    Pure Pool Snooker Bundle
    The Pure Bundle
    Pure Hold'em World Poker Championship
    Assassin's Creed® Syndicate
    Tooth and Nail
    Wired Horror Bundle
    Wired Italian Adventure Bundle
    Deliver Us The Moon Digital Deluxe
    Shuttle Commander
    Tennis World Tour
    Tennis World Tour Legends Edition
    Pure Hold'em World Poker Championship
    OKAGE: Shadow King
    Crossout
    Eagle Flight and Werewolves Within PSVR Bundle
    Everybody's Golf
    Feral Fury
    LittleBigPlanet 3
    Saint Seiya Soldiers' Soul
    Battlezone Gold Edition
    WRC 8 FIA World Rally Championship
    WRC 8 Deluxe Edition FIA World Rally Championship
    RIGS Mechanized Combat League
    Super Stardust™ Ultra
    Doki-Doki Universe™
    Dead Nation™ Apocalypse Edition
    APB Reloaded
    KickBeat Special Edition
    Entwined™
    The Warriors
    True Fear: Forsaken Souls - Part 2
    Super Stardust™ Ultra
    Super Stardust™ Ultra VR
    The Golf Club 2019 featuring PGA TOUR
    Ape Escape 2
    Crossout
    Active Soccer 2 DX
    Frisky Business
    Clan N
    Let's Sing 2018
    Until Dawn: Rush of Blood
    Rockstar Games PS2™ Classics Bundle
    How to Survive: Storm Warning Edition
    Close to the Sun
    Operation Warcade
    A Summer with the Shiba Inu
    NOBUNAGA'S AMBITION: Sphere of Influence
    Anomaly 2
    Space Junkies
    GRIP

    Some notable names in there, but without knowing what 'unexpected behaviour' or 'errors' we're talking about, it's hard to know how deeply individual games might be affected. Viewing it optimistically, some of these smell like possibly online service issues (e.g. the older MLB/NBA games). A number of VR games are in there too.
     
    Script to find all games with bottable TAG
  • Jan 26, 2019
    9
    If anyone's interested in trying to find what games are marked as bootable by psn, I can write bad python scripts all day.
    Anomaly 2
    Daylight
    Dead Nation™ -黙示録-
    Dead Nation™: Apocalypse Edition
    Doki-Doki Universe™
    DYNASTY WARRIORS 8: Xtreme Legends Complete Edition
    Entwined™
    Geometry Wars³: Dimensions
    Hardware™: Rivals
    How to Survive: Storm Warning Edition
    KickBeat Special Edition
    Lara Croft and the Temple of Osiris
    LittleBigPlanet™3
    LittleBigPlanet™3 (EU)
    LittleBigPlanet™3 (GB)
    LittleBigPlanet™3 (LATAM)
    LittleBigPlanet™3 (US)
    MLB® 14 The Show™
    MLB® 15 The Show™
    Nobunaga's Ambition Souzou
    Pinball Arcade
    PixelJunk™ Shooter Ultimate
    Project CARS
    Pure Pool™
    RIGS™ Mechanized Combat League
    RISK
    Senran Kagura ESTIVAL VERSUS
    Super Stardust™Ultra
    The Tomorrow Children™
    Velocity®2X
    リトルビッグプラネット™3
    信長の野望・創造
    小小大星球3
    真・三國無双7 Empires
    真・三國無双7 Empires 共闘版
    真・三國無双7 with 猛将伝
    真・三國無雙7 with 猛將傳
    鬼斬(おにぎり)

    Here's the script:
    Python:
    import requests
    import urllib
    if __name__ == '__main__':
        #go here: https://library.playstation.com/recently-purchased?smcid=web-store%3Aen-us%3Aweb-toolbar-my-playstation%3Agame%20library
        #in dev tools should see a get to something like:
        #https://web.np.playstation.com/api/graphql/v1/op?operationName=backwardCompatibility...
        #copy the cookies here:
        cookies = 'cookies go here'
        cookies = cookies.split(';')
        cookies = [c.split('=') for c in cookies]
        cookies  ={c[0]:c[1] for c in cookies}
        session = requests.Session()
        #Copy that https://web.np.playstation.com/api/graphql/v1/op?operationName=backwardCompatibility... link from above
        #and replace the title ids list after 'variables=' with {}, leave the other params (extensions, version, persistedQuery, etc..)
        url = 'https://web.np.playstation.com/api/graphql/v1/op?operationName=backwardCompatibility&variables={}&extensions=%7B%22persistedQuery%22%3A%7B%22version%22%3A1%2C%22sha256Hash%22%3A%22hashgoeshere%22%7D%7D'
        bootables = []
        #I'm doing this in 250 title chunks at a time, only did first 1000 to test.
        for i in range(1, 1000, 250):
            ids = ['CUSA{}'.format(str(j).rjust(5, '0')) for j in range(i, i+250)]
            titleIds = '{{"titleIds":"{}"}}'.format(','.join(ids))
            urlWithIds = url.format(urllib.parse.quote(titleIds))
            r = session.get(urlWithIds, cookies=cookies)
            j = r.json()
            data = j['data']['backwardsCompatibilityRetrieve']['titleBackwardsCompatibilityList']
            for title in data:
                if title['category'] == 'BOOTABLE':
                    bootables.append(title['titleId'])
        #https://ps4database.io can give the title from the title id
        #note that requests are limited to 500/hr
        names = []
        for b in bootables: 
            try:
                r = session.get('https://ps4database.io/dataApi?id={}_00&env=NP&method=meta'.format(b))
                j = r.json()
                name = j['names'][0]['name']
                names.append(name)
            except Exception:
                print('could not get data for {}'.format(b))
                continue
        #There are different title ids per region remove duplicates
        names = set(names)
        names = sorted(names, key=lambda x: x.lower())
        #write to file
        with open('bootableTitles.txt', 'w', encoding='utf-16') as f:
            f.write('\n'.join(names))