Hello, and thx for the nice comment !
Here is my procedural logic, step by step :
1) fill space with solid sprites (16x16)
2) generate squares (dozen) of different areas randomly placed
3) remove solid sprites in contact with squares to generate "rooms"
4) the rooms are large enough to overlap and create gaps between them (solide obstacles)
5) add graphics (solids = walls / empty = floor)
6) profit
Have a nice play !