Open CruiseMaster opened 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?
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.
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
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. :-)
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'
#'*.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',
# ],
},
},
}
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
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': [
],
'patterns': {
'TITLE.WSA': [],
},
},
}
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
Thank you for your contribution I have added the mapping to the code, and I attempted to fix the errors
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.
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.