Eli en saa bsavea pelittämään kunnolla.
Screen 12 : Width 80,60 Locate 10,10:Print "Jotain" DefSeg = &HB800 Bsave "Jotain.tmp", 0 , 9600 Sleep 2 Cls Bload "Jotain.tmp",0 Sleep 2
edit:
Joo keksein että sen pitää olla
Def Seg = 0xA000
Mutta nyt tulee "Expected:expression or end of statement".
Olet oikeilla jäljillä. Grafiikkatiloissa kirjoitetut merkit menevät suoraan grafiikkamuistiin, eikä tekstimuisti muutu mitenkään. Sen takia sinun pitää tosiaan tallentaa grafiikkamuistin sisältö, oikea segmentinmääritys on:
DEF SEG = &HA000
Näyttö täytynee tosin tallentaa useammassa osassa, koska kerrallaan BSAVE pystyy tallentamaan ainoastaan 65535 tavua. Eri osat pystyt valitsemaan samalla tavalla segmentin avulla, &HA000:han osoittaa näyttömuistin alkuun.
Joo, nyt ohjelma ei katkea virheilmoitukseen mutta ei se sitä kuvaa siihen uudestaan piirräkkään. Ruutu pysyy mustana ensimmäisen CLS käskyn jälkeen.
Kun (jos) saan tuon pelittämään niin pystyykö muuten Bloadatusta kuvasta lukemaan Screen x,y käskyllä ascii merkin?
Tuo qb:n oma helppi on aikas huono. Pitäisi siis saada osa ruudusta talletettua. Ehkä jokin dimmaus tai peek voisi olla helpompi mutta käyttäisin mieluummin tiedostoa muistin säästämiseksi.
edit:
Joo, muutin systeemiä niin että käytän Screen 0.
Heti alkoi toimimaan ja suht helposti.
lainaus:
Kun (jos) saan tuon pelittämään niin pystyykö muuten Bloadatusta kuvasta lukemaan Screen x,y käskyllä ascii merkin?
Kyllä pitäsi pystyä, jos vain alkuperäisestäki pystyy.
lainaus:
Pitäisi siis saada osa ruudusta talletettua. Ehkä jokin dimmaus tai peek voisi olla helpompi mutta käyttäisin mieluummin tiedostoa muistin säästämiseksi.
Eipä taida onnistua tuo yhdellä BSAVE:lla ellei tallennettava osa ole koko ruudun levyinen. Graafisessa tilassa voisi tietysti GET:llä ensin kaapaata osan ruudusta ja tallentaa sitten saadun datan BSAVE:lla. Mutta jos kerran sait tämänkin jo toimimaan, niin ei kai sillä sitten enempää väliä...
Merkkien lukeminen onnistuu myös ladatusta kuvasta, koska QB päättelee merkin suoraan näytöllä olevien pikseleiden perusteella.
Pystyykö muuten screen x,y käskyllä ottamaan myös taustavärin talteen.
Muuttuja = Screen (10,10,1)
tallettaa siis 10,10 kohdan värin talteen. Millä keinoin saisi myös taustavärin talteen? (Screen 0: Color 1,2)
Eipä taida onnistua SCREEN-funktiolla, mutta värin voi lukea silti suoraan tekstimuistista. Kun olet ensin määrittänyt segmentiksi &HB800, voit lukea tietyn merkin värin seuraavasti:
vari% = (PEEK((y% - 1) * 80 * 2 + (x% - 1) * 2 + 1) AND &H70) \ 16
Tekstimuistissa jokaista merkkiä vastaa kaksi tavua, joista ensimmäinen ilmoittaa merkin koodin ja toinen sen värin. Piirtoväri on tallennettu neljään bittiin, ja se on luku väliltä 0 - 15. Taustaväri taas on tallennettu kolmeen bittiin, minkä takia se voi olla vain 0 - 7. Tavun kahdeksas bitti merkitsee vilkkumista.
Joo, sen verran sain tuossa leikkiessäni selville että Screen käskyllä se ei onnistu. Pitää siis hyödyntää tuota antamaasi esimerkkiä.
Kiitoksia...
...taas =)
Aihe on jo aika vanha, joten et voi enää vastata siihen.