Oznámení

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

Assembler - všeobecná logika

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

  • Noro
    odpověděl
    Mám pocit, že se to běžně dělá tak, že máš buffer v chip ram a ten naplniš a hraješ z něj z fastky ho naplňuješ to ti může ušetřit čas nemusíš dělat čtení tak často/zápis.

    Vložit komentář:


  • ObiWanKen
    odpověděl
    Jasné, ale to práve chcem, audio/sample uložené vo fastmem kvôli veľkosti (viac ako 8mb). CPU ich rovno podáva do audio registrov cez CIA časovač aby bol tok konštantný, chipmem sa celkom obchádza.

    Vložit komentář:


  • Noro
    odpověděl
    No ale to je chyba... data jako zvuk nebo grafika pokud to jedeš přes chipset, musíš nasypat do chipram. Jinak tam máš navíc to kopírování. Tak je to namyšlené z hlediska HW.

    Vložit komentář:


  • ObiWanKen
    odpověděl
    Presne tak to robím. Data z fast priamo do AudXdat. Žiadne blbosti okolo. Len som to nazval wav. Zamozrejme je to raw 8bit.
    Naposledy upravil ObiWanKen; 05.08.2025, 10:49:19.

    Vložit komentář:


  • Noro
    odpověděl
    No za mě to nedává smysl.. používat WAV. 8SVX jako zdroj dat bohatě stačí, převedení do RAW formátu a šup s tím na zvukového čipu.

    Vložit komentář:


  • ObiWanKen
    odpověděl
    Myslím že na 7mHz je už spomalenie citeľné, ale stále som to netestoval na realHW. Audio je 11kHz takže ten datový tok je slušný.

    Vložit komentář:


  • davesade
    odpověděl
    Autorem citovaného textu je ObiWanKen Přejít na původní příspěvek
    Vo verzii s WAV je hudba len vo fastke a "ručne" posielané do audio HW.
    Tj. tohleto trochu zere CPU, v zavislosti na mozstvi dat, ano?

    Vložit komentář:


  • ObiWanKen
    odpověděl
    Ešte ukážka ako si pripravujem gfx objekty v DPaint pre blitter. Nahrám obrázok, dám zobraziť koordináty aby som videl rozmer. Pre blitter musí byť šírka násobok 16 (blitter pracuje vo Word) inak môže byť násobok 8. Uložím ako "štetec", importnem do ASM hotovo. Pokiaľ treba masku tak použijem spomínaný IFF-Master alebo vlastnú rutinu.

    Naposledy upravil ObiWanKen; 02.08.2025, 21:07:55.

    Vložit komentář:


  • Lisiak
    odpověděl
    Autorem citovaného textu je ObiWanKen Přejít na původní příspěvek
    Ako si ty pripravuješ obrázky ? Používaš ich uložené nekomprimované ? Alebo ich konvertuješ do RAW a potom "INCBIN-tneš" do kódu ?
    Nekomprimovane v hexa vytazeny z IFF obrazku jen bitplany, v kodu pridam direktivu DC, $, nastavim barvy. Dnes jsem si zobrazil prvni dlazdici 16x16 px. Konecne zacinam delat s grafikou. Dnes jsem premyslel jestli nepouziju na vyslu 24px, ale v mem pripade vlastne nemuzu kvuli prostoru. Chci se vlezt do vysky 200 px.

    Vložit komentář:


  • ObiWanKen
    odpověděl
    V podstate INCBIN a INCIFF sú takmer zhodné, oboje ti pridajú data do tvojho kódu. Ibaže INCIFF ti obrázok dekomprimuje do použiteľnej formy a môžeš si ešte vybrať ako budú uložené.

    A áno vloženie grafiky do kódu je OK. A nielen grafiky ale aj iné, mody, sprajty, znaková sada atď. Keď robíš drobné veci tak riešíť ešte alokáciu pamäte a HDD loader pre rôzne data je asi aj zbytočné. Aj keď na druhej strane je to také profi

    Ako si ty pripravuješ obrázky ? Používaš ich uložené nekomprimované ? Alebo ich konvertuješ do RAW a potom "INCBIN-tneš" do kódu ?

    Vložit komentář:


  • Lisiak
    odpověděl
    Ja si to asi povkladam primo do kodu jak jsem psal ty bitplany. AI se tvari, ze pristup k datum pomoci INCBIN nebo vlozenim do kodu je flexibilnejsi / lepsi nez pomoci INCIFF, ale asi to nebude pravda? Já dneska prubnul instrukci MOVE.W #$00F, 2(DFFxxx) tak nic no

    Jenze ja jsem asm slabsi jedinec, tak se nekomu kdo je zbehlesi zda normalni neco co mne se normalni nezda. Na rozsah grafickych dat se kterymi hodlam pracovat je povytahovani grafiky do kodu si myslim ok, jine by to bol u komplexnejsich grafickych obrazku.

    Vložit komentář:


  • ObiWanKen
    odpověděl
    Lisiak Ak by si mal záujem o RLE depacker. Nie je to môj výtvor a ani ho nemám otestovaný. Možno stojí za otestovanie.



    Code:
    ;
    ; ILBM to RAW.
    ;
    ; IN:
    ; D0 - Size.
    ; A0 - Source.
    ; A1 - destination.
    ;
    ; OUT: N/A
    ;
    
    ILBMtoRAWdemo
                       lea SourcePic,a0
                       lea DestPic,a1
                       move.l #1424,d0
    
                       bsr RLEDecrunch
              rts
    
    
    
    
    RLEDecrunch
                       moveq #$00,d2
                       move.b (a0)+,d2
                       bmi Pixels
    CopyPixs
                       move.b (a0)+,(a1)+
                       subq.l #$01,d0
                       dble d2,CopyPixs
                       bra NoPixel
    Pixels
                       neg.b d2
                       move.b (a0)+,d1
    CopyRepeat
                       move.b d1,(a1)+
                       subq.l #$01,d0
                       dble d2,CopyRepeat
    NoPixel
                       tst.l d0
                       bgt RLEDecrunch
              rts
    
    ILBMColorsLoop
                      moveq    #$00,d0
                      move.b    (a0)+,d0
                      lsl.w    #$04,d0
                      move.b    (a0)+,d0
                      and.b    d6,d0
                      move.b    (a0)+,d1
                      lsr.b    #$04,d1
                      or.w    d1,d0
                      move.w    d0,(a1)
                      add.w    #$04,a1
                      dbra    d7,ILBMColorsLoop
             rts
    
    ​
    SourcePic incbin 'dh1:work/pictures/BoingBall.iff'
    
    DestPic blk.b 8192,00

    Vložit komentář:


  • ObiWanKen
    odpověděl
    Len pre ukážku jednoduchosť použitia.

    Code:
    ; Show screen.
    
    include 'Work:MyProjects/Assembler/Includes/Custom.i'
    include 'Work:MyProjects/Assembler/Includes/Offsets.i'
    
    Begin
    
    Section MainCode,Code_F ; Code to Fast memory
    
    ; Set VRam pointer
    
              move.l #MyVRam,d0
              move.w d0,MyCopperPlanes+6
             swap d0
             move.w d0,MyCopperPlanes+2
    
    ; Clear sprites DMA
    
              move.w #$0020,$dff096 ; DmaCon / No Sprites
    
    ; Start MyCopper list
    
               lea MyCopperStart,a1
               move.l a1,$dff080 ; Cop1LcH
               move.w #$0000,$dff088 ; CopJmp1
    
    ; Wait LMB
    
               WaitLMB
    
    ; Restore system copper list.
    
               move.l $04,a6 ; Exec base
               move.l $9c(a6),a1
               move.l $26(a1),$dff080 ; Cop1LcH
    
    Exit
              rts
    
    ;
    ; My Copper list.
    ;
    
    Section MyCopper,Data_C ; Copper list to Chip memory
    
    MyCopperStart
               dc.w $01fc,$0000 ; FMode
    
               dc.w $0100,$1000!$8000 ; BplCon 0 / 1 Bitplane / HiRes
               dc.w $0102,$0000 ; BplCon 1
               dc.w $0104,$0000 ; BplCon 2
              dc.w $0106,$0000 ; BplCon 3
              dc.w $010c,$0011 ; BplCon 4
    
              dc.w $0108,$0000 ; Bpl1Mod
              dc.w $010a,$0000 ; Bpl2Mod
    
              dc.w $0092,$003c ; DDF Start HiRes
              dc.w $0094,$00d4 ; DDF Stop HiRes
    
              dc.w $008e,$2861 ; DIW Start
              dc.w $0090,$28c1 ; DIW Stop
    
    ; Planes
    
    MyCopperPlanes
               dc.w $00e0,$0000 ; Bpl1PtH
               dc.w $00e2,$0000 ; Bpl1PtL
    
    ; Sprites
    
    MyCopperSprites
                dc.w $0120,$0000 ; Spr0PtH
                dc.w $0122,$0000 ; Spr0PtL
    
    ; Colors
    
    MyCopperColors
               dc.w $0180,$0000 ; Color 00 / Black
               dc.w $0182,$00f0 ; Color 01 / Green
    
    ; Copper end
    
              dc.l -2 ; End
    
    MyCopperEnd
    
    ;
    ;
    
    MyVRam
    
               inciff "Work:MyProjects/Pictures/Pic_01.iff",RN,N,ECS
    
    MyVRamEnd
    
    PrintT 'VRam Size : '
    PrintV MyVRamEnd-MyVRam


    Vložit komentář:


  • ObiWanKen
    odpověděl

    Autorem citovaného textu je Lisiak Přejít na původní příspěvek

    Diky za tip,
    tohle bude urcite fajn na nejake vetsi obrazky, ale v ramci mensich jednoduchych obrazku zustanu u toho, ze si vykopiruji data bitplanu z obrazku IFF primo do kodu a barvy urcim v kodu taky. Melo by to si myslim mit i imensi rezii na CPU vuci INCIFF ?

    Ty v te sve hre nacitas i data k postavam pomoci INCIFF ?

    Je to vhodné na všetky obrázky. Tieto data sa jednoducho naimportujú pri kompilácii a CPU už ďalšie zaťaženie nemá.

    Niektoré gfx data som robil po starom (IFF Master) ale toto je pre mňa super.
    Naposledy upravil ObiWanKen; 01.08.2025, 16:14:53.

    Vložit komentář:


  • ObiWanKen
    odpověděl
    Autorem citovaného textu je Defor Přejít na původní příspěvek
    To jsou mi vymoženosti Předpokládám, že to INCIFF dělá načítání, dekompresování (ILBM používá RLE kompresi) a případně de-interleaving při kompilaci assembleru. Takže to jen zpomaluje assembler. :
    Spomalenie a náročnosť nie sú nijak citeľné. Chová sa to presne ako INCBIN. V starých časoch som musel každý obrázok konvertovať do RAW cez rôzne utility a nakoniec som skončil pri IFF-Master 1.0 od Arcane. Ale táto cesta mi vyhovuje najviac. IFF-Master 1.0 používam keď chcem/potrebujem k obrázku vytvoriť masku pre blitter, ale aj toto riešim často krátkou rutinou.

    Vložit komentář:

Zpracovávám...
X