Skip to content

Commit 42cd201

Browse files
Rename gc -> gcn for the 3-letter codename pattern
Settles the GameCube subdir/codename on 3 letters to match gba and pce (and future n64 / snes). The intermediate gc/ subdir + gc-v* tag prefix introduced minutes ago is dropped before it ships -- the deleted gc-v0.2.0 release/tag never existed in the wild. Why 3 letters: 2-letter codenames collide with unrelated paths in sibling repos. joypad-os already has its own src/native/host/gc/ subdir for its GameCube host code, totally unrelated to our subdir codename, which made cross-references confusing. gcn/gba/pce/n64/snes read consistently and don't collide. Updated everywhere the codename appears: - gc/ -> gcn/ (git mv of the whole subtree). - Workflow matrix entry, gates, parse case (gc) -> gcn)), artifact paths. - Top-level README Consoles + Per-console tables, the "subdirs use short codenames" note (now "short 3-letter codenames"), and LICENSE.md's subdir-license-pointer example. - CLAUDE.md existing-subdir list, README-outline canonical example reference, tag-format example, plus a new rule documenting why 2-letter codenames are out (path-collision risk with sibling repos). - gba/README.md and pce/README.md cross-links (../gc/* -> ../gcn/*). joypad-os internal src/native/host/gc/* references stay -- that's their subdir, not ours. - pce/buildtools/make_logo.py path comment + REPO_ROOT fallback lookup. - gcn/README.md "Releases" section + gcn/CHANGELOG.md v0.2.0 entry rewritten to describe the gcn rename (and to note the never-shipped gc/ interlude explicitly). Tag/release impact: - Already deleted gc-v0.2.0 release + tag. - gcn-v0.2.0 will be cut next, carrying the same content as the deleted gc-v0.2.0 would have plus this rename.
1 parent d3b1f40 commit 42cd201

30 files changed

Lines changed: 65 additions & 56 deletions

.github/workflows/release.yml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: Release
22

3-
# Triggered by tags shaped like <console>-v<semver>, e.g. gc-v0.1.0,
3+
# Triggered by tags shaped like <console>-v<semver>, e.g. gcn-v0.1.0,
44
# pce-v0.2.3, etc. The console subdir comes from the prefix; only that
55
# console's app is built and attached to a GitHub Release.
66
on:
@@ -30,7 +30,7 @@ jobs:
3030
CONSOLE="${TAG%%-v*}"
3131
VERSION="${TAG#*-v}"
3232
case "$CONSOLE" in
33-
gc) PRETTY="GameCube" ;;
33+
gcn) PRETTY="GameCube" ;;
3434
wii) PRETTY="Wii" ;;
3535
n64) PRETTY="Nintendo 64" ;;
3636
snes) PRETTY="Super Nintendo" ;;
@@ -62,27 +62,27 @@ jobs:
6262
fi
6363
6464
- name: Set up Python
65-
if: needs.parse.outputs.console == 'gc'
65+
if: needs.parse.outputs.console == 'gcn'
6666
uses: actions/setup-python@v5
6767
with:
6868
python-version: '3.12'
6969

7070
- name: Install Pillow
71-
if: needs.parse.outputs.console == 'gc'
71+
if: needs.parse.outputs.console == 'gcn'
7272
run: pip install --quiet Pillow
7373

7474
- name: Generate banner
75-
if: needs.parse.outputs.console == 'gc'
75+
if: needs.parse.outputs.console == 'gcn'
7676
working-directory: ${{ needs.parse.outputs.console }}
7777
run: python3 buildtools/make_banner.py opening.bnr
7878

7979
- name: Generate screensaver logo header
80-
if: needs.parse.outputs.console == 'gc'
80+
if: needs.parse.outputs.console == 'gcn'
8181
working-directory: ${{ needs.parse.outputs.console }}
8282
run: python3 buildtools/make_logo.py
8383

8484
- name: Build (GameCube)
85-
if: needs.parse.outputs.console == 'gc'
85+
if: needs.parse.outputs.console == 'gcn'
8686
run: |
8787
docker run --rm \
8888
-v "${{ github.workspace }}":/workspace \
@@ -113,7 +113,7 @@ jobs:
113113
make
114114
115115
- name: Stage release artifacts (GameCube)
116-
if: needs.parse.outputs.console == 'gc'
116+
if: needs.parse.outputs.console == 'gcn'
117117
working-directory: ${{ needs.parse.outputs.console }}
118118
run: |
119119
mkdir -p _release

.github/workflows/verify-build.yml

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,12 @@ jobs:
1818
fail-fast: false
1919
matrix:
2020
include:
21-
- console: gc
21+
- console: gcn
2222
image: ghcr.io/extremscorner/libogc2:latest
2323
artifacts: |
24-
gc/joypad-tester-gamecube.dol
25-
gc/joypad-tester-wii.dol
26-
gc/opening.bnr
24+
gcn/joypad-tester-gamecube.dol
25+
gcn/joypad-tester-wii.dol
26+
gcn/opening.bnr
2727
- console: gba
2828
image: devkitpro/devkitarm:latest
2929
artifacts: |
@@ -50,21 +50,21 @@ jobs:
5050
python-version: '3.12'
5151

5252
- name: Install Pillow (for banner generation)
53-
if: matrix.console == 'gc'
53+
if: matrix.console == 'gcn'
5454
run: pip install --quiet Pillow
5555

5656
- name: Generate banner
57-
if: matrix.console == 'gc'
57+
if: matrix.console == 'gcn'
5858
working-directory: ${{ matrix.console }}
5959
run: python3 buildtools/make_banner.py opening.bnr
6060

6161
- name: Generate screensaver logo header
62-
if: matrix.console == 'gc'
62+
if: matrix.console == 'gcn'
6363
working-directory: ${{ matrix.console }}
6464
run: python3 buildtools/make_logo.py
6565

6666
- name: Build (gamecube target)
67-
if: matrix.console == 'gc'
67+
if: matrix.console == 'gcn'
6868
run: |
6969
docker run --rm \
7070
-v "${{ github.workspace }}":/workspace \
@@ -74,7 +74,7 @@ jobs:
7474
bash -c "apt-get install -y -qq --no-install-recommends -t bookworm-backports xorriso 2>/dev/null; TARGET_CONSOLE=gamecube make"
7575
7676
- name: Build (wii target)
77-
if: matrix.console == 'gc'
77+
if: matrix.console == 'gcn'
7878
run: |
7979
docker run --rm \
8080
-v "${{ github.workspace }}":/workspace \

CLAUDE.md

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -31,17 +31,21 @@ or the CI/release wiring.
3131
└── common/ # (future) cross-console shared helpers
3232
```
3333

34-
Subdir names are short codenames matching homebrew-community usage
35-
(`gc`, `gba`, `pce`, future `n64` / `snes` / …). The same codename is
36-
used as the release-tag prefix (`<codename>-v<semver>`). Don't introduce
37-
full-localized-name subdirs (`gamecube/`, `gameboyadvance/`, etc.) —
38-
the codename is the source of truth.
34+
Subdir names are short 3-letter codenames matching homebrew-community
35+
usage (`gcn`, `gba`, `pce`, future `n64` / `snes` / …). The same
36+
codename is used as the release-tag prefix (`<codename>-v<semver>`).
37+
Don't introduce full-localized-name subdirs (`gamecube/`,
38+
`gameboyadvance/`, etc.) — the codename is the source of truth. Also
39+
avoid 2-letter codenames (`gc`) since they tend to collide with
40+
unrelated paths in vendored / sibling repos (joypad-os has its own
41+
`gc/` subdir for the GameCube host that has nothing to do with our
42+
subdir codename).
3943

4044
Existing console subdirs at time of writing:
4145

42-
- `gc/` — GameCube + Wii test app (libogc2-based, builds .dol; also
46+
- `gcn/` — GameCube + Wii test app (libogc2-based, builds .dol; also
4347
surfaces N64 controllers via the passive adapter on GC ports).
44-
Origin: zlib (corenting GC-Controller-Test); `gc/LICENSE.md`.
48+
Origin: zlib (corenting GC-Controller-Test); `gcn/LICENSE.md`.
4549
- `gba/` — GBA multiboot payload, two variants from one source tree
4650
(eyes for joypad-os consumers, tester for the GameCube host or
4751
flashcart use). Origin: MIT (Doridian Joybus-PIO); `gba/LICENSE.md`.
@@ -102,7 +106,7 @@ only when the console has that surface; everything else is required.
102106
9. **`## Origin / credits`** — upstream lineage (project + license +
103107
link), what this subtree adds, and a link to `LICENSE.md`.
104108

105-
`gc/README.md` is the canonical example. When adding a new console,
109+
`gcn/README.md` is the canonical example. When adding a new console,
106110
copy its skeleton and fill each section in — don't reorder or rename
107111
headings, because the top-level README and CLAUDE.md both reference
108112
them.
@@ -137,11 +141,13 @@ means adding a matrix entry + the corresponding build step(s).
137141

138142
## CI: releases (`.github/workflows/release.yml`)
139143

140-
Tag-driven. Tag format: `<console>-v<semver>` (e.g. `gc-v0.2.0`,
144+
Tag-driven. Tag format: `<console>-v<semver>` (e.g. `gcn-v0.2.0`,
141145
`gba-v0.2.3`, `pce-v0.1.0`). Pre-release suffixes allowed (`-alpha.1`,
142146
`-rc.2`, …). One historical `gamecube-v0.1.0` tag predates the rename
143-
to short codenames — it stays as a frozen release; future GC releases
144-
use `gc-v*`.
147+
to short codenames — it stays as a frozen release; future GameCube
148+
releases use `gcn-v*`. (An intermediate `gc-` prefix was never
149+
shipped; the v0.2.0 work landed as `gcn-v0.2.0` once we settled on
150+
3-letter codenames.)
145151

146152
The workflow:
147153

LICENSE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ MIT License
33
Copyright (c) 2026 Robert Dale Smith
44

55
Each console subdirectory carries its own license file matching its
6-
upstream origin (e.g. `gc/LICENSE.md`). This file applies to the
6+
upstream origin (e.g. `gcn/LICENSE.md`). This file applies to the
77
top-level repository scaffolding — README, CI workflows, build infra —
88
and to any future shared helpers in a `common/` directory.
99

README.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,20 @@ A collection of homebrew controller test ROMs across game consoles. Each console
66

77
| Console | Status | Path | License |
88
|---|---|---|---|
9-
| GameCube | working | [`gc/`](gc/) | [zlib](gc/LICENSE.md) |
9+
| GameCube | working | [`gcn/`](gcn/) | [zlib](gcn/LICENSE.md) |
1010
| Game Boy Advance | working | [`gba/`](gba/) | [MIT](gba/LICENSE.md) |
1111
| PC Engine | scaffolded | [`pce/`](pce/) | [MIT](pce/LICENSE.md) |
1212

13-
Subdirs use short codenames (`gc`, `gba`, `pce`, future `n64`/`snes`/…)
14-
matching homebrew-community conventions. Release tags follow the same
15-
prefix: `<codename>-v<semver>`.
13+
Subdirs use short 3-letter codenames (`gcn`, `gba`, `pce`, future
14+
`n64`/`snes`/…) matching homebrew-community conventions. Release tags
15+
follow the same prefix: `<codename>-v<semver>`.
1616

1717
## Per-console
1818

1919
Each console subdir has its own `README.md` with what its app tests,
2020
how to build/flash, and any embedding notes. See:
2121

22-
- [`gc/README.md`](gc/README.md)
22+
- [`gcn/README.md`](gcn/README.md)
2323
- [`gba/README.md`](gba/README.md)
2424
- [`pce/README.md`](pce/README.md)
2525

gba/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ modifying the source — rebuild and commit `build/<variant>/<variant>_mb.gba`
110110
Two paths, depending on which variant and host:
111111

112112
**Multiboot over GameCube link cable** — both variants. Build this
113-
repo's GameCube/Wii host (see [`../gc/`](../gc/)), connect a
113+
repo's GameCube/Wii host (see [`../gcn/`](../gcn/)), connect a
114114
GBA Link Cable from GameCube SI port 2 to the GBA, leave the GBA on the
115115
"Press Start" screen with no cartridge, and start the host. The host
116116
uploads `tester_mb.gba` via Kawasedo handshake + stream cipher and the
@@ -135,7 +135,7 @@ extern const uint8_t joypad_payload[];
135135
extern const uint32_t joypad_payload_len;
136136
```
137137

138-
See [`../gc/ppc/gba.c`](../gc/ppc/gba.c) or joypad-os's
138+
See [`../gcn/ppc/gba.c`](../gcn/ppc/gba.c) or joypad-os's
139139
`src/native/host/gc/gba_multiboot.c` for a reference uploader
140140
implementation (Kawasedo handshake, stream cipher, polled WRITE/READ,
141141
unconditional handshake-complete write).
File renamed without changes.

gc/CHANGELOG.md renamed to gcn/CHANGELOG.md

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,14 @@
22

33
## v0.2.0 — 2026-05-11
44

5-
First release under the new short-codename convention. The subdir is
6-
now `gc/` (was `gamecube/`) and the release tag is `gc-v0.2.0` (was
7-
`gamecube-v0.1.0`). The historical `gamecube-v0.1.0` tag/release stays
8-
intact as a frozen snapshot of the old layout — future releases all
9-
use the `gc-` prefix.
5+
First release under the new short-3-letter-codename convention. The
6+
subdir is now `gcn/` (was `gamecube/`) and the release tag is
7+
`gcn-v0.2.0` (was `gamecube-v0.1.0`). The historical `gamecube-v0.1.0`
8+
tag/release stays intact as a frozen snapshot of the old layout;
9+
future releases all use the `gcn-` prefix. (A short-lived intermediate
10+
`gc/` subdir + `gc-v` prefix was never shipped to release — we settled
11+
on `gcn` minutes after introducing it to avoid the 2-letter codename
12+
colliding with unrelated `gc/` directories in sibling repos.)
1013

1114
### Fixed
1215

@@ -20,11 +23,11 @@ use the `gc-` prefix.
2023

2124
### Changed
2225

23-
- Subdir rename `gamecube/` -> `gc/` to match the short-codename
24-
convention used by `gba/`, `pce/`, and future consoles. Tag prefix
25-
shifts from `gamecube-v*` to `gc-v*`. `TARGET_CONSOLE=gamecube|wii`
26-
inside the libogc build is unchanged (that's the libogc internal
27-
platform name, not our subdir codename).
26+
- Subdir rename `gamecube/` -> `gcn/` to match the short-3-letter-
27+
codename convention used by `gba/`, `pce/`, and future consoles.
28+
Tag prefix shifts from `gamecube-v*` to `gcn-v*`.
29+
`TARGET_CONSOLE=gamecube|wii` inside the libogc build is unchanged
30+
(that's the libogc internal platform name, not our subdir codename).
2831

2932
## v0.1.0 — 2026-05-07
3033

File renamed without changes.
File renamed without changes.

0 commit comments

Comments
 (0)