Blitzbasic koodailua Asmia tunteville

Saku-foorumi » Classic Amiga » Ohjelmointi » Viestit 2008 » Blitzbasic koodailua Asmia tunteville « Edellinen Seuraava »

Kirjoittaja Viesti
 

JPQ
Perjantaina, 7. marraskuuta, 2008 - klo 17.15:   
Blitzbasicin ohjeissa kaksi rutiinia jota haluaisin monipuolistaa eli asmilla tehty nopea ekan bittitason tilan kääntö 0=1 ja 1=0 ja sitten ekalle bittitasolle tapahtuva pikselin piirto ? miten voisin modata noita niin että saisin samat kakkos bittitasolle hommansa tekeviksi. vaikka niin että oletaan että resoluutio joku kiinteä vaikka 320x256.
mietin onko blitzbasicilla ekan bittitason perässä heti toisen grafiikat jne jos on niin helpohko lisäys (320x256 tilan kanssa kait 10240... tämä muistikuvana tosin) ekan alkuosoitteeseen hoitanee homman.

 

JPQ
Perjantaina, 7. marraskuuta, 2008 - klo 17.30:   
Ai niin voinen naputella koodit tänne jos joku tarvitsee....

 

allu
Lauantaina, 8. marraskuuta, 2008 - klo 20.20:   
Bittitasot voipi olla myös "rinnakkain". Helpottaa blitterin käyttöä.

Itseltä löytyy Blitzbasic 2.1 ohjekirja. Miltä sivulta mainitsemasi asmi löytyy?

Tai pastee se pätkä tänne.

 

JPQ
Maanantaina, 10. marraskuuta, 2008 - klo 0.18:   
allu: jos sama blitzbasic versio niin ohjeissa sivuilla (näyttäis olevan sama) eli bittikartan kääntö koodi on sivulla 62 ja nopea pikselipiirto 63.
ps. rinnakkain tarkoitat kait lomittain no niin voi olla kyllä minä sen tiedän että kahdella tapaa voi olla. oletan blitzbasicin tapauksessa vaan koodin yksinkertaisuutta (jotain asmista tajuan kun ei ole intel...) ajatellen lienee tuolla sanomallani tavalla.
ps. varsinkin pikselin piirto tarpeen mutta kyllä toinenkin täytyy katsoa jos sais blitzillä demoa väänettyä aikansa kuluksi... (piirisarja tuo omat haasteensa jne miksi kiinnostaa).

 

allu
Maanantaina, 10. marraskuuta, 2008 - klo 1.28:   
Teen oletuksen että blitzin bitmap objekti on samanlainen kuin graphics.libraryn BitMap structure.

Eli, seuraavanlainen:
struct BitMap
{
UWORD BytesPerRow; // offset 0
UWORD Rows; // 2
UBYTE Flags; // 4
UBYTE Depth; // 5
UWORD pad; // 6
PLANEPTR Planes[8]; // 8
};

inverse:
GetReg d0,Addr Bitmap(0)
MOVE.l d0,a0 ; bitmap structuren osoite
MOVEM (a0),d0-d1
MULU d0,d1 ; d1 <= BytesPerRow * Rows (lohkon koko tavuina)
LSR.l #2,d1 ; jaetaan 4:llä, saadaan lohkon koko longeina
SUBQ #1,d1
MOVEq #7,d2
AND.w 4(a0),d2 ; Depth
SUBQ #1,d2
LEA 8(a0),a0 ; bittitaso osoitetaulukon alku
bp_loop:
MOVE.l (a0)+,a1 ; bittitason osoite
MOVE.w d1,d0
inv_loop:
NOT.l (a1)+
DBRA d0,inv_loop
DBRA d2,bp_loop
Return


Rem HUOM! uutena parametrina asetettavan pikselin bitit(käytännössä väri)
Statement qplot(bmap.l,x.w,y.w,p.w)
; d0 = bitmap
; d1 = x
; d2 = y
; d3 = p
MOVE.l d0,a0 ; bitmap structuren osoite
MOVEq #-1,d0
EOR.w d1,d0 ; d0 <= asetettavan bitin numero
; blitzin esimerkissä näyttäisi olevan bugi. Siksi tein ensin moveq:n ja sitten eorin.
; jollei siinä olekaan bugia, ja muistan jotain väärin, niin korvaa moveq ja eor käskyllä MOVE.w d1,d0
LSR.w #3,d1
MULU (a0),d2 ; d2 <= BytesPerRow * y
ADD.w d1,d2 ; asetettavan pikselin tavuoffset
MOVEq #7,d1
AND.w 4(a0),d1 ; Depth
SUBQ #1,d1
LEA 8(a0),a0 ; bp taulukon alku
bp_loop:
MOVE.l (a0)+,a1
BTST #0,d3
BNE clear ; voi olla myös olla BEQ, en muista
BSET.b d0,(a1,d2.w)
BRA set
clear:
BCLR.b d0,(a1,d2.w)
set:
LSR #1,d3
DBRA d1,bp_loop
End Statement

 

allu
Maanantaina, 10. marraskuuta, 2008 - klo 1.33:   
prkl, heti huomasin optimoitavaa. Sen siitä saa kun kirjottaa kokeilematta :|

Korvaa seuraava pätkä:
BTST #0,d3
BNE clear ; voi olla myös olla BEQ, en muista
BSET.b d0,(a1,d2.w)
BRA set
clear:
BCLR.b d0,(a1,d2.w)
set:
LSR #1,d3


pätkällä:
LSR #1,d3
BCC clear
BSET.b d0,(a1,d2.w)
BRA set
clear:
BCLR.b d0,(a1,d2.w)
set:

 

JPQ
Maanantaina, 10. marraskuuta, 2008 - klo 7.02:   
onkohan toi pikselin piirto nyt värillä toimiva kun bittitason numerolla toimivaa tarvitsin... ja sitten yksittäisten bittitasojen tilan kääntöä.
ps. minusta blitzbasicin bittikartta strukti aika sama kun käyttiksessäkin näin muistelen.
ps. blitzbasicin ohjekirjan koodeja olen käyttänyt niin että ongelmia ei ole tullut.

 

allu
Maanantaina, 10. marraskuuta, 2008 - klo 15.13:   
Pikselin piirto tosiaankin on "värillä" toimiva. Mutta pystynet pikkuviilauksilla muokkaamaan haluamaksesi. Jos toi nyt toimii ollenkaan. Kokeile ja kerro.

 

JPQ
Tiistaina, 11. marraskuuta, 2008 - klo 3.56:   
allu: katsotaan. ja asm ei ole heiniäni.

Lisää viestisi tähän
Viestisi:
Käyttäjätunnus: Postitus informaatiota:
Tämä on yksityinen keskustelupalsta. Vain rekisteröidyt käyttäjät ja moderaattorit voivat postittaa tänne.
Salasana:
valinnat: Aktivoi URL:t automaattisesti tässä viestissä
Toimenpide: