Browse 71 pride flags on the NES. This program can also be downloaded from Itch.io.
Table of contents:
- List of files
- How to assemble
- How to use the NES program
- How to add new flags
- Technical info on the NES program
- Sources of flags
Assembled NES programs (gzip compressed, from newest to oldest):
pride.nes.gz
: current version (download this if you're unsure)pride-compo-2023.nes.gz
: NESDev Compo 2023 versionpride-nrom.nes.gz
: the last NROM versionpride-compo-2022.nes.gz
: NESDev Compo 2022 version
Images:
img/*.png
: pride flags to be read byconvert.py
(256×192 pixels)img-lq/*.png
: lower-quality backups of some flagschr-spr.png
: sprite pattern table data; can be encoded usingnes_chr_encode.py
from my NES utilitiessnap*.png
: screenshots
Source code:
convert.py
: a Python program that converts images of pride flags into NES graphics data; generatesimgdata.asm
andchr-bg*.bin
pride.asm
: an NES program that shows the flags; assembles with ASM6imgdata.asm
: data used bypride.asm
(generated byconvert.py
)assemble.sh
: a Linux script that assemblespride.asm
(overwrites files; don't run it before reading it)
Other binaries (gzip compressed):
chr-bin.tar.gz
: pattern table (CHR ROM) data in NES format; contains these files:chr-bg*.bin
: background (one file per PT; seeconvert.py
above)chr-spr.bin
: sprites (same data in PTs 1/3/5/7; seechr-spr.png
above)
- run
convert.py
to generateimgdata.asm
andchr-bg*.bin
(or just download them and extract the.gz
files) - encode
chr-spr.png
intochr-spr.bin
usingnes_chr_encode.py
from my NES utilities (or just extractchr-spr.bin
from the.gz
file) - assemble:
asm6 pride.asm pride.nes
(or just extractpride.nes
from the.gz
file)
- left arrow: previous flag
- right arrow: next flag
- A button: random flag
- start button: toggle flag descriptions on or off
You can add flags of your own to the NES program. You need to have Python and ASM6 installed.
- Open your flag image in an image editor (e.g. GNU IMP).
- Resize the image to 256×192 pixels.
- Convert the image into indexed color (so it has a palette).
- Because of NES hardware limitations, the colors need to be optimized manually and the pixels may need to be edited as well. This is tricky, but follow these rules:
- No more than 12 unique colors in addition to black.
- All unique colors should be clearly distinct from each other.
- Put a 16×16-pixel grid on the image (in GNU IMP, Image → Configure Grid… and View → Show Grid).
- No grid square can have more than three distinct colors in addition to black.
- In all grid squares combined, you can't use more than four unique sets of three distinct colors in addition to black.
- Save the image in PNG format under the
img
directory. The filename before the extension (.png
) is important:- It will be the flag description text (up to 8×3 characters) inside the NES program.
- 26 characters or less.
- Only
a
–z
,0
–9
, comma (,
), hyphen (-
) and underscore (_
) are allowed. - Underscores will be converted into newlines.
- No more than two underscores.
- No more than eight consecutive non-underscore characters.
- See the existing filenames for examples.
- Run
python3 convert.py
. It should not print any errors. However, the palette creation algorithm isn't very smart, so if you're sure you followed step 4 correctly and the program still complains, you can define the palette manually: editMANUAL_SUBPALS
inconvert.py
. The output just before the error message andNES_PALETTE
inconvert.py
will be helpful. - Extract
chr-spr.bin
from the.gz
file. (Use e.g.gunzip
on Linux or 7-Zip on Windows.) - Assemble:
asm6 pride.asm pride.nes
– again, it should not print any errors. - Run
pride.nes
on an NES emulator (e.g. FCEUX, Nestopia, Mednafen).
- mapper: CNROM (iNES mapper #3)
- PRG ROM: 16 KiB
- CHR ROM: 32 KiB
- name table mirroring: vertical
- pattern table 0 in each bank: background (flag images)
- pattern table 1 in each bank – first 208 tiles: background (flag images)
- pattern table 1 in each bank – last 48 tiles: sprites (flag descriptions; same in all banks)
- each image has its own background palettes (black and 4×3 other colors)
- flag images are 256×192 pixels (32×24 tiles or 16×12 attribute blocks)
- flag images are shown at the bottom of a name/attribute table
- name/attribute table data of each flag image:
- uncompressed size: 24×32 + 8×8 = 832 bytes
- stored as 6 run-length encoded slices; the first 5 decompress into 140 bytes each, the last into 132 bytes
- an image is updated during 7 frames:
- first 6 frames: extract one slice of name/attribute table data to an invisible name/attribute table
- 7th frame: copy background palettes, do OAM DMA, flip visible name/attribute table, switch to correct CHR bank and background pattern table
- for speed, all PPU memory updates (VRAM/palette) go through a buffer on the stack page (can be read quickly with PLA)
- Abrosexuality
- Aegosexual (black/gray/green/purple)
- Aegosexuality (black/gray/white/purple)
- Androgyne – LGBTQIA+ Wiki
- Androsexual
- Aromantic Asexual – LGBTQIA+ Wiki
- Asexual Furry Pride Fandom Flag (black pawprint) – Amazon
- Autism pride flag (vertical stripes) – Wikimedia Commons
- Autistic Pride Flag (no stripes) – Wikimedia Commons
- Autistic Pride Flag (horizontal stripes) – Wikimedia Commons
- Autosexuality
- Bear Brotherhood flag – Wikimedia Commons
- Butch Lesbian Pride Flag – SexualDiversity
- Demigender – LGBTQIA+ Wiki
- Demigirl Pride Flag – Wikimedia Commons
- Demiguy Pride Flag – Wikimedia Commons
- Fraysexual
- Furry Bisexual Pride Flag – Wacky Print (black pawprint)
- Furry Flags – Inanimorphs (Furry LGBT Pride Flags, white pawprint)
- Furry Pride Flag – Wikimedia Commons
- Graysexual
- Leather, Latex, and BDSM pride - Light – Wikimedia Commons
- Neptunic
- Nonhuman Unity Flag (otherkin) – Wikipedia (broken link)
- Non-human Unity Flag – Therian Wiki (not the flag I used, but similar to the above)
- Omnisexual – LGBTQIA+ Wiki
- Pangender – Gender Wiki (2nd flag by Cats670)
- Pansexual Furry Pride Fandom Paw Flag – Amazon (black pawprint)
- Polyamory flag with infinity heart – Wikimedia Commons (heart and infinity symbol)
- Polyamory Pride Flag – Wikimedia Commons (pi symbol)
- Pride flag – Wikipedia (many flags)
- Queer Pride Flag – Queer in the World
- Rainbow flag (LGBT) – Wikipedia
- Sapiosexual (green/brown/blue)
- Sapiosexual (gray/red/blue)
- Sapphic – LGBTQIA+ Wiki
- Transgender Furry Pride Fandom Paw Flag – Amazon
- Tricolor Polyamory Pride Flag – Wikimedia Commons
- Trigender Pride Flag – SexualDiversity
- Uranic
- Visually Safe Disability Pride Flag – Wikimedia Commons
The license of this project does not apply to the flag images (I guess).