DREAMWEB: Don't use Madeuproomdat as a global when not necessary
This commit is contained in:
parent
15856843a4
commit
a64c89e7dd
2 changed files with 25 additions and 14 deletions
|
@ -78,7 +78,7 @@ void DreamGenContext::doLoad() {
|
|||
};
|
||||
checkCoords(loadlist);
|
||||
if (data.byte(kGetback) == 1)
|
||||
break;
|
||||
break; // This signalled that actualLoad loaded a game
|
||||
if (data.byte(kGetback) == 2)
|
||||
return; // "quitloaded"
|
||||
}
|
||||
|
@ -106,6 +106,10 @@ void DreamGenContext::doLoad() {
|
|||
data.byte(kGetback) = 1;
|
||||
}
|
||||
|
||||
// If we reach this point, loadPosition() has just been called.
|
||||
// Note: Among other things, it will have filled kMadeuproomdat.
|
||||
|
||||
|
||||
// kTempgraphics might not have been allocated if we bypassed all menus
|
||||
if (data.word(kTempgraphics) != 0xFFFF)
|
||||
getRidOfTemp();
|
||||
|
@ -307,17 +311,16 @@ void DreamGenContext::actualLoad() {
|
|||
|
||||
void DreamGenContext::savePosition(unsigned int slot, const uint8 *descbuf) {
|
||||
|
||||
const Room *currentRoom = (const Room *)cs.ptr(kRoomdata + sizeof(Room)*data.byte(kLocation), sizeof(Room));
|
||||
Room *madeUpRoom = (Room *)cs.ptr(kMadeuproomdat, sizeof(Room));
|
||||
const Room ¤tRoom = g_roomData[data.byte(kLocation)];
|
||||
|
||||
*madeUpRoom = *currentRoom;
|
||||
madeUpRoom->roomsSample = data.byte(kRoomssample);
|
||||
madeUpRoom->mapX = data.byte(kMapx);
|
||||
madeUpRoom->mapY = data.byte(kMapy);
|
||||
madeUpRoom->liftFlag = data.byte(kLiftflag);
|
||||
madeUpRoom->b21 = data.byte(kManspath);
|
||||
madeUpRoom->facing = data.byte(kFacing);
|
||||
madeUpRoom->b27 = 255;
|
||||
Room madeUpRoom = currentRoom;
|
||||
madeUpRoom.roomsSample = data.byte(kRoomssample);
|
||||
madeUpRoom.mapX = data.byte(kMapx);
|
||||
madeUpRoom.mapY = data.byte(kMapy);
|
||||
madeUpRoom.liftFlag = data.byte(kLiftflag);
|
||||
madeUpRoom.b21 = data.byte(kManspath);
|
||||
madeUpRoom.facing = data.byte(kFacing);
|
||||
madeUpRoom.b27 = 255;
|
||||
|
||||
openForSave(slot);
|
||||
|
||||
|
@ -342,7 +345,11 @@ void DreamGenContext::savePosition(unsigned int slot, const uint8 *descbuf) {
|
|||
engine->writeToSaveFile(data.ptr(kStartvars, len[1]), len[1]);
|
||||
engine->writeToSaveFile(getSegment(data.word(kExtras)).ptr(kExframedata, len[2]), len[2]);
|
||||
engine->writeToSaveFile(getSegment(data.word(kBuffers)).ptr(kListofchanges, len[3]), len[3]);
|
||||
engine->writeToSaveFile(data.ptr(kMadeuproomdat, len[4]), len[4]);
|
||||
|
||||
// len[4] == 48, which is sizeof(Room) plus 16 for 'Roomscango'
|
||||
engine->writeToSaveFile((const uint8 *)&madeUpRoom, sizeof(Room));
|
||||
engine->writeToSaveFile(data.ptr(kRoomscango, 16), 16);
|
||||
|
||||
engine->writeToSaveFile(data.ptr(kReelroutines, len[5]), len[5]);
|
||||
closeFile();
|
||||
}
|
||||
|
@ -374,7 +381,11 @@ void DreamGenContext::loadPosition(unsigned int slot) {
|
|||
engine->readFromSaveFile(data.ptr(kStartvars, len[1]), len[1]);
|
||||
engine->readFromSaveFile(getSegment(data.word(kExtras)).ptr(kExframedata, len[2]), len[2]);
|
||||
engine->readFromSaveFile(getSegment(data.word(kBuffers)).ptr(kListofchanges, len[3]), len[3]);
|
||||
engine->readFromSaveFile(data.ptr(kMadeuproomdat, len[4]), len[4]);
|
||||
|
||||
// len[4] == 48, which is sizeof(Room) plus 16 for 'Roomscango'
|
||||
engine->readFromSaveFile(data.ptr(kMadeuproomdat, sizeof(Room)), sizeof(Room));
|
||||
engine->readFromSaveFile(data.ptr(kRoomscango, 16), 16);
|
||||
|
||||
engine->readFromSaveFile(cs.ptr(kReelroutines, len[5]), len[5]);
|
||||
|
||||
closeFile();
|
||||
|
|
|
@ -208,7 +208,7 @@ struct Room {
|
|||
uint8 b30;
|
||||
uint8 realLocation;
|
||||
};
|
||||
extern const Room g_RoomData[];
|
||||
extern const Room g_roomData[];
|
||||
|
||||
struct Rain {
|
||||
uint8 x;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue