adventurebrew / kyraim

Tools for extracting and editing Kyrandia game resources and more...
GNU General Public License v3.0
4 stars 0 forks source link

Please provide an example of how to use your tools #1

Open CruiseMaster opened 10 months ago

CruiseMaster commented 10 months ago

Hey, even though I am a software developer (C#), I cannot read from your code how to start the actual program. So please provide an example on how to start it up. Thanks in advance.

BLooperZ commented 10 months ago

Hi, thank you, I will add proper readme later👍 meanwhile here are some instructions

The tools was meant to work with the game in the Legend of Kyrandia series

you should have python 3.9 or later installed on your computer then, to install the tools you can either

pip install -U git+https://github.com/adventurebrew/kyraim@master

*it is recommended to do it inside virtual environment (venv)

or install poetry from https://python-poetry.org clone/download the project and run

poetry install

from the project directory then

poetry shell

to activate the virtual environment (poetry handles it for you)

to use the actual tools

python -m kyraim.texts PATH/TO/GAME/DIRECTORY

will extract the texts to texts directory as tsv files after editing them you can add -r to the previous command to create patches for the game which can be applied by putting the created files in game directory (as is)

for the other functionalities (fonts, graphics, animations) I will have to check for myself🙈 (I might rework the usage along the way) anything in particular you are interested in?

CruiseMaster commented 10 months ago

Hey, thank you for providing instructions on how to start your program. It seems to be a totally different way of how to start up a program compared to a C#-program (on Windows). Therefore, I apreciate your instructions.

I am particularly interested in Kyrandia Book One and extracting and converting graphics into something usable for nowerdays means for upscaling them.

The CPS-Files (backgrounds) for example are well documented but I am not low-level (or smart) enough to write my own converter. They need to be combined with their palette and then saved as an uncompressed file-format as anything compressed wouöd blur them when upscaling.

WSA-files (animation) are even worse since they have an initial state which does not have to be in the same file. I am not good enough for pushing bytes around that much. And I think that WSA-files also need their palette attatched to them to get a result.

I see that it's an interlectual masterpiece to invent such a file-format in terms of saving disk-space, but it makes reverse-engineering so much harder. So thank you for your work! I'm gonna try your instructions soon as I haven't had time yet.

BLooperZ commented 10 months ago

I have reworked the WSA decoding functionality which can now be used as

python -m kyraim.wsa -g kyra PATH/TO/GAME/DIRECTORY

for book one

please note that the WSA files to decode are hard-coded with mapping to the appropriate palette file here: https://github.com/adventurebrew/kyraim/blob/develop/kyraim/wsa.py#L101-L107 if you add files, make sure to also add the palettes.

cps can be decoded in a similiar way

python -m kyraim.cps-g kyra PATH/TO/GAME/DIRECTORY

and again the matching between the file and palette needs to be written here

CruiseMaster commented 10 months ago

I've now tried out your instructions and it works like a charm, thank you! When I have time, I'm gonna add all wsa and cps files to the list and provide that list back to you. So, you can add that code to the repository. That way, I can "pay you back" for all of your good work, I hope. :-)

CruiseMaster commented 10 months ago

Here is the CPS-list with rooms and palettes. I think, I didn't have all palette-files because there are some rooms for which I couldn't find an appropriate palette for. Is there a way to ask ScummVM which background file it uses with which palette? Or is that information coded somewhere in the DAT-files for each room? "# palette?" means I was not sure about the palette and "# palette!" means I am sure that it wasn't the right one. I am now on my way to get the WSA-files paired with their palettes.

GAMES: Mapping[str, GameCPSDef] = { 'kyra': { 'palettes': [ 'TOP.CPS', 'GEMHEALS.CPS', 'REUNION.CPS', 'CHALET.CPS', 'ORIGPAL.COL', 'KALLAK.COL', 'TEMP.COL', 'WESTWOOD.COL', 'KYRANDIA.COL', 'TREE_EXP.COL', 'MAL-KAL.COL', 'top.pal'

'*.COL'

        #'*.CPS',
    ],
    'patterns': {
        'MAIN_*.CPS': ['TOP.CPS'],
        'TEXT_*.CPS': ['TOP.CPS'],
        'ALCHEMY.CPS': ['ORIGPAL.COL'],
        'ALGAE.CPS': ['TEMP.COL'],
        'ALTAR.CPS': ['top.pal'],
        'ARCH.CPS': ['TEMP.COL'],
        'BALCONY.CPS': ['KYRANDIA.COL'],
        'BELROOM.CPS': ['ORIGPAL.COL'],
        'BONKBG.CPS': ['TREE_EXP.COL'],
        'BRIDGE.CPS': ['ORIGPAL.COL'],
        'BRINS.CPS': ['ORIGPAL.COL'],
        'BROKEN.CPS': ['ORIGPAL.COL'],
        'BURN.CPS': ['KYRANDIA.COL'],
        'CASTLE.CPS': ['KYRANDIA.COL'], # palette?
        'CATACOM.CPS': ['TEMP.COL'], # palette?
        'CAVE.CPS': ['TREE_EXP.COL'],
        'CAVEB.CPS': ['TREE_EXP.COL'],
        'CGATE.CPS': ['TEMP.COL'], # palette?
        'CHASM.CPS': ['ORIGPAL.COL'],
        'CLIFF.CPS': ['ORIGPAL.COL'], # aplette?
        'DARMS.CPS': ['ORIGPAL.COL'],
        'DEAD.CPS': ['ORIGPAL.COL'], # palette?
        'DNSTAIR.CPS': ['TEMP.COL'],
        'DRAGON.CPS': ['ORIGPAL.COL'],
        'EDGE.CPS': ['TREE_EXP.COL'],
        'EDGEB.CPS': ['TREE_EXP.COL'],
        'EMCAV.CPS': ['bottom.COL'], # palette!
        'ENTER.CPS': ['ORIGPAL.COL'],
        'EXTHEAL.CPS': ['WESTWOOD.COL'], # palette?
        'EXTPOT.CPS': ['WESTWOOD.COL'], # palette?
        'EXTSPEL.CPS': ['WESTWOOD.COL'],
        'FALLS.CPS': ['TREE_EXP.COL'],
        'FESTSTH.CPS': ['TREE_EXP.COL'],
        'FGOWEST.CPS': ['TREE_EXP.COL'],
        'GEMHEALS.CPS': ['GEMHEALS.CPS'],
        'CHALET.CPS': ['CHALET.CPS'],
        'BEAD.CPS': ['CHALET.CPS'],
        'REUNION.CPS': ['REUNION.CPS'],
        'FNORTH.CPS': ['TREE_EXP.COL'],
        'FORESTA.CPS': ['TREE_EXP.COL'],
        'FORESTB.CPS': ['TREE_EXP.COL'],
        'FORESTC.CPS': ['TREE_EXP.COL'],
        'FOUNTN.CPS': ['TEMP.COL'],
        'FOYER.CPS': ['TEMP.COL'],
        'FSOUTH.CPS': ['TREE_EXP.COL'],
        'FSOUTHB.CPS': ['TREE_EXP.COL'],
        'FWSTSTH.CPS': ['TREE_EXP.COL'],
        'GATECV.CPS': ['ORIGPAL.COL'],
        'GEM.CPS': ['WESTWOOD.COL'],
        'GEMCUT.CPS': ['WESTWOOD.COL'],
        'GENCAVB.CPS': ['TREE_EXP.COL'], # palette?
        'GENHALL.CPS': ['WESTWOOD.COL'],
        'GEN_CAV.CPS': ['TREE_EXP.COL'], # palette?
        'GLADE.CPS': ['WESTWOOD.COL'],
        'GRAVE.CPS': ['ORIGPAL.COL'],
        'GRTHALL.CPS': ['ORIGPAL.COL'],
        'HEALER.CPS': ['ORIGPAL.COL'],
        'TOP.CPS': ['TOP.CPS'],
        'BOTTOM.CPS': ['BOTTOM.CPS'],
        'TREE.CPS': ['TREE_EXP.CPS'],
        'WRITING.CPS': ['KALLAK.COL'],
        'GEMCUTI.CPS': ['MAL-KAL.COL'],
        'KITCHEN.CPS': ['ORIGPAL.COL'],
        'KYRAGEM.CPS': ['TREE_EXP.COL'],
        'LAGOON.CPS': ['WESTWOOD.COL'], # palette!
        'LANDING.CPS': ['ORIGPAL.COL'],
        'LAVA.CPS': ['TREE_EXP.COL'], # palette!
        'LEPHOLE.CPS': ['ORIGPAL.COL'],
        'LIBRARY.CPS': ['ORIGPAL.COL'],
        'MAIN_GER.CPS': ['ORIGPAL.COL'],
        'FLUTE1.CPS': ['ORIGPAL.COL'],
        'FLUTE2.CPS': ['ORIGPAL.COL'],
        'SNOW1A.CPS': ['ORIGPAL.COL'],
        'SNOW2A.CPS': ['ORIGPAL.COL'],
        'TELEKIN.CPS': ['ORIGPAL.COL'],
        'HEALBR1.CPS': ['ORIGPAL.COL'],
        'NOTEGER.CPS': ['ORIGPAL.COL'],
        'DRINK.CPS': ['ORIGPAL.COL'],
        'AMULET3.CPS': ['ORIGPAL.COL'],
        'BRANSTON.CPS': ['ORIGPAL.COL'],
        'HEALBR2.CPS': ['ORIGPAL.COL'],
        'POISON.CPS': ['ORIGPAL.COL'],
        'MIX.CPS': ['ORIGPAL.COL'],
        'MOONCAV.CPS': ['TREE_EXP.COL'], # palette!
        'MIX.CPS': ['ORIGPAL.COL'],
        'NCLIFF.CPS': ['ORIGPAL.COL'], # palette!
        'NCLIFFB.CPS': ['ORIGPAL.COL'], # palette!
        'NWCLIFFB.CPS': ['ORIGPAL.COL'], # palette!
        'NWCLIFF.CPS': ['ORIGPAL.COL'], # palette!
        'OAKS.CPS': ['ORIGPAL.COL'],
        'PLATEAU.CPS': ['ORIGPAL.COL'],
        'PLTCAVE.CPS': ['ORIGPAL.COL'],
        'POTION.CPS': ['ORIGPAL.COL'], # palette?
        'RUBY.CPS': ['TREE_EXP.COL'],
        'SICKWIL.CPS': ['TREE_EXP.COL'],
        'SONG.CPS': ['TREE_EXP.COL'],
        'SORROW.CPS': ['top.pal'],
        'SPELL.CPS': ['ORIGPAL.COL'],
        'SPRING.CPS': ['TREE_EXP.COL'],
        'SQUARE.CPS': ['TREE_EXP.COL'], # palette?
        'BRANDON.CPS': ['PALETTE.COL'],
        'BRANWILL.CPS': ['PALETTE.COL'],
        'BUTTONS2.CPS': ['PALETTE.COL'],
        'EFFECTS.CPS': ['PALETTE.COL'],
        'HERMAN.CPS': ['PALETTE.COL'],
        'ITEMS.CPS': ['PALETTE.COL'],
        'JEWELS3.CPS': ['PALETTE.COL'],
        'MOUSE.CPS': ['PALETTE.COL'],
        'MERITH.CPS': ['PALETTE.COL'],
        'STUMP.CPS': ['WESTWOOD.COL'],
        'TEMPLE.CPS': ['ORIGPAL.COL'],
        'TEXT_GER.CPS': ['ORIGPAL.COL'],
        'TRUNK.CPS': ['ORIGPAL.COL'],
        'UPSTAIRS.CPS': ['WESTWOOD.COL'],
        'WELL.CPS': ['ORIGPAL.COL'],
        'WILLOW.CPS': ['ORIGPAL.COL'],
        'WISE.CPS': ['ORIGPAL.COL'],
        'XEDGE.CPS': ['ORIGPAL.COL'],
        'XEDGEB.CPS': ['ORIGPAL.COL'],
        'XEDGEB.CPS': ['ORIGPAL.COL'],
        'XEDGEC.CPS': ['ORIGPAL.COL'],
        'ZROCK.CPS': ['ORIGPAL.COL'], # palette!
        #'*.CPS': ['*.CPS'],
    },
},
'kyra2': {
    'palettes': [
        # '*.COL',
        # '*.CPS',
    ],
    'patterns': {
        # '*.CPS': [
        #     '*.COL',
        #     '*.CPS',
        # ],
    },
},

}

CruiseMaster commented 10 months ago

I forgot to mention that I get a TypeError on certain CPS-files. Even if I comment out the line mapping GENHALL.CPS, I get the same error on some other files. I guess, it has something to do with the compression but I am not sure.

Trace/Log: (kyraim-py3.9) PS C:\Users\CMD\Downloads\scummvm-tools-2.7.0-win32-x86_64\kyraim-develop> python -m kyraim.cps -g kyra "C:\Spiele\LOK\DAT" 4 64000 768 4 64000 768 4 64000 768 C:\Spiele\LOK\DAT\MAINGER.CPS MAIN.CPS 4 64000 0 C:\Spiele\LOK\DAT\TEXTGER.CPS TEXT.CPS 4 64000 0 ALCHEMY.CPS ALCHEMY.CPS 4 64000 0 ALGAE.CPS ALGAE.CPS 4 64000 0 ALTAR.CPS ALTAR.CPS 4 64000 0 ARCH.CPS ARCH.CPS 4 64000 0 BONKBG.CPS BONKBG.CPS 4 64000 0 BRIDGE.CPS BRIDGE.CPS 4 64000 0 BRINS.CPS BRINS.CPS 4 64000 0 BROKEN.CPS BROKEN.CPS 4 64000 0 BURN.CPS BURN.CPS 4 64000 0 CAVE.CPS CAVE.CPS 4 64000 0 CAVEB.CPS CAVEB.CPS 4 64000 0 CHASM.CPS CHASM.CPS 4 64000 0 CLIFF.CPS CLIFF.CPS 4 64000 0 DARMS.CPS DARMS.CPS 4 64000 0 DEAD.CPS DEAD.CPS 4 64000 0 DNSTAIR.CPS DNSTAIR.CPS 4 64000 0 DRAGON.CPS DRAGON.CPS 4 64000 0 EDGE.CPS EDGE.CPS 4 64000 0 ENTER.CPS ENTER.CPS 4 64000 0 EXTHEAL.CPS EXTHEAL.CPS 4 64000 0 EXTSPEL.CPS EXTSPEL.CPS 4 64000 0 FALLS.CPS FALLS.CPS 4 64000 0 FGOWEST.CPS FGOWEST.CPS 4 64000 0 CHALET.CPS CHALET.CPS 4 64000 768 BEAD.CPS BEAD.CPS 4 1322 0 REUNION.CPS REUNION.CPS 4 64000 768 FNORTH.CPS FNORTH.CPS 4 64000 0 FORESTB.CPS FORESTB.CPS 4 64000 0 FORESTC.CPS FORESTC.CPS 4 64000 0 FOUNTN.CPS FOUNTN.CPS 4 64000 0 FOYER.CPS FOYER.CPS 4 64000 0 GATECV.CPS GATECV.CPS 4 64000 0 GEM.CPS GEM.CPS 4 64000 0 GEMCUT.CPS GEMCUT.CPS 4 64000 0 GEN_CAV.CPS GEN_CAV.CPS 4 64000 0 GENCAVB.CPS GENCAVB.CPS 4 64000 0 GENHALL.CPS GENHALL.CPS 3 64000 0 Traceback (most recent call last): File "C:\Users\CMD\AppData\Local\Programs\Python\Python39-32\lib\runpy.py", line 197, in _run_module_as_main return _run_code(code, main_globals, None, File "C:\Users\CMD\AppData\Local\Programs\Python\Python39-32\lib\runpy.py", line 87, in _run_code exec(code, run_globals) File "C:\Users\CMD\Downloads\scummvm-tools-2.7.0-win32-x86_64\kyraim-develop\kyraim\cps.py", line 306, in im += b'\0' width height TypeError: unsupported operand type(s) for +=: 'NoneType' and 'bytes'

CruiseMaster commented 10 months ago

Here is the WSA-mapping:

GAMES: Mapping[str, GameCPSDef] = { 'kyra': { 'palettes': [ 'TOP.CPS', 'ORIGPAL.COL', 'TREE_EXP.COL', ], 'patterns': { 'KYRANDIA.WSA': ['TOP.CPS'], 'AMULET.WSA': ['TREE_EXP.COL'], 'RAISEPIC.WSA': ['ORIGPAL.COL'], 'RINGBELL.WSA': ['ORIGPAL.COL'], 'BONK.WSA': ['TREE_EXP.COL'], 'NEEDSAW1.WSA': ['ORIGPAL.COL'], 'AGILE.WSA': ['ORIGPAL.COL'], 'ADVICE.WSA': ['ORIGPAL.COL'], 'BALANCE2.WSA': ['ORIGPAL.COL'], 'RIDGE.WSA': ['ORIGPAL.COL'], 'RIDGE2.WSA': ['ORIGPAL.COL'], 'EYES.WSA': ['ORIGPAL.COL'], # 'ACIDGATE.WSA': ['ORIGPAL.COL'], 'GATE.WSA': ['ORIGPAL.COL'], 'PLANT.WSA': ['ORIGPAL.COL'], 'PLANT2.WSA': ['ORIGPAL.COL'], 'SLIDE1.WSA': ['ORIGPAL.COL'], 'SLIDE2.WSA': ['ORIGPAL.COL'], 'UPSTAIRS.WSA': ['ORIGPAL.COL'], 'DNSTAIRS.WSA': ['ORIGPAL.COL'], 'TOSS.WSA': ['ORIGPAL.COL'], 'MALENTER.WSA': ['ORIGPAL.COL'], 'SHUFFLE2.WSA': ['ORIGPAL.COL'], 'JUGGLE.WSA': ['ORIGPAL.COL'], 'JUGLTALK.WSA': ['ORIGPAL.COL'], 'BEHIND.WSA': ['ORIGPAL.COL'], 'JESTTALK.WSA': ['ORIGPAL.COL'], 'BRANTALK.WSA': ['ORIGPAL.COL'], 'DODGE.WSA': ['ORIGPAL.COL'], 'SEALED.WSA': ['ORIGPAL.COL'], 'SHATTER.WSA': ['ORIGPAL.COL'], 'FROZEN.WSA': ['ORIGPAL.COL'], 'FROG.WSA': ['ORIGPAL.COL'], 'FINALA.WSA': ['ORIGPAL.COL'], 'FINALB.WSA': ['ORIGPAL.COL'], 'FINALC.WSA': ['ORIGPAL.COL'], 'FINALD.WSA': ['ORIGPAL.COL'], 'REUNION.WSA': ['ORIGPAL.COL'], 'CHALICE1.WSA': ['ORIGPAL.COL'], 'CHALICE2.WSA': ['ORIGPAL.COL'], 'STEAL1.WSA': ['ORIGPAL.COL'], 'TAG-0.WSA': ['ORIGPAL.COL'], 'TAG.WSA': ['ORIGPAL.COL'], 'FOUNTAN1.WSA': ['TEMP.COL'], 'FOUNTAN2.WSA': ['TEMP.COL'], 'FNTTALK.WSA': ['TEMP.COL'], 'BEAD.CPS': ['ORIGPAL.COL'], 'FOYER.WSA': ['ORIGPAL.COL'], 'PUNCH1.WSA': ['ORIGPAL.COL'], 'PUNCH2.WSA': ['ORIGPAL.COL'], 'PUNCH3.WSA': ['ORIGPAL.COL'], 'CAVEDOOR.WSA': ['ORIGPAL.COL'], 'ROCKS1.WSA': ['ORIGPAL.COL'], 'ROCKS2.WSA': ['ORIGPAL.COL'], 'ROCKS3.WSA': ['ORIGPAL.COL'], 'ROCKS4.WSA': ['ORIGPAL.COL'], 'ROCKS5.WSA': ['ORIGPAL.COL'], 'LIFTDWN.WSA': ['ORIGPAL.COL'], 'LIFTUP.WSA': ['ORIGPAL.COL'], 'GRANDPA.WSA': ['ORIGPAL.COL'], 'BRANTREE.WSA': ['ORIGPAL.COL'], 'FACE.WSA': ['ORIGPAL.COL'], 'FACE2.WSA': ['ORIGPAL.COL'], 'TOUCH.WSA': ['ORIGPAL.COL'], 'HERSAW1.WSA': ['ORIGPAL.COL'], 'HERSAW2.WSA': ['ORIGPAL.COL'], 'HERSAW3.WSA': ['ORIGPAL.COL'], 'LEP_OUT.WSA': ['ORIGPAL.COL'], 'LEP_IN.WSA': ['ORIGPAL.COL'], 'MOTHER1.WSA': ['ORIGPAL.COL'], 'MOTHER2.WSA': ['ORIGPAL.COL'], 'BRNENTR.WSA': ['ORIGPAL.COL'], 'BRYNN1.WSA': ['ORIGPAL.COL'], 'BRYNN2.WSA': ['ORIGPAL.COL'], 'BRYNN3.WSA': ['ORIGPAL.COL'], 'WESTWOOD.WSA': ['WESTWOOD.COL'], 'SHORE.WSA': ['ORIGPAL.COL'], 'TREE1.WSA': ['ORIGPAL.COL'], 'TREE2.WSA': ['ORIGPAL.COL'], 'WRITING.CPS': ['KALLAK.COL'], 'KALLAK.WSA': ['KALLAK.COL'], 'MAL-KAL.WSA': ['MAL-KAL.COL'], 'PEGASUS.WSA': ['ORIGPAL.COL'], 'WILOFISH.WSA': ['ORIGPAL.COL'], 'LANDING.WSA': ['ORIGPAL.COL'], 'BRANBRN.WSA': ['ORIGPAL.COL'], 'JUMP.WSA': ['ORIGPAL.COL'], 'LEPCLIMB.WSA': ['ORIGPAL.COL'], 'LEPHOLE.WSA': ['ORIGPAL.COL'], 'FIREPLACE.WSA': ['ORIGPAL.COL'], 'MIXROX.WSA': ['ORIGPAL.COL'], # 'MOONCAV1.WSA': ['ORIGPAL.COL'], 'MOONCAV2.WSA': ['ORIGPAL.COL'], 'ZANBASIC.WSA': ['ORIGPAL.COL'], 'BRANZAN.WSA': ['ORIGPAL.COL'], 'ZANDOORU.WSA': ['ORIGPAL.COL'], 'ZANDOORD.WSA': ['ORIGPAL.COL'], 'WAKEN.WSA': ['ORIGPAL.COL'], 'LAUNDRY.WSA': ['ORIGPAL.COL'], 'POUR.WSA': ['ORIGPAL.COL'], 'CARPET.WSA': ['ORIGPAL.COL'], 'SNGSPELL.WSA': ['ORIGPAL.COL'], 'SONG1.WSA': ['ORIGPAL.COL'], 'RAINDROP.WSA': ['ORIGPAL.COL'], 'BRANDYW1.WSA': ['ORIGPAL.COL'], 'BRANDYW2.WSA': ['ORIGPAL.COL'], 'BRANDYW3.WSA': ['ORIGPAL.COL'], 'SPELL.WSA': ['ORIGPAL.COL'], 'CTRAP1.WSA': ['ORIGPAL.COL'], 'CTRAP2.WSA': ['ORIGPAL.COL'], 'ALTER.WSA': ['ORIGPAL.COL'], 'DROPDOWN.WSA': ['ORIGPAL.COL'], 'DROPUP.WSA': ['ORIGPAL.COL'], 'WOW.WSA': ['ORIGPAL.COL'], 'SAW.WSA': ['ORIGPAL.COL'], }, }, 'kyra2': { 'palettes': [

'PALETTE.COL',

    ],
    'patterns': {
        'TITLE.WSA': [],
    },
},

}

CruiseMaster commented 10 months ago

Unfortunately, I am getting an error as well when executing the program:

(kyraim-py3.9) PS C:\Users\CMD\Downloads\scummvm-tools-2.7.0-win32-x86_64\kyraim-develop> python -m kyraim.wsa -g kyra "C:\Spiele\LOK\DAT" ORIGPAL.COL TREE_EXP.COL ORIGPAL.COL 4 64000 768 TOP.CPS TREE_EXP.COL FINALA.WSA FINALA.WSA 38 72 56 2437 0 [170, 1790, 1814, 1903, 2111, 2413, 2968, 3817, 4771, 5789, 6658, 7596, 8632, 9698, 10584, 11524, 12316, 12618, 12920, 13294, 13520, 14395, 14924, 15466, 16389, 16953, 17525, 18051, 18251, 18568, 18951, 19099, 19332, 19609, 19891, 20198, 20402, 20614, 20643] FINALB.WSA FINALB.WSA 8 88 99 5028 0 [50, 3170, 3337, 3742, 4602, 5632, 6909, 8100, 8449] FINALC.WSA FINALC.WSA 17 48 53 1892 0 [86, 1559, 1994, 2410, 2914, 3356, 3691, 4289, 4839, 5352, 5798, 6153, 6508, 6861, 7282, 7290, 7298, 7306] FINALD.WSA FINALD.WSA 22 88 107 8677 0 [106, 6544, 6578, 6727, 6976, 7310, 7678, 8001, 8294, 8578, 8730, 8764, 9534, 10639, 11836, 13050, 14428, 15920, 17480, 19061, 20625, 21767, 22759] WESTWOOD.WSA WESTWOOD.WSA 23 320 56 6433 0 [110, 2556, 3075, 4777, 7551, 10996, 15379, 18987, 21748, 24029, 25441, 26149, 26296, 26857, 27523, 28068, 28541, 29176, 29750, 30167, 30687, 31160, 31582, 31935] KYRANDIA.WSA KYRANDIA.WSA 30 320 77 9309 0 [138, 3552, 4431, 5947, 9316, 13180, 19333, 25100, 32135, 36729, 41332, 44102, 46236, 46821, 46914, 47150, 47594, 48195, 48776, 49494, 50126, 50774, 51546, 52185, 52766, 53302, 53836, 54364, 54910, 55256, 55293] SHORE.WSA SHORE.WSA 12 320 168 33623 0 [66, 22534, 24266, 25930, 27442, 29102, 30808, 32447, 34148, 35994, 37479, 39209, 40845] TREE1.WSA TREE1.WSA 185 320 128 32966 0 [758, 21752, 21763, 21774, 21785, 21812, 21912, 22270, 22882, 23594, 24372, 25386, 26556, 27755, 28898, 29883, 30940, 31841, 32845, 32997, 33409, 33821, 34130, 34439, 34851, 35263, 35572, 35881, 36654, 37369, 37590, 37601, 37730, 38379, 38966, 39546, 40046, 40577, 41649, 43097, 44682, 45866, 46858, 48038, 48788, 49698, 50436, 51462, 52457, 52969, 53453, 53874, 54704, 55527, 56031, 56937, 58049, 59263, 60387, 61352, 62407, 63567, 64729, 65842, 66852, 67740, 68709, 69716, 71091, 72343, 73133, 73904, 74609, 75014, 75418, 75771, 76105, 76328, 77338, 78337, 79344, 80615, 81607, 81672, 82129, 82768, 84203, 85717, 87092, 88399, 89561, 89987, 90405, 90926, 92230, 93370, 94096, 94785, 95478, 96166, 96783, 97369, 97985, 98542, 99109, 99750, 100403, 101020, 101578, 102157, 102767, 103346, 103918, 104548, 105163, 105389, 106229, 107004, 107682, 108420, 108940, 109461, 110006, 110799, 111354, 112115, 112889, 113203, 113583, 113963, 114288, 114548, 114759, 114926, 115076, 115366, 115614, 115917, 116218, 116332, 116520, 116804, 117122, 118045, 118447, 118903, 118960, 119407, 119678, 120386, 121515, 122735, 127207, 131520, 135596, 138545, 140846, 142621, 142747, 142927, 143073, 143219, 143351, 143631, 143974, 144140, 144376, 144501, 144626, 145371, 145538, 145871, 146204, 147195, 148057, 148068, 149130, 149636, 150456, 151307, 151624, 151941, 152262, 153054, 153874, 154380] KALLAK.WSA KALLAK.WSA 75 320 128 31727 0 [318, 21982, 22755, 24155, 24890, 25635, 26379, 27095, 27714, 29321, 29936, 30526, 30995, 31458, 32445, 32904, 33350, 33829, 34270, 34708, 36320, 36660, 37098, 37617, 38196, 39388, 41130, 41900, 43380, 44310, 45247, 62906, 62950, 62994, 63037, 63080, 63313, 63359, 63386, 63721, 64347, 87865, 87876, 88075, 88823, 89972, 91390, 92686, 94043, 95232, 96587, 97979, 99303, 100486, 101870, 103146, 104418, 105652, 106904, 108248, 109742, 113846, 116036, 118113, 119776, 122567, 124505, 126332, 128206, 130990, 132911, 134514, 136344, 137609, 138076, 138137] MAL-KAL.WSA MAL-KAL.WSA 325 208 60 11487 0 [1318, 8630, 9157, 9908, 10511, 11252, 12004, 12939, 13760, 14764, 15825, 16948, 17926, 19043, 20096, 21212, 22197, 23316, 23324, 23809, 24302, 24795, 25280, 25815, 26215, 26562, 26906, 26997, 27344, 27688, 28092, 28627, 28635, 29404, 30181, 30570, 31264, 31469, 32092, 32189, 32286, 32491, 32696, 32704, 32712, 32917, 33122, 33219, 33441, 33646, 33851, 34056, 34153, 34250, 34455, 34660, 35184, 35406, 35721, 35729, 35737, 35745, 35996, 36004, 36012, 36020, 36028, 36279, 36287, 36295, 36500, 36705, 36910, 37115, 37212, 37434, 37639, 37736, 37833, 37841, 38010, 38018, 38026, 38094, 38160, 38226, 38292, 38300, 38397, 38494, 38560, 38626, 38692, 38758, 38855, 38952, 39049, 39146, 39212, 39278, 39375, 39472, 39538, 39604, 39670, 39736, 39744, 40216, 41168, 41359, 41448, 41537, 41592, 41647, 41736, 41825, 41914, 42003, 42058, 42113, 42151, 42189, 42278, 42385, 42423, 42461, 42536, 42591, 42599, 43274, 43766, 44055, 44197, 44353, 44589, 44836, 44978, 45120, 45133, 45141, 45149, 45438, 45727, 45869, 46152, 46399, 46541, 46697, 46933, 47180, 47371, 47379, 47387, 47881, 48212, 48394, 48713, 48953, 49284, 49466, 49648, 49830, 50149, 50389, 50720, 50728, 50736, 50938, 51613, 51804, 51859, 51919, 52008, 52097, 52186, 52275, 52313, 52388, 52443, 52451, 52540, 52629, 52684, 52818, 52907, 52996, 53085, 53174, 53263, 53352, 53441, 53496, 53571, 53609, 53617, 53625, 54398, 55175, 55944, 55952, 55960, 56090, 56220, 56521, 56841, 57021, 57228, 57444, 57561, 57862, 58182, 58362, 58569, 58771, 58779, 58787, 58938, 59792, 60696, 61495, 62506, 63503, 64398, 65957, 68292, 69426, 70904, 72812, 74331, 75983, 77134, 77615, 78191, 78617, 78688, 79071, 79502, 79952, 80176, 80674, 80805, 81209, 81572, 81902, 82230, 82705, 82713, 82721, 82729, 82737, 82745, 82876, 83007, 83137, 83267, 83568, 83888, 84068, 84275, 84491, 84608, 84616, 84747, 84878, 85008, 85138, 85439, 85759, 85939, 86146, 86353, 86483, 86491, 86622, 86753, 86883, 87013, 87314, 87634, 87814, 87944, 88245, 88565, 88745, 88952, 89243, 89544, 89674, 89804, 89812, 89943, 90074, 90204, 90334, 90635, 90955, 91129, 91345, 91552, 91682, 91983, 92303, 92486, 92617, 92748, 92878, 93008, 93309, 93610, 93618, 93626, 93634, 94740, 95733, 96610, 97463, 98347, 99301, 100113, 100856, 101514, 101973, 102417, 102769, 102777, 102785] Traceback (most recent call last): File "C:\Users\CMD\AppData\Local\Programs\Python\Python39-32\lib\runpy.py", line 197, in _run_module_as_main return _run_code(code, main_globals, None, File "C:\Users\CMD\AppData\Local\Programs\Python\Python39-32\lib\runpy.py", line 87, in _run_code exec(code, run_globals) File "C:\Users\CMD\Downloads\scummvm-tools-2.7.0-win32-x86_64\kyraim-develop\kyraim\wsa.py", line 278, in for idx, (im, has_palette) in enumerate( File "C:\Users\CMD\Downloads\scummvm-tools-2.7.0-win32-x86_64\kyraim-develop\kyraim\wsa.py", line 84, in decode_wsa_sequence decoded_xor = np.frombuffer( ValueError: cannot reshape array of size 33610 into shape (60,208)

BLooperZ commented 9 months ago

Thank you for your contribution I have added the mapping to the code, and I attempted to fix the errors

CruiseMaster commented 9 months ago

No problem! Extracting CPS and WSA files ran through without errors. Thank you for the code-improvements. Some of the palete-mappings seem to be wrong and I'd like to contribute the correct ones. Please tell me how I can find out which palette is used by the game in which room.