Stork Editor - yoshidonoshi/stork-editor GitHub Wiki

Starting a project

  1. Rip a supported ROM. As of writing, only USA 1.0 (AYWE r0) is fully supported
  2. File -> Open ROM
  3. Select the ROM file
  4. In the next popup, choose an empty folder to extract the project files into
  5. If there are no errors, your project is successfully loaded
  6. To open your project in the future, do not use "Open ROM", use "Open Project" and select the folder you created earlier

YIDS Primer

  • Traditional 2D Mario games are very uniform, with repeating static blocks making up levels, all clearly square aligned
  • Yoshi's Island DS however, is much more "natural" in that it has complex, organic designs to its levels
  • While the point and click block level design is still available, YIDS excels with natural-looking explorable levels
  • YIDS stores static map graphics (the ground, platforms, backgrounds) as a tile-by-tile array
    • This means manual creation of levels would require selecting and placing individual tiny 8x8 pixel blocks... not feasible
  • To solve this, I created "Brushes," which are loaded sets of tiles that can be placed with a right click
    • You can also copy and paste for larger effect
  • Collision is 2x2 tiles each, so Brushes snap to a red cursor to ensure your levels are designed with this in mind
  • This software is plastered with tooltips and hints to help guide your designing

Workflow

  • Do not wipe the entire Background Map layer tiles right away!
    • You'll need the existing sets to build brushes and copy and paste from
    • However, you can delete the first segment of a level to build your own from. Just preserve things to sample from further down
  • I suggest setting up the basic layout of the level first, just using stone squares, brown platforms, and basic Collision tiles to get platforming and layout right
    • You should also set the initial Entrance for the level and any exits
  • Once you have the navigation set up, then you can start painting with Brushes (and Copy/Pasting from elsewhere in the level assuming you didn't wipe the entire thing)
  • Utilize examples to the maximum. You'll catch on pretty quick to the flow of level decoration
  • Once you have both navigation and decoration nice, start placing Sprites, then Triggers, Paths, etc

Stork Editor Navigation

Keyboard Shortcuts

  • Note: Some of these, such as the clipboard functions, don't work on certain layers
  • Control + O: Open an existing project folder
  • Control + Shift + O: Open an NDS rom to create a new project
  • Control + C: Copy selection
  • Control + X: Cut selection
  • Control + V: Paste
  • Control + A: Select all
  • Control + Z: Undo
  • Control + Y: Redo

Layers

  • You can only interact with layers when you are on the layer selected in the top bar
  • It is recommended to hide layers you aren't using at the time for ease of use and performance
  • Note: Collision is technically stored in one of the BG layers. In 1-1, it is tied to BG2
  • Some layers have unusual functionality, such as the Collision layer having some yellow coins on it for performance

Sprites

  • Set your layer to Sprites with the top left drop down
  • You should get a list of Sprites on the left
  • Clicking on a Sprite on that window selects it
  • You can also select normally in the viewport with left click
  • Hold Shift to select multiple
  • You can drag and drop sprites, but also use arrow keys to more finely place them
  • Delete sprites with the Delete key
  • Modify Sprite settings by selecting a single one and editing the hex values
    • Do not change the number of hex values, each is an unsigned 8 bit integer
  • You can also copy, cut, and paste with Control + C, Control + X, and Control + V
  • Some coin sprites in the base game are Collision records, if there is a scene with a large number of coins use the Collision coins instead

Adding Sprites

  1. Click the Add Sprites button on the right
  2. You'll get a window with a list of sprites and descriptions
  3. You can search and scroll to find what you want
  4. Click the Sprite name to select it
  5. Right click to place it (remember to be on the Sprites layer)
  6. Verify that the settings bytes are valid

Sprite Settings Bytes

  • Sprite settings are set by a list of numbers, each of which is referred to as a "byte"
  • They are represented in hexadecimal, which instead of 0-9, is 0-F (instead of 8, 9, 10 it's 8, 9, A, B)
  • Most are "u8" which refers to a single number, but some such as u16, u32, s16 link together multiple numbers
  • Numbers with types that start with u are "unsigned" which means they can't be negative
  • Numbers with types that start with s are "signed" , see Wikipedia for an explanation
  • Most are 00, but there are more you can find via this Wiki and browsing levels in editor
  • "Padding" are bytes that are never used, simply because the length of settings must be divisible by 4

Background Tiles

  • You'll need to be on the appropriate BG layer to work on this
  • You can drag to select multiple tiles, and copy/cut/paste normally
  • Shift + Drag adds to the tile selection, Control + Drag removes
  • Important: try and select evenly. The red square on your cursor is a guide

Brushes

  • The two windows you need are Brush and Saved Brushes
  • The Brush window shows you what you will "stamp"
  • Once you have a Brush loaded, you place the tiles with a Right Click
  • You can populate the Brush window with either presets from Saved Brushes or your own selection
  • Important: Brush dimensions must be divisible by 2! For example, 2x2, 2x4, 4x8 are okay, 2x3, 5x4 are not
  • The top left corner's position must also be divisible by 2, ie 18x and 16y. The red square helps align this

Creating your own Brush

  • Select the tiles you want to turn into a brush
    • Maximum is 16x16, anything larger should be done via copy/paste
    • Keep dimensions even, such as 6x8 and not 5x7. The red lines guide you
    • If you've accidentally selected too much, use Control + Drag to deselect more
  • Click "Load Selection" in the Brush window. You should see it show up, ensure it is even
  • Note that blank space is also selected, get rid of extra with Control + Drag
  • If you like this brush you've created, you can save it
  • In Saved Brushes, name it and click Store Current Brush. It should show up on the list

Collision

  • Select the Collision layer and open the Collision window
  • Place collision tiles with left click
  • Select what collision tile to place by clicking inside the Collision window
  • You can also middle click an existing tile to set your brush to that
  • Right click to delete a tile
  • Right click and drag to mass delete tiles in a rectangle
  • Green collision records can be passed through from the bottom, usually for brown platforms and stairs
  • Blue collision records are fully solid and cannot be passed through in any direction
  • Red collision squares are lava, and instantly KO Yoshi
  • Blue collision squares are water, Yoshi can swim in it
  • Yellow collision squares are soft rock, currently unsupported

Pathing

  • Switch to the Paths layer and open the Paths window
  • If your map does not already have a Path database, click the button to create it
  • Create a new Path and select it
  • Right click to place new Path points
  • Drag the values to place new ones precisely, and delete Path points that are too far from ideal
  • To connect the Path points in a straight line, drag the Distance value positive
  • You should see it stick out. Adjust that plus the angle until the tip of the green line touches the top left corner of the next point's square

Moving Platforms

  • These are the most common use of Paths, and are Sprite 0x5F
  • Set the second byte to the index of the Path, which if you just made a new one, is 0
  • Set the 7th, 8th, and 13th bytes to FF
  • Set the speed value to 00 20 00 00 (and go up or down for speed changes)
  • See the Sprites record for more settings

Portals

Entrances

  • Entrances are where Yoshi enters the level, including the level start
  • Entrances are represented by green boxes on the GUI
  • They are created, deleted, and adjusted in the Course Settings window
  • Access them by clicking on the name of your current map in the Course Settings window (current map is in title bar)
  • You can drag left and right to place the Entrance. The top left of the square is the true point where Yoshi will spawn

Exits

  • Exits are how Yoshi leaves a level
  • Exits are accessed and modified similarly, but are represented in the GUI by red squares instead
  • There are different entrance types. Some such as 5-7 generate Door graphics you can use, but they must be on solid ground
  • Connect them to other maps and those map's entrances

Troubleshooting

FAQ

  • Q: How do I get rid of that background image in the top left?
    • A: That's a background layer. You can hide it with the Visible Layers dropdown (on 1-1 this is BG3)
  • Q: My clicks aren't doing anything!
    • A: You may not be on the correct layer, and some layers work differently than others
  • Q: I ran into a bug or the program crashed
    • A: Report the bug! See the section below on how
  • Q: There's too much collision already here, how do I clear it?
    • A: You can clear large portions with right click and drag, or do Edit -> Clear Layer
  • Q: My pasted tiles are uneven
    • A: Your original selection may have had an uneven top left, use the cursor's red square and Brush window tooltips for guidance
  • Q: I can't delete some of these Coin sprites
    • A: Some coins are stored as Collision records

Reporting an issue

  1. Do not re-open the program until you have shared your stork.log, as it resets each run
  2. (In order of preference) Create a bug request on the Github, post in #stork-editor on the Discord (https://discord.gg/Fy4za2WsT6), or reply on the thread in SMWC (https://www.smwcentral.net/?p=viewforum&f=25)
  3. Attach (or if not possible, paste) your stork.log, and describe the issue