Welcome, Guest. Please login or register.


Author Topic: Karakterek (Read 20590 times)

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 10095
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Karakterek
« on: 2017.December.03. 21:41:10 »
Kicsit furán van megoldva eredetileg, hogy a nagybetűk (és talán a számok, más írásjelek is) a karakterrács legfelső sorában kezdődnek, alul pedig két sor kimarad. Néha (pl. bizonyos videólapoknál) jobban mutatna, ha középen lennének a betűk, például itt:
[ Guests cannot view attachments ]
Talán ezért is van külön HSoft karakterkészlet.
Azt hogyan lehetne spoke utasításokkal megoldani, hogy azt a "néhány" karaktert, ami fel van csúszva, de lehetne középen is, lejjebb rakja? (Talán a kisbetűket is lejjebb kéne rakni velük együtt, de nem biztos, mert talán úgy sem néznének ki rosszul.) Persze legegyszerűbb betölteni egy másik karakterkészletet. De annak pl. basic programoknál külön fájlban kell lennie.
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Karakterek
« Reply #1 on: 2017.December.03. 23:19:16 »
Kicsit furán van megoldva eredetileg, hogy a nagybetűk (és talán a számok, más írásjelek is) a karakterrács legfelső sorában kezdődnek, alul pedig két sor kimarad.

Az alsó sorokban az üres helyre a kisbetűk miatt van szükség, például a 'g', 'y', és hasonló karaktereknél.

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 10095
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Karakterek
« Reply #2 on: 2018.August.26. 20:14:49 »
Valahol az ep128.hu-n láttam egyszer különböző karakterkészleteket, de most nem találom. Van valahol betölthető rendes, magyar ékezetes karakterkészlet?
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline Lacika

  • EP addict
  • *
  • Posts: 3213
  • Country: hu
    • http://www.ep128.hu
Re: Karakterek
« Reply #3 on: 2018.August.26. 22:36:41 »
Valahol az ep128.hu-n láttam egyszer különböző karakterkészleteket, de most nem találom.

A karaktertervező programodnál vannak a BASIC programcsokorban. :ds_icon_cheesygrin:

Offline endi

  • EP addict
  • *
  • Posts: 7298
  • Country: hu
  • grafikus, játékfejlesztõ, programozás, scifi, tudományok, vallás
    • Honlapom
Vigyázat! Szektás vagyok! :)

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 10095
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Karakterek
« Reply #5 on: 2018.December.23. 22:14:55 »
Endi, egyszer tettél fel saját tervezésű grafikus karakterkészletet (számok és nagybetűk). (Ahol 4 oszlopban kellett megoldani a karaktereket.) A Cybernoid 2 CPC-s verziójában szerintem ilyen karakterek vannak (snapshot mellékelve).
[ Guests cannot view attachments ]

UI: Most nézem, az Operation Alexandra is ilyen.
« Last Edit: 2018.December.23. 22:42:31 by szipucsu »
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 10095
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Karakterek
« Reply #6 on: 2022.February.25. 00:16:32 »
EP 64-en máshol kezdődik a karakterkészlet a memóriában, mint EP 128-on. Elvileg ezzel a programmal lehet belőni a karaktermátrix elejét:

 9900 LET LPB_ADD=SPEEK(255,16372)+((SPEEK(255,16373)-128)*256)
 9910 LET CHAR_TAB=16384-(256-SPEEK(255,LPB_ADD+6))*128

A CHAR_TAB fogja jelezni a karakterkészlet első karakterének a felső sorát.

Ha ki akarjuk menteni a karakterkészletet, akkor azt így lehet:

 9920 OPEN #106:"FILE.CHR" ACCESS OUTPUT
 9930 FOR X=CHAR_TAB TO CHAR_TAB+128*9
 9940   PRINT #106:CHR$(SPEEK(255,X));
 9950 NEXT
 9960 CLOSE #106

A 9930-as sor vége felé azért van 128, mert összesen 128 karakter van, és azért kell megszorozni 9-cel, mert minden karakter 9 pixelsorból áll.

Az lenne a cél, hogy a nagybetűk képét átmásoljuk az ALT-tal elérhető karakterekére. Az első nagybetűnek, az A-nak a kódja 65 a basicben, de mivel a legelső karakteré nem 1, hanem 32, így lehet, hogy a 65-ből ki kell vonni a 32-t. Az ALT+a kódja 129, de lehet, hogy ebből is ki kell vonni 32-t.
A karakterek képének átmásolásához a 129-es kódú karakter első sorától kezdődően be kell spoke-olni azokat az értékeket, amiket a 65-ös kódú karaktertől kezdve speek-kel olvashatunk ki.
Ha minden igaz, egy adott karakter pixelsorai nem egy kupacban vannak, hanem a felső pixelsora az összes karakternek van egy kupacban, utána jön a második sor, stb. Így még meg kell fejteni, mennyi az az érték, amit hozzá kell adnunk egy sor kiolvasása után a címhez. (Ha pl. CHAR_TAB lesz az első karakter első sora, akkor CHAR_TAB+mennyi lesz a második sora?)

Egyelőre eddig jutottam elméletben. Eddig van benne hiba?  Ezek alapján majd megpróbálom megcsinálni a dot collectoros karakterátmásolós programot.
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline geco

  • EP addict
  • *
  • Posts: 7219
  • Country: hu
    • Támogató Támogató
Re: Karakterek
« Reply #7 on: 2022.February.25. 08:11:01 »
Jónak tűnik, a CHAR_TAB 2. sora az a CHAR_TAB 1. sora + 128 byte.

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 10095
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Karakterek
« Reply #8 on: 2022.February.25. 10:44:07 »
a CHAR_TAB 2. sora az a CHAR_TAB 1. sora + 128 byte.
Hát persze, mennyi is lehetne, valahogy belebotlottam párszor már a 128-as számba EP-n...

Kicsit cseles, mert az első karakter a mátrixban (nem a filmben) nem a szóköz, pedig a kódtáblázatban ez az első. A bekarikázott C betű az első, innen a basic kódtáblázat szerint halad sorban, majd mikor a végére ér, akkor jön a szóköz, és onnan megy tovább szépen.

Az előzőek alapján egy adott karakter átdefiniálása direkte a memóriában:

SPOKE 255,CHAR_TAB+x+(128*y),z

x értéke attól függ, melyik karaktert akarjuk piszkálni (0 a bekarikázott C betű, 32 a szóköz, 65 a nagy A betű, 1 az alt+a;
y értéke attól függ, az adott karakter melyik sora a soros (0 az első sor, 8 a legalsó);
z értéke attól függ, mit akarok az adott karakter adott sorába tenni (0 semmi nincs, 255 minden van).

De SPEEK-kel le is kérdezhető adott karakter adott sora. Innen már magától értetődő a megoldás, a valamivel nagyobb mátrixkódú karakterek pixelsorait oda kell spoke-olni a valamivel kisebb mátrixkódú karakterek soraira:

  160 FOR X=1 TO 26
  170   FOR Y=0 TO 8
  180     SPOKE 255,CHAR_TAB+X+(128*Y),SPEEK(255,CHAR_TAB+64+X+(128*Y))
  190   NEXT Y
  200 NEXT X

Az X azért megy 1-től 26-ig, mert 26 betű van az angol ábécében. Az altos és shiftes nagybetűk sorban jönnek egymás után, csak 64 bájttal odébb vannak.

Jó ez a spoke. Még jobb is, mint a set character, mert ha egy karakternek csak egyetlen sorát akarnánk megváltoztatni, a set characterrel nem lehetne.
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos