| |
jamiefuller Account closed
Registered: Mar 2018 Posts: 25 |
Generate better looking chars from ROM
Hi All,
I'm trying to create a font using the smallest amount of ram possible, It doesn't have to be the best font in the world but just something that looks at least a little different from the standard font.
This is the best I have come up with so far (71 bytes), it copies the font from ROM and "translates" parts of the font to make it look slightly different.
*=$0900
main
inc $DC0E
lda $01
and #$fb
sta $01
ldy #$01
@lp1 ldx #$00
@lp2 lda $d000,x
cmp #$76
bne *+4
lda #$7A
cmp #$60
bne *+4
lda #$70
cmp #$66
bne *+4
lda #$72
cmp #$6C
bne *+4
lda #$74
cmp #$6e
bne *+4
lda #$76
@lp3 sta $3000,x
inx
bne @lp2
inc @lp2+2
inc @lp3+2
dey
bpl @lp1
lda $01
ora #$04
sta $01
dec $DC0E
rts
Any suggestions for improving/reducing size? |
|
| |
Oswald
Registered: Apr 2002 Posts: 5086 |
lda $d000,x
cmp #$40
bcc +
ora #$10
+ sta $3000,x |
| |
Cruzer
Registered: Dec 2001 Posts: 1048 |
Looks a bit like, but better than the one I used in the end part of Incoherent Nightmare
The code was also much simpler. This fetched one char from ROM to a sprite:
ldx #$07
!:
load: lda $d008,x
sta tmp
asl
and #$f0
ora tmp
sta (txtDestPnt),y
dey
dey
dey
dex
bpl !-
|
| |
Repose
Registered: Oct 2010 Posts: 225 |
Funny, I was just thinking about this! I want to morph the ROM into a half-sized charset. I wonder if I could just pick 3 columns from it... |
| |
jamiefuller Account closed
Registered: Mar 2018 Posts: 25 |
Thank you Micropenis and Cruzer!
those are both great methods.
Both of the suggested methods are 24 bytes smaller than my original code.
I've tried all 3 and generated an example below of the font created, would love to hear a vote on peoples favourite? Top, Middle or bottom?
|
| |
Tao
Registered: Aug 2002 Posts: 115 |
Some of my TRIAD-intros (such as TRIAD "Tao intro 1") use a modified version of the ROM-font. |
| |
Freddie
Registered: Jan 2004 Posts: 71 |
Quote: Thank you Micropenis and Cruzer!
those are both great methods.
Both of the suggested methods are 24 bytes smaller than my original code.
I've tried all 3 and generated an example below of the font created, would love to hear a vote on peoples favourite? Top, Middle or bottom?
I vote for number 3, looks really good. |
| |
jamiefuller Account closed
Registered: Mar 2018 Posts: 25 |
I've made a small tweak to my code and have come up with this, using the smaller two generation routines even after re-writing and adding my tweak its still smaller than my original code (by 5 bytes)
|
| |
lft
Registered: Jul 2007 Posts: 369 |
Of the three examples in post #5, the top one is my favourite. Compare the M's in "COMMODORE" for instance.
Anyway, this should totally be a compo. |
| |
Compyx
Registered: Jan 2005 Posts: 631 |
Too bad about the 'small size' requirement. I'd just pixel a charset and then write a script generating "LDA $Dxxx: EOR #$xx: STA $2xxx" for every byte in the charset that's different.
Could even optimize it a bit, using multiple STA's for the same value.
Worst case scenario is 8 bytes of code for each byte of charset, plus 1 for RTS. |
| |
spider-j
Registered: Oct 2004 Posts: 498 |
Compyx: that is indeed an interesting approach. Especially as the code generation could be automated with a crossdev tool. |
... 10 posts hidden. Click here to view all posts.... |
Previous - 1 | 2 - Next |