The latest build of your Duke3d.exe refuses point blank to run on my machine.
This is whether I use the zip version or the installer.
It crashes to my desktop so fast that the consolelog.txt file has 0 bytes.
Is it a multiplayer version only ?
If not then I cannot use it where all your other versions run 100% and as you know from that I compiled my own version which works great also.
:(
maniac1701 at
Thats odd i got it to run on my system just fine (i haven't tried multiplayer yet) i even tried out the red/blue mode and it flickers just as they warned it would but the cool thing is i can notice the depth in it way more then in the glquake version that included stereo graphics. i can hardly wait to see the finished version.
Its got to be something on your end. maybe you should try copying your old configuration files from the last version to this one and see if it works.
JonoF at
For some peculiar reason I started getting an inconsistent crash about three weeks ago which I tracked to my joystick. Unplugging it would make the problem go away. You might want to give that a try if you've got a joystick. The problem's on my to-fix list but I haven't gotten to it yet.
Jonathon
ProAsm at
I dont have a joystick at all.
My system is as follows:
Mobo = P4 Intel La Cross (Dual DDR 800 mhz FSB + Hyperthreading)
Memory = 1 gig
CPU = 2.6 gig (P4)
Graphics = GeForce ti 4200 128 megs memory
Mouse = Logitech Dual Optic
Gamepad = Nostromo n50
Maybe the Gamepad ?... I'll check.
TX at
ProAsm said
I dont have a joystick at all.
Gamepad = Nostromo n50
Maybe the Gamepad ?... I'll check.
For all intents and purposes, a gamepad is a joystick. They both fall under the same class of hardware and are both accessed in the same way by applications.
ProAsm at
For all intents and purposes, a gamepad is a joystick.
Yes I agree, most Gamepads are just another form of a joystick but not the Nostromo.
But having said that it is the Nostromo Gamepad... and no doubt the Joysticks also.
The problem seems with the engineerrstr at game.c and astub.c:
game.c
if (initengine())
{
wm_msgbox("Build Engine Initialisation Error", "There was a problem initialising the Build engine: %s", engineerrstr);
exit(1);
}
// replaced with original:
if (initengine())
{
initprintf("There was a problem initialising the engine.\n");
exit(1);
}
astub.c
if (initengine())
{
wm_msgbox("Build Engine Initialisation Error", There was a problem initialising the Build engine: %s", engineerrstr);
return -1;
}
//replaced with original:
if (initengine())
{
initprintf("There was a problem initialising the engine.\n");
return -1;
}
Btw JF, thanks for the additions we spoke about :)
ProAsm at
OMG! Cancel that, I just found the Build source (why seperate them) - anyways looks like problem is there also - will check out.
Btw if you use the old Build source with above post corrections it does work well if that helps at all.
ProAsm at
Ok some wierd tracing:
Part 1 - Installation
I start from scratch with a new installation C:\JFDuke3d\ and copy in the Duke3d.Grp file (Atomic Addition)
I double click on Duke3d.exe - it tries to start as screen goes black then crashes to my desktop.
I then remove my Gamepad and all works ok.
But I need the Gamepad as I have a handicap so put it back and...
I recompile your code without doing anything to it (Duke3dw.exe)
I doubleclick on Duke3dw.exe - it starts up ok but there is no sound.
I exit the game and it has created a Duke3d.cfg
I run Setup.exe to define my sound and Input settings etc..
I run up Duke3dw.exe again and all is well and everything works great.
I now run up your Duke3d.exe again and it gets as far as:
Joystick has these axis: X,Y,Z,RX,RY,RZ
My PC will then lock solid for 1 minute (cannot even take a screenshot) and then crash to the desktop.
During the 1 minute lockup I can still exit with the Task Manager (Alt + Ctrl + Del)
Part 2 - HiRes
I now install Parkars HiRes Pack.
Running up Duke3d.exe behaves the same - locks up solid at startup, then quits to desktop.
Running up Duke3dw.exe now barley shows startup screen and immediatly quits to desktop.
However if a remark out:
//include DEFS.CON
in the Duke3d.defs file then Duke3dw.exe works great.
And thats basically how I have it now.
I'll start tracing the code as soon as I get some time.
Fernando at
And also the Fake Multiplayer code seems to be broken on this release.
It doesn't work at all, and the jfduke3d_20040629 version bundle had the code in perfect state.
ProAsm at
Ok I found the problem with the Gamepad and Joystick crashes.
Winlayer.c
Remove line 500:
OSD_RegisterFunction("maxrefreshfreq", "maxrefreshfreq: maximum display frequency to set for OpenGL Polymost modes (0=no maximum)", set_maxrefreshfreq);
:)
JonoF at
Unfortunately that doesn't fix the crash for me. I'm guessing that something is either blowing the stack subtly or overrunning a buffer somewhere. Investigation continues.
Jonathon
dennisj1 at
JonoF, for your information, it seems to crash immediatly after it prints (to the console) "Joystick has these axis: " whatever.
ProAsm at
JonoF said
Unfortunately that doesn't fix the crash for me. I'm guessing that something is either blowing the stack subtly or overrunning a buffer somewhere. Investigation continues.
Jonathon
mmm thats odd as although I dont have a joystick I have a steering wheel which I plugged in as a test and the game fired up no problem with my Duke3dw.exe.
Do you by any chance have a long loop anywhere causing those long lockups I get with the Duke3d.exe. I originally thought it was a minute but they more like 30 seconds, because I thought, find that and you might find your problem being related.
Another thing I found is with your Duke3d.exe is if I remove the Gamepad, start the game then insert the Gamepad afterwards all works ok.
BUT when I exit the game it gets as far as:
Are you sure you want to quit:
Y/N I then experience that long lockup situation.
Should I send you my exe just to try because I also found some other wierd things here as it depends on what you use to compile the exe to how it behaves :)
JonoF at
dennisj1 said
JonoF, for your information, it seems to crash immediatly after it prints (to the console) "Joystick has these axis: " whatever.
I know. The crash happens inside DirectX itself from what I can tell from my time in the debugger single-stepping. I tried commenting out bits of the InitDirectInput_enum() callback for input devices and reading either the guidInstance or tszProductName members of the LPCDIDEVICEINSTANCE structure DirectX passes to the callback results in a crash once IDirectInput::EnumDevices() is about to return. If I don't touch either of them and return, say, immediately after the 'case DIDEVTYPE_JOYSTICK:', it doesn't crash. I don't know exactly why it happens, and I haven't had the opportunity to go hunting for it yet. The best I've been able to tell is almost as though the structure the joystick driver is giving us is pointing to partially invalid memory or something.
Jonathon
ProAsm at
Jonathon, one thing you can do is change the way you save to the consolelog.txt
In the old days of MS-DOS when the game crashed, DOS automatically closed all files thus you had information in the log file if one existed.
Today with Windows when you have a crash the file remains open and you end up with 0 bytes as is happening with Duked3d.exe so people cannot see at what point the program crashes.
With Duke3dw I open/write/close the file everytime so when a crash occurs, no matter how quick it is, you have saved information which is invaluable.
An even better solution is to make OSD_SetLogFile() read like so, specifically the new last line:
void OSD_SetLogFile(char *fn)
{
if (osdlog) Bfclose(osdlog);
osdlog = NULL;
if (fn) osdlog = Bfopen(fn,"w");
if (osdlog) setvbuf(osdlog, (char*)NULL, _IONBF, 0);[/b]
}
This just disables the stdio library's buffering system for the file handle, like I do for the redirect of stdout that's enabled by the BUILD_LOGSTDOUT environment variable. Thanks for insisting though. This change will be in the next release.
Jonathon
ProAsm at
Yes I saw that Osd stuff but am still trying to get my brain around it :)
Ok while I have your attention, remember the email about when you start a game with a -map whatever.map then after you touch the Nuke you end up with "Cannot find map!" etc when it exits... well its still sometimes does it :)
Also the mapname added to the Save Screen sometimes shows the path as well.
Fernando at
Well, when you play a usermap with that command it becomes E1L8 during the game, and when you finish that level it will give you an error of 'Cannot Find Map' because E1L9 is non-existant.
JonoF at
What ProAsm is getting at is he sent me an email a few weeks ago with a patch to fix the "Cannot find map" problem, but I was hesitant to merge it because last time I attempted to solve that problem I noticed some things which I wasn't sure were safe to do and wanted to investigate more before doing anything further on the matter.
Jonathon
ProAsm at
Yes you were correct in not merging it as I later discovered that if you save a game, then when you die and it offers to "Reload saved game" and you select 'N' because you want to start again, you would exit to the Title :)
Anyways that is fixed now.
Fernando basically what JonoF has done now is done away with that and you now just end up on your desktop as that "Cannot find E1L9.map" was very irritating.