Index: exec.c ================================================================== --- exec.c +++ exec.c @@ -37,10 +37,11 @@ char**levelstrings; Uint16 nlevelstrings; Value*array_data; Uint16 ndeadanim; DeadAnimation*deadanim; +Uint8 no_dead_anim; typedef struct { Uint16 msg; Uint32 from; Value arg1,arg2,arg3; @@ -163,10 +164,11 @@ #define animfree free static void set_dead_animation(const Object*o) { DeadAnimation*d; + if(no_dead_anim) return; deadanim=realloc(deadanim,(ndeadanim+1)*sizeof(DeadAnimation)); if(!deadanim) fatal("Allocation failed\n"); d=deadanim+ndeadanim++; d->class=o->class; d->x=o->x; Index: game.c ================================================================== --- game.c +++ game.c @@ -183,10 +183,11 @@ if(d->vimageclass]->nimages) draw_picture((d->x-1)*picture_size+left_margin,(d->y-1)*picture_size,classes[d->class]->images[d->vimage]&0x7FFF); if(++d->vtime>=d->s.speed) { if(d->vimage==d->s.end) d->s.flag=0; if(d->s.end>=d->s.start) ++d->vimage; else --d->vimage; + d->vtime=0; } } for(i=0;i=inputs_size) { inputs=realloc(inputs,inputs_size=number+1); if(!inputs) fatal("Allocation failed\n"); } memcpy(inputs,replay_list,inputs_count=number); + no_dead_anim=1; return 1; case '^<': // Rewind to mark number=replay_mark; goto restart; case '^>': // Replay to mark @@ -838,13 +840,13 @@ SDL_SetTimer(0,0); return; } replay: if(inputs_count) { - //TODO: Check for solution replay for(i=0;i