Add Multiple Overworld Sprite Tables
3.5
Description Loading...
Credits:
Sylinuser
DISCLAIMER: This tutorial, as of right now, will prevent HMA from automatically deleting clones when moving an NPC away from a map border.
Additionally It will remove the clone checkbox that you see in the map editor.
ALWAYS MAKE A BACKUP BEFORE MAKING CHANGES TO YOUR GAME
Step 1
Go to 14BDCB0 and paste graphics.overworld.table[table<>]255 to the anchor

Once pasted, it should look like this

Step 2
Click on the first <null> and type <

Type in any free space address of your choice, then close by typing > For this example we are using <1DD7BD0>

Step 3
Once your pointer is in, right click and select Pointer Operations, then select Open in New Tab

This will take you to your new, blank address (from step 2) in a new tab

Step 4
Go back to your previous tab and click the Home Button. Navigate to graphics.overworld.sprites (click graphics, then overworld, then sprites)

Step 5
On any sprite that is not the players sprites, copy the data address on the far left side.
Make sure to copy the whole thing including the < and >

Step 6
Go back to your other tab that has the pointer for your new table in free space

Paste the data pointer you just copied in Step 5

Step 7
Copy this and paste it into the anchor at the top
graphics.overworld.sprites3[data<[starterbytes:|h paletteid:|h secondid:|h length: width: height: info.|t|palSlot::|shadowSize:|inanimate.|reflectionPalette. footprint.owfootprints colourtext: distribution<> sizedraw<> animation<> sprites<`osl`> ramstore<>]1>]
This will convert your sprite into a table

NOTE: If you get this pop up, click "continue" and ignore it

Step 8
Click the "back" arrow at the top

Now your table is set and you will want to repoint the sprite you just created, this way you can change this sprite without it affecting the original one in the original sprite table

After repointing, another repoint option will appear. Make sure to click that one too

Step 9
Double click the address on the right OR click the arrow for the pointer in the data field

Scroll through the sprite sheet and repoint every single frame

Once every frame has been repointed, your sprite is now ready to edit!

You can now go back and click +Add New to add more sprites as you need

STILL NOT DONE
Unfortunately any sprite in any of these new tables we are adding will NOT appear in the overworld sprite tool. you will need to manually add these sprites to your maps. Here is how that is done

Step 10
SAVE AND CLOSE HMA
Step 11
Go to where your game is stored on your PC and open up the .toml file in a notepad (or text editor of your choice, I like Code Writer)

Step 12
Do Ctrl+F to open up the search function. and search for
id. graphics.graphics.overworld.sprites
Step 13
Highlight/select kind:

and replace it with
dynamic. table.graphics.overworld.table
Now how to insert and use your new sprite!
Step 14
Open HMA back up and place a new NPC wherever you want. Note the ID of the new NPC

Step 15
Click on Edit Map Header at the top, then click View Table in Data View. This will bring up the details of the map you are on

Step 16
Click on the arrow next to Events

Step 17
Double click on the first pointer shown on the top right

You will be brought to this table

Step 18
Click on the NPC ID on the right corresponding with the NPC you added in Step 14
For this example it was ID 4. Once selected you need to edit the graphics and table drop downs on the left

Both graphics and table will have a long list of options
Indexes start at 0 meaning your first, brand new sprite that you've added to your new table will be index 0, in this case you can leave graphics at 0. The next sprite you add to your new table will be index 1, and so on. Since this is now the second table in your game you need to change the table to 1. Table 0 is the original sprite table. Table 1 is your new one.

And you are finally done! Great Job!
Final Notes
Your new sprites will not show up in the map editor, but they WILL be correct in game!


Any new table you make will have a maximum limit of 255
From my experience (BroTacos) you can not use sprites from your new tables as dynamic sprites.
Additionally I have noticed adding new sprites to a map will have the table set as default to 255. Normally this does not cause issues UNLESS you are working with a dynamic sprite. In that case you will have to go into the maps data table (Step 18) and make sure your dynamic sprite's ID is assigned to table 0.
Happy Hacking!
