diff options
author | Zetogit <66174658+Zetogit@users.noreply.github.com> | 2021-01-24 03:02:56 +0100 |
---|---|---|
committer | Zetogit <66174658+Zetogit@users.noreply.github.com> | 2021-01-24 03:02:56 +0100 |
commit | d4c57e860c22e878d5def547d01f924906a95c8f (patch) | |
tree | 88ed065093241ba9f1a12c7f63542b68c18ef32e | |
parent | df5e4797d7619b2505de86202edc693011360156 (diff) |
Updated Attack animation tiles (markdown)
-rw-r--r-- | Attack-animation-tiles.md | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/Attack-animation-tiles.md b/Attack-animation-tiles.md index 941bb2a..f6cd01a 100644 --- a/Attack-animation-tiles.md +++ b/Attack-animation-tiles.md @@ -1,4 +1,4 @@ -**### Introduction** +### **Introduction** The aim of this tutorial is to use additional tiles for the attack animations in battle. There are 2 ways to do that: moving black tiles from both attack tilesets to the font tileset, and/or add a new tileset. @@ -10,10 +10,12 @@ Before starting the tutorial, I strongly recommend to know how animations work i This is the best way if you only need few tiles. **# 1) Move your tiles** + First you need to know that the font tileset (in gfx/font/font.png) is used in battle just like the 2 attack animation tilesets. If you look at this font tileset, you will notice a white empty space (enough for 32 tiles) right after the 64 characters, BUT this space can't be used for the tiles that use 4 colors. The font tileset is coded in 1 bit per pixel (1bpp), which means that it only uses black (and white for the transparency of course). No gray. Now the interesting thing is that many tiles in the attack tilesets (22 in total) only use black. So, as you probably want to add 4-color tiles, you can just move the black tiles from the attack tilesets to the unused space in the font tileset, and then replace these black tiles by your custom tiles. **# 2) Change the tile IDs in frameblocks** + From this point, it's a bit complicated to explain but I will do my best and show an example. So, after moving your tiles, change the tile IDs in the frameblocks so that the animations find the new location of the moved tiles. Otherwise, the attacks using these tiles will not find them (they would use the new replaced tiles and that's not what we want). Just change data/battle_anims/frame_blocks.asm. You need to do a little bit of investigation for that, I mean you need to find which specific frameblock(s) use the tile. Make sure the tile ID in the frameblock matches the place of the tile in the tileset, and make sure that the animation using the frameblock uses the good tileset too. Then set the tile ID in the frameblock to the new ID (in the font tileset). @@ -21,6 +23,7 @@ Important to know: the font tileset can be used along with attack_anim_1 or atta The tile IDs in the free slots of the font tileset go from 0x90 to 0xAF. **# 3) An example with the question mark tiles** + Let's make all this clear with an example. The question mark tiles in attack_anim_1 are fully black, then you can move them to the font tileset. Now, put your new custom tiles where the question mark is in attack_anim_1. Now you need to change the ID of the question mark tiles in the frameblocks. Start with the first tile. Go to frame_blocks.asm and look for the frameblock(s) that use the 1st tile of the question mark. The ID of this tile is 0x2a, we know it because we can see that it's the 42nd in the tileset (counting from 0!). Do ctrl+F and search for $2a. You will find the frameblocks 35 and 52. Be careful here, this doesn't mean these two frameblocks use the tile, because they might use the tile 0x2a of the other tileset (attack_anim_2). To figure this out, you have to investigate a bit. @@ -31,6 +34,7 @@ That's it, you just replaced the question mark tiles without messing with Amnesi **### B/ Method 2: Adding a new tileset** + You will be able to add only one tileset of 32 tiles, choose a size of 128*16 preferently but any size should be fine, and of course the tileset must be indexed in 4 colors (black, white, light grey and dark grey). A few limits to this method: *You might be restricted to 16 tiles if you add many attack animations (subanimations, frameblocks...). Indeed the tilesets and files using them must be in the same bank, which puts some limits in terms of rom space. @@ -40,6 +44,7 @@ If you manage to keep a bank with few data in it, you can think of adding more t This method can be improved, you are welcome to share anything useful. **# 1) Adding the gfx pointer to the engine routine** + In engine/battle/animations.asm, add these lines under the AnimationTileset2 pointer: `AnimationTileset3:` `INCBIN "gfx/battle/attack_anim_3.2bpp" ; the path must match the name of your directory and tileset of course` @@ -47,6 +52,7 @@ Then add this under the 3 anim_tileset lines: anim_tileset x, AnimationTileset3 Replace the "x" by the number of tiles you have in your tileset (32 if you stick to this number). **## 2) Restructure the banks** + Adding a tileset will probably make the bank space overflow. This bank should be bank1E normally. You need to move some data in this bank to another bank. For this, create a new bank and a new section for it in layout.link (the file name may change depending on the updates of the pokered repository). Type in something like: `ROMX d` `"bank2D" ; you can put these lines under ROMX C for example` @@ -55,10 +61,12 @@ Then you can move the data from bank1E in main.asm to your new bank, but make su These files need each other in some way, don't put them in separate banks. **# 3) Affect the tileset to an animation** + In data/moves/animations.asm, set the 3rd parameter of the animation you want to 3. This tells the compiler that the animation uses the tileset 3. We do count tilesets from 0 but 0, 1 and 2 are for tilesets 1 and 2, and 3 is for tileset 3. **# 4) Change the FIRST_SE_ID constant** + In constants/move_animation_constants.asm, set this constant to 0xC5 (replace $C0 by $C5). Then remove 5 constants among the special effect animations (the ones beginning by "SE"). 3 animations are already unused: SE_FLASH_ENEMY_MON_PIC, SE_SHAKE_ENEMY_HUD_2 et SE_SHOOT_MANY_BALLS_UPWARD. |