‘Walkable’ area definition

Here is the complete definition for LN2 level 1 screen 1.

One can actually see the places where the trumpet and drums are, which are forbidden to Armakuni. The path that leads to behind the curtain is obvious too.

Walkable area definition for LN2 level 1 screen 1 by Luigi Di Fraia

Walkable area definition for LN2 level 1 screen 1

OK, the above is not exactly straightforward, but the ones below for screen 1 and 2 should be clearer 🙂

Walkable areas in LN2 level 1 screen 1 by Luigi Di Fraia

Walkable areas in LN2 level 1 screen 1

Walkable areas in LN2 level 1 screen 2 by Luigi Di Fraia

Walkable areas in LN2 level 1 screen 2

About Luigi Di Fraia

I am a Senior DevOps Engineer so I get to work with the latest technologies and open-source software. However, in my private time I enjoy retro-computing.
This entry was posted in Retrocomputing and tagged , , , , . Bookmark the permalink.

5 Responses to ‘Walkable’ area definition

  1. Kai Ninja says:

    Thanks for keeping the blog so up to date, it’s nice to follow your integrator journey as you go along. 🙂

  2. Didi says:

    Are those walkable areas always be defined as straight lines, or can they be made of any shape?
    They must be somehow dynamically too (trapdoor open/closed), and sprite-obstacles (dead guard) are handled seperately? What about different layers in height?
    Happy disassembling! I wonder if somone could write a disassembler that does most things of code-analyzing automatically, including variables, labels and the building of some flow-charts…

    • luigidifraia says:

      Only segments and point-to-point lines define boundaries to where Armakuni and enemies can step. Trapdoor open/close is handled as any other “exit”, rather than a boundary. Dead enemies are handled in a different way as well.
      There is no disassembler that understands the semantics of what it is disassembling I am afraid…

      • Didi says:

        What do you mean with “segments”, can you give an example please? Straight point-to-point-lines is clear to me. Are they defined within objects/panels (too)? That maybe would make some sense, because this way the work to define a complete loacation-screen would be reduced, because most boundaries would be already there, given by the objects.

        When I first poked my Ninja out of the official walkable area, I found out, that there exists a kind of boundary-line(s), and you just can´t pass them independent from what side you are walking towards them, that´s all. I thought anyone should know that, for understanding the walkable-concept they used.There are no “areas”, there are only stopping-lines (and “segments?).

        Last but not least, there already exists a professional disassembler of that kind I am looking for: it´s called IDA (“Interactive DisAssembler”) including flow-charting!
        There´s only one small problem to me for now to use it: the (for MOS6502 support) sufficient “Starter Edition” costs only Euro 419,-. Sure this piece of software will be worth the price, but my budget doesn´t allow toys of that price range by now.

        Happy New Year 2013 to all Last Ninjas out there!

  3. luigidifraia says:

    Single segment example: look at screen number 2 below.

    LN2 walking boundaries in level 1 screen 2

    There is a horizontal isolated segment where each of the lights stands. A segment there means that Armakuni cannot go past it, whatever side he approaches it from, which creates the illusion that Armakuni cannot go past the lights.
    Non-crossable segments are NOT defined on an object basis, and I believe they were manually defined after the screen design (which is the main job of the graphic designer). In fact, information about foreground and walkable areas is not part of the data file generated by John Twiddy’s Integrator.

    The concept of walkable area might be a bit misleading without further details, but the idea is that I find it overwhelming for readers to provide too many implementation details. Basically point-to-point lines aim to encompass what I refer to as a walkable area (or part of it), so that Armakuni cannot accidentally walk outside of its perimeter (it happens quite a lot in Last Ninja 3 if you play it for long enough): that is the benefit of the use of point-to-point lines (all segments are connected), and it should be clear that the only effective way to define these things is to manually take care of them after the graphic design stage.
    On top of point-to-point lines that define a perimeter (or part of it) there are sometimes further isolated segments (as the one mentioned above) and additional point-to-point lines that encompass non-walkable areas inside walkable ones.

    So you are correct: whether single segments or point-to-point lines, the effect is that Armakuni cannot get past them whatever side he approaches them from (that’s fundamental when creating non-walkable areas inside walkable ones). This is a technique that is elegant, simple to implement on a computer, it requires little memory storage for the segments, and creates the wanted effect. It probably pre-dates LN.

    As per IDA, I know it (it’s been around for a long time). I prefer to use my free disassembler embedded in TAPClean FE (which is what I initially used to disassemble LN and LN2). I usually code my own tools to aid disassembling tasks where data structures/vectors and similar are in place.
    IMHO it helps when disassembling to have good knowledge not just of the architecture/instruction set but also of common ways to do things, and a lot of intuition. An experienced coder can quickly identify a routine that multiplies the contents of X by Y and stores the result in $FA so that he can focus on other stuff like understanding the AI…

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s