mirror of
https://github.com/emuplace/sudachi.emuplace.app.git
synced 2025-08-25 21:40:03 +02:00
Compare commits
9 commits
Author | SHA1 | Date | |
---|---|---|---|
|
52ac8a20f3 | ||
|
f55cc74b55 | ||
|
4f68b1eb37 | ||
|
33f5808d8f | ||
|
43e9d5aeee | ||
|
fbf743f5cb | ||
|
777a49771a | ||
|
f948baa5d9 | ||
|
6edf53fdd5 |
5 changed files with 5252 additions and 5666 deletions
1562
package-lock.json
generated
1562
package-lock.json
generated
File diff suppressed because it is too large
Load diff
|
@ -7,7 +7,8 @@
|
||||||
"dev": "vite dev",
|
"dev": "vite dev",
|
||||||
"build": "tsc && vite build",
|
"build": "tsc && vite build",
|
||||||
"lint": "eslint src --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
|
"lint": "eslint src --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
|
||||||
"preview": "vite preview"
|
"preview": "vite preview",
|
||||||
|
"emulate": "npm run build && firebase emulators:start --only hosting"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@mantine/core": "7.11.1",
|
"@mantine/core": "7.11.1",
|
||||||
|
@ -23,7 +24,7 @@
|
||||||
"@types/react-dom": "^18.3.0",
|
"@types/react-dom": "^18.3.0",
|
||||||
"@typescript-eslint/eslint-plugin": "^7.13.1",
|
"@typescript-eslint/eslint-plugin": "^7.13.1",
|
||||||
"@typescript-eslint/parser": "^7.13.1",
|
"@typescript-eslint/parser": "^7.13.1",
|
||||||
"@vanilla-extract/vite-plugin": "^4.0.11",
|
"@vanilla-extract/vite-plugin": "^5.0.7",
|
||||||
"@vitejs/plugin-react": "^4.3.1",
|
"@vitejs/plugin-react": "^4.3.1",
|
||||||
"eslint": "^8.57.0",
|
"eslint": "^8.57.0",
|
||||||
"eslint-plugin-react-hooks": "^4.6.2",
|
"eslint-plugin-react-hooks": "^4.6.2",
|
||||||
|
@ -32,7 +33,7 @@
|
||||||
"postcss-preset-mantine": "1.15.0",
|
"postcss-preset-mantine": "1.15.0",
|
||||||
"postcss-simple-vars": "^7.0.1",
|
"postcss-simple-vars": "^7.0.1",
|
||||||
"typescript": "^5.5.2",
|
"typescript": "^5.5.2",
|
||||||
"vite": "^5.3.1"
|
"vite": "^6.3.5"
|
||||||
},
|
},
|
||||||
"packageManager": "yarn@4.3.1"
|
"packageManager": "yarn@4.3.1"
|
||||||
}
|
}
|
||||||
|
|
615
src/App.tsx
615
src/App.tsx
|
@ -1,312 +1,335 @@
|
||||||
import "@mantine/core/styles.css";
|
import "@mantine/core/styles.css";
|
||||||
import {
|
import {
|
||||||
Accordion, Anchor, Badge, Button, Container,
|
Accordion,
|
||||||
Flex, Group, List, MantineProvider,
|
Anchor, Badge, Button, Center, Flex,
|
||||||
Space, Stack, Text, Title,
|
Group,
|
||||||
VisuallyHidden
|
List,
|
||||||
|
MantineProvider,
|
||||||
|
Space,
|
||||||
|
Stack, Text, Title
|
||||||
} from "@mantine/core";
|
} from "@mantine/core";
|
||||||
import { theme } from "./theme";
|
import { theme } from "./theme";
|
||||||
|
|
||||||
export default function App() {
|
export default function App() {
|
||||||
const changes = [
|
const changes = [
|
||||||
{
|
{
|
||||||
text: 'v1.0.12',
|
text: 'Latest Changes',
|
||||||
sha: '0622bd8',
|
secondaryText: 'Updated 2nd July 2025',
|
||||||
|
details: [
|
||||||
|
{
|
||||||
|
header: 'Added',
|
||||||
|
items: [
|
||||||
|
{
|
||||||
|
title: 'Added missing functions to IAudioController to include FW 19.0.0+ support',
|
||||||
|
subtitle: ''
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Added missing functions to IParentalControlService to include FW 18.0.0+ support',
|
||||||
|
subtitle: ''
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Added missing functions to IProfile and IProfileEditor to include FW 15.0.0 and 18.0.0+ support',
|
||||||
|
subtitle: ''
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
header: 'Changed',
|
||||||
|
items: []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
header: 'Deprecated',
|
||||||
|
items: []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
header: 'Fixed',
|
||||||
|
items: []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
header: 'Removed',
|
||||||
|
items: []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
header: 'Security',
|
||||||
|
items: []
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: 'Older Changes',
|
||||||
|
secondaryText: 'Updated 20th June 2025',
|
||||||
|
details: [
|
||||||
|
{
|
||||||
|
header: 'Added',
|
||||||
|
items: [
|
||||||
|
{
|
||||||
|
title: 'Added missing master_key_* identifiers from 0x0B to 0x13 to include FW 18.0.0+ support',
|
||||||
|
subtitle: ''
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Added AliasRegionExtraSize to Kernel, ProgramMetadata and SVC to include FW 18.0.0+ support',
|
||||||
|
subtitle: ''
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
header: 'Changed',
|
||||||
|
items: [
|
||||||
|
{
|
||||||
|
title: 'Rewrote the AppletAE, MM:U and NVMEMP services to improve accuracy',
|
||||||
|
subtitle: ''
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Rewrote the RawNACP structure to improve accuracy and include FW 20.0.0+ support',
|
||||||
|
subtitle: ''
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
header: 'Deprecated',
|
||||||
|
items: []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
header: 'Fixed',
|
||||||
|
items: [
|
||||||
|
{
|
||||||
|
title: 'Fixed compilation errors and issues with Mbed-TLS',
|
||||||
|
subtitle: ''
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
header: 'Removed',
|
||||||
|
items: []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
header: 'Security',
|
||||||
|
items: []
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
const items = changes.map((item) => {
|
||||||
|
return (
|
||||||
|
<Accordion.Item key={item.text} value={item.text}>
|
||||||
|
<Accordion.Control>
|
||||||
|
<Group justify={'space-between'} mr={'sm'}>
|
||||||
|
<Text>
|
||||||
|
{item.text}
|
||||||
|
</Text>
|
||||||
|
<Text c={'dimmed'}>
|
||||||
|
{item.secondaryText}
|
||||||
|
</Text>
|
||||||
|
</Group>
|
||||||
|
</Accordion.Control>
|
||||||
|
<Accordion.Panel mr={'md'}>
|
||||||
|
{
|
||||||
|
item.details.map((detail, index) => (
|
||||||
|
<>
|
||||||
|
<Title order={2}>
|
||||||
|
{detail.header}
|
||||||
|
</Title>
|
||||||
|
<List>
|
||||||
|
{
|
||||||
|
detail.items.length == 0 ? (
|
||||||
|
<Text c={'dimmed'}>Unchanged</Text>
|
||||||
|
) : (
|
||||||
|
detail.items.map((item) => (
|
||||||
|
<List.Item>
|
||||||
|
<Text c={'dimmed'}>
|
||||||
|
{item.title}
|
||||||
|
</Text>
|
||||||
|
</List.Item>
|
||||||
|
))
|
||||||
|
)
|
||||||
|
}
|
||||||
|
</List>
|
||||||
|
<Space h={index == item.details.length - 1 ? 0 : 'md'} />
|
||||||
|
</>
|
||||||
|
))
|
||||||
|
}
|
||||||
|
</Accordion.Panel>
|
||||||
|
</Accordion.Item>
|
||||||
|
)
|
||||||
|
})
|
||||||
|
|
||||||
|
const date = new Date()
|
||||||
|
|
||||||
|
return (
|
||||||
|
<MantineProvider theme={theme} forceColorScheme={date.getHours() >= 7 && date.getHours() <= 19 ? 'light' : 'dark'}>
|
||||||
|
<Flex align={'center'} h={'100vh'} justify={'center'} mx={'md'}>
|
||||||
|
<Stack>
|
||||||
|
<Anchor href='https://twitter.com/getsudachiemu' target={'_blank'}>
|
||||||
|
<Text c={theme.primaryColor} ta={'center'}>
|
||||||
|
@getsudachiemu
|
||||||
|
</Text>
|
||||||
|
</Anchor>
|
||||||
|
<Title order={1} ta={'center'}>
|
||||||
|
Sudachi, a Nintendo Switch emulator
|
||||||
|
</Title>
|
||||||
|
<Center>
|
||||||
|
<Badge variant={'dot'}>
|
||||||
|
#a-new-beginning
|
||||||
|
</Badge>
|
||||||
|
</Center>
|
||||||
|
<Text c={'dimmed'} ta={'center'}>
|
||||||
|
Nintendo Switch emulation focusing on accuracy, performance and support
|
||||||
|
</Text>
|
||||||
|
<Space h={'md'} />
|
||||||
|
<Accordion radius={'lg'} variant={'contained'}>
|
||||||
|
{items}
|
||||||
|
</Accordion>
|
||||||
|
<Space h={'md'} />
|
||||||
|
<Center>
|
||||||
|
<Stack>
|
||||||
|
<Text c={'dimmed'} ta={'center'}>
|
||||||
|
Sudachi is no longer in-development and won't be for some time due to my required commitment to my paid project, Folium<br />For a fork that also provides real, significant changes, check out Eden below
|
||||||
|
</Text>
|
||||||
|
<Flex justify={'center'}>
|
||||||
|
<Button color={'violet'} component={'a'} href={'https://eden-emu.dev'} radius={'xl'} target={'_blank'} variant={'light'}>
|
||||||
|
Check out Eden
|
||||||
|
</Button>
|
||||||
|
</Flex>
|
||||||
|
</Stack>
|
||||||
|
</Center>
|
||||||
|
</Stack>
|
||||||
|
</Flex>
|
||||||
|
</MantineProvider>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
/*export default function App() {
|
||||||
|
const changes = [
|
||||||
|
{
|
||||||
|
version: 'v1.0.15',
|
||||||
|
sha: 'c7431bd',
|
||||||
isLatest: true,
|
isLatest: true,
|
||||||
isUpcoming: false,
|
isUpcoming: false,
|
||||||
details: [
|
details: [
|
||||||
{
|
{
|
||||||
system: "Linux",
|
title: 'Added support for XCX:DE by stubbing ssl:s',
|
||||||
download: 'https://github.com/emuplace/sudachi.emuplace.app/releases/download/v1.0.12/sudachi-linux-v1.0.12.7z',
|
subtitles: [
|
||||||
last: false,
|
'Currently the menu and a small section of the game has been tested'
|
||||||
items: [
|
|
||||||
{
|
|
||||||
primaryText: 'Added support for Donkey Kong Country™ Returns HD',
|
|
||||||
secondaryText: 'Stubbed hid::SetGestureOutputRanges'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
primaryText: 'Removed broken 19.0.0+ audio changes',
|
|
||||||
secondaryText: null
|
|
||||||
}
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
system: "Windows",
|
title: 'Changed how MoltenVK is obtained for macOS to get newer versions',
|
||||||
download: 'https://github.com/emuplace/sudachi.emuplace.app/releases/download/v1.0.12/sudachi-windows-v1.0.12.7z',
|
subtitles: [
|
||||||
last: true,
|
'Artifacts are now used which can now be updated more frequently'
|
||||||
items: [
|
]
|
||||||
{
|
|
||||||
primaryText: 'Added support for Donkey Kong Country™ Returns HD',
|
|
||||||
secondaryText: 'Stubbed hid::SetGestureOutputRanges'
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
primaryText: 'Removed broken 19.0.0+ audio changes',
|
title: 'Changed from SDL2 to SDL3 bringing over its improvements',
|
||||||
secondaryText: null
|
subtitles: []
|
||||||
}
|
},
|
||||||
]
|
{
|
||||||
}
|
title: 'Fixed issues related to caps by reverting the rewrite temporarily',
|
||||||
|
subtitles: []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Fixed several compilation errors on macOS',
|
||||||
|
subtitles: []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Updated vcpkg to the latest version',
|
||||||
|
subtitles: []
|
||||||
|
},
|
||||||
],
|
],
|
||||||
url: 'https://github.com/emuplace/sudachi.emuplace.app/releases/download/v1.0.12/latest.zip'
|
downloads: [
|
||||||
|
{
|
||||||
|
color: 'green',
|
||||||
|
platform: 'Android',
|
||||||
|
url: 'https://github.com/emuplace/sudachi.emuplace.app/releases/download/v1.0.15/app-mainline-release.apk'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
text: 'v1.0.11',
|
color: 'orange',
|
||||||
sha: '99775b8',
|
platform: 'Linux',
|
||||||
|
url: ''
|
||||||
|
},
|
||||||
|
{
|
||||||
|
color: 'violet',
|
||||||
|
platform: 'macOS',
|
||||||
|
url: ''
|
||||||
|
},
|
||||||
|
{
|
||||||
|
color: 'blue',
|
||||||
|
platform: 'Windows',
|
||||||
|
url: 'https://github.com/emuplace/sudachi.emuplace.app/releases/download/v1.0.15/sudachi-windows-v1.0.15.7z'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
color: 'gray',
|
||||||
|
platform: 'Source Code',
|
||||||
|
url: 'https://github.com/emuplace/sudachi.emuplace.app/releases/download/v1.0.15/latest.zip'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
version: 'v1.0.14',
|
||||||
|
sha: '6178075',
|
||||||
isLatest: false,
|
isLatest: false,
|
||||||
isUpcoming: false,
|
isUpcoming: false,
|
||||||
details: [
|
details: [
|
||||||
{
|
{
|
||||||
system: "Android",
|
title: 'Added support for booting the initial setup screen via -setup',
|
||||||
download: 'https://github.com/emuplace/sudachi.emuplace.app/releases/download/v1.0.11/app-mainline-release.apk',
|
subtitles: [
|
||||||
last: false,
|
'Only available on Linux, macOS and Windows via Terminal or Tools > Open Initial Setup',
|
||||||
items: [
|
'Only partial support for now, will be improved in the future'
|
||||||
{
|
|
||||||
primaryText: 'Added beginnings of Echoes of Wisdom audio fix',
|
|
||||||
secondaryText: 'Code is a reimplementation of Ryujinx\'s audio changes'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
primaryText: 'Changed remaining main on-screen button colours',
|
|
||||||
secondaryText: null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
primaryText: 'Fixes an issue where some games won\'t boot from QLaunch',
|
|
||||||
secondaryText: null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
primaryText: 'Removed links to malicious domain',
|
|
||||||
secondaryText: null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
primaryText: 'Removed telemetry',
|
|
||||||
secondaryText: null
|
|
||||||
},
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
system: "Linux",
|
title: 'Added several missing functions to allow the initial setup screen to be launched',
|
||||||
download: 'https://github.com/emuplace/sudachi.emuplace.app/releases/download/v1.0.11/sudachi-linux-v1.0.11.7z',
|
subtitles: [
|
||||||
last: false,
|
'Fixes an issue where some newer games would not boot'
|
||||||
items: [
|
|
||||||
{
|
|
||||||
primaryText: 'Added beginnings of Echoes of Wisdom audio fix',
|
|
||||||
secondaryText: 'Code is a reimplementation of Ryujinx\'s audio changes'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
primaryText: 'Added the ability to install games to the NAND',
|
|
||||||
secondaryText: 'Remove games from any added directories to stop duplicates'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
primaryText: 'Added partial support for the MyPage (Profile) applet',
|
|
||||||
secondaryText: null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
primaryText: 'Added partial support for the Data Management settings',
|
|
||||||
secondaryText: 'App sizing is not 1:1 yet and only works with games installed to the NAND, deletion works but requires a restart'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
primaryText: 'Fixes an issue where some games won\'t boot from QLaunch',
|
|
||||||
secondaryText: null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
primaryText: 'Removed links to malicious domain',
|
|
||||||
secondaryText: null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
primaryText: 'Removed telemetry',
|
|
||||||
secondaryText: null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
primaryText: 'Updated to Qt6, used similar CMake command as Windows',
|
|
||||||
secondaryText: null
|
|
||||||
}
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
system: "Windows",
|
title: 'Fixed an issue with mm:u where Get and GetOld would not return after pushing a found session\'s minimum value',
|
||||||
download: 'https://github.com/emuplace/sudachi.emuplace.app/releases/download/v1.0.11/sudachi-windows-v1.0.11.7z',
|
subtitles: []
|
||||||
last: true,
|
|
||||||
items: [
|
|
||||||
{
|
|
||||||
primaryText: 'Added beginnings of Echoes of Wisdom audio fix',
|
|
||||||
secondaryText: 'Code is a reimplementation of Ryujinx\'s audio changes'
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
primaryText: 'Added the ability to install games to the NAND',
|
title: 'Started rewrite of caps, caps:a and caps:su to improve accuracy',
|
||||||
secondaryText: 'Remove games from any added directories to stop duplicates'
|
subtitles: []
|
||||||
},
|
|
||||||
{
|
|
||||||
primaryText: 'Added partial support for the MyPage (Profile) applet',
|
|
||||||
secondaryText: null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
primaryText: 'Added partial support for the Data Management settings',
|
|
||||||
secondaryText: 'App sizing is not 1:1 yet and only works with games installed to the NAND, deletion works but requires a restart'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
primaryText: 'Fixes an issue where some games won\'t boot from QLaunch',
|
|
||||||
secondaryText: null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
primaryText: 'Removed links to malicious domain',
|
|
||||||
secondaryText: null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
primaryText: 'Removed telemetry',
|
|
||||||
secondaryText: null
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
url: 'https://github.com/emuplace/sudachi.emuplace.app/releases/download/v1.0.11/latest.zip'
|
downloads: [
|
||||||
|
{
|
||||||
|
color: 'green',
|
||||||
|
platform: 'Android',
|
||||||
|
url: 'https://github.com/emuplace/sudachi.emuplace.app/releases/download/v1.0.14/app-mainline-release.apk'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
text: 'v1.0.10',
|
color: 'orange',
|
||||||
sha: 'f2e32a9',
|
platform: 'Linux',
|
||||||
isLatest: false,
|
url: 'https://github.com/emuplace/sudachi.emuplace.app/releases/download/v1.0.14/sudachi-linux-v1.0.14.7z'
|
||||||
isUpcoming: false,
|
|
||||||
details: [
|
|
||||||
{
|
|
||||||
system: "Android",
|
|
||||||
download: 'https://github.com/emuplace/sudachi.emuplace.app/releases/download/v1.0.10/app-mainline-release.apk',
|
|
||||||
last: false,
|
|
||||||
items: [
|
|
||||||
{
|
|
||||||
primaryText: 'Added some support for QLaunch (Home Menu) and added QLaunch option to Applet launcher submenu',
|
|
||||||
secondaryText: null
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
primaryText: 'Improved accuracy of several IPC interface services',
|
color: 'violet',
|
||||||
secondaryText: null
|
platform: 'macOS',
|
||||||
}
|
url: ''
|
||||||
]
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
system: "Linux",
|
color: 'blue',
|
||||||
download: 'https://github.com/emuplace/sudachi.emuplace.app/releases/download/v1.0.10/sudachi-linux-v1.0.10.7z',
|
platform: 'Windows',
|
||||||
last: false,
|
url: 'https://github.com/emuplace/sudachi.emuplace.app/releases/download/v1.0.14/sudachi-windows-v1.0.14.7z'
|
||||||
items: [
|
|
||||||
{
|
|
||||||
primaryText: 'Added some support for QLaunch (Home Menu) and added QLaunch option to Tools submenu',
|
|
||||||
secondaryText: null
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
primaryText: 'Improved accuracy of several IPC interface services',
|
color: 'gray',
|
||||||
secondaryText: null
|
platform: 'Source Code',
|
||||||
},
|
url: 'https://github.com/emuplace/sudachi.emuplace.app/releases/download/v1.0.14/latest.zip'
|
||||||
{
|
|
||||||
primaryText: 'Improved game library loading by using native C++ directory recursion',
|
|
||||||
secondaryText: null
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
system: "Windows",
|
|
||||||
download: 'https://github.com/emuplace/sudachi.emuplace.app/releases/download/v1.0.10/sudachi-windows-v1.0.10.7z',
|
|
||||||
last: true,
|
|
||||||
items: [
|
|
||||||
{
|
|
||||||
primaryText: 'Added some support for QLaunch (Home Menu) and added QLaunch option to Tools submenu',
|
|
||||||
secondaryText: null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
primaryText: 'Improved accuracy of several IPC interface services',
|
|
||||||
secondaryText: null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
primaryText: 'Improved game library loading by using native C++ directory recursion',
|
|
||||||
secondaryText: null
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
],
|
|
||||||
url: 'https://github.com/emuplace/sudachi.emuplace.app/releases/download/v1.0.10/latest.zip'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
text: 'v1.0.9',
|
|
||||||
sha: 'e56a8a0',
|
|
||||||
isLatest: false,
|
|
||||||
isUpcoming: false,
|
|
||||||
details: [
|
|
||||||
{
|
|
||||||
system: "Android",
|
|
||||||
download: 'https://github.com/emuplace/sudachi.emuplace.app/releases/download/v1.0.9/app-mainline-release.apk',
|
|
||||||
last: true,
|
|
||||||
items: [
|
|
||||||
{
|
|
||||||
primaryText: 'Added an additional page to the setup flow and button to the settings page allowing users to select a title.keys file',
|
|
||||||
secondaryText: null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
primaryText: 'Fixed an issue where the app would crash when installing a DLC or update',
|
|
||||||
secondaryText: 'Requires both prod.keys and title.keys'
|
|
||||||
}
|
|
||||||
]
|
]
|
||||||
}
|
|
||||||
],
|
|
||||||
url: 'https://github.com/emuplace/sudachi.emuplace.app/releases/download/v1.0.9/latest.zip'
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
const items = changes.map((item) => {
|
const items = changes.map((item) => {
|
||||||
const listItems = item.details.map((detail) => {
|
|
||||||
const detailItems = detail.items.map((item) => (
|
|
||||||
<>
|
|
||||||
<List.Item>
|
|
||||||
<Text>{item.primaryText}</Text>
|
|
||||||
<Text c={'dimmed'} size="sm" hidden={item.secondaryText == '' || item.secondaryText == null}>
|
|
||||||
{item.secondaryText}
|
|
||||||
</Text>
|
|
||||||
</List.Item>
|
|
||||||
</>
|
|
||||||
));
|
|
||||||
|
|
||||||
const button = function () {
|
|
||||||
if (!detail.last) {
|
|
||||||
return (
|
return (
|
||||||
<VisuallyHidden>
|
<Accordion.Item key={item.version} value={item.version}>
|
||||||
<Flex justify={'flex-end'}>
|
|
||||||
<Button color="gray" component="a" disabled={item.url == '' || item.url == null} href={item.url} radius={'md'} size="sm">
|
|
||||||
Source Code
|
|
||||||
</Button>
|
|
||||||
</Flex>
|
|
||||||
</VisuallyHidden>
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
return (
|
|
||||||
<Flex justify={'flex-end'}>
|
|
||||||
<Button color="gray" component="a" disabled={item.url == '' || item.url == null} href={item.url} radius={'md'} size="sm">
|
|
||||||
Source Code
|
|
||||||
</Button>
|
|
||||||
</Flex>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return (
|
|
||||||
<>
|
|
||||||
<Title order={3}>
|
|
||||||
{detail.system}
|
|
||||||
</Title>
|
|
||||||
<List>
|
|
||||||
{detailItems}
|
|
||||||
</List>
|
|
||||||
<Space h={'md'} />
|
|
||||||
<Button component="a" disabled={detail.download == '' || detail.download == null} href={detail.download} radius={'md'} size="sm">
|
|
||||||
Download
|
|
||||||
</Button>
|
|
||||||
<Space h={item.url == '' || item.url == null ? 0 : 'md'} />
|
|
||||||
{button()}
|
|
||||||
<Space h={detail.last ? 0 : 'md'} />
|
|
||||||
</>
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
return (
|
|
||||||
<Accordion.Item key={item.text} value={item.text}>
|
|
||||||
<Accordion.Control>
|
<Accordion.Control>
|
||||||
<Group justify='space-between' pr={'md'}>
|
<Group justify='space-between' pr={'md'}>
|
||||||
<Group gap={'sm'}>
|
<Group gap={'sm'}>
|
||||||
<Text>
|
<Text>
|
||||||
{item.text}
|
{item.version}
|
||||||
</Text>
|
</Text>
|
||||||
<Text c={'dimmed'}>
|
<Text c={'dimmed'}>
|
||||||
{`(${item.sha})`}
|
{`(${item.sha})`}
|
||||||
|
@ -318,13 +341,39 @@ export default function App() {
|
||||||
</Group>
|
</Group>
|
||||||
</Accordion.Control>
|
</Accordion.Control>
|
||||||
<Accordion.Panel>
|
<Accordion.Panel>
|
||||||
{...listItems}
|
<List>
|
||||||
|
{item.details.map((detail) => (
|
||||||
|
<List.Item>
|
||||||
|
<Text>
|
||||||
|
{detail.title}
|
||||||
|
</Text>
|
||||||
|
<List>
|
||||||
|
{detail.subtitles.map((subtitle) => (
|
||||||
|
<List.Item>
|
||||||
|
<Text c={'dimmed'} size="sm">
|
||||||
|
{subtitle}
|
||||||
|
</Text>
|
||||||
|
</List.Item>
|
||||||
|
))}
|
||||||
|
</List>
|
||||||
|
</List.Item>
|
||||||
|
))}
|
||||||
|
</List>
|
||||||
|
<Space h={'md'} />
|
||||||
|
<Flex gap={'md'} wrap={'wrap'} justify="flex-start"
|
||||||
|
align="flex-start">
|
||||||
|
{item.downloads.map((download) => (
|
||||||
|
<Button color={download.color} radius={'md'} component="a" disabled={download.url == '' || download.url == null} href={download.url}>
|
||||||
|
{download.platform}
|
||||||
|
</Button>
|
||||||
|
))}
|
||||||
|
</Flex>
|
||||||
</Accordion.Panel>
|
</Accordion.Panel>
|
||||||
</Accordion.Item>
|
</Accordion.Item>
|
||||||
);
|
)
|
||||||
});
|
})
|
||||||
|
|
||||||
const date = new Date();
|
const date = new Date()
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<MantineProvider theme={theme} forceColorScheme={date.getHours() >= 7 && date.getHours() <= 19 ? "light" : "dark"}>
|
<MantineProvider theme={theme} forceColorScheme={date.getHours() >= 7 && date.getHours() <= 19 ? "light" : "dark"}>
|
||||||
|
@ -339,56 +388,14 @@ export default function App() {
|
||||||
<Text c={'dimmed'} ta={'center'}>
|
<Text c={'dimmed'} ta={'center'}>
|
||||||
Nintendo Switch emulation without the iffy bits and support for more games
|
Nintendo Switch emulation without the iffy bits and support for more games
|
||||||
</Text>
|
</Text>
|
||||||
<Text c={'orange'} ta={'center'}>
|
|
||||||
Installing games to the NAND is currently broken, please do not use this method
|
|
||||||
</Text>
|
|
||||||
{/*<Flex align={'center'} justify={'center'}>
|
|
||||||
<Group ta={'center'}>
|
|
||||||
<Button component="a" href="https://github.com/emuplace/sudachi.emuplace.app/releases/download/v1.0.9/app-mainline-release.apk" color="green" radius={'xl'} variant="filled">Android</Button>
|
|
||||||
<Menu opened={opened} onChange={setOpened}>
|
|
||||||
<Menu.Target>
|
|
||||||
<Button radius={'xl'} variant="filled" disabled>Apple</Button>
|
|
||||||
</Menu.Target>
|
|
||||||
|
|
||||||
<Menu.Dropdown>
|
|
||||||
<Menu.Label>iOS, iPadOS</Menu.Label>
|
|
||||||
<Menu.Item leftSection={<IconDeviceTablet style={{ width: rem(14), height: rem(14) }} />}>
|
|
||||||
iPad
|
|
||||||
</Menu.Item>
|
|
||||||
<Menu.Item leftSection={<IconDeviceMobile style={{ width: rem(14), height: rem(14) }} />}>
|
|
||||||
iPhone
|
|
||||||
</Menu.Item>
|
|
||||||
<Menu.Divider />
|
|
||||||
<Menu.Label>macOS</Menu.Label>
|
|
||||||
<Menu.Item leftSection={<IconDeviceLaptop style={{ width: rem(14), height: rem(14) }} />} disabled>
|
|
||||||
Apple Silicon
|
|
||||||
</Menu.Item>
|
|
||||||
<Menu.Item leftSection={<IconDeviceLaptop style={{ width: rem(14), height: rem(14) }} />} disabled>
|
|
||||||
Intel
|
|
||||||
</Menu.Item>
|
|
||||||
<Menu.Divider />
|
|
||||||
<Menu.Label>visionOS</Menu.Label>
|
|
||||||
<Menu.Item leftSection={<IconCardboards style={{ width: rem(14), height: rem(14) }} />} disabled>
|
|
||||||
Apple Vision Pro
|
|
||||||
</Menu.Item>
|
|
||||||
</Menu.Dropdown>
|
|
||||||
</Menu>
|
|
||||||
<Button color="orange" radius={'xl'} variant="filled" disabled>Linux</Button>
|
|
||||||
<Button color="blue" component="a" href="https://github.com/emuplace/sudachi.emuplace.app/releases/download/v1.0.8/sudachi-windows-v1.0.8.7z" radius={'xl'} variant="filled">Windows</Button>
|
|
||||||
<Button color="gray" component="a" href="https://drive.google.com/file/d/149zdnytWES7-2f8SpXuceVBz--xKgp2c/view?usp=sharing" radius={'xl'} variant="filled">Source Code</Button>
|
|
||||||
</Group>
|
|
||||||
</Flex>*/}
|
|
||||||
<Title order={2}>
|
<Title order={2}>
|
||||||
Changes
|
Changes
|
||||||
</Title>
|
</Title>
|
||||||
<Accordion radius={'lg'} variant="contained">
|
<Accordion radius={'lg'} variant="contained">
|
||||||
{items}
|
{items}
|
||||||
</Accordion>
|
</Accordion>
|
||||||
<Text c={'red'}>
|
|
||||||
Please backup and delete all folders within the Sudachi directory, this will fix the downloadable content and updates issue
|
|
||||||
</Text>
|
|
||||||
</Stack>
|
</Stack>
|
||||||
</Container>
|
</Container>
|
||||||
</MantineProvider>
|
</MantineProvider>
|
||||||
);
|
)
|
||||||
}
|
}*/
|
|
@ -2,6 +2,6 @@ import { createTheme } from "@mantine/core";
|
||||||
import { themeToVars } from "@mantine/vanilla-extract";
|
import { themeToVars } from "@mantine/vanilla-extract";
|
||||||
|
|
||||||
export const theme = createTheme({
|
export const theme = createTheme({
|
||||||
primaryColor: 'violet'
|
primaryColor: 'green'
|
||||||
});
|
});
|
||||||
export const vars = themeToVars(theme);
|
export const vars = themeToVars(theme);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue