Locking the ZBuffer would cause problems! If you did that, then any 3D characters you rendered in 3D (i.e. your player, zombies etc.) would have no z-information and so couldn't be in front or behind eachother.
What you need is a set of copy commands for the ZBuffer.
buf = StoreZBuffer(x,y,w,h)
DrawZBuffer buf,x,y
Then the process would be
1) Render Hi Poly room in 3D
2) StoreZBuffer
3) DrawZBuffer (Really Quick)
4) Blit 2D Room Image (Really Quick)
5) Render3D Characters with Room as Alpha 0 (Still pretty quick!)
Repeat steps 3 to 5 at a Really rapid pace!
What you need is a set of copy commands for the ZBuffer.
buf = StoreZBuffer(x,y,w,h)
DrawZBuffer buf,x,y
Then the process would be
1) Render Hi Poly room in 3D
2) StoreZBuffer
3) DrawZBuffer (Really Quick)
4) Blit 2D Room Image (Really Quick)
5) Render3D Characters with Room as Alpha 0 (Still pretty quick!)
Repeat steps 3 to 5 at a Really rapid pace!