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 SUBVoisi 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.