Oznámení

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

Assembler - všeobecná logika

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

  • 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ář:


  • Defor
    odpověděl
    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. V devadesátkách bych to na svých tehdejších procesorech v Amigách dělat nechtěl. Ale dneska v emulátorech se to asi ani nepozná.
    Ale zahanbujete mne chlapci. Já jsem stará konzerva. Stáhnul jsem si open-source libIFF a libILBM knihovny, přeložil si je a na windowsech si v céčku IFF obrázky vždy načtu, udělám si s nima, co potřebuju, a uložím jako binárku, kterou pak do assembleru dostávám přes INCBIN. Za starých dobrých časů na to byly na Amize mraky různých "demo" konvertorů. Každý si nějaký udělal, a pak je cpal na Aminet. Zlaté časy

    Vložit komentář:


  • Lisiak
    odpověděl

    Autorem citovaného textu je ObiWanKen Přejít na původní příspěvek
    Ak chceš vložiť obrázok do ASM tak je na to direktiva priamo v assemblery.

    INCIFF "cesta",RN,B,ECS

    RN/RB - Raw Normal alebo Raw Blitter.
    B/A/N - Kde majú byť uložené farby Before, After, None.
    ECS/AGA - Farebna paleta.

    Priklad:
    Code:
    IncIff "DH0:ornela.iff",RN,B,ECS
    Nahrá obrazok zo zadanej cesty vo formate raw normal / definicia farieb bude uložená pred samotným obrázkom, takže prvých 64 bytes budú farby vo formate 0RGB.
    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 ?

    Vložit komentář:


  • ObiWanKen
    odpověděl
    O umiestnenie dát na to správne miesto sa postará AmigaDOS hneď pri nahraní. Assembler má na to "direktívu", sú tuším tri typy Chip/Fast/Public a podľa toho ich umiestňuje do tej správnej pamäte.
    Na ostatné veci sú v mape "commands" ktoré nie je bežne vidieť, vo verzii s MODs sú všetky mody uložené vo fastke a len tá hudba ktorá je prehravaná sa kopíruje z fast do chip. Vo verzii s WAV je hudba len vo fastke a "ručne" posielané do audio HW.

    Tu je video so zobrazenými príkazmi (aj keď viem keď chcem prechádzať cez steny a zabíjať NPC pre potreby testovania).

    Napr.
    C1 je neprechodná pre hráča a NPC.
    C2 je neprechodná pre NPC.
    M - kové su AMMO a pod.
    T - čkove teleport.
    A - zmena audia.

    ATD.







    Demo tu: https://drive.google.com/file/d/143w...ew?usp=sharing dúfam že to je funkčné (link), demo som zatiaľ netestol na realHW.

    Naposledy upravil ObiWanKen; 31.07.2025, 20:59:47.

    Vložit komentář:


  • davesade
    odpověděl
    Jak se to pak dostava z FastRAM do CHIP? Jakoze podle ceho delas presun dat, podle pozice na mape nebo nejak jinak?

    Vložit komentář:


  • ObiWanKen
    odpověděl
    Všetko je nahrané na jeden krát (jeden súbor). GFX do chipmem a zvyšok do fastmem.

    Vložit komentář:


  • kulich.bulich
    odpověděl
    Moc pekna prace. Jenom zvidava otazka. Ty assety (sprity a graficke objekty) jsou loadovane najednou nebo se nejak prubezne nahravaji a uvolnuji podle pohybu hrace?

    Vložit komentář:


  • ObiWanKen
    odpověděl
    Doplním, ale zatial som na dovolenke asi 4 dni.

    Vložit komentář:


  • davesade
    odpověděl
    Kde ze se mohu dostat k downloadu?

    Vložit komentář:


  • ObiWanKen
    odpověděl
    Upravil som poslednú verziu CG aby prehrávala WAV-ka.
    16kHz audio už spomaľuje dosť citeľne, preto v deme používam 11kHz audio/SFX a niekde je už vidieť spomalenie ale nie je to nič hrozné (na 68020/14mHz). Hlavne na miestach kde je viacej NPC a top-layer objektov. Pri 8kHz je už kvalita zvuku tragická. Celá audio knižnica je uložená vo fast-mem a má viac ako 8mb.
    Ešte by to chcelo testnúť na skutočnom železe.


    Vložit komentář:

Zpracovávám...
X