1747 lines
61 KiB
HTML
1747 lines
61 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>Packet format | eAmuse API</title>
|
|
|
|
<link rel="stylesheet" href="styles.css">
|
|
|
|
</head>
|
|
|
|
<body>
|
|
<table>
|
|
<tr>
|
|
<td><a href=".">Contents</a></td>
|
|
<td><a href="./transport.html">Transport layer</a></td>
|
|
<td><a href="./packet.html">Packet format</a></td>
|
|
<td><a href="./protocol.html">Application Protocol</a></td>
|
|
</tr>
|
|
</table>
|
|
|
|
<h1>Application Protocol</h1>
|
|
<p>As the previous pages have eluded to (you <i>did</i> read them, didn't you?), eAmuse uses HTTP as its main way of
|
|
getting data around. This means we need an HTTP server running but, as we'll see, we don't need to think too
|
|
hard about that.</p>
|
|
<p>Every request made is a <code>POST</code> request, to <code>//<model>/<module>/<method></code>,
|
|
with its body being encoded data as described in the previous sections. In addition to the
|
|
<code>X-Compress:</code> and <code>X-Eamuse-Info:</code> headers previously detailed, there is also a
|
|
<code>X-PCB-ID:</code> header. that can be set. Your machine's PCB ID uniquely defines the physical board. This
|
|
header is added in out-bound requests, and allows the server to identify you. Importantly, it's also the value
|
|
that the server uses to identify which machines are authorized to be on the network, and which are not.
|
|
</p>
|
|
<p>Every request is followed immediately by a response. Any response code other than <code>200</code> is considered
|
|
a failure.</p>
|
|
|
|
<details>
|
|
<summary>Source code details</summary>
|
|
<figure>
|
|
<img src="images/200_only.png">
|
|
<figcaption><code>libavs-win32-ea3.dll:0x1000f8e7</code></figcaption>
|
|
</figure>
|
|
</details>
|
|
|
|
<p>All requests follow a basic format:</p>
|
|
<pre><code><call model="<i>model</i>" srcid="<i>srcid</i>" tag="<i>tag</i>">
|
|
<<i>module</i> method="<i>method</i>" <i>...attributes</i>>
|
|
<i>children</i>
|
|
</<i>module</i>>
|
|
</call></code></pre>
|
|
<p>The responses follow a similar format:</p>
|
|
<pre><code><response>
|
|
<<i>module</i> status="<i>status</i>" <i>...attributes</i>>
|
|
<i>children</i>
|
|
</<i>module</i>>
|
|
</response></code></pre>
|
|
<p>With <code>"0"</code> being a successful status. Convention is to identify a specific method as
|
|
<code><i>module</i>.<i>method</i></code>, and we'll be following this convention in this document too. There are
|
|
a <i>lot</i> of possible methods, so the majority of this document is a big reference for them all. There are a
|
|
number of generic methods, and a number of game specific ones. If you haven't clocked yet, I've been working on
|
|
an SDVX 4 build for most of these pages, and each game also comes with its own set of game-specific methods.
|
|
These are namespaces under the <code>game.%s</code> module and, in the case of SDVX 4, are all
|
|
<code>game.sv4_<i>method</i></code>. I may or may not document the SDVX 4 specific methods, but I've listed them
|
|
here anyway for completeness.
|
|
</p>
|
|
<p>Paths in the XML bodies are formatted using an XPath-like syntax. That is, <code>status@/response</code> gets the
|
|
<code>status</code> attribute from <code>response</code>, and <code>response/eacoin/sequence</code> would return
|
|
that node's value.
|
|
</p>
|
|
<p><b>NOTE:</b> I am using the non-standard notation of <code><node* ...</code> and
|
|
<code><node attr*="" ...</code> to indicate that an attribute or node is not always present! Additionally, I
|
|
am going to use the notation of <code><node[]></code> to indicate that a node repeats.
|
|
</p>
|
|
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<td>Status</td>
|
|
<td>Meaning</td>
|
|
</tr>
|
|
</thead>
|
|
<tr>
|
|
<td><code>0</code></td>
|
|
<td>Success</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>109</code></td>
|
|
<td>No profile</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>110</code></td>
|
|
<td>Not allowed</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>112</code></td>
|
|
<td>Card not found (<code>cardmng.inquire</code>)</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>116</code></td>
|
|
<td>Card pin invalid (<code>cardmng.authpass</code>)</td>
|
|
</tr>
|
|
</table>
|
|
<details>
|
|
<summary>How to reverse engineer these calls</summary>
|
|
<p>Turns out bemani have been quite sensible in how they implemented their code for creating structures, so it's
|
|
rather readable. That said, if you've been using Ghidra (like me!), this is the time to switch to IDA. I'll
|
|
let the below screenshots below speak for themselves:
|
|
</p>
|
|
|
|
<details>
|
|
<summary>Ghidra</summary>
|
|
<img src="images/eventlog_ghidra.png">
|
|
<img src="images/matching_request_ghidra.png">
|
|
</details>
|
|
<details>
|
|
<summary>IDA Pro</summary>
|
|
<img src="images/eventlog_ida.png">
|
|
<img src="images/matching_request_ida.png">
|
|
</details>
|
|
|
|
<p>I know which of these I'd rather use for reverse engineering (sorry, Ghidra)!</p>
|
|
</details>
|
|
|
|
<h2>Possible XRPC requests</h2>
|
|
|
|
<ul>
|
|
<li><code><a href="#eventlog">eventlog.%s</a></code></li>
|
|
<ul>
|
|
<li><code><a href="#eventlog.write">eventlog.write</a></code></li>
|
|
</ul>
|
|
<li><code><a href="#playerdata">playerdata.%s</a></code></li>
|
|
<ul>
|
|
<li><code><a href="#playerdata.usergamedata_send">playerdata.usergamedata_send</a></code></li>
|
|
<li><code><a href="#playerdata.usergamedata_recv">playerdata.usergamedata_recv</a></code></li>
|
|
<li><code><a href="#playerdata.usergamedata_inheritance">playerdata.usergamedata_inheritance</a></code></li>
|
|
<li><code><a href="#playerdata.usergamedata_condrecv">playerdata.usergamedata_condrecv</a></code></li>
|
|
<li><code><a href="#playerdata.usergamedata_scorerank">playerdata.usergamedata_scorerank</a></code></li>
|
|
</ul>
|
|
<li><code><a href="#matching">matching.%s</a></code></li>
|
|
<ul>
|
|
<li><code><a href="#matching.request">matching.request</a></code></li>
|
|
<li><code><a href="#matching.wait">matching.wait</a></code></li>
|
|
<li><code><a href="#matching.finish">matching.finish</a></code></li>
|
|
</ul>
|
|
<li><code><a href="#system">system.%s</a></code></li>
|
|
<ul>
|
|
<li><code><a href="#system.getmaster">system.getmaster</a></code></li>
|
|
<li><code><a href="#system.getlocationiplist">system.getlocationiplist</a></code></li>
|
|
<li><code><a href="#system.xrpcproxy">system.xrpcproxy</a></code></li>
|
|
<li><code><a href="#system.convcardnumber">system.convcardnumber</a></code></li>
|
|
</ul>
|
|
<li><code><a href="#esoc">esoc.%s</a></code></li>
|
|
<ul>
|
|
<li><code><a href="#esoc.read">esoc.read</a></code></li>
|
|
<li><code><a href="#esoc.write">esoc.write</a></code></li>
|
|
</ul>
|
|
<li><code><a href="#cardmng">cardmng.%s</a></code></li>
|
|
<ul>
|
|
<li><code><a href="#cardmng.inquire">cardmng.inquire</a></code></li>
|
|
<li><code><a href="#cardmng.getrefid">cardmng.getrefid</a></code></li>
|
|
<li><code><a href="#cardmng.bindmodel">cardmng.bindmodel</a></code></li>
|
|
<li><code><a href="#cardmng.bindcard">cardmng.bindcard</a></code></li>
|
|
<li><code><a href="#cardmng.authpass">cardmng.authpass</a></code></li>
|
|
<li><code><a href="#cardmng.getkeepspan">cardmng.getkeepspan</a></code></li>
|
|
<li><code><a href="#cardmng.getkeepremain">cardmng.getkeepremain</a></code></li>
|
|
<li><code><a href="#cardmng.getdatalist">cardmng.getdatalist</a></code></li>
|
|
</ul>
|
|
<li><code><a href="#esign">esign.%s</a></code></li>
|
|
<ul>
|
|
<li><code><a href="#esign.request">esign.request</a></code></li>
|
|
</ul>
|
|
<li><code><a href="#package">package.%s</a></code></li>
|
|
<ul>
|
|
<li><code><a href="#package.list">package.list</a></code></li>
|
|
<li><code><a href="#package.intend">package.intend</a></code></li>
|
|
</ul>
|
|
<li><code><a href="#userdata">userdata.%s</a></code></li>
|
|
<ul>
|
|
<li><code><a href="#userdata.read">userdata.read</a></code></li>
|
|
<li><code><a href="#userdata.write">userdata.write</a></code></li>
|
|
</ul>
|
|
<li><code><a href="#services">services.%s</a></code></li>
|
|
<ul>
|
|
<li><code><a href="#services.get">services.get</a></code></li>
|
|
</ul>
|
|
<li><code><a href="#pcbtracker">pcbtracker.%s</a></code></li>
|
|
<ul>
|
|
<li><code><a href="#pcbtracker.alive">pcbtracker.alive</a></code></li>
|
|
</ul>
|
|
<li><code><a href="#pcbevent">pcbevent.%s</a></code></li>
|
|
<ul>
|
|
<li><code><a href="#pcbevent.put">pcbevent.put</a></code></li>
|
|
</ul>
|
|
<li><code><a href="#message">message.%s</a></code></li>
|
|
<ul>
|
|
<li><code><a href="#message.get">message.get</a></code></li>
|
|
</ul>
|
|
<li><code><a href="#facility">facility.%s</a></code></li>
|
|
<ul>
|
|
<li><code><a href="#facility.get">facility.get</a></code></li>
|
|
</ul>
|
|
<li><code><a href="#apsmanager">apsmanager.%s</a></code></li>
|
|
<ul>
|
|
<li><code><a href="#apsmanager.getstat">apsmanager.getstat</a></code></li>
|
|
</ul>
|
|
<li><code><a href="#sidmgr">sidmgr.%s</a></code></li>
|
|
<ul>
|
|
<li><code><a href="#sidmgr.create">sidmgr.create</a></code></li>
|
|
<li><code><a href="#sidmgr.open">sidmgr.open</a></code></li>
|
|
<li><code><a href="#sidmgr.touch">sidmgr.touch</a></code></li>
|
|
<li><code><a href="#sidmgr.branch">sidmgr.branch</a></code></li>
|
|
<li><code><a href="#sidmgr.close">sidmgr.close</a></code></li>
|
|
</ul>
|
|
<li><code><a href="#dlstatus">dlstatus.%s</a></code></li>
|
|
<ul>
|
|
<li><code><a href="#dlstatus.done">dlstatus.done</a></code></li>
|
|
<li><code><a href="#dlstatus.progress">dlstatus.progress</a></code></li>
|
|
</ul>
|
|
<li><code><a href="#eacoin">eacoin.%s</a></code></li>
|
|
<ul>
|
|
<li><code><a href="#eacoin.checkin">eacoin.checkin</a></code></li>
|
|
<li><code><a href="#eacoin.checkout">eacoin.checkout</a></code></li>
|
|
<li><code><a href="#eacoin.consume">eacoin.consume</a></code></li>
|
|
<li><code><a href="#eacoin.getbalance">eacoin.getbalance</a></code></li>
|
|
<li><code><a href="#eacoin.getecstatus">eacoin.getecstatus</a></code></li>
|
|
<li><code><a href="#eacoin.touch">eacoin.touch</a></code></li>
|
|
<li><code><a href="#eacoin.opchpass">eacoin.opchpass</a></code></li>
|
|
<li><code><a href="#eacoin.opcheckin">eacoin.opcheckin</a></code></li>
|
|
<li><code><a href="#eacoin.opcheckout">eacoin.opcheckout</a></code></li>
|
|
<li><code><a href="#eacoin.getlog">eacoin.getlog</a></code></li>
|
|
</ul>
|
|
<li><code><a href="#traceroute">traceroute.%s</a></code></li>
|
|
<ul>
|
|
<li><code><a href="#traceroute.send">traceroute.send</a></code></li>
|
|
</ul>
|
|
<li><code><a href="#game">game.%s</a></code></li>
|
|
<ul>
|
|
<li><code><a href="#game.sv4_sample">game.sv4_sample</a></code></li>
|
|
<li><code><a href="#game.sv4_new">game.sv4_new</a></code></li>
|
|
<li><code><a href="#game.sv4_load">game.sv4_load</a></code></li>
|
|
<li><code><a href="#game.sv4_load_m">game.sv4_load_m</a></code></li>
|
|
<li><code><a href="#game.sv4_save">game.sv4_save</a></code></li>
|
|
<li><code><a href="#game.sv4_save_m">game.sv4_save_m</a></code></li>
|
|
<li><code><a href="#game.sv4_common">game.sv4_common</a></code></li>
|
|
<li><code><a href="#game.sv4_shop">game.sv4_shop</a></code></li>
|
|
<li><code><a href="#game.sv4_hiscore">game.sv4_hiscore</a></code></li>
|
|
<li><code><a href="#game.sv4_buy">game.sv4_buy</a></code></li>
|
|
<li><code><a href="#game.sv4_exception">game.sv4_exception</a></code></li>
|
|
<li><code><a href="#game.sv4_entry_s">game.sv4_entry_s</a></code></li>
|
|
<li><code><a href="#game.sv4_entry_e">game.sv4_entry_e</a></code></li>
|
|
<li><code><a href="#game.sv4_frozen">game.sv4_frozen</a></code></li>
|
|
<li><code><a href="#game.sv4_lounce">game.sv4_lounce</a></code></li>
|
|
<li><code><a href="#game.sv4_save_e">game.sv4_save_e</a></code></li>
|
|
<li><code><a href="#game.sv4_save_pb">game.sv4_save_pb</a></code></li>
|
|
<li><code><a href="#game.sv4_save_c">game.sv4_save_c</a></code></li>
|
|
<li><code><a href="#game.sv4_play_s">game.sv4_play_s</a></code></li>
|
|
<li><code><a href="#game.sv4_play_e">game.sv4_play_e</a></code></li>
|
|
<li><code><a href="#game.sv4_serial">game.sv4_serial</a></code></li>
|
|
<li><code><a href="#game.sv4_save_fi">game.sv4_save_fi</a></code></li>
|
|
<li><code><a href="#game.sv4_print">game.sv4_print</a></code></li>
|
|
<li><code><a href="#game.sv4_print_h">game.sv4_print_h</a></code></li>
|
|
<li><code><a href="#game.sv4_load_r">game.sv4_load_r</a></code></li>
|
|
<li><code><a href="#game.sv4_save_campaign">game.sv4_save_campaign</a></code></li>
|
|
</ul>
|
|
</ul>
|
|
<h2 id="eventlog"><code>eventlog</code></h2>
|
|
<h3 id="eventlog.write"><code>eventlog.write</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<eventlog method="write">
|
|
<retrycnt __type="u32" />
|
|
<data>
|
|
<eventid __type="str" />
|
|
<eventorder __type="s32" />
|
|
<pcbtime __type="u64" />
|
|
<gamesession __type="s64" />
|
|
<strdata1 __type="str" />
|
|
<strdata2 __type="str" />
|
|
<numdata1 __type="s64" />
|
|
<numdata2 __type="s64" />
|
|
<locationid __type="str" />
|
|
</data>
|
|
</eventlog>
|
|
</call></code></pre>
|
|
<p>Event ID list:</p>
|
|
<ul>
|
|
<li><code>G_GAMED</code></li>
|
|
<li><code>S_ERROR</code></li>
|
|
<li><code>S_PWRON</code> <b>TODO: find more!</b></li>
|
|
<li><code>T_OTDEMO</code></li>
|
|
</ul>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<eventlog status="<i>status</i>">
|
|
<gamesession __type="s64" />
|
|
<logsendflg __type="s32" />
|
|
<logerrlevel __type="s32" />
|
|
<evtidnosendflg __type="s32" />
|
|
</eventlog>
|
|
</response></code></pre>
|
|
|
|
|
|
<h2 id="playerdata"><code>playerdata</code></h2>
|
|
<h3 id="playerdata.usergamedata_send"><code>playerdata.usergamedata_send</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<playerdata method="usergamedata_send">
|
|
<retrycnt __type="u32" />
|
|
<info>
|
|
<version __type="u32" />
|
|
</info>
|
|
<data>
|
|
<refid __type="str" />
|
|
<dataid __type="str" />
|
|
<gamekind __type="str" />
|
|
<datanum __type="u32" />
|
|
<record>
|
|
<d[] __type="str" />
|
|
</record>
|
|
</data>
|
|
</playerdata>
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<playerdata status="<i>status</i>">
|
|
<result __type="s32" />
|
|
</playerdata>
|
|
</response></code></pre>
|
|
|
|
<h3 id="playerdata.usergamedata_recv"><code>playerdata.usergamedata_recv</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<playerdata method="usergamedata_recv">
|
|
<info>
|
|
<version __type="u32" />
|
|
</info>
|
|
<data>
|
|
<refid __type="str">
|
|
<dataid __type="str">
|
|
<gamekind __type="str">
|
|
<recv_num __type="u32">
|
|
</data>
|
|
</playerdata>
|
|
</call></code></pre>
|
|
<pre><code><call <i>...</i>>
|
|
<playerdata method="usergamedata_recv">
|
|
<data>
|
|
<refid __type="str">
|
|
<dataid __type="str">
|
|
<gamekind __type="str">
|
|
<recv_csv __type="str">
|
|
</data>
|
|
</playerdata>
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<playerdata status="<i>status</i>">
|
|
<player>
|
|
<result>
|
|
<record_num __type="u32" />
|
|
</result>
|
|
<record>
|
|
<d[]>
|
|
<bin1 __type="str" />
|
|
</d[]>
|
|
</record>
|
|
</player>
|
|
</playerdata>
|
|
</response></code></pre>
|
|
|
|
<h3 id="playerdata.usergamedata_inheritance"><code>playerdata.usergamedata_inheritance</code></h3>
|
|
<p>See: <code>playerdata.usergamedata_recv</code></p>
|
|
|
|
<h3 id="playerdata.usergamedata_condrecv"><code>playerdata.usergamedata_condrecv</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<playerdata method="usergamedata_condrecv">
|
|
<info>
|
|
<version __type="s32" />
|
|
</info>
|
|
<data>
|
|
<dataid __type="str" />
|
|
<gamekind __type="str" />
|
|
<vkey __type="str" />
|
|
<conditionkey __type="str" />
|
|
<columns_bit __type="u64" />
|
|
<conditions_num __type="u32" />
|
|
<where __type="str" />
|
|
<order_num __type="u32" />
|
|
<order __type="str" />
|
|
<recv_num __type="u32" />
|
|
</info>
|
|
</playerdata>
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<playerdata status="<i>status</i>">
|
|
<player>
|
|
<result __type="s32" />
|
|
<record_num __type="s32" />
|
|
<record>
|
|
<d[]>
|
|
<bin1 __type="str" />
|
|
</d[]>
|
|
<record/>
|
|
</player>
|
|
</playerdata>
|
|
</response></code></pre>
|
|
|
|
<h3 id="playerdata.usergamedata_scorerank"><code>playerdata.usergamedata_scorerank</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<playerdata method="usergamedata_scorerank">
|
|
<info>
|
|
<version __type="s32" />
|
|
</info>
|
|
<data>
|
|
<dataid __type="str" />
|
|
<gamekind __type="str" />
|
|
<ckey __type="str" />
|
|
<conditionkey __type="str" />
|
|
<score __type="str" />
|
|
</data>
|
|
</playerdata>
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<playerdata status="<i>status</i>">
|
|
<rank>
|
|
<result __type="s32" />
|
|
<rank __type="s32" />
|
|
<updatetime __type="u64" />
|
|
</rank>
|
|
</playerdata>
|
|
</response></code></pre>
|
|
|
|
|
|
<h2 id="matching"><code>matching</code></h2>
|
|
<h3 id="matching.request"><code>matching.request</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<matching method="request">
|
|
<info>
|
|
<version __type="s32" />
|
|
</info>
|
|
<data>
|
|
<matchtyp __type="s32" />
|
|
<matchgrp __type="s32" />
|
|
<matchflg __type="s32" />
|
|
<waituser __type="s32" />
|
|
<waittime __type="s32" />
|
|
<joinip __type="str" />
|
|
<localip __type="str" />
|
|
<localport __type="s32" />
|
|
<dataid __type="str" />
|
|
<gamekind __type="str" />
|
|
<locationid __type="str" />
|
|
<lineid __type="str" />
|
|
<locationcountry __type="str" />
|
|
<locationregion __type="str" />
|
|
</data>
|
|
</matching>
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<matching status="<i>status</i>">
|
|
<hostid __type="s64" />
|
|
<result __type="s32" />
|
|
<hostip_g __type="str" />
|
|
<hostip_l __type="str" />
|
|
<hostport_l __type="s32" />
|
|
<hostport_g __type="s32" />
|
|
</matching>
|
|
</response></code></pre>
|
|
|
|
<h3 id="matching.wait"><code>matching.wait</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<matching method="wait">
|
|
<info>
|
|
<version __type="s32" />
|
|
</info>
|
|
<data>
|
|
<hostid __type="s64" />
|
|
<locationid __type="str" />
|
|
<lineid __type="str" />
|
|
</data>
|
|
</matching>
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<matching status="<i>status</i>">
|
|
<result __type="s32" />
|
|
<prwtime __type="s32" />
|
|
</matching>
|
|
</response></code></pre>
|
|
|
|
<h3 id="matching.finish"><code>matching.finish</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<matching method="finish">
|
|
<info>
|
|
<version __type="s32" />
|
|
</info>
|
|
<data>
|
|
<hostid __type="s64" />
|
|
<locationid __type="str" />
|
|
<lineid __type="str" />
|
|
</data>
|
|
</matching>
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<matching status="<i>status</i>">
|
|
<result __type="s32" />
|
|
</matching>
|
|
</response></code></pre>
|
|
|
|
|
|
<h2 id="system"><code>system</code></h2>
|
|
<h3 id="system.getmaster"><code>system.getmaster</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<system method="getmaster">
|
|
<data>
|
|
<gamekind __type="str" />
|
|
<datatype __type="str" />
|
|
<datakey __type="str" />
|
|
</data>
|
|
</system>
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<system status="<i>status</i>">
|
|
<result __type="s32" />
|
|
<strdata1 __type="str" />
|
|
<strdata2 __type="str" />
|
|
<updatedate __type="u64" />
|
|
</system>
|
|
</response></code></pre>
|
|
|
|
<h3 id="system.getlocationiplist"><code>system.getlocationiplist</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<system method="getlocationiplist">
|
|
<data>
|
|
<locationid __type="str" />
|
|
<lineid __type="str" />
|
|
</data>
|
|
</system>
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<system status="<i>status</i>">
|
|
<result __type="s32" />
|
|
<iplist>
|
|
<record_num __type="s32" />
|
|
<record[]>
|
|
<localconn __type="str" />
|
|
</record[]>
|
|
</iplist>
|
|
</system>
|
|
</response></code></pre>
|
|
|
|
<h3 id="system.xrpcproxy"><code>system.xrpcproxy</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<system method="xrpcproxy">
|
|
<info>
|
|
<version __type="s32" />
|
|
</info>
|
|
<data>
|
|
<hostid __type="s64" />
|
|
<locationid __type="str" />
|
|
<lineid __type="str" />
|
|
</data>
|
|
</system>
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<system status="<i>status</i>">
|
|
<result __type="s32" />
|
|
<pwrtime __type="s32" />
|
|
<matchlist>
|
|
<record_num __type="u32" />
|
|
<record[]>
|
|
<pcbid __type="str" />
|
|
<statusflg __type="str" />
|
|
<matchgrp __type="s32" />
|
|
<hostid __type="s64" />
|
|
<jointime __type="u64" />
|
|
<connip_g __type="str" />
|
|
<connport_g __type="s32" />
|
|
<connip_l __type="str" />
|
|
<connport_l __type="s32" />
|
|
</record[]>
|
|
</matchlist>
|
|
</system>
|
|
</response></code></pre>
|
|
|
|
<h3 id="system.convcardnumber"><code>system.convcardnumber</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<system method="convcardnumber">
|
|
<info>
|
|
<version __type="s32" />
|
|
</info>
|
|
<data>
|
|
<card_id __type="str" />
|
|
<card_type __type="s32" />
|
|
</data>
|
|
</system>
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<system status="<i>status</i>">
|
|
<result __type="s32" />
|
|
<data>
|
|
<card_number __type="str" />
|
|
</data>
|
|
</system>
|
|
</response></code></pre>
|
|
|
|
|
|
<h2 id="esoc"><code>esoc</code></h2>
|
|
<h3 id="esoc.read"><code>esoc.read</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<esoc method="read">
|
|
<senddata />
|
|
</esoc>
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<esoc status="<i>status</i>">
|
|
<recvdata />
|
|
</esoc>
|
|
</response></code></pre>
|
|
<p>Go figure.</p>
|
|
|
|
<h3 id="esoc.write"><code>esoc.write</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<esoc method="write">
|
|
<senddata />
|
|
</esoc>
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<esoc status="<i>status</i>" />
|
|
</response></code></pre>
|
|
|
|
|
|
<h2 id="cardmng"><code>cardmng</code></h2>
|
|
<h3 id="cardmng.inquire"><code>cardmng.inquire</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<cardmng method="inquire" cardid="" cardtype="" update="" model*="" />
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<cardmng status="<i>status</i>" refid="" dataid="" pcode="" newflag="" binded="" expired=" ecflag="" useridflag="" extidflag="" lastupdate="" />
|
|
</response></code></pre>
|
|
<p>If the <code>cardid</code> cannot be found, <code>status</code> should be set to <code>112</code> with no other
|
|
information return. Otherwise, we return information about the found card.</p>
|
|
<table class="nocode">
|
|
<tr>
|
|
<td><code>refid</code></td>
|
|
<td>A reference to this card to be used in other requests</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>dataid</code></td>
|
|
<td>Appears to be set the same as <code>refid</code>; presumably to allow different keys for game state vs
|
|
login details.</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>newflag</code></td>
|
|
<td><code>1</code> or <code>0</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>binded</code></td>
|
|
<td>Has a profile ever been created for this game (or an older version, requiring a migration)
|
|
(<code>1</code> or <code>0</code>)</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>expired</code></td>
|
|
<td>Did we find </td>
|
|
</tr>
|
|
</table>
|
|
|
|
<h3 id="cardmng.getrefid"><code>cardmng.getrefid</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<cardmng method="getrefid" cardtype="" cardid=" newflag="" passwd="" model*="" />
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<cardmng status="<i>status</i>" refid="" dataid="" pcode="" />
|
|
</response></code></pre>
|
|
|
|
<h3 id="cardmng.bindmodel"><code>cardmng.bindmodel</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<cardmng method="bindmodel" refid="" newflag="" model*="" />
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<cardmng status="<i>status</i>" dataid="" />
|
|
</response></code></pre>
|
|
|
|
<h3 id="cardmng.bindcard"><code>cardmng.bindcard</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<cardmng method="bindcard" cardtype="" newid="" refid="" model*="" />
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<cardmng status="<i>status</i>" />
|
|
</response></code></pre>
|
|
|
|
<h3 id="cardmng.authpass"><code>cardmng.authpass</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<cardmng method="authpass" refid="" pass="" model*="" />
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<cardmng status="<i>status</i>" />
|
|
</response></code></pre>
|
|
|
|
<h3 id="cardmng.getkeepspan"><code>cardmng.getkeepspan</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<cardmng method="getkeepspan" model*="" />
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<cardmng status="<i>status</i>" keepspan="" />
|
|
</response></code></pre>
|
|
|
|
<h3 id="cardmng.getkeepremain"><code>cardmng.getkeepremain</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<cardmng method="getkeepremain" refid="" model*="" />
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<cardmng status="<i>status</i>" keepremain="" />
|
|
</response></code></pre>
|
|
|
|
<h3 id="cardmng.getdatalist"><code>cardmng.getdatalist</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<cardmng method="getdatalist" refid="" model*="" />
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<cardmng status="<i>status</i>">
|
|
<item[]>
|
|
<mcode __type="str" />
|
|
<dataid __type="str" />
|
|
<regtime __type="str" />
|
|
<lasttime __type="str" />
|
|
<exptime __type="str" />
|
|
<expflag __type="u8" />
|
|
</item[]>
|
|
</cardmng>
|
|
</response></code></pre>
|
|
|
|
|
|
<h2 id="esign"><code>esign</code></h2>
|
|
<h3 id="esign.request"><code>esign.request</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<esign method="request">
|
|
<i>placeholder</i>
|
|
</esign>
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<esign status="<i>status</i>">
|
|
<i>placeholder</i>
|
|
</esign>
|
|
</response></code></pre>
|
|
|
|
|
|
<h2 id="package"><code>package</code></h2>
|
|
|
|
<h3 id="package.list"><code>package.list</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<package method="list" pkgtype="<i>pkgtype</i>" model*="" />
|
|
</call></code></pre>
|
|
<p><code>all</code> is the only currently observed value for <code>pkgtype</code></p>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<package status="<i>status</i>">
|
|
<item[] url="" />
|
|
</package>
|
|
</response></code></pre>
|
|
<p>A list of all packages available for download.</p>
|
|
|
|
<h3 id="package.intend"><code>package.intend</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<package method="intend" url="" model*="" />
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<package status="<i>status</i>" />
|
|
</response></code></pre>
|
|
|
|
|
|
<h2 id="userdata"><code>userdata</code></h2>
|
|
<h3 id="userdata.read"><code>userdata.read</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<userdata method="read" card*="" model*="" label="" />
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<userdata status="<i>status</i>" time="">
|
|
<b[] __type="" />
|
|
</userdata>
|
|
</response></code></pre>
|
|
<p><code>__type</code> here can be either <code>bin</code> or <code>str</code></p>
|
|
|
|
<h3 id="userdata.write"><code>userdata.write</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<userdata method="write" card="" time="" model*="" label*="" >
|
|
<b[] __type="str" />
|
|
</userdata>
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<userdata status="<i>status</i>" />
|
|
</response></code></pre>
|
|
|
|
|
|
<h2 id="services"><code>services</code></h2>
|
|
<h3 id="services.get"><code>services.get</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<services method="get" model*="" >
|
|
<info>
|
|
<AVS2 __type="str"><i>AVS2 version</i></AVS2>
|
|
</info>
|
|
</services>
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<services expire="" method="get" mode="" status="<i>status</i>">
|
|
<item[] name="<i>service</i>" url="<i>url</i>" />
|
|
</services>
|
|
</response></code></pre>
|
|
<p>Known services are:</p>
|
|
<ul>
|
|
<li><code>ntp</code></li>
|
|
<li><code>keepalive</code></li>
|
|
<li><code>cardmng</code></li>
|
|
<li><code>facility</code></li>
|
|
<li><code>message</code></li>
|
|
<li><code>numbering</code></li>
|
|
<li><code>package</code></li>
|
|
<li><code>pcbevent</code></li>
|
|
<li><code>pcbtracker</code></li>
|
|
<li><code>pkglist</code></li>
|
|
<li><code>posevent</code></li>
|
|
<li><code>userdata</code></li>
|
|
<li><code>userid</code></li>
|
|
<li><code>eacoin</code></li>
|
|
<li><code>local</code></li>
|
|
<li><code>local2</code></li>
|
|
<li><code>lobby</code></li>
|
|
<li><code>lobby2</code></li>
|
|
<li><code>dlstatus</code></li>
|
|
<li><code>netlog</code></li>
|
|
<li><code>sidmgr</code></li>
|
|
<li><code>globby</code></li>
|
|
</ul>
|
|
<p>Most of these will usually just return the URL to the eAmuse server (or your fake one ;D). <code>ntp</code> is a
|
|
notable exception, unless you're planning on reimplementing NTP. <code>keepalive</code> will likely alsop be a
|
|
custom URL with query parameters pre-baked.</p>
|
|
<p><code>mode</code> is one of <code>operation</code>, <code>debug</code>, <code>test</code>, or
|
|
<code>factory</code>.
|
|
</p>
|
|
|
|
|
|
<h2 id="pcbtracker"><code>pcbtracker</code></h2>
|
|
<h3 id="pcbtracker.alive"><code>pcbtracker.alive</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<pcbtracker method="alive" model*="" hardid="" softid="" accountid="" agree="" ecflag="" />
|
|
</call></code></pre>
|
|
<p><code>ecflag</code> here is determining if the arcade operator allows the use of paseli on this machine.</p>
|
|
<p><code>agree@</code> and <code>ecflag@</code> appear to either be totally non present, or present with a value of
|
|
<code>"1"</code>, but then again I may be reading the code wrong, so take that with a pinch of salt.
|
|
</p>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<pcbtracker status="" time="" limit="" ecenable="" eclimit="" >
|
|
</response></code></pre>
|
|
<p>As you might guess, <code>ecenable@</code> is therefore the flag to determine if paseli is enabled (i.e. the
|
|
arcade operator and the server both allow its use).</p>
|
|
|
|
|
|
<h2 id="pcbevent"><code>pcbevent</code></h2>
|
|
<h3 id="pcbevent.put"><code>pcbevent.put</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<pcbevent method="put">
|
|
<time __type="time" />
|
|
<seq __type="u32" />
|
|
<item[]>
|
|
<name __type="str" />
|
|
<value __type="s32" />
|
|
<time __type="time" />
|
|
</item[]>
|
|
</pcbevent>
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<pcbevent status="<i>status</i>" />
|
|
</response></code></pre>
|
|
|
|
|
|
<h2 id="message"><code>message</code></h2>
|
|
<h3 id="message.get"><code>message.get</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<message method="get" model*="" />
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<message expire="" status="<i>status</i>">
|
|
<item[] name="" start="" end="" data="" />
|
|
</message>
|
|
</response></code></pre>
|
|
|
|
|
|
<h2 id="facility"><code>facility</code></h2>
|
|
<h3 id="facility.get"><code>facility.get</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<facility method="get" privateip*="" encoding*="" />
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<facility expire=""\ status="<i>status</i>">
|
|
<calendar*>
|
|
<year __type="s16" />
|
|
<holiday __type="s16" />
|
|
</calendar>
|
|
<location>
|
|
<id __type="str" />
|
|
<country __type="str" />
|
|
<region __type="str" />
|
|
<name __type="str" />
|
|
<type __type="u8" />
|
|
<countryname __type="str" />
|
|
<countryjname __type="str" />
|
|
<regionname __type="str" />
|
|
<regionjname __type="str" />
|
|
<customercode __type="str" />
|
|
<companycode __type="str" />
|
|
<latitude __type="s32" />
|
|
<longitude __type="s32" />
|
|
<accuracy __type="u8" />
|
|
</location>
|
|
<line>
|
|
<id __type="str" />
|
|
<class __type="u8" />
|
|
</line>
|
|
<portfw>
|
|
<globalip __type="ip4" />
|
|
<globalport __type="s16" />
|
|
<privateport __type="s16" />
|
|
</portfw>
|
|
<public>
|
|
<flag __type="u8" />1</ flag>
|
|
<name __type="str" />
|
|
<latitude __type="str">0<latitude>
|
|
<longitude __type="str">0<longitude>
|
|
</public>
|
|
<share>
|
|
<eapass*>
|
|
<valid __type="?" />
|
|
</eapass>
|
|
<eacoin>
|
|
<notchamount __type="s32" />
|
|
<notchcount __type="s32" />
|
|
<supplylimit __type="s32">100000<supplylimit>
|
|
</eacoin>
|
|
<url>
|
|
<eapass __type="str">www.ea-pass.konami.net<eapass>
|
|
<arcadefan __type="str">www.konami.jp/am<arcadefan>
|
|
<konaminetdx __type="str">http://am.573.jp<konaminetdx>
|
|
<konamiid __type="str">http://id.konami.jp<konamiid>
|
|
<eagate __type="str">http://eagate.573.jp<eagate>
|
|
</url>
|
|
</share>
|
|
</facility>
|
|
</response></code></pre>
|
|
<p><i>I'm not totally sure what type <code>share/eapass/valid</code> is meant to be, but it's optional, so I'd
|
|
suggest just not bothering and leaving it out :).</i></p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<td>Country</td>
|
|
<td>Code</td>
|
|
</tr>
|
|
</thead>
|
|
<tr>
|
|
<td>Hong Kong</td>
|
|
<td><code>HK</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td>Taiwan</td>
|
|
<td><code>TW</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td>Korea</td>
|
|
<td><code>KR</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td>USA</td>
|
|
<td><code>US</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td>Thailand</td>
|
|
<td><code>TH</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td>Indonesia</td>
|
|
<td><code>ID</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td>Singapore</td>
|
|
<td><code>SG</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td>Phillipines</td>
|
|
<td><code>PH</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td>Macao</td>
|
|
<td><code>MO</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td>Japan</td>
|
|
<td><code>JP</code></td>
|
|
</tr>
|
|
</table>
|
|
<p><code>globalip</code> (and associated ports) shold be the IP:port of the cabinet.</p>
|
|
<p><code>region</code> is used for Japan, and has the value <code>JP-[prefecture]</code> where prefecture ranges
|
|
from 1 through 47.</p>
|
|
<p><b>TODO: Compile the list of regions</b></p>
|
|
|
|
<h2 id="apsmanager"><code>apsmanager</code></h2>
|
|
<h3 id="apsmanager.getstat"><code>apsmanager.getstat</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<apsmanager method="getstat" model*="" />
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<apsmanager status="<i>status</i>" />
|
|
</response></code></pre>
|
|
|
|
|
|
<h2 id="sidmgr"><code>sidmgr</code></h2>
|
|
<h3 id="sidmgr.create"><code>sidmgr.create</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<sidmgr method="create">
|
|
<cardtype __type="str" />
|
|
<cardid __type="str" />
|
|
<cardgid __type="str" />
|
|
<steal __type="u8" />
|
|
</sidmgr>
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<sidmgr status="<i>status</i>">
|
|
<state __type="u32" />
|
|
<e_count __type="u8" />
|
|
<last __type="time" />
|
|
<locked __type="time" />
|
|
<sid __type="str" />
|
|
<cardid_status __type="u8" />
|
|
<refid __type="str" />
|
|
</sidmgr>
|
|
</response></code></pre>
|
|
|
|
<h3 id="sidmgr.open"><code>sidmgr.open</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<sidmgr method="open" sid="" >
|
|
<pass __type="str" />
|
|
</sidmgr>
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<sidmgr status="<i>status</i>">
|
|
<state __type="u32" />
|
|
<refid __type="str" />
|
|
<locked __type="time" />
|
|
</sidmgr>
|
|
</response></code></pre>
|
|
|
|
<h3 id="sidmgr.touch"><code>sidmgr.touch</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<sidmgr method="touch" sid="" />
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<sidmgr status="<i>status</i>" />
|
|
</response></code></pre>
|
|
|
|
<h3 id="sidmgr.branch"><code>sidmgr.branch</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<sidmgr method="branch" sid="" />
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<sidmgr status="<i>status</i>" />
|
|
</response></code></pre>
|
|
|
|
<h3 id="sidmgr.close"><code>sidmgr.close</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<sidmgr method="close" sid="" />
|
|
<cause __type="u32" />
|
|
</sidmgr>
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<sidmgr status="<i>status</i>" />
|
|
</response></code></pre>
|
|
|
|
|
|
<h2 id="dlstatus"><code>dlstatus</code></h2>
|
|
<h3 id="dlstatus.done"><code>dlstatus.done</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<dlstatus method="done">
|
|
<url>
|
|
<param __type="str" />
|
|
</url>
|
|
<name __type="str" />
|
|
<size __type="s32" />
|
|
</dlstatus>
|
|
</call></code></pre>
|
|
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<dlstatus status="<i>status</i>">
|
|
<progress __type="s32" />
|
|
</dlstatus>
|
|
</response></code></pre>
|
|
|
|
<h3 id="dlstatus.progress"><code>dlstatus.progress</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<dlstatus method="progress" />
|
|
<progress __type="s32" />
|
|
</dlstatus>
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<dlstatus status="<i>status</i>">
|
|
<i>placeholder</i>
|
|
</dlstatus>
|
|
</response></code></pre>
|
|
|
|
|
|
<h2 id="eacoin"><code>eacoin</code></h2>
|
|
<h3 id="eacoin.checkin"><code>eacoin.checkin</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<eacoin method="checkin">
|
|
<cardtype __type="str" />
|
|
<cardid __type="str" />
|
|
<passwd __type="str" />
|
|
<ectype __type="str" />
|
|
</eacoin>
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<eacoin status="<i>status</i>">
|
|
<sequence __type="s16" />
|
|
<acstatus __type="u8" />
|
|
<acid __type="str" />
|
|
<acname __type="str" />
|
|
<balance __type="s32" />
|
|
<sessid __type="str" />
|
|
</eacoin>
|
|
</response></code></pre>
|
|
|
|
<h3 id="eacoin.checkout"><code>eacoin.checkout</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<eacoin method="checkout">
|
|
<sessid __type="str" />
|
|
</eacoin>
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<eacoin status="<i>status</i>" />
|
|
</response></code></pre>
|
|
|
|
<h3 id="eacoin.consume"><code>eacoin.consume</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<eacoin method="consume" esid="">
|
|
<sessid __type="str" />
|
|
<sequence __type="s16" />
|
|
<payment __type="s32" />
|
|
<service __type="s16" />
|
|
<itemtype __type="str" />
|
|
<detail __type="str" />
|
|
</eacoin>
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<eacoin status="<i>status</i>">
|
|
<acstatus __type="u8" />
|
|
<autocharge __type="u8" />
|
|
<balance __type="s32" />
|
|
</eacoin>
|
|
</response></code></pre>
|
|
|
|
<h3 id="eacoin.getbalance"><code>eacoin.getbalance</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<eacoin method="getbalance">
|
|
<sessid __type="str" />
|
|
</eacoin>
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<eacoin status="<i>status</i>">
|
|
<acstatus __type="u8" />
|
|
<balance __type="s32" />
|
|
</eacoin>
|
|
</response></code></pre>
|
|
|
|
<h3 id="eacoin.getecstatus"><code>eacoin.getecstatus</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<eacoin method="getecstatus" />
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<eacoin status="<i>status</i>">
|
|
<ectype __type="str" />
|
|
<ecstatus __type="u8" />
|
|
</eacoin>
|
|
</response></code></pre>
|
|
|
|
<h3 id="eacoin.touch"><code>eacoin.touch</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<eacoin method="touch">
|
|
<sessid __type="str" />
|
|
</eacoin>
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<eacoin status="<i>status</i>" />
|
|
</response></code></pre>
|
|
|
|
<h3 id="eacoin.opchpass"><code>eacoin.opchpass</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<eacoin method="opchpass">
|
|
<passwd __type="str" />
|
|
<newpasswd __type="str" />
|
|
</eacoin>
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<eacoin status="<i>status</i>" />
|
|
</response></code></pre>
|
|
|
|
<h3 id="eacoin.opcheckin"><code>eacoin.opcheckin</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<eacoin method="opcheckin">
|
|
<passwd __type="str" />
|
|
</eacoin>
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<eacoin status="<i>status</i>">
|
|
<sessid __type="str" />
|
|
</eacoin>
|
|
</response></code></pre>
|
|
|
|
<h3 id="eacoin.opcheckout"><code>eacoin.opcheckout</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<eacoin method="opcheckout">
|
|
<sessid __type="str" />
|
|
</eacoin>
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<eacoin status="<i>status</i>" />
|
|
</response></code></pre>
|
|
|
|
<h3 id="eacoin.getlog"><code>eacoin.getlog</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<eacoin method="getlog">
|
|
<sessid __type="str" />
|
|
<logtype __type="str" />
|
|
<ectype __type="str" />
|
|
<target __type="str" />
|
|
<perpage __type="s16" />
|
|
<page __type="s16" />
|
|
<sesstype __type="str" />
|
|
</eacoin>
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<eacoin status="<i>status</i>">
|
|
<processing __type="u8" />
|
|
<topic>
|
|
<sumdate __type="str" />
|
|
<sumfrom __type="str" />
|
|
<sumto __type="str" />
|
|
|
|
<today __type="s32" />
|
|
<average __type="s32" />
|
|
<total __type="s32" />
|
|
</topic>
|
|
<summary>
|
|
<items __type="s32" />
|
|
</summary>
|
|
<history>
|
|
<item[]>
|
|
<date __type="str" />
|
|
<consume __type="s32" />
|
|
<service __type="s32" />
|
|
<cardtype __type="str" />
|
|
<cardno __type="str" />
|
|
<title __type="str" />
|
|
<systemid __type="str" />
|
|
</item[]>
|
|
</history>
|
|
</eacoin>
|
|
</response></code></pre>
|
|
|
|
|
|
<h2 id="traceroute"><code>traceroute</code></h2>
|
|
<h3 id="traceroute.send"><code>traceroute.send</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<traceroute proto="" method="send">
|
|
<hop[]>
|
|
<valid __type="bool">
|
|
<addr __type="ip4">
|
|
<usec __type="u64">
|
|
</hop[]>
|
|
</traceroute>
|
|
</call></code></pre>
|
|
<p><code>hop</code> repeats for every hop (unsurprisingly)</p>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<traceroute status="<i>status</i>">
|
|
<i>placeholder</i>
|
|
</traceroute>
|
|
</response></code></pre>
|
|
|
|
|
|
<h2 id="game"><code>game</code></h2>
|
|
<h3 id="game.sv4_sample"><code>game.sv4_sample</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<game method="sv4_sample">
|
|
<i>placeholder</i>
|
|
</game>
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<game status="<i>status</i>">
|
|
<i>placeholder</i>
|
|
</game>
|
|
</response></code></pre>
|
|
|
|
<h3 id="game.sv4_new"><code>game.sv4_new</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<game method="sv4_new">
|
|
<i>placeholder</i>
|
|
</game>
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<game status="<i>status</i>">
|
|
<i>placeholder</i>
|
|
</game>
|
|
</response></code></pre>
|
|
|
|
<h3 id="game.sv4_load"><code>game.sv4_load</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<game method="sv4_load">
|
|
<i>placeholder</i>
|
|
</game>
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<game status="<i>status</i>">
|
|
<i>placeholder</i>
|
|
</game>
|
|
</response></code></pre>
|
|
|
|
<h3 id="game.sv4_load_m"><code>game.sv4_load_m</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<game method="sv4_load_m">
|
|
<i>placeholder</i>
|
|
</game>
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<game status="<i>status</i>">
|
|
<i>placeholder</i>
|
|
</game>
|
|
</response></code></pre>
|
|
|
|
<h3 id="game.sv4_save"><code>game.sv4_save</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<game method="sv4_save">
|
|
<i>placeholder</i>
|
|
</game>
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<game status="<i>status</i>">
|
|
<i>placeholder</i>
|
|
</game>
|
|
</response></code></pre>
|
|
|
|
<h3 id="game.sv4_save_m"><code>game.sv4_save_m</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<game method="sv4_save_m">
|
|
<i>placeholder</i>
|
|
</game>
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<game status="<i>status</i>">
|
|
<i>placeholder</i>
|
|
</game>
|
|
</response></code></pre>
|
|
|
|
<h3 id="game.sv4_common"><code>game.sv4_common</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<game method="sv4_common">
|
|
<i>placeholder</i>
|
|
</game>
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<game status="<i>status</i>">
|
|
<i>placeholder</i>
|
|
</game>
|
|
</response></code></pre>
|
|
|
|
<h3 id="game.sv4_shop"><code>game.sv4_shop</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<game method="sv4_shop">
|
|
<i>placeholder</i>
|
|
</game>
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<game status="<i>status</i>">
|
|
<i>placeholder</i>
|
|
</game>
|
|
</response></code></pre>
|
|
|
|
<h3 id="game.sv4_hiscore"><code>game.sv4_hiscore</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<game method="sv4_hiscore">
|
|
<i>placeholder</i>
|
|
</game>
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<game status="<i>status</i>">
|
|
<i>placeholder</i>
|
|
</game>
|
|
</response></code></pre>
|
|
|
|
<h3 id="game.sv4_buy"><code>game.sv4_buy</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<game method="sv4_buy">
|
|
<i>placeholder</i>
|
|
</game>
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<game status="<i>status</i>">
|
|
<i>placeholder</i>
|
|
</game>
|
|
</response></code></pre>
|
|
|
|
<h3 id="game.sv4_exception"><code>game.sv4_exception</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<game method="sv4_exception">
|
|
<i>placeholder</i>
|
|
</game>
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<game status="<i>status</i>">
|
|
<i>placeholder</i>
|
|
</game>
|
|
</response></code></pre>
|
|
|
|
<h3 id="game.sv4_entry_s"><code>game.sv4_entry_s</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<game method="sv4_entry_s">
|
|
<i>placeholder</i>
|
|
</game>
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<game status="<i>status</i>">
|
|
<i>placeholder</i>
|
|
</game>
|
|
</response></code></pre>
|
|
|
|
<h3 id="game.sv4_entry_e"><code>game.sv4_entry_e</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<game method="sv4_entry_e">
|
|
<i>placeholder</i>
|
|
</game>
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<game status="<i>status</i>">
|
|
<i>placeholder</i>
|
|
</game>
|
|
</response></code></pre>
|
|
|
|
<h3 id="game.sv4_frozen"><code>game.sv4_frozen</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<game method="sv4_frozen">
|
|
<i>placeholder</i>
|
|
</game>
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<game status="<i>status</i>">
|
|
<i>placeholder</i>
|
|
</game>
|
|
</response></code></pre>
|
|
|
|
<h3 id="game.sv4_lounce"><code>game.sv4_lounce</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<game method="sv4_lounce">
|
|
<i>placeholder</i>
|
|
</game>
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<game status="<i>status</i>">
|
|
<i>placeholder</i>
|
|
</game>
|
|
</response></code></pre>
|
|
|
|
<h3 id="game.sv4_save_e"><code>game.sv4_save_e</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<game method="sv4_save_e">
|
|
<i>placeholder</i>
|
|
</game>
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<game status="<i>status</i>">
|
|
<i>placeholder</i>
|
|
</game>
|
|
</response></code></pre>
|
|
|
|
<h3 id="game.sv4_save_pb"><code>game.sv4_save_pb</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<game method="sv4_save_pb">
|
|
<i>placeholder</i>
|
|
</game>
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<game status="<i>status</i>">
|
|
<i>placeholder</i>
|
|
</game>
|
|
</response></code></pre>
|
|
|
|
<h3 id="game.sv4_save_c"><code>game.sv4_save_c</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<game method="sv4_save_c">
|
|
<i>placeholder</i>
|
|
</game>
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<game status="<i>status</i>">
|
|
<i>placeholder</i>
|
|
</game>
|
|
</response></code></pre>
|
|
|
|
<h3 id="game.sv4_play_s"><code>game.sv4_play_s</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<game method="sv4_play_s">
|
|
<i>placeholder</i>
|
|
</game>
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<game status="<i>status</i>">
|
|
<i>placeholder</i>
|
|
</game>
|
|
</response></code></pre>
|
|
|
|
<h3 id="game.sv4_play_e"><code>game.sv4_play_e</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<game method="sv4_play_e">
|
|
<i>placeholder</i>
|
|
</game>
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<game status="<i>status</i>">
|
|
<i>placeholder</i>
|
|
</game>
|
|
</response></code></pre>
|
|
|
|
<h3 id="game.sv4_serial"><code>game.sv4_serial</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<game method="sv4_serial">
|
|
<i>placeholder</i>
|
|
</game>
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<game status="<i>status</i>">
|
|
<i>placeholder</i>
|
|
</game>
|
|
</response></code></pre>
|
|
|
|
<h3 id="game.sv4_save_fi"><code>game.sv4_save_fi</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<game method="sv4_save_fi">
|
|
<i>placeholder</i>
|
|
</game>
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<game status="<i>status</i>">
|
|
<i>placeholder</i>
|
|
</game>
|
|
</response></code></pre>
|
|
|
|
<h3 id="game.sv4_print"><code>game.sv4_print</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<game method="sv4_print">
|
|
<i>placeholder</i>
|
|
</game>
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<game status="<i>status</i>">
|
|
<i>placeholder</i>
|
|
</game>
|
|
</response></code></pre>
|
|
|
|
<h3 id="game.sv4_print_h"><code>game.sv4_print_h</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<game method="sv4_print_h">
|
|
<i>placeholder</i>
|
|
</game>
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<game status="<i>status</i>">
|
|
<i>placeholder</i>
|
|
</game>
|
|
</response></code></pre>
|
|
|
|
<h3 id="game.sv4_load_r"><code>game.sv4_load_r</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<game method="sv4_load_r">
|
|
<i>placeholder</i>
|
|
</game>
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<game status="<i>status</i>">
|
|
<i>placeholder</i>
|
|
</game>
|
|
</response></code></pre>
|
|
|
|
<h3 id="game.sv4_save_campaign"><code>game.sv4_save_campaign</code></h3>
|
|
<h4>Request:</h4>
|
|
<pre><code><call <i>...</i>>
|
|
<game method="sv4_save_campaign">
|
|
<i>placeholder</i>
|
|
</game>
|
|
</call></code></pre>
|
|
<h4>Response:</h4>
|
|
<pre><code><response>
|
|
<game status="<i>status</i>">
|
|
<i>placeholder</i>
|
|
</game>
|
|
</response></code></pre>
|
|
|
|
|
|
</body> |