Repository navigation
Releases: spencernorton/indigo
Release list
Indigo v2.5.0-rc.1
Release candidate. v2.5.0 as it is meant to ship, for a last round of testing before it does. The current stable release is linked from https://norvitech.com/indigo/.
Improved
- Menu text batches adjacent glyphs on the same font sheet, keeping the
same letters and weight with fewer GPU submissions. Button outlines keep
their exact edge normals while their geometry stays the same. - The Library opens Spotlight's gameplay stills only when you use Spotlight,
saving their cache memory and card reads in the other layouts. - Artwork reads give the menus a turn between pieces. Folder and app
pictures on a disc no longer hold up a button for the whole picture;
leaving the page or scrolling away discards an unfinished read. Detail
still preloads its first poster before opening. - CI keeps the full tag history but fetches historical file contents only
when needed, avoiding old guide pictures in each build and host-test clone.
Fixes
-
Repository links and CI runner defaults follow the renamed GitHub account.
-
An interrupted or incomplete network/USB upload is rejected without
stopping the menus. Transfers must finish their compressed stream at the
exact advertised size; network reads time out after ten idle seconds.
DOL/ELF headers, sections and entrypoint probes stay inside the received
file. Uploads no longer suspend the menu while it owns the video lock. -
The pinned build now links libiconv-lite instead of the full character-set
library, reducing the DOL by about 834 KiB while retaining every banner
encoding. The emulator launch probe checks the actual PowerPC conversions. -
Updated the SDK to libogc2 r2482, including its AESND reset race fix, EXI
locking cleanup, monotonic timing and SD fixes. The upstream audio fix
replaces Indigo's earlier local patch. A fresh MemCard PRO GC hardware
qualification is required before publishing this SDK as stable. -
Updated the Swiss base from r2119 to commit
39a0867e: newer translation
and disc databases, Need for Speed 960i/1152i fixes, additional field-mode
detection, and Nintendo Gateway GameCube MSA-500 identification. -
Setup › Display has Apps Video Mode, the mode passed to libogc2 homebrew.
Auto keeps the menu mode; other apps may choose their own. The setting is
saved asApps Video Modein global.ini.
Documentation
- The guide's Memory Cards and Game Details pictures show 2.4's screens:
card images that take Move, Copy and Erase, the Storage page with Library
Path, and Saves counted by file with the save's own line.
For developers
- A weekly Swiss watch (
.github/workflows/swiss-watch.yml) checks whether
upstream Swiss moved past the commitUPSTREAMnames. Cheap gates first
(onels-remote, then a deterministic file filter) keep silent weeks
free; one model call judges each new commit take/review/skip for Indigo,
and only a week with a candidate sends email, with the exact
upstream_merge.shcommand. It merges nothing itself.
Install
Follow the install guide: pick what starts your GameCube, then four steps. In short: download Indigo-v2.5.0-rc.1.zip from Assets below (not the Source code ZIP), unzip it on your computer, back up the card's swiss folder (Swiss hides it) and any ipl.dol or boot.dol you replace, then copy two files onto the card.
| What starts your GameCube? | Copy ipl.dol to |
Indigo starts |
|---|---|---|
| GC Loader | boot.dol at the top of the card, keeping boot.iso (Swiss starts it) |
When you switch on |
| PicoBoot or PicoLoader | ipl.dol at the top of the card, replacing the old one |
When you switch on |
| FlippyDrive | boot.dol at the top of its microSD card |
When you switch on |
| Something else, or not sure | apps/indigo.dol (make apps if needed) |
From Swiss: open apps, then indigo.dol |
The second file is swiss/patches/apploader.img: copy it into the card's swiss/patches folder (make the folders if needed), replacing the old one, so In-Game Reset set to Apploader returns to Indigo. Any setup can use apps/indigo.dol and keep starting as it does today. Some PicoBoot and PicoLoader chips have Swiss built in and never read ipl.dol: the guide shows how to check.
Updating: back up the card's swiss folder, rename the new ipl.dol to the name of the Indigo file you start now (ipl.dol, boot.dol or indigo.dol) and copy it over that file. Then copy the new swiss/patches/apploader.img over the old one.
Posters and cheats (optional; unzip one and copy the files in its swiss/ui or swiss/cheats folder into the card's folder of the same name, making it if needed): Posters (every region, with Spotlight's stills and descriptions) · Cheats
Verify: SHA256SUMS.txt lists the zip's SHA-256, and the zip carries a build provenance attestation: gh attestation verify Indigo-v2.5.0-rc.1.zip --repo spencercnorton/indigo.
Indigo v2.4.0 — A new File Browser, cube sides and faces, Saves on Details
New
- The Library finds your games on whichever storage holds them: when the
boot device has no/gamesfolder (such as a GC Loader with the games on
an SD2SP2 card), Indigo opens the first/gameson the other storage
connected, at startup and from Library. Settings › Setup › Storage ›
Library Path names a folder to use instead (Auto, the default, looks
for one); Left and Right step through devices, and A opens a folder
chooser. - Memory Cards moves, copies and erases saves on card images too: the
.rawvirtual memory cards Swiss's Emulate Memory Card keeps in
swiss/saves. Open one in the SD card's stack and Move, Copy and Erase
work as on a memory card, to and from Slot A, Slot B, an SD folder or an
image in the other stack. An image takes a save as a card does (not one it
has, not past 127 saves or its free blocks); its blocks, block map and
directory are written in the GameCube's own order and read back before a
Move removes the original. Images on a FlippyDrive or KunaiGC stay
read-only. - Memory Cards reaches the card your games are on when your settings are on
another: with settings on a GC Loader and games on an SD2SP2, say, L and R
name both cards, and each SD column shows either. Swiss's Emulate Memory
Card keeps a game's card images on the card the game starts from, so
that's where they are. - Game details' Saves counts those copies too: with your settings on one
card and your games on another, the card images and saves inswiss/saves
on the games' card join the memory cards' and the Save Folder's. With a
memory card in a slot and Emulate Memory Card off, Left and Right offer
them as well; a save file there goes by the card's name, such as
SD Card - SD2SP2, and the memory card's own copy still goes to the
Save Folder on your settings card first. - Game details' Saves counts a game's saves as the GameCube does:
different files of a game are files, and one file in more than one place
is copies, each file's blocks counted once. Animal Crossing's town,
letters and options read 5 files | 58 blocks, and one 11-block save in
two places 2 copies | 11 blocks. After the date it shows the save's
own line, the one the GameCube's memory card screen shows under the block
count; a save records no creation date. Choosing a copy names its file
when the game has more than one, and the memory card's own copy goes to
the Save Folder first only when the card holds that same file. - Choose the menu on each side of the Home cube: Settings › Setup › Console
› Up Face, Left Face, Right Face and Down Face, each
Source, Settings, System, Apps or None. Classic turns that way to it; the
Infinite ring goes up, left, right and down after Library. They replace
Apps Face: Down Face None turns Apps off, and an older Apps Face › Off
carries over. Y on Home opens Settings wherever its face is. - Two more menus for the cube's sides: Memory Cards, the screen System's
row opens, and Emulators, an Apps screen for the programs in
/emulators. Neither is on a side until you give it one. - Settings › Setup › Console › Idle Animation: Sway turns the Home
cube slowly left and right while Home rests, so the faces beside the one in
front peek round its edges; Calm, the default, is the drift it always
had. After a turn the sway starts again from where the cube rests. UI
Motion Reduced or Off keeps the cube still either way, and so does Change
Source's picker, where the cube used to drift. - Waves (Setup › Console) Off takes the waves from behind the cube.
- Face Labels and On-screen Controls (Setup › Console) Off take the
face's name and the button hints from under the Home cube. Other screens,
the Library and the File Browser among them, keep their hints, and so does
Restart's question. - File Browser can have a side of the cube too (Up Face, Left Face,
Right Face or Down Face › File Browser): A on it opens the same File
Browser as System's row, and B comes back to it. It is on no side until
you give it one. - File Browser, on the System face below Memory Cards, opens at the top
of the source, even when the games are in the Library. Z there always
offers Swiss's copy, move, rename, hide and delete, whatever File
Management is set to. B goes back to the System face, or to the File
Browser face when that opened it. - The File Browser takes the place of Swiss's file lists everywhere
outside the Library: System's row and its face, the Library face when
there are no games to show, Recent and an Autoload folder. Two panes sit
side by side over graph paper, as Memory Cards' two stacks do: the left
one, marked SOURCE, is your source and starts games; the right one shows
another folder, on it or on another device. Each row has a cube for what the file is, its real
name with its extension (a long one cut in the middle, keeping "(Disc 1)"
and the extension) and its size; the info bar below shows the whole name,
and a game's banner and title. Left and Right move between the panes, the
C-stick goes a page at a time, and Up and Down keep going while held. A pane being read says Reading…, and a long storage name above a
pane gets smaller, or is cut, to keep clear of its free space. Renaming
or deleting the left pane's folder from the right pane moves the left
pane to the folder that held it. - L and R in the File Browser choose each side's storage, as in
Memory Cards: a menu of the devices Indigo found, then Other devices… for
the full list. On the left the choice becomes your source; on the right
the pane opens it, so the two panes can show two devices, such as a GC
Loader and an SD card, or the same device in two folders. Y swaps the
two sides, your source with them. Devices that can't be open together
(two network shares, a FlippyDrive and its flash) are greyed with why,
and one picked from Other devices… leaves the pane where it was and says
why; a device that won't open says so in its pane, and Y won't swap onto
it. A memory card's free space is counted in blocks, as its saves are.
The right pane opens on your settings' device the first time and keeps
its device and folder until Indigo restarts; it lets the device go
whenever you leave the File Browser, start something, save Autoload or
open Recent. Z on a right-pane file now acts on the right pane's device,
and Z in either pane leaves the other pane's device mounted, even when it
is the copy's destination or the copy is cancelled. - Z in the File Browser opens the file's Actions beside its row:
Copy, Move, Rename, Hide and Delete, each with its button's letter (X, Y,
R, L, Z), which chooses it at once. An action the file or its device
doesn't allow stays listed, greyed, with why in the info bar. Copy and
Move go to the folder open in the other pane, with no device or folder
to pick: the info bar says whether the file fits there (never greying it
for a network share, whose free space isn't known), and Copy asks first
while a row in the other pane shows where the copy will go. A file that is
already there offers Keep both, Replace it or Cancel; Keep both is greyed
when there is room only for one. The copy's card names what goes where and
shows B Stop; both panes are read again, focused on the copy (which
flashes), the renamed file or the row that took a moved or deleted file's
place, and the result shows over them as Memory Cards' maroon message.
Copy and Move are greyed onto a memory card (Memory Cards copies saves)
and where a folder there has the file's name; so are Move and Rename on a
card's saves, which Memory Cards moves, reading the copy back first and
keeping a game's no-move saves where they are. Swiss's questions keep their
words and are drawn beside the row; Delete still needs L held with A. A
on a file that doesn't start opens its Actions, as does a FlippyDrive
update anywhere but on a FlippyDrive. - A on a game in the File Browser's left pane opens its Game
details, as in the Library: its cover, saves, settings, cheats and
Launch Game, which starts it as the Library does, with the second disc
Swiss would choose in that folder. The details take the File Browser's
place without flying in from a Library card, and B (B Back
there) goes back to the File Browser on the same row. A game started
from Recent, or an Autoload game, still shows Swiss's own game screen. - A copy that is stopped, or fails part way, deletes the unfinished file,
in the File Browser and from Swiss's own copy alike, except on a memory
card, which keeps what was written, as before. The File Browser's message
says when part of it could not be removed, and when Replace it had already
removed the file there. Replace now goes ahead only once that file is
gone. A Move whose original can't be deleted afterwards says the file was
copied but is in both places. - Finishing touches in the File Browser: Y fades the panes across as
the sides change places (0.15 s, quicker with UI Motion Reduced, at once
with Off); a closed box, question or message no longer leaves its lines
in the info bar, so the focused file's show again, under a copy's
progress card too; and the pane without the focus draws its words in a
lighter weight, which makes each File Browser frame about a sixth
cheaper to draw. A right pane that is empty at its top, or whose device
isn't ready, hints only A Choose storage. "Reading…" shows while the new
sides are read after Y (a disc spinning up, a network share), and its
loading cells step more slowly with UI Motion Reduced and stand still with
Off. - The File Browser now asks before Move, before Hide, before turning
Autoload on (Z on.., or Z on a game's details), and before writing a
.fznfile to a WiiKey Fusion or a `....
Indigo v2.3.1-rc.2
Release candidate. v2.3.1 as it is meant to ship, for a last round of testing before it does. The current stable release is linked from https://norvitech.com/indigo/.
New
- Press Y Folder on Memory Cards' small folder or card-image cubes to
see the full device-prefixed path, direct contents and up to two save names.
Choose a persistent color for that cube's rim and folder symbol, or restore
Default. A saves; B cancels. Card images remain read-only.
Removed
- Removed the Library folder path and color page. Game folders retain their
existing navigation and artwork without folder identity colors.
Improved
- Save captions use readable comment text and verified game identities when
games omit display metadata, including Need for Speed: Underground 2.
Static and missing icons remain distinct from stored animations. - Save details shows Last updated and Save icon instead of the empty
creation-date field. It distinguishes animated, static and missing icons,
previews that could not be loaded, and animations paused by UI Motion Off.
The GameCube save format does not record a separate creation date. - Installation starts with the boot method and card you use. The README,
walkthrough, release notes and ZIP instructions give exact file destinations,
card layouts, first-launch checks, updates and recovery steps, with clear
folder-merge instructions and preservation of existing boot files.
Install
Download Indigo-v2.3.1-rc.2.zip from Assets below, rather than GitHub's Source code ZIP. Back up your working card and extract the ZIP on your computer. The card root is the first level you see when you open it; copy files from inside the extracted folder, rather than the ZIP or its enclosing Indigo folder.
| Your current setup | Download → card destination | Launch |
|---|---|---|
| PicoBoot / PicoLoader using gekkoboot | ipl.dol → /ipl.dol on its SD adapter |
Power on normally |
| FlippyDrive | ipl.dol → /boot.dol on FlippyDrive's microSD |
Normal boot mode |
| GC Loader, Swiss in flash, cubeboot, or unsure | ipl.dol → /apps/indigo.dol |
Start Swiss, browse to Apps, launch indigo.dol |
Identify and back up your existing boot program before replacing it: an ipl.dol is not always Swiss. With gekkoboot, preserve stock Swiss as z.dol only if that shortcut is unused; keep existing shortcuts. The Launch from Swiss route keeps your original boot files and needs no firmware change. The Indigo ZIP contains no boot.iso; keep GC Loader's current boot image.
Merge the download's swiss files into your existing folder. On a Mac, hold Option while dragging and choose Merge, never Replace for the whole folder. If Merge is unavailable, copy the individual files into the matching subfolders. Keep settings, posters, cheats, saves and games. The new swiss/patches/apploader.img makes Apploader In-Game Reset return to Indigo, including for games started in stock Swiss.
Safely eject, launch by your route, and check System › System Information › About Indigo. Choose the source holding your games; the Library looks for /games there by default. SD2SP2 and SD Gecko are adapters, not boot methods, and your boot card and game-storage card may differ.
Updating Indigo 1.x or 2.x: replace the executable you actually launch (/ipl.dol, /boot.dol or /apps/indigo.dol), renaming the new copy as needed, and merge the shared files again. Keep your recovery copy.
The step-by-step install guide has exact card trees, first-launch checks, upgrades and recovery; the guide included with this release is also available on GitHub.
Posters and cheats (optional; unzip one and drag its swiss folder onto the card the same way): Posters (every region, with Spotlight's stills and descriptions) · Cheats
Verify: SHA256SUMS.txt lists the zip's SHA-256, and the zip carries a build provenance attestation: gh attestation verify Indigo-v2.3.1-rc.2.zip --repo spencercnorton/indigo.
Indigo v2.3.1-rc.1
Release candidate. v2.3.1 as it is meant to ship, for a last round of testing before it does. The current stable release is linked from https://norvitech.com/indigo/.
New
- Press Y Folder on a Library folder to see its complete path and choose
a color. The color marks its card in every layout and is remembered by path.
Reset restores the default; B cancels changes.
Improved
- Save details shows Last updated and Save icon instead of the empty
creation-date field. It distinguishes animated, static and missing icons,
previews that could not be loaded, and animations paused by UI Motion Off.
The GameCube save format does not record a separate creation date. - Installation starts with the boot method and card you use. The README,
walkthrough, release notes and ZIP instructions give exact file destinations,
card layouts, first-launch checks, updates and recovery steps, with clear
folder-merge instructions and preservation of existing boot files.
Install
Download Indigo-v2.3.1-rc.1.zip from Assets below, rather than GitHub's Source code ZIP. Back up your working card and extract the ZIP on your computer. The card root is the first level you see when you open it; copy files from inside the extracted folder, rather than the ZIP or its enclosing Indigo folder.
| Your current setup | Download → card destination | Launch |
|---|---|---|
| PicoBoot / PicoLoader using gekkoboot | ipl.dol → /ipl.dol on its SD adapter |
Power on normally |
| FlippyDrive | ipl.dol → /boot.dol on FlippyDrive's microSD |
Normal boot mode |
| GC Loader, Swiss in flash, cubeboot, or unsure | ipl.dol → /apps/indigo.dol |
Start Swiss, browse to Apps, launch indigo.dol |
Identify and back up your existing boot program before replacing it: an ipl.dol is not always Swiss. With gekkoboot, preserve stock Swiss as z.dol only if that shortcut is unused; keep existing shortcuts. The Launch from Swiss route keeps your original boot files and needs no firmware change. The Indigo ZIP contains no boot.iso; keep GC Loader's current boot image.
Merge the download's swiss files into your existing folder. On a Mac, hold Option while dragging and choose Merge, never Replace for the whole folder. If Merge is unavailable, copy the individual files into the matching subfolders. Keep settings, posters, cheats, saves and games. The new swiss/patches/apploader.img makes Apploader In-Game Reset return to Indigo, including for games started in stock Swiss.
Safely eject, launch by your route, and check System › System Information › About Indigo. Choose the source holding your games; the Library looks for /games there by default. SD2SP2 and SD Gecko are adapters, not boot methods, and your boot card and game-storage card may differ.
Updating Indigo 1.x or 2.x: replace the executable you actually launch (/ipl.dol, /boot.dol or /apps/indigo.dol), renaming the new copy as needed, and merge the shared files again. Keep your recovery copy.
The step-by-step install guide has exact card trees, first-launch checks, upgrades and recovery; the guide included with this release is also available on GitHub.
Posters and cheats (optional; unzip one and drag its swiss folder onto the card the same way): Posters (every region, with Spotlight's stills and descriptions) · Cheats
Verify: SHA256SUMS.txt lists the zip's SHA-256, and the zip carries a build provenance attestation: gh attestation verify Indigo-v2.3.1-rc.1.zip --repo spencercnorton/indigo.
Indigo v2.3.0 — Memory Cards, game folders and smoother motion
New
-
A on a save opens its size, source and recorded update date before Actions;
creation dates are explicitly not recorded. Library game details show save
copies, blocks and latest update from cards and the Save Folder. -
Memory Cards opens Swiss
.rawvirtual memory cards on SD, showing their
saves and animated icons. Copy exports a save as a verified.gcifile;
images remain read-only, with Move and Erase dimmed. Unformatted or damaged
images get a clear message. -
Settings › Setup › Library › Library Folders lets you sort your games
into folders. On, the Library shows the folders in/gamesas cards beside
the games, two levels deep: A opens one, B goes back up, and the heading
names the folder you are in. A folder in a folder shows every game below
it. Off (the default), the Library is one list of every game, as before.
Inglobal.iniit isLibrary Folders. -
A folder can have a picture: a PNG beside it with its name, such as
Nintendo.pngfor the Nintendo folder, becomes its poster, as an app's
picture does. A folder without one shows a poster of its name. A picture
over 2 MB is never read, and posters are made one at a time on a thread of
their own, so a large picture neither holds up a button nor runs the
console short of memory. -
Settings › Setup › Console › Wave Speed sets how fast the waves drift:
Slow (half as fast), Normal (the default) or Fast (three times as fast). A
new speed picks up from where the waves are. Inglobal.iniit is
Wave Speed. -
Settings › Setup › Console › Temperature places the temperature dial on
its own: Right, Left or Off, as Clock places the time. Clock moves only the
time now. In the same corner the time sits beside the dial as before; apart,
each sits in its own corner. Inglobal.iniit isTemperature; settings
saved by 2.2, which has noTemperature, keep the dial with the clock. -
Settings › Setup › Console › Cube chooses how Home's cube turns.
Infinite (the default) turns round every face in a ring, as before. Classic
lays the faces out like the GameCube's own menu: Library in front, Settings
on the left, System on the right, Source on top and Apps underneath. From
Library a direction turns to that side; from a side, only the way back or
B returns to Library. The icons stay on their sides as the cube turns, and
a Classic turn arrives in about a quarter of a second. Inglobal.iniit
isCube. -
Memory Cards is the GameCube's own Memory Card screen now. System ›
Memory Cards shows two stacks of small cubes over graph paper, Slot A on
the left and Slot B on the right, a save to a cube. Each cube carries its
game's icon, every frame at its own speed as the GameCube plays it, and
free space shows as smaller, see-through cubes. The
highlighted cube is larger and pale and sways slowly; every cube floats
gently. A bar below shows the highlighted save's banner (or its icon), its
comment and its size in blocks, and above each stack are its letter, Open
and the free blocks. The stick or the D-pad moves from cube to cube and
across from one stack to the other, and a stack scrolls a row at a time.
Visible L Choose storage and R Choose storage buttons open named
Slot A, Slot B and SD card choices. With no physical cards, both columns
open on SD and keep independent folder positions. The screen opens with the Home cube drawing away and the
saves spiralling out into place, and closes back into the cube. -
A Actions from save details opens the GameCube's Move, Copy and Erase
beside its cube.
Move and Copy go to the other stack and ask first, a pale cube pulsing
where the save will land; Erase asks with No highlighted. While the card
works, the save's cube flies across and waits, and it lands only once the
copy has been read back the same and a Move's original removed. The saves
after it slide along, and a maroon box says "Finished copying.",
"Finished moving." or "The data was erased.", closing by itself. An erased
save's cube bursts; a copy that fails flies back and says why. -
Move or Copy is dimmed, its reason shown before you choose it, when the
save can't go: no card, the card has it already, 127 saves, too few free
blocks, a game that won't let its save move, or an SD card that can't be
written.
Changes
-
Game folders skip Mac
._metadata files, so copying a game from a Mac
no longer makes its folder report an invalid disc image. Hidden files in
a game's folder follow Show hidden files, as they do in the file list. -
Save details gives the save name a larger headline, separates blocks and
KiB into clear summaries, aligns source and date fields, and shows distinct
controller hints for Actions and Back. -
The Library's Saves inset gives the copy and block totals more space and
larger text, with a brighter update line beneath them. -
Memory Cards copies and moves a save to the SD card into the folder the
SD card's stack has open, which starts at the Save Folder, rather than
always into the Save Folder; when that folder holds folders, a list offers
it or another folder. A save is no longer moved from one folder of the SD
card to another there: the file browser does that. Delete is Erase now,
and B on the SD card's stack goes up a folder instead of an Up to row. -
The Library's parent card and X return directly to Home at
/games,
retaining that Library root. B and X keep the current game or folder for
the next visit; the root parent card opens on the first actual card.
With Library Folders on, an empty/gamesstays in Indigo with its way
back to Home. -
Every face of the Home cube shows its icon as the cube turns, animated, the
side faces at rest included. An icon on a face turned away from the screen
is drawn four times as wide and twice as tall, then scaled down, so its
thinnest lines keep their light, without breaking into fragments, fading
out or flickering as the cube sways. Mostly horizontal icons, such as
Settings' sliders, still look narrow on a face seen nearly edge-on. -
A slanted line on a face seen nearly edge-on, such as the clock's minute
hand at ten to the hour, no longer disappears at some angles as the cube
sways. Its corners were too sharp for its soft edge, and it was skipped;
it is drawn plain now. -
The halo around the Home cube is gone, as the glow spot under it went in
2.2. -
The Home cube's icons stand a little off the glass instead of lying in it:
the face you are on lifts its icon, which shifts against the glass as the
cube turns and sways. Under it a soft shadow falls on the glass, down and
to the left, away from the light; the icon itself stays sharp. Faces turned
away keep their icons down, so none hangs past the cube's edge. -
A Jet Black backdrop is darker still. Its bottom right corner, the
brightest, read as a grey cloud. -
The CPU temperature holds steady. The console's sensor reads in 4 degree
steps, so a CPU sitting on a step showed one side and then the other every
second (40 °C, 44 °C, 40 °C...). Indigo now shows an average of the last few
seconds' readings, which moves a degree at a time, at the top of the screen
and in System Information alike. -
With Clock at Left, the loading spinner at the top right ran its word
"Loading" from the wheel out to the screen's edge, where a TV can crop it.
It reads inward from the wheel now, in either corner. -
The menus' animated background costs the console far less each frame: the
cube works out its square roots without newlib's slow loop, keeps its
outline's lengths, skips icons that can't be seen, copies only the part of
the frame its glass shows, and isn't drawn at all under a full-screen page
or when Grid and Spotlight park it beside the screen. Upstream's backdrop
picture, which Indigo's background always covered, is no longer drawn under
it. In Dolphin the background's time a frame went from 8.75 ms to 4.25 ms
on Home and from 9.00 ms to 4.50 ms on the Settings face. -
Scrolling back through the Library shows the covers at once: a cover
scrolled past keeps its place in memory until a new one needs it, instead
of being read from the card again. -
Starting a two-disc game no longer reads every disc image in its folder to
find the other disc, only those whose details don't already rule them out. -
A settings save that loses power (or a card pulled mid-save) keeps the
settings from before it or the new ones, never none. -
Moving between games, the old title fades out before the new one fades
in, rather than the two showing over each other. -
With UI Motion on Reduced, the cube no longer moves during the boot and
then stops short. -
The Loading spinner and the progress bar's sweep keep the same speed at
50 Hz as at 60 Hz. -
The Home controller's idle animation no longer stops after Indigo has been
running for an hour and three quarters. -
Holding the stick in the Library's Horizontal, Vertical and Spotlight
layouts, the games glide past without a jump. The strip could fall only
one game behind the selection, so at the stick's pace it skipped forward
two fifths of a card every step; with nine games or more it can fall two
behind now. -
The waves behind the menus ease between Home's quieter strength and the
other screens' as the cube moves, instead of brightening or dimming in one
frame as you leave or come back to Home. -
Coming back to Home, the face's name and the hint under the cube fade in
as the cube grows back to its place, instead of appearing at once over a
cube still on its way. -
On Home, Source's and System's rows and the restart question fade in when
they open, and the highlight fades from row to row as you move instead of
jumping. -
As the boot's cube lands on Home, the icon on the face beside the front
one fades in with the glass's light instead of appearing in one frame. -
A cover, a gameplay still or...
Indigo v2.3.0-rc.2
Release candidate. v2.3.0 as it is meant to ship, for a last round of testing before it does. The current stable release is linked from https://norvitech.com/indigo/.
New
-
A on a save opens its size, source and recorded update date before Actions;
creation dates are explicitly not recorded. Library game details show save
copies, blocks and latest update from cards and the Save Folder. -
Memory Cards opens Swiss
.rawvirtual memory cards on SD, showing their
saves and animated icons. Copy exports a save as a verified.gcifile;
images remain read-only, with Move and Erase dimmed. Unformatted or damaged
images get a clear message. -
Settings › Setup › Library › Library Folders lets you sort your games
into folders. On, the Library shows the folders in/gamesas cards beside
the games, two levels deep: A opens one, B goes back up, and the heading
names the folder you are in. A folder in a folder shows every game below
it. Off (the default), the Library is one list of every game, as before.
Inglobal.iniit isLibrary Folders. -
A folder can have a picture: a PNG beside it with its name, such as
Nintendo.pngfor the Nintendo folder, becomes its poster, as an app's
picture does. A folder without one shows a poster of its name. A picture
over 2 MB is never read, and posters are made one at a time on a thread of
their own, so a large picture neither holds up a button nor runs the
console short of memory. -
Settings › Setup › Console › Wave Speed sets how fast the waves drift:
Slow (half as fast), Normal (the default) or Fast (three times as fast). A
new speed picks up from where the waves are. Inglobal.iniit is
Wave Speed. -
Settings › Setup › Console › Temperature places the temperature dial on
its own: Right, Left or Off, as Clock places the time. Clock moves only the
time now. In the same corner the time sits beside the dial as before; apart,
each sits in its own corner. Inglobal.iniit isTemperature; settings
saved by 2.2, which has noTemperature, keep the dial with the clock. -
Settings › Setup › Console › Cube chooses how Home's cube turns.
Infinite (the default) turns round every face in a ring, as before. Classic
lays the faces out like the GameCube's own menu: Library in front, Settings
on the left, System on the right, Source on top and Apps underneath. From
Library a direction turns to that side; from a side, only the way back or
B returns to Library. The icons stay on their sides as the cube turns, and
a Classic turn arrives in about a quarter of a second. Inglobal.iniit
isCube. -
Memory Cards is the GameCube's own Memory Card screen now. System ›
Memory Cards shows two stacks of small cubes over graph paper, Slot A on
the left and Slot B on the right, a save to a cube. Each cube carries its
game's icon, every frame at its own speed as the GameCube plays it, and
free space shows as smaller, see-through cubes. The
highlighted cube is larger and pale and sways slowly; every cube floats
gently. A bar below shows the highlighted save's banner (or its icon), its
comment and its size in blocks, and above each stack are its letter, Open
and the free blocks. The stick or the D-pad moves from cube to cube and
across from one stack to the other, and a stack scrolls a row at a time.
Visible L Choose storage and R Choose storage buttons open named
Slot A, Slot B and SD card choices. With no physical cards, both columns
open on SD and keep independent folder positions. The screen opens with the Home cube drawing away and the
saves spiralling out into place, and closes back into the cube. -
A Actions from save details opens the GameCube's Move, Copy and Erase
beside its cube.
Move and Copy go to the other stack and ask first, a pale cube pulsing
where the save will land; Erase asks with No highlighted. While the card
works, the save's cube flies across and waits, and it lands only once the
copy has been read back the same and a Move's original removed. The saves
after it slide along, and a maroon box says "Finished copying.",
"Finished moving." or "The data was erased.", closing by itself. An erased
save's cube bursts; a copy that fails flies back and says why. -
Move or Copy is dimmed, its reason shown before you choose it, when the
save can't go: no card, the card has it already, 127 saves, too few free
blocks, a game that won't let its save move, or an SD card that can't be
written.
Changes
-
Game folders skip Mac
._metadata files, so copying a game from a Mac
no longer makes its folder report an invalid disc image. Hidden files in
a game's folder follow Show hidden files, as they do in the file list. -
Save details gives the save name a larger headline, separates blocks and
KiB into clear summaries, aligns source and date fields, and shows distinct
controller hints for Actions and Back. -
The Library's Saves inset gives the copy and block totals more space and
larger text, with a brighter update line beneath them. -
Memory Cards copies and moves a save to the SD card into the folder the
SD card's stack has open, which starts at the Save Folder, rather than
always into the Save Folder; when that folder holds folders, a list offers
it or another folder. A save is no longer moved from one folder of the SD
card to another there: the file browser does that. Delete is Erase now,
and B on the SD card's stack goes up a folder instead of an Up to row. -
The Library's parent card and X return directly to Home at
/games,
retaining that Library root. B and X keep the current game or folder for
the next visit; the root parent card opens on the first actual card.
With Library Folders on, an empty/gamesstays in Indigo with its way
back to Home. -
Every face of the Home cube shows its icon as the cube turns, animated, the
side faces at rest included. An icon on a face turned away from the screen
is drawn four times as wide and twice as tall, then scaled down, so its
thinnest lines keep their light, without breaking into fragments, fading
out or flickering as the cube sways. Mostly horizontal icons, such as
Settings' sliders, still look narrow on a face seen nearly edge-on. -
A slanted line on a face seen nearly edge-on, such as the clock's minute
hand at ten to the hour, no longer disappears at some angles as the cube
sways. Its corners were too sharp for its soft edge, and it was skipped;
it is drawn plain now. -
The halo around the Home cube is gone, as the glow spot under it went in
2.2. -
The Home cube's icons stand a little off the glass instead of lying in it:
the face you are on lifts its icon, which shifts against the glass as the
cube turns and sways. Under it a soft shadow falls on the glass, down and
to the left, away from the light; the icon itself stays sharp. Faces turned
away keep their icons down, so none hangs past the cube's edge. -
A Jet Black backdrop is darker still. Its bottom right corner, the
brightest, read as a grey cloud. -
The CPU temperature holds steady. The console's sensor reads in 4 degree
steps, so a CPU sitting on a step showed one side and then the other every
second (40 °C, 44 °C, 40 °C...). Indigo now shows an average of the last few
seconds' readings, which moves a degree at a time, at the top of the screen
and in System Information alike. -
With Clock at Left, the loading spinner at the top right ran its word
"Loading" from the wheel out to the screen's edge, where a TV can crop it.
It reads inward from the wheel now, in either corner. -
The menus' animated background costs the console far less each frame: the
cube works out its square roots without newlib's slow loop, keeps its
outline's lengths, skips icons that can't be seen, copies only the part of
the frame its glass shows, and isn't drawn at all under a full-screen page
or when Grid and Spotlight park it beside the screen. Upstream's backdrop
picture, which Indigo's background always covered, is no longer drawn under
it. In Dolphin the background's time a frame went from 8.75 ms to 4.25 ms
on Home and from 9.00 ms to 4.50 ms on the Settings face. -
Scrolling back through the Library shows the covers at once: a cover
scrolled past keeps its place in memory until a new one needs it, instead
of being read from the card again. -
Starting a two-disc game no longer reads every disc image in its folder to
find the other disc, only those whose details don't already rule them out. -
A settings save that loses power (or a card pulled mid-save) keeps the
settings from before it or the new ones, never none. -
Moving between games, the old title fades out before the new one fades
in, rather than the two showing over each other. -
With UI Motion on Reduced, the cube no longer moves during the boot and
then stops short. -
The Loading spinner and the progress bar's sweep keep the same speed at
50 Hz as at 60 Hz. -
The Home controller's idle animation no longer stops after Indigo has been
running for an hour and three quarters. -
Holding the stick in the Library's Horizontal, Vertical and Spotlight
layouts, the games glide past without a jump. The strip could fall only
one game behind the selection, so at the stick's pace it skipped forward
two fifths of a card every step; with nine games or more it can fall two
behind now. -
The waves behind the menus ease between Home's quieter strength and the
other screens' as the cube moves, instead of brightening or dimming in one
frame as you leave or come back to Home. -
Coming back to Home, the face's name and the hint under the cube fade in
as the cube grows back to its place, instead of appearing at once over a
cube still on its way. -
On Home, Source's and System's rows and the restart question fade in when
they open, and the highlight fades from row to row as you move instead of
jumping. -
A...
Indigo v2.3.0-rc.1
Release candidate. v2.3.0 as it is meant to ship, for a last round of testing before it does. The current stable release is linked from https://norvitech.com/indigo/.
New
- Settings › Setup › Library › Library Folders lets you sort your games
into folders. On, the Library shows the folders in/gamesas cards beside
the games, two levels deep: A opens one, B goes back up, and the heading
names the folder you are in. A folder in a folder shows every game below
it. Off (the default), the Library is one list of every game, as before.
Inglobal.iniit isLibrary Folders. - A folder can have a picture: a PNG beside it with its name, such as
Nintendo.pngfor the Nintendo folder, becomes its poster, as an app's
picture does. A folder without one shows a poster of its name. A picture
over 2 MB is never read, and posters are made one at a time on a thread of
their own, so a large picture neither holds up a button nor runs the
console short of memory. - Settings › Setup › Console › Wave Speed sets how fast the waves drift:
Slow (half as fast), Normal (the default) or Fast (three times as fast). A
new speed picks up from where the waves are. Inglobal.iniit is
Wave Speed. - Settings › Setup › Console › Temperature places the temperature dial on
its own: Right, Left or Off, as Clock places the time. Clock moves only the
time now. In the same corner the time sits beside the dial as before; apart,
each sits in its own corner. Inglobal.iniit isTemperature; settings
saved by 2.2, which has noTemperature, keep the dial with the clock.
Changes
- Every face of the Home cube shows its icon as the cube turns, animated, the
side faces at rest included. An icon on a face turned away from the screen
is drawn four times as wide and twice as tall, then scaled down, so its
thinnest lines keep their light, without breaking into fragments, fading
out or flickering as the cube sways. Mostly horizontal icons, such as
Settings' sliders, still look narrow on a face seen nearly edge-on. - A slanted line on a face seen nearly edge-on, such as the clock's minute
hand at ten to the hour, no longer disappears at some angles as the cube
sways. Its corners were too sharp for its soft edge, and it was skipped;
it is drawn plain now. - The halo around the Home cube is gone, as the glow spot under it went in
2.2. - The CPU temperature holds steady. The console's sensor reads in 4 degree
steps, so a CPU sitting on a step showed one side and then the other every
second (40 °C, 44 °C, 40 °C...). Indigo now shows an average of the last few
seconds' readings, which moves a degree at a time, at the top of the screen
and in System Information alike. - With Clock at Left, the loading spinner at the top right ran its word
"Loading" from the wheel out to the screen's edge, where a TV can crop it.
It reads inward from the wheel now, in either corner. - The menus' animated background costs the console far less each frame: the
cube works out its square roots without newlib's slow loop, keeps its
outline's lengths, skips icons that can't be seen, copies only the part of
the frame its glass shows, and isn't drawn at all under a full-screen page
or when Grid and Spotlight park it beside the screen. Upstream's backdrop
picture, which Indigo's background always covered, is no longer drawn under
it. In Dolphin the background's time a frame went from 8.75 ms to 4.25 ms
on Home and from 9.00 ms to 4.50 ms on the Settings face. - Scrolling back through the Library shows the covers at once: a cover
scrolled past keeps its place in memory until a new one needs it, instead
of being read from the card again. - Starting a two-disc game no longer reads every disc image in its folder to
find the other disc, only those whose details don't already rule them out. - A settings save that loses power (or a card pulled mid-save) keeps the
settings from before it or the new ones, never none. - Moving between games, the old title fades out before the new one fades
in, rather than the two showing over each other. - With UI Motion on Reduced, the cube no longer moves during the boot and
then stops short. - The Loading spinner and the progress bar's sweep keep the same speed at
50 Hz as at 60 Hz. - The Home controller's idle animation no longer stops after Indigo has been
running for an hour and three quarters.
Fixes
- Apps: a picture with a long block of data in it, more than 256 KB in one
piece (some programs save a PNG that way, or put a large block of
metadata in it), crashed Indigo while it made the app's poster. The
checksum zlib-ng takes of a block that long needs more stack than the
poster thread has; Indigo now takes it 8 KB at a time. Folder pictures
are made the same way. - A game or app could freeze as it started, until the console was switched
off. Stopping the menu's music and sounds could catch the audio DSP with an
answer the CPU had not read yet; the DSP then never took the stop, and the
CPU waited for it with interrupts off. Indigo now builds libogc2's audio
library from its own copy, with the stop fixed to let the DSP finish first. - After a game failed to launch, the menu stayed in the video mode the launch
had switched to for the game. A PAL game left an NTSC console's menu at
50 Hz, which a TV that only takes 60 Hz shows as a black screen, and an
NTSC game left a PAL console's at 60 Hz. The menu goes back to its own mode. - Migrating a settings file from Swiss before 2019 (a single swiss.ini) no
longer overruns the menu's stack, and a cheats file of 4 GiB, or the
console running out of memory while reading one, no longer crashes it.
For developers
test_frame_budget.pyruns the real cube renderer against counting GX
stubs and holds each scene's per-frame cost (square roots, trig, vertices,
GX_Begin calls, EFB pixels copied) to the ceilings in
frame_budget.json;--updatelocks in a gain.make -C cube/swiss BUILD=build-perf TARGET=swiss-perf UI_PERF=1builds the
performance overlay, now with the GPU's own counters; CI builds it beside
every DOL.- One list of C tests drives both the test Makefile and
run_tests.sh, and
the contracts lane builds every fuzzer, so a broken one fails CI. - The DOL is the same bytes in any locale, any folder and whatever tags the
clone has: the build links its files in byte order, names no build path,
andtags.h(read only by upstream's startup autoload, which Indigo drops)
is empty. CI's second build runs in another folder. - New fuzzers and harnesses:
fuzz_cheats(with allocations failing on
purpose), the settings fuzzer now also merges files and migrates a legacy
swiss.ini, andtest_config_save.pycuts the power at every step of a
settings save. - Fuzz runs after "CI passed", so it never holds a runner a required job is
waiting for, and the weekly run fits its hour. Build runsmake -j8 dev,
30 s faster; Reproducible build still builds one file at a time, as the
README does, and proves the two give the same DOL. - The toolchain's digest moves by hand, every copy at once: Dependabot leaves
libogc2 alone andcheck_workflows.pyholds all 13 copies equal. - The menu music is
menu_music.mp3, embedded with#embed, instead of a
5 MB header of numbers. - The DOL is 106 KB smaller: Swiss is built without unwind tables, which
nothing in it reads. - A thread whose stack overflows now crashes in the emulator test as it does on
a console: the runner's Dolphin emulates the data address breakpoint libogc
guards each thread's stack with, where it used to let the overrun corrupt
memory unseen. A stack overflow that crashed a console, but passed CI, now
fails there too. - The emulator test presses a cube turn or a step along a row again when the
menu was too busy to see the press and the screen did not change, as a
person would; the report lists each such press. - AESND, libogc2's audio library, is built from
cube/swiss/aesnd: a copy
byte-identical to the toolchain's libogc2, with Indigo's fix as a patch
applied at build time. CI checks the copy against that commit and the
toolchain, and stops AESND 300 times in the emulator test. - CI saves settings to a card whose writes fail, boots it again and checks
the settings still load in their colours, and its smoke job with every
setting changed now runs on a GC Loader. - The emulator test can put the probe's game in pieces on the SD card
(run.py --fragments N), as a copy onto a used card can leave a game: in
40 it must launch, the most Swiss and a GC Loader can serve, and in more it
must be refused with a message. CI's GC Loader job launches it in 40. - The emulator test can put the SD card in a GC Loader (
run.py --storage gcloader): the runner's Dolphin answers as one, so Indigo finds it, keeps
its settings on its card and launches a game by the game file's fragments,
as on a console with one. CI launches the probe's game that way, in 480p. - The emulator test counts the console's own seconds, which the runner's
Dolphin now reports, for its waits and presses, so a busy machine slows a
run instead of failing it; a failed step says where the console's CPU was. - The emulated SD card can fail as a test asks (
run.py --sd-faults), and
--route savechecks that settings saved to a failing card are still there
on the next boot. - The emulator test runs each job in a video mode of its own: PAL composite
576i, NTSC composite 480i and a component cable's 480p, in both regions. A
console's SRAM now matches its region, and the probe reports the mode the
menu was in, which the smoke route checks after a failed launch of a game
from the other region. Until now every job ran interlaced: 480p never ran. - An SD card can start with settings (
run.py --settings <name>, from
buildtools/ui/emulator/settings/), which must al...
Indigo v2.2.0 — Backdrop and Wave Color, a Clock setting and a cleaner cube
The backdrop and the waves can each have a color of their own, the clock can
move to the top left or go, and the cube draws cleaner on a console: no glow
spot under it, smoother edges, and side faces that show clear glass at rest
instead of broken icons. A Jet Black backdrop is nearly black now.
New
- Settings › Setup › Console › Clock puts the time and the temperature
dial in the top right corner (the default), the top left, or nowhere. The
loading spinner and the Source screen's label move to the other corner. - Settings › Setup › Console has Backdrop Color and Wave Color under
Menu Color. The backdrop behind the cube and the waves in front of it can
each keep a color of their own, one of Menu Color's eight, or follow Menu
Color as before (the default). Like Menu Color, A lists the colors and the
screen shows each one as you move through the list. Inglobal.inithey are
Backdrop ColorandWave Color.
Changes
- A Jet Black backdrop is nearly black now. Gray at Indigo's brightness read
light on a TV. - The glow spot on the floor under the Home cube is gone; the halo behind the
cube stays. - The cube's edges are smoother on a console. The lights mirrored in the glass
no longer break into a dashed line along a bevel seen nearly edge-on, and the
rim of light on the top right corner no longer stair-steps. - The icons on the cube's side faces no longer break into fragments, such as
the Settings face's sliders showing as crosses. An icon fades as its face
turns edge-on and comes back as the face turns round, so at rest the faces
to either side show clear glass.
Install
New to Indigo:
- First, before you copy anything: if the card already has an
ipl.dolin its root, that is your current Swiss. Rename it toz.dolto keep it; with PicoBoot or PicoLoader, holding Z at power-on starts it. - Unzip
Indigo-v2.2.0.zip(below), select everything inside and drag it onto the root of the card. Let it replace files of the same name. On a Mac, hold Option as you drop and choose Merge: Replace deletes what is already in the card'sswissfolder (your settings, cheats and saves). - Put your games in
/games(make the folder if the card has none), with nothing else in it or in the game folders, and power on.
Updating from Indigo 1.x: ipl.dol is already Indigo, so don't rename it; copy the new files over the old ones, choosing Merge on a Mac. If 1.25.0 made you rename stock Swiss to swiss.dol, you can rename it back to z.dol: since 2.0, Indigo doesn't start it by itself (#3).
PicoBoot and PicoLoader boot ipl.dol. FlippyDrive boots boot.dol, and with GC Loader or another loader that boots a disc image you start ipl.dol from Swiss: the install guide covers every loader, updating and going back to stock Swiss.
Posters and cheats (optional; unzip one and drag its swiss folder onto the card the same way): Posters (every region, with Spotlight's stills and descriptions) · Cheats
Verify: SHA256SUMS.txt lists the zip's SHA-256, and the zip carries a build provenance attestation: gh attestation verify Indigo-v2.2.0.zip --repo spencercnorton/indigo.
Indigo v2.1.1 — ipl.dol uncompressed again
2.1.0's compressed ipl.dol could leave the console restarting over and over
at power-on instead of starting Indigo. 2.1.1 is 2.1.0 with ipl.dol
uncompressed again, as it was in 2.0.1; everything else is the same.
Fixes
ipl.dolis the uncompressed DOL again (5.5 MB). The compressed one in
2.1.0 did not start on a GameCube booted from a GC Loader: it failed to
unpack, the console restarted, the loader read it again and it looped. If
you installed 2.1.0, copy 2.1.1's files over it the same way.
For developers
- The zip's
ipl.doliscube/swiss/swiss.dolagain, and the packing from
#57 (verify_dol.py --packed,dolphin_ipl.py, the compressed file in
Reproducible build and the Emulator job) is reverted. The compressed DOL
passed CI and Dolphin but not a console, so it ships again only after a
console test.
Everything in 2.1
2.1.1 carries all of 2.1.0, which is withdrawn because of the ipl.dol above:
A fourth Library layout, Spotlight, with a gameplay still and a description
for every game; Apps, a fifth face of the cube for your emulators and other
programs, with your own pictures as posters; one poster pack for every
region; and everything upstream Swiss changed up to r2119.
Swiss r2119
Indigo is built on upstream Swiss r2119 now, up from a July build between
r2073 and r2092, and has everything upstream changed since:
- Games start with Swiss's current video timings: the timing tables Swiss
gives every game, and a +0 vertical offset by default. Under GCVideo or
GCDigital compatibility, the default, every game started at -3 (#42). - Turning off controller rumble no longer makes games reset after 32
minutes. - Neighbours from Hell returns to its menu. Animal Crossing Deluxe starts
without disc read speed emulation, and discs with Kawasedo's NES emulator
without the forced anisotropic filter. - Swiss Video Mode offers 240p and 288p.
- Setup › Library › Load at startup chooses a device and a folder for Indigo
to open when it starts. Z on a game's details still sets a game. - A game's name and description from its banner, when written in another
encoding such as Japanese Shift JIS, show far fewer garbled characters. - In the file lists, a clap on the DK Bongos jumps to the next game that
uses them. - Fixes to the SD card file system (FatFs R0.16-p2), the FTP client,
copying a file onto a name that already exists, and the stub that
reloads Swiss. - An NKit.iso of an ArtX diagnostic disc says it can't be played in that
format. - The Redump and [T-En] Collection game databases are current.
- The first start from a GC Loader or PicoLoader boot image says that
System Boot Mode › Production brings back the GameCube logo screen.
Library
- A fourth Library Layout, Spotlight: the selected game's gameplay still
fills a 4:3 panel, with its title, publisher, a description and its game
ID in the column beside it, over a row of disc banners, the selected
game's in the middle and a little larger. Left and Right move along the
row, as in Horizontal; the still changes with the title. A game without a still shows its cover there, and leaves from it
for its details. Choose it in Settings › Setup › Library › Library
Layout. - Spotlight's stills come from
/swiss/ui/stills.pak, a second pack next to
the posters: one 320×240 screenshot per game. The poster pack carries it
besideposters.pak, made from the libretro-thumbnails project's
GameCube screenshots;poster_pack.py --stillsbuilds one from your own. - Spotlight describes every game: a few sentences from
/swiss/ui/descriptions.txt, which the poster pack carries too
(English descriptions from GameTDB), else the description on the game's
disc banner. A game with neither says so. The file is plain text you can
edit, one game per line. - The Spotlight layout's design comes from
Gameplay Spotlight by mvizensk,
with its author's permission. System › Credits andNOTICEthank them.
One poster pack
- Posters are one download now, for every region: box art for every
GameCube game GameTDB has a cover for, with Spotlight's stills and
descriptions. There is no region to choose, and a card that mixes USA,
Japanese and European games gets posters for all of them. A pack holds up
to 2,048 games, up from 1,024. Indigo 2.0 and earlier refuse a pack this
big; the regional packs their release notes link stay online for them.
Apps
- New: Apps, for the programs on your card that aren't games (emulators,
Game Boy Interface, tools). Put their.dol,.dol+clior.elffiles in
/appsat the root of the card, loose or each in a folder of its own, and
Home gets a fifth face, Apps, one turn left of Library. A on it shows them
as posters in your Library Layout, moving the same way; A starts one, with
the launch screen games have, and B goes back to Home. Swiss's.cliand
.dcpfiles beside a program still work. Without apps on the card, Home is
the four faces it was. - Setup › Console › Apps Face (
Hide Apps Faceinglobal.ini) turns the
Apps face off, and Indigo then doesn't look in/appsat all. It is On by
default. - Each app's poster is your own picture: a PNG beside the program with its
name (gbi.pngforgbi.dol), or its folder'sicon.png, up to 2048
pixels a side. Indigo converts it on the console, so there is no pack to
build. A poster-shaped picture fills the card; a square icon or a Homebrew
Channel banner sits in the middle over a backdrop in its own colours. - An app without a picture gets a poster of its name, in big letters split
where the name has a-,_or space, in a colour picked from its first
word: Game Boy Interface'sgbihf-osscandgbihf-direct-hdmishare one,
and itsgbisrvariants have another. boot.dolis left out of Apps, since the Wii's Homebrew Channel layout uses
that name for the Wii program, and so are hidden files and names starting
with a dot.- The cube's icons fade one by one. When a turn has to move an icon to
another side, as turning sideways and then tipping at once does, only that
icon fades out and back in, where every icon used to. With five faces the
icons you can see never have to move: only ones facing away do.
Fixes
- A file in
/gamesthat isn't a game no longer hides the Library. A text
file, a cover picture or an empty folder there, or in a game's folder,
turned the whole Library into Swiss's plain file list, with no sign of
which file did it, and Library Layout and posters then seemed to do
nothing. The Library now skips them and shows the games. Swiss's list
comes back only when/gamesholds no disc images at all. - The glass cube no longer sparkles along its edges on a console. Single
pixels flickered where a face meets a bevel and where a bevel meets a
corner: the glass's refraction, reflection and sheen cut a face's side and
the bevel beside it at different points, and the GameCube snaps every
point to a sixteenth of a pixel, which opened and closed pixels along the
seam as the cube moved. Both sides are now cut at the same points, made
the same way. The round ends of the icons' strokes (the controller's
triggers and X and Y, the disc's glints) had the same fault and are fixed
too. Dolphin's finer snap hid it. - System Information shows the whole date: weekdays and months are three
letters (TUE SEP 29, 2026). A long one, such as a Tuesday in September,
ended in an ellipsis.
For developers
UPSTREAMnames the upstream Swiss commit Indigo is built on,
now r2119, and lists the upstream files Indigo changes, each with the
reason. CI checks it both ways: a change to an
upstream file that the list leaves out fails, and so does a listed file
that matches upstream again. It replaces the interface-only gate and its
exact-line exceptions, which are now lines in that list.
buildtools/upstream_merge.sh <commit>moves to another upstream commit:
it merges upstream's changes over the difference in line endings, updates
the commit, and lists anything left to resolve.- The size tripwires are 6 MiB for the DOL (
verify_dol.py) and 7 MiB for
the zip (check_package.py), up from 5 and 6: the DOL is about 5.2 MiB
and the zip about 6.1 MiB with the text-encoding libraries r2119 links. - The pack builder makes gameplay stills as well as posters:
poster_pack.py --stills <folder>writesstills.pak, one 320×240
screenshot per game in the poster pack's format. The Library's art cache
loads a stills pack next to the poster pack, in three slots of its own.
docs/PACKS.md describes
the format, which the source cited but the repository never had. - Game details read no further than a disc banner's 128-character
description, which need not end in a NUL; they could read on into the
memory after it.
Install
New to Indigo:
- First, before you copy anything: if the card already has an
ipl.dolin its root, that is your current Swiss. Rename it toz.dolto keep it; with PicoBoot or PicoLoader, holding Z at power-on starts it. - Unzip
Indigo-v2.1.1.zip(below), select everything inside and drag it onto the root of the card. Let it replace files of the same name. On a Mac, hold Option as you drop and choose Merge: Replace deletes what is already in the card'sswissfolder (your settings, cheats and saves). - Put your games in
/games(make the folder if the card has none), with nothing else in it or in the game folders, and power on.
Updating from Indigo 1.x: ipl.dol is already Indigo, so don't rename it; copy the new files over the old ones, choosing Merge on a Mac. If 1.25.0 made you rename stock Swiss to swiss.dol, you can rename it back to z.dol: since 2.0, Indi...
Indigo v2.0.1 — The download keeps your games folder
Three fixes to 2.0: the download, where System Information sends you for help, and a
flash between a game's details and its settings.
Fixes
- The download no longer carries an empty
gamesfolder. On a Mac,
choosing Replace when dropping it on the card swapped the card's own
gamesfolder, and every game in it, for the empty one. Make/gameson
the card if it has none; the install steps say so. - System Information › About Indigo sends bug reports and questions to
Indigo's GitHub issues and discussions. It pointed to upstream Swiss's
community, which does not support Indigo. - Opening a game's settings from its details and leaving them no longer
flashes the empty background in between. The details went away as the
button went down, but the settings page came up only once it was let go,
and on the way back the page went first; for as long as the button was
held, about a tenth of a second on a quick press, only the background and
the cube showed. The page now comes up on the press and stays until the
button is let go. Opening and leaving Settings from Home flashed the same
way and is fixed too.
For developers
- A CI machine names its runners "indigo" unless
INDIGO_CI_NAMEsays
otherwise, instead of after its hostname: runner names show in public job
logs. - The CI runner supervisor keeps running when GitHub or Docker fails, and
retries on its next pass. It used to exit on one slow GitHub reply. After
five failed passes in a row it runsINDIGO_CI_ALERT, and it runs it again
when it recovers. The command now also getsINDIGO_CI_ALERT_KEYand
INDIGO_CI_ALERT_STATE, so it can close its own notification. - The build uses libogc2's toolchain image of 2026-09-28
(sha256:e6531ec…), up from 2026-07-05's. CI, releases, both runner
images, the poster pack builder and the build commands in the README, the
guide and AGENTS.md all name it. The poster builder had its own older pin.
The new image has an arm64 build as well, so it runs natively on
Apple-silicon Macs.
Install
New to Indigo:
- First, before you copy anything: if the card already has an
ipl.dolin its root, that is your current Swiss. Rename it toz.dolto keep it; with PicoBoot or PicoLoader, holding Z at power-on starts it. - Unzip
Indigo-v2.0.1.zip(below), select everything inside and drag it onto the root of the card. Let it replace files of the same name. On a Mac, hold Option as you drop and choose Merge: Replace deletes what is already in the card'sswissfolder (your settings, cheats and saves). - Put your games in
/games(make the folder if the card has none), with nothing else in it or in the game folders, and power on.
Updating from Indigo 1.x: ipl.dol is already Indigo, so don't rename it; copy the new files over the old ones, choosing Merge on a Mac. If 1.25.0 made you rename stock Swiss to swiss.dol, you can rename it back to z.dol: since 2.0, Indigo doesn't start it by itself (#3).
PicoBoot and PicoLoader boot ipl.dol. FlippyDrive boots boot.dol, and with GC Loader or another loader that boots a disc image you start ipl.dol from Swiss: the install guide covers every loader, updating and going back to stock Swiss.
Posters and cheats (optional; unzip one and drag its swiss folder onto the card the same way): Posters: USA & Japan · Posters: Europe & Australia · Cheats
Verify: SHA256SUMS.txt lists the zip's SHA-256, and the zip carries a build provenance attestation: gh attestation verify Indigo-v2.0.1.zip --repo spencercnorton/indigo.