Skip to content

Instantly share code, notes, and snippets.

<#!
.SYNOPSIS
Decrypts original level files for the DOS PC game Bolo by Dongleware.
.DESCRIPTION
Writes each decrypted level beside the input as <name>.decrypted.txt.
By default, processes LEVEL* files with no extension in this script's folder.
Decoded bytes are interpreted as DOS code page 850 text and written as UTF-8 without BOM.
DISCLAIMER: This script is an unofficial community utility and is not provided, endorsed, or supported by Dongleware.
<#!
.SYNOPSIS
Patches a SCORE.BO file for the DOS PC game Bolo by Dongleware to unlock training mode.
.DESCRIPTION
Updates one SCORE.BO record with a caller-supplied name and score, then recomputes the 16-bit checksum expected by the DOS executable.
To unlock training mode, set the score to >= 50000.
DISCLAIMER: This script is an unofficial community utility and is not provided, endorsed, or supported by Dongleware.
It is provided for educational purposes only.
@zett42
zett42 / BuildShowArgsExe.ps1
Created April 16, 2025 10:32
Simple PowerShell script to build a C# console application that prints all arguments
# Builds a C# console application that prints all arguments (requires Windows PowerShell 5.1)
Add-Type -OutputType ConsoleApplication -OutputAssembly ShowArgs.exe -TypeDefinition @'
using System;
namespace MyApp
{
class Program
{
static int Main( string[] args )
@zett42
zett42 / ConsoleControlHandlerDemo.ps1
Last active March 19, 2025 12:24
PowerShell Console Control Handler Demo (using script block)
$ErrorActionPreference = 'Stop'
# Compile the cmdlet and import it as a module
Add-Type -TypeDefinition (Get-Content $PSScriptRoot\PSConsoleCtrlHandler.cs -Raw) -PassThru | Import-Module -Assembly { $_.Assembly }
# Add the handler
Add-ConsoleCtrlHandler {
param( [ConsoleCtrlEvent] $ctrlType )
$logPath = (New-Item $env:temp\_MyPS\console.log -Force).Fullname
@zett42
zett42 / PowerShellConsoleCtrlHandlerDemo.ps1
Created March 18, 2025 18:54
PowerShell Console Control Handler Demo (SetConsoleCtrlHandler)
Add-Type -TypeDefinition @'
using System;
using System.IO;
using System.Runtime.InteropServices;
public class ConsoleHelper {
[DllImport("Kernel32")]
private static extern bool SetConsoleCtrlHandler(HandlerRoutine handler, bool add);
private delegate bool HandlerRoutine(int ctrlType);
@zett42
zett42 / Bundle Snippet.wxs
Last active October 10, 2024 10:19
Customize a Wix v5 theme with automatic localization
<BootstrapperApplication>
<bal:WixStandardBootstrapperApplication
Theme="rtfLargeLicense"
ThemeFile="Theme.xml"
LicenseFile="1033\License.rtf"
LocalizationFile="1033\thm.wxl"
LogoFile="logo.png"
ShowVersion="yes"
/>
@zett42
zett42 / FalloutHackerMinigame.ps1
Last active July 16, 2023 08:54
Guess the password - minigame inspired by Fallout
<#
.SYNOPSIS
A PowerShell game inspired by the Fallout hacking minigame.
.DESCRIPTION
This is a PowerShell game inspired by the Fallout hacking minigame.
The game is played by guessing the password of a computer terminal.
The player has a limited number of attempts to guess the password.
After each guess, the game will display the number of correct letters.
The player can use this information to narrow down the list of possible passwords.
The game has multiple difficulty levels. The higher the level, the longer the passwords to guess become.
@zett42
zett42 / WatchWindowOpened.ps1
Last active June 19, 2023 16:08
Listen to WindowOpenedEvent using UI automation in PowerShell with inline C#
# Windows PowerShell (5.1) script
# Watch top-level window creation and log window name, process ID and process name.
Add-Type -ReferencedAssemblies UIAutomationClient, UIAutomationTypes -TypeDef @'
using System;
using System.Windows.Automation;
public class WindowWatcher
{
public static void Watch()
@zett42
zett42 / Set-ChaptersToVideo.ps1
Last active March 10, 2023 11:59
Add chapters to a video file
<#
.SYNOPSIS
Sets chapters to a video file using a timestamp file.
.DESCRIPTION
This function sets chapters to a video file using a timestamp file. The output file will have the same format and codec as the input file,
but with the chapters metadata added.
.PARAMETER Path
The path of the input video file.
@zett42
zett42 / Split-AudioTracks.ps1
Last active March 8, 2023 18:17
Split an audio or video file into multiple audio files based on a time stamp file
<#
.SYNOPSIS
Split an audio or video file into multiple audio files based on a time stamp file.
.DESCRIPTION
This script uses FFmpeg to extract parts of an audio or video file into separate audio files based on the time stamps in the time stamp file.
The function also supports creating a playlist (m3u8) for the extracted audio tracks.
.PARAMETER Path
The path to the input audio or video file.