Porting/updating CSBwin for Linux and sound support

Discuss Chaos Strikes Back for Windows and Linux, an unofficial port of Chaos Strikes Back to PC by Paul Stevens, as well as CSBuild, an associated dungeon editor.

Moderator: Zyx

Forum rules
Please read the Forum rules and policies before posting.
Lomaxx
Neophyte
Posts: 4
Joined: Fri Apr 29, 2011 12:48 pm

Re: Porting/updating CSBwin for Linux and sound support

Post by Lomaxx »

Hello Ful Ir.

First of all a big thanks for making the effort of porting csbwin to the Pandora.
After stumbling upon your csbwin-pnd-package and enjoying the game on my Pandora, i wanted to try to get the game going on my GentooLinux-Desktop-PC. The original csbwin-versions for Linux did not run nicely. I am not using esd as well and the sound-pipe-feature offers a rather crappy result. So i thought about compiling the source-code of your pandora-version and after some searching found this thread. By following your guide in the above post, everything worked rather smooth and i am experiencing nice sound-output. Wonderful.

There are some messages during compilation. I'm not sure, if they are of interest to you, but in case they are:

Code: Select all

Scanning dependencies of target CsbWin
[  2%] Building CXX object CMakeFiles/CsbWin.dir/LinScreen.o
[  4%] Building CXX object CMakeFiles/CsbWin.dir/CSBlinux.o
[  6%] Building CXX object CMakeFiles/CsbWin.dir/LinCSBUI.o
/home/lomaxx/downloads/csbwin-b4bc4c0/LinCSBUI.cpp: In function 'bool LIN_PlaySound(i8*, ui32, int)':
/home/lomaxx/downloads/csbwin-b4bc4c0/LinCSBUI.cpp:645: warning: ignoring return value of 'size_t fwrite(const void*, size_t, size_t, FILE*)', declared with attribute warn_unused_result
[  9%] Building CXX object CMakeFiles/CsbWin.dir/AsciiDump.o
[ 11%] Building CXX object CMakeFiles/CsbWin.dir/Attack.o
[ 13%] Building CXX object CMakeFiles/CsbWin.dir/Bitmaps.o
[ 15%] Building CXX object CMakeFiles/CsbWin.dir/CSBCode.o
[ 18%] Building CXX object CMakeFiles/CsbWin.dir/CSBUI.o
[ 20%] Building CXX object CMakeFiles/CsbWin.dir/Chaos.o
[ 22%] Building CXX object CMakeFiles/CsbWin.dir/Character.o
[ 25%] Building CXX object CMakeFiles/CsbWin.dir/Code11f52.o
[ 27%] Building CXX object CMakeFiles/CsbWin.dir/Code13ea4.o
[ 29%] Building CXX object CMakeFiles/CsbWin.dir/Code17818.o
[ 31%] Building CXX object CMakeFiles/CsbWin.dir/Code1f9e6.o
[ 34%] Building CXX object CMakeFiles/CsbWin.dir/Code222ea.o
[ 36%] Building CXX object CMakeFiles/CsbWin.dir/Code390e.o
[ 38%] Building CXX object CMakeFiles/CsbWin.dir/Code51a4.o
/home/lomaxx/downloads/csbwin-b4bc4c0/Code51a4.cpp: In function 'void DrawMonster(i32, i32&, ui16, ui16, SIDE_OF_DOOR, bool&, SINGLE_MONSTER_STATUS&, RN, i16&, RectPos&, i32, i16&, i32, i16)':
/home/lomaxx/downloads/csbwin-b4bc4c0/Code51a4.cpp:928: warning: ignoring return value of 'size_t fwrite(const void*, size_t, size_t, FILE*)', declared with attribute warn_unused_result
[ 40%] Building CXX object CMakeFiles/CsbWin.dir/Codea59a.o
[ 43%] Building CXX object CMakeFiles/CsbWin.dir/DSA.o
[ 45%] Building CXX object CMakeFiles/CsbWin.dir/Graphics.o
[ 47%] Building CXX object CMakeFiles/CsbWin.dir/Hint.o
[ 50%] Building CXX object CMakeFiles/CsbWin.dir/Magic.o
[ 52%] Building CXX object CMakeFiles/CsbWin.dir/Menu.o
[ 54%] Building CXX object CMakeFiles/CsbWin.dir/Monster.o
/home/lomaxx/downloads/csbwin-b4bc4c0/Monster.cpp:938: warning: non-local variable '<anonymous struct> attackParameters' uses anonymous type
[ 56%] Building CXX object CMakeFiles/CsbWin.dir/Mouse.o
[ 59%] Building CXX object CMakeFiles/CsbWin.dir/MoveObject.o
[ 61%] Building CXX object CMakeFiles/CsbWin.dir/NewBugs.o
[ 63%] Building CXX object CMakeFiles/CsbWin.dir/OldBugs.o
[ 65%] Building CXX object CMakeFiles/CsbWin.dir/RC4.o
[ 68%] Building CXX object CMakeFiles/CsbWin.dir/Recording.o
[ 70%] Building CXX object CMakeFiles/CsbWin.dir/SaveGame.o
[ 72%] Building CXX object CMakeFiles/CsbWin.dir/SmartDiscard.o
[ 75%] Building CXX object CMakeFiles/CsbWin.dir/Sound.o
[ 77%] Building CXX object CMakeFiles/CsbWin.dir/Statistics.o
/home/lomaxx/downloads/csbwin-b4bc4c0/Statistics.cpp:45: warning: deprecated conversion from string constant to 'char*'
/home/lomaxx/downloads/csbwin-b4bc4c0/Statistics.cpp:45: warning: deprecated conversion from string constant to 'char*'
/home/lomaxx/downloads/csbwin-b4bc4c0/Statistics.cpp:45: warning: deprecated conversion from string constant to 'char*'
/home/lomaxx/downloads/csbwin-b4bc4c0/Statistics.cpp:45: warning: deprecated conversion from string constant to 'char*'
/home/lomaxx/downloads/csbwin-b4bc4c0/Statistics.cpp:45: warning: deprecated conversion from string constant to 'char*'
/home/lomaxx/downloads/csbwin-b4bc4c0/Statistics.cpp:45: warning: deprecated conversion from string constant to 'char*'
/home/lomaxx/downloads/csbwin-b4bc4c0/Statistics.cpp:45: warning: deprecated conversion from string constant to 'char*'
/home/lomaxx/downloads/csbwin-b4bc4c0/Statistics.cpp:45: warning: deprecated conversion from string constant to 'char*'
/home/lomaxx/downloads/csbwin-b4bc4c0/Statistics.cpp:45: warning: deprecated conversion from string constant to 'char*'
/home/lomaxx/downloads/csbwin-b4bc4c0/Statistics.cpp:45: warning: deprecated conversion from string constant to 'char*'
/home/lomaxx/downloads/csbwin-b4bc4c0/Statistics.cpp:45: warning: deprecated conversion from string constant to 'char*'
/home/lomaxx/downloads/csbwin-b4bc4c0/Statistics.cpp:45: warning: deprecated conversion from string constant to 'char*'
/home/lomaxx/downloads/csbwin-b4bc4c0/Statistics.cpp:45: warning: deprecated conversion from string constant to 'char*'
/home/lomaxx/downloads/csbwin-b4bc4c0/Statistics.cpp:45: warning: deprecated conversion from string constant to 'char*'
/home/lomaxx/downloads/csbwin-b4bc4c0/Statistics.cpp:45: warning: deprecated conversion from string constant to 'char*'
/home/lomaxx/downloads/csbwin-b4bc4c0/Statistics.cpp:45: warning: deprecated conversion from string constant to 'char*'
/home/lomaxx/downloads/csbwin-b4bc4c0/Statistics.cpp:45: warning: deprecated conversion from string constant to 'char*'
/home/lomaxx/downloads/csbwin-b4bc4c0/Statistics.cpp:45: warning: deprecated conversion from string constant to 'char*'
/home/lomaxx/downloads/csbwin-b4bc4c0/Statistics.cpp:45: warning: deprecated conversion from string constant to 'char*'
/home/lomaxx/downloads/csbwin-b4bc4c0/Statistics.cpp:45: warning: deprecated conversion from string constant to 'char*'
/home/lomaxx/downloads/csbwin-b4bc4c0/Statistics.cpp:45: warning: deprecated conversion from string constant to 'char*'
/home/lomaxx/downloads/csbwin-b4bc4c0/Statistics.cpp:45: warning: deprecated conversion from string constant to 'char*'
/home/lomaxx/downloads/csbwin-b4bc4c0/Statistics.cpp:45: warning: deprecated conversion from string constant to 'char*'
/home/lomaxx/downloads/csbwin-b4bc4c0/Statistics.cpp:45: warning: deprecated conversion from string constant to 'char*'
/home/lomaxx/downloads/csbwin-b4bc4c0/Statistics.cpp:45: warning: deprecated conversion from string constant to 'char*'
/home/lomaxx/downloads/csbwin-b4bc4c0/Statistics.cpp:45: warning: deprecated conversion from string constant to 'char*'
/home/lomaxx/downloads/csbwin-b4bc4c0/Statistics.cpp:45: warning: deprecated conversion from string constant to 'char*'
/home/lomaxx/downloads/csbwin-b4bc4c0/Statistics.cpp: In function 'void GetMonsterName(int, int, char*)':
/home/lomaxx/downloads/csbwin-b4bc4c0/Statistics.cpp:90: warning: deprecated conversion from string constant to 'char*'
[ 79%] Building CXX object CMakeFiles/CsbWin.dir/Stdafx.o
[ 81%] Building CXX object CMakeFiles/CsbWin.dir/Timer.o
[ 84%] Building CXX object CMakeFiles/CsbWin.dir/Translation.o
[ 86%] Building CXX object CMakeFiles/CsbWin.dir/VBL.o
[ 88%] Building CXX object CMakeFiles/CsbWin.dir/Viewport.o
[ 90%] Building CXX object CMakeFiles/CsbWin.dir/WinScreen.o
[ 93%] Building CXX object CMakeFiles/CsbWin.dir/data.o
[ 95%] Building CXX object CMakeFiles/CsbWin.dir/md5C.o
[ 97%] Building CXX object CMakeFiles/CsbWin.dir/system.o
[100%] Building CXX object CMakeFiles/CsbWin.dir/utility.o
Linking CXX executable CsbWin
[100%] Built target CsbWin
After that i downloaded "Clone-CSBwin-Linux100.tar.gz" from http://dmweb.free.fr/?q=node/851 to get the DM- and CSB-data, unpacked it, copied the CsbWin-binary to the DungeonMaster-subdirectory and ran "./CsbWin --directory ./Original\ DM/ --gamsav . --norecord". Runs nice so far with flawless sound. Unfortunately fullscreen-mode does not work correctly. I get the wrong ratio. And with the --extra-large-option, there is some part cut of at the right screen.
This still is a great improvement for me compared to the official Linux-version. So it would be nice if your changes would be merged to the official Linux-code and offered in an official binary-package.

Thanks a lot
Lomaxx

P.s.: Now i am only missing a 3x-scaling with rgb- and scanline-overlay. ;) Well, i know that's not so easy and very unlikely to happen, but i love the resulting picture. <sigh>
User avatar
Sphenx
On Master
Posts: 566
Joined: Sun Sep 09, 2001 11:23 am
Contact:

Re: Porting/updating CSBwin for Linux and sound support

Post by Sphenx »

Lomaxx wrote:This still is a great improvement for me compared to the official Linux-version. So it would be nice if your changes would be merged to the official Linux-code and offered in an official binary-package.
:arrow: Note to moderators: maybe it's time to have also an official thread for the good linux versions to download?
On dmweb there are two packages : Clone-CSBwin-Linux100.tar.gz and Clone-CSBwin-Linux11_014.zip (which contain only the program).
The CSBwin100 alone did not work for me (?) and I necessarily required the 11_014.
And now there are newer versions which could be used for playing Conflux.
It could be good to have a sticky post for these linux versions (and know which should be considered the lastest?) and even gather some 'official' linux maintainers here.
Ful Ir
Novice
Posts: 28
Joined: Wed Jan 26, 2011 9:04 pm

Re: Porting/updating CSBwin for Linux and sound support

Post by Ful Ir »

Nice to know it works for you, Lomaxx. Thanks.
The warnings are normal, I just did not bother to fix or disable them.
Fullscreen mode should work correctly at least with 640x480 and 2x scaling if my memory doesn't fail me. But maybe also it only works on my system - never tested it on another.
You say it has the wrong ratio - I'm curious: Wrong in what way? The ratio is always wrong by some percent because the Atari uses 320x200 for the 4:3 screen (non-square pixels), but PC usually have square pixels so it appears somewhat squashed (also in windowed mode).
User avatar
beowuuf
Archmastiff
Posts: 20687
Joined: Sat Sep 16, 2000 2:00 pm
Location: Basingstoke, UK

Re: Porting/updating CSBwin for Linux and sound support

Post by beowuuf »

Sphenx wrote:
Lomaxx wrote:This still is a great improvement for me compared to the official Linux-version. So it would be nice if your changes would be merged to the official Linux-code and offered in an official binary-package.
:arrow: Note to moderators: maybe it's time to have also an official thread for the good linux versions to download?
On dmweb there are two packages : Clone-CSBwin-Linux100.tar.gz and Clone-CSBwin-Linux11_014.zip (which contain only the program).
The CSBwin100 alone did not work for me (?) and I necessarily required the 11_014.
And now there are newer versions which could be used for playing Conflux.
It could be good to have a sticky post for these linux versions (and know which should be considered the lastest?) and even gather some 'official' linux maintainers here.
That works exactly as the Windows version works. 10.0 is the latest stable release Paul S has commited to, though there are tweaks up to 11.014 (or whatever the version is) that you replace in the official package to play the engines that require it. Conflux is the only one, really, that uses all the expansions. And as you say, now has perhaps even a later expansion than was otherwise used.


If you need a sticky post, post and an admin can sticky it. If you need 'offical' linux maintainers, gather them. Paul S is updating the widnows version, and that's it. Anything beyond that needs someone to keep a track and change. And I'm guessing the work needing redone for a new beta each time the core engine changes.

The admins can help with whatever needs done. Just someone needs to explicitly say what needs done and do the groundwork.

for DMWeb, you can speak to Christophe about access and updating any files.
User avatar
T0Mi
Expert
Posts: 324
Joined: Thu Dec 27, 2007 10:21 pm
Location: schland

Re: Porting/updating CSBwin for Linux and sound support

Post by T0Mi »

P.s.: Now i am only missing a 3x-scaling with rgb- and scanline-overlay. ;) Well, i know that's not so easy and very unlikely to happen, but i love the resulting picture. <sigh>
For visual reference
Image

ScaleXx and scanline applied
Image

maxed out:
Image

source:
http://scale2x.sourceforge.net/algorithm.html
Lomaxx
Neophyte
Posts: 4
Joined: Fri Apr 29, 2011 12:48 pm

Re: Porting/updating CSBwin for Linux and sound support

Post by Lomaxx »

@Ful Ir: I just tested the resolutions/fullscreenmode again. The wrong ratio in fullscreen-mode was caused by two things: a) I just set --fullscreen, but not a bigger resolution like --extralarge (i thought the resolution would be automatically changed to the native monitorresolution) and b) my old monitor screwed up the picture/ratio because it couldn't handle the low resolution correctly.
I guess the problem with the black column on the right side with --extralarge WITHOUT --fullscreen is also caused by my setup. My monitor has a resolution of 1280x1024. I guess the extra-large resolution 1280x960 and the few pixels for the window-border screw up things. So it's all my/my computers fault and you can safely forget about these issues. My old AthlonXP2600 is too slow to handle anything else than 2x resolution without slowdowns anyway, so i will stick to that resolution.
Lomaxx
Neophyte
Posts: 4
Joined: Fri Apr 29, 2011 12:48 pm

Re: Porting/updating CSBwin for Linux and sound support

Post by Lomaxx »

@Tomi: Thanks for the visuals. Though these are very simple filters. I myself dislike scanlines that are completely black and the xSAL-filters (or similar) that make things rounder than they used to be. AFAIK A good crt-emulation-filter offers at least three things:
1.) scanlines that are not completely black, but shade the pixels below that line by a small percentage
2.) a very slight unsharpening-effect
3.) a slight RGB-bleeding effect (i.e for example a red pixel slightly affects the neighbor-pixels (up/down/left/right) with slight red glow.

Some emulators offer rather advanced methods for that. Unfortunately my FX5900XT-GFX-card is too old to use them as it does not offer shaders (i think that's the problem). Oh again my old hardware. <sigh> ;) I made a test with gimp a while ago (without bleeding effect). The result can be seen here. Following that link, you also find one post below more links to more examples. I also had some other example from mame which looked really nice. I wish i would find it again. <sighs again>
Ful Ir
Novice
Posts: 28
Joined: Wed Jan 26, 2011 9:04 pm

Re: Porting/updating CSBwin for Linux and sound support

Post by Ful Ir »

[quote=Lomaxx]I guess the problem with the black column on the right side with --extralarge WITHOUT --fullscreen is also caused by my setup. My monitor has a resolution of 1280x1024. I guess the extra-large resolution 1280x960 and the few pixels for the window-border screw up things.[/quote]
I just tried running it on my old Athlon XP2500 (with a Geforce 6800GT) connected to my HDTV. CPU power is definitely not an issue here, because even with --extralarge I was not able to get it above about 30% (20% for X, 5% pulseaudio, 5% CsbWin).
With just --fullscreen I get a wide squashed display (stretched to 16:9), with --extralarge I get a 1280x960 window (no black border on right side), with --extralarge --fullscreen --width 1920 --height 1080 I get it centered (correct aspect) in fullscreen mode. This IMO should also work with 1280x1024, so please try using --width 1280 --height 1024.

Lomaxx, also please check if you have any "PLACE" lines in your config.linux and try commenting or removing them, I think they may interfere with fullscreen mode. Please watch out that the config parser does not like empty lines, make sure each line either contains a statement or starts with a semicolon.

About scanline and/or scale filter:
T0Mi, nice example images :), thanks. I usually do not use these filters when I play something using an emulator, so I never thought about implementing them in CSB :|. Adding the scale filters should be relatively easy, but every time look at the graphics code I think it would be "better" to get rid of the Atari framebuffer format used internally, because about 60% of CsbWins total CPU usage is spent on converting it back to a PC-compatible format. But maybe I'm too perfectionist here ;)
Doing this however is not easy, especially because I don't know how many parts of the Atari code rely on this.
Using GL shaders and/or scaling I thought about, but for now I just wanted to get it working...on the other hand, playing around with GLSL is still on my "things I want to try some time" list :).
Lomaxx
Neophyte
Posts: 4
Joined: Fri Apr 29, 2011 12:48 pm

Re: Porting/updating CSBwin for Linux and sound support

Post by Lomaxx »

@Ful Ir: Don't worry anymore about the fullscreen-issues i had. I solved them by adding the parameter for increasing the resolution. I checked my config.linux anyway. Seems to be ok. Thanks for the help.

I took the RGB-scanline-test that i used on the Ambermoon-Amiga-image and applied it to a DungeonMaster-screenshot. The shot is not the most exiting ("Wow a wall!") ;) but anyway here it is. Upper picture with RGB-effect and scanlines at 3x resolution, lower picture just plaind 3x resolution. Be sure to look at the pictures at 100% (unzooomed) or they will look messy.

Image

If the picture does not fully fit on your screen due to the forum-side-column, then you can look at it here.
User avatar
T0Mi
Expert
Posts: 324
Joined: Thu Dec 27, 2007 10:21 pm
Location: schland

Re: Porting/updating CSBwin for Linux and sound support

Post by T0Mi »

Thanks for the work you guys put into this.

You will find snippets of a blur routine in "WinScreen.cpp" (latest source, not 10.0) Paul has added some time ago.
Probably the right place to add scale2x and scanline effects.

Example scale2x code in C ('Name' of Pixels defined here: http://scale2x.sourceforge.net/algorithm.html):

Code: Select all

 #define B sp[i - b]
 #define D sp[i - (i>0?1:0)]
 #define F sp[i + (i<wd?1:0)]
 #define H sp[i + h]
 #define E  sp[i]
 #define E0 tp[i*2] 
 #define E1 tp[i*2 + 1]
 #define E2 tp[i*2 + tpitch]
 #define E3 tp[i*2 + 1 + tpitch]
 
 void scale2x(SDL_Surface* surface, SDL_Surface* dest)
  {
    register int i, j;
    int b, h;
    int bpp = surface->format->BytesPerPixel;
    if (SDL_MUSTLOCK(dest) != 0)
    {
      if (SDL_LockSurface(dest) < 0)
      {
        fprintf(stderr, "dest locking failedn");
        return;
      }
    }
  
    const int wd = ((dest->w / 2) < (surface->w)) ? (dest->w / 2) : (surface->w);
    const int hg = ((dest->h) < (surface->h*2)) ? (dest->h / 2) : (surface->h);
 
    switch (bpp)
    {
      case 2:
      {
        int tpitch = dest->pitch / 2;
        int spitch = surface->pitch / 2;
        Uint16* tp = (Uint16*) dest->pixels;
        Uint16* sp = (Uint16*) surface->pixels;
  
        for (j = 0; j < hg; ++j)
        {
         b = j>0?spitch:0;
         h = j<hg?spitch:0;
          for (i = 0; i < wd; ++i)
          {
                if (B != H && D != F) {
                        E0 = D == B ? D : E;
                        E1 = B == F ? F : E;
                        E2 = D == H ? D : E;
                        E3 = H == F ? F : E;
                } else {
                        E0 = E;
                        E1 = E;
                        E2 = E;
                        E3 = E;
                }
          }
          tp += 2*tpitch;
          sp += spitch;
        }
  
        break;
      }
      case 4:
      {
        int tpitch = dest->pitch / 4;
        int spitch = surface->pitch / 4;
        Uint32* tp = (Uint32*) dest->pixels;
        Uint32* sp = (Uint32*) surface->pixels;
  
        for (j = 0; j < hg; ++j)
        {
         b = j>0?spitch:0;
         h = j<hg?spitch:0;
          for (i = 0; i < wd; ++i)
          {
                if (B != H && D != F) {
                        E0 = D == B ? D : E;
                        E1 = B == F ? F : E;
                        E2 = D == H ? D : E;
                        E3 = H == F ? F : E;
                } else {
                        E0 = E;
                        E1 = E;
                        E2 = E;
                        E3 = E;
                }
          }
          tp += 2*tpitch;
          sp += spitch;
        }
  
        break;
      }
      default:
        fprintf(stderr, "Unsupported bitdepth.n");
        break;
    }
  
  
    if (SDL_MUSTLOCK(dest) != 0)
    {
      SDL_UnlockSurface(dest);
    }
  }

EDIT:
The scale2x algorithm as well as a scanline effect has been added to CSBwin for testing purposes.
Check it out:
http://www.dungeon-master.com/forum/vie ... 46&t=29053
vanfanel
Novice
Posts: 11
Joined: Sun Oct 02, 2011 12:05 pm

Re: Porting/updating CSBwin for Linux and sound support

Post by vanfanel »

Hello there, fellow dugeon crawlers!
I'm trying to compile latest sources (using cmake) in my X86_64 gentoo-linux box and I get a lot of errors:

Code: Select all

[  2%] Building CXX object CMakeFiles/CsbWin.dir/CSBCode.o
/usr/src/csbwin-b4bc4c0/CSBCode.cpp: In function 'void DrawCursor()':
/usr/src/csbwin-b4bc4c0/CSBCode.cpp:2454: error: cast from 'i8*' to 'i32' loses precision
/usr/src/csbwin-b4bc4c0/CSBCode.cpp:2511: error: cast from 'i8*' to 'i32' loses precision
/usr/src/csbwin-b4bc4c0/CSBCode.cpp: In function 'DOESNOTEXIST& _ResurrectReincarnateCancel(i32)':
/usr/src/csbwin-b4bc4c0/CSBCode.cpp:6694: error: cast from 'CHARDESC*' to 'i32' loses precision
/usr/src/csbwin-b4bc4c0/CSBCode.cpp: In function 'DOESNOTEXIST& _DisplayChaosStrikesBack()':
/usr/src/csbwin-b4bc4c0/CSBCode.cpp:9168: error: cast from 'i8*' to 'ui32' loses precision
/usr/src/csbwin-b4bc4c0/CSBCode.cpp:9187: error: cast from 'PALETTE*' to 'i32' loses precision
/usr/src/csbwin-b4bc4c0/CSBCode.cpp:9199: error: cast from 'PALETTE*' to 'i32' loses precision
/usr/src/csbwin-b4bc4c0/CSBCode.cpp:9268: error: cast from 'PALETTE*' to 'i32' loses precision
/usr/src/csbwin-b4bc4c0/CSBCode.cpp:9281: error: cast from 'PALETTE*' to 'i32' loses precision
/usr/src/csbwin-b4bc4c0/CSBCode.cpp:9308: error: cast from 'PALETTE*' to 'i32' loses precision
/usr/src/csbwin-b4bc4c0/CSBCode.cpp: In function 'DOESNOTEXIST& _TAG01f5ea()':
/usr/src/csbwin-b4bc4c0/CSBCode.cpp:9517: error: cast from 'PALETTE*' to 'i32' loses precision
/usr/src/csbwin-b4bc4c0/CSBCode.cpp:9543: error: cast from 'PALETTE*' to 'i32' loses precision
/usr/src/csbwin-b4bc4c0/CSBCode.cpp: In function 'DOESNOTEXIST& _TAG01f928()':
/usr/src/csbwin-b4bc4c0/CSBCode.cpp:9578: error: cast from 'PALETTE*' to 'i32' loses precision
/usr/src/csbwin-b4bc4c0/CSBCode.cpp:9581: error: cast from 'PALETTE*' to 'i32' loses precision
/usr/src/csbwin-b4bc4c0/CSBCode.cpp: In function 'DOESNOTEXIST& _SelectSaveGame(i32, i32, i32)':
/usr/src/csbwin-b4bc4c0/CSBCode.cpp:9745: error: cast from 'const char*' to 'i32' loses precision
/usr/src/csbwin-b4bc4c0/CSBCode.cpp:9745: error: cast from 'char*' to 'i32' loses precision
/usr/src/csbwin-b4bc4c0/CSBCode.cpp:9745: error: cast from 'char*' to 'i32' loses precision
/usr/src/csbwin-b4bc4c0/CSBCode.cpp:9745: error: cast from 'char*' to 'i32' loses precision
/usr/src/csbwin-b4bc4c0/CSBCode.cpp:9745: error: cast from 'char*' to 'i32' loses precision
/usr/src/csbwin-b4bc4c0/CSBCode.cpp: In function 'DOESNOTEXIST& _TAG021028()':
/usr/src/csbwin-b4bc4c0/CSBCode.cpp:10438: error: cast from 'const char*' to 'i32' loses precision
/usr/src/csbwin-b4bc4c0/CSBCode.cpp:10438: error: cast from 'const char*' to 'i32' loses precision
/usr/src/csbwin-b4bc4c0/CSBCode.cpp:10438: error: cast from 'const char*' to 'i32' loses precision
/usr/src/csbwin-b4bc4c0/CSBCode.cpp: In function 'void ExpandGraphic(i8*, i8*, i16, i16, i32)':
/usr/src/csbwin-b4bc4c0/CSBCode.cpp:10783: error: cast from 'i8*' to 'i32' loses precision
/usr/src/csbwin-b4bc4c0/CSBCode.cpp:10793: error: cast from 'i8*' to 'i32' loses precision
/usr/src/csbwin-b4bc4c0/CSBCode.cpp:10895: error: cast from 'i8*' to 'i32' loses precision
/usr/src/csbwin-b4bc4c0/CSBCode.cpp: In function 'DOESNOTEXIST& _AskWhatToDo()':
/usr/src/csbwin-b4bc4c0/CSBCode.cpp:11299: error: cast from 'const char*' to 'i32' loses precision
/usr/src/csbwin-b4bc4c0/CSBCode.cpp:11299: error: cast from 'const char*' to 'i32' loses precision
/usr/src/csbwin-b4bc4c0/CSBCode.cpp:11299: error: cast from 'const char*' to 'i32' loses precision
/usr/src/csbwin-b4bc4c0/CSBCode.cpp:11299: error: cast from 'const char*' to 'i32' loses precision
/usr/src/csbwin-b4bc4c0/CSBCode.cpp:11299: error: cast from 'const char*' to 'i32' loses precision
/usr/src/csbwin-b4bc4c0/CSBCode.cpp:11299: error: cast from 'const char*' to 'i32' loses precision
make[2]: *** [CMakeFiles/CsbWin.dir/CSBCode.o] Error 1
make[1]: *** [CMakeFiles/CsbWin.dir/all] Error 2
make: *** [all] Error 2
Maybe this happens because it's a 64bit building system? Is it easily fixable?

Thanks!
User avatar
Paul Stevens
CSBwin Guru
Posts: 4318
Joined: Sun Apr 08, 2001 6:00 pm
Location: Madison, Wisconsin, USA

Re: Porting/updating CSBwin for Linux and sound support

Post by Paul Stevens »

Is it easily fixable?
No.

Unless you can tell your compiler
to generate 32-bit code.
vanfanel
Novice
Posts: 11
Joined: Sun Oct 02, 2011 12:05 pm

Re: Porting/updating CSBwin for Linux and sound support

Post by vanfanel »

Then I'd have to install 32bits libraries, too...
Well, I'll have to stick to emulated DM, then :)

Thanks!
User avatar
Paul Stevens
CSBwin Guru
Posts: 4318
Joined: Sun Apr 08, 2001 6:00 pm
Location: Madison, Wisconsin, USA

Re: Porting/updating CSBwin for Linux and sound support

Post by Paul Stevens »

vanfanel wrote:Well, I'll have to stick to emulated DM,
Emulation? Of what? Do you mean an Atari emulator
or a Windows emulator or what? I hope you will be able
to play all the custom dungeons available.
vanfanel
Novice
Posts: 11
Joined: Sun Oct 02, 2011 12:05 pm

Re: Porting/updating CSBwin for Linux and sound support

Post by vanfanel »

@Paul Stevens: I'm a big Amiga fan, so right here there are various Amiga machines and even three Minimigs :D
I can play DM on a real Amiga, in an FPGA+68K Amiga (minimig) or in a highly-optimized gentoo x86_64 linux enviroment using P-UAE: I just wanted to use your port because I find the rewriting from original ST code very interesting.
No Windows here, thanks. I HATE that ...OS (calling it an OS hurts really). Slow and painful experiences I had with that.
User avatar
Paul Stevens
CSBwin Guru
Posts: 4318
Joined: Sun Apr 08, 2001 6:00 pm
Location: Madison, Wisconsin, USA

Re: Porting/updating CSBwin for Linux and sound support

Post by Paul Stevens »

The more I think about it more I am convinced
that converting CSBwin to 64-bit is a major
task.

I know nothing of Linux except to use forward
slashes instead of back-slashes. But Windows-64
can run almost all 32-bit applications (by putting
hardware in 32-bit mode or something???) If
Linux can run 32-bit applications can you compile
CSBwin on a 32-bit machine and run it on a 64-
bit machine? Then you could play Conflux, etc.
User avatar
Paul Stevens
CSBwin Guru
Posts: 4318
Joined: Sun Apr 08, 2001 6:00 pm
Location: Madison, Wisconsin, USA

Re: Porting/updating CSBwin for Linux and sound support

Post by Paul Stevens »

Another thought came to my mind......Second one today!

Your problem is that the compiler does not like to
cast pointers as 32-bit integers. Well, what if your
Linux loader puts all address below 2**32? Or if it
has two logical banks such that it is possible to
distinguish addresses as belonging to one of the
two banks? Or almost any addressing scheme
that is predictable at compile time.
Say the addresses are:

Code: Select all

0000000000000000 --> 000000007fffffff
8000000000000000 --> 800000007fffffff
Then we could find each of those explicit
and implicit casts that the compiler is
complaining about....and write a tiny function
to translate from pointer <--> integer.
In fact, I could do it here with 99 percent
accuracy by using a little subterfuge.

Unfortunately, that would only get us past
this one hurdle. You would probably still be
faced with problems in the graphics interface.
Christoph
Craftsman
Posts: 102
Joined: Sun Nov 20, 2011 12:04 am

Re: Porting/updating CSBwin for Linux and sound support

Post by Christoph »

Hi,

with Paul Stevens' help I've tried to compile the recent version 11.067 on Linux (Debian Squeeze), because all precompiled versions are crashing here when saving more than one time, some graphics issues, and immediate crashes when I try to run Conflux.

I've resolved one problem with a 64 bit unsigned integer, and some confusing path/directory issues related to finding files in the make process, and two non-working command line parameters in the "autogen.sh".

Two problems remain:
  • 1) The configure process is not aware of my installed Hermes library (the headers are present as well).
    2) The linking of the object files fails.
I've used the workaround of disabling dynamic window sizes for the first one.
See below for details about the second problem.

Code: Select all

/bin/sh ../libtool --tag=CXX   --mode=link g++  -g -Wall -D_LINUX -fsigned-char -D_LINUX -fpermissive -DSOUND__ESOUND   -o Chaos_strikes_back_for_linux LinScreen.o CSBlinux.o LinCSBUI.o AsciiDump.o Bitmaps.o Attack.o CSBCode.o Chaos.o Character.o Code11f52.o Code13ea4.o Code17818.o Code1f9e6.o Code222ea.o Code390e.o Code51a4.o Codea59a.o Graphics.o Hint.o Magic.o Menu.o Monster.o Mouse.o NewBugs.o OldBugs.o SaveGame.o SmartDiscard.o Sound.o Stdafx.o Timer.o VBL.o Viewport.o data.o system.o utility.o DSA.o RC4.o md5C.o MoveObject.o   `/usr/bin/sdl-config --libs` -lesd -lglib  
libtool: link: g++ -g -Wall -D_LINUX -fsigned-char -D_LINUX -fpermissive -DSOUND__ESOUND -o Chaos_strikes_back_for_linux LinScreen.o CSBlinux.o LinCSBUI.o AsciiDump.o Bitmaps.o Attack.o CSBCode.o Chaos.o Character.o Code11f52.o Code13ea4.o Code17818.o Code1f9e6.o Code222ea.o Code390e.o Code51a4.o Codea59a.o Graphics.o Hint.o Magic.o Menu.o Monster.o Mouse.o NewBugs.o OldBugs.o SaveGame.o SmartDiscard.o Sound.o Stdafx.o Timer.o VBL.o Viewport.o data.o system.o utility.o DSA.o RC4.o md5C.o MoveObject.o  -L/usr/lib /usr/lib/libSDL.so /usr/lib/libesd.so /usr/lib/libglib.so
CSBlinux.o: In function `main':
/usr/local/src/CSBwin/src/CSBlinux.cpp:521: undefined reference to `CSBUI(CSB_UI_MESSAGE*)'
/usr/local/src/CSBwin/src/CSBlinux.cpp:556: undefined reference to `CSBUI(CSB_UI_MESSAGE*)'
/usr/local/src/CSBwin/src/CSBlinux.cpp:675: undefined reference to `CSBUI(CSB_UI_MESSAGE*)'
/usr/local/src/CSBwin/src/CSBlinux.cpp:683: undefined reference to `CSBUI(CSB_UI_MESSAGE*)'
/usr/local/src/CSBwin/src/CSBlinux.cpp:798: undefined reference to `CSBUI(CSB_UI_MESSAGE*)'
CSBlinux.o:/usr/local/src/CSBwin/src/CSBlinux.cpp:813: more undefined references to `CSBUI(CSB_UI_MESSAGE*)' follow
CSBlinux.o: In function `main':
/usr/local/src/CSBwin/src/CSBlinux.cpp:845: undefined reference to `PlayfileIsOpen()'
/usr/local/src/CSBwin/src/CSBlinux.cpp:849: undefined reference to `CSBUI(CSB_UI_MESSAGE*)'
/usr/local/src/CSBwin/src/CSBlinux.cpp:860: undefined reference to `CSBUI(CSB_UI_MESSAGE*)'
/usr/local/src/CSBwin/src/CSBlinux.cpp:871: undefined reference to `CSBUI(CSB_UI_MESSAGE*)'
/usr/local/src/CSBwin/src/CSBlinux.cpp:882: undefined reference to `CSBUI(CSB_UI_MESSAGE*)'
/usr/local/src/CSBwin/src/CSBlinux.cpp:893: undefined reference to `CSBUI(CSB_UI_MESSAGE*)'
CSBlinux.o:/usr/local/src/CSBwin/src/CSBlinux.cpp:904: more undefined references to `CSBUI(CSB_UI_MESSAGE*)' follow
CSBlinux.o: In function `main':
/usr/local/src/CSBwin/src/CSBlinux.cpp:957: undefined reference to `RecordMenuOption'
/usr/local/src/CSBwin/src/CSBlinux.cpp:958: undefined reference to `CSBUI(CSB_UI_MESSAGE*)'
/usr/local/src/CSBwin/src/CSBlinux.cpp:970: undefined reference to `CSBUI(CSB_UI_MESSAGE*)'
/usr/local/src/CSBwin/src/CSBlinux.cpp:980: undefined reference to `CSBUI(CSB_UI_MESSAGE*)'
/usr/local/src/CSBwin/src/CSBlinux.cpp:993: undefined reference to `CSBUI(CSB_UI_MESSAGE*)'
/usr/local/src/CSBwin/src/CSBlinux.cpp:1005: undefined reference to `CSBUI(CSB_UI_MESSAGE*)'
CSBlinux.o:/usr/local/src/CSBwin/src/CSBlinux.cpp:1015: more undefined references to `CSBUI(CSB_UI_MESSAGE*)' follow
CSBlinux.o: In function `main':
/usr/local/src/CSBwin/src/CSBlinux.cpp:1036: undefined reference to `PlayfileIsOpen()'
/usr/local/src/CSBwin/src/CSBlinux.cpp:1037: undefined reference to `CSBUI(CSB_UI_MESSAGE*)'
/usr/local/src/CSBwin/src/CSBlinux.cpp:1059: undefined reference to `CSBUI(CSB_UI_MESSAGE*)'
/usr/local/src/CSBwin/src/CSBlinux.cpp:1070: undefined reference to `CSBUI(CSB_UI_MESSAGE*)'
/usr/local/src/CSBwin/src/CSBlinux.cpp:1095: undefined reference to `CSBUI(CSB_UI_MESSAGE*)'
/usr/local/src/CSBwin/src/CSBlinux.cpp:1107: undefined reference to `CSBUI(CSB_UI_MESSAGE*)'
CSBlinux.o:/usr/local/src/CSBwin/src/CSBlinux.cpp:1129: more undefined references to `CSBUI(CSB_UI_MESSAGE*)' follow
LinCSBUI.o: In function `UI_Initialize_sounds()':
/usr/local/src/CSBwin/src/LinCSBUI.cpp:513: undefined reference to `UI_free(void*)'
LinCSBUI.o: In function `UI_ProcessOption(char**, int&)':
/usr/local/src/CSBwin/src/LinCSBUI.cpp:752: undefined reference to `NoRecordCommandOption'
/usr/local/src/CSBwin/src/LinCSBUI.cpp:753: undefined reference to `RecordCommandOption'
/usr/local/src/CSBwin/src/LinCSBUI.cpp:756: undefined reference to `NoRecordCommandOption'
/usr/local/src/CSBwin/src/LinCSBUI.cpp:757: undefined reference to `RecordCommandOption'
/usr/local/src/CSBwin/src/LinCSBUI.cpp:903: undefined reference to `dungeonName'
/usr/local/src/CSBwin/src/LinCSBUI.cpp:935: undefined reference to `PlayfileName'
/usr/local/src/CSBwin/src/LinCSBUI.cpp:938: undefined reference to `PlaybackCommandOption'
AsciiDump.o: In function `MISCTABLE::Allocate()':
/usr/local/src/CSBwin/src/AsciiDump.cpp:56: undefined reference to `UI_malloc(int, unsigned int)'
AsciiDump.o: In function `TARGETS::Clear()':
/usr/local/src/CSBwin/src/AsciiDump.cpp:239: undefined reference to `UI_free(void*)'
AsciiDump.o: In function `TARGETS::Add(int, int, int, int, int, int, int)':
/usr/local/src/CSBwin/src/AsciiDump.cpp:251: undefined reference to `UI_realloc(void*, int, unsigned int)'
AsciiDump.o: In function `DumpTimers(_IO_FILE*)':
/usr/local/src/CSBwin/src/AsciiDump.cpp:2061: undefined reference to `UI_malloc(int, unsigned int)'
/usr/local/src/CSBwin/src/AsciiDump.cpp:2072: undefined reference to `UI_free(void*)'
AsciiDump.o: In function `MISCTABLE::DeAllocate()':
/usr/local/src/CSBwin/src/AsciiDump.cpp:41: undefined reference to `UI_free(void*)'
Bitmaps.o: In function `bmpError(char*, char const*, bool)':
/usr/local/src/CSBwin/src/Bitmaps.cpp:61: undefined reference to `IsPlayFileOpen()'
/usr/local/src/CSBwin/src/Bitmaps.cpp:65: undefined reference to `UI_malloc(int, unsigned int)'
/usr/local/src/CSBwin/src/Bitmaps.cpp:69: undefined reference to `UI_free(void*)'
Bitmaps.o: In function `ImportBitmap(unsigned int, BITMAPENTRY*, bool, bool)':
/usr/local/src/CSBwin/src/Bitmaps.cpp:382: undefined reference to `UI_malloc(int, unsigned int)'
Bitmaps.o: In function `GetErrorPortrait(BITMAPENTRY*)':
/usr/local/src/CSBwin/src/Bitmaps.cpp:530: undefined reference to `UI_malloc(int, unsigned int)'
Bitmaps.o: In function `SetOverlayPalette(int, int, int, int)':
/usr/local/src/CSBwin/src/Bitmaps.cpp:682: undefined reference to `UI_free(void*)'
Bitmaps.o: In function `~TEMPORARY_MEMORY':
/usr/local/src/CSBwin/src/CSB.h:206: undefined reference to `UI_free(void*)'
Bitmaps.o: In function `~BITMAPENTRY':
/usr/local/src/CSBwin/src/Bitmaps.cpp:28: undefined reference to `UI_free(void*)'
CSBCode.o: In function `die(int, char const*)':
/usr/local/src/CSBwin/src/CSBCode.cpp:105: undefined reference to `RecordFile_Close()'
/usr/local/src/CSBwin/src/CSBCode.cpp:106: undefined reference to `UI_Die()'
CSBCode.o: In function `PRINTQUEUE::Queue(int, short, char const*)':
/usr/local/src/CSBwin/src/CSBCode.cpp:167: undefined reference to `UI_malloc(int, unsigned int)'
CSBCode.o: In function `_MainLoop(CSB_UI_MESSAGE const*)':
/usr/local/src/CSBwin/src/CSBCode.cpp:698: undefined reference to `UI_DIRECT_CONIN()'
/usr/local/src/CSBwin/src/CSBCode.cpp:708: undefined reference to `UI_free(void*)'
/usr/local/src/CSBwin/src/CSBCode.cpp:715: undefined reference to `UI_CONSTAT()'
CSBCode.o: In function `vblInterrupt()':
/usr/local/src/CSBwin/src/CSBCode.cpp:913: undefined reference to `IsPlayFileOpen()'
/usr/local/src/CSBwin/src/CSBCode.cpp:1065: undefined reference to `IsPlayFileOpen()'
CSBCode.o: In function `LINEQUEUE::Cleanup()':
/usr/local/src/CSBwin/src/CSBCode.cpp:1358: undefined reference to `UI_free(void*)'
CSBCode.o: In function `LINEQUEUE::AddText(int, int, int, char const*, int)':
/usr/local/src/CSBwin/src/CSBCode.cpp:1376: undefined reference to `UI_malloc(int, unsigned int)'
CSBCode.o: In function `LINEQUEUE::DiscardFirst()':
/usr/local/src/CSBwin/src/CSBCode.cpp:1403: undefined reference to `UI_free(void*)'
CSBCode.o: In function `TAG002818()':
/usr/local/src/CSBwin/src/CSBCode.cpp:2144: undefined reference to `IsPlayFileOpen()'
/usr/local/src/CSBwin/src/CSBCode.cpp:2150: undefined reference to `RecordFile_Record(MouseQueueEnt*)'
CSBCode.o: In function `DrawCursor()':
/usr/local/src/CSBwin/src/CSBCode.cpp:2391: undefined reference to `IsPlayFileOpen()'
CSBCode.o: In function `ReadWallDecoration(int)':
/usr/local/src/CSBwin/src/CSBCode.cpp:3067: undefined reference to `UI_free(void*)'
CSBCode.o: In function `WALL_DEC_CACHE::AllocateDerivedGraphic(unsigned int, DECORATION_DESC*)':
/usr/local/src/CSBwin/src/CSBCode.cpp:3093: undefined reference to `UI_free(void*)'
/usr/local/src/CSBwin/src/CSBCode.cpp:3096: undefined reference to `UI_malloc(int, unsigned int)'
CSBCode.o: In function `DrawWallDecoration(int, int, RN, int, bool)':
/usr/local/src/CSBwin/src/CSBCode.cpp:3273: undefined reference to `UI_free(void*)'
/usr/local/src/CSBwin/src/CSBCode.cpp:3300: undefined reference to `UI_free(void*)'
/usr/local/src/CSBwin/src/CSBCode.cpp:3332: undefined reference to `UI_free(void*)'
/usr/local/src/CSBwin/src/CSBCode.cpp:3510: undefined reference to `UI_free(void*)'
/usr/local/src/CSBwin/src/CSBCode.cpp:3705: undefined reference to `UI_free(void*)'
CSBCode.o: In function `DrawFloorDecorations(int, int)':
/usr/local/src/CSBwin/src/CSBCode.cpp:3919: undefined reference to `UI_malloc(int, unsigned int)'
/usr/local/src/CSBwin/src/CSBCode.cpp:3962: undefined reference to `UI_free(void*)'
/usr/local/src/CSBwin/src/CSBCode.cpp:3963: undefined reference to `UI_free(void*)'
CSBCode.o: In function `SubstituteCharacterNames(char*, int, bool)':
/usr/local/src/CSBwin/src/CSBCode.cpp:5364: undefined reference to `UI_malloc(int, unsigned int)'
/usr/local/src/CSBwin/src/CSBCode.cpp:5461: undefined reference to `UI_free(void*)'
CSBCode.o: In function `DecodeText(char*, DB2*, short, int)':
/usr/local/src/CSBwin/src/CSBCode.cpp:5617: undefined reference to `UI_Die()'
CSBCode.o: In function `AttachItem16ToMonster(RN, int, int)':
/usr/local/src/CSBwin/src/CSBCode.cpp:6012: undefined reference to `IsPlayFileOpen()'
/usr/local/src/CSBwin/src/CSBCode.cpp:6030: undefined reference to `UI_realloc(void*, int, unsigned int)'
CSBCode.o: In function `InitializeItem16()':
/usr/local/src/CSBwin/src/CSBCode.cpp:6176: undefined reference to `UI_malloc(int, unsigned int)'
CSBCode.o: In function `_ResurrectReincarnateCancel(int)':
/usr/local/src/CSBwin/src/CSBCode.cpp:6773: undefined reference to `TranslateLanguage(char const*)'
CSBCode.o: In function `DiscardAllInput()':
/usr/local/src/CSBwin/src/CSBCode.cpp:7496: undefined reference to `UI_DIRECT_CONIN()'
/usr/local/src/CSBwin/src/CSBCode.cpp:7496: undefined reference to `UI_CONSTAT()'
CSBCode.o: In function `WaitForButtonFlash()':
/usr/local/src/CSBwin/src/CSBCode.cpp:8547: undefined reference to `UI_Sleep(int)'
CSBCode.o: In function `_TAG01f746()':
/usr/local/src/CSBwin/src/CSBCode.cpp:9474: undefined reference to `UI_BeginRecordOK(bool)'
/usr/local/src/CSBwin/src/CSBCode.cpp:9487: undefined reference to `UI_BeginRecordOK(bool)'
CSBCode.o: In function `_TAG01f928()':
/usr/local/src/CSBwin/src/CSBCode.cpp:9595: undefined reference to `UI_CONSTAT()'
CSBCode.o: In function `ATARIMEM::Cleanup()':
/usr/local/src/CSBwin/src/CSBCode.cpp:9625: undefined reference to `UI_free(void*)'
CSBCode.o: In function `_SelectSaveGame(int, int, int)':
/usr/local/src/CSBwin/src/CSBCode.cpp:9758: undefined reference to `TranslateLanguage(char const*)'
CSBCode.o: In function `_TAG021028()':
/usr/local/src/CSBwin/src/CSBCode.cpp:10470: undefined reference to `UI_ClearScreen()'
CSBCode.o: In function `DisableTraceIfEnciphered()':
/usr/local/src/CSBwin/src/CSBCode.cpp:10513: undefined reference to `CSBUI(CSB_UI_MESSAGE*)'
/usr/local/src/CSBwin/src/CSBCode.cpp:10521: undefined reference to `CSBUI(CSB_UI_MESSAGE*)'
/usr/local/src/CSBwin/src/CSBCode.cpp:10529: undefined reference to `CSBUI(CSB_UI_MESSAGE*)'
CSBCode.o: In function `_GameSetup(int)':
/usr/local/src/CSBwin/src/CSBCode.cpp:10593: undefined reference to `RecordFile_Record(char const*)'
CSBCode.o: In function `_ShowPrisonDoor()':
/usr/local/src/CSBwin/src/CSBCode.cpp:10622: undefined reference to `DMRulesDesignOption'
/usr/local/src/CSBwin/src/CSBCode.cpp:10625: undefined reference to `RecordFile_Record(char const*)'
CSBCode.o: In function `InitializeCaches(char*, int, char*, int)':
/usr/local/src/CSBwin/src/CSBCode.cpp:11099: undefined reference to `UI_malloc(int, unsigned int)'
CSBCode.o: In function `_StartCSB(CSB_UI_MESSAGE const*)':
/usr/local/src/CSBwin/src/CSBCode.cpp:11239: undefined reference to `UI_ClearScreen()'
CSBCode.o: In function `_AskWhatToDo()':
/usr/local/src/CSBwin/src/CSBCode.cpp:11322: undefined reference to `PlaybackCommandOption'
/usr/local/src/CSBwin/src/CSBCode.cpp:11336: undefined reference to `UI_PushMessage(MTYPE, int, int, int, int, int, int)'
/usr/local/src/CSBwin/src/CSBCode.cpp:11349: undefined reference to `UI_PushMessage(MTYPE, int, int, int, int, int, int)'
/usr/local/src/CSBwin/src/CSBCode.cpp:11355: undefined reference to `UI_PushMessage(MTYPE, int, int, int, int, int, int)'
/usr/local/src/CSBwin/src/CSBCode.cpp:11361: undefined reference to `UI_PushMessage(MTYPE, int, int, int, int, int, int)'
CSBCode.o: In function `~PRINTQUEUE':
/usr/local/src/CSBwin/src/CSBCode.cpp:154: undefined reference to `UI_free(void*)'
CSBCode.o: In function `~WALL_DEC_CACHE':
/usr/local/src/CSBwin/src/CSBCode.cpp:3080: undefined reference to `UI_free(void*)'
CSBCode.o: In function `WALL_DEC_CACHE::Cleanup()':
/usr/local/src/CSBwin/src/CSBCode.cpp:3083: undefined reference to `UI_free(void*)'
CSBCode.o: In function `~ATARIMEM':
/usr/local/src/CSBwin/src/CSBCode.cpp:9613: undefined reference to `UI_free(void*)'
CSBCode.o: In function `ATARIMEM::mem(int)':
/usr/local/src/CSBwin/src/CSBCode.cpp:9616: undefined reference to `UI_free(void*)'
/usr/local/src/CSBwin/src/CSBCode.cpp:9617: undefined reference to `UI_malloc(int, unsigned int)'
Chaos.o: In function `GetSubString(char*, char*, short)':
/usr/local/src/CSBwin/src/Chaos.cpp:1011: undefined reference to `TranslateLanguage(char const*)'
/usr/local/src/CSBwin/src/Chaos.cpp:1015: undefined reference to `TranslateLanguage(char const*)'
Chaos.o: In function `TAG002ca8()':
/usr/local/src/CSBwin/src/Chaos.cpp:2773: undefined reference to `UI_DIRECT_CONIN()'
/usr/local/src/CSBwin/src/Chaos.cpp:2771: undefined reference to `UI_CONSTAT()'
Chaos.o: In function `_TAG00301c(char*)':
/usr/local/src/CSBwin/src/Chaos.cpp:3013: undefined reference to `UI_CONSTAT()'
/usr/local/src/CSBwin/src/Chaos.cpp:3014: undefined reference to `UI_DIRECT_CONIN()'
Character.o: In function `EncodeDescriptivePhrases(int, int, char**, int*, char*, char const*, char const*)':
/usr/local/src/CSBwin/src/Character.cpp:3153: undefined reference to `TranslateLanguage(char const*)'
Character.o: In function `DescribeObject(RN, short)':
/usr/local/src/CSBwin/src/Character.cpp:3597: undefined reference to `TranslateLanguage(char const*)'
/usr/local/src/CSBwin/src/Character.cpp:3598: undefined reference to `TranslateLanguage(char const*)'
/usr/local/src/CSBwin/src/Character.cpp:3614: undefined reference to `TranslateLanguage(char const*)'
Character.o: In function `TAG019036()':
/usr/local/src/CSBwin/src/Character.cpp:4494: undefined reference to `TranslateLanguage(char const*)'
Character.o:/usr/local/src/CSBwin/src/Character.cpp:4496: more undefined references to `TranslateLanguage(char const*)' follow
Character.o: In function `CUSTOMPHRASE::Clear()':
/usr/local/src/CSBwin/src/Character.cpp:3295: undefined reference to `UI_free(void*)'
Character.o: In function `CUSTOMPHRASE::Set(char*)':
/usr/local/src/CSBwin/src/Character.cpp:3296: undefined reference to `UI_malloc(int, unsigned int)'
Code11f52.o: In function `AddObjectToRoom(RN, RN, int, int, MMRECORD*)':
/usr/local/src/CSBwin/src/Code11f52.cpp:421: undefined reference to `UI_realloc(void*, int, unsigned int)'
Code11f52.o: In function `WarnIllegalTimer(int, int, int, int)':
/usr/local/src/CSBwin/src/Code11f52.cpp:3520: undefined reference to `IsPlayFileOpen()'
Code13ea4.o: In function `_ReIncarnate(CHARDESC*)':
/usr/local/src/CSBwin/src/Code13ea4.cpp:88: undefined reference to `IsPlayFileOpen()'
/usr/local/src/CSBwin/src/Code13ea4.cpp:91: undefined reference to `PlayFile_Play(MouseQueueEnt*)'
/usr/local/src/CSBwin/src/Code13ea4.cpp:101: undefined reference to `RecordFile_Record(MouseQueueEnt*)'
/usr/local/src/CSBwin/src/Code13ea4.cpp:153: undefined reference to `RecordFile_Record(MouseQueueEnt*)'
/usr/local/src/CSBwin/src/Code13ea4.cpp:86: undefined reference to `IsPlayFileOpen()'
/usr/local/src/CSBwin/src/Code13ea4.cpp:86: undefined reference to `UI_CONSTAT()'
/usr/local/src/CSBwin/src/Code13ea4.cpp:216: undefined reference to `IsPlayFileOpen()'
/usr/local/src/CSBwin/src/Code13ea4.cpp:220: undefined reference to `UI_CONSTAT()'
/usr/local/src/CSBwin/src/Code13ea4.cpp:223: undefined reference to `UI_DIRECT_CONIN()'
/usr/local/src/CSBwin/src/Code13ea4.cpp:232: undefined reference to `RecordFile_Record(MouseQueueEnt*)'
Code1f9e6.o: In function `_ShowCredits(int)':
/usr/local/src/CSBwin/src/Code1f9e6.cpp:258: undefined reference to `IsPlayFileOpen()'
/usr/local/src/CSBwin/src/Code1f9e6.cpp:258: undefined reference to `PlayFile_Close()'
/usr/local/src/CSBwin/src/Code1f9e6.cpp:285: undefined reference to `IsRecordFileRecording()'
/usr/local/src/CSBwin/src/Code1f9e6.cpp:293: undefined reference to `RecordFile_Close()'
/usr/local/src/CSBwin/src/Code1f9e6.cpp:305: undefined reference to `UI_BeginRecordOK(bool)'
/usr/local/src/CSBwin/src/Code1f9e6.cpp:306: undefined reference to `RecordFile_Open()'
/usr/local/src/CSBwin/src/Code1f9e6.cpp:307: undefined reference to `RecordFile_Record(int, int, int)'
/usr/local/src/CSBwin/src/Code1f9e6.cpp:336: undefined reference to `UI_CONSTAT()'
/usr/local/src/CSBwin/src/Code1f9e6.cpp:350: undefined reference to `UI_PushMessage(MTYPE, int, int, int, int, int, int)'
Code51a4.o: In function `ALTMONCACHE::Clear()':
/usr/local/src/CSBwin/src/Code51a4.cpp:1010: undefined reference to `UI_free(void*)'
/usr/local/src/CSBwin/src/Code51a4.cpp:1018: undefined reference to `UI_free(void*)'
Code51a4.o: In function `AllocateAlternateDerivedGraphic(DB4*, int, int, int)':
/usr/local/src/CSBwin/src/Code51a4.cpp:1052: undefined reference to `UI_malloc(int, unsigned int)'
Codea59a.o: In function `SummarizeStoneRoom(SUMMARIZEROOMDATA*, int, bool)':
/usr/local/src/CSBwin/src/Codea59a.cpp:145: undefined reference to `IsPlayFileOpen()'
Graphics.o: In function `~SCREEN':
/usr/local/src/CSBwin/src/Graphics.cpp:71: undefined reference to `UI_free(void*)'
/usr/local/src/CSBwin/src/Graphics.cpp:74: undefined reference to `UI_free(void*)'
/usr/local/src/CSBwin/src/Graphics.cpp:71: undefined reference to `UI_free(void*)'
/usr/local/src/CSBwin/src/Graphics.cpp:74: undefined reference to `UI_free(void*)'
Graphics.o: In function `SCREEN::physbase()':
/usr/local/src/CSBwin/src/Graphics.cpp:84: undefined reference to `UI_malloc(int, unsigned int)'
Graphics.o: In function `SCREEN::logbase()':
/usr/local/src/CSBwin/src/Graphics.cpp:105: undefined reference to `UI_malloc(int, unsigned int)'
Graphics.o: In function `SetDLogicalBase(char*)':
/usr/local/src/CSBwin/src/Graphics.cpp:150: undefined reference to `UI_malloc(int, unsigned int)'
Graphics.o: In function `TextOut_OneLine(char*, int, int, int, int, int, char const*, int, bool)':
/usr/local/src/CSBwin/src/Graphics.cpp:309: undefined reference to `TranslateLanguage(char const*)'
Graphics.o: In function `OUTBUF::addch(char)':
/usr/local/src/CSBwin/src/Graphics.cpp:1532: undefined reference to `UI_realloc(void*, int, unsigned int)'
Graphics.o: In function `PrintWithSubstitution(char const*, unsigned int, bool)':
/usr/local/src/CSBwin/src/Graphics.cpp:1546: undefined reference to `TranslateLanguage(char const*)'
Graphics.o: In function `ReadGraphicsIndex()':
/usr/local/src/CSBwin/src/Graphics.cpp:1946: undefined reference to `UI_free(void*)'
/usr/local/src/CSBwin/src/Graphics.cpp:1948: undefined reference to `UI_malloc(int, unsigned int)'
/usr/local/src/CSBwin/src/Graphics.cpp:1955: undefined reference to `UI_free(void*)'
/usr/local/src/CSBwin/src/Graphics.cpp:1957: undefined reference to `UI_malloc(int, unsigned int)'
/usr/local/src/CSBwin/src/Graphics.cpp:1983: undefined reference to `UI_malloc(int, unsigned int)'
/usr/local/src/CSBwin/src/Graphics.cpp:1989: undefined reference to `UI_malloc(int, unsigned int)'
/usr/local/src/CSBwin/src/Graphics.cpp:2000: undefined reference to `UI_malloc(int, unsigned int)'
Graphics.o: In function `DeleteGraphic(int)':
/usr/local/src/CSBwin/src/Graphics.cpp:2061: undefined reference to `UI_free(void*)'
Graphics.o: In function `CleanupGraphics()':
/usr/local/src/CSBwin/src/Graphics.cpp:2152: undefined reference to `UI_free(void*)'
/usr/local/src/CSBwin/src/Graphics.cpp:2156: undefined reference to `UI_free(void*)'
/usr/local/src/CSBwin/src/Graphics.cpp:2171: undefined reference to `UI_free(void*)'
/usr/local/src/CSBwin/src/Graphics.cpp:2176: undefined reference to `UI_free(void*)'
Graphics.o:/usr/local/src/CSBwin/src/Graphics.cpp:2181: more undefined references to `UI_free(void*)' follow
Graphics.o: In function `GetExpandedGraphicBuffer(int)':
/usr/local/src/CSBwin/src/Graphics.cpp:2219: undefined reference to `UI_malloc(int, unsigned int)'
Graphics.o: In function `OVERLAYDATA::Allocate()':
/usr/local/src/CSBwin/src/Graphics.cpp:2948: undefined reference to `UI_malloc(int, unsigned int)'
/usr/local/src/CSBwin/src/Graphics.cpp:2950: undefined reference to `UI_malloc(int, unsigned int)'
/usr/local/src/CSBwin/src/Graphics.cpp:2952: undefined reference to `UI_malloc(int, unsigned int)'
Graphics.o: In function `OVERLAYDATA::Cleanup()':
/usr/local/src/CSBwin/src/Graphics.cpp:2960: undefined reference to `UI_free(void*)'
/usr/local/src/CSBwin/src/Graphics.cpp:2965: undefined reference to `UI_free(void*)'
/usr/local/src/CSBwin/src/Graphics.cpp:2970: undefined reference to `UI_free(void*)'
Graphics.o: In function `OVLDECODE':
/usr/local/src/CSBwin/src/Graphics.cpp:3066: undefined reference to `UI_malloc(int, unsigned int)'
/usr/local/src/CSBwin/src/Graphics.cpp:3067: undefined reference to `UI_malloc(int, unsigned int)'
/usr/local/src/CSBwin/src/Graphics.cpp:3074: undefined reference to `UI_malloc(int, unsigned int)'
/usr/local/src/CSBwin/src/Graphics.cpp:3066: undefined reference to `UI_malloc(int, unsigned int)'
/usr/local/src/CSBwin/src/Graphics.cpp:3067: undefined reference to `UI_malloc(int, unsigned int)'
Graphics.o:/usr/local/src/CSBwin/src/Graphics.cpp:3074: more undefined references to `UI_malloc(int, unsigned int)' follow
Graphics.o: In function `~OVLDECODE':
/usr/local/src/CSBwin/src/Graphics.cpp:3081: undefined reference to `UI_free(void*)'
/usr/local/src/CSBwin/src/Graphics.cpp:3082: undefined reference to `UI_free(void*)'
/usr/local/src/CSBwin/src/Graphics.cpp:3083: undefined reference to `UI_free(void*)'
/usr/local/src/CSBwin/src/Graphics.cpp:3081: undefined reference to `UI_free(void*)'
/usr/local/src/CSBwin/src/Graphics.cpp:3082: undefined reference to `UI_free(void*)'
Graphics.o:/usr/local/src/CSBwin/src/Graphics.cpp:3083: more undefined references to `UI_free(void*)' follow
Graphics.o: In function `OVLDECODE::EnlargeTable()':
/usr/local/src/CSBwin/src/Graphics.cpp:3094: undefined reference to `UI_realloc(void*, int, unsigned int)'
/usr/local/src/CSBwin/src/Graphics.cpp:3095: undefined reference to `UI_realloc(void*, int, unsigned int)'
Graphics.o: In function `ReadCSBgraphic(CSB_GRAPHICTYPE, unsigned int, unsigned int, unsigned int*, bool, int)':
/usr/local/src/CSBwin/src/Graphics.cpp:3216: undefined reference to `UI_malloc(int, unsigned int)'
/usr/local/src/CSBwin/src/Graphics.cpp:3242: undefined reference to `UI_malloc(int, unsigned int)'
/usr/local/src/CSBwin/src/Graphics.cpp:3245: undefined reference to `UI_malloc(int, unsigned int)'
Graphics.o: In function `SKIN_CACHE::Cleanup()':
/usr/local/src/CSBwin/src/CSB.h:193: undefined reference to `UI_free(void*)'
Graphics.o: In function `~OUTBUF':
/usr/local/src/CSBwin/src/Graphics.cpp:1521: undefined reference to `UI_free(void*)'
Hint.o: In function `ClearKeyboard()':
/usr/local/src/CSBwin/src/Hint.cpp:1941: undefined reference to `UI_DIRECT_CONIN()'
/usr/local/src/CSBwin/src/Hint.cpp:1939: undefined reference to `UI_CONSTAT()'
Hint.o: In function `_TAG001dde(S6*)':
/usr/local/src/CSBwin/src/Hint.cpp:2166: undefined reference to `UI_CONSTAT()'
/usr/local/src/CSBwin/src/Hint.cpp:2167: undefined reference to `UI_DIRECT_CONIN()'
Hint.o: In function `TAG00686a(short)':
/usr/local/src/CSBwin/src/Hint.cpp:5147: undefined reference to `UI_Die()'
Hint.o: In function `_TAG006c7e_xxx(short, short, int, int, char*)':
/usr/local/src/CSBwin/src/Hint.cpp:5510: undefined reference to `UI_malloc(int, unsigned int)'
/usr/local/src/CSBwin/src/Hint.cpp:5538: undefined reference to `UI_free(void*)'
Magic.o: In function `SpellErrorMsg(CHARDESC*, short, short)':
/usr/local/src/CSBwin/src/Magic.cpp:994: undefined reference to `TranslateLanguage(char const*)'
/usr/local/src/CSBwin/src/Magic.cpp:996: undefined reference to `TranslateLanguage(char const*)'
/usr/local/src/CSBwin/src/Magic.cpp:997: undefined reference to `TranslateLanguage(char const*)'
/usr/local/src/CSBwin/src/Magic.cpp:1003: undefined reference to `TranslateLanguage(char const*)'
/usr/local/src/CSBwin/src/Magic.cpp:1008: undefined reference to `TranslateLanguage(char const*)'
Magic.o:/usr/local/src/CSBwin/src/Magic.cpp:1011: more undefined references to `TranslateLanguage(char const*)' follow
Magic.o: In function `StandardSpellMessage(char const*, int)':
/usr/local/src/CSBwin/src/Magic.cpp:1046: undefined reference to `UI_malloc(int, unsigned int)'
/usr/local/src/CSBwin/src/Magic.cpp:1055: undefined reference to `UI_free(void*)'
Magic.o: In function `CastSpell(short, SPELL_PARAMETERS&)':
/usr/local/src/CSBwin/src/Magic.cpp:1116: undefined reference to `TranslateLanguage(char const*)'
Menu.o: In function `_WaitForMenuSelect(int, int, int, int)':
/usr/local/src/CSBwin/src/Menu.cpp:84: undefined reference to `UI_CONSTAT()'
Menu.o: In function `CenteredText(char*, char const*, short, short)':
/usr/local/src/CSBwin/src/Menu.cpp:196: undefined reference to `TranslateLanguage(char const*)'
Monster.o: In function `EnsureItem16Available()':
/usr/local/src/CSBwin/src/Monster.cpp:93: undefined reference to `UI_realloc(void*, int, unsigned int)'
Monster.o: In function `CreateMonster(int, int, int, int, int, int, bool, bool)':
/usr/local/src/CSBwin/src/Monster.cpp:161: undefined reference to `IsPlayFileOpen()'
/usr/local/src/CSBwin/src/Monster.cpp:170: undefined reference to `IsPlayFileOpen()'
Mouse.o: In function `ThrowByCharacter(int, short, short, int, int, int, int, bool, int, int, int)':
/usr/local/src/CSBwin/src/Mouse.cpp:701: undefined reference to `RecordFile_Record(int, int, int)'
/usr/local/src/CSBwin/src/Mouse.cpp:712: undefined reference to `RecordFile_Record(int, int, int)'
Mouse.o: In function `HandleClickInViewport(int, int)':
/usr/local/src/CSBwin/src/Mouse.cpp:1051: undefined reference to `RecordFile_Record(int, int, int)'
/usr/local/src/CSBwin/src/Mouse.cpp:1071: undefined reference to `RecordFile_Record(int, int, int)'
/usr/local/src/CSBwin/src/Mouse.cpp:1111: undefined reference to `RecordFile_Record(int, int, int)'
Mouse.o:/usr/local/src/CSBwin/src/Mouse.cpp:1115: more undefined references to `RecordFile_Record(int, int, int)' follow
Mouse.o: In function `_HandleMouseEvents(int)':
/usr/local/src/CSBwin/src/Mouse.cpp:1386: undefined reference to `IsPlayFileOpen()'
/usr/local/src/CSBwin/src/Mouse.cpp:1390: undefined reference to `PlayFile_Play(MouseQueueEnt*)'
/usr/local/src/CSBwin/src/Mouse.cpp:1392: undefined reference to `PlayFile_IsEOF()'
/usr/local/src/CSBwin/src/Mouse.cpp:1394: undefined reference to `PlayFile_ReadEOF()'
/usr/local/src/CSBwin/src/Mouse.cpp:1427: undefined reference to `IsPlayFileOpen()'
/usr/local/src/CSBwin/src/Mouse.cpp:1442: undefined reference to `PlayFile_IsEOF()'
/usr/local/src/CSBwin/src/Mouse.cpp:1444: undefined reference to `PlayFile_ReadEOF()'
/usr/local/src/CSBwin/src/Mouse.cpp:1463: undefined reference to `IsPlayFileOpen()'
/usr/local/src/CSBwin/src/Mouse.cpp:1488: undefined reference to `IsPlayFileOpen()'
/usr/local/src/CSBwin/src/Mouse.cpp:1489: undefined reference to `PlayFile_Backspace(MouseQueueEnt*)'
/usr/local/src/CSBwin/src/Mouse.cpp:1500: undefined reference to `RecordFile_Record(MouseQueueEnt*)'
/usr/local/src/CSBwin/src/Mouse.cpp:1504: undefined reference to `IsPlayFileOpen()'
/usr/local/src/CSBwin/src/Mouse.cpp:1582: undefined reference to `IsPlayFileOpen()'
SaveGame.o: In function `ReadGameInfo(int, int)':
/usr/local/src/CSBwin/src/SaveGame.cpp:249: undefined reference to `UI_free(void*)'
/usr/local/src/CSBwin/src/SaveGame.cpp:253: undefined reference to `UI_malloc(int, unsigned int)'
/usr/local/src/CSBwin/src/SaveGame.cpp:258: undefined reference to `UI_malloc(int, unsigned int)'
SaveGame.o: In function `ReadExtendedFeatures(int)':
/usr/local/src/CSBwin/src/SaveGame.cpp:314: undefined reference to `UI_free(void*)'
/usr/local/src/CSBwin/src/SaveGame.cpp:316: undefined reference to `UI_free(void*)'
/usr/local/src/CSBwin/src/SaveGame.cpp:353: undefined reference to `UI_malloc(int, unsigned int)'
/usr/local/src/CSBwin/src/SaveGame.cpp:354: undefined reference to `UI_malloc(int, unsigned int)'
/usr/local/src/CSBwin/src/SaveGame.cpp:391: undefined reference to `DMRulesDesignOption'
/usr/local/src/CSBwin/src/SaveGame.cpp:396: undefined reference to `RecordFile_Record(char const*)'
/usr/local/src/CSBwin/src/SaveGame.cpp:400: undefined reference to `RecordDesignOption'
/usr/local/src/CSBwin/src/SaveGame.cpp:402: undefined reference to `extendedPortraits'
SaveGame.o: In function `_DisplayDiskMenu()':
/usr/local/src/CSBwin/src/SaveGame.cpp:873: undefined reference to `TranslateLanguage(char const*)'
/usr/local/src/CSBwin/src/SaveGame.cpp:873: undefined reference to `TranslateLanguage(char const*)'
/usr/local/src/CSBwin/src/SaveGame.cpp:873: undefined reference to `TranslateLanguage(char const*)'
/usr/local/src/CSBwin/src/SaveGame.cpp:873: undefined reference to `TranslateLanguage(char const*)'
/usr/local/src/CSBwin/src/SaveGame.cpp:963: undefined reference to `DMRulesDesignOption'
/usr/local/src/CSBwin/src/SaveGame.cpp:969: undefined reference to `RecordDesignOption'
/usr/local/src/CSBwin/src/SaveGame.cpp:1315: undefined reference to `RecordFile_Record(int, int, int)'
SaveGame.o: In function `ExtendPortraits()':
/usr/local/src/CSBwin/src/SaveGame.cpp:1490: undefined reference to `extendedPortraits'
/usr/local/src/CSBwin/src/SaveGame.cpp:1508: undefined reference to `extendedPortraits'
SaveGame.o: In function `_ReadEntireGame()':
/usr/local/src/CSBwin/src/SaveGame.cpp:1561: undefined reference to `dungeonName'
/usr/local/src/CSBwin/src/SaveGame.cpp:1582: undefined reference to `IsPlayFileOpen()'
/usr/local/src/CSBwin/src/SaveGame.cpp:1585: undefined reference to `PlayFile_Play(MouseQueueEnt*)'
/usr/local/src/CSBwin/src/SaveGame.cpp:1600: undefined reference to `RecordFile_Record(MouseQueueEnt*)'
/usr/local/src/CSBwin/src/SaveGame.cpp:1681: undefined reference to `RecordFile_Record(int, int, int)'
/usr/local/src/CSBwin/src/SaveGame.cpp:1877: undefined reference to `UI_free(void*)'
/usr/local/src/CSBwin/src/SaveGame.cpp:1886: undefined reference to `UI_realloc(void*, int, unsigned int)'
SaveGame.o: In function `ConvertListOfObjects(RN*, bool, int, int, int)':
/usr/local/src/CSBwin/src/SaveGame.cpp:2138: undefined reference to `UI_realloc(void*, int, unsigned int)'
/usr/local/src/CSBwin/src/SaveGame.cpp:2139: undefined reference to `UI_realloc(void*, int, unsigned int)'
SaveGame.o: In function `AllocateIndirectIndex(DBTYPE, int)':
/usr/local/src/CSBwin/src/SaveGame.cpp:2304: undefined reference to `UI_realloc(void*, int, unsigned int)'
/usr/local/src/CSBwin/src/SaveGame.cpp:2305: undefined reference to `UI_realloc(void*, int, unsigned int)'
SaveGame.o: In function `ConvertToIndirectText(unsigned short*)':
/usr/local/src/CSBwin/src/SaveGame.cpp:2399: undefined reference to `UI_free(void*)'
/usr/local/src/CSBwin/src/SaveGame.cpp:2406: undefined reference to `UI_free(void*)'
/usr/local/src/CSBwin/src/SaveGame.cpp:2431: undefined reference to `UI_realloc(void*, int, unsigned int)'
/usr/local/src/CSBwin/src/SaveGame.cpp:2437: undefined reference to `UI_realloc(void*, int, unsigned int)'
SaveGame.o: In function `ReadDatabases()':
/usr/local/src/CSBwin/src/SaveGame.cpp:2547: undefined reference to `IsRecordFileRecording()'
/usr/local/src/CSBwin/src/SaveGame.cpp:2549: undefined reference to `RecordDesignOption'
/usr/local/src/CSBwin/src/SaveGame.cpp:2549: undefined reference to `NoRecordCommandOption'
/usr/local/src/CSBwin/src/SaveGame.cpp:2549: undefined reference to `NoRecordMenuOption'
/usr/local/src/CSBwin/src/SaveGame.cpp:2549: undefined reference to `RecordCommandOption'
/usr/local/src/CSBwin/src/SaveGame.cpp:2549: undefined reference to `NoRecordMenuOption'
/usr/local/src/CSBwin/src/SaveGame.cpp:2549: undefined reference to `RecordMenuOption'
/usr/local/src/CSBwin/src/SaveGame.cpp:2559: undefined reference to `RecordFile_Open()'
/usr/local/src/CSBwin/src/SaveGame.cpp:2560: undefined reference to `RecordMenuOption'
/usr/local/src/CSBwin/src/SaveGame.cpp:2562: undefined reference to `RecordFile_Close()'
/usr/local/src/CSBwin/src/SaveGame.cpp:2627: undefined reference to `UI_malloc(int, unsigned int)'
/usr/local/src/CSBwin/src/SaveGame.cpp:2630: undefined reference to `UI_malloc(int, unsigned int)'
/usr/local/src/CSBwin/src/SaveGame.cpp:2679: undefined reference to `UI_malloc(int, unsigned int)'
/usr/local/src/CSBwin/src/SaveGame.cpp:2695: undefined reference to `UI_free(void*)'
/usr/local/src/CSBwin/src/SaveGame.cpp:2711: undefined reference to `UI_malloc(int, unsigned int)'
SaveGame.o: In function `~SAFEMEM':
/usr/local/src/CSBwin/src/SaveGame.cpp:2454: undefined reference to `UI_free(void*)'
Sound.o: In function `SoundDecode(char*, int, int)':
/usr/local/src/CSBwin/src/Sound.cpp:195: undefined reference to `UI_malloc(int, unsigned int)'
Sound.o: In function `SOUNDDATA::Decode(int)':
/usr/local/src/CSBwin/src/Sound.cpp:326: undefined reference to `UI_malloc(int, unsigned int)'
Sound.o: In function `SOUNDER::CheckQueue()':
/usr/local/src/CSBwin/src/Sound.cpp:487: undefined reference to `UI_free(void*)'
Sound.o: In function `SOUNDER::AddWave(char*, int)':
/usr/local/src/CSBwin/src/Sound.cpp:558: undefined reference to `UI_free(void*)'
Sound.o: In function `SOUNDER::Sound(char*, int)':
/usr/local/src/CSBwin/src/Sound.cpp:605: undefined reference to `UI_free(void*)'
Sound.o: In function `SOUNDDATA::Allocate(int)':
/usr/local/src/CSBwin/src/Sound.cpp:962: undefined reference to `UI_free(void*)'
/usr/local/src/CSBwin/src/Sound.cpp:963: undefined reference to `UI_malloc(int, unsigned int)'
Sound.o: In function `SOUNDDATA::Cleanup()':
/usr/local/src/CSBwin/src/Sound.cpp:1011: undefined reference to `UI_free(void*)'
Sound.o: In function `SOUNDER::Cleanup()':
/usr/local/src/CSBwin/src/Sound.cpp:370: undefined reference to `UI_free(void*)'
/usr/local/src/CSBwin/src/Sound.cpp:375: undefined reference to `UI_free(void*)'
/usr/local/src/CSBwin/src/Sound.cpp:382: undefined reference to `UI_free(void*)'
Timer.o: In function `~GameTimers':
/usr/local/src/CSBwin/src/Timer.cpp:644: undefined reference to `UI_free(void*)'
Timer.o:/usr/local/src/CSBwin/src/Timer.cpp:645: more undefined references to `UI_free(void*)' follow
Timer.o: In function `GameTimers::Allocate(int)':
/usr/local/src/CSBwin/src/Timer.cpp:657: undefined reference to `UI_realloc(void*, int, unsigned int)'
/usr/local/src/CSBwin/src/Timer.cpp:662: undefined reference to `UI_realloc(void*, int, unsigned int)'
/usr/local/src/CSBwin/src/Timer.cpp:667: undefined reference to `UI_realloc(void*, int, unsigned int)'
Timer.o: In function `GameTimers::Cleanup()':
/usr/local/src/CSBwin/src/Timer.cpp:686: undefined reference to `UI_free(void*)'
/usr/local/src/CSBwin/src/Timer.cpp:687: undefined reference to `UI_free(void*)'
/usr/local/src/CSBwin/src/Timer.cpp:688: undefined reference to `UI_free(void*)'
Timer.o: In function `GameTimers::SetTimer(TIMER*)':
/usr/local/src/CSBwin/src/Timer.cpp:1129: undefined reference to `UI_malloc(int, unsigned int)'
/usr/local/src/CSBwin/src/Timer.cpp:1131: undefined reference to `UI_malloc(int, unsigned int)'
/usr/local/src/CSBwin/src/Timer.cpp:1171: undefined reference to `UI_free(void*)'
/usr/local/src/CSBwin/src/Timer.cpp:1172: undefined reference to `UI_free(void*)'
Viewport.o: In function `BACKGROUND_LIB::Cleanup()':
/usr/local/src/CSBwin/src/Viewport.cpp:5350: undefined reference to `UI_free(void*)'
/usr/local/src/CSBwin/src/Viewport.cpp:5354: undefined reference to `UI_free(void*)'
Viewport.o: In function `BACKGROUND_LIB::CreateNewMask(unsigned int, unsigned int, BACKGROUND_MASK*)':
/usr/local/src/CSBwin/src/Viewport.cpp:5507: undefined reference to `UI_realloc(void*, int, unsigned int)'
/usr/local/src/CSBwin/src/Viewport.cpp:5537: undefined reference to `UI_realloc(void*, int, unsigned int)'
Viewport.o: In function `BACKGROUND_LIB::CreateNewAffineMask(unsigned int, unsigned int, AFFINEMASK*)':
/usr/local/src/CSBwin/src/Viewport.cpp:5567: undefined reference to `UI_realloc(void*, int, unsigned int)'
/usr/local/src/CSBwin/src/Viewport.cpp:5597: undefined reference to `UI_realloc(void*, int, unsigned int)'
Viewport.o: In function `BACKGROUND_LIB::FindGraphicInCache(unsigned int, bool)':
/usr/local/src/CSBwin/src/Viewport.cpp:5818: undefined reference to `UI_realloc(void*, int, unsigned int)'
Viewport.o:/usr/local/src/CSBwin/src/Viewport.cpp:5888: more undefined references to `UI_realloc(void*, int, unsigned int)' follow
Viewport.o: In function `BACKGROUND_LIB::CreateBackgroundGraphic(unsigned int, unsigned int)':
/usr/local/src/CSBwin/src/Viewport.cpp:5896: undefined reference to `UI_malloc(int, unsigned int)'
data.o: In function `AllocateTempBitmap(int)':
/usr/local/src/CSBwin/src/data.cpp:106: undefined reference to `UI_realloc(void*, int, unsigned int)'
data.o: In function `RN':
/usr/local/src/CSBwin/src/data.cpp:487: undefined reference to `UI_realloc(void*, int, unsigned int)'
/usr/local/src/CSBwin/src/data.cpp:488: undefined reference to `UI_realloc(void*, int, unsigned int)'
/usr/local/src/CSBwin/src/data.cpp:487: undefined reference to `UI_realloc(void*, int, unsigned int)'
/usr/local/src/CSBwin/src/data.cpp:488: undefined reference to `UI_realloc(void*, int, unsigned int)'
data.o: In function `DATABASES::Allocate(int, int)':
/usr/local/src/CSBwin/src/data.cpp:782: undefined reference to `UI_malloc(int, unsigned int)'
data.o: In function `DATABASES::DeAllocate(int)':
/usr/local/src/CSBwin/src/data.cpp:806: undefined reference to `UI_free(void*)'
data.o: In function `DATABASES::Enlarge(int)':
/usr/local/src/CSBwin/src/data.cpp:853: undefined reference to `UI_realloc(void*, int, unsigned int)'
data.o: In function `DATABASES::FindEmptyDBEntry(DBTYPE, bool)':
/usr/local/src/CSBwin/src/data.cpp:978: undefined reference to `UI_realloc(void*, int, unsigned int)'
/usr/local/src/CSBwin/src/data.cpp:979: undefined reference to `UI_realloc(void*, int, unsigned int)'
data.o: In function `EXPOOL::Setup()':
/usr/local/src/CSBwin/src/data.cpp:1509: undefined reference to `UI_malloc(int, unsigned int)'
data.o: In function `EXPOOL::enlarge(unsigned int)':
/usr/local/src/CSBwin/src/data.cpp:1615: undefined reference to `UI_realloc(void*, int, unsigned int)'
data.o: In function `FreeIfNonNULL(void**)':
/usr/local/src/CSBwin/src/data.cpp:1992: undefined reference to `UI_free(void*)'
data.o: In function `Cleanup(bool)':
/usr/local/src/CSBwin/src/data.cpp:2002: undefined reference to `IsRecordFileRecording()'
/usr/local/src/CSBwin/src/data.cpp:2009: undefined reference to `finalEditText'
/usr/local/src/CSBwin/src/data.cpp:2010: undefined reference to `CleanupTranslations()'
data.o: In function `SKIN_CACHE::GetDefaultSkin(int)':
/usr/local/src/CSBwin/src/data.cpp:2121: undefined reference to `UI_malloc(int, unsigned int)'
system.o: In function `~FILENAME':
/usr/local/src/CSBwin/src/LinuxFileName.inl:32: undefined reference to `UI_free(void*)'
/usr/local/src/CSBwin/src/LinuxFileName.inl:35: undefined reference to `UI_free(void*)'
/usr/local/src/CSBwin/src/LinuxFileName.inl:32: undefined reference to `UI_free(void*)'
/usr/local/src/CSBwin/src/LinuxFileName.inl:35: undefined reference to `UI_free(void*)'
system.o: In function `FILENAME::createName(char const*, char const*)':
/usr/local/src/CSBwin/src/LinuxFileName.inl:48: undefined reference to `UI_malloc(int, unsigned int)'
/usr/local/src/CSBwin/src/LinuxFileName.inl:55: undefined reference to `UI_malloc(int, unsigned int)'
system.o: In function `FILENAME::createThreeNames(char const*)':
/usr/local/src/CSBwin/src/LinuxFileName.inl:72: undefined reference to `UI_free(void*)'
/usr/local/src/CSBwin/src/LinuxFileName.inl:77: undefined reference to `UI_free(void*)'
/usr/local/src/CSBwin/src/LinuxFileName.inl:82: undefined reference to `UI_free(void*)'
/usr/local/src/CSBwin/src/LinuxFileName.inl:87: undefined reference to `UI_free(void*)'
system.o: In function `FILENAME::Open(char const*, char const*)':
/usr/local/src/CSBwin/src/LinuxFileName.inl:118: undefined reference to `UI_fopen(char const*, char const*)'
/usr/local/src/CSBwin/src/LinuxFileName.inl:125: undefined reference to `UI_malloc(int, unsigned int)'
system.o: In function `FILENAME::Create(char const*, char const*)':
/usr/local/src/CSBwin/src/LinuxFileName.inl:143: undefined reference to `UI_fopen(char const*, char const*)'
system.o: In function `FILENAME::Unlink(char const*)':
/usr/local/src/CSBwin/src/LinuxFileName.inl:173: undefined reference to `UI_DeleteFile(char const*)'
system.o: In function `FILETABLE::Cleanup()':
/usr/local/src/CSBwin/src/system.cpp:122: undefined reference to `UI_free(void*)'
system.o: In function `FILETABLE::SetFile(_IO_FILE*, char const*)':
/usr/local/src/CSBwin/src/system.cpp:138: undefined reference to `UI_free(void*)'
/usr/local/src/CSBwin/src/system.cpp:145: undefined reference to `UI_malloc(int, unsigned int)'
system.o: In function `NotImplemented(int)':
/usr/local/src/CSBwin/src/system.cpp:189: undefined reference to `UI_Die()'
system.o: In function `MouseInterrupt(char*)':
/usr/local/src/CSBwin/src/system.cpp:423: undefined reference to `IsPlayFileOpen()'
system.o: In function `checkVBL()':
/usr/local/src/CSBwin/src/system.cpp:607: undefined reference to `IsPlayFileOpen()'
/usr/local/src/CSBwin/src/system.cpp:612: undefined reference to `IsPlayFileOpen()'
/usr/local/src/CSBwin/src/system.cpp:630: undefined reference to `UI_PushMessage(MTYPE, int, int, int, int, int, int)'
system.o: In function `_CALL0(CODESTATE)':
/usr/local/src/CSBwin/src/system.cpp:747: undefined reference to `UI_PushMessage(MTYPE, int, int, int, int, int, int)'
system.o: In function `_CALL1(CODESTATE, int)':
/usr/local/src/CSBwin/src/system.cpp:759: undefined reference to `UI_PushMessage(MTYPE, int, int, int, int, int, int)'
system.o: In function `_CALL2(CODESTATE, int, int)':
/usr/local/src/CSBwin/src/system.cpp:773: undefined reference to `UI_PushMessage(MTYPE, int, int, int, int, int, int)'
system.o: In function `_CALL3(CODESTATE, int, int, int)':
/usr/local/src/CSBwin/src/system.cpp:789: undefined reference to `UI_PushMessage(MTYPE, int, int, int, int, int, int)'
system.o:/usr/local/src/CSBwin/src/system.cpp:807: more undefined references to `UI_PushMessage(MTYPE, int, int, int, int, int, int)' follow
utility.o: In function `MALLOC(int)':
/usr/local/src/CSBwin/src/utility.cpp:120: undefined reference to `UI_malloc(int, unsigned int)'
utility.o: In function `MFREE(char*)':
/usr/local/src/CSBwin/src/utility.cpp:125: undefined reference to `UI_free(void*)'
utility.o: In function `TAG00053a(short, int)':
/usr/local/src/CSBwin/src/utility.cpp:227: undefined reference to `UI_DIRECT_CONIN()'
/usr/local/src/CSBwin/src/utility.cpp:225: undefined reference to `UI_CONSTAT()'
DSA.o: In function `~DSADBANK':
/usr/local/src/CSBwin/src/DSA.cpp:173: undefined reference to `UI_free(void*)'
/usr/local/src/CSBwin/src/DSA.cpp:173: undefined reference to `UI_free(void*)'
DSA.o: In function `DSADBANK::SetText(char const*, int, int)':
/usr/local/src/CSBwin/src/DSA.cpp:203: undefined reference to `UI_realloc(void*, int, unsigned int)'
DSA.o: In function `ProcessDSATimer6(RN, TIMER const*, LOCATIONREL, bool, DSAVARS*)':
/usr/local/src/CSBwin/src/DSA.cpp:5470: undefined reference to `IsPlayFileOpen()'
DSA.o: In function `~DSA':
/usr/local/src/CSBwin/src/DSA.cpp:5626: undefined reference to `UI_free(void*)'
/usr/local/src/CSBwin/src/DSA.cpp:5626: undefined reference to `UI_free(void*)'
DSA.o: In function `DSA::Read()':
/usr/local/src/CSBwin/src/DSA.cpp:5653: undefined reference to `UI_malloc(int, unsigned int)'
DSA.o: In function `~DSAState':
/usr/local/src/CSBwin/src/DSA.cpp:5710: undefined reference to `UI_free(void*)'
/usr/local/src/CSBwin/src/DSA.cpp:5710: undefined reference to `UI_free(void*)'
DSA.o: In function `DSAState::Read()':
/usr/local/src/CSBwin/src/DSA.cpp:5755: undefined reference to `UI_malloc(int, unsigned int)'
DSA.o: In function `~DSAAction':
/usr/local/src/CSBwin/src/DSA.cpp:5784: undefined reference to `UI_free(void*)'
/usr/local/src/CSBwin/src/DSA.cpp:5784: undefined reference to `UI_free(void*)'
DSA.o: In function `DSAAction::Read()':
/usr/local/src/CSBwin/src/DSA.cpp:5795: undefined reference to `UI_malloc(int, unsigned int)'
collect2: ld returned 1 exit status
make: *** [Chaos_strikes_back_for_linux] Fehler 1
Has anybody succeeded recently in compiling a linux version younger than 11.014?

Christoph
Christoph
Christoph
Craftsman
Posts: 102
Joined: Sun Nov 20, 2011 12:04 am

Re: Porting/updating CSBwin for Linux and sound support

Post by Christoph »

Christoph wrote:
  • 2) The linking of the object files fails.
[...]

Code: Select all

[...] libtool: link: g++ -g -Wall -D_LINUX -fsigned-char -D_LINUX -fpermissive -DSOUND__ESOUND -o Chaos_strikes_back_for_linux LinScreen.o CSBlinux.o LinCSBUI.o AsciiDump.o Bitmaps.o Attack.o CSBCode.o Chaos.o Character.o Code11f52.o Code13ea4.o Code17818.o Code1f9e6.o Code222ea.o Code390e.o Code51a4.o Codea59a.o Graphics.o Hint.o Magic.o Menu.o Monster.o Mouse.o NewBugs.o OldBugs.o SaveGame.o SmartDiscard.o Sound.o Stdafx.o Timer.o VBL.o Viewport.o data.o system.o utility.o DSA.o RC4.o md5C.o MoveObject.o  -L/usr/lib /usr/lib/libSDL.so /usr/lib/libesd.so /usr/lib/libglib.so
CSBlinux.o: In function `main':
/usr/local/src/CSBwin/src/CSBlinux.cpp:521: undefined reference to `CSBUI(CSB_UI_MESSAGE*)'
[...]
CSBlinux.o:/usr/local/src/CSBwin/src/CSBlinux.cpp:813: more undefined references to `CSBUI(CSB_UI_MESSAGE*)' follow
CSBlinux.o: In function `main':
/usr/local/src/CSBwin/src/CSBlinux.cpp:845: undefined reference to `PlayfileIsOpen()'
/usr/local/src/CSBwin/src/CSBCode.cpp:10470: undefined reference to `UI_ClearScreen()'
[...]
collect2: ld returned 1 exit status
make: *** [Chaos_strikes_back_for_linux] Fehler 1
I've found that "Recording.cpp" is not in "Makefile.am", but this is not yet the solution. According to various sources on the Internet, this kind of problem occurs frequently when the linker command line options are in the wrong order:

http://www.mingw.org/wiki/The_linker_co ... references

The MS build tools and the GCC suite behave quite differently, so this might be the reason for the failure. Can anyone give me a hint about the correct order? Is the order only important when referencing external binary libraries (in "/usr/lib", via headers), or does it apply also for the "*.o" object files mentioned on the command line (the files from CSBWIN itsself)? Changing the order of the programme modules in the "Makefile.am" doesn't seem to make a difference.

Christoph
Christoph
User avatar
Paul Stevens
CSBwin Guru
Posts: 4318
Joined: Sun Apr 08, 2001 6:00 pm
Location: Madison, Wisconsin, USA

Re: Porting/updating CSBwin for Linux and sound support

Post by Paul Stevens »

@Ful Ir: are you still here?

A fellow wrote to me and told me what a great
game this was on the Pandora. That was nice.

I watched a YouTube of DM and DSB on the Pandora.
It looked very smooth and the sound was fine.

What about the menus? For example, how does one
start the recording option?

What about changes to CSBwin? There have been a
couple very important changes to accommodate Conflux.
How do they get into the Pandora (.pnd???) file?
Ful Ir
Novice
Posts: 28
Joined: Wed Jan 26, 2011 9:04 pm

Re: Porting/updating CSBwin for Linux and sound support

Post by Ful Ir »

Well I'm still there, just not active in the DM world at the moment :/ ; although the occasional mention of Legend of Grimrock in gaming news had me iching to dust off my Conflux savegame lately :).

I'm surprised someone actually made a video of DM/CSB on the Pandora.
I wrote a small launcher program that allows the user to pick a dungeon to play (from a list of subdirectories) and set some options like fullscreen/windowed etc. I cannot remember right now if I added a checkbox for the recording option, but there is an input line for additional command line options as a fallback.

I probably should update my version of the code and build a new .pnd if there have been important fixes/enhancements. I still have it lying around in the state I left it.
mik
Neophyte
Posts: 2
Joined: Sun Jul 22, 2012 3:29 am
Location: Finland

Re: Porting/updating CSBwin for Linux and sound support

Post by mik »

I couldn't make playing sounds via ESD to work well with Ubuntu 12.04 (i386) and when I finally, after wasting several hours, did make it work the sound was lagging badly. First no sound at all and then two sounds were played together, and so on. ESD was therefore not a good option and piping the sound to stdout was, as described, horrible and I also had to find a player which could take sound from stdin (CSBwin --sound-pipe | aplay -c 1 -t raw -r 5120 -f U8 -, or something like that).

I thought a better option should be developed, so here is a patch for CSBwin to support playing sound via PulseAudio which seems to be the default sound playing system in the modern Linux distributions. The patch was made for CSBwin version 12.100 (http://dmweb.free.fr/files/Clone-CSBwin ... 12_100.zip). The patch can be found from http://wikisend.com/download/557764/csb ... udio.patch

The patch was developed on Ubuntu 12.04 i386 and it needs libpulse-dev package for the development headers. The modified configure script tries to find them automatically and prints if they were found or not.

A new option --sound-pulseaudio tells CSBwin to use PulseAudio by default in case ESD is also compiled in.

The patch can be tested like this:

save the patch file to some location
mkdir ~/csbtest
cd ~/csbtest
unzip -x Clone-CSBwin-SourceCode-12_100.zip
patch -p1 < ~/csbwin-12_100_linux_pulseaudio.patch
cd CSBwin
edit autogen.sh if needed
./autogen.sh
after successful compilation run CSBwin with option --sound-pulseaudio.

I noticed some other issues while coding. If sound playing fails in the function LIN_PlaySound, FALSE has to be returned or sound playing seems to go into a repeating loop. Using --enable-release=yes in autogen.sh never worked for me (crashes on startup), --enable-release=no works quite well. For the extra game menu (--enable-oldgtk) to work I needed to install old libraries libglib1.2 and libgtk1.2 made for Ubuntu 8.04.

For dynamic window size support I tried to remove --disable-dynwinsize from autogen.sh as told in README.linux, but it failed to configure error

Code: Select all

checking for Hermes_Init
              in -lHermes
                 ... ./configure: line 15727: ${ac_cv_lib_Hermes _____Hermes_Init __+:}: bad substitution
./configure: line 15754: ac_cv_lib_Hermes: command not found
./configure: line 15755: _____Hermes_Init: command not found
./configure: line 15762: _____Hermes_Init: command not found
I am not sure if this error is due to me installing old Hermes library from Ubuntu 8.04 or a bug in the configure.in, but I managed to make dynamic window sizing to work with the below change where "AC_CHECK_LIB(Hermes, ..." is in configure.in:

Code: Select all

AC_CHECK_LIB(Hermes,
                Hermes_Init,
                HAVE_LIBHERMES=yes
                CFLAGS="$CFLAGS -D_DYN_WINSIZE"
                CXXFLAGS="$CXXFLAGS -D_DYN_WINSIZE"
                LINK_HERMES="-lHermes",
                AC_MSG_FAILURE(Dynamic winsize requires Hermes library)
                )
User avatar
Paul Stevens
CSBwin Guru
Posts: 4318
Joined: Sun Apr 08, 2001 6:00 pm
Location: Madison, Wisconsin, USA

Re: Porting/updating CSBwin for Linux and sound support

Post by Paul Stevens »

Firstly, I am not at all conversant with Linux
issues. So most of what you said goes over
my head.

Secondly, your description of what you have
done sounds close to trial-and-error and finger-
crossing. Not the kind of thing I want to have
in an 'official' release of CSBwin.

What we need is someone who can put together
a SOLID release that works because it is supposed
to work, not because it has been tried on a single
system and appears to work. And it needs to be
tested on several popular flavors of Linux and
hardware.

I think CSBwin is pretty much in its stable state.
I do not foresee substantial changes. So I would
hope that if it is ported to Linux that we can provide
executable images that can be installed by very
ignorant people such as myself. I don't think you
are going to get me to install the thing from
sources without a great deal of hand-holding.
I will probably give up after a few failures.
Christoph
Craftsman
Posts: 102
Joined: Sun Nov 20, 2011 12:04 am

Re: Porting/updating CSBwin for Linux and sound support

Post by Christoph »

mik wrote:I thought a better option should be developed, so here is a patch for CSBwin to support playing sound via PulseAudio which seems to be the default sound playing system in the modern Linux distributions. The patch was made for CSBwin version 12.100 (http://dmweb.free.fr/files/Clone-CSBwin ... 12_100.zip). The patch can be found from http://wikisend.com/download/557764/csb ... udio.patch
Does this version support graphics overlays as well?
I'm also not content with the ESD version, but personally dislike pulse as well.
I'd really liek something not needing a sound server.

I've managed to make a version with ESD sound and graphical overlays enabled, which has also scripts helping to build, install and run the game which should be LSB compliant; my remaining problem is the sound..
Christoph
mik
Neophyte
Posts: 2
Joined: Sun Jul 22, 2012 3:29 am
Location: Finland

Re: Porting/updating CSBwin for Linux and sound support

Post by mik »

My patch implements only the PulseAudio support, it does not have anything related to graphics.

Here is the new location of the patch file as the previous link has expired.
http://wikisend.com/download/138750/csb ... udio.patch
Christoph
Craftsman
Posts: 102
Joined: Sun Nov 20, 2011 12:04 am

Re: Porting/updating CSBwin for Linux and sound support

Post by Christoph »

Thank you for the patch, mik.

I have compiled a new version with Pulseaudio and Overlays working:

https://www.wuala.com/ChFr/www/CSBwin_C ... key=csbwin

However, native Pulse makes it unusably slow for me, the Pulse ESD compatibility module works.
I also have disabled re-initialisation when using ESD, I think the frequent "broken pipe" warnings are wrong.
The re-initialisations leads to crashes or the sound eventually stops. I got "too many open files".

With your changes above, Hermes is compiled in, but the contents of the window are never resized. There seemingly was something swapped: "SCRAP" and "WND" in the Hermes/non-Hermes display(). Hermes also requires a double click on the game's start buttons, which is not correct. I have disabled it therefore by default.

I'd really appreciate if somebody looked into my recent changes, which are all in Linux-only code sections.
There are however, some things I had toi change in non-Linux-only files from 12.100 to 12.3 in order to make the overlays work.

Christoph
Christoph
Christoph
Craftsman
Posts: 102
Joined: Sun Nov 20, 2011 12:04 am

Re: Porting/updating CSBwin for Linux and sound support

Post by Christoph »

It was obvoiusly too late yesterday night, I packed a binary compiled just before my last obviously erronneous testing change, so the source of 12.3v1 was broken, causing a wrong coulour palette to be used.

I have removed this, and will have released a new 12.3v1.1 with the non-working changes reverted.

Remaining issues:
- The Hermes scaling does still not work as intended, but will compile.
- Pulse sound makes lag
- ESD sound makes crashes / buffer overflows of some kind
Christoph
geniusaction
Neophyte
Posts: 8
Joined: Sat Oct 18, 2003 11:40 am
Contact:

Re: Porting/updating CSBwin for Linux and sound support

Post by geniusaction »

Hello Ful Ir.

Could you please port your openpandora version to Android??

I'm not a programmer I can only help you as a beta tester....

I think that Paul version of CSBWin would be perfect for Android platform with touch screen.

NIce to meet you men!
Ful Ir
Novice
Posts: 28
Joined: Wed Jan 26, 2011 9:04 pm

Re: Porting/updating CSBwin for Linux and sound support

Post by Ful Ir »

Although I have an Android phone by now, I don't think I'm willing to start messing around with Java at the moment.
Getting CSB to run on it might be nice, if moving e.g. the movement arrows to the left side of the screen works without too many side effects.
User avatar
Magica
Journeyman
Posts: 82
Joined: Mon Mar 18, 2013 7:00 am

Re: Porting/updating CSBwin for Linux and sound support

Post by Magica »

Is there any way to have DM works on Android tablets and phones?!
Post Reply

Return to “Chaos Strikes Back for Windows & Linux (CSBWin) / CSBuild”