On 2/11/07, Troman <[EMAIL PROTECTED]> wrote:


Back to this loading topic. I wasn't reading all mailinglist messages
lately, but from reading old messages looks like this is still not resolved.

> Anyhow, I fixed the crash in saving the game.  Loading the game
> resulted in a different crash, which I also fixed, but then there was
> another one:
>
> 7. The following error occurs when loading a saved game, at least in
> campaign mode:
> error:      eventSetContextVar: Variable type mismatch (1/0)
> error:      Assert in Warzone: event.c:779 : eventSetContextVar
> (FALSE), last script event: '<none>'
> event.c:779: failed assertion `(0)'

I'm really clueless why this happens.
I wouldn't deal with the loading/saving code, if it worked fine for you at
some point, since AFAIK loading/saving code wasn't changed after the
64bit-patch (r495). Do you know if loading worked after this patch? There
were also modifications to the savegame format, maybe something wasn't
endianized? Another thind you can do is to try to find the commit that broke
savegame loading on mac.

> I'm attaching a savegame.  Chances are good that there are endian
> issues so it won't load for others, but if you can give me some hints
> about where it crashes trying to load this, it might help fix it on my
> end, too.  Thanks!

Can't load it, that's what I get as debug output:

never:      levLoadData: loading script system state
error:      resGetDataFromHash: Unknown ID:
error:      Assert in Warzone:
c:\wz\source\lib\framework\frameresource.c:544 :
resGetDataFromHash (FALSE), last script event: '<none>'

call stack:

> Warzone.exe!resGetDataFromHash(const char * pType=0x005cba0c, unsigned int
HashedID=1065441038)  Line 544 + 0x5b bytes C
  Warzone.exe!eventLoadContextHashed(int version=50331648,
char * pBuffer=0x038a0088, unsigned int * pSize=0x0012f540)  Line 370 + 0xe
bytes C
  Warzone.exe!eventLoadState(char * pBuffer=0x038a0080, unsigned int
fileSize=2204, int bHashed=1)  Line 764 + 0x11 bytes C
  Warzone.exe!loadScriptState(char * pFileName=0x00d39480)  Line 11669 +
0x11 bytes C
  Warzone.exe!levLoadData(char * pName=0x00d63000, char *
pSaveName=0x00d39480, int saveType=4)  Line 1131 + 0x9 bytes C
  Warzone.exe!gameLoadV(char * pFileData=0x038a0088, unsigned int
filesize=4572, unsigned int version=34)  Line 4161 + 0x15 bytes C
  Warzone.exe!gameLoad(char * pFileData=0x038a0088, unsigned int
filesize=4572)  Line 3283 + 0x14 bytes C
  Warzone.exe!loadGameInit(char * pGameToLoad=0x00d39480)  Line 1385 + 0xd
bytes C
  Warzone.exe!SDL_main(int argc=12, char * * argv=0x0012fd38)  Line 562 +
0xa bytes C
  Warzone.exe!_main()  + 0xd1 bytes C

I have attached savegame from campaign 1, mission 1 in case you still need
it.

That savegame definitely crashes on the Mac.  I'm pretty sure it's the
endian issue.  The problem seems to stem from the script state being
saved without any endianizing.  To my knowledge, saving and loading
games worked fine until that change occurred, which I think was
post-r495.  A test of r495 just now actually crashes when attempting
to save the game, with the crash coming from code that is commented
out in the latest source.  However, this is entirely separate from the
crashes I get now.

What we need to do is go through the evntsave.c and scriptobj.c code
to endianize all the things that get saved out to the file.  I don't
know the file formats so I can't go through them accurately myself.


As for the scrCBNewUnit() problem, did r690 fix it?

I haven't had it occur since then, so it appears that that problem is fixed.

_______________________________________________
Warzone-dev mailing list
Warzone-dev@gna.org
https://mail.gna.org/listinfo/warzone-dev

Reply via email to