Skip to content

Releases: spencernorton/indigo

Indigo v2.5.0-rc.1

Indigo v2.5.0-rc.1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 19 Oct 23:42
d61365f

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 as Apps Video Mode in 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 commit UPSTREAM names. Cheap gates first
    (one ls-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.sh command. 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

Choose a tag to compare

@github-actions github-actions released this 16 Oct 22:31
34f9222

New

  • The Library finds your games on whichever storage holds them: when the
    boot device has no /games folder (such as a GC Loader with the games on
    an SD2SP2 card), Indigo opens the first /games on 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
    .raw virtual 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 in swiss/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
    .fzn file to a WiiKey Fusion or a `....
Read more

Indigo v2.3.1-rc.2

Indigo v2.3.1-rc.2 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 05 Oct 22:54
346b5f2

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

Indigo v2.3.1-rc.1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 05 Oct 21:04
2b4d69e

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

Choose a tag to compare

@github-actions github-actions released this 05 Oct 01:55
f1904c7

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 .raw virtual memory cards on SD, showing their
    saves and animated icons. Copy exports a save as a verified .gci file;
    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 /games as 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.
    In global.ini it is Library Folders.

  • A folder can have a picture: a PNG beside it with its name, such as
    Nintendo.png for 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. In global.ini it 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. In global.ini it is Temperature; settings
    saved by 2.2, which has no Temperature, 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. In global.ini it
    is Cube.

  • 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 /games stays 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...

Read more

Indigo v2.3.0-rc.2

Indigo v2.3.0-rc.2 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 04 Oct 21:01
a261a4b

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 .raw virtual memory cards on SD, showing their
    saves and animated icons. Copy exports a save as a verified .gci file;
    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 /games as 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.
    In global.ini it is Library Folders.

  • A folder can have a picture: a PNG beside it with its name, such as
    Nintendo.png for 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. In global.ini it 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. In global.ini it is Temperature; settings
    saved by 2.2, which has no Temperature, 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. In global.ini it
    is Cube.

  • 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 /games stays 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...

Read more

Indigo v2.3.0-rc.1

Indigo v2.3.0-rc.1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 02 Oct 20:04
17a9ab0

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 /games as 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.
    In global.ini it is Library Folders.
  • A folder can have a picture: a PNG beside it with its name, such as
    Nintendo.png for 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. In global.ini it 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. In global.ini it is Temperature; settings
    saved by 2.2, which has no Temperature, 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.py runs 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; --update locks in a gain.
  • make -C cube/swiss BUILD=build-perf TARGET=swiss-perf UI_PERF=1 builds 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,
    and tags.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, and test_config_save.py cuts 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 runs make -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 and check_workflows.py holds 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 save checks 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...
Read more

Indigo v2.2.0 — Backdrop and Wave Color, a Clock setting and a cleaner cube

Choose a tag to compare

@github-actions github-actions released this 01 Oct 02:25
65bbef3

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. In global.ini they are
    Backdrop Color and Wave 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:

  1. First, before you copy anything: if the card already has an ipl.dol in its root, that is your current Swiss. Rename it to z.dol to keep it; with PicoBoot or PicoLoader, holding Z at power-on starts it.
  2. 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's swiss folder (your settings, cheats and saves).
  3. 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

Choose a tag to compare

@github-actions github-actions released this 30 Sep 11:44
0c38db6

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.dol is 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.dol is cube/swiss/swiss.dol again, 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
    beside posters.pak, made from the libretro-thumbnails project's
    GameCube screenshots; poster_pack.py --stills builds 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 and NOTICE thank 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+cli or .elf files in
    /apps at 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 .cli and
    .dcp files beside a program still work. Without apps on the card, Home is
    the four faces it was.
  • Setup › Console › Apps Face (Hide Apps Face in global.ini) turns the
    Apps face off, and Indigo then doesn't look in /apps at all. It is On by
    default.
  • Each app's poster is your own picture: a PNG beside the program with its
    name (gbi.png for gbi.dol), or its folder's icon.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's gbihf-ossc and gbihf-direct-hdmi share one,
    and its gbisr variants have another.
  • boot.dol is 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 /games that 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 /games holds 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

  • UPSTREAM names 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> writes stills.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:

  1. First, before you copy anything: if the card already has an ipl.dol in its root, that is your current Swiss. Rename it to z.dol to keep it; with PicoBoot or PicoLoader, holding Z at power-on starts it.
  2. 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's swiss folder (your settings, cheats and saves).
  3. 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...

Read more

Indigo v2.0.1 — The download keeps your games folder

Choose a tag to compare

@github-actions github-actions released this 29 Sep 21:45
465c008

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 games folder. On a Mac,
    choosing Replace when dropping it on the card swapped the card's own
    games folder, and every game in it, for the empty one. Make /games on
    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_NAME says
    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 runs INDIGO_CI_ALERT, and it runs it again
    when it recovers. The command now also gets INDIGO_CI_ALERT_KEY and
    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:

  1. First, before you copy anything: if the card already has an ipl.dol in its root, that is your current Swiss. Rename it to z.dol to keep it; with PicoBoot or PicoLoader, holding Z at power-on starts it.
  2. 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's swiss folder (your settings, cheats and saves).
  3. 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.