summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRangi <remy.oukaour+rangi42@gmail.com>2019-02-17 13:38:30 -0500
committerRangi <remy.oukaour+rangi42@gmail.com>2019-02-17 13:38:30 -0500
commit47495e7d66177e1ecfcbe21809e2de79c2beb6d2 (patch)
tree8a7726d105430bb6e15be97fc0496679caeac31a
parentfcca48f2a664b255adb21a7dbc5ffa0e2771bac2 (diff)
Avoid more redundant code and diffs
-rw-r--r--docs/design_flaws.md58
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
```