diff options
author | Rangi <remy.oukaour+rangi42@gmail.com> | 2019-02-17 13:38:30 -0500 |
---|---|---|
committer | Rangi <remy.oukaour+rangi42@gmail.com> | 2019-02-17 13:38:30 -0500 |
commit | 47495e7d66177e1ecfcbe21809e2de79c2beb6d2 (patch) | |
tree | 8a7726d105430bb6e15be97fc0496679caeac31a | |
parent | fcca48f2a664b255adb21a7dbc5ffa0e2771bac2 (diff) |
Avoid more redundant code and diffs
-rw-r--r-- | docs/design_flaws.md | 58 |
1 files changed, 27 insertions, 31 deletions
diff --git a/docs/design_flaws.md b/docs/design_flaws.md index 23ade837a..21a2aa510 100644 --- a/docs/design_flaws.md +++ b/docs/design_flaws.md @@ -630,40 +630,36 @@ ENDM ## `GetForestTreeFrame` works, but it's still bad -In [engine/tilesets/tileset_anims.asm](/engine/tilesets/tileset_anims.asm): - -```asm -GetForestTreeFrame: -; Return 0 if a is even, or 2 if odd. - and a - jr z, .even - cp 1 - jr z, .odd - cp 2 - jr z, .even - cp 3 - jr z, .odd - cp 4 - jr z, .even - cp 5 - jr z, .odd - cp 6 - jr z, .even -.odd - ld a, 2 - scf - ret -.even - xor a - ret -``` +The routine `GetForestTreeFrame` in [engine/tilesets/tileset_anims.asm](/engine/tilesets/tileset_anims.asm) is hilariously inefficient. **Fix:** +Edit `GetForestTreeFrame`: + ```asm -GetForestTreeFrame: -; Return 0 if a is even, or 2 if odd. - and 1 - add a + GetForestTreeFrame: + ; Return 0 if a is even, or 2 if odd. +- and a +- jr z, .even +- cp 1 +- jr z, .odd +- cp 2 +- jr z, .even +- cp 3 +- jr z, .odd +- cp 4 +- jr z, .even +- cp 5 +- jr z, .odd +- cp 6 +- jr z, .even +-.odd +- ld a, 2 +- scf +- ret +-.even +- xor a ++ and 1 ++ add a ret ``` |