There was no 'real' reason for this other than plain curiosity really.
As I had quite a bit of free space towards the end of the sprite area (I'll explain why in another topic later) I thought about the code to load the room:
The code at 35090 / #8912 effectively reads:
LD A (current room number)
OR 192 / #C0
At this stage, HL is 49152 / #C000 , simply as 49152/256 = 192.
It then sets up an LDIR to copy the room definition to the status buffer
I set mine a bit lower down, I actually set the OR instruction to be 181 / #B5 which means it 'starts' at 46336 / #B500 as that space onwards was actually 'free' and then proceeded to move the room data 'up' (or down, depending on which way you want to count) externally to be sure it was intact from 49152 to 46336. This worked until I left a room ( ! ) as I had an IDS and I noted that the objects were not moved but I half expected that.
I'm not 100% sure why the room ID's changed though as logically unless I've missed it, it is only really looking at that address, I do not see anything in the "move Willy to the room above/left/right/below" that could directly influence the 'room exit ID' as such.
I can't provide a file for this at the current time until I finish something else within a day or two, I just need to do a small writeup of it first.
I wonder if I have overlooked something. I do realise in effect it "locks" those 8 or 9 rooms in this case outside the remit of JSWED however manual editing or using one of the other editors with a few tweaks (as they are usually written in Basic) would no doubt work. I may try this to see if I can force the changes through if nothing else.