Redemption Compatibility

Everything about development and the OpenMW source code.
Locked
User avatar
lgromanowski
Site Admin
Posts: 1193
Joined: 05 Aug 2011, 22:21
Location: Wroclaw, Poland
Contact:

Redemption Compatibility

Post by lgromanowski »

Zini wrote: When testing with Redemption, I got this error message:
marc:~/OpenMW/build$ ./openmw --start "Dungeon Destard, Level 1" --master "TOE-Redemption_0.91.esm"
Hello, fellow traveler!
Your data directory for today is: /home/marc/OpenMW/build/data
Initializing OGRE
Loading ESM /home/marc/OpenMW/build/data/TOE-Redemption_0.91.esm

ERROR: ESM Error: Expected subrecord TEXT but got FNAM
File: /home/marc/OpenMW/build/data/TOE-Redemption_0.91.esm
Record: ALCH
Subrecord: FNAM
Offset: 0x4f697b
I guess some of the subrecords are optional. Now we just have to find out which ones. ;) Nico, I remember you did some fixing in the D version. Has this gone into the C++ version already?
Zini wrote: Fixed it my making just the TEXT subrecord optional. But now I have a new problem. Apparently OpenMW can't find any meshes.
marc:~/OpenMW/build$ ./openmw --start "Dungeon Destard, Level 1" --master "TOE-Redemption_0.91.esm"
Hello, fellow traveler!
Your data directory for today is: /home/marc/OpenMW/build/data
Initializing OGRE
Loading ESM /home/marc/OpenMW/build/data/TOE-Redemption_0.91.esm

38 record types:
CREA: 583
REPA: 6
APPA: 22
GLOB: 289
PROB: 6
NPCC: 0
CREC: 0
MISC: 794
CNTC: 0
LEVC: 2
RACE: 10
SNDG: 319
ALCH: 289
ENCH: 801
LIGH: 753
ACTI: 1977
LEVI: 4
LOCK: 6
BOOK: 27
DIAL: 181
SPEL: 1091
CELL: 1420
REGN: 28
BSGN: 16
SOUN: 1014
ARMO: 454
WEAP: 561
SSCR: 1
INGR: 180
DOOR: 330
CLAS: 90
STAT: 4241
FACT: 26
CONT: 1066
CLOT: 693
GMST: 1521
BODY: 2215
NPC_: 51

Not implemented yet: INFO LAND LTEX MGEF PGRD SCPT SKIL
loading cell 'Dungeon Destard, Level 1'
Statics in cell: 333

Setting up cell rendering
WARNING (NIF:meshes\i\In_lava_1024.NIF): File not found.
WARNING (NIF:meshes\i\In_lava_oval.NIF): File not found.
WARNING (NIF:meshes\EditorMarker.nif): File not found.
WARNING (NIF:meshes\TOEa\cr\raz_reddragon.NIF): File not found.
WARNING (NIF:meshes\TOE\m\TOE_NBcommonbottle01.nif): File not found.
WARNING (NIF:meshes\Marker_North.nif): File not found.
WARNING (NIF:meshes\i\in_pycave_00.nif): File not found.
WARNING (NIF:meshes\i\in_pycave2_s_end.nif): File not found.
WARNING (NIF:meshes\i\in_pycave2_s_03.nif): File not found.
WARNING (NIF:meshes\i\in_pycave2_s_00.nif): File not found.
WARNING (NIF:meshes\i\in_pycave2_s_01.nif): File not found.
WARNING (NIF:meshes\i\in_pycave2_s_02.nif): File not found.
WARNING (NIF:meshes\i\in_pycave2_s_04.nif): File not found.
WARNING (NIF:meshes\i\in_pycave4_s_00.nif): File not found.
WARNING (NIF:meshes\i\in_pycave2_s_05.nif): File not found.
WARNING (NIF:meshes\i\in_pycave2_end.nif): File not found.
WARNING (NIF:meshes\i\in_pycave_19.nif): File not found.
WARNING (NIF:meshes\i\in_pycave_form10.nif): File not found.
WARNING (NIF:meshes\i\in_pycave_08.nif): File not found.
WARNING (NIF:meshes\i\in_pycave_lroom4_01.nif): File not found.
WARNING (NIF:meshes\i\in_pytrans_00.nif): File not found.
WARNING (NIF:meshes\i\in_pycave_lroom4_02.nif): File not found.
WARNING (NIF:meshes\i\in_pycave_lroom2_00.nif): File not found.
WARNING (NIF:meshes\i\in_pycave_lroom3_00.nif): File not found.
WARNING (NIF:meshes\i\in_pycave_lroom4_03.nif): File not found.
WARNING (NIF:meshes\i\in_pycave_lroom4_04.nif): File not found.
WARNING (NIF:meshes\i\in_pycave_lroom4_05.nif): File not found.
WARNING (NIF:meshes\i\in_pycave_lroom3_02.nif): File not found.
WARNING (NIF:meshes\i\in_pycave_lroom3_01.nif): File not found.
WARNING (NIF:meshes\i\in_pycave2_06.nif): File not found.
WARNING (NIF:meshes\i\in_pycave_05.nif): File not found.
WARNING (NIF:meshes\x\Terrain_rock_MA_550.NIF): File not found.
WARNING (NIF:meshes\x\Terrain_MA_20.NIF): File not found.
WARNING (NIF:meshes\x\Terrain_MA_rock32.NIF): File not found.
WARNING (NIF:meshes\i\in_pycave2_03.nif): File not found.
WARNING (NIF:meshes\i\in_pycave2_05.nif): File not found.
WARNING (NIF:meshes\i\in_pycave2_04.nif): File not found.
WARNING (NIF:meshes\i\in_pycave4_00.nif): File not found.
WARNING (NIF:meshes\i\in_pycave2_02.nif): File not found.
WARNING (NIF:meshes\i\in_pycave2_01.nif): File not found.
WARNING (NIF:meshes\x\Terrain_rock_MA_25.NIF): File not found.
WARNING (NIF:meshes\x\Terrain_rock_MA_06.NIF): File not found.
WARNING (NIF:meshes\x\Terrain_rock_MA_19.NIF): File not found.
WARNING (NIF:meshes\x\Terrain_rock_MA_05.nif): File not found.
WARNING (NIF:meshes\x\Terrain_rock_MA_39.NIF): File not found.
WARNING (NIF:meshes\x\Terrain_rock_MA_02.NIF): File not found.
WARNING (NIF:meshes\x\Terrain_rock_MA_53.NIF): File not found.
WARNING (NIF:meshes\x\Terrain_MA_30.NIF): File not found.
WARNING (NIF:meshes\x\Terrain_MA_60.nif): File not found.
WARNING (NIF:meshes\x\Terrain_MA_rock13.NIF): File not found.
WARNING (NIF:meshes\x\Terrain_MA_rock22.NIF): File not found.
WARNING (NIF:meshes\x\Terrain_MA_rock_53.nif): File not found.
WARNING (NIF:meshes\x\Terrain_MA_rock_51.nif): File not found.
WARNING (NIF:meshes\x\Terrain_rock_MA_09.NIF): File not found.
WARNING (NIF:meshes\x\Terrain_rock_MA_51.NIF): File not found.
WARNING (NIF:meshes\x\Terrain_rock_MA_43.NIF): File not found.
WARNING (NIF:meshes\i\in_pycave_form30.nif): File not found.
WARNING (NIF:meshes\i\in_pycave_form20.nif): File not found.
WARNING (NIF:meshes\i\in_py_rock_06.nif): File not found.
WARNING (NIF:meshes\i\in_py_rock_02.nif): File not found.
WARNING (NIF:meshes\i\in_py_rock_22.nif): File not found.
WARNING (NIF:meshes\i\in_py_rock_05.nif): File not found.
WARNING (NIF:meshes\i\in_py_rock_04.nif): File not found.
WARNING (NIF:meshes\i\in_py_rock_03.nif): File not found.
WARNING (NIF:meshes\i\in_py_rock_15.nif): File not found.
WARNING (NIF:meshes\i\in_py_rock_18.nif): File not found.
WARNING (NIF:meshes\i\in_py_rock_24.nif): File not found.
WARNING (NIF:meshes\i\in_py_rock_27.nif): File not found.
WARNING (NIF:meshes\i\in_py_rock_28.nif): File not found.
WARNING (NIF:meshes\x\Terrain_rock_MA_40.nif): File not found.
WARNING (NIF:meshes\i\in_py_rock_20.nif): File not found.
WARNING (NIF:meshes\x\Terrain_MA_rock62.NIF): File not found.
WARNING (NIF:meshes\x\Terrain_rock_MA_5A.NIF): File not found.
WARNING (NIF:meshes\x\Terrain_rock_MA_49.NIF): File not found.
WARNING (NIF:meshes\i\in_py_rock_26.nif): File not found.
WARNING (NIF:meshes\i\in_py_rock_25.nif): File not found.
WARNING (NIF:meshes\i\in_py_rock_23.nif): File not found.
WARNING (NIF:meshes\i\in_pyboulder00.nif): File not found.
WARNING (NIF:meshes\i\in_pyboulder02.nif): File not found.
WARNING (NIF:meshes\i\in_pyboulder05.nif): File not found.
WARNING (NIF:meshes\i\in_pyboulder03.nif): File not found.
WARNING (NIF:meshes\i\In_nord_ladder_02.NIF): File not found.
Setting up input system

Start! Press Q/ESC or close window to exit.

That's all for now!
Edit: Okay, I see what is wrong here. Mostly. I am not loading the Morrowind.bsa and I don't have the unpacked Morrowind meshes in my data directory. Apparently my assumption about how to handle bsa files was wrong. Will fix it.
But that still does not explain why the non-original meshes don't get loaded. There is a difference in the case of the directory name (Meshes versus meshes), but I have no idea how and where to fix it.
pvdk wrote:
Zini wrote:WARNING (NIF:meshes\x\Terrain_rock_MA_49.NIF): File not found.
WARNING (NIF:meshes\i\in_py_rock_26.nif): File not found.
WARNING (NIF:meshes\i\in_py_rock_25.nif): File not found.
WARNING (NIF:meshes\i\in_py_rock_23.nif): File not found.
WARNING (NIF:meshes\i\in_pyboulder00.nif): File not found.
Put the Redemption files in a .bsa. You can download a command-line tool called BSAPACK here:

http://web.archive.org/web/200710100810 ... sapack.zip (archive.org)

There's a readme included. It worked for my OpenMW Debug cell.
Zini wrote: Thanks, but I pass. Looks like too much hassle, considering the size of the Redemption mesh portfolio and the complex directory structure. Keeping the bsa archives up-to-date with new versions sounds just like too much work. I guess I can wait until the resources problem in OpenMW is fixed. I can't show you screenshots anyway.
pvdk wrote:
Zini wrote:I can't show you screenshots anyway.
Why not!?! :(

I understand, I'm not that interested in screenshots anyway :) Would be cool to know if OpenMW can handle a complex directory structure inside a BSA.
Zini wrote:
Why not!?! :(
Because that would be a spoiler. We have a pretty strict policy about showing content to the public. Basically, we don't, except for a few selected places, that are agreed upon by the project's (Co-)Directors.
I understand, I'm not that interested in screenshots anyway :) Would be cool to know if OpenMW can handle a complex directory structure inside a BSA.
It can. Morrowind.bsa isn't particular small or simple.
Sslaxx wrote: That could make working on the project and OpenMW tricky then. It'd be really, really nice if you could make Redemption 100% independent of Morrowind's data files and make it run on OpenMW without needing to buy anything.
Zini wrote: Not going to happen. We are re-using quite a bit of re-textured models and even some of the better textures. It could easily take another year or two to make custom replacements for all of these.
Sslaxx wrote: Well, I wouldn't say "never say never", but yeah it won't unless you can find decent 2D/3D modellers and artists (and, alas, I am not one else I'd offer to do so).
Zini wrote: Looks like we are running into another compatibility problem. When trying the current OpenMW code base with Redemption, I get a crash. Same happens when I run it through the esmtool. This problem didn't show up before, because we were ignoring INFO records. Looks like there is a problem in the loadinfo code, but it is a bit to cryptic for me to make sense of it.

Nico, if you can find the time, could you have a look at it? I guess you still have the Redemption master file I gave you. Running it through a current build of the esm tool should make the problem show up.

The error message I get from the esmtool is:
ERROR:

ESM Error: Previous record contains unread bytes
File: data/TOE-Redemption_0.91.esm
Record:
Subrecord: QSTN
Offset: 0x1c7fdd2
Star-Demon wrote: Have you tried running it through that new tool? Tes3lint? tests for lots of things and maybe provide some insight into some problem with parts of the file's data.
Zini wrote: Never heard of that. But anyway, it is not a problem with the master file, because the CS and MW accept it, which means it is valid by definition.
The problem here is, that we seem to have an unusual combination of options, that is not supported yet by OpenMW. We had these kind of problem several times in the past, just not in parts of the code that are so spaghetti-ish.
nicolay wrote: Zini, I seem to have displaced the Redemption file :( Is it possible you could send it again?
Zini wrote: Sure.

Edit: Done.
nicolay wrote: Thanks. Fixed.

Turns out it was a simple mistranslation from the D code, affecting all quest-enabled INFO records. Would also affect Tribunal and Bloodmoon, but there are no such records in Morrowind.esm so that loaded fine.
Zini wrote: Yeah, that did it. Thanks!
sir_herrbatka wrote: hmm...

What about loading multiple esm's? Without redemption this bug would be unseen... This bothers me :?
Locked