Autorem citovaného textu je ObiWanKen
Přejít na původní příspěvek
Oznámení
Sbalit
Aktuálně žádná oznámení.
Assembler - všeobecná logika
Sbalit
X
-
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.
- Poděkování 1
-
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 ?
- Poděkování 1
Vložit komentář:
-
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ář:
-
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ář:
-
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ář:
-
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, 15:14:53.
Vložit komentář:
-
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.Autorem citovaného textu je Defor Přejít na původní příspěvekTo 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. :
Vložit komentář:
-
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
- Poděkování 1
Vložit komentář:
-
Diky za tip,Autorem citovaného textu je ObiWanKen Přejít na původní příspěvekAk 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:
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.Code:IncIff "DH0:ornela.iff",RN,B,ECS
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ář:
-
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, 19:59:47.
- Poděkování 3
Vložit komentář:
-
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ář:
-
Všetko je nahrané na jeden krát (jeden súbor). GFX do chipmem a zvyšok do fastmem.
- Poděkování 1
Vložit komentář:
-
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ář:
Vložit komentář: