Skip to content

Instantly share code, notes, and snippets.


James jaames

View GitHub Profile
jaames / dailylogochallenge.txt
Created Jun 17, 2019
Logo challenge list from -- for people like me who dislike inbox clutter
View dailylogochallenge.txt
1. Rocketship Logo (Aerolite, Axis, Comet, Quasar)
2. Hot Air Balloon (Lift, Crown (the very top part of the balloon), Whoosh)
3. Panda Logo (Panda Global, Bamboo, Endangered Panda Conservation)
4. Single Letter Logo
5. Driverless Car Logo (Autonome, Vrooom, Onward)
6. Coffee Shop (Dylan's Coffee, The Roasted Bean, Tazza)
7. Fashion Brand Wordmark (OAKAO, Deities, Adams & Abigail)
8. Ski Mountain Logo (Brass Peak, Mount Blanco, Traverse, Snowdrop)
9. Streaming Music Startup (Beat, Pitch, Bass)
10. Flame Logo (Sizzle, Liight, Flint & Flame)


  1. Enter the Nintendo WFC Settings menu, which can be found in any WFC-enabled game.

  2. Select "Nintendo Wi-Fi Connection Settings".

  3. Set up a new connection if you haven't already done so, then select the connection slot you wish to use.

  4. Scroll down and set "Auto-obtain DNS" to "No", then set Primary DNS to and Secondary DNS to Select "OK" to confirm.


PathKit's docs are out of date, and changes in Webpack 5 mean that their installation instructions don't work

Install the following from NPM:

  • pathkit-wasm
  • webpack 5
  • copy-webpack-plugin
  • node-polyfill-webpack-plugin

Make sure your Webpack config has the following:

jaames / gbg_palette.txt
Created Jun 28, 2021
Game Builder Garage texture palette as hex rgba
View gbg_palette.txt
Game Builder Garage texture palette as hex rgba
// transparent
// grays
jaames /
Last active Jun 26, 2021
Colors Live Windows beta guide

Installing the Colors Live beta

The Windows beta is distributed through the Discord game library. To access it, head to the Colors Live Discord server, at the top of the channel list you should see a tag called Colors Live (Switch), click there, then click the Add to library button in the panel to the right.

Once the app has been added, go to your library by clicking the In Library header on the same panel. You should be able to install and launch the app from there!

Installing updates

To install an update, go to your Discord library and select the Colors Live beta. You may need to manually start the update install process by clicking the play button towards the top-right of the library page. One it has downloaded, you will be able to launch the app as normal.

jaames / Crc32.ts
Last active Jun 14, 2021
Tiny Typescript implementation of CRC32
View Crc32.ts
const POLYNOMIAL = -306674912;
let crc32_table: Int32Array = undefined;
export function Crc32(bytes: Uint8Array, crc=0xFFFFFFFF) {
if (crc32_table === undefined)
for (let i = 0; i < bytes.length; ++i)
crc = crc32_table[(crc ^ bytes[i]) & 0xff] ^ (crc >>> 8);
return (crc ^ -1) >>> 0;
jaames / compileTemplate.ts
Created Jun 7, 2021
Tiny Typescript string template compiler
View compileTemplate.ts
// makes use of tagged template literals
const compileTemplate = (strings: TemplateStringsArray, ...expr: string[]) => {
return (replacements: Record<string, any>) => {
// convert ${'whatever'} instances to array of values
const values = => replacements[key] ?? key);
// rebuild string with replaced values
return strings.reduce((result, part, i) => result + part + (values[i] ?? ''), '');
jaames /
Created Apr 2, 2019
unfinished nintendo particle format (.ptcl) parser
# .ptcl parser for miitomo
# heavily unfinished, i couldn't work out how to find subtexture sizes
import struct
import numpy as np
from PIL import Image
class PTCLSection:
def __init__(self, magic=b'', offset=0, size=0, data_offset=0):
self.magic = magic
jaames /
Created Jul 24, 2018
Decrypt Mii QR code data from 3DS / Wii U / Miitomo
# Decrypt Mii QR codes from 3DS / Wii U / Miitomo
# Usage: python3 <input file> <output file>
# QR docs:
from Crypto.Cipher import AES
from sys import argv
key = bytes([0x59, 0xFC, 0x81, 0x7E, 0x64, 0x46, 0xEA, 0x61, 0x90, 0x34, 0x7B, 0x20, 0xE9, 0xBD, 0xCE, 0x52])
with open(argv[1], "rb") as infile, open(argv[2], "wb") as outfile:
jaames / Sha256.ts
Created May 11, 2021
Tiny Typescript implementation of Sha256
View Sha256.ts
* // hash content
* // content must be an uint8 typed array
* const hash = new Sha256();
* hash.update(content)
* // get digest as uint8 typed array
* const digest = hash.digest();
* // or get digest as hex string
* const hex = hash.hexDigest();