Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
Memfis

REMOVE UNUSED GRAPHICS?

Recommended Posts

How to remove unused graphics from a wad?
WCleaner says memory could not be read and crashes
Old Slade removes iwad textures too
New Slade says procedure entry point couldn't be located and doesn't load
What else can I try?

Share this post


Link to post
Memfis said:

THANK YOU. Slade-3.1.0.1-626-g0336db5.7z worked!


Does this allow you to fuse a texture resource with a wad and remove all of the graphics the levels don't use (both in a very simple way, preferably a several-clicks-at-most process)?

Share this post


Link to post

Pretty much, yeah. Well, for merging I used XWE because I don't know how to do it in Slade. After that I loaded it, clicked on

Archive->Maintenance->
1)Remove Unused Flats
2)Remove Unused Textures (I think it's important to remove them before patches)
3)Remove Unused Patches

... and it worked! It's almost magical. :)

Share this post


Link to post

With SLADE you can copy textures from the Texture Editor of one wad into the Texture Editor of another wad.

Unless you don't have TEXTURE1 and PNAMES lumps, in which case you simply copy them over along with the gfx lumps.

Share this post


Link to post

I'm having the same issues as memfis mentioned in the OP with the newest version of slade.
So i also tried it with the Slade-3.1.0.1-626-g0336db5.7z Dev build but all i'm getting is this

Version: 3.1.0.1 (3.1.0.1-626-g0336db5)
Current action: arch_clean_textures
Stack Trace:
0: [unknown location] [unknown:4848031]
1: [unknown location] IsProcessDPIAware
2: [unknown location] DefWindowProcW
3: [unknown location] [unknown:1955929669]
Any suggestions on how to get it work properly?

Share this post


Link to post

Yeah I'm also getting this error now:

Version: 3.1.0.1 (3.1.0.1-626-g0336db5)
Current action: arch_clean_textures
Stack Trace:
0: [unknown location] [unknown:4848031]
1: [unknown location] [unknown:-394781876]
It worked just that one time, now I can't remove unused textures again...

Share this post


Link to post

I think there are some memory leak issues in SLADE 3. I've noticed that if you open a lot of files (especially large archives with over a thousand entries) it reaches a point where it'll fail to open more archives and will crash on exit. This is very annoying but I have had no chance trying to debug it so far.

If you get a crash when doing an operation on an archive, was it after a long session where you have also opened and closed several other archives? Do you get the same crash if you restart SLADE, open only the archive that crashed, and try again?

Share this post


Link to post

I use SLADE v3.1.0 beta 4, and everything works fine. I've opened gredna.wad, removed unused flats, then removed unused textures (manually unchecking skies and switches), then removed unused patches, then manually removed AWLITE1 and AWLITE2 which remained duplicated. Here is the wad, and it runs in Chocolate Doom without problems (you must use -merge because of new sprites).

Share this post


Link to post

Gez: for me it crashes even when removing unused graphics is the first thing I do.

Share this post


Link to post
Gez said:

Do you get the same crash if you restart SLADE, open only the archive that crashed, and try again?


Yes, here's what i get in v3.1.0.2.
I used Gredna.wad for the sake of having some kind of reference.

Spoiler

Version: 3.1.0.2
Current action: arch_clean_textures
Stack Trace:
0: (c:\dev\slade3\src\archiveoperations.cpp:568) ArchiveOperations::removeUnusedTextures
1: (c:\dev\slade3\src\archivepanel.cpp:2627) ArchivePanel::handleAction
2: (c:\dev\slade3\src\mainapp.cpp:1091) MainApp::doAction
3: (c:\dev\slade3\src\mainapp.cpp:1163) MainApp::onMenu
4: (f:\programming\libs\wxwidgets-3.0.2\src\common\appbase.cpp:612) wxAppConsoleBase::HandleEvent
5: (f:\programming\libs\wxwidgets-3.0.2\src\common\appbase.cpp:623) wxAppConsoleBase::CallEventHandler
6: (f:\programming\libs\wxwidgets-3.0.2\src\common\event.cpp:1751) wxEvtHandler::SearchDynamicEventTable
7: (f:\programming\libs\wxwidgets-3.0.2\src\common\event.cpp:1585) wxEvtHandler::TryHereOnly
8: (f:\programming\libs\wxwidgets-3.0.2\src\common\event.cpp:1495) wxEvtHandler::ProcessEvent
9: (f:\programming\libs\wxwidgets-3.0.2\src\common\event.cpp:1416) wxEvtHandler::DoTryApp
10: (f:\programming\libs\wxwidgets-3.0.2\src\common\wincmn.cpp:3433) wxWindowBase::TryAfter
11: (f:\programming\libs\wxwidgets-3.0.2\src\common\event.cpp:1508) wxEvtHandler::ProcessEvent
12: (f:\programming\libs\wxwidgets-3.0.2\src\common\wincmn.cpp:3427) wxWindowBase::TryAfter
13: (f:\programming\libs\wxwidgets-3.0.2\src\common\event.cpp:1508) wxEvtHandler::ProcessEvent
14: (f:\programming\libs\wxwidgets-3.0.2\src\common\event.cpp:1647) wxEvtHandler::SafelyProcessEvent
15: (f:\programming\libs\wxwidgets-3.0.2\src\common\menucmn.cpp:666) wxMenuBase::SendEvent
16: (f:\programming\libs\wxwidgets-3.0.2\src\common\framecmn.cpp:298) wxFrameBase::ProcessCommand
17: (f:\programming\libs\wxwidgets-3.0.2\src\msw\frame.cpp:826) wxFrame::HandleCommand
18: (f:\programming\libs\wxwidgets-3.0.2\src\msw\frame.cpp:889) wxFrame::MSWWindowProc
19: (f:\programming\libs\wxwidgets-3.0.2\src\msw\window.cpp:2711) wxWndProc
20: [unknown location] gapfnScSendMessage
21: [unknown location] gapfnScSendMessage
22: [unknown location] gapfnScSendMessage
23: [unknown location] DispatchMessageW
24: (f:\programming\libs\wxwidgets-3.0.2\src\msw\evtloop.cpp:170) wxGUIEventLoop::ProcessMessage
25: (f:\programming\libs\wxwidgets-3.0.2\src\msw\evtloop.cpp:232) wxGUIEventLoop::Dispatch
26: (f:\programming\libs\wxwidgets-3.0.2\src\common\evtloopcmn.cpp:206) wxEventLoopManual::DoRun
27: (f:\programming\libs\wxwidgets-3.0.2\src\common\evtloopcmn.cpp:78) wxEventLoopBase::Run
28: (f:\programming\libs\wxwidgets-3.0.2\src\common\appbase.cpp:334) wxAppConsoleBase::MainLoop
29: (f:\programming\libs\wxwidgets-3.0.2\src\common\init.cpp:495) wxEntryReal
30: (f:\programming\libs\wxwidgets-3.0.2\src\msw\main.cpp:188) wxEntry
31: (f:\programming\libs\wxwidgets-3.0.2\src\msw\main.cpp:415) wxEntry
32: (c:\dev\slade3\src\mainapp.cpp:305) WinMain
33: (f:\dd\vctools\crt\crtw32\dllstuff\crtexe.c:618) __tmainCRTStartup
34: [unknown location] BaseThreadInitThunk
35: [unknown location] RtlInitializeExceptionChain
36: [unknown location] RtlInitializeExceptionChain

On a sidenote removing Flats and or patches works.

Also thanks Scifista i tried v3.1.0 beta and it actually works.

Share this post


Link to post
cybermind said:

Optimized gredna.wad: https://yadi.sk/d/Xd1lyrrVgueLq

Compared to the one I optimized in SLADE3 (link here), WCleanered gredna.wad still contained 253 unused textures, 302 unused patches and duplicated AWLITE1 and AWLITE2. Original gredna.wad had about 1000 unused textures and 1000 unused patches. Unused flats were removed same in both.

Share this post


Link to post
cybermind said:

Memfis: I've fixed the bug in WCleaner


Excellent tool, works flawless, wish i had known about this before.

Share this post


Link to post
scifista42 said:

Compared to the one I optimized in SLADE3 (link here), WCleanered gredna.wad still contained 253 unused textures, 302 unused patches and duplicated AWLITE1 and AWLITE2.

My Slade-3.1.0.2-647-ga9e30e4 found 5 unused patches in WCleanered gredna.wad. When I've tried to remove unused textures, Slade crashed.

WCleaner currently does not compare patch contents, it uses only their names. Nevertheless, the size difference is very little (WCleaner - 2 157 276 bytes, your optimization - 2 133 000).

Share this post


Link to post
cybermind said:

My Slade-3.1.0.2-647-ga9e30e4 found 5 unused patches in WCleanered gredna.wad. When I've tried to remove unused textures, Slade crashed.

Textures should be removed before patches. When I did it the other around (like you did just now), SLADE3 removed 5 patches, then I removed textures and 253 (or so) were removed, then I ran the procedure to remove unused patches again and 297 were removed.

Share this post


Link to post
cybermind said:

When I've tried to remove unused textures, Slade crashed.

Have you set Doom2.wad as the Base Resource? I forgot to do that last night and it appears to be the cause of my crash.

Share this post


Link to post

I have the latest version of Slade, to me it works but it removes also the animated textures/flats (unless the first frame), re-adding the missing frames works for the flats but not for the textures. And when you can select which textures remove it is awkward to do it and to scroll them when there are more than 800 textures.

Share this post


Link to post

I agree that the texture deletion menu should be more user friendly and allow more options than just manually check/uncheck textures. It does its job, which I'm glad for, but when I need to exclude switches every time I delete textures, I need to scroll through the list and delete all 100 of them one by one manually, which takes half a minute of repetitive work, and while I can bear it, I would welcome if I didn't have to do it every time. At least block select + block unselect + automated selection based on regular expressions would be preferable. And preset features like "Animated textures yes/no", "Switches yes/no", "Skies yes/no". Customization according to position of the texture inside TEXTURE1 (and other factors) would also come in handy. That's only from the top of my head.

Share this post


Link to post
scifista42 said:

At least block select + block unselect + automated selection based on regular expressions would be preferable. And preset features like "Animated textures yes/no", "Switches yes/no", "Skies yes/no". Customization according to position of the texture inside TEXTURE1 (and other factors) would also come in handy. That's only from the top of my head.


I think these are good ideas. Anyway in my attempts it actually removed the unused switches and the ones used in my map were working correctly. Also my custom sky was fine.

Share this post


Link to post

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
×