summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--constants/wram_constants.asm32
-rwxr-xr-xengine/main_menu.asm2
-rwxr-xr-xengine/math.asm4
-rwxr-xr-xengine/move_mon.asm6
-rw-r--r--home.asm398
-rw-r--r--home/math.asm47
-rwxr-xr-xhome/print_num.asm303
-rwxr-xr-xhome/print_text.asm149
-rw-r--r--home/text.asm2
-rw-r--r--wram.asm2
10 files changed, 514 insertions, 431 deletions
diff --git a/constants/wram_constants.asm b/constants/wram_constants.asm
index 77fd516b..6b739c6c 100644
--- a/constants/wram_constants.asm
+++ b/constants/wram_constants.asm
@@ -14,18 +14,26 @@ AUTO_INPUT EQU $ff
const TEMPMON ; 3
const WILDMON ; 4
-; wOptions: ; cfcc
-FAST_TEXT EQU 0
-MED_TEXT EQU 1
-SLOW_TEXT EQU 2
-NO_TEXT_SCROLL EQU 4
-; bits
-STEREO EQU 5
-BATTLE_SHIFT EQU 6
-BATTLE_SCENE EQU 7
-
-; Options2:
-MENU_ACCOUNT EQU 0
+; 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_FAST EQU %001 ; 1
+TEXT_DELAY_MED EQU %011 ; 3
+TEXT_DELAY_SLOW EQU %101 ; 5
+
+; wOptions2::
+ const_def
+ const MENU_ACCOUNT ; 0
+
+; wTextboxFlags::
+ const_def
+ const FAST_TEXT_DELAY_F ; 0
+ const NO_TEXT_DELAY_F ; 1
; GBPrinter:
PRINT_LIGHTEST EQU $00
diff --git a/engine/main_menu.asm b/engine/main_menu.asm
index 08242ad1..7e22a02e 100755
--- a/engine/main_menu.asm
+++ b/engine/main_menu.asm
@@ -8,7 +8,7 @@ MainMenu_:
call PlayMusic
.asm_5a60
xor a
- ld [wc1d6], a
+ ld [wDisableTextAcceleration], a
call Function5bf7
ld b, $8
call GetSGBLayout
diff --git a/engine/math.asm b/engine/math.asm
index 7cc35eb4..6f584edf 100755
--- a/engine/math.asm
+++ b/engine/math.asm
@@ -1,4 +1,4 @@
-Multiply_:: ; 67bd
+_Multiply:: ; 67bd
; hMultiplier is one byte.
ld a, 8
@@ -80,7 +80,7 @@ Multiply_:: ; 67bd
ret
-Divide_:: ; 681d
+_Divide:: ; 681d
xor a
ld [hMathBuffer + 0], a
ld [hMathBuffer + 1], a
diff --git a/engine/move_mon.asm b/engine/move_mon.asm
index 70e62498..aae1390b 100755
--- a/engine/move_mon.asm
+++ b/engine/move_mon.asm
@@ -1130,7 +1130,7 @@ RemoveMonFromPartyOrBox: ; e03f (3:603f)
jr z, .asm_e096
ld bc, sBoxMonNicknames
.asm_e096
- call Function3231
+ call CopyDataUntil
ld hl, wPartyMon1
ld bc, PARTYMON_STRUCT_LENGTH
ld a, [wPokemonWithdrawDepositParameter]
@@ -1156,7 +1156,7 @@ RemoveMonFromPartyOrBox: ; e03f (3:603f)
add hl, bc
ld bc, wPartyMonOT
.asm_e0c9
- call Function3231
+ call CopyDataUntil
ld hl, wPartyMonNicknames
ld a, [wPokemonWithdrawDepositParameter]
and a
@@ -1176,7 +1176,7 @@ RemoveMonFromPartyOrBox: ; e03f (3:603f)
jr z, .asm_e0f3
ld bc, sBoxEnd
.asm_e0f3
- call Function3231
+ call CopyDataUntil
.asm_e0f6
ld a, [wPokemonWithdrawDepositParameter]
and a
diff --git a/home.asm b/home.asm
index 14401088..02cf815b 100644
--- a/home.asm
+++ b/home.asm
@@ -179,394 +179,20 @@ IsInArray::
.InArray:
scf
ret
-
-INCLUDE "home/math.asm"
-
-Function31e2:: ; 31e2 (0:31e2)
- ld a, [wOptions]
- bit 4, a
- ret nz
- ld a, [wTextboxFlags]
- bit 1, a
- ret z
- push hl
- push de
- push bc
- ld hl, hOAMUpdate
- ld a, [hl]
- push af
- ld [hl], a
- ld a, [wTextboxFlags]
- bit 0, a
- jr z, .asm_3205
- ld a, [wOptions]
- and $7
- jr .asm_3207
-
-.asm_3205
- ld a, $1
-.asm_3207
- ld [wTextDelayFrames], a
-.asm_320a
- call GetJoypad
- ld a, [wc1d6]
- and a
- jr nz, .asm_3224
- ld a, [hJoyDown]
- bit 0, a
- jr z, .asm_321b
- jr .asm_321f
-
-.asm_321b
- bit 1, a
- jr z, .asm_3224
-.asm_321f
- call DelayFrame
- jr .asm_322a
-
-.asm_3224
- ld a, [wTextDelayFrames]
- and a
- jr nz, .asm_320a
-.asm_322a
- pop af
- ld [hOAMUpdate], a
- pop bc
- pop de
- pop hl
- ret
-
-Function3231::
-.asm_3231
- ld a, [hli]
- ld [de], a
- inc de
- ld a, h
- cp b
- jr nz, .asm_3231
- ld a, l
- cp c
- jr nz, .asm_3231
- ret
-
-PrintNum:: ; 323d (0:323d)
- push bc
- bit 5, b
- jr z, .asm_324f
- bit 7, b
- jr nz, .asm_324a
- bit 6, b
- jr z, .asm_324f
-.asm_324a
- ld a, $f0
- ld [hli], a
- res 5, b
-.asm_324f
- xor a
- ld [hPrintNum1], a
- ld [hMultiplicand], a
- ld [hStringCmpString2], a
- ld a, b
- and $f
- cp $1
- jr z, .asm_3277
- cp $2
- jr z, .asm_326e
- ld a, [de]
- ld [hQuotient], a
- inc de
- ld a, [de]
- ld [hPrintNum3], a
- inc de
- ld a, [de]
- ld [hPrintNum4], a
- jr .asm_327a
-
-.asm_326e
- ld a, [de]
- ld [hStringCmpString2], a
- inc de
- ld a, [de]
- ld [hPrintNum4], a
- jr .asm_327a
-
-.asm_3277
- ld a, [de]
- ld [hPrintNum4], a
-.asm_327a
- push de
- ld d, b
- ld a, c
- swap a
- and $f
- ld e, a
- ld a, c
- and $f
- ld b, a
- ld c, $0
- cp $2
- jr z, .asm_32f2
- cp $3
- jr z, .asm_32e2
- cp $4
- jr z, .asm_32d1
- cp $5
- jr z, .asm_32c0
- cp $6
- jr z, .asm_32ae
- ld a, $f
- ld [hMultiplier], a
- ld a, $42
- ld [hPrintNum6], a
- ld a, $40
- ld [hPrintNum7], a
- call Function3341
- call Function33c0
-.asm_32ae
- ld a, $1
- ld [hPrintNum5], a
- ld a, $86
- ld [hPrintNum6], a
- ld a, $a0
- ld [hPrintNum7], a
- call Function3341
- call Function33c0
-.asm_32c0
- xor a
- ld [hRemainder], a
- ld a, $27
- ld [hMathBuffer], a
- ld a, $10
- ld [hPrintNum7], a
- call Function3341
- call Function33c0
-.asm_32d1
- xor a
- ld [hMultiplier], a
- ld a, $3
- ld [hPrintNum6], a
- ld a, $e8
- ld [hPrintNum7], a
- call Function3341
- call Function33c0
-.asm_32e2
- xor a
- ld [hMultiplier], a
- xor a
- ld [hMathBuffer], a
- ld a, $64
- ld [hPrintNum7], a
- call Function3341
- call Function33c0
-.asm_32f2
- dec e
- jr nz, .asm_32f9
- ld a, $f6
- ld [hPastLeadingZeroes], a
-.asm_32f9
- ld c, $0
- ld a, [hPrintNum4]
-.asm_32fd
- cp $a
- jr c, .asm_3306
- sub $a
- inc c
- jr .asm_32fd
-
-.asm_3306
- ld b, a
- ld a, [hPrintNum1]
- or c
- jr nz, .asm_3311
- call Function33ba
- jr .asm_3323
-
-.asm_3311
- call Function3330
- push af
- ld a, $f6
- add c
- ld [hl], a
- pop af
- ld [hDividend], a
- inc e
- dec e
- jr nz, .asm_3323
- inc hl
- ld [hl], $e8
-.asm_3323
- call Function33c0
- call Function3330
- ld a, $f6
- add b
- ld [hli], a
- pop de
- pop bc
- ret
-
-Function3330:: ; 3330 (0:3330)
- push af
- ld a, [hPastLeadingZeroes]
- and a
- jr nz, .asm_333f
- bit 5, d
- jr z, .asm_333f
- ld a, $f0
- ld [hli], a
- res 5, d
-.asm_333f
- pop af
- ret
-
-Function3341:: ; 3341 (0:3341)
- dec e
- jr nz, .asm_3348
- ld a, $f6
- ld [hProduct], a
-.asm_3348
- ld c, $0
-.asm_334a
- ld a, [hPrintNum5]
- ld b, a
- ld a, [hMultiplicand]
- ld [hPrintNum8], a
- cp b
- jr c, .asm_339a
- sub b
- ld [hPrintNum2], a
- ld a, [hPrintNum6]
- ld b, a
- ld a, [hPrintNum3]
- ld [hPrintNum9], a
- cp b
- jr nc, .asm_336c
- ld a, [hPrintNum2]
- or $0
- jr z, .asm_3396
- dec a
- ld [hPrintNum2], a
- ld a, [hStringCmpString2]
-.asm_336c
- sub b
- ld [hPrintNum3], a
- ld a, [hPrintNum7]
- ld b, a
- ld a, [hPrintNum4]
- ld [hPrintNum10], a
- cp b
- jr nc, .asm_338c
- ld a, [hStringCmpString2]
- and a
- jr nz, .asm_3387
- ld a, [hQuotient]
- and a
- jr z, .asm_3392
- dec a
- ld [hMultiplicand], a
- xor a
-.asm_3387
- dec a
- ld [hPrintNum3], a
- ld a, [hPrintNum4]
-.asm_338c
- sub b
- ld [hPrintNum4], a
- inc c
- jr .asm_334a
-
-.asm_3392
- ld a, [hPrintNum9]
- ld [hStringCmpString2], a
-.asm_3396
- ld a, [hPrintNum8]
- ld [hPrintNum2], a
-.asm_339a
- ld a, [hDividend]
- or c
- jr z, Function33ba
- ld a, [hPrintNum1]
- and a
- jr nz, .asm_33ad
- bit 5, d
- jr z, .asm_33ad
- ld a, $f0
- ld [hli], a
- res 5, d
-.asm_33ad
- ld a, $f6
- add c
- ld [hl], a
- ld [hPrintNum1], a
- inc e
- dec e
- ret nz
- inc hl
- ld [hl], $e8
- ret
-
-Function33ba:: ; 33ba (0:33ba)
- bit 7, d
- ret z
- ld [hl], $f6
- ret
-
-Function33c0:: ; 33c0 (0:33c0)
- bit 7, d
- jr nz, .asm_33cc
- bit 6, d
- jr z, .asm_33cc
- ld a, [hProduct]
+
+SkipNames::
+; Skip a names.
+ ld bc, NAME_LENGTH
and a
ret z
-.asm_33cc
- inc hl
- ret
-
-Function33ce::
-; Print c-digit hex number from de to hl
-.asm_33ce
- push bc
- call Function33d7
- pop bc
- dec c
- jr nz, .asm_33ce
- ret
-
-Function33d7:: ; 33d7 (0:33d7)
- ld a, [de]
- swap a
- and $f
- call Function33e9
- ld [hli], a
- ld a, [de]
- and $f
- call Function33e9
- ld [hli], a
- inc de
- ret
-
-Function33e9:: ; 33e9 (0:33e9)
- ld bc, .digits
- add c
- ld c, a
- ld a, $0
- adc b
- ld b, a
- ld a, [bc]
+.loop
+ add hl, bc
+ dec a
+ jr nz, .loop
ret
-.digits db "0123456789ABCDEF"
-
-FarPrintText::
- ld [wBuffer], a
- ld a, [hROMBank]
- push af
- ld a, [wBuffer]
- rst Bankswitch
- call PrintText
- pop af
- rst Bankswitch
- ret
+INCLUDE "home/math.asm"
+INCLUDE "home/print_text.asm"
Function3414::
ld a, [hROMBank]
@@ -1668,7 +1294,7 @@ PrintBCDNumber:: ; 3ade (0:3ade)
inc hl
.asm_3b0e
ld [hl], $f6
- call Function31e2
+ call PrintLetterDelay
inc hl
.asm_3b14
ret
@@ -1689,7 +1315,7 @@ Function3b15:: ; 3b15 (0:3b15)
.asm_3b29
add $f6
ld [hli], a
- jp Function31e2
+ jp PrintLetterDelay
.asm_3b2f
bit 7, b
diff --git a/home/math.asm b/home/math.asm
index ffa3c282..71de08f9 100644
--- a/home/math.asm
+++ b/home/math.asm
@@ -1,71 +1,68 @@
-SkipNames::
- ld bc, $b
+AddNTimes::
+; Add bc * a to hl.
and a
ret z
-.asm_319e
+.loop
add hl, bc
dec a
- jr nz, .asm_319e
- ret
-
-AddNTimes:: ; 31a3 (0:31a3)
- and a
- ret z
-.asm_31a5
- add hl, bc
- dec a
- jr nz, .asm_31a5
+ jr nz, .loop
ret
SimpleMultiply::
+; Return a * c.
and a
ret z
+
push bc
ld b, a
xor a
-.asm_31af
+.loop
add c
dec b
- jr nz, .asm_31af
+ jr nz, .loop
pop bc
ret
-
-SimpleDivide:: ; 31b5 (0:31b5)
- ld b, $0
-.asm_31b7
+
+SimpleDivide::
+; Divide a by c. Return quotient b and remainder a.
+ ld b, 0
+.loop
inc b
sub c
- jr nc, .asm_31b7
+ jr nc, .loop
dec b
add c
ret
Multiply::
+; Multiply hMultiplicand (3 bytes) by hMultiplier. Result in hProduct.
+; All values are big endian.
push hl
push bc
- callfar Multiply_ ; 1:67bd
+ callfar _Multiply
pop bc
pop hl
ret
Divide::
+; Divide hDividend length b (max 4 bytes) by hDivisor. Result in hQuotient.
+; All values are big endian.
push hl
push de
push bc
-
- homecall Divide_ ; 1:681d
-
+ homecall _Divide
pop bc
pop de
pop hl
ret
SubtractSigned::
+; Return a - b, sign in carry.
sub b
ret nc
cpl
- add $1
+ add 1
scf
ret
diff --git a/home/print_num.asm b/home/print_num.asm
new file mode 100755
index 00000000..70f07607
--- /dev/null
+++ b/home/print_num.asm
@@ -0,0 +1,303 @@
+PrintNum::
+; Print c digits of the b-byte value from de to hl.
+; Allows 2 to 7 digits. For 1-digit numbers, add
+; the value to char "0" instead of calling PrintNum.
+; The high nybble of the c register specifies how many of the total amount of
+; digits will be in front of the decimal point.
+; Some extra flags can be given in bits 5-7 of b.
+; Bit 5: money if set (unless left-aligned without leading zeros)
+; Bit 6: left-aligned if set
+; Bit 7: print leading zeros if set
+
+ push bc
+
+ bit 5, b
+ jr z, .main
+ bit 7, b
+ jr nz, .moneyflag
+ bit 6, b
+ jr z, .main
+
+.moneyflag ; 101xxxxx or 011xxxxx
+ ld a, "¥"
+ ld [hli], a
+ res 5, b ; 100xxxxx or 010xxxxx
+
+.main
+ xor a
+ ldh [$ffb5], a
+ ldh [$ffb6], a
+ ldh [$ffb7], a
+ ld a, b
+ and $f
+ cp 1
+ jr z, .byte
+ cp 2
+ jr z, .word
+; maximum 3 bytes
+.long
+ ld a, [de]
+ ldh [$ffb6], a
+ inc de
+ ld a, [de]
+ ldh [$ffb7], a
+ inc de
+ ld a, [de]
+ ldh [$ffb8], a
+ jr .start
+
+.word
+ ld a, [de]
+ ldh [$ffb7], a
+ inc de
+ ld a, [de]
+ ldh [$ffb8], a
+ jr .start
+
+.byte
+ ld a, [de]
+ ldh [$ffb8], a
+
+.start
+ push de
+
+ ld d, b
+ ld a, c
+ swap a
+ and $f
+ ld e, a
+ ld a, c
+ and $f
+ ld b, a
+ ld c, 0
+ cp 2
+ jr z, .two
+ cp 3
+ jr z, .three
+ cp 4
+ jr z, .four
+ cp 5
+ jr z, .five
+ cp 6
+ jr z, .six
+
+.seven
+ ld a, HIGH(1000000 >> 8)
+ ldh [$ffb9], a
+ ld a, HIGH(1000000) ; mid
+ ldh [$ffba], a
+ ld a, LOW(1000000)
+ ldh [$ffbb], a
+ call .PrintDigit
+ call .AdvancePointer
+
+.six
+ ld a, HIGH(100000 >> 8)
+ ldh [$ffb9], a
+ ld a, HIGH(100000) ; mid
+ ldh [$ffba], a
+ ld a, LOW(100000)
+ ldh [$ffbb], a
+ call .PrintDigit
+ call .AdvancePointer
+
+.five
+ xor a ; HIGH(10000 >> 8)
+ ldh [$ffb9], a
+ ld a, HIGH(10000) ; mid
+ ldh [$ffba], a
+ ld a, LOW(10000)
+ ldh [$ffbb], a
+ call .PrintDigit
+ call .AdvancePointer
+
+.four
+ xor a ; HIGH(1000 >> 8)
+ ldh [$ffb9], a
+ ld a, HIGH(1000) ; mid
+ ldh [$ffba], a
+ ld a, LOW(1000)
+ ldh [$ffbb], a
+ call .PrintDigit
+ call .AdvancePointer
+
+.three
+ xor a ; HIGH(100 >> 8)
+ ldh [$ffb9], a
+ xor a ; HIGH(100) ; mid
+ ldh [$ffba], a
+ ld a, LOW(100)
+ ldh [$ffbb], a
+ call .PrintDigit
+ call .AdvancePointer
+
+.two
+ dec e
+ jr nz, .two_skip
+ ld a, "0"
+ ldh [$ffb5], a
+
+.two_skip
+ ld c, 0
+ ldh a, [$ffb8]
+
+.mod_10
+ cp 10
+ jr c, .modded_10
+ sub 10
+ inc c
+ jr .mod_10
+
+.modded_10
+ ld b, a
+ ldh a, [$ffb5]
+ or c
+ jr nz, .money
+ call .PrintLeadingZero
+ jr .money_leading_zero
+
+.money
+ call .PrintYen
+ push af
+ ld a, "0"
+ add c
+ ld [hl], a
+ pop af
+ ldh [$ffb5], a
+ inc e
+ dec e
+ jr nz, .money_leading_zero
+ inc hl
+ ld [hl], $e8
+
+.money_leading_zero
+ call .AdvancePointer
+ call .PrintYen
+ ld a, "0"
+ add b
+ ld [hli], a
+
+ pop de
+ pop bc
+ ret
+
+.PrintYen:
+ push af
+ ldh a, [$ffb5]
+ and a
+ jr nz, .stop
+ bit 5, d
+ jr z, .stop
+ ld a, "¥"
+ ld [hli], a
+ res 5, d
+
+.stop
+ pop af
+ ret
+
+.PrintDigit:
+ dec e
+ jr nz, .ok
+ ld a, "0"
+ ldh [$ffb5], a
+.ok
+ ld c, 0
+.loop
+ ldh a, [$ffb9]
+ ld b, a
+ ldh a, [$ffb6]
+ ldh [$ffbc], a
+ cp b
+ jr c, .skip1
+ sub b
+ ldh [$ffb6], a
+ ldh a, [$ffba]
+ ld b, a
+ ldh a, [$ffb7]
+ ldh [$ffbd], a
+ cp b
+ jr nc, .skip2
+ ldh a, [$ffb6]
+ or 0
+ jr z, .skip3
+ dec a
+ ldh [$ffb6], a
+ ldh a, [$ffb7]
+.skip2
+ sub b
+ ldh [$ffb7], a
+ ldh a, [$ffbb]
+ ld b, a
+ ldh a, [$ffb8]
+ ldh [$ffbe], a
+ cp b
+ jr nc, .skip4
+ ldh a, [$ffb7]
+ and a
+ jr nz, .skip5
+ ldh a, [$ffb6]
+ and a
+ jr z, .skip6
+ dec a
+ ldh [$ffb6], a
+ xor a
+.skip5
+ dec a
+ ldh [$ffb7], a
+ ldh a, [$ffb8]
+.skip4
+ sub b
+ ldh [$ffb8], a
+ inc c
+ jr .loop
+.skip6
+ ldh a, [$ffbd]
+ ldh [$ffb7], a
+.skip3
+ ldh a, [$ffbc]
+ ldh [$ffb6], a
+.skip1
+ ldh a, [$ffb5]
+ or c
+ jr z, .PrintLeadingZero
+ ldh a, [$ffb5]
+ and a
+ jr nz, .done
+ bit 5, d
+ jr z, .done
+ ld a, "¥"
+ ld [hli], a
+ res 5, d
+.done
+ ld a, "0"
+ add c
+ ld [hl], a
+ ldh [$ffb5], a
+ inc e
+ dec e
+ ret nz
+ inc hl
+ ld [hl], $e8
+ ret
+
+.PrintLeadingZero:
+; prints a leading zero unless they are turned off in the flags
+ bit 7, d ; print leading zeroes?
+ ret z
+ ld [hl], "0"
+ ret
+
+.AdvancePointer:
+; increments the pointer unless leading zeroes are not being printed,
+; the number is left-aligned, and no nonzero digits have been printed yet
+ bit 7, d ; print leading zeroes?
+ jr nz, .inc
+ bit 6, d ; left alignment or right alignment?
+ jr z, .inc
+ ldh a, [$ffb5]
+ and a
+ ret z
+.inc
+ inc hl
+ ret \ No newline at end of file
diff --git a/home/print_text.asm b/home/print_text.asm
new file mode 100755
index 00000000..31cbd744
--- /dev/null
+++ b/home/print_text.asm
@@ -0,0 +1,149 @@
+PrintLetterDelay::
+; Wait before printing the next letter.
+
+; The text speed setting in wOptions is actually a frame count:
+; fast: 1 frame
+; mid: 3 frames
+; slow: 5 frames
+
+; wTextboxFlags[!0] and A or B override text speed with a one-frame delay.
+; wOptions[4] and wTextboxFlags[!1] disable the delay.
+
+ ld a, [wOptions]
+ bit NO_TEXT_SCROLL, a
+ ret nz
+
+; non-scrolling text?
+ ld a, [wTextboxFlags]
+ bit NO_TEXT_DELAY_F, a
+ ret z
+
+ push hl
+ push de
+ push bc
+
+ ld hl, hOAMUpdate
+ ld a, [hl]
+ push af
+
+; orginally turned oam update off...
+; ld a, 1
+ ld [hl], a
+
+; force fast scroll?
+ ld a, [wTextboxFlags]
+ bit FAST_TEXT_DELAY_F, a
+ jr z, .fast
+
+; text speed
+ ld a, [wOptions]
+ and %111
+ jr .updatedelay
+
+.fast
+ ld a, TEXT_DELAY_FAST
+
+.updatedelay
+ ld [wTextDelayFrames], a
+
+.checkjoypad
+ call GetJoypad
+
+; input override
+ ld a, [wDisableTextAcceleration]
+ and a
+ jr nz, .wait
+
+; Wait one frame if holding A or B.
+ ldh a, [hJoyDown]
+ bit A_BUTTON_F, a
+ jr z, .checkb
+ jr .delay
+.checkb
+ bit B_BUTTON_F, a
+ jr z, .wait
+
+.delay
+ call DelayFrame
+ jr .end
+
+.wait
+ ld a, [wTextDelayFrames]
+ and a
+ jr nz, .checkjoypad
+
+.end
+ pop af
+ ldh [hOAMUpdate], a
+ pop bc
+ pop de
+ pop hl
+ ret
+
+CopyDataUntil::
+; Copy [hl .. bc) to de.
+
+; In other words, the source data is
+; from hl up to but not including bc,
+; and the destination is de.
+
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, h
+ cp b
+ jr nz, CopyDataUntil
+ ld a, l
+ cp c
+ jr nz, CopyDataUntil
+ ret
+
+INCLUDE "home/print_num.asm"
+
+Function33ce::
+; Print c-digit hex number from de to hl
+.asm_33ce
+ push bc
+ call Function33d7
+ pop bc
+ dec c
+ jr nz, .asm_33ce
+ ret
+
+Function33d7:: ; 33d7 (0:33d7)
+ ld a, [de]
+ swap a
+ and $f
+ call Function33e9
+ ld [hli], a
+ ld a, [de]
+ and $f
+ call Function33e9
+ ld [hli], a
+ inc de
+ ret
+
+Function33e9:: ; 33e9 (0:33e9)
+ ld bc, .digits
+ add c
+ ld c, a
+ ld a, $0
+ adc b
+ ld b, a
+ ld a, [bc]
+ ret
+
+.digits db "0123456789ABCDEF"
+
+FarPrintText::
+ ld [wBuffer], a
+ ld a, [hROMBank]
+ push af
+ ld a, [wBuffer]
+ rst Bankswitch
+
+ call PrintText
+
+ pop af
+ rst Bankswitch
+ ret \ No newline at end of file
diff --git a/home/text.asm b/home/text.asm
index a1bc5b08..d1cee382 100644
--- a/home/text.asm
+++ b/home/text.asm
@@ -247,7 +247,7 @@ endm
call Diacritic
.place
ld [hli], a
- call Function31e2
+ call PrintLetterDelay
jp NextChar
print_name: macro
diff --git a/wram.asm b/wram.asm
index b6162a30..0c2548cf 100644
--- a/wram.asm
+++ b/wram.asm
@@ -138,7 +138,7 @@ wMapTimeOfDay:: ds 1 ; c1cf
wPrinterConnectionOpen:: ds 1
wPrinterOpcode:: ds 1 ; c1d4
wc1d5:: ds 1 ; c1d5
-wc1d6:: ds 1 ; c1d6
+wDisableTextAcceleration:: ds 1 ; c1d6
wc1d7:: ds 1 ; c1d7
wc1d8:: ds 1 ; c1d8
wc1d9:: ds 1 ; c1d9