Oznámení

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

Lisiak4

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

    Často není třeba načítat soubor programem. Místo toho je lepší mít data přímo v programu (v "exáči"). Slouží k tomu assemblerová direktiva incbin.
    Příklad:
    Code:
      lea.l MyData(pc),a0
      move.w (a0)+,d0
      ...
    MyData: incbin "data/my_picture_320x256.bin"
    Data ze souboru budou ve stejné sekci, jako je samotný kód. Pokud bys chtěl, aby byly třeba v chip-ram, je možno je dát do jiné sekce:
    Code:
      section MyData, data_c
    ; System nacte data do chip-ram protoze sekce je typu "data_c"
    ; Adresa se ale neda nacist lea.l MyData(pc),a0! Musi se pouzit absolutni adresace lea.l MyData,a0!
    MyData: incbin "data/my_picture_320x256.bin"
    Naposledy upravil Defor; 13.04.2022, 07:17:06.

    Komentovat


      Já incbin používám, jen jsem nevěděl že to takhle funguje. Nicméně důležité je, že teď mám přístup k bitům tvořící písmo přímo v kódu.

      Další věcí je, že tenhle způsob zobrazování, tedy když nepoužijeme incbin, je o něco rychlejší. Vynecháváme ADD #40 u načtení dalšího řádku písmena z fontu. Místo toho skáčeme na další řádek po 1 byte, tedy k již použité instrukci (An) v rozsahu byte jsem přidal jen +, tedy (An)+, a plus nás nic nestojí v rámci taktu, to si třeba pamatuji, jak si psal. Navíc to ADD u verze s incbin se použije každý řádek v rámci psaní písmena. Ale to ty víš lépe než já 🙂
      Amiga - PMD 85

      Komentovat


        Data znaků si přece můžeš jinde připravit tak, aby znaky (jejich řádky) šly v paměti za sebou. Nalezení prvního bajtu znaku je pak i jednodušší (něco jako address_offset = ASCII_code * character_size_in_bytes). Já k přípravě dat a zkoušení všeho možného používám normální C++ na PC (Visual Studio Community, které je pro no-commerce zdarma). Ale určitě jsou pro to i lepší řešení: C#, Python nebo jiné skripty. Jak říká stará definice: Program je algoritmus nad daty. K rychlému programu se tak dopracujeme rychlým algoritmem nebo dobře připravenými daty. A nejlépe obojím

        Komentovat


          Nevím, jestli ti dobře rozumím, já mám znak z 8 byte za sebou, kde každý 1 byte je 1 řádek z písmena, pak následuje další znak.

          Tedy
          DC.b xx,xx,xx,xx,xx,xx,xx,xx ; písmeno A
          DC.b xx,xx,xx,xx,xx,xx,xx,xx ; písmeno B

          jen si takhle postupně predefinuji znaky na ty, co jsem načítal v předešlé verzi pomocí incbin.

          Je mi jasný, že by se na to dal udělat skript, ale já si to takhle nadefinuji ručně, postupně
          Amiga - PMD 85

          Komentovat


            Ono to jinak jde z toho externího souboru kde je font i vyčíst jako klasická data, když se to zobrazí v hexa, jen jde vždy z každého písmena nejdříve první řádek a pak další, tak bych tam většinu mohl naházet od shora dolů v rámci zápisu do paměti co jsem uvedl výše a nemusel bych to skládat po bitech do hexa.

            Amiga - PMD 85

            Komentovat


              Tak jsem si nainstaloval PSPad pro načtení a možnost kopírování dat v hexa. Již mám všech 7 bytů přepsaných do formátu co jsem potřeboval. V každém řádku 1 písmeno. Osmý byte jsem dal nulový a ten použiju třeba na čárku, kterou ještě přidám. Po zpracování 2 sloupců jsem to zkusil načíst ve vývojovém prostředí ASM-Pro a dobrý. Ještě ty data asi 1 krát zkontroluji. Originální soubor měl data všech písmen za sebou nejdříve jejích první řádek, pak všech písmen jejích 2.řádek. Já mám teď data ke každému písmenu u sebe co jsem potřeboval, když chci mít k datům písmen přístup přímo ze zdrojového kódu. Data jsem si zapsal v poznámkovém bloku, uloženo jako ANSI.

              Přikládám 1 foto

              edit: ještě jsem zapomněl přidat před ty data definici zápisu v hexa

              Klikni pro plné zobrazení obrázku  Jméno: SICK_MR.png Počet zobrazení: 0 Velikost: 236,5 KB ID: 155542
              Naposledy upravil Lisiak; 15.04.2022, 17:21:37.
              Amiga - PMD 85

              Komentovat


                Dnes jsem v mém programu pro práci s textem dodělal úpravy nutné pro použití čárky s úrovní končící 1 pixel pod písmeny. Opět vše vycentroval na střed. Předělal písmeno Y, no to byl boj s pixely, jsem se s tím cáral tak 12 hodin. Ale nakonec se povedlo, tedy mně se líbí více než to původní. Ono šlo o to, že při šířce 7 pixelů, pokud chcete dát střední nožičku Y na střed, musíte použít buď 1 pixel, nebo 3. Původně byly 3. To u písmene dělaného na tloušťku 2 pixely dost křičelo. Mně se podařilo udělat 2 pixely aniž by si myslím nějak křičelo, že to není na střed. Všiml jsem si, že je celkově písmo dost s ostrými hranami v obloučcích, to se mi podařilo zmírnit posunutím druhého bitplanu o 1 pixel níže vůči prvnímu. HW posunutí o 1 pixel doprava jsem zrušil, již to pak bylo moc přeplácaný.

                Ještě je číslo 8 takové divné ale to uvidím. Hlavně mně točilo to Y.

                Taky jsem již před delší dobou udělal drobnou úpravu v kódu aniž by mně to cokoliv stálo, aby jsem se mohl vrátit o více obrazovek v textu. Mohl jsem tak 40, teď to je tak 80.

                Dnes jsem to zkusil i na A1200 a pohoda. To zatim 50 kB EXE naskočí tak do vteřiny. Z diskety by to byly třeba 2

                Amiga - PMD 85

                Komentovat


                  Včera jsem měl takový den kutila Tima, když jsem se hrál s jednou z mých A500 ve smyslu kde by mohl být problém. A proto jsem byl rád za druhou funkční A500, co mně nasměrovalo a A500 půjde k doktorovi Neměl jsem vytaženého jen Garyho a Denise z toho co bylo v paticich. Nejvíce mi dali zabrat CIA, mé 2 nejoblíbenější obvody v programování, tedy tam používám jen 1. Normálně mi i toho tuhla krev v žilách, bez speciálního nářadí to není moc legrace a jsem rád že to všechny čipy přežili.

                  Tedy u A500 je vlevo nahoře Denise, pod ním CPU, vpravo od něj ROM, nahoře na středu a vpravo u FDD CIA. Jo a Gary je někde u CPU, myslím že vpravo od ROM. Tak jsem si po 30 letech trochu takhle zablbnul. V roce 1992 jsem A500 neměl otevřenou, minimálně si to nepamatuji.
                  ​​​​​​
                  K programování
                  před tím než jsem takhle začal blbnout s A500 jsem ještě pouštěl můj program na A1200.

                  Zjistil jsem 2 problémy. Mimo to že mi LCD monitor usekava vršek/spodek obrazu v režimu LoRes, co je pro mně již známá věc mi dle všeho usekáva i 2 pixely na pravé straně, protože mi je nezobrazuje, Tedy nezobrazuje mi u posledního písmena nejkrajnější pixel vpravo a pak je ještě 8.pixel (1-8.) mezera. Tedy tyhle pixely se u písmena záměrně nepoužívají. Ve výsledku 2 nezobrazené pixely. Nicméně Copper jde i mimo bitplan a tam tyhle poslední 2 pixely zobrazuje. Ale skutečnosti, že pod emulací jsou tyhle 2 poslední pixely u písmena (1 vyditelný) zobrazeny, přisuzuji tuhle chybu spíše mému monitoru LCD zobrazujícího 50 Hz.

                  Pokud máte někdo zkušenost, že by vám 50 Hz LCD monitor usekával v obraze poslední pixely na pravé straně, sem s ní

                  Druhý problém je, že pokud se můj program spouští z Workbenchu kde je nastavený režim zobrazení Multiscan productivity, spustí se se zmršeným obrazem a s ruchem v zvuku. Jednoduše se nepřepne Amiga na LoRes rozlišení. Pokud mám Workbench na HiRes, nebo LoRes, vše je ok a zobrazení programu je v LoRes.

                  Dnes jsem v rychlosti na netu nenašel, že by to někdo řešil. Zatím to přisuzuji mému jednoduchému odstavení/přidržení si okna ve kterém se spouští můj program a asi budu muset odstavit Workbench více/lépe.

                  Jo a dnes jsem si doplnil/zpřesnil info do mého souboru kde mám co kde a proč v adresových a datových registrech v rámci mého programu. Hlavně v rámci práce s textem co kde přibylo, něco jsem již měl napsaný. Tak jsem přišel na to že v A6 používám jen 6 bitů, takže nějaký prostor ještě pořád mám. No a v D4 jsem potřeboval zjistit kde mám volný ten 1 bit ze 2 možná 3 jeho možných pozic v rámci nejvyššího byte a jeho vyšších 4 bitech kde jsem si byl ještě jistý funkcí nejvyššího bitu. Tenhle 1 volný bit asi využiju na aktivaci zobrazení obrázku. Asi... .

                  Tak hezký zbytek dne všem
                  Naposledy upravil Lisiak; 26.04.2022, 19:29:54.
                  Amiga - PMD 85

                  Komentovat


                    DaMi prosím o změnu mého nicku, kde se odstraní pouze číslo 4 z konce. Tedy o změnu na nick Lisiak
                    (velké L, ostatní písmena malé, bez diakritiky)

                    Chtěl jsem tak učinit později, mám to v plánu již několik let, ale navnadil mně Mice ve vlákně o RESETkání 2023.

                    ​​​​​​​Děkuji za změnu nicku 🙂


                    ​​
                    Amiga - PMD 85

                    Komentovat


                      Autorem citovaného textu je Lisiak4 Přejít na původní příspěvek
                      DaMi prosím o změnu mého nicku, kde se odstraní pouze číslo 4 z konce. Tedy o změnu na nick Lisiak
                      (velké L, ostatní písmena malé, bez diakritiky)
                      Vyhověno. Buď si vědom, že se na fórum pod původním nickem už nepřihlásíš.
                      Amiga OCS, ECS, AGA, CGX, PPC
                      -----------------------------------------------
                      Líbí se mi Retropolis

                      Komentovat


                        Uživatel Pete z FB nahrál na YT video mého intra ze své Amigy 1200 za co mu patří mě velké díky a dávám sem. Hudba samozřejmě od Nooly-ho.
                         
                        Naposledy upravil Lisiak; 15.04.2023, 11:46:58.
                        Amiga - PMD 85

                        Komentovat


                          Autorem citovaného textu je Lisiak Přejít na původní příspěvek
                          Uživatel Pete z FB nahrál na YT video mého intra ze své Amigy 1200 za co mu patří mě velké díky a dávám sem. Hudba samozřejmě od Nooly-ho.
                          Pěkné! A děkuji za zmínku v pozdravech

                          Komentovat


                            Ja ďakujem tiež za pozdrav 👍, skvelý počin.
                            Powerbook G4 A1138,MOS 3.18,OSX Tiger + LubuntuPPC 16.04
                            Mkr.Tower Inf.II,Amiga 1200,BPPC603e+/210MHz/060/50MHz,256MB Ram,BVision, SCSI 2.5" 80GB,AOS3.2,MOS,AOS4.1FE
                            E/Box Tower,Amiga 1200,Blizzard 1260/50MHz,128MB Ram,Mediator 1200TX,Voodoo 3 2000,SB128,Fast ETH,CF 8GB,AOS3.9
                            Amiga 600,X601,Furia EC020,SMC PCMCIA WiFi Network Card
                            AmigaCD32 + TF330 64MB RAM


                            registered on https://amigamap.com/amiga-slovak_republic.html
                            live on https://live.amigamap.com

                            Komentovat

                            Zpracovávám...
                            X