I plan on getting a desktop eventually, just because I need more power.
I think I'm doing pretty well for a laptop with an Intel GMA stuck in it.
Anyway, as I've been explain game design, I thought I'd go through the 'Rooms' system. Here is a diagram of how they work.
http://i1220.photobucket.com/albums/dd451/BrynP/rooms.jpg
Essentially the player object will store 3 lots of variables: oldRoom (the last room it visited), currentRoom (the room he's in now) and position (useful when zoning out to battle). Each room has a series of spawn points, each for entering an exiting. Keats will spawn at the spawn point that matches 'oldRoom'. When a battle starts, oldRoom will be 'null' as Keats won't appear at any spawn point, instead his position is stored and the room he's in. When keats returns from battle his position will be restored in the room. Each spawn point is defined by an array, so it makes it easier to parse through and check spawn points.
A bit that the diagram doesn't show is that each room will have data recorded for it - so items and their positions, enemies, NPCs and so on. These will be inside of a 'Rooms' class. So when an item is removed or an enemy killed in a specific room, this class will know about it and make sure they're not reloaded (could be done with a UDT for DBPers, like I did with the original demo).