{% extends "konami.html" %} {% block title %}Smart E-Amusement{% endblock %} {% block body %}

# Smart E-Amusement

So maybe you've turned on that checkbox before, and you're wondering what magic it used? Thankfully, source code for that tool is actually shipped along with it (provided you have a legitimate copy) so we can have a look.

...and that's where the trail runs cold. Upon cracking open the source you will just be faced with walls of hardcoded binary data. Let's take a serious look at what we have here instead.

The first important thing to note is that every single reply from easrv is hardcoded. This means their encryption is also hardcoded, and sure enough the header is hardcoded to `1-53d121c7-a8b3` (in fact, the entire HTTP header block is a hardcoded string!).

Many of these responses are only rqeuired by specific games. I've not yet compiled a list of which is for what game, but consider it a future expansion coming later :).

## `services.get`

    {% highlight "cxml" %}
    <response>
        <services>

        </services>
    </response>{% endhighlight %}

Fairly standard response here. Many more services are listed than actually available, but that's fine. The router address (`ia`), gateway (`ga`) and centre (`ma`) are all set to `localhost`, ensuring pings succeed.

## `pcbtracker.alive`

    {% highlight "cxml" %}
    <response>

    </response>{% endhighlight %}

Inform the game we have no intention of supporting PASELI. Implementing PASELI involves implementing carding, and is a sizable amount of work. Smart EA exists to start games, not implement all features.

## `message.get`

### Maintenance disabled:

    {% highlight "cxml" %}
    <response>

    </response>{% endhighlight %}

Just report that there's nothing to process. Nice and simple.

### Maintenance enabled:

    {% highlight "cxml" %}
    <response>

    </response>{% endhighlight %}

When maintenance is enabled, we publish two messages. I believe the former is to announce the whole ea network is under maintenance, and the latter PASELI-specific.

## `facility.get`

This packet notably has its encoding bytes as `00 FF` which to the best of my knowledge is not a valid encoding. I used Shift-JIS here to decode the location name.

    {% highlight "cxml" %}
    <response>
        <facility>
        <location>
            US-01
            US
            .
            ・ｮ・ｯ・ｮ・･
            0
        </location>
        <line>
            .
            0
        </line>
        <portfw>
            1.0.0.127
            8888
            8888
        </portfw>
        <public>
            1
            .
            0
            0
        </public>
        <share>
            <eacoin>
                0
                0
                1000000
            </eacoin>
            <url>
                http://localhost
                http://localhost
                http://localhost
                http://localhost
                http://localhost
            </url>
        </share>
        </facility>
    </response>{% endhighlight %}

Pretty standard `facility.get` response here, full of the usual fake values. Notably not even the share URLs were lucky enough to get real data.

## `pcbevent.put`

    {% highlight "cxml" %}
    <response>
        <pcbevent />
    </response>{% endhighlight %}

## `package.list`

    {% highlight "cxml" %}
    <response>

    </response>{% endhighlight %}

## `tax.get_phase`

    {% highlight "cxml" %}
    <response>
        <tax>
            0
        </tax>
    </response>{% endhighlight %}

## `eventlog.write`

    {% highlight "cxml" %}
    <response>
        <eventlog>
            1
            0
            0
            0
        </eventlog>
    </response>{% endhighlight %}

## `machine.get_control`

    {% highlight "cxml" %}
    <response>
        <machine>
            <command>
                nop
            </command>
        </machine>
    </response>{% endhighlight %}

## `info2.common`

    {% highlight "cxml" %}
    <response>
        <info2>
            <event_ctrl />
        </info2>
    </response>{% endhighlight %}

## `pcb2.boot`

    {% highlight "cxml" %}
    <response>
        <shop2>
            <sinfo>
                AS
                1
                0
                0
            </sinfo>
        </shop2>
    </response>{% endhighlight %}

## `pcb2.error`

    {% highlight "cxml" %}
    <response>

    </response>{% endhighlight %}

## `system.getmaster`

Just an error response unless the game is one of...

### Steel Chronicle (`KGG-*`):

    {% highlight "cxml" %}
    <response>
        <system>
            1
            MSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwx
            MSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwx
            1120367223
        </system>
    </response>{% endhighlight %}

### Metal Gear Arcade (`I36-*`):

    {% highlight "cxml" %}
    <response>
        <system>
            1
            MjAxMTA4MTAwMDoxOjE6MToxOjE6MToxOjE6MToxOjE6MToxOjE6MToxOjE6MToxOjE6MToxOjE6MToxOjE6MToxOjE6MToxOjE6MToxOjE6MToxOjE6MToxOjE6MToxOjE6MQ==
            MSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwx
            1120367223
        </system>
    </response>{% endhighlight %}

## `hdkoperation.get`

Only used by Steel Chronicle as far as I can tell

    {% highlight "cxml" %}
    <response>
        <hdkoperation>
            1
            0,0,0,0,0,0,0,0,0
        </hdkoperation>
    </response>{% endhighlight %}

## `op2_common.get_music_info`

This one is really long. It's got its own dedicated page if you really want to see it anyway.

It appears to be specifically for Nostalgia Op.2, however this may be incorrect.

{% endblock %}