Thursday, June 22, 2017

What's in a name?

In my last post I made it a point to use the term "collision change object" over the more popular "path swapper". And previously I made sure to use the term "sprite status table" over "object status table", even though it stores an object's state.

I do this out of respect for the the game's developers, because those were the names they originally used. The "path swapper" object was called "colichg" in the original source code, and the term "sprite status table" comes directly from a patent by Yuji Naka himself:
Sprites

A Sprite is defined through a Sprite attribute table entry which is stored in VRAM45 and a sprite status table stored in RAM42. The following sprite status table lists representative status information that is stored in the RAM42 for main character (hero) type sprites as well as for various other sprites such as enemies or moving platforms.
______________________________________

Sprite Status Table
No. of Bytes    Description
______________________________________
   1            Action Number
   1            Action Flags
   2            Offset in VRAM
   4            Address of pattern table
   4            X direction offset within playfield
   4            y direction offset within playfield
   2            ± x direction speed
   2            ± y direction speed
   1            vertical offset (in dots) from center
                of character to bottom of char.
   1            horizontal offset (in dots)
                from center of character to bottom of
                character.
   1            sprite priority
   1            horizontal width in dots
   1            pattern number
   1            pattern counter
   2            pattern change number
   1            pattern timer counter
   1            pattern timer master
   1            collision size
   1            collision counter
   1            Routine number 1
   1            Routine number 2
   2            angle of character through loop (not
                sloop)
   1            ride-on flag
   1            hit flag
   2            A/B type collision setting
______________________________________
And sure, "object" is a better term than "sprite" to describe data structures and code style that emulate object-oriented design, and I honor that term because the disassembly uses the "Obj" prefix for objects, but it very quickly gives up and starts calling them sprites anyway:
Obj_MechaSonicHeadMain:
    jsr     (Refresh_ChildPositionAdjusted).l
    tst.b   ($FFFFFA89).w
    bne.s   loc_67D3C
    jmp     (Draw_Sprite).l
; ---------------------------------------------------------------------------

loc_67D3C:
    jmp     (Delete_Current_Sprite).l
; ---------------------------------------------------------------------------
Monitors are called "item boxes" or just "items" in the Japanese manuals, and the power-ups Sonic gets from them are known as "barriers" rather than "shields". This one is particularly infuriating, because changing it to a word that doesn't start with the letter "B" means the design of the items in the bonus stage no longer makes any sense!


Some of these are too far gone and aren't worth fighting for. The cheat that allows you to move freely and place objects within a level has always been known as "edit mode" in Japan, and is even listed as such in 1997's Sonic Jam, but it's forever ingrained as "debug mode" in the western world.


The offset stored in an object's "art tile" attribute is called a pattern index because it literally indexes a "pattern", which is the term used in official Mega Drive documentation for an 8x8 pixel block. However, the term "tile" was adopted from the early years of the ROM hacking scene and we haven't looked back since.

It's not all bad, though. The use of the term "beta" to describe a prototype version of a game has pretty much died out, and I honestly couldn't be more proud.

3 comments:

  1. Heh. I've always hated the name Insta-shield, as it makes no sense in my eyes. It's not a shield/barrier, it's an attack that hurts foes. And it always looked more like a spinning move performed by Sonic than a shield to me. Clealy SoA just went "That looks like a shield" and gave it that nonsense name.

    The Japanese name, "W Spin Attack", sounds a bit weird, but it makes a lot more sense, as it IS a spin attack, and the white lines produced by it are in W shapes.

    I liked how the localization of Generations renamed the move Twin Spin Attack. I'm not sure where the "twin" part comes from, but at least they're no longer mislabeling it as a shield.

    ReplyDelete
    Replies
    1. Actually, the "W" in W Spin Attack is a case of W serving as an abbreviation for the English word "double".

      So the move's name is literally just "Double Spin Attack". Generations wasn't that far off!

      Delete
    2. "Heh. I've always hated the name Insta-shield, as it makes no sense in my eyes. It's not a shield/barrier, it's an attack that hurts foes."

      ...And protects you from damage. Like a shield.

      Delete