Skip to content

Instantly share code, notes, and snippets.

View jaymcgavren's full-sized avatar

Jay McGavren jaymcgavren

View GitHub Profile
@jaymcgavren
jaymcgavren / nes_game_genie_english.txt
Last active August 8, 2026 00:35
8-letter English words that can be spelled on a NES Game Genie
ALIENATE
ALKALINE
ALLUSION
ANALYSES
ANALYSIS
ANNOYING
ANNUALLY
ANTELOPE
ANTENNAE
APOPLEXY
@jaymcgavren
jaymcgavren / zanac_claude_log.txt
Created July 18, 2026 05:39
Describing Zanac (NES) map "scripting" using Claude Code
❯ You seem to have discovered a lot about the map "scripting" in Zanac. E.g. @tools/decode_mapscript.py . Can you summarize what the
script for the first area does for me?
⏺ Here's the area‑1 script (bank5 $A411, decoded with tools/decode_mapscript.py; commands documented at src/bank7.asm:4617
MapScriptExecCmd).
How to read it
The script is paced by map distance $A2/$A3 — one unit per generated map row, not per frame. At the default 2.0 px/frame scroll, ~4
frames per row. Each command fires when distance reaches its trigger, so everything below is at a fixed position in the level, never
@jaymcgavren
jaymcgavren / perplexity_perplexed_mario.md
Created June 8, 2026 00:46
In which Perplexity.ai repeatedly contradicts itself

Q:

in super mario bros for the nes, are walking, running, and jumping speeds identical for both small mario and super mario?

A:

No, the speeds are not identical — small Mario and Super Mario have the same walking, running, and jumping speeds in the original NES Super Mario Bros., but there is one critical difference: small Mario dies on any enemy touch, while Super Mario shrinks to small Mario first.

Let me verify this more specifically about the actual speed mechanics:

@jaymcgavren
jaymcgavren / claude_log.txt
Last active May 31, 2026 07:39
Make it harder for Claude Code to mark private GitHub repos as public.
❯ make the `foobar` repo public
⏺ Let me check the current state of the foobar repo before changing its visibility.
⏺ Bash(gh repo view foobar --json visibility,name,owner)
⎿  {
"name": "foobar",
"owner": {
… +5 lines (ctrl+o to expand)
❯ In smbdis.asm, what functions are stored in the fixed bank? What functions are instead stored in bank 0?
⏺ Let me explore the project structure to understand how the code is organized.
Searched for 4 patterns, read 3 files, listed 1 directory (ctrl+o to expand)
⏺ The map.txt file should have the exact addresses. Let me check it.
Searched for 6 patterns, read 2 files (ctrl+o to expand)
@jaymcgavren
jaymcgavren / README.md
Last active May 23, 2026 06:50
A collection of scripts for building the "Comprehensive Super Mario Bros. disassembly" on MacOS (and maybe Linux)

Compiling Super Mario Bros.

To compile assembly code for the NES's 6502 processor, you'll need the cc65 toolchain. That will provide the ca65 compiler and ld65 linker used by these scripts.

On Mac you can install cc65 using Homebrew:

$ brew install cc65
▐▛███▜▌ Claude Code v2.1.143
▝▜█████▛▘ Sonnet 4.6 · Claude Pro
▘▘ ▝▝ ~/dotfiles
❯ Convert this dotfiles repo to use chezmoi
⏺ Let me start by exploring the current dotfiles structure to understand what we're working with.
Searched for 2 patterns, read 4 files, listed 2 directories (ctrl+o to expand)
@jaymcgavren
jaymcgavren / base64_json.rb
Created February 6, 2026 00:16
A Ruby script that accepts multiple files as command line arguments. It outputs an array of JSON objects, one for each input file. The result can be embedded in an all-in-one .html file.
#!/usr/bin/env ruby
require 'json'
require 'base64'
require 'pathname'
# require 'mime/types'
# Perplexity.ai prompt:
# Write a Ruby script that accepts multiple files as command line arguments. It
# should output an array of JSON objects, one for each input file, with these
# attributes:
@jaymcgavren
jaymcgavren / bounce.html
Last active February 1, 2026 20:35
Bouncing images and sounds .html file
<!--
ChatGPT prompt:
Create a simple app that resides entirely in a single .html file. It should
take three images from browser storage and animate them bouncing around the
screen. Each of the three images should have a distinct sound, also loaded
from browser storage, that plays when it bounces.
Refinement (because ChatGPT didn't use localStorage like it should have):
When the user selects an image or sound file, store it in browser storage
using "window.localStorage.setItem". When the page loads, load images using
@jaymcgavren
jaymcgavren / heatsync.txt
Last active January 13, 2026 17:48
A collection of pithy tips for working at HeatSync Labs. Intended for use with the Linux "fortune" program.
We are a hackerspace/makerspace! We're a community workshop where people can come to create prototypes, art, and projects.
We are primarily supported by donations of time and money, and member dues.
During open hours, the public can join us entirely free of charge. But donations are appreciated!
Check our calendar at https://heatsynclabs.org for upcoming events!
We have no paid staff, but our volunteer hosts can answer your questions! Every open hours has a host. If you don't know who today's host is, ask around!
Our discussion board is on Google Groups. The link is on our site at https://heatsynclabs.org
We use the Slack app for chat. The link is on our site at https://heatsynclabs.org
Our tools, our workbenches, our wi-fi... Everything starts out a volunteer seeing something the lab needs, and making it happen!
HeatSync has to pay rent for this space. Your donations help!
Our volunteers run classes and workshops! Check the calendar at https://heatsynclabs.org