I'm one of the developers of turrican 2, which does not work with DOSbox, so here are some hints to get it running:
1. SMSW ax should return that the 386 is not in V86 mode (bit 1)
2. XMS handler must be installed
3. It must be possible to load the Descriptorcaches with
cli
mov al, 80h
out 70h, al
lgdt descriptor...
mov eax, cr0
or eax, 1
mov cr0, eax
4. Turrican uses a Realflat model, so it might be enough to ignore this commands (3) and enable the 0x66 opcode prefix to address the whole 4 GB of memory.
Hi!
Just realized that Turrican is working with the current CVS version, just some sound problems with the soundblaster support!!!
Gameplay works PERFECTLY!!! I'm REALLY impressed.
Maybe I'll contribute some work to the SoundBlaster emulation or write another MSD (Music System Driver) for Turrican to work in DOSBox with finest Quality 😀
Woah. One of the actual developers of a game helping out with an emulator. Now theres somethin you don't see everyday 😀 (first case I`ve ever heard of it).
Me and another Turrican fan (the mighty Bronko) tried to get Turrican 2 working in DosBox (and also in the latest CVS version, no difference).
I think, we found out some interesting things:
At first, the game slowly shows the Turrican logo in a wrong palette - originally it does not do that.
When the start screen or a new level is loaded, DosBox likes to hang (for me it always did, for Bronko it worked sometimes).
The workaround: If the game seems to hang, decrease cycles to 1, then increase them back to the normal amount -> and the game goes on. Funny thing.
Something else, I realized, while I tried to start Turrican 2:
DosBox' env vars are case sensitive - that's wrong. I changed Program::SetEnv (in misc/programs.cpp) to fix this:
1#include <ctype.h> 2#include <string> 3 4. 5. 6. 7 8bool Program::SetEnv(const char * entry,const char * new_string) { 9 PhysPt env_read=PhysMake(psp->GetEnvironment(),0); 10 PhysPt env_write=env_read; 11 char env_string[1024]; 12 do { 13 MEM_StrCopy(env_read,env_string,1024); 14 if (!env_string[0]) break; 15 env_read+=strlen(env_string)+1; 16 if (!strchr(env_string,'=')) continue; /* Remove corrupt entry? */ 17 if ((strncasecmp(entry,env_string,strlen(entry))==0) && 18 env_string[strlen(entry)]=='=') continue; 19 MEM_BlockWrite(env_write,env_string,strlen(env_string)+1); 20 env_write+=strlen(env_string)+1; 21 } while (1); 22/* TODO Maybe save the program name sometime. not really needed though */ 23 /* Save the new entry */ 24 if (new_string[0]) { 25 /* env vars are case insensitive */ 26 std::string bigentry(entry); 27 for (std::string::iterator it = bigentry.begin(); it != bigentry.end(); ++it) *it = toupper(*it); 28 sprintf(env_string,"%s=%s",bigentry.c_str(),new_string); 29 MEM_BlockWrite(env_write,env_string,strlen(env_string)+1); 30 env_write+=strlen(env_string)+1; 31 } 32 /* Clear out the final piece of the environment */ 33 mem_writed(env_write,0); 34 return true; 35}
I am trying to get this game to work. I am getting gibberish and weird colors on my screen when I am trying to run the game with Dosbox. Is there a guide or a couple of steps to get the game working? I would really appreciate it.