Why was this even here? We don't need to SetTableMode during every refresh like this, it's ok to only do it during Goto. And we shouldn't be setting the Table Mode boundaries when the run that we find is not a table!
map tileset animations consist of 3 parts:
(1) an `init` routine that sets a hook and some Max values
(2) a callback that runs every frame that decides whether or not to animate
(3) a set of uncompressed tiles to replace existing tiles in the tileset
For each replacement effect, you need to know how many frames are in the animation, how often to update to the next frame, how many tiles to replace, which tiles to replace, and the new tiles to insert. This is handled by a new table that's created specifically for this purpose, where the first field of the table is a pointer to a table of frames. This should make it a bit easier to understand, but a good user guide is still needed for this feature.
This doesn't work yet: there's an issue with the thumb code import step. But this is a first draft.
We can't actually add these automatically to the metadata because of the way the code works: it's a mov/lsl pair, rather than just a flat mov or ldr. However, both routines that load this number have an extra `nop` at the end, which means there's enough space to safely adjust them to use `ldr` instructions instead.
Add a hma script to adjust the code for R/S and introduce the new constant. These are fairly small changes that only touch the two involved functions, so they should be safe to use on basically all R/S roms.
The panel is currently tucked into the right edge of the app, not taking any space. It's an advanced beta feature. The python context only gets access to 2 special variables (editor and table), plus an override for the print function.
When you edit the pokemon names, another field in the table tool needs to update: the combobox drop-down list options for evolution species. There are 5 of these boxes.
Update the logic to be more choosy about what's being updated so that there's less changes going on and the app can update faster.
Shiny discovered a rom where the constant is added on top of a pointer. This is no good, because the constant replacing the pointer didn't clear the pointer from the anchor it points at.
Add logic to clear the format before adding the constant.
* Replace the static PCSString.Convert method with an instance method on a TextConverter that's owned by the Model. The TextConverter can know about different macros depending on which rom is being edited.
* Add macros to pcsReference.txt
When generating a default anchor name, make sure that name isn't already in use.
When generating a default anchor name, put it in `misc.temp.`. Don't save anchors in from namespace to the toml file. This should make cut/paste operations less prone to adding noise to the toml.
Hitting enter on a pointer should jump to that pointer. But this feature's broken since changing the Accept command into a method. Update the AngleTextBox code to use a MethodCommand.
Make MethodCommand more flexible: don't fail if the execute method is missing, just silently do nothing.
This should improve copy/paste scenarios where the user wants to copy the content from the first element and paste it somewhere else within the same (or a similar) run, without negatively effecting the common cut/paste operation of moving an entire run to a new address.
the trainer ai hp-aware flag makes the trainers less likely to use certain moves based on their own HP or the target's HP. For example, effects like
```
SelfKOAndAttack
HealHalfSelf
Rest
Endure
```
are all discouraged when the pokemon's health are high, while
```
RaiseAttack1Primary
RaiseSpAttack1Primary
OHKO
```
are discouraged when the opponent HP is low.