mirror of
https://gitea.tendokyu.moe/ppc/amnet.git
synced 2026-09-22 22:28:22 +03:00
132 lines
6.2 KiB
Markdown
132 lines
6.2 KiB
Markdown
<div align="center">
|
|
|
|
# AMNet
|
|
[Latest .ipa](https://amnet-dist.ppc.moe/amnet-1.3.9.ipa) • [Firebase](https://appdistribution.firebase.dev/i/6acc3151357deaa8) • [Website](http://card.ppc.moe) • [Server DLLs](https://gitea.tendokyu.moe/ppc/amnet/releases)
|
|
|
|
An Amusement IC Card Switcher for segatools-based games.
|
|
|
|
</div>
|
|
|
|
## Overview
|
|
AMNet is designed to acts as dynamic version of the `DEVICE/aime.txt` file, allowing multiple users to log into a game using their own mobile devices.
|
|
This was originally intended for use with maimai and CHUNITHM, but should be compatible with any segatools-based game with that uses Amusement IC for account management.
|
|
|
|
> [!WARNING]
|
|
> TestFlight is no longer available and must be sideloaded using AltStore or similar tooling for the forseeable future.
|
|
|
|
## Setup
|
|
1. Download the latest `amnet.dll` from the releases page
|
|
2. Move `amnet.dll` to the game directory
|
|
3. Edit `segatools.ini`, replacing the existing [aimeio] section with this one (read all the comments and change settings as needed):
|
|
```ini
|
|
[aimeio]
|
|
; To use a custom card reader IO DLL enter its path here.
|
|
; Leave empty if you want to use Segatools built-in keyboard input.
|
|
path=amnet.dll
|
|
|
|
; AMNet-specific options (all optional)
|
|
; gameId - the 4 character game ID (will show the game icon in the UI)
|
|
; serverName - the name of the server to show to users (defaults to the computer name if not set)
|
|
; serverAddress - the address to listen on, including the protocol (don't set/change unless you know what you're doing)
|
|
; enableKeyboardMode - whether to enable hold-enter-to-login mode. Reads the file set at aimePath for card number (or DEVICE/aime.txt if not set).
|
|
; useAimeDBForPhysicalCards - Whether codes from real cards should use AiMeDB to retrieve access codes. If the game is using a hosted network, set this to 1 to load the same account data/profile as you would get on a physical cab.
|
|
gameId=SDEZ
|
|
;serverName=CHUNI-PENGUIN
|
|
;serverAddress=http://0.0.0.0:6070
|
|
;enableKeyboardMode=1
|
|
;useAimeDBForPhysicalCards=1
|
|
```
|
|
4. Launch the game, and check the amdaemon console for server startup messages
|
|
5. Access the using one of the interfaces (see below), add a new server `http://<your-ip-address>:6070`, import your existing card (or create a new one) and start playing!
|
|
|
|
### Physical Cards
|
|
AMNet 1.3 adds support for scanning physical cards on iOS devices. If you own a physical Aime/Banapass/NESiCA/e-Amusement card, you can scan it using the app and use it in-game.
|
|
By changing the `useAimeDBForPhysicalCards` in segatools.ini, you can choose how the card is read on a per-game basis:
|
|
|
|
- `0` will send the 20-digit access code on the back of the card to the game and load the save data directly (default option).
|
|
- `1` - Send the card's IDm to the game and use AiMeDB to retrieve the 20-digit code assigned to the card.
|
|
|
|
Mode `1` makes the app function in the same way to a real card reader and should be used if you want the same access code to show when scanning the card on a cab.
|
|
You should also use this option if you're connecting to a hosted server (AquaNet/rinnet/etc).
|
|
|
|
Additionally, if `useAimeDBForPhysicalCards` is set to `1` and the game is failing to read the card, make sure an up-to-date version of segatools is being used.
|
|
|
|
## Interfaces
|
|
AMNet can be used on most platforms, see below for options available for each platform:
|
|
|
|
<table>
|
|
<tbody>
|
|
<tr>
|
|
<th>Platform</th>
|
|
<th>Method</th>
|
|
<th>Notes</th>
|
|
</tr>
|
|
<tr>
|
|
<td>iOS</td>
|
|
<td><a href="https://amnet-dist.ppc.moe/amnet-1.3.9.ipa" target="_blank">.ipa</a></td>
|
|
<td>*TestFlight has been shut down and won't be back for the forseeable future, sideload using AltStore or similar tooling</td>
|
|
</tr>
|
|
<tr>
|
|
<td rowspan="2">Android</td>
|
|
<td><a href="https://appdistribution.firebase.dev/i/6acc3151357deaa8" target="_blank">Firebase</a></td>
|
|
<td>Recommended for reduced download/install size and easier upgrading</td>
|
|
</tr>
|
|
<tr>
|
|
<td>.apk</td>
|
|
<td>Larger download, manual installation required.</td>
|
|
</tr>
|
|
<tr>
|
|
<td>All</td>
|
|
<td><a href="http://card.ppc.moe" target="_blank">Web</a></td>
|
|
<td>Works on all platforms and is installable as a PWA. Ensure it's used on <code>http</code> to avoid CORS-related errors</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
<div align="center">
|
|
<img src="./res/native.png" height="600"/>
|
|
</div>
|
|
|
|
## Building
|
|
### Server (amnet-server and amnet-server-test)
|
|
Building the server from source requires a recent version of **Rust** in
|
|
addition to an **MSVC compiler** and (probably) a recent **Windows 10/11 SDK**.
|
|
|
|
After cloning the repository, the server can be built using cargo, specifying a target if an x86 version is desired.
|
|
|
|
```shell
|
|
cargo build --release
|
|
|
|
# find the .dll at target/release/amnet.dll
|
|
```
|
|
|
|
### Website (amnet-web)
|
|
The web interface is built using Vite and React. Building the web interface requires Node.js (or alternative runtime).
|
|
After cloning the repository, install dependencies then start the dev server or build the site as a static site:
|
|
|
|
```shell
|
|
# for amnet-web
|
|
cd amnet-web
|
|
npm install
|
|
npm run dev # starts the vite development server
|
|
npm run build # build the website, outputs to ./dist
|
|
```
|
|
### Mobile (amnet-native)
|
|
The mobile app is built using Expo and React Native. The app requires Node.js and npm to build, along with either the Android SDK or Xcode for iOS.
|
|
After cloning the repository, install dependencies then run the app, or prebuild for the platform of your choice then complete the build process for a standalone app:
|
|
|
|
> amnet-native relies on multiple native libraries not included in Expo Go. The app must be built from scratch and run on a physical device or simulator.
|
|
|
|
```shell
|
|
cd amnet-native
|
|
npm install
|
|
npm expo run:ios # starts the expo development server for iOS
|
|
|
|
npm expo prebuild --platform ios # prebuild the app for iOS, run command then use the xcworkspace file in the ios directory to archive the app for a standalone build
|
|
```
|
|
|
|
If building for iOS, you may need to open the workspace (`./amnet-native/ios/AMNet.xcworkspace`) in Xcode and configure the signing/provisioning settings before builds work as expected.
|
|
|
|
## License
|
|
AMNet is licensed under AGPLv3 or later. See [license.md](license.md) for more information.
|