On Nov 12, 2007 3:40 PM, claxo <[EMAIL PROTECTED]> wrote: > Try to shortcut all the fps - cpu caping in your code, see if it > crash or freezes. Its seems to me that that all the restrictions are > fighting. If doenst crash, we know the problem is in the caping. > > claxo
updated code: http://www.newmech.com/pics/ZombieHunt-BSOD_update.zip ( updated, one line toggling on/off will either crash or not. see below ) I removed everything from the program except screen.fill() and screen.flip() calls and it ran. I then added everything back one at a time until I found out what was crashing it. Added Fps.py , and even toggling bLimitCPU it would not crash. Added Map.py, but I only created the object, did not call map.render. So that Map.__init__() gets called to make sure the problem is not the map array initialization. It works. I then tried calling self.map.render() , and this would run for about 5-15 seconds, blitting the tiles, then the BSOD. ( Stop: 0x0000000A ) To test if it was a surface problem, I wrote a new function map.render_test() which blits the whole tileset surface to screen, with no source rect's. It runs good. So I know the problem is Map.render(). I elimiated getting the tileID's at the render. Instead I use a static tileID 1. ( So the source rect is always the same. ) To make sure it's not a dest rect blit to offscreen causing problems, I skipped the outside tiles. The line "self.map.render()" still crashes. Replacing it with "self.map.render_test()" does not crash. I don't get it. # snippet of: Map.py ( also in the zip ) def render_test(self): """this render works""" dest_rect = pygame.Rect(0,0,0,0) # dest rect()'s ignore w,h values self.screen.blit( self.tileset, dest_rect ) def render(self): """this render crashes to BSOD after about 5-15 seconds""" for y in range( 1, self.tiles_y -1 ): for x in range( 1, self.tiles_x -1 ): dest_rect = pygame.Rect( x*self.tile_w, y*self.tile_h, self.tile_w, self.tile_h ) # src_rect.x is tileID*tile_width ( I made it constant for the test ) src_rect = pygame.Rect( 1*self.tile_w, 0, self.tile_w, self.tile_h ) self.screen.blit( self.tileset, dest_rect, src_rect )