User-Defined Characters

If you have feature requests, this is the place to post them. Please note your idea may already be something we have already discussed and decided against, or something we are working on privately, and we cannot be held responsible for any similarities in such instance. Whilst we cannot respond to every suggestion, your idea will be read and responded to where possible. Thank you for your input!
Post Reply
John Chow Seymour
Posts: 143
Joined: Sun Jul 05, 2020 3:27 pm

User-Defined Characters

Post by John Chow Seymour »


I love PETSCII, and I know it's on the X16 because of its legacy and especially all the graphical characters it supplies to facilitate for character-based graphics.  However, it'd be a shame if, in our increasingly connected, international culture of the 21st century, we couldn't somehow get at least Scandinavian or Eastern European characters on the X16 (let alone anything non-Roman).

However, my 'feature request' is not for the dev team to make an extended character ROM.  Instead, I am suggesting that if the users can easily design their own characters somehow, then the user base will likely develop support for all sorts of languages, as needed, on its own.  Someone in the community with enough time and inclination might even tackle Korean or Japanese characters - and yes, that comes with major input issues, but it would be easier to begin to address those issues if the system already easily allowed for user-defined characters.

I'm not sure how that would be implemented, though.  I know on the C64, it's technically possible to copy the entire character ROM to RAM and then override whatever characters you need, but this is challenging and kind of hacky; it's not something the system is designed to allow you to do easily.  I've also read that on a Spectrum there is a much easier built-in way to make 'user characters', but I have no experience with this, and no knowledge of how it's implemented in the Spectrum architecture.  Maybe on the X16 it would be as simple as some built-in subroutines to allow this kind of thing more easily?

This would also have added advantages for people making games with character graphics.

Thanks for considering it.

User avatar
StephenHorn
Posts: 565
Joined: Tue Apr 28, 2020 12:00 am
Contact:

User-Defined Characters

Post by StephenHorn »


The team is way ahead of you, and the community is leading by a couple of steps, as well. ?

There are 3 character sets currently in the ROM, which can be switched with a kernal call. They get copied in VRAM, it's the only way the VERA can use them. This, of course, means you can modify them to your heart's content, or even replace them entirely. If you're using the default console settings, then the current character set is located at $0F800 in VRAM.

Actually, I just discussed this on a topic in the X16 Programming Support section. I'll quote the salient bit you might be interested in:


Quote




We know that the X16 uses the same tiles, in the same order, as the Commodore 64, so we can look up where, for example, X should be: At tile 24 (the first tile being 0). Since the tiles are 1bpp, 8 pixels wide, and 8 pixels tall, we can multiply this out and know that each tile is 8 bytes. Tile 24, then, starts at $0F800 + 8*24, or $0F8C0. Let's take a look with a little basic:



FORI=0TO7:PRINT VPEEK(0,$F8C0+I):NEXTI gives us:



102

102

60

24

60

102

102



In binary, this looks like:

%01100110

%01100110

%00111100

%00011000

%00111100

%01100110

%01100110



That looks like an X to me.



Meanwhile, on the community front, someone was working on a program that supported unicode text in a variety of European languages, at least, and I seem to recall they had enough success that it seems like Asian-region languages would be within reach. I don't know for sure how much magic they're bringing to bear, because I don't recall hearing any updates from them recently, but it was somewhere on the Facebook group at one point.

Developer for Box16, the other X16 emulator. (Box16 on GitHub)
I also accept pull requests for x16emu, the official X16 emulator. (x16-emulator on GitHub)
User avatar
Cyber
Posts: 482
Joined: Mon Apr 27, 2020 7:36 am

User-Defined Characters

Post by Cyber »



19 minutes ago, StephenHorn said:




Meanwhile, on the community front, someone was working on a program that supported unicode text in a variety of European languages



I think you are mentioning this: https://www.facebook.com/groups/CommanderX16/permalink/522380971846335/

User avatar
StephenHorn
Posts: 565
Joined: Tue Apr 28, 2020 12:00 am
Contact:

User-Defined Characters

Post by StephenHorn »



19 minutes ago, Cyber said:




Pretty sure that's the guy. Wonder if they're still working on it.

Developer for Box16, the other X16 emulator. (Box16 on GitHub)
I also accept pull requests for x16emu, the official X16 emulator. (x16-emulator on GitHub)
John Chow Seymour
Posts: 143
Joined: Sun Jul 05, 2020 3:27 pm

User-Defined Characters

Post by John Chow Seymour »


This is excellent news!  Thank you for taking the time to educate us about this.

BruceMcF
Posts: 1336
Joined: Fri Jul 03, 2020 4:27 am

User-Defined Characters

Post by BruceMcF »


I tell you, just having Latin-1 would be a relief.

I know that there wouldn't be room on Vera for Hanzi (I keep hearing that you need to know 3,000 characters to be able to read a Chinese newspaper comfortably, so I am about 2,975 to go) ... but with 16x16 character sets, drawing the characters that are on the screen from a pool on the SD card and buffered in High RAM seems like it could be in reach.

Post Reply