#### Archived

This topic is now archived and is closed to further replies.

This topic is 5031 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

## Recommended Posts

Bad luck this time, too. This is really odd... I checked the D3D headers and the error code (0x8876086A) is D3DERR_NOTAVAILABLE. What are the actual device creation parameters you use? Maybe we should all have a look at them ? I tried some DX9 SDK samples and they worked (though they use D3D9) so...

?

Here''s the log:
gfx.Desktop width: 1024gfx.Desktop height: 768gfx.Desktop format: X8R8G8B8gfx.1 graphics adapter(s) available====gfx.Adapter: 0gfx.Driver: ati2dvag.dllgfx.Description: RADEON 8500 SERIESgfx.Version: 6.14.10.6422gfx.VendorID: 00001002gfx.DeviceID: 0000514Cgfx.SubSysID: 013A1002gfx.Revision: 00000000gfx.SubSysID: 013A1002gfx.Can render in windowed mode: Yesgfx.Allow source blending with source alpha: Yesgfx.Allow destination blending with inverse source alpha: Yesgfx.Allow alpha channel in textures: Yesgfx.Max texture size: 2048 x 2048gfx.Max texture aspect ratio: 2048gfx.Max primitive count: 65535gfx.Max vertex index: 16777215====gfx.CreateFullscreenDevice(640, 480, 24)gfx.Back buffer pixel format: X8R8G8B8gfx.Depth buffer pixel format: D32gfx.Failed to create device with hardware vertex processing, trying software (8876086A)gfx.Failed to create device with software vertex processing (8876086A)Failed to create a fullscreen device. Your video card may not support the requested resolution.

##### Share on other sites
quote:
Original post by WitchLord
I don''t think the problem with Win98 and and fullscreen has been fixed, but I now log the resolution and pixel format chosen so you can verify that the resolution is actually available.

Right, still not fixed for me. The resolution at the end of the log file matches my desktop resolution. This time I got a "Out of scan range" message from my monitor, which I always thought meant the program was running at a refresh rate that the monitor couldn''t handle. Mine is set to "optimal" in Win98 and 60Hz in Win2K. I''ll go back to Win98 and try 60Hz.

quote:
Original post by WitchLord
I don''t know why ALT+TAB doesn''t work for some in Win98, I don''t do anything to block it, so it really should work. Could be a problem with the DirectX drivers.

Still wouldn''t let me tab out (or CTRL-ALT-DEL or anything). Maybe I''ll try reinstalling DX (I think I have DX9 now).

quote:
Original post by WitchLord
There are actually three different high score lists, one for each tower size. Did you check the other two?

Doh, missed that! A possible improvement may be to change the table title to something like "Showing Small Scores" where only "Small" is purple to indicate ability to change it. You could also add an "All" option, if that would ever be desirable.

quote:
Original post by WitchLord
There is a help option in the menu, there you can read about the controls. But I could implement the F1 button to go directly to this menu options. Interesting idea about moving the blocks with the mouse buttons, when I play I don''t even use the mouse. I''ll think about that one, thanks.

Oops, missed that too, sorry.

- Mouse acceleration is great now.
- A feature I thought of was to add a shadow to the floor to indicate where the pieces will drop. But maybe that''s part of the challenge to the game. It would be helpful early on though when there are only a few blocks and you are trying to lay one long-wise. I usually have to rotate past where I want it then go back to make sure it lands next to the particular block I want to be next to.

quote:
Original post by WitchLord
Could you try this new version with the -log option and send me the new log?

The new log is below.
gfx.Desktop width: 1024gfx.Desktop height: 768gfx.Desktop format: R5G6B5gfx.1 graphics adapter(s) available====gfx.Adapter: 0gfx.Driver: NVDD32.DLLgfx.Description: NVIDIA GeForce3 Ti 200gfx.Version: 4.13.1.2832gfx.VendorID: 000010DEgfx.DeviceID: 00000201gfx.SubSysID: 00301545gfx.Revision: 000000A3gfx.SubSysID: 00301545gfx.Can render in windowed mode: Yesgfx.Allow source blending with source alpha: Yesgfx.Allow destination blending with inverse source alpha: Yesgfx.Allow alpha channel in textures: Yesgfx.Max texture size: 4096 x 4096gfx.Max texture aspect ratio: 0gfx.Max primitive count: 1048575gfx.Max vertex index: 1048575====gfx.CreateWindowedDevice(800, 600)gfx.Back buffer pixel format: R5G6B5gfx.Depth buffer pixel format: D24X8au.CreateDevice(2, 22100)gfx.CreateTexture()gfx.TextureID = 0gfx.CreateTexture()gfx.TextureID = 1gfx.CreateTexture()gfx.TextureID = 2gfx.CreateTexture()gfx.TextureID = 3gfx.CreateTexture()gfx.TextureID = 4gfx.CreateTexture()gfx.TextureID = 5gfx.CreateTexture()gfx.TextureID = 6au.CreateSound()au.Sound ID = 0gfx.CreateMesh()gfx.MeshID = 0au.CreateSound()au.Sound ID = 1au.CreateSound()au.Sound ID = 2au.CreateSound()au.Sound ID = 3au.CreateSound()au.Sound ID = 4au.CreateSound()au.Sound ID = 5au.CreateSound()au.Sound ID = 6gfx.CreateMesh()gfx.MeshID = 1au.CreateSound()au.Sound ID = 7au.CreateSound()au.Sound ID = 8au.CreateSound()au.Sound ID = 9gfx.DestroyMesh(1)gfx.CreateMesh()gfx.MeshID = 2gfx.ResetDevice(1024, 768, 16, 0)gfx.Back buffer pixel format: R5G6B5gfx.Depth buffer pixel format: D24X8

- WarbleWare

##### Share on other sites
Update:
- Win98 in 60Hz had no effect.
- Installed latest DX version. This didn''t help ALT+TAB, but I did notice now that when I hit ALT+TAB the windows mouse cursor will sometimes blink from behind the Tower window. Not sure if that''s because of the new DX version or if my mouse was just not behind the window before or if I just didn''t notice.
- The new DX version does appear to affect the log file. The first time I tried to switch to fullscreen, the log was the same as my previous one except these 3 mesh lines at the end are no longer there:
gfx.DestroyMesh(1)gfx.CreateMesh()gfx.MeshID = 2

The next time I ran Tower, I got this log file and a message box containing the error at the end of the log file. It appeared to try to start in Fullscreen mode.
gfx.Desktop width: 1024gfx.Desktop height: 768gfx.Desktop format: R5G6B5gfx.1 graphics adapter(s) available====gfx.Adapter: 0gfx.Driver: NVDD32.DLLgfx.Description: NVIDIA GeForce3 Ti 200gfx.Version: 4.13.1.2832gfx.VendorID: 000010DEgfx.DeviceID: 00000201gfx.SubSysID: 00301545gfx.Revision: 000000A3gfx.SubSysID: 00301545gfx.GetDeviceCaps(0) failed (8876086A)====gfx.CreateWindowedDevice(800, 600)Failed to create a windowed device. Your primary video accelerator may not support windowed rendering.

Then the next time I ran it, it was back in Windowed mode and fine (until I switch to full screen again). This last time the log file went back to the original (the 3 mesh lines were back in). Hope that helps somehow.

Also I meant to mention that I did play a game in Win98 in windowed mode (before I had just been in the menu). Windowed does work fine for me.

- WarbleWare

##### Share on other sites
Thanks for the quick reply. In an effort to find the problem as fast as possible I give you the code for how I create the D3D device. Perhaps you can see something that I cannot.

The problem with Win98 seems to be that the refresh rate isn''t initialized correctly. I always thought by specifying the refresh rate to 0, DX would choose a suitable one, but this seems to not be the case for Win98.

int scCGraphics::CreateFullscreenDevice(scHWND wnd, int w, int h, int bpp){	Log.Write(LOGTYPE_DEBUG, "gfx.CreateFullscreenDevice(%d, %d, %d)\n", w, h, bpp);	if( d3d8 == 0 ) return -1;	ReleaseDevice();	HRESULT hr;	// Check the capabilities of this adapter	if( CheckCapabilities(adapter) < 0 )		return -1;	D3DFORMAT format;	if( bpp == 16 )	{		// Choose the best pixel format for the backbuffer		D3DFORMAT formats[] = {D3DFMT_R5G6B5, D3DFMT_X1R5G5B5};		int numFormats = sizeof(formats)/sizeof(D3DFORMAT);		for( int n = 0; n < numFormats; n++ )			if( SUCCEEDED(d3d8->CheckDeviceType(adapter, D3DDEVTYPE_HAL, formats[n], formats[n], FALSE)) )			{				format = formats[n];				break;			}		if( n == numFormats ) 		{			Log.Write(LOGTYPE_DEBUG, "gfx.Couldn''t find suitable pixel format for back buffer\n");			return -1;		}	}	else if( bpp == 24 )	{		// Choose the best pixel format for the backbuffer		D3DFORMAT formats[] = {D3DFMT_R8G8B8, D3DFMT_X8R8G8B8};		int numFormats = sizeof(formats)/sizeof(D3DFORMAT);		for( int n = 0; n < numFormats; n++ )			if( SUCCEEDED(d3d8->CheckDeviceType(adapter, D3DDEVTYPE_HAL, formats[n], formats[n], FALSE)) )			{				format = formats[n];				break;			}		if( n == numFormats )		{			Log.Write(LOGTYPE_ERROR, "gfx.Couldn''t find suitable pixel format for back buffer\n");			return -1;		}	}	Log.Write(LOGTYPE_DEBUG, "gfx.Back buffer pixel format: %s\n", IdentifyFormat(format));	// Choose the best depth stencil format available	D3DFORMAT depthFormat;	D3DFORMAT depthFormats[] = {D3DFMT_D32, D3DFMT_D24X8, D3DFMT_D16};	int numFormats = sizeof(depthFormats)/sizeof(D3DFORMAT);	for( int n = 0; n < numFormats; n++ )		if( SUCCEEDED(d3d8->CheckDepthStencilMatch(adapter, D3DDEVTYPE_HAL, format, format, depthFormats[n])) )		{			depthFormat = depthFormats[n];			break;		}	if( n == numFormats ) 	{		Log.Write(LOGTYPE_ERROR, "gfx.Couldn''t find suitable format for depth buffer\n");		return -1;	}	Log.Write(LOGTYPE_DEBUG, "gfx.Depth buffer pixel format: %s\n", IdentifyFormat(depthFormat));	// Setup the presentation parameters    ZeroMemory( &pparam, sizeof(pparam) );	pparam.BackBufferWidth                 = w;	pparam.BackBufferHeight                = h;	pparam.BackBufferFormat                = format;	pparam.BackBufferCount                 = 1;	pparam.MultiSampleType                 = D3DMULTISAMPLE_NONE;	pparam.SwapEffect                      = D3DSWAPEFFECT_DISCARD;	pparam.hDeviceWindow                   = (HWND)wnd;	pparam.Windowed                        = FALSE;	pparam.EnableAutoDepthStencil          = TRUE; 	pparam.AutoDepthStencilFormat          = depthFormat;	pparam.Flags                           = D3DPRESENTFLAG_LOCKABLE_BACKBUFFER; // TODO: Make optional as it may incurr a performance penalty on some cards	pparam.FullScreen_RefreshRateInHz      = 0;	pparam.FullScreen_PresentationInterval = D3DPRESENT_INTERVAL_DEFAULT;	// Try with hardware vertex processing first	hr = d3d8->CreateDevice(adapter, D3DDEVTYPE_HAL, (HWND)wnd,							D3DCREATE_HARDWARE_VERTEXPROCESSING,							&pparam, &device);	if( FAILED(hr) )	{		Log.Write(LOGTYPE_DEBUG, "gfx.Failed to create device with hardware vertex processing, trying software (%X)\n", hr);		// Try again with software vertex processing		hr = d3d8->CreateDevice(adapter, D3DDEVTYPE_HAL, (HWND)wnd, 			                    D3DCREATE_SOFTWARE_VERTEXPROCESSING, 								&pparam, &device);		if( FAILED(hr) )		{			Log.Write(LOGTYPE_ERROR, "gfx.Failed to create device with software vertex processing (%X)\n", hr);			return -1;		}	}	return InitializeDevice();}

int scCGraphics::CreateWindowedDevice(scHWND wnd, int w, int h){	Log.Write(LOGTYPE_DEBUG, "gfx.CreateWindowedDevice(%d, %d)\n", w, h);	if( d3d8 == 0 ) return -1;	ReleaseDevice();	HRESULT hr;	// Check the capabilities of this adapter	if( CheckCapabilities(adapter) < 0 )		return -1;		// Can it render in windowed mode?	D3DCAPS8 caps;	hr = d3d8->GetDeviceCaps(adapter, D3DDEVTYPE_HAL, &caps);	if( FAILED(hr) )		return -1;	if( caps.Caps2 & D3DCAPS2_CANRENDERWINDOWED == 0 ) 	{		Log.Write(LOGTYPE_ERROR, "gfx.Device can''t render in windowed mode\n");		return -1;	}	// Check if the desktop display format is acceptable	if( !(displayMode.Format == D3DFMT_R8G8B8   || 		  displayMode.Format == D3DFMT_X8R8G8B8 || 		  displayMode.Format == D3DFMT_R5G6B5   || 		  displayMode.Format == D3DFMT_X1R5G5B5) )	{		Log.Write(LOGTYPE_DEBUG, "gfx.Desktop mode isn''t supported\n");		return -1;	}	// Choose the best pixel format for the backbuffer	D3DFORMAT format ;	D3DFORMAT formats[] = {D3DFMT_R8G8B8, D3DFMT_X8R8G8B8, D3DFMT_R5G6B5, D3DFMT_X1R5G5B5};	int numFormats = sizeof(formats)/sizeof(D3DFORMAT);	for( int n = 0; n < numFormats; n++ )		if( SUCCEEDED(d3d8->CheckDeviceType(adapter, D3DDEVTYPE_HAL, displayMode.Format, formats[n], TRUE)) )		{			format = formats[n];			break;		}	if( n == numFormats ) 	{		Log.Write(LOGTYPE_DEBUG, "gfx.Couldn''t find suitable pixel format for backbuffer\n");		return -1;	}	Log.Write(LOGTYPE_DEBUG, "gfx.Back buffer pixel format: %s\n", IdentifyFormat(format));	// Choose the best depth stencil format available	D3DFORMAT depthFormat;	D3DFORMAT depthFormats[] = {D3DFMT_D32, D3DFMT_D24X8, D3DFMT_D16};	numFormats = sizeof(depthFormats)/sizeof(D3DFORMAT);	for( n = 0; n < numFormats; n++ )		if( SUCCEEDED(d3d8->CheckDepthStencilMatch(adapter, D3DDEVTYPE_HAL, displayMode.Format, format, depthFormats[n])) )		{			depthFormat = depthFormats[n];			break;		}	if( n == numFormats ) 	{		Log.Write(LOGTYPE_DEBUG, "gfx.Couldn''t find suitable depth buffer format\n");		return -1;	}	Log.Write(LOGTYPE_DEBUG, "gfx.Depth buffer pixel format: %s\n", IdentifyFormat(depthFormat));	// Setup the presentation parameters    ZeroMemory( &pparam, sizeof(pparam) );	pparam.BackBufferWidth                 = w;	pparam.BackBufferHeight                = h;	pparam.BackBufferFormat                = format;	pparam.BackBufferCount                 = 1;	pparam.MultiSampleType                 = D3DMULTISAMPLE_NONE;	pparam.SwapEffect                      = D3DSWAPEFFECT_DISCARD;	pparam.hDeviceWindow                   = (HWND)wnd;	pparam.Windowed                        = TRUE;	pparam.EnableAutoDepthStencil          = TRUE; 	pparam.AutoDepthStencilFormat          = depthFormat;	pparam.Flags                           = D3DPRESENTFLAG_LOCKABLE_BACKBUFFER; // TODO: Make optional as it may incurr a performance penalty on some cards	pparam.FullScreen_RefreshRateInHz      = 0;	pparam.FullScreen_PresentationInterval = D3DPRESENT_INTERVAL_DEFAULT;	// Try with hardware vertex processing first	hr = d3d8->CreateDevice(adapter, D3DDEVTYPE_HAL, (HWND)wnd,							D3DCREATE_HARDWARE_VERTEXPROCESSING,							&pparam, &device);	if( FAILED(hr) )	{		Log.Write(LOGTYPE_DEBUG, "gfx.Failed to create device with hardware vertex processing, trying software (%X)\n", hr);		// Try again with software vertex processing		hr = d3d8->CreateDevice(adapter, D3DDEVTYPE_HAL, (HWND)wnd, 			                    D3DCREATE_SOFTWARE_VERTEXPROCESSING, 								&pparam, &device);		if( FAILED(hr) )		{			Log.Write(LOGTYPE_ERROR, "gfx.Failed to create device with software vertex processing (%X)\n", hr);			return -1;		}	}	return InitializeDevice();}

__________________________________________________________
www.AngelCode.com - game development and more...
AngelScript - free scripting library

##### Share on other sites
That game kicks ass(and works fine), certainly a new twist to falling blocks

Spec:
CPU: P4 2.4Ghz (non HT)
RAM: 512Mb DDR 400
Gfx: GeForce 3 Ti 200
OS: Win2k Pro SP4

.:Cubicle2:.
Changing the depth-stencil format to D3DFMT_D24X8 made the code work. I'm not sure what the DX8 docs say but here's a sample from DX9:
BOOL IsDepthFormatOk( D3DFORMAT DepthFormat,                       D3DFORMAT AdapterFormat,                       D3DFORMAT BackBufferFormat ) {    // Verify that the depth format exists.    HRESULT hr = pD3D->CheckDeviceFormat( D3DADAPTER_DEFAULT,                                          D3DDEVTYPE_HAL,                                          AdapterFormat,                                          D3DUSAGE_DEPTHSTENCIL,                                          D3DRTYPE_SURFACE,                                          DepthFormat);    if( FAILED( hr ) ) return FALSE;    // Verify that the depth format is compatible.    hr = pD3D->CheckDepthStencilMatch( D3DADAPTER_DEFAULT,                                       D3DDEVTYPE_HAL,                                       AdapterFormat,                                       BackBufferFormat,                                       DepthFormat);    return SUCCEEDED( hr );}Log with CATALYST 4.3:gfx.Desktop width: 1024gfx.Desktop height: 768gfx.Desktop format: X8R8G8B8gfx.1 graphics adapter(s) available====gfx.Adapter: 0gfx.Driver: ati2dvag.dllgfx.Description: RADEON 8500 SERIESgfx.Version: 6.14.10.6430gfx.VendorID: 00001002gfx.DeviceID: 0000514Cgfx.SubSysID: 013A1002gfx.Revision: 00000000gfx.SubSysID: 013A1002gfx.Can render in windowed mode: Yesgfx.Allow source blending with source alpha: Yesgfx.Allow destination blending with inverse source alpha: Yesgfx.Allow alpha channel in textures: Yesgfx.Max texture size: 2048 x 2048gfx.Max texture aspect ratio: 2048gfx.Max primitive count: 65535gfx.Max vertex index: 16777215====gfx.CreateFullscreenDevice(1024, 768, 32)gfx.Back buffer pixel format: Unknown formatgfx.Couldn't find suitable format for depth bufferFailed to create a fullscreen device. Your video card may not support the requested resolution.

It seems that you don't do the CheckDeviceFormat() -test for the depth formats. Try adding that and/or make it possible for the user to be able to force the format to be whatever he wants.

Yet, this is still strange as I have used D3DFMT_D32 myself sometimes and the driver is set up to support 32-bit Z-buffer. Hmm... looks like I have somewhat obsolete drivers, though (4.2). Maybe I should try with the new drivers first.

EDIT: Installed CATALYST 4.3 drivers; doesn't work but the log changed a bit. I inserted it after the code sample above.

[edited by - nonpop on March 15, 2004 10:53:56 AM]

##### Share on other sites
quote:
Original post by WitchLord
Thanks for the quick reply. In an effort to find the problem as fast as possible I give you the code for how I create the D3D device. Perhaps you can see something that I cannot.

The problem with Win98 seems to be that the refresh rate isn''t initialized correctly. I always thought by specifying the refresh rate to 0, DX would choose a suitable one, but this seems to not be the case for Win98.

Well, I''m just getting started on DirectX. So you''d probably know better than I would. But looking up the FullScreen_RefreshRateInHz at MSDN for DX8 says that full screen requires a result from EnumAdapterModes or one of two flags. Looking a little further it looks like EnumAdapterModes can return zero for the refresh rate. (The value of 0 indicates an adapter default.) You could try using D3DPRESENT_RATE_DEFAULT to let the run time choose the presentation rate. DX9 doesn''t appear to allow the flags anymore though.
(I see that nonpop has a reply now - so maybe that''s what you need.)
If you get a new version I can try it at home tonight.

- WarbleWare

##### Share on other sites
Nice game

Works fine on my GeForce 5200, 2.7Ghz Celeron.

##### Share on other sites
Tried the 1.5 beta, and as reana1 said, the problem does still exist in win98 fullscreen mode. Log here http://jolle.se/bah/tower2.log.

I did however noticed a typing error in the readme:
quote:
- The config.cfg file is not created at initialization if not already available

##### Share on other sites
Zanthos:

Thanks. I''m happy you like the game.

nonpop:

Very strange indeed. D32 should work, since the I did verify the format.

I noticed that in the log, it says:

gfx.CreateFullscreenDevice(1024, 768, 32)

Did you change the bpp, manually in the config.cfg? Set it to 24, or it won''t work, 32 is not recognized by the game (I''ll fix this), which is why at the end of the log the game couldn''t find any suitable formats. It could still be a driver problem that you have, which would explain why it works on the other Radeon 8500, and not yours.

reana1:

Actually D3DPRESENT_RATE_DEFAULT is defined as 0, so this is what I do already. It seems that it doesn''t work for Win98. I''ll have to enumerate the available refresh rates and choose one of them instead of setting it to 0. I''ll do that as soon as possible. It''ll probably be a couple of days though, since I have very little time during the week.

Jingo:

Thanks, for the info. I''ll update the list.

Jolle:

I think the problem is that Win98 doesn''t accept refresh rate set to default (0), I''ll try enumerating available refresh rates.

Good catch on the readme.txt, I''ll fix it for the next release.

__________________________________________________________
www.AngelCode.com - game development and more...
AngelScript - free scripting library

##### Share on other sites
Ok, 24bpp will give the previous errors. But try the depth format checking method in my previous post (though you have to port it to DX8) and/or allow manual setting of the format.

##### Share on other sites
Just uploaded another version 1.5 beta 2:

Tower 1.5 beta 2

This one has the following changes added:

- The user can now select refresh rate, which may help on some systems
- The depth buffer format D24X8 is chosen before D32
- It is now possible to chose fullscreen resolutions that do not have 4:3 ratio

I think that this should work for everyone now. Please try it out.

Regards,
Andreas

__________________________________________________________
www.AngelCode.com - game development and more...
AngelScript - free scripting library

##### Share on other sites
Just worked fine for me !

Config: Athlon 2000+
GeForce4 Ti 4200 128MB
512 DDR RAM
WinXP
Res - 1024x768

##### Share on other sites
nonpop:

I was already using the depth buffer checking method you mentioned. See the source code I revealed. The problem is that the check passed, even though the driver didn''t allow me to create the device.

Could you check the DirectX Caps Viewer that comes with the DXSDK, and tell me what depth buffers your system allows?

In either case I think I have resolved the problem by checking for D24X8 first, and then D32. This will make the game choose the D24X8 format if it is available, which seems to be the most common one. My GeForce 256 don''t even support D32, even though it could have.

DarkPixel:

Thanks for the info. I''ll update the Tower page soon with the new working configurations that I''ve received these few days.

Regards,
Andreas

__________________________________________________________
www.AngelCode.com - game development and more...
AngelScript - free scripting library

##### Share on other sites
quote:
Original post by WitchLord
Tower 1.5 beta 2

Still no luck in Win98. When I switch to fullscreen in the options, it only has "auto" as the refresh rate and can''t be changed (though it is no longer grayed out). In Win2K I can change it, but "auto" is not an option. For either OS, when the option is set to windowed, the refresh rate is grayed out (which is as designed I expect).

Also, the mouse acceleration seemed to be more jumpy this time - did you adjust that again?

- WarbleWare

##### Share on other sites
If you only see auto for the refresh rate in Win98, then the drivers don''t enumerate the refresh rate in the display modes. This makes it extremely difficult for me to fix the problem. I cannot just choose an arbitrary refresh rate, since I wouldn''t know if the card/monitor supported it. In windowed mode you cannot choose neither bit depth nor refresh rate, since it takes what the desktop is using.

I didn''t change the mouse, could be that you were getting stuttering framerates due to another application running in the background.

Say, reana1? Does the DirectX samples that come with the SDK work in fullscreen mode for Win98 on your machine? What version of the SDK do you have installed?

__________________________________________________________
www.AngelCode.com - game development and more...
AngelScript - free scripting library

##### Share on other sites
Yeah! It''s working now! A great game! Just one thing... how about customizable controls? The current rotation/cycling controls are not so intuitive for me. Of course I could get used to them after a while, but...

I checked the caps and here they are:
D3DFMT_D16_LOCKABLED3DFMT_D32D3DFMT_D24S8D3DFMT_D24X8D3DFMT_D16

So, D32 is indeed supported -- this is really ODD!
BTW, in the code you sent the checking method isn''t quite the same that the one I posted. You do only a CheckDepthStencilMatch() while my sample does also a CheckDeviceFormat() for the depth formats. But apparently that wouldn''t help since my card actually supports the format; it''s just that it doesn''t work!

##### Share on other sites
Excellent! One bug down, one to go.

You''re right, I didn''t pay attention to the exact function name. The same function exist in DX8, for a future version of Tower I will include that test when choosing depth buffer.

Though, in this case I suspect that the result would be the same, that the validation would pass but not the creation. It is indeed a strange problem, it should work but doesn''t. Oh, well, I guess that is what makes game development so interesting

I wanted to do customizable controls from the beginning, but then I ran out of time and inspiration to work on the game so I decided to release it with fixed controls. Now that I have found the inspiration again (although the time is still short) I may take the many suggestions that I received here and implement (customizable controls included).

I first want to fix the Win98 lockup problem though. But it seems that I will need help to do that, since I can''t test it myself.

Regards,
Andreas

__________________________________________________________
www.AngelCode.com - game development and more...
AngelScript - free scripting library

##### Share on other sites
quote:
Original post by WitchLord
If you only see auto for the refresh rate in Win98, then the drivers don''t enumerate the refresh rate in the display modes. This makes it extremely difficult for me to fix the problem. I cannot just choose an arbitrary refresh rate, since I wouldn''t know if the card/monitor supported it. In windowed mode you cannot choose neither bit depth nor refresh rate, since it takes what the desktop is using.

Do I need to update my display drivers? Are these old?
gfx.Description: NVIDIA GeForce3 Ti 200
gfx.Version: 4.13.1.2832
I generally only use Win98 for my old games. So it''s may have been a while since I updated, but I don''t think those are real old.

quote:

I didn''t change the mouse, could be that you were getting stuttering framerates due to another application running in the background.

That''s probably the case then.

quote:

Say, reana1? Does the DirectX samples that come with the SDK work in fullscreen mode for Win98 on your machine? What version of the SDK do you have installed?

I haven''t done any developing on Win98. So the SDK isn''t installed there, but I should be able to run some of the samples there. I have the DX Summer Update 2003 installed in Win2K. Then just the latest enduser DX for Win98.

- WarbleWare

##### Share on other sites
reana1: Those drivers aren't very old, but the lastest ones are 53.04 I think. Edit: I read wrong, so actually, those drivers are quite old.

WitchLord: Answered your e-mail, but a short summary: New versionen didn't work in fullscreen. 0 is always given as refresh rate in win98 when enumerating screen modes. The DX9 SDK examples works fine in fullscreen. (Don't have DX8 SDK).

Another thing, not mentioned in the e-mail: I tried to force a specific refresh rate (one that's supported, of course) by editing the config, and that was even worse then before (the computer restarted). So giving anything but 0 when setting the screen mode in Win98 seems to be A Bad IdeaTM. I don't think it's the refresh rate that's the problem. Don't know what it is though

[edited by - Jolle on March 16, 2004 2:26:52 PM]

##### Share on other sites
Jolle: Thanks for checking. I could try updating the drivers, but I''m guessing that isn''t be the problem (since yours are up-to-date).

WitchLord: I was able to run some of the SDK samples, but not all of them. Many just exited saying something like "unsupported device or adapter". The ones that worked (in Samples/C++) include:
Demos/Donuts4
Direct3D/HLSLWithoutEffects
Direct3D/VolumeTexture
Direct3D/Cull

These (among several others) didn''t work:
Direct3D/FishEye
Direct3D/DolphinVS
Direct3D/Water

I looked at some of the source code. Donuts4 doesn''t appear to do anything with RefreshRate. The other samples in Direct3D use some common files in Samples/C++/Common/ to enumerate and change modes. So looking there might give you some help I guess. I couldn''t find anything, but I''m still a DX noob. Have you asked in the DX forum? Seems like if this is common problem someone would know there (or be able to look over your code).

- WarbleWare

##### Share on other sites
Thanks for giving the demos a try.

Win98 simply doesn''t enumerate the refresh rates so that can''t be my problem I think.

I''m starting to think that the problem lies elsewhere in the code, but I don''t know. I think I''ll write a stripped down demo that only creates a fullscreen device, shows it a few seconds and then goes back to windowed mode and close down. That way I''ll be able to isolate the problem better, and even let you guys see the source code if needed.

I have asked in the DX forum, but it seems it is not a very common problem. I''ll keep trying, I''m sure I''ll find the cause soon enough.

Andreas

__________________________________________________________
www.AngelCode.com - game development and more...
AngelScript - free scripting library

##### Share on other sites
Few direct3d games come out. Great work.

##### Share on other sites
Review? You mean like a list of features?

• Skinned animation with up to three bone matrices per triangle
• Multiple shader effects using pixel shaders, or reverting to multipass if PS isn''t available
• Complex dynamic music adapting to situation
• Dolby Surround Sound 5.1
• Per pixel lighting with soft shadows using shadow volumes and penumbra wedges
• Endless terrain, rough terrain data loaded from data, with noise laid over it to add detail
• Vegetation randomly placed based on terrain type and level
• A lot more...

Oh, these are the features that the engine doesn''t have

Actually the game pretty much shows everything the engine is capable of at the moment. But it is a starting point that I will expand upon with each new game I write. I''m very happy I decided to do it this way, already with this small engine I''m discovering bugs (because of differences between drivers and cards, and operative system) that would be much, much more difficult to fix if I had a complex engine of modern level. With this engine the next game I make it will be much easier since all the boring stuff is already made, such as file loading, menu management, setting up the device, input, sound, etc.

I just need to find this bug that makes the game lock up on Win98.

Regards,
Andreas

__________________________________________________________
www.AngelCode.com - game development and more...
AngelScript - free scripting library

##### Share on other sites
I decided that to release the 1.5 version to the public. After all, I did manage to squash on of the bugs that you helped me find.

I still have to verify the bug in Win98. There is a chance that I managed to get rid of it, as I''ve rewritten parts of the code for setting up the device and window. So if anyway could be so kind as to test it for me I would be very thankful?

The complete list of changes made since version 1.4 is:

- Changed the way the graphics device is created at the start of the game
- The game is now visible in the task bar even when switching to another application in fullscreen mode
- When pressing ALT+TAB the application is minimized if in fullscreen mode
- The config.cfg file is created at initialization if not already available
- The tower rotates towards the moving blocks a little faster
- The user can now select refresh rate, which may help on some systems
- The depth buffer format D24X8 is chosen before D32
- It is now possible to chose fullscreen resolutions that do not have 4:3 ratio
- At first run the game tries to start in windowed mode, and if that fails reverts to 640x480 fullscreen mode
- The mouse now follows the windows cursor
- The game correctly pauses if the window looses focus

A big thanks to everyone, and especially Reana1, Jolle, and nonpop for being so patient with me and trying the various beta versions. Anytime you need help, just drop me a line and I''ll do what I can.

Regards,
Andreas

__________________________________________________________
www.AngelCode.com - game development and more...
AngelScript - free scripting library