diff --git a/client/src/app/pages/dashboard/import/BarbatosPage.tsx b/client/src/app/pages/dashboard/import/BarbatosPage.tsx
new file mode 100644
index 000000000..e7e0ca1df
--- /dev/null
+++ b/client/src/app/pages/dashboard/import/BarbatosPage.tsx
@@ -0,0 +1,46 @@
+import useSetSubheader from "components/layout/header/useSetSubheader";
+import Divider from "components/util/Divider";
+import ExternalLink from "components/util/ExternalLink";
+import Muted from "components/util/Muted";
+import { TachiConfig } from "lib/config";
+import React from "react";
+
+export default function BarbatosPage() {
+ useSetSubheader(["Import Scores", "Barbatos"]);
+
+ return (
+
+
What Is Barbatos?
+
+ Barbatos is a .dll file that hooks into SDVX and automatically sends
+ the scores to a server. {TachiConfig.name} is compatible with what Barbatos sends,
+ so you can use it to submit scores!
+
+
+
Setup Instructions
+
+
+ Download barbatos.dll from{" "}
+ here.
+
+
+ Download your config file here.
+ This file contains an API Key, which is meant to be kept secret!
+
+
+ Place all of these files inside your SDVX folder, next to your .bat{" "}
+ file.
+
+
+
+ BemaniTools: Add -K barbatos.dll to your .bat{" "}
+ file.
+
+
+ SpiceTools: Add -k barbatos.dll to your .bat file.
+
+
+
+
+ );
+}
diff --git a/client/src/app/pages/dashboard/import/BeatorajaDBPage.tsx b/client/src/app/pages/dashboard/import/BeatorajaDBPage.tsx
new file mode 100644
index 000000000..365497939
--- /dev/null
+++ b/client/src/app/pages/dashboard/import/BeatorajaDBPage.tsx
@@ -0,0 +1,28 @@
+import TISInfo from "components/imports/TISInfo";
+import useSetSubheader from "components/layout/header/useSetSubheader";
+import Divider from "components/util/Divider";
+import Muted from "components/util/Muted";
+import { TachiConfig } from "lib/config";
+import React from "react";
+import { Link } from "react-router-dom";
+
+export default function BeatorajaDBPage() {
+ useSetSubheader(["Import Scores", "Beatoraja Database File"]);
+ return (
+ <>
+
+
+
+ This method is intended for syncing up with existing scores. For new scores, you
+ should set up the Beatoraja IR, for
+ automatic score uploading.
+
+
+
+ Note: If you submit a score on a chart that {TachiConfig.name} doesn't recognise,
+ you'll need to wait until atleast 2 other players submit scores for that chart
+ before it'll show up. This is to combat accidental IR spam.
+
+ >
+ );
+}
diff --git a/client/src/app/pages/dashboard/import/FervidexPage.tsx b/client/src/app/pages/dashboard/import/FervidexPage.tsx
new file mode 100644
index 000000000..b2a901171
--- /dev/null
+++ b/client/src/app/pages/dashboard/import/FervidexPage.tsx
@@ -0,0 +1,57 @@
+import useSetSubheader from "components/layout/header/useSetSubheader";
+import Divider from "components/util/Divider";
+import ExternalLink from "components/util/ExternalLink";
+import Muted from "components/util/Muted";
+import { TachiConfig } from "lib/config";
+import React from "react";
+
+export default function FervidexPage() {
+ useSetSubheader(["Import Scores", "Fervidex"]);
+
+ return (
+
+
What Is Fervidex?
+
+ Fervidex is a .dll file that hooks into IIDX and automatically sends
+ the scores to a server. {TachiConfig.name} is compatible with what Fervidex sends,
+ so you can use it to submit scores!
+
+
+
Setup Instructions
+
+
+ Download fervidex.dll from{" "}
+ Here.
+
+
+ Download your fervidex.json config file here.
+ This config file contains an API Key, which should be kept secret!.
+
+
+ Drop both files into the same folder as your bm2dx.dll.
+
+
For Infinitas Players
+
+
+ You'll also need to download{" "}
+
+ this
+
+ , and extract it to the same folder.
+
+
+
For Not-Infinitas Players
+
+
+ BemaniTools: Add -K fervidex.dll to your .bat{" "}
+ file.
+
+
+ SpiceTools: Add -k fervidex.dll to your .bat file.
+
+
+
That's it! Your scores should now automatically submit to the server.
+
+
+ );
+}
diff --git a/client/src/app/pages/dashboard/import/ImportPage.tsx b/client/src/app/pages/dashboard/import/ImportPage.tsx
index 29a3ad440..b9de88f6a 100644
--- a/client/src/app/pages/dashboard/import/ImportPage.tsx
+++ b/client/src/app/pages/dashboard/import/ImportPage.tsx
@@ -9,7 +9,7 @@ import React, { useState } from "react";
import { Game, GetGameConfig } from "tachi-common";
export default function ImportPage() {
- useSetSubheader(["Dashboard", "Import Scores"]);
+ useSetSubheader(["Import Scores"]);
const [game, setGame] = useState(null);
diff --git a/client/src/app/pages/dashboard/import/LR2DBPage.tsx b/client/src/app/pages/dashboard/import/LR2DBPage.tsx
new file mode 100644
index 000000000..ca4edc535
--- /dev/null
+++ b/client/src/app/pages/dashboard/import/LR2DBPage.tsx
@@ -0,0 +1,28 @@
+import TISInfo from "components/imports/TISInfo";
+import useSetSubheader from "components/layout/header/useSetSubheader";
+import Divider from "components/util/Divider";
+import Muted from "components/util/Muted";
+import { TachiConfig } from "lib/config";
+import React from "react";
+import { Link } from "react-router-dom";
+
+export default function LR2DBPage() {
+ useSetSubheader(["Import Scores", "LR2 Database File"]);
+ return (
+ <>
+
+
+
+ This is currently the only way to import scores from LR2, this sucks, because I'd
+ love for scores to automatically import! There is an open bounty on an LR2 automatic
+ score uploader.
+
+
+
+ Note: If you submit a score on a chart that {TachiConfig.name} doesn't recognise,
+ you'll need to wait until atleast 2 other players submit scores for that chart
+ before it'll show up. This is to combat accidental IR spam.
+
+ >
+ );
+}
diff --git a/client/src/app/pages/dashboard/import/USCDBPage.tsx b/client/src/app/pages/dashboard/import/USCDBPage.tsx
new file mode 100644
index 000000000..c73f2e103
--- /dev/null
+++ b/client/src/app/pages/dashboard/import/USCDBPage.tsx
@@ -0,0 +1,28 @@
+import TISInfo from "components/imports/TISInfo";
+import useSetSubheader from "components/layout/header/useSetSubheader";
+import Divider from "components/util/Divider";
+import Muted from "components/util/Muted";
+import { TachiConfig } from "lib/config";
+import React from "react";
+import { Link } from "react-router-dom";
+
+export default function USCDBPage() {
+ useSetSubheader(["Import Scores", "USC Database File"]);
+ return (
+ <>
+
+
+
+ This method is intended for syncing up with existing scores. For new scores, you
+ should set up the USC IR, for automatic
+ score uploading.
+
+
+
+ Note: If you submit a score on a chart that {TachiConfig.name} doesn't recognise,
+ you'll need to wait until atleast 2 other players submit scores for that chart
+ before it'll show up. This is to combat accidental IR spam.
+
+ >
+ );
+}
diff --git a/client/src/app/routes/ImportRoutes.tsx b/client/src/app/routes/ImportRoutes.tsx
index 4f0e1beab..357e7d3e6 100644
--- a/client/src/app/routes/ImportRoutes.tsx
+++ b/client/src/app/routes/ImportRoutes.tsx
@@ -1,9 +1,14 @@
+import BarbatosPage from "app/pages/dashboard/import/BarbatosPage";
import BatchManualPage from "app/pages/dashboard/import/BatchManualPage";
+import BeatorajaDBPage from "app/pages/dashboard/import/BeatorajaDBPage";
import BeatorajaIRPage from "app/pages/dashboard/import/BeatorajaIRPage";
+import FervidexPage from "app/pages/dashboard/import/FervidexPage";
import IIDXEamCSVPage from "app/pages/dashboard/import/IIDXEamCSVPage";
import ImportPage from "app/pages/dashboard/import/ImportPage";
+import LR2DBPage from "app/pages/dashboard/import/LR2DBPage";
import MerJSONPage from "app/pages/dashboard/import/MerJSONPage";
import SSSXMLPage from "app/pages/dashboard/import/SSSXMLPage";
+import USCDBPage from "app/pages/dashboard/import/USCDBPage";
import USCIRPage from "app/pages/dashboard/import/USCIRPage";
import { ErrorPage } from "app/pages/ErrorPage";
import Divider from "components/util/Divider";
@@ -61,6 +66,26 @@ export default function ImportRoutes() {
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/client/src/components/imports/TISInfo.tsx b/client/src/components/imports/TISInfo.tsx
new file mode 100644
index 000000000..8c5914b79
--- /dev/null
+++ b/client/src/components/imports/TISInfo.tsx
@@ -0,0 +1,25 @@
+import ExternalLink from "components/util/ExternalLink";
+import { TachiConfig } from "lib/config";
+import React from "react";
+
+export default function TISInfo({ name }: { name: string }) {
+ return (
+
+
Importing {name} files
+
+
+ Download the latest version of the {TachiConfig.name} Import Scripts{" "}
+
+ here
+
+ .
+
+
Follow the instructions in-client.
+
+ Click import! The scripts will convert the file and submit it to{" "}
+ {TachiConfig.name}.
+