Benami/Konami e-Amusement API

The pages across this mini-site aim to totally document, to the best of my ability, the API used for E-Amusement (XRPC), some of its inner workings, how to interface with it both as a client and a server, and how to perform this sort of analysis yourself.

If you just want a plug-and-play library, this is not it. If you're here for knowledge, my aim is that this is the most comprehensive public documentation, so you're hopefully in the right place.

I moved the big block about why these page exist, because it was getting painfully long.

If you run into a mistake on these pages and want to raise an issue, either open one on the big meta-repo or feel free to get in touch directly.

Contents

  1. Getting started and following along
  2. Transport layer
    1. Encryption keys
    2. LZ77
  3. The inner packet structure
    1. The XML format
    2. Packed binary overview
    3. The packet schema header
    4. The data section
  4. Communication protocol details
  5. Let's write a server
  6. Misc pages
    1. Parsing and converting card IDs

    Code snippets

    Across these pages there are a number of code snippets. They roughly break down into three categories:

    If you yoink chunks of Python code, attribution is always appreciated, but consider it under CC0 (just don't be that person who tries to take credit for it, yeah?).

    Assembly and C snippets often come with an accompanying filename and address. If you're interested in learning how things work in more detail, I'd strongly recommend checking them out. Not all games come with the same version of files; the provided addresses are for build SDVX build KFC-2019020600, using the default base offset.