diff options
author | Marcus Huderle <huderlem@gmail.com> | 2017-06-30 16:55:08 -0700 |
---|---|---|
committer | Marcus Huderle <huderlem@gmail.com> | 2017-06-30 16:55:08 -0700 |
commit | ad13bd10866520c0cfe2b057755e4b7ab710e8c8 (patch) | |
tree | 86577e10afc74d2bbb6387f9e731201dcb3690fd /engine/pokedex/variable_width_font_character.asm | |
parent | 704e4433a4f8e9cba841e108a83ee7481f684cc4 (diff) |
Move variable-width font routine into its own file
Diffstat (limited to 'engine/pokedex/variable_width_font_character.asm')
-rwxr-xr-x | engine/pokedex/variable_width_font_character.asm | 321 |
1 files changed, 321 insertions, 0 deletions
diff --git a/engine/pokedex/variable_width_font_character.asm b/engine/pokedex/variable_width_font_character.asm new file mode 100755 index 0000000..9dba2d8 --- /dev/null +++ b/engine/pokedex/variable_width_font_character.asm @@ -0,0 +1,321 @@ +LoadDexVWFCharacter_: ; 0x8d17
+; Loads a single variable-width-font character used in various parts of the Pokedex screen.
+ ld a, [$ff92]
+ cp $80
+ jp c, Func_8e01
+ ld a, [$ff90]
+ ld c, a
+ ld a, [$ff91]
+ ld b, a
+ ld a, [$ff93]
+ ld l, a
+ ld h, $0
+ add hl, bc
+ ld a, [$ff8e]
+ cp h
+ jr nz, .asm_8d32
+ ld a, [$ff8d]
+ cp l
+.asm_8d32
+ jr nc, .asm_8d5c
+ ld a, [$ff8d]
+ ld [$ff90], a
+ ld a, [$ff8e]
+ ld [$ff91], a
+ ld a, [$ff8d]
+ ld c, a
+ ld a, [$ff8e]
+ ld b, a
+ ld a, [$ff8c]
+ ld l, a
+ ld h, $0
+ add hl, bc
+ ld a, l
+ ld [$ff8d], a
+ ld a, h
+ ld [$ff8e], a
+ srl h
+ rr l
+ srl h
+ rr l
+ ld a, [$ff8f]
+ cp l
+ jp c, Func_8df7
+.asm_8d5c
+ ld a, [$ff90]
+ and $f8
+ ld c, a
+ ld a, [$ff91]
+ ld b, a
+ sla c
+ rl b
+ sla c
+ rl b
+ ld hl, wc010
+ add hl, bc
+ ld d, h
+ ld e, l
+ ld a, [$ff92]
+ swap a
+ ld c, a
+ and $f
+ ld b, a
+ ld a, c
+ and $f0
+ ld c, a
+ sla c
+ rl b
+ ld hl, PokedexCharactersGfx
+ add hl, bc
+ push hl
+ ld a, [$ff90]
+ and $7
+ ld c, a
+ ld b, $0
+ ld hl, Data_8df9
+ add hl, bc
+ ld a, [hl]
+ ld [wd85e], a
+ cpl
+ ld [wd85f], a
+ ld a, c
+ add $58
+ ld b, a
+ pop hl
+ push hl
+ ld c, $10
+.asm_8da2
+ push bc
+ ld a, [hli]
+ ld c, a
+ ld a, [bc]
+ ld c, a
+ ld a, [wd85e]
+ and c
+ ld c, a
+ ld a, [wd860]
+ ld b, a
+ ld a, [de]
+ xor b
+ or c
+ xor b
+ ld [de], a
+ inc de
+ ld a, [de]
+ xor b
+ or c
+ xor b
+ ld [de], a
+ inc de
+ inc hl
+ pop bc
+ dec c
+ jr nz, .asm_8da2
+ pop hl
+ ld c, $10
+.asm_8dc4
+ push bc
+ ld a, [hli]
+ ld c, a
+ ld a, [bc]
+ ld c, a
+ ld a, [wd85f]
+ and c
+ ld c, a
+ ld a, [wd860]
+ ld b, a
+ ld a, [de]
+ xor b
+ or c
+ xor b
+ ld [de], a
+ inc de
+ ld a, [de]
+ xor b
+ or c
+ xor b
+ ld [de], a
+ inc de
+ inc hl
+ pop bc
+ dec c
+ jr nz, .asm_8dc4
+ ld a, [$ff90]
+ ld c, a
+ ld a, [$ff91]
+ ld b, a
+ ld a, [$ff93]
+ ld l, a
+ ld h, $0
+ add hl, bc
+ ld a, l
+ ld [$ff90], a
+ ld a, h
+ ld [$ff91], a
+ and a
+ ret
+
+Func_8df7: ; 0x8df7
+ scf
+ ret
+
+Data_8df9: ; 0x8df9
+ db $FF, $7F, $3F, $1F, $0F, $07, $03, $01
+
+Func_8e01: ; 0x8e01
+ ld a, [$ff90]
+ ld c, a
+ ld a, [$ff91]
+ ld b, a
+ ld a, [$ff93]
+ ld l, a
+ ld h, $0
+ add hl, bc
+ ld a, [$ff8e]
+ cp h
+ jr nz, .asm_8e15
+ ld a, [$ff8d]
+ cp l
+.asm_8e15
+ jr nc, .asm_8e3f
+ ld a, [$ff8d]
+ ld [$ff90], a
+ ld a, [$ff8e]
+ ld [$ff91], a
+ ld a, [$ff8d]
+ ld c, a
+ ld a, [$ff8e]
+ ld b, a
+ ld a, [$ff8c]
+ ld l, a
+ ld h, $0
+ add hl, bc
+ ld a, l
+ ld [$ff8d], a
+ ld a, h
+ ld [$ff8e], a
+ srl h
+ rr l
+ srl h
+ rr l
+ ld a, [$ff8f]
+ cp l
+ jp c, Func_8ed6
+.asm_8e3f
+ ld a, [$ff90]
+ and $f8
+ ld c, a
+ ld a, [$ff91]
+ ld b, a
+ sla c
+ rl b
+ ld hl, wc010
+ add hl, bc
+ ld d, h
+ ld e, l
+ ld a, [$ff92]
+ swap a
+ ld c, a
+ and $f
+ ld b, a
+ ld a, c
+ and $f0
+ ld c, a
+ sla c
+ rl b
+ ld hl, PokedexCharactersGfx + $8
+ add hl, bc
+ push hl
+ ld a, [$ff90]
+ and $7
+ ld c, a
+ ld b, $0
+ ld hl, Data_8ed8
+ add hl, bc
+ ld a, [hl]
+ ld [wd85e], a
+ cpl
+ ld [wd85f], a
+ ld a, c
+ add $58
+ ld b, a
+ pop hl
+ push hl
+ ld c, $8
+.asm_8e81
+ push bc
+ ld a, [hli]
+ ld c, a
+ ld a, [bc]
+ ld c, a
+ ld a, [wd85e]
+ and c
+ ld c, a
+ ld a, [wd860]
+ ld b, a
+ ld a, [de]
+ xor b
+ or c
+ xor b
+ ld [de], a
+ inc de
+ ld a, [de]
+ xor b
+ or c
+ xor b
+ ld [de], a
+ inc de
+ inc hl
+ pop bc
+ dec c
+ jr nz, .asm_8e81
+ pop hl
+ ld c, $8
+.asm_8ea3
+ push bc
+ ld a, [hli]
+ ld c, a
+ ld a, [bc]
+ ld c, a
+ ld a, [wd85f]
+ and c
+ ld c, a
+ ld a, [wd860]
+ ld b, a
+ ld a, [de]
+ xor b
+ or c
+ xor b
+ ld [de], a
+ inc de
+ ld a, [de]
+ xor b
+ or c
+ xor b
+ ld [de], a
+ inc de
+ inc hl
+ pop bc
+ dec c
+ jr nz, .asm_8ea3
+ ld a, [$ff90]
+ ld c, a
+ ld a, [$ff91]
+ ld b, a
+ ld a, [$ff93]
+ ld l, a
+ ld h, $0
+ add hl, bc
+ ld a, l
+ ld [$ff90], a
+ ld a, h
+ ld [$ff91], a
+ and a
+ ret
+
+Func_8ed6: ; 0x8ed6
+ scf
+ ret
+
+Data_8ed8: ; 0x8ed8
+ db $FF, $7F, $3F, $1F, $0F, $07, $03, $01
|