Nopein bmplaturi minkä olet eläissäsi nähnyt. Kopioi kuvan asmilla suoraan näyttömuistiin. Modaa jos tahdot mutta älä syytä mua jos koneesi kaatuu(mulla romahti parikin kertaa). Lataa vain 320x200x256 kuvia, mutta tosi nopeasti.
Hullua!
DECLARE SUB KopioiMuisti (alkusegi%, alkuoffsetti%, minnesegi%, minneoffsetti%, tavut%) DECLARE SUB Paletti (Slot%, R%, G%, B%) DIM SHARED Puhveri(319, 199) AS STRING * 1 DIM SHARED Datakset AS STRING * 1 'tämä toimii vain ja ainoastaan 320x200 kuvilla 'jos haluat muuttaa niin ole hyvä vaan 'oma koneeni kaatui kun yritin... :( 'jos haluat riskeerata niin vaihda nämä 200 ja 320 ja KopioiMuistin viimeinen 'argumentti näiden tuloksi(lev*kork) mutta laita luku suoraan heksana 'muuten kaatuu rankasti(ainakin mulla) :P DIM SHARED KuvaData(200) AS STRING * 320 DEFINT A-Z CLS t$ = "k:\kuvat\bmp2.bmp" 'INPUT "Tiedosto: ", t$ OPEN t$ FOR BINARY AS #1 IF LOF(1) < 2 THEN PRINT "Knääs, ei sitä ole.": KILL t$: END GET #1, 54, Datakset 'siirretään osoitin oikeaan kohtaan SCREEN 13 FOR Slot% = 0 TO 255 'säädetään väripaletti GET #1, , Datakset B% = INT(ASC(Datakset) / 4) GET #1, , Datakset G% = INT(ASC(Datakset) / 4) GET #1, , Datakset R% = INT(ASC(Datakset) / 4) Paletti Slot%, R%, G%, B% 'setataan yks GET #1, , Datakset NEXT Slot% FOR Y = 199 TO 0 STEP -1 GET #1, , KuvaData(Y) 'hankitaan itse kuvadatakset NEXT CLOSE 'ja sitten kuva näytölle KopioiMuisti VARSEG(KuvaData(0)), VARPTR(KuvaData(0)), &HA000, 0, &HFA00 SUB KopioiMuisti (alkusegi%, alkuoffsetti%, minnesegi%, minneoffsetti%, tavut%) 'asmilla tehty muistin kopiointi jutska asmi$ = "" asmi$ = asmi$ + CHR$(85) asmi$ = asmi$ + CHR$(137) + CHR$(229) asmi$ = asmi$ + CHR$(30) asmi$ = asmi$ + CHR$(139) + CHR$(70) + CHR$(10) asmi$ = asmi$ + CHR$(142) + CHR$(192) asmi$ = asmi$ + CHR$(139) + CHR$(70) + CHR$(14) asmi$ = asmi$ + CHR$(142) + CHR$(216) asmi$ = asmi$ + CHR$(139) + CHR$(118) + CHR$(8) asmi$ = asmi$ + CHR$(139) + CHR$(126) + CHR$(12) asmi$ = asmi$ + CHR$(139) + CHR$(78) + CHR$(6) asmi$ = asmi$ + CHR$(243) asmi$ = asmi$ + CHR$(164) asmi$ = asmi$ + CHR$(31) asmi$ = asmi$ + CHR$(93) asmi$ = asmi$ + CHR$(203) 'venaus jutska näytöltä WAIT &H3DA, 8 'hypätään asmohjelmaan DEF SEG = VARSEG(asmi$) 'ja kutsutaan sitä CALL Absolute(BYVAL alkusegi%, BYVAL alkuoffsetti%, BYVAL minnesegi%, BYVAL minneoffsetti%, BYVAL tavut%, SADD(asmi$)) 'takaisin DEF SEG END SUB SUB Paletti (Slot, R, G, B) OUT &H3C8, Slot OUT &H3C9, R OUT &H3C9, G OUT &H3C9, B END SUB
Voisi olla paikallaan selittää, mitä nuo konekieliset komennot tekevät.
Näyttää ton kuvan ihan ihmeellisesti. kuva menee jotenki visp visp
Eipä toiminut itsepiirtämälläni kuvalla XP:ssä...
Joo ja qbx:ssä ei toimi kun noi absoluutit ei toimi siinä kunnolla. ja toi asmi on sellanen muistinkopiointisäätö... ja kuvien pitää olla 320x200kokosia ja 256väriä tai ne menee visp visp.
Ei toimi 4.5 myöskään nuo absoluutit. Sanoo vaan, että "Subprogram not defined". Ihmettelen vaan, että miksi se niin sanoo. Eikö se muka tajua, ettei Absolute oli aliohjelma? Ja löytää se sen käskyn Helpistä kuitenkin.
käynnistä komentoriviltä: qb.exe /l niin ottaa erikoiskirjastot käyttöön.
Ois kiva jos näkis muutakin kuin mustaa...
Oletko käynnistänyt parametrillä /l, Juhko?
Ja kuvan pitäisi olla K-nimisellä levyllä, jos tuota ei ole muokattu.
EDIT: minulla toimi WinXP ilman DOSBoxia (koska minä en ole saanut DOSBoxia toimimaan :P) ja nopea oli (hyvä sooda)
EDIT2: katos vaan, joo DOSBox toimii nyt. Sillä en oo kokeillut tätä laturia. Mutta se on ainut konsti pelata Lada teh ultimate challengea.
Aihe on jo aika vanha, joten et voi enää vastata siihen.