C64Power Forum

Software => Programowanie => Wątek zaczęty przez: Perun w 02 Kwietnia 2024, 05:22

Tytuł: Zaimplementowanie czcionki polskiej znaki duże i małe do programu.
Wiadomość wysłana przez: Perun w 02 Kwietnia 2024, 05:22
Cześć. Jest tu ktoś kto zaimplementuje mi polski font z dużymi i małymi literami do programu za pieniążka? Tak przejrzyście abym wiedział następnym razem co i jak. Font musiałby też stworzyć, na bazie najlepiej jakiegoś podstawowego ściągniętego stąd: https://home-2002.code-cop.org/c64/font_02.html lub żeby mi go wyeksportował do obrazka, żebym potem mógł sam sobie go zmieniać, a miał gotowy przykład (czyli, że wchodzę do programu i rysuje sobie font, robie z niego DATA i wklejam na miejsce poprzedniego). Proszę podaj cenę.
Przepraszam jeżeli napisałem nie tutaj gdzie trzeba!
Tytuł: Odp: Zaimplementowanie czcionki polskiej znaki duże i małe do programu.
Wiadomość wysłana przez: Perun w 02 Kwietnia 2024, 08:08
Font już stworzylem, także tworzenie odpada. Cała reszta jak wyżej.
Tytuł: Odp: Zaimplementowanie czcionki polskiej znaki duże i małe do programu.
Wiadomość wysłana przez: Raf w 02 Kwietnia 2024, 15:47
lub żeby mi go wyeksportował do obrazka, żebym potem mógł sam sobie go zmieniać, a miał gotowy przykład (czyli, że wchodzę do programu i rysuje sobie font, robie z niego DATA i wklejam na miejsce poprzedniego). Proszę podaj cenę.
ale o co chodzi w ogole? sa programy, z polskimi znakami, wystarczy taki font zrzucic no i sa edytory np na pc takie jak cunei form...
Tytuł: Odp: Zaimplementowanie czcionki polskiej znaki duże i małe do programu.
Wiadomość wysłana przez: Perun w 02 Kwietnia 2024, 20:58
Napisałem sobie grę i chciałbym mieć w niej polskie znaki. Zrobiłem czcionkę i niby działa jako tako jak osobny program ale nie potrafię jej zaimplementować do gry. Jestem słaby z basica.
Tytuł: Odp: Zaimplementowanie czcionki polskiej znaki duże i małe do programu.
Wiadomość wysłana przez: Mikra_Lbn w 02 Kwietnia 2024, 22:01
W pierwszej kolejności musisz wybrać miejsce w pamięci, gdzie polskie znaki zamieścisz. Jeśli obszar $COOO-$CFFF (49152-53247) jest nieużywany przez grę, to może być dobre miejsce na znaki (zajmujące standardowo 2kB) i pamięć ekranu (1kB).
Wtedy trzeba się pobawić komórkami pamięci:

To brzmi skomplikowanie, ale da się ogarnąć po kilkukrotnym przeczytaniu opisów w mapie pamięci dla C64.
Tytuł: Odp: Zaimplementowanie czcionki polskiej znaki duże i małe do programu.
Wiadomość wysłana przez: Perun w 02 Kwietnia 2024, 22:21
Zrobiłem tak:
19 print "{clear}{down*12}              wszytywanie"
20 gosub 21 : goto 184
21 rem set characterset pointer to address 12288
22 poke 53272,(peek(53272)and240)+12
23 ch = 32 : gosub 48
24 for ch = 1 to 12 :  gosub 48 : next
25 for ch = 58 to 59 :  gosub 48 : next
26 ch = 61 : gosub 48
27 ch = 13 : gosub 48
28 ch = 44 : gosub 48
29 for ch = 46 to 47 :  gosub 48 : next
30 for ch = 14 to 16 :  gosub 48 : next
31 ch = 0 : gosub 48
32 ch = 42 : gosub 48
33 ch = 30 : gosub 48
34 for ch = 17 to 29 :  gosub 48 : next
35 for ch = 31 to 41 :  gosub 48 : next
36 ch = 43 : gosub 48
37 ch = 45 : gosub 48
38 for ch = 49 to 57 :  gosub 48 : next
39 ch = 48 : gosub 48
40 ch = 60 : gosub 48
41 for ch = 62 to 63 :  gosub 48 : next
42 for ch = 65 to 80 :  gosub 48 : next
43 ch = 64 : gosub 48
44 for ch = 81 to 126 :  gosub 48 : next
45 return
46 rem ...............................
47 rem load specific custom character
48 rem ...............................
49 for byte = 0 to 7
50 read cd
51 poke 12288+(8*ch)+byte,cd
52 next byte
53 return
54 data 0,0,0,0,0,0,0,0 :                  rem character 32 -<PUSTE POLE>
55 data 0,0,60,6,62,102,62,0 :             rem character 01 -a
...


I to mi działa. Problem mam z zaimplementowaniem tego do gry.
Tytuł: Odp: Zaimplementowanie czcionki polskiej znaki duże i małe do programu.
Wiadomość wysłana przez: Mikra_Lbn w 03 Kwietnia 2024, 21:16
Program, który zamieściłeś, jest mało czytelny (dużo skoków GOSUB) i dodatkowo zamieszcza znaki w miejscu pamięci, które może być potrzebne dla programu. Może się zdarzyć, że włączenie tej procedury nadpisze grę kształtami znaków. Jeśli piszesz grę w BASIC-u, to bezpieczniej będzie zamieścić znaki w miejscu normalnie niedostępnym dla interpretera tego języka, np. od $C000 do $C7FF a pamięć ekranu przenieść do adresu $C800 do $CBFF

Dołączam gotowy program ładujący plik z kształtami znaków i włączający ich wyświetlanie.
Tytuł: Odp: Zaimplementowanie czcionki polskiej znaki duże i małe do programu.
Wiadomość wysłana przez: Perun w 04 Kwietnia 2024, 13:40
Dzięki, popróbuję. A co do programu to działa ale nie mogę nawet zerknąć jak jest to tam zrobione bo wyświetla mi się tylko to: 27750 l{sh asterisk}<. Ja piszę w basicu ponieważ uczę się dopiero go.
Tytuł: Odp: Zaimplementowanie czcionki polskiej znaki duże i małe do programu.
Wiadomość wysłana przez: Perun w 04 Kwietnia 2024, 15:03
Program, który zamieściłeś, jest mało czytelny (dużo skoków GOSUB) i dodatkowo zamieszcza znaki w miejscu pamięci, które może być potrzebne dla programu. Może się zdarzyć, że włączenie tej procedury nadpisze grę kształtami znaków. Jeśli piszesz grę w BASIC-u, to bezpieczniej będzie zamieścić znaki w miejscu normalnie niedostępnym dla interpretera tego języka, np. od $C000 do $C7FF a pamięć ekranu przenieść do adresu $C800 do $CBFF

Dołączam gotowy program ładujący plik z kształtami znaków i włączający ich wyświetlanie.

Mam jeszcze pytanie. Da się tam też zrobić duże Polskie litery? Czy tylko małe? Jak tak to jak... No i chciałem zobaczyć jak to będzie wyglądać z moją grą tylko trochę dziwnie się wczytuje. Jak dodałem doczytanie automatyczne po wczytaniu fontu to wywala mi błąd. Jak wpisze LOAD ręcznie to nie wywala... lol

10 if a=0 then a=1: load "font",8,1
20 poke 56578,peek(56578) or 3
25 rem wybierz bank 3 vic-ii
26 rem $c000-$ffff
30 poke 56576,peek(56576) and 252
31 rem wybierz pierwsze 2kb dla znakow
32 rem liczac od poczatku banku $c000
33 rem oraz przydziel pamiec ekranowa
34 rem dla adresu $c800
35 rem bity xxxx0000 ustalaja adres
36 rem pod ktorym znajduja sie znaki
37 rem bity 0010xxxx ustalaja adres
38 rem pod ktorym znajduje sie
39 rem pamiec ekranowa
40 poke 53272,32
45 rem ustaw miejsce wpisywania znakow
46 rem na $c800 (256*200)
50 poke 648,200
60 print "{clear}"
70 print "{down*11}{right*14}Wczytuje gr{cm e}"
80 load "czystka",8,1
90 print "{clear}"
Tytuł: Odp: Zaimplementowanie czcionki polskiej znaki duże i małe do programu.
Wiadomość wysłana przez: Perun w 04 Kwietnia 2024, 15:06
A tak na marginesie tutaj jest mój font w .bmp :)
https://megawrzuta.pl/download/215dca80876e57ae8f201cb62007dcd3.html
Tytuł: Odp: Zaimplementowanie czcionki polskiej znaki duże i małe do programu.
Wiadomość wysłana przez: Mikra_Lbn w 04 Kwietnia 2024, 21:44
Możesz mieć i duże, i małe litery polskiego alfabetu, pozostaje tylko kwestia zaprojektowania i odpowiedniego ich umieszczenia w pamięci.

Jeśli jesteś początkującym programistą, to nie stosuj polecenia LOAD w kodzie programu, żeby załadować inny program napisany w BASIC-u. Lepiej dopisz procedurę ładowania i wyświetlania znaków na początku swojej gry.
Tytuł: Odp: Zaimplementowanie czcionki polskiej znaki duże i małe do programu.
Wiadomość wysłana przez: Perun w 04 Kwietnia 2024, 22:00
A jak zrobić np. ten plik "ZNAKI", który jest od ciebie? Bo jak rozumiem tam jest font? To co mi dałaś jest wystarczające, nawet i ten font by mógł być tylko brakuje mi tych dużych polskich liter i np. kulki, szachownicy, oraz 4 rogów ramki (tych znaków z klawiatury jak poodwracane L). Gdybyś była uprzejma wytł€maczyć mi jak zrobić ten plik drugi to byłbym dozgonnie wdzięczny lub gdybyś mogła go zrobić z tego fontu co wkleiłem w BMP do tego programiku od ciebie to było by cudownie. Jeżeli chcesz to zapłacę ci za to. Szlak mnie po prostu trafia z tym :(
Tytuł: Odp: Zaimplementowanie czcionki polskiej znaki duże i małe do programu.
Wiadomość wysłana przez: Mikra_Lbn w 04 Kwietnia 2024, 22:34
Zacznę od sprostowania - jestem mężczyzną, nie kobietą. ;) Pieniędzy za pomoc nie oczekuję. ;D

Prosty edytor znaków jest dostępny w kartridżu Final Cartidge III. Uruchom przygotowany przeze mnie programik, potem wciśnij klawisz F2, aby wejść do monitora języka maszynowego.

Wpisz polecenie [bfff (wraz z kwadratowym nawiasem) a następnie wciśnij klawisz F5. Wciskając klawisze F3 i F5 będziesz mógł przeglądać i modyfikować znaki. Gwiazdka * oznacza pole wyświetlone a kropka . - pole puste (tło). Pamiętaj, aby każdą zmianę w poszczególnych liniach zatwierdzać klawiszem RETURN.

Gdy chcesz zapisać zmiany na dyskietce, wpisz S"nazwa pliku",08,c000,c800. Niestety po zapisie znaki przestaną się właściwie wyświetlać, dlatego "w ciemno" trzeba wpisać polecenie X, aby wyjść z monitora języka maszynowego, a potem znowu w ciemno wpisać POKE 56576,252.
Tytuł: Odp: Zaimplementowanie czcionki polskiej znaki duże i małe do programu.
Wiadomość wysłana przez: Perun w 04 Kwietnia 2024, 23:41
Przepraszam, nie wiem gdzie ja MIRKA przeczytałem ;D
A jakiś inny sposób? Mam tylko w tej chwili na tym mieszkaniu THEC64, a 400 kilosów stąd oryginalne :) Mam co prawda Finala na THEC64 ale nie mogę zrobić nic z tego co napisałeś. Może coś pod PC jest takiego czym można jakoś ten plik edytować? Jeżeli się uda to zrobić to byłbym przeszczęśliwy bo tylko tego brakuje mi do szczęścia :P A może jest jakiś program, któym by można ten plik edytować na commodore do fontów?
Tytuł: Odp: Zaimplementowanie czcionki polskiej znaki duże i małe do programu.
Wiadomość wysłana przez: Perun w 05 Kwietnia 2024, 02:53
Przepraszam, nie wiem gdzie ja MIRKA przeczytałem ;D
A jakiś inny sposób? Mam tylko w tej chwili na tym mieszkaniu THEC64, a 400 kilosów stąd oryginalne :) Mam co prawda Finala na THEC64 ale nie mogę zrobić nic z tego co napisałeś. Może coś pod PC jest takiego czym można jakoś ten plik edytować? Jeżeli się uda to zrobić to byłbym przeszczęśliwy bo tylko tego brakuje mi do szczęścia :P A może jest jakiś program, któym by można ten plik edytować na commodore do fontów?
Użyłem programu 1x1_char_editor.
Twój plik znaki.prg mi wczytało.
Edytowałem font.
Zapisałem go jako .prg.
Użyłem twojego pliku "program" do uruchomienia go - podmieniłem twój plik "znaki" na mój.
Font się wczytał ale z innym kolorem ramki, oraz niechce teraz wczytywać mi gry na nim. Czy ja muszę grzebać jeszcze w pliku "program"? Czy nie?
Mógłbyś zerknąć czy ten plik jest ok? Lub wczytać i zapisać go u siebie? FONT i ZNAKI to ten sam plik, tylko kopia jeden jest. W załączniku. Dziękuję.
Tytuł: Odp: Zaimplementowanie czcionki polskiej znaki duże i małe do programu.
Wiadomość wysłana przez: Perun w 05 Kwietnia 2024, 12:27
Zacznę od sprostowania - jestem mężczyzną, nie kobietą. ;) Pieniędzy za pomoc nie oczekuję. ;D

Prosty edytor znaków jest dostępny w kartridżu Final Cartidge III. Uruchom przygotowany przeze mnie programik, potem wciśnij klawisz F2, aby wejść do monitora języka maszynowego.

Wpisz polecenie [bfff (wraz z kwadratowym nawiasem) a następnie wciśnij klawisz F5. Wciskając klawisze F3 i F5 będziesz mógł przeglądać i modyfikować znaki. Gwiazdka * oznacza pole wyświetlone a kropka . - pole puste (tło). Pamiętaj, aby każdą zmianę w poszczególnych liniach zatwierdzać klawiszem RETURN.

Gdy chcesz zapisać zmiany na dyskietce, wpisz S"nazwa pliku",08,c000,c800. Niestety po zapisie znaki przestaną się właściwie wyświetlać, dlatego "w ciemno" trzeba wpisać polecenie X, aby wyjść z monitora języka maszynowego, a potem znowu w ciemno wpisać POKE 56576,252.

Przepraszam za zamieszanie. Tutaj jest już cały gotowy z mirrorami włącznie. Odpal go jak możesz i zobacz. Niby działa ale wygląda to inaczej niż od ciebie jak się włączało no i nie mogę gry uruchomić na tym. Font nazywa się "FONT" i jest w 100% zrobiony. To gdybyś mógł go wczytać i zapisać u siebie i zobaczyć czy wtedy będzie działał poprawnie to byłbym wdzięczny. Może program go zapisuje nie tak. Jest też tam na dyskietce. Zapisałem character set też tam na niej. No i jest ten Twój program nazwany "BOOT". Dziękuję.
Tytuł: Odp: Zaimplementowanie czcionki polskiej znaki duże i małe do programu.
Wiadomość wysłana przez: Mikra_Lbn w 05 Kwietnia 2024, 21:37
Wygląda na to, że program 1x1_char_editor tworzy plik wykonywalny, ale trudno go połączyć z programem w BASIC-u. Wyciągnąłem polskie znaki przygotowane przez Ciebie i teraz ładują się tak, jak powinny.
Tytuł: Odp: Zaimplementowanie czcionki polskiej znaki duże i małe do programu.
Wiadomość wysłana przez: Perun w 06 Kwietnia 2024, 00:14
No właśnie do takiego samego wniosku doszedłem. Dziękuję Ci bardzo! A jak to zrobiłeś i czym?
Tytuł: Odp: Zaimplementowanie czcionki polskiej znaki duże i małe do programu.
Wiadomość wysłana przez: Perun w 06 Kwietnia 2024, 00:33
Ojej :( Wyciągłeś z tego wcześniejszgo posta. Kurcze :( Wysłałem pod nim drugi z poprawką. No ale nic. Nie będę cię męczył. A chodziło mi o ten, który teraz tutaj wklejam. Dziękuję Ci bardzo za pomoc! Jesteś nieoceniony. Oby ci się szczęściło w życiu :)
Tytuł: Odp: Zaimplementowanie czcionki polskiej znaki duże i małe do programu.
Wiadomość wysłana przez: Mikra_Lbn w 06 Kwietnia 2024, 09:57
Uruchomiłem program utworzony przez edytor znaków, potem zresetowałem komputer (bez czyszczenia pamięci), następnie klawiszem F2 wszedłem do monitora języka maszynowego w Final Cartridge III, wpisałem polecenie zapisu pliku:
.s"font",08,c000,c8000
W ten sposób zapisuję na dysku część pamięci mieszczącej się między adresami $c000 a $c7ff, czyli miejsce, w którym umieszczone są znaki.
Tytuł: Odp: Zaimplementowanie czcionki polskiej znaki duże i małe do programu.
Wiadomość wysłana przez: Perun w 06 Kwietnia 2024, 10:11
Rozumiem! Dziękuję ci bardzo za całą pomoc. Teraz idę rozwiązywać drugi z problemów. Czyli Czipmusic. Chciałem zrobić sobie Hymn Polski lub Rotę. Tylko te dwa problemy miałem :) Jeden rozwiązałeś.

A tak na marginesie. Jak na THEC64 używam obrazu kartridża to po wyjściu z niego do basica (bo rozumiem, że tak trzeba zrobić?) i wczytaniu fontu (twojego programu), zawiesza mi się. A te funkcje jak F2, o których pisałęś wcześniej nie działają mi. Może ja to w złym miejscu robię? Wrzucisz parę screenów gdzie mam "klikać"? Po uruchomieniu tego kartridża wchodzi mi do takiego graficznego menu.
Tytuł: Odp: Zaimplementowanie czcionki polskiej znaki duże i małe do programu.
Wiadomość wysłana przez: Mikra_Lbn w 06 Kwietnia 2024, 10:48
Ja też nie wykonuję tych operacji na prawdziwym Commodore 64, tylko na emulatorze VICE x64. ;)

Który program się zawiesza? Ten, co jest na dyskietce zmodyfikowanej dzisiaj? Czy może wcześniejszy?
Tytuł: Odp: Zaimplementowanie czcionki polskiej znaki duże i małe do programu.
Wiadomość wysłana przez: Perun w 06 Kwietnia 2024, 17:36
Każdy. Ale to pod tym Kartridżem co mi tłumaczyłeś wtedy i teraz jak edytować i jak zapisywać.
Tytuł: Odp: Zaimplementowanie czcionki polskiej znaki duże i małe do programu.
Wiadomość wysłana przez: Perun w 06 Kwietnia 2024, 18:45
Każdy. Ale to pod tym Kartridżem co mi tłumaczyłeś wtedy i teraz jak edytować i jak zapisywać.

A dziwną rzeczą jest to, że pod 20 programami próbowałem ten font edytować i zapisywać. I niechciał działać żaden z nich. Szlaczki dziwne się robiły nawet ja kgo wczytało. Dlatego chciałbym się nauczyć Twojej metody :)
Tytuł: Odp: Zaimplementowanie czcionki polskiej znaki duże i małe do programu.
Wiadomość wysłana przez: Mikra_Lbn w 07 Kwietnia 2024, 09:49
Spróbuję nagrać filmik, jak wygląda tworzenie i zapisywanie znaków. Postaram się to zrobić w ciągu kilku dni, jeśli tylko czas na to pozwoli.
Tytuł: Odp: Zaimplementowanie czcionki polskiej znaki duże i małe do programu.
Wiadomość wysłana przez: Perun w 07 Kwietnia 2024, 10:28
Dziękuję :) A jest możliwość wczytywania np. paru fontów jednocześnie? Lub jeden po drugim i jak to wtedy wygląda? Np. wczytuje font z początkiem gry potem, w tym samym pliku ide dalej np. po pałzie, czy naciśnięciu space. Wczytuje wtedy nowy font i resztę gry? Muszę jakoś czyścić pamięć podczas takiego procesu? Czy raczej plik z fontem i początkiem, a z niego drugi plik z drugim fontem i resztą gry? Da się przy okazji obrazek w basicu wstawić? Jeszcze do tego nie doszedłem hahaha... nie wiem jaka komenda na to i w jakim formacie ma być obrazek... Ogólnie mam problem z tym, żeby np. jednocześnie migał mi obrazek i odtwarzało muzykę. Jak gra muzyka to nie miga, a miga po muzyce ha! Tragedia... ale się nauczę! No i jeszcze zrobiłem tabele wyników ale nie wiem jak to zrobić żeby zapisywało ją na końcu gry i wczytywało na początku. zwykłe save, load pliku? I jakieś przypisanie do zmiennych? A taki mam kod na wyniki:
28 HI$(1)="PER":HI(1)=9000:HI$(2)="PER":HI(2)=7000:HI$(3)="PER":HI(3)=5000
29 HI$(4)="PER":HI(4)=3000:HI$(5)="PER":HI(5)=1000
A tu moja gra tylko, że starsza wersja bo jestem na drugim mieszkaniu i taką kopię mam tu tylko. No bo chciałbym tak zrobić, żeby na monitorze na początku był inny font, a potem inny.
Tytuł: Odp: Zaimplementowanie czcionki polskiej znaki duże i małe do programu.
Wiadomość wysłana przez: Mikra_Lbn w 08 Kwietnia 2024, 15:47
Można wczytać wiele fontów i są dwie metody:
10 ON a GOTO 30, 60
15 a = 1
20 LOAD "font1",8,1
30 PRINT "To jest font 1"
35 GET a$ : IF a$ = "" tHEN GOTO 35
40 PRINT CHR$(147)
45 a = 2
50 LOAD "font2",8,1
60 PRINT "To jest font 2"

Tym przypadku wykonanie polecenia LOAD powoduje wczytanie znaków i cofnięcie wykonywania programu do pierwszej linii (nr 10)

Załadowanie obrazka z poziomu BASIC-a jest możliwe, odtwarzanie muzyki jednokanałowej też, ale odtwarzanie trzykanałowej muzyki w tle to zadanie dla programu w języku maszynowym.

Do zapisywania wyników z gry możesz wykorzystać pliki sekwencyjne (SEQ). Poczytaj o poleceniach OPEN i CLOSE oraz PRINT# i INPUT#.