Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: QB: ERITTÄIN nopea bmp lataus

Sivun loppuun

sooda [30.11.2003 11:19:02]

#

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

Antti Laaksonen [01.12.2003 17:30:37]

#

Voisi olla paikallaan selittää, mitä nuo konekieliset komennot tekevät.

rndprogy [01.12.2003 18:19:59]

#

Näyttää ton kuvan ihan ihmeellisesti. kuva menee jotenki visp visp

Wukkopi [02.12.2003 10:23:26]

#

Eipä toiminut itsepiirtämälläni kuvalla XP:ssä...

sooda [02.12.2003 12:33:23]

#

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.

hunajavohveli [26.02.2004 19:53:00]

#

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.

sooda [07.03.2004 12:50:57]

#

käynnistä komentoriviltä: qb.exe /l niin ottaa erikoiskirjastot käyttöön.

Juhko [27.10.2006 15:22:22]

#

Ois kiva jos näkis muutakin kuin mustaa...

moptim [11.11.2006 12:41:01]

#

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.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta