Jump to content
LaunchBox Community Forums

Klopjero

Members
  • Posts

    801
  • Joined

  • Last visited

  • Days Won

    9

Posts posted by Klopjero

  1. image.thumb.png.6d16b1dd47fb2f185f88bc97bee9347f.png

    21 hours ago, andyco47 said:

    Ret

    tryed that dont work for me just puts up the ui and dont play the game.

    Then you are doing something wrong. this is the way. 

    Use teknoparrotUI.exe 
    Launch with --profile:flag with %romfile%.xml variable
    be sure the games are setup and the "roms" you added are kept in the teknoparrot/Userprofiles folder

  2. On 2/5/2026 at 8:17 PM, faeran said:

    When I mentioned Arcade platform. It's less about lumping everything into an Arcade platform, and more about utilizing "Scrape As: Arcade" and the logic built behind that, which then attempted to answer your first question.

    As far as Media Packs are concerned, that's just us thinking ahead so we are prepared with some default custom platform names for users.

    why are some arcade systems scraped separately ? 

  3. is this of any help? 
    you can copy paste this in powershell_ise and it will spit out Platform playlists based on the Teknoparrot metadata 
     

    # TeknoParrot Finder Script
    # Author: klopjero
    # WARNING: SCRIPT ASSUMES YOU HAVE TEKNOPARROT as A PLATFORM IN LAUNCHBOX AND USES IT TO BUILD PLATFORM PLAYLISTS 
    # WARNING WARNING: BE SURE TO CHANGE $PLATFORMPATH, $METADATAPATH and $PLAYLISTOUTPUTPATH to your situation.
    # Updated: Extended to export LaunchBox Playlist XMLs by platform (from JSON metadata)
    
    # ------------------
    # Load TeknoParrot Platform XML
    # ------------------
    $platformPath = "F:/LaunchBox/Data/Platforms/Teknoparrot.xml" #CHANGE THIS TO PATH OF YOUR TEKNOPARROT LAUNCHBOX XML
    [xml]$platformXml = Get-Content $platformPath
    $gameIndex = @{}
    foreach ($game in $platformXml.LaunchBox.Game) {
        $gameIndex[$game.Title] = $game
    }
    
    # ------------------
    # Process each game and read associated JSON metadata
    # ------------------
    $metadataPath = "F:\Emulators\TP\Metadata" #CHANGE THIS TO PATH OF YOUR TEKNOPARROT METADATA FOLDER
    $groupedGames = @{}
    
    foreach ($game in $gameIndex.Values) {
        $applicationPath = $game.ApplicationPath
        if (-not $applicationPath) { continue }
    
        $profileName = [System.IO.Path]::GetFileNameWithoutExtension($applicationPath)
        $jsonFilePath = Join-Path $metadataPath "$profileName.json"
    
        if (Test-Path $jsonFilePath) {
            try {
                $json = Get-Content $jsonFilePath | ConvertFrom-Json
                $platformName = $json.platform
    
                if (-not $groupedGames.ContainsKey($platformName)) {
                    $groupedGames[$platformName] = @()
                }
                $groupedGames[$platformName] += $game
            }
            catch {
                Write-Warning "Failed to parse JSON: $jsonFilePath"
            }
        }
        else {
            Write-Warning "Missing JSON for: $profileName"
        }
    }
    
    # ------------------
    # Create a LaunchBox Playlist XML for each platform group
    # ------------------
    foreach ($platformName in $groupedGames.Keys) {
        $playlistGames = $groupedGames[$platformName]
        $playlistId = [guid]::NewGuid().ToString()
        $playlistXml = New-Object xml
        $root = $playlistXml.CreateElement("LaunchBox")
        $playlistXml.AppendChild($root) | Out-Null
    
        # Playlist metadata
        $playlist = $playlistXml.CreateElement("Playlist")
        $root.AppendChild($playlist) | Out-Null
        $playlist.AppendChild($playlistXml.CreateElement("PlaylistId")).InnerText = $playlistId
        $playlist.AppendChild($playlistXml.CreateElement("Name")).InnerText = $platformName
        $playlist.AppendChild($playlistXml.CreateElement("NestedName")).InnerText = $platformName
        $playlist.AppendChild($playlistXml.CreateElement("IncludeWithPlatforms")).InnerText = "false"
        $playlist.AppendChild($playlistXml.CreateElement("IsAutogenerated")).InnerText = "false"
    
        # Add games to playlist
        $i = 0
        foreach ($game in $playlistGames) {
            $pg = $playlistXml.CreateElement("PlaylistGame")
            $root.AppendChild($pg) | Out-Null
            $pg.AppendChild($playlistXml.CreateElement("GameId")).InnerText = $game.ID
            $pg.AppendChild($playlistXml.CreateElement("GameTitle")).InnerText = $game.Title
            $pg.AppendChild($playlistXml.CreateElement("GameFileName")).InnerText = [System.IO.Path]::GetFileName($game.ApplicationPath)
            $pg.AppendChild($playlistXml.CreateElement("GamePlatform")).InnerText = "Teknoparrot"
            $pg.AppendChild($playlistXml.CreateElement("ManualOrder")).InnerText = "$i"
            $i++
        }
    
        # Save
        $safeName = ($platformName -replace '[^a-zA-Z0-9_\- ]', '_')
        $playlistOutputPath = "F:\LaunchBox\Data\Playlists\$safeName.xml" #CHANGE THIS TO PATH WHERE YOU WANT TO SAVE THE PLAYLISTS
        $playlistXml.Save($playlistOutputPath)
    
        Write-Host "Playlist '$platformName' created at $playlistOutputPath"
    }
    

     

  4. On 1/28/2026 at 8:51 PM, REI AYANAMI said:

    Hello. In addition to the errors some people have mentioned in the main forum, I'm also experiencing the issue that the background music stops playing after the song finishes. You can change the song, but if you let it finish, it stops working, and simply disabling and re-enabling the background music isn't work.

    I'm also having problems with hybrid themes, like the latest "aetherial" theme. The backgrounds aren't visible, and the videos aren't displayed. They only appear on the game details screen, even with the default theme. Opacity adjustments don't work in any menu.
    I've tested this on three different computers: two with Windows 11 and one with Windows 10, and the problem occurs on all of them. I'll revert to the previous beta version. Sorry if this isn't clear. I don't speak English and I'm using a translator. Thanks.

    I have this same issue. only with this theme. other themes can show fanart and videos. Aetherial does not.

  5. On 12/23/2025 at 1:40 AM, Gygoracdes said:

    Still have to see how best to install it. --> LaunchBox_DoomWorldScraper.zip
    What do you do with it?

    It allows you to get the meta data for the wad from doomworld directly. provided the file name of the archive has not been altered and the wad is actually submitted to doomworld.

    • Like 1
    • Thanks 1
  6. 5 hours ago, PadeMoNiuM Prods said:

    t’s incredibly hard to find Castlevania game themes for the Japanese versions. They’re basically impossible to come across. That’s why I really think you’re being modest here.)😅

    These games come in two categories:

    1. the box art and theme is pretty much the same in japan as it is for the rest of the world. so all the needs is the japanese logo.. super easy right?
    2. Or the regional differences are so big that due to censorship, upped or lowered difficulty that it deservers it's own theme. sometimes it just because the box covers are so vastly different per region that it just looks cool in BB
    5 hours ago, PadeMoNiuM Prods said:

    By the way, I actually made Legacy of Darkness and Bloodstained as well. If you want them, I can post the themes and you can include them, just add a link to them. It could be a nice bit of cooperation between us.

    I know that kind of collaboration isn’t very common in this community, but personally I see things differently. For me, that’s what a community is supposed to be — sharing, but also working together.
    Of course, if you prefer to make your own themes, no problem at all, I totally understand.

    I know, I remember my hyperspin days. but you have to admit that your style is rather unique, you tend to use lots of effects in your themes. while alot of us here are happy with giving box art the HS treatment ;)

     

    5 hours ago, PadeMoNiuM Prods said:

    And just to be clear, this isn’t a ranking or some kind of “best creators” list. It’s simply a centralization of links, something practical so everyone can find the themes more easily.

    I'm all for it, it could do with a pin then.. for the event that this post also vanishes in the vast ocean of forum posts.

    5 hours ago, PadeMoNiuM Prods said:

    Right now, if someone wants to find your Castlevania themes, even I don’t know where to look. You go into Game Media, sure, but in which section?

    there IS a search bar, but this is very convenient. 

  7. 2 hours ago, PadeMoNiuM Prods said:

    because for example there’s @Klopjero who made every single Castlevania theme!

    That's an exaggeration, Still havent done the Castlevania Collections releases, I'm still struggling with the Japanese Legacy of shadow... I still want to to finish the related themes for getsufumaden and the bloodstained themes. be sure to give @Suhrvivor a shout out, his themes are super awesome and an inspriration to me. without those i would have never started on the Castlevania themes. 

    • Game On 1
  8. 47 minutes ago, fredrikpj said:

    @Klopjero also having the same issue, crashed first going into Big Box with latest update, after changing to FFmpeg it always crashes, regardless if I start Big Box or Launchbox. How did you edit the settings?

    you have figured it out but i will reply so if people coming to this thread with the same question know ow to do it. 

    open windows explorer and browse to your Launcbox folder and open the data folder located inside. using your plaintext editor like notepad open bigboxsettings.xml locate the <VideoPlaybackEngine>, and change it to <VideoPlaybackEngine>Windows Media Player</VideoPlaybackEngine>. then save and close the file. 

  9. 9 minutes ago, gspawn said:

    I converted it from png I think, is it yours? I thought Viking's. If yours is, I apologize for the misdirection 

    yea I made that, and no need to apologise, I thought it was great seeing it come by.

    Besides that I really do have to congratulate you with coming up with such a brilliant and effective way to solve the colorfull playlist problem.  

    congratulations!

    placing those mascottes in front of the screen or besides the keyboard or theming the console or PC to fit with that franchise is really elegant.

    • Thanks 1
  10. so what I ended up doing is just import the whole library. close LB. 

    wrote a different powershell that would add a custom field to each game that would contain the Arcade system metadata so I could build play lists that way.

     

    # TeknoParrot add customField to database
    # Author: klop
    # Updated: Extended to export LaunchBox Playlist XMLs by platform (from JSON metadata) and enrich the Platform DB with Arcade Platform info using CustomField blocks
    
    # ------------------
    # Load TeknoParrot Platform XML
    # ------------------
    $platformPath = "[path to]/LaunchBox/Data/Platforms/Teknoparrot.xml"
    [xml]$platformXml = Get-Content $platformPath
    $gameIndex = @{}
    foreach ($game in $platformXml.LaunchBox.Game) {
        $gameIndex[$game.Title] = $game
    }
    
    # Prepare for appending CustomFields after <Game> entries
    $launchBoxNode = $platformXml.SelectSingleNode("/LaunchBox")
    
    # ------------------
    # Process each game and read associated JSON metadata
    # ------------------
    $metadataPath = "[path to tekno parrot]\Metadata" # Path to teknoparrot
    $groupedGames = @{}
    
    foreach ($game in $gameIndex.Values) {
        $applicationPath = $game.ApplicationPath
        if (-not $applicationPath) { continue }
    
        $profileName = [System.IO.Path]::GetFileNameWithoutExtension($applicationPath)
        $jsonFilePath = Join-Path $metadataPath "$profileName.json"
    
        if (Test-Path $jsonFilePath) {
            try {
                $json = Get-Content $jsonFilePath | ConvertFrom-Json
                $platformName = $json.platform
    
                # Add custom field as a sibling of <Game> under root
                $customFieldNode = $platformXml.CreateElement("CustomField")
                
                $gameIdNode = $platformXml.CreateElement("GameID")
                $gameIdNode.InnerText = $game.ID
                $customFieldNode.AppendChild($gameIdNode) | Out-Null
    
                $nameNode = $platformXml.CreateElement("Name")
                $nameNode.InnerText = "Arcade Platform"
                $customFieldNode.AppendChild($nameNode) | Out-Null
    
                $valueNode = $platformXml.CreateElement("Value")
                $valueNode.InnerText = $platformName
                $customFieldNode.AppendChild($valueNode) | Out-Null
    
                $launchBoxNode.AppendChild($customFieldNode) | Out-Null
    
                # Group by platform for playlist creation
                if (-not $groupedGames.ContainsKey($platformName)) {
                    $groupedGames[$platformName] = @()
                }
                $groupedGames[$platformName] += $game
            }
            catch {
                Write-Warning "Failed to parse JSON: $jsonFilePath"
            }
        }
        else {
            Write-Warning "Missing JSON for: $profileName"
        }
    }
    
    # ------------------
    # Save updated Platform DB with ArcadePlatform entries
    # ------------------
    $platformXml.Save($platformPath)
    Write-Host "Updated Teknoparrot.xml with Arcade Platform custom fields."
    
    # ------------------
    # Create a LaunchBox Playlist XML for each platform group
    # ------------------
    foreach ($platformName in $groupedGames.Keys) {
        $playlistGames = $groupedGames[$platformName]
        $playlistId = [guid]::NewGuid().ToString()
        $playlistXml = New-Object xml
        $root = $playlistXml.CreateElement("LaunchBox")
        $playlistXml.AppendChild($root) | Out-Null
    
        # Playlist metadata
        $playlist = $playlistXml.CreateElement("Playlist")
        $root.AppendChild($playlist) | Out-Null
        $playlist.AppendChild($playlistXml.CreateElement("PlaylistId")).InnerText = $playlistId
        $playlist.AppendChild($playlistXml.CreateElement("Name")).InnerText = $platformName
        $playlist.AppendChild($playlistXml.CreateElement("NestedName")).InnerText = $platformName
        $playlist.AppendChild($playlistXml.CreateElement("IncludeWithPlatforms")).InnerText = "false"
        $playlist.AppendChild($playlistXml.CreateElement("IsAutogenerated")).InnerText = "false"
    
        # Add games to playlist
        $i = 0
        foreach ($game in $playlistGames) {
            $pg = $playlistXml.CreateElement("PlaylistGame")
            $root.AppendChild($pg) | Out-Null
            $pg.AppendChild($playlistXml.CreateElement("GameId")).InnerText = $game.ID
            $pg.AppendChild($playlistXml.CreateElement("GameTitle")).InnerText = $game.Title
            $pg.AppendChild($playlistXml.CreateElement("GameFileName")).InnerText = [System.IO.Path]::GetFileName($game.ApplicationPath)
            $pg.AppendChild($playlistXml.CreateElement("GamePlatform")).InnerText = "Teknoparrot"
            $pg.AppendChild($playlistXml.CreateElement("ManualOrder")).InnerText = "$i"
            $i++
        }
    
        # Save
        $safeName = ($platformName -replace '[^a-zA-Z0-9_\- ]', '_')
        $playlistOutputPath = "[path to launchbox]/Playlists/$safeName.xml" #it also generates extra playlistst
        $playlistXml.Save($playlistOutputPath)
    
        Write-Host "Playlist '$platformName' created at $playlistOutputPath"
    }

    this is isnt the solution for the helpful unhelpful behavior when your importing Teknoparrot though

×
×
  • Create New...