| |
lft
Registered: Jul 2007 Posts: 369 |
Event id #2678 : The 128b font compo
Welcome to the 128b font compo!
The goal is to create the most legible, stylish, and/or awesome font using an executable program no larger than 128 bytes. The assumption is that the ROM font will be used as a basis somehow, although this is not a formal requirement.
The deadline is end of April 8, 2018, in a time zone of your choice.
The compo is held at CSDb, and the result is determined by the weighted average rating (including non-public votes). The ratings will be sampled one week after the deadline, end of April 15, in a time zone of my choice.
Judges are asked to consider screen codes 00-3f only. This comprises the uppercase letters, digits, and punctuation. The rules do not mandate that reverse-video characters work, so it is all right if the cursor doesn't work properly.
I reserve the right to modify the rules if there is a good reason.
Technical requirements
Maximum file size including load address is 128 bytes.
The program must load to the default location ($801), and must be executable with RUN. The new font should be installed at address $3800, after which the program should return to the BASIC prompt, with the VIC bank register ($d018) updated to point to the new font.
The entry should be uploaded in .prg format.
A person may be creatively involved in at most two (2) compo entries. (Idea/test/help credits don't count towards the limit.) It's alright to withdraw an earlier entry in order to submit a new one, up to the deadline.
Template
The following template code is offered as a convenience, and may be used as a starting point. It simply copies the default ROM font.
.word $801
*=$801
.word $80b,1
.byt $9e,"2061",0,0,0
sei
lda #$33
sta 1
ldx #0
ldy #2
loop
src
lda $d000,x
; ...
dest
sta $3800,x
inx
bne loop
inc src+2
inc dest+2
dey
bne loop
lda #$37
sta 1
lda #$1e
sta $d018
cli
rts
Happy hacking! |
|
| |
Cruzer
Registered: Dec 2001 Posts: 1048 |
Yes! It's on! |
| |
Tao
Registered: Aug 2002 Posts: 115 |
"Judges are asked to consider screen codes 00-3f only. This comprises the uppercase letters, digits, and punctuation."
How about the non-letter, digit, punctuation bits of that code space, such as @, arrows, #, £[] (which cannot be relied on to behave the same way with all character roms), etc.? |
| |
lft
Registered: Jul 2007 Posts: 369 |
Good point. Let's say that @, #, £, [, ], and the up and left arrows should be ignored by judges.
Also let me add that the letters in the font can be uppercase, lowercase, or any combination. |
| |
Oswald
Registered: Apr 2002 Posts: 5086 |
multicolor?:) |
| |
lft
Registered: Jul 2007 Posts: 369 |
Yeah, why not! Multicolour is hereby allowed in the compo (such entries must set d016 properly). It may not be in the spirit of the original vision, but if somebody can pull it off in 128 bytes and get a charset that is good enough to earn decent ratings, then that would be awesome. |
| |
Oswald
Registered: Apr 2002 Posts: 5086 |
I was curious wether I can do edge detect, it fitted easily :)
Edge Detect |
| |
Cruzer
Registered: Dec 2001 Posts: 1048 |
Trying to do a 2x1 font. Will it be disqualified if it displays all the chars, but doesn't return to the basic prompt? |
| |
Jammer
Registered: Nov 2002 Posts: 1335 |
I've located new charset at $2000-$2fff. Does it disqualify me? :( |
| |
chatGPZ
Registered: Dec 2001 Posts: 11354 |
not only that, you will get banned alltogether! |
| |
Jammer
Registered: Nov 2002 Posts: 1335 |
Oh noes! /o\ |
| |
lft
Registered: Jul 2007 Posts: 369 |
Cruzer, Jammer: I'm afraid that would disqualify the entries. It wouldn't be fair towards those who make design sacrifices in order to stick to the rules.
Of course, you can still display your work as an out-of-compo release. |
| |
Cruzer
Registered: Dec 2001 Posts: 1048 |
I could easily exit to Basic if I didn't display the font, but since it's 2x1 characters, it would be hard to see what it was supposed to look like. But I guess I could compete with a version that exited and then include the other one in the zip file. |
| |
Oswald
Registered: Apr 2002 Posts: 5086 |
limiting the nr of releases is silly. |
| |
Jammer
Registered: Nov 2002 Posts: 1335 |
Quoting lftCruzer, Jammer: I'm afraid that would disqualify the entries. It wouldn't be fair towards those who make design sacrifices in order to stick to the rules.
Of course, you can still display your work as an out-of-compo release.
I see but what's the point in placing new charset exactly at specified $3800 and hence truncating lower case in target bank? I process entirely two charsets (you can still switch upper/lower case), fit easily within the routine size limit and return to BASIC prompt in proper manner. No idea what kind of design sacrifice you mean, compared to my solution - care to explain? Thanks! ;) |
| |
lft
Registered: Jul 2007 Posts: 369 |
Hmm! Ok Jammer, that's a reasonable point. From now on, any bank in the range 2000-3fff is allowed. This still disallows stack/zp trickery, while allowing entries to support both uppercase and lowercase. But judges can only be expected to look at the bank that is active when the program exits.
Oswald, I'm still thinking about this. It's easier for me to be overly restrictive at first, and then potentially remove the limit. The purpose of the limit is to keep the total number of releases down, to increase the probability that people actually look at all entries and rate them fairly.
What's everybody's opinion on this? |
| |
Scan
Registered: Dec 2015 Posts: 111 |
Using zp pointers to copy is disallowed? Darn, back to the drawing board... |
| |
lft
Registered: Jul 2007 Posts: 369 |
Of course you can use the zeropage! But you can't store the final font there. |
| |
Scan
Registered: Dec 2015 Posts: 111 |
Quote: Of course you can use the zeropage! But you can't store the final font there.
*phew* That's a relief :) |
| |
Jammer
Registered: Nov 2002 Posts: 1335 |
Quoting ScanUsing zp pointers to copy is disallowed? Darn, back to the drawing board...
I've used $fe/$ff to store and retrieve A/Y
Quoting lftOf course you can use the zeropage! But you can't store the final font there.
Phew! :D |
| |
TheRyk
Registered: Mar 2009 Posts: 2218 |
Already the snippets posted in the other fred were cool, making it a compo is a wonderful idea.
A lot of brilliant stuff so far, dudes! |
| |
Compyx
Registered: Jan 2005 Posts: 631 |
Is a syntax error allowed after running the program? Seems to save me one byte. |
| |
Scan
Registered: Dec 2015 Posts: 111 |
Quote: Is a syntax error allowed after running the program? Seems to save me one byte.
Nothing says it isn't, as long as it exits to BASIC. |
| |
Compyx
Registered: Jan 2005 Posts: 631 |
It does return to BASIC, just with a ?SYNTAX ERROR.
Edit: forget about it, screwing with the BASIC interpreter while trying to save one byte is a bit flaky. |
| |
Shadow Account closed
Registered: Apr 2002 Posts: 355 |
I think this compo turned out great, 128 bytes was a good choice of limit as it seems to allow all kinds on neat entries! 64 would have been too restrictive. |
| |
lft
Registered: Jul 2007 Posts: 369 |
Yes, I am quite happy with how the limit turned out. I was considering 96 bytes, but in hindsight that would have been too tight.
As it is now, many entrants spend some instructions on fixing individual pixels here and there, and I think this can have a large impact on the overall quality (and coherence) of the font. |
| |
Carrion
Registered: Feb 2009 Posts: 317 |
I don't want to comment of each and every entry and all of them are just great.
Let me just say here in general: Great Job guys. I thought the limitations are too big for something interesting being produced in this compo but I was obviously wrong.
What about a 2x2 fonts based on 1x1 C64 charset? Cruzer showed that 2x1 is possible so I wonder what you can do in 2x2 area. |
| |
Mixer
Registered: Apr 2008 Posts: 447 |
And #$ef and some other basic logical operations seem to produce nice clear results, and the code size is tiny. Too lazy to submit. |
| |
Digger
Registered: Mar 2005 Posts: 427 |
@Carrion: Thinking of pixel smoothing? ;-) |
| |
Mixer
Registered: Apr 2008 Posts: 447 |
Sorry for bending the rules, but limitations just have to be conquered. Got more ideas than allowed, but perhaps those ideas are not within the spirit of the compo anymore. F.ex one could make an interactive font using some Basic hooks and zeropage registers, also a font that changes depending on where it is on the screen etc. |
| |
Oswald
Registered: Apr 2002 Posts: 5086 |
I think it could be argued that your entry doesnt return to basic prompt, but keeps running :)
but cool idea nevertheless |
| |
Mixer
Registered: Apr 2008 Posts: 447 |
@Oswald, indeed :) or, one could argue that the regular kernel irq just takes a bit longer than usual every time ;) |
| |
Cruzer
Registered: Dec 2001 Posts: 1048 |
Great compo so far. What a bunch of coders this brought out of the woodwork. :) |
| |
Stone
Registered: Oct 2006 Posts: 172 |
I haven't had so much fun with a compo ever. It's probably a good thing we're limited to 2 entries because I was fast becoming obsessed with this last night :)
@lft: Any reason in particular the address $3800 was chosen? |
| |
jamiefuller Account closed
Registered: Mar 2018 Posts: 25 |
I am loving this compo. I have further tweaked my code down to under 60 bytes. But I don't want to sacrifice either of my previous entries :) |
| |
lft
Registered: Jul 2007 Posts: 369 |
Stone: The reason for $3800 was to leave maximum size for basic programs or directory listings, that could be handy for trying out the font. But this constraint has been relaxed now (in post #16). |
| |
Stone
Registered: Oct 2006 Posts: 172 |
Quoting lftStone: The reason for $3800 was to leave maximum size for basic programs or directory listings, that could be handy for trying out the font. But this constraint has been relaxed now (in post #16). Ok, I thought perhaps you had planned it as some sort of optimizational easter egg :P I have seen at least 2 people have had the same idea regarding this address :) |
| |
Cruzer
Registered: Dec 2001 Posts: 1048 |
Quoting Digger@Carrion: Thinking of pixel smoothing? ;-) With a 2x2 font? In 128b? Impossible! |
| |
Mixer
Registered: Apr 2008 Posts: 447 |
Now that we are at 2x2 domain, or more than 8 bytes per char-domain, what about a dycp and rotator? Dycp seems is doable. I wonder if shear rotator can be fitted in 128b. |
| |
Oswald
Registered: Apr 2002 Posts: 5086 |
that should be another compo, a 256byte one and do whatever you want would be nice. |
| |
Shadow Account closed
Registered: Apr 2002 Posts: 355 |
Something I was thinking about that could also be a fun compo sometime in the future is to generate a sprite charset. Either you could use the ROM charset and blow it up and do some tweaks to soften the edges, or maybe generate something completely from scratch.
That would of course also need more code space to be able to get something worthwhile out of it, maybe 256 bytes would do it, but I'm not sure. |
| |
Luca
Registered: Apr 2002 Posts: 178 |
Who is <scener id="10780">? He came last night to vote some entries of the compo, but now ain't able to see his profile page... |
| |
Oswald
Registered: Apr 2002 Posts: 5086 |
anonymous downvote coward? we got you now!! :) |
| |
Bubis Account closed
Registered: Oct 2012 Posts: 10 |
Quote: Who is <scener id="10780">? He came last night to vote some entries of the compo, but now ain't able to see his profile page...
You are likely looking for
Aleksi Eeben |
| |
Jammer
Registered: Nov 2002 Posts: 1335 |
I guess Heatbeat values font design over coders' wet dreams :) |
| |
Rastah Bar Account closed
Registered: Oct 2012 Posts: 336 |
This compo was about font design, wasn't it?
So although it is a challenge to reduce the amount of bytes, this ideally should not influence the votes. In my opinion, if there are multiple entries with identical fonts, the first one submitted should end highest in the rankings. But we all know that the voting is subjective and should not be taken too seriously.
I like this compo a lot. It would be nice if graphicians would team up with coders to create even better fonts. Like some kind of mini demo compo :-) |
| |
lft
Registered: Jul 2007 Posts: 369 |
Yes, quoting the original post:
Quote:
The goal is to create the most legible, stylish, and/or awesome font using an executable program no larger than 128 bytes.
Right now I'm having a lot of fun pushing the size limit, but I don't expect these tiny entries to rank high. |
| |
Oswald
Registered: Apr 2002 Posts: 5086 |
graphician team up is not likely, most of this is like lets try this and that and see what comes out :) some of the later entries are combining earlier entries tech for making parts bold some other parts not so bold, etc. nice progression. |
| |
Luca
Registered: Apr 2002 Posts: 178 |
Quote: You are likely looking for
Aleksi Eeben
Ah I see, in facts the nick I was searching for was "aeeben", dunno why he used a cloned alias to cast some votes :) |
| |
Bubis Account closed
Registered: Oct 2012 Posts: 10 |
Please relax the rules to allow 2x2 entries as well. The first 64 character presented in any size should matter instead of the 00-3f screen codes IMHO.
Also, please forget about the two entries limit. If you really want a limit, maybe a minimal number of votes would make more sense, like 5. :) |
| |
aeeben
Registered: May 2002 Posts: 44 |
A little side step (outside compo) - 80x25 screen mode in 125 bytes :-)
80 Columns [125 bytes] |
| |
Oswald
Registered: Apr 2002 Posts: 5086 |
"screen mode" as in please write the rest of the routines yourself that didnt fit into 128 bytes. |
| |
aeeben
Registered: May 2002 Posts: 44 |
@Oswald haha, true. It would take at least another 128 bytes to fork CHROUT :)
Btw. In this one I combined upper and lower case characters ($d000/$d800) with a little offset and a few bytes fixed afterwards - Did anyone else try this approach yet? Yie Ar Kung-Font [113 bytes] |
| |
lft
Registered: Jul 2007 Posts: 369 |
Hi!
In light of recent, hmm, controversies regarding the CSDb weighted average formula, I've decided to move the voting for the 128b font compo to a different platform, where a straight average (arithmetic mean) will be used.
More details will be posted here soon after the compo deadline. The deadline is still end of April 8, 2018, in a time zone of your choice.
Please double-check that you have at most two entries in the compo (i.e. set any additional entries to "outside compo"). This will simplify my job. |
| |
aeeben
Registered: May 2002 Posts: 44 |
How about having two series / two scores given to each font: 1. aesthetic (design, only end result matters as long as it fits in 128b) and 2. codew*nk (for smallest record and code tricks, where smart code matters)? |
| |
Luca
Registered: Apr 2002 Posts: 178 |
Aleksi Eeben: I've ever thought that the perfect overlapping of the two would have been the real reason and the zero point for the concept itself of "demo" :o |
| |
Bubis Account closed
Registered: Oct 2012 Posts: 10 |
lft, we don't need to move the voting elsewhere. Average can be computed based on the voting stats. |
| |
Zirias
Registered: Jan 2014 Posts: 48 |
@Bubis sounds like an idea for a greasemonkey/tampermonkey script: calculate uniformly-weighted "compo-score" on csdb ;) |
| |
lft
Registered: Jul 2007 Posts: 369 |
The deadline is looming, and a native voting tool is in the works!
I have reviewed all entries, and most of them are fine. However, the following entries are disqualified for relying on additional setup code, not included in the 128 bytes:
* 4x4 font [128 bytes] by bubis
* Yet Another 2x2 Font by Monte Carlos
* Fieser font by fieserWolf
* 2x2 font by Camelot
* Gotcha 45° 2x2 [126 bytes] by bubis
"Multicolor Font" by Cruzer will be included in the voting tool, because it is reasonably legible at 1x1. But the special 2x1 combo chars will not be displayed (because the rules state that judges should consider screen codes 00-3f only).
4-Mat, you have 1 font in the compo and 2 outside. Is this correct?
Finally, I have decided to clarify/change the rules to disallow relying on a particular filename. This means that "Smallest We Can [30 bytes]" is out; sorry, Pex! My rationale is that this technique can be used to shrink many other compo entries down to exactly 30 bytes, and this would take away an important aspect of the competition. |
| |
lft
Registered: Jul 2007 Posts: 369 |
Also, I forgot: Bubis, you still have three entries in the compo after removing the disqualified ones. Either you or I will have to reduce that number. |
| |
Bubis Account closed
Registered: Oct 2012 Posts: 10 |
lft, what do you mean on additional set up code? There is a max 128 bytes version that generates the charset only and a *_show.prg version that shows the chars on the screen as well.
I will reduce the number of my entries in time.
Thanks! |
| |
lft
Registered: Jul 2007 Posts: 369 |
Excellent about the number of entries. Just checking!
As for the disqualified entries, consider Gotcha 45° 2x2. Since this is a 128 byte compo, I will only consider the version without the shower. When I run this file, I get the following:
That's not really legible, is it? If you absolutely insist, I can include this font in the voting tool, but it will be showcased using text in the regular screen codes, so it will look more or less like the above screenshot. |
| |
Bubis Account closed
Registered: Oct 2012 Posts: 10 |
Yepp, that looks "good". :) I was hoping that the rules would change. I will revoke that one. |
| |
TheRyk
Registered: Mar 2009 Posts: 2218 |
About the fonts without executable code:
Of course it might be hacking fun to solve that riddle by oneself, but as there's a felt bunch of such releases meanwhile, pleeease: If you don't provide version switching on the font because of size issues, I'd really appreciate if you provide one version really executing code and setting I/O registers in addition and/or AT LEAST explain in production notes what to do to activate font (and maybe a screenshot not for the sake of voting but to see how it is supposed to look when executed).
Cheers
A concerned font gourmet |
| |
Copyfault
Registered: Dec 2001 Posts: 475 |
I somehow got stuck with the filename approach (though I know it automatically renders every release based on this "outside compo"). The latest installment of this "series" *aehem* is Tinyrulebreaker! [29 bytes] which was uploaded just a couple of minutes ago.
Now I'd really love to have this connected to the incredible font compo, but...
As I can't think of any time zone that is still before deadline I kindly ask you, lft, as the organizer to admit it as an outside compo-release! |
| |
lft
Registered: Jul 2007 Posts: 369 |
Copyfault: Sure, it can be an out-of-compo release. |
| |
lft
Registered: Jul 2007 Posts: 369 |
Thanks for all the great entries in the 128b font compo! A total of fifty-five (!) fonts have passed the strict rules of admission, and are ready for our collective scrutiny and judgement.
It is time to vote, using the official vote tool: 128b Font Compo 2018 Vote Tool
Voting is open to every person in the C64 scene. You don't need a CSDb account.
You are asked to rate each entry from bad (1) to good (9). Self-votes are allowed, and expected to be 9. You may choose to give blank votes (-), that do not get included in the average.
The deadline for voting is end of 15 April 2018, in a time zone of my choice (so this might be end of 14 April in your time zone).
Once your voting duties are over, don't forget to also admire the entries that were deliberately released outside the compo, or were deemed by yours truly to be bending the rules too much. Extraordinary workmanship can be found among those too! |
| |
lft
Registered: Jul 2007 Posts: 369 |
Just a friendly reminder that the deadline for voting in the font compo is end of Sunday 15 April, in a time zone of my choice. This could be as early as end of Saturday 14 April in your time zone, if you happen to be in Honolulu.
So far, 29 people have voted. |
| |
Compyx
Registered: Jan 2005 Posts: 631 |
+1
Voted purely on looks. |
| |
ChristopherJam
Registered: Aug 2004 Posts: 1408 |
Done, fairly seat of the pants. I like the anonymity.
Apparently I only think I'm worth a 4 though, what's that all about? 😂 |
| |
lft
Registered: Jul 2007 Posts: 369 |
Congratulations Luca of Fantastic Italian Research Enterprise!
Winner: Rise & Shine, Mr. Charset! (128 bytes)
Here are the complete results of the 128b font compo:
The results in text format.
This event was announced on a whim, with very little forethought going into the ruleset. Sorry for all the rule updates! But on the whole, I think the compo turned out well, fun was had, and we saw several great releases. Perhaps some of them will appear in intros and size-limited demos in the future.
I'd like to give a special honorary mention to Jimini (Jamie Fuller) for starting this whole thing with his forum post, Generate better looking chars from ROM. Hacking the ROM font may have been done before, but turning it into a public discussion was a stroke of genius! |
| |
Shine
Registered: Jul 2012 Posts: 346 |
Congratulations to all of you! :D
My personal favorite is "Shaded" by Jammer. :) |
| |
jamiefuller Account closed
Registered: Mar 2018 Posts: 25 |
This was my first compo and I loved every minute of it! Thanks everyone and congrats all round! |
| |
Zirias
Registered: Jan 2014 Posts: 48 |
Congrats to all from me as well, there was a lot of cool stuff and it was definitely fun working on my own entries. I'm also happy to see that my personal favorite actually made first place :) Thanks for the interesting compo! |
| |
Icecube
Registered: Feb 2013 Posts: 1 |
I made 5th place?! Cool! Jammers Shaded was my personal favourite. |
| |
Mr.Ammo Account closed
Registered: Oct 2002 Posts: 228 |
I have a question:
The vote-tool let me vote for 55 entries. There are a total of 59 entries on CSDb. Is there a reason why hese 4 entries are not marked as outside compo and not in the vote-tool? |
| |
lft
Registered: Jul 2007 Posts: 369 |
Mr Ammo: See post #59 about disqualified entries. Also, Cliche exists in two versions, and I assumed that only the smaller one was intended for the compo.
I will do my best to update the database to reflect the actual compo, but some entries are locked. |
| |
Mr.Ammo Account closed
Registered: Oct 2002 Posts: 228 |
lft, thanks for your reply. That makes sense! |
| |
Jammer
Registered: Nov 2002 Posts: 1335 |
Congrats, Luca! :) That was hell of a compo. Brilliant idea! |
| |
Compyx
Registered: Jan 2005 Posts: 631 |
Only #16? Voting system must be broken :)
I liked this compo, didn't require a lot of time/effort (though some took it pretty far), and we got a lot of entries.
Good work lft! |
| |
Luca
Registered: Apr 2002 Posts: 178 |
Wow, I really won this great compo! :o
Thank you all, it has been both a privilege and a big fun to be part of this competition, where I've seen some very smart code tests indeed.
Well, I've been more lucky than smart, developing a casual intuition that fitted in 128 bytes at its first attempt. Briefly, my entry deals with 3 steps:
- hires chars' pixels are usually placed odd to leave left/right space, so ASL'em to make'em even looking for lowres;
- all the 01/10/11 pairs become 11;
- AND/ORA to pick the right coloured bytes from a 8 bytes table instead of using a register, strategically putting this table to $0810 (AND #$07 ORA #$10).
My prefer ones are: The Chars of Reflection [128 bytes] by Lft, Sheriff Font [123 bytes] by Aleksi Eeben, Gotcha 45° [117 bytes] by bubis. |