That show is impressively unfunny <| sep |> Whew , quite a lot but let ' s go through it . I might not really understand what or why you are doing in your game but the comparison of surfaces I can certainly explain I haven ' t tested it though . I had the alignment at 1 at first but saw that in the buffercreate info page it said 16 bit integers would need to be set to 2 . I set it back to 1 . ~~ It says in the documentation that for strings the alignment should be 1 and a hash is returned as a string . ~~ Edit My bad , you are not saving a string to the buffer , but ~~ a 16 bit integer ~~ a whole amount of bits for the surface , so you can set it pretty high actually , doesn ' t really matter . I ' m running draw clear alpha at the create of every surface . Which one exactly ? Drawclearalphabblack , 0 would set all pixels to 0 in the rgba values . So I would need to keep the same surface through the life of the object ? No , only its hash value . Btw , you should read up on that . Would I need to create the original surface and while it ' s blank get the hash , and then every time it gets hit , check the hash again and see if it ' s the same as the original hash again ? Yes , that ' s pretty much what I think you should do . Also , I have much different sized surfaces , should the hash be coming up as different lengths at least for the different sizes , right ? As said , read a bit about hashes and you ' ll find that they always have the same length when using the same hash algorithm that is of course . Quickly summarized , a hash is a ' unique ' value that can be calculated over an amount of bits . Therefore , if another surface produces the same hash value as another , it is pretty safe to assume that they are the same surface .