From aeff96e1d5ecde06bc7465ee0332cadf69c66027 Mon Sep 17 00:00:00 2001 From: Bottersnike Date: Wed, 22 Dec 2021 03:41:57 +0000 Subject: [PATCH] Lots of protocol stuff --- images/eventlog_ghidra.png | Bin 0 -> 37281 bytes images/eventlog_ida.png | Bin 0 -> 32266 bytes images/matching_request_ghidra.png | Bin 0 -> 27990 bytes images/matching_request_ida.png | Bin 0 -> 14837 bytes index.html | 11 +- packet.html | 62 +-- protocol.html | 580 ++++++++++++++++++++--------- styles.css | 15 +- 8 files changed, 459 insertions(+), 209 deletions(-) create mode 100644 images/eventlog_ghidra.png create mode 100644 images/eventlog_ida.png create mode 100644 images/matching_request_ghidra.png create mode 100644 images/matching_request_ida.png diff --git a/images/eventlog_ghidra.png b/images/eventlog_ghidra.png new file mode 100644 index 0000000000000000000000000000000000000000..ed7069c8dde9463e861a67bec6a9d238b1a11772 GIT binary patch literal 37281 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 literal 0 HcmV?d00001 diff --git a/images/eventlog_ida.png b/images/eventlog_ida.png new file mode 100644 index 0000000000000000000000000000000000000000..031fa09133bb9d9f2ceebdb6d54d7d17f7119a9e GIT binary patch literal 32266 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 literal 0 HcmV?d00001 diff --git a/images/matching_request_ida.png b/images/matching_request_ida.png new file mode 100644 index 0000000000000000000000000000000000000000..ab33ab0b55fdd55fc7a71f21e758c48bfcb67fb1 GIT binary patch literal 14837 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 - eAmuse API + e-Amusement API @@ -20,17 +20,22 @@ -

Benami/Konami eAmuse API

+

Benami/Konami e-Amusement API

Why?

I was curious how these APIs work, yet could find little to nothing on Google. There are a number of closed-source projects, with presumably similarly closed-source internal documentation, and a scattering of implementations of things, yet I couldn't find a site that actually just documents how the API works. If I'm going to have to reverse engineer an open source project (or a closed source one, for that matter), I might as well just go reverse engineer an actual game (or it's stdlib, as most of my time has been spent currently).

+

For the sake of being lazy, I'll probably end up calling it eAmuse more than anything else throughout these + pages. Other names you may come across include httac and xrpc. The latter are the + suite of HTTP functions used in the Bemani stdlib, and the name of their communication protocol they implement + at the application layer, but whenever someone refers to any of them in the context of a rhythm game, they will + be referring to the things documented here.

These pages are very much a work in progress, and are being written as I reverse engineer parts of the protocol. I've been asserting all my assumptions by writing my own implementation as I go, however it currently isn't sharable quality code and, more importantly, the purpose of these pages is to make implementation of one's - own code hopefully trivial.

+ own code hopefully trivial (teach a man to fish, and all that).

Sharing annotated sources for all of the games' stdlibs would be both impractical and unwise. Where relevant however I try to include snippets to illustrate concepts, and have included their locations in the source for if you feel like taking a dive too.

diff --git a/packet.html b/packet.html index 1c6fba0..370d5f4 100644 --- a/packet.html +++ b/packet.html @@ -63,7 +63,7 @@ can be a little confusing, remembering that this is encoding an XML tree can make it easier to parse.

To start with, let's take a look at the overall structure of the packets.

- +
@@ -123,19 +123,19 @@ - + - + - + - +
0
0x420x42 Compressed data
0x430x43 Compressed, no data
0x450x45 Decompressed data
0x460x46 Decompressed, no data
@@ -145,45 +145,45 @@ - - + + - - - + + + - - - - + + + + - - - - - + + + + + - - - - - + + + + + - - - - + + + +
E~EE~E Encoding name
0x200xDFASCII0x200xDFASCII
0x400xBFISO-8859-1ISO_8859-10xBFISO-8859-1ISO_8859-1
0x600x9FEUC-JPEUCJPEUC_JP0x600x9FEUC-JPEUCJPEUC_JP
0x800x7FSHIFT-JISSHIFT_JISSJIS0x800x7FSHIFT-JISSHIFT_JISSJIS
0xA00x5FUTF-8UTF80xA00x5FUTF-8UTF8
@@ -217,7 +217,7 @@

A tag definition looks like:

- +
@@ -264,7 +264,7 @@ used later when unpacking the main data, so we need not worry about it for now, but be warned it exists and is possibly the least fun part of this format.

-
0
+
@@ -815,7 +815,7 @@ for our bucket.

For example, imagine we write the sequence byte, int, byte, short, byte, int, short. The final output should look like:

-
ID
+
diff --git a/protocol.html b/protocol.html index c52a178..ed28946 100644 --- a/protocol.html +++ b/protocol.html @@ -57,13 +57,72 @@ </response>

With "0" being a successful status. Convention is to identify a specific method as module.method, and we'll be following this convention in this document too. There are - a lot of possible methods, so the rest of this document is a big reference for them all. There are a + a lot 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 game.%s module and, in the case of SDVX 4, are all game.sv4_method. I may or may not document the SDVX 4 specific methods, but I've listed them here anyway for completeness.

+

Paths in the XML bodies are formatted using an XPath-like syntax. That is, status@/response gets the + status attribute from response, and response/eacoin/sequence would return + that node's value. +

+

NOTE: I am using the non-standard notation of <node* ... and + <node attr*="" ... to indicate that an attribute or node is not always present! Additionally, I + am going to use the notation of <node[]> to indicate that a node repeats. +

+ +
0
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
StatusMeaning
0Success
109No profile
110Not allowed
112Card not found (cardmng.inquire)
116Card pin invalid (cardmng.authpass)
+
+ How to reverse engineer these calls +

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: +

+ +
+ Ghidra + + +
+
+ IDA Pro + + +
+ +

I know which of these I'd rather use for reverse engineering (sorry, Ghidra)!

+
+ +

Possible XRPC requests

@@ -228,6 +287,7 @@
  • G_GAMED
  • S_ERROR
  • +
  • S_PWRON TODO: find more!
  • T_OTDEMO

Response:

@@ -333,7 +393,22 @@

Request:

<call ...>
     <matching method="request">
-        placeholder
+        <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" />
+
     </matching>
 </call>

Response:

@@ -464,108 +539,115 @@

cardmng.inquire

Request:

<call ...>
-    <cardmng method="inquire" cardid="" cardtype="" update="" />
+    <cardmng method="inquire" cardid="" cardtype="" update="" model*="" />
+</call>
+

Response:

+
<response>
+    <cardmng status="status" refid="" dataid="" pcode=""  newflag="" binded="" expired=" ecflag="" useridflag="" extidflag="" lastupdate="" />
+</response>
+

If the cardid cannot be found, status should be set to 112 with no other + information return. Otherwise, we return information about the found card.

+ + + + + + + + + + + + + + + + + + + + + +
refidA reference to this card to be used in other requests
dataidAppears to be set the same as refid; presumably to allow different keys for game state vs + login details.
newflag1 or 0
bindedHas a profile ever been created for this game (or an older version, requiring a migration) + (1 or 0)
expiredDid we find
+ +

cardmng.getrefid

+

Request:

+
<call ...>
+    <cardmng method="getrefid" cardtype="" cardid=" newflag="" passwd="" model*="" />
+</call>
+

Response:

+
<response>
+    <cardmng status="status" refid="" dataid="" pcode="" />
+</response>
+ +

cardmng.bindmodel

+

Request:

+
<call ...>
+    <cardmng method="bindmodel" refid="" newflag="" model*="" />
+</call>
+

Response:

+
<response>
+    <cardmng status="status" dataid="" />
+</response>
+ +

cardmng.bindcard

+

Request:

+
<call ...>
+    <cardmng method="bindcard" cardtype="" newid="" refid="" model*="" />
 </call>

Response:

<response>
     <cardmng status="status" />
 </response>
-

cardmng.getrefid

-

Request:

-
<call ...>
-    <cardmng method="getrefid">
-        placeholder
-    </cardmng>
-</call>
-

Response:

-
<response>
-    <cardmng status="status">
-        placeholder
-    </cardmng>
-</response>
- -

cardmng.bindmodel

-

Request:

-
<call ...>
-    <cardmng method="bindmodel">
-        placeholder
-    </cardmng>
-</call>
-

Response:

-
<response>
-    <cardmng status="status">
-        placeholder
-    </cardmng>
-</response>
- -

cardmng.bindcard

-

Request:

-
<call ...>
-    <cardmng method="bindcard">
-        placeholder
-    </cardmng>
-</call>
-

Response:

-
<response>
-    <cardmng status="status">
-        placeholder
-    </cardmng>
-</response>
-

cardmng.authpass

Request:

<call ...>
-    <cardmng method="authpass">
-        placeholder
-    </cardmng>
+    <cardmng method="authpass" refid="" pass="" model*="" />
 </call>

Response:

<response>
-    <cardmng status="status">
-        placeholder
-    </cardmng>
+    <cardmng status="status" />
 </response>

cardmng.getkeepspan

Request:

<call ...>
-    <cardmng method="getkeepspan">
-        placeholder
-    </cardmng>
+    <cardmng method="getkeepspan" model*="" />
 </call>

Response:

<response>
-    <cardmng status="status">
-        placeholder
-    </cardmng>
+    <cardmng status="status" keepspan="" />
 </response>

cardmng.getkeepremain

Request:

<call ...>
-    <cardmng method="getkeepremain">
-        placeholder
-    </cardmng>
+    <cardmng method="getkeepremain" refid="" model*="" />
 </call>

Response:

<response>
-    <cardmng status="status">
-        placeholder
-    </cardmng>
+    <cardmng status="status" keepremain="" />
 </response>

cardmng.getdatalist

Request:

<call ...>
-    <cardmng method="getdatalist">
-        placeholder
-    </cardmng>
+    <cardmng method="getdatalist" refid="" model*="" />
 </call>

Response:

<response>
     <cardmng status="status">
-        placeholder
+        <item[]>
+            <mcode __type="str" />
+            <dataid __type="str" />
+            <regtime __type="str" />
+            <lasttime __type="str" />
+            <exptime __type="str" />
+            <expflag __type="u8" />
+        </item>
     </cardmng>
 </response>
@@ -587,32 +669,29 @@

package

+

package.list

Request:

<call ...>
-    <package method="list">
-        placeholder
-    </package>
+    <package method="list" pkgtype="pkgtype" model*="" />
 </call>
+

all is the only currently observed value for pkgtype

Response:

<response>
     <package status="status">
-        placeholder
+        <item[] url="" />
     </package>
 </response>
+

A list of all packages available for download.

package.intend

Request:

<call ...>
-    <package method="intend">
-        placeholder
-    </package>
+    <package method="intend" url="" model*="" />
 </call>

Response:

<response>
-    <package status="status">
-        placeholder
-    </package>
+    <package status="status" />
 </response>
@@ -620,29 +699,26 @@

userdata.read

Request:

<call ...>
-    <userdata method="read">
-        placeholder
-    </userdata>
+    <userdata method="read" card*="" model*="" label="" />
 </call>

Response:

<response>
-    <userdata status="status">
-        placeholder
+    <userdata status="status" time="">
+        <b[] __type="" />
     </userdata>
 </response>
+

__type here can be either bin or str

userdata.write

Request:

<call ...>
-    <userdata method="write">
-        placeholder
+    <userdata method="write" card="" time="" model*="" label*="" >
+        <b[] __type="str" />
     </userdata>
 </call>

Response:

<response>
-    <userdata status="status">
-        placeholder
-    </userdata>
+    <userdata status="status" />
 </response>
@@ -650,7 +726,7 @@

services.get

Request:

<call ...>
-    <services method="get">
+    <services method="get" model*="" >
         <info>
             <AVS2 __type="str">AVS2 version</AVS2>
         </info>
@@ -659,7 +735,7 @@
     

Response:

<response>
     <services expire="" method="get" mode="" status="status">
-        <item name="service" url="url" />
+        <item[] name="service" url="url" />
     </services>
 </response>

Known services are:

@@ -687,19 +763,30 @@
  • sidmgr
  • globby
  • -

    Most of these will usually just return the URL to the eAmuse server (or your fake one ;D). ntp is a notable exception, unless you're planning on reimplementing NTP. keepalive will likely alsop be a custom URL with query parameters pre-baked.

    +

    Most of these will usually just return the URL to the eAmuse server (or your fake one ;D). ntp is a + notable exception, unless you're planning on reimplementing NTP. keepalive will likely alsop be a + custom URL with query parameters pre-baked.

    +

    mode is one of operation, debug, test, or + factory. +

    pcbtracker

    pcbtracker.alive

    Request:

    <call ...>
    -    <pcbtracker method="alive" accountid="pcbid" ecflag="ecflag" hardid="hardware ID" softid="software ID" />
    +    <pcbtracker method="alive" model*="" hardid="" softid="" accountid="" agree="" ecflag="" />
     </call>
    +

    ecflag here is determining if the arcade operator allows the use of paseli on this machine.

    +

    agree@ and ecflag@ appear to either be totally non present, or present with a value of + "1", but then again I may be reading the code wrong, so take that with a pinch of salt. +

    Response:

    <response>
    -    <pcbtracker status="status" ecenable="" eclimit="" expire="" limit="" time="">
    +    <pcbtracker status="" time="" limit="" ecenable="" eclimit="" >
     </response>
    +

    As you might guess, ecenable@ is therefore the flag to determine if paseli is enabled (i.e. the + arcade operator and the server both allow its use).

    pcbevent

    @@ -707,14 +794,18 @@

    Request:

    <call ...>
         <pcbevent method="put">
    -        placeholder
    +        <time __type="time" />
    +        <seq __type="u32" />
    +        <item[]>
    +            <name __type="str" />
    +            <value __type="s32" />
    +            <time __type="time" />
    +        </item>
         </pcbevent>
     </call>

    Response:

    <response>
    -    <pcbevent status="status">
    -        placeholder
    -    </pcbevent>
    +    <pcbevent status="status" />
     </response>
    @@ -722,12 +813,13 @@

    message.get

    Request:

    <call ...>
    -    <message method="get" />
    +    <message method="get" model*="" />
     </call>

    Response:

    - TODO: Investigate this response more
    <response>
    -    <message expire="" status="status" />
    +    <message expire="" status="status">
    +        <item[] name="" start="" end="" data="" />
    +    </message>
     </response>
    @@ -735,31 +827,129 @@

    facility.get

    Request:

    <call ...>
    -    <facility method="get">
    -        placeholder
    -    </facility>
    +    <facility method="get" privateip*="" encoding*="" />
     </call>

    Response:

    <response>
    -    <facility status="status">
    -        placeholder
    +    <facility expire=""\ status="status">
    +        <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>
    - +

    I'm not totally sure what type share/eapass/valid is meant to be, but it's optional, so I'd + suggest just not bothering and leaving it out :).

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    CountryCode
    Hong KongHK
    TaiwanTW
    KoreaKR
    USAUS
    ThailandTH
    IndonesiaID
    SingaporeSG
    PhillipinesPH
    MacaoMO
    JapanJP
    +

    globalip (and associated ports) shold be the IP:port of the cabinet.

    +

    region is used for Japan, and has the value JP-[prefecture] where prefecture ranges + from 1 through 47.

    +

    TODO: Compile the list of regions

    apsmanager

    apsmanager.getstat

    Request:

    <call ...>
    -    <apsmanager method="getstat">
    -        placeholder
    -    </apsmanager>
    +    <apsmanager method="getstat" model*="" />
     </call>

    Response:

    <response>
    -    <apsmanager status="status">
    -        placeholder
    -    </apsmanager>
    +    <apsmanager status="status" />
     </response>
    @@ -768,70 +958,71 @@

    Request:

    <call ...>
         <sidmgr method="create">
    -        placeholder
    +        <cardtype __type="str" />
    +        <cardid __type="str" />
    +        <cardgid __type="str" />
    +        <steal __type="u8" />
         </sidmgr>
     </call>

    Response:

    <response>
         <sidmgr status="status">
    -        placeholder
    +        <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>

    sidmgr.open

    Request:

    <call ...>
    -    <sidmgr method="open">
    -        placeholder
    +    <sidmgr method="open" sid="" >
    +        <pass __type="str" />
         </sidmgr>
     </call>

    Response:

    <response>
         <sidmgr status="status">
    -        placeholder
    +        <state __type="u32" />
    +        <refid __type="str" />
    +        <locked __type="time" />
         </sidmgr>
     </response>

    sidmgr.touch

    Request:

    <call ...>
    -    <sidmgr method="touch">
    -        placeholder
    -    </sidmgr>
    +    <sidmgr method="touch" sid="" />
     </call>

    Response:

    <response>
    -    <sidmgr status="status">
    -        placeholder
    -    </sidmgr>
    +    <sidmgr status="status" />
     </response>

    sidmgr.branch

    Request:

    <call ...>
    -    <sidmgr method="branch">
    -        placeholder
    -    </sidmgr>
    +    <sidmgr method="branch" sid="" />
     </call>

    Response:

    <response>
    -    <sidmgr status="status">
    -        placeholder
    -    </sidmgr>
    +    <sidmgr status="status" />
     </response>

    sidmgr.close

    Request:

    <call ...>
    -    <sidmgr method="close">
    -        placeholder
    +    <sidmgr method="close" sid="" />
    +        <cause __type="u32" />
         </sidmgr>
     </call>

    Response:

    <response>
    -    <sidmgr status="status">
    -        placeholder
    -    </sidmgr>
    +    <sidmgr status="status" />
     </response>
    @@ -840,13 +1031,18 @@

    Request:

    <call ...>
         <dlstatus method="done">
    -        placeholder
    +        <url>
    +            <param __type="str" />
    +        </url>
    +        <name __type="str" />
    +        <size __type="s32" />
         </dlstatus>
     </call>
    +

    Response:

    <response>
         <dlstatus status="status">
    -        placeholder
    +        <progress __type="s32" />
         </dlstatus>
     </response>
    @@ -870,13 +1066,21 @@

    Request:

    <call ...>
         <eacoin method="checkin">
    -        placeholder
    +        <cardtype __type="str" />
    +        <cardid __type="str" />
    +        <passwd __type="str" />
    +        <ectype __type="str" />
         </eacoin>
     </call>

    Response:

    <response>
         <eacoin status="status">
    -        placeholder
    +        <sequence __type="s16" />
    +        <acstatus __type="u8" />
    +        <acid __type="str" />
    +        <acname __type="str" />
    +        <balance __type="s32" />
    +        <sessid __type="str" />
         </eacoin>
     </response>
    @@ -884,27 +1088,32 @@

    Request:

    <call ...>
         <eacoin method="checkout">
    -        placeholder
    +        <sessid __type="str" />
         </eacoin>
     </call>

    Response:

    <response>
    -    <eacoin status="status">
    -        placeholder
    -    </eacoin>
    +    <eacoin status="status" />
     </response>

    eacoin.consume

    Request:

    <call ...>
    -    <eacoin method="consume">
    -        placeholder
    +    <eacoin method="consume" esid="">
    +        <sessid __type="str" />
    +        <sequence __type="s16" />
    +        <payment __type="s32" />
    +        <service __type="s16" />
    +        <itemtype __type="str" />
    +        <detail __type="str" />
         </eacoin>
     </call>

    Response:

    <response>
         <eacoin status="status">
    -        placeholder
    +        <acstatus __type="u8" />
    +        <autocharge __type="u8" />
    +        <balance __type="s32" />
         </eacoin>
     </response>
    @@ -912,27 +1121,27 @@

    Request:

    <call ...>
         <eacoin method="getbalance">
    -        placeholder
    +      <sessid __type="str" />
         </eacoin>
     </call>

    Response:

    <response>
         <eacoin status="status">
    -        placeholder
    +        <acstatus __type="u8" />
    +        <balance __type="s32" />
         </eacoin>
     </response>

    eacoin.getecstatus

    Request:

    <call ...>
    -    <eacoin method="getecstatus">
    -        placeholder
    -    </eacoin>
    +    <eacoin method="getecstatus" />
     </call>

    Response:

    <response>
         <eacoin status="status">
    -        placeholder
    +        <ectype __type="str" />
    +        <ecstatus __type="u8" />
         </eacoin>
     </response>
    @@ -940,41 +1149,38 @@

    Request:

    <call ...>
         <eacoin method="touch">
    -        placeholder
    +        <sessid __type="str" />
         </eacoin>
     </call>

    Response:

    <response>
    -    <eacoin status="status">
    -        placeholder
    -    </eacoin>
    +    <eacoin status="status" />
     </response>

    eacoin.opchpass

    Request:

    <call ...>
         <eacoin method="opchpass">
    -        placeholder
    +        <passwd __type="str" />
    +        <newpasswd __type="str" />
         </eacoin>
     </call>

    Response:

    <response>
    -    <eacoin status="status">
    -        placeholder
    -    </eacoin>
    +    <eacoin status="status" />
     </response>
    -

    eacoin.opchecking

    +

    eacoin.opcheckin

    Request:

    <call ...>
    -    <eacoin method="opchecking">
    -        placeholder
    +    <eacoin method="opcheckin">
    +        <passwd __type="str" />
         </eacoin>
     </call>

    Response:

    <response>
         <eacoin status="status">
    -        placeholder
    +        <sessid __type="str" />
         </eacoin>
     </response>
    @@ -982,27 +1188,54 @@

    Request:

    <call ...>
         <eacoin method="opcheckout">
    -        placeholder
    +        <sessid __type="str" />
         </eacoin>
     </call>

    Response:

    <response>
    -    <eacoin status="status">
    -        placeholder
    -    </eacoin>
    +    <eacoin status="status" />
     </response>

    eacoin.getlog

    Request:

    <call ...>
         <eacoin method="getlog">
    -        placeholder
    +        <sessid __type="str" />
    +        <logtype __type="str" />
    +        <ectype __type="str" />
    +        <target __type="str" />
    +        <perpage __type="s16" />
    +        <page __type="s16" />
    +        <sesstype __type="str" />
         </eacoin>
     </call>

    Response:

    <response>
         <eacoin status="status">
    -        placeholder
    +        <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>
    @@ -1011,10 +1244,15 @@

    traceroute.send

    Request:

    <call ...>
    -    <traceroute method="send">
    -        placeholder
    +    <traceroute proto="" method="send">
    +        <hop[]>
    +            <valid __type="bool">
    +            <addr __type="ip4">
    +            <usec __type="u64">
    +        </hop>
         </traceroute>
     </call>
    +

    hop repeats for every hop (unsurprisingly)

    Response:

    <response>
         <traceroute status="status">
    diff --git a/styles.css b/styles.css
    index b7fbc90..13908aa 100644
    --- a/styles.css
    +++ b/styles.css
    @@ -1,6 +1,6 @@
     body {
    -    /* font-family: sans-serif; */
    -    line-height: 1.25;
    +    font-family: sans-serif;
    +    line-height: 1.35;
         max-width: 1000px;
         margin: 16px auto;
         color: #222;
    @@ -9,12 +9,14 @@ body {
     
     table {
         border-collapse: collapse;
    -    font-family: monospace;
         letter-spacing: .02em;
         max-width: 100%;
         overflow-x: auto;
         display: block;
     }
    +table.code {
    +    font-family: monospace;
    +}
     
     thead {
         font-weight: bold;
    @@ -24,9 +26,14 @@ thead {
     td {
         border: 1px solid #111;
         padding: 2px;
    -    text-align: center;
         min-width: 32px;
     }
    +table:not(.code) td {
    +    padding: 2px 6px;
    +}
    +table.code td {
    +    text-align: center;
    +}
     
     td a {
         display: block;