+
+ {% include "footer.html" %}
diff --git a/templates/footer.html b/templates/footer.html
new file mode 100644
index 0000000..023dab4
--- /dev/null
+++ b/templates/footer.html
@@ -0,0 +1,13 @@
+
\ No newline at end of file
diff --git a/templates/pages/sega/hardware/keychip.html b/templates/pages/sega/hardware/keychip.html
deleted file mode 100644
index b767071..0000000
--- a/templates/pages/sega/hardware/keychip.html
+++ /dev/null
@@ -1,3 +0,0 @@
-{% extends "sega.html" %} {% block title %}Ring Keychip{% endblock %} {% block body %}
-{% markdown %}{% include relative("~keychip.md") %}{% endmarkdown %}
-{% endblock %}
\ No newline at end of file
diff --git a/templates/pages/sega/hardware/~keychip.md b/templates/pages/sega/hardware/keychip.md
similarity index 100%
rename from templates/pages/sega/hardware/~keychip.md
rename to templates/pages/sega/hardware/keychip.md
diff --git a/templates/pages/sega/hardware/touch.html b/templates/pages/sega/hardware/touch.md
similarity index 70%
rename from templates/pages/sega/hardware/touch.html
rename to templates/pages/sega/hardware/touch.md
index f6d549e..008f8e1 100644
--- a/templates/pages/sega/hardware/touch.html
+++ b/templates/pages/sega/hardware/touch.md
@@ -1,44 +1,25 @@
-{% extends "sega.html" %}
-{% block title %}Touchscreen{% endblock %}
-{% block body %}
-
The MaiMai Touchscreen
+# The MaiMai Touchscreen
-
The touchscreen for MaiMai, pre-DX, is powered by a {{part("838-15221")|safe}} board, connected to COM3.
-
-
Unlike other IO boards, this board communicates using a custom, text-based, protocol.
+The touchscreen for MaiMai, pre-DX, is powered by a 838-15221 board, connected to `COM3`.
-
Serial configuartion
-
-
-
Port
-
COM3
-
-
-
Baud rate
-
9600
-
-
-
Bits per byte
-
8
-
-
-
Stop bits
-
0
-
-
-
Parity bits
-
0
-
-
+Unlike other IO boards, this board communicates using a custom, text-based, protocol.
-
Packet format
-
As previously mentioned, all packets are text. This means, for the most part, values will stay within a normal
- printable range. More importantly, null bytes are not permitted as they will be interpted as the end of the string.
-
-
Packets sent from the game to the board are surrounded in braces, {like this}. Packets sent from the
- board to the game are surrounded in parentheses, (like this).
+## Serial configuartion
+| | |
+| ------------- | ---- |
+| Port | COM3 |
+| Baud Rate | 9600 |
+| Bits per byte | 8 |
+| Stop bits | 0 |
+| Parity bits | 0 |
+
+## Packet format
+As previously mentioned, all packets are text. This means, for the most part, values will stay within a normal printable range. More importantly, null bytes are not permitted as they will be interpted as the end of the string.
+
+Packets sent from the game to the board are surrounded in braces, `{like this}`. Packets sent from the board to the game are surrounded in parentheses, `(like this)`.
+
+### `{HALT}`
-
{HALT}
{
@@ -49,8 +30,9 @@
}
-
This instructs the board to stop sending the state of the touchscreen. No response is expected.
-
{STAT}
+This instructs the board to stop sending the state of the touchscreen. No response is expected.
+
+### `{STAT}`
{
@@ -61,8 +43,9 @@
}
-
This instructs the board to begin sending the state of the touchscreen (detailed below). No response is expected.
-
{??th}
+This instructs the board to begin sending the state of the touchscreen (detailed below). No response is expected.
+
+### `{??th}`
{
@@ -73,8 +56,7 @@
}
-
This requests the configured threshold value for a specific sensor from the board. The expected response is as
- follows:
+This requests the configured threshold value for a specific sensor from the board. The expected response is as follows:
(
@@ -85,7 +67,8 @@
)
-
{??k?}
+
+### `{??k?}`
{
@@ -96,7 +79,7 @@
}
-
This configures the threshold value for a specific sensor. The expected response is as follows:
+This configures the threshold value for a specific sensor. The expected response is as follows:
(
@@ -109,8 +92,8 @@
Active mode
-
After a {STAT} packet is received, the board enters a mode where it begins constantly transmitting the
- state of the touchscreen. The data sent is in the following format:
+After a `{STAT}` packet is received, the board enters a mode where it begins constantly transmitting the
+ state of the touchscreen. The data sent is in the following format:
@@ -141,16 +124,16 @@
-
Each data byte is a bit mask of the 5 values it contains, mapped to 1h,
- 2h, 4h, 8h, and 10h
- respectively. While sending 1fh would be a valid byte, it is recommended to make use of the
+Each data byte is a bit mask of the 5 values it contains, mapped to `1`~h~,
+ `2`~h~, `4`~h~, `8`~h~, and `10`~h~
+ respectively. While sending `1f`~h~ would be a valid byte, it is recommended to make use of the
upper bits to keep the value within a printable range. I personally recommend masking with
- 40h ('@') for this purpose. Values will then range from @ to
- _. Bits indicated with x are unused. It is recommended, but not required, to leave them
+ `40`~h~ (`'@'`) for this purpose. Values will then range from `@` to
+ `_`. Bits indicated with `x` are unused. It is recommended, but not required, to leave them
unset.
-
-
The four bytes marked as padding are unused, with the only requirement being that they are non-null. It is
- recommended, but not required, to set them to 40h ('@').
+
+The four bytes marked as padding are unused, with the only requirement being that they are non-null. It is
+ recommended, but not required, to set them to `40`~h~ (`'@'`).
Individual bit breakdown
@@ -359,7 +342,5 @@
-
An example may aid here. The following image is what transmitting (FIBT@@@@@@@@) is interpreted as:
+An example may aid here. The following image is what transmitting `(FIBT@@@@@@@@)` is interpreted as:
-
-{% endblock %}
\ No newline at end of file
diff --git a/templates/pages/sega/maimai/index.md b/templates/pages/sega/maimai/index.md
new file mode 100644
index 0000000..b5cb57b
--- /dev/null
+++ b/templates/pages/sega/maimai/index.md
@@ -0,0 +1,34 @@
+# MaiMai API Reference
+This API reference is currently accurate for versions:
+
+- 1.97
+- 1.98
+
+Support for older versions is in the works.
+
+## `POST /MaimaiServlet/UserLoginApi`
+## `POST /MaimaiServlet/UserLogoutApi`
+## `POST /MaimaiServlet/UpsertTransferApi`
+## `POST /MaimaiServlet/UpsertUserAppApi`
+## `POST /MaimaiServlet/GetUserActivityApi`
+## `POST /MaimaiServlet/GetUserBossApi`
+## `POST /MaimaiServlet/GetUserCharacterApi`
+## `POST /MaimaiServlet/GetUserCourseApi`
+## `POST /MaimaiServlet/GetUserDataApi`
+## `POST /MaimaiServlet/GetTransferFriendApi`
+## `POST /MaimaiServlet/GetUserItemApi`
+## `POST /MaimaiServlet/GetUserMusicApi`
+## `POST /MaimaiServlet/GetUserOptionApi`
+## `POST /MaimaiServlet/GetUserPresentEventApi`
+## `POST /MaimaiServlet/GetUserPreviewApi`
+## `POST /MaimaiServlet/GetUserGradeApi`
+## `POST /MaimaiServlet/GetUserRecentRatingApi`
+## `POST /MaimaiServlet/GetUserSurvivalApi`
+## `POST /MaimaiServlet/GetUserWebOptionApi`
+
+## `POST /MaimaiServlet/UpsertClientBookkeepingApi`
+## `POST /MaimaiServlet/UpsertClientSettingApi`
+## `POST /MaimaiServlet/UpsertClientTestmodeApi`
+## `POST /MaimaiServlet/GetGameSettingApi`
+## `POST /MaimaiServlet/GetGameEventApi`
+## `POST /MaimaiServlet/GetGameRankingApi`
diff --git a/templates/pages/sega/maimai/redoc.html b/templates/pages/sega/maimai/redoc.html
new file mode 100644
index 0000000..ededb8d
--- /dev/null
+++ b/templates/pages/sega/maimai/redoc.html
@@ -0,0 +1,19 @@
+
+
+
+ Maimai API Documentation
+
+
+
+
+
+
+
+
+
+
diff --git a/templates/pages/sega/network/allnet.html b/templates/pages/sega/network/allnet.html
deleted file mode 100644
index a69cb1f..0000000
--- a/templates/pages/sega/network/allnet.html
+++ /dev/null
@@ -1,3 +0,0 @@
-{% extends "sega.html" %} {% block title %}ALL.Net{% endblock %} {% block body %}
-{% markdown %}{% include relative("~allnet.md") %}{% endmarkdown %}
-{% endblock %}
\ No newline at end of file
diff --git a/templates/pages/sega/network/allnet.html.old b/templates/pages/sega/network/allnet.html.old
deleted file mode 100644
index 39aac0e..0000000
--- a/templates/pages/sega/network/allnet.html.old
+++ /dev/null
@@ -1,197 +0,0 @@
-{% extends "sega.html" %}
-{% block title %}ALL.Net{% endblock %}
-{% block body %}
-
ALL.Net
-
A simple service that exposes two URLs. The hostname must be http://naominet.jp.
-
-
Requests should be made with a number of standard HTTP headers, and must be either HTTP version 1.0 or 1.1
-
-
-
Connection
-
Close
-
-
-
Pragma
-
DFI
-
-
-
User-Agent
-
ALL.Net_PC_Win2/ver1.0
-
-
-
Content-Type
-
application/x-www-form-urlencoded
-
-
-
Content-Length
-
variable
-
-
-
Note that the Pragma header is optional, and the Content-Type header is a lie.
-
-
Requests and responses should be POSTs, and their body should be base64 encoded, zlib compressed,
- x-www-form-urlencoded data. For example, {key: "value", other: "another"} should encode to
- eJwdxcEJACAMA8Bt3CLD5BEQFIXSFtw+4OuWHpq7NG5OBXi+BmwzCRo=.
-
-
-
Responses are expected to contain stat indicating status:
-
-
-
1
-
Success
-
-
-
0
-
Failure
-
-
-
-1
-
Failure
-
-
-
-2
-
Failure
-
-
-
-3
-
Failure
-
-
-
This service provides two endpoints, documented below:
-
-
/sys/servlet/PowerOn
-
Request:
-
-
-
-
-
game_id
-
4-character game ID
-
-
-
ver
-
-
-
-
serial
-
-
-
-
ip
-
-
-
-
firm_ver
-
%01d%02d%02d
-
-
-
boot_ver
-
%02X%02X
-
-
-
format_ver
-
-
-
-
hops
-
-
-
-
encode
-
-
-
-
Response:
-
-
-
stat
-
See above
-
-
-
uri
-
-
-
-
host
-
-
-
-
region0
-
-
-
-
region_name0
-
-
-
-
region_name1
-
-
-
-
region_name2
-
-
-
-
region_name3
-
-
-
-
year
-
-
-
-
month
-
-
-
-
day
-
-
-
-
hour
-
-
-
-
minute
-
-
-
-
second
-
-
-
-
place_id
-
-
-
-
setting
-
-
-
-
country
-
-
-
-
timezone
-
-
-
-
res_class
-
-
-
-
-
/sys/servlet/DownloadOrder
-
-{% endblock %}
\ No newline at end of file
diff --git a/templates/pages/sega/network/auth.html b/templates/pages/sega/network/auth.html
deleted file mode 100644
index 1ed6989..0000000
--- a/templates/pages/sega/network/auth.html
+++ /dev/null
@@ -1,3 +0,0 @@
-{% extends "sega.html" %} {% block title %}ALL.Net Service{% endblock %} {% block body %}
-{% markdown %}{% include relative("~auth.md") %}{% endmarkdown %}
-{% endblock %}
\ No newline at end of file
diff --git a/templates/pages/sega/network/auth.md b/templates/pages/sega/network/auth.md
new file mode 100644
index 0000000..2a989b1
--- /dev/null
+++ b/templates/pages/sega/network/auth.md
@@ -0,0 +1,149 @@
+# ALL.Net Authentication
+
+The ALL.Net authentication service is divided into four primary categories. They are ordered in decreasing importance on this page.
+
+**This entire service is HTTP-only!**
+
+## Auth API
+These four endpoints handle the primary functions of the ALL.Net authentication service. Requests and responses are sent as a url-encoded query-value string.
+
+Some endpoints make use of a mildly obfuscated version of this. When the `Pragma: DFI` header is present for a request or response, it indicates that the content is a base64 encoded, deflated, version of its real value. If a request was made with `Pragma: DFI`, the response will be too.
+
+All responses have the `Content-Type` of `text/plain; charset=%s`, where the charset is `EUC-JP` if unspecified in the request body.
+
+Requests can be made using both the `GET` and `POST` verbs, and function identically.
+
+### `/sys/servlet/PowerOn`
+All requests to this endpoint **MUST** be DFI-encoded. The request is as follows:
+
+| Name | Required | Default | Meaning |
+| ------------ | -------- | -------- | ---------------------------------------------------------------------------------------------------------------------- |
+| `game_id` | Yes | | The four-digit game ID |
+| `ver` | Yes | | The game version |
+| `serial` | Yes | | The keychip serial number |
+| `ip` | Yes | | The tenpo router IP address (%d.%d.%d.%d) |
+| `firm_ver` | Yes | | The ALL.Net library version (a semantic version, formatted as %01d%02d%02d) |
+| `boot_ver` | Yes | | Unknown. Just pass 0000. (%02X%02X) |
+| `encode` | | `EUC-JP` | Request encoding. "EUC-JP", "Shift_JIS" and "UTF-8" are common, but be prepared to handle more. |
+| `format_ver` | | `1.00` | Request format version. Parsed as a float, however "1.00", "2.00" and "3" are the only values that should be observed. |
+| `hops` | | `-1` | |
+| `token` | | | Added in format 3, this value is echoed in the response. |
+
+Observed values for `firm_ver` are listed below, however other versions likely exist:
+
+- 0.01.00
+- 0.02.00
+- 2.00.07
+- 2.00.08
+- 2.01.02
+- 3.00.00
+- 3.00.01
+- 3.00.02
+- 3.00.03
+- 3.00.04
+- 3.00.05
+- 3.00.09
+- 5.00.00
+- 6.00.00
+
+The server should then use the provided information to authenticate the machine as it sees fit, and will then return the information required for use of ALL.Net services. The response structure varies depending on the format version in use.
+
+| Name | Required | Default | Version added | Final version present | Meaning |
+| ----------------- | -------- | ------- | ------------- | --------------------- | ------------------------------------------------------------------------------- |
+| `stat` | Yes | | | | Success: `1`, Game failure: `-1`, Machine failure: `-2`, Location failure: `-3` |
+| `uri` | Yes | _empty_ | | | Title server URI1. Will be empty if stat<=0 |
+| `host` | Yes | _empty_ | | | Title server hostname1. Will be empty if stat<=0 |
+| `place_id` | | | | | ALL.Net location ID |
+| `name` | | | | | ALL.Net location name |
+| `nickname` | | | | | ALL.Net location nickname |
+| `region0` | Yes | `0` | | | Region information. |
+| `region_name0` | Yes | _empty_ | | | |
+| `region_name1` | Yes | _empty_ | | | |
+| `region_name2` | Yes | _empty_ | | | |
+| `region_name3` | Yes | _empty_ | | | ^ |
+| `country` | | | 2 | | ALL.Net 3-character country code |
+| `allnet_id` | | | 3 | | |
+| `client_timezone` | Yes | _empty_ | 3 | | Example `+0900` |
+| `utc_time` | Yes | | 3 | | `yyyy-MM-dd'T'HH:mm:ss'Z'` |
+| `res_ver` | Yes | | 3 | | Will always be the literal `3` |
+| `token` | Yes | | 3 | | The token from the request |
+| `year` | Yes | | | 2 | Current time |
+| `month` | Yes | | | 2 | |
+| `day` | Yes | | | 2 | |
+| `hour` | Yes | | | 2 | |
+| `minute` | Yes | | | 2 | ^ |
+| `timezone` | Yes | | 2 | 2 | Will always be the literal `+09:00` |
+| `res_class` | Yes | | 2 | 2 | Will always be the literal `PowerOnResponseVer2` |
+| `setting` | Yes | | | | Machine setting. `1` indicates the machine is OK, and should always be set. |
+
+
+1. The hostname (if) present in `uri` is used for name resolution. The value in `host` is passed to the title server in the `Host` header, and can be utilised as an extra authentication step.
+
+### `/sys/servlet/Alive`
+There is no request for this endpoint. The response is the two bytes `OK` (that is, `Content-Length: 2`).
+
+### `/sys/servlet/DownloadOrder`
+All requests to this endpoint **MAY** be DFI-encoded. The request is as follows:
+
+
+| Name | Required | Default | Meaning |
+| --------- | -------- | ------- | ----------------------------------------------------------------------------------------------- |
+| `game_id` | Yes | | The four-digit game ID |
+| `ver` | Yes | | The game version |
+| `serial` | Yes | | The keychip serial number |
+| `ip` | | | The tenpo router IP address (%d.%d.%d.%d) |
+| `encode` | | | Request encoding. "EUC-JP", "Shift_JIS" and "UTF-8" are common, but be prepared to handle more. |
+
+The response is:
+
+
+| Name | Required | Default | Meaning |
+| -------- | --------------- | ------- | ---------------------------------------------------------------------------------------------------------------- |
+| `stat` | Yes | | Machine setting |
+| `serial` | 1 | | `,`-seperated list of the serial numbers of machines in the same store with the same game and machine group IDs. |
+| `uri` | Yes1 | `null` | Download order URI(s) |
+
+1. Omitted if `stat` is not `1`.
+
+`uri` can contain both an app download order url, and an option image download order url. The two are concatinated, with the option image having `|` prefixed. That is, if only an option image is available, this will take the obscure-looking value of `|https://url.to/opt`.
+
+### `/sys/servlet/LoaderStateRecorder`
+All requests to this endpoint **MUST NOT** be DFI-encoded. The request is as follows:
+
+
+| Name | Required | Meaning |
+| ----------- | -------- | ---------------------------------- |
+| `serial` | Yes | The keychip serial number |
+| `dvd` | Yes | |
+| `net` | Yes | |
+| `work` | Yes | |
+| `old_net` | Yes | |
+| `deliver` | Yes | |
+| `nb_ftd` | Yes | Number of files to download |
+| `nb_dld` | Yes | Number of files downloaded |
+| `last_sysa` | Yes | Last authentication unix timestamp |
+| `sysa_st` | Yes | Last authentication state |
+| `dld_st` | Yes | Download state |
+
+The response is either `OK` if the request was formatted correctly, otherwise `NG`.
+
+## Report API
+Used to report download status for an ongoing network-based game delivery, this category contains just a single endpoint.
+
+### `/sys/servlet/Report`
+
+## Title API
+These legacy endpoints are used to request title-specific information. I've not seen any games use these, and they're a low priority for documentation.
+
+### `/sys/servlet/GetMachineList`
+### `/sys/servlet/GetPlaceList`
+### `/sys/servlet/GetRegionList`
+### `/sys/servlet/MachineTable`
+### `/sys/servlet/PlaceRegionTable`
+### `/sys/servlet/PlaceRegionTableAll`
+
+## Admin API
+These endpoints are used for ALL.Net system administration and are not of interest. Their endpoints are recorded here for prosperity. Custom network authors should consider implementing their own administration functionality however best suits their architecture.
+
+### `/sys/servlet/AdminRegister`
+### `/sys/servlet/AdminView`
diff --git a/templates/pages/sega/network/billing.md b/templates/pages/sega/network/billing.md
new file mode 100644
index 0000000..9d479bd
--- /dev/null
+++ b/templates/pages/sega/network/billing.md
@@ -0,0 +1,7 @@
+# ALL.Net Billing
+
+The ALL.Net billing service is provided by `ib.naominet.jp`, and is a single HTTPS endpoint running on port `8443`. This port number is hardcoded in games.
+
+## `POST /request/`, `POST /request`, `POST /request.php`
+This endpoint is accessible at three URIs, which all function identically.
+
diff --git a/templates/pages/sega/network/index.html b/templates/pages/sega/network/index.html
deleted file mode 100644
index ba29e88..0000000
--- a/templates/pages/sega/network/index.html
+++ /dev/null
@@ -1,6 +0,0 @@
-{% extends "sega.html" %}
-{% block title %}Networking{% endblock %}
-{% block body %}
-
Networking
-{{ generate_toc()|safe }}
-{% endblock %}
\ No newline at end of file
diff --git a/templates/pages/sega/network/~allnet.md b/templates/pages/sega/network/index.md
similarity index 98%
rename from templates/pages/sega/network/~allnet.md
rename to templates/pages/sega/network/index.md
index 7c2ca97..c362973 100644
--- a/templates/pages/sega/network/~allnet.md
+++ b/templates/pages/sega/network/index.md
@@ -5,7 +5,7 @@ ALL.Net, short for Amusement Linkage Live Network, is SEGA's standadised arcade
The ALL.Net model is compresed of four networked services:
1. [Authentication. This is `naominet.jp`, and handles basic operations.](./auth)
-2. The billing service. This is `ib.naominet.jp`, and handles tracking and updating play counters.
+2. [The billing service. This is `ib.naominet.jp`, and handles tracking and updating play counters.](./billing)
3. AiMeDB. This is `aime.naominet.jp`, and handles user management.
4. The title server. The URL for this is provided by ALL.Net, as different games use different services for this.
diff --git a/templates/pages/sega/network/~auth.md b/templates/pages/sega/network/~auth.md
deleted file mode 100644
index f689c5b..0000000
--- a/templates/pages/sega/network/~auth.md
+++ /dev/null
@@ -1,149 +0,0 @@
-# ALL.Net Authentication
-
-The ALL.Net authentication service is divided into four primary categories. They are ordered in decreasing importance on this page.
-
-**This entire service is HTTP-only!**
-
-## Auth API
-These four endpoints handle the primary functions of the ALL.Net authentication service. Requests and responses are sent as a url-encoded query-value string.
-
-Some endpoints make use of a mildly obfuscated version of this. When the `Pragma: DFI` header is present for a request or response, it indicates that the content is a base64 encoded, deflated, version of its real value. If a request was made with `Pragma: DFI`, the response will be too.
-
-All responses have the `Content-Type` of `text/plain; charset=%s`, where the charset is `EUC-JP` if unspecified in the request body.
-
-Requests can be made using both the `GET` and `POST` verbs, and function identically.
-
-### `/sys/servlet/PowerOn`
-All requests to this endpoint **MUST** be DFI-encoded. The request is as follows:
-
-| Name | Required | Default | Meaning |
-| ---------- | -------- | ------- | ---------------------------------------------------------------------------------------------------------------------- |
-| game_id | Yes | | The four-digit game ID |
-| ver | Yes | | The game version |
-| serial | Yes | | The keychip serial number |
-| ip | Yes | | The tenpo router IP address (%d.%d.%d.%d) |
-| firm_ver | Yes | | The ALL.Net library version (a semantic version, formatted as %01d%02d%02d) |
-| boot_ver | Yes | | Unknown. Just pass 0000. (%02X%02X) |
-| encode | | EUC-JP | Request encoding. "EUC-JP", "Shift_JIS" and "UTF-8" are common, but be prepared to handle more. |
-| format_ver | | 1.00 | Request format version. Parsed as a float, however "1.00", "2.00" and "3" are the only values that should be observed. |
-| hops | | -1 | |
-| token | | | Added in format 3, this value is echoed in the response. |
-
-Observed values for `firm_ver` are listed below, however other versions likely exist:
-
-- 0.01.00
-- 0.02.00
-- 2.00.07
-- 2.00.08
-- 2.01.02
-- 3.00.00
-- 3.00.01
-- 3.00.02
-- 3.00.03
-- 3.00.04
-- 3.00.05
-- 3.00.09
-- 5.00.00
-- 6.00.00
-
-The server should then use the provided information to authenticate the machine as it sees fit, and will then return the information required for use of ALL.Net services. The response structure varies depending on the format version in use.
-
-| Name | Required | Default | Version added | Final version present | Meaning |
-| --------------- | -------- | ------- | ------------- | --------------------- | ------------------------------------------------------------------------------- |
-| stat | Yes | | | | Success: `1`, Game failure: `-1`, Machine failure: `-2`, Location failure: `-3` |
-| uri | Yes | _empty_ | | | Title server URI1. Will be empty if stat<=0 |
-| host | Yes | _empty_ | | | Title server hostname1. Will be empty if stat<=0 |
-| place_id | | | | | ALL.Net location ID |
-| name | | | | | ALL.Net location name |
-| nickname | | | | | ALL.Net location nickname |
-| region0 | Yes | `0` | | | Region information. |
-| region_name0 | Yes | _empty_ | | | |
-| region_name1 | Yes | _empty_ | | | |
-| region_name2 | Yes | _empty_ | | | |
-| region_name3 | Yes | _empty_ | | | ^ |
-| country | | | 2 | | ALL.Net 3-character country code |
-| allnet_id | | | 3 | | |
-| client_timezone | Yes | _empty_ | 3 | | Example `+0900` |
-| utc_time | Yes | | 3 | | `yyyy-MM-dd'T'HH:mm:ss'Z'` |
-| res_ver | Yes | | 3 | | Will always be the literal `3` |
-| token | Yes | | 3 | | The token from the request |
-| year | Yes | | | 2 | Current time |
-| month | Yes | | | 2 | |
-| day | Yes | | | 2 | |
-| hour | Yes | | | 2 | |
-| minute | Yes | | | 2 | ^ |
-| timezone | Yes | | 2 | 2 | Will always be the literal `+09:00` |
-| res_class | Yes | | 2 | 2 | Will always be the literal `PowerOnResponseVer2` |
-| setting | Yes | | | | Machine setting. `1` indicates the machine is OK, and should always be set. |
-
-
-1. The hostname (if) present in `uri` is used for name resolution. The value in `host` is passed to the title server in the `Host` header, and can be utilised as an extra authentication step.
-
-### `/sys/servlet/Alive`
-There is no request for this endpoint. The response is the two bytes `OK` (that is, `Content-Length: 2`).
-
-### `/sys/servlet/DownloadOrder`
-All requests to this endpoint **MAY** be DFI-encoded. The request is as follows:
-
-
-| Name | Required | Default | Meaning |
-| ------- | -------- | ------- | ----------------------------------------------------------------------------------------------- |
-| game_id | Yes | | The four-digit game ID |
-| ver | Yes | | The game version |
-| serial | Yes | | The keychip serial number |
-| ip | Yes | | The tenpo router IP address (%d.%d.%d.%d) |
-| encode | | | Request encoding. "EUC-JP", "Shift_JIS" and "UTF-8" are common, but be prepared to handle more. |
-
-The response is:
-
-
-| Name | Required | Default | Meaning |
-| ------ | --------------- | ------- | ---------------------------------------------------------------------------------------------------------------- |
-| stat | Yes | | Machine setting |
-| serial | 1 | | `,`-seperated list of the serial numbers of machines in the same store with the same game and machine group IDs. |
-| uri | Yes1 | `null` | Download order URI(s) |
-
-1. Omitted if `stat` is not `1`.
-
-`uri` can contain both an app download order url, and an option image download order url. The two are concatinated, with the option image having `|` prefixed. That is, if only an option image is available, this will take the obscure-looking value of `|https://url.to/opt`.
-
-### `/sys/servlet/LoaderStateRecorder`
-All requests to this endpoint **MUST NOT** be DFI-encoded. The request is as follows:
-
-
-| Name | Required | Meaning |
-| --------- | -------- | ---------------------------------- |
-| serial | Yes | The keychip serial number |
-| dvd | Yes | |
-| net | Yes | |
-| work | Yes | |
-| old_net | Yes | |
-| deliver | Yes | |
-| nb_ftd | Yes | Number of files to download |
-| nb_dld | Yes | Number of files downloaded |
-| last_sysa | Yes | Last authentication unix timestamp |
-| sysa_st | Yes | Last authentication state |
-| dld_st | Yes | Download state |
-
-The response is either `OK` if the request was formatted correctly, otherwise `NG`.
-
-## Report API
-Used to report download status for an ongoing network-based game delivery, this category contains just a single endpoint.
-
-### `/sys/servlet/Report`
-
-## Title API
-These legacy endpoints are used to request title-specific information. I've not seen any games use these, and they're a low priority for documentation.
-
-### `/sys/servlet/GetMachineList`
-### `/sys/servlet/GetPlaceList`
-### `/sys/servlet/GetRegionList`
-### `/sys/servlet/MachineTable`
-### `/sys/servlet/PlaceRegionTable`
-### `/sys/servlet/PlaceRegionTableAll`
-
-## Admin API
-These endpoints are used for ALL.Net system administration and are not of interest. Their endpoints are recorded here for prosperity. Custom network authors should consider implementing their own administration functionality however best suits their architecture.
-
-### `/sys/servlet/AdminRegister`
-### `/sys/servlet/AdminView`
diff --git a/templates/sega.html b/templates/sega.html
index cc5a8f7..bbe1348 100644
--- a/templates/sega.html
+++ b/templates/sega.html
@@ -5,6 +5,7 @@