-
Posts
801 -
Joined
-
Last visited
-
Days Won
9
Content Type
Profiles
Forums
Articles
Downloads
Gallery
Blogs
Posts posted by Klopjero
-
-
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 ?
-
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" } -
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.
-
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.
-
1
-
1
-
-
when you go to you game and open the edit window. what does it say under launching?
-
Why is this pinnen?
-
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:
- 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?
- 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.
-
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.
-
1
-
-
Dude ,I came around testing it.
it work awesome
sad that through the years the DB hasnt been enriched with images
it works very wel 
-
1
-
-
On 11/13/2025 at 4:19 AM, Drodrik said:
Yes, I know
sadly @Nielk1 hasn't been seen since 2019.
-
this man has found some nice stimulants. keep going mate
-
-
will this contribute to an eventual native linux version of LB ?
-
1
-
-
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.
-
returning to WMP made BB stable again. if devs have suggestions on how to improve ffmpeg or how to better provide testing info please prove them
-
Manualy edited the bigboxsettings file and changed to video engine back to WMP, to see if this improves the situation
-
going to options now also crashes BB
-
Hi,
when BB is loading the screensaver big box crashes, no error messages on screen just hard crash.Changed to FFMPEG from WMP, will check if changing bck makes a difference
-
It doesn't matter if I go to platform view/ platform category view, or open up a platform from the game discovery page. it hangs BB.
-
It's weird but BB hangs when I load the platformview with the new Aetherial Theme, anyone else have this ?
-
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.-
1
-
-
that custom lightgun cabs look familiar
@gspawn
-
1
-
-
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
-
I thought I found the issue... I had declared the TP\userprofiles folder as the games folder for the system. but that wasn't it either

TeknoParrot
in Collections and Builds
Posted
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