mirror of
https://github.com/DrBeef/Raze.git
synced 2025-01-31 21:20:39 +00:00
- SW: code/data pointer saving cleanup.
* a large number of code pointer records were removed because none of these functions ever gets assigned to a pointer * instead of looking up entries by index, do it by name. This is far less fragile and will survive deeper refactoring. The old storage by table index will break as soon as a single entry gets removed. Since the old savegames got broken due to this problem recently it was a good time to change the setup.
This commit is contained in:
parent
f109f6c857
commit
8f19dc12d8
35 changed files with 50 additions and 413 deletions
|
@ -71,12 +71,12 @@ const char *GetVersionString();
|
|||
|
||||
#define MINSAVEVER_DN3D 10
|
||||
#define MINSAVEVER_BLD 11
|
||||
#define MINSAVEVER_SW 12
|
||||
#define MINSAVEVER_SW 13
|
||||
#define MINSAVEVER_PS 15
|
||||
|
||||
#define SAVEVER_DN3D 11
|
||||
#define SAVEVER_BLD 11
|
||||
#define SAVEVER_SW 12
|
||||
#define SAVEVER_SW 13
|
||||
#define SAVEVER_PS 15
|
||||
#define OLD_SAVEGAME 1 // this is to keep writing out the old format in Blood, even when data has been refactored.
|
||||
|
||||
|
|
|
@ -1003,26 +1003,10 @@ DoFall(short SpriteNum)
|
|||
|
||||
static saveable_code saveable_actor_code[] =
|
||||
{
|
||||
SAVE_CODE(DoScaleSprite),
|
||||
SAVE_CODE(DoActorDie),
|
||||
SAVE_CODE(DoDebrisCurrent),
|
||||
SAVE_CODE(DoActorSectorDamage),
|
||||
SAVE_CODE(DoActorDebris),
|
||||
SAVE_CODE(DoFireFly),
|
||||
SAVE_CODE(DoGenerateSewerDebris),
|
||||
SAVE_CODE(KeepActorOnFloor),
|
||||
SAVE_CODE(DoActorBeginSlide),
|
||||
SAVE_CODE(DoActorSlide),
|
||||
SAVE_CODE(DoActorBeginJump),
|
||||
SAVE_CODE(DoActorJump),
|
||||
SAVE_CODE(DoActorBeginFall),
|
||||
SAVE_CODE(DoActorFall),
|
||||
SAVE_CODE(DoActorStopFall),
|
||||
SAVE_CODE(DoActorDeathMove),
|
||||
SAVE_CODE(DoBeginJump),
|
||||
SAVE_CODE(DoJump),
|
||||
SAVE_CODE(DoBeginFall),
|
||||
SAVE_CODE(DoFall)
|
||||
};
|
||||
|
||||
saveable_module saveable_actor =
|
||||
|
|
|
@ -2129,20 +2129,6 @@ DoActorPause(DSWActor* actor)
|
|||
|
||||
static saveable_code saveable_ai_code[] =
|
||||
{
|
||||
SAVE_CODE(DebugMoveHit),
|
||||
SAVE_CODE(ActorMoveHitReact),
|
||||
SAVE_CODE(ActorFlaming),
|
||||
SAVE_CODE(DoActorSetSpeed),
|
||||
SAVE_CODE(ChooseAction),
|
||||
SAVE_CODE(ChooseActionNumber),
|
||||
SAVE_CODE(DoActorNoise),
|
||||
SAVE_CODE(CanSeePlayer),
|
||||
SAVE_CODE(CanHitPlayer),
|
||||
SAVE_CODE(DoActorPickClosePlayer),
|
||||
SAVE_CODE(GetPlayerSpriteNum),
|
||||
SAVE_CODE(CloseRangeDist),
|
||||
SAVE_CODE(DoActorOperate),
|
||||
SAVE_CODE(DoActorActionDecide),
|
||||
SAVE_CODE(InitActorDecide),
|
||||
SAVE_CODE(DoActorDecide),
|
||||
SAVE_CODE(InitActorAlertNoise),
|
||||
|
@ -2157,7 +2143,6 @@ static saveable_code saveable_ai_code[] =
|
|||
SAVE_CODE(InitActorExtra5Noise),
|
||||
SAVE_CODE(InitActorExtra6Noise),
|
||||
SAVE_CODE(InitActorMoveCloser),
|
||||
SAVE_CODE(DoActorCantMoveCloser),
|
||||
SAVE_CODE(DoActorMoveCloser),
|
||||
SAVE_CODE(FindTrackToPlayer),
|
||||
SAVE_CODE(FindTrackAwayFromPlayer),
|
||||
|
@ -2172,10 +2157,8 @@ static saveable_code saveable_ai_code[] =
|
|||
SAVE_CODE(InitActorDuck),
|
||||
SAVE_CODE(DoActorDuck),
|
||||
SAVE_CODE(DoActorMoveJump),
|
||||
SAVE_CODE(FindNewAngle),
|
||||
SAVE_CODE(InitActorReposition),
|
||||
SAVE_CODE(DoActorReposition),
|
||||
SAVE_CODE(InitActorPause),
|
||||
SAVE_CODE(DoActorPause)
|
||||
};
|
||||
|
||||
|
|
|
@ -1549,9 +1549,6 @@ DoBunnyGrowUp(DSWActor* actor)
|
|||
|
||||
static saveable_code saveable_bunny_code[] =
|
||||
{
|
||||
SAVE_CODE(SetupBunny),
|
||||
SAVE_CODE(GetBunnyJumpHeight),
|
||||
SAVE_CODE(PickBunnyJumpSpeed),
|
||||
SAVE_CODE(DoBunnyBeginJumpAttack),
|
||||
SAVE_CODE(DoBunnyMoveJump),
|
||||
SAVE_CODE(DoPickCloseBunny),
|
||||
|
@ -1560,8 +1557,6 @@ static saveable_code saveable_bunny_code[] =
|
|||
SAVE_CODE(DoBunnyPain),
|
||||
SAVE_CODE(DoBunnyRipHeart),
|
||||
SAVE_CODE(DoBunnyStandKill),
|
||||
SAVE_CODE(BunnyHatch),
|
||||
SAVE_CODE(BunnyHatch2),
|
||||
SAVE_CODE(DoBunnyMove),
|
||||
SAVE_CODE(BunnySpew),
|
||||
SAVE_CODE(DoBunnyEat),
|
||||
|
|
|
@ -935,12 +935,8 @@ int DoCoolgPain(DSWActor* actor)
|
|||
|
||||
static saveable_code saveable_coolg_code[] =
|
||||
{
|
||||
SAVE_CODE(CoolgCommon),
|
||||
SAVE_CODE(SetupCoolg),
|
||||
SAVE_CODE(NewCoolg),
|
||||
SAVE_CODE(DoCoolgBirth),
|
||||
SAVE_CODE(NullCoolg),
|
||||
SAVE_CODE(DoCoolgMatchPlayerZ),
|
||||
SAVE_CODE(InitCoolgCircle),
|
||||
SAVE_CODE(DoCoolgCircle),
|
||||
SAVE_CODE(DoCoolgDeath),
|
||||
|
|
|
@ -681,8 +681,6 @@ DoCoolieWaitBirth(DSWActor* actor)
|
|||
|
||||
static saveable_code saveable_coolie_code[] =
|
||||
{
|
||||
SAVE_CODE(EnemyDefaults),
|
||||
SAVE_CODE(SetupCoolie),
|
||||
SAVE_CODE(SpawnCoolg),
|
||||
SAVE_CODE(CooliePain),
|
||||
SAVE_CODE(NullCoolie),
|
||||
|
|
|
@ -602,9 +602,6 @@ int DoEelMove(DSWActor* actor)
|
|||
|
||||
static saveable_code saveable_eel_code[] =
|
||||
{
|
||||
SAVE_CODE(EelCommon),
|
||||
SAVE_CODE(SetupEel),
|
||||
//SAVE_CODE(NewEel),
|
||||
SAVE_CODE(DoEelMatchPlayerZ),
|
||||
SAVE_CODE(DoEelDeath),
|
||||
SAVE_CODE(DoEelMove)
|
||||
|
|
|
@ -868,7 +868,6 @@ int DoGirlNinjaSpecial(DSWActor* actor)
|
|||
|
||||
static saveable_code saveable_girlninj_code[] =
|
||||
{
|
||||
SAVE_CODE(SetupGirlNinja),
|
||||
SAVE_CODE(DoGirlNinjaMove),
|
||||
SAVE_CODE(GirlNinjaJumpActionFunc),
|
||||
SAVE_CODE(NullGirlNinja),
|
||||
|
|
|
@ -564,7 +564,6 @@ int DoGoroMove(DSWActor* actor)
|
|||
|
||||
static saveable_code saveable_goro_code[] =
|
||||
{
|
||||
SAVE_CODE(SetupGoro),
|
||||
SAVE_CODE(NullGoro),
|
||||
SAVE_CODE(DoGoroPain),
|
||||
SAVE_CODE(DoGoroMove),
|
||||
|
|
|
@ -634,7 +634,6 @@ int DoHornetMove(DSWActor* actor)
|
|||
|
||||
static saveable_code saveable_hornet_code[] =
|
||||
{
|
||||
SAVE_CODE(SetupHornet),
|
||||
SAVE_CODE(NullHornet),
|
||||
SAVE_CODE(DoHornetMatchPlayerZ),
|
||||
SAVE_CODE(InitHornetCircle),
|
||||
|
|
|
@ -523,7 +523,6 @@ int DoLavaMove(DSWActor* actor)
|
|||
|
||||
static saveable_code saveable_lava_code[] =
|
||||
{
|
||||
SAVE_CODE(SetupLava),
|
||||
SAVE_CODE(NullLava),
|
||||
SAVE_CODE(DoLavaMove),
|
||||
};
|
||||
|
|
|
@ -2073,51 +2073,39 @@ int PruneGirlPain(DSWActor* actor)
|
|||
|
||||
static saveable_code saveable_miscactr_code[] =
|
||||
{
|
||||
SAVE_CODE(SetupToiletGirl),
|
||||
SAVE_CODE(DoToiletGirl),
|
||||
SAVE_CODE(NullToiletGirl),
|
||||
SAVE_CODE(ToiletGirlUzi),
|
||||
SAVE_CODE(ToiletGirlPain),
|
||||
|
||||
SAVE_CODE(SetupWashGirl),
|
||||
SAVE_CODE(DoWashGirl),
|
||||
SAVE_CODE(NullWashGirl),
|
||||
SAVE_CODE(WashGirlUzi),
|
||||
SAVE_CODE(WashGirlPain),
|
||||
|
||||
SAVE_CODE(SetupTrashCan),
|
||||
SAVE_CODE(DoTrashCan),
|
||||
SAVE_CODE(TrashCanPain),
|
||||
|
||||
SAVE_CODE(SetupPachinkoLight),
|
||||
SAVE_CODE(PachinkoLightOperate),
|
||||
|
||||
SAVE_CODE(SetupPachinko1),
|
||||
SAVE_CODE(SetupPachinko2),
|
||||
SAVE_CODE(SetupPachinko3),
|
||||
SAVE_CODE(SetupPachinko4),
|
||||
SAVE_CODE(PachinkoCheckWin),
|
||||
SAVE_CODE(Pachinko1Operate),
|
||||
|
||||
SAVE_CODE(SetupCarGirl),
|
||||
SAVE_CODE(DoCarGirl),
|
||||
SAVE_CODE(NullCarGirl),
|
||||
SAVE_CODE(CarGirlUzi),
|
||||
SAVE_CODE(CarGirlPain),
|
||||
|
||||
SAVE_CODE(SetupMechanicGirl),
|
||||
SAVE_CODE(DoMechanicGirl),
|
||||
SAVE_CODE(NullMechanicGirl),
|
||||
SAVE_CODE(MechanicGirlDrill),
|
||||
SAVE_CODE(MechanicGirlPain),
|
||||
|
||||
SAVE_CODE(SetupSailorGirl),
|
||||
SAVE_CODE(DoSailorGirl),
|
||||
SAVE_CODE(NullSailorGirl),
|
||||
SAVE_CODE(SailorGirlThrow),
|
||||
SAVE_CODE(SailorGirlPain),
|
||||
|
||||
SAVE_CODE(SetupPruneGirl),
|
||||
SAVE_CODE(DoPruneGirl),
|
||||
SAVE_CODE(NullPruneGirl),
|
||||
SAVE_CODE(PruneGirlUzi),
|
||||
|
|
|
@ -568,15 +568,9 @@ SpikeFloor(SECTOR_OBJECTp sop)
|
|||
|
||||
static saveable_code saveable_morph_code[] =
|
||||
{
|
||||
SAVE_CODE(DoSectorObjectSetScale),
|
||||
SAVE_CODE(DoSOevent),
|
||||
SAVE_CODE(ScaleSectorObject),
|
||||
SAVE_CODE(ScaleRandomPoint),
|
||||
SAVE_CODE(MorphTornado),
|
||||
SAVE_CODE(MorphFloor),
|
||||
SAVE_CODE(SOBJ_AlignFloorToPoint),
|
||||
SAVE_CODE(SOBJ_AlignCeilingToPoint),
|
||||
SAVE_CODE(SOBJ_AlignFloorCeilingToPoint),
|
||||
SAVE_CODE(SpikeFloor),
|
||||
};
|
||||
|
||||
|
|
|
@ -2511,8 +2511,6 @@ SpawnPlayerUnderSprite(PLAYERp pp)
|
|||
|
||||
static saveable_code saveable_ninja_code[] =
|
||||
{
|
||||
SAVE_CODE(SetupNinja),
|
||||
SAVE_CODE(SetupNinja),
|
||||
SAVE_CODE(DoNinjaHariKari),
|
||||
SAVE_CODE(DoNinjaGrabThroat),
|
||||
SAVE_CODE(DoNinjaMove),
|
||||
|
|
|
@ -7532,8 +7532,6 @@ void CheckFootPrints(PLAYERp pp)
|
|||
static saveable_code saveable_player_code[] =
|
||||
{
|
||||
SAVE_CODE(DoPlayerSlide),
|
||||
//SAVE_CODE(DoPlayerBeginSwim),
|
||||
//SAVE_CODE(DoPlayerSwim),
|
||||
SAVE_CODE(DoPlayerWade),
|
||||
SAVE_CODE(DoPlayerBeginWade),
|
||||
SAVE_CODE(DoPlayerBeginCrawl),
|
||||
|
@ -7550,11 +7548,8 @@ static saveable_code saveable_player_code[] =
|
|||
SAVE_CODE(DoPlayerBeginClimb),
|
||||
SAVE_CODE(DoPlayerClimb),
|
||||
SAVE_CODE(DoPlayerBeginDie),
|
||||
//SAVE_CODE(DoPlayerDie),
|
||||
//SAVE_CODE(DoPlayerBeginOperateBoat),
|
||||
SAVE_CODE(DoPlayerBeginOperateVehicle),
|
||||
SAVE_CODE(DoPlayerBeginOperate),
|
||||
//SAVE_CODE(DoPlayerOperateBoat),
|
||||
SAVE_CODE(DoPlayerOperateVehicle),
|
||||
SAVE_CODE(DoPlayerOperateTurret),
|
||||
SAVE_CODE(DoPlayerBeginDive),
|
||||
|
|
|
@ -342,33 +342,4 @@ SetSumoFartQuake(int16_t SpriteNum)
|
|||
}
|
||||
|
||||
|
||||
#include "saveable.h"
|
||||
|
||||
static saveable_code saveable_quake_code[] =
|
||||
{
|
||||
SAVE_CODE(CopyQuakeSpotToOn),
|
||||
SAVE_CODE(DoQuakeMatch),
|
||||
SAVE_CODE(ProcessQuakeOn),
|
||||
SAVE_CODE(ProcessQuakeSpot),
|
||||
SAVE_CODE(QuakeViewChange),
|
||||
SAVE_CODE(SpawnQuake),
|
||||
SAVE_CODE(SetQuake),
|
||||
SAVE_CODE(SetExpQuake),
|
||||
SAVE_CODE(SetGunQuake),
|
||||
SAVE_CODE(SetPlayerQuake),
|
||||
SAVE_CODE(SetNuclearQuake),
|
||||
SAVE_CODE(SetSumoQuake),
|
||||
SAVE_CODE(SetSumoFartQuake),
|
||||
};
|
||||
|
||||
saveable_module saveable_quake =
|
||||
{
|
||||
// code
|
||||
saveable_quake_code,
|
||||
SIZ(saveable_quake_code),
|
||||
|
||||
// data
|
||||
nullptr,0
|
||||
};
|
||||
|
||||
END_SW_NS
|
||||
|
|
|
@ -1333,10 +1333,6 @@ DoRipperMove(DSWActor* actor)
|
|||
|
||||
static saveable_code saveable_ripper_code[] =
|
||||
{
|
||||
SAVE_CODE(SetupRipper),
|
||||
SAVE_CODE(GetJumpHeight),
|
||||
SAVE_CODE(PickJumpSpeed),
|
||||
SAVE_CODE(PickJumpMaxSpeed),
|
||||
|
||||
SAVE_CODE(InitRipperHang),
|
||||
SAVE_CODE(DoRipperHang),
|
||||
|
@ -1351,7 +1347,6 @@ static saveable_code saveable_ripper_code[] =
|
|||
SAVE_CODE(DoRipperPain),
|
||||
SAVE_CODE(DoRipperRipHeart),
|
||||
SAVE_CODE(DoRipperStandHeart),
|
||||
SAVE_CODE(RipperHatch),
|
||||
SAVE_CODE(DoRipperMove),
|
||||
};
|
||||
|
||||
|
|
|
@ -1377,8 +1377,6 @@ int ChestRipper2(DSWActor* actor)
|
|||
|
||||
static saveable_code saveable_ripper2_code[] =
|
||||
{
|
||||
SAVE_CODE(SetupRipper2),
|
||||
|
||||
SAVE_CODE(InitRipper2Hang),
|
||||
SAVE_CODE(DoRipper2Hang),
|
||||
SAVE_CODE(DoRipper2MoveHang),
|
||||
|
|
|
@ -448,16 +448,6 @@ int DoRotator(DSWActor* actor)
|
|||
|
||||
static saveable_code saveable_rotator_code[] =
|
||||
{
|
||||
SAVE_CODE(ReverseRotator),
|
||||
SAVE_CODE(RotatorSwitch),
|
||||
SAVE_CODE(SetRotatorActive),
|
||||
SAVE_CODE(SetRotatorInactive),
|
||||
SAVE_CODE(DoRotatorOperate),
|
||||
SAVE_CODE(DoRotatorMatch),
|
||||
SAVE_CODE(TestRotatorMatchActive),
|
||||
SAVE_CODE(DoRotatorSetInterp),
|
||||
SAVE_CODE(DoRotatorStopInterp),
|
||||
SAVE_CODE(DoRotatorMove),
|
||||
SAVE_CODE(DoRotator)
|
||||
};
|
||||
|
||||
|
|
|
@ -96,19 +96,8 @@ extern STATE s_NotRestored[];
|
|||
|
||||
FSerializer& Serialize(FSerializer& arc, const char* keyname, savedcodesym& w, savedcodesym* def)
|
||||
{
|
||||
static savedcodesym nul;
|
||||
if (!def)
|
||||
{
|
||||
def = &nul;
|
||||
if (arc.isReading()) w = {};
|
||||
}
|
||||
|
||||
if (arc.BeginObject(keyname))
|
||||
{
|
||||
arc("module", w.module, def->module)
|
||||
("index", w.index, def->index)
|
||||
.EndObject();
|
||||
}
|
||||
if (arc.isWriting() && w.name.IsEmpty()) return arc;
|
||||
arc(keyname, w.name);
|
||||
return arc;
|
||||
}
|
||||
|
||||
|
@ -120,18 +109,11 @@ FSerializer& Serialize(FSerializer& arc, const char* keyname, savedcodesym& w, s
|
|||
|
||||
FSerializer& Serialize(FSerializer& arc, const char* keyname, saveddatasym& w, saveddatasym* def)
|
||||
{
|
||||
static saveddatasym nul;
|
||||
if (!def)
|
||||
if (arc.isWriting() && w.name.IsEmpty()) return arc;
|
||||
if (arc.BeginObject(keyname))
|
||||
{
|
||||
def = &nul;
|
||||
if (arc.isReading()) w = {};
|
||||
}
|
||||
|
||||
if (arc.BeginObject(keyname))
|
||||
{
|
||||
arc("module", w.module, def->module)
|
||||
("index", w.index, def->index)
|
||||
("offset", w.offset, def->offset)
|
||||
arc("name", w.name)
|
||||
("offset", w.offset)
|
||||
.EndObject();
|
||||
}
|
||||
return arc;
|
||||
|
|
|
@ -58,7 +58,6 @@ void Saveable_Init(void)
|
|||
MODULE(ninja)
|
||||
MODULE(panel)
|
||||
MODULE(player)
|
||||
MODULE(quake)
|
||||
MODULE(ripper)
|
||||
MODULE(ripper2)
|
||||
MODULE(rotator)
|
||||
|
@ -85,8 +84,7 @@ int Saveable_FindCodeSym(void *ptr, savedcodesym *sym)
|
|||
|
||||
if (!ptr)
|
||||
{
|
||||
sym->module = 0; // module 0 is the "null module" for null pointers
|
||||
sym->index = 0;
|
||||
sym->name = "";
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -94,11 +92,9 @@ int Saveable_FindCodeSym(void *ptr, savedcodesym *sym)
|
|||
{
|
||||
for (i=0; i<saveablemodules[m]->numcode; i++)
|
||||
{
|
||||
if (ptr != saveablemodules[m]->code[i]) continue;
|
||||
|
||||
sym->module = 1+m;
|
||||
sym->index = i;
|
||||
if (ptr != saveablemodules[m]->code[i].base) continue;
|
||||
|
||||
sym->name = saveablemodules[m]->code[i].name;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
@ -113,8 +109,7 @@ int Saveable_FindDataSym(void *ptr, saveddatasym *sym)
|
|||
|
||||
if (!ptr)
|
||||
{
|
||||
sym->module = 0;
|
||||
sym->index = 0;
|
||||
sym->name = "";
|
||||
sym->offset = 0;
|
||||
return 0;
|
||||
}
|
||||
|
@ -127,8 +122,7 @@ int Saveable_FindDataSym(void *ptr, saveddatasym *sym)
|
|||
if (ptr >= (void *)((intptr_t)saveablemodules[m]->data[i].base +
|
||||
saveablemodules[m]->data[i].size)) continue;
|
||||
|
||||
sym->module = 1+m;
|
||||
sym->index = i;
|
||||
sym->name = saveablemodules[m]->data[i].name;
|
||||
sym->offset = unsigned((intptr_t)ptr - (intptr_t)saveablemodules[m]->data[i].base);
|
||||
|
||||
return 0;
|
||||
|
@ -141,54 +135,48 @@ int Saveable_FindDataSym(void *ptr, saveddatasym *sym)
|
|||
|
||||
int Saveable_RestoreCodeSym(savedcodesym *sym, void **ptr)
|
||||
{
|
||||
if (sym->module == 0)
|
||||
if (sym->name.IsEmpty())
|
||||
{
|
||||
*ptr = nullptr;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (sym->module > saveablemodules.Size())
|
||||
for (auto module : saveablemodules)
|
||||
{
|
||||
debug_break();
|
||||
return -1;
|
||||
for (unsigned i = 0; i < module->numcode; i++)
|
||||
{
|
||||
if (sym->name.Compare(module->code[i].name) == 0)
|
||||
{
|
||||
*ptr = module->code[i].base;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (sym->index >= saveablemodules[sym->module-1]->numcode)
|
||||
{
|
||||
debug_break();
|
||||
return -1;
|
||||
}
|
||||
|
||||
*ptr = saveablemodules[sym->module-1]->code[sym->index];
|
||||
|
||||
return 0;
|
||||
I_Error("Unknown code reference '%s' in savegame\n", sym->name.GetChars());
|
||||
return -1;
|
||||
}
|
||||
|
||||
int Saveable_RestoreDataSym(saveddatasym *sym, void **ptr)
|
||||
{
|
||||
if (sym->module == 0)
|
||||
if (sym->name.IsEmpty())
|
||||
{
|
||||
*ptr = nullptr;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (sym->module > saveablemodules.Size())
|
||||
for (auto module : saveablemodules)
|
||||
{
|
||||
debug_break();
|
||||
return -1;
|
||||
for (unsigned i = 0; i < module->numdata; i++)
|
||||
{
|
||||
if (sym->name.Compare(module->data[i].name) == 0)
|
||||
{
|
||||
*ptr = ((uint8_t*)module->data[i].base) + sym->offset;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (sym->index >= saveablemodules[sym->module-1]->numdata)
|
||||
{
|
||||
debug_break();
|
||||
return -1;
|
||||
}
|
||||
if (sym->offset >= saveablemodules[sym->module-1]->data[sym->index].size)
|
||||
{
|
||||
debug_break();
|
||||
return -1;
|
||||
}
|
||||
|
||||
*ptr = (void *)((intptr_t)saveablemodules[sym->module-1]->data[sym->index].base + sym->offset);
|
||||
|
||||
return 0;
|
||||
I_Error("Unknown data reference '%s' in savegame\n", sym->name.GetChars());
|
||||
return -1;
|
||||
}
|
||||
|
||||
END_SW_NS
|
||||
|
|
|
@ -26,13 +26,18 @@
|
|||
|
||||
#include "compat.h"
|
||||
|
||||
typedef void *saveable_code;
|
||||
struct saveable_code
|
||||
{
|
||||
void* base;
|
||||
const char* name;
|
||||
};
|
||||
|
||||
typedef struct
|
||||
struct saveable_data
|
||||
{
|
||||
void *base;
|
||||
const char* name;
|
||||
unsigned int size;
|
||||
} saveable_data;
|
||||
};
|
||||
|
||||
typedef struct
|
||||
{
|
||||
|
@ -49,21 +54,19 @@ constexpr std::enable_if_t<!std::is_pointer<T>::value, size_t> SAVE_SIZEOF(T con
|
|||
return sizeof(obj);
|
||||
}
|
||||
|
||||
#define SAVE_CODE(s) (void*)(s)
|
||||
#define SAVE_DATA(s) { (void*)&(s), (int)SAVE_SIZEOF(s) }
|
||||
#define SAVE_CODE(s) { (void*)(s), #s }
|
||||
#define SAVE_DATA(s) { (void*)&(s), #s, (int)SAVE_SIZEOF(s) }
|
||||
|
||||
#define NUM_SAVEABLE_ITEMS(x) countof(x)
|
||||
|
||||
typedef struct
|
||||
{
|
||||
unsigned int module;
|
||||
unsigned int index;
|
||||
FString name;
|
||||
} savedcodesym;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
unsigned int module;
|
||||
unsigned int index;
|
||||
FString name;
|
||||
unsigned int offset;
|
||||
} saveddatasym;
|
||||
|
||||
|
|
|
@ -3334,49 +3334,7 @@ int inside(int x, int y, short sectnum)
|
|||
|
||||
static saveable_code saveable_sector_code[] =
|
||||
{
|
||||
SAVE_CODE(WallSetupDontMove),
|
||||
SAVE_CODE(WallSetup),
|
||||
SAVE_CODE(SectorLiquidSet),
|
||||
SAVE_CODE(SectorSetup),
|
||||
SAVE_CODE(DoSpringBoard),
|
||||
SAVE_CODE(DoSpringBoardDown),
|
||||
SAVE_CODE(DoSpawnActorTrigger),
|
||||
SAVE_CODE(OperateSector),
|
||||
SAVE_CODE(OperateWall),
|
||||
SAVE_CODE(AnimateSwitch),
|
||||
SAVE_CODE(SectorExp),
|
||||
SAVE_CODE(DoExplodeSector),
|
||||
SAVE_CODE(DoSpawnSpot),
|
||||
SAVE_CODE(DoSpawnSpotsForKill),
|
||||
SAVE_CODE(DoSpawnSpotsForDamage),
|
||||
SAVE_CODE(DoSoundSpotMatch),
|
||||
SAVE_CODE(DoSoundSpotStopSound),
|
||||
SAVE_CODE(DoStopSoundSpotMatch),
|
||||
SAVE_CODE(DoSectorObjectKillMatch),
|
||||
SAVE_CODE(DoDeleteSpriteMatch),
|
||||
SAVE_CODE(DoChangorMatch),
|
||||
SAVE_CODE(DoMatchEverything),
|
||||
SAVE_CODE(DoTrapReset),
|
||||
SAVE_CODE(DoTrapMatch),
|
||||
SAVE_CODE(OperateTripTrigger),
|
||||
SAVE_CODE(OperateContinuousTrigger),
|
||||
SAVE_CODE(PlayerTakeSectorDamage),
|
||||
SAVE_CODE(NearThings),
|
||||
SAVE_CODE(NearTagList),
|
||||
SAVE_CODE(BuildNearTagList),
|
||||
SAVE_CODE(DoPlayerGrabStar),
|
||||
SAVE_CODE(PlayerOperateEnv),
|
||||
SAVE_CODE(DoSineWaveFloor),
|
||||
SAVE_CODE(DoSineWaveWall),
|
||||
SAVE_CODE(DoAnim),
|
||||
SAVE_CODE(AnimClear),
|
||||
SAVE_CODE(AnimGetGoal),
|
||||
SAVE_CODE(AnimDelete),
|
||||
SAVE_CODE(AnimSet),
|
||||
SAVE_CODE(AnimSetCallback),
|
||||
SAVE_CODE(AnimSetVelAdj),
|
||||
SAVE_CODE(DoPanning),
|
||||
SAVE_CODE(DoSector),
|
||||
};
|
||||
|
||||
saveable_module saveable_sector =
|
||||
|
|
|
@ -833,7 +833,6 @@ int DoDeathSpecial(DSWActor* actor)
|
|||
|
||||
static saveable_code saveable_serp_code[] =
|
||||
{
|
||||
SAVE_CODE(SetupSerp),
|
||||
SAVE_CODE(NullSerp),
|
||||
SAVE_CODE(DoSerpMove),
|
||||
SAVE_CODE(DoDeathSpecial),
|
||||
|
|
|
@ -643,7 +643,6 @@ int DoSkelMove(DSWActor* actor)
|
|||
|
||||
static saveable_code saveable_skel_code[] =
|
||||
{
|
||||
SAVE_CODE(SetupSkel),
|
||||
SAVE_CODE(DoSkelInitTeleport),
|
||||
SAVE_CODE(DoSkelTeleport),
|
||||
SAVE_CODE(DoSkelTermTeleport),
|
||||
|
|
|
@ -930,7 +930,6 @@ int DoBettyWait(DSWActor* actor)
|
|||
|
||||
static saveable_code saveable_skull_code[] =
|
||||
{
|
||||
SAVE_CODE(SetupSkull),
|
||||
SAVE_CODE(DoSkullMove),
|
||||
SAVE_CODE(DoSkullBeginDeath),
|
||||
SAVE_CODE(DoSkullJump),
|
||||
|
@ -938,7 +937,6 @@ static saveable_code saveable_skull_code[] =
|
|||
SAVE_CODE(DoSkullSpawnShrap),
|
||||
SAVE_CODE(DoSkullWait),
|
||||
|
||||
SAVE_CODE(SetupBetty),
|
||||
SAVE_CODE(DoBettyMove),
|
||||
SAVE_CODE(DoBettyBeginDeath),
|
||||
SAVE_CODE(DoBettyJump),
|
||||
|
|
|
@ -696,17 +696,6 @@ int DoSlidor(DSWActor* actor)
|
|||
|
||||
static saveable_code saveable_slidor_code[] =
|
||||
{
|
||||
SAVE_CODE(ReverseSlidor),
|
||||
SAVE_CODE(SlidorSwitch),
|
||||
SAVE_CODE(SetSlidorActive),
|
||||
SAVE_CODE(SetSlidorInactive),
|
||||
SAVE_CODE(DoSlidorOperate),
|
||||
SAVE_CODE(DoSlidorMatch),
|
||||
SAVE_CODE(TestSlidorMatchActive),
|
||||
SAVE_CODE(DoSlidorInterp),
|
||||
SAVE_CODE(DoSlidorMoveWalls),
|
||||
SAVE_CODE(DoSlidorInstantClose),
|
||||
SAVE_CODE(DoSlidorMove),
|
||||
SAVE_CODE(DoSlidor),
|
||||
};
|
||||
|
||||
|
|
|
@ -493,16 +493,6 @@ int DoSpikeAuto(DSWActor* actor)
|
|||
|
||||
static saveable_code saveable_spike_code[] =
|
||||
{
|
||||
SAVE_CODE(ReverseSpike),
|
||||
SAVE_CODE(SpikeSwitch),
|
||||
SAVE_CODE(SetSpikeActive),
|
||||
SAVE_CODE(SetSpikeInactive),
|
||||
SAVE_CODE(DoSpikeOperate),
|
||||
SAVE_CODE(DoSpikeMatch),
|
||||
SAVE_CODE(TestSpikeMatchActive),
|
||||
SAVE_CODE(DoSpikeMove),
|
||||
SAVE_CODE(SpikeAlign),
|
||||
SAVE_CODE(MoveSpritesWithSpike),
|
||||
SAVE_CODE(DoSpike),
|
||||
SAVE_CODE(DoSpikeAuto),
|
||||
};
|
||||
|
|
|
@ -7400,24 +7400,10 @@ move_ground_missile(short spritenum, int xchange, int ychange, int ceildist, int
|
|||
|
||||
static saveable_code saveable_sprite_code[] =
|
||||
{
|
||||
SAVE_CODE(DoActorZrange),
|
||||
SAVE_CODE(DoActorGlobZ),
|
||||
SAVE_CODE(DoStayOnFloor),
|
||||
SAVE_CODE(DoGrating),
|
||||
SAVE_CODE(move_ground_missile), // dead entries, kept for savegame compatibility.
|
||||
SAVE_CODE(move_ground_missile),
|
||||
SAVE_CODE(DoKey),
|
||||
SAVE_CODE(DoCoin),
|
||||
SAVE_CODE(KillGet),
|
||||
SAVE_CODE(KillGetAmmo),
|
||||
SAVE_CODE(KillGetWeapon),
|
||||
SAVE_CODE(DoSpawnItemTeleporterEffect),
|
||||
SAVE_CODE(DoGet),
|
||||
SAVE_CODE(SetEnemyActive),
|
||||
SAVE_CODE(SetEnemyInactive),
|
||||
SAVE_CODE(ProcessActiveVars),
|
||||
SAVE_CODE(StateControl),
|
||||
SAVE_CODE(SpriteControl),
|
||||
};
|
||||
|
||||
static saveable_data saveable_sprite_data[] =
|
||||
|
|
|
@ -972,10 +972,8 @@ BossHealthMeter(void)
|
|||
|
||||
static saveable_code saveable_sumo_code[] =
|
||||
{
|
||||
SAVE_CODE(SetupSumo),
|
||||
SAVE_CODE(NullSumo),
|
||||
SAVE_CODE(DoSumoMove),
|
||||
//SAVE_CODE(InitSumoCharge),
|
||||
SAVE_CODE(DoSumoRumble),
|
||||
SAVE_CODE(InitSumoFart),
|
||||
SAVE_CODE(InitSumoStomp),
|
||||
|
|
|
@ -3799,11 +3799,8 @@ ActorFollowTrack(short SpriteNum, short locktics)
|
|||
|
||||
static saveable_code saveable_track_code[] =
|
||||
{
|
||||
SAVE_CODE(DoTrack),
|
||||
SAVE_CODE(DoTornadoObject),
|
||||
SAVE_CODE(DoAutoTurretObject),
|
||||
SAVE_CODE(DoActorHitTrackEndPoint),
|
||||
SAVE_CODE(CallbackSOsink),
|
||||
};
|
||||
|
||||
saveable_module saveable_track =
|
||||
|
|
|
@ -682,16 +682,6 @@ int DoVatorAuto(DSWActor* actor)
|
|||
|
||||
static saveable_code saveable_vator_code[] =
|
||||
{
|
||||
SAVE_CODE(ReverseVator),
|
||||
SAVE_CODE(VatorSwitch),
|
||||
SAVE_CODE(SetVatorActive),
|
||||
SAVE_CODE(SetVatorInactive),
|
||||
SAVE_CODE(DoVatorOperate),
|
||||
SAVE_CODE(DoVatorMatch),
|
||||
SAVE_CODE(TestVatorMatchActive),
|
||||
SAVE_CODE(InterpSectorSprites),
|
||||
SAVE_CODE(MoveSpritesWithSector),
|
||||
SAVE_CODE(DoVatorMove),
|
||||
SAVE_CODE(DoVator),
|
||||
SAVE_CODE(DoVatorAuto),
|
||||
};
|
||||
|
|
|
@ -21362,67 +21362,32 @@ int QueueLoWangs(short SpriteNum)
|
|||
|
||||
static saveable_code saveable_weapon_code[] =
|
||||
{
|
||||
SAVE_CODE(MissileHitMatch),
|
||||
SAVE_CODE(SpawnShrapX),
|
||||
SAVE_CODE(DoLavaErupt),
|
||||
SAVE_CODE(QueueLoWangs), // dead entry, for savegame compatibility.
|
||||
SAVE_CODE(SpawnShrap),
|
||||
SAVE_CODE(DoShrapMove),
|
||||
SAVE_CODE(DoVomit),
|
||||
SAVE_CODE(DoVomit),
|
||||
SAVE_CODE(DoVomitSplash),
|
||||
SAVE_CODE(DoFastShrapJumpFall),
|
||||
SAVE_CODE(DoTracerShrap),
|
||||
SAVE_CODE(DoShrapJumpFall),
|
||||
SAVE_CODE(DoShrapDamage),
|
||||
SAVE_CODE(SpawnBlood),
|
||||
SAVE_CODE(VehicleMoveHit),
|
||||
SAVE_CODE(WeaponMoveHit),
|
||||
SAVE_CODE(DoUziSmoke),
|
||||
SAVE_CODE(DoShotgunSmoke),
|
||||
SAVE_CODE(DoMineSpark),
|
||||
SAVE_CODE(DoFireballFlames),
|
||||
SAVE_CODE(DoBreakFlames),
|
||||
SAVE_CODE(SetSuicide),
|
||||
SAVE_CODE(DoActorScale),
|
||||
SAVE_CODE(DoRipperGrow),
|
||||
SAVE_CODE(ActorChooseDeath),
|
||||
SAVE_CODE(ActorHealth),
|
||||
SAVE_CODE(SopDamage),
|
||||
SAVE_CODE(SopCheckKill),
|
||||
SAVE_CODE(ActorPain),
|
||||
SAVE_CODE(ActorPainPlasma),
|
||||
SAVE_CODE(ActorStdMissile),
|
||||
SAVE_CODE(ActorDamageSlide),
|
||||
SAVE_CODE(PlayerDamageSlide),
|
||||
SAVE_CODE(GetDamage),
|
||||
SAVE_CODE(RadiusGetDamage),
|
||||
SAVE_CODE(PlayerCheckDeath),
|
||||
SAVE_CODE(PlayerTakeDamage),
|
||||
SAVE_CODE(StarBlood),
|
||||
SAVE_CODE(DoDamage),
|
||||
SAVE_CODE(DoDamageTest),
|
||||
SAVE_CODE(DoHitscanDamage),
|
||||
SAVE_CODE(DoFlamesDamageTest),
|
||||
SAVE_CODE(DoStar),
|
||||
SAVE_CODE(DoCrossBolt),
|
||||
SAVE_CODE(DoPlasmaDone),
|
||||
SAVE_CODE(MissileSeek),
|
||||
SAVE_CODE(ComboMissileSeek),
|
||||
SAVE_CODE(VectorMissileSeek),
|
||||
SAVE_CODE(VectorWormSeek),
|
||||
SAVE_CODE(DoBlurExtend),
|
||||
SAVE_CODE(InitPlasmaFountain),
|
||||
SAVE_CODE(DoPlasmaFountain),
|
||||
SAVE_CODE(DoPlasma),
|
||||
SAVE_CODE(DoCoolgFire),
|
||||
SAVE_CODE(DoEelFire),
|
||||
SAVE_CODE(DoGrenade),
|
||||
SAVE_CODE(DoVulcanBoulder),
|
||||
SAVE_CODE(OwnerIsPlayer),
|
||||
SAVE_CODE(DoMineRangeTest),
|
||||
SAVE_CODE(DoMineStuck),
|
||||
SAVE_CODE(SetMineStuck),
|
||||
SAVE_CODE(DoMine),
|
||||
SAVE_CODE(DoPuff),
|
||||
SAVE_CODE(DoRailPuff),
|
||||
|
@ -21447,26 +21412,9 @@ static saveable_code saveable_weapon_code[] =
|
|||
SAVE_CODE(DoElectro),
|
||||
SAVE_CODE(DoLavaBoulder),
|
||||
SAVE_CODE(DoSpear),
|
||||
SAVE_CODE(SpawnBasicExp),
|
||||
SAVE_CODE(SpawnFireballFlames),
|
||||
SAVE_CODE(SpawnBreakFlames),
|
||||
SAVE_CODE(SpawnBreakStaticFlames),
|
||||
SAVE_CODE(SpawnFireballExp),
|
||||
SAVE_CODE(SpawnGoroFireballExp),
|
||||
SAVE_CODE(SpawnBoltExp),
|
||||
SAVE_CODE(SpawnBunnyExp),
|
||||
SAVE_CODE(SpawnTankShellExp),
|
||||
SAVE_CODE(SpawnNuclearSecondaryExp),
|
||||
SAVE_CODE(SpawnNuclearExp),
|
||||
SAVE_CODE(SpawnTracerExp),
|
||||
SAVE_CODE(SpawnMicroExp),
|
||||
SAVE_CODE(AddSpriteToSectorObject),
|
||||
SAVE_CODE(SpawnBigGunFlames),
|
||||
SAVE_CODE(SpawnGrenadeSecondaryExp),
|
||||
SAVE_CODE(SpawnGrenadeSmallExp),
|
||||
SAVE_CODE(SpawnGrenadeExp),
|
||||
SAVE_CODE(SpawnMineExp),
|
||||
SAVE_CODE(QueueLoWangs), // dead entry, for savegame compatibility.
|
||||
SAVE_CODE(DoSectorExp),
|
||||
SAVE_CODE(SpawnSectorExp),
|
||||
SAVE_CODE(SpawnLargeExp),
|
||||
|
@ -21477,22 +21425,17 @@ static saveable_code saveable_weapon_code[] =
|
|||
SAVE_CODE(DoFindGroundPoint),
|
||||
SAVE_CODE(DoNapalm),
|
||||
SAVE_CODE(DoBloodWorm),
|
||||
SAVE_CODE(DoBloodWorm),
|
||||
SAVE_CODE(DoMeteor),
|
||||
SAVE_CODE(DoSerpMeteor),
|
||||
SAVE_CODE(DoMirvMissile),
|
||||
SAVE_CODE(DoMirv),
|
||||
SAVE_CODE(MissileSetPos),
|
||||
SAVE_CODE(TestMissileSetPos),
|
||||
SAVE_CODE(DoRing),
|
||||
SAVE_CODE(InitSpellRing),
|
||||
SAVE_CODE(DoSerpRing),
|
||||
SAVE_CODE(InitLavaFlame),
|
||||
SAVE_CODE(InitLavaThrow),
|
||||
SAVE_CODE(InitVulcanBoulder),
|
||||
SAVE_CODE(InitSerpRing),
|
||||
SAVE_CODE(InitSerpRing),
|
||||
//SAVE_CODE(InitSerpRing2),
|
||||
SAVE_CODE(InitSpellNapalm),
|
||||
SAVE_CODE(InitEnemyNapalm),
|
||||
SAVE_CODE(InitSpellMirv),
|
||||
|
@ -21503,35 +21446,16 @@ static saveable_code saveable_weapon_code[] =
|
|||
SAVE_CODE(InitSumoSkull),
|
||||
SAVE_CODE(InitSumoStompAttack),
|
||||
SAVE_CODE(InitMiniSumoClap),
|
||||
SAVE_CODE(WeaponAutoAim),
|
||||
SAVE_CODE(WeaponAutoAimZvel),
|
||||
SAVE_CODE(AimHitscanToTarget),
|
||||
SAVE_CODE(WeaponAutoAimHitscan),
|
||||
SAVE_CODE(WeaponHitscanShootFeet),
|
||||
SAVE_CODE(InitStar),
|
||||
SAVE_CODE(InitHeartAttack),
|
||||
SAVE_CODE(InitHeartAttack),
|
||||
SAVE_CODE(InitShotgun),
|
||||
SAVE_CODE(InitLaser),
|
||||
SAVE_CODE(InitRail),
|
||||
SAVE_CODE(InitZillaRail),
|
||||
SAVE_CODE(InitRocket),
|
||||
SAVE_CODE(InitBunnyRocket),
|
||||
SAVE_CODE(InitNuke),
|
||||
SAVE_CODE(InitEnemyNuke),
|
||||
SAVE_CODE(InitMicro),
|
||||
SAVE_CODE(InitRipperSlash),
|
||||
SAVE_CODE(InitBunnySlash),
|
||||
SAVE_CODE(InitSerpSlash),
|
||||
SAVE_CODE(WallSpriteInsideSprite),
|
||||
SAVE_CODE(DoBladeDamage),
|
||||
SAVE_CODE(DoStaticFlamesDamage),
|
||||
SAVE_CODE(InitCoolgBash),
|
||||
SAVE_CODE(InitSkelSlash),
|
||||
SAVE_CODE(InitGoroChop),
|
||||
SAVE_CODE(InitHornetSting),
|
||||
SAVE_CODE(InitSerpSpell),
|
||||
SAVE_CODE(SpawnDemonFist),
|
||||
SAVE_CODE(InitSerpMonstSpell),
|
||||
SAVE_CODE(DoTeleRipper),
|
||||
SAVE_CODE(InitEnemyRocket),
|
||||
|
@ -21550,55 +21474,17 @@ static saveable_code saveable_weapon_code[] =
|
|||
SAVE_CODE(InitSpearTrap),
|
||||
SAVE_CODE(DoSuicide),
|
||||
SAVE_CODE(DoDefaultStat),
|
||||
SAVE_CODE(InitTracerUzi),
|
||||
SAVE_CODE(InitTracerTurret),
|
||||
SAVE_CODE(InitTracerAutoTurret),
|
||||
SAVE_CODE(BulletHitSprite),
|
||||
SAVE_CODE(HitscanSpriteAdjust),
|
||||
SAVE_CODE(InitUzi),
|
||||
SAVE_CODE(InitEMP),
|
||||
SAVE_CODE(InitTankShell),
|
||||
SAVE_CODE(InitTurretMicro),
|
||||
SAVE_CODE(InitTurretRocket),
|
||||
SAVE_CODE(InitTurretFireball),
|
||||
SAVE_CODE(InitTurretRail),
|
||||
SAVE_CODE(InitTurretLaser),
|
||||
SAVE_CODE(InitSobjMachineGun),
|
||||
SAVE_CODE(InitSobjGun),
|
||||
SAVE_CODE(SpawnBoatSparks),
|
||||
SAVE_CODE(SpawnSwordSparks),
|
||||
SAVE_CODE(SpawnTurretSparks),
|
||||
SAVE_CODE(SpawnShotgunSparks),
|
||||
SAVE_CODE(InitTurretMgun),
|
||||
SAVE_CODE(InitEnemyUzi),
|
||||
SAVE_CODE(InitGrenade),
|
||||
SAVE_CODE(InitSpriteGrenade),
|
||||
SAVE_CODE(InitMine),
|
||||
SAVE_CODE(InitEnemyMine),
|
||||
SAVE_CODE(HelpMissileLateral),
|
||||
SAVE_CODE(InitFireball),
|
||||
SAVE_CODE(InitEnemyFireball),
|
||||
SAVE_CODE(WarpToUnderwater),
|
||||
SAVE_CODE(WarpToSurface),
|
||||
SAVE_CODE(SpriteWarpToUnderwater),
|
||||
SAVE_CODE(SpriteWarpToSurface),
|
||||
SAVE_CODE(SpawnSplash),
|
||||
SAVE_CODE(SpawnSplashXY),
|
||||
SAVE_CODE(SpawnUnderSplash),
|
||||
SAVE_CODE(MissileHitDiveArea),
|
||||
SAVE_CODE(SpawnBubble),
|
||||
SAVE_CODE(DoVehicleSmoke),
|
||||
SAVE_CODE(DoWaterSmoke),
|
||||
SAVE_CODE(SpawnVehicleSmoke),
|
||||
SAVE_CODE(SpawnSmokePuff),
|
||||
SAVE_CODE(DoBubble),
|
||||
SAVE_CODE(SpriteQueueDelete),
|
||||
SAVE_CODE(DoFloorBlood),
|
||||
SAVE_CODE(DoWallBlood),
|
||||
//SAVE_CODE(DoShellShrap),
|
||||
SAVE_CODE(SpawnShell),
|
||||
SAVE_CODE(DoShrapVelocity),
|
||||
SAVE_CODE(ShrapKillSprite),
|
||||
SAVE_CODE(DoItemFly),
|
||||
};
|
||||
|
||||
|
|
|
@ -800,7 +800,6 @@ int DoZillaDeathMelt(DSWActor* actor)
|
|||
|
||||
static saveable_code saveable_zilla_code[] =
|
||||
{
|
||||
SAVE_CODE(SetupZilla),
|
||||
SAVE_CODE(NullZilla),
|
||||
SAVE_CODE(DoZillaMove),
|
||||
SAVE_CODE(DoZillaStomp),
|
||||
|
|
|
@ -981,9 +981,6 @@ int DoZombiePain(DSWActor* actor)
|
|||
|
||||
static saveable_code saveable_zombie_code[] =
|
||||
{
|
||||
SAVE_CODE(SetupZombie),
|
||||
SAVE_CODE(SpawnZombie),
|
||||
SAVE_CODE(SpawnZombie2),
|
||||
SAVE_CODE(DoZombieMove),
|
||||
SAVE_CODE(NullZombie),
|
||||
SAVE_CODE(DoZombiePain),
|
||||
|
|
Loading…
Reference in a new issue