r0ger Posted August 19, 2022 Posted August 19, 2022 (edited) Hi guys, i've ripped some another rotating cube animation from one of FFF's cracks, and im actually struggling creating DC's for the black background without the cube overdrawing on the background. i have even tried to clean that up with SetBkMode (TRANSPARENT) on the dword_40B7B8 variable,and still no use even with PatBlt. if someone is interested i will send the crack file (unpacked) + its idb file from IDA pro. thanks a bunch! Edited August 22, 2022 by r0ger attachment removed - problem fixed,now releasing the final version of the animation to be released for public
Teddy Rogers Posted August 19, 2022 Posted August 19, 2022 You are probably not erasing/ clearing the background before drawing new lines. Try using InvalidateRect(hWnd, NULL, TRUE)... Ted.
r0ger Posted August 19, 2022 Author Posted August 19, 2022 (edited) I've inserted InvalidateRect function on the loc_404EDF routine in StartAddress procedure and indeed it does clear the bg before draws new lines but the thing is it keeps flickering even the rest of the windows i have opened (not only the bones.exe. :E) and i have also inserted a new tagRECT function for the bones window with GetClientRect, (offset r3kt) but still the same.. Edited August 19, 2022 by r0ger
Teddy Rogers Posted August 19, 2022 Posted August 19, 2022 Check you are passing the correct window handle for "hWnd". If you are passing NULL it will invalidate all windows... Ted.
r0ger Posted August 19, 2022 Author Posted August 19, 2022 (edited) 11 minutes ago, Teddy Rogers said: Check you are passing the correct window handle for "hWnd". If you are passing NULL it will invalidate all windows... Ted. i did that. still flickers on all windows even if i set the window handle to null or hWnd. normally, the main hDC variable for the cube is dword_40B67C. and the "hdcSrc" for the clean bg for the cube is dword_40B7B8. so unfortunately still don't know how should i implement a new black background in it. so on FFF's release, the dword_40B7B8 variable is when the bitmap file is initiated after CreateCompatibleDC in IDA pro, and then RocketSpawn applied it with SelectObject on the hdcSrc variable.: but it's actually in the sub_404F44 procedure where the two texts "FFF (c) 2004" and "RocketSpawn" scrolling from the cube to the top, but i excluded that procedure as long as i wanted to make a 400x200 aboutbox with a credits roll procedure in it ( i mean to have the cube on the left and the credits roll on the right). Edited August 19, 2022 by r0ger
Teddy Rogers Posted August 19, 2022 Posted August 19, 2022 If it is still flickering it is because the window handle isn't correct and you are passing NULL. If you are copying "hWnd" in your code check it isn't named something different like "Win", "Win_hWnd", etc. You could try using UpdateWindow(hWnd), that will force a WM_PAINT and, depending on the code, force the background to be erased on BeginPaint... Ted. 1
hypotalik Posted August 19, 2022 Posted August 19, 2022 (edited) redrawing the dialog with UpdateWindow wouldn't make it laggy/flickering? especially that this api is redrawing the whole UI and if you have a 'fast' timer it would make it worst? especially like if you would try to move the window or something? sound a lot of cpu consumtion to redraw every 'x' miliseconds to keep with the effect, InvalidateRect seem more appropriate for this stuff, but i'm not a gdi guy, nor looked at the code, just reading the msdn. Edited August 19, 2022 by hypotalik 1
r0ger Posted August 21, 2022 Author Posted August 21, 2022 (edited) also tested it on Windows 7 vm with the Windows classic theme and seems to draw perfectly but with very less flicker. idk why is that flickering on windows 10... btw just googled somewhere and found a GDI base for creating aboutboxes and i will see what i can do to implement it on that one. Edited August 21, 2022 by r0ger
fearless Posted August 21, 2022 Posted August 21, 2022 Cant download your attachments, always seem to get picked up by windows defender. Even with setting exclusions.
r0ger Posted August 21, 2022 Author Posted August 21, 2022 (edited) 16 hours ago, fearless said: Cant download your attachments, always seem to get picked up by windows defender. Even with setting exclusions. removed the exe files so u can have a look at the project this time. Edited August 22, 2022 by r0ger 1
fearless Posted August 22, 2022 Posted August 22, 2022 Still getting a Quote Trojan:Script/Ulthar.A!ml alert for this download.
r0ger Posted August 22, 2022 Author Posted August 22, 2022 just disable real time protection on your Windows Defender at least…
r0ger Posted August 22, 2022 Author Posted August 22, 2022 (edited) - .eTeLeD - Edited August 22, 2022 by r0ger problem solved.
r0ger Posted August 22, 2022 Author Posted August 22, 2022 (edited) solved the problem actually. on the cube animation procedures, i had to set the dc variable to hBackDC (not hMainDC) to insert it properly in the background because on rysowanie procedure on DoGfx, the cube flickered because the jmp function actually refreshes the lines every 0.10 seconds with Sleep function. now the cube animation doesn't flicker anymore and it works perfectly,thankx all of u for suggestions Edited August 22, 2022 by r0ger 1
r0ger Posted August 24, 2022 Author Posted August 24, 2022 (edited) okay,this time i hardly get the text scroller working without making the cube (or itself) flickering so when i insert the txt scroller the cube flickers more , so does the scroller and it also paints white over the bg.....if anyone wants to help me with that , please DM me. Edited August 25, 2022 by r0ger
Teddy Rogers Posted August 25, 2022 Posted August 25, 2022 Are you drawing directly to the windows device context? If you are it would be better to complete all your drawing operations off screen using a memory device context (bitmap) then when finished blit it to the window... Ted. 1
r0ger Posted August 25, 2022 Author Posted August 25, 2022 (edited) - attachment removed - made the cube working again for the STATIC control atm. Edited August 29, 2022 by r0ger
r0ger Posted August 29, 2022 Author Posted August 29, 2022 day 9000 of the cube effect - finally got the cube right and without flickering (not rly, but very very less now but it's acceptable) ! the solution was to create a device context for the static control i've inserted (GetDlgItem,xWnd,10), then create the bitmap for the cube, and then apply it with SelectObject. like i did almost the same thing with the RotatingDotz animation from TSRh. reason for line overdrawing was that i forgot to insert the GetClientRect function on the ebp variable which was saved for the black rectangle for the cube - in the analysis of the FFF crack in IDA pro, ebp global value was moved to the stru_40B680 rectangle variable which i had to get all the dimensions with GetClientRect. at the moment i have made it only for when i want to insert this cube in the main keygen form. i will be testing it as well for the aboutbox and see if this one works along with the vertical scroller. 1
fearless Posted August 29, 2022 Posted August 29, 2022 (edited) SiNnN proc near fsin fnstsw ax sahf jp short loc_402670 retn loc_402670: fstp st fldz SiNnN endp ; no ret or retn here ; it likely to fall through to the r0und proc instead if jump_if_parity is followed. ; r0und has a retn so it wont go any further r0und proc near var_8 = qword ptr -8 sub esp, 8 fistp [esp+8+var_8] wait pop eax pop edx retn r0und endp SiNnN doesnt have a retn if jump if parity is followed. Just wanted to check if this was intentional or something that was omitted by mistake? Edited August 29, 2022 by fearless typo 1
r0ger Posted August 29, 2022 Author Posted August 29, 2022 9 minutes ago, fearless said: SiNnN proc near fsin fnstsw ax sahf jp short loc_402670 retn loc_402670: fstp st fldz SiNnN endp ; no ret or retn here ; it likely to fall through to the r0und proc instead of jump_if_parity is followed. ; r0und has a retn so it wont go any further r0und proc near var_8 = qword ptr -8 sub esp, 8 fistp [esp+8+var_8] wait pop eax pop edx retn r0und endp SiNnN doesnt have a retn if jump if parity is followed. Just wanted to check if this was intentional or something that was omitted by mistake? yeah i probably deleted it by mistake perhaps when messing around with this snippet. 😛
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now