Import Discovery Screen - cressie176/Load64 GitHub Wiki
Review discovered games, select which to import, and begin the per-game import flow.
Shown when all discovered games are new to the library. No tab bar is shown — the list occupies the full available height.
┌──────────────────────────────────────────────────────────────────────────────┐
│ TOP BAR │
│ Import Games > Discover [Next] [Back] │
├──────────────────────────────────────────────────────────────────────────────┤
│ │
│ GAME LIST │
│ ┌────────────────────────────────────────────────────────────────────────┐ │
│ │ SELECTION CONTROLS │ │
│ │ Select All Select None │ │
│ ├────────────────────────────────────────────────────────────────────────┤ │
│ │ Title Publisher Year │ │
│ │ ──────────────────────────────────────────────────────────────────── │ │
│ │ [x] Bubble Bobble Firebird 1987 │ │
│ │ [x] Commando Elite Systems 1985 │ │
│ │ [x] Montezuma's Revenge Parker Brothers 1984 │ │
│ │ [x] The Last Ninja System 3 1987 │ │
│ │ [x] Turrican Rainbow Arts 1990 │ │
│ │ [x] Wizball Ocean 1987 │ │
│ │ [x] game-tape2 — — │ │
│ └────────────────────────────────────────────────────────────────────────┘ │
│ │
├──────────────────────────────────────────────────────────────────────────────┤
│ BOTTOM BAR │
│ 42 of 42 selected │
└──────────────────────────────────────────────────────────────────────────────┘
Shown when the source contains both new and already-imported games. A tab bar appears at the top of the list. The New tab is active by default.
┌──────────────────────────────────────────────────────────────────────────────┐
│ TOP BAR │
│ Import Games > Discover [Next] [Back] │
├──────────────────────────────────────────────────────────────────────────────┤
│ │
│ GAME LIST │
│ ┌────────────────────────────────────────────────────────────────────────┐ │
│ │ TAB BAR │ │
│ │ [ New (42) ] Already Imported (25) │ │
│ ├────────────────────────────────────────────────────────────────────────┤ │
│ │ SELECTION CONTROLS │ │
│ │ Select All Select None │ │
│ ├────────────────────────────────────────────────────────────────────────┤ │
│ │ Title Publisher Year │ │
│ │ ──────────────────────────────────────────────────────────────────── │ │
│ │ [x] Bubble Bobble Firebird 1987 │ │
│ │ [x] The Last Ninja System 3 1987 │ │
│ │ [x] Turrican Rainbow Arts 1990 │ │
│ │ [x] Wizball Ocean 1987 │ │
│ │ … │ │
│ └────────────────────────────────────────────────────────────────────────┘ │
│ │
├──────────────────────────────────────────────────────────────────────────────┤
│ BOTTOM BAR │
│ 42 of 67 selected │
└──────────────────────────────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────────────────────────────┐
│ TOP BAR │
│ Import Games > Discover [Next] [Back] │
├──────────────────────────────────────────────────────────────────────────────┤
│ │
│ GAME LIST │
│ ┌────────────────────────────────────────────────────────────────────────┐ │
│ │ TAB BAR │ │
│ │ New (42) [ Already Imported (25) ] │ │
│ ├────────────────────────────────────────────────────────────────────────┤ │
│ │ SELECTION CONTROLS │ │
│ │ Select All Select None │ │
│ ├────────────────────────────────────────────────────────────────────────┤ │
│ │ Title Publisher Year │ │
│ │ ──────────────────────────────────────────────────────────────────── │ │
│ │ [ ] International Soccer Commodore 1983 │ │
│ │ [ ] Jet Set Willy Software Projects 1984 │ │
│ │ [ ] Paradroid Hewson 1985 │ │
│ │ … │ │
│ └────────────────────────────────────────────────────────────────────────┘ │
│ │
├──────────────────────────────────────────────────────────────────────────────┤
│ BOTTOM BAR │
│ 42 of 67 selected │
└──────────────────────────────────────────────────────────────────────────────┘
Shown when every discovered game is already in the library. No tab bar is shown. All games are deselected by default; the bottom bar signals that nothing new was found.
┌──────────────────────────────────────────────────────────────────────────────┐
│ TOP BAR │
│ Import Games > Discover [Next] [Back] │
├──────────────────────────────────────────────────────────────────────────────┤
│ │
│ GAME LIST │
│ ┌────────────────────────────────────────────────────────────────────────┐ │
│ │ SELECTION CONTROLS │ │
│ │ Select All Select None │ │
│ ├────────────────────────────────────────────────────────────────────────┤ │
│ │ Title Publisher Year │ │
│ │ ──────────────────────────────────────────────────────────────────── │ │
│ │ [ ] International Soccer Commodore 1983 │ │
│ │ [ ] Jet Set Willy Software Projects 1984 │ │
│ │ [ ] Paradroid Hewson 1985 │ │
│ │ … │ │
│ └────────────────────────────────────────────────────────────────────────┘ │
│ │
├──────────────────────────────────────────────────────────────────────────────┤
│ BOTTOM BAR │
│ Nothing new to import. │
└──────────────────────────────────────────────────────────────────────────────┘
[Next] is shown but disabled until the user selects at least one game.
Shown when no ROM files were found at the source path.
┌──────────────────────────────────────────────────────────────────────────────┐
│ TOP BAR │
│ Import Games > Discover [Back] │
├──────────────────────────────────────────────────────────────────────────────┤
│ │
├──────────────────────────────────────────────────────────────────────────────┤
│ BOTTOM BAR │
│ Nothing to import. │
└──────────────────────────────────────────────────────────────────────────────┘
[Next] is not shown.
Focusable: [Next] and [Back] CTAs (games found); [Back] CTA only (nothing to import)
Interactive: [Next] and [Back] CTAs (games found); [Back] CTA only (nothing to import)
Purpose: Identify the current screen and provide the import action
Returns to the Import Games screen.
Shown whenever at least one game was discovered (including the already-imported-only state). Disabled until at least one game is selected.
Begins the sequential per-game import flow, starting with the first selected game on the Import Candidate screen. New games are processed before already-imported games. Within each group, games are processed in alphabetical order. Deselected games are skipped entirely. When all selected games have been imported, returns to the Import Games screen.
Type: Multi-selection vertical list with optional tab bar
Focusable: Yes (primary focus region)
Interactive: Yes
Order: Alphabetically by title within each tab
Purpose: Show all discovered games and allow the user to choose which to import
The game list has three vertically stacked sub-zones: TAB BAR (when present), SELECTION CONTROLS, and the scrollable game rows. Up/Down navigates between zones; within the game rows, Up/Down moves between rows.
The tab bar appears only when there are both new and already-imported games. When only one category is present, the tab bar is omitted.
Only shown when both new and already-imported games are present.
| Controller | Keyboard | Behaviour |
|---|---|---|
| D-Pad Up | Up | No effect (top of list) |
| D-Pad Down | Down | Move focus to Selection Controls |
| D-Pad Left | Left | Switch to New tab |
| D-Pad Right | Right | Switch to Already Imported tab |
The active tab is visually distinguished. The inactive tab label is shown without decoration. Switching tabs does not affect selections — games remain selected or deselected regardless of which tab is visible.
Select All and Select None appear in their own zone between the tab bar (or top of the list) and the game rows. They are scoped to the currently visible tab.
| Controller | Keyboard | Behaviour |
|---|---|---|
| D-Pad Up | Up | Move focus to Tab Bar (if present) |
| D-Pad Down | Down | Move focus to first game row |
| D-Pad Left | Left | Focus Select All |
| D-Pad Right | Right | Focus Select None |
| A / Select | Enter | Activate focused control |
Each row shows:
- A checkbox indicator:
[x](selected) or[ ](deselected) - Title — for recognised games, from the LoadC64 Catalogue; for unrecognised games, derived from the filename (see Import Candidate screen)
- Publisher — from the LoadC64 Catalogue, or
—if unrecognised - Year — from the LoadC64 Catalogue, or
—if unrecognised
| Controller | Keyboard | Behaviour |
|---|---|---|
| D-Pad Up | Up | Move up one row; from row 0, move to Selection Controls |
| D-Pad Down | Down | Move down one row |
| D-Pad Left | Left | No effect |
| D-Pad Right | Right | No effect |
| A / Select | Enter | Toggle selection of focused row |
The list scrolls vertically. There is no pagination.
Focusable: No
Interactive: No
Purpose: Display the current selection count or a status message
The selection count covers both tabs combined:
├──────────────────────────────────────────────────────────────────────────────┤
│ BOTTOM BAR │
│ 42 of 67 selected │
└──────────────────────────────────────────────────────────────────────────────┘
When all discovered games are already imported (none new):
├──────────────────────────────────────────────────────────────────────────────┤
│ BOTTOM BAR │
│ Nothing new to import. │
└──────────────────────────────────────────────────────────────────────────────┘
When no ROM files were found:
├──────────────────────────────────────────────────────────────────────────────┤
│ BOTTOM BAR │
│ Nothing to import. │
└──────────────────────────────────────────────────────────────────────────────┘
- New games are pre-selected on arrival; already-imported games are deselected.
- When both new and already-imported games are present, the New tab is active by default.
- The tab bar is not shown when only one category of game is present.
- Select All and Select None are scoped to the currently visible tab.
- The selection count in the bottom bar reflects the total across both tabs and updates immediately when the user toggles a row or uses a selection control.
- If an already-imported game is selected and imported, the existing library record is updated (upserted) rather than duplicated. The ROMSet ID is the stable key used to identify the existing record.
- Returning from a cancelled per-game import resumes from the next unprocessed selected game.
- When all selected games have been imported or skipped, returns to the Import Games screen.