Document the BattleAnimCmd_ClearObjs bug

This commit is contained in:
Rangi 2019-02-16 13:31:23 -05:00
parent 771d2efd65
commit 96bcf72d96
2 changed files with 22 additions and 4 deletions

View File

@ -68,6 +68,7 @@ Fixes are written in the `diff` format. If you've used Git before, this should l
- [`ChooseWildEncounter` doesn't really validate the wild Pokémon species](#choosewildencounter-doesnt-really-validate-the-wild-pokémon-species)
- [`TryObjectEvent` arbitrary code execution](#tryobjectevent-arbitrary-code-execution)
- [`ClearWRAM` only clears WRAM bank 1](#clearwram-only-clears-wram-bank-1)
- [`BattleAnimCmd_ClearObjs` only clears the first 6⅔ objects](#battleanimcmd_clearobjs-only-clears-the-first-6⅔-objects)
## Thick Club and Light Ball can make (Special) Attack wrap around above 1024
@ -1585,3 +1586,22 @@ This supports up to six entries.
+ jr c, .bank_loop
ret
```
## `BattleAnimCmd_ClearObjs` only clears the first 6⅔ objects
**Fix:** Edit `BattleAnimCmd_ClearObjs` in [engine/battle_anims/anim_commands.asm](/engine/battle_anims/anim_commands.asm):
```diff
BattleAnimCmd_ClearObjs:
-; BUG: This function only clears the first 6⅔ objects
ld hl, wActiveAnimObjects
- ld a, $a0 ; should be NUM_ANIM_OBJECTS * BATTLEANIMSTRUCT_LENGTH
- ld a, NUM_ANIM_OBJECTS * BATTLEANIMSTRUCT_LENGTH
.loop
ld [hl], 0
inc hl
dec a
jr nz, .loop
ret
```

View File

@ -644,11 +644,9 @@ BattleAnimCmd_ResetObp0:
ret
BattleAnimCmd_ClearObjs:
; BUG: This function only clears the first 6+(2/3) objects
; BUG: This function only clears the first 6⅔ objects
ld hl, wActiveAnimObjects
ld a, $a0
; ld a, wActiveAnimObjectsEnd - wActiveAnimObjects
ld a, $a0 ; should be NUM_ANIM_OBJECTS * BATTLEANIMSTRUCT_LENGTH
.loop
ld [hl], 0
inc hl