X-Git-Url: http://4ch.mooo.com/gitweb/?a=blobdiff_plain;f=16%2Fv2%2Fsource%2Fverge%2FMAPED%2FMAPED.C;fp=16%2Fv2%2Fsource%2Fverge%2FMAPED%2FMAPED.C;h=0000000000000000000000000000000000000000;hb=0dfcfd175f6b30ae2ed5ba87d4f91e92e00a73d2;hp=9e172742cf398e39252f3b56eda7ece5377f86f6;hpb=ce843d079f953717e3ffa2a27d3c088537883555;p=16.git diff --git a/16/v2/source/verge/MAPED/MAPED.C b/16/v2/source/verge/MAPED/MAPED.C deleted file mode 100755 index 9e172742..00000000 --- a/16/v2/source/verge/MAPED/MAPED.C +++ /dev/null @@ -1,1624 +0,0 @@ -/* -Copyright (C) 1998 BJ Eirich (aka vecna) -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -See the GNU General Public Lic -See the GNU General Public License for more details. -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -const char *const ME2_VERSION = "2.01a"; - -// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- -// CHANGELOG: -// -// + erased valloc(), replaced with a_memory.c -// + added Log() -- output to MAPED.LOG -// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- - -#include -#include - -#include -#include -#include -#include - -#include "config.h" -#include "gui.h" -#include "keyboard.h" -#include "mikmod.h" -#include "mouse.h" -#include "render.h" -#include "timer.h" -#include "vdriver.h" - -#include "ssaver.h" -#include "smalfont.h" -#include "tilesel.h" -#include "minimap.h" -#include "guicomp.h" -#include "config.h" - -#define byte unsigned char -#define word unsigned short - -// Includes for a_memory.c - -void *valloc(int amount, char *desc, int owner); -void *qvalloc(int amount); -int vfree(void *pointer); -void qvfree(void *pointer); -void FreeByOwner(int owner); -void MemReport(void); -void CheckCorruption(void); - -// ================================= Data ==================================== - -typedef struct -{ - unsigned short start; // strand start - unsigned short finish; // strand end - unsigned short delay; // tile-switch delay - unsigned short mode; // tile-animation mode -} vspanim_r; - -typedef struct -{ - char pmultx,pdivx; // parallax multiplier/divisor for X - char pmulty,pdivy; // parallax multiplier/divisor for Y - unsigned short sizex, sizey; // layer dimensions. - unsigned char trans, hline; // transparency flag | hline (raster fx) -} layer_r; - -typedef struct -{ - char name[40]; // zone name/desc - unsigned short script; // script to call thingy - unsigned short percent; // chance of executing - unsigned short delay; // step-delay - unsigned short aaa; // Accept Adjacent Activation - unsigned short entityscript; // script to call for entities -} zoneinfo; - -typedef struct -{ - char zonename[16]; // zone description - unsigned short int callevent; // event number to call - unsigned char percent; // chance (in 255) of event occurance - unsigned char delay; // step-delay before last occurance - unsigned char aaa; // accept adjacent activation - char savedesc[31]; // savegame description -} oldzone; - -typedef struct -{ - int x, y; // xwc, ywx position - word tx, ty; // xtc, ytc position - byte facing; // direction entity is facing - byte moving, movecnt; // direction entity is moving - byte frame; // bottom-line frame to display - byte specframe; // special-frame set thingo - byte chrindex, reset; // CHR index | Reset animation - byte obsmode1, obsmode2; // can be obstructed | Is an obstruction - byte speed, speedct; // entity speed, speedcount :) - byte delayct; // animation frame-delay - char *animofs, *moveofs; // anim script | move script - byte face, actm; // auto-face | activation mode - byte movecode, movescript; // movement type | movement script - byte ctr, mode; // sub-tile move ctr, mode flag (internal) - word step, delay; // step, delay - word stepctr, delayctr; // internal use counters - word data1, data2, data3; // - word data4, data5, data6; // - int actscript; // activation script - int expand1, expand2; // - int expand3, expand4; // - char desc[20]; // Entity description. -} entity_r; - -typedef struct -{ - char t[60]; -} chrlist_r; - -typedef struct -{ - char t[200]; -} movescript; - -typedef struct -{ - unsigned short x; // xwc position - unsigned short y; // ywc position - unsigned char facing; // direction entity is facing - unsigned char moving; // direction entity is moving - unsigned char movcnt; // how far left to move in this tile - unsigned char framectr; // frame sequence counter - unsigned char specframe; // special-frame set thingo - unsigned char chrindex, movecode; // CHR index / movement pattern code - unsigned char activmode, obsmode; // activation mode, obstruction mode - unsigned char v1,v2,v3; // packing stuff. - unsigned int actscript, movescript; // script references - unsigned char speed, speedct; // entity speed, speedcount :) - unsigned short step, delay, // Misc data entries - data1, data2, // More misc data - data3, data4, // yet more crappy misc data. - delayct,adjactv; // yet more internal crap - unsigned short x1,y1,x2,y2; // bounding box coordinates - unsigned char curcmd, cmdarg; // Script commands/arguments - unsigned char *scriptofs; // offset in script parsing - unsigned char face,chasing, // face player when activated | chasing - chasespeed, chasedist; // chasing variables - unsigned short cx,cy; // current-tile pos (moving adjusted) - int expand1; // always room for improvement - char entitydesc[20]; // Editing description -} oldent_r; - -zoneinfo zones[256]; // zone stuff. -layer_r layer[6]; // Array of layer data -vspanim_r vspanim[100]; // tile animation data -unsigned short vadelay[100]; // Tile animation delay ctr -oldzone tzone; // zone for oldmap-to-v2 converting -entity_r entity[256]; // Entity records. -oldent_r oldent; // entity for oldmap-to-v2 converting -byte entities=0; // number of allocated entities. -chrlist_r chrlist[100]; // Max. 100 CHRs per map. -movescript ms[100]; // move scripts arrays -byte nmchr=0; // number of active/loaded CHRs. -byte nms=0; // number of movement scripts - -char mapname[60]; // MAP filename -char vspname[60]; // VSP filemap -char rstring[20]; // render-order string -char musname[60]; // MAP default music -char numlayers; // number of layers in map -short xstart, ystart; // MAP start locations -char *obstruct, *zone; // obstruction and zone buffers -int numzones=0; // Number of active zones. -unsigned short *layers[6]; // Raw layer data -char wrap, soundokay=0; - -// -- vsp related data -- - -unsigned short numtiles; // number of allocated tiles in VSP -unsigned char *vsp; // VSP ptr -char vsp_locked=0; -char vsp_pw[8]; - -// -- map compression - -char *cb,*csrc; // compression workspace buffer -int bufsize; // how many bytes need to be written - -// -- editing related data -- - -int xwin=0, ywin=0; // Editing viewplane -short lt=0, rt=0; // left-button tile, right-button tile -char curzone=0; // current zone. -char scrollmode=0; // tile or pixel scroll modes. -char mouse_scroll=1; -char layertoggle[10]; // layer visible toggles -char el=0; // current editing layer. -char modified=0; // Current buffer modified or not. - -// -- music stuff -- - -char is_playing=0; -char cmname[60]; -UNIMOD *mf=0; - -// -- copy/paste & block fill -- - -word *copybuf=0; -int copybuf_wide=0,copybuf_deep=0; -int selx1=0, sely1=0, selx2=0, sely2=0; -int shifted=0, pasting=0; -extern char curtrack; - -char vcedprog[80]; -byte* translucency_table; //zero - -int moving_up=0,moving_down=0,moving_left=0,moving_right=0; // aen - -// ================================= Code ==================================== - -//added by zero -void LoadTransTable() -{ - FILE *fp; - - if (!translucency_table) - translucency_table=(byte *) valloc(65536,"trans tbl",0); - - fp=fopen("trans.tbl","rb"); - if (!fp) - { - vfree(translucency_table); - translucency_table=0; - return; - } - - fread(translucency_table, 65536, 1, fp); - fclose(fp); -} - -int Exist(char *fname) -{ FILE *tempf; - - tempf=fopen(fname,"rb"); - if (tempf) - { - fclose(tempf); - return 1; - } - else return 0; -} - -void err(char *str, ...) -{ - va_list argptr; - char msg[256]; - - va_start(argptr, str); - vsprintf(msg, str, argptr); - va_end(argptr); - - ShutdownVideo(); - ShutdownTimer(); - ShutdownKeyboard(); - //CD_DeInit(); // wasn't even valid! CD_Deinit() was incorrect - // Actually, Wat is by default case insensitive, so nyeh.;) - //if (curtrack != 1) //CD_Stop(); - - printf("%s \n",msg); - exit(-1); -} - -void errf(char *str, char *str1) -{ - sprintf(strbuf,str,str1); - err(strbuf); -} - -void errn(char *str, int n) -{ - sprintf(strbuf,str,n); - err(strbuf); -} - -int random(int lo, int hi) -{ - int range=hi-lo+1; - int i=rand() % range; - return i+lo; -} - -void PlayMusic(char *fname) -{ - if (!soundokay) return; - if (is_playing) - { - MD_PlayStop(); - ML_Free(mf); - is_playing=0; - } - mf=ML_LoadFN(fname); - if (!mf) - { - Message("Could not load specified music.",500); - return; - } - MP_Init(mf); - md_numchn=mf->numchn; mp_loop=1; - MD_PlayStart(); - is_playing=1; -} - -void StopMusic() -{ - if (!soundokay) return; - MD_PlayStop(); - ML_Free(mf); - is_playing=0; -} - -void LoadVSP(char *fname) -{ FILE *f; - short ver; - - if (!(f=fopen(fname,"rb"))) - errf("VSP file %s not found.",fname); - - fread(&ver, 1, 2, f); - if (ver!=2 && ver!=3) - errf("VSP file %s is not the correct VSP format.",fname); - if (ver==2) - { - fread(&pal, 1, 768, f); - set_intensity(63); - fread(&numtiles, 1, 2, f); - vsp=(char *) valloc(256*numtiles, "vsp data", 0); - fread(vsp, 256, numtiles, f); - fread(&vspanim, 8, 100, f); - fclose(f); - } - if (ver==3) - { - fread(&pal, 1, 768, f); - set_intensity(63); - fread(&numtiles, 1, 2, f); - vsp=(char *) valloc(256*numtiles, "vsp data", 0); - fread(&bufsize, 1, 4, f); - ReadCompressedLayer1(vsp, 256*numtiles, f); - fread(&vspanim, 8, 100, f); - fclose(f); - } -} - -void SaveVSP(char *fname) -{ FILE *f; - short ver; - - f=fopen(fname,"wb"); - ver=3; - fwrite(&ver, 1, 2, f); - fwrite(&pal, 1, 768, f); - fwrite(&numtiles, 1, 2, f); - cb=(char *) valloc(numtiles*256, "vsp tempbuf", 0); - bufsize=0; - WriteCompressedLayer1(vsp, numtiles*256); - fwrite(&bufsize, 1, 4, f); - fwrite(cb, 1, bufsize, f); - //free(bufsize); // what the hell??? @_@ - fwrite(&vspanim, 8, 100, f); - fclose(f); -} - -void EmitC (char c) -{ - *csrc=c; - csrc++; - bufsize++; -} - -void EmitW (short int w) -{ - char *ptr; - - ptr=(char *)&w; - *csrc=*ptr; - csrc++; - ptr++; - *csrc=*ptr; - csrc++; - bufsize+=2; -} - -void WriteCompressedLayer1(unsigned char *p, int len) -{ int i; - unsigned char byt,samect; - unsigned char repcode; - - csrc=cb; - i=0; bufsize=0; - do - { byt=p[i++]; - samect=1; - while (samect<254 && i3 || byt == 0xFF) - { - repcode=0xFF; - EmitC(repcode); - repcode=(char) samect; - EmitC(repcode); - } - EmitC(byt); - } while (i1) - { - repcode=(char) samect; - EmitC(repcode); - repcode=0xFF; - EmitC(repcode); - } - EmitW(byt); - } while (i> 1; - zone[(j*layer[0].sizex)+i]=c; - } - vfree(cb); - - // Load and convert zone data records. - - for (i=0; i<128; i++) - { - fread(&tzone, 1, sizeof tzone, f); - zones[i].script=tzone.callevent; - zones[i].percent=tzone.percent; - zones[i].delay=tzone.delay; - zones[i].aaa=tzone.aaa; - zones[i].entityscript=0; - memcpy(zones[i].name, tzone.zonename, 16); - } - - for (i=0; i<100; i++) // Load and convert CHR list - fread(&chrlist[i].t, 1, 13, f); -// DoCHRdealy(); - - fread(&entities, 1, 1, f); fseek(f, 3, 1); - memset(&entity, 0, sizeof entity); - for (i=0; i30000) - { - Message("Generating Auto-backup",150); - SaveMAP("$$BACKUP.MAP"); - SaveVSP("$$BACKUP.VSP"); - backupct=0; - } - if (idlect>8000 && !inss) - { - inss=1; - ScreenSaver(); - idlect=0; - inss=0; - } -} - -extern int difficulty; - -void SaveNewCFG() -{ FILE *f; - - f=fopen("maped.cfg","w"); - //if (nocdaudio) fprintf(f,"nocdaudio\n"); - fprintf(f,"vidmode %d \n", vm); - fprintf(f,"pad %d \n", pad); - fprintf(f,"scrollmode %d \n",scrollmode); - fprintf(f,"mouse_scroll %d \n",mouse_scroll&1); // aen - fprintf(f,"black %d \n",black); - fprintf(f,"white %d \n",brightw); - fprintf(f,"winbg %d \n",winbg); - fprintf(f,"shadow %d \n",darkw); - fprintf(f,"darkred %d \n",darkred); - fprintf(f,"titlebg %d \n",titlebg); - fprintf(f,"th %d \n", th); - fprintf(f,"mh %d \n", mh); - fprintf(f,"md_device %d \n", md_device==3?3:0); - fprintf(f,"amxofs %d \n",amxofs); - fprintf(f,"amyofs %d \n",amyofs); - fprintf(f,"mmxofs %d \n",mmxofs); - fprintf(f,"mmyofs %d \n",mmyofs); - fprintf(f,"cnxofs %d \n",cnxofs); - fprintf(f,"cnyofs %d \n",cnyofs); - fprintf(f,"lmxofs %d \n",lmxofs); - fprintf(f,"lmyofs %d \n",lmyofs); - fprintf(f,"lvxofs %d \n",lvxofs); - fprintf(f,"lvyofs %d \n",lvyofs); - fprintf(f,"mpxofs %d \n",mpxofs); - fprintf(f,"mpyofs %d \n",mpyofs); - fprintf(f,"vaxofs %d \n",vaxofs); - fprintf(f,"vayofs %d \n",vayofs); - fprintf(f,"zexofs %d \n",zexofs); - fprintf(f,"zeyofs %d \n",zeyofs); - fprintf(f,"exofs %d \n",exofs); - fprintf(f,"eyofs %d \n",eyofs); - fprintf(f,"prxofs %d \n",prxofs); - fprintf(f,"pryofs %d \n",pryofs); - fprintf(f,"rsxofs %d \n",rsxofs); - fprintf(f,"rsyofs %d \n",rsyofs); - fprintf(f,"vced %s \n",vcedprog); - fprintf(f,"difficulty %d \n",difficulty); - fclose(f); -} - -#include "controls.c" - -void ShellToDOS() -{ - ShutdownVideo(); - ShutdownKeyboard(); - ShutdownTimer(); - MD_PlayStop(); - MD_Exit(); - - system("COMMAND.COM"); - - if (!MD_Init()) - { - printf("Couldn't initialize sound: %s.\n", myerr); - delay(500); - soundokay=0; - } - if (strlen(musname)) PlayMusic(musname); - InitVideo(vm); - set_intensity(63); - InitMouse(); - InitKeyboard(); - InitTimer(); -} - -void ShellVERGE() -{ - ShutdownVideo(); - ShutdownKeyboard(); - ShutdownTimer(); - MD_PlayStop(); - MD_Exit(); - - system("VERGE"); - - if (!MD_Init()) - { - printf("Couldn't initialize sound: %s.\n", myerr); - delay(500); - soundokay=0; - } - if (strlen(musname)) PlayMusic(musname); - InitVideo(vm); - set_intensity(63); - InitMouse(); - InitKeyboard(); - InitTimer(); -} - -void ShellMAP() -{ - ShutdownVideo(); - ShutdownKeyboard(); - ShutdownTimer(); - MD_PlayStop(); - MD_Exit(); - - sprintf(strbuf,"verge %s",mapname); - system(strbuf); - - if (!MD_Init()) - { - printf("Couldn't initialize sound: %s.\n", myerr); - delay(500); - soundokay=0; - } - if (strlen(musname)) PlayMusic(musname); - InitVideo(vm); - set_intensity(63); - InitMouse(); - InitKeyboard(); - InitTimer(); -} - -void ShellEditMAP() -{ - char fn[80],*p; - - key[SCAN_ALT]=0; - key[SCAN_V]=0; - ShutdownVideo(); - ShutdownKeyboard(); - ShutdownTimer(); - MD_PlayStop(); - MD_Exit(); - - sprintf(fn,"%s",mapname); - p=fn; - while (*p) - { - if (*p=='.') *p=0; - p++; - } - sprintf(strbuf,"%s %s.vc", vcedprog, fn); - system(strbuf); - - if (!MD_Init()) - { - printf("Couldn't initialize sound: %s.\n", myerr); - delay(500); - soundokay=0; - } - if (strlen(musname)) PlayMusic(musname); - InitVideo(vm); - set_intensity(63); - InitMouse(); - InitKeyboard(); - InitTimer(); -} - -void ShellEditSystem() -{ - key[SCAN_ALT]=0; - key[SCAN_S]=0; - ShutdownVideo(); - ShutdownKeyboard(); - ShutdownTimer(); - MD_PlayStop(); - MD_Exit(); - - sprintf(strbuf,"%s system.vc", vcedprog); - system(strbuf); - - if (!MD_Init()) - { - printf("Couldn't initialize sound: %s.\n", myerr); - delay(500); - soundokay=0; - } - if (strlen(musname)) PlayMusic(musname); - InitVideo(vm); - set_intensity(63); - InitMouse(); - InitKeyboard(); - InitTimer(); -} - -char s[256]; - -void CompileAll() -{ - FILE *f; - char *p; - - MD_PlayStop(); - MD_Exit(); - - sprintf(strbuf,"vcc all q",mapname); - system(strbuf); - - if (!MD_Init()) - { - printf("Couldn't initialize sound: %s.\n", myerr); - delay(500); - soundokay=0; - } - if (strlen(musname)) PlayMusic(musname); - - if (!(f=fopen("error.txt","r"))) - { - Message("All VC scripts sucessfully compiled.",300); - return; - } - - fgets(s,99,f); - fclose(f); - p=s; - while (*p) - { - if (*p==13 || *p==10) *p=0; - p++; - } - VCNotify(s); -} - -void CompileMAP() -{ - FILE *f; - char *p; - - MD_PlayStop(); - MD_Exit(); - - sprintf(strbuf,"vcc %s q",mapname); - system(strbuf); - - if (!MD_Init()) - { - printf("Couldn't initialize sound: %s.\n", myerr); - delay(500); - soundokay=0; - } - if (strlen(musname)) PlayMusic(musname); - - if (!(f=fopen("error.txt","r"))) return; - - fgets(s,99,f); - fclose(f); - p=s; - while (*p) - { - if (*p==13 || *p==10) *p=0; - p++; - } - VCNotify(s); -} - -void tickhandler(void) -{ - MP_HandleTick(); - MD_SetBPM(mp_bpm); -} - -void RenderHighlight() -{ int zx, zy; - int xw, yw; - - if (mh) - { - xw=xwin&15; - yw=ywin&15; - zx=((mx+xw)&~15)-xw; - zy=((my+yw)&~15)-yw; - - DrawHighlight(zx-1, zy-1); - } -} - -int EntityThere(int xw, int yw) -{ int i; - - for (i=0; i - mb=0; - return; - } - EntityEditor(a-1); -} - -void DeleteEntity(int xw, int yw) -{ int i,a; - char t[60]; - - a=EntityThere(xw,yw)-1; - sprintf(t,"Delete entity %d?",a); - if (!Confirm(t)) return; - for (i=a; iname, 13); fc++; - while (!_dos_findnext(f)) - { - memcpy(blah+(fc*13), f->name, 13); fc++; - } - } - vfree(f); - last_pressed=0; - a=fc<22?117:2574/fc; -// errn("%d",fc); - do - { - if (!bmode) - { - RenderMap(); - RenderGUI(); - } - else - { - RenderSelector(); - RenderMessages(); - } - if (ctf && systemtime >= cursorblink) - { - cb ^= 1; - cursorblink = systemtime+40; - } - if (moving) - { - bxofs = (mx-mxo); - byofs = (my-myo); - if (!mb) moving=0; - if (bxofs<16) bxofs = 16; - if (byofs<16) byofs = 16; - if (bxofs+bxsize>335) bxofs = 336-bxsize; - if (byofs+bysize>sy+16) byofs = (sy+16)-bysize; - } - - Window(bxofs, byofs, bxofs+bxsize, byofs+bysize, "Browse"); - Button(bxofs+65, byofs+157, "OK"); - Button(bxofs+96, byofs+157, "Cancel"); - FilledBox(bxofs+20, byofs+15, 80, 135, black); - FilledBox(bxofs+100, byofs+15, 10, 135, 2); - HLine(bxofs+20, byofs+15, 90, darkw); - VLine(bxofs+20, byofs+15, 135, darkw); - VLine(bxofs+99, byofs+16, 134, white); - VLine(bxofs+109, byofs+16, 134, white); - HLine(bxofs+21, byofs+149, 89, white); - stdwindow(bxofs+100, byofs+16, bxofs+109, byofs+25); - stdwindow(bxofs+100, byofs+140, bxofs+109, byofs+149); - b=byofs+24+(fc != 22 ? ((117-a)*ofs)/(fc-22) : 0); - - //draws the drag box - stdwindow(bxofs+100, b, bxofs+109, b+a); - - FilledBox(bxofs+21, byofs+((cfs-ofs)*6)+16, 78, 6, darkw); - - // Render actual filename thingies - i=0; - while (1) - { - if (i+ofsbxofs+100&&mxbyofs+25&&myb&&myb+a) - { - if (ofs+45>fc) ofs=fc-22; - else ofs+=22; - cfs=ofs; - } - } - } - if(!dragging) - { - if (mb==1 && mx>bxofs+20 && mxbyofs+15 && mybxofs+100 && mxbyofs+15 && mybxofs+100 && mxbyofs+139 && mybxofs+65 && mxbyofs+157 && mybxofs+96 && mxbyofs+157 && my(bxofs+bxsize-9) && (mx(byofs+1) && (mybxofs && mxbyofs && my<(byofs+9) && !moving) - { - moving=1; - mxo=mx-bxofs; - myo=my-byofs; - continue; - } - - if (mb==1 && !moving) - { - ctf=0; - cb=0; - str=0; - } - - if (last_pressed) - { - if (key[SCAN_LSHIFT] || key[SCAN_RSHIFT]) c=key_shift_tbl[last_pressed]; - else c=key_ascii_tbl[last_pressed]; - - if (last_pressed==SCAN_ESC) - { - key[SCAN_ESC]=0; - done=1; - break; - } - if (key[SCAN_PGUP]) - { - if (ofs<22) ofs=0; - else ofs-=22; - cfs=ofs; - key[SCAN_PGUP]=0; - continue; - } - if (key[SCAN_PGDN]) - { - if (ofs+45>fc) ofs=fc-22; - else ofs+=22; - if (fc<22) ofs=0; - cfs=ofs; - key[SCAN_PGDN]=0; - continue; - } - if (key[SCAN_UP]) - { - if (cfs) cfs--; - if (ofs>cfs) ofs--; - key[SCAN_UP]=0; - last_pressed=0; - continue; - } - if (key[SCAN_DOWN]) - { - if (cfs21) ofs++; - key[SCAN_DOWN]=0; - last_pressed=0; - continue; - } - if (last_pressed==SCAN_ENTER) - { - memcpy(dest,blah+(cfs*13),13); - key[SCAN_ENTER]=0; - done=1; - ctf=0; - str=0; - last_pressed=0; - break; - } - - if (last_pressed==SCAN_TAB) - { - switch (ctf) - { - case 0: ctf=0; str=0; break; - } - key[SCAN_TAB]=0; - last_pressed=0; - cb=1; cursorblink=systemtime+40; - continue; - } - - if (!ctf) - continue; - - if (last_pressed==SCAN_BACKSP && strlen(str)) - { - str[strlen(str)-1]=0; - key[SCAN_BACKSP]=0; - last_pressed=0; - continue; - } - else if (last_pressed==SCAN_BACKSP) - { - last_pressed=0; - continue; - } - - t=strlen(str); - str[t]=c; - str[t+1]=0; - last_pressed=0; - } - } - } while (!done); - vfree(blah); -} - -#include "vergepal.h" -#define LOGFILE "maped.log" - -void Log(char *text, ...) -{ - va_list argptr; - char msg[256]; - FILE *logf; - - va_start(argptr, text); - vsprintf(msg, text, argptr); - va_end(argptr); - - logf=fopen(LOGFILE,"aw"); - fprintf(logf,"%s\n",msg); - fflush(logf); - fclose(logf); -} - -int main(int argc, char *argv[]) -{ - - remove(LOGFILE); - md_mixfreq=44100; - md_dmabufsize=5000; - md_mode=DMODE_16BITS|DMODE_STEREO; - md_device=0; - memset(&chrs, 0, sizeof chrs); - - Log("GetConfig"); - GetConfig("maped.cfg"); - Log("LoadTransTbl"); - translucency_table=0; //zero - LoadTransTable(); //zero - - Log("RegisterModLoaders"); - ML_RegisterLoader(&load_mod); - ML_RegisterLoader(&load_s3m); - ML_RegisterLoader(&load_xm); - ML_RegisterLoader(&load_uni); - - Log("RegisterSndDrivers"); - MD_RegisterDriver(&drv_nos); - MD_RegisterDriver(&drv_sb); - MD_RegisterDriver(&drv_gus); - MD_RegisterPlayer(tickhandler); - soundokay=1; - Log("Initialize snd lib"); - if (!MD_Init()) - { - printf("Couldn't initialize sound: %s.\n", myerr); - delay(500); - soundokay=0; - } - - //Log("Initialize CD audio"); - //CD_Init(); - - Log("Initialize timer"); - InitTimer(); - Log("Initialize video"); - InitVideo(vm); - Log("Initialize mouse"); - InitMouse(); - Log("Initialize keyboard IRQ handler"); - InitKeyboard(); - - Log("Initializing map data"); - if (argc==1 && !Exist("untitled.map")) - { - SetPalette(vergepal); - memcpy(pal, vergepal, 768); - memcpy(mapname,"UNTITLED.MAP",13); - memcpy(vspname,"UNTITLED.VSP",13); - memcpy(rstring,"1E",2); - numlayers=1; - - // aen: default newmap dimensions set to 100x100 - layer[0].pmultx=1; layer[0].pmulty=1; - layer[0].pdivx=1; layer[0].pdivy=1; - layer[0].sizex=100; layer[0].sizey=100; - layer[0].trans=0; layer[0].hline=0; - - layers[0]=(unsigned short *) valloc((layer[0].sizex*layer[0].sizey*2)+4,"layer data",0); - //memset(layers[0],0,(layer[0].sizex*layer[0].sizey)*2); - obstruct=(char *) valloc((layer[0].sizex*layer[0].sizey)+4,"obstruct map",0); - zone=(char *) valloc((layer[0].sizex*layer[0].sizey)+4,"zone map", 0); - - // aen: default number of tiles set to 100 - numtiles=100; - vsp=(char *) valloc(256 * numtiles,"vsp data", 0); - wrap=0; el=0; layertoggle[0]=1; - InitTileIDX(); - } - else - { - if (argc==1) memcpy(mapname, "untitled.map",13); - else memcpy(mapname, argv[1], strlen(argv[1])); - LoadMAP(mapname); - InitTileIDX(); - } -Log("Entering main loop"); -thingy: - while (!(key[SCAN_ALT] && key[SCAN_X])) - { - ProcessControls(); - while (tick) - { - tick--; - PollMovement(); - } - RenderMap(); - RenderHighlight(); - RenderGUI(); - ShowPage(); - } - if (modified) - if (!Confirm("Lose unsaved changes?")) - { - key[SCAN_ALT]=0; - key[SCAN_X]=0; - goto thingy; - } - - ShutdownVideo(); - ShutdownKeyboard(); - ShutdownTimer(); - SaveNewCFG(); - remove("$$BACKUP.MAP"); - remove("$$BACKUP.VSP"); - - //if (curtrack != 1) CD_Stop(); - //CD_DeInit(); // wasn't even valid! CD_Deinit() was incorrect - MD_PlayStop(); // Mordred - ML_Free(mf); - - MD_Exit(); - if (translucency_table) - vfree(translucency_table); //zero - return 0; -}