Displaying text: Difference between revisions

From NeoGeo Development Wiki
Jump to navigation Jump to search
(Created page with "Displaying text with a 8x8 pixel font: <pre> ;Displays text pointed by A0 at the VRAM address in D1. $FF:Next line, $00:End of text. ;Uses A0, D0 and REG_VRAMMOD Write8Text: …")
 
mNo edit summary
Line 1: Line 1:
Displaying text with a 8x8 pixel font:
ASM routine for displaying text with a 8x8 pixel font on the [[fix layer]]:


<pre>
<pre>
Line 25: Line 25:
</pre>
</pre>


"ASCIISTART" should be the fix tile number corresponding to ASCII value 0. This depends on what tileset you are using. The onboard tilesets have a full 8x8 font starting at tile #0.
"ASCIISTART" should be the fix tile number corresponding to ASCII value 0. This depends on what tileset you are using. Usually, onboard fix tilesets have a full 8x8 font starting at tile #0.


 
The VRAM address is calculated from the desired text position: D1=#FIXMAP+(Y+2+((X+1)*32))<br>
The VRAM address is calculated from the wanted text position: D1=#FIXMAP+(Y+2+((X+1)*32)),d1<br>
[[ASM Defines|"FIXMAP"]] being #$7000.
[[ASM Defines|"FIXMAP"]] being #$7000.


[[Category:HowTo]]
[[Category:HowTo]]
[[Category:Code]]
[[Category:Code]]

Revision as of 08:07, 21 February 2011

ASM routine for displaying text with a 8x8 pixel font on the fix layer:

;Displays text pointed by A0 at the VRAM address in D1. $FF:Next line, $00:End of text.
;Uses A0, D0 and REG_VRAMMOD
Write8Text:
    move.w  d1,VRAM_ADDR
    move.w  #$20,VRAM_MOD
    clr.w   d0
textmaplp:
    move.b  (a0)+,d0
    tst.b   d0
    beq     textmapend
    cmp.b   #$FF,d0
    bne     nolinejump
    addq.w  #1,d1
    move.w  d1,VRAM_ADDR
    bra     textmaplp
nolinejump:
    addq.w  ASCIISTART,d0
    move.w  d0,VRAM_RW
    bra     textmaplp
textmapend:
    rts

"ASCIISTART" should be the fix tile number corresponding to ASCII value 0. This depends on what tileset you are using. Usually, onboard fix tilesets have a full 8x8 font starting at tile #0.

The VRAM address is calculated from the desired text position: D1=#FIXMAP+(Y+2+((X+1)*32))
"FIXMAP" being #$7000.