Files
alttpr-baserom/textrenderer.asm
cassidoxa 788cceaab9 Continue labeling and documentation in ram.asm, main rando block
Deleted several unused modules and some commented code
Reorganized some routines to clean up modules
Moved some memory into mirrored WRAM
Refactored NMI hook aux routine
Removed old fake flipper fix
2022-11-16 21:38:28 -05:00

432 lines
10 KiB
NASM

RenderCharSetColorExtended_init:
stz.b Scrap0C
jsl $00d84e
rtl
RenderCharSetColorExtended_close:
stz.b Scrap0C
lda.w $010c
sta.b $10
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>