Files
alttpr-baserom/textrenderer.asm
cassidoxa 09d15f3294 Another WRAM label pass
Deleted compression.asm
2022-11-22 00:36:39 -05:00

432 lines
11 KiB
NASM

RenderCharSetColorExtended_init:
stz.b Scrap0C
jsl $00d84e
rtl
RenderCharSetColorExtended_close:
stz.b Scrap0C
lda.w GameModeCache
sta.b GameMode
rtl
RenderCharSetColorExtended:
pha
and.b #$10
cmp.b #$10
beq .inverted
lda.b #$00
bra .end
.inverted
lda.b #$01
.end
sta.b Scrap0C
pla
and.b #$07 : asl : asl
rtl
RenderCharToMapExtended:
phx : tya : asl #2 : tax
lda.l FontProperties, x
and.w #$0001
bne .uncompressed
.compressed
plx
lda.w #$0000
sta.b Scrap00
lda.w #$007f
sta.b Scrap02
lda.w #$0000
clc : adc.w #$0020
sta.b Scrap03
lda.w #$007f
sta.b Scrap05
jml RenderCharToMapExtended_return
.uncompressed
lda.l FontProperties+$2, x
plx
clc : adc.w #(NewFont&$ffff)
sta.b Scrap00
clc : adc.w #$0100
pha
lda.w #(NewFont>>16)
sta.b Scrap02
pla : sta.b Scrap03
lda.w #(NewFont>>16)
sta.b Scrap05
jml RenderCharToMapExtended_return
RenderCharLookupWidthDraw:
rep #$30
phx : lda.b Scrap09 : and.w #$fffe : tax
lda.l FontProperties, x
bmi .thin
.wide
plx : sep #$30
lda.b Scrap09 : and.b #$03 : tay
lda.w $fd7c, y : tay
jml RenderCharLookupWidthDraw_return
.thin
xba : and.w #$004f : bne .vwf
plx : sep #$30
lda.b Scrap09 : and.b #$03 : phx : tax
lda.l RenderCharThinTable, x : tay : plx
jml RenderCharLookupWidthDraw_return
.vwf
and.w #$000f : tay
plx : sep #$30
lda.b Scrap09 : and.b #$03 : phx : tax
cpx.b #$00 : bne +
tya : bra ++
+ lda.l RenderCharThinTable, x
++ tay : plx : jml RenderCharLookupWidthDraw_return
RenderCharLookupWidth:
phx : lda.b Scrap09 : and.w #$fffe : tax
lda.l FontProperties, x
bmi .thin
.wide
plx : lda.w $fd7c, x : clc
rtl
.thin
xba : and.w #$004f : bne .vwf
plx : lda.l RenderCharThinTable, x : clc
rtl
.vwf
and.w #$000f
plx : cpx.w #$0000 : beq + : lda.l RenderCharThinTable, x
+ clc : rtl
RenderCharThinTable:
db $08, $00, $ff
RenderCharExtended:
pha
asl : asl : tax
lda.l FontProperties, x
and.w #$00ff
bne .renderUncompressed
.renderOriginal
pla : asl : tax : asl : adc.b Scrap0E
jml RenderCharExtended_returnOriginal
.renderUncompressed
pla : phb : pea.w NewFont>>8 : plb : plb
lda.l FontProperties+$2, x
tay
lda.b Scrap0C
bne .inverted
ldx.w #$0000
-
lda.w NewFont, y
sta.l $7EBFC0, x
lda.w NewFont+$100, y
sta.l $7EBFC0+$16, x
inx #02
iny #02
cpx.w #$0010
bne -
bra .end
.inverted
ldx.w #$0000
-
lda.w NewFontInverted, y
sta.l $7EBFC0, x
lda.w NewFontInverted+$100, y
sta.l $7EBFC0+$16, x
inx #02
iny #02
cpx.w #$0010
bne -
.end
plb
jml RenderCharExtended_returnUncompressed
; Table of font properties and tilemap offset
; Properties are these for now:
; tv--wwww -------u
; t = thin spacing (0 px instead of 3 px)
; u = uncompressed character loaded from offset
; v = use variable width rendering for this character (thin spacing must be set as well)
; w = character width for VWF rendering
FontProperties:
; props, offset
dw $0000, $0000 ; 00
dw $0000, $0000 ; 01
dw $0000, $0000 ; 02
dw $0000, $0000 ; 03
dw $0000, $0000 ; 04
dw $0000, $0000 ; 05
dw $0000, $0000 ; 06
dw $0000, $0000 ; 07
dw $0000, $0000 ; 08
dw $0000, $0000 ; 09
dw $0000, $0000 ; 0A
dw $0000, $0000 ; 0B
dw $0000, $0000 ; 0C
dw $0000, $0000 ; 0D
dw $0000, $0000 ; 0E
dw $0000, $0000 ; 0F
dw $0000, $0000 ; 10
dw $0000, $0000 ; 11
dw $0000, $0000 ; 12
dw $0000, $0000 ; 13
dw $0000, $0000 ; 14
dw $0000, $0000 ; 15
dw $0000, $0000 ; 16
dw $0000, $0000 ; 17
dw $0000, $0000 ; 18
dw $0000, $0000 ; 19
dw $0000, $0000 ; 1A
dw $0000, $0000 ; 1B
dw $0000, $0000 ; 1C
dw $0000, $0000 ; 1D
dw $0000, $0000 ; 1E
dw $0000, $0000 ; 1F
dw $0000, $0000 ; 20
dw $0000, $0000 ; 21
dw $0000, $0000 ; 22
dw $0000, $0000 ; 23
dw $0000, $0000 ; 24
dw $0000, $0000 ; 25
dw $0000, $0000 ; 26
dw $0000, $0000 ; 27
dw $0000, $0000 ; 28
dw $0000, $0000 ; 29
dw $0000, $0000 ; 2A
dw $0000, $0000 ; 2B
dw $0000, $0000 ; 2C
dw $0000, $0000 ; 2D
dw $0000, $0000 ; 2E
dw $0000, $0000 ; 2F
dw $8001, $0400 ; 30 ; a
dw $8001, $0410 ; 31
dw $8001, $0420 ; 32
dw $8001, $0430 ; 33
dw $8001, $0440 ; 34
dw $8001, $0450 ; 35
dw $8001, $0460 ; 36
dw $8001, $0470 ; 37
dw $8001, $0480 ; 38
dw $8001, $0490 ; 39
dw $8001, $04A0 ; 3A
dw $8001, $04B0 ; 3B
dw $8001, $04C0 ; 3C
dw $8001, $04D0 ; 3D
dw $8001, $04E0 ; 3E
dw $8001, $04F0 ; 3F
dw $8001, $0600 ; 40
dw $8001, $0610 ; 41
dw $8001, $0620 ; 42
dw $8001, $0630 ; 43
dw $8001, $0640 ; 44
dw $8001, $0650 ; 45
dw $8001, $0660 ; 46
dw $8001, $0670 ; 47
dw $8001, $0680 ; 48
dw $8001, $0690 ; 49 ; z
dw $8001, $06F0 ; 4A ; :
dw $8001, $0A90 ; 4B ; @ (thin)
dw $8001, $0AA0 ; 4C ; # (thin)
dw $0000, $0000 ; 4D
dw $0000, $0000 ; 4E
dw $8001, $0EF0 ; 4F ; <sp>
dw $0000, $0000 ; 50
dw $0000, $0000 ; 51
dw $0000, $0000 ; 52
dw $0000, $0000 ; 53
dw $0000, $0000 ; 54
dw $0000, $0000 ; 55
dw $0000, $0000 ; 56
dw $0000, $0000 ; 57
dw $0000, $0000 ; 58
dw $0000, $0000 ; 59
dw $0000, $0000 ; 5A
dw $0000, $0000 ; 5B
dw $0000, $0000 ; 5C
dw $0000, $0000 ; 5D
dw $0000, $0000 ; 5E
dw $0000, $0000 ; 5F
dw $0000, $0000 ; 60
dw $0000, $0000 ; 61
dw $0000, $0000 ; 62
dw $0000, $0000 ; 63
dw $0000, $0000 ; 64
dw $0000, $0000 ; 65
dw $0000, $0000 ; 66
dw $0000, $0000 ; 67
dw $0000, $0000 ; 68
dw $0000, $0000 ; 69
dw $0000, $0000 ; 6A
dw $0000, $0000 ; 6B
dw $0000, $0000 ; 6C
dw $0000, $0000 ; 6D
dw $0000, $0000 ; 6E
dw $0000, $0000 ; 6F
dw $0000, $0000 ; 70
dw $0000, $0000 ; 71
dw $0000, $0000 ; 72
dw $0000, $0000 ; 73
dw $0000, $0000 ; 74
dw $0000, $0000 ; 75
dw $0000, $0000 ; 76
dw $0000, $0000 ; 77
dw $0000, $0000 ; 78
dw $0000, $0000 ; 79
dw $0000, $0000 ; 7A
dw $0000, $0000 ; 7B
dw $0000, $0000 ; 7C
dw $0000, $0000 ; 7D
dw $0000, $0000 ; 7E
dw $0000, $0000 ; 7F
dw $0000, $0000 ; 80
dw $0000, $0000 ; 81
dw $0000, $0000 ; 82
dw $0000, $0000 ; 83
dw $0000, $0000 ; 84
dw $0000, $0000 ; 85
dw $0000, $0000 ; 86
dw $0000, $0000 ; 87
dw $0000, $0000 ; 88
dw $0000, $0000 ; 89
dw $0000, $0000 ; 8A
dw $0000, $0000 ; 8B
dw $0000, $0000 ; 8C
dw $0000, $0000 ; 8D
dw $0000, $0000 ; 8E
dw $0000, $0000 ; 8F
dw $0000, $0000 ; 90
dw $0000, $0000 ; 91
dw $0000, $0000 ; 92
dw $0000, $0000 ; 93
dw $0000, $0000 ; 94
dw $0000, $0000 ; 95
dw $0000, $0000 ; 96
dw $0000, $0000 ; 97
dw $0000, $0000 ; 98
dw $0000, $0000 ; 99
dw $0000, $0000 ; 9A
dw $0000, $0000 ; 9B
dw $0000, $0000 ; 9C
dw $0000, $0000 ; 9D
dw $0000, $0000 ; 9E
dw $0000, $0000 ; 9F
dw $8001, $0800 ; A0 ; 0
dw $8001, $0810 ; A1
dw $8001, $0820 ; A2
dw $8001, $0830 ; A3
dw $8001, $0840 ; A4
dw $8001, $0850 ; A5
dw $8001, $0860 ; A6
dw $8001, $0870 ; A7
dw $8001, $0880 ; A8
dw $8001, $0890 ; A9 ; 9
dw $8001, $0000 ; AA ; A
dw $8001, $0010 ; AB
dw $8001, $0020 ; AC
dw $8001, $0030 ; AD
dw $8001, $0040 ; AE
dw $8001, $0050 ; AF
dw $8001, $0060 ; B0
dw $8001, $0070 ; B1
dw $8001, $0080 ; B2
dw $8001, $0090 ; B3
dw $8001, $00A0 ; B4
dw $8001, $00B0 ; B5
dw $8001, $00C0 ; B6
dw $8001, $00D0 ; B7
dw $8001, $00E0 ; B8
dw $8001, $00F0 ; B9
dw $8001, $0200 ; BA
dw $8001, $0210 ; BB
dw $8001, $0220 ; BC
dw $8001, $0230 ; BD
dw $8001, $0240 ; BE
dw $8001, $0250 ; BF
dw $8001, $0260 ; C0
dw $8001, $0270 ; C1
dw $8001, $0280 ; C2
dw $8001, $0290 ; C3 ; Z
dw $8000, $0000 ; C4
dw $8000, $0000 ; C5
dw $8001, $06D0 ; C6 ; ?
dw $8001, $06C0 ; C7 ; !
dw $8001, $02D0 ; C8 ; ,
dw $8001, $02B0 ; C9 ; -
dw $8000, $0000 ; CA
dw $8000, $0000 ; CB
dw $8000, $02E0 ; CC ; ...
dw $8001, $02C0 ; CD ; .
dw $8001, $02F0 ; CE ; ~
dw $8000, $0000 ; CF
dw $0000, $0000 ; D0
dw $0000, $0000 ; D1
dw $8001, $06a0 ; D2 ; Link face left
dw $8001, $06b0 ; D3 ; Link face right
dw $0000, $0000 ; D4
dw $0000, $0000 ; D5
dw $0000, $0000 ; D6
dw $0000, $0000 ; D7
dw $8001, $06E0 ; D8 ; '
dw $0000, $0000 ; D9
dw $0000, $0000 ; DA
dw $0000, $0000 ; DB
dw $0000, $0000 ; DC
dw $0000, $0000 ; DD
dw $0000, $0000 ; DE
dw $0000, $0000 ; DF
dw $0000, $0000 ; E0
dw $0000, $0000 ; E1
dw $0000, $0000 ; E2
dw $0000, $0000 ; E3
dw $8001, $02A0 ; E4 ; Cursor |>
dw $0000, $0000 ; E5
dw $0000, $0000 ; E6
dw $0000, $0000 ; E7
dw $0000, $0000 ; E8
dw $0000, $0000 ; E9
dw $0000, $0000 ; EA
dw $0000, $0000 ; EB
dw $0000, $0000 ; EC
dw $0000, $0000 ; ED
dw $0000, $0000 ; EE
dw $0000, $0000 ; EF
dw $0000, $0000 ; F0
dw $0000, $0000 ; F1
dw $0000, $0000 ; F2
dw $0000, $0000 ; F3
dw $0000, $0000 ; F4
dw $0000, $0000 ; F5
dw $0000, $0000 ; F6
dw $0000, $0000 ; F7
dw $0000, $0000 ; F8
dw $0000, $0000 ; F9
dw $0000, $0000 ; FA
dw $0000, $0000 ; FB
dw $0000, $0000 ; FC
dw $0000, $0000 ; FD
dw $0000, $0000 ; FE
dw $8001, $0EF0 ; FF ; <sp>