Release Bermuda Syndrome


Farox

Certified Guru
Joined
Jan 8, 2009
Messages
2,412
Age
56
Location
Italy
Website
rbnet.it
I have ported a new game for Pandora, it's the latest version (0.1.4) of Bermuda Syndrome in the re-implementation to SDL of Gregory Montoir .


This is a commercial game (an old Windows game) made by Century Interactive and published by BMG in 1995.


The original data files are required (retail or demo versions) to play the game.


A link to know more about the game http://www.mobygames...ermuda-syndrome


If you have the original disk of the game you need to install first on a windows machine.


When you are done go inside the installed dir /BERMUDA and copy all the


folder and files inside this dir on the SD card directory /appdata/BermudaSyndrome-0.1.4/ .


So you should have :


SDCARD:\pandora\appdata\BermudaSyndrome-0.1.4 dir with inside this 3 files


BERMUDA.wgp


BERMUDA.ovr //present on the full version only


BERMUDA.spr


and so many dirs


_1


_3


_4


_5


wgp


town3


town2


town1


text


scn


and so on


Now you are ready to play with Bermuda Syndrome.


In my recompilation i have changed to run in Fullscreen, changed the buttons used and added the option to (brutally) exit the game pressing ESC .


Now some Pandora screens :


bs_screen1.png



bs_screen3.png



Download at repo http://repo.openpand...aSyndrome-0.1.4


Buttons used:


DPAD = movements and scroll items in inventory


R (rearbutton) = show inventory


L (rearbutton) = show status bar


B = fire weapon


A = Skip intro/ use in dialogs/ select items


" (fn+s) = Save game


l (lower elle) = Load game


1 = Decrease save slot


2 = Increase save slot


w = toggle fullscreen


f = fast mode


ESC = exit


Enjoy :)
 
Last edited by a moderator:
Thanks for porting this. A while back I thought of this game and started to add it to the port request and forgot the name. :mellow: But you ported it a-ny-way. :ph34r:


Thanks again. :D
 
Wow - I was wondering if I could install this on Win 3.11 using dosbox, I've always wanted to play this - it's supposed to be similar to Flashback in gameplay. Thanks so much for porting it - I didn't even know it had a PC re-implementation. In fact, I remember I was going to play it a few years ago in a VM, and it wouldn't display the movie scenes (some crap about the wrong version of whatever player the files needed or something...). I'll have to dig my disks out now.
 
The only missing thing on current version is the main menu...the files are there but the program never use it...infact when you die the game restart from begin.


You should then load a saved game position to go where you have failed before.


Hope that mr Montoir implent this in next versions.
 
N.I.C.E :)


I always wanted to play Bermuda Syndrome since late 90s, but never really configured my old win98 to work with BS. Now i can play on OP. ..Excellent. Thank You Farox.
 
Looks like a great port and another awesome addition to the Pandora library :) I'm not familiar with it myself but as TitanUranus said it looks very flashback like, plus with the creationist theme its perfect for Christmas :)


Is anywhere still selling the original game, like GoG?
 
@MarioPando


BS is a mixture flashback + prince of persia. More arcade stuff like pop2.
 
Tried it, works.


One issue: I copied over the data-files. For me for example the file that is checked is named "BERMUDA.WGP", in your first-start-text you mentioned it should be called "BERMUDA.wgp", but you test actually for "bermuda.wgp".


I am not sure if all combination of capital and non-capital letters works, but with "BERMUDA.WGP" the programm starts, but still everytime your first-start-text appears since the check fails. So IMHO either you should write in the text that the file has to be all small and that the files need to be renamed to be on the safe side. Or, if all versions work, you just test with something like "$(ls -1| grep -i bermuda.wgp). Maybe there is a simpler way of doing an ignore-case-check.


Not important, but i thought about this as well: You gave the appdata-folder a version-name. But if there ever will be an update you will probably still use the same folder although the version is a different. That will still work of course, so it's not important.
 
Thanks for try it .


I have just renamed my file from BERMUDA.WGP to bermuda.wgp and it still works so maybe its not important the capitalization of letters.


Tested on HF5. Anyway thanks for noticing. :)
 
it's times like this I wish I had a windows pc instead of a imac and macbook :wacko:
 
Is there a way to re-assign keys? I easily mix up save and load and thus ruin my progress. I guess not as i didn't find any configuration-files. So it probably would need source-code-modification. Something like SHIFT+[1-9] to save and [1-9] to load would suit me better and lower the chances of a mix-up.


Edit:


I noticed that it compiles nicely within the cdevtools-pnd-environment. So I can probably change that myself. Did you change anything for the Pandora beside the keys and that it automatically launches in fullscreen? Only secret i didn't get yet is why ESC does not work in the binary of the unmodified source. I guess the key-definition-parameter is a bit different?
 
Last edited by a moderator:
Yes compile is easy.


Here is my changes:


open systemstub_sdl.cpp and change:


for fullscreen....



Code:
void SystemStub_SDL::init(const char *title, int w, int h) {

SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO);

SDL_ShowCursor(SDL_ENABLE);

SDL_WM_SetCaption(title, NULL);

_quit = false;

memset(&_pi, 0, sizeof(_pi));

_screenW = w;

_screenH = h;

_offscreenSize = w * h * sizeof(uint32);

_offscreen = (uint32 *)malloc(_offscreenSize);

if (!_offscreen) {

  error("SystemStub_SDL::init() Unable to allocate offscreen buffer");

}

memset(_offscreen, 0, _offscreenSize);

#ifdef BERMUDA_BLUR

_offscreenPrev = (uint32 *)malloc(_offscreenSize);

if (_offscreenPrev) {

  memset(_offscreenPrev, 0, _offscreenSize);

}

#endif

_blurOn = false;

memset(_pal, 0, sizeof(_pal));

    	#ifdef PANDORA

_fullScreenDisplay = true;

#else

_fullScreenDisplay = false;

#endif

setScreenDisplay(_fullScreenDisplay);

_soundSampleRate = 0;

}



and the buttons with added ESC function



Code:
void SystemStub_SDL::processEvents() {

bool paused = false;

while (1) {

  SDL_Event ev;

  while (SDL_PollEvent(&ev)) {

   switch (ev.type) {

   case SDL_QUIT:

	_quit = true;

	break;

   case SDL_ACTIVEEVENT:

	if (ev.active.state & SDL_APPINPUTFOCUS) {

 	paused = ev.active.gain == 0;

 	SDL_PauseAudio(paused ? 1 : 0);

	}

	break;

   case SDL_KEYUP:

	switch (ev.key.keysym.sym) {

	case SDLK_LEFT:

 	_pi.dirMask &= ~PlayerInput::DIR_LEFT;

 	break;

	case SDLK_RIGHT:

 	_pi.dirMask &= ~PlayerInput::DIR_RIGHT;

 	break;

	case SDLK_UP:

 	_pi.dirMask &= ~PlayerInput::DIR_UP;

 	break;

	case SDLK_DOWN:

 	_pi.dirMask &= ~PlayerInput::DIR_DOWN;

 	break;

	#ifdef PANDORA

	case SDLK_HOME:

 	_pi.enter = false; // use in dialogs

 	break;

	case SDLK_END:

 	_pi.space = false; //fire weapons

 	break;

	case SDLK_RCTRL:

 	_pi.tab = false; //show bag inventory

 	break;

	case SDLK_PAGEUP:

 	_pi.shift = false; //Y button

 	break;

	case SDLK_LCTRL:

 	_pi.ctrl = false;

 	break;

	case SDLK_ESCAPE:

 	_pi.escape = false;

 	break;

	#else

	case SDLK_RETURN:

 	_pi.enter = false;

 	break;

	case SDLK_SPACE:

 	_pi.space = false;

 	break;

	case SDLK_RSHIFT:

	case SDLK_LSHIFT:

 	_pi.shift = false;

 	break;

	case SDLK_RCTRL:

	case SDLK_LCTRL:

 	_pi.ctrl = false;

 	break;

	case SDLK_TAB:

 	_pi.tab = false;

 	break;

	case SDLK_ESCAPE:

 	_pi.escape = false;

 	break;

	#endif

	default:

 	break;

	}

	break;

   case SDL_KEYDOWN:

	switch (ev.key.keysym.sym) {

	case SDLK_LEFT:

 	_pi.dirMask |= PlayerInput::DIR_LEFT;

 	break;

	case SDLK_RIGHT:

 	_pi.dirMask |= PlayerInput::DIR_RIGHT;

 	break;

	case SDLK_UP:

 	_pi.dirMask |= PlayerInput::DIR_UP;

 	break;

	case SDLK_DOWN:

 	_pi.dirMask |= PlayerInput::DIR_DOWN;

 	break;

	#ifdef PANDORA

	case SDLK_HOME:

 	_pi.enter = true; // use in dialogs

 	break;

	case SDLK_END:

 	_pi.space = true; //fire weapons

 	break;

	case SDLK_RCTRL:

 	_pi.tab = true; //R button show bag inventory

 	break;

	case SDLK_PAGEUP:

 	_pi.shift = true; //Y button put weapon in bag

 	break;

	case SDLK_RSHIFT: 	//L button show status bar

 	_pi.ctrl = true;

 	break;

	case SDLK_ESCAPE:

 	_pi.escape = true;

 	_quit = true; //quit added by farox

 	break;

	case SDLK_LALT: 	//start button save game

 	_pi.save = true;

 	break;

	case SDLK_LCTRL:   //select button load game

 	_pi.load = true;

 	break;

	case SDLK_w:

 	_fullScreenDisplay = !_fullScreenDisplay;

 	setScreenDisplay(_fullScreenDisplay);

 	break;

	case SDLK_f:

 	_pi.fastMode = !_pi.fastMode;

 	break;

	case SDLK_b:

 	if (_offscreenPrev) {

  	_blurOn = !_blurOn;

  	_fullScreenRedraw = true;

 	}

 	break;

	case SDLK_2: 	//2 increase save slots

 	_pi.stateSlot = 1;

 	break;

	case SDLK_1:	// 1 decrease save slots

 	_pi.stateSlot = -1;

 	break;

	#else

	case SDLK_RETURN:

 	_pi.enter = true;

 	break;

	case SDLK_SPACE:

 	_pi.space = true;

 	break;

	case SDLK_RSHIFT:

	case SDLK_LSHIFT:

 	_pi.shift = true;

 	break;

	case SDLK_RCTRL:

	case SDLK_LCTRL:

 	_pi.ctrl = true;

 	break;

	case SDLK_TAB:

 	_pi.tab = true;

 	break;

	case SDLK_ESCAPE:

 	_pi.escape = true;

 	break;

	case SDLK_f:

 	_pi.fastMode = !_pi.fastMode;

 	break;

	case SDLK_s:

 	_pi.save = true;

 	break;

	case SDLK_l:

 	_pi.load = true;

 	break;

	case SDLK_b:

 	if (_offscreenPrev) {

  	_blurOn = !_blurOn;

  	_fullScreenRedraw = true;

 	}

 	break;

	case SDLK_w:

 	_fullScreenDisplay = !_fullScreenDisplay;

 	setScreenDisplay(_fullScreenDisplay);

 	break;

	case SDLK_KP_PLUS:

	case SDLK_PAGEUP:

 	_pi.stateSlot = 1;

 	break;

	case SDLK_KP_MINUS:

	case SDLK_PAGEDOWN:

 	_pi.stateSlot = -1;

 	break;

	#endif

	default:

 	break;

	}

	break;

   case SDL_MOUSEBUTTONDOWN:

	if (ev.button.button == SDL_BUTTON_LEFT) {

 	_pi.leftMouseButton = true;

	} else if (ev.button.button == SDL_BUTTON_RIGHT) {

 	_pi.rightMouseButton = true;

	}

	_pi.mouseX = ev.button.x;

	_pi.mouseY = ev.button.y;

	break;

   case SDL_MOUSEBUTTONUP:

	if (ev.button.button == SDL_BUTTON_LEFT) {

 	_pi.leftMouseButton = false;

	} else if (ev.button.button == SDL_BUTTON_RIGHT) {

 	_pi.rightMouseButton = false;

	}

	_pi.mouseX = ev.button.x;

	_pi.mouseY = ev.button.y;

	break;

   case SDL_MOUSEMOTION:

	_pi.mouseX = ev.motion.x;

	_pi.mouseY = ev.motion.y;

	break;

   default:

	break;

   }

  }

  if (paused) {

   SDL_Delay(100);

  } else {

   break;

  }

}

}


@ All ...Let me know if we need to change buttons assignement...so i will buld another version
 
Another thing that is not working (at least for me) is MIDI music...i have tried to include timidity folder, instruments and cfg but nothing, also i have test with Timidity installer by Sebt3


but also again no midi music.


I need help here....
 
Thanks for the info on the source-code-changes. I will look into that later.


About the music: Does the engine-reimplentation support midi? I didn't try on my PC yet. But i can later.


What should work is to record the MIDI as ogg on your pc, create a folder MUSIC, in which you put the ogg-files and assign the parameter for the music-path to "bs", although that might not be needed as it says that "MUSIC" is default. I am not sure if the oggs have to have a special format on pc/linux/pandora. For amiga there is this page that mentions that "If you have the CD game soundtrack, you can rip the tracks to 22 Khz stereo Vorbis .ogg files". So obviously there are BermudaSyndrom-versions that come with orchestral music tracks. I saw one page offering them as mp3. These probably would need conversion to ogg.
 
Last edited by a moderator:
There is an irregularity in your code, but comparing the UP- and DOWN-section is a bit mind-bending for me, so i might be wrong.


For the KEYUP-section you specify:



Code:
        case SDLK_PAGEUP:

            	_pi.shift = false; //Y button

            	break;

        case SDLK_LCTRL:

            	_pi.ctrl = false;

            	break;

while for the KEYDOWN-section you wrote:



Code:
        case SDLK_PAGEUP:

              	_pi.shift = true; //Y button put weapon in bag

              	break;

        case SDLK_RSHIFT:   	//L button show status bar

              	_pi.ctrl = true;

              	break;

I think it must be "SDLK_RSHIFT" instead of "SDLK_LCTRL" in the KEYUP-section. Obviously it works without, but it's not 100% correct and might lead to strange effects in some situations.
 
Thank's for notincing wrong button assignement, during my try i forget to update it...i will fix it.


For MIDI i don't know why for example Zelda ROTH midi files play regular and adding the same files (instruments and config) into the PND didn't on my case.
 
Last edited by a moderator:
Remapping worked nicely. I used


- Double-Quotes (fn+s) to save


- "l" (small L) to load


Suits me better. The problem about using "start" for saving is, that if you save a game, and come back several days later or maybe more than a week, then you might not remember the key-mapping. You enter the game and press "start", while trying to get a menu or starting a game and your safe-game is gone.


I think it's a good idea to hide the mouse-cursor. In order to to so, change line 69 in "systemstub_sdl.cpp" to



Code:
SDL_ShowCursor(SDL_DISABLE);
 
Last edited by a moderator:
I have updated the PND on the repo with your button changes plus mouse cursor is no more visible.Thank's :)
 
Back
Top