atarionline.pl MadPascal - modyfikacja znaków a texout - Forum Atarum

    Jeśli chcesz wziąć udział w dyskusjach na forum - zaloguj się. Jeżeli nie masz loginu - poproś o członkostwo.

    • :
    • :

    Vanilla 1.1.4 jest produktem Lussumo. Więcej informacji: Dokumentacja, Forum.

      • 1: CommentAuthorwojtas76
      • CommentTime9 Nov 2020 02:11 zmieniony
       
      Zmodyfikowałem sobie zestaw znaków (na przykładzie z mp/samples/games/wolves.pas) działający w gr0, czyli w skrócie:

      var
      topMem : word;
      CHBAS : byte absolute $2F4;
      RAMTOP : byte absolute $6A;
      _znak : array[0..6] of byte = (..)
      begin
      InitGraph(0);
      topMem := RAMTOP - 8;
      topMem := topMem * 256;
      CHBAS := topMem div 256;
      move(pointer(57344), pointer(topMem), 1023);
      move(_znak, pointer(topMem+103*8), sizeOf(_znak));
      end.


      ..ale już po zmianie na tryb graficzny gr8 (initgraph(8)) lub VBXE (SetGraphMode(4)) poprzez odpowiednio canvas.textout/texout wyświetlany jest standardowy znak z romu..Co robię nie tak..
      • 2: CommentAuthortebe
      • CommentTime9 Nov 2020 08:11 zmieniony
       
      zmień TCanvas.Create w Graphics.pas na
      procedure TCanvas.Create;
      var br: TBrushBitmap = ($ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff);
      begin

      base:=dpeek(88);

      move(pointer(peek(756) shl 8), fdata, 1024);

      brush.bitmap:=@br;

      TCanvas.FontInitialize;

      end;


      wykonaj Create po zmianie zestawu znaków
      • 3:
         
        CommentAuthorMq
      • CommentTime9 Nov 2020 13:11 zmieniony
       
      Pamiętam, że w Basicu było tak, że jak się zmieniało tryb graficzny, to zawsze trzeba było od nowa ustawić adres zestawu znaków. Może w Mad Pascalu po prostu też tak trzeba robić. Nie jest to kwestia OS-a? Nie wiem, bo ostatnio już na dzień dobry wyłączam OS, a z drugiej strony mam nawyk, że ustawiam font po zmianie trybu graficznego.
      • 4: CommentAuthorwojtas76
      • CommentTime9 Nov 2020 14:11
       
      Dzięki za odpowiedź narazie mam komp zajęty więc nie sprawdzę.. ok ale tak czy inaczej próbowałem zmienić fonty: gr0/zmiana/writeln('Ąą') działa, potem zmiana np gr8 font systemowy, ale też gr8/zmiana fontu no i też font systemowy.. z canvas nie wątpię że zadziała - skoro Tebe napisał :) ale pytanie co z VBXE.. bo canvas (chyba) vbxe nie dotyczy
      • 5: CommentAuthortebe
      • CommentTime9 Nov 2020 14:11
       
      z VBXE (S2) musisz zapewne zmienić fonty przed wywołaniem trybu VBXE
      • 6: CommentAuthorwojtas76
      • CommentTime9 Nov 2020 14:11
       
      ok czyli przed SetGraphMode(4)? No ale to robiłem...
      • 7: CommentAuthorwojtas76
      • CommentTime22 Nov 2020 21:11
       
      Trochę po przewie niestety.. W GR8 po zmianie znaków jest ok, ale niestety pojawiają się krzaki...
      Co do VBXE pomimo różnych prób zero efektu.. Można prosić o ponowne przyjrzenie się... ;) pozdrawiam
      • 8: CommentAuthortebe
      • CommentTime23 Nov 2020 02:11
       
      krzaki? może obszar pamięci dla GR8 nachodzi na pamięć zestawu znakowego

      w załączniku kody operacji dla S2: (VBXE), XIO 111 albo XIO 112 ?
      • 9: CommentAuthorwojtas76
      • CommentTime23 Nov 2020 06:11
       
      Kapłem się... zmieniłem topmem zresztą trochę widać że te krzaczki jakby trochę literki przypominają.. muszą trochę obczaić te obliczenia bo pewnie dla vbxe też się to zmieni.. xio.. trochę poczytałem więc coś dziś potestuje dzięki pozdrawiam
      • 10:
         
        CommentAuthorKaz
      • CommentTime23 Nov 2020 11:11 zmieniony
       

      Mq:

      Pamiętam, że w Basicu było tak, że jak się zmieniało tryb graficzny, to zawsze trzeba było od nowa ustawić adres zestawu znaków.


      I nie tylko to, bo komenda GRAPHICS resetowała więcej rzeczy. Dokładny opis tej komendy oczywiście u Zientary, w "Mapa pamięci":
      • 11: CommentAuthorwojtas76
      • CommentTime29 Nov 2020 21:11
       
      Pewnie już zaczynam przynudzać z tymi znakami.. ;) Ale pojawił mi się kolejny kłopotek.. Przy wyświetleniu tekstu przez canvas.textout w Gr.8 pojawia się szczelina między dwoma znakami znakami oraz szerokość 2 znaków jest zbliżona do 3. Widać że "Uuu" jest skondensowane w porównaniu do wyświetlania w Gr.0 co widać na załączonym obrazku.. Co można na to poradzić, aby w Gr.8 wyglądało to jak w Gr.0. Pozdrawiam.
      • 12: CommentAuthortebe
      • CommentTime30 Nov 2020 00:11 zmieniony
       
      używasz własnego zestawu znaków? masz wyłączony OS? zmieniasz zestawu znaków?

      starszy bajt zestawu znaków musi być zapisany w komórce 756, przed wywołaniem 'canvas.create' wtedy zestaw znaków przepisywany jest do
      bufora i wyliczane są szerokości znaków oraz znaki są przesuwane

      procedure FontInitialize odpowiada za wyliczenie szerokości znaków i ich przesunięcie