Oznámení

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

Assembler - všeobecná logika

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

    já uz jsem to predelal.
    [joke] normalne vas tam napisu jako spoluatory... [/joke]
    Amiga - PMD 85

    Komentovat


      ... to je reakce na ten zdroják v jednom z předchozích příspěvků #298
      Jestli si to dobře pamatuju, tak rušit sprite DMA jen tak bez jistoty, kde je paprsek, je riskantní. V datových registrech sprajtů můžou zůstat načtené hodnoty, a pak se kreslí na screenu pruh z těch dat. Taková Amigácka klasíka Myslím, že není třeba zapisovat do copper strobe registru ($8. Má to smysl jen pokud chcete, aby copper okamžitě skočil na zadanou adresu, ale to asi není tento případ. Spíše to dělá neplechu, když se ještě zobrazuje starý copper-list. Copper si resetuje adresu automaticky při každém vertical-blank.

      A asi to není důležité, ale takový "trik" (postup?), který používám: Pro inicializaci custom registrů hodnotami, které se už později nemění - a že takových je vlastně hodně, si dělám pomocný jinak prázdný copper-list, který se provede jen na jeden frame obrazu, a který nastaví potřebné hodnoty. Na konci změní adresu ($80) už na "provozní" copper-list, který se používá po zbytek programu (nebo obecně po delší dobu). V něm se už tyto zápisy do custom registrů nevyskytují. Každé provedení copper intrukce zabírá několik taktů chip sběrnice (načtení instrukce, načtení operandů). Přístup k chip sběrnici je cenný, a tak mám ve zvyku šetřit raději každým taktem, když to jde a není to ani nějak pracné.
      Naposledy upravil Defor; 11.08.2025, 19:29:35.

      Komentovat


        Kdyz jsem se hral s grafikou dlazdice 16x16 px, tak jsme prichazel na to, ze vzhledu hodne pomaha, pokud je mezi dlazdicemi jisty odstup nebo jsou dlazdice nejak od sebe oddelene. Pokud byli dlazdice vedle sebe vypadala v pohode i cerna mezera mezi nimi, ale pokud byli dlazdice nad sebou, tak jiz cerna mezera nevypadala dobre. Koukal jsem na par plosinovek tak 4 snad takove klasiky a byla mezi nimi i hra Dynablaster a vsiml si, jak genialne to resi v tehle hre. Az dodatecne, jak s tim clovek pracuje si uvedomuje ty supr myslenky v ramci grafiky, jak to mela udelane napriklad tahle hra a nechal se tou dlazdici inspirovat. Neni to upla koupie spise ta hlavni myslenka a navic odstiny a barvy jsou taky neni okopirovany ale ano styl te dlazdice je hodne inspirovan, jenze pokud to ma vypadat dobre, moc voleb v takovem prostoru neni... .

        Klikni pro plné zobrazení obrázku

Jméno: Dlazdice.jpg
Počet zobrazení: 64
Velikost: 341,3 KB
ID: 172549
        Amiga - PMD 85

        Komentovat


          Autorem citovaného textu je Defor Přejít na původní příspěvek
          ... to je reakce na ten zdroják v jednom z předchozích příspěvků #298
          Jestli si to dobře pamatuju, tak rušit sprite DMA jen tak bez jistoty, kde je paprsek, je riskantní. V datových registrech sprajtů můžou zůstat načtené hodnoty, a pak se kreslí na screenu pruh z těch dat. Taková Amigácka klasíka Myslím, že není třeba zapisovat do copper strobe registru ($8. Má to smysl jen pokud chcete, aby copper okamžitě skočil na zadanou adresu, ale to asi není tento případ. Spíše to dělá neplechu, když se ještě zobrazuje starý copper-list. Copper si resetuje adresu automaticky při každém vertical-blank.

          A asi to není důležité, ale takový "trik" (postup?), který používám: Pro inicializaci custom registrů hodnotami, které se už později nemění - a že takových je vlastně hodně, si dělám pomocný jinak prázdný copper-list, který se provede jen na jeden frame obrazu, a který nastaví potřebné hodnoty. Na konci změní adresu ($80) už na "provozní" copper-list, který se používá po zbytek programu (nebo obecně po delší dobu). V něm se už tyto zápisy do custom registrů nevyskytují. Každé provedení copper intrukce zabírá několik taktů chip sběrnice (načtení instrukce, načtení operandů). Přístup k chip sběrnici je cenný, a tak mám ve zvyku šetřit raději každým taktem, když to jde a není to ani nějak pracné.
          V podstate vo všetkom máš pravdu Zmenu v DMACon robím pri VB samozrejme, a použitie copperstrobe pri zmene CL je taký zvyk z 90-tiek. Ani neviem kde to vzniklo a dostalo sa k nám. Zrejme z voľne šírených zrojakov. Trik s pomocným CL je zaujímavý, skúsim do budúcna. Je pravda že ja nechávam všetky zápisy na CL aj tie ktoré nie je nutné opakovať, aj keď viem že to nie je potrebné. Zase taký blbý zlozvyk.
          A600 Furia020 | A1200 PiStorm32 Lite | A1200 ACA 1231 | Sharp MZ800 | ZX Spectrum | Didaktik M / Gama | C64 U1541II | Atari 800XL / 130XE U1MB+SIDE2 | Nintendo DS | MiST

          Komentovat


            Ten problém s tím Cooper listem, byl docela hodně profláknutý v momentě když přišla Amiga 1200, a s tím i instrukční cache.
            Protože hodně her, dělalo to, že měnilo svůj vlastní kód a tím následne cooper listy. Myslím, že docela hezký příklad byl ve hře Brat.
            V momentě kdy se to stalo, tak hra běžela, ale přestala měnit cooper listy, protože kód hry byl v instrukční cache a neměnil ty cooper listy a grafika šla do trouby .
            Bylo to velice specifické.
            Dum spiro spero!
            Amiga 1200 x2, Amiga 600, Amiga 500, PowerMacek G5 (MorphOS), Amiga 2000. IceDrake (68080/192MIPS, 512 MB RAM, RTC)

            Komentovat


              Kdyz vypisu text do 2 bitplanu, po kliknuti mysi jdu na pomyslnou herni obrazovku, pred timhle vykreslinim obrazovky pouzivam kod, ktery byl pouziti i pri psani textu a tu logiku psani textu jsem si upravil jak jsem potreboval. Jde o to ze obrazovka se mi stabilne vykresli az po 4 opakovani toho kodu. kdyby jsem ho opaoval 3 krat, nekdy se nevykresli a pri 2 se vykresli obrazovka jen nekdy, Pri 1 opakovani se snad navykresli obrazovka nikdy nebo jen ojedinele. Je to normalni stav, nebo to jde delat i nejak standardneji? Dnes jsem udelal par drobosti a taky si udelal smazani obrazovky, ktere jsem dal pred ty 4 opakovani zdejsiho kodu, rikal si jestli to tomu nepomuze, ale stav zustal stejny, je ho treba porad opakovat alespon 4 krat.

              Kód ktery opakuji pred vykreslenim obrazovky 4 krat je zde:
              Code:
              WAIT: MOVEQ #1,D1
              RWAIT1: CMP.B #$FF,$DFF006
              BNE.B RWAIT1
              RWAIT2: CMP.B #$FF,$DFF006
              BEQ.B RWAIT2
              DBF D1,RWAIT1
              RTS​
              Naposledy upravil Lisiak; 24.08.2025, 16:44:01.
              Amiga - PMD 85

              Komentovat


                ​Rozumiem tomu správne že keď chceš vypísať text na obrazovku tak ti to ide až na 4 krát ? Ak áno tak to asi niečo robíš zle ty.

                Ak ide len o kód ktorý si sem dal tak mu asi trochu nerozumiem. Čakáš na H-Pos ? Nechcel si skôr čakať na riadok $FF (V-Pos) alebo VBL ?
                Ja keď si chcem overiť riadok presne tak hneď za wait slučku dám MOVE.W #$0FFF,$DFF180. A od daného riadku sa zmení farba pozadia na bielu, poprípade inú farbu.



                Ja mám na to makrá WAITVBL a WAITLINE. Pozor, pri použití WAITLINE musí byť parameter riadok posunutý o 8bitov doľava.

                Code:
                WAITLINE 80<<8   : Čakaj na riadok 80


                Klikni pro plné zobrazení obrázku

Jméno: 002.png
Počet zobrazení: 0
Velikost: 27,4 KB
ID: 172697
                A600 Furia020 | A1200 PiStorm32 Lite | A1200 ACA 1231 | Sharp MZ800 | ZX Spectrum | Didaktik M / Gama | C64 U1541II | Atari 800XL / 130XE U1MB+SIDE2 | Nintendo DS | MiST

                Komentovat


                  Ten kód co jsem posílal byl použit pro postupne zesvětlení a ztmavnuti pisma pomocí rotací barev, pak zobrazuji obrazovku, něco jako jsem zde postoval s těmi dlaždicemi. Když 4 krát použiji ten kód po pisme a před obrazem z dlaždic obraz se mi i zobrazí. Budu se muset na to ještě podívat
                  Amiga - PMD 85

                  Komentovat

                  Zpracovávám...
                  X