Anonymní profil Marek17 – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Marek17 – Programujte.comAnonymní profil Marek17 – Programujte.com

 

Příspěvky odeslané z IP adresy 84.245.95.–

C / C++ › importer map nitemare3D-wolf…
26. 10. 2014   #195244
C / C++ › importer map nitemare3D-wolf…
26. 10. 2014   #195243

Potreboval by som spravit importer map z Nitemare3D do Wolfensteina 3D(vo formate Floedit maps).

Vsetky veci upresnim ,pridam tabulky z excelu.

Kedze mapeditor nebol vhodny alebo dobry,rozhodol som sa pre konverziu do ineho formatu.

Nitemare3D ma vlastne 3 druhy map s koncovkami .1 .2 .3 kazda ma ale inu hlavicku o velikosti 514 bitov.

Mapy su velke 8192 bitov. Flooedit ma tiez hlavicku ale velku iba 9 bitov. Potom nasleduju jednotlive mapy.

zacina sa to zdi konci u objektoch. medzi kazdym objektom a zdi je formatovanie (00). Teda 8192x2=16384bitov

Nitemare3D pouziva iny system zdi,Object.

1.Episoda 11 Map

2.Episoda 10 Map

3.Episoda 10 Map

Inzerce › Mistrovství v C++ - Stephen…
5. 10. 2013   #181992

Predam knihu o programovani .

cena 30 Euro.

cislo: +421 944 455 899

Email: Semjase777 @ gmail .com

C / C++ › konverzia dat do inej podoby
22. 6. 2013   #178351

no uz som na to dosiel.

vytvoril som si teda makro ,nahral som teda niekolko klavesovych skratiek.

CTRL+G

cislo vyhladavanej adresy (NUM 0 teda)

NUM Enter

CTRL+C

CRTL+TAB

CRTL+V

NUM0

NUM0

CRTL+TAB

kedze to makro by bolo velmi dlhe a pracne spracovanie necham to tak. Premyslam nad tym ,ze zdi sa opakuju N+2,a objekty N+1.(Vsetky zdi maju parne cislo,objekty neparne cislo)

Chcel som spravit script ale neviem ako?

V obrazku su pisane konecne dlzky(kde to teda konci)

Hore na obrazku je napisana hlavicka v hexadecimalnom prevedeni , cislo 3100xxx je cislo mapy, pre kazdu mapu tam bude ine cislo . Tam to je napisane.

Trvalo mi zopar dni pokym som zistil kde maju konce zdi a objekty oboch hier.

C / C++ › konverzia dat do inej podoby
18. 6. 2013   #178194

ciastocne by som si to vedel spravit cez Hex editor Neo s pomocou Makra.    sice je mozne ze by to dlho trvalo.

co tym myslis specifikaciu suborov?

Mam napisat vsetky pointery alebo zlozenie celeho tela suboru?

nechapem co chces odo mna

*najneskor az zatra sa k tomu vratim.

hlavicky ku kazdej mapy Wolfensteina nebude problem, problemom bude napisat 16 000 adries.

C / C++ › konverzia dat do inej podoby
18. 6. 2013   #178187

subory som orezal o 514 bytov a rozdelil cez TotalCMD na mensie casti uz len pohrat sa s obsahom.

C / C++ › konverzia dat do inej podoby
18. 6. 2013   #178186

no dobre nebudem to natahovat .

potrebujem nejaky script do Hex editor neo alebo nejakeho programu ktory vie najst dane adresy a odkazat ich ako v Exceli ,potom tieto adresy dat expertovat ako binarny subor.

Moze to byt aj C++ , chcem len vyhladat zopar adries a zapisat ich v inom poradi , samozrejem do toho pridat aj nejaky syntax wolfa a to formatovanie nul.

C / C++ › konverzia dat do inej podoby
16. 6. 2013   #178055

format map nitemare3D

prva je hlavicka ,ma dlzku 514 bytov

vsetky mapy maju konstatnu dlzku 8192 bytov

hlavicka wolf mapy v hexa 4345 7631 2E32 3300 0201 0000 0040 0040 0010 576F 6C66 3120 4D61 7031 TUTO SOM DOPLNIL 3939 3939 39

inak by boli na miesto tych poslednych 39 len same 00. 

zacinaju prve zdi napridlad 0C (je v ceprev 12- wood wall) potom je tam 00 to na pozici X0Y0 

na adrese dec.34 (00 na dec.35)

na x1y0 zacina dalsi blok zdi, a to 01 grey wall . Ten sa nachadza na dec. adrese 36 (00 na dec.adrese 37)

zdi koncia na adrese Dec.8224 (hexa 2020) za nou 00 na 8225

x63y63

Objekty zacinaju x0y0 na dec.adrese 8226 (teraz je tam hexadec hodnota 2B - dec.43 gold key) potom 00 na dec.8227 stale v pozicii x0y0

x1y0 na decimalnej adrese 8228 zacina to iste 2B ,potom 00 na dec.8229

cele to konci v x63y63 na adrese dec.16 416 a 00 na 16 417 (cela mapa ma dlzku 16 417bytov)

bude treba rozdelit pointery na skupiny typu zdi ,objekty ,a formatovanie (00)

Nitemare 3D nepouziva ziadne 00 za zdi a objektami. Tam ich bude nutne zmazat,a spatnou konverziou do ceprev zas vlozit,lebo by nepoznalo formatovanie mapy.

z Map.1 - az MAp.3 bude treba odstranit tie hlavicky o dlzke 514 ,pripadne ich dat zalohovat do ineho suboru,alebo vytvorit novy.

zostane len subor o velkosti map.1 =90 112 bytov a map.2 map.3 = 81 920 bytov.

Kedze vsetky subory nemaju rovnaku dlzku bude treba stanovit rozsah 10 az 11 levelov (kazdy je o dlzke 8192bytov)

potom ich rozsekat na male casti o dlzke 8192bytov.

(toto bych vedel spravit aj v TotalCMD ale tych 514bytov mi robi problemy)

****

Vlozit tu hlavicku co som popisal v  citacii , je jasne ze tam nebudu same 9999.

nebude tam Wolf1 Map1 ale Nitemare3D Map01 az po Map11

Skusal som to , program zoberie taky dlhy nazov.

alebo skrateny format N3D Map1 alebo Nite3D Map1 ....

******

Uvedomil som si ze mapy z Nitemare 3D budu orezane o tu hlavicku tak potom -514. nie 8707 ale 8192.

potom don staci dopisat tu hlavicku , poprehadzovat udaje tak aby boli ako v W3D.

dobre ,nebudem tu rozspisovat vsetky hodnoty je toho plno. Chcelo to trocha casu, na zistenie tych hodnot. v tom zipku je jeden excel subor tam v 3 zosite su vypisane vsetky decimalne a hexadecimalne hodnoty.

http://ulozto.sk/xk7DameW/zoznamzdrojov-zip

C / C++ › konverzia dat do inej podoby
15. 6. 2013   #178045

popisem vam strukturu Nitemare 3D mapy.

episoda 1 = 11 levelov  = 90 262 bytov

episoda 2 a 3 = 10 levelov = 82 434 bytov

hlavicky kazdej episody maju ine data ale vzdy rovnaku dlzku po dec.adresu 513.

od dec.adresy 514 zacina mapa 01 (ALEBO 1:1) ,

****

MAP01

wall X0Y0 dec.adresa 514 (hexa 202)

Object X0Y0 dec.adresa 515 (hexa 203)

wall X1Y0 dec.adresa 516 (hexa 204)

Object X1Y0 dec.adresa 517 (hexa 205)

wall X2Y0 dec.adresa 518 (hexa 206)

Object X2Y0 dec.adresa 519 (hexa 207)

*....koniec prvej mapy na

wall X63 Y63 dec.adresa 8705 (hexa 2201)

object X63 Y63 dec.adresa 8706 (hexa 2202)

MAP02

object

*format z nitemare3d mam ulozeny v xls dokumente ale este potrebujem zisit format Wolf3D cez program ceprev 1.27

*** najprv ide zdi a potom za nou objekt. W-O-W-O.

cela mapa ma 64x64x2 (treba ratat zdi a objekty) = 8192 + 514 = 8 706

x63 y63 = 8705 pre zdi

x63 y63 = 8706 pre objekty

Konec X63Y63 bude na dec.adrese 8 706 (kedze vsetko sa zacina 0 a nie 1)

druha mapa Map02 zacina na dec.adrese 8706+1 = 8707

x0y0 dec.adresa

X63Y63

ZDI adresa dec. 8190

Objekty adresa dec. 8191

potom mozem upravovat mapy v Chaos edit 1.23(zrejme bude treba spravit vswap s def.grafikou,paletou, mapou objektov a zdi)...pripadne ich dat na konverziu do Doomu

http://www.alice-dsl.net/…prev1_27.zip

http://uloz.to/xnMhoou/map-zip
- - 
Reklama
marek17
Návštěvník
0
NOVÝ   10. 11. 2012   #2

ESTE dodam :

pojde o program ktory bude mat dve moznosti konverzie a 3 moznost canel.

1.moznost rozpisem, mapa je velika 90 626 bytov alebo 82 434 bytov (teda su tu dve moznosti 11 Levelov a 10 Levelov)

ak ratam cely subor, hlavicku vynecham (pojde len o prepis dat). Prva mapa zacina na dec.adrese 514

Mapa 1
Walls(decimalne adresy):
514 516 518 az po 8706

Objects(decimalne adresy)
515 517 519 az po 8707

Mapa 2
Walls(decimalne adresy)
8708 8710 8712 az po 16900

Objects(demialne adresy)
8709 8711 8713 az po 16901

kazda ma velikost 8192


mapa WOlfa3D extraktovana cez Cep1.23 ma velikost 16 418bytov. Telo suboru:

hlavicka: ma velikost 33znakov , v hornom prispevku je napisana v Hexa, od adresy dec.18 bude ina. E1M1 alebo MAP1,pripadne bude moznost napisat vlasny nazov do dlzky 16 znakov.

telo: ZDI

na dec.adrese 33 zacina znak prvej zdi na x0y0 ,dalej pokracuju  00 tie su na dec.adrese 34. potom ide dalsia zdi na dec.adrese 35. nuly na 36 (00). 64x64x2=8192 znakov + 33 =zdi koncia na dec.adrese 8 225.

Objects

zacinaju na adrese dec.8226 ,na adrese dec.8227 zacinaju 00,dalsi objekt na dec.adrese 8228. nuly na 8229 koniec by mal byt na adrese dec.adrese 16 418 (nuly na 16419). v Totalcmd zobrazi len 16418,tak isto aj v hexeditore.

C / C++ › konverzia dat do inej podoby
15. 6. 2013   #178039

No poviem to inak. Treba poznat strukturu map jednej hry a druhej hry. Obe hry maju odlisnu strukturu map.Mapy potrebujem z Nitemare 3D do Wolfenstein 3D (tam bude zas uz osvecena konverzia cez Chaos edit pro). Dalej uz do Doom2(bez textur samozrejme)

Mozna niekto hrava (hraval nitemare3d) a chcel by nejaku tu editaciu map(kedze chaos edit pro nepozna mapy z N3D,len z W3D a Sod.)

bude to nejaku dobu trvat kym najdem vsetky headery(napr. map01 sur x0 y0)

C / C++ › konverzia dat do inej podoby
14. 6. 2013   #178026

Dobry den, chcem spravit program na konverziu dat. Nemusi to byt C++. Potrebujem pohladat niekolko hex adries a zapisat ich v inom poradi. Teda ako ked v exceli vytvori odkaz z inej bunky na inu. Potrebujem sa pohrat s tymy datami.

A potom pred ne este nejake data dopisat. Uz som to raz riesil ale ,sam neviem ake mam pouzit prikazy a ako zostavit program.

Matus
Příkazový řádek › Jak se dá dostat do MS - DOS…
29. 3. 2013   #174080

Free4Dos síce podporuje NTFS  disky, ale na niektoré programy alebo hry ti nepomôže.

Totižto aj v ňom sa mi akosi nedarí pristupovať k pamäti, starým spôsobom 16bit.

Najlepšie starý počítač na ktorom sa to ešte dá. 

C / C++ › Konverzia mapy Nite3d do Wol…
10. 11. 2012   #166349

ESTE dodam :

pojde o program ktory bude mat dve moznosti konverzie a 3 moznost canel.

1.moznost rozpisem, mapa je velika 90 626 bytov alebo 82 434 bytov (teda su tu dve moznosti 11 Levelov a 10 Levelov)

ak ratam cely subor, hlavicku vynecham (pojde len o prepis dat). Prva mapa zacina na dec.adrese 514

Mapa 1
Walls(decimalne adresy):
514 516 518 az po 8706

Objects(decimalne adresy)
515 517 519 az po 8707

Mapa 2
Walls(decimalne adresy)
8708 8710 8712 az po 16900

Objects(demialne adresy)
8709 8711 8713 az po 16901

kazda ma velikost 8192




mapa WOlfa3D extraktovana cez Cep1.23 ma velikost 16 418bytov. Telo suboru:

hlavicka: ma velikost 33znakov , v hornom prispevku je napisana v Hexa, od adresy dec.18 bude ina. E1M1 alebo MAP1,pripadne bude moznost napisat vlasny nazov do dlzky 16 znakov.

telo: ZDI

na dec.adrese 33 zacina znak prvej zdi na x0y0 ,dalej pokracuju  00 tie su na dec.adrese 34. potom ide dalsia zdi na dec.adrese 35. nuly na 36 (00). 64x64x2=8192 znakov + 33 =zdi koncia na dec.adrese 8 225.

Objects

zacinaju na adrese dec.8226 ,na adrese dec.8227 zacinaju 00,dalsi objekt na dec.adrese 8228. nuly na 8229 koniec by mal byt na adrese dec.adrese 16 418 (nuly na 16419). v Totalcmd zobrazi len 16418,tak isto aj v hexeditore.

takto nejako by to mohlo vyzerat:

4345 7631 2E32 3300 0201 0001 0040 0040 1057 6F6C 6631 204D 6170 3233 3435 3637 38 hlavicka 

zdi

(adr.dec.514) 00 (adr.dec.516) 00 (adr.dec.518) 00 (adr.dec.520) 00 (adr.dec.522) 00 (adr.dec.524) az po (8706) 00

objekty od adr.dec 8707

(adr.dec.515) 00 (adr.dec.517) 00 (adr.dec.519) 00 (adr.dec.521) 00 (adr.dec.523) 00 (adr.dec.525) az po (16 418) 00

Do nitemare3D to bude ale bez tych "00"

zdi 514 ,516 ,518 ,520 > po 8706

objekty 515,517,519,521 > po 8707 (len 1.level), druhy level 8708+8192 zdi , 8709+8192 objects.
 

Marek17
C / C++ › Konverzia mapy Nite3d do Wol…
7. 11. 2012   #166003

Potreboval by konvertovat mapu z nite3d do Wolf3d a naopak. Mapa z Wolfensteina ma okolo 16 418 bytikov.Teda:

Hlavicka kazdej mapy(uz po editacii s programom Chaos edit 1.23 alebo CeV1.23),napisem to v hexa . 

4345 7631 2E32 3300 0201 0001 0040 0040 1057 6F6C 6631 204D 6170 3233 3435 3637 38  

Malo by tam byt nieco ako Cev1.23  @ @ Wolf1 Map2345678. Tato hlavicka konci na Decimalnej adrese 33(mapa moze mat nazov dlhy 16 znakov)

Zaciatok adr.dec 0 a koniec hlavicky adr.dec 33.

Dalej uz idu dve vrstvy . Prva vrstva Zdi a druha vrstva objekty. Prva zacina na Decimalnej adrese 34 . Suradnica prveho bloku X0Y0 je na adr.dec. 34 (neviem co to je su tam len 00).,za adresou dec.34 idu 00 ,potom suradnica druheho bloku X1Y0 je na adr.dec 36 , potom tie 00 ,ti su na adr. dec.37...

Mapa ma velikost 64x64 =co je 4096 policok(stvorcekov). dalej za kazdym tymto stvorcekom idu tieto nuly 00.cize 8192 bytikov (objekty este neratam). Koniec X63Y63 pre zdi je na adr.dec 8224(a 00  na 8225). Objekty zacinaju na adr.dec 8226 (X0Y0) , 00 na dec.adrese 8227 . Koniec objektov na dec.adrese 16416 (a pre 00 na adr.dec 16417)

mapa by mala mat teda celkovo 16 417 bytov.(ak zaratam tu nulu na ziaciatku tak 16 418 bytov)

Zdi:

X0Y0 adr.dec 34 (tu moze byt tiez nejake cislo napriklad 01)

tie 00 adr.dec 35

X1Y0 adr.dec 36 (napr.26)

tie 00 adr.dec 37

(asi takto nejako to vyzera: 0100 2600)

.....

X63Y63 by mal koncit na dec.adrese 8224(napr.15)

a 00 na dec.adrese 8225 (00)

Objekty :

X0Y0 adr.dec 8226 (napr.2B)

00 adr.dec 8227

X1Y0 adr.dec 8228 (napr.2C)

......

00 adr.dec 8229

X63Y63 konci na adr.dec 16416 (napr.2B)

00 adr.dec 16417

Nitemare3D/Nite3D

nepouziva formatovanie ako Wolf3D,ono ma vsetko v kope.Nepouziva ziadne 00 za kazdou Suradnicou ,ci je to zdi alebo objekt. Nema ziadnu hlavicku ako Wolf3D (wolf pouziva hore uvedenu hlavicku , Wolf1 Map1).

Samotna mapa ma len 8192 bytov.(00 nepouziva).

ZDI

X0Y0 dec.adresa 0

X1Y0 dec.adresa 2

X2Y0 dec.adresa 4

....

Objekty

X0Y0 dec.adresa 1

X1Y0 dec.adresa 3

X2Y0 dec.adresa 5

koniec 

X63Y63

ZDI adresa dec. 8190

Objekty adresa dec. 8191

potom mozem upravovat mapy v Chaos edit 1.23(zrejme bude treba spravit vswap s def.grafikou,paletou, mapou objektov a zdi)...pripadne ich dat na konverziu do Doomu

http://www.alice-dsl.net/mkroll/betas/CEprev1_27.zip

http://uloz.to/xnMhoou/map-zip

Marek17
C / C++ › Hra pomaly nacitava,ako zvys…
19. 11. 2011   #150223

Ako nastavim logovanie v MS C++ 2008 ?

Marek17
C / C++ › Hra pomaly nacitava,ako zvys…
19. 11. 2011   #150218

#1 Marek17
ide o OpenTTD

Marek17
C / C++ › Hra pomaly nacitava,ako zvys…
19. 11. 2011   #150217

s ktorym prikazom mozem zvatsit zdrojaku aby rychlejsie nacitala hru? Debug mod.
Hra v debug mode sa velice dlho nacitava . Nemodifikovana hra sa nacita v priebehu niekolkych sekund. Hladam prikaz ,retazec v ktorom je nastaveny limit. Pripadne bude treba zmenit int na vetsi...

C / C++ › prekladanie cuzdojazicneho z…
20. 8. 2011   #146604

Takze najviac komentare prelozit?

C / C++ › prekladanie cuzdojazicneho z…
20. 8. 2011   #146601

   

#include "version.h"

#if defined(USE_STARSKY) || defined(USE_RAIN) || defined(USE_SNOW)

#include "wl_def.h"

#if defined(USE_RAIN) || defined(USE_SNOW)
    uint32_t rainpos = 0;
#endif

typedef struct {
    int32_t x, y, z;
} point3d_t;

#define MAXPOINTS 400
point3d_t points[MAXPOINTS];

byte moon[100]={
     0,  0, 27, 18, 15, 16, 19, 29,  0,  0,
     0, 22, 16, 15, 15, 16, 16, 18, 24,  0,
    27, 17, 15, 17, 16, 16, 17, 17, 18, 29,
    18, 15, 15, 15, 16, 16, 17, 17, 18, 20,
    16, 15, 15, 16, 16, 17, 17, 18, 19, 21,
    16, 15, 17, 20, 18, 17, 18, 18, 20, 22,
    19, 16, 18, 19, 17, 17, 18, 19, 22, 24,
    28, 19, 17, 17, 17, 18, 19, 21, 25, 31,
     0, 23, 18, 19, 18, 20, 22, 24, 28,  0,
     0,  0, 28, 21, 20, 22, 28, 30,  0,  0 };

void Init3DPoints()
{
    int hvheight = viewheight >> 1;
    for(int i = 0; i < MAXPOINTS; i++)
    {
        point3d_t *pt = &points[i];
        pt->x = 16384 - (rand() & 32767);
        pt->z = 16384 - (rand() & 32767);
        float len = sqrt((float)pt->x * pt->x + (float)pt->z * pt->z);
        int j=50;
        do
        {
            pt->y = 1024 + (rand() & 8191);
            j--;
        }
        while(j > 0 && (float)pt->y * 256.F / len >= hvheight);
    }
}

#endif

#ifdef USE_STARSKY

void DrawStarSky(byte *vbuf, uint32_t vbufPitch)
{
    int hvheight = viewheight >> 1;
    int hvwidth = viewwidth >> 1;

    byte *ptr = vbuf;
    int i;
    for(i = 0; i < hvheight; i++, ptr += vbufPitch)
        memset(ptr, 0, viewwidth);

    for(i = 0; i < MAXPOINTS; i++)
    {
        point3d_t *pt = &points[i];
        int32_t x = pt->x * viewcos + pt->z * viewsin;
        int32_t y = pt->y << 16;
        int32_t z = (pt->z * viewcos - pt->x * viewsin) >> 8;
        if(z <= 0) continue;
        int shade = z >> 18;
        if(shade > 15) continue;
        int32_t xx = x / z + hvwidth;
        int32_t yy = hvheight - y / z;
        if(xx >= 0 && xx < viewwidth && yy >= 0 && yy < hvheight)
            vbuf[yy * vbufPitch + xx] = shade + 15;
    }

    int32_t x = 16384 * viewcos + 16384 * viewsin;
    int32_t z = (16384 * viewcos - 16384 * viewsin) >> 8;
    if(z <= 0) return;
    int32_t xx = x / z + hvwidth;
    int32_t yy = hvheight - ((hvheight - (hvheight >> 3)) << 22) / z;
    if(xx > -10 && xx < viewwidth)
    {
        int stopx = 10, starty = 0, stopy = 10;
        i = 0;
        if(xx < 0) i = -xx;
        if(xx > viewwidth - 11) stopx = viewwidth - xx;
        if(yy < 0) startj = -yy;
        if(yy > viewheight - 11) stopy = viewheight - yy;
        for(; i < stopx; i++)
            for(int j = starty; j < stopy; j++)
                vbuf[(yy + j) * vbufPitch + xx + i] = moon[j * 10 + i];
    }
}

#endif

#ifdef USE_RAIN

void DrawRain(byte *vbuf, uint32_t vbufPitch)
{
#if defined(USE_FLOORCEILINGTEX) && defined(FIXRAINSNOWLEAKS)
    fixed dist;                                // distance to row projection
    fixed tex_step;                            // global step per one screen pixel
    fixed gu, gv, floorx, floory;              // global texture coordinates
#endif

    fixed px = (player->y + FixedMul(0x7900, viewsin)) >> 6;
    fixed pz = (player->x - FixedMul(0x7900, viewcos)) >> 6;
    int32_t ax, az, x, y, z, xx, yy, height, actheight;
    int shade;
    int hvheight = viewheight >> 1;
    int hvwidth = viewwidth >> 1;

    rainpos -= tics * 900;
    for(int i = 0; i < MAXPOINTS; i++)
    {
        point3d_t *pt = &points[i];
        ax = pt->x + px;
        ax = 0x1fff - (ax & 0x3fff);
        az = pt->z + pz;
        az = 0x1fff - (az & 0x3fff);
        x = ax * viewcos + az * viewsin;
        y = -(heightnumerator << 7) + ((((pt->y << 6) + rainpos) & 0x0ffff) << 11);
        z = (az * viewcos - ax * viewsin) >> 8;
        if(z <= 0) continue;
        shade = z >> 17;
        if(shade > 13) continue;
        xx = x / z + hvwidth;
        if(xx < 0 || xx >= viewwidth) continue;
        actheight = y / z;
        yy = hvheight - actheight;
        height = (heightnumerator << 10) / z;
        if(actheight < 0) actheight = -actheight;
        if(actheight < (wallheight[xx] >> 3) && height < wallheight[xx]) continue;

        if(xx >= 0 && xx < viewwidth && yy > 0 && yy < viewheight)
        {
#if defined(USE_FLOORCEILINGTEX) && defined(FIXRAINSNOWLEAKS)
            // Find the rain's tile coordinate
            // NOTE: This sometimes goes over the map edges.
            dist = ((heightnumerator / ((height >> 3) + 1)) << 5);
            gu =  viewx + FixedMul(dist, viewcos);
            gv = -viewy + FixedMul(dist, viewsin);
            floorx = (  gu >> TILESHIFT     ) & 63;
            floory = (-(gv >> TILESHIFT) - 1) & 63;

            // Is there a ceiling tile?
            if(MAPSPOT(floorx, floory, 2) >> 8) continue;
#endif

            vbuf[yy * vbufPitch + xx] = shade+15;
            vbuf[(yy - 1) * vbufPitch + xx] = shade+16;
            if(yy > 2)
                vbuf[(yy - 2) * vbufPitch + xx] = shade+17;
        }
    }
}

#endif

#ifdef USE_SNOW

void DrawSnow(byte *vbuf, uint32_t vbufPitch)
{
#if defined(USE_FLOORCEILINGTEX) && defined(FIXRAINSNOWLEAKS)
    fixed dist;                                // distance to row projection
    fixed tex_step;                            // global step per one screen pixel
    fixed gu, gv, floorx, floory;              // global texture coordinates
#endif

    fixed px = (player->y + FixedMul(0x7900, viewsin)) >> 6;
    fixed pz = (player->x - FixedMul(0x7900, viewcos)) >> 6;
    int32_t ax, az, x, y, z, xx, yy, height, actheight;
    int shade;
    int hvheight = viewheight >> 1;
    int hvwidth = viewwidth >> 1;

    rainpos -= tics * 256;
    for(int i = 0; i < MAXPOINTS; i++)
    {
        point3d_t *pt = &points[i];
        ax = pt->x + px;
        ax = 0x1fff - (ax & 0x3fff);
        az = pt->z + pz;
        az = 0x1fff - (az & 0x3fff);
        x = ax * viewcos + az * viewsin;
        y = -(heightnumerator << 7) + ((((pt->y << 6) + rainpos) & 0x0ffff) << 11);
        z = (az * viewcos - ax * viewsin) >> 8;
        if(z <= 0) continue;
        shade = z >> 17;
        if(shade > 13) continue;
        xx = x / z + hvwidth;
        if(xx < 0 || xx >= viewwidth) continue;
        actheight = y / z;
        yy = hvheight - actheight;
        height = (heightnumerator << 10) / z;
        if(actheight < 0) actheight = -actheight;
        if(actheight < (wallheight[xx] >> 3) && height < wallheight[xx]) continue;
        if(xx > 0 && xx < viewwidth && yy > 0 && yy < viewheight)
        {
#if defined(USE_FLOORCEILINGTEX) && defined(FIXRAINSNOWLEAKS)
            // Find the snow's tile coordinate
            // NOTE: This sometimes goes over the map edges.
            dist = ((heightnumerator / ((height >> 3) + 1)) << 5);
            gu =  viewx + FixedMul(dist, viewcos);
            gv = -viewy + FixedMul(dist, viewsin);
            floorx = (  gu >> TILESHIFT     ) & 63;
            floory = (-(gv >> TILESHIFT) - 1) & 63;

            // Is there a ceiling tile?
            if(MAPSPOT(floorx, floory, 2) >> 8) continue;
#endif

            if(shade < 10)
            {
                vbuf[yy * vbufPitch + xx] = shade+17;
                vbuf[yy * vbufPitch + xx - 1] = shade+16;
                vbuf[(yy - 1) * vbufPitch + xx] = shade+16;
                vbuf[(yy - 1) * vbufPitch + xx - 1] = shade+15;
            }
            else
                vbuf[yy * vbufPitch + xx] = shade+15;
        }
    }
}

#endif

napriklad z Wolf4SDL 1.7 subor WL_atmos.c

C / C++ › prekladanie cuzdojazicneho z…
20. 8. 2011   #146599

pomohlo by mi kebyze prelozim WOLF4SDL do svojho jazyka , vratane programatorskych prikazov

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý