summaryrefslogtreecommitdiff
path: root/Adding-option-for-instant-text.md
diff options
context:
space:
mode:
authormid-kid <esteve.varela@gmail.com>2019-07-15 18:29:36 +0200
committermid-kid <esteve.varela@gmail.com>2019-07-15 18:29:36 +0200
commit7e62c26a65fe1fb18b49b82328f71aa0b53a2b60 (patch)
tree83ed9cb6f3115b764c716661896d11237e9d5a2d /Adding-option-for-instant-text.md
parent12e6fbc119ea9f38200d105033f92f1e80bdc6d5 (diff)
Rename page to fit.
Diffstat (limited to 'Adding-option-for-instant-text.md')
-rw-r--r--Adding-option-for-instant-text.md136
1 files changed, 0 insertions, 136 deletions
diff --git a/Adding-option-for-instant-text.md b/Adding-option-for-instant-text.md
deleted file mode 100644
index 1ce0d84..0000000
--- a/Adding-option-for-instant-text.md
+++ /dev/null
@@ -1,136 +0,0 @@
-This tutorial details how to add an additional text speed option. As an example we'll implement an option for instant text.
-
-
-## Contents
-
-1. [Define wram constant](#1-define-wram-constant)
-2. [Add instant text to options](#2-add-instant-text-to-options)
-3. [Fix text speed while holding a or b](#3-fix-text-speed-while-holding-a-or-b)
-
-
-## 1. Define wram constant
-
-Edit [constants/wram_constants.asm](../blob/master/constants/wram_constants.asm):
-
-```diff
-; wOptions:: ; cfcc
-TEXT_DELAY_MASK EQU %111
- const_def 4
- const NO_TEXT_SCROLL ; 4
- const STEREO ; 5
- const BATTLE_SHIFT ; 6
- const BATTLE_SCENE ; 7
-
-+TEXT_DELAY_NONE EQU %000 ; 0
-TEXT_DELAY_FAST EQU %001 ; 1
-TEXT_DELAY_MED EQU %011 ; 3
-TEXT_DELAY_SLOW EQU %101 ; 5
-```
-
-As you can see we defined `TEXT_DELAY_NONE` as 0, which will print all characters with 0 frame delay.
-
-
-## 2. Add instant text to options
-
-Edit [engine/menus/options_menu.asm](../blob/master/engine/menu/options_menu.asm):
-
-```diff
-.Pointers:
- dw Options_TextSpeed
- ...
-
- const_def
- const OPT_TEXT_SPEED_FAST ; 0
- const OPT_TEXT_SPEED_MED ; 1
- const OPT_TEXT_SPEED_SLOW ; 2
-+ const OPT_TEXT_SPEED_NONE ; 3
-
-Options_TextSpeed:
- call GetTextSpeed
- ldh a, [hJoyPressed]
- bit D_LEFT_F, a
- jr nz, .LeftPressed
- bit D_RIGHT_F, a
- jr z, .NonePressed
- ld a, c ; right pressed
-- cp OPT_TEXT_SPEED_SLOW
-+ cp OPT_TEXT_SPEED_NONE
- jr c, .Increase
-...
-
-.LeftPressed:
- ld a, c
- and a
- jr nz, .Decrease
- ld c, OPT_TEXT_SPEED_NONE + 1
-```
-
-This will make it cycleable in the options menu but it won't actually work quite yet. We still need to define its string and load the correct previous & next value into registers, otherwise it won't display the selected value correctly.
-
-```diff
-.Strings:
-; entries correspond to OPT_TEXT_SPEED_* constants
- dw .Fast
- dw .Mid
- dw .Slow
-+ dw .None
-
-.Fast: db "FAST@"
-.Mid: db "MID @"
-.Slow: db "SLOW@"
-+.None: db "NONE@"
-
-GetTextSpeed:
-; converts TEXT_DELAY_* value in a to OPT_TEXT_SPEED_* value in c,
-; with previous/next TEXT_DELAY_* values in d/e
- ld a, [wOptions]
- and TEXT_DELAY_MASK
- cp TEXT_DELAY_SLOW
- jr z, .slow
- cp TEXT_DELAY_FAST
- jr z, .fast
-+ cp TEXT_DELAY_NONE
-+ jr z, .none
- ; none of the above
- ld c, OPT_TEXT_SPEED_MED
- lb de, TEXT_DELAY_FAST, TEXT_DELAY_SLOW
- ret
-
-.slow
- ld c, OPT_TEXT_SPEED_SLOW
-- lb de, TEXT_DELAY_MED, TEXT_DELAY_FAST
-+ lb de, TEXT_DELAY_MED, TEXT_DELAY_NONE
- ret
-
-.fast
- ld c, OPT_TEXT_SPEED_FAST
-- lb de, TEXT_DELAY_SLOW, TEXT_DELAY_MED
-+ lb de, TEXT_DELAY_NONE, TEXT_DELAY_MED
-+ ret
-+
-+.none
-+ ld c, OPT_TEXT_SPEED_NONE
-+ lb de, TEXT_DELAY_SLOW, TEXT_DELAY_FAST
- ret
-```
-
-Note how `lb de, <previous>, <next>` correspond to the order defined with the `OPT_TEXT_SPEED_<speed>` constants. If your custom text speed is not 0 like mine you're done.
-
-## 3. Fix text speed while holding a or b
-
-There is one last quirk that needs fixing. When you hold a or b while text is scrolling it does so at `TEXT_DELAY_FAST`. Since our custom text speed is faster than that we need to modify that piece of code.
-
-Edit [home/print_text.asm](../blob/master/home/print_text.asm):
-
-```diff
-PrintLetterDelay::
- ...
-
-; text speed
- ld a, [wOptions]
- and %111
-+ jr z, .end
- jr .updatedelay
-```
-
-And there you go.