Oznámení

Sbalit
Aktuálně žádná oznámení.

Programování Amiga C , Amiga Python a rozdíly mezi Amigou a PC v jejich používání

Sbalit
X
 
  • Filtr
  • Čas
  • Zobrazit
Vymazat vše
new posts

    #46
    O: Programování Amiga C , Amiga Python a rozdíly mezi Amigou a PC v jejich používání

    No nebylo mým záměrem šahat na řídíci znaky, jen jsem šel slepě po logice - hexa číslo = počet zobrazených bodů, až pak jsem si to uvědomil . S těma barvami, jak jsem již psal, můžes mít i přesný přístup k dalším 4 barvám, tedy celkove 7 barev + barva pozadí, jen musíš dát WB na 8 barev a to je opruz, proto já osobně pokud se jedná o program, hru, preferuji 3 barvy + barva pozadí, no a při mém zamýšleném demu používám výjimečně všech 8 barev. Pokud tedy někdo nemá WB na 8 barvách, buď si ho dá na 8 barev, nic dalšího se nemusí nastavovat, ani žádné konkrétní barvy, to si již natáhnu pomocí Pythonu a AmigaDosu a program mu pude od začátku s korektními barvami, nebo program spustí třeba ve svých 256 barvách, WB ho automaticky upozorní, že přechází do režimu 8 barev a požádá o zavření všech oken. Pak se WB sám dá do režimu 8 barev. Program se musí spustit ještě jednou a barvy jsou již OK (žádné další upozornění WB - již je na 8 barvách).

    Díky za to potvrzení ohledem Pythonu a načtení Amiga knihovny. Nemůžu vědět vše, člověk se stále učí, ale za těch 5 let co se týče Pythonu už něco načteného mám i já. Kdyby jsem byl nejaký Pythonista guru, třeba by jsem dokázal zprovoznit Amiga knihovnu pod Pythonem, ale na to opravdu nemám. Reálnější je možnost v programovacím jazyku C si naprogramovat knihovnu pro Python a tu pak pomocí Pythonu používat. To je jedna z dalších možností, jak s Pythonem efektivněji pracovat.

    Co se týče toho, jestli ten font musí být proporcionální. Tohle nemám zatím odzkoušené, ale asi by mohl být i fixní. Nicméně použití proporcionálního fontu nám může dávat jisté výhody. Co se týče grafických znaků, máme jich využitých celkem 32. Takže je tam ješte prostor nadefinovat si nejaké konkrétnější znaky, co budou i širší než 1 pixel. Ve všeobecných parametrech, pokud se nepletu musí být zadaná šířka fontu 1 pixel, aby se mohla pomocí ESC sekvecí s přesností na 1 pixel (v horizontální rovině) udat poloha pixelu co kreslíme. To nám ale nebrání použít i znak větší šířky (a tím ho rychleji zobrazit), kterého pozici udáme stejným způsobem, jako pozici znaku o šířce jedného pixelu. Pokud zadáme správně vlastnosti pro daný širší znak, jsme schopni za tenhle znak vykreslit správně jakýkoliv jiný znak a jsme opět na proporcionálním fontu.

    Dal jsem si před chvílí jednoduchý test, co se týče rychlosti vykreslování. Pomocí SYSINFO jsem si dal WinUAE na SPEED Amigy 1200, tak snad budou výsledky rychlosti správné. Postup vykreslování je viditelný volným okem. Připomíná mi to vykreslování nějakého 8mi bitového počítače pomocí Basicu . Ale uvedu konkrétní čísla zjištěné pomocí funkce TIME a odečtené z textu uloženého v souboru (výsledek napsaný 5ti pixelmi jsem opravdu zrakem nedal ). Čtverec, který je zobrazen v tomhle vláknu a který se skládá z 1000 bodů je zobrazen za 0,56 sekundy. Pomocí FOR jsem ještě zobrazil jeden znak za sebou tak aby obsáhl celou obrazovku. Byla použita opět velikost písma 5. Znak jsem zobrazil celkem 29650 krát. Vše samozřejmě závisí od celkové logiky v nějakém konkrétním programu a dané údaje jsou proto orientační, ale celá obrazovka byla zobrazena za 4,37 sekundy.

    Ten test klavesnice by byl supr!

    A něco určené jen pro SindlarV: Já jsem si říkal, že mne zpucuješ zato, k čemu všemu jsem schopen "znásilnit" samotný font... .
    Naposledy upravil Lisiak; 01.01.2014, 09:57:20.
    Amiga - PMD 85

    Komentovat


      #47
      O: Programování Amiga C , Amiga Python a rozdíly mezi Amigou a PC v jejich používání

      Autorem citovaného textu je Lisiak4 Přejít na původní příspěvek
      Kdyby jsem byl nejaký Pythonista guru, třeba by jsem dokázal zprovoznit Amiga knihovnu pod Pythonem, ale na to opravdu nemám.
      A takhle to vypadá, když se sejde AmigaPython se Strojovým kódem. Ukázka generování zvuku. Program se skládá ze 4 částí. Popis programu, zakomentovaný kód v Assembleru, zakomentováný kód v Strojových inštrukciích a zápis samotného programu (strojový kód uložen v proměnných: one, two, wave, three, volume, four, five, six).

      Autor: Barry Walker
      Zdroj: www.aminet.net
      Zdroj k programu: https://aminet.net/package/dev/src/Ami_Square_Wave.py

      Code:
      # Ami_Square_Wave.py
      #
      # DEMO to generate an audio tone from one of the classic AMIGA audio
      # channels, in this case a square wave. Almost any waveform is possible
      # and the Left Mouse Button is used to STOP this DEMO.
      #
      # MINIMUM Requirements Are:-
      # 68EC020 CPU and 2MB RAM total, example, a standard A1200(HD),
      # WinUAE and E-UAE. Standard AMIGA OS3.0x install or better.
      # Full Python 1.4.0, minimum, installed, can be found on AMINET.
      # (Python 1.5.2 to 2.0.x are also available on AMINET.)
      # (Now Python 2.4.6 is available for advanced 68K machines.)
      #
      # To install just download the file and drag this file into an Assign(ed)
      # PYTHON: volume...
      # From an AMIGA A1200(HD), E-UAE or WinUAE Python 1.4.0 prompt:-
      #
      # >>> execfile("PYTHON:Ami_Square_Wave.py")
      #
      # And away you go...
      # ==========================================================================
      # The DEMO assembly code that will be compiled and converted.
      # Call the code beep.asm...
      # From a CLI and using the a68k and blink from AMINET:-
      #
      # Prompt> a68k beep.asm<RETURN/ENTER>
      # Some reports here...
      # Prompt> blink beep.o<RETURN/ENTER>
      # Some reports here...
      #
      # This code is TOTALLY position independent.
      # ==========================================================================
      # start:
      # ;"beep.asm" test code...
      # movem.l d0-d7/a0-a6,-(sp) ;Save all registers just in case.
      # movea.l $4,a6 ;Set ~execbase~.
      # moveq #16,d0 ;Length of square wave data.
      # moveq #2,d1 ;Set to chip ram.
      # jsr -198(a6) ;Allocate memory for the task.
      # beq.s getout ;On error, Quit.
      # move.l d0,a0 ;Set address in chip ram.
      # move.l #$3f3f3f3f,(a0) ;Set first four bytes of sixteen.
      # addq.l #4,a0 ;Move addres by four.
      # move.l #$3f3f3f3f,(a0) ;Set next four bytes of sixteen.
      # addq.l #4,a0 ;Move addres by four.
      # move.l #$80808080,(a0) ;Set next four bytes of sixteen.
      # addq.l #4,a0 ;Move addres by four.
      # move.l #$80808080,(a0) ;Set last four bytes of sixteen.
      # ;This ensures absolute position
      # ;independence.
      # lea $dff000,a5 ;Set HW register base.
      # move.w #$000f,$96(a5) ;Disable audio DMA.
      # move.l d0,$a0(a5) ;Set address of audio data.
      # move.w #8,$a4(a5) ;Set length in words.
      # move.w #64,$a8(a5) ;Set volume to maximum.
      # move.w #220,$a6(a5) ;Set the period.
      # move.w #$00ff,$9e(a5) ;Disable any modulation.
      # move.w #$8201,$96(a5) ;Enable audio DMA, 1 channel only.
      # wait:
      # btst #6,$bfe001 ;If LMB pressed then Quit.
      # beq.s closeme ;Do it.
      # bne.s wait ;Play the tone until LMB pressed...
      # closeme:
      # move.w #$000f,$96(a5) ;Disable audio DMA.
      # move.l d0,a0 ;Address of the square wave data.
      # moveq #16,d0 ;The data length to recover.
      # jsr -210(a6) ;Free assigned memory.
      # getout:
      # movem.l (sp)+,d0-d7/a0-a6 ;Restore all registers.
      # clr.l d0 ;Set returm code OK.
      # rts
      # nop
      # even
      # end
      # ==========================================================================
      # The text HEX file to be edited for the Python code:-
      #
      # Prompt> Type HEX beep > beep.hex<RETURN/ENTER>
      #
      # Gives a text file "beep.hex" that has the contents:-
      # ==========================================================================
      # 0000: 000003F3 00000000 00000001 00000000    ...&#195;&#179;............
      # 0010: 00000000 00000021 000003E9 00000021    .......!...&#195;©...!
      # 0020: 48E7FFFE 2C780004 70107202 4EAEFF3A    H&#195;§.&#195;&#190;,x..p.r.N®.:
      # 0030: 67682040 20BC3F3F 3F3F5888 20BC3F3F    gZ @ &#197;’????X. &#197;’??
      # 0040: 3F3F5888 20BC8080 80805888 20BC8080    ??X. &#197;’....X. &#197;’..
      # 0050: 80804BF9 00DFF000 3B7C000F 00962B40    ..K&#195;&#185;.&#195;Ÿ&#195;°.;|....+@
      # 0060: 00A03B7C 000800A4 3B7C0040 00A83B7C    . ;|...€;|.@.&#197;&#161;;|
      # 0070: 00DC00A6 3B7C00FF 009E3B7C 82010096    .&#195;œ.&#197; ;|....;|....
      # 0080: 08390006 00BFE001 670266F4 3B7C000F    .9...Â&#191;&#195; .g.f&#195;´;|..
      # 0090: 00962040 70104EAE FF2E4CDF 7FFF4280    .. @p.N®..L&#195;Ÿ..B.
      # 00A0: 4E754E71 000003F2                      NuNq...&#195;&#178;
      # ==========================================================================
      # With careful manipulation of the Python code you could have control of the
      # audio levels, channels, frequency, etc, using this method...
      #
      # Enjoy finding simple solutions to often very difficult problems...
      #
      # $VER: Ami_Square_Wave.py_Version_0.00.30_(C)2007-2011_B.Walker_G0LCU.
      #
      # Original copyright, (C)2007-2011, B.Walker, G0LCU. Now finally issued as Public Domain.
      
      import os
      
      # Manually place the executable code into practical binary string lengths.
      one="\x00\x00\x03\xF3\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x00\x00"
      two="\x03\xE9\x00\x00\x00\x21\x48\xE7\xFF\xFE\x2C\x78\x00\x04\x70\x10\x72\x02\x4E\xAE\xFF\x3A\x67\x68\x20\x40\x20\xBC"
      wave="\x3F\x3F\x3F\x3F\x58\x88\x20\xBC\x3F\x3F\x3F\x3F\x58\x88\x20\xBC\x80\x80\x80\x80\x58\x88\x20\xBC\x80\x80\x80\x80"
      three="\x4B\xF9\x00\xDF\xF0\x00\x3B\x7C\x00\x0F\x00\x96\x2B\x40\x00\xA0\x3B\x7C\x00\x08\x00\xA4\x3B\x7C\x00"
      volume="\x40"
      four="\x00\xA8\x3B\x7C\x00\xDC\x00\xA6\x3B\x7C\x00\xFF\x00\x9E\x3B\x7C\x82\x01\x00\x96\x08\x39\x00\x06\x00\xBF"
      five="\xE0\x01\x67\x02\x66\xF4\x3B\x7C\x00\x0F\x00\x96\x20\x40\x70\x10\x4E\xAE\xFF\x2E\x4C\xDF\x7F\xFF\x42\x80"
      six="\x4E\x75\x4E\x71\x00\x00\x03\xF2"
      
      # Clear the screen the standard AMIGA way... ;o)
      print "\f"
      
      # A simple user screen...
      print "1 KHz Square Wave Generator for the classic AMIGA A1200."
      print "Using standard text mode Python 1.4.0 to 2.0.1.\n"
      print "(C)2007-2011, B.Walker, GOLCU. Issued as Public Domain...\n"
      
      # Show how to change output, (volume), level...
      vol=raw_input("Set output level, 0 to 64:- ")
      
      # Don't allow any errors...
      if vol=="": vol="64"
      if len(vol)>=3: vol="64"
      count=0
      while count<=(len(vol)-1):
      if vol[count]>=chr(48) and vol[count]<=chr(57): count=count+1
      else: vol="64"
      if eval(vol)>=64: vol="64"
      if eval(vol)<=0: vol="0"
      volume=chr(eval(vol))
      
      # Put them all together as a single binary string.
      amiga_exe_file=one+two+wave+three+volume+four+five+six
      
      # Generate a file called SquareWave inside the S: VOLUME and write to the disk.
      amigafile=open("S:SquareWave","wb+")
      amigafile.write(amiga_exe_file)
      amigafile.close()
      
      # Give a short delay to allow system to settle.
      os.system("C:Wait 1")
      
      print "\nPress Left Mouse Button to stop...\n"
      
      # Ensure the file SquareWave can be executed.
      os.system("C:Protect S:SquareWave rwed")
      
      # Now run it.
      os.system("S:SquareWave")
      print "This DEMO has now stopped..."
      
      # Ami_Square_Wave.py end...
      # Enjoy finding simple solutions to often very difficult problems.
      Amiga - PMD 85

      Komentovat


        #48
        O: Programování Amiga C , Amiga Python a rozdíly mezi Amigou a PC v jejich používání

        Jaké mám použít rozlišení WB pro zobrazení grafiky? ClassicWB má standardně nastaveno 640 x 256. Tohle se zdá být je ideální pro zobrazení ikon. Pro samotné zobrazení bodu u tohodle rozlišení je pixel 2 krát vyšší, než jeho samotná šířka. Na to, aby jsem nemusel tenhle neduh opravovat samotným programovaním je dle mne tedy lepší použít rozlišení 640 x 512. Já chtěl ještě zkusit, jak bude vypadat rozlišení 320 x 256, které je uvedené ve specifikaci samotné Amigy. Je hezké, že Amiga tohle rozlišení umí, když ho neumí samotné zobrazovadlo ve WinUAE. To mne donutilo se ptát, co je dnes standardem? Já jsem ale omezen možností rozlišení samotného WB, protože jeho rozlišení na zobrazování grafiky (u AmigaPythonu) používám. Nerad bych zvolil špatné rozlišení pro zobrazení grafiky (aby to správně zobrazovalo co nejvíce lidem). Mé rozlišení samozřejmě vnutím. Takže pokud bude mít někdo rozlišení jiné, nastáva stejný problém, musí se zavřít všechna okna, aby se mohlo na toto rozlišení přejít . Ale i tak, aby s tím neměl někdo na Amize problém typu - tohle mi můj monitor, LCD, nebo TV neumí zobrazit.

        Je tedy ideál 640 x 512 nebo jsou jiné možnosti? Nějaké další návrhy, doporučení? Nižší rozlišení tedy ne? Protože né každé zobrazovadlo tak nízké rozlišení zvládne?

        Nevědel jsem, kam mám tenhle dotaz zařadit, ale týká se to taky programování, tak to dávám prědse jen sem... .
        Amiga - PMD 85

        Komentovat


          #49
          O: Programování Amiga C , Amiga Python a rozdíly mezi Amigou a PC v jejich používání

          Z hlediska workenche, grafických programů, demoscény a her:

          320x256 (PAL LOWRES) = hry, dema
          640x256 (PAL HIRES) = některé hry; základ pro Workbench a některé grafické programy
          640x512 (PAL HIRES Interlaced) = optimum pro Workbench ovšem při potlačení bílé barvy (nejlépe v kobinaci 16 barev + MagicTV); optimum pro grafické aplikace; hry ani dema v tak vysokém rozlišení se nevyskytují, pouze například úvorní obrazovky, či statické grafické prezentace (respektive některé hry a dema lowres a hires interlaced kombinují)

          Při použití grafické karty se většinou vše posouvá o jeden řád výš (hry, dema 640x480, workbench a grafické aplikace 800x600 a výš) ;o)
          http://jack.untergrund.net [AMIGA 600 AMIGA 1200 AMIGA 1200T AMIGA 2000 AMIGA 4000 AMIGA 4000T CD32 Mac mini G4]

          Komentovat


            #50
            O: Programování Amiga C , Amiga Python a rozdíly mezi Amigou a PC v jejich používání

            OK 320x256 je standard. Ale zavádí mne to, že ho v ScreenMode nemůžu nastavit, protože jako minimální rozlišení (Minimum Size) je udáno 640x200. Takže potřebuji ještě něco nastavit, aby mne to na 320 x 256 pustilo. No jako máme zde PPC a co já vím co a jako nikdo neudělá demo v 640x512? To je opravdu takový masakr na výkon? To by byla provokace udělat něco v AmigaPythonu ). Já si zde dělám legraci, ale jako u postupných animací, kde nehýbeš současně větší plochou to zatím nevidím jako nereálný. Zatím jsem to tedy nezkoušel, tohle je opravdu jen úvaha .
            Naposledy upravil Lisiak; 02.01.2014, 20:46:02.
            Amiga - PMD 85

            Komentovat


              #51
              O: Programování Amiga C , Amiga Python a rozdíly mezi Amigou a PC v jejich používání

              Rozlišení 640x512 je spíš nápor na AGA než pro PPC, jednoduše si stačí vyzkoušet rychlost třeba Quake nebo DOOM v těchto rozlišeních na stejném procesoru a uvidíš ty klesající framerates. K rozhýbání her ve vyšším rozlišení pak stačí jakákoliv RTG karta. Kupříkladu Napalm v 640x512 na 68k+AGA versus 68k+RTG karta, rozdíl je znát více než dost.

              Ty máš v AmigaPythonu podporu pro PPC?
              http://jack.untergrund.net [AMIGA 600 AMIGA 1200 AMIGA 1200T AMIGA 2000 AMIGA 4000 AMIGA 4000T CD32 Mac mini G4]

              Komentovat


                #52
                O: Programování Amiga C , Amiga Python a rozdíly mezi Amigou a PC v jejich používání

                Ne, AmigaPythom nemá skoro žádnou podporu (PPC už tuplem ne ), já jsem rád, že funguje jak funguje . Mým způsobem zobrazení je na obrazovce 5 krát míň obrazových bodů, to trocha vyvažuje pomalost AmigaPythonu a u výkonově silnější Amigy to začíná být použitelné. No tak u rozlišení 640x512 máš 4 krát více bodů než u 320x256. Pokud tedy u rozlišení 640x512 použiješ animaci dostatečně jednoduchší, než u animace, která běží plynule pod 320x256, mělo by to být v pohodě ne? Vše je to jenom o počte operací samotného procesoru... ? Že by to nebylo pro programátori dostatečně atraktivní a chtěli vždy hýbat současně vždy největší plochou, jak je to jen možné?
                Amiga - PMD 85

                Komentovat


                  #53
                  O: Programování Amiga C , Amiga Python a rozdíly mezi Amigou a PC v jejich používání

                  No udělal jsem si test a já tedy budu muset volit rozlišení 320x256 (a budu rád, že jsem rád ) )

                  Teď si ho už jen nějak zpřístupnit... .
                  Amiga - PMD 85

                  Komentovat


                    #54
                    O: Programování Amiga C , Amiga Python a rozdíly mezi Amigou a PC v jejich používání

                    Při použití grafické karty se většinou vše posouvá o jeden řád výš (hry, dema 640x480, workbench a grafické aplikace 800x600 a výš) ;o)
                    Ja bych si troufnul primo tvrdit, ze vetsina majitelu grafickych karet pouziva alespon 1024x768

                    Komentovat


                      #55
                      O: Programování Amiga C , Amiga Python a rozdíly mezi Amigou a PC v jejich používání

                      Obrazovka Workbench vyzaduje min. velikost 640x200, proto nelze nastavit nic mensiho. Ty potrebujes jiny typ obrazovky, tzv. Custom Screen. Pro tento typ lze nastavit rozliseni podle chuti, resp. podle dostupnych ovladacu v ROMce a DEVS:Monitors. A protoze planujes demo v shellu, bude pro tebe vyhodna utilita ShellScr. Ono je podobnych vice, ale tato ti umozni krome vlastni obrazovky, vypnuti scrollbaru, titlebaru, ukazatele mysi, definice fontu i prime spusteni tveho skriptu. A navic ji nekdo z ATO kdysi prelozil Co se tyce samotneho rozliseni, asi bych zvolil 320x256. Resit v nasich koncinach 320x200 asi nema smysl a pixel bude aspon 1:1 (na PALu). Na poctu barev nezalezi, v techto rezimech je rychlost bez problemu. Pokud neprekrocis 32, budou si tve demo moct navic spustit i lide s chipsetem OCS/ECS.

                      A nakonec to odchytavani vstupu. Bohuzel zatim zadny pokrok. Bud jsem slepy, nebo nic takoveho neexistuje... jeste projedu disky Freda Fishe. Pak uz zbude jen napsat neco vlastniho
                      AmigaOS // AROS

                      Komentovat


                        #56
                        O: Programování Amiga C , Amiga Python a rozdíly mezi Amigou a PC v jejich používání

                        Sindlarv: 8 barev nepřekročím, ani když se po.... Na ShellScr se určitě podívám. Zní to dobře. Možná by mne teď zajímalo, jestli se v něm dá přepínat mezi rozlišeními. Přes WB se musí zavřít všechna okna, takže tam je přepínámí rozlišení vyloučené. Od té doby, co jsem se dozvěděl, že se 640x512 standardně nepoužívá na animace si nějak nemúžu pomoct. Asi jsem trochu ulítlej na nestandardní řešení Je jasný, že jsem limitován výkonem Pythonu ale i tak . Teď to budu říkat z hlavy, ale minimum na AmigaPython je OS 2.04, Amiga 500+ a 2 MB RAM, ale to jsem nikdy nezkoušel. Já to vše spouštím na A1200 a OS 3.1. No a když přesáhneš pár řádku, tak si Python bere celkově 4 MB RAM. Ty 2 MB RAM jsou opravdu jen na velmi krátký program (čti: dle mne nepoužitelné). Ale na těch 4 MB RAM se Ti může podařit celkem dlouho zůstat .

                        To odchytávaní vstupu neva, nějak bylo a nějak bude. Teď máme "grafiku" ).
                        Amiga - PMD 85

                        Komentovat


                          #57
                          O: Programování Amiga C , Amiga Python a rozdíly mezi Amigou a PC v jejich používání

                          AmigaPython:

                          Včera jsem si říkal, že by bylo dobré vyzkoušet nějakou základní animaci, kdy by se hýbalo s více objekty naráz. Daným objektem bude svislá čára (1 plný grafický znak o velikosti 1 pixel na 5 pixelů). A objektů bude 10. To znamená, že každý znak bude mít svou základní logiku pohybu (i když stejnou). Před pár dny jsem si trochu četl o modulu PyGame. Je to modul Pythonu pro tvorbu 2D her, co samozřejmě nebyl pro Amigu přizpůsoben. Dle všeho PyGame funguje stylem překreslování celé části, s kterou chceme hýbat. U Amigy na tenhle způsob animace můžeme při použití Pythonu zapomenout . Výrazné problikávání obrazu by mělo nastat už při pohybu jedného objektu . Po pár pokuses jsem si včera vzpoměl, jak jsem kdysi řešil pohyb 1 objektu a to jsem přenesl na pohyb 10 objektů. Dosáhnout co nejstabilnější zobrazení při posunu grafických znaků (aby obraz problikoval co nejméně) je dle mne to nejdůležitější a od toho se odvíjí vše ostatní. To dosahuji tím, že vždy dělám pouze 1 ůkol a to buď mažu starou pozici, nebo zobrazuji pozici novou. Tyhle dva úkony se mezi sebou střídají a postupně takhle prostřídám i všech 10 grafických znaků. Pak se začne vykonávat posun všech znaku o další pixel. Dané znaky jsou od sebe vzdálené 5 pixelů. Tímto způsobem zobrazování ale ve vzájemné vzdálenosti dvou sousedních grafických znaků vzniká malé kmitání v rozsahu 1 pixelu ve svém odstupu od sebe. Je to dáno postupným kreslením. Grafické znaky budeme posouvat o 100 pixelů vpravo.

                          Je čas na příklad:
                          Code:
                          import os, sys,
                          os.system('SetFont dh1:demo 5 PROP')
                          
                          for f in range(100):
                              sys.stdout.write("""\033[15;%sH\x51\033[15;%sH\x50\033[15;%sH\x51\033[15;%sH\x50\033[15;%sH\x51\033[15;%sH\x50
                          \033[15;%sH\x51\033[15;%sH\x50\033[15;%sH\x51\033[15;%sH\x50\033[15;%sH\x51\033[15;%sH\x50\033[15;%sH\x51
                          \033[15;%sH\x50\033[15;%sH\x51\033[15;%sH\x50\033[15;%sH\x51\033[15;%sH\x50\033[15;%sH\x51\033[15;%sH\x50"""
                          % (99+f,100+f,104+f,105+f,109+f,110+f,114+f,115+f,119+f,120+f,124+f,125+f,129+f,130+f,134+f,135+f,139+f,140+f,144+f,145+f))
                          Malá část kódu:
                          Code:
                          for f in range(100):
                              sys.stdout.write("\033[15;%sH\x51\033[15;%sH\x50" % (99+f,100+f))
                          A teď si to popíšeme. Hodnota "f" při každem cyklu for bude zvýšená o 1 v rozsahu 0 až 99. Budeme zobrazovat znak na 15 řádku a 99+0 sloupci. Budeme zobrazovat prázdný znak (tento krok je na začátku zbytečný, protože nic zobrazené zatím nemáme a už mažeme, ale mažeme starou pozici znaku a takhle to je pro jednoduchost). Pak na stejné pozici řádku, tedy 15. a v sloupci 100+0 budeme zobrazovat znak "svislá čára 5 pixelů vysoká"

                          Samozřejmě pohyb není úplně dokonalý. A problikávání tam přece jenom je. Přikládám video ve formátu 3GP - natočené z mobilu (nic jinýho nemám ) tak pardón za tu kvalitu . Nejdříve je výkon na A1200, pak ho dám na A3000. Ten zvuk, to je můj větráček, co jsem tady řešil (a je to v řešení). Řekl bych, že ten mobil malinko zvýrazňuje jak ten zvuk větráčku tak to problikávaní obrazu.
                          Přiložené soubory
                          Amiga - PMD 85

                          Komentovat


                            #58
                            O: Programování Amiga C , Amiga Python a rozdíly mezi Amigou a PC v jejich používání

                            Autorem citovaného textu je Sindlarv Přejít na původní příspěvek
                            ..musi ten font nutne byt proporcionalni, pokud stejne potrebujes fixni sirku "znaku" (1 px)?
                            Nemusí. Chtěl jsem využít parametr samotného znaku a uvést v znaku širším než 1 pixel o kolik pixelů se má další znak za něj vykreslit. No na tenhle parametr se to nehraje, pokud máme ve všeobecných nastaveních zadáno, že šíře fontu je 1 pixel. Co musí být na to, aby sme se mohli po obrazovce pohybovat v rozmezí jednoho pixelu. Takže font můžeme mít opravdu jako fixní. Můžeme však vykreslit i znak širší než 1 pixel. Pokud by sme za něj chtěli nakreslit další znak, musíme ho posunout o konkrétní šířku pomocí ESCAPE sekvencí (širší znak se nám zobrazí, i když máme uvedeno, že font má šířku 1 pixel a máme nastaveno, že je font fixní).

                            AmigaPython:

                            Naposledy jsem se jinak snažil udělat to, co jsem myslel, že udělat nepůjde, ale i tak jsem se o to pokusil a to pohyb pomyslného panáčika po obrazovce. Alespoň jsem se opět procvičil v ESCAPE sekvencích. Plynulého pohybu bych byl schopen (čti: dostatečně rychlém pohybu na strany), ale za cenu né zcela 100 procetně vykresleného pohybujícího se objektu. Při pohybu by bylo vidět problikávání panáčika (né trhání). Jako největší pravděpodobnost příčiny daného chování vidím neschopnost samotného PRINTu dostatečně rychle něco vykreslit. Já jsem schopen rychle měnit pozici po obrazovce, jen pythóní PRINT prostě nestíhá a né zcela objekt vykreslí. Pohyboval jsem 5ti znaky přímo nad sebou. Takové chování tedy máme, pokud vykreslíme PRINTem 5 znaků naráz. Pokud Pythonu určíme, aby nejdříve vykreslil jen 1 znak a pak začal kreslit znak druhý, problikávaní zmizne a vykreslení je 100 procentní, pak ale tím, jak daný pythoní PRINT "zdrží" vykreslování druhého až pátého znaku jsou znaky né přímo nad sebou, ale jsou málo posunuty (asi o 1 pixel) vůči znaku, co se vykresloval dříve. Ještě jednou uvedu, že jsem se pokusil dosáhnout dostatečně rychlý pohyb pro panáčika.

                            V základní animaci třeba pomyslné housenky, kterou jsme schopni udělat jedním nebo dvouma znaky bych problém zatím neviděl.

                            Pokusil jsem se najít program ShellScr. Na Aminetu jsem našel jen jeho lokalizaci. SVN.amigaportal.cz se taky netváří, že by tam byla kompletní verze, nebo se pletu?
                            Amiga - PMD 85

                            Komentovat


                              #59
                              O: Programování Amiga C , Amiga Python a rozdíly mezi Amigou a PC v jejich používání

                              Ten archiv s lokalizacemi na Aminetu samozřejmě obsahuje i ShellScr 1.16. Na svn.amigaportal.cz být ani nemůže, tam jsou jen věci kolem lokalizací, z kterých se pak vytvářejí lokalizační balíky pro portál.
                              Pegasos II (1266MHz), 2048MB RAM, Radeon 9250 (256MB), HDD 200GB, USB 2.0, ZIP250 USB, USB floppy, SB Live!, HP LaserJet 1100, AmigaOS 4.1 Final Edition

                              Komentovat


                                #60
                                O: Programování Amiga C , Amiga Python a rozdíly mezi Amigou a PC v jejich používání

                                Nevíš mi vysvětlit, jak jsem se z programu ShellScr dostal na program Scrsh od stejného autora? ). Musím se na to podívat... .
                                Amiga - PMD 85

                                Komentovat

                                Zpracovávám...
                                X