aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Gilbert2014-05-20 08:37:42 -0400
committerPaul Gilbert2014-05-20 08:37:42 -0400
commit8a08a19097b4338c73dc9456622b75233b9b0194 (patch)
treeecc7b90f90de253d33bba1a42fcfd7a766139cf6
parent555b4dfd6e076dd5ef5cfc982fb5dbf3e211d198 (diff)
parentc1890cc739d94c4310ec8933b8fca3f43b8df294 (diff)
downloadscummvm-rg350-8a08a19097b4338c73dc9456622b75233b9b0194.tar.gz
scummvm-rg350-8a08a19097b4338c73dc9456622b75233b9b0194.tar.bz2
scummvm-rg350-8a08a19097b4338c73dc9456622b75233b9b0194.zip
Merge branch 'master' into mads
-rw-r--r--.gitignore3
-rw-r--r--Makefile.common4
-rw-r--r--NEWS7
-rw-r--r--audio/decoders/quicktime.cpp8
-rw-r--r--audio/mixer.cpp8
-rw-r--r--audio/rate_arm_asm.s9
-rw-r--r--backends/fs/ps2/ps2-fs.cpp47
-rw-r--r--backends/fs/ps2/ps2-fs.h4
-rw-r--r--backends/midi/camd.cpp10
-rw-r--r--backends/platform/android/gfx.cpp4
-rw-r--r--backends/platform/ps2/DmaPipe.cpp8
-rw-r--r--backends/platform/ps2/Gs2dScreen.cpp261
-rw-r--r--backends/platform/ps2/Gs2dScreen.h15
-rw-r--r--backends/platform/ps2/GsDefs.h172
-rw-r--r--backends/platform/ps2/Makefile.gdb104
-rw-r--r--backends/platform/ps2/Makefile.ps2232
-rw-r--r--backends/platform/ps2/Makefile.ps2.dev170
-rw-r--r--backends/platform/ps2/README.PS2189
-rw-r--r--backends/platform/ps2/asyncfio.cpp14
-rw-r--r--backends/platform/ps2/asyncfio.h3
-rw-r--r--backends/platform/ps2/cd.c38
-rw-r--r--backends/platform/ps2/eecodyvdfs.h2
-rw-r--r--backends/platform/ps2/fileio.cpp48
-rw-r--r--backends/platform/ps2/fileio.h14
-rw-r--r--backends/platform/ps2/icon.cpp2
-rw-r--r--backends/platform/ps2/iop/CoDyVDfs/common/codyvdirx.h14
-rw-r--r--backends/platform/ps2/iop/CoDyVDfs/iop/cdtypes.h88
-rw-r--r--backends/platform/ps2/iop/CoDyVDfs/iop/codyvdfs.c72
-rw-r--r--backends/platform/ps2/iop/CoDyVDfs/iop/codyvdfs.h28
-rw-r--r--backends/platform/ps2/iop/CoDyVDfs/iop/fiofs.c12
-rw-r--r--backends/platform/ps2/iop/CoDyVDfs/iop/rpcfs.c12
-rw-r--r--backends/platform/ps2/iop/rpckbd/include/ps2kbd.h4
-rw-r--r--backends/platform/ps2/iop/rpckbd/src/ps2kbd.c4
-rw-r--r--backends/platform/ps2/irxboot.cpp85
-rw-r--r--backends/platform/ps2/irxboot.h13
-rw-r--r--backends/platform/ps2/module.mk20
-rw-r--r--backends/platform/ps2/ps2debug.cpp3
-rw-r--r--backends/platform/ps2/ps2debug.h8
-rw-r--r--backends/platform/ps2/ps2input.cpp70
-rw-r--r--backends/platform/ps2/ps2input.h2
-rw-r--r--backends/platform/ps2/ps2pad.cpp8
-rw-r--r--backends/platform/ps2/ps2time.cpp6
-rw-r--r--backends/platform/ps2/rpckbd.c2
-rw-r--r--backends/platform/ps2/savefilemgr.cpp33
-rw-r--r--backends/platform/ps2/sysdefs.h34
-rw-r--r--backends/platform/ps2/systemps2.cpp355
-rw-r--r--backends/platform/ps2/systemps2.h33
-rw-r--r--backends/platform/symbian/S60v3/ScummVM_A0000658_S60v3.mmp.in11
-rw-r--r--backends/platform/symbian/S60v3/ScummVM_S60v3.mmp.in8
-rw-r--r--backends/platform/symbian/S60v3/scummvm-CVS-SymbianS60v3.pkg25
-rw-r--r--backends/platform/symbian/S60v3/scummvm-CVS-SymbianS60v3_split.pkg27
-rw-r--r--backends/platform/symbian/help/ScummVM.rtf247
-rw-r--r--backends/platform/symbian/mmp/scummvm_agi.mmp.in14
-rw-r--r--backends/platform/symbian/mmp/scummvm_agos.mmp.in14
-rw-r--r--backends/platform/symbian/mmp/scummvm_avalanche.mmp.in14
-rw-r--r--backends/platform/symbian/mmp/scummvm_base.mmp.in11
-rw-r--r--backends/platform/symbian/mmp/scummvm_cge.mmp.in14
-rw-r--r--backends/platform/symbian/mmp/scummvm_cine.mmp.in15
-rw-r--r--backends/platform/symbian/mmp/scummvm_composer.mmp.in14
-rw-r--r--backends/platform/symbian/mmp/scummvm_cruise.mmp.in15
-rw-r--r--backends/platform/symbian/mmp/scummvm_draci.mmp.in14
-rw-r--r--backends/platform/symbian/mmp/scummvm_drascula.mmp.in15
-rw-r--r--backends/platform/symbian/mmp/scummvm_dreamweb.mmp.in14
-rw-r--r--backends/platform/symbian/mmp/scummvm_fullpipe.mmp.in14
-rw-r--r--backends/platform/symbian/mmp/scummvm_gob.mmp.in15
-rw-r--r--backends/platform/symbian/mmp/scummvm_groovie.mmp.in14
-rw-r--r--backends/platform/symbian/mmp/scummvm_hopkins.mmp.in14
-rw-r--r--backends/platform/symbian/mmp/scummvm_hugo.mmp.in14
-rw-r--r--backends/platform/symbian/mmp/scummvm_kyra.mmp.in15
-rw-r--r--backends/platform/symbian/mmp/scummvm_lastexpress.mmp.in14
-rw-r--r--backends/platform/symbian/mmp/scummvm_lure.mmp.in15
-rw-r--r--backends/platform/symbian/mmp/scummvm_m4.mmp.in14
-rw-r--r--backends/platform/symbian/mmp/scummvm_made.mmp.in15
-rw-r--r--backends/platform/symbian/mmp/scummvm_mohawk.mmp.in14
-rw-r--r--backends/platform/symbian/mmp/scummvm_mortevielle.mmp.in14
-rw-r--r--backends/platform/symbian/mmp/scummvm_neverhood.mmp.in14
-rw-r--r--backends/platform/symbian/mmp/scummvm_parallaction.mmp.in14
-rw-r--r--backends/platform/symbian/mmp/scummvm_pegasus.mmp.in14
-rw-r--r--backends/platform/symbian/mmp/scummvm_queen.mmp.in15
-rw-r--r--backends/platform/symbian/mmp/scummvm_saga.mmp.in15
-rw-r--r--backends/platform/symbian/mmp/scummvm_sci.mmp.in14
-rw-r--r--backends/platform/symbian/mmp/scummvm_scumm.mmp.in9
-rw-r--r--backends/platform/symbian/mmp/scummvm_sky.mmp.in15
-rw-r--r--backends/platform/symbian/mmp/scummvm_sword1.mmp.in15
-rw-r--r--backends/platform/symbian/mmp/scummvm_sword2.mmp.in15
-rw-r--r--backends/platform/symbian/mmp/scummvm_sword25.mmp.in14
-rw-r--r--backends/platform/symbian/mmp/scummvm_teenagent.mmp.in14
-rw-r--r--backends/platform/symbian/mmp/scummvm_testbed.mmp.in14
-rw-r--r--backends/platform/symbian/mmp/scummvm_tinsel.mmp.in15
-rw-r--r--backends/platform/symbian/mmp/scummvm_toltecs.mmp.in14
-rw-r--r--backends/platform/symbian/mmp/scummvm_tony.mmp.in14
-rw-r--r--backends/platform/symbian/mmp/scummvm_toon.mmp.in14
-rw-r--r--backends/platform/symbian/mmp/scummvm_touche.mmp.in14
-rw-r--r--backends/platform/symbian/mmp/scummvm_tsage.mmp.in14
-rw-r--r--backends/platform/symbian/mmp/scummvm_tucker.mmp.in14
-rw-r--r--backends/platform/symbian/mmp/scummvm_wintermute.mmp.in14
-rw-r--r--backends/platform/symbian/mmp/scummvm_zvision.mmp.in13
-rw-r--r--backends/platform/tizen/system.cpp4
-rw-r--r--backends/platform/tizen/system.h2
-rw-r--r--backends/platform/wii/osystem_gfx.cpp4
-rw-r--r--backends/plugins/elf/version.cpp8
-rw-r--r--base/version.cpp6
-rw-r--r--common/EventMapper.cpp6
-rw-r--r--common/quicktime.cpp43
-rw-r--r--common/quicktime.h9
-rw-r--r--common/scummsys.h5
-rw-r--r--common/zlib.cpp12
-rwxr-xr-xconfigure119
-rw-r--r--devtools/create_kyradat/create_kyradat.cpp2965
-rw-r--r--devtools/create_kyradat/create_kyradat.h44
-rw-r--r--devtools/create_kyradat/extract.cpp1237
-rw-r--r--devtools/create_kyradat/extract.h78
-rw-r--r--devtools/create_kyradat/games.cpp155
-rw-r--r--devtools/create_kyradat/module.mk5
-rw-r--r--devtools/create_kyradat/resources.cpp1950
-rw-r--r--devtools/create_kyradat/resources.h (renamed from devtools/create_kyradat/tables.h)26
-rw-r--r--devtools/create_kyradat/resources/eob1_dos.h1765
-rw-r--r--devtools/create_kyradat/resources/eob1_dos_english.h891
-rw-r--r--devtools/create_kyradat/resources/eob1_dos_german.h893
-rw-r--r--devtools/create_kyradat/resources/eob2_dos.h2501
-rw-r--r--devtools/create_kyradat/resources/eob2_dos_english.h1347
-rw-r--r--devtools/create_kyradat/resources/eob2_dos_german.h1414
-rw-r--r--devtools/create_kyradat/resources/hof_dos.h769
-rw-r--r--devtools/create_kyradat/resources/hof_dos_cd.h1035
-rw-r--r--devtools/create_kyradat/resources/hof_dos_cd_english.h128
-rw-r--r--devtools/create_kyradat/resources/hof_dos_cd_french.h128
-rw-r--r--devtools/create_kyradat/resources/hof_dos_cd_german.h128
-rw-r--r--devtools/create_kyradat/resources/hof_dos_cd_italian.h128
-rw-r--r--devtools/create_kyradat/resources/hof_dos_cd_russian.h128
-rw-r--r--devtools/create_kyradat/resources/hof_dos_cddemo.h1035
-rw-r--r--devtools/create_kyradat/resources/hof_dos_cddemo_english.h139
-rw-r--r--devtools/create_kyradat/resources/hof_dos_cddemo_french.h139
-rw-r--r--devtools/create_kyradat/resources/hof_dos_cddemo_german.h139
-rw-r--r--devtools/create_kyradat/resources/hof_dos_demo.h77
-rw-r--r--devtools/create_kyradat/resources/hof_dos_english.h108
-rw-r--r--devtools/create_kyradat/resources/hof_dos_french.h108
-rw-r--r--devtools/create_kyradat/resources/hof_dos_german.h108
-rw-r--r--devtools/create_kyradat/resources/hof_dos_italian.h108
-rw-r--r--devtools/create_kyradat/resources/hof_dos_russian.h133
-rw-r--r--devtools/create_kyradat/resources/hof_fmtowns.h716
-rw-r--r--devtools/create_kyradat/resources/hof_fmtowns_english.h110
-rw-r--r--devtools/create_kyradat/resources/hof_fmtowns_japanese.h110
-rw-r--r--devtools/create_kyradat/resources/hof_pc98.h656
-rw-r--r--devtools/create_kyradat/resources/hof_pc98_english.h110
-rw-r--r--devtools/create_kyradat/resources/hof_pc98_japanese.h110
-rw-r--r--devtools/create_kyradat/resources/lok_amiga.h1763
-rw-r--r--devtools/create_kyradat/resources/lok_amiga_english.h497
-rw-r--r--devtools/create_kyradat/resources/lok_amiga_german.h492
-rw-r--r--devtools/create_kyradat/resources/lok_dos.h1925
-rw-r--r--devtools/create_kyradat/resources/lok_dos_cd.h1997
-rw-r--r--devtools/create_kyradat/resources/lok_dos_cd_english.h428
-rw-r--r--devtools/create_kyradat/resources/lok_dos_cd_french.h349
-rw-r--r--devtools/create_kyradat/resources/lok_dos_cd_german.h370
-rw-r--r--devtools/create_kyradat/resources/lok_dos_cd_italian.h346
-rw-r--r--devtools/create_kyradat/resources/lok_dos_cddemo.h593
-rw-r--r--devtools/create_kyradat/resources/lok_dos_cddemo_english.h56
-rw-r--r--devtools/create_kyradat/resources/lok_dos_demo.h112
-rw-r--r--devtools/create_kyradat/resources/lok_dos_demo_english.h37
-rw-r--r--devtools/create_kyradat/resources/lok_dos_english.h335
-rw-r--r--devtools/create_kyradat/resources/lok_dos_french.h341
-rw-r--r--devtools/create_kyradat/resources/lok_dos_german.h361
-rw-r--r--devtools/create_kyradat/resources/lok_dos_italian.h366
-rw-r--r--devtools/create_kyradat/resources/lok_dos_oldfloppy.h1911
-rw-r--r--devtools/create_kyradat/resources/lok_dos_oldfloppy_russian.h328
-rw-r--r--devtools/create_kyradat/resources/lok_dos_spanish.h333
-rw-r--r--devtools/create_kyradat/resources/lok_fmtowns.h11637
-rw-r--r--devtools/create_kyradat/resources/lok_fmtowns_english.h527
-rw-r--r--devtools/create_kyradat/resources/lok_fmtowns_japanese.h527
-rw-r--r--devtools/create_kyradat/resources/lok_pc98.h2000
-rw-r--r--devtools/create_kyradat/resources/lok_pc98_japanese.h558
-rw-r--r--devtools/create_kyradat/resources/lol_dos.h1558
-rw-r--r--devtools/create_kyradat/resources/lol_dos_cd.h1625
-rw-r--r--devtools/create_kyradat/resources/lol_dos_cd_english.h68
-rw-r--r--devtools/create_kyradat/resources/lol_dos_cd_french.h68
-rw-r--r--devtools/create_kyradat/resources/lol_dos_cd_german.h68
-rw-r--r--devtools/create_kyradat/resources/lol_dos_cd_italian.h68
-rw-r--r--devtools/create_kyradat/resources/lol_dos_cd_russian.h68
-rw-r--r--devtools/create_kyradat/resources/lol_dos_demo.h54
-rw-r--r--devtools/create_kyradat/resources/lol_dos_demo_english.h15
-rw-r--r--devtools/create_kyradat/resources/lol_dos_english.h68
-rw-r--r--devtools/create_kyradat/resources/lol_dos_french.h68
-rw-r--r--devtools/create_kyradat/resources/lol_dos_german.h68
-rw-r--r--devtools/create_kyradat/resources/lol_dos_russian.h68
-rw-r--r--devtools/create_kyradat/resources/lol_fmtowns.h1600
-rw-r--r--devtools/create_kyradat/resources/lol_fmtowns_japanese.h68
-rw-r--r--devtools/create_kyradat/resources/lol_pc98.h1598
-rw-r--r--devtools/create_kyradat/resources/lol_pc98_japanese.h68
-rw-r--r--devtools/create_kyradat/resources/mr_dos_cd.h556
-rw-r--r--devtools/create_kyradat/search.cpp215
-rw-r--r--devtools/create_kyradat/search.h116
-rw-r--r--devtools/create_kyradat/tables.cpp4479
-rw-r--r--devtools/create_kyradat/types.cpp663
-rw-r--r--devtools/create_kyradat/types.h238
-rw-r--r--devtools/create_lure/create_lure_dat.cpp4
-rw-r--r--dists/engine-data/kyra.datbin486382 -> 485978 bytes
-rw-r--r--dists/engine-data/lure.datbin637824 -> 637824 bytes
-rw-r--r--doc/cz/PrectiMe3438
-rw-r--r--engines/agi/detection_tables.h1
-rw-r--r--engines/agos/agos.cpp28
-rw-r--r--engines/agos/agos.h38
-rw-r--r--engines/agos/animation.cpp2
-rw-r--r--engines/agos/debug.cpp37
-rw-r--r--engines/agos/debug.h220
-rw-r--r--engines/agos/debugger.cpp23
-rw-r--r--engines/agos/debugger.h1
-rw-r--r--engines/agos/detection_tables.h4
-rw-r--r--engines/agos/event.cpp18
-rw-r--r--engines/agos/gfx.cpp5
-rw-r--r--engines/agos/input.cpp109
-rw-r--r--engines/agos/intern.h21
-rw-r--r--engines/agos/midi.cpp4
-rw-r--r--engines/agos/oracle.cpp4
-rw-r--r--engines/agos/res.cpp15
-rw-r--r--engines/agos/saveload.cpp70
-rw-r--r--engines/agos/script.cpp5
-rw-r--r--engines/agos/script_ff.cpp69
-rw-r--r--engines/agos/sound.cpp16
-rw-r--r--engines/agos/subroutine.cpp8
-rw-r--r--engines/agos/vga.cpp8
-rw-r--r--engines/agos/zones.cpp2
-rw-r--r--engines/avalanche/animation.cpp17
-rw-r--r--engines/avalanche/animation.h5
-rw-r--r--engines/avalanche/avalanche.cpp28
-rw-r--r--engines/avalanche/avalanche.h17
-rw-r--r--engines/avalanche/avalot.cpp86
-rw-r--r--engines/avalanche/background.cpp4
-rw-r--r--engines/avalanche/background.h2
-rw-r--r--engines/avalanche/dialogs.cpp26
-rw-r--r--engines/avalanche/dropdown.cpp (renamed from engines/avalanche/menu.cpp)148
-rw-r--r--engines/avalanche/dropdown.h (renamed from engines/avalanche/menu.h)26
-rw-r--r--engines/avalanche/enums.h1
-rw-r--r--engines/avalanche/ghostroom.cpp39
-rw-r--r--engines/avalanche/ghostroom.h4
-rw-r--r--engines/avalanche/graphics.cpp201
-rw-r--r--engines/avalanche/graphics.h22
-rw-r--r--engines/avalanche/help.cpp14
-rw-r--r--engines/avalanche/highscore.cpp110
-rw-r--r--engines/avalanche/highscore.h59
-rw-r--r--engines/avalanche/mainmenu.cpp116
-rw-r--r--engines/avalanche/mainmenu.h55
-rw-r--r--engines/avalanche/module.mk6
-rw-r--r--engines/avalanche/parser.cpp39
-rw-r--r--engines/avalanche/parser.h8
-rw-r--r--engines/avalanche/shootemup.cpp59
-rw-r--r--engines/avalanche/shootemup.h4
-rw-r--r--engines/avalanche/sound.cpp1
-rw-r--r--engines/avalanche/timer.cpp32
-rw-r--r--engines/avalanche/timer.h2
-rw-r--r--engines/bbvs/bbvs.cpp36
-rw-r--r--engines/bbvs/bbvs.h3
-rw-r--r--engines/bbvs/saveload.cpp5
-rw-r--r--engines/bbvs/walk.cpp2
-rw-r--r--engines/cge/bitmap.cpp1
-rw-r--r--engines/cge/cge.cpp111
-rw-r--r--engines/cge/cge.h2
-rw-r--r--engines/cge/cge_main.cpp41
-rw-r--r--engines/cge/fileio.cpp8
-rw-r--r--engines/cge/fileio.h4
-rw-r--r--engines/cge/snail.cpp3
-rw-r--r--engines/cge/sound.cpp1
-rw-r--r--engines/cge/vga13h.cpp6
-rw-r--r--engines/cine/anim.cpp2
-rw-r--r--engines/cine/bg.cpp4
-rw-r--r--engines/cine/cine.cpp8
-rw-r--r--engines/cine/gfx.cpp6
-rw-r--r--engines/cine/pal.cpp4
-rw-r--r--engines/cine/part.cpp2
-rw-r--r--engines/cine/script_fw.cpp8
-rw-r--r--engines/cine/sound.cpp2
-rw-r--r--engines/cine/various.cpp114
-rw-r--r--engines/cine/various.h2
-rw-r--r--engines/cruise/font.cpp2
-rw-r--r--engines/cruise/function.cpp2
-rw-r--r--engines/cruise/saveload.cpp23
-rw-r--r--engines/cruise/vars.cpp1
-rw-r--r--engines/cruise/vars.h1
-rw-r--r--engines/dialogs.cpp5
-rw-r--r--engines/draci/game.cpp75
-rw-r--r--engines/draci/game.h9
-rw-r--r--engines/draci/saveload.cpp7
-rw-r--r--engines/draci/saveload.h2
-rw-r--r--engines/draci/script.cpp21
-rw-r--r--engines/draci/walking.cpp10
-rw-r--r--engines/draci/walking.h5
-rw-r--r--engines/fullpipe/behavior.cpp10
-rw-r--r--engines/fullpipe/constants.h171
-rw-r--r--engines/fullpipe/detection.cpp64
-rw-r--r--engines/fullpipe/fullpipe.cpp53
-rw-r--r--engines/fullpipe/fullpipe.h18
-rw-r--r--engines/fullpipe/gameloader.cpp51
-rw-r--r--engines/fullpipe/gameloader.h16
-rw-r--r--engines/fullpipe/gfx.cpp40
-rw-r--r--engines/fullpipe/gfx.h9
-rw-r--r--engines/fullpipe/input.cpp33
-rw-r--r--engines/fullpipe/interaction.cpp13
-rw-r--r--engines/fullpipe/inventory.cpp9
-rw-r--r--engines/fullpipe/inventory.h2
-rw-r--r--engines/fullpipe/messagehandlers.cpp72
-rw-r--r--engines/fullpipe/messages.cpp4
-rw-r--r--engines/fullpipe/messages.h1
-rw-r--r--engines/fullpipe/modal.cpp988
-rw-r--r--engines/fullpipe/modal.h109
-rw-r--r--engines/fullpipe/module.mk1
-rw-r--r--engines/fullpipe/motion.cpp856
-rw-r--r--engines/fullpipe/motion.h53
-rw-r--r--engines/fullpipe/scene.cpp108
-rw-r--r--engines/fullpipe/scene.h13
-rw-r--r--engines/fullpipe/scenes.cpp150
-rw-r--r--engines/fullpipe/scenes.h103
-rw-r--r--engines/fullpipe/scenes/scene18and19.cpp824
-rw-r--r--engines/fullpipe/scenes/scene29.cpp1125
-rw-r--r--engines/fullpipe/sound.cpp315
-rw-r--r--engines/fullpipe/sound.h19
-rw-r--r--engines/fullpipe/stateloader.cpp5
-rw-r--r--engines/fullpipe/statics.cpp346
-rw-r--r--engines/fullpipe/statics.h12
-rw-r--r--engines/fullpipe/utils.h3
-rw-r--r--engines/gob/draw.cpp5
-rw-r--r--engines/gob/draw.h1
-rw-r--r--engines/gob/inter_v1.cpp18
-rw-r--r--engines/gob/minigames/geisha/diving.cpp3
-rw-r--r--engines/gob/minigames/geisha/penetration.cpp3
-rw-r--r--engines/gob/resources.cpp4
-rw-r--r--engines/groovie/roq.cpp2
-rw-r--r--engines/groovie/roq.h2
-rw-r--r--engines/hopkins/computer.cpp48
-rw-r--r--engines/hopkins/computer.h26
-rw-r--r--engines/hopkins/files.cpp3
-rw-r--r--engines/kyra/scene_lol.cpp27
-rw-r--r--engines/kyra/sound_towns.cpp3
-rw-r--r--engines/kyra/staticres.cpp2
-rw-r--r--engines/lastexpress/data/animation.cpp2
-rw-r--r--engines/lastexpress/data/animation.h1
-rw-r--r--engines/lastexpress/data/sequence.cpp2
-rw-r--r--engines/lastexpress/data/sequence.h1
-rw-r--r--engines/lure/menu.cpp2
-rw-r--r--engines/mohawk/console.cpp28
-rw-r--r--engines/mohawk/riven.cpp82
-rw-r--r--engines/mohawk/riven.h22
-rw-r--r--engines/mohawk/riven_external.cpp6
-rw-r--r--engines/mohawk/riven_graphics.cpp2
-rw-r--r--engines/mohawk/riven_saveload.cpp79
-rw-r--r--engines/mohawk/riven_scripts.cpp4
-rw-r--r--engines/mohawk/riven_vars.cpp418
-rw-r--r--engines/mohawk/video.cpp8
-rw-r--r--engines/mohawk/video.h2
-rw-r--r--engines/neverhood/graphics.cpp1
-rw-r--r--engines/neverhood/modules/module1000.cpp12
-rw-r--r--engines/neverhood/modules/module1300.cpp4
-rw-r--r--engines/neverhood/modules/module2200.cpp2
-rw-r--r--engines/neverhood/modules/module2300.cpp28
-rw-r--r--engines/neverhood/modules/module2300.h4
-rw-r--r--engines/neverhood/modules/module2700.cpp2
-rw-r--r--engines/neverhood/modules/module2900.cpp3
-rw-r--r--engines/neverhood/modules/module3000.cpp49
-rw-r--r--engines/neverhood/modules/module3000.h4
-rw-r--r--engines/neverhood/staticdata.cpp47
-rw-r--r--engines/parallaction/debug.h1
-rw-r--r--engines/parallaction/saveload.h4
-rw-r--r--engines/pegasus/ai/ai_area.cpp2
-rw-r--r--engines/pegasus/energymonitor.cpp1
-rw-r--r--engines/pegasus/fader.cpp1
-rw-r--r--engines/pegasus/input.cpp11
-rw-r--r--engines/pegasus/input.h2
-rw-r--r--engines/pegasus/interface.cpp8
-rw-r--r--engines/pegasus/items/inventorypicture.cpp1
-rw-r--r--engines/pegasus/items/item.cpp14
-rw-r--r--engines/pegasus/items/item.h7
-rw-r--r--engines/pegasus/items/itemlist.cpp5
-rw-r--r--engines/pegasus/items/itemlist.h1
-rw-r--r--engines/pegasus/menu.cpp2
-rw-r--r--engines/pegasus/neighborhood/caldoria/caldoria.cpp10
-rw-r--r--engines/pegasus/neighborhood/caldoria/caldoriabomb.cpp15
-rw-r--r--engines/pegasus/neighborhood/caldoria/caldoriabomb.h3
-rw-r--r--engines/pegasus/neighborhood/caldoria/caldoriamessages.cpp6
-rw-r--r--engines/pegasus/neighborhood/caldoria/caldoriamessages.h2
-rw-r--r--engines/pegasus/neighborhood/mars/mars.cpp20
-rw-r--r--engines/pegasus/neighborhood/neighborhood.cpp15
-rw-r--r--engines/pegasus/neighborhood/neighborhood.h2
-rw-r--r--engines/pegasus/neighborhood/norad/delta/globegame.cpp5
-rw-r--r--engines/pegasus/neighborhood/norad/delta/globegame.h2
-rw-r--r--engines/pegasus/neighborhood/norad/delta/noraddelta.cpp18
-rw-r--r--engines/pegasus/neighborhood/norad/delta/noraddelta.h3
-rw-r--r--engines/pegasus/neighborhood/tsa/fulltsa.cpp5
-rw-r--r--engines/pegasus/neighborhood/tsa/tinytsa.cpp1
-rw-r--r--engines/pegasus/neighborhood/wsc/wsc.cpp3
-rw-r--r--engines/pegasus/pegasus.cpp55
-rw-r--r--engines/pegasus/pegasus.h1
-rw-r--r--engines/queen/debug.cpp52
-rw-r--r--engines/sci/detection_tables.h18
-rw-r--r--engines/sci/engine/kfile.cpp16
-rw-r--r--engines/sci/engine/script_patches.cpp4
-rw-r--r--engines/sci/sound/audio.cpp56
-rw-r--r--engines/sci/sound/audio.h2
-rw-r--r--engines/scumm/debugger.cpp34
-rw-r--r--engines/scumm/debugger.h4
-rw-r--r--engines/scumm/gfx.cpp2
-rw-r--r--engines/scumm/gfxARM.s2
-rw-r--r--engines/scumm/proc3ARM.s17
-rw-r--r--engines/scumm/saveload.cpp37
-rw-r--r--engines/scumm/scumm.cpp4
-rw-r--r--engines/scumm/scumm.h2
-rw-r--r--engines/scumm/smush/codec47ARM.s1
-rw-r--r--engines/scumm/vars.cpp2
-rw-r--r--engines/sky/debug.cpp33
-rw-r--r--engines/sword25/util/lua/loslib.cpp10
-rw-r--r--engines/toltecs/detection.cpp2
-rw-r--r--engines/toltecs/menu.cpp12
-rw-r--r--engines/toltecs/microtiles.cpp9
-rw-r--r--engines/toltecs/palette.cpp4
-rw-r--r--engines/toltecs/render.cpp18
-rw-r--r--engines/tony/detection_tables.h19
-rw-r--r--engines/tony/font.h1
-rw-r--r--engines/tony/game.h1
-rw-r--r--engines/tony/gfxcore.h2
-rw-r--r--engines/tony/inventory.h2
-rw-r--r--engines/tsage/debugger.cpp104
-rw-r--r--engines/tsage/detection.cpp16
-rw-r--r--engines/tsage/ringworld2/ringworld2_scenes3.cpp5
-rw-r--r--engines/tsage/saveload.cpp40
-rw-r--r--engines/tsage/saveload.h12
-rw-r--r--engines/tsage/sound.cpp211
-rw-r--r--engines/tsage/sound.h5
-rw-r--r--engines/tucker/graphics.cpp32
-rw-r--r--engines/tucker/graphics.h10
-rw-r--r--engines/tucker/locations.cpp1239
-rw-r--r--engines/tucker/resource.cpp226
-rw-r--r--engines/tucker/saveload.cpp4
-rw-r--r--engines/tucker/sequences.cpp30
-rw-r--r--engines/tucker/tucker.cpp886
-rw-r--r--engines/tucker/tucker.h264
-rw-r--r--engines/voyeur/animation.cpp13
-rw-r--r--engines/voyeur/animation.h7
-rw-r--r--engines/voyeur/data.cpp39
-rw-r--r--engines/voyeur/data.h2
-rw-r--r--engines/voyeur/debugger.cpp35
-rw-r--r--engines/voyeur/events.cpp44
-rw-r--r--engines/voyeur/events.h3
-rw-r--r--engines/voyeur/files.cpp76
-rw-r--r--engines/voyeur/files.h35
-rw-r--r--engines/voyeur/files_threads.cpp74
-rw-r--r--engines/voyeur/graphics.cpp18
-rw-r--r--engines/voyeur/graphics.h4
-rw-r--r--engines/voyeur/sound.cpp2
-rw-r--r--engines/voyeur/sound.h3
-rw-r--r--engines/voyeur/staticres.cpp2
-rw-r--r--engines/voyeur/staticres.h2
-rw-r--r--engines/voyeur/voyeur.cpp169
-rw-r--r--engines/voyeur/voyeur.h4
-rw-r--r--engines/voyeur/voyeur_game.cpp143
-rw-r--r--engines/wintermute/base/font/base_font_truetype.cpp2
-rw-r--r--engines/wintermute/detection.cpp4
-rw-r--r--engines/wintermute/detection_tables.h110
-rw-r--r--engines/wintermute/graphics/transparent_surface.cpp147
-rw-r--r--engines/wintermute/graphics/transparent_surface.h6
-rw-r--r--engines/wintermute/video/video_theora_player.cpp1
-rw-r--r--engines/zvision/fonts/truetype_font.cpp7
-rw-r--r--engines/zvision/fonts/truetype_font.h6
-rw-r--r--engines/zvision/sound/zork_raw.cpp4
-rw-r--r--graphics/scaler/Normal2xARM.s2
-rw-r--r--graphics/scaler/downscalerARM.s1
-rw-r--r--graphics/scaler/scale2xARM.s3
-rw-r--r--gui/debugger.cpp20
-rw-r--r--gui/debugger.h1
-rw-r--r--gui/dialog.cpp13
-rw-r--r--gui/themes/translations.datbin441486 -> 430660 bytes
-rw-r--r--gui/widgets/tab.cpp29
-rw-r--r--gui/widgets/tab.h7
-rw-r--r--image/bmp.cpp4
-rw-r--r--po/cs_CZ.po42
-rw-r--r--po/hu_HU.po42
-rw-r--r--test/common/util.h10
-rw-r--r--test/cxxtest_mingw.h2
-rw-r--r--video/avi_decoder.cpp5
-rw-r--r--video/flic_decoder.cpp2
475 files changed, 69018 insertions, 14907 deletions
diff --git a/.gitignore b/.gitignore
index 3868edbbda..17012f3bb7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -174,6 +174,9 @@ ipch/
LLVM32/
LLVM64/
+#Ignore gettext generated files
+/messages.mo
+
#Ignore Qt Creator project files
ScummVM.config
ScummVM.creator
diff --git a/Makefile.common b/Makefile.common
index 4071d97150..993b833f4e 100644
--- a/Makefile.common
+++ b/Makefile.common
@@ -62,6 +62,7 @@ endif
ifneq ($(findstring $(MAKEFLAGS),s),s)
ifneq ($(VERBOSE_BUILD),1)
ifneq ($(VERBOSE_BUILD),yes)
+QUIET_CC = @echo ' ' C ' ' $@;
QUIET_CXX = @echo ' ' C++ ' ' $@;
QUIET_AS = @echo ' ' AS ' ' $@;
QUIET_NASM = @echo ' ' NASM ' ' $@;
@@ -95,6 +96,9 @@ ifdef CXX_UPDATE_DEP_FLAG
# Build rule for C++ files. Makes use of CXX_UPDATE_DEP_FLAG for advanced
# dependency tracking.
+%.o: %.c
+ $(QUIET)$(MKDIR) $(*D)/$(DEPDIR)
+ $(QUIET_CC)$(CC) $(CXX_UPDATE_DEP_FLAG) $(CFLAGS) $(CPPFLAGS) -c $(<) -o $*.o
%.o: %.cpp
$(QUIET)$(MKDIR) $(*D)/$(DEPDIR)
$(QUIET_CXX)$(CXX) $(CXX_UPDATE_DEP_FLAG) $(CXXFLAGS) $(CPPFLAGS) -c $(<) -o $*.o
diff --git a/NEWS b/NEWS
index 0c352cd82a..3d4dda5e0f 100644
--- a/NEWS
+++ b/NEWS
@@ -14,6 +14,13 @@ For a more comprehensive changelog of the latest experimental code, see:
(NOTE: The change to libpng was done in version 1.6.0, but it was not
added to the NEWS file).
+ AGOS:
+ - Added mouse wheel support for inventory and save game lists.
+ - Enabled verb name display in Simon the Sorcerer 2.
+ - Fixed the Feeble Files loyalty rating in the English 4CD version. (This
+ was apparently a bug in the original game. It is currently unknown if
+ other versions still have the same problem.)
+
Broken Sword 1:
- Added back support for MPEG-2 videos.
diff --git a/audio/decoders/quicktime.cpp b/audio/decoders/quicktime.cpp
index 787b547495..547abd2aa4 100644
--- a/audio/decoders/quicktime.cpp
+++ b/audio/decoders/quicktime.cpp
@@ -585,7 +585,7 @@ bool QuickTimeAudioDecoder::AudioSampleDesc::isAudioCodecSupported() const {
if (_codecTag == MKTAG('m', 'p', '4', 'a')) {
Common::String audioType;
- switch (_parentTrack->objectTypeMP4) {
+ switch (_objectTypeMP4) {
case 0x40: // AAC
#ifdef USE_FAAD
return true;
@@ -643,13 +643,13 @@ void QuickTimeAudioDecoder::AudioSampleDesc::initCodec() {
switch (_codecTag) {
case MKTAG('Q', 'D', 'M', '2'):
#ifdef AUDIO_QDM2_H
- _codec = makeQDM2Decoder(_parentTrack->extraData);
+ _codec = makeQDM2Decoder(_extraData);
#endif
break;
case MKTAG('m', 'p', '4', 'a'):
#ifdef USE_FAAD
- if (_parentTrack->objectTypeMP4 == 0x40)
- _codec = makeAACDecoder(_parentTrack->extraData);
+ if (_objectTypeMP4 == 0x40)
+ _codec = makeAACDecoder(_extraData);
#endif
break;
default:
diff --git a/audio/mixer.cpp b/audio/mixer.cpp
index 0620d07a29..16cf5640eb 100644
--- a/audio/mixer.cpp
+++ b/audio/mixer.cpp
@@ -333,7 +333,7 @@ void MixerImpl::stopHandle(SoundHandle handle) {
}
void MixerImpl::muteSoundType(SoundType type, bool mute) {
- assert(0 <= type && type < ARRAYSIZE(_soundTypeSettings));
+ assert(0 <= (int)type && (int)type < ARRAYSIZE(_soundTypeSettings));
_soundTypeSettings[type].mute = mute;
for (int i = 0; i != NUM_CHANNELS; ++i) {
@@ -343,7 +343,7 @@ void MixerImpl::muteSoundType(SoundType type, bool mute) {
}
bool MixerImpl::isSoundTypeMuted(SoundType type) const {
- assert(0 <= type && type < ARRAYSIZE(_soundTypeSettings));
+ assert(0 <= (int)type && (int)type < ARRAYSIZE(_soundTypeSettings));
return _soundTypeSettings[type].mute;
}
@@ -468,7 +468,7 @@ bool MixerImpl::hasActiveChannelOfType(SoundType type) {
}
void MixerImpl::setVolumeForSoundType(SoundType type, int volume) {
- assert(0 <= type && type < ARRAYSIZE(_soundTypeSettings));
+ assert(0 <= (int)type && (int)type < ARRAYSIZE(_soundTypeSettings));
// Check range
if (volume > kMaxMixerVolume)
@@ -489,7 +489,7 @@ void MixerImpl::setVolumeForSoundType(SoundType type, int volume) {
}
int MixerImpl::getVolumeForSoundType(SoundType type) const {
- assert(0 <= type && type < ARRAYSIZE(_soundTypeSettings));
+ assert(0 <= (int)type && (int)type < ARRAYSIZE(_soundTypeSettings));
return _soundTypeSettings[type].volume;
}
diff --git a/audio/rate_arm_asm.s b/audio/rate_arm_asm.s
index ac999f66e4..a727209d39 100644
--- a/audio/rate_arm_asm.s
+++ b/audio/rate_arm_asm.s
@@ -36,6 +36,7 @@
.global _ARM_LinearRate_S
.global _ARM_LinearRate_R
+ .align 2
_ARM_CopyRate_M:
@ r0 = len
@ r1 = obuf
@@ -73,6 +74,7 @@ CopyRate_M_loop:
LDMFD r13!,{r4-r7,PC}
+ .align 2
_ARM_CopyRate_S:
@ r0 = len
@ r1 = obuf
@@ -111,6 +113,7 @@ CopyRate_S_loop:
LDMFD r13!,{r4-r7,PC}
+ .align 2
_ARM_CopyRate_R:
@ r0 = len
@ r1 = obuf
@@ -149,6 +152,7 @@ CopyRate_R_loop:
LDMFD r13!,{r4-r7,PC}
+ .align 2
_ARM_SimpleRate_M:
@ r0 = AudioStream &input
@ r1 = input.readBuffer
@@ -229,6 +233,7 @@ SimpleRate_M_read:
B SimpleRate_M_read_return
+ .align 2
_ARM_SimpleRate_S:
@ r0 = AudioStream &input
@ r1 = input.readBuffer
@@ -308,6 +313,7 @@ SimpleRate_S_read:
+ .align 2
_ARM_SimpleRate_R:
@ r0 = AudioStream &input
@ r1 = input.readBuffer
@@ -386,6 +392,7 @@ SimpleRate_R_read:
B SimpleRate_R_read_return
+ .align 2
_ARM_LinearRate_M:
@ r0 = AudioStream &input
@ r1 = input.readBuffer
@@ -478,6 +485,7 @@ LinearRate_M_read:
BLT LinearRate_M_end
B LinearRate_M_read_return
+ .align 2
_ARM_LinearRate_S:
@ r0 = AudioStream &input
@ r1 = input.readBuffer
@@ -580,6 +588,7 @@ LinearRate_S_read:
BLT LinearRate_S_end
B LinearRate_S_read_return
+ .align 2
_ARM_LinearRate_R:
@ r0 = AudioStream &input
@ r1 = input.readBuffer
diff --git a/backends/fs/ps2/ps2-fs.cpp b/backends/fs/ps2/ps2-fs.cpp
index 7cbd205ecb..9b6e1270f1 100644
--- a/backends/fs/ps2/ps2-fs.cpp
+++ b/backends/fs/ps2/ps2-fs.cpp
@@ -22,9 +22,9 @@
#if defined(__PLAYSTATION2__)
-// Disable symbol overrides so that we can use system headers.
-#define FORBIDDEN_SYMBOL_ALLOW_ALL
-
+// Disable symbol overrides so that we can use "FILE"
+#define FORBIDDEN_SYMBOL_EXCEPTION_FILE
+#define FORBIDDEN_SYMBOL_EXCEPTION_printf
#include "backends/fs/ps2/ps2-fs.h"
@@ -58,13 +58,13 @@ const char *_lastPathComponent(const Common::String &str) {
cur++;
- // printf("lastPathComponent path=%s token=%s\n", start, cur);
+ // dbg_printf("lastPathComponent path=%s token=%s\n", start, cur);
return cur;
}
Ps2FilesystemNode::Ps2FilesystemNode() {
- printf("NEW FSNODE()\n");
+ dbg_printf("NEW FSNODE()\n");
_isHere = true;
_isDirectory = true;
@@ -75,7 +75,7 @@ Ps2FilesystemNode::Ps2FilesystemNode() {
}
Ps2FilesystemNode::Ps2FilesystemNode(const Common::String &path) {
- printf("NEW FSNODE(%s)\n", path.c_str());
+ dbg_printf("NEW FSNODE(%s)\n", path.c_str());
_path = path;
@@ -107,7 +107,7 @@ Ps2FilesystemNode::Ps2FilesystemNode(const Common::String &path) {
}
Ps2FilesystemNode::Ps2FilesystemNode(const Common::String &path, bool verify) {
- printf("NEW FSNODE(%s, %d)\n", path.c_str(), verify);
+ dbg_printf("NEW FSNODE(%s, %d)\n", path.c_str(), verify);
_path = path;
@@ -164,24 +164,24 @@ void Ps2FilesystemNode::doverify(void) {
_verified = true;
- printf(" verify: %s -> ", _path.c_str());
+ dbg_printf(" verify: %s -> ", _path.c_str());
#if 0
if (_path.empty()) {
- printf("PlayStation 2 Root !\n");
+ dbg_printf("PlayStation 2 Root !\n");
_verified = true;
return;
}
if (_path.lastChar() == ':') {
- printf("Dev: %s\n", _path.c_str());
+ dbg_printf("Dev: %s\n", _path.c_str());
_verified = true;
return;
}
#endif
if (_path[3] != ':' && _path[4] != ':') {
- printf("relative path !\n");
+ dbg_printf("relative path !\n");
_isHere = false;
_isDirectory = false;
return;
@@ -204,7 +204,7 @@ void Ps2FilesystemNode::doverify(void) {
fileXioWaitAsync(FXIO_WAIT, &fd);
if (!fd) {
- printf(" yes [stat]\n");
+ dbg_printf(" yes [stat]\n");
return true;
}
break;
@@ -218,11 +218,11 @@ void Ps2FilesystemNode::doverify(void) {
#if 1
fd = fio.open(_path.c_str(), O_RDONLY);
- printf("_path = %s -- fio.open -> %d\n", _path.c_str(), fd);
+ dbg_printf("_path = %s -- fio.open -> %d\n", _path.c_str(), fd);
if (fd >=0) {
fio.close(fd);
- printf(" yes [open]\n");
+ dbg_printf(" yes [open]\n");
_isHere = true;
if (medium==MC_DEV && _path.lastChar()=='/')
_isDirectory = true;
@@ -234,7 +234,7 @@ void Ps2FilesystemNode::doverify(void) {
fd = fio.dopen(_path.c_str());
if (fd >=0) {
fio.dclose(fd);
- printf(" yes [dopen]\n");
+ dbg_printf(" yes [dopen]\n");
_isHere = true;
_isDirectory = true;
return;
@@ -267,13 +267,13 @@ void Ps2FilesystemNode::doverify(void) {
_isHere = false;
_isDirectory = false;
- printf(" no\n");
+ dbg_printf(" no\n");
return;
}
AbstractFSNode *Ps2FilesystemNode::getChild(const Common::String &n) const {
- printf("getChild : %s\n", n.c_str());
+ dbg_printf("getChild : %s\n", n.c_str());
if (!_isDirectory)
return NULL;
@@ -328,13 +328,14 @@ AbstractFSNode *Ps2FilesystemNode::getChild(const Common::String &n) const {
bool Ps2FilesystemNode::getChildren(AbstractFSList &list, ListMode mode, bool hidden) const {
//TODO: honor the hidden flag
- // printf("getChildren\n");
+ // dbg_printf("getChildren\n");
if (!_isDirectory)
return false;
if (_isRoot) {
- list.push_back(new Ps2FilesystemNode("cdfs:"));
+ if (g_systemPs2->cdPresent())
+ list.push_back(new Ps2FilesystemNode("cdfs:"));
if (g_systemPs2->hddPresent())
list.push_back(new Ps2FilesystemNode("pfs0:"));
@@ -342,7 +343,7 @@ bool Ps2FilesystemNode::getChildren(AbstractFSList &list, ListMode mode, bool hi
if (g_systemPs2->usbMassPresent())
list.push_back(new Ps2FilesystemNode("mass:"));
- if (g_systemPs2->getBootDevice()==HOST_DEV || g_systemPs2->netPresent())
+ if (g_systemPs2->netPresent())
list.push_back(new Ps2FilesystemNode("host:"));
if (g_systemPs2->mcPresent())
@@ -357,7 +358,7 @@ bool Ps2FilesystemNode::getChildren(AbstractFSList &list, ListMode mode, bool hi
else
fd = fio.dopen(_path.c_str());
- // printf("dopen = %d\n", fd);
+ // dbg_printf("dopen = %d\n", fd);
if (fd >= 0) {
iox_dirent_t dirent;
@@ -399,7 +400,7 @@ bool Ps2FilesystemNode::getChildren(AbstractFSList &list, ListMode mode, bool hi
}
AbstractFSNode *Ps2FilesystemNode::getParent() const {
- // printf("Ps2FilesystemNode::getParent : path = %s\n", _path.c_str());
+ // dbg_printf("Ps2FilesystemNode::getParent : path = %s\n", _path.c_str());
if (_isRoot)
return new Ps2FilesystemNode(this); // FIXME : 0 ???
@@ -411,7 +412,7 @@ AbstractFSNode *Ps2FilesystemNode::getParent() const {
const char *end = _lastPathComponent(_path);
Common::String str(start, end - start);
- // printf(" parent = %s\n", str.c_str());
+ // dbg_printf(" parent = %s\n", str.c_str());
return new Ps2FilesystemNode(str, true);
}
diff --git a/backends/fs/ps2/ps2-fs.h b/backends/fs/ps2/ps2-fs.h
index 4c1a9bba96..63b866ba5b 100644
--- a/backends/fs/ps2/ps2-fs.h
+++ b/backends/fs/ps2/ps2-fs.h
@@ -70,12 +70,12 @@ public:
virtual Common::String getPath() const { return _path; }
virtual bool exists() const {
- // printf("%s : is %d\n", _path.c_str(), _isHere);
+ // dbg_printf("%s : is %d\n", _path.c_str(), _isHere);
return _isHere;
}
virtual bool isDirectory() const {
- // printf("%s : dir %d\n", _path.c_str(), _isDirectory);
+ // dbg_printf("%s : dir %d\n", _path.c_str(), _isDirectory);
return _isDirectory;
}
diff --git a/backends/midi/camd.cpp b/backends/midi/camd.cpp
index 2c5728990c..d91aef5533 100644
--- a/backends/midi/camd.cpp
+++ b/backends/midi/camd.cpp
@@ -31,11 +31,13 @@
#include "common/error.h"
#include "common/endian.h"
#include "common/util.h"
+#include "common/str.h"
#include "audio/musicplugin.h"
#include "audio/mpu401.h"
#include <proto/camd.h>
#include <proto/exec.h>
+#include <proto/dos.h>
/*
* CAMD sequencer driver
@@ -56,6 +58,7 @@ private:
struct Library *_CamdBase;
struct CamdIFace *_ICamd;
struct MidiLink *_midi_link;
+ char _outport[128];
char *getDevice();
void closeAll();
@@ -155,13 +158,18 @@ char *MidiDriver_CAMD::getDevice() {
if (strstr(dev, "out") != NULL) {
// This is an output device, return this
- retname = dev;
+ Common::strlcpy(_outport, dev, sizeof(_outport));
+ retname = _outport;
} else {
// Search the next one
cluster = _ICamd->NextCluster(cluster);
}
}
+ // If the user has a preference outport set, use this instead
+ if(IDOS->GetVar("DefMidiOut", _outport, 128, 0))
+ retname = _outport;
+
_ICamd->UnlockCAMD(key);
}
diff --git a/backends/platform/android/gfx.cpp b/backends/platform/android/gfx.cpp
index 92293493f0..b71a98338b 100644
--- a/backends/platform/android/gfx.cpp
+++ b/backends/platform/android/gfx.cpp
@@ -759,8 +759,8 @@ void OSystem_Android::setMouseCursor(const void *buf, uint w, uint h,
uint16 *d = (uint16 *)tmp;
for (uint16 y = 0; y < h; ++y, d += pitch / 2 - w)
for (uint16 x = 0; x < w; ++x, d++)
- if (*s++ != (keycolor & 0xffff))
- *d |= 1;
+ if (*s++ == (keycolor & 0xffff))
+ *d = 0;
_mouse_texture->updateBuffer(0, 0, w, h, tmp, pitch);
diff --git a/backends/platform/ps2/DmaPipe.cpp b/backends/platform/ps2/DmaPipe.cpp
index e0a7d97807..a4bcf6299e 100644
--- a/backends/platform/ps2/DmaPipe.cpp
+++ b/backends/platform/ps2/DmaPipe.cpp
@@ -50,7 +50,7 @@ DmaPipe::DmaPipe(uint32 size) {
size &= ~0x1F;
_buf = (uint64 *)memalign(64, size);
_curPipe = 0;
- _pipes[0] = new SinglePipe(_buf, size >> 4);
+ _pipes[0] = new SinglePipe(_buf, size >> 4);
_pipes[1] = new SinglePipe(_buf + (size >> 4), size >> 4);
// reset DMAC Channel 2
@@ -80,7 +80,7 @@ void DmaPipe::uploadTex(uint32 dest, uint16 bufWidth, uint16 destOfsX, uint16 de
*(_pipes[_curPipe]->_chainHead) |= (1 << 28);
_pipes[_curPipe]->setGifLoopTag(4);
_pipes[_curPipe]->setReg(GPR_BITBLTBUF, GS_SET_DEST_BLTBUF((dest/256) & 0x3fff, (bufWidth/64) & 0x3f, pixelFmt & 0x3f));
- _pipes[_curPipe]->setReg( GPR_TRXPOS, GS_SET_DEST_TRXPOS(destOfsX, destOfsY));
+ _pipes[_curPipe]->setReg( GPR_TRXPOS, GS_SET_DEST_TRXPOS(destOfsX, destOfsY));
_pipes[_curPipe]->setReg( GPR_TRXREG, GS_SET_TRXREG(width, height));
_pipes[_curPipe]->setReg( GPR_TRXDIR, 0);
@@ -194,7 +194,7 @@ void DmaPipe::setConfig(uint8 prModeCont, uint8 dither, uint8 colClamp) {
// set some defaults
// alpha blending formula: (A-B) * C + D
- // set: A = dest pixel, b = 0, C = source alpha, D = source pixel, fix = don't care
+ // set: A = dest pixel, b = 0, C = source alpha, D = source pixel, fix = don't care
_pipes[_curPipe]->setReg(GPR_ALPHA_1, GS_SET_ALPHA(DEST_COLOR, ZERO_COLOR, SOURCE_ALPHA, SOURCE_COLOR, 0));
_pipes[_curPipe]->setReg( GPR_PRIM, 0);
@@ -279,7 +279,7 @@ void SinglePipe::appendChain(uint64 dmaTag) {
void SinglePipe::setReg(uint64 reg, uint64 value) {
*_bufPos++ = value;
*_bufPos++ = reg;
- (*_chainSize)++;
+ (*_chainSize)++;
}
void SinglePipe::setListReg(uint64 value1, uint64 value2) {
diff --git a/backends/platform/ps2/Gs2dScreen.cpp b/backends/platform/ps2/Gs2dScreen.cpp
index 7eeedc1944..a4ec23329a 100644
--- a/backends/platform/ps2/Gs2dScreen.cpp
+++ b/backends/platform/ps2/Gs2dScreen.cpp
@@ -32,6 +32,7 @@
#include "DmaPipe.h"
#include "GsDefs.h"
#include "graphics/surface.h"
+#include "graphics/colormasks.h"
#include "backends/platform/ps2/ps2debug.h"
extern void *_gp;
@@ -43,12 +44,49 @@ enum Buffers {
PRINTF
};
+/*
+ Supported modes:
+
+ Mode #1 = SDTV progressive (NTSC: 224p / PAL: 256p)
+ Mode #2 = SDTV interlaced (NTSC: 448i / PAL: 512i) <- default
+ Mode #3 = EDTV progressive (NTSC: 480p / PAL: 576p)
+ Mode #4 = HDTV progressive (720p)
+ Mode #5 = HDTV interlaced (1080i)
+ Mode #6 = VESA (640x480@60)
+ Mode #7 = VESA (800x600@60)
+ Mode #8 = VESA (1024x768@60)
+*/
+
+static ps2_mode_t ps2_mode[] = {
+
+ // -> w, h, interlaced, pitch, mode, vck, magh, magv, dx, dy
+
+ /* #1 : SDTV - progressive */
+ { 640, 224, 0, 640, 0x02, 2560, 4, 0, 160 /*158*/, 25 /*22*/ }, /* NTSC */
+ { 640, 256, 0, 640, 0x03, 2560, 4, 0, 170 /*163*/, 35 /*36*/ }, /* PAL */
+
+ /* #2 : SDTV - interlaced */
+ { 640, 448, 1, 640, 0x02, 2560, 4, 0, 156 /*158*/, 50 /*45*/ }, /* NTSC */
+ { 640, 512, 1, 640, 0x03, 2560, 4, 0, 170 /*163*/, 70 /*72*/ }, /* PAL */
+
+ /* #3 : EDTV */
+ { 720, 480, 0, 768, 0x50, 1440, 2, 0, 58, 35 }, /* NTSC */
+ /* { 720, 576, 0, 768, 0x53, 1440, 2, 0, 62, 45 }, */ /* PAL : full */
+ /* { 656, 576, 0, 704, 0x53, 1312, 2, 0, 62, 45 }, */ /* PAL : redux @ (0,0) */
+ { 656, 576, 0, 704, 0x53, 1312, 2, 0, 78 /*314*/, 45 }, /* PAL : redux @ center'd */
+
+ /* #4/#5 : HDTV */
+ { 1280, 720, 0, 1280, 0x52, 1280, 1, 0, 76 /*302*/, 24 },
+ { 1920, 1080, 1, 1920, 0x51, 1920, 1, 0, 60 /*236*/ /*238*/, 40 },
+
+ /* #6/#7/#8 : VESA 4:3 @ 60Hz */
+ { 640, 480, 0, 640, 0x1A, 1280, 2, 0, 70 /*276*/, 34 },
+ { 800, 600, 0, 832, 0x2B, 1600, 2, 0, 105 /*420*/, 26 },
+ { 1024, 768, 0, 1024, 0x3B, 2048, 2, 0, 144 /*580*/, 34 }
+};
+
#define ANIM_STACK_SIZE (1024 * 32)
-#define DEFAULT_PAL_X 175
-#define DEFAULT_PAL_Y 72 // 60
-#define DEFAULT_NTSC_X 165
-#define DEFAULT_NTSC_Y 45
#define ORG_X 256
#define ORG_Y 256
#define ORIGIN_X (ORG_X << 4)
@@ -77,7 +115,7 @@ void runAnimThread(Gs2dScreen *param);
int vblankStartHandler(int cause) {
// start of VBlank period
- if (g_VblankCmd) { // is there a new image waiting?
+ if (g_VblankCmd) { // is there a new image waiting?
GS_DISPFB1 = g_VblankCmd; // show it.
g_VblankCmd = 0;
iSignalSema(g_VblankSema);
@@ -87,8 +125,8 @@ int vblankStartHandler(int cause) {
int dmacHandler(int channel) {
if (g_DmacCmd && (channel == 2)) { // GS DMA transfer finished,
- g_VblankCmd = g_DmacCmd; // we want to show the image
- g_DmacCmd = 0; // when the next vblank occurs
+ g_VblankCmd = g_DmacCmd; // we want to show the image
+ g_DmacCmd = 0; // when the next vblank occurs
iSignalSema(g_DmacSema);
}
return 0;
@@ -102,7 +140,8 @@ int vblankEndHandler(int cause) {
void createAnimThread(Gs2dScreen *screen);
-Gs2dScreen::Gs2dScreen(uint16 width, uint16 height, TVMode mode) {
+Gs2dScreen::Gs2dScreen(uint16 width, uint16 height) {
+
_systemQuit = false;
ee_sema_t newSema;
newSema.init_count = 1;
@@ -125,12 +164,15 @@ Gs2dScreen::Gs2dScreen(uint16 width, uint16 height, TVMode mode) {
EnableIntc(INT_VBLANK_END);
EnableDmac(2);
+ _tvMode = 0; // force detection
+ _gfxMode = 0;
+
_width = width;
_height = height;
_pitch = (width + 127) & ~127;
_screenBuf = (uint8 *)memalign(64, _width * _height);
- _overlayBuf = (uint16 *)memalign(64, _width * _height * 2);
+ _overlayBuf = (uint16 *)memalign(64, _pitch * _height * 2);
_clut = (uint32 *)memalign(64, 256 * 4);
memset(_screenBuf, 0, _width * _height);
@@ -138,32 +180,102 @@ Gs2dScreen::Gs2dScreen(uint16 width, uint16 height, TVMode mode) {
_clut[1] = GS_RGBA(0xC0, 0xC0, 0xC0, 0);
clearOverlay();
- if (mode == TV_DONT_CARE) {
-#if 1
char romver[8];
+ uint16 biosver;
int fd = fioOpen("rom0:ROMVER", O_RDONLY);
fioRead(fd, &romver, 8);
fioClose(fd);
+ biosver=atoi(romver);
+ printf("ROMVER = %s\n", romver);
+ printf("ver = %d\n", atoi(romver));
+
+ if (!_tvMode) { // determine TV standard first
+ if (ConfMan.hasKey("tv_mode", "PlayStation2")) {
+ const char *tvname = ConfMan.get("tv_mode", "PlayStation2").c_str();
+
+ if (strcmp("ntsc", tvname) == 0) {
+ _tvMode = 2;
+ }
+ else if (strcmp("pal", tvname) == 0) {
+ _tvMode = 1;
+ }
+ else
+ _tvMode = 0;
+ }
+
+ if (!_tvMode) {
+ if (romver[4] == 'E')
+ _tvMode = TV_PAL;
+ else
+ _tvMode = TV_NTSC;
+
+ printf("Auto-detect TV mode: PSX:%c PS2:%c\n", *(char *)(0x1FC7FF52), romver[4]);
+ }
+ }
+
+ uint8 mode;
+ if (!_gfxMode) { // determine GFX mode next
+ if (ConfMan.hasKey("gfx_mode", "PlayStation2")) {
+ _gfxMode = ConfMan.getInt("gfx_mode", "PlayStation2");
+ // TODO: free more video mem to support these modes
+ if (_gfxMode == 4 || _gfxMode == 5) {
+ printf("Not enough video mem: using EDTV (3)\n");
+ _gfxMode = 3;
+ }
+ else
+ if (_gfxMode == 7 || _gfxMode == 8) {
+ printf("Not enough video mem: using VGA (6)\n");
+ _gfxMode = 6;
+ }
- if (romver[4] == 'E')
- _tvMode = TV_PAL;
- else
- _tvMode = TV_NTSC;
-#else
- if (PAL_NTSC_FLAG == 'E')
- _tvMode = TV_PAL;
+ if (_gfxMode < 1 || _gfxMode > 8) _gfxMode = 2;
+ else
+ if (_gfxMode == 4 || _gfxMode == 5) _tvMode = TV_HDTV;
+ else
+ if (_gfxMode > 5) _tvMode = TV_VESA;
+ }
else
- _tvMode = TV_NTSC;
-#endif
- } else
- _tvMode = mode;
+ _gfxMode = 2;
+ }
+
+ // Remap Mode Index
+ mode = _gfxMode;
+ if (_tvMode == TV_NTSC) {
+ mode = (mode * 2) - 1;
+ }
+ else if (_tvMode == TV_PAL) {
+ mode = (mode * 2);
+ }
+ else if (_tvMode == TV_HDTV) {
+ mode += 3;
+ }
+ else /* VESA */ {
+ _tvMode = TV_VESA;
+ mode += 3;
+ }
+ mode--;
+
+ switch (_tvMode) {
+ case TV_NTSC:
+ printf("Setting up TV mode: NTSC\n");
+ break;
+ case TV_PAL:
+ printf("Setting up TV mode: PAL\n");
+ break;
+ case TV_HDTV:
+ printf("Setting up TV mode: HDTV\n");
+ break;
+ case TV_VESA:
+ printf("Setting up TV mode: VESA\n");
+ break;
+ }
+
+ _tvWidth = ps2_mode[mode].w;
+ _tvHeight = ps2_mode[mode].h;
+ _tvPitch = ps2_mode[mode].pitch;
- // _tvMode = TV_NTSC;
- printf("Setting up %s mode\n", (_tvMode == TV_PAL) ? "PAL" : "NTSC");
+ printf("Setting up GFX mode: %d x %d\n", _tvWidth, _tvHeight);
- // set screen size, 640x512 for pal, 640x448 for ntsc
- _tvWidth = 640;
- _tvHeight = ((_tvMode == TV_PAL) ? 512 /*544*/ : 448);
kFullScreen[0].z = kFullScreen[1].z = 0;
kFullScreen[0].x = ORIGIN_X;
kFullScreen[0].y = ORIGIN_Y;
@@ -176,7 +288,7 @@ Gs2dScreen::Gs2dScreen(uint16 width, uint16 height, TVMode mode) {
_texCoords[1].u = SCALE(_width);
_texCoords[1].v = SCALE(_height);
- uint32 tvFrameSize = _tvWidth * _tvHeight * 4; // 32 bits per pixel
+ uint32 tvFrameSize = _tvPitch * _tvHeight * 4; // 32 bits per pixel
// setup frame buffer pointers
_frameBufPtr[0] = 0;
@@ -186,7 +298,7 @@ Gs2dScreen::Gs2dScreen(uint16 width, uint16 height, TVMode mode) {
_clutPtrs[TEXT] = _clutPtrs[SCREEN] + 0x2000;
_texPtrs[SCREEN] = _clutPtrs[SCREEN] + 0x3000;
_texPtrs[TEXT] = 0; // these buffers are stored in the alpha gaps of the frame buffers
- _texPtrs[MOUSE] = 128 * 256 * 4;
+ _texPtrs[MOUSE] = 128 * 256 * 4;
_texPtrs[PRINTF] = _texPtrs[MOUSE] + M_SIZE * M_SIZE * 4;
_showOverlay = false;
@@ -202,12 +314,12 @@ Gs2dScreen::Gs2dScreen(uint16 width, uint16 height, TVMode mode) {
_overlayFormat.rLoss = 3;
_overlayFormat.gLoss = 3;
_overlayFormat.bLoss = 3;
- _overlayFormat.aLoss = 7;
+ _overlayFormat.aLoss = 8; // 7
_overlayFormat.rShift = 0;
_overlayFormat.gShift = 5;
_overlayFormat.bShift = 10;
- _overlayFormat.aShift = 15;
+ _overlayFormat.aShift = 0; // 15
// setup hardware now.
GS_CSR = CSR_RESET; // Reset GS
@@ -215,22 +327,39 @@ Gs2dScreen::Gs2dScreen(uint16 width, uint16 height, TVMode mode) {
GS_CSR = 0;
GsPutIMR(0x7F00);
- uint16 dispPosX, dispPosY;
- if (_tvMode == TV_PAL) {
- SetGsCrt(GS_INTERLACED, 3, 0);
- dispPosX = DEFAULT_PAL_X;
- dispPosY = DEFAULT_PAL_Y;
- } else {
- SetGsCrt(GS_INTERLACED, 2, 0);
- dispPosX = DEFAULT_NTSC_X;
- dispPosY = DEFAULT_NTSC_Y;
+ if (biosver < 220 && ps2_mode[mode].mode == 0x53) { // EDTV PAL : mode not in BIOS < 2.20
+ // no worries... we work in magic ;-)
+ /* 720x576p */
+ asm ("di");
+ asm ("sync.l; sync.p");
+ GS_PMODE = 0;
+ asm ("sync.l; sync.p");
+ GS_SMODE1 = 0x1742890504;
+ asm ("sync.l; sync.p");
+ GS_SMODE2 = 0;
+ GS_SYNCH1 = 0x402E02003C827;
+ asm ("sync.l; sync.p");
+ GS_SYNCH2 = 0x19CA67;
+ asm ("sync.l; sync.p");
+ GS_SYNCV = 0xA9000002700005;
+ asm ("sync.l; sync.p");
+ GS_SRFSH = 4;
+ asm ("sync.l; sync.p");
+ GS_SMODE1 = 0x1742880504;
+ asm ("sync.l; sync.p");
+ asm ("sync.l; sync.p");
+ GS_SMODE2 = 0;
+ asm("ei");
+ }
+ else { // BIOS
+ SetGsCrt(ps2_mode[mode].interlaced, ps2_mode[mode].mode, 0); // ps2_mode[mode].interlaced);
}
asm("di");
GS_PMODE = GS_SET_PMODE(1, 0, 1, 1, 0, 255);
GS_BGCOLOUR = GS_RGBA(0, 0, 0, 0);
- GS_DISPLAY1 = GS_SET_DISPLAY(_tvWidth, _tvHeight, dispPosX, dispPosY);
+ GS_DISPLAY1 = GS_SET_DISPLAY_MODE(ps2_mode[mode]);
asm("ei");
_curDrawBuf = 0;
@@ -238,7 +367,7 @@ Gs2dScreen::Gs2dScreen(uint16 width, uint16 height, TVMode mode) {
_dmaPipe->setOrigin(ORIGIN_X, ORIGIN_Y);
_dmaPipe->setConfig(1, 0, 1);
_dmaPipe->setScissorRect(0, 0, _tvWidth - 1, _tvHeight - 1);
- _dmaPipe->setDrawBuffer(_frameBufPtr[_curDrawBuf], _tvWidth, GS_PSMCT24, 0);
+ _dmaPipe->setDrawBuffer(_frameBufPtr[_curDrawBuf], _tvPitch, GS_PSMCT24, 0);
_dmaPipe->flush();
_clutChanged = _screenChanged = _overlayChanged = true;
@@ -249,24 +378,33 @@ Gs2dScreen::Gs2dScreen(uint16 width, uint16 height, TVMode mode) {
createAnimTextures();
// create animation thread
- ee_thread_t animationThread, thisThread;
+ #ifdef __NEW_PS2SDK__
+ ee_thread_t animThread;
+ ee_thread_status_t thisThread;
+ #else
+ ee_thread_t animThread, thisThread;
+ #endif
ReferThreadStatus(GetThreadId(), &thisThread);
- _animStack = malloc(ANIM_STACK_SIZE);
- animationThread.initial_priority = thisThread.current_priority - 3;
- animationThread.stack = _animStack;
- animationThread.stack_size = ANIM_STACK_SIZE;
- animationThread.func = (void *)runAnimThread;
- animationThread.gp_reg = &_gp;
+ _animStack = memalign(64, ANIM_STACK_SIZE);
+ animThread.initial_priority = thisThread.current_priority - 3;
+ animThread.stack = _animStack;
+ animThread.stack_size = ANIM_STACK_SIZE;
+ animThread.func = (void *)runAnimThread;
+ animThread.gp_reg = &_gp;
- _animTid = CreateThread(&animationThread);
+ _animTid = CreateThread(&animThread);
assert(_animTid >= 0);
StartThread(_animTid, this);
}
void Gs2dScreen::quit(void) {
_systemQuit = true;
+ #ifdef __NEW_PS2SDK__
+ ee_thread_status_t statAnim;
+ #else
ee_thread_t statAnim;
+ #endif
do { // wait until thread called ExitThread()
SignalSema(g_AnimSema);
ReferThreadStatus(_animTid, &statAnim);
@@ -296,15 +434,15 @@ void Gs2dScreen::createAnimTextures(void) {
for (int i = 0; i < 16; i++) {
uint32 *destPos = (uint32 *)buf;
for (int ch = 15; ch >= 0; ch--) {
- const uint32 *src = (const uint32*)(_binaryData + ((_binaryPattern[i] >> ch) & 1) * 4 * 14);
+ const uint32 *src = (const uint32 *)(_binaryData + ((_binaryPattern[i] >> ch) & 1) * 4 * 14);
for (int line = 0; line < 14; line++)
destPos[line << 4] = src[line];
destPos++;
}
if (!(i & 1))
- _dmaPipe->uploadTex( vramDest, 128, 0, 0, GS_PSMT4HH, buf, 128, 16);
+ _dmaPipe->uploadTex( vramDest, 128, 0, 0, GS_PSMT4HH, buf, 128, 16);
else {
- _dmaPipe->uploadTex( vramDest, 128, 0, 0, GS_PSMT4HL, buf, 128, 16);
+ _dmaPipe->uploadTex( vramDest, 128, 0, 0, GS_PSMT4HL, buf, 128, 16);
vramDest += 128 * 16 * 4;
}
_dmaPipe->flush();
@@ -506,10 +644,10 @@ void Gs2dScreen::updateScreen(void) {
WaitSema(g_DmacSema); // wait for dma transfer, if there's one running
WaitSema(g_VblankSema); // wait if there's already an image waiting for vblank
- g_DmacCmd = GS_SET_DISPFB(_frameBufPtr[_curDrawBuf], _tvWidth, GS_PSMCT24); // put it here for dmac/vblank handler
+ g_DmacCmd = GS_SET_DISPFB(_frameBufPtr[_curDrawBuf], _tvPitch, GS_PSMCT24); // put it here for dmac/vblank handler
_dmaPipe->flush();
_curDrawBuf ^= 1;
- _dmaPipe->setDrawBuffer(_frameBufPtr[_curDrawBuf], _tvWidth, GS_PSMCT24, 0);
+ _dmaPipe->setDrawBuffer(_frameBufPtr[_curDrawBuf], _tvPitch, GS_PSMCT24, 0);
} else
_dmaPipe->flush();
SignalSema(_screenSema);
@@ -527,6 +665,7 @@ void Gs2dScreen::hideOverlay(void) {
Graphics::PixelFormat Gs2dScreen::getOverlayFormat(void) {
return _overlayFormat;
+ // return Graphics::createPixelFormat<1555>();
}
int16 Gs2dScreen::getOverlayWidth(void) {
@@ -633,11 +772,11 @@ void Gs2dScreen::setMouseXy(int16 x, int16 y) {
_mouseX = x;
_mouseY = y;
}
-
+/*
uint8 Gs2dScreen::tvMode(void) {
return _tvMode;
}
-
+*/
uint16 Gs2dScreen::getWidth(void) {
return _width;
}
@@ -655,7 +794,7 @@ void Gs2dScreen::wantAnim(bool runIt) {
#define V 1000
#define Z_TRANSL 65
-void Gs2dScreen::animThread(void) {
+void Gs2dScreen::playAnim(void) {
// animate zeros and ones while game accesses memory card, etc.
g_RunAnim = false;
float yPos = 0.0;
@@ -750,10 +889,10 @@ void Gs2dScreen::animThread(void) {
drawY += LINE_SPACE;
}
- g_DmacCmd = GS_SET_DISPFB(_frameBufPtr[_curDrawBuf], _tvWidth, GS_PSMCT24); // put it here for dmac/vblank handler
+ g_DmacCmd = GS_SET_DISPFB(_frameBufPtr[_curDrawBuf], _tvPitch, GS_PSMCT24); // put it here for dmac/vblank handler
_dmaPipe->flush();
_curDrawBuf ^= 1;
- _dmaPipe->setDrawBuffer(_frameBufPtr[_curDrawBuf], _tvWidth, GS_PSMCT24, 0);
+ _dmaPipe->setDrawBuffer(_frameBufPtr[_curDrawBuf], _tvPitch, GS_PSMCT24, 0);
_dmaPipe->setAlphaBlend(DEST_COLOR, ZERO_COLOR, SOURCE_ALPHA, SOURCE_COLOR, 0);
SignalSema(_screenSema);
@@ -763,7 +902,7 @@ void Gs2dScreen::animThread(void) {
}
void runAnimThread(Gs2dScreen *param) {
- param->animThread();
+ param->playAnim();
}
// data for the animated zeros and ones...
diff --git a/backends/platform/ps2/Gs2dScreen.h b/backends/platform/ps2/Gs2dScreen.h
index be9729b66b..ea2b1e5f78 100644
--- a/backends/platform/ps2/Gs2dScreen.h
+++ b/backends/platform/ps2/Gs2dScreen.h
@@ -25,6 +25,7 @@
#include "sysdefs.h"
#include "backends/base-backend.h"
+#include "common/config-manager.h"
#include "backends/platform/ps2/DmaPipe.h"
#include "graphics/surface.h"
@@ -32,7 +33,9 @@
enum TVMode {
TV_DONT_CARE = 0,
TV_PAL,
- TV_NTSC
+ TV_NTSC,
+ TV_HDTV, /* internal */
+ TV_VESA /* internal */
};
enum GsInterlace {
@@ -42,14 +45,14 @@ enum GsInterlace {
class Gs2dScreen {
public:
- Gs2dScreen(uint16 width, uint16 height, TVMode mode);
+ Gs2dScreen(uint16 width, uint16 height);
~Gs2dScreen(void);
void newScreenSize(uint16 width, uint16 height);
- uint8 tvMode(void);
+ // uint8 tvMode(void);
uint16 getWidth(void);
uint16 getHeight(void);
- void copyPrintfOverlay(const uint8* buf);
+ void copyPrintfOverlay(const uint8 *buf);
void clearPrintfOverlay(void);
Graphics::Surface *lockScreen();
@@ -75,7 +78,7 @@ public:
void setMouseXy(int16 x, int16 y);
void setShakePos(int shake);
- void animThread(void);
+ void playAnim(void);
void wantAnim(bool runIt);
void quit(void);
@@ -85,8 +88,10 @@ private:
void createAnimTextures(void);
DmaPipe *_dmaPipe;
+ uint8 _gfxMode;
uint8 _tvMode;
uint16 _tvWidth, _tvHeight;
+ uint16 _tvPitch;
GsVertex _blitCoords[2];
TexVertex _texCoords[2];
diff --git a/backends/platform/ps2/GsDefs.h b/backends/platform/ps2/GsDefs.h
index 07e3c50ad8..9adf6acfcc 100644
--- a/backends/platform/ps2/GsDefs.h
+++ b/backends/platform/ps2/GsDefs.h
@@ -27,16 +27,23 @@
// Gs2dScreen defines:
-#define PAL_NTSC_FLAG (*(volatile uint8*)0x1FC7FF52)
+#define PAL_NTSC_FLAG (*(volatile uint8 *)0x1FC7FF52)
-#define GS_PMODE *((volatile uint64*)0x12000000)
-#define GS_CSR *((volatile uint64*)0x12001000)
-#define GS_DISPFB1 *((volatile uint64*)0x12000070)
-#define GS_DISPLAY1 *((volatile uint64*)0x12000080)
-#define GS_BGCOLOUR *((volatile uint64*)0x120000E0)
+#define GS_PMODE *((volatile uint64 *)0x12000000)
+#define GS_CSR *((volatile uint64 *)0x12001000)
+#define GS_DISPFB1 *((volatile uint64 *)0x12000070)
+#define GS_DISPLAY1 *((volatile uint64 *)0x12000080)
+#define GS_BGCOLOUR *((volatile uint64 *)0x120000E0)
+
+#define GS_SMODE1 *((volatile uint64 *)0x12000010)
+#define GS_SMODE2 *((volatile uint64 *)0x12000020)
+#define GS_SYNCH1 *((volatile uint64 *)0x12000040)
+#define GS_SYNCH2 *((volatile uint64 *)0x12000050)
+#define GS_SYNCV *((volatile uint64 *)0x12000060)
+#define GS_SRFSH *((volatile uint64 *)0x12000030)
enum GS_CSR_FIELDS {
- CSR_SIGNAL = 1 << 0,
+ CSR_SIGNAL = 1 << 0,
CSR_FINISH = 1 << 1,
CSR_HSYNC = 1 << 2,
CSR_VSYNC = 1 << 3,
@@ -44,6 +51,19 @@ enum GS_CSR_FIELDS {
CSR_RESET = 1 << 9
};
+typedef struct {
+ u16 w;
+ u16 h;
+ u16 interlaced;
+ u16 pitch;
+ u16 mode;
+ u16 vclk;
+ u16 magh;
+ u16 magv;
+ u16 dx;
+ u16 dy;
+} ps2_mode_t;
+
#define GS_SET_PMODE(readC1, readC2, alphaSel, alphaOut, alphaBlend, alphaFixed) \
((readC1) | ((readC2) << 1) | ((alphaSel) << 5) | ((alphaOut) << 6) | ((alphaBlend) << 7) | ((alphaFixed) << 8))
@@ -52,6 +72,10 @@ enum GS_CSR_FIELDS {
((((2560 + (width - 1)) / width) - 1)<<23) | \
(ypos << 12) | (xpos * (2560 / width)))
+#define GS_SET_DISPLAY_MODE(mode) \
+ (((uint64)(mode.h - 1) << 44) | ((uint64)(mode.vclk - 1) << 32) | \
+ ((mode.magh - 1) << 23) | (mode.dy << 12) | (mode.dx << 2))
+
#define GS_SET_DISPFB(frameBufPtr, frameBufWidth, psm) \
(((frameBufPtr) / 8192) | (((frameBufWidth) / 64) << 9) | ((psm) << 15))
@@ -61,63 +85,63 @@ enum GS_CSR_FIELDS {
//DmaPipe defines:
enum GsRegs {
- GPR_PRIM = 0x00, // Select and configure current drawing primitive
- GPR_RGBAQ, // Setup current vertex color
- GPR_ST, // ...
- GPR_UV, // Specify Vertex Texture Coordinates
- GPR_XYZF2, // Set vertex coordinate
- GPR_XYZ2, // Set vertex coordinate and 'kick' drawing
- GPR_TEX0_1, // Texture Buffer Setup (Context 1)
- GPR_TEX0_2, // Texture Buffer Setup (Context 2)
- GPR_CLAMP_1, // ...
- GPR_CLAMP_2, // ...
- GPR_FOG, // ...
-
- GPR_XYZF3 = 0x0C, // ...
- GPR_XYZ3, // ...
-
- GPR_TEX1_1 = 0x14, // ...
- GPR_TEX1_2, // ...
- GPR_TEX2_1, // ...
- GPR_TEX2_2, // ...
- GPR_XYOFFSET_1, // Mapping from Primitive to Window coordinate system (Context 1)
- GPR_XYOFFSET_2, // Mapping from Primitive to Window coordinate system (Context 2)
- GPR_PRMODECONT, // ...
- GPR_PRMODE, // ...
- GPR_TEXCLUT, // ...
-
- GPR_SCANMSK = 0x22, // ...
-
- GPR_MIPTBP1_1 = 0x34, // ...
- GPR_MIPTBP1_2, // ...
- GPR_MIPTBP2_1, // ...
- GPR_MIPTBP2_2, // ...
-
- GPR_TEXA = 0x3b, // ...
-
- GPR_FOGCOL = 0x3d, // ...
-
- GPR_TEXFLUSH = 0x3f,// Write to this register before using newly loaded texture
- GPR_SCISSOR_1, // Setup clipping rectangle (Context 1)
- GPR_SCISSOR_2, // Setup clipping rectangle (Context 2)
- GPR_ALPHA_1, // Setup Alpha Blending Parameters (Context 1)
- GPR_ALPHA_2, // Setup Alpha Blending Parameters (Context 2)
- GPR_DIMX, // ...
- GPR_DTHE, // ...
- GPR_COLCLAMP, // ...
- GPR_TEST_1, // ...
- GPR_TEST_2, // ...
- GPR_PABE, // ...
- GPR_FBA_1, // ...
- GPR_FBA_2, // ...
- GPR_FRAME_1, // Frame buffer settings (Context 1)
- GPR_FRAME_2, // Frame buffer settings (Context 2)
- GPR_ZBUF_1, // ...
- GPR_ZBUF_2, // ...
- GPR_BITBLTBUF, // Setup Image Transfer Between EE and GS
- GPR_TRXPOS, // Setup Image Transfer Coordinates
- GPR_TRXREG, // Setup Image Transfer Size
- GPR_TRXDIR, // Set Image Transfer Directon + Start Transfer
+ GPR_PRIM = 0x00, // Select and configure current drawing primitive
+ GPR_RGBAQ, // Setup current vertex color
+ GPR_ST, // ...
+ GPR_UV, // Specify Vertex Texture Coordinates
+ GPR_XYZF2, // Set vertex coordinate
+ GPR_XYZ2, // Set vertex coordinate and 'kick' drawing
+ GPR_TEX0_1, // Texture Buffer Setup (Context 1)
+ GPR_TEX0_2, // Texture Buffer Setup (Context 2)
+ GPR_CLAMP_1, // ...
+ GPR_CLAMP_2, // ...
+ GPR_FOG, // ...
+
+ GPR_XYZF3 = 0x0C, // ...
+ GPR_XYZ3, // ...
+
+ GPR_TEX1_1 = 0x14, // ...
+ GPR_TEX1_2, // ...
+ GPR_TEX2_1, // ...
+ GPR_TEX2_2, // ...
+ GPR_XYOFFSET_1, // Mapping from Primitive to Window coordinate system (Context 1)
+ GPR_XYOFFSET_2, // Mapping from Primitive to Window coordinate system (Context 2)
+ GPR_PRMODECONT, // ...
+ GPR_PRMODE, // ...
+ GPR_TEXCLUT, // ...
+
+ GPR_SCANMSK = 0x22, // ...
+
+ GPR_MIPTBP1_1 = 0x34, // ...
+ GPR_MIPTBP1_2, // ...
+ GPR_MIPTBP2_1, // ...
+ GPR_MIPTBP2_2, // ...
+
+ GPR_TEXA = 0x3b, // ...
+
+ GPR_FOGCOL = 0x3d, // ...
+
+ GPR_TEXFLUSH = 0x3f, // Write to this register before using newly loaded texture
+ GPR_SCISSOR_1, // Setup clipping rectangle (Context 1)
+ GPR_SCISSOR_2, // Setup clipping rectangle (Context 2)
+ GPR_ALPHA_1, // Setup Alpha Blending Parameters (Context 1)
+ GPR_ALPHA_2, // Setup Alpha Blending Parameters (Context 2)
+ GPR_DIMX, // ...
+ GPR_DTHE, // ...
+ GPR_COLCLAMP, // ...
+ GPR_TEST_1, // ...
+ GPR_TEST_2, // ...
+ GPR_PABE, // ...
+ GPR_FBA_1, // ...
+ GPR_FBA_2, // ...
+ GPR_FRAME_1, // Frame buffer settings (Context 1)
+ GPR_FRAME_2, // Frame buffer settings (Context 2)
+ GPR_ZBUF_1, // ...
+ GPR_ZBUF_2, // ...
+ GPR_BITBLTBUF, // Setup Image Transfer Between EE and GS
+ GPR_TRXPOS, // Setup Image Transfer Coordinates
+ GPR_TRXREG, // Setup Image Transfer Size
+ GPR_TRXDIR, // Set Image Transfer Directon + Start Transfer
GPR_HWREG,
GPR_SIGNAL = 0x60,
@@ -135,15 +159,15 @@ enum PrimTypes {
PR_SPRITE
};
-#define GS_PSMCT32 0x00
-#define GS_PSMCT24 0x01
-#define GS_PSMCT16 0x02
-#define GS_PSMCT16S 0x0A
-#define GS_PSMT8 0x13
-#define GS_PSMT4 0x14
-#define GS_PSMT4HL 0x24
-#define GS_PSMT4HH 0x2C
-#define GS_PSMT8H 0x1B
+#define GS_PSMCT32 0x00
+#define GS_PSMCT24 0x01
+#define GS_PSMCT16 0x02
+#define GS_PSMCT16S 0x0A
+#define GS_PSMT8 0x13
+#define GS_PSMT4 0x14
+#define GS_PSMT4HL 0x24
+#define GS_PSMT4HH 0x2C
+#define GS_PSMT8H 0x1B
/*#define GS_SET_BITBLTBUF(sbp, sbw, spsm, dbp, dbw, dpsm) \
((uint64)(sbp) | ((uint64)(sbw) << 16) | \
@@ -210,7 +234,7 @@ enum AlphaBlendColor {
enum AlphaBlendAlpha {
SOURCE_ALPHA = 0,
DEST_ALPHA,
- FIXED_ALPHA
+ FIXED_ALPHA
};
#define GS_SET_ALPHA(a, b, c, d, fix) \
diff --git a/backends/platform/ps2/Makefile.gdb b/backends/platform/ps2/Makefile.gdb
deleted file mode 100644
index 8ca47cd9f1..0000000000
--- a/backends/platform/ps2/Makefile.gdb
+++ /dev/null
@@ -1,104 +0,0 @@
-# $Header: Exp $
- include $(PS2SDK)/Defs.make
-
-PS2_EXTRA = /works/devel/ps2/sdk-extra
-PS2_EXTRA_INCS = /zlib/include /libmad/ee/include /SjPcm/ee/src /tremor
-PS2_EXTRA_LIBS = /zlib/lib /libmad/ee/lib /SjPcm/ee/lib /tremor/tremor
-
-ENABLED=STATIC_PLUGIN
-
-ENABLE_SCUMM = $(ENABLED)
-ENABLE_SCUMM_7_8 = $(ENABLED)
-# ENABLE_HE = $(ENABLED)
-# ENABLE_AGI = $(ENABLED)
-# ENABLE_AGOS = $(ENABLED)
-# ENABLE_AGOS2 = $(ENABLED)
-# ENABLE_CINE = $(ENABLED)
-# ENABLE_CRUISE = $(ENABLED)
-# ENABLE_DRACI = $(ENABLED)
-# ENABLE_DRASCULA = $(ENABLED)
-# ENABLE_GOB = $(ENABLED)
-# ENABLE_GROOVIE = $(ENABLED)
-## ENABLE_GROOVIE2 = $(ENABLED)
-# ENABLE_HUGO = $(ENABLED)
-# ENABLE_IHNM = $(ENABLED)
-# ENABLE_KYRA = $(ENABLED)
-## ENABLE_LOL = $(ENABLED)
-# ENABLE_LURE = $(ENABLED)
-## ENABLE_M4 = $(ENABLED)
-# ENABLE_MADE = $(ENABLED)
-# ENABLE_MOHAWK = $(ENABLED)
-# ENABLE_PARALLACTION = $(ENABLED)
-# ENABLE_QUEEN = $(ENABLED)
-# ENABLE_SAGA = $(ENABLED)
-# ENABLE_SAGA2 = $(ENABLED)
-# ENABLE_SCI = $(ENABLED)
-## ENABLE_SCI32 = $(ENABLED)
-# ENABLE_SKY = $(ENABLED)
-# ENABLE_SWORD1 = $(ENABLED)
-# ENABLE_SWORD2 = $(ENABLED)
-# ENABLE_TEENAGENT = $(ENABLED)
-# ENABLE_TINSEL = $(ENABLED)
-# ENABLE_TOON = $(ENABLED)
-# ENABLE_TOUCHE = $(ENABLED)
-# ENABLE_TUCKER = $(ENABLED)
-
-
-HAVE_GCC3 = true
-
-CC = ee-gcc
-CXX = ee-g++
-AS = ee-gcc
-LD = ee-gcc
-AR = ee-ar cru
-RANLIB = ee-ranlib
-STRIP = ee-strip
-MKDIR = mkdir -p
-RM = rm -f
-
-srcdir = ../../..
-VPATH = $(srcdir)
-INCDIR = ../../../
-# DEPDIR = .deps
-
-DEFINES = -DUSE_VORBIS -DUSE_TREMOR -DUSE_MAD -DUSE_ZLIB -DFORCE_RTL -DDISABLE_SAVEGAME_SORTING -D_EE -D__PLAYSTATION2__ -D__PS2_DEBUG__ -g -Wall -Wno-multichar -fno-rtti -fno-exceptions # -DNO_ADAPTOR
-# for release builds:
-#DEFINES += -DRELEASE_BUILD
-
-INCLUDES = $(addprefix -I$(PS2_EXTRA),$(PS2_EXTRA_INCS))
-INCLUDES += -I $(PS2GDB)/ee -I $(PS2SDK)/ee/include -I $(PS2SDK)/common/include -I ./common -I . -I $(srcdir) -I $(srcdir)/engines
-
-CXX_UPDATE_DEP_FLAG = -Wp,-MMD,"$(*D)/$(DEPDIR)/$(*F).d",-MQ,"$@",-MP
-
-TARGET = elf/scummvm.elf
-
-OBJS := $(srcdir)/backends/platform/ps2/DmaPipe.o \
- $(srcdir)/backends/platform/ps2/Gs2dScreen.o \
- $(srcdir)/backends/platform/ps2/irxboot.o \
- $(srcdir)/backends/platform/ps2/ps2input.o \
- $(srcdir)/backends/platform/ps2/ps2pad.o \
- $(srcdir)/backends/platform/ps2/savefilemgr.o \
- $(srcdir)/backends/platform/ps2/fileio.o \
- $(srcdir)/backends/platform/ps2/asyncfio.o \
- $(srcdir)/backends/platform/ps2/icon.o \
- $(srcdir)/backends/platform/ps2/cd.o \
- $(srcdir)/backends/platform/ps2/eecodyvdfs.o \
- $(srcdir)/backends/platform/ps2/rpckbd.o \
- $(srcdir)/backends/platform/ps2/systemps2.o \
- $(srcdir)/backends/platform/ps2/ps2mutex.o \
- $(srcdir)/backends/platform/ps2/ps2time.o \
- $(srcdir)/backends/platform/ps2/ps2debug.o
-
-MODULE_DIRS += .
-
-include $(srcdir)/Makefile.common
-
-LDFLAGS += -mno-crt0 $(PS2SDK)/ee/startup/crt0.o -T $(PS2SDK)/ee/startup/linkfile
-LDFLAGS += -L $(PS2GDB)/lib -L $(PS2SDK)/ee/lib -L .
-LDFLAGS += $(addprefix -L$(PS2_EXTRA),$(PS2_EXTRA_LIBS))
-LDFLAGS += -lmc -lpad -lmouse -lhdd -lpoweroff -lsjpcm -lmad -ltremor -lz -lm -lc -lfileXio -lps2gdbStub -lps2ip -ldebug -lkernel -lstdc++
-
-all: $(TARGET)
-
-$(TARGET): $(OBJS)
- $(LD) $^ $(LDFLAGS) -o $@
diff --git a/backends/platform/ps2/Makefile.ps2 b/backends/platform/ps2/Makefile.ps2
index d6ce08ae84..3631c653f6 100644
--- a/backends/platform/ps2/Makefile.ps2
+++ b/backends/platform/ps2/Makefile.ps2
@@ -1,107 +1,217 @@
-# $Header: Exp $
- include $(PS2SDK)/Defs.make
+# SCUMMVM-PS2 MakeFile
-PS2_EXTRA = /works/devel/ps2/sdk-extra
-PS2_EXTRA_INCS = /zlib/include /libmad/ee/include /SjPcm/ee/src /tremor
-PS2_EXTRA_LIBS = /zlib/lib /libmad/ee/lib /SjPcm/ee/lib /tremor/tremor
-ENABLED=STATIC_PLUGIN
+# Use only this section to modify how the makefile behaves ------------
-ENABLE_SCUMM = $(ENABLED)
-ENABLE_SCUMM_7_8 = $(ENABLED)
-ENABLE_HE = $(ENABLED)
+# Scummvm engine config: choose which engines are enabled
ENABLE_AGI = $(ENABLED)
ENABLE_AGOS = $(ENABLED)
-ENABLE_AGOS2 = $(ENABLED)
+ENABLE_AGOS2 = 1
+# ENABLE_AVALANCHE = $(ENABLED)
+ENABLE_CGE = $(ENABLED)
ENABLE_CINE = $(ENABLED)
+ENABLE_COMPOSER = $(ENABLED)
ENABLE_CRUISE = $(ENABLED)
ENABLE_DRACI = $(ENABLED)
ENABLE_DRASCULA = $(ENABLED)
+ENABLE_DREAMWEB = $(ENABLED)
+# ENABLE_FULLPIPE = $(ENABLED)
ENABLE_GOB = $(ENABLED)
ENABLE_GROOVIE = $(ENABLED)
# ENABLE_GROOVIE2 = $(ENABLED)
+# ENABLE_HOPKINS = $(ENABLED)
ENABLE_HUGO = $(ENABLED)
-ENABLE_IHNM = $(ENABLED)
ENABLE_KYRA = $(ENABLED)
-# ENABLE_LOL = $(ENABLED)
+ENABLE_LOL = 1
+ENABLE_EOB = 1
+# ENABLE_LASTEXPRESS = $(ENABLED)
ENABLE_LURE = $(ENABLED)
-# ENABLE_M4 = $(ENABLED)
ENABLE_MADE = $(ENABLED)
ENABLE_MOHAWK = $(ENABLED)
+# ENABLE_CSTIME = $(ENABLED)
+# ENABLE_RIVEN = $(ENABLED)
+# ENABLE_MYST = $(ENABLED)
+ENABLE_MORTEVIELLE = $(ENABLED)
+ENABLE_NEVERHOOD = $(ENABLED)
ENABLE_PARALLACTION = $(ENABLED)
+# ENABLE_PEGASUS = $(ENABLED)
ENABLE_QUEEN = $(ENABLED)
ENABLE_SAGA = $(ENABLED)
+ENABLE_IHNM = 1
# ENABLE_SAGA2 = $(ENABLED)
ENABLE_SCI = $(ENABLED)
# ENABLE_SCI32 = $(ENABLED)
+ENABLE_SCUMM = $(ENABLED)
+ENABLE_SCUMM_7_8 = 1
+ENABLE_HE = 1
ENABLE_SKY = $(ENABLED)
ENABLE_SWORD1 = $(ENABLED)
ENABLE_SWORD2 = $(ENABLED)
+# ENABLE_SWORD25 = $(ENABLED)
ENABLE_TEENAGENT = $(ENABLED)
+# ENABLE_TESTBED = $(ENABLED)
ENABLE_TINSEL = $(ENABLED)
+ENABLE_TOLTECS = $(ENABLED)
+# ENABLE_TONY = $(ENABLED)
ENABLE_TOON = $(ENABLED)
ENABLE_TOUCHE = $(ENABLED)
+ENABLE_TSAGE = $(ENABLED)
ENABLE_TUCKER = $(ENABLED)
-
-
-HAVE_GCC3 = true
-
-CC = ee-gcc
-CXX = ee-g++
-AS = ee-gcc
-LD = ee-gcc
+# ENABLE_WINTERMUTE = $(ENABLED)
+# ENABLE_ZVISION = $(ENABLED)
+
+# Set to 1 to enable seeing the commands to gcc
+VERBOSE_BUILD = 0
+# Set to 1 to enable, 0 to disable dynamic modules
+DYNAMIC_MODULES = 1
+# Set to 1 to enable debugging
+ENABLE_DEBUG = 0
+# Set to 1 to enable profiling
+ENABLE_PROFILING = 0
+# Set to 1 to disable HDD+NET
+DISABLE_NETWORK = 0
+# Set to 1 to enable, 0 to disable libmad and libogg
+USE_LIBMAD = 1
+USE_LIBOGG = 1
+
+# ---------------------------------------------------------------------
+
+
+# General variables
+srcdir = ../../..
+VPATH = $(srcdir)
+TARGET = scummvm.elf
+# PS2 SDK location variables
+# PS2SDK = /works/tools/devel/ps2/sdk
+
+# Check PS2SDK presence
+ifeq ($(PS2SDK),)
+$(error $$(PS2SDK) needs to be set.)
+endif
+
+# Variables for common Scummvm makefile
+CC = ee-gcc
+CXX = ee-g++
+FLAGS = -pedantic -Wall -W
+FLAGS += -Wcast-qual -Wconversion -Wpointer-arith -Wshadow -Wwrite-strings
+FLAGS += -Wno-long-long -Wno-multichar -Wno-unknown-pragmas -Wno-unused-parameter
+CFLAGS = $(FLAGS) -std=c99
+CXXFLAGS = $(FLAGS) -Wnon-virtual-dtor -Wno-reorder -fno-exceptions -fno-rtti
+
+DEFINES = -D_EE -D__PLAYSTATION2__ -D__NEW_PS2SDK__ -DUSE_ZLIB -DFORCE_RTL -DDATA_PATH=\"host:data\"
+DEFINES += -DDISABLE_SAVEGAME_SORTING -DDISABLE_TEXT_CONSOLE -DDISABLE_COMMAND_LINE -DDISABLE_DOSBOX_OPL -DDISABLE_SID -DDISABLE_NES_APU
+# DEFINES += -DLOGORRHEIC
+
+INCDIR := $(PS2SDK)/ee/include $(PS2SDK)/common/include $(PS2SDK)/ports/include . $(srcdir) $(srcdir)/engines
+INCLUDES := $(addprefix -I, $(INCDIR))
+DEPDIR = .deps
+MODULE_DIRS += ./
+MKDIR = mkdir -p
+RM = rm -f
+RM_REC = rm -rf
AR = ee-ar cru
RANLIB = ee-ranlib
STRIP = ee-strip
-MKDIR = mkdir -p
-RM = rm -f
-
-srcdir = ../../..
-VPATH = $(srcdir)
-INCDIR = ../../../
-# DEPDIR = .deps
-
-DEFINES = -DUSE_VORBIS -DUSE_TREMOR -DUSE_MAD -DUSE_ZLIB -DFORCE_RTL -DDISABLE_SAVEGAME_SORTING -D_EE -D__PLAYSTATION2__ -G2 -O2 -Wall -Wno-multichar -fno-rtti -fno-exceptions # -DNO_ADAPTOR
-# for release builds:
-#DEFINES += -DRELEASE_BUILD
-
-INCLUDES = $(addprefix -I$(PS2_EXTRA),$(PS2_EXTRA_INCS))
-INCLUDES += -I $(PS2SDK)/ee/include -I $(PS2SDK)/common/include -I ./common -I . -I $(srcdir) -I $(srcdir)/engines
-
-CXX_UPDATE_DEP_FLAG = -Wp,-MMD,"$(*D)/$(DEPDIR)/$(*F).d",-MQ,"$@",-MP
-
-TARGET = elf/scummvm.elf
+AS = ee-gcc
+LD = ee-gcc
+HAVE_GCC3 = true
+CXX_UPDATE_DEP_FLAG = -MMD -MF "$(*D)/$(DEPDIR)/$(*F).d" -MQ "$@" -MP
+
+# Variables for dynamic plugin building
+PLUGIN_PREFIX =
+PLUGIN_SUFFIX = .plg
+PLUGIN_EXTRA_DEPS = $(TARGET)
+PLUGIN_LDFLAGS = -nostartfiles $(srcdir)/backends/plugins/elf/version.o -Wl,-q,--just-symbols,$(TARGET),--retain-symbols-file,$(srcdir)/backends/plugins/elf/plugin.syms
+PLUGIN_LDFLAGS += -mno-crt0 $(PS2SDK)/ee/startup/crt0.o -Wl,-T$(srcdir)/backends/plugins/ps2/plugin.ld -lstdc++ -lc
+
+# Test for adding different libs
+ifeq ($(USE_LIBMAD),1)
+DEFINES += -DUSE_MAD
+LIBS += -lmad
+endif
+ifeq ($(USE_LIBOGG), 1)
+DEFINES += -DUSE_VORBIS -DUSE_TREMOR
+LIBS += -ltremor
+endif
+
+# Test for dynamic plugins
+ifeq ($(DYNAMIC_MODULES),1)
+ENABLED = DYNAMIC_PLUGIN
+DEFINES += -DDYNAMIC_MODULES -DUSE_ELF_LOADER -DMIPS_TARGET -DUNCACHED_PLUGINS -DPLUGIN_DIRECTORY=\"host:plugins\"
+PRE_OBJS_FLAGS = -Wl,--whole-archive
+POST_OBJS_FLAGS = -Wl,--no-whole-archive
+else
+ENABLED = STATIC_PLUGIN
+endif
+
+# Test for debug
+ifeq ($(ENABLE_DEBUG),1)
+DEFINES += -D__PS2_DEBUG__
+FLAGS += -G2 -g
+LIBS += -lps2gdbStub -lps2ip -ldebug
+else
+DEFINES += -DRELEASE_BUILD
+FLAGS += -G2 -O2 -s -Wuninitialized
+# LDFLAGS += -s
+endif
+
+# Test for profiling
+ifeq ($(ENABLE_PROFILING),1)
+DEFINES += -DENABLE_PROFILING
+FLAGS += -G2 -pg -g
+LDFLAGS += -pg
+endif
+
+# Test for net support
+ifeq ($(DISABLE_NETWORK),1)
+DEFINES += -DNO_ADAPTOR
+endif
+
+# PS2 LIBS
+PS2LIBS = -lmc -lpad -lmouse -lhdd -lpoweroff -lsjpcm -lz -lm -lc -lfileXio -lkernel -lstdc++
+
+# Add in PS2SDK includes and libraries.
+LIBS += $(PS2LIBS)
OBJS := $(srcdir)/backends/platform/ps2/DmaPipe.o \
- $(srcdir)/backends/platform/ps2/Gs2dScreen.o \
- $(srcdir)/backends/platform/ps2/irxboot.o \
- $(srcdir)/backends/platform/ps2/ps2input.o \
- $(srcdir)/backends/platform/ps2/ps2pad.o \
- $(srcdir)/backends/platform/ps2/savefilemgr.o \
- $(srcdir)/backends/platform/ps2/fileio.o \
- $(srcdir)/backends/platform/ps2/asyncfio.o \
- $(srcdir)/backends/platform/ps2/icon.o \
- $(srcdir)/backends/platform/ps2/cd.o \
- $(srcdir)/backends/platform/ps2/eecodyvdfs.o \
- $(srcdir)/backends/platform/ps2/rpckbd.o \
- $(srcdir)/backends/platform/ps2/systemps2.o \
- $(srcdir)/backends/platform/ps2/ps2mutex.o \
- $(srcdir)/backends/platform/ps2/ps2time.o \
- $(srcdir)/backends/platform/ps2/ps2debug.o
-
-MODULE_DIRS += .
+ $(srcdir)/backends/platform/ps2/Gs2dScreen.o \
+ $(srcdir)/backends/platform/ps2/irxboot.o \
+ $(srcdir)/backends/platform/ps2/ps2input.o \
+ $(srcdir)/backends/platform/ps2/ps2pad.o \
+ $(srcdir)/backends/platform/ps2/savefilemgr.o \
+ $(srcdir)/backends/platform/ps2/fileio.o \
+ $(srcdir)/backends/platform/ps2/asyncfio.o \
+ $(srcdir)/backends/platform/ps2/icon.o \
+ $(srcdir)/backends/platform/ps2/cd.o \
+ $(srcdir)/backends/platform/ps2/eecodyvdfs.o \
+ $(srcdir)/backends/platform/ps2/rpckbd.o \
+ $(srcdir)/backends/platform/ps2/systemps2.o \
+ $(srcdir)/backends/platform/ps2/ps2mutex.o \
+ $(srcdir)/backends/platform/ps2/ps2time.o \
+ $(srcdir)/backends/platform/ps2/ps2debug.o
+
+ifeq ($(DYNAMIC_MODULES),1)
+OBJS += $(srcdir)/backends/plugins/elf/elf-loader.o \
+ $(srcdir)/backends/plugins/elf/elf-provider.o \
+ $(srcdir)/backends/plugins/elf/shorts-segment-manager.o \
+ $(srcdir)/backends/plugins/elf/memory-manager.o \
+ $(srcdir)/backends/plugins/elf/mips-loader.o \
+ $(srcdir)/backends/plugins/elf/version.o
+endif
BACKEND := ps2
+# Include common Scummvm makefile
include $(srcdir)/Makefile.common
+LDFLAGS += -L$(PS2SDK)/ee/lib -L$(PS2SDK)/ports/lib
+ifeq ($(DYNAMIC_MODULES),1)
+LDFLAGS += -mno-crt0 $(PS2SDK)/ee/startup/crt0.o -Wl,-T$(srcdir)/backends/plugins/ps2/main_prog.ld
+else
LDFLAGS += -mno-crt0 $(PS2SDK)/ee/startup/crt0.o -T $(PS2SDK)/ee/startup/linkfile
-LDFLAGS += -L $(PS2SDK)/ee/lib -L .
-LDFLAGS += $(addprefix -L$(PS2_EXTRA),$(PS2_EXTRA_LIBS))
-LDFLAGS += -lmc -lpad -lmouse -lhdd -lpoweroff -lsjpcm -lmad -ltremor -lz -lm -lc -lfileXio -lkernel -lstdc++
-LDFLAGS += -s
+endif
all: $(TARGET)
$(TARGET): $(OBJS)
- $(LD) $^ $(LDFLAGS) -o $@
+ $(LD) $(PRE_OBJS_FLAGS) $(OBJS) $(POST_OBJS_FLAGS) $(LDFLAGS) $(LIBS) -o $@
diff --git a/backends/platform/ps2/Makefile.ps2.dev b/backends/platform/ps2/Makefile.ps2.dev
new file mode 100644
index 0000000000..cd9432e2df
--- /dev/null
+++ b/backends/platform/ps2/Makefile.ps2.dev
@@ -0,0 +1,170 @@
+# SCUMMVM-PS2 MakeFile
+
+
+# Use only this section to modify how the makefile behaves ------------
+
+# Scummvm engine config: choose which engines are enabled
+ENABLE_SCUMM = $(ENABLED)
+ENABLE_SCUMM_7_8 = 1
+# ENABLE_HE = 1
+ENABLE_SCI = $(ENABLED)
+# ENABLE_SCI32 = $(ENABLED)
+# ENABLE_SKY = $(ENABLED)
+# ENABLE_SWORD1 = $(ENABLED)
+# ENABLE_SWORD2 = $(ENABLED)
+
+# Set to 1 to enable seeing the commands to gcc
+VERBOSE_BUILD = 1
+# Set to 1 to enable, 0 to disable dynamic modules
+DYNAMIC_MODULES = 0
+# Set to 1 to enable debugging
+ENABLE_DEBUG = 0
+# Set to 1 to enable profiling
+ENABLE_PROFILING = 1
+# Set to 1 to disable HDD+NET
+DISABLE_NETWORK = 0
+# Set to 1 to enable, 0 to disable libmad and libogg
+USE_LIBMAD = 1
+USE_LIBOGG = 1
+
+# ---------------------------------------------------------------------
+
+
+# General variables
+srcdir = ../../..
+VPATH = $(srcdir)
+TARGET = scummvm.elf
+# PS2 SDK location variables
+# PS2SDK = /works/tools/devel/ps2/sdk
+
+# Check PS2SDK presence
+ifeq ($(PS2SDK),)
+$(error $$(PS2SDK) needs to be set.)
+endif
+
+# Variables for common Scummvm makefile
+CC = ee-gcc
+CXX = ee-g++
+FLAGS = -pedantic -Wall -W
+FLAGS += -Wcast-qual -Wconversion -Wpointer-arith -Wshadow -Wwrite-strings
+FLAGS += -Wno-long-long -Wno-multichar -Wno-unknown-pragmas -Wno-unused-parameter
+CFLAGS = $(FLAGS) -std=c99
+CXXFLAGS = $(FLAGS) -Wnon-virtual-dtor -Wno-reorder -fno-exceptions -fno-rtti
+
+DEFINES = -D_EE -D__PLAYSTATION2__ -D__NEW_PS2SDK__ -DUSE_ZLIB -DFORCE_RTL -DDATA_PATH=\"host:data\"
+DEFINES += -DDISABLE_SAVEGAME_SORTING -DDISABLE_TEXT_CONSOLE -DDISABLE_COMMAND_LINE -DDISABLE_DOSBOX_OPL -DDISABLE_SID -DDISABLE_NES_APU
+# DEFINES += -DLOGORRHEIC
+
+INCDIR := $(PS2SDK)/ee/include $(PS2SDK)/common/include $(PS2SDK)/ports/include . $(srcdir) $(srcdir)/engines
+INCLUDES := $(addprefix -I, $(INCDIR))
+DEPDIR = .deps
+MODULE_DIRS += ./
+MKDIR = mkdir -p
+RM = rm -f
+RM_REC = rm -rf
+AR = ee-ar cru
+RANLIB = ee-ranlib
+STRIP = ee-strip
+AS = ee-gcc
+LD = ee-gcc
+HAVE_GCC3 = true
+CXX_UPDATE_DEP_FLAG = -MMD -MF "$(*D)/$(DEPDIR)/$(*F).d" -MQ "$@" -MP
+
+# Variables for dynamic plugin building
+PLUGIN_PREFIX =
+PLUGIN_SUFFIX = .plg
+PLUGIN_EXTRA_DEPS = $(TARGET)
+PLUGIN_LDFLAGS = -nostartfiles $(srcdir)/backends/plugins/elf/version.o -Wl,-q,--just-symbols,$(TARGET),--retain-symbols-file,$(srcdir)/backends/plugins/elf/plugin.syms
+PLUGIN_LDFLAGS += -mno-crt0 $(PS2SDK)/ee/startup/crt0.o -Wl,-T$(srcdir)/backends/plugins/ps2/plugin.ld -lstdc++ -lc
+
+# Test for adding different libs
+ifeq ($(USE_LIBMAD),1)
+DEFINES += -DUSE_MAD
+LIBS += -lmad
+endif
+ifeq ($(USE_LIBOGG), 1)
+DEFINES += -DUSE_VORBIS -DUSE_TREMOR
+LIBS += -ltremor
+endif
+
+# Test for dynamic plugins
+ifeq ($(DYNAMIC_MODULES),1)
+ENABLED = DYNAMIC_PLUGIN
+DEFINES += -DDYNAMIC_MODULES -DUSE_ELF_LOADER -DMIPS_TARGET -DUNCACHED_PLUGINS -DPLUGIN_DIRECTORY=\"host:plugins\"
+PRE_OBJS_FLAGS = -Wl,--whole-archive
+POST_OBJS_FLAGS = -Wl,--no-whole-archive
+else
+ENABLED = STATIC_PLUGIN
+endif
+
+# Test for debug
+ifeq ($(ENABLE_DEBUG),1)
+DEFINES += -D__PS2_DEBUG__
+FLAGS += -G2 -g
+LIBS += -lps2gdbStub -lps2ip -ldebug
+else
+DEFINES += -DRELEASE_BUILD
+FLAGS += -G2 -O2 -s -Wuninitialized
+# LDFLAGS += -s
+endif
+
+# Test for profiling
+ifeq ($(ENABLE_PROFILING),1)
+DEFINES += -DENABLE_PROFILING
+FLAGS += -G2 -pg -g
+LDFLAGS += -pg
+endif
+
+# Test for net support
+ifeq ($(DISABLE_NETWORK),1)
+DEFINES += -DNO_ADAPTOR
+endif
+
+# PS2 LIBS
+PS2LIBS = -lmc -lpad -lmouse -lhdd -lpoweroff -lsjpcm -lz -lm -lc -lfileXio -lkernel -lstdc++
+
+# Add in PS2SDK includes and libraries.
+LIBS += $(PS2LIBS)
+
+OBJS := $(srcdir)/backends/platform/ps2/DmaPipe.o \
+ $(srcdir)/backends/platform/ps2/Gs2dScreen.o \
+ $(srcdir)/backends/platform/ps2/irxboot.o \
+ $(srcdir)/backends/platform/ps2/ps2input.o \
+ $(srcdir)/backends/platform/ps2/ps2pad.o \
+ $(srcdir)/backends/platform/ps2/savefilemgr.o \
+ $(srcdir)/backends/platform/ps2/fileio.o \
+ $(srcdir)/backends/platform/ps2/asyncfio.o \
+ $(srcdir)/backends/platform/ps2/icon.o \
+ $(srcdir)/backends/platform/ps2/cd.o \
+ $(srcdir)/backends/platform/ps2/eecodyvdfs.o \
+ $(srcdir)/backends/platform/ps2/rpckbd.o \
+ $(srcdir)/backends/platform/ps2/systemps2.o \
+ $(srcdir)/backends/platform/ps2/ps2mutex.o \
+ $(srcdir)/backends/platform/ps2/ps2time.o \
+ $(srcdir)/backends/platform/ps2/ps2debug.o
+
+ifeq ($(DYNAMIC_MODULES),1)
+OBJS += $(srcdir)/backends/plugins/elf/elf-loader.o \
+ $(srcdir)/backends/plugins/elf/elf-provider.o \
+ $(srcdir)/backends/plugins/elf/shorts-segment-manager.o \
+ $(srcdir)/backends/plugins/elf/memory-manager.o \
+ $(srcdir)/backends/plugins/elf/mips-loader.o \
+ $(srcdir)/backends/plugins/elf/version.o
+endif
+
+BACKEND := ps2
+
+# Include common Scummvm makefile
+include $(srcdir)/Makefile.common
+
+LDFLAGS += -L$(PS2SDK)/ee/lib -L$(PS2SDK)/ports/lib
+ifeq ($(DYNAMIC_MODULES),1)
+LDFLAGS += -mno-crt0 $(PS2SDK)/ee/startup/crt0.o -Wl,-T$(srcdir)/backends/plugins/ps2/main_prog.ld
+else
+LDFLAGS += -mno-crt0 $(PS2SDK)/ee/startup/crt0.o -T $(PS2SDK)/ee/startup/linkfile
+endif
+
+all: $(TARGET)
+
+$(TARGET): $(OBJS)
+ $(LD) $(PRE_OBJS_FLAGS) $(OBJS) $(POST_OBJS_FLAGS) $(LDFLAGS) $(LIBS) -o $@
diff --git a/backends/platform/ps2/README.PS2 b/backends/platform/ps2/README.PS2
new file mode 100644
index 0000000000..141a79eaca
--- /dev/null
+++ b/backends/platform/ps2/README.PS2
@@ -0,0 +1,189 @@
+Dear PS2 ScummVM enthusiast user,
+
+here you will find the latest and the greatest PS2 backend ever!
+
+
+ *** Release Notes ***
+
+Released 2 builds: SCUMMVM.ELF and SCUMMVM-S.ELF. The latter has engine
+modules statically linked into (that's what the "-S" is for), the former
+uses dynamic modules (uncached). The dynamic one is much faster to start
+and has more resources available for the games. The catch is that games
+detection, when you are adding a new one, is painstakingly slow...
+(as it needs to load, test, unload the plugins one by one).
+
+Until we have an optimization for that in place I would suggest you add
+new games with "SCUMMVM-S.ELF", and when you are done adding you then
+play them with "SCUMMVM.ELF", as this will give you the best of both.
+
+We no longer have a separate ELF build with hdd & net adapter disabled,
+as we now do it in the smart way, allowing users to disable it in their
+ScummVM.ini. See under in "Configuration" for details.
+
+We also have an improved Makefile.ps2 in ps2 folder which will allow
+you to create: static, dynamic, profile and debug build version.
+
+You can now also cleanly compile using "configure" and specifying:
+
+./configure --backend=ps2 --host=ps2 ...
+
+
+ *** Installation ***
+
+Some media drivers require all capitalized letter, so to be on the
+safe side store the files (SCUMMVM.ELF and *.IRX) in upper case.
+
+Here comes a full list of the required *.IRX (don't worry they are all
+provided pre-compiled in the binary release ;-)
+
+ IOMANX.IRX
+ FILEXIO.IRX
+ CODYVDFS.IRX
+ SJPCM.IRX
+ USBD.IRX
+ USB_MASS.IRX
+ PS2MOUSE.IRX
+ RPCKBD.IRX
+ POWEROFF.IRX
+ PS2DEV9.IRX
+ PS2ATAD.IRX
+ PS2HDD.IRX
+ PS2FS.IRX
+ PS2IP.IRX
+ PS2SMAP.IRX
+ PS2HOST.IRX
+
+Make sure they are all stored in the folder that contains your SCUMMVM.ELF!
+
+If you are starting ScummVM from CD/DVD then it will look for ScummVM.ini
+a ScummVM.ini on the media folder from where you started SCUMMVM.ELF.
+
+Notes:
+
+ - depending on the media you install Scummvm/PS2 onto, it might be
+ picky about files cases, so I'd leave those *.IRX uppercase and
+ scummmodern.zip lower ;0)
+
+ - make sure you selected a save path before you start playing!
+
+ - we added PS2IPS.IRX in case you wanted to test a debug build
+ (use Makefile.gdb)
+
+
+ *** Configuration ***
+
+There is now a [PlayStation2] section in ScummVM.ini which can be used
+to make your wildest dreams come true ;-)
+
+It accepts these entries:
+
+tv_mode = [pal] [ntsc]
+gfx_mode = [mode number] [*]
+hdd_part = [partition name] [disable]
+net_addr = [PS2 IP addr] [**]
+usb_mass = [0] [disable]
+
+[*] Currently supported gfx modes are:
+
+ # 1 -> SDTV progressive (NTSC: 224p / PAL: 256p)
+ # 2 -> SDTV interlaced (NTSC: 448i / PAL: 512i) <- default
+ # 3 -> EDTV progressive (NTSC: 480p / PAL: 576p)
+ # 6 -> VESA (640x480@60)
+
+If no tv_mode is specified it will be autodected based on PS2 model.
+
+The non-interlaced (progressive) modes look much better and sharper.
+You can check the difference starting COMI and choosing About from
+the GMM (press "start" then choose "about"). You can easily see the
+difference between progressive and interlaced in scrolling text.
+
+You can use mode 6 (VGA 640x480) if you are connecting your PS2 to
+a RGB monitor. Some TVs also supports this signal.
+
+We also do some bad-ass things, like detecting the BIOS version and
+setting the GS registers by hand, for console models where a mode
+is not supported ;-)
+
+If SCUMMVM.ELF hangs at start for you try disabling the adapter by
+setting in ScummVM.ini
+
+hdd_part = 0
+net_addr = 0
+
+You can now also choose the hdd partition used for ScummVM games
+(default "+ScummVM") passing it as an argument to hdd_part:
+
+hdd_part = MyPartition (witout the "+")
+
+If you have an adapter with hdd & net, but you don't use them you
+can just set both to 0 to disable, and have a leaner and meaner
+ScummVM booting much faster!
+
+[**] TODO
+
+ *** Remote ***
+
+You will need "PS2IP.IRX", "PS2SMAP.IRX" and "PS2HOST.IRX" drivers too
+in the folder where you are starting SCUMMVM.ELF if you want to use
+the remote capability.
+
+The IP 192.168.1.20 (ps2link default) is hardcoded in the source as
+"netArg" in irxboot.cpp, feel free to modify it to match your network
+configuration.
+
+In a future release you will be able to set in ScummVM.ini using
+
+net_addr = xxx.yyy.zzz.www
+
+If you are starting SCUMMVM.ELF over the net using ps2client then you
+are already set. If you are starting it in any other way, then you
+will have to "export" the folder where you are storing ScummVM games
+and data by starting ps2client from inside that folder. Eg. from a
+terminal:
+
+> ./ps2client -h [your ps2 ip] listen
+
+Do this -after- ScummVM is up and running otherwise it will fail to
+establish a connection.
+
+
+ *** Gamepad ***
+
+The mapping is:
+
+Start Button - GMM
+R1 - 'y'
+L1 - 'n'
+R2 - '.'
+L2 - Numpad 0
+Triangle - Escape
+Square - Enter
+Cross - Left mouse button
+Circle - Right mouse button
+
+
+ *** Bugs ***
+
+Though we made our best to make this release as bug free as possible
+there are still a few bugs left:
+
+ - file handling speed : (not really a bug, but a nuisance) : there
+ is probably space for some more optimization in the current file
+ management. The only case when it really bogs me it's when you
+ try to select a saved game and there is some lag.
+
+ Some game will start faster too when this is optimized.
+
+ - feel free to add your bug, suggestion, secret wish to this list!
+
+ - SCI games have smooth audio and intro, but moving the pointer
+ and in-game animation speed might be a challenge.
+
+ - it has been reported USB media greater than 8 GB might not work
+
+Now enough reading, rush to your PlayStation2 and start playing!
+
+Are you still reading?
+
+Have a lot of fun,
+ -Max Lingua
diff --git a/backends/platform/ps2/asyncfio.cpp b/backends/platform/ps2/asyncfio.cpp
index b49fcbca75..6f15dcc628 100644
--- a/backends/platform/ps2/asyncfio.cpp
+++ b/backends/platform/ps2/asyncfio.cpp
@@ -33,7 +33,7 @@
AsyncFio::AsyncFio(void) {
_runningOp = NULL;
- memset((int *)_ioSlots, 0, MAX_HANDLES * sizeof(int));
+ memset(const_cast<int *>(_ioSlots), 0, MAX_HANDLES * sizeof(int));
ee_sema_t newSema;
newSema.init_count = 1;
newSema.max_count = 1;
@@ -63,7 +63,7 @@ int AsyncFio::open(const char *name, int ioMode, int mode) {
fileXioWaitAsync(FXIO_WAIT, &res);
SignalSema(_ioSema);
// dbg_printf("FIO: open ext(%s, %d, %d) => %d", name, ioMode, mode, res);
- return res;
+ return res;
}
void AsyncFio::close(int handle) {
@@ -80,7 +80,7 @@ void AsyncFio::close(int handle) {
void AsyncFio::checkSync(void) {
if (_runningOp) {
- fileXioWaitAsync(FXIO_WAIT, (int *)_runningOp);
+ fileXioWaitAsync(FXIO_WAIT, const_cast<int *>(_runningOp));
_runningOp = NULL;
}
}
@@ -90,7 +90,7 @@ void AsyncFio::read(int fd, void *dest, unsigned int len) {
checkSync();
assert(fd < MAX_HANDLES);
_runningOp = _ioSlots + fd;
- fileXioRead(fd, (unsigned char*)dest, len);
+ fileXioRead(fd, (unsigned char *)dest, len);
SignalSema(_ioSema);
}
@@ -99,7 +99,7 @@ void AsyncFio::write(int fd, const void *src, unsigned int len) {
checkSync();
assert(fd < MAX_HANDLES);
_runningOp = _ioSlots + fd;
- fileXioWrite(fd, (unsigned char*)src, len);
+ fileXioWrite(fd, (unsigned char *)const_cast<void *>(src), len);
SignalSema(_ioSema);
}
@@ -210,7 +210,7 @@ bool AsyncFio::poll(int fd) {
bool retVal = false;
if (PollSema(_ioSema) >= 0) {
if (_runningOp == _ioSlots + fd) {
- if (fileXioWaitAsync(FXIO_NOWAIT, (int *)_runningOp) == FXIO_COMPLETE) {
+ if (fileXioWaitAsync(FXIO_NOWAIT, const_cast<int *>(_runningOp)) == FXIO_COMPLETE) {
_runningOp = NULL;
retVal = true;
} else
@@ -226,7 +226,7 @@ bool AsyncFio::fioAvail(void) {
bool retVal = false;
if (PollSema(_ioSema) > 0) {
if (_runningOp) {
- if (fileXioWaitAsync(FXIO_NOWAIT, (int *)_runningOp) == FXIO_COMPLETE) {
+ if (fileXioWaitAsync(FXIO_NOWAIT, const_cast<int *>(_runningOp)) == FXIO_COMPLETE) {
_runningOp = NULL;
retVal = true;
} else
diff --git a/backends/platform/ps2/asyncfio.h b/backends/platform/ps2/asyncfio.h
index 2e39c8667c..6f84742da0 100644
--- a/backends/platform/ps2/asyncfio.h
+++ b/backends/platform/ps2/asyncfio.h
@@ -23,6 +23,9 @@
#define MAX_HANDLES 32
#include <sys/stat.h>
+#undef chdir // we define our own
+#undef mkdir
+
class AsyncFio {
public:
AsyncFio(void);
diff --git a/backends/platform/ps2/cd.c b/backends/platform/ps2/cd.c
index cd44b3d034..e08437d34f 100644
--- a/backends/platform/ps2/cd.c
+++ b/backends/platform/ps2/cd.c
@@ -19,35 +19,35 @@ int cdvdInitialised = 0;
void cdvdExit(void)
{
- cdvdInitialised = 0;
+ cdvdInitialised = 0;
}
int cdvdInit(int mode)
{
int i=0,len=0,ret=0;
- u8 *pkt;
-
- cdvdCd.server = NULL;
-
- do {
- if ((ret = SifBindRpc(&cdvdCd, CDVD_INIT_BIND_RPC, 0)) < 0) {
- return -1;
- }
- if (!cdvdCd.server) {
- nopdelay();
- }
- }
+ u8 *pkt;
+
+ cdvdCd.server = NULL;
+
+ do {
+ if ((ret = SifBindRpc(&cdvdCd, (signed)CDVD_INIT_BIND_RPC, 0)) < 0) {
+ return -1;
+ }
+ if (!cdvdCd.server) {
+ nopdelay();
+ }
+ }
while(!cdvdCd.server);
- pkt = sendBuffer;
- PUSHDATA( int, pkt, mode, i);
- pkt += i; len += i;
+ pkt = (unsigned char *)sendBuffer;
+ PUSHDATA(int, pkt, mode, i);
+ pkt += i; len += i;
if ((ret = SifCallRpc(&cdvdCd, 0, 0, sendBuffer, len, NULL, 0, 0, 0)) < 0)
- return -1;
+ return -1;
- cdvdInitialised = 1;
+ cdvdInitialised = 1;
- return 0;
+ return 0;
}
diff --git a/backends/platform/ps2/eecodyvdfs.h b/backends/platform/ps2/eecodyvdfs.h
index ac080873e1..f439c42125 100644
--- a/backends/platform/ps2/eecodyvdfs.h
+++ b/backends/platform/ps2/eecodyvdfs.h
@@ -40,7 +40,7 @@ struct CdClock {
#ifdef __cplusplus
extern "C" {
#endif
- int initCdvdFs(void);
+ int initCdvdFs(void);
void readRTC(struct CdClock *dest);
int driveStop(void);
int driveStandby(void);
diff --git a/backends/platform/ps2/fileio.cpp b/backends/platform/ps2/fileio.cpp
index 411e20d3bc..205a688438 100644
--- a/backends/platform/ps2/fileio.cpp
+++ b/backends/platform/ps2/fileio.cpp
@@ -20,8 +20,9 @@
*
*/
-// Disable symbol overrides so that we can use system headers.
-#define FORBIDDEN_SYMBOL_ALLOW_ALL
+// Disable symbol overrides so that we can use "FILE"
+#define FORBIDDEN_SYMBOL_EXCEPTION_FILE
+#define FORBIDDEN_SYMBOL_EXCEPTION_printf
#include "backends/platform/ps2/fileio.h"
@@ -78,12 +79,12 @@ Ps2File::~Ps2File() {
fio.seek(_fd, 0, SEEK_SET);
fio.write(_fd, _cacheBuf, _filePos);
w = fio.sync(_fd);
- printf("flushed wbuf: %x of %x\n", w, _filePos);
+ dbg_printf("flushed wbuf: %x of %x\n", w, _filePos);
}
fio.close(_fd);
uint32 r = fio.sync(_fd);
- printf("close [%d] - sync'd = %d\n", _fd, r);
+ dbg_printf("close [%d] - sync'd = %d\n", _fd, r);
}
free(_cacheBuf);
@@ -97,7 +98,7 @@ bool Ps2File::open(const char *name, int mode) {
#if 1
_fd = fio.open(name, mode);
- printf("open %s [%d]\n", name, _fd);
+ dbg_printf("open %s [%d]\n", name, _fd);
if (_fd >= 0) {
_mode = mode;
@@ -110,9 +111,9 @@ bool Ps2File::open(const char *name, int mode) {
else
_fileSize = 0;
- printf(" _mode = %x\n", _mode);
- printf(" _fileSize = %d\n", _fileSize);
- // printf(" _filePos = %d\n", _filePos);
+ dbg_printf(" _mode = %x\n", _mode);
+ dbg_printf(" _fileSize = %d\n", _fileSize);
+ // dbg_printf(" _filePos = %d\n", _filePos);
return true;
}
@@ -130,7 +131,7 @@ bool Ps2File::open(const char *name, int mode) {
if (_fileSize && mode != O_RDONLY) {
fio.read(_fd, _cacheBuf, _fileSize);
r = fio.sync(_fd);
- printf(" sz=%d, read=%d\n", _fileSize, r);
+ dbg_printf(" sz=%d, read=%d\n", _fileSize, r);
assert(r == _fileSize);
}
@@ -141,7 +142,7 @@ bool Ps2File::open(const char *name, int mode) {
_fd = fio.open(name, mode);
- printf("open %s [%d]\n", name, _fd);
+ dbg_printf("open %s [%d]\n", name, _fd);
if (_fd >= 0) {
_mode = mode;
@@ -160,16 +161,16 @@ bool Ps2File::open(const char *name, int mode) {
if (mode != O_RDONLY) {
fio.read(_fd, _cacheBuf, _fileSize);
r = fio.sync(_fd);
- printf(" sz=%d, read=%d\n", _fileSize, r);
+ dbg_printf(" sz=%d, read=%d\n", _fileSize, r);
assert(r == _fileSize);
// _fileSize = fio.seek(_fd, 0, SEEK_END);
}
#endif
}
- printf(" _mode = %x\n", _mode);
- printf(" _fileSize = %d\n", _fileSize);
- printf(" _filePos = %d\n", _filePos);
+ dbg_printf(" _mode = %x\n", _mode);
+ dbg_printf(" _fileSize = %d\n", _fileSize);
+ dbg_printf(" _filePos = %d\n", _filePos);
return true;
} else
@@ -208,7 +209,7 @@ bool Ps2File::eof() {
#ifdef __PS2_FILE_SEMA__
SignalSema(_sema);
- // printf(" EOF [%d] : %d of %d -> %d\n", _fd, _filePos, _fileSize, res);
+ // dbg_printf(" EOF [%d] : %d of %d -> %d\n", _fd, _filePos, _fileSize, res);
#endif
return res;
}
@@ -255,8 +256,8 @@ int Ps2File::seek(int32 offset, int origin) {
_eof = true;
}
- // printf("seek [%d] %d %d\n", _fd, offset, origin);
- // printf(" res = %d\n", res);
+ // dbg_printf("seek [%d] %d %d\n", _fd, offset, origin);
+ // dbg_printf(" res = %d\n", res);
#ifdef __PS2_FILE_SEMA__
SignalSema(_sema);
@@ -338,8 +339,8 @@ uint32 Ps2File::read(void *dest, uint32 len) {
#endif
#ifdef __PS2_FILE_DEBUG__
- printf("read (1) : _filePos = %d\n", _filePos);
- printf("read (1) : _cachePos = %d\n", _cachePos);
+ dbg_printf("read (1) : _filePos = %d\n", _filePos);
+ dbg_printf("read (1) : _cachePos = %d\n", _cachePos);
#endif
if (len == 0) {
@@ -409,7 +410,10 @@ uint32 Ps2File::read(void *dest, uint32 len) {
break; // EOF
}
}
+#ifndef ENABLE_PROFILING
+ // doesn't play nice with -pg
cacheReadAhead();
+#endif
#ifdef __PS2_FILE_SEMA__
SignalSema(_sema);
#endif
@@ -473,7 +477,7 @@ uint32 PS2FileStream::write(const void *ptr, uint32 len) {
}
bool PS2FileStream::flush() {
- // printf("flush not implemented\n");
+ // dbg_printf("flush not implemented\n");
return true;
}
@@ -481,7 +485,7 @@ bool PS2FileStream::err() const {
bool errVal = _handle->getErr();
if (errVal) {
- printf("ferror -> %d\n", errVal);
+ dbg_printf("ferror -> %d\n", errVal);
}
return errVal;
@@ -501,7 +505,7 @@ FILE *ps2_fopen(const char *fname, const char *mode) {
Ps2File *file = new Ps2File();
int _mode = O_RDONLY;
- printf("fopen(%s, %s)\n", fname, mode);
+ dbg_printf("fopen(%s, %s)\n", fname, mode);
if (mode[0] == 'r' && mode [1] == 'w')
_mode = O_RDWR;
diff --git a/backends/platform/ps2/fileio.h b/backends/platform/ps2/fileio.h
index 27245dc9c9..16eb7f212a 100644
--- a/backends/platform/ps2/fileio.h
+++ b/backends/platform/ps2/fileio.h
@@ -30,13 +30,13 @@
#include "common/stream.h"
enum {
- CACHE_SIZE = 2048 * 32,
- MAX_READ_STEP = 2048 * 16,
- MAX_CACHED_FILES = 6,
- CACHE_READ_THRESHOLD = 16 * 2048,
- CACHE_FILL_MIN = 2048 * 24,
- READ_ALIGN = 64, // align all reads to the size of an EE cache line
- READ_ALIGN_MASK = READ_ALIGN - 1
+ CACHE_SIZE = 2048 * 32,
+ MAX_READ_STEP = 2048 * 16,
+ MAX_CACHED_FILES = 6,
+ CACHE_READ_THRESHOLD = 16 * 2048,
+ CACHE_FILL_MIN = 2048 * 24,
+ READ_ALIGN = 64, // align all reads to the size of an EE cache line
+ READ_ALIGN_MASK = READ_ALIGN - 1
};
// TODO: Make this a subclass of SeekableReadStream & WriteStream
diff --git a/backends/platform/ps2/icon.cpp b/backends/platform/ps2/icon.cpp
index df6a165cd4..9319d9f4d9 100644
--- a/backends/platform/ps2/icon.cpp
+++ b/backends/platform/ps2/icon.cpp
@@ -937,7 +937,7 @@ uint16 PS2Icon::decompressData(uint16 **data) {
uint16 inPos = 1;
const uint16 *rleData = (const uint16 *)_rleIcoData;
uint16 resSize = rleData[0];
- uint16 *resData = (uint16 *)malloc(resSize * sizeof(uint16));
+ uint16 *resData = (uint16 *)memalign(64, resSize * sizeof(uint16));
uint16 outPos = 0;
while (outPos < resSize) {
diff --git a/backends/platform/ps2/iop/CoDyVDfs/common/codyvdirx.h b/backends/platform/ps2/iop/CoDyVDfs/common/codyvdirx.h
index 81ef7cb6d0..6ac5a0bb65 100644
--- a/backends/platform/ps2/iop/CoDyVDfs/common/codyvdirx.h
+++ b/backends/platform/ps2/iop/CoDyVDfs/common/codyvdirx.h
@@ -26,13 +26,13 @@
#define CDVDFS_IRX_ID 0xD004352
// commands:
-#define READ_RTC 0
-#define SET_READ_SPEED 1
-#define DRIVE_STOP 2
-#define DRIVE_STANDBY 3
+#define READ_RTC 0
+#define SET_READ_SPEED 1
+#define DRIVE_STOP 2
+#define DRIVE_STANDBY 3
-#define CdTrayOpen 0
-#define CdTrayClose 1
-#define CdTrayCheck 2
+#define CdTrayOpen 0
+#define CdTrayClose 1
+#define CdTrayCheck 2
#endif // CDVDFS_COMMON_H
diff --git a/backends/platform/ps2/iop/CoDyVDfs/iop/cdtypes.h b/backends/platform/ps2/iop/CoDyVDfs/iop/cdtypes.h
index ae4fd44ce5..d9bd5287c6 100644
--- a/backends/platform/ps2/iop/CoDyVDfs/iop/cdtypes.h
+++ b/backends/platform/ps2/iop/CoDyVDfs/iop/cdtypes.h
@@ -39,24 +39,24 @@ typedef struct {
} ISOPathTableRecord __attribute__ ((packed));
typedef struct {
- uint8 year; // Number of years since 1900
- uint8 month; // Month of the year from 1 to 12
- uint8 day; // Day of the Month from 1 to 31
- uint8 hour; // Hour of the day from 0 to 23
- uint8 min; // Minute of the hour from 0 to 59
- uint8 sec; // second of the minute from 0 to 59
- uint8 gmtOff; // Offset from Greenwich Mean Time in number of 15 minute intervals from -48(West) to +52(East)
+ uint8 year; // Number of years since 1900
+ uint8 month; // Month of the year from 1 to 12
+ uint8 day; // Day of the Month from 1 to 31
+ uint8 hour; // Hour of the day from 0 to 23
+ uint8 min; // Minute of the hour from 0 to 59
+ uint8 sec; // second of the minute from 0 to 59
+ uint8 gmtOff; // Offset from Greenwich Mean Time in number of 15 minute intervals from -48(West) to +52(East)
uint8 padding[10];
} ISOTime __attribute__ ((packed));
typedef struct {
- uint8 year; // Number of years since 1900
- uint8 month; // Month of the year from 1 to 12
- uint8 day; // Day of the Month from 1 to 31
- uint8 hour; // Hour of the day from 0 to 23
- uint8 min; // Minute of the hour from 0 to 59
- uint8 sec; // second of the minute from 0 to 59
- uint8 gmtOff; // Offset from Greenwich Mean Time in number of 15 minute intervals from -48(West) to +52(East)
+ uint8 year; // Number of years since 1900
+ uint8 month; // Month of the year from 1 to 12
+ uint8 day; // Day of the Month from 1 to 31
+ uint8 hour; // Hour of the day from 0 to 23
+ uint8 min; // Minute of the hour from 0 to 59
+ uint8 sec; // second of the minute from 0 to 59
+ uint8 gmtOff; // Offset from Greenwich Mean Time in number of 15 minute intervals from -48(West) to +52(East)
//uint8 padding[10];
} ISOFileTime __attribute__ ((packed));
@@ -96,38 +96,38 @@ typedef struct {
uint8 reserved[6];
uint8 reserved2;
uint8 reserved3;
-} ISORoot __attribute__((packed)); // 0x22
+} ISORoot __attribute__((packed)); // 0x22
typedef struct {
- uint8 type; // 0x00
- char identifier[5]; // 0x01
- uint8 version; // 0x06
- uint8 reserved1; // 0x07
- char systemIdentifier[32]; // 0x08
+ uint8 type; // 0x00
+ char identifier[5]; // 0x01
+ uint8 version; // 0x06
+ uint8 reserved1; // 0x07
+ char systemIdentifier[32]; // 0x08
char volumeIdentifier[32]; // 0x28
- uint8 reserved2[8]; // 0x48
- uint32 volumeSpaceSize; // 0x50
- uint32 volumeSpaceSizeBE; // 0x54
- char reserved3[32]; // 0x58
- uint32 volumeSetSize; // 0x78
- uint32 volumeSequenceNumber; // 0x7C
- uint32 logicalBlockSize; // 0x80
- uint32 pathTableSize; // 0x84
- uint32 pathTableSizeBE; // 0x88
- uint32 pathTablePos; // 0x8C
- uint32 pathTable2Pos; // 0x90
- uint32 pathTablePosBE; // 0x94
- uint32 pathTable2PosBE; // 0x98
- ISORoot rootDir; // 0x9C
- ISOIds ids; // 0xBE
- ISOTime creation; // 0x32D
- ISOTime modification; // 0x33E
- ISOTime expiration; // 0x34F
- ISOTime effective; // 0x360
- uint8 fileStructureVersion; // 0x371
- uint8 reserved4; // 0x372
- uint8 applicationUse[512]; // 0x373
- uint8 reserved5[653]; // 0x573
-} ISOPvd __attribute__ ((packed)); // 0x800
+ uint8 reserved2[8]; // 0x48
+ uint32 volumeSpaceSize; // 0x50
+ uint32 volumeSpaceSizeBE; // 0x54
+ char reserved3[32]; // 0x58
+ uint32 volumeSetSize; // 0x78
+ uint32 volumeSequenceNumber; // 0x7C
+ uint32 logicalBlockSize; // 0x80
+ uint32 pathTableSize; // 0x84
+ uint32 pathTableSizeBE; // 0x88
+ uint32 pathTablePos; // 0x8C
+ uint32 pathTable2Pos; // 0x90
+ uint32 pathTablePosBE; // 0x94
+ uint32 pathTable2PosBE; // 0x98
+ ISORoot rootDir; // 0x9C
+ ISOIds ids; // 0xBE
+ ISOTime creation; // 0x32D
+ ISOTime modification; // 0x33E
+ ISOTime expiration; // 0x34F
+ ISOTime effective; // 0x360
+ uint8 fileStructureVersion; // 0x371
+ uint8 reserved4; // 0x372
+ uint8 applicationUse[512]; // 0x373
+ uint8 reserved5[653]; // 0x573
+} ISOPvd __attribute__ ((packed)); // 0x800
#endif // __CDTYPES_H__
diff --git a/backends/platform/ps2/iop/CoDyVDfs/iop/codyvdfs.c b/backends/platform/ps2/iop/CoDyVDfs/iop/codyvdfs.c
index e55e62853b..2a94560843 100644
--- a/backends/platform/ps2/iop/CoDyVDfs/iop/codyvdfs.c
+++ b/backends/platform/ps2/iop/CoDyVDfs/iop/codyvdfs.c
@@ -59,7 +59,7 @@ int verifyDriveReady(void) {
return -1; // drive still not ready
}
}
- if (mediaType == DISC_NONE)
+ if (mediaType == DISC_NONE)
return -1;
return 0;
}
@@ -72,14 +72,14 @@ int cacheEnterDir(ISODirectoryRecord *dir) {
cachedDirOfs = 0;
cacheName = cachedDir + strlen(cachedDir);
memcpy(cacheName, dir->name, dir->len_fi);
- cacheName[dir->len_fi] = '/';
+ cacheName[dir->len_fi] = '/';
cacheName[dir->len_fi + 1] = '\0';
return cdReadSectors(cachedDirLba, 1, cacheBuf, &rmode);
}
int initRootCache(void) {
CdRMode rmode = { 16, 0, CdSect2048, 0 };
- ISODirectoryRecord *root = (ISODirectoryRecord*)cacheBuf;
+ ISODirectoryRecord *root = (ISODirectoryRecord *)cacheBuf;
if (cdReadSectors(fsRootLba, 1, cacheBuf, &rmode) == 0) {
cachedDir[0] = '\0';
@@ -104,10 +104,10 @@ ISODirectoryRecord *findEntryInCache(const char *name, int nameLen) {
if (i != cachedDirOfs) {
if (cdReadSectors(cachedDirLba + i, 1, cacheBuf, &rmode) < 0)
return NULL;
- cachedDirOfs = i;
+ cachedDirOfs = i;
}
- while (entry->len_dr && ((uint8*)entry < cacheBuf + SECTOR_SIZE)) {
+ while (entry->len_dr && ((uint8 *)entry < cacheBuf + SECTOR_SIZE)) {
if ((entry->len_fi > 2) && (entry->name[entry->len_fi - 2] == ';') && (entry->name[entry->len_fi - 1] == '1')) {
if ((nameLen == entry->len_fi - 2) && (strnicmp(name, entry->name, entry->len_fi - 2) == 0))
return entry;
@@ -115,10 +115,10 @@ ISODirectoryRecord *findEntryInCache(const char *name, int nameLen) {
if ((nameLen == entry->len_fi) && (strnicmp(name, entry->name, entry->len_fi) == 0))
return entry;
}
- entry = (ISODirectoryRecord *)( (uint8*)entry + entry->len_dr );
+ entry = (ISODirectoryRecord *)( (uint8 *)entry + entry->len_dr );
}
}
- return NULL;
+ return NULL;
}
ISODirectoryRecord *findPath(const char *path) {
@@ -225,12 +225,12 @@ int initDisc(void) {
case 1:
discType = DISC_MODE1;
printf("Disc: Mode1\n");
- pvd = (ISOPvd*)(cacheBuf + 4);
+ pvd = (ISOPvd *)(cacheBuf + 4);
break;
case 2:
discType = DISC_MODE2;
printf("Disc: Mode2\n");
- pvd = (ISOPvd*)(cacheBuf + 12);
+ pvd = (ISOPvd *)(cacheBuf + 12);
break;
default:
DBG_PRINTF("Unknown Sector Type %02X\n", cacheBuf[3]);
@@ -257,7 +257,7 @@ int initDisc(void) {
mediaType = discType;
DBG_PRINTF("Root directory in sector %d\n", fsRootLba);
- return initRootCache();
+ return initRootCache();
}
}
}
@@ -290,46 +290,46 @@ int cd_init(iop_device_t *dev) {
}
iop_device_ops_t FS_ops = {
- (void *) cd_init,
- (void *) cd_dummy,
- (void *) cd_dummy,
- (void *) cd_open,
- (void *) cd_close,
- (void *) cd_read,
- (void *) cd_dummy,
- (void *) cd_lseek,
- (void *) cd_dummy,
- (void *) cd_dummy,
- (void *) cd_dummy,
- (void *) cd_dummy,
- (void *) cd_dopen,
- (void *) cd_dclose,
- (void *) cd_dread,
- (void *) cd_dummy,
- (void *) cd_dummy,
+ (void *) cd_init,
+ (void *) cd_dummy,
+ (void *) cd_dummy,
+ (void *) cd_open,
+ (void *) cd_close,
+ (void *) cd_read,
+ (void *) cd_dummy,
+ (void *) cd_lseek,
+ (void *) cd_dummy,
+ (void *) cd_dummy,
+ (void *) cd_dummy,
+ (void *) cd_dummy,
+ (void *) cd_dopen,
+ (void *) cd_dclose,
+ (void *) cd_dread,
+ (void *) cd_dummy,
+ (void *) cd_dummy,
};
#define FS_NAME "cdfs"
#define FS_DESC "CD-ROM"
iop_device_t fsdriver = {
- FS_NAME,
- IOP_DT_FS | IOP_DT_FSEXT,
- 1,
- FS_DESC,
- &FS_ops
+ FS_NAME,
+ IOP_DT_FS | IOP_DT_FSEXT,
+ 1,
+ FS_DESC,
+ &FS_ops
};
int _start(void) {
- printf("CoDyVDfs v0.01\n");
+ printf("CoDyVDfs v0.01\n");
CdInit(1);
- DelDrv(FS_NAME);
- AddDrv(&fsdriver);
+ DelDrv(FS_NAME);
+ AddDrv(&fsdriver);
initRpc();
initFio();
- return(0);
+ return(0);
}
int strnicmp(const char *s1, const char *s2, int n) {
diff --git a/backends/platform/ps2/iop/CoDyVDfs/iop/codyvdfs.h b/backends/platform/ps2/iop/CoDyVDfs/iop/codyvdfs.h
index d50e89e4f3..cc903ea841 100644
--- a/backends/platform/ps2/iop/CoDyVDfs/iop/codyvdfs.h
+++ b/backends/platform/ps2/iop/CoDyVDfs/iop/codyvdfs.h
@@ -51,20 +51,20 @@ enum ReadModes {
};
enum {
- CdDiskNone = 0x00,
- CdDiskDetect, // 0x01
- CdDiskDetectCD, // 0x02
- CdDiskDetectDVD, // 0x03
- CdDiskDetectUnk = 0x05,
- CdDiskCDPS1 = 0x10,
- CdDiskCDDAPS1 = 0x11,
- CdDiskCDPS2 = 0x12,
- CdDiskCDDAPS2 = 0x13,
- CdDiskDVDPS2 = 0x14,
- CdDiskDVDV2 = 0xFC,
- CdDiskCDDA = 0xFD,
- CdDiskDVDV = 0xFE,
- CdDiskIllegal = 0xFF
+ CdDiskNone = 0x00,
+ CdDiskDetect, // 0x01
+ CdDiskDetectCD, // 0x02
+ CdDiskDetectDVD, // 0x03
+ CdDiskDetectUnk = 0x05,
+ CdDiskCDPS1 = 0x10,
+ CdDiskCDDAPS1 = 0x11,
+ CdDiskCDPS2 = 0x12,
+ CdDiskCDDAPS2 = 0x13,
+ CdDiskDVDPS2 = 0x14,
+ CdDiskDVDV2 = 0xFC,
+ CdDiskCDDA = 0xFD,
+ CdDiskDVDV = 0xFE,
+ CdDiskIllegal = 0xFF
};
#define DISC_NOT_READY(type) ((type > CdDiskNone) && (type < CdDiskCDPS1) && (type != CdDiskDetectUnk))
diff --git a/backends/platform/ps2/iop/CoDyVDfs/iop/fiofs.c b/backends/platform/ps2/iop/CoDyVDfs/iop/fiofs.c
index f0a06f927b..611211a715 100644
--- a/backends/platform/ps2/iop/CoDyVDfs/iop/fiofs.c
+++ b/backends/platform/ps2/iop/CoDyVDfs/iop/fiofs.c
@@ -104,7 +104,7 @@ int cd_open(iop_file_t *handle, const char *name, int mode) {
fd->pos = 0;
fd->cachedLba = 0;
- handle->privdata = (void*)fdSlot;
+ handle->privdata = (void *)fdSlot;
return 0;
}
@@ -135,7 +135,7 @@ int cd_read(iop_file_t *handle, void *dest, int length) {
FioHandle *fd = fioHandles + (int)handle->privdata;
CdRMode rmode = { 16, 0, CdSect2048, 0 };
int readLba, readPos, bytesLeft;
- uint8 *destPos = (uint8*)dest;
+ uint8 *destPos = (uint8 *)dest;
int doCopy;
int numLba;
readLba = fd->lba + (fd->pos >> 11);
@@ -171,13 +171,13 @@ int cd_read(iop_file_t *handle, void *dest, int length) {
numLba = bytesLeft >> 11;
if (cdReadSectors(readLba, numLba, destPos, &rmode) != 0)
break;
- readLba += numLba;
+ readLba += numLba;
fd->pos += numLba << 11;
destPos += numLba << 11;
bytesLeft &= 0x7FF;
}
}
- return destPos - (uint8*)dest;
+ return destPos - (uint8 *)dest;
}
int cd_close(iop_file_t *handle) {
@@ -219,7 +219,7 @@ int cd_dopen(iop_file_t *handle, const char *path) {
}
dioHandles[fdSlot].curOfs = 0;
dioHandles[fdSlot].lbaOfs = 0;
- handle->privdata = (void*)fdSlot;
+ handle->privdata = (void *)fdSlot;
return fdSlot;
}
@@ -252,7 +252,7 @@ int cd_dread(iop_file_t *handle, iox_dirent_t *buf) {
}
}
}
- return 0;
+ return 0;
}
int cd_dclose(iop_file_t *handle) {
diff --git a/backends/platform/ps2/iop/CoDyVDfs/iop/rpcfs.c b/backends/platform/ps2/iop/CoDyVDfs/iop/rpcfs.c
index 5b760faa06..983ae38716 100644
--- a/backends/platform/ps2/iop/CoDyVDfs/iop/rpcfs.c
+++ b/backends/platform/ps2/iop/CoDyVDfs/iop/rpcfs.c
@@ -69,11 +69,11 @@ void *rpcReadClock(void *data) {
void *driveStop(void *data) {
if (CdStop() == 1) {
if (CdSync(0) == 0) {
- *(int*)data = CdGetError();
+ *(int *)data = CdGetError();
} else
- *(int*)data = -0x100;
+ *(int *)data = -0x100;
} else
- *(int*)data = -0x101;
+ *(int *)data = -0x101;
return data;
}
@@ -81,11 +81,11 @@ void *driveStandby(void *data) {
int type;
if (CdStandby() == 1) {
if (CdSync(0) == 0) {
- *(int*)data = CdGetError();
+ *(int *)data = CdGetError();
} else
- *(int*)data = -0x100;
+ *(int *)data = -0x100;
} else
- *(int*)data = -0x101;
+ *(int *)data = -0x101;
do { // wait until drive detected disc type
type = CdGetDiskType();
diff --git a/backends/platform/ps2/iop/rpckbd/include/ps2kbd.h b/backends/platform/ps2/iop/rpckbd/include/ps2kbd.h
index 07d9c3d7f9..6bef7caefa 100644
--- a/backends/platform/ps2/iop/rpckbd/include/ps2kbd.h
+++ b/backends/platform/ps2/iop/rpckbd/include/ps2kbd.h
@@ -87,8 +87,8 @@ typedef struct _kbd_keymap
#define KBD_RPC_SETSPECIALMAP 7 /* Sets the special key mapping */
#define KBD_RPC_FLUSHBUFFER 9 /* Flush the internal buffer, probably best after a keymap change */
#define KBD_RPC_RESETKEYMAP 10 /* Reset keymaps to default states */
-#define KBD_RPC_READKEY 11
-#define KBD_RPC_READRAW 12
+#define KBD_RPC_READKEY 11
+#define KBD_RPC_READRAW 12
/* Note on keymaps. In normal keymap a 0 would indicate no key */
/* Key maps are represented by 3 256*8bit tables. First table maps USB key to a char when not shifted */
diff --git a/backends/platform/ps2/iop/rpckbd/src/ps2kbd.c b/backends/platform/ps2/iop/rpckbd/src/ps2kbd.c
index 7266afdce5..838ce9fe85 100644
--- a/backends/platform/ps2/iop/rpckbd/src/ps2kbd.c
+++ b/backends/platform/ps2/iop/rpckbd/src/ps2kbd.c
@@ -1089,7 +1089,7 @@ void *ps2kbd_rpc_server(int fno, void *data, int size) {
ps2kbd_rpc_flushbuffer();
break;
case KBD_RPC_SETLEDS:
- ps2kbd_rpc_setleds(*(u8*) data);
+ ps2kbd_rpc_setleds(*(u8 *) data);
break;
case KBD_RPC_RESETKEYMAP:
ps2kbd_rpc_resetkeymap();
@@ -1129,7 +1129,7 @@ int ps2kbd_init_rpc(void) {
int th;
param.attr = 0x02000000;
- param.thread = (void*)ps2kbd_start_rpc;
+ param.thread = (void *)ps2kbd_start_rpc;
param.priority = 40;
param.stacksize = 0x800;
param.option = 0;
diff --git a/backends/platform/ps2/irxboot.cpp b/backends/platform/ps2/irxboot.cpp
index d3049fcf4b..0e05047c6e 100644
--- a/backends/platform/ps2/irxboot.cpp
+++ b/backends/platform/ps2/irxboot.cpp
@@ -34,37 +34,65 @@
static const char hddArg[] = "-o" "\0" "8" "\0" "-n" "\0" "20";
static const char pfsArg[] = "-m" "\0" "2" "\0" "-o" "\0" "32" "\0" "-n" "\0" "72"; // "\0" "-debug";
-static const char netArg[] = "192.168.0.10" "\0" "255.255.255.0" "\0" "192.168.0.1";
-
-IrxFile irxFiles[] = {
- { "SIO2MAN", BIOS, NOTHING, NULL, 0 },
- { "MCMAN", BIOS, NOTHING, NULL, 0 },
- { "MCSERV", BIOS, NOTHING, NULL, 0 },
- { "PADMAN", BIOS, NOTHING, NULL, 0 },
- { "LIBSD", BIOS, NOTHING, NULL, 0 },
-
- { "IOMANX.IRX", SYSTEM, NOTHING, NULL, 0 },
- { "FILEXIO.IRX", SYSTEM, NOTHING, NULL, 0 },
- { "CODYVDFS.IRX", SYSTEM, NOTHING, NULL, 0 },
+static const char netArg[] = "192.168.1.20" "\0" "255.255.255.0" "\0" "192.168.1.1"; // TODO: set in ScummVM.ini
+
+IrxFile irxCore[] = { // core modules
+ // Memory Card
+ { "SIO2MAN", BIOS, NOTHING, NULL, 0 },
+ { "MCMAN", BIOS, NOTHING, NULL, 0 },
+ { "MCSERV", BIOS, NOTHING, NULL, 0 },
+ // Joypad
+ { "PADMAN", BIOS, NOTHING, NULL, 0 },
+ // Sound
+ { "LIBSD", BIOS, NOTHING, NULL, 0 },
{ "SJPCM.IRX", SYSTEM, NOTHING, NULL, 0 },
+ // Files I/O
+ { "IOMANX.IRX", SYSTEM, NOTHING, NULL, 0 },
+ { "FILEXIO.IRX", SYSTEM, NOTHING, NULL, 0 }
+};
+
+IrxFile irxCdrom[] = { // cdrom modules
+ // CD-Rom FS
+ { "CODYVDFS.IRX", SYSTEM, CD_DRIVER, NULL, 0 }
+};
+IrxFile irxUSB[] = { // USB mass
+ // USB drv & key
{ "USBD.IRX", USB | OPTIONAL | DEPENDANCY, USB_DRIVER, NULL, 0 },
- { "USB_MASS.IRX", USB | OPTIONAL, MASS_DRIVER, NULL, 0 },
+ { "USB_MASS.IRX", USB | OPTIONAL, MASS_DRIVER, NULL, 0 }
+};
+
+IrxFile irxInput[] = { // USB input
+ // USB mouse & kbd
{ "PS2MOUSE.IRX", USB | OPTIONAL, MOUSE_DRIVER, NULL, 0 },
- { "RPCKBD.IRX", USB | OPTIONAL, KBD_DRIVER, NULL, 0 },
-#ifndef NO_ADAPTOR
+ { "RPCKBD.IRX", USB | OPTIONAL, KBD_DRIVER, NULL, 0 }
+};
+
+IrxFile irxHDD[] = { // modules to support HDD
+ // hdd modules
{ "POWEROFF.IRX", HDD | OPTIONAL | NOT_HOST | DEPENDANCY, HDD_DRIVER, NULL, 0 },
{ "PS2DEV9.IRX", HDD | OPTIONAL | NOT_HOST | DEPENDANCY, HDD_DRIVER, NULL, 0 },
{ "PS2ATAD.IRX", HDD | OPTIONAL | DEPENDANCY, HDD_DRIVER, NULL, 0 },
{ "PS2HDD.IRX", HDD | OPTIONAL | DEPENDANCY, HDD_DRIVER, hddArg, sizeof(hddArg) },
- { "PS2FS.IRX", HDD | OPTIONAL | DEPENDANCY, HDD_DRIVER, pfsArg, sizeof(pfsArg) },
+ { "PS2FS.IRX", HDD | OPTIONAL | DEPENDANCY, HDD_DRIVER, pfsArg, sizeof(pfsArg) }
+};
+
+IrxFile irxNet[] = { // modules to support NET
+ // net modules
{ "PS2IP.IRX", NET | OPTIONAL | NOT_HOST | DEPENDANCY, NET_DRIVER, NULL, 0 },
{ "PS2SMAP.IRX", NET | OPTIONAL | NOT_HOST | DEPENDANCY, NET_DRIVER, netArg, sizeof(netArg) },
{ "PS2HOST.IRX", NET | OPTIONAL | NOT_HOST | DEPENDANCY, NET_DRIVER, NULL, 0 }
-#endif
};
-static const int numIrxFiles = sizeof(irxFiles) / sizeof(irxFiles[0]);
+IrxFile *irxType[IRX_MAX] = { irxCore, irxCdrom, irxUSB, irxInput, irxHDD, irxNet };
+
+static const int numIrx[IRX_MAX] = { sizeof(irxCore) / sizeof(IrxFile),
+ sizeof(irxCdrom) / sizeof(IrxFile),
+ sizeof(irxUSB) / sizeof(IrxFile),
+ sizeof(irxInput) / sizeof(IrxFile),
+ sizeof(irxHDD) / sizeof(IrxFile),
+ sizeof(irxNet) / sizeof(IrxFile)
+};
PS2Device detectBootPath(const char *elfPath, char *bootPath) {
@@ -113,19 +141,26 @@ PS2Device detectBootPath(const char *elfPath, char *bootPath) {
return device;
}
-int loadIrxModules(int device, const char *irxPath, IrxReference **modules) {
+int loadIrxModules(int device, const char *irxPath, IrxReference **modules, IrxType type) {
+
+ IrxReference *resModules;
+ IrxReference *curModule;
+ IrxFile *irxFiles;
+ int numFiles;
- IrxReference *resModules = (IrxReference *)malloc(numIrxFiles * sizeof(IrxReference));
- IrxReference *curModule = resModules;
+ irxFiles = irxType[type];
+ numFiles = numIrx[type];
+ resModules = (IrxReference *)memalign(64, numFiles * sizeof(IrxReference));
+ curModule = resModules;
- for (int i = 0; i < numIrxFiles; i++) {
+ for (int i = 0; i < numFiles; i++) {
curModule->fileRef = irxFiles + i;
if ((device == HOST_DEV) && (irxFiles[i].flags & NOT_HOST))
continue;
if ((irxFiles[i].flags & TYPEMASK) == BIOS) {
curModule->loc = IRX_FILE;
- curModule->path = (char *)malloc(32);
+ curModule->path = (char *)memalign(64, 32);
sprintf(curModule->path, "rom0:%s", irxFiles[i].name);
curModule->buffer = NULL;
curModule->size = 0;
@@ -134,7 +169,7 @@ int loadIrxModules(int device, const char *irxPath, IrxReference **modules) {
curModule->errorCode = 0;
} else {
curModule->loc = IRX_BUFFER;
- curModule->path = (char *)malloc(256);
+ curModule->path = (char *)memalign(64, 256);
sprintf(curModule->path, "%s%s%s", irxPath, irxFiles[i].name, (device == CD_DEV) ? ";1" : "");
int fd = fioOpen(curModule->path, O_RDONLY);
@@ -191,7 +226,7 @@ int loadIrxModules(int device, const char *irxPath, IrxReference **modules) {
pos++;
}
// and skip any remaining modules that depend on the missing one, too.
- while ((i < numIrxFiles - 1) && ((irxFiles[i + 1].flags & TYPEMASK) == (curModule->fileRef->flags & TYPEMASK)))
+ while ((i < numFiles - 1) && ((irxFiles[i + 1].flags & TYPEMASK) == (curModule->fileRef->flags & TYPEMASK)))
i++;
// the module that actually failed (curModule) is kept in the array for displaying an error message
}
diff --git a/backends/platform/ps2/irxboot.h b/backends/platform/ps2/irxboot.h
index 867911da0f..487d335553 100644
--- a/backends/platform/ps2/irxboot.h
+++ b/backends/platform/ps2/irxboot.h
@@ -25,6 +25,16 @@
#include "common/scummsys.h"
+enum IrxType {
+ IRX_CORE = 0,
+ IRX_CDROM,
+ IRX_USB,
+ IRX_INPUT,
+ IRX_HDD,
+ IRX_NET,
+ IRX_MAX
+};
+
enum IrxFlags {
BIOS = 0,
SYSTEM = 1,
@@ -40,6 +50,7 @@ enum IrxFlags {
enum IrxPurpose {
NOTHING,
+ CD_DRIVER,
HDD_DRIVER,
USB_DRIVER,
MOUSE_DRIVER,
@@ -81,6 +92,6 @@ struct IrxReference {
int errorCode;
};
-int loadIrxModules(int device, const char *irxPath, IrxReference **modules);
+int loadIrxModules(int device, const char *irxPath, IrxReference **modules, IrxType type);
#endif // __IRXBOOT_H__
diff --git a/backends/platform/ps2/module.mk b/backends/platform/ps2/module.mk
index bf95a5501d..7bcc60e58d 100644
--- a/backends/platform/ps2/module.mk
+++ b/backends/platform/ps2/module.mk
@@ -2,20 +2,20 @@ MODULE := backends/platform/ps2
MODULE_OBJS := \
DmaPipe.o \
- Gs2dScreen.o \
- irxboot.o \
+ Gs2dScreen.o \
+ irxboot.o \
ps2input.o \
ps2pad.o \
savefilemgr.o \
- fileio.o \
- asyncfio.o \
+ fileio.o \
+ asyncfio.o \
icon.o \
- cd.o \
- eecodyvdfs.o \
- rpckbd.o \
- systemps2.o \
- ps2mutex.o \
- ps2time.o \
+ cd.o \
+ eecodyvdfs.o \
+ rpckbd.o \
+ systemps2.o \
+ ps2mutex.o \
+ ps2time.o \
ps2debug.o
# We don't use rules.mk but rather manually update OBJS and MODULE_DIRS.
diff --git a/backends/platform/ps2/ps2debug.cpp b/backends/platform/ps2/ps2debug.cpp
index ec1e251583..84c3649faf 100644
--- a/backends/platform/ps2/ps2debug.cpp
+++ b/backends/platform/ps2/ps2debug.cpp
@@ -22,10 +22,10 @@
#include "ps2debug.h"
#include <stdio.h>
-#include <stdlib.h>
#include <sio.h>
void sioprintf(const char *zFormat, ...) {
+ #if 0 // doesn't seem to work with ps2link...
va_list ap;
char resStr[2048];
@@ -43,4 +43,5 @@ void sioprintf(const char *zFormat, ...) {
sio_putc(*pos);
pos++;
}
+ #endif
}
diff --git a/backends/platform/ps2/ps2debug.h b/backends/platform/ps2/ps2debug.h
index b3da749f60..45db850ebf 100644
--- a/backends/platform/ps2/ps2debug.h
+++ b/backends/platform/ps2/ps2debug.h
@@ -23,7 +23,13 @@
#ifndef __PS2DEBUG_H__
#define __PS2DEBUG_H__
-#define dbg_printf printf
+#ifdef LOGORRHEIC
+ #define FORBIDDEN_SYMBOL_EXCEPTION_printf
+ // #define dbg_printf sio_printf
+ #define dbg_printf printf
+#else
+ #define dbg_printf(...) /* ... */
+#endif
void sioprintf(const char *zFormat, ...);
diff --git a/backends/platform/ps2/ps2input.cpp b/backends/platform/ps2/ps2input.cpp
index 6969aef931..636176e06c 100644
--- a/backends/platform/ps2/ps2input.cpp
+++ b/backends/platform/ps2/ps2input.cpp
@@ -170,7 +170,7 @@ bool Ps2Input::pollEvent(Common::Event *event) {
}
if (checkPadMouse || checkPadKbd) {
// no usb mouse, simulate it using the pad
- uint16 buttons;
+ uint16 buttons;
int16 joyh, joyv;
_pad->readPad(&buttons, &joyh, &joyv);
uint16 btnChange = buttons ^ _padLastButtons;
@@ -474,11 +474,11 @@ const Common::KeyCode Ps2Input::_usbToSdlk[0x100] = {
/* DD */ Common::KEYCODE_INVALID,
/* DE */ Common::KEYCODE_INVALID,
/* DF */ Common::KEYCODE_INVALID,
- /* E0 */ Common::KEYCODE_LCTRL,
+ /* E0 */ Common::KEYCODE_LCTRL,
/* E1 */ Common::KEYCODE_LSHIFT,
/* E2 */ Common::KEYCODE_LALT,
/* E3 */ Common::KEYCODE_INVALID,
- /* E4 */ Common::KEYCODE_RCTRL,
+ /* E4 */ Common::KEYCODE_RCTRL,
/* E5 */ Common::KEYCODE_RSHIFT,
/* E6 */ Common::KEYCODE_RALT,
/* E7 */ Common::KEYCODE_INVALID,
@@ -509,39 +509,39 @@ const Common::KeyCode Ps2Input::_usbToSdlk[0x100] = {
};
const Common::KeyCode Ps2Input::_padCodes[16] = {
- Common::KEYCODE_1, // Select
- Common::KEYCODE_INVALID, // L3
- Common::KEYCODE_INVALID, // R3
- Common::KEYCODE_F5, // Start
- Common::KEYCODE_INVALID, // Up
- Common::KEYCODE_INVALID, // Right
- Common::KEYCODE_INVALID, // Down
- Common::KEYCODE_INVALID, // Left
- Common::KEYCODE_KP0, // L2
- Common::KEYCODE_PERIOD, // R2
- Common::KEYCODE_n, // L1
- Common::KEYCODE_y, // R1
- Common::KEYCODE_ESCAPE, // Triangle
- Common::KEYCODE_INVALID, // Circle => Right mouse button
- Common::KEYCODE_INVALID, // Cross => Left mouse button
- Common::KEYCODE_RETURN // Square
+ Common::KEYCODE_1, // Select
+ Common::KEYCODE_INVALID, // L3
+ Common::KEYCODE_INVALID, // R3
+ Common::KEYCODE_F5, // Start
+ Common::KEYCODE_INVALID, // Up
+ Common::KEYCODE_INVALID, // Right
+ Common::KEYCODE_INVALID, // Down
+ Common::KEYCODE_INVALID, // Left
+ Common::KEYCODE_KP0, // L2
+ Common::KEYCODE_PERIOD, // R2
+ Common::KEYCODE_n, // L1
+ Common::KEYCODE_y, // R1
+ Common::KEYCODE_ESCAPE, // Triangle
+ Common::KEYCODE_INVALID, // Circle => Right mouse button
+ Common::KEYCODE_INVALID, // Cross => Left mouse button
+ Common::KEYCODE_RETURN // Square
};
const Common::KeyCode Ps2Input::_padFlags[16] = {
- Common::KEYCODE_INVALID, // Select
- Common::KEYCODE_INVALID, // L3
- Common::KEYCODE_INVALID, // R3
- Common::KEYCODE_INVALID, // Start
- Common::KEYCODE_INVALID, // Up
- Common::KEYCODE_INVALID, // Right
- Common::KEYCODE_INVALID, // Down
- Common::KEYCODE_INVALID, // Left
- Common::KEYCODE_INVALID, // L2
- Common::KEYCODE_INVALID, // R2
- Common::KEYCODE_INVALID, // L1
- Common::KEYCODE_INVALID, // R1
- Common::KEYCODE_INVALID, // Triangle
- Common::KEYCODE_INVALID, // Circle
- Common::KEYCODE_INVALID, // Cross
- Common::KEYCODE_INVALID // Square
+ Common::KEYCODE_INVALID, // Select
+ Common::KEYCODE_INVALID, // L3
+ Common::KEYCODE_INVALID, // R3
+ Common::KEYCODE_INVALID, // Start
+ Common::KEYCODE_INVALID, // Up
+ Common::KEYCODE_INVALID, // Right
+ Common::KEYCODE_INVALID, // Down
+ Common::KEYCODE_INVALID, // Left
+ Common::KEYCODE_INVALID, // L2
+ Common::KEYCODE_INVALID, // R2
+ Common::KEYCODE_INVALID, // L1
+ Common::KEYCODE_INVALID, // R1
+ Common::KEYCODE_INVALID, // Triangle
+ Common::KEYCODE_INVALID, // Circle
+ Common::KEYCODE_INVALID, // Cross
+ Common::KEYCODE_INVALID // Square
};
diff --git a/backends/platform/ps2/ps2input.h b/backends/platform/ps2/ps2input.h
index 7055b64f4e..af413d262c 100644
--- a/backends/platform/ps2/ps2input.h
+++ b/backends/platform/ps2/ps2input.h
@@ -44,7 +44,7 @@ private:
int mapKey(int key, int mod);
bool getKeyEvent(Common::Event *event, uint16 buttonCode, bool down);
OSystem_PS2 *_system;
- Ps2Pad *_pad;
+ Ps2Pad *_pad;
uint16 _minx, _maxx, _miny, _maxy;
diff --git a/backends/platform/ps2/ps2pad.cpp b/backends/platform/ps2/ps2pad.cpp
index b59547baca..d990690331 100644
--- a/backends/platform/ps2/ps2pad.cpp
+++ b/backends/platform/ps2/ps2pad.cpp
@@ -34,7 +34,7 @@ Ps2Pad::Ps2Pad(OSystem_PS2 *system) {
_padStatus = STAT_NONE;
padInit(0); // initialize library
- _port = _slot = 0; // first controller, no multitap
+ _port = _slot = 0; // first controller, no multitap
initPad();
}
@@ -51,9 +51,6 @@ void Ps2Pad::initPad(void) {
} else {
if (checkPadReady(_port, _slot)) {
switch (_padStatus) {
- case STAT_NONE:
- printf("Pad Status is None. Shouldn't happen\n");
- break;
case STAT_OPEN:
_padStatus = STAT_DETECT;
break;
@@ -104,7 +101,8 @@ void Ps2Pad::initPad(void) {
_padStatus = STAT_OKAY;
break;
case STAT_OKAY:
- // pad is already initialized
+ case STAT_NONE:
+ // pad is already initialized (or not there)
break;
}
} else {
diff --git a/backends/platform/ps2/ps2time.cpp b/backends/platform/ps2/ps2time.cpp
index 647cf0b661..e072ce9483 100644
--- a/backends/platform/ps2/ps2time.cpp
+++ b/backends/platform/ps2/ps2time.cpp
@@ -30,9 +30,9 @@
#define FROM_BCD(a) ((a >> 4) * 10 + (a & 0xF))
-static int g_timeSecs;
-static int g_day, g_month, g_year;
-static int g_lastTimeCheck;
+static int g_timeSecs;
+static int g_day, g_month, g_year;
+static int g_lastTimeCheck;
extern volatile uint32 msecCount;
void buildNewDate(int dayDiff) {
diff --git a/backends/platform/ps2/rpckbd.c b/backends/platform/ps2/rpckbd.c
index 0bb45208f5..e7975ab484 100644
--- a/backends/platform/ps2/rpckbd.c
+++ b/backends/platform/ps2/rpckbd.c
@@ -17,7 +17,7 @@
#include <string.h>
#include "backends/platform/ps2/rpckbd.h"
-static int curr_readmode = PS2KBD_READMODE_NORMAL;
+static unsigned int curr_readmode = PS2KBD_READMODE_NORMAL;
static int kbdRpcSema = -1;
static int kbdInitialized = 0;
diff --git a/backends/platform/ps2/savefilemgr.cpp b/backends/platform/ps2/savefilemgr.cpp
index de03e76892..4fd2b1c72b 100644
--- a/backends/platform/ps2/savefilemgr.cpp
+++ b/backends/platform/ps2/savefilemgr.cpp
@@ -21,8 +21,6 @@
*/
#define FORBIDDEN_SYMBOL_EXCEPTION_printf
-#define FORBIDDEN_SYMBOL_EXCEPTION_mkdir
-#define FORBIDDEN_SYMBOL_EXCEPTION_unistd_h
#include "common/config-manager.h"
#include "common/zlib.h"
@@ -37,6 +35,7 @@
#include "savefilemgr.h"
#include "Gs2dScreen.h"
#include "ps2temp.h"
+#include "ps2debug.h"
extern AsyncFio fio;
@@ -57,20 +56,20 @@ bool Ps2SaveFileManager::mcCheck(const char *path) {
// int res;
- printf("mcCheck\n");
+ dbg_printf("mcCheck\n");
if (!dir.exists()) {
- printf("! exist -> create : ");
+ dbg_printf("! exist -> create : ");
#ifdef __USE_LIBMC__
- printf("%s\n", path+4);
+ dbg_printf("%s\n", path+4);
// WaitSema(_sema);
mcSync(0, NULL, NULL);
mcMkDir(0 /*port*/, 0 /*slot*/, path+4);
mcSync(0, NULL, &res);
- printf("sync : %d\n", res);
+ dbg_printf("sync : %d\n", res);
// SignalSema(_sema);
#else
- printf("%s\n", path);
+ dbg_printf("%s\n", path);
fio.mkdir(path);
#endif
}
@@ -108,7 +107,7 @@ Common::InSaveFile *Ps2SaveFileManager::openForLoading(const Common::String &fil
}
else {
char temp[32];
- printf("MC : filename = %s\n", filename.c_str());
+ dbg_printf("MC : filename = %s\n", filename.c_str());
strcpy(temp, filename.c_str());
// mcSplit(temp, game, ext);
@@ -149,7 +148,7 @@ Common::OutSaveFile *Ps2SaveFileManager::openForSaving(const Common::String &fil
Common::FSNode savePath(ConfMan.get("savepath")); // TODO: is this fast?
Common::WriteStream *sf;
- printf("openForSaving : %s\n", filename.c_str());
+ dbg_printf("openForSaving : %s\n", filename.c_str());
if (!savePath.exists() || !savePath.isDirectory())
return NULL;
@@ -166,10 +165,10 @@ Common::OutSaveFile *Ps2SaveFileManager::openForSaving(const Common::String &fil
sprintf(path, "mc0:ScummVM/indy4/iq-points");
}
// FIXME : hack for bs1 saved games
- else if (filename == "SAVEGAME.INF") {
- mcCheck("mc0:ScummVM/sword1");
- sprintf(path, "mc0:ScummVM/sword1/SAVEGAME.INF");
- }
+ else if (filename == "SAVEGAME.INF") {
+ mcCheck("mc0:ScummVM/sword1");
+ sprintf(path, "mc0:ScummVM/sword1/SAVEGAME.INF");
+ }
else {
char temp[32];
strcpy(temp, filename.c_str());
@@ -240,7 +239,7 @@ Common::StringArray Ps2SaveFileManager::listSavefiles(const Common::String &patt
if (!savePath.exists() || !savePath.isDirectory())
return Common::StringArray();
- printf("listSavefiles = %s\n", pattern.c_str());
+ dbg_printf("listSavefiles = %s\n", pattern.c_str());
if (_mc) {
strcpy(temp, pattern.c_str());
@@ -263,7 +262,7 @@ Common::StringArray Ps2SaveFileManager::listSavefiles(const Common::String &patt
Common::ArchiveMemberList savefiles;
Common::StringArray results;
- printf("dir = %s --- reg = %s\n", _dir.c_str(), search.c_str());
+ dbg_printf("dir = %s --- reg = %s\n", _dir.c_str(), search.c_str());
if (dir.listMatchingMembers(savefiles, search) > 0) {
for (Common::ArchiveMemberList::const_iterator file = savefiles.begin(); file != savefiles.end(); ++file) {
@@ -272,11 +271,11 @@ Common::StringArray Ps2SaveFileManager::listSavefiles(const Common::String &patt
temp[3] = '\0';
sprintf(path, "%s.%s", game, temp);
results.push_back(path);
- printf(" --> found = %s -> %s\n", (*file)->getName().c_str(), path);
+ dbg_printf(" --> found = %s -> %s\n", (*file)->getName().c_str(), path);
}
else {
results.push_back((*file)->getName());
- printf(" --> found = %s\n", (*file)->getName().c_str());
+ dbg_printf(" --> found = %s\n", (*file)->getName().c_str());
}
}
}
diff --git a/backends/platform/ps2/sysdefs.h b/backends/platform/ps2/sysdefs.h
index 0b0d286189..c886d70eef 100644
--- a/backends/platform/ps2/sysdefs.h
+++ b/backends/platform/ps2/sysdefs.h
@@ -40,30 +40,30 @@ enum Interrupts {
};
// dma 2 registers
-#define D2_CHCR (*(volatile uint32*)0x1000A000)
-#define D2_QWC (*(volatile uint32*)0x1000A020)
-#define D2_TADR (*(volatile uint32*)0x1000A030)
-#define D2_MADR (*(volatile uint32*)0x1000A010)
-#define D2_ASR1 (*(volatile uint32*)0x1000A050)
-#define D2_ASR0 (*(volatile uint32*)0x1000A040)
+#define D2_CHCR (*(volatile uint32 *)0x1000A000)
+#define D2_QWC (*(volatile uint32 *)0x1000A020)
+#define D2_TADR (*(volatile uint32 *)0x1000A030)
+#define D2_MADR (*(volatile uint32 *)0x1000A010)
+#define D2_ASR1 (*(volatile uint32 *)0x1000A050)
+#define D2_ASR0 (*(volatile uint32 *)0x1000A040)
-#define D_CTRL (*(volatile uint32*)0x1000E000)
-#define D_STAT (*(volatile uint32*)0x1000E010)
-#define D_PCR (*(volatile uint32*)0x1000E020)
-#define D_SQWC (*(volatile uint32*)0x1000E030)
-#define D_RBSR (*(volatile uint32*)0x1000E040)
-#define D_RBOR (*(volatile uint32*)0x1000E050)
-#define D_STADR (*(volatile uint32*)0x1000E060)
+#define D_CTRL (*(volatile uint32 *)0x1000E000)
+#define D_STAT (*(volatile uint32 *)0x1000E010)
+#define D_PCR (*(volatile uint32 *)0x1000E020)
+#define D_SQWC (*(volatile uint32 *)0x1000E030)
+#define D_RBSR (*(volatile uint32 *)0x1000E040)
+#define D_RBOR (*(volatile uint32 *)0x1000E050)
+#define D_STADR (*(volatile uint32 *)0x1000E060)
#define CIM2 (1 << 18)
#define CIS2 (1 << 2)
// timer 0 registers
-#define T0_COUNT (*(volatile uint32*)0x10000000)
-#define T0_MODE (*(volatile uint32*)0x10000010)
-#define T0_COMP (*(volatile uint32*)0x10000020)
-#define T0_HOLD (*(volatile uint32*)0x10000030)
+#define T0_COUNT (*(volatile uint32 *)0x10000000)
+#define T0_MODE (*(volatile uint32 *)0x10000010)
+#define T0_COMP (*(volatile uint32 *)0x10000020)
+#define T0_HOLD (*(volatile uint32 *)0x10000030)
#define TIMER_MODE(clks, gate, gates, gatem, zeroret, cue, cmpe, ovfe, equf, ovff) \
((clks) | ((gate) << 2) | ((gates) << 3) | ((gatem) << 4) | ((zeroret) << 6) | \
diff --git a/backends/platform/ps2/systemps2.cpp b/backends/platform/ps2/systemps2.cpp
index feee73cba7..1aa74b7d9b 100644
--- a/backends/platform/ps2/systemps2.cpp
+++ b/backends/platform/ps2/systemps2.cpp
@@ -20,8 +20,9 @@
*
*/
-// Disable symbol overrides so that we can use system headers.
-#define FORBIDDEN_SYMBOL_ALLOW_ALL
+// Disable symbol overrides so that we can use "FILE"
+#define FORBIDDEN_SYMBOL_EXCEPTION_FILE
+#define FORBIDDEN_SYMBOL_EXCEPTION_printf
#include <kernel.h>
#include <stdio.h>
@@ -50,7 +51,6 @@
#include "backends/platform/ps2/cd.h"
#include "backends/platform/ps2/fileio.h"
#include "backends/platform/ps2/Gs2dScreen.h"
-#include "backends/platform/ps2/irxboot.h"
#include "backends/platform/ps2/ps2debug.h"
#include "backends/platform/ps2/ps2input.h"
#include "backends/platform/ps2/savefilemgr.h"
@@ -112,7 +112,11 @@ extern "C" int scummvm_main(int argc, char *argv[]);
extern "C" int main(int argc, char *argv[]) {
SifInitRpc(0);
+ #ifdef __NEW_PS2SDK__
+ ee_thread_status_t thisThread;
+ #else
ee_thread_t thisThread;
+ #endif
int tid = GetThreadId();
ReferThreadStatus(tid, &thisThread);
@@ -147,6 +151,10 @@ extern "C" int main(int argc, char *argv[]) {
g_systemPs2->quit();
+#ifdef ENABLE_PROFILING
+ // make sure we can flush "gmon.out"
+ fileXioSetBlockMode(FXIO_WAIT);
+#endif
// control never gets here
return res;
}
@@ -184,13 +192,11 @@ void systemSoundThread(OSystem_PS2 *system) {
}
void gluePowerOffCallback(void *system) {
- ((OSystem_PS2*)system)->powerOffCallback();
+ ((OSystem_PS2 *)system)->powerOffCallback();
}
void OSystem_PS2::startIrxModules(int numModules, IrxReference *modules) {
- _usbMassLoaded = _useMouse = _useKbd = _useHdd = _useNet = false;
-
int res = 0, rv = 0;
for (int i = 0; i < numModules; i++) {
if (modules[i].loc == IRX_FILE) {
@@ -216,6 +222,9 @@ void OSystem_PS2::startIrxModules(int numModules, IrxReference *modules) {
case KBD_DRIVER:
_useKbd = true;
break;
+ case CD_DRIVER:
+ _useCd = true;
+ break;
case HDD_DRIVER:
_useHdd = true;
break;
@@ -241,20 +250,79 @@ void OSystem_PS2::startIrxModules(int numModules, IrxReference *modules) {
}
if (modules[i].buffer)
- free(modules[i].buffer);
+ ; // free(modules[i].buffer);
} else {
sioprintf("module %d of %d damaged, loc %d, path %s\n", i, numModules, modules[i].loc, modules[i].path);
}
- free(modules[i].path);
+ // free(modules[i].path);
}
- free(modules);
+ // free(modules);
sioprintf("done\n");
sioprintf("UsbMass: %sloaded\n", _usbMassLoaded ? "" : "not ");
sioprintf("Mouse: %sloaded\n", _useMouse ? "" : "not ");
sioprintf("Kbd: %sloaded\n", _useKbd ? "" : "not ");
+ sioprintf("Cd: %sloaded\n", _useCd ? "" : "not ");
sioprintf("Hdd: %sloaded\n", _useHdd ? "" : "not ");
}
+bool OSystem_PS2::loadDrivers(IrxType type)
+{
+ IrxReference *modules;
+ int numModules;
+ int res;
+
+ numModules = loadIrxModules(_bootDevice, _bootPath, &modules, type);
+ // TODO: for IRX_NET allows override IP addr
+ startIrxModules(numModules, modules);
+
+ switch (type) {
+ case IRX_CORE:
+ /* Init I/O */
+ if ((res = fileXioInit()) < 0) {
+ msgPrintf(FOREVER, "FXIO init failed: %d", res);
+ quit();
+ }
+ /* Init sound */
+ if ((res = SjPCM_Init(0)) < 0) {
+ msgPrintf(FOREVER, "SjPCM bind failed: %d\n", res);
+ quit();
+ }
+ break;
+
+ case IRX_CDROM:
+ /* Init CDROM & RTC Clock */
+ if ((res = initCdvdFs()) < 0) {
+ msgPrintf(FOREVER, "CoDyVDfs bind failed: %d", res);
+ quit();
+ }
+ sioprintf("Reading RTC\n");
+ readRtcTime(); /* depends on CDROM driver! */
+ break;
+
+ case IRX_HDD:
+ /* Check HD is available and formatted */
+ if ((hddCheckPresent() < 0) || (hddCheckFormatted() < 0)) {
+ _useHdd = false;
+ }
+ else {
+ poweroffInit();
+ poweroffSetCallback(gluePowerOffCallback, this);
+ }
+ break;
+
+ case IRX_NET:
+ if (_bootDevice == HOST_DEV) // net is pre-loaded on host
+ _useNet = true; // so we need to set by hand
+ break;
+
+ default:
+ /* zzz */
+ break;
+ }
+
+ return true;
+}
+
OSystem_PS2::OSystem_PS2(const char *elfPath) {
_soundStack = _timerStack = NULL;
_printY = 0;
@@ -262,20 +330,19 @@ OSystem_PS2::OSystem_PS2(const char *elfPath) {
_systemQuit = false;
_modeChanged = false;
_screenChangeCount = 0;
+ _mouseVisible = false;
- _screen = new Gs2dScreen(320, 200, TV_DONT_CARE);
+ // _screen = new Gs2dScreen(320, 200, TV_DONT_CARE); // moved to ::initSize
sioprintf("Initializing system...\n");
- _screen->wantAnim(true);
+ // _screen->wantAnim(true);
- _bootPath = (char *)malloc(128);
+ _bootPath = (char *)memalign(64, 128);
_bootDevice = detectBootPath(elfPath, _bootPath);
- IrxReference *modules;
- int numModules = loadIrxModules(_bootDevice, _bootPath, &modules);
-
if (_bootDevice != HOST_DEV) {
+ // TODO: reset funx
sioprintf("Resetting IOP.\n");
cdvdInit(CDVD_EXIT);
cdvdExit();
@@ -298,50 +365,12 @@ OSystem_PS2::OSystem_PS2(const char *elfPath) {
// TODO: ps2link 1.46 will stall on "poweroff" init / cb
}
- startIrxModules(numModules, modules);
-
- int res;
- if ((res = fileXioInit()) < 0) {
- msgPrintf(FOREVER, "FXIO Init failed: %d", res);
- quit();
- }
+ _usbMassLoaded = _useMouse = _useKbd = _useCd = _useHdd = _useNet = false;
- if ((res = initCdvdFs()) < 0) {
- msgPrintf(FOREVER, "CoDyVDfs bind failed: %d", res);
- quit();
- }
-
- if ((res = SjPCM_Init(0)) < 0) {
- msgPrintf(FOREVER, "SjPCM Bind failed: %d\n", res);
- quit();
- }
-
- if (_useHdd) {
- if ((hddCheckPresent() < 0) || (hddCheckFormatted() < 0))
- _useHdd = false;
-
- //hddPreparePoweroff();
- poweroffInit();
-
- //hddSetUserPoweroffCallback(gluePowerOffCallback, this);
- poweroffSetCallback(gluePowerOffCallback, this);
- }
+ loadDrivers(IRX_CORE);
+ loadDrivers(IRX_CDROM); // consider CDROM as "core", as RTC depends on it
fileXioSetBlockMode(FXIO_NOWAIT);
-
- _mouseVisible = false;
-
- sioprintf("reading RTC\n");
- readRtcTime();
-
- if (_useHdd) {
- // TODO : make partition path configurable
- if (fio.mount("pfs0:", "hdd0:+ScummVM", 0) >= 0)
- printf("Successfully mounted!\n");
- else
- _useHdd = false;
- }
-
initMutexes();
}
@@ -356,14 +385,67 @@ void OSystem_PS2::init(void) {
sioprintf("Starting SavefileManager\n");
_savefileManager = new Ps2SaveFileManager(this, _screen);
- sioprintf("Initializing ps2Input\n");
- _input = new Ps2Input(this, _useMouse, _useKbd);
-
prepMC();
makeConfigPath();
- _screen->wantAnim(false);
- fillScreen(0);
+ // _screen->wantAnim(false);
+ // fillScreen(0);
+}
+
+void OSystem_PS2::config(void) {
+ #ifndef NO_ADAPTOR
+ if (ConfMan.hasKey("hdd_part", "PlayStation2")) { // "hdd" ?
+ const char *hdd = ConfMan.get("hdd_part", "PlayStation2").c_str();
+
+ if ( !strcmp(hdd, "0") || !strcmp(hdd, "no") || !strcmp(hdd, "disable") ) {
+ _useHdd = false;
+ }
+ else {
+ loadDrivers(IRX_HDD);
+ hddMount(hdd);
+ }
+ }
+ else { // check for HDD and assume partition is +ScummVM
+ loadDrivers(IRX_HDD);
+ hddMount("ScummVM");
+ }
+
+ if (ConfMan.hasKey("net_addr", "PlayStation2")) { // "net" ?
+ const char *net = ConfMan.get("net_addr", "PlayStation2").c_str();
+
+ if ( !strcmp(net, "0") || !strcmp(net, "no") || !strcmp(net, "disable") ) {
+ _useNet = false;
+ }
+ else {
+ loadDrivers(IRX_NET);
+ // TODO: netInit("xxx.xxx.xxx.xxx");
+ }
+ }
+ else { // setup net - IP hardcoded 192.168.1.20
+ loadDrivers(IRX_NET);
+ }
+ #endif
+
+ // why USB drivers only load correctly post HDD ?
+ if (ConfMan.hasKey("usb_mass", "PlayStation2")) { // "usb" ?
+ const char *usb = ConfMan.get("usb_mass", "PlayStation2").c_str();
+
+ if ( !strcmp(usb, "0") || !strcmp(usb, "no") || !strcmp(usb, "disable") ) {
+ _usbMassLoaded = false;
+ }
+ else {
+ loadDrivers(IRX_USB);
+ loadDrivers(IRX_INPUT);
+ sioprintf("Initializing ps2Input\n");
+ _input = new Ps2Input(this, _useMouse, _useKbd);
+ }
+ }
+ else { // load USB drivers (mass & input(
+ loadDrivers(IRX_USB);
+ loadDrivers(IRX_INPUT);
+ sioprintf("Initializing ps2Input\n");
+ _input = new Ps2Input(this, _useMouse, _useKbd);
+ }
}
OSystem_PS2::~OSystem_PS2(void) {
@@ -380,26 +462,40 @@ void OSystem_PS2::initTimer(void) {
g_TimerThreadSema = CreateSema(&threadSema);
g_SoundThreadSema = CreateSema(&threadSema);
assert((g_TimerThreadSema >= 0) && (g_SoundThreadSema >= 0));
-
+ #ifdef __NEW_PS2SDK__
+ ee_thread_t timerThread, soundThread;
+ ee_thread_status_t thisThread;
+ #else
ee_thread_t timerThread, soundThread, thisThread;
+ #endif
ReferThreadStatus(GetThreadId(), &thisThread);
- _timerStack = (uint8 *)malloc(TIMER_STACK_SIZE);
- _soundStack = (uint8 *)malloc(SOUND_STACK_SIZE);
+ _timerStack = (uint8 *)memalign(64, TIMER_STACK_SIZE);
+ _soundStack = (uint8 *)memalign(64, SOUND_STACK_SIZE);
+ // gprof doesn't cope with higher thread priority too well
+ #ifdef ENABLE_PROFILING
+ timerThread.initial_priority = thisThread.current_priority;
+ #else
// give timer thread a higher priority than main thread
timerThread.initial_priority = thisThread.current_priority - 1;
+ #endif
timerThread.stack = _timerStack;
timerThread.stack_size = TIMER_STACK_SIZE;
timerThread.func = (void *)systemTimerThread;
- timerThread.gp_reg = &_gp;
+ timerThread.gp_reg = &_gp;
+ // gprof doesn't cope with higher thread priority too well
+ #ifdef ENABLE_PROFILING
+ soundThread.initial_priority = thisThread.current_priority;
+ #else
// soundthread's priority is higher than main- and timerthread
soundThread.initial_priority = thisThread.current_priority - 2;
+ #endif
soundThread.stack = _soundStack;
soundThread.stack_size = SOUND_STACK_SIZE;
soundThread.func = (void *)systemSoundThread;
- soundThread.gp_reg = &_gp;
+ soundThread.gp_reg = &_gp;
_timerTid = CreateThread(&timerThread);
_soundTid = CreateThread(&soundThread);
@@ -459,39 +555,39 @@ void OSystem_PS2::soundThreadCallback(void) {
// demux data into 2 buffers, L and R
__asm__ (
- "move $t2, %1\n\t" // dest buffer right
- "move $t3, %0\n\t" // dest buffer left
- "lui $t8, 0x7000\n\t" // muxed buffer, fixed at 0x70000000
- "addiu $t9, $0, 100\n\t" // number of loops
- "mtsab $0, 2\n\t" // set qword shift = 2 byte
+ "move $t2, %1\n\t" // dest buffer right
+ "move $t3, %0\n\t" // dest buffer left
+ "lui $t8, 0x7000\n\t" // muxed buffer, fixed at 0x70000000
+ "addiu $t9, $0, 100\n\t" // number of loops
+ "mtsab $0, 2\n\t" // set qword shift = 2 byte
"loop:\n\t"
- " lq $t4, 0($t8)\n\t" // load 8 muxed samples
- " lq $t5, 16($t8)\n\t" // load 8 more muxed samples
+ " lq $t4, 0($t8)\n\t" // load 8 muxed samples
+ " lq $t5, 16($t8)\n\t" // load 8 more muxed samples
- " qfsrv $t6, $0, $t4\n\t" // shift right for second
- " qfsrv $t7, $0, $t5\n\t" // packing step (right channel)
+ " qfsrv $t6, $0, $t4\n\t" // shift right for second
+ " qfsrv $t7, $0, $t5\n\t" // packing step (right channel)
- " ppach $t4, $t5, $t4\n\t" // combine left channel data
- " ppach $t6, $t7, $t6\n\t" // right channel data
+ " ppach $t4, $t5, $t4\n\t" // combine left channel data
+ " ppach $t6, $t7, $t6\n\t" // right channel data
- " sq $t4, 0($t3)\n\t" // write back
- " sq $t6, 0($t2)\n\t" //
+ " sq $t4, 0($t3)\n\t" // write back
+ " sq $t6, 0($t2)\n\t" //
- " addiu $t9, -1\n\t" // decrement loop counter
- " addiu $t2, 16\n\t" // increment pointers
+ " addiu $t9, -1\n\t" // decrement loop counter
+ " addiu $t2, 16\n\t" // increment pointers
" addiu $t3, 16\n\t"
" addiu $t8, 32\n\t"
- " bnez $t9, loop\n\t" // loop
+ " bnez $t9, loop\n\t" // loop
: // outputs
: "r"(soundBufL), "r"(soundBufR) // inputs
- // : "$t2", "$t3", "$t4", "$t5", "$t6", "$t7", "$t8", "$t9" // destroyed
+ // : "$t2", "$t3", "$t4", "$t5", "$t6", "$t7", "$t8", "$t9" // destroyed
: "$10", "$11", "$12", "$13", "$14", "$15", "$24", "$25" // destroyed
);
// and feed it into the SPU
// non-blocking call, the function will return before the buffer's content
// was transferred.
- SjPCM_Enqueue((short int*)soundBufL, (short int*)soundBufR, SMP_PER_BLOCK, 0);
+ SjPCM_Enqueue((short int *)soundBufL, (short int *)soundBufR, SMP_PER_BLOCK, 0);
bufferedSamples += SMP_PER_BLOCK;
}
}
@@ -510,6 +606,10 @@ bool OSystem_PS2::mcPresent(void) {
return false;
}
+bool OSystem_PS2::cdPresent(void) {
+ return _useCd;
+}
+
bool OSystem_PS2::hddPresent(void) {
return _useHdd;
}
@@ -528,11 +628,39 @@ bool OSystem_PS2::usbMassPresent(void) {
}
bool OSystem_PS2::netPresent(void) {
- return _useNet;
+ if (_useNet)
+ return true;
+
+ return false;
+}
+
+bool OSystem_PS2::hddMount(const char *partition) {
+ char name[64] = "hdd0:+ScummVM";
+
+ if (partition)
+ strcpy(name+6, partition);
+
+ if (fio.mount("pfs0:", name, 0) >= 0) {
+ dbg_printf("Successfully mounted (%s)!\n", name);
+ return true;
+ }
+ else {
+ dbg_printf("Failed to mount (%s).\n", name);
+ _useHdd = false;
+ return false;
+ }
}
void OSystem_PS2::initSize(uint width, uint height, const Graphics::PixelFormat *format) {
- printf("initializing new size: (%d/%d)...", width, height);
+ dbg_printf("initializing new size: (%d/%d)...", width, height);
+
+ /* ugly hack: we know we can parse ScummVM.ini now */
+ if (!_screenChangeCount) { // first round
+ config();
+ _screen = new Gs2dScreen(width, height);
+ fillScreen(0);
+ }
+
_screen->newScreenSize(width, height);
_screen->setMouseXy(width / 2, height / 2);
_input->newRange(0, 0, width - 1, height - 1);
@@ -543,7 +671,7 @@ void OSystem_PS2::initSize(uint width, uint height, const Graphics::PixelFormat
_modeChanged = true;
_screenChangeCount++;
- printf("done\n");
+ dbg_printf("done\n");
}
void OSystem_PS2::setPalette(const byte *colors, uint start, uint num) {
@@ -555,7 +683,7 @@ void OSystem_PS2::grabPalette(byte *colors, uint start, uint num) {
}
void OSystem_PS2::copyRectToScreen(const void *buf, int pitch, int x, int y, int w, int h) {
- _screen->copyScreenRect((const uint8*)buf, pitch, x, y, w, h);
+ _screen->copyScreenRect((const uint8 *)buf, pitch, x, y, w, h);
}
void OSystem_PS2::updateScreen(void) {
@@ -568,7 +696,7 @@ void OSystem_PS2::updateScreen(void) {
void OSystem_PS2::displayMessageOnOSD(const char *msg) {
/* TODO : check */
- printf("displayMessageOnOSD: %s\n", msg);
+ dbg_printf("displayMessageOnOSD: %s\n", msg);
}
uint32 OSystem_PS2::getMillis(bool skipRecord) {
@@ -666,7 +794,7 @@ void OSystem_PS2::unlockScreen(void) {
const OSystem::GraphicsMode OSystem_PS2::_graphicsMode = { NULL, NULL, 0 };
const OSystem::GraphicsMode *OSystem_PS2::getSupportedGraphicsModes(void) const {
- return &_graphicsMode;
+ return &_graphicsMode;
}
bool OSystem_PS2::setGraphicsMode(int mode) {
@@ -735,7 +863,7 @@ void OSystem_PS2::msgPrintf(int millis, const char *format, ...) {
Graphics::g_sysfont.drawString(&surf, str, posX, posY, 300 - posX, 1);
posY += 14;
- lnSta = lnEnd + 1;
+ lnSta = lnEnd + 1;
}
uint8 *scrBuf = (uint8 *)memalign(64, 320 * 200);
@@ -768,12 +896,14 @@ void OSystem_PS2::powerOffCallback(void) {
}
void OSystem_PS2::quit(void) {
- printf("OSystem_PS2::quit called\n");
+ dbg_printf("OSystem_PS2::quit called\n");
if (_bootDevice == HOST_DEV) {
- printf("OSystem_PS2::quit (HOST)\n");
+ dbg_printf("OSystem_PS2::quit (HOST)\n");
+ #ifndef ENABLE_PROFILING
SleepThread();
+ #endif
} else {
- printf("OSystem_PS2::quit (bootdev=%d)\n", _bootDevice);
+ dbg_printf("OSystem_PS2::quit (bootdev=%d)\n", _bootDevice);
if (_useHdd) {
driveStandby();
fio.umount("pfs0:");
@@ -781,18 +911,22 @@ void OSystem_PS2::quit(void) {
//setTimerCallback(NULL, 0);
_screen->wantAnim(false);
_systemQuit = true;
+ #ifdef __NEW_PS2SDK__
+ ee_thread_status_t statSound, statTimer;
+ #else
ee_thread_t statSound, statTimer;
- printf("Waiting for timer and sound thread to end\n");
+ #endif
+ dbg_printf("Waiting for timer and sound thread to end\n");
do { // wait until both threads called ExitThread()
ReferThreadStatus(_timerTid, &statTimer);
ReferThreadStatus(_soundTid, &statSound);
} while ((statSound.status != 0x10) || (statTimer.status != 0x10));
- printf("Done\n");
+ dbg_printf("Done\n");
DeleteThread(_timerTid);
DeleteThread(_soundTid);
free(_timerStack);
free(_soundStack);
- printf("Stopping timer\n");
+ dbg_printf("Stopping timer\n");
DisableIntc(INT_TIMER0);
RemoveIntcHandler(INT_TIMER0, _intrId);
@@ -801,7 +935,7 @@ void OSystem_PS2::quit(void) {
padEnd(); // stop pad library
cdvdInit(CDVD_EXIT);
- printf("resetting iop\n");
+ dbg_printf("resetting iop\n");
SifIopReset(NULL, 0);
SifExitRpc();
while (!SifIopSync());
@@ -829,7 +963,7 @@ void OSystem_PS2::quit(void) {
" li $3, 0x04;"
" syscall;"
" nop;"
- );
+ );
*/
/*
@@ -839,7 +973,7 @@ void OSystem_PS2::quit(void) {
*/
#else
// reset + load ELF from CD
- printf("Restarting ScummVM\n");
+ dbg_printf("Restarting ScummVM\n");
LoadExecPS2("cdrom0:\\SCUMMVM.ELF", 0, NULL);
#endif
}
@@ -856,12 +990,12 @@ bool OSystem_PS2::prepMC() {
if (!mcPresent())
return prep;
- printf("prepMC 0\n");
+ dbg_printf("prepMC 0\n");
// Common::String str("mc0:ScummVM/")
// Common::FSNode scumDir(str);
Common::FSNode scumDir("mc0:ScummVM/");
- printf("prepMC 00\n");
+ dbg_printf("prepMC 00\n");
if (!scumDir.exists()) {
uint16 *data, size;
@@ -869,11 +1003,11 @@ bool OSystem_PS2::prepMC() {
PS2Icon _ico;
mcIcon icon;
- printf("prepMC I\n");
+ dbg_printf("prepMC I\n");
size = _ico.decompressData(&data);
- printf("prepMC II\n");
+ dbg_printf("prepMC II\n");
_ico.setup(&icon);
@@ -888,21 +1022,21 @@ bool OSystem_PS2::prepMC() {
fio.mkdir("mc0:ScummVM");
f = ps2_fopen("mc0:ScummVM/scummvm.icn", "w");
- printf("f = %p\n", (const void *)f);
+ dbg_printf("f = %p\n", (const void *)f);
ps2_fwrite(data, size, 2, f);
ps2_fclose(f);
f = ps2_fopen("mc0:ScummVM/icon.sys", "w");
- printf("f = %p\n", (const void *)f);
+ dbg_printf("f = %p\n", (const void *)f);
ps2_fwrite(&icon, sizeof(icon), 1, f);
ps2_fclose(f);
#endif
free(data);
- printf("prepMC II\n");
+ dbg_printf("prepMC II\n");
prep = true;
}
@@ -911,7 +1045,7 @@ bool OSystem_PS2::prepMC() {
}
void OSystem_PS2::makeConfigPath() {
- FILE *src, *dst;
+ FILE *src, *dst;
char path[128], *buf;
int32 size;
@@ -926,7 +1060,7 @@ void OSystem_PS2::makeConfigPath() {
src = ps2_fopen("cdfs:ScummVM.ini", "r");
if (src) {
size = ((Ps2File *)src)->size();
- buf = (char *)malloc(size);
+ buf = (char *)memalign(64, size);
ps2_fread(buf, size, 1, src);
ps2_fclose(src);
@@ -970,6 +1104,5 @@ Common::String OSystem_PS2::getDefaultConfigFileName() {
}
void OSystem_PS2::logMessage(LogMessageType::Type type, const char *message) {
- printf("%s", message);
- sioprintf("%s", message);
+ dbg_printf("%s", message);
}
diff --git a/backends/platform/ps2/systemps2.h b/backends/platform/ps2/systemps2.h
index 580eb8b6f2..45b7dfae36 100644
--- a/backends/platform/ps2/systemps2.h
+++ b/backends/platform/ps2/systemps2.h
@@ -25,6 +25,7 @@
#include "common/system.h"
#include "backends/base-backend.h"
+#include "backends/platform/ps2/irxboot.h"
#include "graphics/palette.h"
class Gs2dScreen;
@@ -51,6 +52,7 @@ public:
virtual void initSize(uint width, uint height, const Graphics::PixelFormat *format);
void init(void);
+ void config(void);
virtual int16 getHeight(void);
virtual int16 getWidth(void);
@@ -119,14 +121,17 @@ public:
void powerOffCallback(void);
bool mcPresent(void);
+ bool cdPresent(void);
bool hddPresent(void);
bool usbMassPresent(void);
bool netPresent(void);
+ bool hddMount(const char *partition);
bool runningFromHost(void);
int getBootDevice() { return _bootDevice; }
private:
+ bool loadDrivers(IrxType type);
void startIrxModules(int numModules, IrxReference *modules);
void initMutexes(void);
@@ -136,28 +141,28 @@ private:
Audio::MixerImpl *_scummMixer;
bool _mouseVisible;
- bool _useMouse, _useKbd, _useHdd, _usbMassLoaded, _useNet;
+ bool _useMouse, _useKbd, _useCd, _useHdd, _usbMassLoaded, _useNet;
- Gs2dScreen *_screen;
- Ps2Input *_input;
- uint16 _oldMouseX, _oldMouseY;
- uint32 _msgClearTime;
- uint16 _printY;
+ Gs2dScreen *_screen;
+ Ps2Input *_input;
+ uint16 _oldMouseX, _oldMouseY;
+ uint32 _msgClearTime;
+ uint16 _printY;
bool _modeChanged;
int _screenChangeCount;
- int _mutexSema;
- Ps2Mutex _mutex[MAX_MUTEXES];
+ int _mutexSema;
+ Ps2Mutex _mutex[MAX_MUTEXES];
- uint8 *_timerStack, *_soundStack;
- int _timerTid, _soundTid;
- int _intrId;
+ uint8 *_timerStack, *_soundStack;
+ int _timerTid, _soundTid;
+ int _intrId;
volatile bool _systemQuit;
static const GraphicsMode _graphicsMode;
- int _bootDevice;
- char *_bootPath;
- char *_configFile;
+ int _bootDevice;
+ char *_bootPath;
+ char *_configFile;
};
#endif // SYSTEMPS2_H
diff --git a/backends/platform/symbian/S60v3/ScummVM_A0000658_S60v3.mmp.in b/backends/platform/symbian/S60v3/ScummVM_A0000658_S60v3.mmp.in
index 7b9273f2dd..56456f37e4 100644
--- a/backends/platform/symbian/S60v3/ScummVM_A0000658_S60v3.mmp.in
+++ b/backends/platform/symbian/S60v3/ScummVM_A0000658_S60v3.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2014 The ScummVM Team
+ * Copyright (C) 2005-2013 The ScummVM project
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
@@ -34,6 +34,9 @@ TARGET ScummVM_A0000658.exe
TARGETPATH sys\bin
TARGETTYPE exe
OPTION GCCE -Wno-multichar -Wno-reorder -Wno-unused -Wno-format -fsigned-char
+// fixes error "section .data loaded at [...] overlaps section .text loaded at [...]"
+// in future simple add 'a'
+LINKEROPTION GCCE -Tdata 0xAA00000
UID 0x100039ce 0xA0000658
@@ -90,9 +93,15 @@ STATICLIBRARY esdl.lib
USERINCLUDE ..\..\..\.. ..\..\..\..\gui ..\..\..\..\engines
USERINCLUDE ..\..\..\..\backends\fs ..\src ..\..\..\..\backends\platform\sdl ..\..\..\..\audio
+SYSTEMINCLUDE \epoc32\include\freetype
+SYSTEMINCLUDE \epoc32\include\mpeg2dec
+SYSTEMINCLUDE \epoc32\include\jpeg
+SYSTEMINCLUDE \epoc32\include\png
SYSTEMINCLUDE \epoc32\include\ESDL
SYSTEMINCLUDE \epoc32\include\ZLIB // before \epoc32\include because symbian already has older version
SYSTEMINCLUDE \epoc32\include\libc
+SYSTEMINCLUDE \epoc32\include\theora
+SYSTEMINCLUDE \epoc32\include\tremor
SYSTEMINCLUDE \epoc32\include
SYSTEMINCLUDE \epoc32\include\mw
SYSTEMINCLUDE \epoc32\include\platform
diff --git a/backends/platform/symbian/S60v3/ScummVM_S60v3.mmp.in b/backends/platform/symbian/S60v3/ScummVM_S60v3.mmp.in
index 09ff968706..0c0dd9b6b6 100644
--- a/backends/platform/symbian/S60v3/ScummVM_S60v3.mmp.in
+++ b/backends/platform/symbian/S60v3/ScummVM_S60v3.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2014 The ScummVM Team
+ * Copyright (C) 2005-2013 The ScummVM project
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
@@ -90,9 +90,15 @@ STATICLIBRARY esdl.lib
USERINCLUDE ..\..\..\.. ..\..\..\..\gui ..\..\..\..\engines
USERINCLUDE ..\..\..\..\backends\fs ..\src ..\..\..\..\backends\platform\sdl ..\..\..\..\audio
+SYSTEMINCLUDE \epoc32\include\freetype
+SYSTEMINCLUDE \epoc32\include\mpeg2dec
+SYSTEMINCLUDE \epoc32\include\jpeg
+SYSTEMINCLUDE \epoc32\include\png
SYSTEMINCLUDE \epoc32\include\ESDL
SYSTEMINCLUDE \epoc32\include\ZLIB // before \epoc32\include because symbian already has older version
SYSTEMINCLUDE \epoc32\include\libc
+SYSTEMINCLUDE \epoc32\include\theora
+SYSTEMINCLUDE \epoc32\include\tremor
SYSTEMINCLUDE \epoc32\include
SYSTEMINCLUDE \epoc32\include\mw
SYSTEMINCLUDE \epoc32\include\platform
diff --git a/backends/platform/symbian/S60v3/scummvm-CVS-SymbianS60v3.pkg b/backends/platform/symbian/S60v3/scummvm-CVS-SymbianS60v3.pkg
index c04b7f6d51..5f74bee1c7 100644
--- a/backends/platform/symbian/S60v3/scummvm-CVS-SymbianS60v3.pkg
+++ b/backends/platform/symbian/S60v3/scummvm-CVS-SymbianS60v3.pkg
@@ -76,31 +76,6 @@
"..\..\..\vkeybd\packs\vkeybd_default.zip"-"c:\data\scummvm\vkeybd_default.zip"
"..\..\..\..\gui\themes\translations.dat"-"c:\data\scummvm\translations.dat"
"..\..\..\..\gui\themes\scummmodern.zip"-"c:\data\scummvm\scummmodern.zip"
-"..\..\..\..\gui\themes\fonts\Arial.bdf"-"c:\data\scummvm\Arial.bdf"
-"..\..\..\..\gui\themes\fonts\Arial12.bdf"-"c:\data\scummvm\Arial12.bdf"
-"..\..\..\..\gui\themes\fonts\ArialBold.bdf"-"c:\data\scummvm\ArialBold.bdf"
-"..\..\..\..\gui\themes\fonts\clR6x12-iso-8859-1.bdf"-"c:\data\scummvm\clR6x12-iso-8859-1.bdf"
-"..\..\..\..\gui\themes\fonts\clR6x12-iso-8859-2.bdf"-"c:\data\scummvm\clR6x12-iso-8859-2.bdf"
-"..\..\..\..\gui\themes\fonts\clR6x12-iso-8859-5.bdf"-"c:\data\scummvm\clR6x12-iso-8859-5.bdf"
-"..\..\..\..\gui\themes\fonts\clR6x12-iso-8859-7.bdf"-"c:\data\scummvm\clR6x12-iso-8859-7.bdf"
-"..\..\..\..\gui\themes\fonts\clR6x12.bdf"-"c:\data\scummvm\clR6x12.bdf"
-"..\..\..\..\gui\themes\fonts\courr12-iso-8859-1.bdf"-"c:\data\scummvm\courr12-iso-8859-1.bdf"
-"..\..\..\..\gui\themes\fonts\fixed5x8-iso-8859-1.bdf"-"c:\data\scummvm\fixed5x8-iso-8859-1.bdf"
-"..\..\..\..\gui\themes\fonts\fixed5x8-iso-8859-5.bdf"-"c:\data\scummvm\fixed5x8-iso-8859-5.bdf"
-"..\..\..\..\gui\themes\fonts\fixed5x8-iso-8859-7.bdf"-"c:\data\scummvm\fixed5x8-iso-8859-7.bdf"
-"..\..\..\..\gui\themes\fonts\fixed5x8.bdf"-"c:\data\scummvm\fixed5x8.bdf"
-"..\..\..\..\gui\themes\fonts\FreeMonoBold.ttf"-"c:\data\scummvm\FreeMonoBold.ttf"
-"..\..\..\..\gui\themes\fonts\FreeSans.ttf"-"c:\data\scummvm\FreeSans.ttf"
-"..\..\..\..\gui\themes\fonts\FreeSansBold.ttf"-"c:\data\scummvm\FreeSansBold.ttf"
-"..\..\..\..\gui\themes\fonts\helvB12-iso-8859-1.bdf"-"c:\data\scummvm\helvB12-iso-8859-1.bdf"
-"..\..\..\..\gui\themes\fonts\helvB12-iso-8859-2.bdf"-"c:\data\scummvm\helvB12-iso-8859-2.bdf"
-"..\..\..\..\gui\themes\fonts\helvB12-iso-8859-5.bdf"-"c:\data\scummvm\helvB12-iso-8859-5.bdf"
-"..\..\..\..\gui\themes\fonts\helvB12.bdf"-"c:\data\scummvm\helvB12.bdf"
-"..\..\..\..\gui\themes\fonts\helvBO12-iso-8859-1.bdf"-"c:\data\scummvm\helvBO12-iso-8859-1.bdf"
-"..\..\..\..\gui\themes\fonts\helvBO12.bdf"-"c:\data\scummvm\helvBO12.bdf"
-"..\..\..\..\gui\themes\fonts\helvR12-iso-8859-1.bdf"-"c:\data\scummvm\helvR12-iso-8859-1.bdf"
-"..\..\..\..\gui\themes\fonts\helvR12.bdf"-"c:\data\scummvm\helvR12.bdf"
-;"..\..\..\..\gui\themes\"-"c:\data\scummvm\"
; Config/log files: 'empty' will automagically be removed on uninstall
""-"c:\data\scummvm\scummvm.ini",FILENULL
diff --git a/backends/platform/symbian/S60v3/scummvm-CVS-SymbianS60v3_split.pkg b/backends/platform/symbian/S60v3/scummvm-CVS-SymbianS60v3_split.pkg
index 250076347a..4ef085d600 100644
--- a/backends/platform/symbian/S60v3/scummvm-CVS-SymbianS60v3_split.pkg
+++ b/backends/platform/symbian/S60v3/scummvm-CVS-SymbianS60v3_split.pkg
@@ -36,7 +36,7 @@
:"ScummVM"
; UID is the app's UID
-#{"ScummVM S60v3"},(0xA0000657),1,70,0
+#{"ScummVM S60v3"},(0xA0000657),1,70,6
;Supports Series 60 v 3.0
[0x101F7961], 0, 0, 0, {"Series60ProductID"}
@@ -84,31 +84,6 @@
"..\..\..\vkeybd\packs\vkeybd_default.zip"-"c:\data\scummvm\vkeybd_default.zip"
"..\..\..\..\gui\themes\translations.dat"-"c:\data\scummvm\translations.dat"
"..\..\..\..\gui\themes\scummmodern.zip"-"c:\data\scummvm\scummmodern.zip"
-"..\..\..\..\gui\themes\fonts\Arial.bdf"-"c:\data\scummvm\Arial.bdf"
-"..\..\..\..\gui\themes\fonts\Arial12.bdf"-"c:\data\scummvm\Arial12.bdf"
-"..\..\..\..\gui\themes\fonts\ArialBold.bdf"-"c:\data\scummvm\ArialBold.bdf"
-"..\..\..\..\gui\themes\fonts\clR6x12-iso-8859-1.bdf"-"c:\data\scummvm\clR6x12-iso-8859-1.bdf"
-"..\..\..\..\gui\themes\fonts\clR6x12-iso-8859-2.bdf"-"c:\data\scummvm\clR6x12-iso-8859-2.bdf"
-"..\..\..\..\gui\themes\fonts\clR6x12-iso-8859-5.bdf"-"c:\data\scummvm\clR6x12-iso-8859-5.bdf"
-"..\..\..\..\gui\themes\fonts\clR6x12-iso-8859-7.bdf"-"c:\data\scummvm\clR6x12-iso-8859-7.bdf"
-"..\..\..\..\gui\themes\fonts\clR6x12.bdf"-"c:\data\scummvm\clR6x12.bdf"
-"..\..\..\..\gui\themes\fonts\courr12-iso-8859-1.bdf"-"c:\data\scummvm\courr12-iso-8859-1.bdf"
-"..\..\..\..\gui\themes\fonts\fixed5x8-iso-8859-1.bdf"-"c:\data\scummvm\fixed5x8-iso-8859-1.bdf"
-"..\..\..\..\gui\themes\fonts\fixed5x8-iso-8859-5.bdf"-"c:\data\scummvm\fixed5x8-iso-8859-5.bdf"
-"..\..\..\..\gui\themes\fonts\fixed5x8-iso-8859-7.bdf"-"c:\data\scummvm\fixed5x8-iso-8859-7.bdf"
-"..\..\..\..\gui\themes\fonts\fixed5x8.bdf"-"c:\data\scummvm\fixed5x8.bdf"
-"..\..\..\..\gui\themes\fonts\FreeMonoBold.ttf"-"c:\data\scummvm\FreeMonoBold.ttf"
-"..\..\..\..\gui\themes\fonts\FreeSans.ttf"-"c:\data\scummvm\FreeSans.ttf"
-"..\..\..\..\gui\themes\fonts\FreeSansBold.ttf"-"c:\data\scummvm\FreeSansBold.ttf"
-"..\..\..\..\gui\themes\fonts\helvB12-iso-8859-1.bdf"-"c:\data\scummvm\helvB12-iso-8859-1.bdf"
-"..\..\..\..\gui\themes\fonts\helvB12-iso-8859-2.bdf"-"c:\data\scummvm\helvB12-iso-8859-2.bdf"
-"..\..\..\..\gui\themes\fonts\helvB12-iso-8859-5.bdf"-"c:\data\scummvm\helvB12-iso-8859-5.bdf"
-"..\..\..\..\gui\themes\fonts\helvB12.bdf"-"c:\data\scummvm\helvB12.bdf"
-"..\..\..\..\gui\themes\fonts\helvBO12-iso-8859-1.bdf"-"c:\data\scummvm\helvBO12-iso-8859-1.bdf"
-"..\..\..\..\gui\themes\fonts\helvBO12.bdf"-"c:\data\scummvm\helvBO12.bdf"
-"..\..\..\..\gui\themes\fonts\helvR12-iso-8859-1.bdf"-"c:\data\scummvm\helvR12-iso-8859-1.bdf"
-"..\..\..\..\gui\themes\fonts\helvR12.bdf"-"c:\data\scummvm\helvR12.bdf"
-;"..\..\..\..\gui\themes\"-"c:\data\scummvm\"
; Config/log files: 'empty' will automagically be removed on uninstall
""-"c:\data\scummvm\scummvm.ini",FILENULL
diff --git a/backends/platform/symbian/help/ScummVM.rtf b/backends/platform/symbian/help/ScummVM.rtf
index 522fab832c..4b5ae5afe0 100644
--- a/backends/platform/symbian/help/ScummVM.rtf
+++ b/backends/platform/symbian/help/ScummVM.rtf
@@ -1,16 +1,16 @@
-{\rtf1\ansi\ansicpg1251\uc1 \deff0\deflang1049\deflangfe1049{\fonttbl{\f0\froman\fcharset204\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1\fswiss\fcharset204\fprq2{\*\panose 020b0604020202020204}Arial;}
+{\rtf1\ansi\ansicpg1251\uc1 \deff1\deflang1049\deflangfe1049{\fonttbl{\f0\froman\fcharset204\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1\fswiss\fcharset204\fprq2{\*\panose 020b0604020202020204}Arial;}
{\f2\fmodern\fcharset204\fprq1{\*\panose 02070309020205020404}Courier New;}{\f3\froman\fcharset2\fprq2{\*\panose 05050102010706020507}Symbol;}{\f8\froman\fcharset0\fprq2{\*\panose 00000000000000000000}Tms Rmn;}
{\f14\fnil\fcharset2\fprq2{\*\panose 05000000000000000000}Wingdings;}{\f28\fswiss\fcharset204\fprq2{\*\panose 020b0604020202020204}Arial CYR;}{\f29\fmodern\fcharset204\fprq1{\*\panose 02070309020205020404}Courier New CYR;}
-{\f43\froman\fcharset2\fprq2{\*\panose 05030102010509060703}Webdings;}{\f97\fswiss\fcharset204\fprq2{\*\panose 020b0506020202030204}Arial Narrow;}{\f109\froman\fcharset0\fprq2 Times New Roman;}{\f107\froman\fcharset238\fprq2 Times New Roman CE;}
-{\f110\froman\fcharset161\fprq2 Times New Roman Greek;}{\f111\froman\fcharset162\fprq2 Times New Roman Tur;}{\f112\froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f113\froman\fcharset178\fprq2 Times New Roman (Arabic);}
-{\f114\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f117\fswiss\fcharset0\fprq2 Arial;}{\f115\fswiss\fcharset238\fprq2 Arial CE;}{\f118\fswiss\fcharset161\fprq2 Arial Greek;}{\f119\fswiss\fcharset162\fprq2 Arial Tur;}
-{\f120\fswiss\fcharset177\fprq2 Arial (Hebrew);}{\f121\fswiss\fcharset178\fprq2 Arial (Arabic);}{\f122\fswiss\fcharset186\fprq2 Arial Baltic;}{\f125\fmodern\fcharset0\fprq1 Courier New;}{\f123\fmodern\fcharset238\fprq1 Courier New CE;}
-{\f126\fmodern\fcharset161\fprq1 Courier New Greek;}{\f127\fmodern\fcharset162\fprq1 Courier New Tur;}{\f128\fmodern\fcharset177\fprq1 Courier New (Hebrew);}{\f129\fmodern\fcharset178\fprq1 Courier New (Arabic);}
-{\f130\fmodern\fcharset186\fprq1 Courier New Baltic;}{\f333\fswiss\fcharset0\fprq2 Arial CYR;}{\f331\fswiss\fcharset238\fprq2 Arial CYR CE;}{\f334\fswiss\fcharset161\fprq2 Arial CYR Greek;}{\f335\fswiss\fcharset162\fprq2 Arial CYR Tur;}
-{\f336\fswiss\fcharset177\fprq2 Arial CYR (Hebrew);}{\f337\fswiss\fcharset178\fprq2 Arial CYR (Arabic);}{\f338\fswiss\fcharset186\fprq2 Arial CYR Baltic;}{\f341\fmodern\fcharset0\fprq1 Courier New CYR;}{\f339\fmodern\fcharset238\fprq1 Courier New CYR CE;}
-{\f342\fmodern\fcharset161\fprq1 Courier New CYR Greek;}{\f343\fmodern\fcharset162\fprq1 Courier New CYR Tur;}{\f344\fmodern\fcharset177\fprq1 Courier New CYR (Hebrew);}{\f345\fmodern\fcharset178\fprq1 Courier New CYR (Arabic);}
-{\f346\fmodern\fcharset186\fprq1 Courier New CYR Baltic;}{\f885\fswiss\fcharset0\fprq2 Arial Narrow;}{\f883\fswiss\fcharset238\fprq2 Arial Narrow CE;}{\f886\fswiss\fcharset161\fprq2 Arial Narrow Greek;}{\f887\fswiss\fcharset162\fprq2 Arial Narrow Tur;}
-{\f890\fswiss\fcharset186\fprq2 Arial Narrow Baltic;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;
+{\f30\froman\fcharset2\fprq2{\*\panose 05030102010509060703}Webdings;}{\f31\fswiss\fcharset204\fprq2{\*\panose 020b0506020202030204}Arial Narrow;}{\f44\froman\fcharset0\fprq2 Times New Roman;}{\f42\froman\fcharset238\fprq2 Times New Roman CE;}
+{\f45\froman\fcharset161\fprq2 Times New Roman Greek;}{\f46\froman\fcharset162\fprq2 Times New Roman Tur;}{\f47\froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f48\froman\fcharset178\fprq2 Times New Roman (Arabic);}
+{\f49\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f52\fswiss\fcharset0\fprq2 Arial;}{\f50\fswiss\fcharset238\fprq2 Arial CE;}{\f53\fswiss\fcharset161\fprq2 Arial Greek;}{\f54\fswiss\fcharset162\fprq2 Arial Tur;}
+{\f55\fswiss\fcharset177\fprq2 Arial (Hebrew);}{\f56\fswiss\fcharset178\fprq2 Arial (Arabic);}{\f57\fswiss\fcharset186\fprq2 Arial Baltic;}{\f60\fmodern\fcharset0\fprq1 Courier New;}{\f58\fmodern\fcharset238\fprq1 Courier New CE;}
+{\f61\fmodern\fcharset161\fprq1 Courier New Greek;}{\f62\fmodern\fcharset162\fprq1 Courier New Tur;}{\f63\fmodern\fcharset177\fprq1 Courier New (Hebrew);}{\f64\fmodern\fcharset178\fprq1 Courier New (Arabic);}
+{\f65\fmodern\fcharset186\fprq1 Courier New Baltic;}{\f268\fswiss\fcharset0\fprq2 Arial CYR;}{\f266\fswiss\fcharset238\fprq2 Arial CYR CE;}{\f269\fswiss\fcharset161\fprq2 Arial CYR Greek;}{\f270\fswiss\fcharset162\fprq2 Arial CYR Tur;}
+{\f271\fswiss\fcharset177\fprq2 Arial CYR (Hebrew);}{\f272\fswiss\fcharset178\fprq2 Arial CYR (Arabic);}{\f273\fswiss\fcharset186\fprq2 Arial CYR Baltic;}{\f276\fmodern\fcharset0\fprq1 Courier New CYR;}{\f274\fmodern\fcharset238\fprq1 Courier New CYR CE;}
+{\f277\fmodern\fcharset161\fprq1 Courier New CYR Greek;}{\f278\fmodern\fcharset162\fprq1 Courier New CYR Tur;}{\f279\fmodern\fcharset177\fprq1 Courier New CYR (Hebrew);}{\f280\fmodern\fcharset178\fprq1 Courier New CYR (Arabic);}
+{\f281\fmodern\fcharset186\fprq1 Courier New CYR Baltic;}{\f292\fswiss\fcharset0\fprq2 Arial Narrow;}{\f290\fswiss\fcharset238\fprq2 Arial Narrow CE;}{\f293\fswiss\fcharset161\fprq2 Arial Narrow Greek;}{\f294\fswiss\fcharset162\fprq2 Arial Narrow Tur;}
+{\f297\fswiss\fcharset186\fprq2 Arial Narrow Baltic;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;
\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{
\ql \li0\ri0\sa120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \f1\fs20\lang2057\langfe1033\cgrid\langnp2057\langfenp1033 \snext0 Normal;}{\s1\ql \li0\ri0\sb360\sa240\keepn\widctlpar\nooverflow\faroman\rin0\lin0\itap0
\b\f1\fs32\lang2057\langfe1033\kerning28\cgrid\langnp2057\langfenp1033 \sbasedon0 \snext0 heading 1;}{\s2\ql \li0\ri0\sb120\sa120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \brdrb\brdrs\brdrw30\brsp20 \tqr\tx9072\nooverflow\faroman\rin0\lin0\itap0
@@ -22,14 +22,14 @@ heading 5;}{\s6\ql \li0\ri0\sb240\sa60\widctlpar\nooverflow\faroman\rin0\lin0\it
\s9\ql \li0\ri0\sb240\sa60\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \i\f1\fs18\lang2057\langfe1033\cgrid\langnp2057\langfenp1033 \sbasedon0 \snext0 heading 9;}{\*\cs10 \additive Default Paragraph Font;}{\*\cs15 \additive \b\f1\fs20 \sbasedon10
App Text;}{\s16\ql \li0\ri0\sb360\sa240\keepn\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \b\f1\fs32\cf9\lang2057\langfe1033\kerning28\cgrid\langnp2057\langfenp1033 \sbasedon0 \snext16 Category UID;}{
\s17\ql \li0\ri0\sa120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \i\f1\fs20\lang2057\langfe1033\cgrid\langnp2057\langfenp1033 \sbasedon0 \snext17 Comment;}{\s18\ql \fi-283\li283\ri0\sa120\widctlpar\brdrb\brdrs\brdrw15\brsp20 {\*\pn
-\pnlvlblt\ilvl10\ls2047\pnrnot0\pnf43\pnstart1\pnindent283\pnhang{\pntxtb \'a2}}\nooverflow\faroman\ls2047\ilvl10\rin0\lin283\itap0 \f1\fs20\lang2057\langfe1033\cgrid\langnp2057\langfenp1033 \sbasedon0 \snext18 Context;}{\*\cs19 \additive
+\pnlvlblt\ilvl10\ls2047\pnrnot0\pnf30\pnstart1\pnindent283\pnhang{\pntxtb \'a2}}\nooverflow\faroman\ls2047\ilvl10\rin0\lin283\itap0 \f1\fs20\lang2057\langfe1033\cgrid\langnp2057\langfenp1033 \sbasedon0 \snext18 Context;}{\*\cs19 \additive
\i\f1\fs20\ulnone\cf0\nosupersub \sbasedon10 Context Comment;}{\s20\ql \li0\ri0\sa120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \f1\fs20\cf11\lang2057\langfe1033\cgrid\langnp2057\langfenp1033 \sbasedon0 \snext20 Definition Term;}{
-\s21\ql \li0\ri0\sa120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \f1\fs20\cf11\lang2057\langfe1033\cgrid\langnp2057\langfenp1033 \sbasedon20 \snext21 Definition Definition;}{\*\cs22 \additive \scaps\f97\fs20\cf13 \sbasedon10 Graphic Link;}{
+\s21\ql \li0\ri0\sa120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \f1\fs20\cf11\lang2057\langfe1033\cgrid\langnp2057\langfenp1033 \sbasedon20 \snext21 Definition Definition;}{\*\cs22 \additive \scaps\f31\fs20\cf13 \sbasedon10 Graphic Link;}{
\s23\ql \fi-283\li283\ri0\sa120\widctlpar{\*\pn \pnlvlblt\ilvl10\ls2047\pnrnot0\pnf14\pnstart1\pnindent283\pnhang{\pntxtb F}}\nooverflow\faroman\ls2047\ilvl10\rin0\lin283\itap0 \f1\fs20\lang2057\langfe1033\cgrid\langnp2057\langfenp1033
\sbasedon0 \snext23 Tip;}{\s24\ql \fi-283\li283\ri0\sa120\widctlpar{\*\pn \pnlvlblt\ilvl10\ls2047\pnrnot0\pnf14\pnstart1\pnindent283\pnhang{\pntxtb ?}}\nooverflow\faroman\ls2047\ilvl10\rin0\lin283\itap0
-\f1\fs20\lang2057\langfe1033\cgrid\langnp2057\langfenp1033 \sbasedon23 \snext24 Note;}{\s25\ql \fi-283\li283\ri0\sa120\widctlpar{\*\pn \pnlvlblt\ilvl10\ls2047\pnrnot0\pnf43\pnstart1\pnindent283\pnhang{\pntxtb ~}}
+\f1\fs20\lang2057\langfe1033\cgrid\langnp2057\langfenp1033 \sbasedon23 \snext24 Note;}{\s25\ql \fi-283\li283\ri0\sa120\widctlpar{\*\pn \pnlvlblt\ilvl10\ls2047\pnrnot0\pnf30\pnstart1\pnindent283\pnhang{\pntxtb ~}}
\nooverflow\faroman\ls2047\ilvl10\rin0\lin283\itap0 \f1\fs20\lang2057\langfe1033\cgrid\langnp2057\langfenp1033 \sbasedon24 \snext25 Important;}{\s26\ql \fi-283\li283\ri0\sa120\widctlpar\brdrb\brdrs\brdrw15\brsp20 {\*\pn \pnlvlblt\ilvl10\ls2047\pnrnot0
-\pnf43\pnstart1\pnindent283\pnhang{\pntxtb i}}\nooverflow\faroman\ls2047\ilvl10\rin0\lin283\itap0 \f1\fs20\lang2057\langfe1033\cgrid\langnp2057\langfenp1033 \sbasedon0 \snext26 Index;}{\*\cs27 \additive \b\f2\fs20 \sbasedon10 Key Name;}{
+\pnf30\pnstart1\pnindent283\pnhang{\pntxtb i}}\nooverflow\faroman\ls2047\ilvl10\rin0\lin283\itap0 \f1\fs20\lang2057\langfe1033\cgrid\langnp2057\langfenp1033 \sbasedon0 \snext26 Index;}{\*\cs27 \additive \b\f2\fs20 \sbasedon10 Key Name;}{
\s28\ql \fi-284\li284\ri0\sa120\widctlpar{\*\pn \pnlvlbody\ilvl11\ls2047\pnrnot0\pndec\pnstart1\pnindent283\pnhang{\pntxta .}}\nooverflow\faroman\ls2047\ilvl11\rin0\lin284\itap0 \f1\fs20\lang2057\langfe1033\cgrid\langnp2057\langfenp1033
\sbasedon0 \snext28 List Number;}{\s29\ql \fi-284\li284\ri0\sa120\widctlpar\tx284{\*\pn \pnlvlbody\ilvl0\ls2047\pnrnot0\pndec\pnf8 }\nooverflow\faroman\ls2047\rin0\lin284\itap0 \f1\fs20\lang2057\langfe1033\cgrid\langnp2057\langfenp1033
\sbasedon28 \snext29 List Manual;}{\s30\ql \fi-284\li568\ri0\sa120\widctlpar{\*\pn \pnlvlbody\ilvl11\ls2047\pnrnot0\pndec\pnstart1\pnindent283\pnhang{\pntxta .}}\nooverflow\faroman\ls2047\ilvl11\rin0\lin568\itap0
@@ -44,34 +44,43 @@ Synonyms;}{\*\cs33 \additive \super \sbasedon10 endnote reference;}{\s34\ql \fi-
{\list\listtemplateid1907811784\listsimple{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0
\fi-360\li643\jclisttab\tx643 }{\listname ;}\listid-125}{\list\listtemplateid1912741052\listsimple{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\chbrdr
\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 \fi-360\li360\jclisttab\tx360 }{\listname ;}\listid-120}{\list\listtemplateid-51363132\listsimple{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0
-{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li360\jclisttab\tx360 }{\listname ;}\listid-119}}{\*\listoverridetable{\listoverride\listid-120\listoverridecount0\ls1}
-{\listoverride\listid-129\listoverridecount0\ls2}{\listoverride\listid-119\listoverridecount0\ls3}{\listoverride\listid-125\listoverridecount0\ls4}}{\info{\author Fedor}{\operator Fedor}{\creatim\yr2013\mo11\dy30\hr23\min4}
-{\revtim\yr2013\mo11\dy30\hr23\min24}{\version4}{\edmins20}{\nofpages7}{\nofwords1441}{\nofchars8219}{\*\company DEV}{\nofcharsws10093}{\vern8249}}\margl1701\margr850\margt1134\margb1134
-\deftab708\widowctrl\ftnbj\aenddoc\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\hyphcaps0\horzdoc\dghspace120\dgvspace120\dghorigin1701\dgvorigin1984\dghshow0\dgvshow3\jcompress\viewkind4\viewscale100\nolnhtadjtbl \fet0\sectd
-\linex0\sectdefaultcl {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang
-{\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl8
-\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}\pard\plain \s17\ql \li0\ri0\sa120\widctlpar\nooverflow\faroman\rin0\lin0\itap0
-\i\f1\fs20\lang2057\langfe1033\cgrid\langnp2057\langfenp1033 {\lang1033\langfe1033\langnp1033 Author: Fedor Strizhniou.}{\f28
+{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li360\jclisttab\tx360 }{\listname ;}\listid-119}{\list\listtemplateid947971744\listsimple{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0
+\levelfollow0\levelstartat0\levelspace0\levelindent0{\leveltext\'01*;}{\levelnumbers;}\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1 }{\listname ;}\listid-2}}{\*\listoverridetable{\listoverride\listid-120\listoverridecount0\ls1}
+{\listoverride\listid-129\listoverridecount0\ls2}{\listoverride\listid-119\listoverridecount0\ls3}{\listoverride\listid-125\listoverridecount0\ls4}{\listoverride\listid-120\listoverridecount0\ls5}{\listoverride\listid-129\listoverridecount0\ls6}
+{\listoverride\listid-119\listoverridecount0\ls7}{\listoverride\listid-125\listoverridecount0\ls8}{\listoverride\listid-120\listoverridecount0\ls9}{\listoverride\listid-129\listoverridecount0\ls10}{\listoverride\listid-119\listoverridecount0\ls11}
+{\listoverride\listid-125\listoverridecount0\ls12}{\listoverride\listid-120\listoverridecount0\ls13}{\listoverride\listid-129\listoverridecount0\ls14}{\listoverride\listid-119\listoverridecount0\ls15}{\listoverride\listid-125\listoverridecount0\ls16}
+{\listoverride\listid-2\listoverridecount1{\lfolevel\listoverrideformat{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelold\levelspace0\levelindent283{\leveltext\'01\u-3991 ?;}{\levelnumbers;}\f30\chbrdr
+\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-283\li283 }}\ls17}{\listoverride\listid-2\listoverridecount1{\lfolevel\listoverrideformat{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelold\levelspace0
+\levelindent283{\leveltext\'01\u-3991 ?;}{\levelnumbers;}\f30\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-283\li283 }}\ls18}}{\info{\author Fedor}{\operator Fedor}{\creatim\yr2013\mo11\dy30\hr23\min4}
+{\revtim\yr2013\mo12\dy14\hr12\min27}{\version95}{\edmins91}{\nofpages8}{\nofwords1514}{\nofchars8634}{\*\company DEV}{\nofcharsws0}{\vern8249}}\margl1701\margr850\margt1134\margb1134
+\deftab708\widowctrl\ftnbj\aenddoc\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\hyphcaps0\horzdoc\dghspace120\dgvspace120\dghorigin1701\dgvorigin1984\dghshow0\dgvshow3\jcompress\viewkind4\viewscale100\nolnhtadjtbl \fet0{\*\template
+E:\\Documents and Settings\\Administrator\\Application Data\\Microsoft\\\'d8\'e0\'e1\'eb\'ee\'ed\'fb\\cshelp2000.dot}\sectd \linex0\sectdefaultcl {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang
+{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang
+{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}\pard\plain
+\s17\ql \li0\ri0\sa120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \i\f1\fs20\lang2057\langfe1033\cgrid\langnp2057\langfenp1033 {\lang1033\langfe1033\langnp1033 Author: Fedor Strizhniou.}{\f28
\par }{\lang1033\langfe1033\langnp1033 Date: November 2013}{\f28
\par }{\lang1033\langfe1033\langnp1033 Version: 1.7.0
\par }\pard\plain \s1\ql \li0\ri0\sb360\sa240\keepn\widctlpar\nooverflow\faroman\outlinelevel0\rin0\lin0\itap0 \b\f1\fs32\lang2057\langfe1033\kerning28\cgrid\langnp2057\langfenp1033 {ScummVM Help
\par }\pard\plain \s16\ql \li0\ri0\sb360\sa240\keepn\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \b\f1\fs32\cf9\lang2057\langfe1033\kerning28\cgrid\langnp2057\langfenp1033 {\lang1033\langfe1033\langnp1033 0x100039ce}{\lang1059\langfe1033\langnp1059
\par }\pard\plain \ql \li0\ri0\sa120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \f1\fs20\lang2057\langfe1033\cgrid\langnp2057\langfenp1033 {\f28
-\par }\pard\plain \s2\ql \li0\ri0\sb120\sa120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \brdrb\brdrs\brdrw30\brsp20 \tqr\tx9072\nooverflow\faroman\outlinelevel1\rin0\lin0\itap0 \b\f1\fs24\lang2057\langfe1033\cgrid\langnp2057\langfenp1033 {\b0\f28 Introduction
-
-\par }\pard\plain \ql \li0\ri0\sa120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \f1\fs20\lang2057\langfe1033\cgrid\langnp2057\langfenp1033 {\f28
+\par }\pard\plain \s2\ql \li0\ri0\sb120\sa120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \brdrb\brdrs\brdrw30\brsp20 \tqr\tx9072\nooverflow\faroman\outlinelevel1\rin0\lin0\itap0 \b\f1\fs24\lang2057\langfe1033\cgrid\langnp2057\langfenp1033 {\b0\f28
+About ScummVM Help
+\par {\pntext\pard\plain\s26 \f30\fs20\lang2057\langfe1033\langnp2057\langfenp1033 \loch\af30\dbch\af0\hich\f30 \'69\tab}}\pard\plain \s26\ql \fi-283\li283\ri0\sa120\widctlpar\brdrb\brdrs\brdrw15\brsp20 {\*\pn \pnlvlblt\ilvl0\ls17\pnrnot0
+\pnf30\pnstart1\pnindent283\pnhang{\pntxtb i}}\nooverflow\faroman\ls17\rin0\lin283\itap0 \f1\fs20\lang2057\langfe1033\cgrid\langnp2057\langfenp1033 {About ScummVM Help
+\par }\pard\plain \ql \li0\ri0\sa120\widctlpar{\*\pn \pnlvlcont\ilvl0\ls0\pnrnot0\pndec }\nooverflow\faroman\rin0\lin0\itap0 \f1\fs20\lang2057\langfe1033\cgrid\langnp2057\langfenp1033 {\f28
+\par }{
+This help file based on ScummVM forum thread with some elaborations(in Anotherguest section) and text correction. If you wish add some text or translate you may download and modify source document from https://sourceforge.net/projects/scummvms60git/ and t
+hen send me to fedor_qd@mail.ru
+\par Feel free to replace, merge or write you own instead 1st, 2nd and 3rd guides. Other sections require strict translations. And don\rquote t forget add your name :-)
+\par First guide contain help by Anotherguest, second - VincentJ, third - murgo. This doc created by Fedor Strizhniou.
+\par Enjoys, cheers! Always yours =)}{\lang1059\langfe1033\langnp1059
\par }{\f29
-This help file based on ScummVM forum thread with some elaborations(in Anotherguest section) and text correction. If you wish add some text you may download and modify source document from https://sourceforge.net/projects/scummvms60git/ and then send me t
-o fedor_qd@mail.ru
-\par First guide contain help by Anotherguest, second - VincentJ, third - murgo.
-\par Enjoys, cheers! Always yous, Fedor Strizhniou =)}{\f29\lang1059\langfe1033\langnp1059
-\par }{\f29
-\par }\pard\plain \s2\ql \li0\ri0\sb120\sa120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \brdrb\brdrs\brdrw30\brsp20 \tqr\tx9072\nooverflow\faroman\outlinelevel1\rin0\lin0\itap0 \b\f1\fs24\lang2057\langfe1033\cgrid\langnp2057\langfenp1033 {\b0\f28 First guide
-
-\par }\pard\plain \s32\ql \li0\ri0\sa120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \f1\fs20\cf13\lang2057\langfe1033\cgrid\langnp2057\langfenp1033 {Controls, Virtual keyboard, Shortcuts, ScummVM, Tips, S60, UIQ, UIQ3, S80, s80, S90, s90
-\par }\pard\plain \ql \li0\ri0\sa120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \f1\fs20\lang2057\langfe1033\cgrid\langnp2057\langfenp1033 {\f28
-\par
-\par }{\f29 UIQ3 devices: To the top right (holding the phone portrait) you four icons, from the top they are
+\par }\pard\plain \s2\ql \li0\ri0\sb120\sa120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \brdrb\brdrs\brdrw30\brsp20 \tqr\tx9072{\*\pn \pnlvlcont\ilvl0\ls0\pnrnot0\pndec }\nooverflow\faroman\outlinelevel1\rin0\lin0\itap0
+\b\f1\fs24\lang2057\langfe1033\cgrid\langnp2057\langfenp1033 {\b0\f28 1st guide
+\par {\pntext\pard\plain\s26 \f30\fs20\lang2057\langfe1033\langnp2057\langfenp1033 \loch\af30\dbch\af0\hich\f30 \'69\tab}}\pard\plain \s26\ql \fi-283\li283\ri0\sa120\widctlpar\brdrb\brdrs\brdrw15\brsp20 {\*\pn \pnlvlblt\ilvl0\ls17\pnrnot0
+\pnf30\pnstart1\pnindent283\pnhang{\pntxtb i}}\nooverflow\faroman\ls17\rin0\lin283\itap0 \f1\fs20\lang2057\langfe1033\cgrid\langnp2057\langfenp1033 {Controls, Virtual keyboard, Shortcuts, ScummVM, Tips, S60, UIQ, UIQ3, S80, s80, S90, s90
+\par }\pard\plain \ql \li0\ri0\sa120\widctlpar{\*\pn \pnlvlcont\ilvl0\ls0\pnrnot0\pndec }\nooverflow\faroman\rin0\lin0\itap0 \f1\fs20\lang2057\langfe1033\cgrid\langnp2057\langfenp1033 {\f28
+\par }{UIQ3 devices: To the top right (holding the phone portrait) you four icons, from the top they are
\par
\par * Toggle control mode, in control mode you can change text input , screen orientation and screen scaling
\par * Mouse button, toggles between left, right and no button when tapping the screen. If no button is selected, 7 & Space works as left mouse button and 9 & Enter works as the right mouse button.
@@ -81,11 +90,11 @@ o fedor_qd@mail.ru
\par * Enter key
\par * Backspace
\par * Arrow Up/Down to scroll the keys available
-\par * Virtual keyboard, tap letters to simulate keypresses.
+\par * Virtual keyboard, tap letters to simulate key presses.
\par
\par S60 and UIQ3 devices: (Control Key = Green Phone key, to activate/deactivate control mode in SDL)
-\par
-\par * 1 = change Input Mode: Joystick | Keyboard | Cursor
+\par }{\f29
+\par }{* 1 = change Input Mode: Joystick | Keyboard | Cursor
\par * 2,'p' = change Video Mode: Landscape | Portrait
\par * 3,'f' = change Orientation Mode for Landscape: 90\'b0 Left | 90\'b0 Right
\par * 4,'s' = Toggle between stretched and non-stretched modes
@@ -95,7 +104,7 @@ o fedor_qd@mail.ru
\par * 9,'j' = Joystick input
\par * 0,'m' = Mouse input
\par * Up/Down = Alter global volume when not in 1-1 VGA mode. Pan around in VGA 1-1 Mode
-\par * # = On/Off screen keyboard transparency
+\par * # = On/Off screen keyboard transparency in some games
\par
\par S80 devices:
\par
@@ -110,65 +119,65 @@ o fedor_qd@mail.ru
\par
\par What are these Joystick, Keyboard and Cursor modes anyway?
\par }{\f28
-\par }{\f29 Joystick mode sends SDL joystick events to ScummVM which acts as a mouse control in ScummVM. Cursor mod
-e sends keyboard arrows instead, so for example it can be used to navigate through directorylist (one hand use perhaps!?) or save games etc. Keyboard mode is only available for S60 and enables multi-tap to enter text characters in save dialogs. These mode
-s are implemented at the underlying SDL level, so this determines the types of events that ScummVM receives from SDL.
+\par }{Joystick mode sends SDL joystick events to ScummVM which acts as a mouse control in ScummVM. Cursor mode sends keyboard arrows instead, so for example it can be used to navigate
+through directorylist (one hand use perhaps!?) or save games etc. Keyboard mode is only available for S60 and enables multi-tap to enter text characters in save dialogs. These modes are implemented at the underlying SDL level, so this determines the types
+ of events that ScummVM receives from SDL.
\par What are these Shrinked, Zoomed and Upscaled modes anyway?
\par
-\par Shrink displays the game on your screen but in a shrinked way, either in Portra
-it or Landscape mode, so not all the pixels can be seen. Zoom mode uses the maximum resolution of your phone displaying a smaller part of the game zoomed at 1:1 pixels. For scrolling in S60 Zoom mode: 0+Cursor keys to scroll around, 0+Ok button to center
-view. Upscale tries to fill the larger screens on S80/S90 devices in a better way for low resolution games. Currently it uses a pixel interpolation upscaling routine.
+\par Shrink displays the game on your screen but in a shrinked way, either in Portrait or Landscape mode, so not all the pixels can be seen. Zoom mode uses the maximum resolution of your phone displaying a smaller part of the game zoomed at 1:1 pixels. For scr
+olling in S60 Zoom mode: 0+Cursor keys to scroll around, 0+Ok button to center view. Upscale tries to fill the larger screens on S80/S90 devices in a better way for low resolution games. Currently it uses a pixel interpolation upscaling routine.
\par
\par You can also use a bluetooth mouse with S60v3 devices to control your game. You need the bluetooth hid library from Hinkka http://koti.mbnet.fi/hinkka/Download.html to get it to work properly.
+\par }{\f29
\par
+\par }\pard\plain \s2\ql \li0\ri0\sb120\sa120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \brdrb\brdrs\brdrw30\brsp20 \tqr\tx9072{\*\pn \pnlvlcont\ilvl0\ls0\pnrnot0\pndec }\nooverflow\faroman\outlinelevel1\rin0\lin0\itap0
+\b\f1\fs24\lang2057\langfe1033\cgrid\langnp2057\langfenp1033 {\b0\f28 2nd guide
+\par {\pntext\pard\plain\s26 \f30\fs20\lang2057\langfe1033\langnp2057\langfenp1033 \loch\af30\dbch\af0\hich\f30 \'69\tab}}\pard\plain \s26\ql \fi-283\li283\ri0\sa120\widctlpar\brdrb\brdrs\brdrw15\brsp20 {\*\pn \pnlvlblt\ilvl0\ls17\pnrnot0
+\pnf30\pnstart1\pnindent283\pnhang{\pntxtb i}}\nooverflow\faroman\ls17\rin0\lin283\itap0 \f1\fs20\lang2057\langfe1033\cgrid\langnp2057\langfenp1033 {Controls, Virtual keyboard, Shortcuts, ScummVM, Tips, S60, s60
+\par }\pard\plain \ql \li0\ri0\sa120\widctlpar{\*\pn \pnlvlcont\ilvl0\ls0\pnrnot0\pndec }\nooverflow\faroman\rin0\lin0\itap0 \f1\fs20\lang2057\langfe1033\cgrid\langnp2057\langfenp1033 {\f28
\par
-\par }\pard\plain \s2\ql \li0\ri0\sb120\sa120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \brdrb\brdrs\brdrw30\brsp20 \tqr\tx9072\nooverflow\faroman\outlinelevel1\rin0\lin0\itap0 \b\f1\fs24\lang2057\langfe1033\cgrid\langnp2057\langfenp1033 {\b0\f28 Second guide
-
-\par }\pard\plain \s32\ql \li0\ri0\sa120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \f1\fs20\cf13\lang2057\langfe1033\cgrid\langnp2057\langfenp1033 {Controls, Virtual keyboard, Shortcuts, ScummVM, Tips, S60, s60
-\par }\pard\plain \ql \li0\ri0\sa120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \f1\fs20\lang2057\langfe1033\cgrid\langnp2057\langfenp1033 {\f28
-\par
-\par }{\f29 More user-friendly guide for Nokia phones (based on N96 but should apply to most phones)
+\par }{More user-friendly guide for Nokia phones (based on N96 but should apply to most phones)
\par
\par Left Soft Key - Left Click
\par }{\f28
-\par }{\f29 Right Soft Key - Right Click
+\par }{Right Soft Key - Right Click
\par }{\f28
-\par }{\f29 Navigation buttons - Move pointer on screen
+\par }{Navigation buttons - Move pointer on screen
\par }{\f28
-\par }{\f29 "C" or "Delete Key" - Space Bar (i.e. skip dialogue/cutscene)
+\par }{"C" or "Delete Key" - Space Bar (i.e. skip dialogue/cutscene)
\par }{\f28
-\par }{\f29 * - Bring up Menu (to Save, Load and change the game's options e.g. enable subtitles, speech etc. Varies from game to game)
+\par }{* - Bring up Menu (to Save, Load and change the game's options e.g. enable subtitles, speech etc. Varies from game to game)
\par
\par The <> is a toggling left right mode. I.e. first click is left, next is right, next is left etc.
\par
\par Call Button - Enter/Exit Configuration Mode
\par }{\f28
-\par }{\f29 Configuration Mode, when activated, shows the word "CTRL" in green in the upper right corner of the screen. It allows to quickly switch between various functions of ScummVM. The following buttons on your keypad are activated when "CTRL" is disp
-layed-
-\par
-\par 1 - Change Input.
+\par }{Configuration Mode, when activated, shows the word "CTRL" in green in the upper right corner of the screen. It allows to quickly switch between various functions of ScummVM. The following buttons on your keypad are activated when "CTRL" is displayed :
+
+\par }{\f29
+\par }{1 - Change Input.
\par This is the option you'll probably use the most. There are three settings; A,C and J.
\par
-\par A - This is the "Text Input" mode. It allows you to type directly into ScummVM as if you were using a keyboard. Type the same way you would whe
-n sending a text message off of your phone. Please note that the pointer is disabled when in this mode. Don't forget to exit Configuration Mode before typing!
+\par A - This is the "Text Input" mode. It allows you to type directl
+y into ScummVM as if you were using a keyboard. Type the same way you would when sending a text message off of your phone. Please note that the pointer is disabled when in this mode. Don't forget to exit Configuration Mode before typing!
\par
\par C - This is the "Cursor" mode. This emulates the arrow keys of the keyboard. Some games require using this instead of the mouse (e.g. the destruction derby section towards the end of Full Throttle).
\par
\par J - This is the "Joystick/Mouse" mode. Simply put, it allows you to use the navigation buttons to move the pointer around the screen. The left and right mouse buttons are used by the left and right Soft keys.
\par
\par The "C" button emulates the space bar, i.e. skip line of dialogue, skip cutscene or pause game (depending on the game, some games simply use the left mouse button to skip dialogue in which case it will pause the game instead)
-\par
-\par 2 - Toggle Landscape and Portrait
+\par }{\f29
+\par }{2 - Toggle Landscape and Portrait
\par Switches the screen output between having the phone held normally (Portrait) or on its side (Landscape). You'll probably never take it off Landscape mode as it offers the better display area.
\par
\par 3 - Change Landscape Orientation
\par Only applies to Landscape mode, simply swaps the screen output between having the phone tilted on its left side or on its right side.
\par
\par 4 - Toggle Zoom On and Off
-\par Zooms in on a portion of the screen. Handy for when you are looking through a screen for items or having trouble reading subtitles. Use the navigation buttons for panning around the play area. Don't forget you'll have to exit out of Configuration Mode bef
-ore you can move the pointer again. Exiting Configuration Mode does not reset the zoom level.
-\par
-\par 5 & 6 - Unused
+\par Zooms in on a portion of the screen. Handy for when you are looking through a screen for items or having trouble reading subtitles. Use the navigation buttons for panning around the play area. Don't forget you'll have to exit out of Confi
+guration Mode before you can move the pointer again. Exiting Configuration Mode does not reset the zoom level.
+\par }{\f29
+\par }{5 & 6 - Unused
\par
\par 7 - "Text Input" mode. Shortcut for entering "Text Input" mode directly instead of cycling through the other input types using the "1" key.
\par
@@ -183,16 +192,16 @@ ore you can move the pointer again. Exiting Configuration Mode does not reset th
\par Up Navigation Button - Increase ScummVM sound volume. Note that the game itself may have its own independent sound settings (usually found under the * menu)
\par
\par Down Navigation Button - Decrease ScummVM sound volume. Note that the game itself may have its own independent sound settings (usually found under the * menu)
+\par }{\f29
\par
+\par }\pard\plain \s2\ql \li0\ri0\sb120\sa120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \brdrb\brdrs\brdrw30\brsp20 \tqr\tx9072{\*\pn \pnlvlcont\ilvl0\ls0\pnrnot0\pndec }\nooverflow\faroman\outlinelevel1\rin0\lin0\itap0
+\b\f1\fs24\lang2057\langfe1033\cgrid\langnp2057\langfenp1033 {\b0\f28 3rd guide
+\par {\pntext\pard\plain\s26 \f30\fs20\lang2057\langfe1033\langnp2057\langfenp1033 \loch\af30\dbch\af0\hich\f30 \'69\tab}}\pard\plain \s26\ql \fi-283\li283\ri0\sa120\widctlpar\brdrb\brdrs\brdrw15\brsp20 {\*\pn \pnlvlblt\ilvl0\ls17\pnrnot0
+\pnf30\pnstart1\pnindent283\pnhang{\pntxtb i}}\nooverflow\faroman\ls17\rin0\lin283\itap0 \f1\fs20\lang2057\langfe1033\cgrid\langnp2057\langfenp1033 {Controls, Virtual keyboard, Shortcuts, ScummVM, Tips, S60, s60
+\par }\pard\plain \ql \li0\ri0\sa120\widctlpar{\*\pn \pnlvlcont\ilvl0\ls0\pnrnot0\pndec }\nooverflow\faroman\rin0\lin0\itap0 \f1\fs20\lang2057\langfe1033\cgrid\langnp2057\langfenp1033 {\f28
\par
-\par }\pard\plain \s2\ql \li0\ri0\sb120\sa120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \brdrb\brdrs\brdrw30\brsp20 \tqr\tx9072\nooverflow\faroman\outlinelevel1\rin0\lin0\itap0 \b\f1\fs24\lang2057\langfe1033\cgrid\langnp2057\langfenp1033 {\b0\f28 Third guide
-
-\par }\pard\plain \s32\ql \li0\ri0\sa120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \f1\fs20\cf13\lang2057\langfe1033\cgrid\langnp2057\langfenp1033 {Controls, Virtual keyboard, Shortcuts, ScummVM, Tips, S60, s60
-\par }\pard\plain \ql \li0\ri0\sa120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \f1\fs20\lang2057\langfe1033\cgrid\langnp2057\langfenp1033 {\f28
-\par
-\par }{\f29 ScummVM keys on Nokia e71
-(most likely on any other qwerty-device, too), tested on version 0.14.0svn (Feb. 18 2009 05:56:07). Number keys are inserted by first pressing fn-key (leftmost key at bottom row on E71) and then pressing correct key (e.g. 5 is fn+g). You don't have to pre
-ss both keys simultaneously.
+\par }{ScummVM keys on Nokia e71 (most likely on any other qwerty-device, too), tested on version 0.14.0svn (Feb. 18 2009
+ 05:56:07). Number keys are inserted by first pressing fn-key (leftmost key at bottom row on E71) and then pressing correct key (e.g. 5 is fn+g). You don't have to press both keys simultaneously.
\par
\par Basic keys:
\par
@@ -233,8 +242,8 @@ ss both keys simultaneously.
\par t -- Talk to
\par s -- Push
\par y -- Pull
-\par
-\par and in Full Throttle (from the top of my head):
+\par }{\f29
+\par }{and in Full Throttle (from the top of my head):
\par
\par k -- kick (foot)
\par t -- talk (mouth)
@@ -242,13 +251,13 @@ ss both keys simultaneously.
\par p -- punch (hand)
\par
\par AGI games (King's Quest, Police Quest etc.):
-\par The games work beautifully on the E71, but there's some stupid bugs (in input). I recall fi
-nding some debug keys and "last sentence" / "inventory" -keys in earlier version, but I can't find them any more. Also you can't turn on sirens in Police Quest, which kinda makes it unplayable.
+\par The games work beautifully on the E71, but there's some stupid bugs (in input). I recall finding some debug keys and "last sentence" / "inventory" -keys in earlier version, but I can't find them any more. Also you can't turn on sirens in Police Quest, whi
+ch kinda makes it unplayable.
\par
\par There's good side and bad side to each input mode:
\par Keyboard (I use this primarily)
-\par
-\par * goes to menu
+\par }{\f29
+\par }{* goes to menu
\par + you can erase text
\par + moving is relatively easy
\par - you can't type in UPPER CASE
@@ -256,11 +265,75 @@ nding some debug keys and "last sentence" / "inventory" -keys in earlier version
\par - worthless 'current key' -display on left top corner
\par
\par Joystick / Cursor:
-\par
-\par + you can access menus
+\par }{\f29
+\par }{+ you can access menus
\par + you can type numbers (just make sure f-letter in left top corner is red before clicking "numbers". It works kinda funnily, but you'll get hang of it.)
\par - you move mouse cursor which makes walking harder (joystick mode)
\par - you can't erase text
-\par
-\par There might be some mistakes and some keys missing from the list, feel free to pm me corrections / suggestions.}{\f28
+\par }{\f28
+\par }\pard\plain \s2\ql \li0\ri0\sb120\sa120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \brdrb\brdrs\brdrw30\brsp20 \tqr\tx9072{\*\pn \pnlvlcont\ilvl0\ls0\pnrnot0\pndec }\nooverflow\faroman\outlinelevel1\rin0\lin0\itap0
+\b\f1\fs24\lang2057\langfe1033\cgrid\langnp2057\langfenp1033 {ScummVM1 engines list
+\par {\pntext\pard\plain\s26 \f30\fs20\lang2057\langfe1033\langnp2057\langfenp1033 \loch\af30\dbch\af0\hich\f30 \'69\tab}}\pard\plain \s26\ql \fi-283\li283\ri0\sa120\widctlpar\brdrb\brdrs\brdrw15\brsp20 {\*\pn \pnlvlblt\ilvl0\ls18\pnrnot0
+\pnf30\pnstart1\pnindent283\pnhang{\pntxtb i}}\nooverflow\faroman\ls18\rin0\lin283\itap0 \f1\fs20\lang2057\langfe1033\cgrid\langnp2057\langfenp1033 {Supported games
+\par }\pard\plain \ql \li0\ri0\sa120\widctlpar{\*\pn \pnlvlcont\ilvl0\ls0\pnrnot0\pndec }\nooverflow\faroman\rin0\lin0\itap0 \f1\fs20\lang2057\langfe1033\cgrid\langnp2057\langfenp1033 {agi
+\par agos
+\par \tab AGOS2
+\par cine
+\par composer
+\par cruise
+\par drascula
+\par gob
+\par groovie
+\par \tab GROOVIE2
+\par kyra
+\par \tab EOB
+\par \tab LOL
+\par lastexpress
+\par made
+\par neverhood
+\par parallaction
+\par queen
+\par saga
+\par \tab IHNM
+\par \tab SAGA2
+\par scumm
+\par \tab HE
+\par \tab SCUMM_7_8
+\par touche
+\par tucker
+\par wintermute
+\par
+\par }\pard\plain \s2\ql \li0\ri0\sb120\sa120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \brdrb\brdrs\brdrw30\brsp20 \tqr\tx9072{\*\pn \pnlvlcont\ilvl0\ls0\pnrnot0\pndec }\nooverflow\faroman\outlinelevel1\rin0\lin0\itap0
+\b\f1\fs24\lang2057\langfe1033\cgrid\langnp2057\langfenp1033 {ScummVM2 engines list
+\par {\pntext\pard\plain\s26 \f30\fs20\lang2057\langfe1033\langnp2057\langfenp1033 \loch\af30\dbch\af0\hich\f30 \'69\tab}}\pard\plain \s26\ql \fi-283\li283\ri0\sa120\widctlpar\brdrb\brdrs\brdrw15\brsp20 {\*\pn \pnlvlblt\ilvl0\ls18\pnrnot0
+\pnf30\pnstart1\pnindent283\pnhang{\pntxtb i}}\nooverflow\faroman\ls18\rin0\lin283\itap0 \f1\fs20\lang2057\langfe1033\cgrid\langnp2057\langfenp1033 {Supported games
+\par }\pard\plain \ql \li0\ri0\sa120\widctlpar\nooverflow\faroman\rin0\lin0\itap0 \f1\fs20\lang2057\langfe1033\cgrid\langnp2057\langfenp1033 {avalanche
+\par cge
+\par composer
+\par draci
+\par dreamweb
+\par fullpipe
+\par hopkins
+\par hugo
+\par lure
+\par mohawk
+\par \tab CSTIME
+\par \tab MYST
+\par \tab RIVEN
+\par mortevielle
+\par pegasus
+\par sci
+\par \tab SCI32
+\par sky
+\par sword1
+\par sword2
+\par sword25(Not supported)
+\par teenagent
+\par testbed
+\par tinsel
+\par toltecs
+\par tony
+\par toon
+\par tsage
+\par zvision
\par }} \ No newline at end of file
diff --git a/backends/platform/symbian/mmp/scummvm_agi.mmp.in b/backends/platform/symbian/mmp/scummvm_agi.mmp.in
index a3eaa71065..d6f9e54b7d 100644
--- a/backends/platform/symbian/mmp/scummvm_agi.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_agi.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2014 The ScummVM Team
+ * Copyright (C) 2005-2013 The ScummVM project
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
@@ -57,5 +57,15 @@ SOURCEPATH ..\..\..\..\engines\agi
USERINCLUDE ..\..\..\..\engines
USERINCLUDE ..\..\..\.. ..\..\..\..\gui ..\..\..\..\audio ..\src
+
+SYSTEMINCLUDE \epoc32\include\freetype
+SYSTEMINCLUDE \epoc32\include\mpeg2dec
+SYSTEMINCLUDE \epoc32\include\jpeg
+SYSTEMINCLUDE \epoc32\include\png
+SYSTEMINCLUDE \epoc32\include\ESDL
SYSTEMINCLUDE \epoc32\include\ZLIB // before \epoc32\include because symbian already has older version
-SYSTEMINCLUDE \epoc32\include \epoc32\include\libc ..\src
+SYSTEMINCLUDE \epoc32\include\libc
+SYSTEMINCLUDE \epoc32\include\theora
+SYSTEMINCLUDE \epoc32\include\tremor
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE ..\src // for portdefs.h
diff --git a/backends/platform/symbian/mmp/scummvm_agos.mmp.in b/backends/platform/symbian/mmp/scummvm_agos.mmp.in
index 92b8862794..d2b1329a24 100644
--- a/backends/platform/symbian/mmp/scummvm_agos.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_agos.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2014 The ScummVM Team
+ * Copyright (C) 2005-2013 The ScummVM project
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
@@ -63,5 +63,15 @@ SOURCEPATH ..\..\..\..\engines\agos
USERINCLUDE ..\..\..\..\engines
USERINCLUDE ..\..\..\.. ..\..\..\..\gui ..\..\..\..\audio ..\src
+
+SYSTEMINCLUDE \epoc32\include\freetype
+SYSTEMINCLUDE \epoc32\include\mpeg2dec
+SYSTEMINCLUDE \epoc32\include\jpeg
+SYSTEMINCLUDE \epoc32\include\png
+SYSTEMINCLUDE \epoc32\include\ESDL
SYSTEMINCLUDE \epoc32\include\ZLIB // before \epoc32\include because symbian already has older version
-SYSTEMINCLUDE \epoc32\include \epoc32\include\libc ..\src
+SYSTEMINCLUDE \epoc32\include\libc
+SYSTEMINCLUDE \epoc32\include\theora
+SYSTEMINCLUDE \epoc32\include\tremor
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE ..\src // for portdefs.h
diff --git a/backends/platform/symbian/mmp/scummvm_avalanche.mmp.in b/backends/platform/symbian/mmp/scummvm_avalanche.mmp.in
index 1093181a4e..5260edc79d 100644
--- a/backends/platform/symbian/mmp/scummvm_avalanche.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_avalanche.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2014 The ScummVM Team
+ * Copyright (C) 2005-2013 The ScummVM project
* Copyright (C) 2013 Strizniou Fedor
*
* ScummVM is the legal property of its developers, whose names
@@ -58,5 +58,15 @@ SOURCEPATH ..\..\..\..\engines\avalanche
USERINCLUDE ..\..\..\..\engines
USERINCLUDE ..\..\..\.. ..\..\..\..\gui ..\..\..\..\audio ..\src
+
+SYSTEMINCLUDE \epoc32\include\freetype
+SYSTEMINCLUDE \epoc32\include\mpeg2dec
+SYSTEMINCLUDE \epoc32\include\jpeg
+SYSTEMINCLUDE \epoc32\include\png
+SYSTEMINCLUDE \epoc32\include\ESDL
SYSTEMINCLUDE \epoc32\include\ZLIB // before \epoc32\include because symbian already has older version
-SYSTEMINCLUDE \epoc32\include \epoc32\include\libc ..\src
+SYSTEMINCLUDE \epoc32\include\libc
+SYSTEMINCLUDE \epoc32\include\theora
+SYSTEMINCLUDE \epoc32\include\tremor
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE ..\src // for portdefs.h
diff --git a/backends/platform/symbian/mmp/scummvm_base.mmp.in b/backends/platform/symbian/mmp/scummvm_base.mmp.in
index 358a2ec961..cc65980b71 100644
--- a/backends/platform/symbian/mmp/scummvm_base.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_base.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2014 The ScummVM Team
+ * Copyright (C) 2005-2013 The ScummVM project
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
@@ -34,7 +34,9 @@ TARGET scummvm_base.lib
TARGETTYPE lib
OPTION MSVC /QIfist /Ob1 /Oy /GF // /QIfist disables use of __ftol2 to avoid linker probs with MS libc: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/vcrefQIfistSuppress_ftol.asp
OPTION GCC -Wno-multichar -Wno-reorder // don't optimize for ARM, platform way too sensitive for that :( just turn off some common warnings
-OPTION GCCE -Wno-multichar -Wno-reorder -Wno-unused -Wno-format -fsigned-char
+// using option -Wno-psabi to supress warning "note: the mangling of 'va_list' has changed in GCC 4.4"
+// compiler will use png.h from libpng.lib instead ScummVM's
+OPTION GCCE -Wno-multichar -Wno-reorder -Wno-unused -Wno-format -fsigned-char -Wno-psabi -I'/Symbian/S60_5th_Edition_SDK_v1.0/epoc32/include/png'
ALWAYS_BUILD_AS_ARM
// Note: the LIB:*.lib statements are used by AdaptAllMMPs.pl, so don't remove them!
@@ -54,9 +56,12 @@ USERINCLUDE \epoc32\include\mpeg2dec //\epoc32\include\theora
SYSTEMINCLUDE \epoc32\include\freetype
SYSTEMINCLUDE \epoc32\include\mpeg2dec
+SYSTEMINCLUDE \epoc32\include\jpeg
+SYSTEMINCLUDE \epoc32\include\png
SYSTEMINCLUDE \epoc32\include\ESDL
SYSTEMINCLUDE \epoc32\include\ZLIB // before \epoc32\include because symbian already has older version
SYSTEMINCLUDE \epoc32\include\libc
+SYSTEMINCLUDE \epoc32\include\theora
SYSTEMINCLUDE \epoc32\include\tremor
SYSTEMINCLUDE \epoc32\include
SYSTEMINCLUDE ..\src // for portdefs.h
@@ -115,6 +120,7 @@ SOURCEPATH ..\..\..\..\video
//STOP_AUTO_OBJECTS_VIDEO_//
// add a few files manually, since they are not parsed from modules.mk files
+SOURCE theora_decoder.cpp
SOURCE bink_decoder.cpp
SOURCE codecs\mpeg.cpp
@@ -159,4 +165,5 @@ SOURCE backends\vkeybd\virtual-keyboard.cpp
// Downscaler
SOURCE graphics\scaler\downscaler.cpp
+SOURCE graphics\scaler\downscalerARM.s
MACRO SDL_BACKEND
diff --git a/backends/platform/symbian/mmp/scummvm_cge.mmp.in b/backends/platform/symbian/mmp/scummvm_cge.mmp.in
index 2d93671938..35cb0f2f98 100644
--- a/backends/platform/symbian/mmp/scummvm_cge.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_cge.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2014 The ScummVM Team
+ * Copyright (C) 2005-2013 The ScummVM project
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
@@ -57,5 +57,15 @@ SOURCEPATH ..\..\..\..\engines\cge
USERINCLUDE ..\..\..\..\engines
USERINCLUDE ..\..\..\.. ..\..\..\..\gui ..\..\..\..\audio ..\src
+
+SYSTEMINCLUDE \epoc32\include\freetype
+SYSTEMINCLUDE \epoc32\include\mpeg2dec
+SYSTEMINCLUDE \epoc32\include\jpeg
+SYSTEMINCLUDE \epoc32\include\png
+SYSTEMINCLUDE \epoc32\include\ESDL
SYSTEMINCLUDE \epoc32\include\ZLIB // before \epoc32\include because symbian already has older version
-SYSTEMINCLUDE \epoc32\include \epoc32\include\libc ..\src
+SYSTEMINCLUDE \epoc32\include\libc
+SYSTEMINCLUDE \epoc32\include\theora
+SYSTEMINCLUDE \epoc32\include\tremor
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE ..\src // for portdefs.h
diff --git a/backends/platform/symbian/mmp/scummvm_cine.mmp.in b/backends/platform/symbian/mmp/scummvm_cine.mmp.in
index a308f92813..99b45cddb8 100644
--- a/backends/platform/symbian/mmp/scummvm_cine.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_cine.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2014 The ScummVM Team
+ * Copyright (C) 2005-2013 The ScummVM project
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
@@ -57,4 +57,15 @@ SOURCEPATH ..\..\..\..\engines\cine
USERINCLUDE ..\..\..\..\engines
USERINCLUDE ..\..\..\.. ..\..\..\..\gui ..\..\..\..\audio ..\src
-SYSTEMINCLUDE \epoc32\include \epoc32\include\libc ..\src
+
+SYSTEMINCLUDE \epoc32\include\freetype
+SYSTEMINCLUDE \epoc32\include\mpeg2dec
+SYSTEMINCLUDE \epoc32\include\jpeg
+SYSTEMINCLUDE \epoc32\include\png
+SYSTEMINCLUDE \epoc32\include\ESDL
+SYSTEMINCLUDE \epoc32\include\ZLIB // before \epoc32\include because symbian already has older version
+SYSTEMINCLUDE \epoc32\include\libc
+SYSTEMINCLUDE \epoc32\include\theora
+SYSTEMINCLUDE \epoc32\include\tremor
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE ..\src // for portdefs.h
diff --git a/backends/platform/symbian/mmp/scummvm_composer.mmp.in b/backends/platform/symbian/mmp/scummvm_composer.mmp.in
index cfe43b59a2..5a215f2d8d 100644
--- a/backends/platform/symbian/mmp/scummvm_composer.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_composer.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2014 The ScummVM Team
+ * Copyright (C) 2005-2013 The ScummVM project
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
@@ -57,5 +57,15 @@ SOURCEPATH ..\..\..\..\engines\COMPOSER
USERINCLUDE ..\..\..\..\engines
USERINCLUDE ..\..\..\.. ..\..\..\..\gui ..\..\..\..\audio ..\src
+
+SYSTEMINCLUDE \epoc32\include\freetype
+SYSTEMINCLUDE \epoc32\include\mpeg2dec
+SYSTEMINCLUDE \epoc32\include\jpeg
+SYSTEMINCLUDE \epoc32\include\png
+SYSTEMINCLUDE \epoc32\include\ESDL
SYSTEMINCLUDE \epoc32\include\ZLIB // before \epoc32\include because symbian already has older version
-SYSTEMINCLUDE \epoc32\include \epoc32\include\libc ..\src
+SYSTEMINCLUDE \epoc32\include\libc
+SYSTEMINCLUDE \epoc32\include\theora
+SYSTEMINCLUDE \epoc32\include\tremor
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE ..\src // for portdefs.h
diff --git a/backends/platform/symbian/mmp/scummvm_cruise.mmp.in b/backends/platform/symbian/mmp/scummvm_cruise.mmp.in
index 58aed70f81..21a674dc1f 100644
--- a/backends/platform/symbian/mmp/scummvm_cruise.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_cruise.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2014 The ScummVM Team
+ * Copyright (C) 2005-2013 The ScummVM project
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
@@ -57,4 +57,15 @@ SOURCEPATH ..\..\..\..\engines\cruise
USERINCLUDE ..\..\..\..\engines
USERINCLUDE ..\..\..\.. ..\..\..\..\gui ..\..\..\..\audio ..\src
-SYSTEMINCLUDE \epoc32\include \epoc32\include\libc ..\src
+
+SYSTEMINCLUDE \epoc32\include\freetype
+SYSTEMINCLUDE \epoc32\include\mpeg2dec
+SYSTEMINCLUDE \epoc32\include\jpeg
+SYSTEMINCLUDE \epoc32\include\png
+SYSTEMINCLUDE \epoc32\include\ESDL
+SYSTEMINCLUDE \epoc32\include\ZLIB // before \epoc32\include because symbian already has older version
+SYSTEMINCLUDE \epoc32\include\libc
+SYSTEMINCLUDE \epoc32\include\theora
+SYSTEMINCLUDE \epoc32\include\tremor
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE ..\src // for portdefs.h
diff --git a/backends/platform/symbian/mmp/scummvm_draci.mmp.in b/backends/platform/symbian/mmp/scummvm_draci.mmp.in
index ba1759c00b..fe899a91ff 100644
--- a/backends/platform/symbian/mmp/scummvm_draci.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_draci.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2014 The ScummVM Team
+ * Copyright (C) 2005-2013 The ScummVM project
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
@@ -57,5 +57,15 @@ SOURCEPATH ..\..\..\..\engines\draci
USERINCLUDE ..\..\..\..\engines
USERINCLUDE ..\..\..\.. ..\..\..\..\gui ..\..\..\..\audio ..\src
+
+SYSTEMINCLUDE \epoc32\include\freetype
+SYSTEMINCLUDE \epoc32\include\mpeg2dec
+SYSTEMINCLUDE \epoc32\include\jpeg
+SYSTEMINCLUDE \epoc32\include\png
+SYSTEMINCLUDE \epoc32\include\ESDL
SYSTEMINCLUDE \epoc32\include\ZLIB // before \epoc32\include because symbian already has older version
-SYSTEMINCLUDE \epoc32\include \epoc32\include\libc ..\src
+SYSTEMINCLUDE \epoc32\include\libc
+SYSTEMINCLUDE \epoc32\include\theora
+SYSTEMINCLUDE \epoc32\include\tremor
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE ..\src // for portdefs.h
diff --git a/backends/platform/symbian/mmp/scummvm_drascula.mmp.in b/backends/platform/symbian/mmp/scummvm_drascula.mmp.in
index c4419dd71e..8f532d4498 100644
--- a/backends/platform/symbian/mmp/scummvm_drascula.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_drascula.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2014 The ScummVM Team
+ * Copyright (C) 2005-2013 The ScummVM project
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
@@ -57,4 +57,15 @@ SOURCEPATH ..\..\..\..\engines\drascula
USERINCLUDE ..\..\..\..\engines
USERINCLUDE ..\..\..\.. ..\..\..\..\gui ..\..\..\..\audio ..\src
-SYSTEMINCLUDE \epoc32\include \epoc32\include\libc ..\src
+
+SYSTEMINCLUDE \epoc32\include\freetype
+SYSTEMINCLUDE \epoc32\include\mpeg2dec
+SYSTEMINCLUDE \epoc32\include\jpeg
+SYSTEMINCLUDE \epoc32\include\png
+SYSTEMINCLUDE \epoc32\include\ESDL
+SYSTEMINCLUDE \epoc32\include\ZLIB // before \epoc32\include because symbian already has older version
+SYSTEMINCLUDE \epoc32\include\libc
+SYSTEMINCLUDE \epoc32\include\theora
+SYSTEMINCLUDE \epoc32\include\tremor
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE ..\src // for portdefs.h
diff --git a/backends/platform/symbian/mmp/scummvm_dreamweb.mmp.in b/backends/platform/symbian/mmp/scummvm_dreamweb.mmp.in
index a5cc758ff6..89ffd23ebd 100644
--- a/backends/platform/symbian/mmp/scummvm_dreamweb.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_dreamweb.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2014 The ScummVM Team
+ * Copyright (C) 2005-2013 The ScummVM project
* Copyright (C) 2013 Strizniou Fedor
*
* ScummVM is the legal property of its developers, whose names
@@ -58,5 +58,15 @@ SOURCEPATH ..\..\..\..\engines\dreamweb
USERINCLUDE ..\..\..\..\engines
USERINCLUDE ..\..\..\.. ..\..\..\..\gui ..\..\..\..\audio ..\src
+
+SYSTEMINCLUDE \epoc32\include\freetype
+SYSTEMINCLUDE \epoc32\include\mpeg2dec
+SYSTEMINCLUDE \epoc32\include\jpeg
+SYSTEMINCLUDE \epoc32\include\png
+SYSTEMINCLUDE \epoc32\include\ESDL
SYSTEMINCLUDE \epoc32\include\ZLIB // before \epoc32\include because symbian already has older version
-SYSTEMINCLUDE \epoc32\include \epoc32\include\libc ..\src
+SYSTEMINCLUDE \epoc32\include\libc
+SYSTEMINCLUDE \epoc32\include\theora
+SYSTEMINCLUDE \epoc32\include\tremor
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE ..\src // for portdefs.h
diff --git a/backends/platform/symbian/mmp/scummvm_fullpipe.mmp.in b/backends/platform/symbian/mmp/scummvm_fullpipe.mmp.in
index 59666b7b74..7612ad2bae 100644
--- a/backends/platform/symbian/mmp/scummvm_fullpipe.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_fullpipe.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2014 The ScummVM Team
+ * Copyright (C) 2005-2013 The ScummVM project
* Copyright (C) 2013 Strizniou Fedor
*
* ScummVM is the legal property of its developers, whose names
@@ -58,5 +58,15 @@ SOURCEPATH ..\..\..\..\engines\fullpipe
USERINCLUDE ..\..\..\..\engines
USERINCLUDE ..\..\..\.. ..\..\..\..\gui ..\..\..\..\audio ..\src
+
+SYSTEMINCLUDE \epoc32\include\freetype
+SYSTEMINCLUDE \epoc32\include\mpeg2dec
+SYSTEMINCLUDE \epoc32\include\jpeg
+SYSTEMINCLUDE \epoc32\include\png
+SYSTEMINCLUDE \epoc32\include\ESDL
SYSTEMINCLUDE \epoc32\include\ZLIB // before \epoc32\include because symbian already has older version
-SYSTEMINCLUDE \epoc32\include \epoc32\include\libc ..\src
+SYSTEMINCLUDE \epoc32\include\libc
+SYSTEMINCLUDE \epoc32\include\theora
+SYSTEMINCLUDE \epoc32\include\tremor
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE ..\src // for portdefs.h
diff --git a/backends/platform/symbian/mmp/scummvm_gob.mmp.in b/backends/platform/symbian/mmp/scummvm_gob.mmp.in
index c2c36626ff..884b06c61a 100644
--- a/backends/platform/symbian/mmp/scummvm_gob.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_gob.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2014 The ScummVM Team
+ * Copyright (C) 2005-2013 The ScummVM project
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
@@ -57,4 +57,15 @@ SOURCEPATH ..\..\..\..\engines\gob
USERINCLUDE ..\..\..\..\engines
USERINCLUDE ..\..\..\.. ..\..\..\..\gui ..\..\..\..\audio ..\src
-SYSTEMINCLUDE \epoc32\include \epoc32\include\libc ..\src
+
+SYSTEMINCLUDE \epoc32\include\freetype
+SYSTEMINCLUDE \epoc32\include\mpeg2dec
+SYSTEMINCLUDE \epoc32\include\jpeg
+SYSTEMINCLUDE \epoc32\include\png
+SYSTEMINCLUDE \epoc32\include\ESDL
+SYSTEMINCLUDE \epoc32\include\ZLIB // before \epoc32\include because symbian already has older version
+SYSTEMINCLUDE \epoc32\include\libc
+SYSTEMINCLUDE \epoc32\include\theora
+SYSTEMINCLUDE \epoc32\include\tremor
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE ..\src // for portdefs.h
diff --git a/backends/platform/symbian/mmp/scummvm_groovie.mmp.in b/backends/platform/symbian/mmp/scummvm_groovie.mmp.in
index 639a794260..de6483bebf 100644
--- a/backends/platform/symbian/mmp/scummvm_groovie.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_groovie.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2014 The ScummVM Team
+ * Copyright (C) 2005-2013 The ScummVM project
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
@@ -57,5 +57,15 @@ SOURCEPATH ..\..\..\..\engines\groovie
USERINCLUDE ..\..\..\..\engines
USERINCLUDE ..\..\..\.. ..\..\..\..\gui ..\..\..\..\audio ..\src
+
+SYSTEMINCLUDE \epoc32\include\freetype
+SYSTEMINCLUDE \epoc32\include\mpeg2dec
+SYSTEMINCLUDE \epoc32\include\jpeg
+SYSTEMINCLUDE \epoc32\include\png
+SYSTEMINCLUDE \epoc32\include\ESDL
SYSTEMINCLUDE \epoc32\include\ZLIB // before \epoc32\include because symbian already has older version
-SYSTEMINCLUDE \epoc32\include \epoc32\include\libc ..\src
+SYSTEMINCLUDE \epoc32\include\libc
+SYSTEMINCLUDE \epoc32\include\theora
+SYSTEMINCLUDE \epoc32\include\tremor
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE ..\src // for portdefs.h
diff --git a/backends/platform/symbian/mmp/scummvm_hopkins.mmp.in b/backends/platform/symbian/mmp/scummvm_hopkins.mmp.in
index cfe47d09ba..bafc11e65f 100644
--- a/backends/platform/symbian/mmp/scummvm_hopkins.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_hopkins.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2014 The ScummVM Team
+ * Copyright (C) 2005-2013 The ScummVM project
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
@@ -57,5 +57,15 @@ SOURCEPATH ..\..\..\..\engines\HOPKINS
USERINCLUDE ..\..\..\..\engines
USERINCLUDE ..\..\..\.. ..\..\..\..\gui ..\..\..\..\audio ..\src
+
+SYSTEMINCLUDE \epoc32\include\freetype
+SYSTEMINCLUDE \epoc32\include\mpeg2dec
+SYSTEMINCLUDE \epoc32\include\jpeg
+SYSTEMINCLUDE \epoc32\include\png
+SYSTEMINCLUDE \epoc32\include\ESDL
SYSTEMINCLUDE \epoc32\include\ZLIB // before \epoc32\include because symbian already has older version
-SYSTEMINCLUDE \epoc32\include \epoc32\include\libc ..\src
+SYSTEMINCLUDE \epoc32\include\libc
+SYSTEMINCLUDE \epoc32\include\theora
+SYSTEMINCLUDE \epoc32\include\tremor
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE ..\src // for portdefs.h \ No newline at end of file
diff --git a/backends/platform/symbian/mmp/scummvm_hugo.mmp.in b/backends/platform/symbian/mmp/scummvm_hugo.mmp.in
index fceeb5e5d1..58622a83fd 100644
--- a/backends/platform/symbian/mmp/scummvm_hugo.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_hugo.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2014 The ScummVM Team
+ * Copyright (C) 2005-2013 The ScummVM project
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
@@ -57,5 +57,15 @@ SOURCEPATH ..\..\..\..\engines\hugo
USERINCLUDE ..\..\..\..\engines
USERINCLUDE ..\..\..\.. ..\..\..\..\gui ..\..\..\..\audio ..\src
+
+SYSTEMINCLUDE \epoc32\include\freetype
+SYSTEMINCLUDE \epoc32\include\mpeg2dec
+SYSTEMINCLUDE \epoc32\include\jpeg
+SYSTEMINCLUDE \epoc32\include\png
+SYSTEMINCLUDE \epoc32\include\ESDL
SYSTEMINCLUDE \epoc32\include\ZLIB // before \epoc32\include because symbian already has older version
-SYSTEMINCLUDE \epoc32\include \epoc32\include\libc ..\src
+SYSTEMINCLUDE \epoc32\include\libc
+SYSTEMINCLUDE \epoc32\include\theora
+SYSTEMINCLUDE \epoc32\include\tremor
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE ..\src // for portdefs.h \ No newline at end of file
diff --git a/backends/platform/symbian/mmp/scummvm_kyra.mmp.in b/backends/platform/symbian/mmp/scummvm_kyra.mmp.in
index 2f8d22595e..3fa05e856d 100644
--- a/backends/platform/symbian/mmp/scummvm_kyra.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_kyra.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2014 The ScummVM Team
+ * Copyright (C) 2005-2013 The ScummVM project
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
@@ -70,4 +70,15 @@ SOURCEPATH ..\..\..\..\engines\kyra
USERINCLUDE ..\..\..\..\engines
USERINCLUDE ..\..\..\.. ..\..\..\..\gui ..\..\..\..\audio ..\src
-SYSTEMINCLUDE \epoc32\include \epoc32\include\libc ..\src
+
+SYSTEMINCLUDE \epoc32\include\freetype
+SYSTEMINCLUDE \epoc32\include\mpeg2dec
+SYSTEMINCLUDE \epoc32\include\jpeg
+SYSTEMINCLUDE \epoc32\include\png
+SYSTEMINCLUDE \epoc32\include\ESDL
+SYSTEMINCLUDE \epoc32\include\ZLIB // before \epoc32\include because symbian already has older version
+SYSTEMINCLUDE \epoc32\include\libc
+SYSTEMINCLUDE \epoc32\include\theora
+SYSTEMINCLUDE \epoc32\include\tremor
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE ..\src // for portdefs.h
diff --git a/backends/platform/symbian/mmp/scummvm_lastexpress.mmp.in b/backends/platform/symbian/mmp/scummvm_lastexpress.mmp.in
index fe2ebdfa1b..8e0b3026c7 100644
--- a/backends/platform/symbian/mmp/scummvm_lastexpress.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_lastexpress.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2014 The ScummVM Team
+ * Copyright (C) 2005-2013 The ScummVM project
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
@@ -57,5 +57,15 @@ SOURCEPATH ..\..\..\..\engines\lastexpress
USERINCLUDE ..\..\..\..\engines
USERINCLUDE ..\..\..\.. ..\..\..\..\gui ..\..\..\..\audio ..\src
+
+SYSTEMINCLUDE \epoc32\include\freetype
+SYSTEMINCLUDE \epoc32\include\mpeg2dec
+SYSTEMINCLUDE \epoc32\include\jpeg
+SYSTEMINCLUDE \epoc32\include\png
+SYSTEMINCLUDE \epoc32\include\ESDL
SYSTEMINCLUDE \epoc32\include\ZLIB // before \epoc32\include because symbian already has older version
-SYSTEMINCLUDE \epoc32\include \epoc32\include\libc ..\src
+SYSTEMINCLUDE \epoc32\include\libc
+SYSTEMINCLUDE \epoc32\include\theora
+SYSTEMINCLUDE \epoc32\include\tremor
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE ..\src // for portdefs.h
diff --git a/backends/platform/symbian/mmp/scummvm_lure.mmp.in b/backends/platform/symbian/mmp/scummvm_lure.mmp.in
index f8b42bf337..89c93d058d 100644
--- a/backends/platform/symbian/mmp/scummvm_lure.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_lure.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2014 The ScummVM Team
+ * Copyright (C) 2005-2013 The ScummVM project
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
@@ -57,4 +57,15 @@ SOURCEPATH ..\..\..\..\engines\lure
USERINCLUDE ..\..\..\..\engines
USERINCLUDE ..\..\..\.. ..\..\..\..\gui ..\..\..\..\audio ..\src
-SYSTEMINCLUDE \epoc32\include \epoc32\include\libc ..\src
+
+SYSTEMINCLUDE \epoc32\include\freetype
+SYSTEMINCLUDE \epoc32\include\mpeg2dec
+SYSTEMINCLUDE \epoc32\include\jpeg
+SYSTEMINCLUDE \epoc32\include\png
+SYSTEMINCLUDE \epoc32\include\ESDL
+SYSTEMINCLUDE \epoc32\include\ZLIB // before \epoc32\include because symbian already has older version
+SYSTEMINCLUDE \epoc32\include\libc
+SYSTEMINCLUDE \epoc32\include\theora
+SYSTEMINCLUDE \epoc32\include\tremor
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE ..\src // for portdefs.h
diff --git a/backends/platform/symbian/mmp/scummvm_m4.mmp.in b/backends/platform/symbian/mmp/scummvm_m4.mmp.in
index 05395c1816..b3024c93c3 100644
--- a/backends/platform/symbian/mmp/scummvm_m4.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_m4.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2014 The ScummVM Team
+ * Copyright (C) 2005-2013 The ScummVM project
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
@@ -57,5 +57,15 @@ SOURCEPATH ..\..\..\..\engines\m4
USERINCLUDE ..\..\..\..\engines
USERINCLUDE ..\..\..\.. ..\..\..\..\gui ..\..\..\..\audio ..\src
+
+SYSTEMINCLUDE \epoc32\include\freetype
+SYSTEMINCLUDE \epoc32\include\mpeg2dec
+SYSTEMINCLUDE \epoc32\include\jpeg
+SYSTEMINCLUDE \epoc32\include\png
+SYSTEMINCLUDE \epoc32\include\ESDL
SYSTEMINCLUDE \epoc32\include\ZLIB // before \epoc32\include because symbian already has older version
-SYSTEMINCLUDE \epoc32\include \epoc32\include\libc ..\src
+SYSTEMINCLUDE \epoc32\include\libc
+SYSTEMINCLUDE \epoc32\include\theora
+SYSTEMINCLUDE \epoc32\include\tremor
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE ..\src // for portdefs.h
diff --git a/backends/platform/symbian/mmp/scummvm_made.mmp.in b/backends/platform/symbian/mmp/scummvm_made.mmp.in
index b0a0e7d34c..d4a63f8d87 100644
--- a/backends/platform/symbian/mmp/scummvm_made.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_made.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2014 The ScummVM Team
+ * Copyright (C) 2005-2013 The ScummVM project
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
@@ -57,5 +57,16 @@ SOURCEPATH ..\..\..\..\engines\made
USERINCLUDE ..\..\..\..\engines
USERINCLUDE ..\..\..\.. ..\..\..\..\gui ..\..\..\..\audio ..\src
+
+SYSTEMINCLUDE \epoc32\include\freetype
+SYSTEMINCLUDE \epoc32\include\mpeg2dec
+SYSTEMINCLUDE \epoc32\include\jpeg
+SYSTEMINCLUDE \epoc32\include\png
+SYSTEMINCLUDE \epoc32\include\ESDL
SYSTEMINCLUDE \epoc32\include\ZLIB // before \epoc32\include because symbian already has older version
-SYSTEMINCLUDE \epoc32\include \epoc32\include\libc ..\src
+SYSTEMINCLUDE \epoc32\include\libc
+SYSTEMINCLUDE \epoc32\include\theora
+SYSTEMINCLUDE \epoc32\include\tremor
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE ..\src // for portdefs.h
+
diff --git a/backends/platform/symbian/mmp/scummvm_mohawk.mmp.in b/backends/platform/symbian/mmp/scummvm_mohawk.mmp.in
index 005b5f873e..e9175593ec 100644
--- a/backends/platform/symbian/mmp/scummvm_mohawk.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_mohawk.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2014 The ScummVM Team
+ * Copyright (C) 2005-2013 The ScummVM project
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
@@ -76,5 +76,15 @@ SOURCEPATH ..\..\..\..\engines\mohawk
USERINCLUDE ..\..\..\..\engines
USERINCLUDE ..\..\..\.. ..\..\..\..\gui ..\..\..\..\audio ..\src
+
+SYSTEMINCLUDE \epoc32\include\freetype
+SYSTEMINCLUDE \epoc32\include\mpeg2dec
+SYSTEMINCLUDE \epoc32\include\jpeg
+SYSTEMINCLUDE \epoc32\include\png
+SYSTEMINCLUDE \epoc32\include\ESDL
SYSTEMINCLUDE \epoc32\include\ZLIB // before \epoc32\include because symbian already has older version
-SYSTEMINCLUDE \epoc32\include \epoc32\include\libc ..\src
+SYSTEMINCLUDE \epoc32\include\libc
+SYSTEMINCLUDE \epoc32\include\theora
+SYSTEMINCLUDE \epoc32\include\tremor
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE ..\src // for portdefs.h
diff --git a/backends/platform/symbian/mmp/scummvm_mortevielle.mmp.in b/backends/platform/symbian/mmp/scummvm_mortevielle.mmp.in
index 90af4cb835..f118ddbef0 100644
--- a/backends/platform/symbian/mmp/scummvm_mortevielle.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_mortevielle.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2014 The ScummVM Team
+ * Copyright (C) 2005-2013 The ScummVM project
* Copyright (C) 2013 Strizniou Fedor
*
* ScummVM is the legal property of its developers, whose names
@@ -58,5 +58,15 @@ SOURCEPATH ..\..\..\..\engines\mortevielle
USERINCLUDE ..\..\..\..\engines
USERINCLUDE ..\..\..\.. ..\..\..\..\gui ..\..\..\..\audio ..\src
+
+SYSTEMINCLUDE \epoc32\include\freetype
+SYSTEMINCLUDE \epoc32\include\mpeg2dec
+SYSTEMINCLUDE \epoc32\include\jpeg
+SYSTEMINCLUDE \epoc32\include\png
+SYSTEMINCLUDE \epoc32\include\ESDL
SYSTEMINCLUDE \epoc32\include\ZLIB // before \epoc32\include because symbian already has older version
-SYSTEMINCLUDE \epoc32\include \epoc32\include\libc ..\src
+SYSTEMINCLUDE \epoc32\include\libc
+SYSTEMINCLUDE \epoc32\include\theora
+SYSTEMINCLUDE \epoc32\include\tremor
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE ..\src // for portdefs.h
diff --git a/backends/platform/symbian/mmp/scummvm_neverhood.mmp.in b/backends/platform/symbian/mmp/scummvm_neverhood.mmp.in
index b65f0f6ab6..a57161577f 100644
--- a/backends/platform/symbian/mmp/scummvm_neverhood.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_neverhood.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2014 The ScummVM Team
+ * Copyright (C) 2005-2013 The ScummVM project
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
@@ -57,5 +57,15 @@ SOURCEPATH ..\..\..\..\engines\neverhood
USERINCLUDE ..\..\..\..\engines
USERINCLUDE ..\..\..\.. ..\..\..\..\gui ..\..\..\..\audio ..\src
+
+SYSTEMINCLUDE \epoc32\include\freetype
+SYSTEMINCLUDE \epoc32\include\mpeg2dec
+SYSTEMINCLUDE \epoc32\include\jpeg
+SYSTEMINCLUDE \epoc32\include\png
+SYSTEMINCLUDE \epoc32\include\ESDL
SYSTEMINCLUDE \epoc32\include\ZLIB // before \epoc32\include because symbian already has older version
-SYSTEMINCLUDE \epoc32\include \epoc32\include\libc ..\src
+SYSTEMINCLUDE \epoc32\include\libc
+SYSTEMINCLUDE \epoc32\include\theora
+SYSTEMINCLUDE \epoc32\include\tremor
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE ..\src // for portdefs.h
diff --git a/backends/platform/symbian/mmp/scummvm_parallaction.mmp.in b/backends/platform/symbian/mmp/scummvm_parallaction.mmp.in
index 92d916224e..cefdd1b282 100644
--- a/backends/platform/symbian/mmp/scummvm_parallaction.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_parallaction.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2014 The ScummVM Team
+ * Copyright (C) 2005-2013 The ScummVM project
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
@@ -57,5 +57,15 @@ SOURCEPATH ..\..\..\..\engines\parallaction
USERINCLUDE ..\..\..\..\engines
USERINCLUDE ..\..\..\.. ..\..\..\..\gui ..\..\..\..\audio ..\src
+
+SYSTEMINCLUDE \epoc32\include\freetype
+SYSTEMINCLUDE \epoc32\include\mpeg2dec
+SYSTEMINCLUDE \epoc32\include\jpeg
+SYSTEMINCLUDE \epoc32\include\png
+SYSTEMINCLUDE \epoc32\include\ESDL
SYSTEMINCLUDE \epoc32\include\ZLIB // before \epoc32\include because symbian already has older version
-SYSTEMINCLUDE \epoc32\include \epoc32\include\libc ..\src
+SYSTEMINCLUDE \epoc32\include\libc
+SYSTEMINCLUDE \epoc32\include\theora
+SYSTEMINCLUDE \epoc32\include\tremor
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE ..\src // for portdefs.h
diff --git a/backends/platform/symbian/mmp/scummvm_pegasus.mmp.in b/backends/platform/symbian/mmp/scummvm_pegasus.mmp.in
index 66863f2d74..68b2c12774 100644
--- a/backends/platform/symbian/mmp/scummvm_pegasus.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_pegasus.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2014 The ScummVM Team
+ * Copyright (C) 2005-2013 The ScummVM project
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
@@ -57,5 +57,15 @@ SOURCEPATH ..\..\..\..\engines\PEGASUS
USERINCLUDE ..\..\..\..\engines
USERINCLUDE ..\..\..\.. ..\..\..\..\gui ..\..\..\..\audio ..\src
+
+SYSTEMINCLUDE \epoc32\include\freetype
+SYSTEMINCLUDE \epoc32\include\mpeg2dec
+SYSTEMINCLUDE \epoc32\include\jpeg
+SYSTEMINCLUDE \epoc32\include\png
+SYSTEMINCLUDE \epoc32\include\ESDL
SYSTEMINCLUDE \epoc32\include\ZLIB // before \epoc32\include because symbian already has older version
-SYSTEMINCLUDE \epoc32\include \epoc32\include\libc ..\src
+SYSTEMINCLUDE \epoc32\include\libc
+SYSTEMINCLUDE \epoc32\include\theora
+SYSTEMINCLUDE \epoc32\include\tremor
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE ..\src // for portdefs.h \ No newline at end of file
diff --git a/backends/platform/symbian/mmp/scummvm_queen.mmp.in b/backends/platform/symbian/mmp/scummvm_queen.mmp.in
index 3d8cfc1949..94835aae90 100644
--- a/backends/platform/symbian/mmp/scummvm_queen.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_queen.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2014 The ScummVM Team
+ * Copyright (C) 2005-2013 The ScummVM project
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
@@ -57,4 +57,15 @@ SOURCEPATH ..\..\..\..\engines\queen
USERINCLUDE ..\..\..\..\engines
USERINCLUDE ..\..\..\.. ..\..\..\..\gui ..\..\..\..\audio ..\src
-SYSTEMINCLUDE \epoc32\include \epoc32\include\libc ..\src
+
+SYSTEMINCLUDE \epoc32\include\freetype
+SYSTEMINCLUDE \epoc32\include\mpeg2dec
+SYSTEMINCLUDE \epoc32\include\jpeg
+SYSTEMINCLUDE \epoc32\include\png
+SYSTEMINCLUDE \epoc32\include\ESDL
+SYSTEMINCLUDE \epoc32\include\ZLIB // before \epoc32\include because symbian already has older version
+SYSTEMINCLUDE \epoc32\include\libc
+SYSTEMINCLUDE \epoc32\include\theora
+SYSTEMINCLUDE \epoc32\include\tremor
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE ..\src // for portdefs.h
diff --git a/backends/platform/symbian/mmp/scummvm_saga.mmp.in b/backends/platform/symbian/mmp/scummvm_saga.mmp.in
index 9ca633972b..77bf839efe 100644
--- a/backends/platform/symbian/mmp/scummvm_saga.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_saga.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2014 The ScummVM Team
+ * Copyright (C) 2005-2013 The ScummVM project
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
@@ -69,4 +69,15 @@ SOURCEPATH ..\..\..\..\engines\saga
USERINCLUDE ..\..\..\..\engines
USERINCLUDE ..\..\..\.. ..\..\..\..\gui ..\..\..\..\audio ..\src
-SYSTEMINCLUDE \epoc32\include \epoc32\include\libc ..\src
+
+SYSTEMINCLUDE \epoc32\include\freetype
+SYSTEMINCLUDE \epoc32\include\mpeg2dec
+SYSTEMINCLUDE \epoc32\include\jpeg
+SYSTEMINCLUDE \epoc32\include\png
+SYSTEMINCLUDE \epoc32\include\ESDL
+SYSTEMINCLUDE \epoc32\include\ZLIB // before \epoc32\include because symbian already has older version
+SYSTEMINCLUDE \epoc32\include\libc
+SYSTEMINCLUDE \epoc32\include\theora
+SYSTEMINCLUDE \epoc32\include\tremor
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE ..\src // for portdefs.h
diff --git a/backends/platform/symbian/mmp/scummvm_sci.mmp.in b/backends/platform/symbian/mmp/scummvm_sci.mmp.in
index 109b277667..d08501e471 100644
--- a/backends/platform/symbian/mmp/scummvm_sci.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_sci.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2014 The ScummVM Team
+ * Copyright (C) 2005-2013 The ScummVM project
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
@@ -65,5 +65,15 @@ SOURCEPATH ..\..\..\..\engines\sci
USERINCLUDE ..\..\..\..\engines
USERINCLUDE ..\..\..\.. ..\..\..\..\gui ..\..\..\..\audio ..\src
+
+SYSTEMINCLUDE \epoc32\include\freetype
+SYSTEMINCLUDE \epoc32\include\mpeg2dec
+SYSTEMINCLUDE \epoc32\include\jpeg
+SYSTEMINCLUDE \epoc32\include\png
+SYSTEMINCLUDE \epoc32\include\ESDL
SYSTEMINCLUDE \epoc32\include\ZLIB // before \epoc32\include because symbian already has older version
-SYSTEMINCLUDE \epoc32\include \epoc32\include\libc ..\src
+SYSTEMINCLUDE \epoc32\include\libc
+SYSTEMINCLUDE \epoc32\include\theora
+SYSTEMINCLUDE \epoc32\include\tremor
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE ..\src // for portdefs.h
diff --git a/backends/platform/symbian/mmp/scummvm_scumm.mmp.in b/backends/platform/symbian/mmp/scummvm_scumm.mmp.in
index cc008766a8..a11dd071d3 100644
--- a/backends/platform/symbian/mmp/scummvm_scumm.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_scumm.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2014 The ScummVM Team
+ * Copyright (C) 2005-2013 The ScummVM project
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
@@ -81,7 +81,14 @@ SOURCE smush/codec47ARM.s // ARM version: add ASM routines
USERINCLUDE ..\..\..\..\engines ..\..\..\..\engines\scumm\smush ..\..\..\..\engines\scumm\insane
USERINCLUDE ..\..\..\.. ..\..\..\..\gui ..\..\..\..\audio ..\src
+SYSTEMINCLUDE \epoc32\include\freetype
+SYSTEMINCLUDE \epoc32\include\mpeg2dec
+SYSTEMINCLUDE \epoc32\include\jpeg
+SYSTEMINCLUDE \epoc32\include\png
+SYSTEMINCLUDE \epoc32\include\ESDL
SYSTEMINCLUDE \epoc32\include\ZLIB // before \epoc32\include because symbian already has older version
SYSTEMINCLUDE \epoc32\include\libc
+SYSTEMINCLUDE \epoc32\include\theora
+SYSTEMINCLUDE \epoc32\include\tremor
SYSTEMINCLUDE \epoc32\include
SYSTEMINCLUDE ..\src // for portdefs.h
diff --git a/backends/platform/symbian/mmp/scummvm_sky.mmp.in b/backends/platform/symbian/mmp/scummvm_sky.mmp.in
index 0ab35dffd7..37fdc89f99 100644
--- a/backends/platform/symbian/mmp/scummvm_sky.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_sky.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2014 The ScummVM Team
+ * Copyright (C) 2005-2013 The ScummVM project
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
@@ -57,4 +57,15 @@ SOURCEPATH ..\..\..\..\engines\sky
USERINCLUDE ..\..\..\..\engines ..\..\..\..\engines\sky\music
USERINCLUDE ..\..\..\.. ..\..\..\..\gui ..\..\..\..\audio ..\src
-SYSTEMINCLUDE \epoc32\include \epoc32\include\libc ..\src
+
+SYSTEMINCLUDE \epoc32\include\freetype
+SYSTEMINCLUDE \epoc32\include\mpeg2dec
+SYSTEMINCLUDE \epoc32\include\jpeg
+SYSTEMINCLUDE \epoc32\include\png
+SYSTEMINCLUDE \epoc32\include\ESDL
+SYSTEMINCLUDE \epoc32\include\ZLIB // before \epoc32\include because symbian already has older version
+SYSTEMINCLUDE \epoc32\include\libc
+SYSTEMINCLUDE \epoc32\include\theora
+SYSTEMINCLUDE \epoc32\include\tremor
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE ..\src // for portdefs.h
diff --git a/backends/platform/symbian/mmp/scummvm_sword1.mmp.in b/backends/platform/symbian/mmp/scummvm_sword1.mmp.in
index 3b709fe1de..352cbe59f0 100644
--- a/backends/platform/symbian/mmp/scummvm_sword1.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_sword1.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2014 The ScummVM Team
+ * Copyright (C) 2005-2013 The ScummVM project
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
@@ -57,4 +57,15 @@ SOURCEPATH ..\..\..\..\engines\sword1
USERINCLUDE ..\..\..\..\engines
USERINCLUDE ..\..\..\.. ..\..\..\..\gui ..\..\..\..\audio ..\src
-SYSTEMINCLUDE \epoc32\include \epoc32\include\libc ..\src
+
+SYSTEMINCLUDE \epoc32\include\freetype
+SYSTEMINCLUDE \epoc32\include\mpeg2dec
+SYSTEMINCLUDE \epoc32\include\jpeg
+SYSTEMINCLUDE \epoc32\include\png
+SYSTEMINCLUDE \epoc32\include\ESDL
+SYSTEMINCLUDE \epoc32\include\ZLIB // before \epoc32\include because symbian already has older version
+SYSTEMINCLUDE \epoc32\include\libc
+SYSTEMINCLUDE \epoc32\include\theora
+SYSTEMINCLUDE \epoc32\include\tremor
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE ..\src // for portdefs.h
diff --git a/backends/platform/symbian/mmp/scummvm_sword2.mmp.in b/backends/platform/symbian/mmp/scummvm_sword2.mmp.in
index ec5ccaefc9..7b79bf7f5c 100644
--- a/backends/platform/symbian/mmp/scummvm_sword2.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_sword2.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2014 The ScummVM Team
+ * Copyright (C) 2005-2013 The ScummVM project
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
@@ -57,4 +57,15 @@ SOURCEPATH ..\..\..\..\engines\sword2
USERINCLUDE ..\..\..\..\engines
USERINCLUDE ..\..\..\.. ..\..\..\..\gui ..\..\..\..\audio ..\src
-SYSTEMINCLUDE \epoc32\include \epoc32\include\libc ..\src
+
+SYSTEMINCLUDE \epoc32\include\freetype
+SYSTEMINCLUDE \epoc32\include\mpeg2dec
+SYSTEMINCLUDE \epoc32\include\jpeg
+SYSTEMINCLUDE \epoc32\include\png
+SYSTEMINCLUDE \epoc32\include\ESDL
+SYSTEMINCLUDE \epoc32\include\ZLIB // before \epoc32\include because symbian already has older version
+SYSTEMINCLUDE \epoc32\include\libc
+SYSTEMINCLUDE \epoc32\include\theora
+SYSTEMINCLUDE \epoc32\include\tremor
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE ..\src // for portdefs.h
diff --git a/backends/platform/symbian/mmp/scummvm_sword25.mmp.in b/backends/platform/symbian/mmp/scummvm_sword25.mmp.in
index 62907f9245..4159350bce 100644
--- a/backends/platform/symbian/mmp/scummvm_sword25.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_sword25.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2014 The ScummVM Team
+ * Copyright (C) 2005-2013 The ScummVM project
* Copyright (C) 2013 Strizniou Fedor
*
* ScummVM is the legal property of its developers, whose names
@@ -59,5 +59,15 @@ SOURCEPATH ..\..\..\..\engines\sword25
USERINCLUDE ..\..\..\..\engines
USERINCLUDE ..\..\..\.. ..\..\..\..\gui ..\..\..\..\audio ..\src
USERINCLUDE ..\..\..\..\engines\sword25\util\lua ..\..\..\..\engines\sword25\util\pluto
+
+SYSTEMINCLUDE \epoc32\include\freetype
+SYSTEMINCLUDE \epoc32\include\mpeg2dec
+SYSTEMINCLUDE \epoc32\include\jpeg
+SYSTEMINCLUDE \epoc32\include\png
+SYSTEMINCLUDE \epoc32\include\ESDL
SYSTEMINCLUDE \epoc32\include\ZLIB // before \epoc32\include because symbian already has older version
-SYSTEMINCLUDE \epoc32\include \epoc32\include\libc ..\src
+SYSTEMINCLUDE \epoc32\include\libc
+SYSTEMINCLUDE \epoc32\include\theora
+SYSTEMINCLUDE \epoc32\include\tremor
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE ..\src // for portdefs.h
diff --git a/backends/platform/symbian/mmp/scummvm_teenagent.mmp.in b/backends/platform/symbian/mmp/scummvm_teenagent.mmp.in
index 73a86b9913..332b9f20ac 100644
--- a/backends/platform/symbian/mmp/scummvm_teenagent.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_teenagent.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2014 The ScummVM Team
+ * Copyright (C) 2005-2013 The ScummVM project
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
@@ -57,5 +57,15 @@ SOURCEPATH ..\..\..\..\engines\teenagent
USERINCLUDE ..\..\..\..\engines
USERINCLUDE ..\..\..\.. ..\..\..\..\gui ..\..\..\..\audio ..\src
+
+SYSTEMINCLUDE \epoc32\include\freetype
+SYSTEMINCLUDE \epoc32\include\mpeg2dec
+SYSTEMINCLUDE \epoc32\include\jpeg
+SYSTEMINCLUDE \epoc32\include\png
+SYSTEMINCLUDE \epoc32\include\ESDL
SYSTEMINCLUDE \epoc32\include\ZLIB // before \epoc32\include because symbian already has older version
-SYSTEMINCLUDE \epoc32\include \epoc32\include\libc ..\src
+SYSTEMINCLUDE \epoc32\include\libc
+SYSTEMINCLUDE \epoc32\include\theora
+SYSTEMINCLUDE \epoc32\include\tremor
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE ..\src // for portdefs.h
diff --git a/backends/platform/symbian/mmp/scummvm_testbed.mmp.in b/backends/platform/symbian/mmp/scummvm_testbed.mmp.in
index 07d1df625d..20d3789a31 100644
--- a/backends/platform/symbian/mmp/scummvm_testbed.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_testbed.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2014 The ScummVM Team
+ * Copyright (C) 2005-2013 The ScummVM project
* Copyright (C) 2013 Strizniou Fedor
*
* ScummVM is the legal property of its developers, whose names
@@ -58,5 +58,15 @@ SOURCEPATH ..\..\..\..\engines\testbed
USERINCLUDE ..\..\..\..\engines
USERINCLUDE ..\..\..\.. ..\..\..\..\gui ..\..\..\..\audio ..\src
+
+SYSTEMINCLUDE \epoc32\include\freetype
+SYSTEMINCLUDE \epoc32\include\mpeg2dec
+SYSTEMINCLUDE \epoc32\include\jpeg
+SYSTEMINCLUDE \epoc32\include\png
+SYSTEMINCLUDE \epoc32\include\ESDL
SYSTEMINCLUDE \epoc32\include\ZLIB // before \epoc32\include because symbian already has older version
-SYSTEMINCLUDE \epoc32\include \epoc32\include\libc ..\src
+SYSTEMINCLUDE \epoc32\include\libc
+SYSTEMINCLUDE \epoc32\include\theora
+SYSTEMINCLUDE \epoc32\include\tremor
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE ..\src // for portdefs.h
diff --git a/backends/platform/symbian/mmp/scummvm_tinsel.mmp.in b/backends/platform/symbian/mmp/scummvm_tinsel.mmp.in
index 6436aaaa9b..15c5850cee 100644
--- a/backends/platform/symbian/mmp/scummvm_tinsel.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_tinsel.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2014 The ScummVM Team
+ * Copyright (C) 2005-2013 The ScummVM project
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
@@ -57,4 +57,15 @@ SOURCEPATH ..\..\..\..\engines\tinsel
USERINCLUDE ..\..\..\..\engines
USERINCLUDE ..\..\..\.. ..\..\..\..\gui ..\..\..\..\audio ..\src
-SYSTEMINCLUDE \epoc32\include \epoc32\include\libc ..\src
+
+SYSTEMINCLUDE \epoc32\include\freetype
+SYSTEMINCLUDE \epoc32\include\mpeg2dec
+SYSTEMINCLUDE \epoc32\include\jpeg
+SYSTEMINCLUDE \epoc32\include\png
+SYSTEMINCLUDE \epoc32\include\ESDL
+SYSTEMINCLUDE \epoc32\include\ZLIB // before \epoc32\include because symbian already has older version
+SYSTEMINCLUDE \epoc32\include\libc
+SYSTEMINCLUDE \epoc32\include\theora
+SYSTEMINCLUDE \epoc32\include\tremor
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE ..\src // for portdefs.h \ No newline at end of file
diff --git a/backends/platform/symbian/mmp/scummvm_toltecs.mmp.in b/backends/platform/symbian/mmp/scummvm_toltecs.mmp.in
index 8685f80f71..df75290d81 100644
--- a/backends/platform/symbian/mmp/scummvm_toltecs.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_toltecs.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2014 The ScummVM Team
+ * Copyright (C) 2005-2013 The ScummVM project
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
@@ -57,5 +57,15 @@ SOURCEPATH ..\..\..\..\engines\TOLTECS
USERINCLUDE ..\..\..\..\engines
USERINCLUDE ..\..\..\.. ..\..\..\..\gui ..\..\..\..\audio ..\src
+
+SYSTEMINCLUDE \epoc32\include\freetype
+SYSTEMINCLUDE \epoc32\include\mpeg2dec
+SYSTEMINCLUDE \epoc32\include\jpeg
+SYSTEMINCLUDE \epoc32\include\png
+SYSTEMINCLUDE \epoc32\include\ESDL
SYSTEMINCLUDE \epoc32\include\ZLIB // before \epoc32\include because symbian already has older version
-SYSTEMINCLUDE \epoc32\include \epoc32\include\libc ..\src
+SYSTEMINCLUDE \epoc32\include\libc
+SYSTEMINCLUDE \epoc32\include\theora
+SYSTEMINCLUDE \epoc32\include\tremor
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE ..\src // for portdefs.h
diff --git a/backends/platform/symbian/mmp/scummvm_tony.mmp.in b/backends/platform/symbian/mmp/scummvm_tony.mmp.in
index 01d4712cbb..bcdbc1c979 100644
--- a/backends/platform/symbian/mmp/scummvm_tony.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_tony.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2014 The ScummVM Team
+ * Copyright (C) 2005-2013 The ScummVM project
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
@@ -57,5 +57,15 @@ SOURCEPATH ..\..\..\..\engines\TONY
USERINCLUDE ..\..\..\..\engines
USERINCLUDE ..\..\..\.. ..\..\..\..\gui ..\..\..\..\audio ..\src
+
+SYSTEMINCLUDE \epoc32\include\freetype
+SYSTEMINCLUDE \epoc32\include\mpeg2dec
+SYSTEMINCLUDE \epoc32\include\jpeg
+SYSTEMINCLUDE \epoc32\include\png
+SYSTEMINCLUDE \epoc32\include\ESDL
SYSTEMINCLUDE \epoc32\include\ZLIB // before \epoc32\include because symbian already has older version
-SYSTEMINCLUDE \epoc32\include \epoc32\include\libc ..\src
+SYSTEMINCLUDE \epoc32\include\libc
+SYSTEMINCLUDE \epoc32\include\theora
+SYSTEMINCLUDE \epoc32\include\tremor
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE ..\src // for portdefs.h
diff --git a/backends/platform/symbian/mmp/scummvm_toon.mmp.in b/backends/platform/symbian/mmp/scummvm_toon.mmp.in
index 2cddddd777..7bfec38dc5 100644
--- a/backends/platform/symbian/mmp/scummvm_toon.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_toon.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2014 The ScummVM Team
+ * Copyright (C) 2005-2013 The ScummVM project
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
@@ -57,5 +57,15 @@ SOURCEPATH ..\..\..\..\engines\toon
USERINCLUDE ..\..\..\..\engines
USERINCLUDE ..\..\..\.. ..\..\..\..\gui ..\..\..\..\audio ..\src
+
+SYSTEMINCLUDE \epoc32\include\freetype
+SYSTEMINCLUDE \epoc32\include\mpeg2dec
+SYSTEMINCLUDE \epoc32\include\jpeg
+SYSTEMINCLUDE \epoc32\include\png
+SYSTEMINCLUDE \epoc32\include\ESDL
SYSTEMINCLUDE \epoc32\include\ZLIB // before \epoc32\include because symbian already has older version
-SYSTEMINCLUDE \epoc32\include \epoc32\include\libc ..\src
+SYSTEMINCLUDE \epoc32\include\libc
+SYSTEMINCLUDE \epoc32\include\theora
+SYSTEMINCLUDE \epoc32\include\tremor
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE ..\src // for portdefs.h
diff --git a/backends/platform/symbian/mmp/scummvm_touche.mmp.in b/backends/platform/symbian/mmp/scummvm_touche.mmp.in
index 24ca777c70..407e275ae3 100644
--- a/backends/platform/symbian/mmp/scummvm_touche.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_touche.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2014 The ScummVM Team
+ * Copyright (C) 2005-2013 The ScummVM project
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
@@ -57,5 +57,15 @@ SOURCEPATH ..\..\..\..\engines\touche
USERINCLUDE ..\..\..\..\engines
USERINCLUDE ..\..\..\.. ..\..\..\..\gui ..\..\..\..\audio ..\src
+
+SYSTEMINCLUDE \epoc32\include\freetype
+SYSTEMINCLUDE \epoc32\include\mpeg2dec
+SYSTEMINCLUDE \epoc32\include\jpeg
+SYSTEMINCLUDE \epoc32\include\png
+SYSTEMINCLUDE \epoc32\include\ESDL
SYSTEMINCLUDE \epoc32\include\ZLIB // before \epoc32\include because symbian already has older version
-SYSTEMINCLUDE \epoc32\include \epoc32\include\libc ..\src
+SYSTEMINCLUDE \epoc32\include\libc
+SYSTEMINCLUDE \epoc32\include\theora
+SYSTEMINCLUDE \epoc32\include\tremor
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE ..\src // for portdefs.h
diff --git a/backends/platform/symbian/mmp/scummvm_tsage.mmp.in b/backends/platform/symbian/mmp/scummvm_tsage.mmp.in
index d017be593b..cd5c5ec7b9 100644
--- a/backends/platform/symbian/mmp/scummvm_tsage.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_tsage.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2014 The ScummVM Team
+ * Copyright (C) 2005-2013 The ScummVM project
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
@@ -57,5 +57,15 @@ SOURCEPATH ..\..\..\..\engines\tsage
USERINCLUDE ..\..\..\..\engines
USERINCLUDE ..\..\..\.. ..\..\..\..\gui ..\..\..\..\audio ..\src
+
+SYSTEMINCLUDE \epoc32\include\freetype
+SYSTEMINCLUDE \epoc32\include\mpeg2dec
+SYSTEMINCLUDE \epoc32\include\jpeg
+SYSTEMINCLUDE \epoc32\include\png
+SYSTEMINCLUDE \epoc32\include\ESDL
SYSTEMINCLUDE \epoc32\include\ZLIB // before \epoc32\include because symbian already has older version
-SYSTEMINCLUDE \epoc32\include \epoc32\include\libc ..\src
+SYSTEMINCLUDE \epoc32\include\libc
+SYSTEMINCLUDE \epoc32\include\theora
+SYSTEMINCLUDE \epoc32\include\tremor
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE ..\src // for portdefs.h
diff --git a/backends/platform/symbian/mmp/scummvm_tucker.mmp.in b/backends/platform/symbian/mmp/scummvm_tucker.mmp.in
index f30bbfc469..c457dd4083 100644
--- a/backends/platform/symbian/mmp/scummvm_tucker.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_tucker.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2014 The ScummVM Team
+ * Copyright (C) 2005-2013 The ScummVM project
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
@@ -57,5 +57,15 @@ SOURCEPATH ..\..\..\..\engines\tucker
USERINCLUDE ..\..\..\..\engines
USERINCLUDE ..\..\..\.. ..\..\..\..\gui ..\..\..\..\audio ..\src
+
+SYSTEMINCLUDE \epoc32\include\freetype
+SYSTEMINCLUDE \epoc32\include\mpeg2dec
+SYSTEMINCLUDE \epoc32\include\jpeg
+SYSTEMINCLUDE \epoc32\include\png
+SYSTEMINCLUDE \epoc32\include\ESDL
SYSTEMINCLUDE \epoc32\include\ZLIB // before \epoc32\include because symbian already has older version
-SYSTEMINCLUDE \epoc32\include \epoc32\include\libc ..\src
+SYSTEMINCLUDE \epoc32\include\libc
+SYSTEMINCLUDE \epoc32\include\theora
+SYSTEMINCLUDE \epoc32\include\tremor
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE ..\src // for portdefs.h
diff --git a/backends/platform/symbian/mmp/scummvm_wintermute.mmp.in b/backends/platform/symbian/mmp/scummvm_wintermute.mmp.in
index 5d26f36df5..a430f64847 100644
--- a/backends/platform/symbian/mmp/scummvm_wintermute.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_wintermute.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2014 The ScummVM Team
+ * Copyright (C) 2005-2013 The ScummVM project
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
@@ -57,5 +57,15 @@ SOURCEPATH ..\..\..\..\engines\wintermute
USERINCLUDE ..\..\..\..\engines
USERINCLUDE ..\..\..\.. ..\..\..\..\gui ..\..\..\..\audio ..\src
+
+SYSTEMINCLUDE \epoc32\include\freetype
+SYSTEMINCLUDE \epoc32\include\mpeg2dec
+SYSTEMINCLUDE \epoc32\include\jpeg
+SYSTEMINCLUDE \epoc32\include\png
+SYSTEMINCLUDE \epoc32\include\ESDL
SYSTEMINCLUDE \epoc32\include\ZLIB // before \epoc32\include because symbian already has older version
-SYSTEMINCLUDE \epoc32\include \epoc32\include\libc ..\src
+SYSTEMINCLUDE \epoc32\include\libc
+SYSTEMINCLUDE \epoc32\include\theora
+SYSTEMINCLUDE \epoc32\include\tremor
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE ..\src // for portdefs.h
diff --git a/backends/platform/symbian/mmp/scummvm_zvision.mmp.in b/backends/platform/symbian/mmp/scummvm_zvision.mmp.in
index a007f45f5b..f8448e0423 100644
--- a/backends/platform/symbian/mmp/scummvm_zvision.mmp.in
+++ b/backends/platform/symbian/mmp/scummvm_zvision.mmp.in
@@ -2,7 +2,7 @@
* Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
* Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
* Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
- * Copyright (C) 2005-2014 The ScummVM Team
+ * Copyright (C) 2005-2013 The ScummVM project
* Copyright (C) 2013 Strizniou Fedor
*
* ScummVM is the legal property of its developers, whose names
@@ -58,5 +58,14 @@ SOURCEPATH ..\..\..\..\engines\zvision
USERINCLUDE ..\..\..\..\engines
USERINCLUDE ..\..\..\.. ..\..\..\..\gui ..\..\..\..\audio ..\src
+SYSTEMINCLUDE \epoc32\include\freetype
+SYSTEMINCLUDE \epoc32\include\mpeg2dec
+SYSTEMINCLUDE \epoc32\include\jpeg
+SYSTEMINCLUDE \epoc32\include\png
+SYSTEMINCLUDE \epoc32\include\ESDL
SYSTEMINCLUDE \epoc32\include\ZLIB // before \epoc32\include because symbian already has older version
-SYSTEMINCLUDE \epoc32\include \epoc32\include\libc ..\src
+SYSTEMINCLUDE \epoc32\include\libc
+SYSTEMINCLUDE \epoc32\include\theora
+SYSTEMINCLUDE \epoc32\include\tremor
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE ..\src // for portdefs.h
diff --git a/backends/platform/tizen/system.cpp b/backends/platform/tizen/system.cpp
index 585eb206ea..a235456670 100644
--- a/backends/platform/tizen/system.cpp
+++ b/backends/platform/tizen/system.cpp
@@ -266,8 +266,8 @@ result TizenSystem::initModules() {
return E_OUT_OF_MEMORY;
}
- _graphicsManager = (GraphicsManager *)new TizenGraphicsManager(_appForm);
- if (!_graphicsManager || graphicsManager->Construct() != E_SUCCESS) {
+ _graphicsManager = new TizenGraphicsManager(_appForm);
+ if (!_graphicsManager || getGraphics()->Construct() != E_SUCCESS) {
return E_OUT_OF_MEMORY;
}
diff --git a/backends/platform/tizen/system.h b/backends/platform/tizen/system.h
index 1974055088..3f668baf34 100644
--- a/backends/platform/tizen/system.h
+++ b/backends/platform/tizen/system.h
@@ -73,7 +73,7 @@ public:
bool isClosing() { return _appForm->isClosing(); }
TizenGraphicsManager *getGraphics() {
- return (TizenGraphicsManager *)_graphicsManager;
+ return dynamic_cast<TizenGraphicsManager *>(_graphicsManager);
}
private:
diff --git a/backends/platform/wii/osystem_gfx.cpp b/backends/platform/wii/osystem_gfx.cpp
index 001cfea31e..bb91242f98 100644
--- a/backends/platform/wii/osystem_gfx.cpp
+++ b/backends/platform/wii/osystem_gfx.cpp
@@ -717,8 +717,8 @@ void OSystem_Wii::setMouseCursor(const void *buf, uint w, uint h, int hotspotX,
u16 *d = (u16 *) tmp;
for (u16 y = 0; y < h; ++y) {
for (u16 x = 0; x < w; ++x) {
- if (*s++ != _mouseKeyColor)
- *d++ |= 7 << 12;
+ if (*s++ == _mouseKeyColor)
+ *d++ &= ~(7 << 12);
else
d++;
}
diff --git a/backends/plugins/elf/version.cpp b/backends/plugins/elf/version.cpp
index 48e6acd58d..ac999e1d7c 100644
--- a/backends/plugins/elf/version.cpp
+++ b/backends/plugins/elf/version.cpp
@@ -23,6 +23,10 @@
#include "backends/plugins/elf/version.h"
#ifdef USE_ELF_LOADER
-const char *gScummVMPluginBuildDate __attribute__((visibility("hidden"))) =
- __DATE__ " " __TIME__ ;
+ #ifdef __PLAYSTATION2__
+ const char *gScummVMPluginBuildDate = "Git Master"; /* ScummVM Git Master */
+ #else
+ const char *gScummVMPluginBuildDate __attribute__((visibility("hidden"))) =
+ __DATE__ " " __TIME__ ;
+ #endif
#endif
diff --git a/base/version.cpp b/base/version.cpp
index 999e90a275..fba3554f67 100644
--- a/base/version.cpp
+++ b/base/version.cpp
@@ -56,9 +56,15 @@
* to properly work in exports (i.e. release tar balls etc.).
*/
const char *gScummVMVersion = SCUMMVM_VERSION;
+#ifdef __PLAYSTATION2__
+const char *gScummVMBuildDate = "Git Master"; /* ScummVM Git Master */
+const char *gScummVMVersionDate = SCUMMVM_VERSION " - PlayStation2";
+const char *gScummVMFullVersion = "ScummVM " SCUMMVM_VERSION " - PlayStation2";
+#else
const char *gScummVMBuildDate = __DATE__ " " __TIME__;
const char *gScummVMVersionDate = SCUMMVM_VERSION " (" __DATE__ " " __TIME__ ")";
const char *gScummVMFullVersion = "ScummVM " SCUMMVM_VERSION " (" __DATE__ " " __TIME__ ")";
+#endif
const char *gScummVMFeatures = ""
#ifdef TAINTED_BUILD
// TAINTED means the build contains engines/subengines not enabled by default
diff --git a/common/EventMapper.cpp b/common/EventMapper.cpp
index 84774742c6..30896d7514 100644
--- a/common/EventMapper.cpp
+++ b/common/EventMapper.cpp
@@ -37,11 +37,17 @@ List<Event> DefaultEventMapper::mapEvent(const Event &ev, EventSource *source) {
#ifdef ENABLE_VKEYBD
else if (ev.kbd.keycode == KEYCODE_F7 && ev.kbd.hasFlags(0)) {
mappedEvent.type = EVENT_VIRTUAL_KEYBOARD;
+
+ // Avoid blocking F7 events from engine.
+ addDelayedEvent(100, ev);
}
#endif
#ifdef ENABLE_KEYMAPPER
else if (ev.kbd.keycode == KEYCODE_F8 && ev.kbd.hasFlags(0)) {
mappedEvent.type = EVENT_KEYMAPPER_REMAP;
+
+ // Avoid blocking F8 events from engine.
+ addDelayedEvent(100, ev);
}
#endif
}
diff --git a/common/quicktime.cpp b/common/quicktime.cpp
index 6ab5a42b89..76880e1016 100644
--- a/common/quicktime.cpp
+++ b/common/quicktime.cpp
@@ -529,7 +529,7 @@ int QuickTimeParser::readSTSD(Atom atom) {
_fd->readByte(); _fd->readByte(); _fd->readByte(); // flags
uint32 entryCount = _fd->readUint32BE();
- track->sampleDescs.resize(entryCount);
+ track->sampleDescs.reserve(entryCount);
for (uint32 i = 0; i < entryCount; i++) { // Parsing Sample description table
Atom a = { 0, 0, 0 };
@@ -541,7 +541,7 @@ int QuickTimeParser::readSTSD(Atom atom) {
_fd->readUint16BE(); // reserved
_fd->readUint16BE(); // index
- track->sampleDescs[i] = readSampleDesc(track, format, size - 16);
+ track->sampleDescs.push_back(readSampleDesc(track, format, size - 16));
debug(0, "size=%d 4CC= %s codec_type=%d", size, tag2str(format), track->codecType);
@@ -692,8 +692,14 @@ int QuickTimeParser::readWAVE(Atom atom) {
if (atom.size > (1 << 30))
return -1;
- if (track->sampleDescs[0]->getCodecTag() == MKTAG('Q', 'D', 'M', '2')) // Read extra data for QDM2
- track->extraData = _fd->readStream(atom.size);
+ // We should only get here within an stsd atom
+ if (track->sampleDescs.empty())
+ return -1;
+
+ SampleDesc *sampleDesc = track->sampleDescs.back();
+
+ if (sampleDesc->getCodecTag() == MKTAG('Q', 'D', 'M', '2')) // Read extra data for QDM2
+ sampleDesc->_extraData = _fd->readStream(atom.size);
else if (atom.size > 8)
return readDefault(atom);
else
@@ -735,6 +741,12 @@ int QuickTimeParser::readESDS(Atom atom) {
Track *track = _tracks.back();
+ // We should only get here within an stsd atom
+ if (track->sampleDescs.empty())
+ return -1;
+
+ SampleDesc *sampleDesc = track->sampleDescs.back();
+
_fd->readUint32BE(); // version + flags
byte tag;
@@ -750,7 +762,7 @@ int QuickTimeParser::readESDS(Atom atom) {
if (tag != kMP4DecConfigDescTag)
return 0;
- track->objectTypeMP4 = _fd->readByte();
+ sampleDesc->_objectTypeMP4 = _fd->readByte();
_fd->readByte(); // stream type
_fd->readUint16BE(); _fd->readByte(); // buffer size
_fd->readUint32BE(); // max bitrate
@@ -761,9 +773,9 @@ int QuickTimeParser::readESDS(Atom atom) {
if (tag != kMP4DecSpecificDescTag)
return 0;
- track->extraData = _fd->readStream(length);
+ sampleDesc->_extraData = _fd->readStream(length);
- debug(0, "MPEG-4 object type = %02x", track->objectTypeMP4);
+ debug(0, "MPEG-4 object type = %02x", sampleDesc->_objectTypeMP4);
return 0;
}
@@ -773,8 +785,14 @@ int QuickTimeParser::readSMI(Atom atom) {
Track *track = _tracks.back();
+ // We should only get here within an stsd atom
+ if (track->sampleDescs.empty())
+ return -1;
+
+ SampleDesc *sampleDesc = track->sampleDescs.back();
+
// This atom just contains SVQ3 extra data
- track->extraData = _fd->readStream(atom.size);
+ sampleDesc->_extraData = _fd->readStream(atom.size);
return 0;
}
@@ -794,6 +812,12 @@ void QuickTimeParser::close() {
QuickTimeParser::SampleDesc::SampleDesc(Track *parentTrack, uint32 codecTag) {
_parentTrack = parentTrack;
_codecTag = codecTag;
+ _extraData = 0;
+ _objectTypeMP4 = 0;
+}
+
+QuickTimeParser::SampleDesc::~SampleDesc() {
+ delete _extraData;
}
QuickTimeParser::Track::Track() {
@@ -814,11 +838,9 @@ QuickTimeParser::Track::Track() {
codecType = CODEC_TYPE_MOV_OTHER;
editCount = 0;
editList = 0;
- extraData = 0;
frameCount = 0;
duration = 0;
startTime = 0;
- objectTypeMP4 = 0;
mediaDuration = 0;
}
@@ -829,7 +851,6 @@ QuickTimeParser::Track::~Track() {
delete[] sampleSizes;
delete[] keyframes;
delete[] editList;
- delete extraData;
for (uint32 i = 0; i < sampleDescs.size(); i++)
delete sampleDescs[i];
diff --git a/common/quicktime.h b/common/quicktime.h
index caa92578b1..f5fd578e3a 100644
--- a/common/quicktime.h
+++ b/common/quicktime.h
@@ -108,10 +108,13 @@ protected:
class SampleDesc {
public:
SampleDesc(Track *parentTrack, uint32 codecTag);
- virtual ~SampleDesc() {}
+ virtual ~SampleDesc();
uint32 getCodecTag() const { return _codecTag; }
+ SeekableReadStream *_extraData;
+ byte _objectTypeMP4;
+
protected:
Track *_parentTrack;
uint32 _codecTag;
@@ -150,16 +153,12 @@ protected:
uint32 editCount;
EditListEntry *editList;
- SeekableReadStream *extraData;
-
uint32 frameCount;
uint32 duration;
uint32 mediaDuration;
uint32 startTime;
Rational scaleFactorX;
Rational scaleFactorY;
-
- byte objectTypeMP4;
};
virtual SampleDesc *readSampleDesc(Track *track, uint32 format, uint32 descSize) = 0;
diff --git a/common/scummsys.h b/common/scummsys.h
index 1342b0cde6..c30bc4a52a 100644
--- a/common/scummsys.h
+++ b/common/scummsys.h
@@ -405,8 +405,13 @@
typedef unsigned int uint32;
typedef signed int int32;
typedef unsigned int uint;
+ #ifdef __PLAYSTATION2__
+ typedef signed long int64;
+ typedef unsigned long uint64;
+ #else
typedef signed long long int64;
typedef unsigned long long uint64;
+ #endif
#endif
diff --git a/common/zlib.cpp b/common/zlib.cpp
index 448e1eadd5..c22ea1e660 100644
--- a/common/zlib.cpp
+++ b/common/zlib.cpp
@@ -27,6 +27,7 @@
#include "common/ptr.h"
#include "common/util.h"
#include "common/stream.h"
+#include "common/debug.h"
#include "common/textconsole.h"
#if defined(USE_ZLIB)
@@ -140,6 +141,10 @@ bool inflateZlibInstallShield(byte *dst, uint dstLen, const byte *src, uint srcL
return true;
}
+#ifndef RELEASE_BUILD
+static bool _shownBackwardSeekingWarning = false;
+#endif
+
/**
* A simple wrapper class which can be used to wrap around an arbitrary
* other SeekableReadStream and will then provide on-the-fly decompression support.
@@ -159,11 +164,10 @@ protected:
uint32 _pos;
uint32 _origSize;
bool _eos;
- bool _shownBackwardSeekingWarning;
public:
- GZipReadStream(SeekableReadStream *w, uint32 knownSize = 0) : _wrapped(w), _stream(), _shownBackwardSeekingWarning(false) {
+ GZipReadStream(SeekableReadStream *w, uint32 knownSize = 0) : _wrapped(w), _stream() {
assert(w != 0);
// Verify file header is correct
@@ -263,13 +267,15 @@ public:
// from the start of the file. A rather wasteful operation, best
// to avoid it. :/
+#ifndef RELEASE_BUILD
if (!_shownBackwardSeekingWarning) {
// We only throw this warning once per stream, to avoid
// getting the console swarmed with warnings when consecutive
// seeks are made.
- warning("Backward seeking in GZipReadStream detected");
+ debug(1, "Backward seeking in GZipReadStream detected");
_shownBackwardSeekingWarning = true;
}
+#endif
_pos = 0;
_wrapped->seek(0, SEEK_SET);
diff --git a/configure b/configure
index 5499ceccb1..4e4e9d1456 100755
--- a/configure
+++ b/configure
@@ -850,7 +850,9 @@ Fine tuning of the installation directories:
Special configuration feature:
--host=HOST cross-compile to target HOST (arm-linux, ...)
- special targets: android for Android
+ special targets: android-arm for Android ARM
+ android-mips for Android MIPS
+ android-x86 for Android x86
tizen for Samsung Tizen
caanoo for Caanoo
dingux for Dingux
@@ -965,6 +967,7 @@ Optional Libraries:
--with-freetype2-prefix=DIR Prefix where the freetype-config script is
installed (optional)
+ --disable-freetype2 disable freetype2 TTF library usage [autodetect]
--with-nasm-prefix=DIR Prefix where nasm executable is installed (optional)
--disable-nasm disable assembly language optimizations [autodetect]
@@ -1271,11 +1274,21 @@ get_system_exe_extension $guessed_host
NATIVEEXEEXT=$_exeext
case $_host in
-android | android-v7a | ouya)
+android | android-arm | android-v7a | android-arm-v7a | ouya)
_host_os=android
_host_cpu=arm
_host_alias=arm-linux-androideabi
;;
+android-mips)
+ _host_os=android
+ _host_cpu=mipsel
+ _host_alias=mipsel-linux-android
+ ;;
+android-x86)
+ _host_os=android
+ _host_cpu=i686
+ _host_alias=i686-linux-android
+ ;;
arm-riscos)
_host_os=riscos
_host_cpu=arm
@@ -1378,6 +1391,9 @@ ps2)
_host_os=ps2
_host_cpu=mips64r5900el
_host_alias=ee
+ # PS2 bogus dirs: they actually depend on launch medium
+ datadir='host:data'
+ docdir='host:docs'
;;
ps3)
_host_os=ps3
@@ -1475,8 +1491,16 @@ caanoo | gp2x | gp2xwiz | openpandora | ps2)
esac
if test "$_debug_build" != no; then
- # debug mode not explicitly disabled -> compile with -g
- CXXFLAGS="$CXXFLAGS -g"
+ # debug mode not explicitly disabled -> compile with debug information
+ case $_host_os in
+ amigaos*)
+ # AmigaOS debugger uses plain stabs, with no gdb extensions.
+ CXXFLAGS="$CXXFLAGS -gstabs"
+ ;;
+ *)
+ # Use the system default format for debug info.
+ CXXFLAGS="$CXXFLAGS -g"
+ esac
fi
if test "$_release_build" = yes; then
@@ -2033,27 +2057,49 @@ echo_n "Checking hosttype... "
echo $_host_os
case $_host_os in
amigaos*)
- LDFLAGS="$LDFLAGS -use-dynld"
+ LDFLAGS="$LDFLAGS -use-dynld -Wl,--export-dynamic"
LDFLAGS="$LDFLAGS -L/sdk/local/newlib/lib"
# We have to use 'long' for our 4 byte typedef because AmigaOS already typedefs (u)int32
# as (unsigned) long, and consequently we'd get a compiler error otherwise.
type_4_byte='long'
+ # Supress format warnings as the long 4 byte causes noisy warnings.
+ CXXFLAGS="$CXXFLAGS -Wno-format"
add_line_to_config_mk 'AMIGAOS = 1'
;;
android)
case $_host in
- android)
+ android | android-arm)
CXXFLAGS="$CXXFLAGS -march=armv5te"
CXXFLAGS="$CXXFLAGS -mtune=xscale"
CXXFLAGS="$CXXFLAGS -msoft-float"
ABI="armeabi"
+ ANDROID_PLATFORM=4
+ ANDROID_PLATFORM_ARCH="arm"
;;
- android-v7a)
+ android-v7a | android-arm-v7a)
CXXFLAGS="$CXXFLAGS -march=armv7-a"
CXXFLAGS="$CXXFLAGS -mfloat-abi=softfp"
CXXFLAGS="$CXXFLAGS -mfpu=vfp"
LDFLAGS="$LDFLAGS -Wl,--fix-cortex-a8"
ABI="armeabi-v7a"
+ ANDROID_PLATFORM=4
+ ANDROID_PLATFORM_ARCH="arm"
+ ;;
+ android-mips)
+ CXXFLAGS="$CXXFLAGS -march=mips32"
+ CXXFLAGS="$CXXFLAGS -mtune=mips32"
+ ABI="mips"
+ # Platform version 9 is needed as earlier versions of platform do not support this arch.
+ ANDROID_PLATFORM=9
+ ANDROID_PLATFORM_ARCH="mips"
+ ;;
+ android-x86)
+ CXXFLAGS="$CXXFLAGS -march=i686"
+ CXXFLAGS="$CXXFLAGS -mtune=i686"
+ ABI="x86"
+ # Platform version 9 is needed as earlier versions of platform do not support this arch.
+ ANDROID_PLATFORM=9
+ ANDROID_PLATFORM_ARCH="x86"
;;
ouya)
CXXFLAGS="$CXXFLAGS -march=armv7-a"
@@ -2061,9 +2107,15 @@ case $_host_os in
CXXFLAGS="$CXXFLAGS -mfloat-abi=softfp"
CXXFLAGS="$CXXFLAGS -mfpu=neon"
ABI="armeabi-v7a"
+ ANDROID_PLATFORM=4
+ ANDROID_PLATFORM_ARCH="arm"
;;
esac
- CXXFLAGS="$CXXFLAGS --sysroot=$ANDROID_NDK/platforms/android-4/arch-arm"
+
+ # Setup platform version and arch
+ CXXFLAGS="$CXXFLAGS --sysroot=$ANDROID_NDK/platforms/android-$ANDROID_PLATFORM/arch-$ANDROID_PLATFORM_ARCH"
+ LDFLAGS="$LDFLAGS --sysroot=$ANDROID_NDK/platforms/android-$ANDROID_PLATFORM/arch-$ANDROID_PLATFORM_ARCH"
+
CXXFLAGS="$CXXFLAGS -fpic"
CXXFLAGS="$CXXFLAGS -ffunction-sections"
CXXFLAGS="$CXXFLAGS -funwind-tables"
@@ -2076,16 +2128,23 @@ case $_host_os in
fi
CXXFLAGS="$CXXFLAGS -finline-limit=300"
_optimization_level=-Os
- CXXFLAGS="$CXXFLAGS -mthumb-interwork"
- # FIXME: Why is the following in CXXFLAGS and not in DEFINES? Change or document this.
- CXXFLAGS="$CXXFLAGS -D__ARM_ARCH_5__"
- CXXFLAGS="$CXXFLAGS -D__ARM_ARCH_5T__"
- CXXFLAGS="$CXXFLAGS -D__ARM_ARCH_5E__"
- CXXFLAGS="$CXXFLAGS -D__ARM_ARCH_5TE__"
- # supress 'mangling of 'va_list' has changed in GCC 4.4'
+
+ if test "$_host" = android -o "$_host" = android-arm; then
+ CXXFLAGS="$CXXFLAGS -mthumb-interwork"
+ # FIXME: Why is the following in CXXFLAGS and not in DEFINES? Change or document this.
+ CXXFLAGS="$CXXFLAGS -D__ARM_ARCH_5__"
+ CXXFLAGS="$CXXFLAGS -D__ARM_ARCH_5T__"
+ CXXFLAGS="$CXXFLAGS -D__ARM_ARCH_5E__"
+ CXXFLAGS="$CXXFLAGS -D__ARM_ARCH_5TE__"
+ fi
+
+ # surpress 'mangling of 'va_list' has changed in GCC 4.4' warning
CXXFLAGS="$CXXFLAGS -Wno-psabi"
- LDFLAGS="$LDFLAGS --sysroot=$ANDROID_NDK/platforms/android-4/arch-arm"
- LDFLAGS="$LDFLAGS -mthumb-interwork"
+
+ if test "$_host" = android -o "$_host" = android-arm; then
+ LDFLAGS="$LDFLAGS -mthumb-interwork"
+ fi
+
LDFLAGS="$LDFLAGS -L$ANDROID_NDK/sources/cxx-stl/gnu-libstdc++/`$CXX -dumpversion`/libs/$ABI/"
LIBS="$LIBS -lsupc++"
add_line_to_config_mk "ANDROID_SDK = $ANDROID_SDK"
@@ -2257,6 +2316,9 @@ case $_host_os in
CXXFLAGS="$CXXFLAGS -G2"
DEFINES="$DEFINES -D_EE"
DEFINES="$DEFINES -D__PLAYSTATION2__"
+ if test -z "$PS2SDK_OLD"; then
+ DEFINES="$DEFINES -D__NEW_PS2SDK__"
+ fi
;;
ps3)
# Force use of SDL and freetype from the ps3 toolchain
@@ -2352,7 +2414,7 @@ if test -n "$_host"; then
# Cross-compiling mode - add your target here if needed
echo "Cross-compiling to $_host"
case "$_host" in
- android | android-v7a | ouya)
+ android | android-arm | android-v7a | android-arm-v7a | android-mips | android-x86 | ouya)
# we link a .so as default
LDFLAGS="$LDFLAGS -shared"
LDFLAGS="$LDFLAGS -Wl,-Bsymbolic,--no-undefined"
@@ -2497,6 +2559,7 @@ if test -n "$_host"; then
;;
iphone)
DEFINES="$DEFINES -DIPHONE"
+ ASFLAGS="$ASFLAGS -arch armv6"
_backend="iphone"
_build_scalers=no
_mt32emu=no
@@ -2638,6 +2701,8 @@ if test -n "$_host"; then
DEFINES="$DEFINES -DDISABLE_DOSBOX_OPL"
DEFINES="$DEFINES -DDISABLE_SID"
DEFINES="$DEFINES -DDISABLE_NES_APU"
+ CXXFLAGS="$CXXFLAGS -fno-exceptions"
+ CXXFLAGS="$CXXFLAGS -fno-rtti"
_backend="ps2"
_build_scalers=no
_mt32emu=no
@@ -2645,10 +2710,15 @@ if test -n "$_host"; then
# This trick doesn't work for tremor right now, as the PS2 port the resulting library
# libtremor, while our code later on expects it to be called libvorbisidec.
# TODO: Enable tremor, e.g. by adding -ltremor or by renaming the lib.
+ # Disable this for older SDK as this breaks the build otherwise...
+ if test -z "$PS2SDK_OLD"; then
+ _tremor=yes
+ fi
_mad=yes
_zlib=yes
# HACK to fix compilation of C source files for now.
- add_line_to_config_mk 'CC = ee-gcc'
+ add_line_to_config_mk 'CC := ee-gcc'
+ add_line_to_config_mk 'CFLAGS := -std=c99 -W -Wno-unused-parameter -Wconversion -pedantic -G2 -s -O2 -Wuninitialized'
# HACK to fix linking for now. It seems ee-g++ does not handle linking correctly.
LD=ee-gcc
@@ -3165,9 +3235,10 @@ POST_OBJS_FLAGS := -Wl,--export-all-symbols -Wl,--no-whole-archive -Wl,--out-im
;;
ps2)
_elf_loader=yes
+ DEFINES="$DEFINES -DUNCACHED_PLUGINS"
_mak_plugins='
-LDFLAGS += -mno-crt0 $(PS2SDK)/ee/startup/crt0.o -Wl,-T$(srcdir)/backends/plugins/ps2/main_prog.ld
-PLUGIN_LDFLAGS += -mno-crt0 $(PS2SDK)/ee/startup/crt0.o -Wl,-T$(srcdir)/backends/plugins/ps2/plugin.ld -lstdc++ -lc
+LDFLAGS += -mno-crt0 $(PS2SDK)/ee/startup/crt0.o -Wl,-T$(srcdir)/backends/plugins/ps2/main_prog.ld
+PLUGIN_LDFLAGS += -mno-crt0 $(PS2SDK)/ee/startup/crt0.o -Wl,-T$(srcdir)/backends/plugins/ps2/plugin.ld -lstdc++ -lc
'
;;
psp)
@@ -3303,6 +3374,8 @@ if test "$_tremor" = yes && test "$_vorbis" = no; then
if test "$_tremolo" = yes ; then
add_line_to_config_h '#define USE_TREMOLO'
LIBS="$LIBS $TREMOR_LIBS -ltremolo"
+ elif test "$_host" = ps2 ; then
+ LIBS="-ltremor $LIBS"
else
LIBS="$LIBS $TREMOR_LIBS -lvorbisidec"
fi
@@ -4065,6 +4138,10 @@ case $_backend in
# without a scummvm sub directory.
DEFINES="$DEFINES -DPLUGIN_DIRECTORY=\\\"$libdir\\\""
;;
+ ps2)
+ # PS2 bogus dir: it actually depends on launch medium
+ DEFINES="$DEFINES -DPLUGIN_DIRECTORY=\\\"host:plugins\\\""
+ ;;
*)
DEFINES="$DEFINES -DPLUGIN_DIRECTORY=\\\"$libdir/scummvm\\\""
;;
diff --git a/devtools/create_kyradat/create_kyradat.cpp b/devtools/create_kyradat/create_kyradat.cpp
index 6f67e0e748..7da7bd4ef0 100644
--- a/devtools/create_kyradat/create_kyradat.cpp
+++ b/devtools/create_kyradat/create_kyradat.cpp
@@ -30,24 +30,22 @@
#endif // main
#include "create_kyradat.h"
+#include "resources.h"
+#include "types.h"
-#include "search.h"
#include "pak.h"
-#include "tables.h"
-#include "extract.h"
-
#include "md5.h"
#include "common/language.h"
#include "common/platform.h"
+#include <vector>
#include <string>
-#include <map>
#include <algorithm>
-#include <map>
+
enum {
- kKyraDatVersion = 84
+ kKyraDatVersion = 85
};
const ExtractFilename extractFilenames[] = {
@@ -55,647 +53,647 @@ const ExtractFilename extractFilenames[] = {
{ kIdMap, -1, true },
// INTRO / OUTRO sequences
- { k1ForestSeq, kTypeForestSeqData, false },
- { k1KallakWritingSeq, kTypeRawData, false },
- { k1KyrandiaLogoSeq, kTypeRawData, false },
- { k1KallakMalcolmSeq, kTypeRawData, false },
- { k1MalcolmTreeSeq, kTypeRawData, false },
- { k1WestwoodLogoSeq, kTypeRawData, false },
- { k1Demo1Seq, kTypeRawData, false },
- { k1Demo2Seq, kTypeRawData, false },
- { k1Demo3Seq, kTypeRawData, false },
- { k1Demo4Seq, kTypeRawData, false },
- { k1OutroReunionSeq, kTypeRawData, false },
+ { k1ForestSeq, kRawData, false },
+ { k1KallakWritingSeq, kRawData, false },
+ { k1KyrandiaLogoSeq, kRawData, false },
+ { k1KallakMalcolmSeq, kRawData, false },
+ { k1MalcolmTreeSeq, kRawData, false },
+ { k1WestwoodLogoSeq, kRawData, false },
+ { k1Demo1Seq, kRawData, false },
+ { k1Demo2Seq, kRawData, false },
+ { k1Demo3Seq, kRawData, false },
+ { k1Demo4Seq, kRawData, false },
+ { k1OutroReunionSeq, kRawData, false },
// INTRO / OUTRO strings
- { k1IntroCPSStrings, kTypeStringList, false },
- { k1IntroCOLStrings, kTypeStringList, false },
- { k1IntroWSAStrings, kTypeStringList, false },
- { k1IntroStrings, kTypeStringList, true },
- { k1OutroHomeString, kTypeStringList, true },
+ { k1IntroCPSStrings, kStringList, false },
+ { k1IntroCOLStrings, kStringList, false },
+ { k1IntroWSAStrings, kStringList, false },
+ { k1IntroStrings, kStringList, true },
+ { k1OutroHomeString, kStringList, true },
// INGAME strings
- { k1ItemNames, kTypeStringList, true },
- { k1TakenStrings, kTypeStringList, true },
- { k1PlacedStrings, kTypeStringList, true },
- { k1DroppedStrings, kTypeStringList, true },
- { k1NoDropStrings, kTypeStringList, true },
- { k1PutDownString, kTypeStringList, true },
- { k1WaitAmuletString, kTypeStringList, true },
- { k1BlackJewelString, kTypeStringList, true },
- { k1PoisonGoneString, kTypeStringList, true },
- { k1HealingTipString, kTypeStringList, true },
- { k1ThePoisonStrings, kTypeStringList, true },
- { k1FluteStrings, kTypeStringList, true },
- { k1WispJewelStrings, kTypeStringList, true },
- { k1MagicJewelStrings, kTypeStringList, true },
- { k1FlaskFullString, kTypeStringList, true },
- { k1FullFlaskString, kTypeStringList, true },
- { k1VeryCleverString, kTypeStringList, true },
- { k1NewGameString, kTypeStringList, true },
+ { k1ItemNames, kStringList, true },
+ { k1TakenStrings, kStringList, true },
+ { k1PlacedStrings, kStringList, true },
+ { k1DroppedStrings, kStringList, true },
+ { k1NoDropStrings, kStringList, true },
+ { k1PutDownString, kStringList, true },
+ { k1WaitAmuletString, kStringList, true },
+ { k1BlackJewelString, kStringList, true },
+ { k1PoisonGoneString, kStringList, true },
+ { k1HealingTipString, kStringList, true },
+ { k1ThePoisonStrings, kStringList, true },
+ { k1FluteStrings, kStringList, true },
+ { k1WispJewelStrings, kStringList, true },
+ { k1MagicJewelStrings, kStringList, true },
+ { k1FlaskFullString, kStringList, true },
+ { k1FullFlaskString, kStringList, true },
+ { k1VeryCleverString, kStringList, true },
+ { k1NewGameString, kStringList, true },
// GUI strings table
- { k1GUIStrings, kTypeStringList, true },
- { k1ConfigStrings, kTypeStringList, true },
+ { k1GUIStrings, kStringList, true },
+ { k1ConfigStrings, kStringList, true },
// ROOM table/filenames
- { k1RoomList, kTypeRoomList, false },
- { k1RoomFilenames, kTypeStringList, false },
+ { k1RoomList, kRoomList, false },
+ { k1RoomFilenames, kStringList, false },
// SHAPE tables
- { k1DefaultShapes, kTypeShapeList, false },
- { k1Healing1Shapes, kTypeShapeList, false },
- { k1Healing2Shapes, kTypeShapeList, false },
- { k1PoisonDeathShapes, kTypeShapeList, false },
- { k1FluteShapes, kTypeShapeList, false },
- { k1Winter1Shapes, kTypeShapeList, false },
- { k1Winter2Shapes, kTypeShapeList, false },
- { k1Winter3Shapes, kTypeShapeList, false },
- { k1DrinkShapes, kTypeShapeList, false },
- { k1WispShapes, kTypeShapeList, false },
- { k1MagicAnimShapes, kTypeShapeList, false },
- { k1BranStoneShapes, kTypeShapeList, false },
+ { k1DefaultShapes, kShapeList, false },
+ { k1Healing1Shapes, kShapeList, false },
+ { k1Healing2Shapes, kShapeList, false },
+ { k1PoisonDeathShapes, kShapeList, false },
+ { k1FluteShapes, kShapeList, false },
+ { k1Winter1Shapes, kShapeList, false },
+ { k1Winter2Shapes, kShapeList, false },
+ { k1Winter3Shapes, kShapeList, false },
+ { k1DrinkShapes, kShapeList, false },
+ { k1WispShapes, kShapeList, false },
+ { k1MagicAnimShapes, kShapeList, false },
+ { k1BranStoneShapes, kShapeList, false },
// IMAGE filename table
- { k1CharacterImageFilenames, kTypeStringList, false },
+ { k1CharacterImageFilenames, kStringList, false },
// AUDIO filename table
- { k1AudioTracks, kTypeStringList, false },
- { k1AudioTracks2, kTypeStringList, false },
- { k1AudioTracksIntro, kTypeStringList, false },
+ { k1AudioTracks, kStringList, false },
+ { k1AudioTracks2, kStringList, false },
+ { k1AudioTracksIntro, kStringList, false },
// AMULET anim
- { k1AmuleteAnimSeq, kTypeRawData, false },
+ { k1AmuleteAnimSeq, kRawData, false },
// PALETTE table
- { k1SpecialPalette1, kTypeRawData, false },
- { k1SpecialPalette2, kTypeRawData, false },
- { k1SpecialPalette3, kTypeRawData, false },
- { k1SpecialPalette4, kTypeRawData, false },
- { k1SpecialPalette5, kTypeRawData, false },
- { k1SpecialPalette6, kTypeRawData, false },
- { k1SpecialPalette7, kTypeRawData, false },
- { k1SpecialPalette8, kTypeRawData, false },
- { k1SpecialPalette9, kTypeRawData, false },
- { k1SpecialPalette10, kTypeRawData, false },
- { k1SpecialPalette11, kTypeRawData, false },
- { k1SpecialPalette12, kTypeRawData, false },
- { k1SpecialPalette13, kTypeRawData, false },
- { k1SpecialPalette14, kTypeRawData, false },
- { k1SpecialPalette15, kTypeRawData, false },
- { k1SpecialPalette16, kTypeRawData, false },
- { k1SpecialPalette17, kTypeRawData, false },
- { k1SpecialPalette18, kTypeRawData, false },
- { k1SpecialPalette19, kTypeRawData, false },
- { k1SpecialPalette20, kTypeRawData, false },
- { k1SpecialPalette21, kTypeRawData, false },
- { k1SpecialPalette22, kTypeRawData, false },
- { k1SpecialPalette23, kTypeRawData, false },
- { k1SpecialPalette24, kTypeRawData, false },
- { k1SpecialPalette25, kTypeRawData, false },
- { k1SpecialPalette26, kTypeRawData, false },
- { k1SpecialPalette27, kTypeRawData, false },
- { k1SpecialPalette28, kTypeRawData, false },
- { k1SpecialPalette29, kTypeRawData, false },
- { k1SpecialPalette30, kTypeRawData, false },
- { k1SpecialPalette31, kTypeRawData, false },
- { k1SpecialPalette32, kTypeRawData, false },
- { k1SpecialPalette33, kTypeRawData, false },
+ { k1SpecialPalette1, kRawData, false },
+ { k1SpecialPalette2, kRawData, false },
+ { k1SpecialPalette3, kRawData, false },
+ { k1SpecialPalette4, kRawData, false },
+ { k1SpecialPalette5, kRawData, false },
+ { k1SpecialPalette6, kRawData, false },
+ { k1SpecialPalette7, kRawData, false },
+ { k1SpecialPalette8, kRawData, false },
+ { k1SpecialPalette9, kRawData, false },
+ { k1SpecialPalette10, kRawData, false },
+ { k1SpecialPalette11, kRawData, false },
+ { k1SpecialPalette12, kRawData, false },
+ { k1SpecialPalette13, kRawData, false },
+ { k1SpecialPalette14, kRawData, false },
+ { k1SpecialPalette15, kRawData, false },
+ { k1SpecialPalette16, kRawData, false },
+ { k1SpecialPalette17, kRawData, false },
+ { k1SpecialPalette18, kRawData, false },
+ { k1SpecialPalette19, kRawData, false },
+ { k1SpecialPalette20, kRawData, false },
+ { k1SpecialPalette21, kRawData, false },
+ { k1SpecialPalette22, kRawData, false },
+ { k1SpecialPalette23, kRawData, false },
+ { k1SpecialPalette24, kRawData, false },
+ { k1SpecialPalette25, kRawData, false },
+ { k1SpecialPalette26, kRawData, false },
+ { k1SpecialPalette27, kRawData, false },
+ { k1SpecialPalette28, kRawData, false },
+ { k1SpecialPalette29, kRawData, false },
+ { k1SpecialPalette30, kRawData, false },
+ { k1SpecialPalette31, kRawData, false },
+ { k1SpecialPalette32, kRawData, false },
+ { k1SpecialPalette33, kRawData, false },
// CREDITS (used in FM-TOWNS and AMIGA)
- { k1CreditsStrings, kTypeRawData, true },
+ { k1CreditsStrings, kRawData, true },
// FM-TOWNS specific
- { k1TownsMusicFadeTable, k3TypeRaw16to8, false },
- { k1TownsSFXwdTable, kTypeTownsWDSfxTable, false },
- { k1TownsSFXbtTable, kTypeRawData, false },
- { k1TownsCDATable, kTypeRawData, false },
+ { k1TownsMusicFadeTable, kRawData, false },
+ { k1TownsSFXwdTable, kRawData, false },
+ { k1TownsSFXbtTable, kRawData, false },
+ { k1TownsCDATable, kRawData, false },
// PC98 specific
- { k1PC98StoryStrings, kTypeStringList, true },
- { k1PC98IntroSfx, kTypeRawData, false },
+ { k1PC98StoryStrings, kStringList, true },
+ { k1PC98IntroSfx, kRawData, false },
// AMIGA specific
- { k1AmigaIntroSFXTable, kTypeAmigaSfxTable, false },
- { k1AmigaGameSFXTable, kTypeAmigaSfxTable, false },
+ { k1AmigaIntroSFXTable, kAmigaSfxTable, false },
+ { k1AmigaGameSFXTable, kAmigaSfxTable, false },
// HAND OF FATE
// Sequence Player
- { k2SeqplayPakFiles, kTypeStringList, false },
- { k2SeqplayCredits, kTypeRawData, false },
- { k2SeqplayCreditsSpecial, kTypeStringList, false },
- { k2SeqplayStrings, kTypeStringList, true },
- { k2SeqplaySfxFiles, k2TypeSoundList, false },
- { k2SeqplayTlkFiles, k2TypeLangSoundList, true },
- { k2SeqplaySeqData, k2TypeSeqData, false },
- { k2SeqplayIntroTracks, kTypeStringList, false },
- { k2SeqplayFinaleTracks, kTypeStringList, false },
- { k2SeqplayIntroCDA, kTypeRawData, false },
- { k2SeqplayFinaleCDA, kTypeRawData, false },
- { k2SeqplayShapeAnimData, k2TypeShpDataV1, false },
+ { k2SeqplayPakFiles, kStringList, false },
+ { k2SeqplayCredits, kRawData, false },
+ { k2SeqplayCreditsSpecial, kStringList, false },
+ { k2SeqplayStrings, kStringList, true },
+ { k2SeqplaySfxFiles, kStringList, false },
+ { k2SeqplayTlkFiles, kStringList, true },
+ { k2SeqplaySeqData, k2SeqData, false },
+ { k2SeqplayIntroTracks, kStringList, false },
+ { k2SeqplayFinaleTracks, kStringList, false },
+ { k2SeqplayIntroCDA, kRawData, false },
+ { k2SeqplayFinaleCDA, kRawData, false },
+ { k2SeqplayShapeAnimData, k2SeqItemAnimData, false },
// Ingame
- { k2IngamePakFiles, kTypeStringList, false },
- { k2IngameSfxFiles, k2TypeSize10StringList, false },
- { k2IngameSfxIndex, kTypeRawData, false },
- { k2IngameTracks, kTypeStringList, false },
- { k2IngameCDA, kTypeRawData, false },
- { k2IngameTalkObjIndex, kTypeRawData, false },
- { k2IngameTimJpStrings, kTypeStringList, false },
- { k2IngameShapeAnimData, k2TypeShpDataV2, false },
- { k2IngameTlkDemoStrings, kTypeStringList, true },
+ { k2IngamePakFiles, kStringList, false },
+ { k2IngameSfxFiles, kStringList, false },
+ { k2IngameSfxIndex, kRawData, false },
+ { k2IngameTracks, kStringList, false },
+ { k2IngameCDA, kRawData, false },
+ { k2IngameTalkObjIndex, kRawData, false },
+ { k2IngameTimJpStrings, kStringList, false },
+ { k2IngameShapeAnimData, k2ItemAnimDefinition, false },
+ { k2IngameTlkDemoStrings, kStringList, true },
// MALCOLM'S REVENGE
- { k3MainMenuStrings, kTypeStringList, false },
- { k3MusicFiles, k2TypeSoundList, false },
- { k3ScoreTable, kTypeRawData, false },
- { k3SfxFiles, k2TypeSfxList, false },
- { k3SfxMap, k3TypeRaw16to8, false },
- { k3ItemAnimData, k3TypeShpData, false },
- { k3ItemMagicTable, k3TypeRaw16to8, false },
- { k3ItemStringMap, kTypeRawData, false },
+ { k3MainMenuStrings, kStringList, false },
+ { k3MusicFiles, kStringList, false },
+ { k3ScoreTable, kRawData, false },
+ { k3SfxFiles, kStringList, false },
+ { k3SfxMap, kRawData, false },
+ { k3ItemAnimData, k2ItemAnimDefinition, false },
+ { k3ItemMagicTable, kRawData, false },
+ { k3ItemStringMap, kRawData, false },
// EYE OF THE BEHOLDER COMMON
- { kEoBBaseChargenStrings1, kTypeStringList, true },
- { kEoBBaseChargenStrings2, kTypeStringList, true },
- { kEoBBaseChargenStartLevels, kTypeRawData, false },
- { kEoBBaseChargenStatStrings, kTypeStringList, true},
- { kEoBBaseChargenRaceSexStrings, kTypeStringList, true },
- { kEoBBaseChargenClassStrings, kTypeStringList, true },
- { kEoBBaseChargenAlignmentStrings, kTypeStringList, true },
- { kEoBBaseChargenEnterGameStrings, kTypeStringList, true },
- { kEoBBaseChargenClassMinStats, k3TypeRaw16to8, false },
- { kEoBBaseChargenRaceMinStats, k3TypeRaw16to8, false },
- { kEoBBaseChargenRaceMaxStats, kLoLTypeRaw16, false },
-
- { kEoBBaseSaveThrowTable1, kTypeRawData, false },
- { kEoBBaseSaveThrowTable2, kTypeRawData, false },
- { kEoBBaseSaveThrowTable3, kTypeRawData, false },
- { kEoBBaseSaveThrowTable4, kTypeRawData, false },
- { kEoBBaseSaveThrwLvlIndex, kTypeRawData, false },
- { kEoBBaseSaveThrwModDiv, kTypeRawData, false },
- { kEoBBaseSaveThrwModExt, kTypeRawData, false },
-
- { kEoBBasePryDoorStrings, kTypeStringList, true },
- { kEoBBaseWarningStrings, kTypeStringList, true },
-
- { kEoBBaseItemSuffixStringsRings, kTypeStringList, true },
- { kEoBBaseItemSuffixStringsPotions, kTypeStringList, true },
- { kEoBBaseItemSuffixStringsWands, kTypeStringList, true },
-
- { kEoBBaseRipItemStrings, kTypeStringList, true },
- { kEoBBaseCursedString, kTypeStringList, true },
- { kEoBBaseEnchantedString, kTypeStringList, false },
- { kEoBBaseMagicObjectStrings, kTypeStringList, true },
- { kEoBBaseMagicObject5String, kTypeStringList, true },
- { kEoBBasePatternSuffix, kTypeStringList, true },
- { kEoBBasePatternGrFix1, kTypeStringList, true },
- { kEoBBasePatternGrFix2, kTypeStringList, true },
- { kEoBBaseValidateArmorString, kTypeStringList, true },
- { kEoBBaseValidateCursedString, kTypeStringList, true },
- { kEoBBaseValidateNoDropString, kTypeStringList, true },
- { kEoBBasePotionStrings, kTypeStringList, true },
- { kEoBBaseWandString, kTypeStringList, true },
- { kEoBBaseItemMisuseStrings, kTypeStringList, true },
-
- { kEoBBaseTakenStrings, kTypeStringList, true },
- { kEoBBasePotionEffectStrings, kTypeStringList, true },
-
- { kEoBBaseYesNoStrings, kTypeStringList, true },
- { kRpgCommonMoreStrings, kTypeStringList, true },
- { kEoBBaseNpcMaxStrings, kTypeStringList, true },
- { kEoBBaseOkStrings, kTypeStringList, true },
- { kEoBBaseNpcJoinStrings, kTypeStringList, true },
- { kEoBBaseCancelStrings, kTypeStringList, true },
- { kEoBBaseAbortStrings, kTypeStringList, true },
-
- { kEoBBaseMenuStringsMain, kTypeStringList, true },
- { kEoBBaseMenuStringsSaveLoad, kTypeStringList, true },
- { kEoBBaseMenuStringsOnOff, kTypeStringList, true },
- { kEoBBaseMenuStringsSpells, kTypeStringList, true },
- { kEoBBaseMenuStringsRest, kTypeStringList, true },
- { kEoBBaseMenuStringsDrop, kTypeStringList, true },
- { kEoBBaseMenuStringsExit, kTypeStringList, true },
- { kEoBBaseMenuStringsStarve, kTypeStringList, true },
- { kEoBBaseMenuStringsScribe, kTypeStringList, true },
- { kEoBBaseMenuStringsDrop2, kTypeStringList, true },
- { kEoBBaseMenuStringsHead, kTypeStringList, true },
- { kEoBBaseMenuStringsPoison, kTypeStringList, true },
- { kEoBBaseMenuStringsMgc, kTypeStringList, true },
- { kEoBBaseMenuStringsPrefs, kTypeStringList, true },
- { kEoBBaseMenuStringsRest2, kTypeStringList, true },
- { kEoBBaseMenuStringsRest3, kTypeStringList, true },
- { kEoBBaseMenuStringsRest4, kTypeStringList, true },
- { kEoBBaseMenuStringsDefeat, kTypeStringList, true },
- { kEoBBaseMenuStringsTransfer, kTypeStringList, true },
- { kEoBBaseMenuStringsSpec, kTypeStringList, true },
- { kEoBBaseMenuStringsSpellNo, kTypeStringList, false },
- { kEoBBaseMenuYesNoStrings, kTypeStringList, true },
-
- { kEoBBaseSpellLevelsMage, kTypeRawData, false },
- { kEoBBaseSpellLevelsCleric, kTypeRawData, false },
- { kEoBBaseNumSpellsCleric, kTypeRawData, false },
- { kEoBBaseNumSpellsWisAdj, kTypeRawData, false },
- { kEoBBaseNumSpellsPal, kTypeRawData, false },
- { kEoBBaseNumSpellsMage, kTypeRawData, false },
-
- { kEoBBaseCharGuiStringsHp, kTypeStringList, true },
- { kEoBBaseCharGuiStringsWp1, kTypeStringList, true },
- { kEoBBaseCharGuiStringsWp2, kTypeStringList, true },
- { kEoBBaseCharGuiStringsWr, kTypeStringList, true },
- { kEoBBaseCharGuiStringsSt1, kTypeStringList, true },
- { kEoBBaseCharGuiStringsSt2, kTypeStringList, true },
- { kEoBBaseCharGuiStringsIn, kTypeStringList, true },
-
- { kEoBBaseCharStatusStrings7, kTypeStringList, true },
- { kEoBBaseCharStatusStrings81, kTypeStringList, true },
- { kEoBBaseCharStatusStrings82, kTypeStringList, true },
- { kEoBBaseCharStatusStrings9, kTypeStringList, true },
- { kEoBBaseCharStatusStrings12, kTypeStringList, true },
- { kEoBBaseCharStatusStrings131, kTypeStringList, true },
- { kEoBBaseCharStatusStrings132, kTypeStringList, true },
-
- { kEoBBaseLevelGainStrings, kTypeStringList, true },
- { kEoBBaseExperienceTable0, kLoLTypeRaw32, false },
- { kEoBBaseExperienceTable1, kLoLTypeRaw32, false },
- { kEoBBaseExperienceTable2, kLoLTypeRaw32, false },
- { kEoBBaseExperienceTable3, kLoLTypeRaw32, false },
- { kEoBBaseExperienceTable4, kLoLTypeRaw32, false },
-
- { kEoBBaseWllFlagPreset, kTypeRawData, false },
- { kEoBBaseDscShapeCoords, kLoLTypeRaw16, false },
- { kEoBBaseDscDoorScaleOffs, kTypeRawData, false },
- { kEoBBaseDscDoorScaleMult1, kTypeRawData, false },
- { kEoBBaseDscDoorScaleMult2, kTypeRawData, false },
- { kEoBBaseDscDoorScaleMult3, kTypeRawData, false },
- { kEoBBaseDscDoorScaleMult4, kTypeRawData, false },
- { kEoBBaseDscDoorScaleMult5, kTypeRawData, false },
- { kEoBBaseDscDoorScaleMult6, kTypeRawData, false },
- { kEoBBaseDscDoorType5Offs, kTypeRawData, false },
- { kEoBBaseDscDoorXE, kTypeRawData, false },
- { kEoBBaseDscDoorY1, kTypeRawData, false },
- { kEoBBaseDscDoorY3, kTypeRawData, false },
- { kEoBBaseDscDoorY4, kTypeRawData, false },
- { kEoBBaseDscDoorY5, kTypeRawData, false },
- { kEoBBaseDscDoorY6, kTypeRawData, false },
- { kEoBBaseDscDoorY7, kTypeRawData, false },
- { kEoBBaseDscDoorCoordsExt, kLoLTypeRaw16, false },
-
- { kEoBBaseDscItemPosIndex, kTypeRawData, false },
- { kEoBBaseDscItemShpX, kLoLTypeRaw16, false },
- { kEoBBaseDscItemPosUnk, kTypeRawData, false },
- { kEoBBaseDscItemTileIndex, kTypeRawData, false },
- { kEoBBaseDscItemShapeMap, kTypeRawData, false },
- { kEoBBaseDscTelptrShpCoords, kTypeRawData, false },
-
- { kEoBBasePortalSeqData, kTypeRawData, false },
- { kEoBBaseManDef, kTypeRawData, true },
- { kEoBBaseManWord, kTypeStringList, true },
- { kEoBBaseManPrompt, kTypeStringList, true },
-
- { kEoBBaseDscMonsterFrmOffsTbl1, kTypeRawData, false },
- { kEoBBaseDscMonsterFrmOffsTbl2, kTypeRawData, false },
-
- { kEoBBaseInvSlotX, kLoLTypeRaw16, false },
- { kEoBBaseInvSlotY, kTypeRawData, false },
- { kEoBBaseSlotValidationFlags, kLoLTypeRaw16, false },
-
- { kEoBBaseProjectileWeaponTypes, kTypeRawData, false },
- { kEoBBaseWandTypes, kTypeRawData, false },
-
- { kEoBBaseDrawObjPosIndex, kTypeRawData, false },
- { kEoBBaseFlightObjFlipIndex, kTypeRawData, false },
- { kEoBBaseFlightObjShpMap, kTypeRawData, false },
- { kEoBBaseFlightObjSclIndex, kTypeRawData, false },
-
- { kEoBBaseBookNumbers, kTypeStringList, true },
- { kEoBBaseMageSpellsList, kTypeStringList, true },
- { kEoBBaseClericSpellsList, kTypeStringList, true },
- { kEoBBaseSpellNames, kTypeStringList, true },
-
- { kEoBBaseMagicStrings1, kTypeStringList, true },
- { kEoBBaseMagicStrings2, kTypeStringList, true },
- { kEoBBaseMagicStrings3, kTypeStringList, true },
- { kEoBBaseMagicStrings4, kTypeStringList, true },
- { kEoBBaseMagicStrings6, kTypeStringList, true },
- { kEoBBaseMagicStrings7, kTypeStringList, true },
- { kEoBBaseMagicStrings8, kTypeStringList, true },
-
- { kEoBBaseExpObjectTlMode, kTypeRawData, false },
- { kEoBBaseExpObjectTblIndex, kTypeRawData, false },
- { kEoBBaseExpObjectShpStart, kTypeRawData, false },
- { kEoBBaseExpObjectTbl1, kTypeRawData, false },
- { kEoBBaseExpObjectTbl2, kTypeRawData, false },
- { kEoBBaseExpObjectTbl3, kTypeRawData, false },
- { kEoBBaseExpObjectY, k3TypeRaw16to8, false },
-
- { kEoBBaseSparkDefSteps, kTypeRawData, false },
- { kEoBBaseSparkDefSubSteps, kTypeRawData, false },
- { kEoBBaseSparkDefShift, kTypeRawData, false },
- { kEoBBaseSparkDefAdd, kTypeRawData, false },
- { kEoBBaseSparkDefX, k3TypeRaw16to8, false },
- { kEoBBaseSparkDefY, kTypeRawData, false },
- { kEoBBaseSparkOfFlags1, kLoLTypeRaw32, false },
- { kEoBBaseSparkOfFlags2, kLoLTypeRaw32, false },
- { kEoBBaseSparkOfShift, kTypeRawData, false },
- { kEoBBaseSparkOfX, kTypeRawData, false },
- { kEoBBaseSparkOfY, kTypeRawData, false },
- { kEoBBaseSpellProperties, kTypeRawData, false },
- { kEoBBaseMagicFlightProps, kTypeRawData, false },
- { kEoBBaseTurnUndeadEffect, kTypeRawData, false },
- { kEoBBaseBurningHandsDest, kTypeRawData, false },
- { kEoBBaseConeOfColdDest1, kTypeRawData, false },
- { kEoBBaseConeOfColdDest2, kTypeRawData, false },
- { kEoBBaseConeOfColdDest3, kTypeRawData, false },
- { kEoBBaseConeOfColdDest4, kTypeRawData, false },
- { kEoBBaseConeOfColdGfxTbl, k3TypeRaw16to8, false },
+ { kEoBBaseChargenStrings1, kStringList, true },
+ { kEoBBaseChargenStrings2, kStringList, true },
+ { kEoBBaseChargenStartLevels, kRawData, false },
+ { kEoBBaseChargenStatStrings, kStringList, true},
+ { kEoBBaseChargenRaceSexStrings, kStringList, true },
+ { kEoBBaseChargenClassStrings, kStringList, true },
+ { kEoBBaseChargenAlignmentStrings, kStringList, true },
+ { kEoBBaseChargenEnterGameStrings, kStringList, true },
+ { kEoBBaseChargenClassMinStats, kRawData, false },
+ { kEoBBaseChargenRaceMinStats, kRawData, false },
+ { kEoBBaseChargenRaceMaxStats, kRawDataBe16, false },
+
+ { kEoBBaseSaveThrowTable1, kRawData, false },
+ { kEoBBaseSaveThrowTable2, kRawData, false },
+ { kEoBBaseSaveThrowTable3, kRawData, false },
+ { kEoBBaseSaveThrowTable4, kRawData, false },
+ { kEoBBaseSaveThrwLvlIndex, kRawData, false },
+ { kEoBBaseSaveThrwModDiv, kRawData, false },
+ { kEoBBaseSaveThrwModExt, kRawData, false },
+
+ { kEoBBasePryDoorStrings, kStringList, true },
+ { kEoBBaseWarningStrings, kStringList, true },
+
+ { kEoBBaseItemSuffixStringsRings, kStringList, true },
+ { kEoBBaseItemSuffixStringsPotions, kStringList, true },
+ { kEoBBaseItemSuffixStringsWands, kStringList, true },
+
+ { kEoBBaseRipItemStrings, kStringList, true },
+ { kEoBBaseCursedString, kStringList, true },
+ { kEoBBaseEnchantedString, kStringList, false },
+ { kEoBBaseMagicObjectStrings, kStringList, true },
+ { kEoBBaseMagicObjectString5, kStringList, true },
+ { kEoBBasePatternSuffix, kStringList, true },
+ { kEoBBasePatternGrFix1, kStringList, true },
+ { kEoBBasePatternGrFix2, kStringList, true },
+ { kEoBBaseValidateArmorString, kStringList, true },
+ { kEoBBaseValidateCursedString, kStringList, true },
+ { kEoBBaseValidateNoDropString, kStringList, true },
+ { kEoBBasePotionStrings, kStringList, true },
+ { kEoBBaseWandStrings, kStringList, true },
+ { kEoBBaseItemMisuseStrings, kStringList, true },
+
+ { kEoBBaseTakenStrings, kStringList, true },
+ { kEoBBasePotionEffectStrings, kStringList, true },
+
+ { kEoBBaseYesNoStrings, kStringList, true },
+ { kRpgCommonMoreStrings, kStringList, true },
+ { kEoBBaseNpcMaxStrings, kStringList, true },
+ { kEoBBaseOkStrings, kStringList, true },
+ { kEoBBaseNpcJoinStrings, kStringList, true },
+ { kEoBBaseCancelStrings, kStringList, true },
+ { kEoBBaseAbortStrings, kStringList, true },
+
+ { kEoBBaseMenuStringsMain, kStringList, true },
+ { kEoBBaseMenuStringsSaveLoad, kStringList, true },
+ { kEoBBaseMenuStringsOnOff, kStringList, true },
+ { kEoBBaseMenuStringsSpells, kStringList, true },
+ { kEoBBaseMenuStringsRest, kStringList, true },
+ { kEoBBaseMenuStringsDrop, kStringList, true },
+ { kEoBBaseMenuStringsExit, kStringList, true },
+ { kEoBBaseMenuStringsStarve, kStringList, true },
+ { kEoBBaseMenuStringsScribe, kStringList, true },
+ { kEoBBaseMenuStringsDrop2, kStringList, true },
+ { kEoBBaseMenuStringsHead, kStringList, true },
+ { kEoBBaseMenuStringsPoison, kStringList, true },
+ { kEoBBaseMenuStringsMgc, kStringList, true },
+ { kEoBBaseMenuStringsPrefs, kStringList, true },
+ { kEoBBaseMenuStringsRest2, kStringList, true },
+ { kEoBBaseMenuStringsRest3, kStringList, true },
+ { kEoBBaseMenuStringsRest4, kStringList, true },
+ { kEoBBaseMenuStringsDefeat, kStringList, true },
+ { kEoBBaseMenuStringsTransfer, kStringList, true },
+ { kEoBBaseMenuStringsSpec, kStringList, true },
+ { kEoBBaseMenuStringsSpellNo, kStringList, false },
+ { kEoBBaseMenuYesNoStrings, kStringList, true },
+
+ { kEoBBaseSpellLevelsMage, kRawData, false },
+ { kEoBBaseSpellLevelsCleric, kRawData, false },
+ { kEoBBaseNumSpellsCleric, kRawData, false },
+ { kEoBBaseNumSpellsWisAdj, kRawData, false },
+ { kEoBBaseNumSpellsPal, kRawData, false },
+ { kEoBBaseNumSpellsMage, kRawData, false },
+
+ { kEoBBaseCharGuiStringsHp, kStringList, true },
+ { kEoBBaseCharGuiStringsWp1, kStringList, true },
+ { kEoBBaseCharGuiStringsWp2, kStringList, true },
+ { kEoBBaseCharGuiStringsWr, kStringList, true },
+ { kEoBBaseCharGuiStringsSt1, kStringList, true },
+ { kEoBBaseCharGuiStringsSt2, kStringList, true },
+ { kEoBBaseCharGuiStringsIn, kStringList, true },
+
+ { kEoBBaseCharStatusStrings7, kStringList, true },
+ { kEoBBaseCharStatusStrings81, kStringList, true },
+ { kEoBBaseCharStatusStrings82, kStringList, true },
+ { kEoBBaseCharStatusStrings9, kStringList, true },
+ { kEoBBaseCharStatusStrings12, kStringList, true },
+ { kEoBBaseCharStatusStrings131, kStringList, true },
+ { kEoBBaseCharStatusStrings132, kStringList, true },
+
+ { kEoBBaseLevelGainStrings, kStringList, true },
+ { kEoBBaseExperienceTable0, kRawDataBe32, false },
+ { kEoBBaseExperienceTable1, kRawDataBe32, false },
+ { kEoBBaseExperienceTable2, kRawDataBe32, false },
+ { kEoBBaseExperienceTable3, kRawDataBe32, false },
+ { kEoBBaseExperienceTable4, kRawDataBe32, false },
+
+ { kEoBBaseWllFlagPreset, kRawData, false },
+ { kEoBBaseDscShapeCoords, kRawDataBe16, false },
+ { kEoBBaseDscDoorScaleOffs, kRawData, false },
+ { kEoBBaseDscDoorScaleMult1, kRawData, false },
+ { kEoBBaseDscDoorScaleMult2, kRawData, false },
+ { kEoBBaseDscDoorScaleMult3, kRawData, false },
+ { kEoBBaseDscDoorScaleMult4, kRawData, false },
+ { kEoBBaseDscDoorScaleMult5, kRawData, false },
+ { kEoBBaseDscDoorScaleMult6, kRawData, false },
+ { kEoBBaseDscDoorType5Offs, kRawData, false },
+ { kEoBBaseDscDoorXE, kRawData, false },
+ { kEoBBaseDscDoorY1, kRawData, false },
+ { kEoBBaseDscDoorY3, kRawData, false },
+ { kEoBBaseDscDoorY4, kRawData, false },
+ { kEoBBaseDscDoorY5, kRawData, false },
+ { kEoBBaseDscDoorY6, kRawData, false },
+ { kEoBBaseDscDoorY7, kRawData, false },
+ { kEoBBaseDscDoorCoordsExt, kRawDataBe16, false },
+
+ { kEoBBaseDscItemPosIndex, kRawData, false },
+ { kEoBBaseDscItemShpX, kRawDataBe16, false },
+ { kEoBBaseDscItemScaleIndex, kRawData, false },
+ { kEoBBaseDscItemTileIndex, kRawData, false },
+ { kEoBBaseDscItemShapeMap, kRawData, false },
+ { kEoBBaseDscTelptrShpCoords, kRawData, false },
+
+ { kEoBBasePortalSeqData, kRawData, false },
+ { kEoBBaseManDef, kRawData, true },
+ { kEoBBaseManWord, kStringList, true },
+ { kEoBBaseManPrompt, kStringList, true },
+
+ { kEoBBaseDscMonsterFrmOffsTbl1, kRawData, false },
+ { kEoBBaseDscMonsterFrmOffsTbl2, kRawData, false },
+
+ { kEoBBaseInvSlotX, kRawDataBe16, false },
+ { kEoBBaseInvSlotY, kRawData, false },
+ { kEoBBaseSlotValidationFlags, kRawDataBe16, false },
+
+ { kEoBBaseProjectileWeaponTypes, kRawData, false },
+ { kEoBBaseWandTypes, kRawData, false },
+
+ { kEoBBaseDrawObjPosIndex, kRawData, false },
+ { kEoBBaseFlightObjFlipIndex, kRawData, false },
+ { kEoBBaseFlightObjShpMap, kRawData, false },
+ { kEoBBaseFlightObjSclIndex, kRawData, false },
+
+ { kEoBBaseBookNumbers, kStringList, true },
+ { kEoBBaseMageSpellsList, kStringList, true },
+ { kEoBBaseClericSpellsList, kStringList, true },
+ { kEoBBaseSpellNames, kStringList, true },
+
+ { kEoBBaseMagicStrings1, kStringList, true },
+ { kEoBBaseMagicStrings2, kStringList, true },
+ { kEoBBaseMagicStrings3, kStringList, true },
+ { kEoBBaseMagicStrings4, kStringList, true },
+ { kEoBBaseMagicStrings6, kStringList, true },
+ { kEoBBaseMagicStrings7, kStringList, true },
+ { kEoBBaseMagicStrings8, kStringList, true },
+
+ { kEoBBaseExpObjectTlMode, kRawData, false },
+ { kEoBBaseExpObjectTblIndex, kRawData, false },
+ { kEoBBaseExpObjectShpStart, kRawData, false },
+ { kEoBBaseExpObjectTbl1, kRawData, false },
+ { kEoBBaseExpObjectTbl2, kRawData, false },
+ { kEoBBaseExpObjectTbl3, kRawData, false },
+ { kEoBBaseExpObjectY, kRawData, false },
+
+ { kEoBBaseSparkDefSteps, kRawData, false },
+ { kEoBBaseSparkDefSubSteps, kRawData, false },
+ { kEoBBaseSparkDefShift, kRawData, false },
+ { kEoBBaseSparkDefAdd, kRawData, false },
+ { kEoBBaseSparkDefX, kRawData, false },
+ { kEoBBaseSparkDefY, kRawData, false },
+ { kEoBBaseSparkOfFlags1, kRawDataBe32, false },
+ { kEoBBaseSparkOfFlags2, kRawDataBe32, false },
+ { kEoBBaseSparkOfShift, kRawData, false },
+ { kEoBBaseSparkOfX, kRawData, false },
+ { kEoBBaseSparkOfY, kRawData, false },
+ { kEoBBaseSpellProperties, kRawData, false },
+ { kEoBBaseMagicFlightProps, kRawData, false },
+ { kEoBBaseTurnUndeadEffect, kRawData, false },
+ { kEoBBaseBurningHandsDest, kRawData, false },
+ { kEoBBaseConeOfColdDest1, kRawData, false },
+ { kEoBBaseConeOfColdDest2, kRawData, false },
+ { kEoBBaseConeOfColdDest3, kRawData, false },
+ { kEoBBaseConeOfColdDest4, kRawData, false },
+ { kEoBBaseConeOfColdGfxTbl, kRawData, false },
// EYE OF THE BEHOLDER I
- { kEoB1MainMenuStrings, kTypeStringList, true },
- { kEoB1BonusStrings, kTypeStringList, true },
-
- { kEoB1IntroFilesOpening, kTypeStringList, false },
- { kEoB1IntroFilesTower, kTypeStringList, false },
- { kEoB1IntroFilesOrb, kTypeStringList, false },
- { kEoB1IntroFilesWdEntry, kTypeStringList, false },
- { kEoB1IntroFilesKing, kTypeStringList, false },
- { kEoB1IntroFilesHands, kTypeStringList, false },
- { kEoB1IntroFilesWdExit, kTypeStringList, false },
- { kEoB1IntroFilesTunnel, kTypeStringList, false },
- { kEoB1IntroOpeningFrmDelay, k3TypeRaw16to8, false },
- { kEoB1IntroWdEncodeX, kTypeRawData, false },
- { kEoB1IntroWdEncodeY, kTypeRawData, false },
- { kEoB1IntroWdEncodeWH, kTypeRawData, false },
- { kEoB1IntroWdDsX, kLoLTypeRaw16, false },
- { kEoB1IntroWdDsY, kTypeRawData, false },
- { kEoB1IntroTvlX1, kTypeRawData, false },
- { kEoB1IntroTvlY1, kTypeRawData, false },
- { kEoB1IntroTvlX2, kTypeRawData, false },
- { kEoB1IntroTvlY2, kTypeRawData, false },
- { kEoB1IntroTvlW, kTypeRawData, false },
- { kEoB1IntroTvlH, kTypeRawData, false },
-
- { kEoB1DoorShapeDefs, kTypeRawData, false },
- { kEoB1DoorSwitchShapeDefs, kTypeRawData, false },
- { kEoB1DoorSwitchCoords, kTypeRawData, false },
- { kEoB1MonsterProperties, kTypeRawData, false },
- { kEoB1EnemyMageSpellList, kTypeRawData, false },
- { kEoB1EnemyMageSfx, kTypeRawData, false },
- { kEoB1BeholderSpellList, kTypeRawData, false },
- { kEoB1BeholderSfx, kTypeRawData, false },
- { kEoB1TurnUndeadString, kTypeStringList, true },
-
- { kEoB1CgaMappingDefault, kTypeRawData, false },
- { kEoB1CgaMappingAlt, kTypeRawData, false },
- { kEoB1CgaMappingInv, kTypeRawData, false },
- { kEoB1CgaMappingItemsL, kTypeRawData, false },
- { kEoB1CgaMappingItemsS, kTypeRawData, false },
- { kEoB1CgaMappingThrown, kTypeRawData, false },
- { kEoB1CgaMappingIcons, kTypeRawData, false },
- { kEoB1CgaMappingDeco, kTypeRawData, false },
- { kEoB1CgaLevelMappingIndex, kTypeRawData, false },
- { kEoB1CgaMappingLevel0, kTypeRawData, false },
- { kEoB1CgaMappingLevel1, kTypeRawData, false },
- { kEoB1CgaMappingLevel2, kTypeRawData, false },
- { kEoB1CgaMappingLevel3, kTypeRawData, false },
- { kEoB1CgaMappingLevel4, kTypeRawData, false },
-
- { kEoB1NpcShpData, kTypeRawData, false },
- { kEoB1NpcSubShpIndex1, kTypeRawData, false },
- { kEoB1NpcSubShpIndex2, kTypeRawData, false },
- { kEoB1NpcSubShpY, kTypeRawData, false },
- { kEoB1Npc0Strings, kTypeStringList, true },
- { kEoB1Npc11Strings, kTypeStringList, true },
- { kEoB1Npc12Strings, kTypeStringList, true },
- { kEoB1Npc21Strings, kTypeStringList, true },
- { kEoB1Npc22Strings, kTypeStringList, true },
- { kEoB1Npc31Strings, kTypeStringList, true },
- { kEoB1Npc32Strings, kTypeStringList, true },
- { kEoB1Npc4Strings, kTypeStringList, true },
- { kEoB1Npc5Strings, kTypeStringList, true },
- { kEoB1Npc6Strings, kTypeStringList, true },
- { kEoB1Npc7Strings, kTypeStringList, true },
+ { kEoB1MainMenuStrings, kStringList, true },
+ { kEoB1BonusStrings, kStringList, true },
+
+ { kEoB1IntroFilesOpening, kStringList, false },
+ { kEoB1IntroFilesTower, kStringList, false },
+ { kEoB1IntroFilesOrb, kStringList, false },
+ { kEoB1IntroFilesWdEntry, kStringList, false },
+ { kEoB1IntroFilesKing, kStringList, false },
+ { kEoB1IntroFilesHands, kStringList, false },
+ { kEoB1IntroFilesWdExit, kStringList, false },
+ { kEoB1IntroFilesTunnel, kStringList, false },
+ { kEoB1IntroOpeningFrmDelay, kRawData, false },
+ { kEoB1IntroWdEncodeX, kRawData, false },
+ { kEoB1IntroWdEncodeY, kRawData, false },
+ { kEoB1IntroWdEncodeWH, kRawData, false },
+ { kEoB1IntroWdDsX, kRawDataBe16, false },
+ { kEoB1IntroWdDsY, kRawData, false },
+ { kEoB1IntroTvlX1, kRawData, false },
+ { kEoB1IntroTvlY1, kRawData, false },
+ { kEoB1IntroTvlX2, kRawData, false },
+ { kEoB1IntroTvlY2, kRawData, false },
+ { kEoB1IntroTvlW, kRawData, false },
+ { kEoB1IntroTvlH, kRawData, false },
+
+ { kEoB1DoorShapeDefs, kRawData, false },
+ { kEoB1DoorSwitchShapeDefs, kRawData, false },
+ { kEoB1DoorSwitchCoords, kRawData, false },
+ { kEoB1MonsterProperties, kRawData, false },
+ { kEoB1EnemyMageSpellList, kRawData, false },
+ { kEoB1EnemyMageSfx, kRawData, false },
+ { kEoB1BeholderSpellList, kRawData, false },
+ { kEoB1BeholderSfx, kRawData, false },
+ { kEoB1TurnUndeadString, kStringList, true },
+
+ { kEoB1CgaMappingDefault, kRawData, false },
+ { kEoB1CgaMappingAlt, kRawData, false },
+ { kEoB1CgaMappingInv, kRawData, false },
+ { kEoB1CgaMappingItemsL, kRawData, false },
+ { kEoB1CgaMappingItemsS, kRawData, false },
+ { kEoB1CgaMappingThrown, kRawData, false },
+ { kEoB1CgaMappingIcons, kRawData, false },
+ { kEoB1CgaMappingDeco, kRawData, false },
+ { kEoB1CgaLevelMappingIndex, kRawData, false },
+ { kEoB1CgaMappingLevel0, kRawData, false },
+ { kEoB1CgaMappingLevel1, kRawData, false },
+ { kEoB1CgaMappingLevel2, kRawData, false },
+ { kEoB1CgaMappingLevel3, kRawData, false },
+ { kEoB1CgaMappingLevel4, kRawData, false },
+
+ { kEoB1NpcShpData, kRawData, false },
+ { kEoB1NpcSubShpIndex1, kRawData, false },
+ { kEoB1NpcSubShpIndex2, kRawData, false },
+ { kEoB1NpcSubShpY, kRawData, false },
+ { kEoB1Npc0Strings, kStringList, true },
+ { kEoB1Npc11Strings, kStringList, true },
+ { kEoB1Npc12Strings, kStringList, true },
+ { kEoB1Npc21Strings, kStringList, true },
+ { kEoB1Npc22Strings, kStringList, true },
+ { kEoB1Npc31Strings, kStringList, true },
+ { kEoB1Npc32Strings, kStringList, true },
+ { kEoB1Npc4Strings, kStringList, true },
+ { kEoB1Npc5Strings, kStringList, true },
+ { kEoB1Npc6Strings, kStringList, true },
+ { kEoB1Npc7Strings, kStringList, true },
// EYE OF THE BEHOLDER II
- { kEoB2MainMenuStrings, kTypeStringList, true },
-
- { kEoB2TransferPortraitFrames, kLoLTypeRaw16, false },
- { kEoB2TransferConvertTable, kTypeRawData, false },
- { kEoB2TransferItemTable, kTypeRawData, false },
- { kEoB2TransferExpTable, kLoLTypeRaw32, false },
- { kEoB2TransferStrings1, kTypeStringList, true },
- { kEoB2TransferStrings2, kTypeStringList, true },
- { kEoB2TransferLabels, kTypeStringList, true },
-
- { kEoB2IntroStrings, k2TypeSfxList, true },
- { kEoB2IntroCPSFiles, kTypeStringList, true },
- { kEoB2IntroAnimData00, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData01, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData02, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData03, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData04, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData05, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData06, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData07, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData08, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData09, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData10, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData11, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData12, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData13, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData14, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData15, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData16, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData17, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData18, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData19, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData20, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData21, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData22, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData23, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData24, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData25, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData26, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData27, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData28, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData29, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData30, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData31, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData32, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData33, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData34, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData35, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData36, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData37, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData38, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData39, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData40, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData41, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData42, kEoB2TypeSeqData, false },
- { kEoB2IntroAnimData43, kEoB2TypeSeqData, false },
- { kEoB2IntroShapes00, kEoB2TypeShapeData, false },
- { kEoB2IntroShapes01, kEoB2TypeShapeData, false },
- { kEoB2IntroShapes04, kEoB2TypeShapeData, false },
- { kEoB2IntroShapes07, kEoB2TypeShapeData, false },
-
- { kEoB2FinaleStrings, k2TypeSfxList, true },
- { kEoB2CreditsData, kTypeRawData, true },
- { kEoB2FinaleCPSFiles, kTypeStringList, true },
- { kEoB2FinaleAnimData00, kEoB2TypeSeqData, false },
- { kEoB2FinaleAnimData01, kEoB2TypeSeqData, false },
- { kEoB2FinaleAnimData02, kEoB2TypeSeqData, false },
- { kEoB2FinaleAnimData03, kEoB2TypeSeqData, false },
- { kEoB2FinaleAnimData04, kEoB2TypeSeqData, false },
- { kEoB2FinaleAnimData05, kEoB2TypeSeqData, false },
- { kEoB2FinaleAnimData06, kEoB2TypeSeqData, false },
- { kEoB2FinaleAnimData07, kEoB2TypeSeqData, false },
- { kEoB2FinaleAnimData08, kEoB2TypeSeqData, false },
- { kEoB2FinaleAnimData09, kEoB2TypeSeqData, false },
- { kEoB2FinaleAnimData10, kEoB2TypeSeqData, false },
- { kEoB2FinaleAnimData11, kEoB2TypeSeqData, false },
- { kEoB2FinaleAnimData12, kEoB2TypeSeqData, false },
- { kEoB2FinaleAnimData13, kEoB2TypeSeqData, false },
- { kEoB2FinaleAnimData14, kEoB2TypeSeqData, false },
- { kEoB2FinaleAnimData15, kEoB2TypeSeqData, false },
- { kEoB2FinaleAnimData16, kEoB2TypeSeqData, false },
- { kEoB2FinaleAnimData17, kEoB2TypeSeqData, false },
- { kEoB2FinaleAnimData18, kEoB2TypeSeqData, false },
- { kEoB2FinaleAnimData19, kEoB2TypeSeqData, false },
- { kEoB2FinaleAnimData20, kEoB2TypeSeqData, false },
- { kEoB2FinaleShapes00, kEoB2TypeShapeData, false },
- { kEoB2FinaleShapes03, kEoB2TypeShapeData, false },
- { kEoB2FinaleShapes07, kEoB2TypeShapeData, false },
- { kEoB2FinaleShapes09, kEoB2TypeShapeData, false },
- { kEoB2FinaleShapes10, kEoB2TypeShapeData, false },
- { kEoB2NpcShapeData, kTypeRawData, false },
- { kEoBBaseClassModifierFlags, kTypeRawData, false },
- { kEoBBaseMonsterStepTable01, kTypeRawData, false },
- { kEoBBaseMonsterStepTable02, kTypeRawData, false },
- { kEoBBaseMonsterStepTable1, kTypeRawData, false },
- { kEoBBaseMonsterStepTable2, k3TypeRaw16to8, false },
- { kEoBBaseMonsterStepTable3, k3TypeRaw16to8, false },
- { kEoBBaseMonsterCloseAttPosTable1, kTypeRawData, false },
- { kEoBBaseMonsterCloseAttPosTable21, kTypeRawData, false },
- { kEoBBaseMonsterCloseAttPosTable22, kTypeRawData, false },
- { kEoBBaseMonsterCloseAttUnkTable, kTypeRawData, false },
- { kEoBBaseMonsterCloseAttChkTable1, kTypeRawData, false },
- { kEoBBaseMonsterCloseAttChkTable2, kTypeRawData, false },
- { kEoBBaseMonsterCloseAttDstTable1, kTypeRawData, false },
- { kEoBBaseMonsterCloseAttDstTable2, kTypeRawData, false },
- { kEoBBaseMonsterProximityTable, kTypeRawData, false },
- { kEoBBaseFindBlockMonstersTable, kTypeRawData, false },
- { kEoBBaseMonsterDirChangeTable, kTypeRawData, false },
- { kEoBBaseMonsterDistAttStrings, kTypeStringList, true },
- { kEoBBaseEncodeMonsterDefs, kLoLTypeRaw16, false },
- { kEoBBaseNpcPresets, kEoBTypeNpcData, false },
- { kEoB2Npc1Strings, kTypeStringList, true },
- { kEoB2Npc2Strings, kTypeStringList, true },
- { kEoB2MonsterDustStrings, kTypeStringList, true },
- { kEoB2DreamSteps, kTypeRawData, false },
- { kEoB2KheldranStrings, kTypeStringList, true },
- { kEoB2HornStrings, kTypeStringList, true },
- { kEoB2HornSounds, kTypeRawData, false },
- { kEoB2WallOfForceDsX, kLoLTypeRaw16, false },
- { kEoB2WallOfForceDsY, kTypeRawData, false },
- { kEoB2WallOfForceNumW, kTypeRawData, false },
- { kEoB2WallOfForceNumH, kTypeRawData, false },
- { kEoB2WallOfForceShpId, kTypeRawData, false },
+ { kEoB2MainMenuStrings, kStringList, true },
+
+ { kEoB2TransferPortraitFrames, kRawDataBe16, false },
+ { kEoB2TransferConvertTable, kRawData, false },
+ { kEoB2TransferItemTable, kRawData, false },
+ { kEoB2TransferExpTable, kRawDataBe32, false },
+ { kEoB2TransferStrings1, kStringList, true },
+ { kEoB2TransferStrings2, kStringList, true },
+ { kEoB2TransferLabels, kStringList, true },
+
+ { kEoB2IntroStrings, kStringList, true },
+ { kEoB2IntroCPSFiles, kStringList, true },
+ { kEoB2IntroAnimData00, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData01, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData02, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData03, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData04, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData05, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData06, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData07, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData08, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData09, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData10, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData11, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData12, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData13, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData14, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData15, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData16, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData17, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData18, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData19, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData20, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData21, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData22, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData23, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData24, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData25, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData26, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData27, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData28, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData29, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData30, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData31, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData32, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData33, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData34, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData35, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData36, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData37, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData38, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData39, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData40, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData41, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData42, kEoB2SequenceData, false },
+ { kEoB2IntroAnimData43, kEoB2SequenceData, false },
+ { kEoB2IntroShapes00, kEoB2ShapeData, false },
+ { kEoB2IntroShapes01, kEoB2ShapeData, false },
+ { kEoB2IntroShapes04, kEoB2ShapeData, false },
+ { kEoB2IntroShapes07, kEoB2ShapeData, false },
+
+ { kEoB2FinaleStrings, kStringList, true },
+ { kEoB2CreditsData, kRawData, true },
+ { kEoB2FinaleCPSFiles, kStringList, true },
+ { kEoB2FinaleAnimData00, kEoB2SequenceData, false },
+ { kEoB2FinaleAnimData01, kEoB2SequenceData, false },
+ { kEoB2FinaleAnimData02, kEoB2SequenceData, false },
+ { kEoB2FinaleAnimData03, kEoB2SequenceData, false },
+ { kEoB2FinaleAnimData04, kEoB2SequenceData, false },
+ { kEoB2FinaleAnimData05, kEoB2SequenceData, false },
+ { kEoB2FinaleAnimData06, kEoB2SequenceData, false },
+ { kEoB2FinaleAnimData07, kEoB2SequenceData, false },
+ { kEoB2FinaleAnimData08, kEoB2SequenceData, false },
+ { kEoB2FinaleAnimData09, kEoB2SequenceData, false },
+ { kEoB2FinaleAnimData10, kEoB2SequenceData, false },
+ { kEoB2FinaleAnimData11, kEoB2SequenceData, false },
+ { kEoB2FinaleAnimData12, kEoB2SequenceData, false },
+ { kEoB2FinaleAnimData13, kEoB2SequenceData, false },
+ { kEoB2FinaleAnimData14, kEoB2SequenceData, false },
+ { kEoB2FinaleAnimData15, kEoB2SequenceData, false },
+ { kEoB2FinaleAnimData16, kEoB2SequenceData, false },
+ { kEoB2FinaleAnimData17, kEoB2SequenceData, false },
+ { kEoB2FinaleAnimData18, kEoB2SequenceData, false },
+ { kEoB2FinaleAnimData19, kEoB2SequenceData, false },
+ { kEoB2FinaleAnimData20, kEoB2SequenceData, false },
+ { kEoB2FinaleShapes00, kEoB2ShapeData, false },
+ { kEoB2FinaleShapes03, kEoB2ShapeData, false },
+ { kEoB2FinaleShapes07, kEoB2ShapeData, false },
+ { kEoB2FinaleShapes09, kEoB2ShapeData, false },
+ { kEoB2FinaleShapes10, kEoB2ShapeData, false },
+ { kEoB2NpcShapeData, kRawData, false },
+ { kEoBBaseClassModifierFlags, kRawData, false },
+ { kEoBBaseMonsterStepTable01, kRawData, false },
+ { kEoBBaseMonsterStepTable02, kRawData, false },
+ { kEoBBaseMonsterStepTable1, kRawData, false },
+ { kEoBBaseMonsterStepTable2, kRawData, false },
+ { kEoBBaseMonsterStepTable3, kRawData, false },
+ { kEoBBaseMonsterCloseAttPosTable1, kRawData, false },
+ { kEoBBaseMonsterCloseAttPosTable21, kRawData, false },
+ { kEoBBaseMonsterCloseAttPosTable22, kRawData, false },
+ { kEoBBaseMonsterCloseAttUnkTable, kRawData, false },
+ { kEoBBaseMonsterCloseAttChkTable1, kRawData, false },
+ { kEoBBaseMonsterCloseAttChkTable2, kRawData, false },
+ { kEoBBaseMonsterCloseAttDstTable1, kRawData, false },
+ { kEoBBaseMonsterCloseAttDstTable2, kRawData, false },
+ { kEoBBaseMonsterProximityTable, kRawData, false },
+ { kEoBBaseFindBlockMonstersTable, kRawData, false },
+ { kEoBBaseMonsterDirChangeTable, kRawData, false },
+ { kEoBBaseMonsterDistAttStrings, kStringList, true },
+ { kEoBBaseEncodeMonsterDefs, kRawDataBe16, false },
+ { kEoBBaseNpcPresets, kEoBNpcData, false },
+ { kEoB2Npc1Strings, kStringList, true },
+ { kEoB2Npc2Strings, kStringList, true },
+ { kEoB2MonsterDustStrings, kStringList, true },
+ { kEoB2DreamSteps, kRawData, false },
+ { kEoB2KheldranStrings, kStringList, true },
+ { kEoB2HornStrings, kStringList, true },
+ { kEoB2HornSounds, kRawData, false },
+ { kEoB2WallOfForceDsX, kRawDataBe16, false },
+ { kEoB2WallOfForceDsY, kRawData, false },
+ { kEoB2WallOfForceNumW, kRawData, false },
+ { kEoB2WallOfForceNumH, kRawData, false },
+ { kEoB2WallOfForceShpId, kRawData, false },
// LANDS OF LORE
// Ingame
- { kLoLIngamePakFiles, k2TypeSfxList, false },
-
- { kLoLCharacterDefs, kLoLTypeCharData, true },
- { kLoLIngameSfxFiles, k2TypeSfxList, false },
- { kLoLIngameSfxIndex, kTypeRawData, false },
- { kLoLMusicTrackMap, kTypeRawData, false },
- { kLoLIngameGMSfxIndex, kTypeRawData, false },
- { kLoLIngameMT32SfxIndex, kTypeRawData, false },
- { kLoLIngamePcSpkSfxIndex, kTypeRawData, false },
- { kLoLSpellProperties, kLoLTypeSpellData, false },
- { kLoLGameShapeMap, kTypeRawData, false },
- { kLoLSceneItemOffs, kTypeRawData, false },
- { kLoLCharInvIndex, k3TypeRaw16to8, false },
- { kLoLCharInvDefs, kTypeRawData, false },
- { kLoLCharDefsMan, kLoLTypeRaw16, false },
- { kLoLCharDefsWoman, kLoLTypeRaw16, false },
- { kLoLCharDefsKieran, kLoLTypeRaw16, false },
- { kLoLCharDefsAkshel, kLoLTypeRaw16, false },
- { kLoLExpRequirements, kLoLTypeRaw32, false },
- { kLoLMonsterModifiers1, kLoLTypeRaw16, false },
- { kLoLMonsterModifiers2, kLoLTypeRaw16, false },
- { kLoLMonsterModifiers3, kLoLTypeRaw16, false },
- { kLoLMonsterModifiers4, kLoLTypeRaw16, false },
- { kLoLMonsterShiftOffsets, kTypeRawData, false },
- { kLoLMonsterDirFlags, kTypeRawData, false },
- { kLoLMonsterScaleY, kTypeRawData, false },
- { kLoLMonsterScaleX, kTypeRawData, false },
- { kLoLMonsterScaleWH, kLoLTypeRaw16, false },
- { kLoLFlyingObjectShp, kLoLTypeFlightShpData, false },
- { kLoLInventoryDesc, kLoLTypeRaw16, false },
- { kLoLLevelShpList, k2TypeSfxList, false },
- { kLoLLevelDatList, k2TypeSfxList, false },
- { kLoLCompassDefs, kLoLTypeCompassData, false },
- { kLoLItemPrices, kLoLTypeRaw16, false },
- { kLoLStashSetup, kTypeRawData, false },
-
- { kLoLDscWalls, kTypeRawData, false },
- { kRpgCommonDscShapeIndex, kTypeRawData, false },
- { kLoLDscOvlMap, kTypeRawData, false },
- { kLoLDscScaleWidthData, kLoLTypeRaw16, false },
- { kLoLDscScaleHeightData, kLoLTypeRaw16, false },
- { kRpgCommonDscX, kLoLTypeRaw16, false },
- { kLoLDscY, kTypeRawData, false },
- { kRpgCommonDscTileIndex, kTypeRawData, false },
- { kRpgCommonDscUnk2, kTypeRawData, false },
- { kRpgCommonDscDoorShapeIndex, kTypeRawData, false },
- { kRpgCommonDscDimData1, kTypeRawData, false },
- { kRpgCommonDscDimData2, kTypeRawData, false },
- { kRpgCommonDscBlockMap, kTypeRawData, false },
- { kRpgCommonDscDimMap, kTypeRawData, false },
- { kLoLDscDoorScale, kLoLTypeRaw16, false },
- { kLoLDscOvlIndex, k3TypeRaw16to8, false },
- { kRpgCommonDscBlockIndex, kTypeRawData, false },
- { kLoLDscDoor4, kLoLTypeRaw16, false },
- { kRpgCommonDscDoorY2, kTypeRawData, false },
- { kRpgCommonDscDoorFrameY1, kTypeRawData, false },
- { kRpgCommonDscDoorFrameY2, kTypeRawData, false },
- { kRpgCommonDscDoorFrameIndex1, kTypeRawData, false },
- { kRpgCommonDscDoorFrameIndex2, kTypeRawData, false },
- { kLoLDscDoorX, kLoLTypeRaw16, false },
- { kLoLDscDoorY, kLoLTypeRaw16, false },
-
- { kLoLScrollXTop, k3TypeRaw16to8, false },
- { kLoLScrollYTop, k3TypeRaw16to8, false },
- { kLoLScrollXBottom, k3TypeRaw16to8, false },
- { kLoLScrollYBottom, k3TypeRaw16to8, false },
-
- { kLoLButtonDefs, kLoLTypeButtonDef, false },
- { kLoLButtonList1, k3TypeRaw16to8, false },
- { kLoLButtonList2, k3TypeRaw16to8, false },
- { kLoLButtonList3, k3TypeRaw16to8, false },
- { kLoLButtonList4, k3TypeRaw16to8, false },
- { kLoLButtonList5, k3TypeRaw16to8, false },
- { kLoLButtonList6, k3TypeRaw16to8, false },
- { kLoLButtonList7, k3TypeRaw16to8, false },
- { kLoLButtonList8, k3TypeRaw16to8, false },
-
- { kLoLLegendData, kTypeRawData, false },
- { kLoLMapCursorOvl, kTypeRawData, false },
- { kLoLMapStringId, kLoLTypeRaw16, false },
-
- { kLoLSpellbookAnim, k3TypeRaw16to8, false },
- { kLoLSpellbookCoords, k3TypeRaw16to8, false },
- { kLoLHealShapeFrames, kTypeRawData, false },
- { kLoLLightningDefs, kTypeRawData, false },
- { kLoLFireballCoords, kLoLTypeRaw16, false },
-
- { kLoLCredits, kTypeRawData, false },
-
- { kLoLHistory, kTypeRawData, false },
+ { kLoLIngamePakFiles, kStringList, false },
+
+ { kLoLCharacterDefs, kLoLCharData, true },
+ { kLoLIngameSfxFiles, kStringList, false },
+ { kLoLIngameSfxIndex, kRawData, false },
+ { kLoLMusicTrackMap, kRawData, false },
+ { kLoLIngameGMSfxIndex, kRawData, false },
+ { kLoLIngameMT32SfxIndex, kRawData, false },
+ { kLoLIngamePcSpkSfxIndex, kRawData, false },
+ { kLoLSpellProperties, kLoLSpellData, false },
+ { kLoLGameShapeMap, kRawData, false },
+ { kLoLSceneItemOffs, kRawData, false },
+ { kLoLCharInvIndex, kRawData, false },
+ { kLoLCharInvDefs, kRawData, false },
+ { kLoLCharDefsMan, kRawDataBe16, false },
+ { kLoLCharDefsWoman, kRawDataBe16, false },
+ { kLoLCharDefsKieran, kRawDataBe16, false },
+ { kLoLCharDefsAkshel, kRawDataBe16, false },
+ { kLoLExpRequirements, kRawDataBe32, false },
+ { kLoLMonsterModifiers1, kRawDataBe16, false },
+ { kLoLMonsterModifiers2, kRawDataBe16, false },
+ { kLoLMonsterModifiers3, kRawDataBe16, false },
+ { kLoLMonsterModifiers4, kRawDataBe16, false },
+ { kLoLMonsterShiftOffsets, kRawData, false },
+ { kLoLMonsterDirFlags, kRawData, false },
+ { kLoLMonsterScaleY, kRawData, false },
+ { kLoLMonsterScaleX, kRawData, false },
+ { kLoLMonsterScaleWH, kRawDataBe16, false },
+ { kLoLFlyingObjectShp, kLoLFlightShpData, false },
+ { kLoLInventoryDesc, kRawDataBe16, false },
+ { kLoLLevelShpList, kStringList, false },
+ { kLoLLevelDatList, kStringList, false },
+ { kLoLCompassDefs, kLoLCompassData, false },
+ { kLoLItemPrices, kRawDataBe16, false },
+ { kLoLStashSetup, kRawData, false },
+
+ { kLoLDscWalls, kRawData, false },
+ { kRpgCommonDscShapeIndex, kRawData, false },
+ { kLoLDscOvlMap, kRawData, false },
+ { kLoLDscScaleWidthData, kRawDataBe16, false },
+ { kLoLDscScaleHeightData, kRawDataBe16, false },
+ { kRpgCommonDscX, kRawDataBe16, false },
+ { kLoLBaseDscY, kRawData, false },
+ { kRpgCommonDscTileIndex, kRawData, false },
+ { kRpgCommonDscUnk2, kRawData, false },
+ { kRpgCommonDscDoorShapeIndex, kRawData, false },
+ { kRpgCommonDscDimData1, kRawData, false },
+ { kRpgCommonDscDimData2, kRawData, false },
+ { kRpgCommonDscBlockMap, kRawData, false },
+ { kRpgCommonDscDimMap, kRawData, false },
+ { kLoLDscDoorScale, kRawDataBe16, false },
+ { kLoLDscOvlIndex, kRawData, false },
+ { kRpgCommonDscBlockIndex, kRawData, false },
+ { kLoLDscDoor4, kRawDataBe16, false },
+ { kRpgCommonDscDoorY2, kRawData, false },
+ { kRpgCommonDscDoorFrameY1, kRawData, false },
+ { kRpgCommonDscDoorFrameY2, kRawData, false },
+ { kRpgCommonDscDoorFrameIndex1, kRawData, false },
+ { kRpgCommonDscDoorFrameIndex2, kRawData, false },
+ { kLoLDscDoorX, kRawDataBe16, false },
+ { kLoLDscDoorY, kRawDataBe16, false },
+
+ { kLoLScrollXTop, kRawData, false },
+ { kLoLScrollYTop, kRawData, false },
+ { kLoLScrollXBottom, kRawData, false },
+ { kLoLScrollYBottom, kRawData, false },
+
+ { kLoLButtonDefs, kLoLButtonData, false },
+ { kLoLButtonList1, kRawData, false },
+ { kLoLButtonList2, kRawData, false },
+ { kLoLButtonList3, kRawData, false },
+ { kLoLButtonList4, kRawData, false },
+ { kLoLButtonList5, kRawData, false },
+ { kLoLButtonList6, kRawData, false },
+ { kLoLButtonList7, kRawData, false },
+ { kLoLButtonList8, kRawData, false },
+
+ { kLoLLegendData, kRawData, false },
+ { kLoLMapCursorOvl, kRawData, false },
+ { kLoLMapStringId, kRawDataBe16, false },
+
+ { kLoLSpellbookAnim, kRawData, false },
+ { kLoLSpellbookCoords, kRawData, false },
+ { kLoLHealShapeFrames, kRawData, false },
+ { kLoLLightningDefs, kRawData, false },
+ { kLoLFireballCoords, kRawDataBe16, false },
+
+ { kLoLCredits, kRawData, false },
+
+ { kLoLHistory, kRawData, false },
{ -1, 0, 0 }
};
@@ -775,256 +773,86 @@ byte getSpecialID(int special) {
// filename processing
-uint32 getFilename(const ExtractInformation *info, const int id) {
- const ExtractFilename *fDesc = getFilenameDesc(id);
-
- if (!fDesc)
- return 0;
-
+uint32 getFilename(int game, int plat, int spec, int lang, const ExtractFilename *fDesc) {
// GAME, PLATFORM, SPECIAL, ID, LANG
- return ((getGameID(info->game) & 0xF) << 24) |
- ((getPlatformID(info->platform) & 0xF) << 20) |
- ((getSpecialID(info->special) & 0xF) << 16) |
- ((id & 0xFFF) << 4) |
- ((getLanguageID(fDesc->langSpecific ? info->lang : UNK_LANG) & 0xF) << 0);
+ return ((getGameID(game) & 0xF) << 24) |
+ ((getPlatformID(plat) & 0xF) << 20) |
+ ((getSpecialID(spec) & 0xF) << 16) |
+ ((fDesc->id & 0xFFF) << 4) |
+ ((getLanguageID(fDesc->langSpecific ? lang : UNK_LANG) & 0xF) << 0);
}
-// TODO: Get rid of this
-bool getFilename(char *dstFilename, const ExtractInformation *info, const int id) {
- sprintf(dstFilename, "%08X", getFilename(info, id));
- return true;
-}
-
-// index generation
+uint32 getFilename(const Game *g, const int id) {
+ const ExtractFilename *fDesc = getFilenameDesc(id);
-typedef uint16 GameDef;
+ if (!fDesc)
+ return 0;
-GameDef createGameDef(const ExtractInformation *eI) {
- return ((getGameID(eI->game) & 0xF) << 12) |
- ((getPlatformID(eI->platform) & 0xF) << 8) |
- ((getSpecialID(eI->special) & 0xF) << 4) |
- ((getLanguageID(eI->lang) & 0xF) << 0);
+ return getFilename(g->game, g->platform, g->special, g->lang, fDesc);
}
-struct Index {
- Index() : version(0), includedGames(0), gameList() {}
-
- uint32 version;
- uint32 includedGames;
-
- typedef std::list<GameDef> GameList;
- GameList gameList;
-};
-
-Index parseIndex(const uint8 *data, uint32 size) {
- Index result;
-
- if (size < 8)
- return result;
-
- result.version = READ_BE_UINT32(data); data += 4;
- result.includedGames = READ_BE_UINT32(data); data += 4;
-
- if (result.includedGames * 2 + 8 != size) {
- result.version = result.includedGames = 0;
- return result;
- }
-
- for (uint32 i = 0; i < result.includedGames; ++i) {
- GameDef game = READ_BE_UINT16(data); data += 2;
- result.gameList.push_back(game);
- }
-
- return result;
+uint32 getFilename(const ResourceProvider *provider, const ExtractFilename *fDesc) {
+ return getFilename(provider->game, provider->platform, provider->special, provider->language, fDesc);
}
-bool updateIndex(PAKFile &out, const ExtractInformation *eI) {
- uint32 size = 0;
- const uint8 *data = out.getFileData("INDEX", &size);
-
- Index index;
- if (data)
- index = parseIndex(data, size);
-
- GameDef gameDef = createGameDef(eI);
- if (index.version == kKyraDatVersion) {
- if (std::find(index.gameList.begin(), index.gameList.end(), gameDef) == index.gameList.end()) {
- ++index.includedGames;
- index.gameList.push_back(gameDef);
- } else {
- // Already included in the game list, thus we do not need any further processing here.
- return true;
- }
- } else {
- index.version = kKyraDatVersion;
- index.includedGames = 1;
- index.gameList.push_back(gameDef);
- }
-
- const uint32 indexBufferSize = 8 + index.includedGames * 2;
- uint8 *indexBuffer = new uint8[indexBufferSize];
- assert(indexBuffer);
- uint8 *dst = indexBuffer;
- WRITE_BE_UINT32(dst, index.version); dst += 4;
- WRITE_BE_UINT32(dst, index.includedGames); dst += 4;
- for (Index::GameList::const_iterator i = index.gameList.begin(); i != index.gameList.end(); ++i) {
- WRITE_BE_UINT16(dst, *i); dst += 2;
- }
-
- out.removeFile("INDEX");
- if (!out.addFile("INDEX", indexBuffer, indexBufferSize)) {
- fprintf(stderr, "ERROR: couldn't update kyra.dat INDEX\n");
- delete[] indexBuffer;
- return false;
- }
-
+bool getFilename(char *dstFilename, const Game *g, const int id) {
+ sprintf(dstFilename, "%08X", getFilename(g, id));
return true;
}
-bool checkIndex(PAKFile &file) {
- uint32 size = 0;
- const uint8 *data = file.getFileData("INDEX", &size);
- if (!data)
- return false;
-
- Index index = parseIndex(data, size);
+// index generation
- if (index.version != kKyraDatVersion)
- return false;
- if (index.includedGames * 2 + 8 != size)
- return false;
+typedef uint16 GameDef;
- return true;
+GameDef createGameDef(const Game *g) {
+ return ((getGameID(g->game) & 0xF) << 12) |
+ ((getPlatformID(g->platform) & 0xF) << 8) |
+ ((getSpecialID(g->special) & 0xF) << 4) |
+ ((getLanguageID(g->lang) & 0xF) << 0);
+ return 0;
}
// main processing
void printHelp(const char *f) {
printf("Usage:\n");
- printf("%s output inputfiles ...\n", f);
+ printf("%s output\n", f);
}
-bool process(PAKFile &out, const Game *g, const byte *data, const uint32 size);
-const Game *findGame(const byte *buffer, const uint32 size);
-
-typedef std::map<std::string, std::string> MD5Map;
-MD5Map createMD5Sums(int files, const char * const *filenames);
-
-struct File {
- File() : data(0), size(0) {}
- File(uint8 *d, uint32 s) : data(d), size(s) {}
-
- uint8 *data;
- uint32 size;
-};
-typedef std::map<const Game *, File> GameMap;
-GameMap createGameMap(const MD5Map &map);
+void outputAllResources(PAKFile &out);
+void outputAllGames(PAKFile &out, std::vector<GameDef> &games);
int main(int argc, char *argv[]) {
- if (argc < 3) {
+ if (argc != 2) {
printHelp(argv[0]);
return -1;
}
- // Special case for developer mode of this tool:
- // With "--create filename offset size" the tool will output
- // a search entry for the specifed data in the specified file.
- if (!strcmp(argv[1], "--create")) {
- if (argc < 5) {
- printf("Developer usage: %s --create input_file hex_offset hex_size\n", argv[0]);
- return -1;
- }
-
- uint32 offset, size;
- sscanf(argv[3], "%x", &offset);
- sscanf(argv[4], "%x", &size);
-
- FILE *input = fopen(argv[2], "rb");
- if (!input)
- error("Couldn't open file '%s'", argv[2]);
-
- byte *buffer = new byte[size];
- fseek(input, offset, SEEK_SET);
- if (fread(buffer, 1, size, input) != size) {
- delete[] buffer;
- error("Couldn't read from file '%s'", argv[2]);
- }
-
- fclose(input);
-
- SearchData d = SearchCreator::create(buffer, size);
- delete[] buffer;
-
- printf("{ 0x%.08X, 0x%.08X, { {", d.size, d.byteSum);
- for (int j = 0; j < 16; ++j) {
- printf(" 0x%.2X", d.hash.digest[j]);
- if (j != 15)
- printf(",");
- else
- printf(" } } }\n");
- }
-
- return 0;
- }
-
PAKFile out;
- out.loadFile(argv[1], false);
- // When the output file is no valid kyra.dat file, we will delete
- // all the output.
- if (!checkIndex(out))
- out.clearFile();
+ // First step: Write out all resources.
+ outputAllResources(out);
- MD5Map inputFiles = createMD5Sums(argc - 2, &argv[2]);
+ // Second step: Write all game version information
+ std::vector<GameDef> games;
+ outputAllGames(out, games);
- GameMap games = createGameMap(inputFiles);
-
- // Check for unused input files
- MD5Map unusedFiles = inputFiles;
- for (GameMap::const_iterator i = games.begin(); i != games.end(); ++i) {
- unusedFiles.erase(i->first->md5[0]);
- if (i->first->md5[1])
- unusedFiles.erase(i->first->md5[1]);
+ // Third step: Write index file
+ byte *const indexBuffer = new byte[8 + 2 * games.size()];
+ byte *dst = indexBuffer;
+ WRITE_BE_UINT32(dst, kKyraDatVersion); dst += 4;
+ WRITE_BE_UINT32(dst, games.size()); dst += 4;
+ for (std::vector<GameDef>::const_iterator i = games.begin(), end = games.end(); i != end; ++i) {
+ WRITE_BE_UINT16(dst, *i); dst += 2;
}
-
- for (MD5Map::const_iterator i = unusedFiles.begin(); i != unusedFiles.end(); ++i)
- printf("Input file '%s' with md5 sum '%s' is not known.\n", i->second.c_str(), i->first.c_str());
-
- unusedFiles.clear();
-
- // Short circuit, in case no games are found.
- if (games.empty()) {
- printf("No games found. Exiting prematurely\n");
- return -1;
+ if (!out.addFile("INDEX", indexBuffer, 8 + 2 * games.size())) {
+ error("couldn't write INDEX file");
}
- // Process all games found
- for (GameMap::const_iterator i = games.begin(); i != games.end(); ++i) {
- MD5Map::const_iterator f1 = inputFiles.find(i->first->md5[0]);
- MD5Map::const_iterator f2 = inputFiles.end();
- if (i->first->md5[1])
- f2 = inputFiles.find(i->first->md5[1]);
-
- if (f2 != inputFiles.end())
- printf("Processing files '%s' and '%s'...\n", f1->second.c_str(), f2->second.c_str());
- else
- printf("Processing file '%s'...\n", f1->second.c_str());
-
- if (!process(out, i->first, i->second.data, i->second.size))
- printf("FAILED\n");
- else
- printf("OK\n");
+ if (!out.saveFile(argv[1])) {
+ error("couldn't save changes to '%s'", argv[1]);
}
- // Free up memory
- for (GameMap::iterator i = games.begin(); i != games.end(); ++i)
- delete[] i->second.data;
- games.clear();
- inputFiles.clear();
-
- if (!out.saveFile(argv[1]))
- error("couldn't save changes to '%s'", argv[1]);
-
uint8 digest[16];
if (!md5_file(argv[1], digest, 0))
error("couldn't calc. md5 for file '%s'", argv[1]);
@@ -1038,1309 +866,46 @@ int main(int argc, char *argv[]) {
return 0;
}
-MD5Map createMD5Sums(int files, const char * const *filenames) {
- MD5Map result;
-
- while (files--) {
- const char *inputFile = *filenames++;
- FILE *input = fopen(inputFile, "rb");
-
- uint32 size = fileSize(input);
- fseek(input, 0, SEEK_SET);
-
- byte *buffer = new uint8[size];
- assert(buffer);
-
- if (fread(buffer, 1, size, input) != size) {
- warning("couldn't read from file '%s', skipping it", inputFile);
- delete[] buffer;
- fclose(input);
- continue;
- }
- fclose(input);
-
- md5_context ctx;
- uint8 digest[16];
- char md5Str[33];
-
- md5_starts(&ctx);
- md5_update(&ctx, buffer, size);
- md5_finish(&ctx, digest);
-
- for (int j = 0; j < 16; ++j)
- sprintf(md5Str + j*2, "%02x", (int)digest[j]);
+void outputAllResources(PAKFile &out) {
+ char filename[128];
+ for (const ResourceProvider *resource = obtainResourceProviders();
+ resource->id != kMaxResIDs; ++resource) {
+ const ExtractFilename *desc = getFilenameDesc(resource->id);
- delete[] buffer;
+ snprintf(filename, sizeof(filename), "%08X", getFilename(resource, desc));
- result[md5Str] = inputFile;
+ writeResource(out, filename, (ResTypes)desc->type, resource->provider);
}
-
- return result;
}
-GameMap createGameMap(const MD5Map &map) {
- GameMap result;
+bool createIDMap(PAKFile &out, const Game *g, const int *needList);
- for (const Game * const *g = gameDescs; *g != 0; ++g) {
- for (const Game *sub = *g; sub->game != -1; ++sub) {
- MD5Map::const_iterator file1 = map.find(sub->md5[0]);
- if (file1 == map.end())
- continue;
-
- MD5Map::const_iterator file2 = map.end();
- if (sub->md5[1] != 0) {
- file2 = map.find(sub->md5[1]);
- if (file2 == map.end())
- continue;
+void outputAllGames(PAKFile &out, std::vector<GameDef> &games) {
+ for (const Game *const *descs = gameDescs;
+ *descs; ++descs) {
+ for (const Game *game = *descs;
+ game->game != -1; ++game) {
+ const GameDef gameDef = createGameDef(game);
+ if (!createIDMap(out, game, getNeedList(game))) {
+ error("Could not create ID map for game %04X", gameDef);
}
-
- FILE *f1 = fopen(file1->second.c_str(), "rb");
- FILE *f2 = 0;
-
- if (file2 != map.end())
- f2 = fopen(file2->second.c_str(), "rb");
-
- uint32 file1Size = fileSize(f1);
- uint32 file2Size = 0;
- if (f2)
- file2Size = fileSize(f2);
-
- uint8 *buffer = new uint8[file1Size + file2Size];
- assert(buffer);
-
- fread(buffer, 1, file1Size, f1);
- if (f2)
- fread(buffer + file1Size, 1, file2Size, f2);
-
- fclose(f1);
- if (f2)
- fclose(f2);
-
- result[sub] = File(buffer, file1Size + file2Size);
+ games.push_back(gameDef);
}
}
-
- return result;
-}
-
-const char *getIdString(const int id) {
- switch (id) {
- case k1ForestSeq:
- return "k1ForestSeq";
- case k1KallakWritingSeq:
- return "k1KallakWritingSeq";
- case k1KyrandiaLogoSeq:
- return "k1KyrandiaLogoSeq";
- case k1KallakMalcolmSeq:
- return "k1KallakMalcolmSeq";
- case k1MalcolmTreeSeq:
- return "k1MalcolmTreeSeq";
- case k1WestwoodLogoSeq:
- return "k1WestwoodLogoSeq";
- case k1Demo1Seq:
- return "k1Demo1Seq";
- case k1Demo2Seq:
- return "k1Demo2Seq";
- case k1Demo3Seq:
- return "k1Demo3Seq";
- case k1Demo4Seq:
- return "k1Demo4Seq";
- case k1AmuleteAnimSeq:
- return "k1AmuleteAnimSeq";
- case k1OutroReunionSeq:
- return "k1OutroReunionSeq";
- case k1IntroCPSStrings:
- return "k1IntroCPSStrings";
- case k1IntroCOLStrings:
- return "k1IntroCOLStrings";
- case k1IntroWSAStrings:
- return "k1IntroWSAStrings";
- case k1IntroStrings:
- return "k1IntroStrings";
- case k1OutroHomeString:
- return "k1OutroHomeString";
- case k1RoomFilenames:
- return "k1RoomFilenames";
- case k1RoomList:
- return "k1RoomList";
- case k1CharacterImageFilenames:
- return "k1CharacterImageFilenames";
- case k1AudioTracks:
- return "k1AudioTracks";
- case k1AudioTracks2:
- return "k1AudioTracks2";
- case k1AudioTracksIntro:
- return "k1AudioTracksIntro";
- case k1ItemNames:
- return "k1ItemNames";
- case k1TakenStrings:
- return "k1TakenStrings";
- case k1PlacedStrings:
- return "k1PlacedStrings";
- case k1DroppedStrings:
- return "k1DroppedStrings";
- case k1NoDropStrings:
- return "k1NoDropStrings";
- case k1PutDownString:
- return "k1PutDownString";
- case k1WaitAmuletString:
- return "k1WaitAmuletString";
- case k1BlackJewelString:
- return "k1BlackJewelString";
- case k1PoisonGoneString:
- return "k1PoisonGoneString";
- case k1HealingTipString:
- return "k1HealingTipString";
- case k1WispJewelStrings:
- return "k1WispJewelStrings";
- case k1MagicJewelStrings:
- return "k1MagicJewelStrings";
- case k1ThePoisonStrings:
- return "k1ThePoisonStrings";
- case k1FluteStrings:
- return "k1FluteStrings";
- case k1FlaskFullString:
- return "k1FlaskFullString";
- case k1FullFlaskString:
- return "k1FullFlaskString";
- case k1VeryCleverString:
- return "k1VeryCleverString";
- case k1NewGameString:
- return "k1NewGameString";
- case k1DefaultShapes:
- return "k1DefaultShapes";
- case k1Healing1Shapes:
- return "k1Healing1Shapes";
- case k1Healing2Shapes:
- return "k1Healing2Shapes";
- case k1PoisonDeathShapes:
- return "k1PoisonDeathShapes";
- case k1FluteShapes:
- return "k1FluteShapes";
- case k1Winter1Shapes:
- return "k1Winter1Shapes";
- case k1Winter2Shapes:
- return "k1Winter2Shapes";
- case k1Winter3Shapes:
- return "k1Winter3Shapes";
- case k1DrinkShapes:
- return "k1DrinkShapes";
- case k1WispShapes:
- return "k1WispShapes";
- case k1MagicAnimShapes:
- return "k1MagicAnimShapes";
- case k1BranStoneShapes:
- return "k1BranStoneShapes";
- case k1SpecialPalette1:
- return "k1SpecialPalette1";
- case k1SpecialPalette2:
- return "k1SpecialPalette2";
- case k1SpecialPalette3:
- return "k1SpecialPalette3";
- case k1SpecialPalette4:
- return "k1SpecialPalette4";
- case k1SpecialPalette5:
- return "k1SpecialPalette5";
- case k1SpecialPalette6:
- return "k1SpecialPalette6";
- case k1SpecialPalette7:
- return "k1SpecialPalette7";
- case k1SpecialPalette8:
- return "k1SpecialPalette8";
- case k1SpecialPalette9:
- return "k1SpecialPalette9";
- case k1SpecialPalette10:
- return "k1SpecialPalette10";
- case k1SpecialPalette11:
- return "k1SpecialPalette11";
- case k1SpecialPalette12:
- return "k1SpecialPalette12";
- case k1SpecialPalette13:
- return "k1SpecialPalette13";
- case k1SpecialPalette14:
- return "k1SpecialPalette14";
- case k1SpecialPalette15:
- return "k1SpecialPalette15";
- case k1SpecialPalette16:
- return "k1SpecialPalette16";
- case k1SpecialPalette17:
- return "k1SpecialPalette17";
- case k1SpecialPalette18:
- return "k1SpecialPalette18";
- case k1SpecialPalette19:
- return "k1SpecialPalette19";
- case k1SpecialPalette20:
- return "k1SpecialPalette20";
- case k1SpecialPalette21:
- return "k1SpecialPalette21";
- case k1SpecialPalette22:
- return "k1SpecialPalette22";
- case k1SpecialPalette23:
- return "k1SpecialPalette23";
- case k1SpecialPalette24:
- return "k1SpecialPalette24";
- case k1SpecialPalette25:
- return "k1SpecialPalette25";
- case k1SpecialPalette26:
- return "k1SpecialPalette26";
- case k1SpecialPalette27:
- return "k1SpecialPalette27";
- case k1SpecialPalette28:
- return "k1SpecialPalette28";
- case k1SpecialPalette29:
- return "k1SpecialPalette29";
- case k1SpecialPalette30:
- return "k1SpecialPalette30";
- case k1SpecialPalette31:
- return "k1SpecialPalette31";
- case k1SpecialPalette32:
- return "k1SpecialPalette32";
- case k1SpecialPalette33:
- return "k1SpecialPalette33";
- case k1GUIStrings:
- return "k1GUIStrings";
- case k1ConfigStrings:
- return "k1ConfigStrings";
- case k1TownsMusicFadeTable:
- return "k1TownsMusicFadeTable";
- case k1TownsSFXwdTable:
- return "k1TownsSFXwdTable";
- case k1TownsSFXbtTable:
- return "k1TownsSFXbtTable";
- case k1TownsCDATable:
- return "k1TownsCDATable";
- case k1PC98StoryStrings:
- return "k1PC98StoryStrings";
- case k1PC98IntroSfx:
- return "k1PC98IntroSfx";
- case k1CreditsStrings:
- return "k1CreditsStrings";
- case k1AmigaIntroSFXTable:
- return "k1AmigaIntroSFXTable";
- case k1AmigaGameSFXTable:
- return "k1AmigaGameSFXTable";
- case k2SeqplayPakFiles:
- return "k2SeqplayPakFiles";
- case k2SeqplayStrings:
- return "k2SeqplayStrings";
- case k2SeqplaySfxFiles:
- return "k2SeqplaySfxFiles";
- case k2SeqplayTlkFiles:
- return "k2SeqplayTlkFiles";
- case k2SeqplaySeqData:
- return "k2SeqplaySeqData";
- case k2SeqplayCredits:
- return "k2SeqplayCredits";
- case k2SeqplayCreditsSpecial:
- return "k2SeqplayCreditsSpecial";
- case k2SeqplayIntroTracks:
- return "k2SeqplayIntroTracks";
- case k2SeqplayFinaleTracks:
- return "k2SeqplayFinaleTracks";
- case k2SeqplayIntroCDA:
- return "k2SeqplayIntroCDA";
- case k2SeqplayFinaleCDA:
- return "k2SeqplayFinaleCDA";
- case k2SeqplayShapeAnimData:
- return "k2SeqplayShapeAnimData";
- case k2IngamePakFiles:
- return "k2IngamePakFiles";
- case k2IngameSfxFiles:
- return "k2IngameSfxFiles";
- case k2IngameSfxIndex:
- return "k2IngameSfxIndex";
- case k2IngameTracks:
- return "k2IngameTracks";
- case k2IngameCDA:
- return "k2IngameCDA";
- case k2IngameTalkObjIndex:
- return "k2IngameTalkObjIndex";
- case k2IngameTimJpStrings:
- return "k2IngameTimJpStrings";
- case k2IngameShapeAnimData:
- return "k2IngameShapeAnimData";
- case k2IngameTlkDemoStrings:
- return "k2IngameTlkDemoStrings";
- case k3MainMenuStrings:
- return "k3MainMenuStrings";
- case k3MusicFiles:
- return "k3MusicFiles";
- case k3ScoreTable:
- return "k3ScoreTable";
- case k3SfxFiles:
- return "k3SfxFiles";
- case k3SfxMap:
- return "k3SfxMap";
- case k3ItemAnimData:
- return "k3ItemAnimData";
- case k3ItemMagicTable:
- return "k3ItemMagicTable";
- case k3ItemStringMap:
- return "k3ItemStringMap";
- case kEoBBaseChargenStrings1:
- return "kEoBBaseChargenStrings1";
- case kEoBBaseChargenStrings2:
- return "kEoBBaseChargenStrings2";
- case kEoBBaseChargenStartLevels:
- return "kEoBBaseChargenStartLevels";
- case kEoBBaseChargenStatStrings:
- return "kEoBBaseChargenStatStrings";
- case kEoBBaseChargenRaceSexStrings:
- return "kEoBBaseChargenRaceSexStrings";
- case kEoBBaseChargenClassStrings:
- return "kEoBBaseChargenClassStrings";
- case kEoBBaseChargenAlignmentStrings:
- return "kEoBBaseChargenAlignmentStrings";
- case kEoBBaseChargenEnterGameStrings:
- return "kEoBBaseChargenEnterGameStrings";
- case kEoBBaseChargenClassMinStats:
- return "kEoBBaseChargenClassMinStats";
- case kEoBBaseChargenRaceMinStats:
- return "kEoBBaseChargenRaceMinStats";
- case kEoBBaseChargenRaceMaxStats:
- return "kEoBBaseChargenRaceMaxStats";
- case kEoBBaseSaveThrowTable1:
- return "kEoBBaseSaveThrowTable1";
- case kEoBBaseSaveThrowTable2:
- return "kEoBBaseSaveThrowTable2";
- case kEoBBaseSaveThrowTable3:
- return "kEoBBaseSaveThrowTable3";
- case kEoBBaseSaveThrowTable4:
- return "kEoBBaseSaveThrowTable4";
- case kEoBBaseSaveThrwLvlIndex:
- return "kEoBBaseSaveThrwLvlIndex";
- case kEoBBaseSaveThrwModDiv:
- return "kEoBBaseSaveThrwModDiv";
- case kEoBBaseSaveThrwModExt:
- return "kEoBBaseSaveThrwModExt";
- case kEoBBasePryDoorStrings:
- return "kEoBBasePryDoorStrings";
- case kEoBBaseWarningStrings:
- return "kEoBBaseWarningStrings";
- case kEoBBaseItemSuffixStringsRings:
- return "kEoBBaseItemSuffixStringsRings";
- case kEoBBaseItemSuffixStringsPotions:
- return "kEoBBaseItemSuffixStringsPotions";
- case kEoBBaseItemSuffixStringsWands:
- return "kEoBBaseItemSuffixStringsWands";
- case kEoBBaseRipItemStrings:
- return "kEoBBaseRipItemStrings";
- case kEoBBaseCursedString:
- return "kEoBBaseCursedString";
- case kEoBBaseEnchantedString:
- return "kEoBBaseEnchantedString";
- case kEoBBaseMagicObjectStrings:
- return "kEoBBaseMagicObjectStrings";
- case kEoBBaseMagicObject5String:
- return "kEoBBaseMagicObject5String";
- case kEoBBasePatternSuffix:
- return "kEoBBasePatternSuffix";
- case kEoBBasePatternGrFix1:
- return "kEoBBasePatternGrFix1";
- case kEoBBasePatternGrFix2:
- return "kEoBBasePatternGrFix2";
- case kEoBBaseValidateArmorString:
- return "kEoBBaseValidateArmorString";
- case kEoBBaseValidateCursedString:
- return "kEoBBaseValidateCursedString";
- case kEoBBaseValidateNoDropString:
- return "kEoBBaseValidateNoDropString";
- case kEoBBasePotionStrings:
- return "kEoBBasePotionStrings";
- case kEoBBaseWandString:
- return "kEoBBaseWandString";
- case kEoBBaseItemMisuseStrings:
- return "kEoBBaseItemMisuseStrings";
- case kEoBBaseTakenStrings:
- return "kEoBBaseTakenStrings";
- case kEoBBasePotionEffectStrings:
- return "kEoBBasePotionEffectStrings";
- case kEoBBaseYesNoStrings:
- return "kEoBBaseYesNoStrings";
- case kRpgCommonMoreStrings:
- return "kRpgCommonMoreStrings";
- case kEoBBaseNpcMaxStrings:
- return "kEoBBaseNpcMaxStrings";
- case kEoBBaseOkStrings:
- return "kEoBBaseOkStrings";
- case kEoBBaseNpcJoinStrings:
- return "kEoBBaseNpcJoinStrings";
- case kEoBBaseCancelStrings:
- return "kEoBBaseCancelStrings";
- case kEoBBaseAbortStrings:
- return "kEoBBaseAbortStrings";
- case kEoBBaseMenuStringsMain:
- return "kEoBBaseMenuStringsMain";
- case kEoBBaseMenuStringsSaveLoad:
- return "kEoBBaseMenuStringsSaveLoad";
- case kEoBBaseMenuStringsOnOff:
- return "kEoBBaseMenuStringsOnOff";
- case kEoBBaseMenuStringsSpells:
- return "kEoBBaseMenuStringsSpells";
- case kEoBBaseMenuStringsRest:
- return "kEoBBaseMenuStringsRest";
- case kEoBBaseMenuStringsDrop:
- return "kEoBBaseMenuStringsDrop";
- case kEoBBaseMenuStringsExit:
- return "kEoBBaseMenuStringsExit";
- case kEoBBaseMenuStringsStarve:
- return "kEoBBaseMenuStringsStarve";
- case kEoBBaseMenuStringsScribe:
- return "kEoBBaseMenuStringsScribe";
- case kEoBBaseMenuStringsDrop2:
- return "kEoBBaseMenuStringsDrop2";
- case kEoBBaseMenuStringsHead:
- return "kEoBBaseMenuStringsHead";
- case kEoBBaseMenuStringsPoison:
- return "kEoBBaseMenuStringsPoison";
- case kEoBBaseMenuStringsMgc:
- return "kEoBBaseMenuStringsMgc";
- case kEoBBaseMenuStringsPrefs:
- return "kEoBBaseMenuStringsPrefs";
- case kEoBBaseMenuStringsRest2:
- return "kEoBBaseMenuStringsRest2";
- case kEoBBaseMenuStringsRest3:
- return "kEoBBaseMenuStringsRest3";
- case kEoBBaseMenuStringsRest4:
- return "kEoBBaseMenuStringsRest4";
- case kEoBBaseMenuStringsDefeat:
- return "kEoBBaseMenuStringsDefeat";
- case kEoBBaseMenuStringsTransfer:
- return "kEoBBaseMenuStringsTransfer";
- case kEoBBaseMenuStringsSpec:
- return "kEoBBaseMenuStringsSpec";
- case kEoBBaseMenuStringsSpellNo:
- return "kEoBBaseMenuStringsSpellNo";
- case kEoBBaseMenuYesNoStrings:
- return "kEoBBaseMenuYesNoStrings";
- case kEoBBaseSpellLevelsMage:
- return "kEoBBaseSpellLevelsMage";
- case kEoBBaseSpellLevelsCleric:
- return "kEoBBaseSpellLevelsCleric";
- case kEoBBaseNumSpellsCleric:
- return "kEoBBaseNumSpellsCleric";
- case kEoBBaseNumSpellsWisAdj:
- return "kEoBBaseNumSpellsWisAdj";
- case kEoBBaseNumSpellsPal:
- return "kEoBBaseNumSpellsPal";
- case kEoBBaseNumSpellsMage:
- return "kEoBBaseNumSpellsMage";
- case kEoBBaseCharGuiStringsHp:
- return "kEoBBaseCharGuiStringsHp";
- case kEoBBaseCharGuiStringsWp1:
- return "kEoBBaseCharGuiStringsWp1";
- case kEoBBaseCharGuiStringsWp2:
- return "kEoBBaseCharGuiStringsWp2";
- case kEoBBaseCharGuiStringsWr:
- return "kEoBBaseCharGuiStringsWr";
- case kEoBBaseCharGuiStringsSt1:
- return "kEoBBaseCharGuiStringsSt1";
- case kEoBBaseCharGuiStringsSt2:
- return "kEoBBaseCharGuiStringsSt2";
- case kEoBBaseCharGuiStringsIn:
- return "kEoBBaseCharGuiStringsIn";
- case kEoBBaseCharStatusStrings7:
- return "kEoBBaseCharStatusStrings7";
- case kEoBBaseCharStatusStrings81:
- return "kEoBBaseCharStatusStrings81";
- case kEoBBaseCharStatusStrings82:
- return "kEoBBaseCharStatusStrings82";
- case kEoBBaseCharStatusStrings9:
- return "kEoBBaseCharStatusStrings9";
- case kEoBBaseCharStatusStrings12:
- return "kEoBBaseCharStatusStrings12";
- case kEoBBaseCharStatusStrings131:
- return "kEoBBaseCharStatusStrings131";
- case kEoBBaseCharStatusStrings132:
- return "kEoBBaseCharStatusStrings132";
- case kEoBBaseLevelGainStrings:
- return "kEoBBaseLevelGainStrings";
- case kEoBBaseExperienceTable0:
- return "kEoBBaseExperienceTable0";
- case kEoBBaseExperienceTable1:
- return "kEoBBaseExperienceTable1";
- case kEoBBaseExperienceTable2:
- return "kEoBBaseExperienceTable2";
- case kEoBBaseExperienceTable3:
- return "kEoBBaseExperienceTable3";
- case kEoBBaseExperienceTable4:
- return "kEoBBaseExperienceTable4";
- case kEoBBaseWllFlagPreset:
- return "kEoBBaseWllFlagPreset";
- case kEoBBaseDscShapeCoords:
- return "kEoBBaseDscShapeCoords";
- case kEoBBaseDscDoorScaleOffs:
- return "kEoBBaseDscDoorScaleOffs";
- case kEoBBaseDscDoorScaleMult1:
- return "kEoBBaseDscDoorScaleMult1";
- case kEoBBaseDscDoorScaleMult2:
- return "kEoBBaseDscDoorScaleMult2";
- case kEoBBaseDscDoorScaleMult3:
- return "kEoBBaseDscDoorScaleMult3";
- case kEoBBaseDscDoorScaleMult4:
- return "kEoBBaseDscDoorScaleMult4";
- case kEoBBaseDscDoorScaleMult5:
- return "kEoBBaseDscDoorScaleMult5";
- case kEoBBaseDscDoorScaleMult6:
- return "kEoBBaseDscDoorScaleMult6";
- case kEoBBaseDscDoorType5Offs:
- return "kEoBBaseDscDoorType5Offs";
- case kEoBBaseDscDoorXE:
- return "kEoBBaseDscDoorXE";
- case kEoBBaseDscDoorY1:
- return "kEoBBaseDscDoorY1";
- case kEoBBaseDscDoorY3:
- return "kEoBBaseDscDoorY3";
- case kEoBBaseDscDoorY4:
- return "kEoBBaseDscDoorY4";
- case kEoBBaseDscDoorY5:
- return "kEoBBaseDscDoorY5";
- case kEoBBaseDscDoorY6:
- return "kEoBBaseDscDoorY6";
- case kEoBBaseDscDoorY7:
- return "kEoBBaseDscDoorY7";
- case kEoBBaseDscDoorCoordsExt:
- return "kEoBBaseDscDoorCoordsExt";
- case kEoBBaseDscItemPosIndex:
- return "kEoBBaseDscItemPosIndex";
- case kEoBBaseDscItemShpX:
- return "kEoBBaseDscItemShpX";
- case kEoBBaseDscItemPosUnk:
- return "kEoBBaseDscItemPosUnk";
- case kEoBBaseDscItemTileIndex:
- return "kEoBBaseDscItemTileIndex";
- case kEoBBaseDscItemShapeMap:
- return "kEoBBaseDscItemShapeMap";
- case kEoBBaseDscMonsterFrmOffsTbl1:
- return "kEoBBaseDscMonsterFrmOffsTbl1";
- case kEoBBaseDscMonsterFrmOffsTbl2:
- return "kEoBBaseDscMonsterFrmOffsTbl2";
- case kEoBBaseInvSlotX:
- return "kEoBBaseInvSlotX";
- case kEoBBaseInvSlotY:
- return "kEoBBaseInvSlotY";
- case kEoBBaseSlotValidationFlags:
- return "kEoBBaseSlotValidationFlags";
- case kEoBBaseProjectileWeaponTypes:
- return "kEoBBaseProjectileWeaponTypes";
- case kEoBBaseWandTypes:
- return "kEoBBaseWandTypes";
- case kEoBBaseDrawObjPosIndex:
- return "kEoBBaseDrawObjPosIndex";
- case kEoBBaseFlightObjFlipIndex:
- return "kEoBBaseFlightObjFlipIndex";
- case kEoBBaseFlightObjShpMap:
- return "kEoBBaseFlightObjShpMap";
- case kEoBBaseFlightObjSclIndex:
- return "kEoBBaseFlightObjSclIndex";
- case kEoBBaseDscTelptrShpCoords:
- return "kEoBBaseDscTelptrShpCoords";
- case kEoBBasePortalSeqData:
- return "kEoBBasePortalSeqData";
- case kEoBBaseManDef:
- return "kEoBBaseManDef";
- case kEoBBaseManWord:
- return "kEoBBaseManWord";
- case kEoBBaseManPrompt:
- return "kEoBBaseManPrompt";
- case kEoBBaseBookNumbers:
- return "kEoBBaseBookNumbers";
- case kEoBBaseMageSpellsList:
- return "kEoBBaseMageSpellsList";
- case kEoBBaseClericSpellsList:
- return "kEoBBaseClericSpellsList";
- case kEoBBaseSpellNames:
- return "kEoBBaseSpellNames";
-
- case kEoBBaseMagicStrings1:
- return "kEoBBaseMagicStrings1";
- case kEoBBaseMagicStrings2:
- return "kEoBBaseMagicStrings2";
- case kEoBBaseMagicStrings3:
- return "kEoBBaseMagicStrings3";
- case kEoBBaseMagicStrings4:
- return "kEoBBaseMagicStrings4";
- case kEoBBaseMagicStrings6:
- return "kEoBBaseMagicStrings6";
- case kEoBBaseMagicStrings7:
- return "kEoBBaseMagicStrings7";
- case kEoBBaseMagicStrings8:
- return "kEoBBaseMagicStrings8";
- case kEoBBaseExpObjectTlMode:
- return "kEoBBaseExpObjectTlMode";
- case kEoBBaseExpObjectTblIndex:
- return "kEoBBaseExpObjectTblIndex";
- case kEoBBaseExpObjectShpStart:
- return "kEoBBaseExpObjectShpStart";
- case kEoBBaseExpObjectTbl1:
- return "kEoBBaseExpObjectTbl1";
- case kEoBBaseExpObjectTbl2:
- return "kEoBBaseExpObjectTbl2";
- case kEoBBaseExpObjectTbl3:
- return "kEoBBaseExpObjectTbl3";
- case kEoBBaseExpObjectY:
- return "kEoBBaseExpObjectY";
- case kEoBBaseSparkDefSteps:
- return "kEoBBaseSparkDefSteps";
- case kEoBBaseSparkDefSubSteps:
- return "kEoBBaseSparkDefSubSteps";
- case kEoBBaseSparkDefShift:
- return "kEoBBaseSparkDefShift";
- case kEoBBaseSparkDefAdd:
- return "kEoBBaseSparkDefAdd";
- case kEoBBaseSparkDefX:
- return "kEoBBaseSparkDefX";
- case kEoBBaseSparkDefY:
- return "kEoBBaseSparkDefY";
- case kEoBBaseSparkOfFlags1:
- return "kEoBBaseSparkOfFlags1";
- case kEoBBaseSparkOfFlags2:
- return "kEoBBaseSparkOfFlags2";
- case kEoBBaseSparkOfShift:
- return "kEoBBaseSparkOfShift";
- case kEoBBaseSparkOfX:
- return "kEoBBaseSparkOfX";
- case kEoBBaseSparkOfY:
- return "kEoBBaseSparkOfY";
- case kEoBBaseSpellProperties:
- return "kEoBBaseSpellProperties";
- case kEoBBaseMagicFlightProps:
- return "kEoBBaseMagicFlightProps";
- case kEoBBaseTurnUndeadEffect:
- return "kEoBBaseTurnUndeadEffect";
- case kEoBBaseBurningHandsDest:
- return "kEoBBaseBurningHandsDest";
- case kEoBBaseConeOfColdDest1:
- return "kEoBBaseConeOfColdDest1";
- case kEoBBaseConeOfColdDest2:
- return "kEoBBaseConeOfColdDest2";
- case kEoBBaseConeOfColdDest3:
- return "kEoBBaseConeOfColdDest3";
- case kEoBBaseConeOfColdDest4:
- return "kEoBBaseConeOfColdDest4";
- case kEoBBaseConeOfColdGfxTbl:
- return "kEoBBaseConeOfColdGfxTbl";
- case kEoB1MainMenuStrings:
- return "kEoB1MainMenuStrings";
- case kEoB1BonusStrings:
- return "kEoB1BonusStrings";
- case kEoB1IntroFilesOpening:
- return "kEoB1IntroFilesOpening";
- case kEoB1IntroFilesTower:
- return "kEoB1IntroFilesTower";
- case kEoB1IntroFilesOrb:
- return "kEoB1IntroFilesOrb";
- case kEoB1IntroFilesWdEntry:
- return "kEoB1IntroFilesWdEntry";
- case kEoB1IntroFilesKing:
- return "kEoB1IntroFilesKing";
- case kEoB1IntroFilesHands:
- return "kEoB1IntroFilesHands";
- case kEoB1IntroFilesWdExit:
- return "kEoB1IntroFilesWdExit";
- case kEoB1IntroFilesTunnel:
- return "kEoB1IntroFilesTunnel";
- case kEoB1IntroOpeningFrmDelay:
- return "kEoB1IntroOpeningFrmDelay";
- case kEoB1IntroWdEncodeX:
- return "kEoB1IntroWdEncodeX";
- case kEoB1IntroWdEncodeY:
- return "kEoB1IntroWdEncodeY";
- case kEoB1IntroWdEncodeWH:
- return "kEoB1IntroWdEncodeWH";
- case kEoB1IntroWdDsX:
- return "kEoB1IntroWdDsX";
- case kEoB1IntroWdDsY:
- return "kEoB1IntroWdDsY";
- case kEoB1IntroTvlX1:
- return "kEoB1IntroTvlX1";
- case kEoB1IntroTvlY1:
- return "kEoB1IntroTvlY1";
- case kEoB1IntroTvlX2:
- return "kEoB1IntroTvlX2";
- case kEoB1IntroTvlY2:
- return "kEoB1IntroTvlY2";
- case kEoB1IntroTvlW:
- return "kEoB1IntroTvlW";
- case kEoB1IntroTvlH:
- return "kEoB1IntroTvlH";
- case kEoB1DoorShapeDefs:
- return "kEoB1DoorShapeDefs";
- case kEoB1DoorSwitchCoords:
- return "kEoB1DoorSwitchCoords";
- case kEoB1MonsterProperties:
- return "kEoB1MonsterProperties";
- case kEoB1EnemyMageSpellList:
- return "kEoB1EnemyMageSpellList";
- case kEoB1EnemyMageSfx:
- return "kEoB1EnemyMageSfx";
- case kEoB1BeholderSpellList:
- return "kEoB1BeholderSpellList";
- case kEoB1BeholderSfx:
- return "kEoB1BeholderSfx";
- case kEoB1TurnUndeadString:
- return "kEoB1TurnUndeadString";
- case kEoB1CgaMappingDefault:
- return "kEoB1CgaMappingDefault";
- case kEoB1CgaMappingAlt:
- return "kEoB1CgaMappingAlt";
- case kEoB1CgaMappingInv:
- return "kEoB1CgaMappingInv";
- case kEoB1CgaMappingItemsL:
- return "kEoB1CgaMappingItemsL";
- case kEoB1CgaMappingItemsS:
- return "kEoB1CgaMappingItemsS";
- case kEoB1CgaMappingThrown:
- return "kEoB1CgaMappingThrown";
- case kEoB1CgaMappingIcons:
- return "kEoB1CgaMappingIcons";
- case kEoB1CgaMappingDeco:
- return "kEoB1CgaMappingDeco";
- case kEoB1CgaLevelMappingIndex:
- return "kEoB1CgaLevelMappingIndex";
- case kEoB1CgaMappingLevel0:
- return "kEoB1CgaMappingLevel0";
- case kEoB1CgaMappingLevel1:
- return "kEoB1CgaMappingLevel1";
- case kEoB1CgaMappingLevel2:
- return "kEoB1CgaMappingLevel2";
- case kEoB1CgaMappingLevel3:
- return "kEoB1CgaMappingLevel3";
- case kEoB1CgaMappingLevel4:
- return "kEoB1CgaMappingLevel4";
- case kEoB1NpcShpData:
- return "kEoB1NpcShpData";
- case kEoB1NpcSubShpIndex1:
- return "kEoB1NpcSubShpIndex1";
- case kEoB1NpcSubShpIndex2:
- return "kEoB1NpcSubShpIndex2";
- case kEoB1NpcSubShpY:
- return "kEoB1NpcSubShpY";
- case kEoB1Npc0Strings:
- return "kEoB1Npc0Strings";
- case kEoB1Npc11Strings:
- return "kEoB1Npc11Strings";
- case kEoB1Npc12Strings:
- return "kEoB1Npc12Strings";
- case kEoB1Npc21Strings:
- return "kEoB1Npc21Strings";
- case kEoB1Npc22Strings:
- return "kEoB1Npc22Strings";
- case kEoB1Npc31Strings:
- return "kEoB1Npc31Strings";
- case kEoB1Npc32Strings:
- return "kEoB1Npc32Strings";
- case kEoB1Npc4Strings:
- return "kEoB1Npc4Strings";
- case kEoB1Npc5Strings:
- return "kEoB1Npc5Strings";
- case kEoB1Npc6Strings:
- return "kEoB1Npc6Strings";
- case kEoB1Npc7Strings:
- return "kEoB1Npc7Strings";
- case kEoB2MainMenuStrings:
- return "kEoB2MainMenuStrings";
- case kEoB2TransferPortraitFrames:
- return "kEoB2TransferPortraitFrames";
- case kEoB2TransferConvertTable:
- return "kEoB2TransferConvertTable";
- case kEoB2TransferItemTable:
- return "kEoB2TransferItemTable";
- case kEoB2TransferExpTable:
- return "kEoB2TransferExpTable";
- case kEoB2TransferStrings1:
- return "kEoB2TransferStrings1";
- case kEoB2TransferStrings2:
- return "kEoB2TransferStrings2";
- case kEoB2TransferLabels:
- return "kEoB2TransferLabels";
- case kEoB2IntroStrings:
- return "kEoB2IntroStrings";
- case kEoB2IntroCPSFiles:
- return "kEoB2IntroCPSFiles";
- case kEoB2IntroAnimData00:
- return "kEoB2IntroAnimData00";
- case kEoB2IntroAnimData01:
- return "kEoB2IntroAnimData01";
- case kEoB2IntroAnimData02:
- return "kEoB2IntroAnimData02";
- case kEoB2IntroAnimData03:
- return "kEoB2IntroAnimData03";
- case kEoB2IntroAnimData04:
- return "kEoB2IntroAnimData04";
- case kEoB2IntroAnimData05:
- return "kEoB2IntroAnimData05";
- case kEoB2IntroAnimData06:
- return "kEoB2IntroAnimData06";
- case kEoB2IntroAnimData07:
- return "kEoB2IntroAnimData07";
- case kEoB2IntroAnimData08:
- return "kEoB2IntroAnimData08";
- case kEoB2IntroAnimData09:
- return "kEoB2IntroAnimData09";
- case kEoB2IntroAnimData10:
- return "kEoB2IntroAnimData10";
- case kEoB2IntroAnimData11:
- return "kEoB2IntroAnimData11";
- case kEoB2IntroAnimData12:
- return "kEoB2IntroAnimData12";
- case kEoB2IntroAnimData13:
- return "kEoB2IntroAnimData13";
- case kEoB2IntroAnimData14:
- return "kEoB2IntroAnimData14";
- case kEoB2IntroAnimData15:
- return "kEoB2IntroAnimData15";
- case kEoB2IntroAnimData16:
- return "kEoB2IntroAnimData16";
- case kEoB2IntroAnimData17:
- return "kEoB2IntroAnimData17";
- case kEoB2IntroAnimData18:
- return "kEoB2IntroAnimData18";
- case kEoB2IntroAnimData19:
- return "kEoB2IntroAnimData19";
- case kEoB2IntroAnimData20:
- return "kEoB2IntroAnimData20";
- case kEoB2IntroAnimData21:
- return "kEoB2IntroAnimData21";
- case kEoB2IntroAnimData22:
- return "kEoB2IntroAnimData22";
- case kEoB2IntroAnimData23:
- return "kEoB2IntroAnimData23";
- case kEoB2IntroAnimData24:
- return "kEoB2IntroAnimData24";
- case kEoB2IntroAnimData25:
- return "kEoB2IntroAnimData25";
- case kEoB2IntroAnimData26:
- return "kEoB2IntroAnimData26";
- case kEoB2IntroAnimData27:
- return "kEoB2IntroAnimData27";
- case kEoB2IntroAnimData28:
- return "kEoB2IntroAnimData28";
- case kEoB2IntroAnimData29:
- return "kEoB2IntroAnimData29";
- case kEoB2IntroAnimData30:
- return "kEoB2IntroAnimData30";
- case kEoB2IntroAnimData31:
- return "kEoB2IntroAnimData31";
- case kEoB2IntroAnimData32:
- return "kEoB2IntroAnimData32";
- case kEoB2IntroAnimData33:
- return "kEoB2IntroAnimData33";
- case kEoB2IntroAnimData34:
- return "kEoB2IntroAnimData34";
- case kEoB2IntroAnimData35:
- return "kEoB2IntroAnimData35";
- case kEoB2IntroAnimData36:
- return "kEoB2IntroAnimData36";
- case kEoB2IntroAnimData37:
- return "kEoB2IntroAnimData37";
- case kEoB2IntroAnimData38:
- return "kEoB2IntroAnimData38";
- case kEoB2IntroAnimData39:
- return "kEoB2IntroAnimData39";
- case kEoB2IntroAnimData40:
- return "kEoB2IntroAnimData40";
- case kEoB2IntroAnimData41:
- return "kEoB2IntroAnimData41";
- case kEoB2IntroAnimData42:
- return "kEoB2IntroAnimData42";
- case kEoB2IntroAnimData43:
- return "kEoB2IntroAnimData43";
- case kEoB2IntroShapes00:
- return "kEoB2IntroShapes00";
- case kEoB2IntroShapes01:
- return "kEoB2IntroShapes01";
- case kEoB2IntroShapes04:
- return "kEoB2IntroShapes04";
- case kEoB2IntroShapes07:
- return "kEoB2IntroShapes07";
- case kEoB2FinaleStrings:
- return "kEoB2FinaleStrings";
- case kEoB2CreditsData:
- return "kEoB2CreditsData";
- case kEoB2FinaleCPSFiles:
- return "kEoB2FinaleCPSFiles";
- case kEoB2FinaleAnimData00:
- return "kEoB2FinaleAnimData00";
- case kEoB2FinaleAnimData01:
- return "kEoB2FinaleAnimData01";
- case kEoB2FinaleAnimData02:
- return "kEoB2FinaleAnimData02";
- case kEoB2FinaleAnimData03:
- return "kEoB2FinaleAnimData03";
- case kEoB2FinaleAnimData04:
- return "kEoB2FinaleAnimData04";
- case kEoB2FinaleAnimData05:
- return "kEoB2FinaleAnimData05";
- case kEoB2FinaleAnimData06:
- return "kEoB2FinaleAnimData06";
- case kEoB2FinaleAnimData07:
- return "kEoB2FinaleAnimData07";
- case kEoB2FinaleAnimData08:
- return "kEoB2FinaleAnimData08";
- case kEoB2FinaleAnimData09:
- return "kEoB2FinaleAnimData09";
- case kEoB2FinaleAnimData10:
- return "kEoB2FinaleAnimData10";
- case kEoB2FinaleAnimData11:
- return "kEoB2FinaleAnimData11";
- case kEoB2FinaleAnimData12:
- return "kEoB2FinaleAnimData12";
- case kEoB2FinaleAnimData13:
- return "kEoB2FinaleAnimData13";
- case kEoB2FinaleAnimData14:
- return "kEoB2FinaleAnimData14";
- case kEoB2FinaleAnimData15:
- return "kEoB2FinaleAnimData15";
- case kEoB2FinaleAnimData16:
- return "kEoB2FinaleAnimData16";
- case kEoB2FinaleAnimData17:
- return "kEoB2FinaleAnimData17";
- case kEoB2FinaleAnimData18:
- return "kEoB2FinaleAnimData18";
- case kEoB2FinaleAnimData19:
- return "kEoB2FinaleAnimData19";
- case kEoB2FinaleAnimData20:
- return "kEoB2FinaleAnimData20";
- case kEoB2FinaleShapes00:
- return "kEoB2FinaleShapes00";
- case kEoB2FinaleShapes03:
- return "kEoB2FinaleShapes03";
- case kEoB2FinaleShapes07:
- return "kEoB2FinaleShapes07";
- case kEoB2FinaleShapes09:
- return "kEoB2FinaleShapes09";
- case kEoB2FinaleShapes10:
- return "kEoB2FinaleShapes10";
- case kEoB2NpcShapeData:
- return "kEoB2NpcShapeData";
- case kEoBBaseClassModifierFlags:
- return "kEoBBaseClassModifierFlags";
- case kEoBBaseMonsterStepTable01:
- return "kEoBBaseMonsterStepTable01";
- case kEoBBaseMonsterStepTable02:
- return "kEoBBaseMonsterStepTable02";
- case kEoBBaseMonsterStepTable1:
- return "kEoBBaseMonsterStepTable1";
- case kEoBBaseMonsterStepTable2:
- return "kEoBBaseMonsterStepTable2";
- case kEoBBaseMonsterStepTable3:
- return "kEoBBaseMonsterStepTable3";
- case kEoBBaseMonsterCloseAttPosTable1:
- return "kEoBBaseMonsterCloseAttPosTable1";
- case kEoBBaseMonsterCloseAttPosTable21:
- return "kEoBBaseMonsterCloseAttPosTable21";
- case kEoBBaseMonsterCloseAttPosTable22:
- return "kEoBBaseMonsterCloseAttPosTable22";
- case kEoBBaseMonsterCloseAttUnkTable:
- return "kEoBBaseMonsterCloseAttUnkTable";
- case kEoBBaseMonsterCloseAttChkTable1:
- return "kEoBBaseMonsterCloseAttChkTable1";
- case kEoBBaseMonsterCloseAttChkTable2:
- return "kEoBBaseMonsterCloseAttChkTable2";
- case kEoBBaseMonsterCloseAttDstTable1:
- return "kEoBBaseMonsterCloseAttDstTable1";
- case kEoBBaseMonsterCloseAttDstTable2:
- return "kEoBBaseMonsterCloseAttDstTable2";
- case kEoBBaseMonsterProximityTable:
- return "kEoBBaseMonsterProximityTable";
- case kEoBBaseFindBlockMonstersTable:
- return "kEoBBaseFindBlockMonstersTable";
- case kEoBBaseMonsterDirChangeTable:
- return "kEoBBaseMonsterDirChangeTable";
- case kEoBBaseMonsterDistAttStrings:
- return "kEoBBaseMonsterDistAttStrings";
- case kEoBBaseEncodeMonsterDefs:
- return "kEoBBaseEncodeMonsterDefs";
- case kEoBBaseNpcPresets:
- return "kEoBBaseNpcPresets";
- case kEoB2Npc1Strings:
- return "kEoB2Npc1Strings";
- case kEoB2Npc2Strings:
- return "kEoB2Npc2Strings";
- case kEoB2MonsterDustStrings:
- return "kEoB2MonsterDustStrings";
- case kEoB2DreamSteps:
- return "kEoB2DreamSteps";
- case kEoB2KheldranStrings:
- return "kEoB2KheldranStrings";
- case kEoB2HornStrings:
- return "kEoB2HornStrings";
- case kEoB2HornSounds:
- return "kEoB2HornSounds";
- case kEoB2WallOfForceDsX:
- return "kEoB2WallOfForceDsX";
- case kEoB2WallOfForceDsY:
- return "kEoB2WallOfForceDsY";
- case kEoB2WallOfForceNumW:
- return "kEoB2WallOfForceNumW";
- case kEoB2WallOfForceNumH:
- return "kEoB2WallOfForceNumH";
- case kEoB2WallOfForceShpId:
- return "kEoB2WallOfForceShpId";
- case kLoLIngamePakFiles:
- return "kLoLIngamePakFiles";
- case kLoLCharacterDefs:
- return "kLoLCharacterDefs";
- case kLoLIngameSfxFiles:
- return "kLoLIngameSfxFiles";
- case kLoLIngameSfxIndex:
- return "kLoLIngameSfxIndex";
- case kLoLMusicTrackMap:
- return "kLoLMusicTrackMap";
- case kLoLIngameGMSfxIndex:
- return "kLoLIngameGMSfxIndex";
- case kLoLIngameMT32SfxIndex:
- return "kLoLIngameMT32SfxIndex";
- case kLoLIngamePcSpkSfxIndex:
- return "kLoLIngamePcSpkSfxIndex";
- case kLoLSpellProperties:
- return "kLoLSpellProperties";
- case kLoLGameShapeMap:
- return "kLoLGameShapeMap";
- case kLoLSceneItemOffs:
- return "kLoLSceneItemOffs";
- case kLoLCharInvIndex:
- return "kLoLCharInvIndex";
- case kLoLCharInvDefs:
- return "kLoLCharInvDefs";
- case kLoLCharDefsMan:
- return "kLoLCharDefsMan";
- case kLoLCharDefsWoman:
- return "kLoLCharDefsWoman";
- case kLoLCharDefsKieran:
- return "kLoLCharDefsKieran";
- case kLoLCharDefsAkshel:
- return "kLoLCharDefsAkshel";
- case kLoLExpRequirements:
- return "kLoLExpRequirements";
- case kLoLMonsterModifiers1:
- return "kLoLMonsterModifiers1";
- case kLoLMonsterModifiers2:
- return "kLoLMonsterModifiers2";
- case kLoLMonsterModifiers3:
- return "kLoLMonsterModifiers3";
- case kLoLMonsterModifiers4:
- return "kLoLMonsterModifiers4";
- case kLoLMonsterShiftOffsets:
- return "kLoLMonsterShiftOffsets";
- case kLoLMonsterDirFlags:
- return "kLoLMonsterDirFlags";
- case kLoLMonsterScaleY:
- return "kLoLMonsterScaleY";
- case kLoLMonsterScaleX:
- return "kLoLMonsterScaleX";
- case kLoLMonsterScaleWH:
- return "kLoLMonsterScaleWH";
- case kLoLFlyingObjectShp:
- return "kLoLFlyingObjectShp";
- case kLoLInventoryDesc:
- return "kLoLInventoryDesc";
- case kLoLLevelShpList:
- return "kLoLLevelShpList";
- case kLoLLevelDatList:
- return "kLoLLevelDatList";
- case kLoLCompassDefs:
- return "kLoLCompassDefs";
- case kLoLItemPrices:
- return "kLoLItemPrices";
- case kLoLStashSetup:
- return "kLoLStashSetup";
- case kLoLDscWalls:
- return "kLoLDscWalls";
- case kRpgCommonDscShapeIndex:
- return "kRpgCommonDscShapeIndex";
- case kLoLDscOvlMap:
- return "kLoLDscOvlMap";
- case kLoLDscScaleWidthData:
- return "kLoLDscScaleWidthData";
- case kLoLDscScaleHeightData:
- return "kLoLDscScaleHeightData";
- case kRpgCommonDscX:
- return "kRpgCommonDscX";
- case kLoLDscY:
- return "kLoLDscY";
- case kRpgCommonDscTileIndex:
- return "kRpgCommonDscTileIndex";
- case kRpgCommonDscUnk2:
- return "kRpgCommonDscUnk2";
- case kRpgCommonDscDoorShapeIndex:
- return "kRpgCommonDscDoorShapeIndex";
- case kRpgCommonDscDimData1:
- return "kRpgCommonDscDimData1";
- case kRpgCommonDscDimData2:
- return "kRpgCommonDscDimData2";
- case kRpgCommonDscBlockMap:
- return "kRpgCommonDscBlockMap";
- case kRpgCommonDscDimMap:
- return "kRpgCommonDscDimMap";
- case kLoLDscOvlIndex:
- return "kLoLDscOvlIndex";
- case kRpgCommonDscBlockIndex:
- return "kRpgCommonDscBlockIndex";
- case kRpgCommonDscDoorY2:
- return "kRpgCommonDscDoorY2";
- case kRpgCommonDscDoorFrameY1:
- return "kRpgCommonDscDoorFrameY1";
- case kRpgCommonDscDoorFrameY2:
- return "kRpgCommonDscDoorFrameY2";
- case kRpgCommonDscDoorFrameIndex1:
- return "kRpgCommonDscDoorFrameIndex1";
- case kRpgCommonDscDoorFrameIndex2:
- return "kRpgCommonDscDoorFrameIndex2";
- case kLoLDscDoorScale:
- return "kLoLDscDoorScale";
- case kLoLDscDoor4:
- return "kLoLDscDoor4";
- case kLoLDscDoorX:
- return "kLoLDscDoorX";
- case kLoLDscDoorY:
- return "kLoLDscDoorY";
- case kLoLScrollXTop:
- return "kLoLScrollXTop";
- case kLoLScrollYTop:
- return "kLoLScrollYTop";
- case kLoLScrollXBottom:
- return "kLoLScrollXBottom";
- case kLoLScrollYBottom:
- return "kLoLScrollYBottom";
- case kLoLButtonDefs:
- return "kLoLButtonDefs";
- case kLoLButtonList1:
- return "kLoLButtonList1";
- case kLoLButtonList2:
- return "kLoLButtonList2";
- case kLoLButtonList3:
- return "kLoLButtonList3";
- case kLoLButtonList4:
- return "kLoLButtonList4";
- case kLoLButtonList5:
- return "kLoLButtonList5";
- case kLoLButtonList6:
- return "kLoLButtonList6";
- case kLoLButtonList7:
- return "kLoLButtonList7";
- case kLoLButtonList8:
- return "kLoLButtonList8";
- case kLoLLegendData:
- return "kLoLLegendData";
- case kLoLMapCursorOvl:
- return "kLoLMapCursorOvl";
- case kLoLMapStringId:
- return "kLoLMapStringId";
- case kLoLSpellbookAnim:
- return "kLoLSpellbookAnim";
- case kLoLSpellbookCoords:
- return "kLoLSpellbookCoords";
- case kLoLHealShapeFrames:
- return "kLoLHealShapeFrames";
- case kLoLLightningDefs:
- return "kLoLLightningDefs";
- case kLoLFireballCoords:
- return "kLoLFireballCoords";
- case kLoLCredits:
- return "kLoLCredits";
- case kLoLHistory:
- return "kLoLHistory";
- default:
- return "Unknown";
- }
}
-struct ExtractData {
- ExtractData() : desc(), offset() {}
- ExtractData(ExtractEntrySearchData d, uint32 o) : desc(d), offset(o) {}
-
- ExtractEntrySearchData desc;
- uint32 offset;
-};
-
-typedef std::pair<int, ExtractEntrySearchData> SearchMapEntry;
-typedef std::multimap<int, ExtractEntrySearchData> SearchMap;
-
-typedef std::pair<int, ExtractData> ExtractMapEntry;
-typedef std::multimap<int, ExtractData> ExtractMap;
-
-bool getExtractionData(const Game *g, Search &search, ExtractMap &map);
-
-bool createIDMap(PAKFile &out, const ExtractInformation *eI, const int *needList);
-
-bool process(PAKFile &out, const Game *g, const byte *data, const uint32 size) {
- char filename[128];
-
- Search search(data, size);
- ExtractMap ids;
-
- if (!getExtractionData(g, search, ids))
- return false;
-
- const int *needList = getNeedList(g);
- if (!needList) {
- fprintf(stderr, "ERROR: No entry need list available\n");
- return false;
- }
-
- ExtractInformation extractInfo;
- extractInfo.game = g->game;
- extractInfo.platform = g->platform;
- extractInfo.special = g->special;
-
- for (ExtractMap::const_iterator i = ids.begin(); i != ids.end(); ++i) {
- const int id = i->first;
- extractInfo.lang = i->second.desc.lang;
-
- const ExtractFilename *fDesc = getFilenameDesc(id);
-
- if (!fDesc) {
- fprintf(stderr, "ERROR: couldn't find file description for id %d/%s\n", id, getIdString(id));
- return false;
- }
-
- filename[0] = 0;
- if (!getFilename(filename, &extractInfo, id)) {
- fprintf(stderr, "ERROR: couldn't get filename for id %d/%s\n", id, getIdString(id));
- return false;
- }
-
- const ExtractType *tDesc = findExtractType(fDesc->type);
-
- if (!tDesc) {
- fprintf(stderr, "ERROR: couldn't find type description for id %d/%s (%d)\n", id, getIdString(id), fDesc->type);
- return false;
- }
-
- PAKFile::cFileList *list = out.getFileList();
- if (list && list->findEntry(filename) != 0)
- continue;
-
- if (!tDesc->extract(out, &extractInfo, data + i->second.offset, i->second.desc.hint.size, filename, id)) {
- fprintf(stderr, "ERROR: couldn't extract id %d/%s\n", id, getIdString(id));
- return false;
- }
- }
-
- for (int i = 0; i < 3; ++i) {
- if (g->lang[i] == -1)
- continue;
-
- extractInfo.lang = g->lang[i];
- if (!createIDMap(out, &extractInfo, needList))
- return false;
-
- if (!updateIndex(out, &extractInfo)) {
- error("couldn't update INDEX file, stop processing of all files");
+bool createIDMap(PAKFile &out, const Game *g, const int *needList) {
+ int dataEntries = 0;
+ // Count entries in the need list and check whether the resources are
+ // present
+ for (const int *n = needList; *n != -1; ++n) {
+ char filename[12];
+ if (!getFilename(filename, g, *n) || !out.getFileList()->findEntry(filename)) {
+ fprintf(stderr, "ERROR: Could not find need %d for game %04X", *n, createGameDef(g));
return false;
}
- }
-
- return true;
-}
-
-bool createIDMap(PAKFile &out, const ExtractInformation *eI, const int *needList) {
- int dataEntries = 0;
- // Count entries in the need list
- for (const int *n = needList; *n != -1; ++n)
++dataEntries;
+ }
const int mapSize = 2 + dataEntries * (2 + 1 + 4);
uint8 *map = new uint8[mapSize];
@@ -2354,206 +919,22 @@ bool createIDMap(PAKFile &out, const ExtractInformation *eI, const int *needList
delete[] map;
return false;
}
- *dst++ = getTypeID(fDesc->type);
- WRITE_BE_UINT32(dst, getFilename(eI, *id)); dst += 4;
+ *dst++ = fDesc->type;
+ WRITE_BE_UINT32(dst, getFilename(g, *id)); dst += 4;
}
char filename[12];
- if (!getFilename(filename, eI, 0)) {
+ if (!getFilename(filename, g, 0)) {
fprintf(stderr, "ERROR: Could not create ID map for game\n");
delete[] map;
return false;
}
- out.removeFile(filename);
if (!out.addFile(filename, map, mapSize)) {
fprintf(stderr, "ERROR: Could not add ID map \"%s\" to kyra.dat\n", filename);
delete[] map;
return false;
}
- delete[] map;
- return true;
-}
-
-// Uncomment this to get various debug information about the detection table entries.
-//#define DEBUG_EXTRACTION_TABLES
-
-bool setupSearch(const Game *g, const int *needList, Search &search, SearchMap &searchData) {
- for (const int *entry = needList; *entry != -1; ++entry) {
- ExtractEntryList providers = getProvidersForId(*entry);
-
- if (providers.empty()) {
- fprintf(stderr, "ERROR: No provider for id %d/%s\n", *entry, getIdString(*entry));
- return false;
- } else {
- for (ExtractEntryList::const_iterator i = providers.begin(); i != providers.end(); ++i) {
- // Only add generic or partly matching providers here.
-#ifndef DEBUG_EXTRACTION_TABLES
- if ((i->lang == UNK_LANG || i->lang == g->lang[0] || i->lang == g->lang[1] || i->lang == g->lang[2]) &&
- (i->platform == kPlatformUnknown || (i->platform == g->platform))) {
-#endif
- search.addData(i->hint);
- searchData.insert(SearchMapEntry(*entry, *i));
-#ifndef DEBUG_EXTRACTION_TABLES
- }
-#endif
- }
- }
- }
-
return true;
}
-
-typedef std::list<ExtractMap::const_iterator> MatchList;
-MatchList filterPlatformMatches(const Game *g, std::pair<ExtractMap::const_iterator, ExtractMap::const_iterator> range) {
- bool hasPlatformMatch = false;
- for (ExtractMap::const_iterator i = range.first; i != range.second; ++i) {
- if (i->second.desc.platform == g->platform) {
- hasPlatformMatch = true;
- break;
- }
- }
-
- MatchList result;
- if (hasPlatformMatch) {
- for (ExtractMap::const_iterator i = range.first; i != range.second; ++i) {
- if (i->second.desc.platform == g->platform)
- result.push_back(i);
- }
- } else {
- for (ExtractMap::const_iterator i = range.first; i != range.second; ++i)
- result.push_back(i);
- }
-
- return result;
-}
-
-MatchList filterLanguageMatches(const int lang, const MatchList &input) {
- std::list<ExtractMap::const_iterator> result;
-
- for (MatchList::const_iterator i = input.begin(); i != input.end(); ++i) {
- if ((*i)->second.desc.lang == lang)
- result.push_back(*i);
- }
-
- return result;
-}
-
-MatchList::const_iterator filterOutBestMatch(const MatchList &input) {
- MatchList::const_iterator result = input.begin();
-
- if (input.size() > 1)
- warning("Multiple entries found for id %d/%s", (*result)->first, getIdString((*result)->first));
-
- for (MatchList::const_iterator i = input.begin(); i != input.end(); ++i) {
- // Reduce all entries to one single entry.
- //
- // We use the following rules for this (in this order):
- // - Prefer the entry with the higest size
- // - Prefer the entry, which starts at the smallest offest
- //
- // TODO: These rules might not be safe for all games, but hopefully
- // they will work fine. If there are any problems it should be rather
- // easy to identify them, since we print out a warning for multiple
- // entries found.
- if ((*result)->second.desc.hint.size <= (*i)->second.desc.hint.size) {
- if ((*result)->second.offset >= (*i)->second.offset)
- result = i;
- }
- }
-
- return result;
-}
-
-bool getExtractionData(const Game *g, Search &search, ExtractMap &map) {
- SearchMap searchMap;
-
- const int *needList = getNeedList(g);
- if (!needList) {
- fprintf(stderr, "ERROR: No entry need list available\n");
- return false;
- }
-
- if (!setupSearch(g, needList, search, searchMap))
- return false;
-
- // Process the data search
- Search::ResultList results;
- search.search(results);
-
- if (results.empty()) {
- fprintf(stderr, "ERROR: Couldn't find any required data\n");
- return false;
- }
-
- ExtractMap temporaryExtractMap;
- for (const int *entry = needList; *entry != -1; ++entry) {
- typedef std::pair<SearchMap::const_iterator, SearchMap::const_iterator> KeyRange;
- KeyRange idRange = searchMap.equal_range(*entry);
-
- for (Search::ResultList::const_iterator i = results.begin(); i != results.end(); ++i) {
- for (SearchMap::const_iterator j = idRange.first; j != idRange.second; ++j) {
- if (j->second.hint == i->data)
- temporaryExtractMap.insert(ExtractMapEntry(*entry, ExtractData(j->second, i->offset)));
- }
- }
- }
-
- // Free up some memory
- results.clear();
- searchMap.clear();
-
- bool result = true;
-
- for (const int *entry = needList; *entry != -1; ++entry) {
- MatchList possibleMatches = filterPlatformMatches(g, temporaryExtractMap.equal_range(*entry));
-
- if (possibleMatches.empty()) {
- fprintf(stderr, "ERROR: No entry found for id %d/%s\n", *entry, getIdString(*entry));
- result = false;
- continue;
- }
-
- if (isLangSpecific(*entry)) {
- for (int i = 0; i < 3; ++i) {
- if (g->lang[i] == -1)
- continue;
-
- MatchList langMatches = filterLanguageMatches(g->lang[i], possibleMatches);
- MatchList::const_iterator bestMatch = filterOutBestMatch(langMatches);
-
- if (bestMatch == langMatches.end()) {
- // TODO: Add nice language name to output message.
- fprintf(stderr, "ERROR: No entry found for id %d/%s for language %d\n", *entry, getIdString(*entry), g->lang[i]);
- result = false;
- continue;
- }
-
-#ifdef DEBUG_EXTRACTION_TABLES
- if (((*bestMatch)->second.desc.platform != kPlatformUnknown && (*bestMatch)->second.desc.platform != g->platform))
- printf("%s: %.8X %.8X %d %d\n", getIdString(*entry), (*bestMatch)->second.desc.hint.size, (*bestMatch)->second.desc.hint.byteSum, (*bestMatch)->second.desc.lang, (*bestMatch)->second.desc.platform);
-#endif
-
- map.insert(**bestMatch);
- }
- } else {
- MatchList::const_iterator bestMatch = filterOutBestMatch(possibleMatches);
-
- if (bestMatch == possibleMatches.end()) {
- fprintf(stderr, "ERROR: No entry found for id %d/%s\n", *entry, getIdString(*entry));
- result = false;
- continue;
- }
-
-#ifdef DEBUG_EXTRACTION_TABLES
- if (((*bestMatch)->second.desc.platform != kPlatformUnknown && (*bestMatch)->second.desc.platform != g->platform))
- printf("%s: %.8X %.8X %d %d\n", getIdString(*entry), (*bestMatch)->second.desc.hint.size, (*bestMatch)->second.desc.hint.byteSum, (*bestMatch)->second.desc.lang, (*bestMatch)->second.desc.platform);
-#endif
-
- map.insert(**bestMatch);
- }
- }
-
- return result;
-}
diff --git a/devtools/create_kyradat/create_kyradat.h b/devtools/create_kyradat/create_kyradat.h
index 4141adf55d..a6bee6f75c 100644
--- a/devtools/create_kyradat/create_kyradat.h
+++ b/devtools/create_kyradat/create_kyradat.h
@@ -23,7 +23,7 @@
#ifndef CREATE_KYRADAT_CREATE_KYRADAT_H
#define CREATE_KYRADAT_CREATE_KYRADAT_H
-#include "util.h"
+#include "common/scummsys.h"
// This list has to match orderwise (and thus value wise) the static data list of "engines/kyra/resource.h"!
enum kExtractID {
@@ -227,7 +227,7 @@ enum kExtractID {
kEoBBaseCursedString,
kEoBBaseEnchantedString,
kEoBBaseMagicObjectStrings,
- kEoBBaseMagicObject5String,
+ kEoBBaseMagicObjectString5,
kEoBBasePatternSuffix,
kEoBBasePatternGrFix1,
kEoBBasePatternGrFix2,
@@ -235,7 +235,7 @@ enum kExtractID {
kEoBBaseValidateCursedString,
kEoBBaseValidateNoDropString,
kEoBBasePotionStrings,
- kEoBBaseWandString,
+ kEoBBaseWandStrings,
kEoBBaseItemMisuseStrings,
kEoBBaseTakenStrings,
@@ -347,7 +347,7 @@ enum kExtractID {
kEoBBaseDscItemPosIndex,
kEoBBaseDscItemShpX,
- kEoBBaseDscItemPosUnk,
+ kEoBBaseDscItemScaleIndex,
kEoBBaseDscItemTileIndex,
kEoBBaseDscItemShapeMap,
@@ -628,7 +628,7 @@ enum kExtractID {
kLoLDscOvlMap,
kLoLDscScaleWidthData,
kLoLDscScaleHeightData,
- kLoLDscY,
+ kLoLBaseDscY,
kLoLDscDoorScale,
kLoLDscDoor4,
@@ -668,6 +668,30 @@ enum kExtractID {
kMaxResIDs
};
+enum ResTypes {
+ kStringList = 0,
+ kRawData = 1,
+ kRoomList = 2,
+ kShapeList = 3,
+ kAmigaSfxTable = 4,
+
+ k2SeqData = 5,
+ k2SeqItemAnimData = 6,
+ k2ItemAnimDefinition = 7,
+
+ kLoLCharData = 8,
+ kLoLSpellData = 9,
+ kLoLCompassData = 10,
+ kLoLFlightShpData = 11,
+ kLoLButtonData = 12,
+ kRawDataBe16 = 13,
+ kRawDataBe32 = 14,
+
+ kEoB2SequenceData = 15,
+ kEoB2ShapeData = 16,
+ kEoBNpcData = 17
+};
+
struct ExtractFilename {
int id;
int type;
@@ -686,21 +710,19 @@ enum kGame {
kKyra1 = 0,
kKyra2,
kKyra3,
- kLoL,
kEoB1,
- kEoB2
+ kEoB2,
+ kLoL
};
struct Game {
int game;
- int lang[3];
int platform;
int special;
-
- const char *md5[2];
+ int lang;
};
-#define GAME_DUMMY_ENTRY { -1, { -1, -1, -1 }, -1, -1, { 0, 0 } }
+#define GAME_DUMMY_ENTRY { -1, -1, -1, -1 }
extern const Game * const gameDescs[];
diff --git a/devtools/create_kyradat/extract.cpp b/devtools/create_kyradat/extract.cpp
deleted file mode 100644
index 570c30cfdb..0000000000
--- a/devtools/create_kyradat/extract.cpp
+++ /dev/null
@@ -1,1237 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-// Disable symbol overrides so that we can use system headers.
-#define FORBIDDEN_SYMBOL_ALLOW_ALL
-
-#include "extract.h"
-#include "common/language.h"
-#include "common/platform.h"
-
-#include <algorithm>
-
-namespace {
-
-// Extraction function prototypes
-
-bool extractRaw(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id);
-bool extractStrings(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id);
-bool extractStrings10(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id);
-bool extractRooms(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id);
-bool extractShapes(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id);
-bool extractKyraForestSeqData(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id);
-bool extractAmigaSfx(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id);
-bool extractWdSfx(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id);
-
-bool extractHofSeqData(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id);
-bool extractHofShapeAnimDataV1(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id);
-bool extractHofShapeAnimDataV2(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id);
-
-bool extractStringsWoSuffix(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id);
-bool extractPaddedStrings(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id);
-bool extractRaw16to8(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id);
-bool extractMrShapeAnimData(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id);
-bool extractRaw16(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id);
-bool extractRaw32(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id);
-bool extractLoLButtonDefs(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id);
-bool extractLoLFlyingShpDefs(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id);
-
-bool extractEoB2SeqData(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id);
-bool extractEoB2ShapeData(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id);
-bool extractEoBNpcData(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id);
-// Extraction type table
-
-const ExtractType extractTypeTable[] = {
- { kTypeStringList, extractStrings },
- { kTypeRoomList, extractRooms },
- { kTypeShapeList, extractShapes },
- { kTypeRawData, extractRaw },
- { kTypeForestSeqData, extractKyraForestSeqData },
- { kTypeAmigaSfxTable, extractAmigaSfx },
- { kTypeTownsWDSfxTable, extractWdSfx },
-
- { k2TypeSeqData, extractHofSeqData },
- { k2TypeShpDataV1, extractHofShapeAnimDataV1 },
- { k2TypeShpDataV2, extractHofShapeAnimDataV2 },
- { k2TypeSoundList, extractStringsWoSuffix },
- { k2TypeLangSoundList, extractStringsWoSuffix },
- { k2TypeSize10StringList, extractStrings10 },
- { k2TypeSfxList, extractPaddedStrings },
- { k3TypeRaw16to8, extractRaw16to8 },
- { k3TypeShpData, extractMrShapeAnimData },
-
- { kLoLTypeCharData, extractRaw },
- { kLoLTypeSpellData, extractRaw },
- { kLoLTypeCompassData, extractRaw16to8 },
- { kLoLTypeFlightShpData, extractLoLFlyingShpDefs },
- { kLoLTypeRaw16, extractRaw16 },
- { kLoLTypeRaw32, extractRaw32 },
- { kLoLTypeButtonDef, extractLoLButtonDefs },
-
- { kEoB2TypeSeqData, extractEoB2SeqData },
- { kEoB2TypeShapeData, extractEoB2ShapeData },
- { kEoBTypeNpcData, extractEoBNpcData },
-
- { -1, 0 }
-};
-
-// TODO: Clean up the mess of data types we have... it seems some special types
-// we have (even in the main KYRA code, is just raw data access, but used specially
-// to have a nice wrapper from inside StaticResource...).
-const TypeTable typeTable[] = {
- { kTypeStringList, 0 },
- { kTypeRawData, 1 },
- { kTypeRoomList, 2 },
- { kTypeShapeList, 3 },
- { kTypeForestSeqData, 1 },
- { kTypeAmigaSfxTable, 4 },
- { kTypeTownsWDSfxTable, 1 },
- { k2TypeSeqData, 5 },
- { k2TypeShpDataV1, 6 },
- { k2TypeShpDataV2, 7 },
- { k2TypeSoundList, 0 },
- { k2TypeLangSoundList, 0 },
- { k2TypeSize10StringList, 0 },
- { k2TypeSfxList, 0 },
- { k3TypeRaw16to8, 1 },
- { k3TypeShpData, 7 },
- { kLoLTypeRaw16, 13 },
- { kLoLTypeRaw32, 14 },
- { kLoLTypeButtonDef, 12 },
- { kLoLTypeCharData, 8 },
- { kLoLTypeSpellData, 9 },
- { kLoLTypeCompassData, 10 },
- { kLoLTypeFlightShpData, 11 },
- { kEoB2TypeSeqData, 15 },
- { kEoB2TypeShapeData, 16 },
- { kEoBTypeNpcData, 17},
- { -1, 1 }
-};
-
-} // end of anonymous namespace
-
-// misc
-
-const ExtractType *findExtractType(const int type) {
- for (const ExtractType *i = extractTypeTable; i->type != -1; ++i) {
- if (i->type == type)
- return i;
- }
- return 0;
-}
-
-byte getTypeID(int type) {
- return std::find(typeTable, ARRAYEND(typeTable) - 1, type)->value;
-}
-// Extractor implementation
-
-namespace {
-
-bool extractRaw(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id) {
- uint8 *buffer = new uint8[size];
- assert(buffer);
- memcpy(buffer, data, size);
-
- return out.addFile(filename, buffer, size);
-}
-
-bool extractStrings(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id) {
- // Skip tables for skipping English string left-overs in the hacky Russian fan translations
- static const uint8 rusFanSkip_k2SeqplayStrings[] = { 1, 3, 5, 8, 10, 11, 13, 15, 17, 20, 22, 25, 26, 30, 33, 38, 40, 41, 44, 49, 51, 55, 104, 119, 121, 123 };
- static const uint8 rusFanSkip_k1IntroStrings[] = { 3, 5, 9, 11, 13, 16, 18, 21, 24, 32, 34, 36, 38, 41, 44, 49, 52, 55, 57, 59, 61, 64, 66, 69, 72, 75 };
- static const uint8 rusFanSkip_k1ThePoisonStrings[] = { 1, 4 };
- static const uint8 rusFanSkip_k1FullFlaskStrings[] = { 1, 2, 4, 5, 7 };
- static const uint8 rusFanSkip_k1WispJewelStrings[] = { 2 };
- static const uint8 rusFanSkip_k1GUIStrings[] = { 1, 3, 6, 8, 11, 13, 18 };
- uint32 rusFanSkipIdLen = 0;
- const uint8 *rusFanSkipId = 0;
- uint rusFanEmptyId = 10000;
- uint32 skipCount = 0;
-
- int patch = 0;
- // FM Towns files that need addional patches
- if (info->platform == kPlatformFMTowns) {
- if (id == k1TakenStrings || id == k1NoDropStrings || id == k1PoisonGoneString ||
- id == k1ThePoisonStrings || id == k1FluteStrings || id == k1WispJewelStrings)
- patch = 1;
- else if (id == k1IntroStrings)
- patch = 2;
- else if (id == k2SeqplayStrings)
- patch = 3;
- } else if (info->platform == kPlatformDOS) {
- if (id == k2IngamePakFiles)
- patch = 4;
-
- if (info->lang == Common::RU_RUS && info->special == kNoSpecial) {
- patch = 5;
- if (id == k2SeqplayStrings) {
- rusFanSkipId = rusFanSkip_k2SeqplayStrings;
- rusFanSkipIdLen = ARRAYSIZE(rusFanSkip_k2SeqplayStrings);
- rusFanEmptyId = 81;
- } else if (id == k1IntroStrings) {
- rusFanSkipId = rusFanSkip_k1IntroStrings;
- rusFanSkipIdLen = ARRAYSIZE(rusFanSkip_k1IntroStrings);
- rusFanEmptyId = 30;
- } else if (id == k1ThePoisonStrings) {
- rusFanSkipId = rusFanSkip_k1ThePoisonStrings;
- rusFanSkipIdLen = ARRAYSIZE(rusFanSkip_k1ThePoisonStrings);
- } else if (id == k1FullFlaskString) {
- rusFanSkipId = rusFanSkip_k1FullFlaskStrings;
- rusFanSkipIdLen = ARRAYSIZE(rusFanSkip_k1FullFlaskStrings);
- } else if (id == k1GUIStrings) {
- rusFanSkipId = rusFanSkip_k1GUIStrings;
- rusFanSkipIdLen = ARRAYSIZE(rusFanSkip_k1GUIStrings);
- } else if (id == k1WispJewelStrings) {
- rusFanSkipId = rusFanSkip_k1WispJewelStrings;
- rusFanSkipIdLen = ARRAYSIZE(rusFanSkip_k1WispJewelStrings);
- }
- }
-
- // HACK
- if (id == k2SeqplayIntroTracks && info->game == kLoL)
- return extractStringsWoSuffix(out, info, data, size, filename, id);
- }
-
- uint32 entries = 0;
- uint32 targetsize = size + 4;
- for (uint32 i = 0; i < size; ++i) {
- if (!data[i]) {
- if (info->platform == kPlatformAmiga) {
- if (i + 1 >= size)
- ++entries;
- else if (!data[i+1] && !(i & 1))
- continue;
- else
- ++entries;
- } else {
- ++entries;
- }
-
- if (info->platform == kPlatformFMTowns) {
- // prevents creation of empty entries (which we have mostly between all strings in the FM-TOWNS version)
- while (!data[++i]) {
- if (i == size)
- break;
- targetsize--;
- }
- if (patch == 1) {
- // Here is the first step of the extra treatment for all FM-TOWNS string arrays that
- // contain more than one string and which the original code
- // addresses via stringname[boolJapanese].
- // We simply skip every other string
- if (i == size)
- continue;
- uint32 len = strlen((const char*) data + i);
- i += len;
-
- targetsize = targetsize - 1 - len;
-
- while (!data[++i]) {
- if (i == len)
- break;
- targetsize--;
- }
- }
- } else if (patch == 5) {
- ++skipCount;
- while (!data[i + 1]) {
- if (skipCount == rusFanEmptyId) {
- ++skipCount;
- ++entries;
- break;
- }
- if (++i == size)
- break;
- targetsize--;
- }
-
- // Skip English string left-overs in the hacky Russian fan translation
- for (uint32 ii = 0; ii < rusFanSkipIdLen; ++ii) {
- if (skipCount == rusFanSkipId[ii]) {
- ++skipCount;
- uint32 len = strlen((const char*) data + i);
- i += len;
- targetsize = targetsize - 1 - len;
- while (!data[i + 1]) {
- if (++i == len)
- break;
- targetsize--;
- }
- }
- }
- }
- }
- }
-
- if (patch == 2) {
- if (info->lang == EN_ANY) {
- targetsize--;
- entries += 1;
- } else if (info->lang == JA_JPN) {
- targetsize += 2;
- entries += 2;
- }
- }
-
- if (patch == 3) {
- entries++;
- targetsize++;
- }
-
- if (patch == 4) {
- targetsize -= 9;
- }
-
- uint8 *buffer = new uint8[targetsize];
- assert(buffer);
- memset(buffer, 0, targetsize);
- uint8 *output = buffer;
- const uint8 *input = (const uint8*) data;
- skipCount = 0;
-
- WRITE_BE_UINT32(output, entries); output += 4;
- if (info->platform == kPlatformFMTowns) {
- const byte *c = data + size;
- do {
- if (patch == 2 && input - data == 0x3C0 && input[0x10] == 0x32) {
- memcpy(output, input, 0x0F);
- input += 0x11; output += 0x0F;
- }
-
- strcpy((char *) output, (const char*) input);
- uint32 stringsize = strlen((const char*)output) + 1;
- input += stringsize; output += stringsize;
- // skip empty entries
- while (!*input) {
- // Write one empty string into intro strings file
- if (patch == 2) {
- if ((info->lang == EN_ANY && input - data == 0x260) ||
- (info->lang == JA_JPN && (input - data == 0x2BD || input - data == 0x2BE)))
- *output++ = *input;
- }
-
- // insert one dummy string at hof sequence strings position 59
- if (patch == 3) {
- if ((info->lang == EN_ANY && input - data == 0x695) ||
- (info->lang == JA_JPN && input - data == 0x598))
- *output++ = *input;
- }
-
- if (++input == c)
- break;
- }
-
- if (patch == 1) {
- // Here is the extra treatment for all FM-TOWNS string arrays that
- // contain more than one string and which the original code
- // addresses via stringname[boolJapanese].
- // We simply skip every other string
- if (input == c)
- continue;
- input += strlen((const char*)input);
- while (!*input) {
- if (++input == c)
- break;
- }
- }
-
- } while (input < c);
- } else if (info->platform == kPlatformAmiga) {
- // we need to strip some aligment zeros out here
- int dstPos = 0;
- for (uint32 i = 0; i < size; ++i) {
- if (!data[i] && !(i & 1)) {
- if (i + 1 > size)
- continue;
- else if (i + 1 < size && !data[i+1])
- continue;
- }
-
- *output++ = data[i];
- ++dstPos;
- }
- targetsize = dstPos + 4;
- } else if (patch == 5) {
- const byte *c = data + size;
- do {
- strcpy((char *) output, (const char*) input);
- uint32 stringsize = strlen((const char*)output) + 1;
- input += stringsize; output += stringsize;
-
- ++skipCount;
- while (!*input) {
- if (skipCount == rusFanEmptyId) {
- *output++ = *input;
- ++skipCount;
- }
- if (++input == c)
- break;
- }
- // Skip English string left-overs in the hacky Russian fan translation
- for (uint32 ii = 0; ii < rusFanSkipIdLen; ++ii) {
- if (skipCount == rusFanSkipId[ii]) {
- ++skipCount;
- input += strlen((const char*)input);
- while (!*input) {
- if (++input == c)
- break;
- }
- }
- }
-
- } while (input < c);
- } else {
- uint32 copySize = size;
- if (patch == 4) {
- memcpy(output, data, 44);
- output += 44;
- data += 44;
- for (int t = 1; t != 10; t++) {
- sprintf((char *) output, "COST%d_SH.PAK", t);
- output += 13;
- }
- data += 126;
- copySize -= 170;
- }
- memcpy(output, data, copySize);
- }
-
- return out.addFile(filename, buffer, targetsize);
-}
-
-bool extractStrings10(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id) {
- // HACK...
- if (info->platform == kPlatformFMTowns && id == k2IngameSfxFiles)
- return extractStringsWoSuffix(out, info, data, size, filename, id);
-
- const int strSize = 10;
- uint32 entries = (size + (strSize - 1)) / strSize;
-
- uint8 *buffer = new uint8[size + 4];
- assert(buffer);
- uint8 *output = buffer;
- WRITE_BE_UINT32(output, entries); output += 4;
-
- for (uint32 i = 0; i < entries; ++i) {
- const byte *src = data + i * strSize;
-
- while (*src)
- *output++ = *src++;
- *output++ = '\0';
- }
-
- return out.addFile(filename, buffer, output - buffer);
-}
-
-bool extractRooms(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id) {
- // different entry size for the FM-TOWNS version
- const int roomEntrySize = (info->platform == kPlatformFMTowns) ? (0x69) : ((info->platform == kPlatformAmiga) ? 0x52 : 0x51);
- const int countRooms = size / roomEntrySize;
-
- uint8 *buffer = new uint8[countRooms * 9 + 4];
- assert(buffer);
- uint8 *output = buffer;
-
- WRITE_BE_UINT32(output, countRooms); output += 4;
-
- const byte *src = data;
- if (info->platform == kPlatformAmiga) {
- for (int i = 0; i < countRooms; ++i) {
- *output++ = *src++; assert(*src == 0); ++src;
- memcpy(output, src, 8); output += 0x8;
- src += roomEntrySize - 0x2;
- }
- } else {
- for (int i = 0; i < countRooms; ++i) {
- *output++ = *src++;
- WRITE_BE_UINT16(output, READ_LE_UINT16(src)); output += 2; src += 2;
- WRITE_BE_UINT16(output, READ_LE_UINT16(src)); output += 2; src += 2;
- WRITE_BE_UINT16(output, READ_LE_UINT16(src)); output += 2; src += 2;
- WRITE_BE_UINT16(output, READ_LE_UINT16(src)); output += 2; src += 2;
- src += roomEntrySize - 0x9;
- }
- }
-
- return out.addFile(filename, buffer, countRooms * 9 + 4);
-}
-
-bool extractShapes(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id) {
- byte *buffer = new byte[size + 1 * 4];
- assert(buffer);
- byte *output = buffer;
-
- const int count = size / 0x07;
- WRITE_BE_UINT32(output, count); output += 4;
- memcpy(output, data, size);
-
- return out.addFile(filename, buffer, size + 1 * 4);
-}
-
-bool extractKyraForestSeqData(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id) {
- if (info->platform != kPlatformPC98)
- return extractRaw(out, info, data, size, filename, id);
-
- struct PatchEntry {
- uint16 pos;
- uint8 val;
- };
-
- // This data has been taken from the FM-Towns version
- static const PatchEntry patchData[] = {
- { 0x0019, 0x06 }, { 0x001A, 0x09 }, { 0x001B, 0x00 }, { 0x002E, 0x06 }, { 0x002F, 0x09 }, { 0x0030, 0x00 },
- { 0x003D, 0x06 }, { 0x003E, 0x09 }, { 0x003F, 0x00 }, { 0x004C, 0x06 }, { 0x004D, 0x09 }, { 0x004E, 0x00 },
- { 0x005B, 0x06 }, { 0x005C, 0x09 }, { 0x005D, 0x00 }, { 0x0064, 0x06 }, { 0x0065, 0x09 }, { 0x0066, 0x00 },
- { 0x0079, 0x06 }, { 0x007A, 0x09 }, { 0x007B, 0x00 }, { 0x0088, 0x06 }, { 0x0089, 0x09 }, { 0x008A, 0x00 },
- { 0x0097, 0x06 }, { 0x0098, 0x09 }, { 0x0099, 0x00 }, { 0x00A6, 0x06 }, { 0x00A7, 0x09 }, { 0x00A8, 0x00 },
- { 0x00AD, 0x06 }, { 0x00AE, 0x09 }, { 0x00AF, 0x00 }, { 0x00B4, 0x06 }, { 0x00B5, 0x09 }, { 0x00B6, 0x00 },
- { 0x00C3, 0x06 }, { 0x00C4, 0x09 }, { 0x00C5, 0x00 }, { 0x00CA, 0x06 }, { 0x00CB, 0x09 }, { 0x00CC, 0x00 },
- { 0x00D1, 0x06 }, { 0x00D2, 0x09 }, { 0x00D3, 0x00 }, { 0x00E0, 0x06 }, { 0x00E1, 0x09 }, { 0x00E2, 0x00 },
- { 0x00E7, 0x06 }, { 0x00E8, 0x09 }, { 0x00E9, 0x00 }, { 0x00EE, 0x06 }, { 0x00EF, 0x09 }, { 0x00F0, 0x00 },
- { 0x00FD, 0x06 }, { 0x00FE, 0x09 }, { 0x00FF, 0x00 }, { 0x010A, 0x06 }, { 0x010B, 0x09 }, { 0x010C, 0x00 },
- { 0x011D, 0x06 }, { 0x011E, 0x09 }, { 0x011F, 0x00 }, { 0x012C, 0x06 }, { 0x012D, 0x09 }, { 0x012E, 0x00 },
- { 0x013D, 0x06 }, { 0x013E, 0x09 }, { 0x013F, 0x00 }, { 0x0148, 0x06 }, { 0x0149, 0x09 }, { 0x014A, 0x00 },
- { 0x0153, 0x06 }, { 0x0154, 0x09 }, { 0x0155, 0x00 }, { 0x015E, 0x06 }, { 0x015F, 0x09 }, { 0x0160, 0x00 },
- { 0x0169, 0x06 }, { 0x016A, 0x09 }, { 0x016B, 0x00 }, { 0x016C, 0x06 }, { 0x016D, 0x12 }, { 0x016E, 0x00 },
- { 0x017B, 0x06 }, { 0x017C, 0x09 }, { 0x017D, 0x00 }, { 0x0188, 0x06 }, { 0x0189, 0x09 }, { 0x018A, 0x00 },
- { 0x0190, 0x13 }, { 0x0000, 0x00 }
- };
-
- uint32 outsize = size + (ARRAYSIZE(patchData) - 1);
- uint8 *buffer = new uint8[outsize];
- assert(buffer);
-
- const uint8 *src = data;
- uint8 *dst = buffer;
- const PatchEntry *patchPos = patchData;
-
- while (dst < (buffer + outsize)) {
- if ((dst - buffer) == patchPos->pos) {
- *dst++ = patchPos->val;
- patchPos++;
- } else {
- *dst++ = *src++;
- }
- }
-
- return out.addFile(filename, buffer, outsize);
-}
-
-bool extractAmigaSfx(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id) {
- const uint32 entries = size / 8;
- byte *buffer = new byte[entries * 6 + 1 * 4];
-
- byte *output = buffer;
- WRITE_BE_UINT32(output, entries); output += 4;
-
- for (uint32 i = 0; i < entries; ++i) {
- *output++ = *data++; // Note
- *output++ = *data++; // Patch
- data += 2; // Unused
- WRITE_BE_UINT16(output, READ_BE_UINT16(data)); output += 2; data += 2; // Duration
- *output++ = *data++; // Volume
- *output++ = *data++; // Pan
- }
-
- return out.addFile(filename, buffer, entries * 6 + 1 * 4);
-}
-
-bool extractWdSfx(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id) {
- const int bufferSize = 0x12602;
-
- uint8 *buffer = new uint8[0x12602];
- assert(buffer);
- memcpy(buffer, data, 0x7EE5);
- memcpy(buffer + 0x7EE5, data + 0x7EE7, 0x7FFF);
- memcpy(buffer + 0xFEE4, data + 0xFEE8, 0x271E);
-
- return out.addFile(filename, buffer, bufferSize);
-}
-
-int extractHofSeqData_checkString(const void *ptr, uint8 checkSize);
-int extractHofSeqData_isSequence(const void *ptr, const ExtractInformation *info, uint32 maxCheckSize);
-int extractHofSeqData_isControl(const void *ptr, uint32 size);
-
-bool extractHofSeqData(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id) {
- int numSequences = 0;
- int numNestedSequences = 0;
-
- uint16 headerSize = 50 * sizeof(uint16);
- uint16 bufferSize = size + headerSize;
- byte *buffer = new byte[bufferSize];
- assert(buffer);
- memset(buffer, 0, bufferSize );
- uint16 *header = (uint16 *) buffer;
- byte *output = buffer + headerSize;
- uint16 *hdout = header;
-
- //debug(1, "\nProcessing Hand of Fate sequence data:\n--------------------------------------\n");
- for (int cycle = 0; cycle < 2; cycle++) {
- const byte *ptr = data;
- hdout++;
-
- const byte *endOffs = (const byte *)(data + size);
-
- // detect sequence structs
- while (ptr < endOffs) {
- if (ptr[1]) {
- error("invalid sequence data encountered");
- delete[] buffer;
- return false;
- }
-
- int v = extractHofSeqData_isSequence(ptr, info, endOffs - ptr);
-
- if (cycle == 0 && v == 1) {
- if ((info->platform == kPlatformDOS && info->special == kNoSpecial && *ptr == 5) || (info->special == kDemoVersion && (ptr - data == 312))) {
- // patch for floppy version: skips invalid ferb sequence
- // patch for demo: skips invalid title sequence
- ptr += 54;
- continue;
- }
-
- numSequences++;
- uint16 relOffs = (uint16) (output - buffer);
- WRITE_BE_UINT16(hdout, relOffs);
- hdout++;
-
- WRITE_BE_UINT16(output, READ_LE_UINT16(ptr)); // flags
- ptr += 2;
- output += 2;
-
- memcpy(output, ptr, 28); // wsa and cps file names
- ptr += 28;
- output += 28;
-
- if (info->platform == kPlatformFMTowns) { // startupCommand + finalCommand
- memcpy(output, ptr, 2);
- ptr += 2;
- output += 2;
- } else {
- *output++ = READ_LE_UINT16(ptr) & 0xff;
- ptr += 2;
- *output++ = READ_LE_UINT16(ptr) & 0xff;
- ptr += 2;
- }
-
- for (int w = 0; w < 7; w++) { //stringIndex1 to yPos
- WRITE_BE_UINT16(output, READ_LE_UINT16(ptr));
- ptr += 2;
- output += 2;
- }
-
- ptr += 4;
- WRITE_BE_UINT16(output, READ_LE_UINT16(ptr)); // duration
- ptr += 2;
- output+= 2;
-
- } else if (cycle == 1 && v != 1 && v != -2) {
- uint16 controlOffs = 0;
- uint16 ctrSize = 0;
- if (v) {
- const byte *ctrStart = ptr;
- while (v && v != -2) {
- ptr++;
- v = extractHofSeqData_isSequence(ptr, info, endOffs - ptr);
- }
-
- if (v == -2)
- break;
-
- ctrSize = (uint16)(ptr - ctrStart);
-
- if (info->special != kDemoVersion &&
- extractHofSeqData_isControl(ctrStart, ctrSize)) {
- controlOffs = (uint16) (output - buffer);
- *output++ = ctrSize >> 2;
-
- for (int cc = 0; cc < ctrSize; cc += 2)
- WRITE_BE_UINT16(output + cc, READ_LE_UINT16(ctrStart + cc)); // frame control
- output += ctrSize;
- }
- }
-
- numNestedSequences++;
- uint16 relOffs = (uint16) (output - buffer);
- WRITE_BE_UINT16(hdout, relOffs);
- hdout++;
-
- WRITE_BE_UINT16(output, READ_LE_UINT16(ptr)); // flags
- ptr += 2;
- output += 2;
-
- memcpy(output, ptr, 14); // wsa file name
- ptr += 14;
- output += 14;
-
- // startframe
- WRITE_BE_UINT16(output, READ_LE_UINT16(ptr));
- ptr += 2;
- output += 2;
-
- // endFrame
- WRITE_BE_UINT16(output, (ctrSize && ((ctrSize >> 2) < READ_LE_UINT16(ptr))) ? (ctrSize >> 2) : READ_LE_UINT16(ptr));
- ptr += 2;
- output += 2;
-
- // frameDelay
- WRITE_BE_UINT16(output, READ_LE_UINT16(ptr));
- ptr += 2;
- output += 2;
-
- ptr += 4;
-
- for (int w = 0; w < 2; w++) { //x, y
- WRITE_BE_UINT16(output, READ_LE_UINT16(ptr));
- ptr += 2;
- output += 2;
- }
-
- if (!READ_LE_UINT32(ptr))
- controlOffs = 0;
-
- WRITE_BE_UINT16(output, controlOffs);
- if (info->special != kDemoVersion)
- ptr += 4;
- output += 2;
-
- if (info->special != kDemoVersion) {
- for (int w = 0; w < 2; w++) { //startupCommand, finalCommand
- WRITE_BE_UINT16(output, READ_LE_UINT16(ptr));
- ptr += 2;
- output += 2;
- }
- } else {
- memset(output, 0, 4);
- output += 4;
- }
-
- if (info->platform == kPlatformFMTowns)
- ptr += 2;
-
- } else if (cycle == 0) {
- while (v != 1 && v != -2) {
- ptr++;
- v = extractHofSeqData_isSequence(ptr, info, endOffs - ptr);
- }
-
- if (v == -2)
- break;
-
-
- } else if (cycle == 1) {
- while (v == 1 && v != -2) {
- ptr++;
- v = extractHofSeqData_isSequence(ptr, info, endOffs - ptr);
- }
-
- if (v == -2)
- break;
- }
- }
- }
-
- uint16 finHeaderSize = (2 + numSequences + numNestedSequences) * sizeof(uint16);
- uint16 finBufferSize = ((output - buffer) - headerSize) + finHeaderSize;
- byte *finBuffer = new byte[finBufferSize];
- assert(finBuffer);
- uint16 diff = headerSize - finHeaderSize;
- uint16 *finHeader = (uint16 *) finBuffer;
-
- for (int i = 1; i < finHeaderSize; i++)
- WRITE_BE_UINT16(&finHeader[i], (READ_BE_UINT16(&header[i]) - diff));
- WRITE_BE_UINT16(finHeader, numSequences);
- WRITE_BE_UINT16(&finHeader[numSequences + 1], numNestedSequences);
- memcpy (finBuffer + finHeaderSize, buffer + headerSize, finBufferSize - finHeaderSize);
- delete[] buffer;
-
- finHeader = (uint16 *) (finBuffer + ((numSequences + 2) * sizeof(uint16)));
- for (int i = 0; i < numNestedSequences; i++) {
- uint8 * offs = finBuffer + READ_BE_UINT16(finHeader++) + 26;
- uint16 ctrl = READ_BE_UINT16(offs);
- if (ctrl)
- ctrl -= diff;
- WRITE_BE_UINT16(offs, ctrl);
- }
-
- return out.addFile(filename, finBuffer, finBufferSize);
-}
-
-int extractHofSeqData_checkString(const void *ptr, uint8 checkSize) {
- // return values: 1 = text; 0 = zero string; -1 = other
-
- int t = 0;
- int c = checkSize;
- const uint8 *s = (const uint8*)ptr;
-
- // check for character string
- while (c--) {
- if (*s > 31 && *s < 123)
- t++;
- s++;
- }
-
- if (t == checkSize)
- return 1;
-
- // check for zero string
- c = checkSize;
- uint32 sum = 0;
- s = (const uint8*)ptr;
- while (c--)
- sum += *s++;
-
- return (sum) ? -1 : 0;
-}
-
-int extractHofSeqData_isSequence(const void *ptr, const ExtractInformation *info, uint32 maxCheckSize) {
- // return values: 1 = Sequence; 0 = Nested Sequence; -1 = other; -2 = overflow
-
- if (maxCheckSize < 30)
- return -2;
-
- const uint8 * s = (const uint8*)ptr;
- int c1 = extractHofSeqData_checkString(s + 2, 6);
- int c2 = extractHofSeqData_checkString(s + 16, 6);
- int c3 = extractHofSeqData_checkString(s + 2, 14);
- int c4 = extractHofSeqData_checkString(s + 16, 14);
- int c0 = s[1];
- int c5 = s[0];
-
- if (c0 == 0 && c5 && ((c1 + c2) >= 1) && (!(c3 == 0 && c2 != 1)) && (!(c4 == 0 && c1 != 1))) {
- if (maxCheckSize < 41)
- return -2;
-
- if (info->platform == kPlatformFMTowns) {
- if (!(s[37] | s[39]) && s[38] > s[36])
- return 1;
- } else {
- if (!(s[39] | s[41]) && s[40] > s[38])
- return 1;
- }
- }
-
- if (c0 == 0 && c5 == 4 && c3 == 0 && c4 == 0) {
- if (maxCheckSize >= 41 && READ_LE_UINT32(s + 34) && !(s[39] | s[41]) && s[40] > s[38])
- return 1;
- }
-
- if (c0 == 0 && c5 && c1 == 1 && c4 == -1 && s[20])
- return 0;
-
- return -1;
-}
-
-int extractHofSeqData_isControl(const void *ptr, uint32 size) {
- // return values: 1 = possible frame control data; 0 = definitely not frame control data
-
- const uint8 *s = (const uint8*)ptr;
- for (uint32 i = 2; i < size; i += 4) {
- if (!s[i])
- return 0;
- }
-
- for (uint32 i = 1; i < size; i += 2) {
- if (s[i])
- return 0;
- }
- return 1;
-}
-
-bool extractHofShapeAnimDataV1(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id) {
- int outsize = 1;
- uint8 *buffer = new uint8[size + 1];
- const uint8 *src = data;
- uint8 *dst = buffer + 1;
-
- for (int i = 0; i < 4; i++) {
- WRITE_BE_UINT16(dst, READ_LE_UINT16(src));
- src += 2;
- dst += 2;
- WRITE_BE_UINT16(dst, READ_LE_UINT16(src));
- src += 4;
- dst += 2;
- outsize += 4;
-
- for (int j = 0; j < 20; j++) {
- WRITE_BE_UINT16(dst, READ_LE_UINT16(src));
- src += 2;
- dst += 2;
- outsize += 2;
- }
-
- };
-
- *buffer = 4; // number of items
-
- return out.addFile(filename, buffer, outsize);
-}
-
-bool extractHofShapeAnimDataV2(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id) {
- int outsize = 1;
- uint8 *buffer = new uint8[size + 1];
- const uint8 *src = data;
- uint8 *dst = buffer + 1;
- const uint8 *fin = data + size;
- int count = 0;
-
- do {
- if (READ_LE_UINT16(src) == 0xffff)
- break;
-
- count++;
-
- WRITE_BE_UINT16(dst, READ_LE_UINT16(src));
- src += 2;
- dst += 2;
-
- uint8 numFrames = *src;
- *dst++ = numFrames;
- src += 6;
- outsize += 3;
-
- for (int i = 0; i < (numFrames << 1); i++) {
- WRITE_BE_UINT16(dst, READ_LE_UINT16(src));
- src += 2;
- dst += 2;
- outsize += 2;
- }
-
- src += (48 - (numFrames << 2));
-
- } while (src < fin);
-
- *buffer = count; // number of items
-
- return out.addFile(filename, buffer, outsize);
-}
-
-bool extractStringsWoSuffix(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id) {
- int outsize = size + 4;
- uint8 *buffer = new uint8[outsize];
- const uint8 *src = data;
- uint8 *dst = buffer + 4;
- const uint8 *fin = src + size;
- int entries = 0;
-
- while (src < fin) {
- while (!*src && src < fin)
- src++;
- while (*src && *src != '.' && src < fin)
- *dst++ = *src++;
-
- *dst++ = '\0';
- entries++;
-
- if (*src == '.') {
- while (*src && src < fin)
- src++;
- }
- }
-
- WRITE_BE_UINT32(buffer, entries);
- outsize = dst - buffer;
-
- return out.addFile(filename, buffer, outsize);
-}
-
-bool extractPaddedStrings(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id) {
- int outsize = size + 4;
- uint8 *buffer = new uint8[outsize];
- const uint8 *src = data;
- uint8 *dst = buffer + 4;
- const uint8 *fin = src + size;
- int entries = 0;
-
- while (src < fin) {
- while (!*src && src < fin)
- src++;
- while (*src && src < fin)
- *dst++ = *src++;
- if (src < fin)
- *dst++ = *src++;
- entries++;
- }
-
- WRITE_BE_UINT32(buffer, entries);
-
- outsize = dst - buffer;
-
- return out.addFile(filename, buffer, outsize);
-}
-
-bool extractRaw16to8(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id) {
- // Hack for some LOL FM-Towns entries
- if (info->platform == Common::kPlatformFMTowns && ((id >= kLoLButtonList1 && id <= kLoLButtonList8) || id == kLoLCharInvIndex))
- return extractRaw(out, info, data, size, filename, id);
-
- int outsize = size >> 1;
- uint8 *buffer = new uint8[outsize];
- const uint8 *src = data;
- uint8 *dst = buffer;
-
- for (int i = 0; i < outsize; i++) {
- *dst++ = *src++;
- src++;
- }
-
- return out.addFile(filename, buffer, outsize);
-}
-
-bool extractRaw16(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id) {
- uint8 *buffer = new uint8[size];
- const uint8 *src = data;
- uint8 *dst = buffer;
-
- for (uint32 i = 0; i < (size >> 1); i++) {
- WRITE_BE_UINT16(dst, READ_LE_UINT16(src));
- src += 2;
- dst += 2;
- }
-
- return out.addFile(filename, buffer, size);
-}
-
-bool extractRaw32(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id) {
- uint8 *buffer = new uint8[size];
- const uint8 *src = data;
- uint8 *dst = buffer;
-
- for (uint32 i = 0; i < (size >> 2); i++) {
- WRITE_BE_UINT32(dst, READ_LE_UINT32(src));
- src += 4;
- dst += 4;
- }
-
- return out.addFile(filename, buffer, size);
-}
-
-bool extractLoLButtonDefs(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id) {
- int num = size / 22;
- uint8 *buffer = new uint8[size];
- uint32 outsize = num * 18;
- const uint8 *src = data;
- uint8 *dst = buffer;
-
- for (int i = 0; i < num; i++) {
- WRITE_BE_UINT16(dst, READ_LE_UINT16(src));
- src += 2; dst += 2;
- WRITE_BE_UINT16(dst, READ_LE_UINT16(src));
- src += 2; dst += 2;
- WRITE_BE_UINT16(dst, READ_LE_UINT16(src));
- src += 6; dst += 2;
- WRITE_BE_UINT16(dst, READ_LE_UINT16(src));
- src += 2; dst += 2;
- WRITE_BE_UINT16(dst, READ_LE_UINT16(src));
- src += 2; dst += 2;
- WRITE_BE_UINT16(dst, READ_LE_UINT16(src));
- src += 2; dst += 2;
- WRITE_BE_UINT16(dst, READ_LE_UINT16(src));
- src += 2; dst += 2;
- WRITE_BE_UINT16(dst, READ_LE_UINT16(src));
- src += 2; dst += 2;
- WRITE_BE_UINT16(dst, READ_LE_UINT16(src));
- src += 2; dst += 2;
- }
-
- return out.addFile(filename, buffer, outsize);
-}
-
-bool extractLoLFlyingShpDefs(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id) {
- if (info->platform != Common::kPlatformFMTowns)
- return extractRaw16to8(out, info, data, size, filename, id);
-
- int outsize = size / 9 * 5;
- uint8 *buffer = new uint8[outsize];
- const uint8 *src = data;
- uint8 *dst = buffer;
-
- for (int i = outsize / 5; i; --i) {
- *dst++ = *src++;
- src++;
- *dst++ = *src++;
- src++;
- *dst++ = *src++;
- src++;
- *dst++ = *src++;
- *dst++ = *src++;
- src++;
- }
-
- return out.addFile(filename, buffer, outsize);
-}
-
-bool extractEoB2SeqData(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id) {
- int num = size / 11;
- uint8 *buffer = new uint8[size];
- const uint8 *src = data;
- uint8 *dst = buffer;
-
- for (int i = 0; i < num; i++) {
- memcpy(dst, src, 2);
- src += 2; dst += 2;
- WRITE_BE_UINT16(dst, READ_LE_UINT16(src));
- src += 2; dst += 2;
- memcpy(dst, src, 7);
- src += 7; dst += 7;
- }
-
- return out.addFile(filename, buffer, size);
-}
-
-bool extractEoB2ShapeData(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id) {
- int num = size / 6;
- uint8 *buffer = new uint8[size];
- const uint8 *src = data;
- uint8 *dst = buffer;
-
- for (int i = 0; i < num; i++) {
- WRITE_BE_UINT16(dst, READ_LE_UINT16(src));
- src += 2; dst += 2;
- memcpy(dst, src, 4);
- src += 4; dst += 4;
- }
-
- return out.addFile(filename, buffer, size);
-}
-
-bool extractEoBNpcData(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id) {
- // We use one extraction routine for both EOB 1 and EOB 2 (in spite of the data format differences)
- // since it is easy enough to generate a common output usable by both engines
-
- uint8 *buffer = 0;
- uint32 outsize = 0;
-
- if (info->game == kEoB1) {
- uint16 num = size / 243;
- outsize = num * 111 + 2;
- buffer = new uint8[outsize];
- const uint8 *src = data;
- uint8 *dst = buffer;
-
- WRITE_BE_UINT16(dst, num);
- dst += 2;
-
- for (int i = 0; i < num; i++) {
- memcpy(dst, src, 27);
- src += 27; dst += 27;
- WRITE_BE_UINT16(dst, *src++);
- dst += 2;
- WRITE_BE_UINT16(dst, *src++);
- dst += 2;
- memcpy(dst, src, 10);
- src += 10; dst += 10;
- WRITE_BE_UINT32(dst, READ_LE_UINT32(src));
- src += 4; dst += 4;
- WRITE_BE_UINT32(dst, READ_LE_UINT32(src));
- src += 4; dst += 4;
- WRITE_BE_UINT32(dst, READ_LE_UINT32(src));
- src += 4; dst += 4;
- // skipping lots of zero space
- src += 64;
- WRITE_BE_UINT32(dst, READ_LE_UINT32(src));
- src += 4; dst += 4;
- for (int ii = 0; ii < 27; ii++) {
- WRITE_BE_UINT16(dst, READ_LE_UINT16(src));
- src += 2; dst += 2;
- }
- // skipping more zero space
- src += 70;
- }
- } else {
- uint16 num = size / 345;
- outsize = num * 111 + 2;
- buffer = new uint8[outsize];
- const uint8 *src = data;
- uint8 *dst = buffer;
-
- WRITE_BE_UINT16(dst, num);
- dst += 2;
-
- for (int i = 0; i < num; i++) {
- memcpy(dst, src, 27);
- src += 27; dst += 27;
- WRITE_BE_UINT16(dst, READ_LE_UINT16(src));
- src += 2; dst += 2;
- WRITE_BE_UINT16(dst, READ_LE_UINT16(src));
- src += 2; dst += 2;
- memcpy(dst, src, 10);
- src += 10; dst += 10;
- WRITE_BE_UINT32(dst, READ_LE_UINT32(src));
- src += 4; dst += 4;
- WRITE_BE_UINT32(dst, READ_LE_UINT32(src));
- src += 4; dst += 4;
- WRITE_BE_UINT32(dst, READ_LE_UINT32(src));
- src += 4; dst += 4;
- // skipping lots of zero space
- src += 164;
- WRITE_BE_UINT32(dst, READ_LE_UINT32(src));
- src += 4; dst += 4;
- for (int ii = 0; ii < 27; ii++) {
- WRITE_BE_UINT16(dst, READ_LE_UINT16(src));
- src += 2; dst += 2;
- }
- // skipping more zero space
- src += 70;
- }
- }
-
- return out.addFile(filename, buffer, outsize);
-}
-
-bool extractMrShapeAnimData(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id) {
- int outsize = 1;
- uint8 *buffer = new uint8[size + 1];
- const uint8 *src2 = data;
- const uint8 *src1 = data + 324;
- uint8 *dst = buffer + 1;
- const uint8 *fin = data + size;
- int count = 0;
-
- do {
- if (READ_LE_UINT16(src1) == 0xffff)
- break;
-
- count++;
-
- WRITE_BE_UINT16(dst, READ_LE_UINT16(src1));
- src1 += 2;
- dst += 2;
-
- uint8 numFrames = *src1;
- *dst++ = numFrames;
- src1 += 10;
- outsize += 3;
-
- for (int i = 0; i < (numFrames << 1); i++) {
- WRITE_BE_UINT16(dst, READ_LE_UINT16(src2));
- src2 += 2;
- dst += 2;
- outsize += 2;
- }
- } while (src1 < fin);
-
- *buffer = count; // number of items
-
- return out.addFile(filename, buffer, outsize);
-}
-
-} // end of anonymous namespace
diff --git a/devtools/create_kyradat/extract.h b/devtools/create_kyradat/extract.h
deleted file mode 100644
index 4445e596bc..0000000000
--- a/devtools/create_kyradat/extract.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef CREATE_KYRADAT_EXTRACT_H
-#define CREATE_KYRADAT_EXTRACT_H
-
-#include "create_kyradat.h"
-#include "pak.h"
-#include "util.h"
-
-enum kExtractType {
- kTypeStringList = 0,
- kTypeRoomList,
- kTypeShapeList,
- kTypeRawData,
- kTypeForestSeqData,
- kTypeAmigaSfxTable,
- kTypeTownsWDSfxTable,
-
- k2TypeSeqData,
- k2TypeShpDataV1,
- k2TypeShpDataV2,
- k2TypeSoundList,
- k2TypeLangSoundList,
- k2TypeSize10StringList,
- k2TypeSfxList,
-
- k3TypeRaw16to8,
- k3TypeShpData,
-
- kLoLTypeRaw16,
- kLoLTypeRaw32,
- kLoLTypeButtonDef,
- kLoLTypeCharData,
- kLoLTypeSpellData,
- kLoLTypeCompassData,
- kLoLTypeFlightShpData,
-
- kEoB2TypeSeqData,
- kEoB2TypeShapeData,
- kEoBTypeNpcData
-};
-
-struct ExtractInformation {
- int game;
- int platform;
- int lang;
- int special;
-};
-
-struct ExtractType {
- int type;
- bool (*extract)(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id);
-};
-
-const ExtractType *findExtractType(const int type);
-byte getTypeID(int type);
-
-#endif
diff --git a/devtools/create_kyradat/games.cpp b/devtools/create_kyradat/games.cpp
index b9e7e3f1b7..0162bda8ad 100644
--- a/devtools/create_kyradat/games.cpp
+++ b/devtools/create_kyradat/games.cpp
@@ -24,113 +24,110 @@
#define FORBIDDEN_SYMBOL_ALLOW_ALL
#include "create_kyradat.h"
-#include "common/language.h"
-#include "common/platform.h"
+#include "resources.h"
// Game tables
namespace {
const Game kyra1Games[] = {
- // Demos
- { kKyra1, { EN_ANY, -1, -1 }, kPlatformDOS, kDemoVersion, { "7b7504c8560ffc914d34c44c71b3094c", 0 } },
- { kKyra1, { EN_ANY, -1, -1 }, kPlatformDOS, kTalkieDemoVersion, { "226fdba99cb11ef1047131d9a50e6292", 0 } },
-
- // Amiga
- { kKyra1, { EN_ANY, -1, -1 }, kPlatformAmiga, kNoSpecial, { "b620564b6b7e0787b053ca9e35bd9f52", 0 } },
- { kKyra1, { DE_DEU, -1, -1 }, kPlatformAmiga, kNoSpecial, { "ceddb4bd4df51698e3851e75106d117a", 0 } },
-
- // Floppy
- { kKyra1, { EN_ANY, -1, -1 }, kPlatformDOS, kNoSpecial, { "76a4fc84e173cadb6369785787e1546e", 0 } },
- { kKyra1, { DE_DEU, -1, -1 }, kPlatformDOS, kNoSpecial, { "9442d6f7db6a41f3dd4aa4de5d36e107", 0 } },
- { kKyra1, { FR_FRA, -1, -1 }, kPlatformDOS, kNoSpecial, { "aa9d6d78d8b199deaf48efeca6d19af2", 0 } },
- { kKyra1, { IT_ITA, -1, -1 }, kPlatformDOS, kNoSpecial, { "5d7550306b369a3492f9f3402702477c", 0 } },
- { kKyra1, { ES_ESP, -1, -1 }, kPlatformDOS, kNoSpecial, { "9ff130d2558bcd674d4074849d93c362", 0 } },
- { kKyra1, { RU_RUS, -1, -1 }, kPlatformDOS, kOldFloppy, { "3b4719e1f8a4d67813b7ada29774aead", 0 } },
-
- // Talkie
- { kKyra1, { EN_ANY, -1, -1 }, kPlatformDOS, kTalkieVersion, { "1ebc18f3e7fbb72474a55cb0fa089ed4", 0 } },
- { kKyra1, { DE_DEU, -1, -1 }, kPlatformDOS, kTalkieVersion, { "c65d381184f98ac26d9efd2d45baef51", 0 } },
- { kKyra1, { FR_FRA, -1, -1 }, kPlatformDOS, kTalkieVersion, { "307c5d4a554d9068ac3d326e350ae4a6", 0 } },
- { kKyra1, { IT_ITA, -1, -1 }, kPlatformDOS, kTalkieVersion, { "d0f1752098236083d81b9497bd2b6989", 0 } }, // Italian fan translation
-
- // FM-TOWNS
- { kKyra1, { EN_ANY, JA_JPN, -1 }, kPlatformFMTowns, kNoSpecial, { "5a3ad60ccd0f2e29463e0368cd14a60d", 0 } },
-
- // PC-98
- { kKyra1, { JA_JPN, -1, -1 }, kPlatformPC98, kNoSpecial, { "b9c06ac5177f5bf1f1acc0eea3937f6d", 0 } },
+ { kKyra1, kPlatformDOS, kDemoVersion, EN_ANY },
+
+ { kKyra1, kPlatformDOS, kTalkieDemoVersion, EN_ANY },
+
+ { kKyra1, kPlatformAmiga, kNoSpecial, EN_ANY },
+ { kKyra1, kPlatformAmiga, kNoSpecial, DE_DEU },
+
+ { kKyra1, kPlatformDOS, kNoSpecial, EN_ANY },
+ { kKyra1, kPlatformDOS, kNoSpecial, DE_DEU },
+ { kKyra1, kPlatformDOS, kNoSpecial, FR_FRA },
+ { kKyra1, kPlatformDOS, kNoSpecial, IT_ITA },
+ { kKyra1, kPlatformDOS, kNoSpecial, ES_ESP },
+ { kKyra1, kPlatformDOS, kOldFloppy, RU_RUS },
+
+ { kKyra1, kPlatformDOS, kTalkieVersion, EN_ANY },
+ { kKyra1, kPlatformDOS, kTalkieVersion, DE_DEU },
+ { kKyra1, kPlatformDOS, kTalkieVersion, FR_FRA },
+ { kKyra1, kPlatformDOS, kTalkieVersion, IT_ITA },
+
+ { kKyra1, kPlatformFMTowns, kNoSpecial, EN_ANY },
+ { kKyra1, kPlatformFMTowns, kNoSpecial, JA_JPN },
+
+ { kKyra1, kPlatformPC98, kNoSpecial, JA_JPN },
GAME_DUMMY_ENTRY
};
const Game kyra2Games[] = {
- // demos
- { kKyra2, { EN_ANY, -1, -1 }, kPlatformDOS, kDemoVersion, { "a620a37579dd44ab0403482285e3897f", 0 } },
+ { kKyra2, kPlatformDOS, kDemoVersion, EN_ANY },
- { kKyra2, { EN_ANY, FR_FRA, DE_DEU }, kPlatformDOS, kTalkieDemoVersion, { "85bbc1cc6c4cef6ad31fc6ee79518efb", "fa54d8abfe05f9186c05f7de7eaf1480" } },
+ { kKyra2, kPlatformDOS, kTalkieDemoVersion, EN_ANY },
+ { kKyra2, kPlatformDOS, kTalkieDemoVersion, FR_FRA },
+ { kKyra2, kPlatformDOS, kTalkieDemoVersion, DE_DEU },
- // floppy games
- { kKyra2, { EN_ANY, -1, -1 }, kPlatformDOS, kNoSpecial, { "9b0f5e57b5a2ed88b5b989cbb402b6c7", "7c3eadbe5122722cf2e5e1611e19dfb9" } },
- { kKyra2, { FR_FRA, -1, -1 }, kPlatformDOS, kNoSpecial, { "df31cc9e37e1cf68df2fdc75ddf2d87b", "fc2c6782778e6c6d5a553d1cb73c98ad" } },
- { kKyra2, { DE_DEU, -1, -1 }, kPlatformDOS, kNoSpecial, { "0ca4f9a1438264a4c63c3218e064ed3b", "0d9b0eb7b0ad889ec942d74d80dde1bf" } },
- { kKyra2, { IT_ITA, -1, -1 }, kPlatformDOS, kNoSpecial, { "178d3ab913f61bfba21d2fb196405e8c", "3a61ed6b7c00ddae383a0361799e2ba6" } },
- { kKyra2, { RU_RUS, -1, -1 }, kPlatformDOS, kNoSpecial, { "fd6a388c01de9a578e24e3bbeacd8012", "3a61ed6b7c00ddae383a0361799e2ba6" } },
+ { kKyra2, kPlatformDOS, kNoSpecial, EN_ANY },
+ { kKyra2, kPlatformDOS, kNoSpecial, FR_FRA },
+ { kKyra2, kPlatformDOS, kNoSpecial, DE_DEU },
+ { kKyra2, kPlatformDOS, kNoSpecial, IT_ITA },
+ { kKyra2, kPlatformDOS, kNoSpecial, RU_RUS },
- // talkie games
- { kKyra2, { EN_ANY, FR_FRA, DE_DEU }, kPlatformDOS, kTalkieVersion, { "85bbc1cc6c4cef6ad31fc6ee79518efb", "e20d0d2e500f01e399ec588247a7e213" } },
- { kKyra2, { IT_ITA, FR_FRA, DE_DEU }, kPlatformDOS, kTalkieVersion, { "130795aa8f2333250c895dae9028b9bb", "e20d0d2e500f01e399ec588247a7e213" } }, // Italian Fan Translation
- { kKyra2, { RU_RUS, FR_FRA, DE_DEU }, kPlatformDOS, kTalkieVersion, { "c3afd22959f515355b2a33cde950f418", "e20d0d2e500f01e399ec588247a7e213" } }, // Russian Fan Translation
+ { kKyra2, kPlatformDOS, kTalkieVersion, EN_ANY },
+ { kKyra2, kPlatformDOS, kTalkieVersion, FR_FRA },
+ { kKyra2, kPlatformDOS, kTalkieVersion, DE_DEU },
+ { kKyra2, kPlatformDOS, kTalkieVersion, IT_ITA },
+ { kKyra2, kPlatformDOS, kTalkieVersion, RU_RUS },
- // FM-TOWNS games
- { kKyra2, { EN_ANY, JA_JPN, -1 }, kPlatformFMTowns, kNoSpecial, { "74f50d79c919cc8e7196c24942ce43d7", "a9a7fd4f05d00090e9e8bda073e6d431" } },
+ { kKyra2, kPlatformFMTowns, kNoSpecial, EN_ANY },
+ { kKyra2, kPlatformFMTowns, kNoSpecial, JA_JPN },
- // PC-98
- { kKyra2, { EN_ANY, JA_JPN, -1 }, kPlatformPC98, kNoSpecial, { "9bbf9a69be956db072b485929b416082", "f55fda3e60c4956ce6e72b24d2ae1a07" } },
+ { kKyra2, kPlatformPC98, kNoSpecial, EN_ANY },
+ { kKyra2, kPlatformPC98, kNoSpecial, JA_JPN },
GAME_DUMMY_ENTRY
};
const Game kyra3Games[] = {
- // DOS CD (multi language version, with no language specific strings)
- { kKyra3, { EN_ANY, FR_FRA, DE_DEU }, kPlatformDOS, kTalkieVersion, { "bf68701eb591d0b72219f314c0d32688", 0 } },
- { kKyra3, { EN_ANY, IT_ITA, DE_DEU }, kPlatformDOS, kTalkieVersion, { "bf68701eb591d0b72219f314c0d32688", 0 } }, // Fan translation // TODO: Verify md5sum
- { kKyra3, { ES_ESP, FR_FRA, DE_DEU }, kPlatformDOS, kTalkieVersion, { "bf68701eb591d0b72219f314c0d32688", 0 } }, // Fan translation // TODO: Verify md5sum
+ { kKyra3, kPlatformDOS, kTalkieVersion, EN_ANY },
+ { kKyra3, kPlatformDOS, kTalkieVersion, FR_FRA },
+ { kKyra3, kPlatformDOS, kTalkieVersion, DE_DEU },
+ { kKyra3, kPlatformDOS, kTalkieVersion, IT_ITA },
+ { kKyra3, kPlatformDOS, kTalkieVersion, ES_ESP },
GAME_DUMMY_ENTRY
};
const Game eob1Games[] = {
- { kEoB1, { EN_ANY, -1, -1 }, kPlatformDOS, kNoSpecial, { "1bde1dd37b40ab6de8ad11be33a44c5a", "d760a605d1a1302d06975a1f209fdd72" } },
- { kEoB1, { DE_DEU, -1, -1 }, kPlatformDOS, kNoSpecial, { "0fa3c6e00a81171b9f2adb3fdeb8eea3", "756f300c62aabf1dbd3c26b3b04f8c00" } },
+ { kEoB1, kPlatformDOS, kNoSpecial, EN_ANY },
+ { kEoB1, kPlatformDOS, kNoSpecial, DE_DEU },
+
GAME_DUMMY_ENTRY
};
const Game eob2Games[] = {
- { kEoB2, { EN_ANY, -1, -1 }, kPlatformDOS, kNoSpecial, { "e006d031c2d854f748947f777e0c59b0", 0 } },
- { kEoB2, { DE_DEU, -1, -1 }, kPlatformDOS, kNoSpecial, { "6c6c4168deb2a4cb3dee3f1be2d39746", 0 } },
+ { kEoB2, kPlatformDOS, kNoSpecial, EN_ANY },
+ { kEoB2, kPlatformDOS, kNoSpecial, DE_DEU },
+
GAME_DUMMY_ENTRY
};
const Game lolGames[] = {
- // DOS demo
- { kLoL, { EN_ANY, -1, -1 }, kPlatformDOS, kDemoVersion, { "30bb5af87d38adb47d3e6ce06b1cb042", 0 } },
+ { kLoL, kPlatformDOS, kDemoVersion, EN_ANY },
+
+ { kLoL, kPlatformDOS, kNoSpecial, EN_ANY },
+ { kLoL, kPlatformDOS, kNoSpecial, RU_RUS },
+ { kLoL, kPlatformDOS, kNoSpecial, DE_DEU },
+ { kLoL, kPlatformDOS, kNoSpecial, FR_FRA },
- // DOS floppy (no language specifc strings except character presets)
- { kLoL, { EN_ANY, -1, -1 }, kPlatformDOS, kNoSpecial, { "0cc764a204f7ba8cefe1a5f14c479619", 0 } },
- { kLoL, { RU_RUS, -1, -1 }, kPlatformDOS, kNoSpecial, { "80a9f9bf243bc6ed36d98584fc6988c4", 0 } },
- { kLoL, { DE_DEU, -1, -1 }, kPlatformDOS, kNoSpecial, { "6b843869772c1b779e1386be868c15dd", 0 } },
- { kLoL, { FR_FRA, -1, -1 }, kPlatformDOS, kNoSpecial, { "6b843869772c1b779e1386be868c15dd", 0 } },
+ { kLoL, kPlatformDOS, kTalkieVersion, EN_ANY },
+ { kLoL, kPlatformDOS, kTalkieVersion, FR_FRA },
+ { kLoL, kPlatformDOS, kTalkieVersion, DE_DEU },
+ { kLoL, kPlatformDOS, kTalkieVersion, IT_ITA },
+ { kLoL, kPlatformDOS, kTalkieVersion, RU_RUS },
- // PC98 (no language specifc strings)
- { kLoL, { JA_JPN, -1, -1 }, kPlatformPC98, kNoSpecial, { "6d5bd4a2f5ce433365734ca6b7a8d984", "1b0a457c48ae6908da301b656fe0aab4" } },
+ { kLoL, kPlatformPC98, kNoSpecial, JA_JPN },
- // FM-Towns (no language specifc strings)
- { kLoL, { JA_JPN, -1, -1 }, kPlatformFMTowns, kNoSpecial, { "a281c7143bf2b6c5d4daa107a4b0427e", "34b4cecce179990e3bcaaa2d31484a90"} },
+ { kLoL, kPlatformFMTowns, kNoSpecial, JA_JPN },
- // DOS CD (multi language version, with no language specific strings)
- { kLoL, { EN_ANY, FR_FRA, DE_DEU }, kPlatformDOS, kTalkieVersion, { "9d1778314de80598c0b0d032e2a1a1cf", "263998ec600afca1cc7b935c473df670" } },
- { kLoL, { IT_ITA, FR_FRA, DE_DEU }, kPlatformDOS, kTalkieVersion, { "9d1778314de80598c0b0d032e2a1a1cf", "f2af366e00f79dbf832fa19701d71ed9" } }, // Italian fan translation
- { kLoL, { EN_ANY, FR_FRA, RU_RUS }, kPlatformDOS, kTalkieVersion, { "9d1778314de80598c0b0d032e2a1a1cf", "5b33478718968676343803911dd5e3e4" } }, // Russian fan translation
GAME_DUMMY_ENTRY
};
@@ -824,7 +821,7 @@ const int lolFloppyNeed[] = {
kLoLDscScaleWidthData,
kLoLDscScaleHeightData,
kRpgCommonDscX,
- kLoLDscY,
+ kLoLBaseDscY,
kRpgCommonDscTileIndex,
kRpgCommonDscUnk2,
kRpgCommonDscDoorShapeIndex,
@@ -907,7 +904,7 @@ const int lolPC98Need[] = {
kLoLDscScaleWidthData,
kLoLDscScaleHeightData,
kRpgCommonDscX,
- kLoLDscY,
+ kLoLBaseDscY,
kRpgCommonDscTileIndex,
kRpgCommonDscUnk2,
kRpgCommonDscDoorShapeIndex,
@@ -991,7 +988,7 @@ const int lolFMTownsNeed[] = {
kLoLDscScaleWidthData,
kLoLDscScaleHeightData,
kRpgCommonDscX,
- kLoLDscY,
+ kLoLBaseDscY,
kRpgCommonDscTileIndex,
kRpgCommonDscUnk2,
kRpgCommonDscDoorShapeIndex,
@@ -1080,7 +1077,7 @@ const int lolCDNeed[] = {
kLoLDscScaleWidthData,
kLoLDscScaleHeightData,
kRpgCommonDscX,
- kLoLDscY,
+ kLoLBaseDscY,
kRpgCommonDscTileIndex,
kRpgCommonDscUnk2,
kRpgCommonDscDoorShapeIndex,
@@ -1231,14 +1228,14 @@ const int eob1FloppyNeed[] = {
kEoBBaseCursedString,
kEoBBaseEnchantedString,
kEoBBaseMagicObjectStrings,
- kEoBBaseMagicObject5String,
+ kEoBBaseMagicObjectString5,
kEoBBasePatternSuffix,
kEoBBasePatternGrFix1,
kEoBBasePatternGrFix2,
kEoBBaseValidateArmorString,
kEoBBaseValidateNoDropString,
kEoBBasePotionStrings,
- kEoBBaseWandString,
+ kEoBBaseWandStrings,
kEoBBaseItemMisuseStrings,
kEoBBaseTakenStrings,
@@ -1360,7 +1357,7 @@ const int eob1FloppyNeed[] = {
kEoBBaseDscItemPosIndex,
kEoBBaseDscItemShpX,
- kEoBBaseDscItemPosUnk,
+ kEoBBaseDscItemScaleIndex,
kEoBBaseDscItemTileIndex,
kEoBBaseDscItemShapeMap,
kEoBBaseDscTelptrShpCoords,
@@ -1452,7 +1449,7 @@ const int eob2FloppyNeed[] = {
kEoBBaseCursedString,
kEoBBaseEnchantedString,
kEoBBaseMagicObjectStrings,
- kEoBBaseMagicObject5String,
+ kEoBBaseMagicObjectString5,
kEoBBasePatternSuffix,
kEoBBasePatternGrFix1,
kEoBBasePatternGrFix2,
@@ -1460,7 +1457,7 @@ const int eob2FloppyNeed[] = {
kEoBBaseValidateCursedString,
kEoBBaseValidateNoDropString,
kEoBBasePotionStrings,
- kEoBBaseWandString,
+ kEoBBaseWandStrings,
kEoBBaseItemMisuseStrings,
kEoBBaseTakenStrings,
@@ -1581,7 +1578,7 @@ const int eob2FloppyNeed[] = {
kEoBBaseDscItemPosIndex,
kEoBBaseDscItemShpX,
- kEoBBaseDscItemPosUnk,
+ kEoBBaseDscItemScaleIndex,
kEoBBaseDscItemTileIndex,
kEoBBaseDscItemShapeMap,
kEoBBaseDscTelptrShpCoords,
diff --git a/devtools/create_kyradat/module.mk b/devtools/create_kyradat/module.mk
index fb458b43ff..af80f5d4d7 100644
--- a/devtools/create_kyradat/module.mk
+++ b/devtools/create_kyradat/module.mk
@@ -3,12 +3,11 @@ MODULE := devtools/create_kyradat
MODULE_OBJS := \
create_kyradat.o \
- extract.o \
games.o \
md5.o \
pak.o \
- search.o \
- tables.o \
+ resources.o \
+ types.o \
util.o
# Set the name of the executable
diff --git a/devtools/create_kyradat/resources.cpp b/devtools/create_kyradat/resources.cpp
new file mode 100644
index 0000000000..66db495caf
--- /dev/null
+++ b/devtools/create_kyradat/resources.cpp
@@ -0,0 +1,1950 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "resources.h"
+#include "types.h"
+
+// The Legend of Kyrandia
+#include "resources/lok_amiga.h"
+#include "resources/lok_amiga_english.h"
+#include "resources/lok_amiga_german.h"
+
+#include "resources/lok_dos_demo.h"
+#include "resources/lok_dos_demo_english.h"
+
+#include "resources/lok_dos.h"
+#include "resources/lok_dos_english.h"
+#include "resources/lok_dos_french.h"
+#include "resources/lok_dos_german.h"
+#include "resources/lok_dos_italian.h"
+#include "resources/lok_dos_oldfloppy.h"
+#include "resources/lok_dos_oldfloppy_russian.h"
+#include "resources/lok_dos_spanish.h"
+
+#include "resources/lok_dos_cd.h"
+#include "resources/lok_dos_cd_english.h"
+#include "resources/lok_dos_cd_french.h"
+#include "resources/lok_dos_cd_german.h"
+#include "resources/lok_dos_cd_italian.h"
+
+#include "resources/lok_dos_cddemo.h"
+#include "resources/lok_dos_cddemo_english.h"
+
+#include "resources/lok_fmtowns.h"
+#include "resources/lok_fmtowns_english.h"
+#include "resources/lok_fmtowns_japanese.h"
+
+#include "resources/lok_pc98.h"
+#include "resources/lok_pc98_japanese.h"
+
+// The Hand of Fate
+#include "resources/hof_dos_demo.h"
+
+#include "resources/hof_dos.h"
+#include "resources/hof_dos_english.h"
+#include "resources/hof_dos_french.h"
+#include "resources/hof_dos_german.h"
+#include "resources/hof_dos_italian.h"
+#include "resources/hof_dos_russian.h"
+
+#include "resources/hof_dos_cddemo.h"
+#include "resources/hof_dos_cddemo_english.h"
+#include "resources/hof_dos_cddemo_french.h"
+#include "resources/hof_dos_cddemo_german.h"
+
+#include "resources/hof_dos_cd.h"
+#include "resources/hof_dos_cd_english.h"
+#include "resources/hof_dos_cd_french.h"
+#include "resources/hof_dos_cd_german.h"
+#include "resources/hof_dos_cd_italian.h"
+#include "resources/hof_dos_cd_russian.h"
+
+#include "resources/hof_fmtowns.h"
+#include "resources/hof_fmtowns_english.h"
+#include "resources/hof_fmtowns_japanese.h"
+
+#include "resources/hof_pc98.h"
+#include "resources/hof_pc98_english.h"
+#include "resources/hof_pc98_japanese.h"
+
+// Malcolm's Revenge
+#include "resources/mr_dos_cd.h"
+
+// Eye of the Beholder
+#include "resources/eob1_dos.h"
+#include "resources/eob1_dos_english.h"
+#include "resources/eob1_dos_german.h"
+
+// Eye of the Beholder: The Legend of Darkmoon
+#include "resources/eob2_dos.h"
+#include "resources/eob2_dos_english.h"
+#include "resources/eob2_dos_german.h"
+
+// Lands of Lore
+#include "resources/lol_dos_demo.h"
+#include "resources/lol_dos_demo_english.h"
+
+#include "resources/lol_dos.h"
+#include "resources/lol_dos_english.h"
+#include "resources/lol_dos_french.h"
+#include "resources/lol_dos_german.h"
+#include "resources/lol_dos_russian.h"
+
+#include "resources/lol_dos_cd.h"
+#include "resources/lol_dos_cd_english.h"
+#include "resources/lol_dos_cd_french.h"
+#include "resources/lol_dos_cd_german.h"
+#include "resources/lol_dos_cd_italian.h"
+#include "resources/lol_dos_cd_russian.h"
+
+#include "resources/lol_pc98.h"
+#include "resources/lol_pc98_japanese.h"
+
+#include "resources/lol_fmtowns.h"
+#include "resources/lol_fmtowns_japanese.h"
+
+static const ResourceProvider resourceProviders[] = {
+ { k1WestwoodLogoSeq, kKyra1, kPlatformDOS, kDemoVersion, UNK_LANG, &k1WestwoodLogoSeqDOSDemoProvider },
+ { k1KyrandiaLogoSeq, kKyra1, kPlatformDOS, kDemoVersion, UNK_LANG, &k1KyrandiaLogoSeqDOSDemoProvider },
+ { k1IntroCPSStrings, kKyra1, kPlatformDOS, kDemoVersion, UNK_LANG, &k1IntroCPSStringsDOSDemoProvider },
+ { k1IntroCOLStrings, kKyra1, kPlatformDOS, kDemoVersion, UNK_LANG, &k1IntroCOLStringsDOSDemoProvider },
+ { k1IntroWSAStrings, kKyra1, kPlatformDOS, kDemoVersion, UNK_LANG, &k1IntroWSAStringsDOSDemoProvider },
+ { k1IntroStrings, kKyra1, kPlatformDOS, kDemoVersion, EN_ANY, &k1IntroStringsDOSDemoEnglishProvider },
+ { k1Demo1Seq, kKyra1, kPlatformDOS, kDemoVersion, UNK_LANG, &k1Demo1SeqDOSDemoProvider },
+ { k1Demo2Seq, kKyra1, kPlatformDOS, kDemoVersion, UNK_LANG, &k1Demo2SeqDOSDemoProvider },
+ { k1Demo3Seq, kKyra1, kPlatformDOS, kDemoVersion, UNK_LANG, &k1Demo3SeqDOSDemoProvider },
+ { k1Demo4Seq, kKyra1, kPlatformDOS, kDemoVersion, UNK_LANG, &k1Demo4SeqDOSDemoProvider },
+ { k1AudioTracksIntro, kKyra1, kPlatformDOS, kDemoVersion, UNK_LANG, &k1AudioTracksIntroDOSDemoProvider },
+ { k1KallakWritingSeq, kKyra1, kPlatformDOS, kTalkieDemoVersion, UNK_LANG, &k1KallakWritingSeqDOSCDDemoProvider },
+ { k1MalcolmTreeSeq, kKyra1, kPlatformDOS, kTalkieDemoVersion, UNK_LANG, &k1MalcolmTreeSeqDOSCDDemoProvider },
+ { k1WestwoodLogoSeq, kKyra1, kPlatformDOS, kTalkieDemoVersion, UNK_LANG, &k1WestwoodLogoSeqDOSCDDemoProvider },
+ { k1KyrandiaLogoSeq, kKyra1, kPlatformDOS, kTalkieDemoVersion, UNK_LANG, &k1KyrandiaLogoSeqDOSCDDemoProvider },
+ { k1KallakMalcolmSeq, kKyra1, kPlatformDOS, kTalkieDemoVersion, UNK_LANG, &k1KallakMalcolmSeqDOSCDDemoProvider },
+ { k1ForestSeq, kKyra1, kPlatformDOS, kTalkieDemoVersion, UNK_LANG, &k1ForestSeqDOSCDDemoProvider },
+ { k1IntroCPSStrings, kKyra1, kPlatformDOS, kTalkieDemoVersion, UNK_LANG, &k1IntroCPSStringsDOSCDDemoProvider },
+ { k1IntroCOLStrings, kKyra1, kPlatformDOS, kTalkieDemoVersion, UNK_LANG, &k1IntroCOLStringsDOSCDDemoProvider },
+ { k1IntroWSAStrings, kKyra1, kPlatformDOS, kTalkieDemoVersion, UNK_LANG, &k1IntroWSAStringsDOSCDDemoProvider },
+ { k1IntroStrings, kKyra1, kPlatformDOS, kTalkieDemoVersion, EN_ANY, &k1IntroStringsDOSCDDemoEnglishProvider },
+ { k1AudioTracksIntro, kKyra1, kPlatformDOS, kTalkieDemoVersion, UNK_LANG, &k1AudioTracksIntroDOSCDDemoProvider },
+ { k1KallakWritingSeq, kKyra1, kPlatformAmiga, kNoSpecial, UNK_LANG, &k1KallakWritingSeqAmigaProvider },
+ { k1MalcolmTreeSeq, kKyra1, kPlatformAmiga, kNoSpecial, UNK_LANG, &k1MalcolmTreeSeqAmigaProvider },
+ { k1WestwoodLogoSeq, kKyra1, kPlatformAmiga, kNoSpecial, UNK_LANG, &k1WestwoodLogoSeqAmigaProvider },
+ { k1KyrandiaLogoSeq, kKyra1, kPlatformAmiga, kNoSpecial, UNK_LANG, &k1KyrandiaLogoSeqAmigaProvider },
+ { k1KallakMalcolmSeq, kKyra1, kPlatformAmiga, kNoSpecial, UNK_LANG, &k1KallakMalcolmSeqAmigaProvider },
+ { k1ForestSeq, kKyra1, kPlatformAmiga, kNoSpecial, UNK_LANG, &k1ForestSeqAmigaProvider },
+ { k1IntroCPSStrings, kKyra1, kPlatformAmiga, kNoSpecial, UNK_LANG, &k1IntroCPSStringsAmigaProvider },
+ { k1IntroWSAStrings, kKyra1, kPlatformAmiga, kNoSpecial, UNK_LANG, &k1IntroWSAStringsAmigaProvider },
+ { k1IntroCOLStrings, kKyra1, kPlatformAmiga, kNoSpecial, UNK_LANG, &k1IntroCOLStringsAmigaProvider },
+ { k1IntroStrings, kKyra1, kPlatformAmiga, kNoSpecial, EN_ANY, &k1IntroStringsAmigaEnglishProvider },
+ { k1RoomList, kKyra1, kPlatformAmiga, kNoSpecial, UNK_LANG, &k1RoomListAmigaProvider },
+ { k1RoomFilenames, kKyra1, kPlatformAmiga, kNoSpecial, UNK_LANG, &k1RoomFilenamesAmigaProvider },
+ { k1CharacterImageFilenames, kKyra1, kPlatformAmiga, kNoSpecial, UNK_LANG, &k1CharacterImageFilenamesAmigaProvider },
+ { k1DefaultShapes, kKyra1, kPlatformAmiga, kNoSpecial, UNK_LANG, &k1DefaultShapesAmigaProvider },
+ { k1ItemNames, kKyra1, kPlatformAmiga, kNoSpecial, EN_ANY, &k1ItemNamesAmigaEnglishProvider },
+ { k1TakenStrings, kKyra1, kPlatformAmiga, kNoSpecial, EN_ANY, &k1TakenStringsAmigaEnglishProvider },
+ { k1PlacedStrings, kKyra1, kPlatformAmiga, kNoSpecial, EN_ANY, &k1PlacedStringsAmigaEnglishProvider },
+ { k1DroppedStrings, kKyra1, kPlatformAmiga, kNoSpecial, EN_ANY, &k1DroppedStringsAmigaEnglishProvider },
+ { k1NoDropStrings, kKyra1, kPlatformAmiga, kNoSpecial, EN_ANY, &k1NoDropStringsAmigaEnglishProvider },
+ { k1AmuleteAnimSeq, kKyra1, kPlatformAmiga, kNoSpecial, UNK_LANG, &k1AmuleteAnimSeqAmigaProvider },
+ { k1PutDownString, kKyra1, kPlatformAmiga, kNoSpecial, EN_ANY, &k1PutDownStringAmigaEnglishProvider },
+ { k1WaitAmuletString, kKyra1, kPlatformAmiga, kNoSpecial, EN_ANY, &k1WaitAmuletStringAmigaEnglishProvider },
+ { k1BlackJewelString, kKyra1, kPlatformAmiga, kNoSpecial, EN_ANY, &k1BlackJewelStringAmigaEnglishProvider },
+ { k1HealingTipString, kKyra1, kPlatformAmiga, kNoSpecial, EN_ANY, &k1HealingTipStringAmigaEnglishProvider },
+ { k1PoisonGoneString, kKyra1, kPlatformAmiga, kNoSpecial, EN_ANY, &k1PoisonGoneStringAmigaEnglishProvider },
+ { k1Healing1Shapes, kKyra1, kPlatformAmiga, kNoSpecial, UNK_LANG, &k1Healing1ShapesAmigaProvider },
+ { k1Healing2Shapes, kKyra1, kPlatformAmiga, kNoSpecial, UNK_LANG, &k1Healing2ShapesAmigaProvider },
+ { k1ThePoisonStrings, kKyra1, kPlatformAmiga, kNoSpecial, EN_ANY, &k1ThePoisonStringsAmigaEnglishProvider },
+ { k1FluteStrings, kKyra1, kPlatformAmiga, kNoSpecial, EN_ANY, &k1FluteStringsAmigaEnglishProvider },
+ { k1PoisonDeathShapes, kKyra1, kPlatformAmiga, kNoSpecial, UNK_LANG, &k1PoisonDeathShapesAmigaProvider },
+ { k1FluteShapes, kKyra1, kPlatformAmiga, kNoSpecial, UNK_LANG, &k1FluteShapesAmigaProvider },
+ { k1Winter1Shapes, kKyra1, kPlatformAmiga, kNoSpecial, UNK_LANG, &k1Winter1ShapesAmigaProvider },
+ { k1Winter2Shapes, kKyra1, kPlatformAmiga, kNoSpecial, UNK_LANG, &k1Winter2ShapesAmigaProvider },
+ { k1Winter3Shapes, kKyra1, kPlatformAmiga, kNoSpecial, UNK_LANG, &k1Winter3ShapesAmigaProvider },
+ { k1DrinkShapes, kKyra1, kPlatformAmiga, kNoSpecial, UNK_LANG, &k1DrinkShapesAmigaProvider },
+ { k1WispShapes, kKyra1, kPlatformAmiga, kNoSpecial, UNK_LANG, &k1WispShapesAmigaProvider },
+ { k1MagicAnimShapes, kKyra1, kPlatformAmiga, kNoSpecial, UNK_LANG, &k1MagicAnimShapesAmigaProvider },
+ { k1BranStoneShapes, kKyra1, kPlatformAmiga, kNoSpecial, UNK_LANG, &k1BranStoneShapesAmigaProvider },
+ { k1WispJewelStrings, kKyra1, kPlatformAmiga, kNoSpecial, EN_ANY, &k1WispJewelStringsAmigaEnglishProvider },
+ { k1MagicJewelStrings, kKyra1, kPlatformAmiga, kNoSpecial, EN_ANY, &k1MagicJewelStringsAmigaEnglishProvider },
+ { k1FlaskFullString, kKyra1, kPlatformAmiga, kNoSpecial, EN_ANY, &k1FlaskFullStringAmigaEnglishProvider },
+ { k1FullFlaskString, kKyra1, kPlatformAmiga, kNoSpecial, EN_ANY, &k1FullFlaskStringAmigaEnglishProvider },
+ { k1OutroReunionSeq, kKyra1, kPlatformAmiga, kNoSpecial, UNK_LANG, &k1OutroReunionSeqAmigaProvider },
+ { k1OutroHomeString, kKyra1, kPlatformAmiga, kNoSpecial, EN_ANY, &k1OutroHomeStringAmigaEnglishProvider },
+ { k1VeryCleverString, kKyra1, kPlatformAmiga, kNoSpecial, EN_ANY, &k1VeryCleverStringAmigaEnglishProvider },
+ { k1GUIStrings, kKyra1, kPlatformAmiga, kNoSpecial, EN_ANY, &k1GUIStringsAmigaEnglishProvider },
+ { k1NewGameString, kKyra1, kPlatformAmiga, kNoSpecial, EN_ANY, &k1NewGameStringAmigaEnglishProvider },
+ { k1ConfigStrings, kKyra1, kPlatformAmiga, kNoSpecial, EN_ANY, &k1ConfigStringsAmigaEnglishProvider },
+ { k1CreditsStrings, kKyra1, kPlatformAmiga, kNoSpecial, EN_ANY, &k1CreditsStringsAmigaEnglishProvider },
+ { k1AmigaIntroSFXTable, kKyra1, kPlatformAmiga, kNoSpecial, UNK_LANG, &k1AmigaIntroSFXTableAmigaProvider },
+ { k1AmigaGameSFXTable, kKyra1, kPlatformAmiga, kNoSpecial, UNK_LANG, &k1AmigaGameSFXTableAmigaProvider },
+ { k1IntroStrings, kKyra1, kPlatformAmiga, kNoSpecial, DE_DEU, &k1IntroStringsAmigaGermanProvider },
+ { k1ItemNames, kKyra1, kPlatformAmiga, kNoSpecial, DE_DEU, &k1ItemNamesAmigaGermanProvider },
+ { k1TakenStrings, kKyra1, kPlatformAmiga, kNoSpecial, DE_DEU, &k1TakenStringsAmigaGermanProvider },
+ { k1PlacedStrings, kKyra1, kPlatformAmiga, kNoSpecial, DE_DEU, &k1PlacedStringsAmigaGermanProvider },
+ { k1DroppedStrings, kKyra1, kPlatformAmiga, kNoSpecial, DE_DEU, &k1DroppedStringsAmigaGermanProvider },
+ { k1NoDropStrings, kKyra1, kPlatformAmiga, kNoSpecial, DE_DEU, &k1NoDropStringsAmigaGermanProvider },
+ { k1PutDownString, kKyra1, kPlatformAmiga, kNoSpecial, DE_DEU, &k1PutDownStringAmigaGermanProvider },
+ { k1WaitAmuletString, kKyra1, kPlatformAmiga, kNoSpecial, DE_DEU, &k1WaitAmuletStringAmigaGermanProvider },
+ { k1BlackJewelString, kKyra1, kPlatformAmiga, kNoSpecial, DE_DEU, &k1BlackJewelStringAmigaGermanProvider },
+ { k1HealingTipString, kKyra1, kPlatformAmiga, kNoSpecial, DE_DEU, &k1HealingTipStringAmigaGermanProvider },
+ { k1PoisonGoneString, kKyra1, kPlatformAmiga, kNoSpecial, DE_DEU, &k1PoisonGoneStringAmigaGermanProvider },
+ { k1ThePoisonStrings, kKyra1, kPlatformAmiga, kNoSpecial, DE_DEU, &k1ThePoisonStringsAmigaGermanProvider },
+ { k1FluteStrings, kKyra1, kPlatformAmiga, kNoSpecial, DE_DEU, &k1FluteStringsAmigaGermanProvider },
+ { k1WispJewelStrings, kKyra1, kPlatformAmiga, kNoSpecial, DE_DEU, &k1WispJewelStringsAmigaGermanProvider },
+ { k1MagicJewelStrings, kKyra1, kPlatformAmiga, kNoSpecial, DE_DEU, &k1MagicJewelStringsAmigaGermanProvider },
+ { k1FlaskFullString, kKyra1, kPlatformAmiga, kNoSpecial, DE_DEU, &k1FlaskFullStringAmigaGermanProvider },
+ { k1FullFlaskString, kKyra1, kPlatformAmiga, kNoSpecial, DE_DEU, &k1FullFlaskStringAmigaGermanProvider },
+ { k1OutroHomeString, kKyra1, kPlatformAmiga, kNoSpecial, DE_DEU, &k1OutroHomeStringAmigaGermanProvider },
+ { k1VeryCleverString, kKyra1, kPlatformAmiga, kNoSpecial, DE_DEU, &k1VeryCleverStringAmigaGermanProvider },
+ { k1GUIStrings, kKyra1, kPlatformAmiga, kNoSpecial, DE_DEU, &k1GUIStringsAmigaGermanProvider },
+ { k1NewGameString, kKyra1, kPlatformAmiga, kNoSpecial, DE_DEU, &k1NewGameStringAmigaGermanProvider },
+ { k1ConfigStrings, kKyra1, kPlatformAmiga, kNoSpecial, DE_DEU, &k1ConfigStringsAmigaGermanProvider },
+ { k1CreditsStrings, kKyra1, kPlatformAmiga, kNoSpecial, DE_DEU, &k1CreditsStringsAmigaGermanProvider },
+ { k1KallakWritingSeq, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1KallakWritingSeqDOSProvider },
+ { k1MalcolmTreeSeq, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1MalcolmTreeSeqDOSProvider },
+ { k1WestwoodLogoSeq, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1WestwoodLogoSeqDOSProvider },
+ { k1KyrandiaLogoSeq, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1KyrandiaLogoSeqDOSProvider },
+ { k1KallakMalcolmSeq, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1KallakMalcolmSeqDOSProvider },
+ { k1ForestSeq, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1ForestSeqDOSProvider },
+ { k1IntroCPSStrings, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1IntroCPSStringsDOSProvider },
+ { k1IntroCOLStrings, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1IntroCOLStringsDOSProvider },
+ { k1IntroWSAStrings, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1IntroWSAStringsDOSProvider },
+ { k1IntroStrings, kKyra1, kPlatformDOS, kNoSpecial, EN_ANY, &k1IntroStringsDOSEnglishProvider },
+ { k1RoomList, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1RoomListDOSProvider },
+ { k1RoomFilenames, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1RoomFilenamesDOSProvider },
+ { k1CharacterImageFilenames, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1CharacterImageFilenamesDOSProvider },
+ { k1DefaultShapes, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1DefaultShapesDOSProvider },
+ { k1ItemNames, kKyra1, kPlatformDOS, kNoSpecial, EN_ANY, &k1ItemNamesDOSEnglishProvider },
+ { k1TakenStrings, kKyra1, kPlatformDOS, kNoSpecial, EN_ANY, &k1TakenStringsDOSEnglishProvider },
+ { k1PlacedStrings, kKyra1, kPlatformDOS, kNoSpecial, EN_ANY, &k1PlacedStringsDOSEnglishProvider },
+ { k1DroppedStrings, kKyra1, kPlatformDOS, kNoSpecial, EN_ANY, &k1DroppedStringsDOSEnglishProvider },
+ { k1NoDropStrings, kKyra1, kPlatformDOS, kNoSpecial, EN_ANY, &k1NoDropStringsDOSEnglishProvider },
+ { k1AmuleteAnimSeq, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1AmuleteAnimSeqDOSProvider },
+ { k1SpecialPalette1, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1SpecialPalette1DOSProvider },
+ { k1SpecialPalette2, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1SpecialPalette2DOSProvider },
+ { k1SpecialPalette3, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1SpecialPalette3DOSProvider },
+ { k1SpecialPalette4, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1SpecialPalette4DOSProvider },
+ { k1SpecialPalette5, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1SpecialPalette5DOSProvider },
+ { k1SpecialPalette6, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1SpecialPalette6DOSProvider },
+ { k1SpecialPalette7, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1SpecialPalette7DOSProvider },
+ { k1SpecialPalette8, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1SpecialPalette8DOSProvider },
+ { k1SpecialPalette9, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1SpecialPalette9DOSProvider },
+ { k1SpecialPalette10, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1SpecialPalette10DOSProvider },
+ { k1SpecialPalette11, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1SpecialPalette11DOSProvider },
+ { k1SpecialPalette12, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1SpecialPalette12DOSProvider },
+ { k1SpecialPalette13, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1SpecialPalette13DOSProvider },
+ { k1SpecialPalette14, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1SpecialPalette14DOSProvider },
+ { k1SpecialPalette15, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1SpecialPalette15DOSProvider },
+ { k1SpecialPalette16, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1SpecialPalette16DOSProvider },
+ { k1SpecialPalette17, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1SpecialPalette17DOSProvider },
+ { k1SpecialPalette18, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1SpecialPalette18DOSProvider },
+ { k1SpecialPalette19, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1SpecialPalette19DOSProvider },
+ { k1SpecialPalette20, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1SpecialPalette20DOSProvider },
+ { k1SpecialPalette21, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1SpecialPalette21DOSProvider },
+ { k1SpecialPalette22, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1SpecialPalette22DOSProvider },
+ { k1SpecialPalette23, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1SpecialPalette23DOSProvider },
+ { k1SpecialPalette24, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1SpecialPalette24DOSProvider },
+ { k1SpecialPalette25, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1SpecialPalette25DOSProvider },
+ { k1SpecialPalette26, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1SpecialPalette26DOSProvider },
+ { k1SpecialPalette27, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1SpecialPalette27DOSProvider },
+ { k1SpecialPalette28, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1SpecialPalette28DOSProvider },
+ { k1SpecialPalette29, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1SpecialPalette29DOSProvider },
+ { k1SpecialPalette30, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1SpecialPalette30DOSProvider },
+ { k1SpecialPalette31, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1SpecialPalette31DOSProvider },
+ { k1SpecialPalette32, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1SpecialPalette32DOSProvider },
+ { k1SpecialPalette33, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1SpecialPalette33DOSProvider },
+ { k1PutDownString, kKyra1, kPlatformDOS, kNoSpecial, EN_ANY, &k1PutDownStringDOSEnglishProvider },
+ { k1WaitAmuletString, kKyra1, kPlatformDOS, kNoSpecial, EN_ANY, &k1WaitAmuletStringDOSEnglishProvider },
+ { k1BlackJewelString, kKyra1, kPlatformDOS, kNoSpecial, EN_ANY, &k1BlackJewelStringDOSEnglishProvider },
+ { k1HealingTipString, kKyra1, kPlatformDOS, kNoSpecial, EN_ANY, &k1HealingTipStringDOSEnglishProvider },
+ { k1PoisonGoneString, kKyra1, kPlatformDOS, kNoSpecial, EN_ANY, &k1PoisonGoneStringDOSEnglishProvider },
+ { k1Healing1Shapes, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1Healing1ShapesDOSProvider },
+ { k1Healing2Shapes, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1Healing2ShapesDOSProvider },
+ { k1ThePoisonStrings, kKyra1, kPlatformDOS, kNoSpecial, EN_ANY, &k1ThePoisonStringsDOSEnglishProvider },
+ { k1FluteStrings, kKyra1, kPlatformDOS, kNoSpecial, EN_ANY, &k1FluteStringsDOSEnglishProvider },
+ { k1PoisonDeathShapes, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1PoisonDeathShapesDOSProvider },
+ { k1FluteShapes, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1FluteShapesDOSProvider },
+ { k1Winter1Shapes, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1Winter1ShapesDOSProvider },
+ { k1Winter2Shapes, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1Winter2ShapesDOSProvider },
+ { k1Winter3Shapes, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1Winter3ShapesDOSProvider },
+ { k1DrinkShapes, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1DrinkShapesDOSProvider },
+ { k1WispShapes, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1WispShapesDOSProvider },
+ { k1MagicAnimShapes, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1MagicAnimShapesDOSProvider },
+ { k1BranStoneShapes, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1BranStoneShapesDOSProvider },
+ { k1WispJewelStrings, kKyra1, kPlatformDOS, kNoSpecial, EN_ANY, &k1WispJewelStringsDOSEnglishProvider },
+ { k1MagicJewelStrings, kKyra1, kPlatformDOS, kNoSpecial, EN_ANY, &k1MagicJewelStringsDOSEnglishProvider },
+ { k1FlaskFullString, kKyra1, kPlatformDOS, kNoSpecial, EN_ANY, &k1FlaskFullStringDOSEnglishProvider },
+ { k1FullFlaskString, kKyra1, kPlatformDOS, kNoSpecial, EN_ANY, &k1FullFlaskStringDOSEnglishProvider },
+ { k1OutroReunionSeq, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1OutroReunionSeqDOSProvider },
+ { k1OutroHomeString, kKyra1, kPlatformDOS, kNoSpecial, EN_ANY, &k1OutroHomeStringDOSEnglishProvider },
+ { k1VeryCleverString, kKyra1, kPlatformDOS, kNoSpecial, EN_ANY, &k1VeryCleverStringDOSEnglishProvider },
+ { k1GUIStrings, kKyra1, kPlatformDOS, kNoSpecial, EN_ANY, &k1GUIStringsDOSEnglishProvider },
+ { k1NewGameString, kKyra1, kPlatformDOS, kNoSpecial, EN_ANY, &k1NewGameStringDOSEnglishProvider },
+ { k1ConfigStrings, kKyra1, kPlatformDOS, kNoSpecial, EN_ANY, &k1ConfigStringsDOSEnglishProvider },
+ { k1AudioTracks, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1AudioTracksDOSProvider },
+ { k1AudioTracks2, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1AudioTracks2DOSProvider },
+ { k1AudioTracksIntro, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, &k1AudioTracksIntroDOSProvider },
+ { k1IntroStrings, kKyra1, kPlatformDOS, kNoSpecial, DE_DEU, &k1IntroStringsDOSGermanProvider },
+ { k1ItemNames, kKyra1, kPlatformDOS, kNoSpecial, DE_DEU, &k1ItemNamesDOSGermanProvider },
+ { k1TakenStrings, kKyra1, kPlatformDOS, kNoSpecial, DE_DEU, &k1TakenStringsDOSGermanProvider },
+ { k1PlacedStrings, kKyra1, kPlatformDOS, kNoSpecial, DE_DEU, &k1PlacedStringsDOSGermanProvider },
+ { k1DroppedStrings, kKyra1, kPlatformDOS, kNoSpecial, DE_DEU, &k1DroppedStringsDOSGermanProvider },
+ { k1NoDropStrings, kKyra1, kPlatformDOS, kNoSpecial, DE_DEU, &k1NoDropStringsDOSGermanProvider },
+ { k1PutDownString, kKyra1, kPlatformDOS, kNoSpecial, DE_DEU, &k1PutDownStringDOSGermanProvider },
+ { k1WaitAmuletString, kKyra1, kPlatformDOS, kNoSpecial, DE_DEU, &k1WaitAmuletStringDOSGermanProvider },
+ { k1BlackJewelString, kKyra1, kPlatformDOS, kNoSpecial, DE_DEU, &k1BlackJewelStringDOSGermanProvider },
+ { k1HealingTipString, kKyra1, kPlatformDOS, kNoSpecial, DE_DEU, &k1HealingTipStringDOSGermanProvider },
+ { k1PoisonGoneString, kKyra1, kPlatformDOS, kNoSpecial, DE_DEU, &k1PoisonGoneStringDOSGermanProvider },
+ { k1ThePoisonStrings, kKyra1, kPlatformDOS, kNoSpecial, DE_DEU, &k1ThePoisonStringsDOSGermanProvider },
+ { k1FluteStrings, kKyra1, kPlatformDOS, kNoSpecial, DE_DEU, &k1FluteStringsDOSGermanProvider },
+ { k1WispJewelStrings, kKyra1, kPlatformDOS, kNoSpecial, DE_DEU, &k1WispJewelStringsDOSGermanProvider },
+ { k1MagicJewelStrings, kKyra1, kPlatformDOS, kNoSpecial, DE_DEU, &k1MagicJewelStringsDOSGermanProvider },
+ { k1FlaskFullString, kKyra1, kPlatformDOS, kNoSpecial, DE_DEU, &k1FlaskFullStringDOSGermanProvider },
+ { k1FullFlaskString, kKyra1, kPlatformDOS, kNoSpecial, DE_DEU, &k1FullFlaskStringDOSGermanProvider },
+ { k1OutroHomeString, kKyra1, kPlatformDOS, kNoSpecial, DE_DEU, &k1OutroHomeStringDOSGermanProvider },
+ { k1VeryCleverString, kKyra1, kPlatformDOS, kNoSpecial, DE_DEU, &k1VeryCleverStringDOSGermanProvider },
+ { k1GUIStrings, kKyra1, kPlatformDOS, kNoSpecial, DE_DEU, &k1GUIStringsDOSGermanProvider },
+ { k1NewGameString, kKyra1, kPlatformDOS, kNoSpecial, DE_DEU, &k1NewGameStringDOSGermanProvider },
+ { k1ConfigStrings, kKyra1, kPlatformDOS, kNoSpecial, DE_DEU, &k1ConfigStringsDOSGermanProvider },
+ { k1IntroStrings, kKyra1, kPlatformDOS, kNoSpecial, FR_FRA, &k1IntroStringsDOSFrenchProvider },
+ { k1ItemNames, kKyra1, kPlatformDOS, kNoSpecial, FR_FRA, &k1ItemNamesDOSFrenchProvider },
+ { k1TakenStrings, kKyra1, kPlatformDOS, kNoSpecial, FR_FRA, &k1TakenStringsDOSFrenchProvider },
+ { k1PlacedStrings, kKyra1, kPlatformDOS, kNoSpecial, FR_FRA, &k1PlacedStringsDOSFrenchProvider },
+ { k1DroppedStrings, kKyra1, kPlatformDOS, kNoSpecial, FR_FRA, &k1DroppedStringsDOSFrenchProvider },
+ { k1NoDropStrings, kKyra1, kPlatformDOS, kNoSpecial, FR_FRA, &k1NoDropStringsDOSFrenchProvider },
+ { k1PutDownString, kKyra1, kPlatformDOS, kNoSpecial, FR_FRA, &k1PutDownStringDOSFrenchProvider },
+ { k1WaitAmuletString, kKyra1, kPlatformDOS, kNoSpecial, FR_FRA, &k1WaitAmuletStringDOSFrenchProvider },
+ { k1BlackJewelString, kKyra1, kPlatformDOS, kNoSpecial, FR_FRA, &k1BlackJewelStringDOSFrenchProvider },
+ { k1HealingTipString, kKyra1, kPlatformDOS, kNoSpecial, FR_FRA, &k1HealingTipStringDOSFrenchProvider },
+ { k1PoisonGoneString, kKyra1, kPlatformDOS, kNoSpecial, FR_FRA, &k1PoisonGoneStringDOSFrenchProvider },
+ { k1ThePoisonStrings, kKyra1, kPlatformDOS, kNoSpecial, FR_FRA, &k1ThePoisonStringsDOSFrenchProvider },
+ { k1FluteStrings, kKyra1, kPlatformDOS, kNoSpecial, FR_FRA, &k1FluteStringsDOSFrenchProvider },
+ { k1WispJewelStrings, kKyra1, kPlatformDOS, kNoSpecial, FR_FRA, &k1WispJewelStringsDOSFrenchProvider },
+ { k1MagicJewelStrings, kKyra1, kPlatformDOS, kNoSpecial, FR_FRA, &k1MagicJewelStringsDOSFrenchProvider },
+ { k1FlaskFullString, kKyra1, kPlatformDOS, kNoSpecial, FR_FRA, &k1FlaskFullStringDOSFrenchProvider },
+ { k1FullFlaskString, kKyra1, kPlatformDOS, kNoSpecial, FR_FRA, &k1FullFlaskStringDOSFrenchProvider },
+ { k1OutroHomeString, kKyra1, kPlatformDOS, kNoSpecial, FR_FRA, &k1OutroHomeStringDOSFrenchProvider },
+ { k1VeryCleverString, kKyra1, kPlatformDOS, kNoSpecial, FR_FRA, &k1VeryCleverStringDOSFrenchProvider },
+ { k1GUIStrings, kKyra1, kPlatformDOS, kNoSpecial, FR_FRA, &k1GUIStringsDOSFrenchProvider },
+ { k1NewGameString, kKyra1, kPlatformDOS, kNoSpecial, FR_FRA, &k1NewGameStringDOSFrenchProvider },
+ { k1ConfigStrings, kKyra1, kPlatformDOS, kNoSpecial, FR_FRA, &k1ConfigStringsDOSFrenchProvider },
+ { k1IntroStrings, kKyra1, kPlatformDOS, kNoSpecial, IT_ITA, &k1IntroStringsDOSItalianProvider },
+ { k1ItemNames, kKyra1, kPlatformDOS, kNoSpecial, IT_ITA, &k1ItemNamesDOSItalianProvider },
+ { k1TakenStrings, kKyra1, kPlatformDOS, kNoSpecial, IT_ITA, &k1TakenStringsDOSItalianProvider },
+ { k1PlacedStrings, kKyra1, kPlatformDOS, kNoSpecial, IT_ITA, &k1PlacedStringsDOSItalianProvider },
+ { k1DroppedStrings, kKyra1, kPlatformDOS, kNoSpecial, IT_ITA, &k1DroppedStringsDOSItalianProvider },
+ { k1NoDropStrings, kKyra1, kPlatformDOS, kNoSpecial, IT_ITA, &k1NoDropStringsDOSItalianProvider },
+ { k1PutDownString, kKyra1, kPlatformDOS, kNoSpecial, IT_ITA, &k1PutDownStringDOSItalianProvider },
+ { k1WaitAmuletString, kKyra1, kPlatformDOS, kNoSpecial, IT_ITA, &k1WaitAmuletStringDOSItalianProvider },
+ { k1BlackJewelString, kKyra1, kPlatformDOS, kNoSpecial, IT_ITA, &k1BlackJewelStringDOSItalianProvider },
+ { k1HealingTipString, kKyra1, kPlatformDOS, kNoSpecial, IT_ITA, &k1HealingTipStringDOSItalianProvider },
+ { k1PoisonGoneString, kKyra1, kPlatformDOS, kNoSpecial, IT_ITA, &k1PoisonGoneStringDOSItalianProvider },
+ { k1ThePoisonStrings, kKyra1, kPlatformDOS, kNoSpecial, IT_ITA, &k1ThePoisonStringsDOSItalianProvider },
+ { k1FluteStrings, kKyra1, kPlatformDOS, kNoSpecial, IT_ITA, &k1FluteStringsDOSItalianProvider },
+ { k1WispJewelStrings, kKyra1, kPlatformDOS, kNoSpecial, IT_ITA, &k1WispJewelStringsDOSItalianProvider },
+ { k1MagicJewelStrings, kKyra1, kPlatformDOS, kNoSpecial, IT_ITA, &k1MagicJewelStringsDOSItalianProvider },
+ { k1FlaskFullString, kKyra1, kPlatformDOS, kNoSpecial, IT_ITA, &k1FlaskFullStringDOSItalianProvider },
+ { k1FullFlaskString, kKyra1, kPlatformDOS, kNoSpecial, IT_ITA, &k1FullFlaskStringDOSItalianProvider },
+ { k1OutroHomeString, kKyra1, kPlatformDOS, kNoSpecial, IT_ITA, &k1OutroHomeStringDOSItalianProvider },
+ { k1VeryCleverString, kKyra1, kPlatformDOS, kNoSpecial, IT_ITA, &k1VeryCleverStringDOSItalianProvider },
+ { k1GUIStrings, kKyra1, kPlatformDOS, kNoSpecial, IT_ITA, &k1GUIStringsDOSItalianProvider },
+ { k1NewGameString, kKyra1, kPlatformDOS, kNoSpecial, IT_ITA, &k1NewGameStringDOSItalianProvider },
+ { k1ConfigStrings, kKyra1, kPlatformDOS, kNoSpecial, IT_ITA, &k1ConfigStringsDOSItalianProvider },
+ { k1IntroStrings, kKyra1, kPlatformDOS, kNoSpecial, ES_ESP, &k1IntroStringsDOSSpanishProvider },
+ { k1ItemNames, kKyra1, kPlatformDOS, kNoSpecial, ES_ESP, &k1ItemNamesDOSSpanishProvider },
+ { k1TakenStrings, kKyra1, kPlatformDOS, kNoSpecial, ES_ESP, &k1TakenStringsDOSSpanishProvider },
+ { k1PlacedStrings, kKyra1, kPlatformDOS, kNoSpecial, ES_ESP, &k1PlacedStringsDOSSpanishProvider },
+ { k1DroppedStrings, kKyra1, kPlatformDOS, kNoSpecial, ES_ESP, &k1DroppedStringsDOSSpanishProvider },
+ { k1NoDropStrings, kKyra1, kPlatformDOS, kNoSpecial, ES_ESP, &k1NoDropStringsDOSSpanishProvider },
+ { k1PutDownString, kKyra1, kPlatformDOS, kNoSpecial, ES_ESP, &k1PutDownStringDOSSpanishProvider },
+ { k1WaitAmuletString, kKyra1, kPlatformDOS, kNoSpecial, ES_ESP, &k1WaitAmuletStringDOSSpanishProvider },
+ { k1BlackJewelString, kKyra1, kPlatformDOS, kNoSpecial, ES_ESP, &k1BlackJewelStringDOSSpanishProvider },
+ { k1HealingTipString, kKyra1, kPlatformDOS, kNoSpecial, ES_ESP, &k1HealingTipStringDOSSpanishProvider },
+ { k1PoisonGoneString, kKyra1, kPlatformDOS, kNoSpecial, ES_ESP, &k1PoisonGoneStringDOSSpanishProvider },
+ { k1ThePoisonStrings, kKyra1, kPlatformDOS, kNoSpecial, ES_ESP, &k1ThePoisonStringsDOSSpanishProvider },
+ { k1FluteStrings, kKyra1, kPlatformDOS, kNoSpecial, ES_ESP, &k1FluteStringsDOSSpanishProvider },
+ { k1WispJewelStrings, kKyra1, kPlatformDOS, kNoSpecial, ES_ESP, &k1WispJewelStringsDOSSpanishProvider },
+ { k1MagicJewelStrings, kKyra1, kPlatformDOS, kNoSpecial, ES_ESP, &k1MagicJewelStringsDOSSpanishProvider },
+ { k1FlaskFullString, kKyra1, kPlatformDOS, kNoSpecial, ES_ESP, &k1FlaskFullStringDOSSpanishProvider },
+ { k1FullFlaskString, kKyra1, kPlatformDOS, kNoSpecial, ES_ESP, &k1FullFlaskStringDOSSpanishProvider },
+ { k1OutroHomeString, kKyra1, kPlatformDOS, kNoSpecial, ES_ESP, &k1OutroHomeStringDOSSpanishProvider },
+ { k1VeryCleverString, kKyra1, kPlatformDOS, kNoSpecial, ES_ESP, &k1VeryCleverStringDOSSpanishProvider },
+ { k1GUIStrings, kKyra1, kPlatformDOS, kNoSpecial, ES_ESP, &k1GUIStringsDOSSpanishProvider },
+ { k1NewGameString, kKyra1, kPlatformDOS, kNoSpecial, ES_ESP, &k1NewGameStringDOSSpanishProvider },
+ { k1ConfigStrings, kKyra1, kPlatformDOS, kNoSpecial, ES_ESP, &k1ConfigStringsDOSSpanishProvider },
+ { k1KallakWritingSeq, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1KallakWritingSeqDOSOldFloppyProvider },
+ { k1MalcolmTreeSeq, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1MalcolmTreeSeqDOSOldFloppyProvider },
+ { k1WestwoodLogoSeq, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1WestwoodLogoSeqDOSOldFloppyProvider },
+ { k1KyrandiaLogoSeq, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1KyrandiaLogoSeqDOSOldFloppyProvider },
+ { k1KallakMalcolmSeq, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1KallakMalcolmSeqDOSOldFloppyProvider },
+ { k1ForestSeq, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1ForestSeqDOSOldFloppyProvider },
+ { k1IntroCPSStrings, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1IntroCPSStringsDOSOldFloppyProvider },
+ { k1IntroCOLStrings, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1IntroCOLStringsDOSOldFloppyProvider },
+ { k1IntroWSAStrings, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1IntroWSAStringsDOSOldFloppyProvider },
+ { k1IntroStrings, kKyra1, kPlatformDOS, kOldFloppy, RU_RUS, &k1IntroStringsDOSOldFloppyRussianProvider },
+ { k1RoomList, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1RoomListDOSOldFloppyProvider },
+ { k1RoomFilenames, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1RoomFilenamesDOSOldFloppyProvider },
+ { k1CharacterImageFilenames, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1CharacterImageFilenamesDOSOldFloppyProvider },
+ { k1DefaultShapes, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1DefaultShapesDOSOldFloppyProvider },
+ { k1ItemNames, kKyra1, kPlatformDOS, kOldFloppy, RU_RUS, &k1ItemNamesDOSOldFloppyRussianProvider },
+ { k1TakenStrings, kKyra1, kPlatformDOS, kOldFloppy, RU_RUS, &k1TakenStringsDOSOldFloppyRussianProvider },
+ { k1PlacedStrings, kKyra1, kPlatformDOS, kOldFloppy, RU_RUS, &k1PlacedStringsDOSOldFloppyRussianProvider },
+ { k1DroppedStrings, kKyra1, kPlatformDOS, kOldFloppy, RU_RUS, &k1DroppedStringsDOSOldFloppyRussianProvider },
+ { k1AmuleteAnimSeq, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1AmuleteAnimSeqDOSOldFloppyProvider },
+ { k1SpecialPalette1, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1SpecialPalette1DOSOldFloppyProvider },
+ { k1SpecialPalette2, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1SpecialPalette2DOSOldFloppyProvider },
+ { k1SpecialPalette3, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1SpecialPalette3DOSOldFloppyProvider },
+ { k1SpecialPalette4, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1SpecialPalette4DOSOldFloppyProvider },
+ { k1SpecialPalette5, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1SpecialPalette5DOSOldFloppyProvider },
+ { k1SpecialPalette6, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1SpecialPalette6DOSOldFloppyProvider },
+ { k1SpecialPalette7, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1SpecialPalette7DOSOldFloppyProvider },
+ { k1SpecialPalette8, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1SpecialPalette8DOSOldFloppyProvider },
+ { k1SpecialPalette9, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1SpecialPalette9DOSOldFloppyProvider },
+ { k1SpecialPalette10, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1SpecialPalette10DOSOldFloppyProvider },
+ { k1SpecialPalette11, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1SpecialPalette11DOSOldFloppyProvider },
+ { k1SpecialPalette12, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1SpecialPalette12DOSOldFloppyProvider },
+ { k1SpecialPalette13, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1SpecialPalette13DOSOldFloppyProvider },
+ { k1SpecialPalette14, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1SpecialPalette14DOSOldFloppyProvider },
+ { k1SpecialPalette15, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1SpecialPalette15DOSOldFloppyProvider },
+ { k1SpecialPalette16, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1SpecialPalette16DOSOldFloppyProvider },
+ { k1SpecialPalette17, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1SpecialPalette17DOSOldFloppyProvider },
+ { k1SpecialPalette18, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1SpecialPalette18DOSOldFloppyProvider },
+ { k1SpecialPalette19, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1SpecialPalette19DOSOldFloppyProvider },
+ { k1SpecialPalette20, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1SpecialPalette20DOSOldFloppyProvider },
+ { k1SpecialPalette21, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1SpecialPalette21DOSOldFloppyProvider },
+ { k1SpecialPalette22, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1SpecialPalette22DOSOldFloppyProvider },
+ { k1SpecialPalette23, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1SpecialPalette23DOSOldFloppyProvider },
+ { k1SpecialPalette24, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1SpecialPalette24DOSOldFloppyProvider },
+ { k1SpecialPalette25, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1SpecialPalette25DOSOldFloppyProvider },
+ { k1SpecialPalette26, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1SpecialPalette26DOSOldFloppyProvider },
+ { k1SpecialPalette27, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1SpecialPalette27DOSOldFloppyProvider },
+ { k1SpecialPalette28, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1SpecialPalette28DOSOldFloppyProvider },
+ { k1SpecialPalette29, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1SpecialPalette29DOSOldFloppyProvider },
+ { k1SpecialPalette30, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1SpecialPalette30DOSOldFloppyProvider },
+ { k1SpecialPalette31, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1SpecialPalette31DOSOldFloppyProvider },
+ { k1SpecialPalette32, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1SpecialPalette32DOSOldFloppyProvider },
+ { k1PutDownString, kKyra1, kPlatformDOS, kOldFloppy, RU_RUS, &k1PutDownStringDOSOldFloppyRussianProvider },
+ { k1WaitAmuletString, kKyra1, kPlatformDOS, kOldFloppy, RU_RUS, &k1WaitAmuletStringDOSOldFloppyRussianProvider },
+ { k1BlackJewelString, kKyra1, kPlatformDOS, kOldFloppy, RU_RUS, &k1BlackJewelStringDOSOldFloppyRussianProvider },
+ { k1HealingTipString, kKyra1, kPlatformDOS, kOldFloppy, RU_RUS, &k1HealingTipStringDOSOldFloppyRussianProvider },
+ { k1PoisonGoneString, kKyra1, kPlatformDOS, kOldFloppy, RU_RUS, &k1PoisonGoneStringDOSOldFloppyRussianProvider },
+ { k1Healing1Shapes, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1Healing1ShapesDOSOldFloppyProvider },
+ { k1Healing2Shapes, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1Healing2ShapesDOSOldFloppyProvider },
+ { k1ThePoisonStrings, kKyra1, kPlatformDOS, kOldFloppy, RU_RUS, &k1ThePoisonStringsDOSOldFloppyRussianProvider },
+ { k1FluteStrings, kKyra1, kPlatformDOS, kOldFloppy, RU_RUS, &k1FluteStringsDOSOldFloppyRussianProvider },
+ { k1PoisonDeathShapes, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1PoisonDeathShapesDOSOldFloppyProvider },
+ { k1FluteShapes, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1FluteShapesDOSOldFloppyProvider },
+ { k1Winter1Shapes, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1Winter1ShapesDOSOldFloppyProvider },
+ { k1Winter2Shapes, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1Winter2ShapesDOSOldFloppyProvider },
+ { k1Winter3Shapes, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1Winter3ShapesDOSOldFloppyProvider },
+ { k1DrinkShapes, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1DrinkShapesDOSOldFloppyProvider },
+ { k1WispShapes, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1WispShapesDOSOldFloppyProvider },
+ { k1MagicAnimShapes, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1MagicAnimShapesDOSOldFloppyProvider },
+ { k1BranStoneShapes, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1BranStoneShapesDOSOldFloppyProvider },
+ { k1WispJewelStrings, kKyra1, kPlatformDOS, kOldFloppy, RU_RUS, &k1WispJewelStringsDOSOldFloppyRussianProvider },
+ { k1MagicJewelStrings, kKyra1, kPlatformDOS, kOldFloppy, RU_RUS, &k1MagicJewelStringsDOSOldFloppyRussianProvider },
+ { k1FlaskFullString, kKyra1, kPlatformDOS, kOldFloppy, RU_RUS, &k1FlaskFullStringDOSOldFloppyRussianProvider },
+ { k1FullFlaskString, kKyra1, kPlatformDOS, kOldFloppy, RU_RUS, &k1FullFlaskStringDOSOldFloppyRussianProvider },
+ { k1OutroReunionSeq, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1OutroReunionSeqDOSOldFloppyProvider },
+ { k1OutroHomeString, kKyra1, kPlatformDOS, kOldFloppy, RU_RUS, &k1OutroHomeStringDOSOldFloppyRussianProvider },
+ { k1VeryCleverString, kKyra1, kPlatformDOS, kOldFloppy, RU_RUS, &k1VeryCleverStringDOSOldFloppyRussianProvider },
+ { k1GUIStrings, kKyra1, kPlatformDOS, kOldFloppy, RU_RUS, &k1GUIStringsDOSOldFloppyRussianProvider },
+ { k1NewGameString, kKyra1, kPlatformDOS, kOldFloppy, RU_RUS, &k1NewGameStringDOSOldFloppyRussianProvider },
+ { k1ConfigStrings, kKyra1, kPlatformDOS, kOldFloppy, RU_RUS, &k1ConfigStringsDOSOldFloppyRussianProvider },
+ { k1AudioTracks, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1AudioTracksDOSOldFloppyProvider },
+ { k1AudioTracks2, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1AudioTracks2DOSOldFloppyProvider },
+ { k1AudioTracksIntro, kKyra1, kPlatformDOS, kOldFloppy, UNK_LANG, &k1AudioTracksIntroDOSOldFloppyProvider },
+ { k1KallakWritingSeq, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1KallakWritingSeqDOSCDProvider },
+ { k1MalcolmTreeSeq, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1MalcolmTreeSeqDOSCDProvider },
+ { k1WestwoodLogoSeq, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1WestwoodLogoSeqDOSCDProvider },
+ { k1KyrandiaLogoSeq, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1KyrandiaLogoSeqDOSCDProvider },
+ { k1KallakMalcolmSeq, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1KallakMalcolmSeqDOSCDProvider },
+ { k1ForestSeq, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1ForestSeqDOSCDProvider },
+ { k1IntroCPSStrings, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1IntroCPSStringsDOSCDProvider },
+ { k1IntroCOLStrings, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1IntroCOLStringsDOSCDProvider },
+ { k1IntroWSAStrings, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1IntroWSAStringsDOSCDProvider },
+ { k1IntroStrings, kKyra1, kPlatformDOS, kTalkieVersion, EN_ANY, &k1IntroStringsDOSCDEnglishProvider },
+ { k1RoomList, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1RoomListDOSCDProvider },
+ { k1RoomFilenames, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1RoomFilenamesDOSCDProvider },
+ { k1CharacterImageFilenames, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1CharacterImageFilenamesDOSCDProvider },
+ { k1DefaultShapes, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1DefaultShapesDOSCDProvider },
+ { k1ItemNames, kKyra1, kPlatformDOS, kTalkieVersion, EN_ANY, &k1ItemNamesDOSCDEnglishProvider },
+ { k1TakenStrings, kKyra1, kPlatformDOS, kTalkieVersion, EN_ANY, &k1TakenStringsDOSCDEnglishProvider },
+ { k1PlacedStrings, kKyra1, kPlatformDOS, kTalkieVersion, EN_ANY, &k1PlacedStringsDOSCDEnglishProvider },
+ { k1DroppedStrings, kKyra1, kPlatformDOS, kTalkieVersion, EN_ANY, &k1DroppedStringsDOSCDEnglishProvider },
+ { k1NoDropStrings, kKyra1, kPlatformDOS, kTalkieVersion, EN_ANY, &k1NoDropStringsDOSCDEnglishProvider },
+ { k1AmuleteAnimSeq, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1AmuleteAnimSeqDOSCDProvider },
+ { k1SpecialPalette1, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1SpecialPalette1DOSCDProvider },
+ { k1SpecialPalette2, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1SpecialPalette2DOSCDProvider },
+ { k1SpecialPalette3, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1SpecialPalette3DOSCDProvider },
+ { k1SpecialPalette4, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1SpecialPalette4DOSCDProvider },
+ { k1SpecialPalette5, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1SpecialPalette5DOSCDProvider },
+ { k1SpecialPalette6, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1SpecialPalette6DOSCDProvider },
+ { k1SpecialPalette7, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1SpecialPalette7DOSCDProvider },
+ { k1SpecialPalette8, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1SpecialPalette8DOSCDProvider },
+ { k1SpecialPalette9, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1SpecialPalette9DOSCDProvider },
+ { k1SpecialPalette10, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1SpecialPalette10DOSCDProvider },
+ { k1SpecialPalette11, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1SpecialPalette11DOSCDProvider },
+ { k1SpecialPalette12, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1SpecialPalette12DOSCDProvider },
+ { k1SpecialPalette13, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1SpecialPalette13DOSCDProvider },
+ { k1SpecialPalette14, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1SpecialPalette14DOSCDProvider },
+ { k1SpecialPalette15, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1SpecialPalette15DOSCDProvider },
+ { k1SpecialPalette16, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1SpecialPalette16DOSCDProvider },
+ { k1SpecialPalette17, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1SpecialPalette17DOSCDProvider },
+ { k1SpecialPalette18, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1SpecialPalette18DOSCDProvider },
+ { k1SpecialPalette19, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1SpecialPalette19DOSCDProvider },
+ { k1SpecialPalette20, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1SpecialPalette20DOSCDProvider },
+ { k1SpecialPalette21, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1SpecialPalette21DOSCDProvider },
+ { k1SpecialPalette22, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1SpecialPalette22DOSCDProvider },
+ { k1SpecialPalette23, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1SpecialPalette23DOSCDProvider },
+ { k1SpecialPalette24, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1SpecialPalette24DOSCDProvider },
+ { k1SpecialPalette25, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1SpecialPalette25DOSCDProvider },
+ { k1SpecialPalette26, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1SpecialPalette26DOSCDProvider },
+ { k1SpecialPalette27, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1SpecialPalette27DOSCDProvider },
+ { k1SpecialPalette28, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1SpecialPalette28DOSCDProvider },
+ { k1SpecialPalette29, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1SpecialPalette29DOSCDProvider },
+ { k1SpecialPalette30, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1SpecialPalette30DOSCDProvider },
+ { k1SpecialPalette31, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1SpecialPalette31DOSCDProvider },
+ { k1SpecialPalette32, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1SpecialPalette32DOSCDProvider },
+ { k1SpecialPalette33, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1SpecialPalette33DOSCDProvider },
+ { k1PutDownString, kKyra1, kPlatformDOS, kTalkieVersion, EN_ANY, &k1PutDownStringDOSCDEnglishProvider },
+ { k1WaitAmuletString, kKyra1, kPlatformDOS, kTalkieVersion, EN_ANY, &k1WaitAmuletStringDOSCDEnglishProvider },
+ { k1BlackJewelString, kKyra1, kPlatformDOS, kTalkieVersion, EN_ANY, &k1BlackJewelStringDOSCDEnglishProvider },
+ { k1HealingTipString, kKyra1, kPlatformDOS, kTalkieVersion, EN_ANY, &k1HealingTipStringDOSCDEnglishProvider },
+ { k1PoisonGoneString, kKyra1, kPlatformDOS, kTalkieVersion, EN_ANY, &k1PoisonGoneStringDOSCDEnglishProvider },
+ { k1Healing1Shapes, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1Healing1ShapesDOSCDProvider },
+ { k1Healing2Shapes, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1Healing2ShapesDOSCDProvider },
+ { k1ThePoisonStrings, kKyra1, kPlatformDOS, kTalkieVersion, EN_ANY, &k1ThePoisonStringsDOSCDEnglishProvider },
+ { k1FluteStrings, kKyra1, kPlatformDOS, kTalkieVersion, EN_ANY, &k1FluteStringsDOSCDEnglishProvider },
+ { k1PoisonDeathShapes, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1PoisonDeathShapesDOSCDProvider },
+ { k1FluteShapes, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1FluteShapesDOSCDProvider },
+ { k1Winter1Shapes, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1Winter1ShapesDOSCDProvider },
+ { k1Winter2Shapes, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1Winter2ShapesDOSCDProvider },
+ { k1Winter3Shapes, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1Winter3ShapesDOSCDProvider },
+ { k1DrinkShapes, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1DrinkShapesDOSCDProvider },
+ { k1WispShapes, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1WispShapesDOSCDProvider },
+ { k1MagicAnimShapes, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1MagicAnimShapesDOSCDProvider },
+ { k1BranStoneShapes, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1BranStoneShapesDOSCDProvider },
+ { k1WispJewelStrings, kKyra1, kPlatformDOS, kTalkieVersion, EN_ANY, &k1WispJewelStringsDOSCDEnglishProvider },
+ { k1MagicJewelStrings, kKyra1, kPlatformDOS, kTalkieVersion, EN_ANY, &k1MagicJewelStringsDOSCDEnglishProvider },
+ { k1FlaskFullString, kKyra1, kPlatformDOS, kTalkieVersion, EN_ANY, &k1FlaskFullStringDOSCDEnglishProvider },
+ { k1FullFlaskString, kKyra1, kPlatformDOS, kTalkieVersion, EN_ANY, &k1FullFlaskStringDOSCDEnglishProvider },
+ { k1OutroReunionSeq, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1OutroReunionSeqDOSCDProvider },
+ { k1OutroHomeString, kKyra1, kPlatformDOS, kTalkieVersion, EN_ANY, &k1OutroHomeStringDOSCDEnglishProvider },
+ { k1VeryCleverString, kKyra1, kPlatformDOS, kTalkieVersion, EN_ANY, &k1VeryCleverStringDOSCDEnglishProvider },
+ { k1GUIStrings, kKyra1, kPlatformDOS, kTalkieVersion, EN_ANY, &k1GUIStringsDOSCDEnglishProvider },
+ { k1NewGameString, kKyra1, kPlatformDOS, kTalkieVersion, EN_ANY, &k1NewGameStringDOSCDEnglishProvider },
+ { k1ConfigStrings, kKyra1, kPlatformDOS, kTalkieVersion, EN_ANY, &k1ConfigStringsDOSCDEnglishProvider },
+ { k1AudioTracks, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1AudioTracksDOSCDProvider },
+ { k1AudioTracks2, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1AudioTracks2DOSCDProvider },
+ { k1AudioTracksIntro, kKyra1, kPlatformDOS, kTalkieVersion, UNK_LANG, &k1AudioTracksIntroDOSCDProvider },
+ { k1IntroStrings, kKyra1, kPlatformDOS, kTalkieVersion, DE_DEU, &k1IntroStringsDOSCDGermanProvider },
+ { k1ItemNames, kKyra1, kPlatformDOS, kTalkieVersion, DE_DEU, &k1ItemNamesDOSCDGermanProvider },
+ { k1TakenStrings, kKyra1, kPlatformDOS, kTalkieVersion, DE_DEU, &k1TakenStringsDOSCDGermanProvider },
+ { k1PlacedStrings, kKyra1, kPlatformDOS, kTalkieVersion, DE_DEU, &k1PlacedStringsDOSCDGermanProvider },
+ { k1DroppedStrings, kKyra1, kPlatformDOS, kTalkieVersion, DE_DEU, &k1DroppedStringsDOSCDGermanProvider },
+ { k1NoDropStrings, kKyra1, kPlatformDOS, kTalkieVersion, DE_DEU, &k1NoDropStringsDOSCDGermanProvider },
+ { k1PutDownString, kKyra1, kPlatformDOS, kTalkieVersion, DE_DEU, &k1PutDownStringDOSCDGermanProvider },
+ { k1WaitAmuletString, kKyra1, kPlatformDOS, kTalkieVersion, DE_DEU, &k1WaitAmuletStringDOSCDGermanProvider },
+ { k1BlackJewelString, kKyra1, kPlatformDOS, kTalkieVersion, DE_DEU, &k1BlackJewelStringDOSCDGermanProvider },
+ { k1HealingTipString, kKyra1, kPlatformDOS, kTalkieVersion, DE_DEU, &k1HealingTipStringDOSCDGermanProvider },
+ { k1PoisonGoneString, kKyra1, kPlatformDOS, kTalkieVersion, DE_DEU, &k1PoisonGoneStringDOSCDGermanProvider },
+ { k1ThePoisonStrings, kKyra1, kPlatformDOS, kTalkieVersion, DE_DEU, &k1ThePoisonStringsDOSCDGermanProvider },
+ { k1FluteStrings, kKyra1, kPlatformDOS, kTalkieVersion, DE_DEU, &k1FluteStringsDOSCDGermanProvider },
+ { k1WispJewelStrings, kKyra1, kPlatformDOS, kTalkieVersion, DE_DEU, &k1WispJewelStringsDOSCDGermanProvider },
+ { k1MagicJewelStrings, kKyra1, kPlatformDOS, kTalkieVersion, DE_DEU, &k1MagicJewelStringsDOSCDGermanProvider },
+ { k1FlaskFullString, kKyra1, kPlatformDOS, kTalkieVersion, DE_DEU, &k1FlaskFullStringDOSCDGermanProvider },
+ { k1FullFlaskString, kKyra1, kPlatformDOS, kTalkieVersion, DE_DEU, &k1FullFlaskStringDOSCDGermanProvider },
+ { k1OutroHomeString, kKyra1, kPlatformDOS, kTalkieVersion, DE_DEU, &k1OutroHomeStringDOSCDGermanProvider },
+ { k1VeryCleverString, kKyra1, kPlatformDOS, kTalkieVersion, DE_DEU, &k1VeryCleverStringDOSCDGermanProvider },
+ { k1GUIStrings, kKyra1, kPlatformDOS, kTalkieVersion, DE_DEU, &k1GUIStringsDOSCDGermanProvider },
+ { k1NewGameString, kKyra1, kPlatformDOS, kTalkieVersion, DE_DEU, &k1NewGameStringDOSCDGermanProvider },
+ { k1ConfigStrings, kKyra1, kPlatformDOS, kTalkieVersion, DE_DEU, &k1ConfigStringsDOSCDGermanProvider },
+ { k1IntroStrings, kKyra1, kPlatformDOS, kTalkieVersion, FR_FRA, &k1IntroStringsDOSCDFrenchProvider },
+ { k1ItemNames, kKyra1, kPlatformDOS, kTalkieVersion, FR_FRA, &k1ItemNamesDOSCDFrenchProvider },
+ { k1TakenStrings, kKyra1, kPlatformDOS, kTalkieVersion, FR_FRA, &k1TakenStringsDOSCDFrenchProvider },
+ { k1PlacedStrings, kKyra1, kPlatformDOS, kTalkieVersion, FR_FRA, &k1PlacedStringsDOSCDFrenchProvider },
+ { k1DroppedStrings, kKyra1, kPlatformDOS, kTalkieVersion, FR_FRA, &k1DroppedStringsDOSCDFrenchProvider },
+ { k1NoDropStrings, kKyra1, kPlatformDOS, kTalkieVersion, FR_FRA, &k1NoDropStringsDOSCDFrenchProvider },
+ { k1PutDownString, kKyra1, kPlatformDOS, kTalkieVersion, FR_FRA, &k1PutDownStringDOSCDFrenchProvider },
+ { k1WaitAmuletString, kKyra1, kPlatformDOS, kTalkieVersion, FR_FRA, &k1WaitAmuletStringDOSCDFrenchProvider },
+ { k1BlackJewelString, kKyra1, kPlatformDOS, kTalkieVersion, FR_FRA, &k1BlackJewelStringDOSCDFrenchProvider },
+ { k1HealingTipString, kKyra1, kPlatformDOS, kTalkieVersion, FR_FRA, &k1HealingTipStringDOSCDFrenchProvider },
+ { k1PoisonGoneString, kKyra1, kPlatformDOS, kTalkieVersion, FR_FRA, &k1PoisonGoneStringDOSCDFrenchProvider },
+ { k1ThePoisonStrings, kKyra1, kPlatformDOS, kTalkieVersion, FR_FRA, &k1ThePoisonStringsDOSCDFrenchProvider },
+ { k1FluteStrings, kKyra1, kPlatformDOS, kTalkieVersion, FR_FRA, &k1FluteStringsDOSCDFrenchProvider },
+ { k1WispJewelStrings, kKyra1, kPlatformDOS, kTalkieVersion, FR_FRA, &k1WispJewelStringsDOSCDFrenchProvider },
+ { k1MagicJewelStrings, kKyra1, kPlatformDOS, kTalkieVersion, FR_FRA, &k1MagicJewelStringsDOSCDFrenchProvider },
+ { k1FlaskFullString, kKyra1, kPlatformDOS, kTalkieVersion, FR_FRA, &k1FlaskFullStringDOSCDFrenchProvider },
+ { k1FullFlaskString, kKyra1, kPlatformDOS, kTalkieVersion, FR_FRA, &k1FullFlaskStringDOSCDFrenchProvider },
+ { k1OutroHomeString, kKyra1, kPlatformDOS, kTalkieVersion, FR_FRA, &k1OutroHomeStringDOSCDFrenchProvider },
+ { k1VeryCleverString, kKyra1, kPlatformDOS, kTalkieVersion, FR_FRA, &k1VeryCleverStringDOSCDFrenchProvider },
+ { k1GUIStrings, kKyra1, kPlatformDOS, kTalkieVersion, FR_FRA, &k1GUIStringsDOSCDFrenchProvider },
+ { k1NewGameString, kKyra1, kPlatformDOS, kTalkieVersion, FR_FRA, &k1NewGameStringDOSCDFrenchProvider },
+ { k1ConfigStrings, kKyra1, kPlatformDOS, kTalkieVersion, FR_FRA, &k1ConfigStringsDOSCDFrenchProvider },
+ { k1IntroStrings, kKyra1, kPlatformDOS, kTalkieVersion, IT_ITA, &k1IntroStringsDOSCDItalianProvider },
+ { k1ItemNames, kKyra1, kPlatformDOS, kTalkieVersion, IT_ITA, &k1ItemNamesDOSCDItalianProvider },
+ { k1TakenStrings, kKyra1, kPlatformDOS, kTalkieVersion, IT_ITA, &k1TakenStringsDOSCDItalianProvider },
+ { k1PlacedStrings, kKyra1, kPlatformDOS, kTalkieVersion, IT_ITA, &k1PlacedStringsDOSCDItalianProvider },
+ { k1DroppedStrings, kKyra1, kPlatformDOS, kTalkieVersion, IT_ITA, &k1DroppedStringsDOSCDItalianProvider },
+ { k1NoDropStrings, kKyra1, kPlatformDOS, kTalkieVersion, IT_ITA, &k1NoDropStringsDOSCDItalianProvider },
+ { k1PutDownString, kKyra1, kPlatformDOS, kTalkieVersion, IT_ITA, &k1PutDownStringDOSCDItalianProvider },
+ { k1WaitAmuletString, kKyra1, kPlatformDOS, kTalkieVersion, IT_ITA, &k1WaitAmuletStringDOSCDItalianProvider },
+ { k1BlackJewelString, kKyra1, kPlatformDOS, kTalkieVersion, IT_ITA, &k1BlackJewelStringDOSCDItalianProvider },
+ { k1HealingTipString, kKyra1, kPlatformDOS, kTalkieVersion, IT_ITA, &k1HealingTipStringDOSCDItalianProvider },
+ { k1PoisonGoneString, kKyra1, kPlatformDOS, kTalkieVersion, IT_ITA, &k1PoisonGoneStringDOSCDItalianProvider },
+ { k1ThePoisonStrings, kKyra1, kPlatformDOS, kTalkieVersion, IT_ITA, &k1ThePoisonStringsDOSCDItalianProvider },
+ { k1FluteStrings, kKyra1, kPlatformDOS, kTalkieVersion, IT_ITA, &k1FluteStringsDOSCDItalianProvider },
+ { k1WispJewelStrings, kKyra1, kPlatformDOS, kTalkieVersion, IT_ITA, &k1WispJewelStringsDOSCDItalianProvider },
+ { k1MagicJewelStrings, kKyra1, kPlatformDOS, kTalkieVersion, IT_ITA, &k1MagicJewelStringsDOSCDItalianProvider },
+ { k1FlaskFullString, kKyra1, kPlatformDOS, kTalkieVersion, IT_ITA, &k1FlaskFullStringDOSCDItalianProvider },
+ { k1FullFlaskString, kKyra1, kPlatformDOS, kTalkieVersion, IT_ITA, &k1FullFlaskStringDOSCDItalianProvider },
+ { k1OutroHomeString, kKyra1, kPlatformDOS, kTalkieVersion, IT_ITA, &k1OutroHomeStringDOSCDItalianProvider },
+ { k1VeryCleverString, kKyra1, kPlatformDOS, kTalkieVersion, IT_ITA, &k1VeryCleverStringDOSCDItalianProvider },
+ { k1GUIStrings, kKyra1, kPlatformDOS, kTalkieVersion, IT_ITA, &k1GUIStringsDOSCDItalianProvider },
+ { k1NewGameString, kKyra1, kPlatformDOS, kTalkieVersion, IT_ITA, &k1NewGameStringDOSCDItalianProvider },
+ { k1ConfigStrings, kKyra1, kPlatformDOS, kTalkieVersion, IT_ITA, &k1ConfigStringsDOSCDItalianProvider },
+ { k1KallakWritingSeq, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1KallakWritingSeqFMTownsProvider },
+ { k1MalcolmTreeSeq, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1MalcolmTreeSeqFMTownsProvider },
+ { k1WestwoodLogoSeq, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1WestwoodLogoSeqFMTownsProvider },
+ { k1KyrandiaLogoSeq, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1KyrandiaLogoSeqFMTownsProvider },
+ { k1KallakMalcolmSeq, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1KallakMalcolmSeqFMTownsProvider },
+ { k1ForestSeq, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1ForestSeqFMTownsProvider },
+ { k1IntroCPSStrings, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1IntroCPSStringsFMTownsProvider },
+ { k1IntroCOLStrings, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1IntroCOLStringsFMTownsProvider },
+ { k1IntroWSAStrings, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1IntroWSAStringsFMTownsProvider },
+ { k1IntroStrings, kKyra1, kPlatformFMTowns, kNoSpecial, EN_ANY, &k1IntroStringsFMTownsEnglishProvider },
+ { k1RoomList, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1RoomListFMTownsProvider },
+ { k1RoomFilenames, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1RoomFilenamesFMTownsProvider },
+ { k1CharacterImageFilenames, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1CharacterImageFilenamesFMTownsProvider },
+ { k1DefaultShapes, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1DefaultShapesFMTownsProvider },
+ { k1ItemNames, kKyra1, kPlatformFMTowns, kNoSpecial, EN_ANY, &k1ItemNamesFMTownsEnglishProvider },
+ { k1TakenStrings, kKyra1, kPlatformFMTowns, kNoSpecial, EN_ANY, &k1TakenStringsFMTownsEnglishProvider },
+ { k1PlacedStrings, kKyra1, kPlatformFMTowns, kNoSpecial, EN_ANY, &k1PlacedStringsFMTownsEnglishProvider },
+ { k1DroppedStrings, kKyra1, kPlatformFMTowns, kNoSpecial, EN_ANY, &k1DroppedStringsFMTownsEnglishProvider },
+ { k1NoDropStrings, kKyra1, kPlatformFMTowns, kNoSpecial, EN_ANY, &k1NoDropStringsFMTownsEnglishProvider },
+ { k1AmuleteAnimSeq, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1AmuleteAnimSeqFMTownsProvider },
+ { k1SpecialPalette1, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1SpecialPalette1FMTownsProvider },
+ { k1SpecialPalette2, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1SpecialPalette2FMTownsProvider },
+ { k1SpecialPalette3, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1SpecialPalette3FMTownsProvider },
+ { k1SpecialPalette4, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1SpecialPalette4FMTownsProvider },
+ { k1SpecialPalette5, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1SpecialPalette5FMTownsProvider },
+ { k1SpecialPalette6, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1SpecialPalette6FMTownsProvider },
+ { k1SpecialPalette7, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1SpecialPalette7FMTownsProvider },
+ { k1SpecialPalette8, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1SpecialPalette8FMTownsProvider },
+ { k1SpecialPalette9, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1SpecialPalette9FMTownsProvider },
+ { k1SpecialPalette10, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1SpecialPalette10FMTownsProvider },
+ { k1SpecialPalette11, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1SpecialPalette11FMTownsProvider },
+ { k1SpecialPalette12, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1SpecialPalette12FMTownsProvider },
+ { k1SpecialPalette13, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1SpecialPalette13FMTownsProvider },
+ { k1SpecialPalette14, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1SpecialPalette14FMTownsProvider },
+ { k1SpecialPalette15, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1SpecialPalette15FMTownsProvider },
+ { k1SpecialPalette16, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1SpecialPalette16FMTownsProvider },
+ { k1SpecialPalette17, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1SpecialPalette17FMTownsProvider },
+ { k1SpecialPalette18, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1SpecialPalette18FMTownsProvider },
+ { k1SpecialPalette19, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1SpecialPalette19FMTownsProvider },
+ { k1SpecialPalette20, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1SpecialPalette20FMTownsProvider },
+ { k1SpecialPalette21, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1SpecialPalette21FMTownsProvider },
+ { k1SpecialPalette22, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1SpecialPalette22FMTownsProvider },
+ { k1SpecialPalette23, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1SpecialPalette23FMTownsProvider },
+ { k1SpecialPalette24, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1SpecialPalette24FMTownsProvider },
+ { k1SpecialPalette25, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1SpecialPalette25FMTownsProvider },
+ { k1SpecialPalette26, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1SpecialPalette26FMTownsProvider },
+ { k1SpecialPalette27, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1SpecialPalette27FMTownsProvider },
+ { k1SpecialPalette28, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1SpecialPalette28FMTownsProvider },
+ { k1SpecialPalette29, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1SpecialPalette29FMTownsProvider },
+ { k1SpecialPalette30, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1SpecialPalette30FMTownsProvider },
+ { k1SpecialPalette31, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1SpecialPalette31FMTownsProvider },
+ { k1SpecialPalette32, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1SpecialPalette32FMTownsProvider },
+ { k1SpecialPalette33, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1SpecialPalette33FMTownsProvider },
+ { k1PutDownString, kKyra1, kPlatformFMTowns, kNoSpecial, EN_ANY, &k1PutDownStringFMTownsEnglishProvider },
+ { k1WaitAmuletString, kKyra1, kPlatformFMTowns, kNoSpecial, EN_ANY, &k1WaitAmuletStringFMTownsEnglishProvider },
+ { k1BlackJewelString, kKyra1, kPlatformFMTowns, kNoSpecial, EN_ANY, &k1BlackJewelStringFMTownsEnglishProvider },
+ { k1HealingTipString, kKyra1, kPlatformFMTowns, kNoSpecial, EN_ANY, &k1HealingTipStringFMTownsEnglishProvider },
+ { k1PoisonGoneString, kKyra1, kPlatformFMTowns, kNoSpecial, EN_ANY, &k1PoisonGoneStringFMTownsEnglishProvider },
+ { k1Healing1Shapes, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1Healing1ShapesFMTownsProvider },
+ { k1Healing2Shapes, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1Healing2ShapesFMTownsProvider },
+ { k1ThePoisonStrings, kKyra1, kPlatformFMTowns, kNoSpecial, EN_ANY, &k1ThePoisonStringsFMTownsEnglishProvider },
+ { k1FluteStrings, kKyra1, kPlatformFMTowns, kNoSpecial, EN_ANY, &k1FluteStringsFMTownsEnglishProvider },
+ { k1PoisonDeathShapes, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1PoisonDeathShapesFMTownsProvider },
+ { k1FluteShapes, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1FluteShapesFMTownsProvider },
+ { k1Winter1Shapes, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1Winter1ShapesFMTownsProvider },
+ { k1Winter2Shapes, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1Winter2ShapesFMTownsProvider },
+ { k1Winter3Shapes, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1Winter3ShapesFMTownsProvider },
+ { k1DrinkShapes, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1DrinkShapesFMTownsProvider },
+ { k1WispShapes, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1WispShapesFMTownsProvider },
+ { k1MagicAnimShapes, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1MagicAnimShapesFMTownsProvider },
+ { k1BranStoneShapes, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1BranStoneShapesFMTownsProvider },
+ { k1WispJewelStrings, kKyra1, kPlatformFMTowns, kNoSpecial, EN_ANY, &k1WispJewelStringsFMTownsEnglishProvider },
+ { k1MagicJewelStrings, kKyra1, kPlatformFMTowns, kNoSpecial, EN_ANY, &k1MagicJewelStringsFMTownsEnglishProvider },
+ { k1FlaskFullString, kKyra1, kPlatformFMTowns, kNoSpecial, EN_ANY, &k1FlaskFullStringFMTownsEnglishProvider },
+ { k1FullFlaskString, kKyra1, kPlatformFMTowns, kNoSpecial, EN_ANY, &k1FullFlaskStringFMTownsEnglishProvider },
+ { k1OutroReunionSeq, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1OutroReunionSeqFMTownsProvider },
+ { k1OutroHomeString, kKyra1, kPlatformFMTowns, kNoSpecial, EN_ANY, &k1OutroHomeStringFMTownsEnglishProvider },
+ { k1VeryCleverString, kKyra1, kPlatformFMTowns, kNoSpecial, EN_ANY, &k1VeryCleverStringFMTownsEnglishProvider },
+ { k1GUIStrings, kKyra1, kPlatformFMTowns, kNoSpecial, EN_ANY, &k1GUIStringsFMTownsEnglishProvider },
+ { k1NewGameString, kKyra1, kPlatformFMTowns, kNoSpecial, EN_ANY, &k1NewGameStringFMTownsEnglishProvider },
+ { k1ConfigStrings, kKyra1, kPlatformFMTowns, kNoSpecial, EN_ANY, &k1ConfigStringsFMTownsEnglishProvider },
+ { k1TownsMusicFadeTable, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1TownsMusicFadeTableFMTownsProvider },
+ { k1TownsSFXwdTable, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1TownsSFXwdTableFMTownsProvider },
+ { k1TownsSFXbtTable, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1TownsSFXbtTableFMTownsProvider },
+ { k1TownsCDATable, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1TownsCDATableFMTownsProvider },
+ { k1AudioTracks, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1AudioTracksFMTownsProvider },
+ { k1CreditsStrings, kKyra1, kPlatformFMTowns, kNoSpecial, EN_ANY, &k1CreditsStringsFMTownsEnglishProvider },
+ { k1IntroStrings, kKyra1, kPlatformFMTowns, kNoSpecial, JA_JPN, &k1IntroStringsFMTownsJapaneseProvider },
+ { k1ItemNames, kKyra1, kPlatformFMTowns, kNoSpecial, JA_JPN, &k1ItemNamesFMTownsJapaneseProvider },
+ { k1TakenStrings, kKyra1, kPlatformFMTowns, kNoSpecial, JA_JPN, &k1TakenStringsFMTownsJapaneseProvider },
+ { k1PlacedStrings, kKyra1, kPlatformFMTowns, kNoSpecial, JA_JPN, &k1PlacedStringsFMTownsJapaneseProvider },
+ { k1DroppedStrings, kKyra1, kPlatformFMTowns, kNoSpecial, JA_JPN, &k1DroppedStringsFMTownsJapaneseProvider },
+ { k1NoDropStrings, kKyra1, kPlatformFMTowns, kNoSpecial, JA_JPN, &k1NoDropStringsFMTownsJapaneseProvider },
+ { k1PutDownString, kKyra1, kPlatformFMTowns, kNoSpecial, JA_JPN, &k1PutDownStringFMTownsJapaneseProvider },
+ { k1WaitAmuletString, kKyra1, kPlatformFMTowns, kNoSpecial, JA_JPN, &k1WaitAmuletStringFMTownsJapaneseProvider },
+ { k1BlackJewelString, kKyra1, kPlatformFMTowns, kNoSpecial, JA_JPN, &k1BlackJewelStringFMTownsJapaneseProvider },
+ { k1HealingTipString, kKyra1, kPlatformFMTowns, kNoSpecial, JA_JPN, &k1HealingTipStringFMTownsJapaneseProvider },
+ { k1PoisonGoneString, kKyra1, kPlatformFMTowns, kNoSpecial, JA_JPN, &k1PoisonGoneStringFMTownsJapaneseProvider },
+ { k1ThePoisonStrings, kKyra1, kPlatformFMTowns, kNoSpecial, JA_JPN, &k1ThePoisonStringsFMTownsJapaneseProvider },
+ { k1FluteStrings, kKyra1, kPlatformFMTowns, kNoSpecial, JA_JPN, &k1FluteStringsFMTownsJapaneseProvider },
+ { k1WispJewelStrings, kKyra1, kPlatformFMTowns, kNoSpecial, JA_JPN, &k1WispJewelStringsFMTownsJapaneseProvider },
+ { k1MagicJewelStrings, kKyra1, kPlatformFMTowns, kNoSpecial, JA_JPN, &k1MagicJewelStringsFMTownsJapaneseProvider },
+ { k1FlaskFullString, kKyra1, kPlatformFMTowns, kNoSpecial, JA_JPN, &k1FlaskFullStringFMTownsJapaneseProvider },
+ { k1FullFlaskString, kKyra1, kPlatformFMTowns, kNoSpecial, JA_JPN, &k1FullFlaskStringFMTownsJapaneseProvider },
+ { k1OutroHomeString, kKyra1, kPlatformFMTowns, kNoSpecial, JA_JPN, &k1OutroHomeStringFMTownsJapaneseProvider },
+ { k1VeryCleverString, kKyra1, kPlatformFMTowns, kNoSpecial, JA_JPN, &k1VeryCleverStringFMTownsJapaneseProvider },
+ { k1GUIStrings, kKyra1, kPlatformFMTowns, kNoSpecial, JA_JPN, &k1GUIStringsFMTownsJapaneseProvider },
+ { k1NewGameString, kKyra1, kPlatformFMTowns, kNoSpecial, JA_JPN, &k1NewGameStringFMTownsJapaneseProvider },
+ { k1ConfigStrings, kKyra1, kPlatformFMTowns, kNoSpecial, JA_JPN, &k1ConfigStringsFMTownsJapaneseProvider },
+ { k1CreditsStrings, kKyra1, kPlatformFMTowns, kNoSpecial, JA_JPN, &k1CreditsStringsFMTownsJapaneseProvider },
+ { k1KallakWritingSeq, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1KallakWritingSeqPC98Provider },
+ { k1MalcolmTreeSeq, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1MalcolmTreeSeqPC98Provider },
+ { k1WestwoodLogoSeq, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1WestwoodLogoSeqPC98Provider },
+ { k1KyrandiaLogoSeq, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1KyrandiaLogoSeqPC98Provider },
+ { k1KallakMalcolmSeq, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1KallakMalcolmSeqPC98Provider },
+ { k1ForestSeq, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1ForestSeqPC98Provider },
+ { k1IntroCPSStrings, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1IntroCPSStringsPC98Provider },
+ { k1IntroCOLStrings, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1IntroCOLStringsPC98Provider },
+ { k1IntroWSAStrings, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1IntroWSAStringsPC98Provider },
+ { k1IntroStrings, kKyra1, kPlatformPC98, kNoSpecial, JA_JPN, &k1IntroStringsPC98JapaneseProvider },
+ { k1RoomList, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1RoomListPC98Provider },
+ { k1RoomFilenames, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1RoomFilenamesPC98Provider },
+ { k1CharacterImageFilenames, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1CharacterImageFilenamesPC98Provider },
+ { k1DefaultShapes, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1DefaultShapesPC98Provider },
+ { k1ItemNames, kKyra1, kPlatformPC98, kNoSpecial, JA_JPN, &k1ItemNamesPC98JapaneseProvider },
+ { k1TakenStrings, kKyra1, kPlatformPC98, kNoSpecial, JA_JPN, &k1TakenStringsPC98JapaneseProvider },
+ { k1PlacedStrings, kKyra1, kPlatformPC98, kNoSpecial, JA_JPN, &k1PlacedStringsPC98JapaneseProvider },
+ { k1DroppedStrings, kKyra1, kPlatformPC98, kNoSpecial, JA_JPN, &k1DroppedStringsPC98JapaneseProvider },
+ { k1NoDropStrings, kKyra1, kPlatformPC98, kNoSpecial, JA_JPN, &k1NoDropStringsPC98JapaneseProvider },
+ { k1AmuleteAnimSeq, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1AmuleteAnimSeqPC98Provider },
+ { k1SpecialPalette1, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1SpecialPalette1PC98Provider },
+ { k1SpecialPalette2, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1SpecialPalette2PC98Provider },
+ { k1SpecialPalette3, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1SpecialPalette3PC98Provider },
+ { k1SpecialPalette4, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1SpecialPalette4PC98Provider },
+ { k1SpecialPalette5, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1SpecialPalette5PC98Provider },
+ { k1SpecialPalette6, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1SpecialPalette6PC98Provider },
+ { k1SpecialPalette7, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1SpecialPalette7PC98Provider },
+ { k1SpecialPalette8, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1SpecialPalette8PC98Provider },
+ { k1SpecialPalette9, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1SpecialPalette9PC98Provider },
+ { k1SpecialPalette10, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1SpecialPalette10PC98Provider },
+ { k1SpecialPalette11, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1SpecialPalette11PC98Provider },
+ { k1SpecialPalette12, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1SpecialPalette12PC98Provider },
+ { k1SpecialPalette13, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1SpecialPalette13PC98Provider },
+ { k1SpecialPalette14, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1SpecialPalette14PC98Provider },
+ { k1SpecialPalette15, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1SpecialPalette15PC98Provider },
+ { k1SpecialPalette16, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1SpecialPalette16PC98Provider },
+ { k1SpecialPalette17, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1SpecialPalette17PC98Provider },
+ { k1SpecialPalette18, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1SpecialPalette18PC98Provider },
+ { k1SpecialPalette19, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1SpecialPalette19PC98Provider },
+ { k1SpecialPalette20, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1SpecialPalette20PC98Provider },
+ { k1SpecialPalette21, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1SpecialPalette21PC98Provider },
+ { k1SpecialPalette22, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1SpecialPalette22PC98Provider },
+ { k1SpecialPalette23, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1SpecialPalette23PC98Provider },
+ { k1SpecialPalette24, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1SpecialPalette24PC98Provider },
+ { k1SpecialPalette25, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1SpecialPalette25PC98Provider },
+ { k1SpecialPalette26, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1SpecialPalette26PC98Provider },
+ { k1SpecialPalette27, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1SpecialPalette27PC98Provider },
+ { k1SpecialPalette28, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1SpecialPalette28PC98Provider },
+ { k1SpecialPalette29, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1SpecialPalette29PC98Provider },
+ { k1SpecialPalette30, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1SpecialPalette30PC98Provider },
+ { k1SpecialPalette31, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1SpecialPalette31PC98Provider },
+ { k1SpecialPalette32, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1SpecialPalette32PC98Provider },
+ { k1SpecialPalette33, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1SpecialPalette33PC98Provider },
+ { k1PutDownString, kKyra1, kPlatformPC98, kNoSpecial, JA_JPN, &k1PutDownStringPC98JapaneseProvider },
+ { k1WaitAmuletString, kKyra1, kPlatformPC98, kNoSpecial, JA_JPN, &k1WaitAmuletStringPC98JapaneseProvider },
+ { k1BlackJewelString, kKyra1, kPlatformPC98, kNoSpecial, JA_JPN, &k1BlackJewelStringPC98JapaneseProvider },
+ { k1HealingTipString, kKyra1, kPlatformPC98, kNoSpecial, JA_JPN, &k1HealingTipStringPC98JapaneseProvider },
+ { k1PoisonGoneString, kKyra1, kPlatformPC98, kNoSpecial, JA_JPN, &k1PoisonGoneStringPC98JapaneseProvider },
+ { k1Healing1Shapes, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1Healing1ShapesPC98Provider },
+ { k1Healing2Shapes, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1Healing2ShapesPC98Provider },
+ { k1ThePoisonStrings, kKyra1, kPlatformPC98, kNoSpecial, JA_JPN, &k1ThePoisonStringsPC98JapaneseProvider },
+ { k1FluteStrings, kKyra1, kPlatformPC98, kNoSpecial, JA_JPN, &k1FluteStringsPC98JapaneseProvider },
+ { k1PoisonDeathShapes, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1PoisonDeathShapesPC98Provider },
+ { k1FluteShapes, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1FluteShapesPC98Provider },
+ { k1Winter1Shapes, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1Winter1ShapesPC98Provider },
+ { k1Winter2Shapes, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1Winter2ShapesPC98Provider },
+ { k1Winter3Shapes, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1Winter3ShapesPC98Provider },
+ { k1DrinkShapes, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1DrinkShapesPC98Provider },
+ { k1WispShapes, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1WispShapesPC98Provider },
+ { k1MagicAnimShapes, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1MagicAnimShapesPC98Provider },
+ { k1BranStoneShapes, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1BranStoneShapesPC98Provider },
+ { k1WispJewelStrings, kKyra1, kPlatformPC98, kNoSpecial, JA_JPN, &k1WispJewelStringsPC98JapaneseProvider },
+ { k1MagicJewelStrings, kKyra1, kPlatformPC98, kNoSpecial, JA_JPN, &k1MagicJewelStringsPC98JapaneseProvider },
+ { k1FlaskFullString, kKyra1, kPlatformPC98, kNoSpecial, JA_JPN, &k1FlaskFullStringPC98JapaneseProvider },
+ { k1FullFlaskString, kKyra1, kPlatformPC98, kNoSpecial, JA_JPN, &k1FullFlaskStringPC98JapaneseProvider },
+ { k1OutroReunionSeq, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1OutroReunionSeqPC98Provider },
+ { k1OutroHomeString, kKyra1, kPlatformPC98, kNoSpecial, JA_JPN, &k1OutroHomeStringPC98JapaneseProvider },
+ { k1VeryCleverString, kKyra1, kPlatformPC98, kNoSpecial, JA_JPN, &k1VeryCleverStringPC98JapaneseProvider },
+ { k1GUIStrings, kKyra1, kPlatformPC98, kNoSpecial, JA_JPN, &k1GUIStringsPC98JapaneseProvider },
+ { k1NewGameString, kKyra1, kPlatformPC98, kNoSpecial, JA_JPN, &k1NewGameStringPC98JapaneseProvider },
+ { k1ConfigStrings, kKyra1, kPlatformPC98, kNoSpecial, JA_JPN, &k1ConfigStringsPC98JapaneseProvider },
+ { k1PC98StoryStrings, kKyra1, kPlatformPC98, kNoSpecial, JA_JPN, &k1PC98StoryStringsPC98JapaneseProvider },
+ { k1PC98IntroSfx, kKyra1, kPlatformPC98, kNoSpecial, UNK_LANG, &k1PC98IntroSfxPC98Provider },
+ { k1CreditsStrings, kKyra1, kPlatformPC98, kNoSpecial, JA_JPN, &k1CreditsStringsPC98JapaneseProvider },
+ { k2SeqplayPakFiles, kKyra2, kPlatformDOS, kDemoVersion, UNK_LANG, &k2SeqplayPakFilesDOSDemoProvider },
+ { k2SeqplaySeqData, kKyra2, kPlatformDOS, kDemoVersion, UNK_LANG, &k2SeqplaySeqDataDOSDemoProvider },
+ { k2SeqplaySfxFiles, kKyra2, kPlatformDOS, kDemoVersion, UNK_LANG, &k2SeqplaySfxFilesDOSDemoProvider },
+ { k2SeqplayIntroTracks, kKyra2, kPlatformDOS, kDemoVersion, UNK_LANG, &k2SeqplayIntroTracksDOSDemoProvider },
+ { k2SeqplayShapeAnimData, kKyra2, kPlatformDOS, kDemoVersion, UNK_LANG, &k2SeqplayShapeAnimDataDOSDemoProvider },
+ { k2SeqplayPakFiles, kKyra2, kPlatformDOS, kTalkieDemoVersion, UNK_LANG, &k2SeqplayPakFilesDOSCDDemoProvider },
+ { k2SeqplayCredits, kKyra2, kPlatformDOS, kTalkieDemoVersion, UNK_LANG, &k2SeqplayCreditsDOSCDDemoProvider },
+ { k2SeqplayCreditsSpecial, kKyra2, kPlatformDOS, kTalkieDemoVersion, UNK_LANG, &k2SeqplayCreditsSpecialDOSCDDemoProvider },
+ { k2SeqplayStrings, kKyra2, kPlatformDOS, kTalkieDemoVersion, EN_ANY, &k2SeqplayStringsDOSCDDemoEnglishProvider },
+ { k2SeqplaySfxFiles, kKyra2, kPlatformDOS, kTalkieDemoVersion, UNK_LANG, &k2SeqplaySfxFilesDOSCDDemoProvider },
+ { k2SeqplayTlkFiles, kKyra2, kPlatformDOS, kTalkieDemoVersion, EN_ANY, &k2SeqplayTlkFilesDOSCDDemoEnglishProvider },
+ { k2SeqplaySeqData, kKyra2, kPlatformDOS, kTalkieDemoVersion, UNK_LANG, &k2SeqplaySeqDataDOSCDDemoProvider },
+ { k2SeqplayIntroTracks, kKyra2, kPlatformDOS, kTalkieDemoVersion, UNK_LANG, &k2SeqplayIntroTracksDOSCDDemoProvider },
+ { k2SeqplayFinaleTracks, kKyra2, kPlatformDOS, kTalkieDemoVersion, UNK_LANG, &k2SeqplayFinaleTracksDOSCDDemoProvider },
+ { k2IngameSfxFiles, kKyra2, kPlatformDOS, kTalkieDemoVersion, UNK_LANG, &k2IngameSfxFilesDOSCDDemoProvider },
+ { k2IngameSfxIndex, kKyra2, kPlatformDOS, kTalkieDemoVersion, UNK_LANG, &k2IngameSfxIndexDOSCDDemoProvider },
+ { k2IngameTracks, kKyra2, kPlatformDOS, kTalkieDemoVersion, UNK_LANG, &k2IngameTracksDOSCDDemoProvider },
+ { k2IngameTalkObjIndex, kKyra2, kPlatformDOS, kTalkieDemoVersion, UNK_LANG, &k2IngameTalkObjIndexDOSCDDemoProvider },
+ { k2IngameShapeAnimData, kKyra2, kPlatformDOS, kTalkieDemoVersion, UNK_LANG, &k2IngameShapeAnimDataDOSCDDemoProvider },
+ { k2IngameTlkDemoStrings, kKyra2, kPlatformDOS, kTalkieDemoVersion, EN_ANY, &k2IngameTlkDemoStringsDOSCDDemoEnglishProvider },
+ { k2SeqplayStrings, kKyra2, kPlatformDOS, kTalkieDemoVersion, FR_FRA, &k2SeqplayStringsDOSCDDemoFrenchProvider },
+ { k2SeqplayTlkFiles, kKyra2, kPlatformDOS, kTalkieDemoVersion, FR_FRA, &k2SeqplayTlkFilesDOSCDDemoFrenchProvider },
+ { k2IngameTlkDemoStrings, kKyra2, kPlatformDOS, kTalkieDemoVersion, FR_FRA, &k2IngameTlkDemoStringsDOSCDDemoFrenchProvider },
+ { k2SeqplayStrings, kKyra2, kPlatformDOS, kTalkieDemoVersion, DE_DEU, &k2SeqplayStringsDOSCDDemoGermanProvider },
+ { k2SeqplayTlkFiles, kKyra2, kPlatformDOS, kTalkieDemoVersion, DE_DEU, &k2SeqplayTlkFilesDOSCDDemoGermanProvider },
+ { k2IngameTlkDemoStrings, kKyra2, kPlatformDOS, kTalkieDemoVersion, DE_DEU, &k2IngameTlkDemoStringsDOSCDDemoGermanProvider },
+ { k2SeqplayPakFiles, kKyra2, kPlatformDOS, kNoSpecial, UNK_LANG, &k2SeqplayPakFilesDOSProvider },
+ { k2SeqplayStrings, kKyra2, kPlatformDOS, kNoSpecial, EN_ANY, &k2SeqplayStringsDOSEnglishProvider },
+ { k2SeqplaySfxFiles, kKyra2, kPlatformDOS, kNoSpecial, UNK_LANG, &k2SeqplaySfxFilesDOSProvider },
+ { k2SeqplayIntroTracks, kKyra2, kPlatformDOS, kNoSpecial, UNK_LANG, &k2SeqplayIntroTracksDOSProvider },
+ { k2SeqplayFinaleTracks, kKyra2, kPlatformDOS, kNoSpecial, UNK_LANG, &k2SeqplayFinaleTracksDOSProvider },
+ { k2SeqplaySeqData, kKyra2, kPlatformDOS, kNoSpecial, UNK_LANG, &k2SeqplaySeqDataDOSProvider },
+ { k2IngamePakFiles, kKyra2, kPlatformDOS, kNoSpecial, UNK_LANG, &k2IngamePakFilesDOSProvider },
+ { k2IngameSfxFiles, kKyra2, kPlatformDOS, kNoSpecial, UNK_LANG, &k2IngameSfxFilesDOSProvider },
+ { k2IngameSfxIndex, kKyra2, kPlatformDOS, kNoSpecial, UNK_LANG, &k2IngameSfxIndexDOSProvider },
+ { k2IngameTracks, kKyra2, kPlatformDOS, kNoSpecial, UNK_LANG, &k2IngameTracksDOSProvider },
+ { k2IngameTalkObjIndex, kKyra2, kPlatformDOS, kNoSpecial, UNK_LANG, &k2IngameTalkObjIndexDOSProvider },
+ { k2IngameShapeAnimData, kKyra2, kPlatformDOS, kNoSpecial, UNK_LANG, &k2IngameShapeAnimDataDOSProvider },
+ { k2SeqplayStrings, kKyra2, kPlatformDOS, kNoSpecial, FR_FRA, &k2SeqplayStringsDOSFrenchProvider },
+ { k2SeqplayStrings, kKyra2, kPlatformDOS, kNoSpecial, DE_DEU, &k2SeqplayStringsDOSGermanProvider },
+ { k2SeqplayStrings, kKyra2, kPlatformDOS, kNoSpecial, IT_ITA, &k2SeqplayStringsDOSItalianProvider },
+ { k2SeqplayStrings, kKyra2, kPlatformDOS, kNoSpecial, RU_RUS, &k2SeqplayStringsDOSRussianProvider },
+ { k2SeqplayPakFiles, kKyra2, kPlatformDOS, kTalkieVersion, UNK_LANG, &k2SeqplayPakFilesDOSCDProvider },
+ { k2SeqplayCredits, kKyra2, kPlatformDOS, kTalkieVersion, UNK_LANG, &k2SeqplayCreditsDOSCDProvider },
+ { k2SeqplayCreditsSpecial, kKyra2, kPlatformDOS, kTalkieVersion, UNK_LANG, &k2SeqplayCreditsSpecialDOSCDProvider },
+ { k2SeqplayStrings, kKyra2, kPlatformDOS, kTalkieVersion, EN_ANY, &k2SeqplayStringsDOSCDEnglishProvider },
+ { k2SeqplaySfxFiles, kKyra2, kPlatformDOS, kTalkieVersion, UNK_LANG, &k2SeqplaySfxFilesDOSCDProvider },
+ { k2SeqplayTlkFiles, kKyra2, kPlatformDOS, kTalkieVersion, EN_ANY, &k2SeqplayTlkFilesDOSCDEnglishProvider },
+ { k2SeqplaySeqData, kKyra2, kPlatformDOS, kTalkieVersion, UNK_LANG, &k2SeqplaySeqDataDOSCDProvider },
+ { k2SeqplayIntroTracks, kKyra2, kPlatformDOS, kTalkieVersion, UNK_LANG, &k2SeqplayIntroTracksDOSCDProvider },
+ { k2SeqplayFinaleTracks, kKyra2, kPlatformDOS, kTalkieVersion, UNK_LANG, &k2SeqplayFinaleTracksDOSCDProvider },
+ { k2IngameSfxFiles, kKyra2, kPlatformDOS, kTalkieVersion, UNK_LANG, &k2IngameSfxFilesDOSCDProvider },
+ { k2IngameSfxIndex, kKyra2, kPlatformDOS, kTalkieVersion, UNK_LANG, &k2IngameSfxIndexDOSCDProvider },
+ { k2IngameTracks, kKyra2, kPlatformDOS, kTalkieVersion, UNK_LANG, &k2IngameTracksDOSCDProvider },
+ { k2IngameTalkObjIndex, kKyra2, kPlatformDOS, kTalkieVersion, UNK_LANG, &k2IngameTalkObjIndexDOSCDProvider },
+ { k2IngameShapeAnimData, kKyra2, kPlatformDOS, kTalkieVersion, UNK_LANG, &k2IngameShapeAnimDataDOSCDProvider },
+ { k2SeqplayStrings, kKyra2, kPlatformDOS, kTalkieVersion, FR_FRA, &k2SeqplayStringsDOSCDFrenchProvider },
+ { k2SeqplayTlkFiles, kKyra2, kPlatformDOS, kTalkieVersion, FR_FRA, &k2SeqplayTlkFilesDOSCDFrenchProvider },
+ { k2SeqplayStrings, kKyra2, kPlatformDOS, kTalkieVersion, DE_DEU, &k2SeqplayStringsDOSCDGermanProvider },
+ { k2SeqplayTlkFiles, kKyra2, kPlatformDOS, kTalkieVersion, DE_DEU, &k2SeqplayTlkFilesDOSCDGermanProvider },
+ { k2SeqplayStrings, kKyra2, kPlatformDOS, kTalkieVersion, IT_ITA, &k2SeqplayStringsDOSCDItalianProvider },
+ { k2SeqplayTlkFiles, kKyra2, kPlatformDOS, kTalkieVersion, IT_ITA, &k2SeqplayTlkFilesDOSCDItalianProvider },
+ { k2SeqplayStrings, kKyra2, kPlatformDOS, kTalkieVersion, RU_RUS, &k2SeqplayStringsDOSCDRussianProvider },
+ { k2SeqplayTlkFiles, kKyra2, kPlatformDOS, kTalkieVersion, RU_RUS, &k2SeqplayTlkFilesDOSCDRussianProvider },
+ { k2SeqplayPakFiles, kKyra2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k2SeqplayPakFilesFMTownsProvider },
+ { k2SeqplayStrings, kKyra2, kPlatformFMTowns, kNoSpecial, EN_ANY, &k2SeqplayStringsFMTownsEnglishProvider },
+ { k2SeqplaySfxFiles, kKyra2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k2SeqplaySfxFilesFMTownsProvider },
+ { k2SeqplaySeqData, kKyra2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k2SeqplaySeqDataFMTownsProvider },
+ { k2SeqplayIntroCDA, kKyra2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k2SeqplayIntroCDAFMTownsProvider },
+ { k2SeqplayFinaleCDA, kKyra2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k2SeqplayFinaleCDAFMTownsProvider },
+ { k2IngamePakFiles, kKyra2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k2IngamePakFilesFMTownsProvider },
+ { k2IngameSfxFiles, kKyra2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k2IngameSfxFilesFMTownsProvider },
+ { k2IngameSfxIndex, kKyra2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k2IngameSfxIndexFMTownsProvider },
+ { k2IngameCDA, kKyra2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k2IngameCDAFMTownsProvider },
+ { k2IngameTalkObjIndex, kKyra2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k2IngameTalkObjIndexFMTownsProvider },
+ { k2IngameTimJpStrings, kKyra2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k2IngameTimJpStringsFMTownsProvider },
+ { k2IngameShapeAnimData, kKyra2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k2IngameShapeAnimDataFMTownsProvider },
+ { k2SeqplayStrings, kKyra2, kPlatformFMTowns, kNoSpecial, JA_JPN, &k2SeqplayStringsFMTownsJapaneseProvider },
+ { k2SeqplayPakFiles, kKyra2, kPlatformPC98, kNoSpecial, UNK_LANG, &k2SeqplayPakFilesPC98Provider },
+ { k2SeqplayStrings, kKyra2, kPlatformPC98, kNoSpecial, EN_ANY, &k2SeqplayStringsPC98EnglishProvider },
+ { k2SeqplaySfxFiles, kKyra2, kPlatformPC98, kNoSpecial, UNK_LANG, &k2SeqplaySfxFilesPC98Provider },
+ { k2SeqplaySeqData, kKyra2, kPlatformPC98, kNoSpecial, UNK_LANG, &k2SeqplaySeqDataPC98Provider },
+ { k2IngamePakFiles, kKyra2, kPlatformPC98, kNoSpecial, UNK_LANG, &k2IngamePakFilesPC98Provider },
+ { k2IngameSfxFiles, kKyra2, kPlatformPC98, kNoSpecial, UNK_LANG, &k2IngameSfxFilesPC98Provider },
+ { k2IngameSfxIndex, kKyra2, kPlatformPC98, kNoSpecial, UNK_LANG, &k2IngameSfxIndexPC98Provider },
+ { k2IngameTalkObjIndex, kKyra2, kPlatformPC98, kNoSpecial, UNK_LANG, &k2IngameTalkObjIndexPC98Provider },
+ { k2IngameTimJpStrings, kKyra2, kPlatformPC98, kNoSpecial, UNK_LANG, &k2IngameTimJpStringsPC98Provider },
+ { k2IngameShapeAnimData, kKyra2, kPlatformPC98, kNoSpecial, UNK_LANG, &k2IngameShapeAnimDataPC98Provider },
+ { k2SeqplayStrings, kKyra2, kPlatformPC98, kNoSpecial, JA_JPN, &k2SeqplayStringsPC98JapaneseProvider },
+ { k3MainMenuStrings, kKyra3, kPlatformDOS, kTalkieVersion, UNK_LANG, &k3MainMenuStringsDOSCDProvider },
+ { k3MusicFiles, kKyra3, kPlatformDOS, kTalkieVersion, UNK_LANG, &k3MusicFilesDOSCDProvider },
+ { k3ScoreTable, kKyra3, kPlatformDOS, kTalkieVersion, UNK_LANG, &k3ScoreTableDOSCDProvider },
+ { k3SfxFiles, kKyra3, kPlatformDOS, kTalkieVersion, UNK_LANG, &k3SfxFilesDOSCDProvider },
+ { k3SfxMap, kKyra3, kPlatformDOS, kTalkieVersion, UNK_LANG, &k3SfxMapDOSCDProvider },
+ { k3ItemAnimData, kKyra3, kPlatformDOS, kTalkieVersion, UNK_LANG, &k3ItemAnimDataDOSCDProvider },
+ { k3ItemMagicTable, kKyra3, kPlatformDOS, kTalkieVersion, UNK_LANG, &k3ItemMagicTableDOSCDProvider },
+ { k3ItemStringMap, kKyra3, kPlatformDOS, kTalkieVersion, UNK_LANG, &k3ItemStringMapDOSCDProvider },
+ { kEoBBaseChargenStrings1, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1ChargenStrings1DOSEnglishProvider },
+ { kEoBBaseChargenStrings2, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1ChargenStrings2DOSEnglishProvider },
+ { kEoBBaseChargenStartLevels, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1ChargenStartLevelsDOSProvider },
+ { kEoBBaseChargenStatStrings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1ChargenStatStringsDOSEnglishProvider },
+ { kEoBBaseChargenRaceSexStrings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1ChargenRaceSexStringsDOSEnglishProvider },
+ { kEoBBaseChargenClassStrings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1ChargenClassStringsDOSEnglishProvider },
+ { kEoBBaseChargenAlignmentStrings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1ChargenAlignmentStringsDOSEnglishProvider },
+ { kEoBBaseChargenEnterGameStrings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1ChargenEnterGameStringsDOSEnglishProvider },
+ { kEoBBaseChargenClassMinStats, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1ChargenClassMinStatsDOSProvider },
+ { kEoBBaseChargenRaceMinStats, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1ChargenRaceMinStatsDOSProvider },
+ { kEoBBaseChargenRaceMaxStats, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1ChargenRaceMaxStatsDOSProvider },
+ { kEoBBaseSaveThrowTable1, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1SaveThrowTable1DOSProvider },
+ { kEoBBaseSaveThrowTable2, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1SaveThrowTable2DOSProvider },
+ { kEoBBaseSaveThrowTable3, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1SaveThrowTable3DOSProvider },
+ { kEoBBaseSaveThrowTable4, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1SaveThrowTable4DOSProvider },
+ { kEoBBaseSaveThrwLvlIndex, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1SaveThrwLvlIndexDOSProvider },
+ { kEoBBaseSaveThrwModDiv, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1SaveThrwModDivDOSProvider },
+ { kEoBBaseSaveThrwModExt, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1SaveThrwModExtDOSProvider },
+ { kEoB1MainMenuStrings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1MainMenuStringsDOSEnglishProvider },
+ { kEoB1BonusStrings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1BonusStringsDOSEnglishProvider },
+ { kEoB1IntroFilesOpening, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1IntroFilesOpeningDOSProvider },
+ { kEoB1IntroFilesTower, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1IntroFilesTowerDOSProvider },
+ { kEoB1IntroFilesOrb, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1IntroFilesOrbDOSProvider },
+ { kEoB1IntroFilesWdEntry, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1IntroFilesWdEntryDOSProvider },
+ { kEoB1IntroFilesKing, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1IntroFilesKingDOSProvider },
+ { kEoB1IntroFilesHands, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1IntroFilesHandsDOSProvider },
+ { kEoB1IntroFilesWdExit, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1IntroFilesWdExitDOSProvider },
+ { kEoB1IntroFilesTunnel, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1IntroFilesTunnelDOSProvider },
+ { kEoB1IntroOpeningFrmDelay, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1IntroOpeningFrmDelayDOSProvider },
+ { kEoB1IntroWdEncodeX, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1IntroWdEncodeXDOSProvider },
+ { kEoB1IntroWdEncodeY, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1IntroWdEncodeYDOSProvider },
+ { kEoB1IntroWdEncodeWH, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1IntroWdEncodeWHDOSProvider },
+ { kEoB1IntroWdDsX, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1IntroWdDsXDOSProvider },
+ { kEoB1IntroWdDsY, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1IntroWdDsYDOSProvider },
+ { kEoB1IntroTvlX1, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1IntroTvlX1DOSProvider },
+ { kEoB1IntroTvlY1, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1IntroTvlY1DOSProvider },
+ { kEoB1IntroTvlX2, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1IntroTvlX2DOSProvider },
+ { kEoB1IntroTvlY2, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1IntroTvlY2DOSProvider },
+ { kEoB1IntroTvlW, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1IntroTvlWDOSProvider },
+ { kEoB1IntroTvlH, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1IntroTvlHDOSProvider },
+ { kEoB1DoorShapeDefs, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DoorShapeDefsDOSProvider },
+ { kEoB1DoorSwitchShapeDefs, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DoorSwitchShapeDefsDOSProvider },
+ { kEoB1DoorSwitchCoords, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DoorSwitchCoordsDOSProvider },
+ { kEoB1MonsterProperties, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1MonsterPropertiesDOSProvider },
+ { kEoB1EnemyMageSpellList, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1EnemyMageSpellListDOSProvider },
+ { kEoB1EnemyMageSfx, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1EnemyMageSfxDOSProvider },
+ { kEoB1BeholderSpellList, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1BeholderSpellListDOSProvider },
+ { kEoB1BeholderSfx, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1BeholderSfxDOSProvider },
+ { kEoB1TurnUndeadString, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1TurnUndeadStringDOSEnglishProvider },
+ { kEoB1CgaMappingDefault, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1CgaMappingDefaultDOSProvider },
+ { kEoB1CgaMappingAlt, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1CgaMappingAltDOSProvider },
+ { kEoB1CgaMappingInv, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1CgaMappingInvDOSProvider },
+ { kEoB1CgaMappingItemsL, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1CgaMappingItemsLDOSProvider },
+ { kEoB1CgaMappingItemsS, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1CgaMappingItemsSDOSProvider },
+ { kEoB1CgaMappingThrown, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1CgaMappingThrownDOSProvider },
+ { kEoB1CgaMappingIcons, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1CgaMappingIconsDOSProvider },
+ { kEoB1CgaMappingDeco, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1CgaMappingDecoDOSProvider },
+ { kEoB1CgaLevelMappingIndex, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1CgaLevelMappingIndexDOSProvider },
+ { kEoB1CgaMappingLevel0, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1CgaMappingLevel0DOSProvider },
+ { kEoB1CgaMappingLevel1, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1CgaMappingLevel1DOSProvider },
+ { kEoB1CgaMappingLevel2, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1CgaMappingLevel2DOSProvider },
+ { kEoB1CgaMappingLevel3, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1CgaMappingLevel3DOSProvider },
+ { kEoB1CgaMappingLevel4, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1CgaMappingLevel4DOSProvider },
+ { kEoB1NpcShpData, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1NpcShpDataDOSProvider },
+ { kEoB1NpcSubShpIndex1, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1NpcSubShpIndex1DOSProvider },
+ { kEoB1NpcSubShpIndex2, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1NpcSubShpIndex2DOSProvider },
+ { kEoB1NpcSubShpY, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1NpcSubShpYDOSProvider },
+ { kEoB1Npc0Strings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1Npc0StringsDOSEnglishProvider },
+ { kEoB1Npc11Strings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1Npc11StringsDOSEnglishProvider },
+ { kEoB1Npc12Strings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1Npc12StringsDOSEnglishProvider },
+ { kEoB1Npc21Strings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1Npc21StringsDOSEnglishProvider },
+ { kEoB1Npc22Strings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1Npc22StringsDOSEnglishProvider },
+ { kEoB1Npc31Strings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1Npc31StringsDOSEnglishProvider },
+ { kEoB1Npc32Strings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1Npc32StringsDOSEnglishProvider },
+ { kEoB1Npc4Strings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1Npc4StringsDOSEnglishProvider },
+ { kEoB1Npc5Strings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1Npc5StringsDOSEnglishProvider },
+ { kEoB1Npc6Strings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1Npc6StringsDOSEnglishProvider },
+ { kEoB1Npc7Strings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1Npc7StringsDOSEnglishProvider },
+ { kEoBBasePryDoorStrings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1PryDoorStringsDOSEnglishProvider },
+ { kEoBBaseWarningStrings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1WarningStringsDOSEnglishProvider },
+ { kEoBBaseItemSuffixStringsRings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1ItemSuffixStringsRingsDOSEnglishProvider },
+ { kEoBBaseItemSuffixStringsPotions, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1ItemSuffixStringsPotionsDOSEnglishProvider },
+ { kEoBBaseItemSuffixStringsWands, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1ItemSuffixStringsWandsDOSEnglishProvider },
+ { kEoBBaseRipItemStrings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1RipItemStringsDOSEnglishProvider },
+ { kEoBBaseCursedString, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1CursedStringDOSEnglishProvider },
+ { kEoBBaseEnchantedString, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1EnchantedStringDOSProvider },
+ { kEoBBaseMagicObjectStrings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1MagicObjectStringsDOSEnglishProvider },
+ { kEoBBaseMagicObjectString5, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1MagicObjectString5DOSEnglishProvider },
+ { kEoBBasePatternSuffix, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1PatternSuffixDOSEnglishProvider },
+ { kEoBBasePatternGrFix1, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1PatternGrFix1DOSEnglishProvider },
+ { kEoBBasePatternGrFix2, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1PatternGrFix2DOSEnglishProvider },
+ { kEoBBaseValidateArmorString, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1ValidateArmorStringDOSEnglishProvider },
+ { kEoBBaseValidateNoDropString, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1ValidateNoDropStringDOSEnglishProvider },
+ { kEoBBasePotionStrings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1PotionStringsDOSEnglishProvider },
+ { kEoBBaseWandStrings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1WandStringsDOSEnglishProvider },
+ { kEoBBaseItemMisuseStrings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1ItemMisuseStringsDOSEnglishProvider },
+ { kEoBBaseTakenStrings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1TakenStringsDOSEnglishProvider },
+ { kEoBBasePotionEffectStrings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1PotionEffectStringsDOSEnglishProvider },
+ { kEoBBaseYesNoStrings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1YesNoStringsDOSEnglishProvider },
+ { kRpgCommonMoreStrings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1MoreStringsDOSEnglishProvider },
+ { kEoBBaseNpcMaxStrings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1NpcMaxStringsDOSEnglishProvider },
+ { kEoBBaseNpcJoinStrings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1NpcJoinStringsDOSEnglishProvider },
+ { kEoBBaseCancelStrings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1CancelStringsDOSEnglishProvider },
+ { kEoBBaseMenuStringsMain, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1MenuStringsMainDOSEnglishProvider },
+ { kEoBBaseMenuStringsSaveLoad, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1MenuStringsSaveLoadDOSEnglishProvider },
+ { kEoBBaseMenuStringsOnOff, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1MenuStringsOnOffDOSEnglishProvider },
+ { kEoBBaseMenuStringsSpells, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1MenuStringsSpellsDOSEnglishProvider },
+ { kEoBBaseMenuStringsRest, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1MenuStringsRestDOSEnglishProvider },
+ { kEoBBaseMenuStringsDrop, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1MenuStringsDropDOSEnglishProvider },
+ { kEoBBaseMenuStringsExit, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1MenuStringsExitDOSEnglishProvider },
+ { kEoBBaseMenuStringsStarve, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1MenuStringsStarveDOSEnglishProvider },
+ { kEoBBaseMenuStringsScribe, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1MenuStringsScribeDOSEnglishProvider },
+ { kEoBBaseMenuStringsDrop2, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1MenuStringsDrop2DOSEnglishProvider },
+ { kEoBBaseMenuStringsHead, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1MenuStringsHeadDOSEnglishProvider },
+ { kEoBBaseMenuStringsPoison, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1MenuStringsPoisonDOSEnglishProvider },
+ { kEoBBaseMenuStringsMgc, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1MenuStringsMgcDOSEnglishProvider },
+ { kEoBBaseMenuStringsPrefs, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1MenuStringsPrefsDOSEnglishProvider },
+ { kEoBBaseMenuStringsRest2, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1MenuStringsRest2DOSEnglishProvider },
+ { kEoBBaseMenuStringsRest4, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1MenuStringsRest4DOSEnglishProvider },
+ { kEoBBaseMenuStringsDefeat, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1MenuStringsDefeatDOSEnglishProvider },
+ { kEoBBaseMenuYesNoStrings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1MenuYesNoStringsDOSEnglishProvider },
+ { kEoBBaseSpellLevelsMage, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1SpellLevelsMageDOSProvider },
+ { kEoBBaseSpellLevelsCleric, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1SpellLevelsClericDOSProvider },
+ { kEoBBaseNumSpellsCleric, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1NumSpellsClericDOSProvider },
+ { kEoBBaseNumSpellsWisAdj, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1NumSpellsWisAdjDOSProvider },
+ { kEoBBaseNumSpellsPal, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1NumSpellsPalDOSProvider },
+ { kEoBBaseNumSpellsMage, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1NumSpellsMageDOSProvider },
+ { kEoBBaseCharGuiStringsHp, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1CharGuiStringsHpDOSEnglishProvider },
+ { kEoBBaseCharGuiStringsWp1, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1CharGuiStringsWp1DOSEnglishProvider },
+ { kEoBBaseCharGuiStringsWr, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1CharGuiStringsWrDOSEnglishProvider },
+ { kEoBBaseCharGuiStringsSt1, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1CharGuiStringsSt1DOSEnglishProvider },
+ { kEoBBaseCharGuiStringsIn, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1CharGuiStringsInDOSEnglishProvider },
+ { kEoBBaseCharStatusStrings7, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1CharStatusStrings7DOSEnglishProvider },
+ { kEoBBaseCharStatusStrings81, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1CharStatusStrings81DOSEnglishProvider },
+ { kEoBBaseCharStatusStrings9, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1CharStatusStrings9DOSEnglishProvider },
+ { kEoBBaseCharStatusStrings131, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1CharStatusStrings131DOSEnglishProvider },
+ { kEoBBaseLevelGainStrings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1LevelGainStringsDOSEnglishProvider },
+ { kEoBBaseExperienceTable0, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1ExperienceTable0DOSProvider },
+ { kEoBBaseExperienceTable1, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1ExperienceTable1DOSProvider },
+ { kEoBBaseExperienceTable2, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1ExperienceTable2DOSProvider },
+ { kEoBBaseExperienceTable3, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1ExperienceTable3DOSProvider },
+ { kEoBBaseExperienceTable4, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1ExperienceTable4DOSProvider },
+ { kEoBBaseBookNumbers, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1BookNumbersDOSEnglishProvider },
+ { kEoBBaseMageSpellsList, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1MageSpellsListDOSEnglishProvider },
+ { kEoBBaseClericSpellsList, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1ClericSpellsListDOSEnglishProvider },
+ { kEoBBaseSpellNames, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1SpellNamesDOSEnglishProvider },
+ { kEoBBaseMagicStrings1, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1MagicStrings1DOSEnglishProvider },
+ { kEoBBaseMagicStrings2, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1MagicStrings2DOSEnglishProvider },
+ { kEoBBaseMagicStrings3, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1MagicStrings3DOSEnglishProvider },
+ { kEoBBaseMagicStrings4, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1MagicStrings4DOSEnglishProvider },
+ { kEoBBaseMagicStrings6, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1MagicStrings6DOSEnglishProvider },
+ { kEoBBaseMagicStrings7, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1MagicStrings7DOSEnglishProvider },
+ { kEoBBaseMagicStrings8, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1MagicStrings8DOSEnglishProvider },
+ { kEoBBaseExpObjectTblIndex, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1ExpObjectTblIndexDOSProvider },
+ { kEoBBaseExpObjectShpStart, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1ExpObjectShpStartDOSProvider },
+ { kEoBBaseExpObjectTbl1, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1ExpObjectTbl1DOSProvider },
+ { kEoBBaseExpObjectTbl2, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1ExpObjectTbl2DOSProvider },
+ { kEoBBaseExpObjectTbl3, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1ExpObjectTbl3DOSProvider },
+ { kEoBBaseExpObjectY, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1ExpObjectYDOSProvider },
+ { kEoBBaseSparkDefSteps, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1SparkDefStepsDOSProvider },
+ { kEoBBaseSparkDefSubSteps, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1SparkDefSubStepsDOSProvider },
+ { kEoBBaseSparkDefShift, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1SparkDefShiftDOSProvider },
+ { kEoBBaseSparkDefAdd, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1SparkDefAddDOSProvider },
+ { kEoBBaseSparkDefX, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1SparkDefXDOSProvider },
+ { kEoBBaseSparkDefY, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1SparkDefYDOSProvider },
+ { kEoBBaseSparkOfFlags1, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1SparkOfFlags1DOSProvider },
+ { kEoBBaseSparkOfFlags2, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1SparkOfFlags2DOSProvider },
+ { kEoBBaseSparkOfShift, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1SparkOfShiftDOSProvider },
+ { kEoBBaseSparkOfX, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1SparkOfXDOSProvider },
+ { kEoBBaseSparkOfY, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1SparkOfYDOSProvider },
+ { kEoBBaseSpellProperties, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1SpellPropertiesDOSProvider },
+ { kEoBBaseMagicFlightProps, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1MagicFlightPropsDOSProvider },
+ { kEoBBaseTurnUndeadEffect, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1TurnUndeadEffectDOSProvider },
+ { kEoBBaseBurningHandsDest, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1BurningHandsDestDOSProvider },
+ { kEoBBaseConeOfColdDest1, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1ConeOfColdDest1DOSProvider },
+ { kEoBBaseConeOfColdDest2, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1ConeOfColdDest2DOSProvider },
+ { kEoBBaseConeOfColdDest3, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1ConeOfColdDest3DOSProvider },
+ { kEoBBaseConeOfColdDest4, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1ConeOfColdDest4DOSProvider },
+ { kEoBBaseConeOfColdGfxTbl, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1ConeOfColdGfxTblDOSProvider },
+ { kRpgCommonDscDoorShapeIndex, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscDoorShapeIndexDOSProvider },
+ { kEoBBaseWllFlagPreset, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1WllFlagPresetDOSProvider },
+ { kEoBBaseDscShapeCoords, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscShapeCoordsDOSProvider },
+ { kEoBBaseDscDoorScaleOffs, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscDoorScaleOffsDOSProvider },
+ { kEoBBaseDscDoorScaleMult1, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscDoorScaleMult1DOSProvider },
+ { kEoBBaseDscDoorScaleMult2, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscDoorScaleMult2DOSProvider },
+ { kEoBBaseDscDoorScaleMult3, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscDoorScaleMult3DOSProvider },
+ { kEoBBaseDscDoorScaleMult4, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscDoorScaleMult4DOSProvider },
+ { kEoBBaseDscDoorScaleMult5, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscDoorScaleMult5DOSProvider },
+ { kEoBBaseDscDoorScaleMult6, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscDoorScaleMult6DOSProvider },
+ { kEoBBaseDscDoorXE, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscDoorXEDOSProvider },
+ { kEoBBaseDscDoorY1, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscDoorY1DOSProvider },
+ { kEoBBaseDscDoorY3, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscDoorY3DOSProvider },
+ { kEoBBaseDscDoorY4, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscDoorY4DOSProvider },
+ { kEoBBaseDscDoorY5, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscDoorY5DOSProvider },
+ { kEoBBaseDscDoorY6, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscDoorY6DOSProvider },
+ { kEoBBaseDscDoorY7, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscDoorY7DOSProvider },
+ { kEoBBaseDscDoorCoordsExt, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscDoorCoordsExtDOSProvider },
+ { kRpgCommonDscDoorFrameY1, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscDoorFrameY1DOSProvider },
+ { kRpgCommonDscDoorFrameY2, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscDoorFrameY2DOSProvider },
+ { kRpgCommonDscDoorFrameIndex1, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscDoorFrameIndex1DOSProvider },
+ { kRpgCommonDscDoorFrameIndex2, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscDoorFrameIndex2DOSProvider },
+ { kEoBBaseDscItemPosIndex, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscItemPosIndexDOSProvider },
+ { kEoBBaseDscItemShpX, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscItemShpXDOSProvider },
+ { kEoBBaseDscItemScaleIndex, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscItemScaleIndexDOSProvider },
+ { kEoBBaseDscItemTileIndex, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscItemTileIndexDOSProvider },
+ { kEoBBaseDscItemShapeMap, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscItemShapeMapDOSProvider },
+ { kEoBBaseDscTelptrShpCoords, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscTelptrShpCoordsDOSProvider },
+ { kEoBBasePortalSeqData, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1PortalSeqDataDOSProvider },
+ { kEoBBaseManDef, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1ManDefDOSEnglishProvider },
+ { kEoBBaseManWord, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1ManWordDOSEnglishProvider },
+ { kEoBBaseManPrompt, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1ManPromptDOSEnglishProvider },
+ { kEoBBaseDscMonsterFrmOffsTbl1, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscMonsterFrmOffsTbl1DOSProvider },
+ { kEoBBaseDscMonsterFrmOffsTbl2, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscMonsterFrmOffsTbl2DOSProvider },
+ { kEoBBaseInvSlotX, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1InvSlotXDOSProvider },
+ { kEoBBaseInvSlotY, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1InvSlotYDOSProvider },
+ { kEoBBaseSlotValidationFlags, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1SlotValidationFlagsDOSProvider },
+ { kEoBBaseProjectileWeaponTypes, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1ProjectileWeaponTypesDOSProvider },
+ { kEoBBaseWandTypes, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1WandTypesDOSProvider },
+ { kEoBBaseDrawObjPosIndex, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DrawObjPosIndexDOSProvider },
+ { kEoBBaseFlightObjFlipIndex, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1FlightObjFlipIndexDOSProvider },
+ { kEoBBaseFlightObjShpMap, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1FlightObjShpMapDOSProvider },
+ { kEoBBaseFlightObjSclIndex, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1FlightObjSclIndexDOSProvider },
+ { kRpgCommonDscShapeIndex, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscShapeIndexDOSProvider },
+ { kRpgCommonDscX, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscXDOSProvider },
+ { kRpgCommonDscTileIndex, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscTileIndexDOSProvider },
+ { kRpgCommonDscUnk2, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscUnk2DOSProvider },
+ { kRpgCommonDscDimData1, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscDimData1DOSProvider },
+ { kRpgCommonDscDimData2, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscDimData2DOSProvider },
+ { kRpgCommonDscBlockMap, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscBlockMapDOSProvider },
+ { kRpgCommonDscDimMap, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscDimMapDOSProvider },
+ { kRpgCommonDscBlockIndex, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1DscBlockIndexDOSProvider },
+ { kEoBBaseClassModifierFlags, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1ClassModifierFlagsDOSProvider },
+ { kEoBBaseMonsterStepTable01, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1MonsterStepTable01DOSProvider },
+ { kEoBBaseMonsterStepTable2, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1MonsterStepTable2DOSProvider },
+ { kEoBBaseMonsterStepTable3, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1MonsterStepTable3DOSProvider },
+ { kEoBBaseMonsterCloseAttPosTable1, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1MonsterCloseAttPosTable1DOSProvider },
+ { kEoBBaseMonsterCloseAttPosTable21, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1MonsterCloseAttPosTable21DOSProvider },
+ { kEoBBaseMonsterCloseAttChkTable1, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1MonsterCloseAttChkTable1DOSProvider },
+ { kEoBBaseMonsterCloseAttChkTable2, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1MonsterCloseAttChkTable2DOSProvider },
+ { kEoBBaseMonsterCloseAttDstTable1, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1MonsterCloseAttDstTable1DOSProvider },
+ { kEoBBaseMonsterCloseAttDstTable2, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1MonsterCloseAttDstTable2DOSProvider },
+ { kEoBBaseMonsterProximityTable, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1MonsterProximityTableDOSProvider },
+ { kEoBBaseFindBlockMonstersTable, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1FindBlockMonstersTableDOSProvider },
+ { kEoBBaseMonsterDirChangeTable, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1MonsterDirChangeTableDOSProvider },
+ { kEoBBaseMonsterDistAttStrings, kEoB1, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB1MonsterDistAttStringsDOSEnglishProvider },
+ { kEoBBaseEncodeMonsterDefs, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1EncodeMonsterDefsDOSProvider },
+ { kEoBBaseNpcPresets, kEoB1, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB1NpcPresetsDOSProvider },
+ { kEoBBaseChargenStrings1, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1ChargenStrings1DOSGermanProvider },
+ { kEoBBaseChargenStrings2, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1ChargenStrings2DOSGermanProvider },
+ { kEoBBaseChargenStatStrings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1ChargenStatStringsDOSGermanProvider },
+ { kEoBBaseChargenRaceSexStrings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1ChargenRaceSexStringsDOSGermanProvider },
+ { kEoBBaseChargenClassStrings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1ChargenClassStringsDOSGermanProvider },
+ { kEoBBaseChargenAlignmentStrings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1ChargenAlignmentStringsDOSGermanProvider },
+ { kEoBBaseChargenEnterGameStrings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1ChargenEnterGameStringsDOSGermanProvider },
+ { kEoB1MainMenuStrings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1MainMenuStringsDOSGermanProvider },
+ { kEoB1BonusStrings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1BonusStringsDOSGermanProvider },
+ { kEoB1TurnUndeadString, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1TurnUndeadStringDOSGermanProvider },
+ { kEoB1Npc0Strings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1Npc0StringsDOSGermanProvider },
+ { kEoB1Npc11Strings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1Npc11StringsDOSGermanProvider },
+ { kEoB1Npc12Strings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1Npc12StringsDOSGermanProvider },
+ { kEoB1Npc21Strings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1Npc21StringsDOSGermanProvider },
+ { kEoB1Npc22Strings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1Npc22StringsDOSGermanProvider },
+ { kEoB1Npc31Strings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1Npc31StringsDOSGermanProvider },
+ { kEoB1Npc32Strings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1Npc32StringsDOSGermanProvider },
+ { kEoB1Npc4Strings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1Npc4StringsDOSGermanProvider },
+ { kEoB1Npc5Strings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1Npc5StringsDOSGermanProvider },
+ { kEoB1Npc6Strings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1Npc6StringsDOSGermanProvider },
+ { kEoB1Npc7Strings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1Npc7StringsDOSGermanProvider },
+ { kEoBBasePryDoorStrings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1PryDoorStringsDOSGermanProvider },
+ { kEoBBaseWarningStrings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1WarningStringsDOSGermanProvider },
+ { kEoBBaseItemSuffixStringsRings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1ItemSuffixStringsRingsDOSGermanProvider },
+ { kEoBBaseItemSuffixStringsPotions, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1ItemSuffixStringsPotionsDOSGermanProvider },
+ { kEoBBaseItemSuffixStringsWands, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1ItemSuffixStringsWandsDOSGermanProvider },
+ { kEoBBaseRipItemStrings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1RipItemStringsDOSGermanProvider },
+ { kEoBBaseCursedString, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1CursedStringDOSGermanProvider },
+ { kEoBBaseMagicObjectStrings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1MagicObjectStringsDOSGermanProvider },
+ { kEoBBaseMagicObjectString5, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1MagicObjectString5DOSGermanProvider },
+ { kEoBBasePatternSuffix, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1PatternSuffixDOSGermanProvider },
+ { kEoBBasePatternGrFix1, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1PatternGrFix1DOSGermanProvider },
+ { kEoBBasePatternGrFix2, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1PatternGrFix2DOSGermanProvider },
+ { kEoBBaseValidateArmorString, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1ValidateArmorStringDOSGermanProvider },
+ { kEoBBaseValidateNoDropString, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1ValidateNoDropStringDOSGermanProvider },
+ { kEoBBasePotionStrings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1PotionStringsDOSGermanProvider },
+ { kEoBBaseWandStrings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1WandStringsDOSGermanProvider },
+ { kEoBBaseItemMisuseStrings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1ItemMisuseStringsDOSGermanProvider },
+ { kEoBBaseTakenStrings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1TakenStringsDOSGermanProvider },
+ { kEoBBasePotionEffectStrings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1PotionEffectStringsDOSGermanProvider },
+ { kEoBBaseYesNoStrings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1YesNoStringsDOSGermanProvider },
+ { kRpgCommonMoreStrings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1MoreStringsDOSGermanProvider },
+ { kEoBBaseNpcMaxStrings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1NpcMaxStringsDOSGermanProvider },
+ { kEoBBaseNpcJoinStrings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1NpcJoinStringsDOSGermanProvider },
+ { kEoBBaseCancelStrings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1CancelStringsDOSGermanProvider },
+ { kEoBBaseMenuStringsMain, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1MenuStringsMainDOSGermanProvider },
+ { kEoBBaseMenuStringsSaveLoad, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1MenuStringsSaveLoadDOSGermanProvider },
+ { kEoBBaseMenuStringsOnOff, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1MenuStringsOnOffDOSGermanProvider },
+ { kEoBBaseMenuStringsSpells, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1MenuStringsSpellsDOSGermanProvider },
+ { kEoBBaseMenuStringsRest, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1MenuStringsRestDOSGermanProvider },
+ { kEoBBaseMenuStringsDrop, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1MenuStringsDropDOSGermanProvider },
+ { kEoBBaseMenuStringsExit, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1MenuStringsExitDOSGermanProvider },
+ { kEoBBaseMenuStringsStarve, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1MenuStringsStarveDOSGermanProvider },
+ { kEoBBaseMenuStringsScribe, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1MenuStringsScribeDOSGermanProvider },
+ { kEoBBaseMenuStringsDrop2, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1MenuStringsDrop2DOSGermanProvider },
+ { kEoBBaseMenuStringsHead, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1MenuStringsHeadDOSGermanProvider },
+ { kEoBBaseMenuStringsPoison, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1MenuStringsPoisonDOSGermanProvider },
+ { kEoBBaseMenuStringsMgc, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1MenuStringsMgcDOSGermanProvider },
+ { kEoBBaseMenuStringsPrefs, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1MenuStringsPrefsDOSGermanProvider },
+ { kEoBBaseMenuStringsRest2, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1MenuStringsRest2DOSGermanProvider },
+ { kEoBBaseMenuStringsRest4, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1MenuStringsRest4DOSGermanProvider },
+ { kEoBBaseMenuStringsDefeat, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1MenuStringsDefeatDOSGermanProvider },
+ { kEoBBaseMenuYesNoStrings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1MenuYesNoStringsDOSGermanProvider },
+ { kEoBBaseCharGuiStringsHp, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1CharGuiStringsHpDOSGermanProvider },
+ { kEoBBaseCharGuiStringsWp1, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1CharGuiStringsWp1DOSGermanProvider },
+ { kEoBBaseCharGuiStringsWr, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1CharGuiStringsWrDOSGermanProvider },
+ { kEoBBaseCharGuiStringsSt1, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1CharGuiStringsSt1DOSGermanProvider },
+ { kEoBBaseCharGuiStringsIn, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1CharGuiStringsInDOSGermanProvider },
+ { kEoBBaseCharStatusStrings7, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1CharStatusStrings7DOSGermanProvider },
+ { kEoBBaseCharStatusStrings81, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1CharStatusStrings81DOSGermanProvider },
+ { kEoBBaseCharStatusStrings9, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1CharStatusStrings9DOSGermanProvider },
+ { kEoBBaseCharStatusStrings131, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1CharStatusStrings131DOSGermanProvider },
+ { kEoBBaseLevelGainStrings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1LevelGainStringsDOSGermanProvider },
+ { kEoBBaseBookNumbers, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1BookNumbersDOSGermanProvider },
+ { kEoBBaseMageSpellsList, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1MageSpellsListDOSGermanProvider },
+ { kEoBBaseClericSpellsList, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1ClericSpellsListDOSGermanProvider },
+ { kEoBBaseSpellNames, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1SpellNamesDOSGermanProvider },
+ { kEoBBaseMagicStrings1, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1MagicStrings1DOSGermanProvider },
+ { kEoBBaseMagicStrings2, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1MagicStrings2DOSGermanProvider },
+ { kEoBBaseMagicStrings3, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1MagicStrings3DOSGermanProvider },
+ { kEoBBaseMagicStrings4, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1MagicStrings4DOSGermanProvider },
+ { kEoBBaseMagicStrings6, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1MagicStrings6DOSGermanProvider },
+ { kEoBBaseMagicStrings7, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1MagicStrings7DOSGermanProvider },
+ { kEoBBaseMagicStrings8, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1MagicStrings8DOSGermanProvider },
+ { kEoBBaseManDef, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1ManDefDOSGermanProvider },
+ { kEoBBaseManWord, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1ManWordDOSGermanProvider },
+ { kEoBBaseManPrompt, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1ManPromptDOSGermanProvider },
+ { kEoBBaseMonsterDistAttStrings, kEoB1, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB1MonsterDistAttStringsDOSGermanProvider },
+ { kEoBBaseChargenStrings1, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2ChargenStrings1DOSEnglishProvider },
+ { kEoBBaseChargenStrings2, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2ChargenStrings2DOSEnglishProvider },
+ { kEoBBaseChargenStartLevels, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2ChargenStartLevelsDOSProvider },
+ { kEoBBaseChargenStatStrings, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2ChargenStatStringsDOSEnglishProvider },
+ { kEoBBaseChargenRaceSexStrings, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2ChargenRaceSexStringsDOSEnglishProvider },
+ { kEoBBaseChargenClassStrings, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2ChargenClassStringsDOSEnglishProvider },
+ { kEoBBaseChargenAlignmentStrings, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2ChargenAlignmentStringsDOSEnglishProvider },
+ { kEoBBaseChargenEnterGameStrings, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2ChargenEnterGameStringsDOSEnglishProvider },
+ { kEoBBaseChargenClassMinStats, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2ChargenClassMinStatsDOSProvider },
+ { kEoBBaseChargenRaceMinStats, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2ChargenRaceMinStatsDOSProvider },
+ { kEoBBaseChargenRaceMaxStats, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2ChargenRaceMaxStatsDOSProvider },
+ { kEoBBaseSaveThrowTable1, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2SaveThrowTable1DOSProvider },
+ { kEoBBaseSaveThrowTable2, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2SaveThrowTable2DOSProvider },
+ { kEoBBaseSaveThrowTable3, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2SaveThrowTable3DOSProvider },
+ { kEoBBaseSaveThrowTable4, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2SaveThrowTable4DOSProvider },
+ { kEoBBaseSaveThrwLvlIndex, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2SaveThrwLvlIndexDOSProvider },
+ { kEoBBaseSaveThrwModDiv, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2SaveThrwModDivDOSProvider },
+ { kEoBBaseSaveThrwModExt, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2SaveThrwModExtDOSProvider },
+ { kEoBBasePryDoorStrings, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2PryDoorStringsDOSEnglishProvider },
+ { kEoBBaseWarningStrings, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2WarningStringsDOSEnglishProvider },
+ { kEoBBaseItemSuffixStringsRings, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2ItemSuffixStringsRingsDOSEnglishProvider },
+ { kEoBBaseItemSuffixStringsPotions, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2ItemSuffixStringsPotionsDOSEnglishProvider },
+ { kEoBBaseItemSuffixStringsWands, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2ItemSuffixStringsWandsDOSEnglishProvider },
+ { kEoBBaseRipItemStrings, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2RipItemStringsDOSEnglishProvider },
+ { kEoBBaseCursedString, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2CursedStringDOSEnglishProvider },
+ { kEoBBaseEnchantedString, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2EnchantedStringDOSProvider },
+ { kEoBBaseMagicObjectStrings, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MagicObjectStringsDOSEnglishProvider },
+ { kEoBBaseMagicObjectString5, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MagicObjectString5DOSEnglishProvider },
+ { kEoBBasePatternSuffix, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2PatternSuffixDOSEnglishProvider },
+ { kEoBBasePatternGrFix1, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2PatternGrFix1DOSEnglishProvider },
+ { kEoBBasePatternGrFix2, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2PatternGrFix2DOSEnglishProvider },
+ { kEoBBaseValidateArmorString, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2ValidateArmorStringDOSEnglishProvider },
+ { kEoBBaseValidateCursedString, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2ValidateCursedStringDOSEnglishProvider },
+ { kEoBBaseValidateNoDropString, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2ValidateNoDropStringDOSEnglishProvider },
+ { kEoBBasePotionStrings, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2PotionStringsDOSEnglishProvider },
+ { kEoBBaseWandStrings, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2WandStringsDOSEnglishProvider },
+ { kEoBBaseItemMisuseStrings, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2ItemMisuseStringsDOSEnglishProvider },
+ { kEoBBaseTakenStrings, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2TakenStringsDOSEnglishProvider },
+ { kEoBBasePotionEffectStrings, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2PotionEffectStringsDOSEnglishProvider },
+ { kEoBBaseYesNoStrings, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2YesNoStringsDOSEnglishProvider },
+ { kRpgCommonMoreStrings, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MoreStringsDOSEnglishProvider },
+ { kEoBBaseNpcMaxStrings, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2NpcMaxStringsDOSEnglishProvider },
+ { kEoBBaseOkStrings, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2OkStringsDOSEnglishProvider },
+ { kEoBBaseNpcJoinStrings, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2NpcJoinStringsDOSEnglishProvider },
+ { kEoBBaseCancelStrings, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2CancelStringsDOSEnglishProvider },
+ { kEoBBaseAbortStrings, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2AbortStringsDOSEnglishProvider },
+ { kEoBBaseMenuStringsMain, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MenuStringsMainDOSEnglishProvider },
+ { kEoBBaseMenuStringsSaveLoad, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MenuStringsSaveLoadDOSEnglishProvider },
+ { kEoBBaseMenuStringsOnOff, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MenuStringsOnOffDOSEnglishProvider },
+ { kEoBBaseMenuStringsSpells, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MenuStringsSpellsDOSEnglishProvider },
+ { kEoBBaseMenuStringsRest, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MenuStringsRestDOSEnglishProvider },
+ { kEoBBaseMenuStringsDrop, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MenuStringsDropDOSEnglishProvider },
+ { kEoBBaseMenuStringsExit, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MenuStringsExitDOSEnglishProvider },
+ { kEoBBaseMenuStringsStarve, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MenuStringsStarveDOSEnglishProvider },
+ { kEoBBaseMenuStringsScribe, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MenuStringsScribeDOSEnglishProvider },
+ { kEoBBaseMenuStringsDrop2, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MenuStringsDrop2DOSEnglishProvider },
+ { kEoBBaseMenuStringsHead, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MenuStringsHeadDOSEnglishProvider },
+ { kEoBBaseMenuStringsPoison, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MenuStringsPoisonDOSEnglishProvider },
+ { kEoBBaseMenuStringsMgc, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MenuStringsMgcDOSEnglishProvider },
+ { kEoBBaseMenuStringsPrefs, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MenuStringsPrefsDOSEnglishProvider },
+ { kEoBBaseMenuStringsRest2, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MenuStringsRest2DOSEnglishProvider },
+ { kEoBBaseMenuStringsRest3, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MenuStringsRest3DOSEnglishProvider },
+ { kEoBBaseMenuStringsRest4, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MenuStringsRest4DOSEnglishProvider },
+ { kEoBBaseMenuStringsDefeat, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MenuStringsDefeatDOSEnglishProvider },
+ { kEoBBaseMenuStringsTransfer, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MenuStringsTransferDOSEnglishProvider },
+ { kEoBBaseMenuStringsSpec, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MenuStringsSpecDOSEnglishProvider },
+ { kEoBBaseMenuStringsSpellNo, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2MenuStringsSpellNoDOSProvider },
+ { kEoBBaseMenuYesNoStrings, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MenuYesNoStringsDOSEnglishProvider },
+ { kEoBBaseSpellLevelsMage, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2SpellLevelsMageDOSProvider },
+ { kEoBBaseSpellLevelsCleric, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2SpellLevelsClericDOSProvider },
+ { kEoBBaseNumSpellsCleric, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2NumSpellsClericDOSProvider },
+ { kEoBBaseNumSpellsWisAdj, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2NumSpellsWisAdjDOSProvider },
+ { kEoBBaseNumSpellsPal, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2NumSpellsPalDOSProvider },
+ { kEoBBaseNumSpellsMage, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2NumSpellsMageDOSProvider },
+ { kEoBBaseCharGuiStringsHp, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2CharGuiStringsHpDOSEnglishProvider },
+ { kEoBBaseCharGuiStringsWp2, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2CharGuiStringsWp2DOSEnglishProvider },
+ { kEoBBaseCharGuiStringsWr, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2CharGuiStringsWrDOSEnglishProvider },
+ { kEoBBaseCharGuiStringsSt2, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2CharGuiStringsSt2DOSEnglishProvider },
+ { kEoBBaseCharGuiStringsIn, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2CharGuiStringsInDOSEnglishProvider },
+ { kEoBBaseCharStatusStrings7, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2CharStatusStrings7DOSEnglishProvider },
+ { kEoBBaseCharStatusStrings82, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2CharStatusStrings82DOSEnglishProvider },
+ { kEoBBaseCharStatusStrings9, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2CharStatusStrings9DOSEnglishProvider },
+ { kEoBBaseCharStatusStrings12, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2CharStatusStrings12DOSEnglishProvider },
+ { kEoBBaseCharStatusStrings132, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2CharStatusStrings132DOSEnglishProvider },
+ { kEoBBaseLevelGainStrings, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2LevelGainStringsDOSEnglishProvider },
+ { kEoBBaseExperienceTable0, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2ExperienceTable0DOSProvider },
+ { kEoBBaseExperienceTable1, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2ExperienceTable1DOSProvider },
+ { kEoBBaseExperienceTable2, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2ExperienceTable2DOSProvider },
+ { kEoBBaseExperienceTable3, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2ExperienceTable3DOSProvider },
+ { kEoBBaseExperienceTable4, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2ExperienceTable4DOSProvider },
+ { kEoBBaseBookNumbers, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2BookNumbersDOSEnglishProvider },
+ { kEoBBaseMageSpellsList, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MageSpellsListDOSEnglishProvider },
+ { kEoBBaseClericSpellsList, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2ClericSpellsListDOSEnglishProvider },
+ { kEoBBaseSpellNames, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2SpellNamesDOSEnglishProvider },
+ { kEoBBaseMagicStrings1, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MagicStrings1DOSEnglishProvider },
+ { kEoBBaseMagicStrings2, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MagicStrings2DOSEnglishProvider },
+ { kEoBBaseMagicStrings3, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MagicStrings3DOSEnglishProvider },
+ { kEoBBaseMagicStrings4, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MagicStrings4DOSEnglishProvider },
+ { kEoBBaseMagicStrings6, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MagicStrings6DOSEnglishProvider },
+ { kEoBBaseMagicStrings7, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MagicStrings7DOSEnglishProvider },
+ { kEoBBaseMagicStrings8, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MagicStrings8DOSEnglishProvider },
+ { kEoBBaseExpObjectTlMode, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2ExpObjectTlModeDOSProvider },
+ { kEoBBaseExpObjectTblIndex, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2ExpObjectTblIndexDOSProvider },
+ { kEoBBaseExpObjectShpStart, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2ExpObjectShpStartDOSProvider },
+ { kEoBBaseExpObjectTbl1, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2ExpObjectTbl1DOSProvider },
+ { kEoBBaseExpObjectTbl2, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2ExpObjectTbl2DOSProvider },
+ { kEoBBaseExpObjectTbl3, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2ExpObjectTbl3DOSProvider },
+ { kEoBBaseExpObjectY, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2ExpObjectYDOSProvider },
+ { kEoBBaseSparkDefSteps, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2SparkDefStepsDOSProvider },
+ { kEoBBaseSparkDefSubSteps, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2SparkDefSubStepsDOSProvider },
+ { kEoBBaseSparkDefShift, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2SparkDefShiftDOSProvider },
+ { kEoBBaseSparkDefAdd, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2SparkDefAddDOSProvider },
+ { kEoBBaseSparkDefX, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2SparkDefXDOSProvider },
+ { kEoBBaseSparkDefY, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2SparkDefYDOSProvider },
+ { kEoBBaseSparkOfFlags1, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2SparkOfFlags1DOSProvider },
+ { kEoBBaseSparkOfFlags2, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2SparkOfFlags2DOSProvider },
+ { kEoBBaseSparkOfShift, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2SparkOfShiftDOSProvider },
+ { kEoBBaseSparkOfX, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2SparkOfXDOSProvider },
+ { kEoBBaseSparkOfY, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2SparkOfYDOSProvider },
+ { kEoBBaseSpellProperties, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2SpellPropertiesDOSProvider },
+ { kEoBBaseMagicFlightProps, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2MagicFlightPropsDOSProvider },
+ { kEoBBaseTurnUndeadEffect, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2TurnUndeadEffectDOSProvider },
+ { kEoBBaseBurningHandsDest, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2BurningHandsDestDOSProvider },
+ { kEoBBaseConeOfColdDest1, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2ConeOfColdDest1DOSProvider },
+ { kEoBBaseConeOfColdDest2, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2ConeOfColdDest2DOSProvider },
+ { kEoBBaseConeOfColdDest3, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2ConeOfColdDest3DOSProvider },
+ { kEoBBaseConeOfColdDest4, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2ConeOfColdDest4DOSProvider },
+ { kEoBBaseConeOfColdGfxTbl, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2ConeOfColdGfxTblDOSProvider },
+ { kRpgCommonDscDoorShapeIndex, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2DscDoorShapeIndexDOSProvider },
+ { kEoBBaseWllFlagPreset, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2WllFlagPresetDOSProvider },
+ { kEoBBaseDscShapeCoords, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2DscShapeCoordsDOSProvider },
+ { kEoBBaseDscDoorScaleOffs, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2DscDoorScaleOffsDOSProvider },
+ { kEoBBaseDscDoorScaleMult1, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2DscDoorScaleMult1DOSProvider },
+ { kEoBBaseDscDoorScaleMult2, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2DscDoorScaleMult2DOSProvider },
+ { kEoBBaseDscDoorScaleMult3, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2DscDoorScaleMult3DOSProvider },
+ { kEoBBaseDscDoorType5Offs, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2DscDoorType5OffsDOSProvider },
+ { kEoBBaseDscDoorY1, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2DscDoorY1DOSProvider },
+ { kRpgCommonDscDoorY2, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2DscDoorY2DOSProvider },
+ { kRpgCommonDscDoorFrameY1, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2DscDoorFrameY1DOSProvider },
+ { kRpgCommonDscDoorFrameY2, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2DscDoorFrameY2DOSProvider },
+ { kEoBBaseDscItemPosIndex, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2DscItemPosIndexDOSProvider },
+ { kEoBBaseDscItemShpX, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2DscItemShpXDOSProvider },
+ { kEoBBaseDscItemScaleIndex, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2DscItemScaleIndexDOSProvider },
+ { kEoBBaseDscItemTileIndex, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2DscItemTileIndexDOSProvider },
+ { kEoBBaseDscItemShapeMap, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2DscItemShapeMapDOSProvider },
+ { kEoBBaseDscTelptrShpCoords, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2DscTelptrShpCoordsDOSProvider },
+ { kEoBBasePortalSeqData, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2PortalSeqDataDOSProvider },
+ { kEoBBaseManDef, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2ManDefDOSEnglishProvider },
+ { kEoBBaseManWord, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2ManWordDOSEnglishProvider },
+ { kEoBBaseManPrompt, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2ManPromptDOSEnglishProvider },
+ { kEoBBaseDscMonsterFrmOffsTbl1, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2DscMonsterFrmOffsTbl1DOSProvider },
+ { kEoBBaseDscMonsterFrmOffsTbl2, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2DscMonsterFrmOffsTbl2DOSProvider },
+ { kEoBBaseInvSlotX, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2InvSlotXDOSProvider },
+ { kEoBBaseInvSlotY, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2InvSlotYDOSProvider },
+ { kEoBBaseSlotValidationFlags, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2SlotValidationFlagsDOSProvider },
+ { kEoBBaseProjectileWeaponTypes, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2ProjectileWeaponTypesDOSProvider },
+ { kEoBBaseWandTypes, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2WandTypesDOSProvider },
+ { kEoBBaseDrawObjPosIndex, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2DrawObjPosIndexDOSProvider },
+ { kEoBBaseFlightObjFlipIndex, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2FlightObjFlipIndexDOSProvider },
+ { kEoBBaseFlightObjShpMap, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2FlightObjShpMapDOSProvider },
+ { kEoBBaseFlightObjSclIndex, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2FlightObjSclIndexDOSProvider },
+ { kEoB2MainMenuStrings, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MainMenuStringsDOSEnglishProvider },
+ { kEoB2TransferPortraitFrames, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2TransferPortraitFramesDOSProvider },
+ { kEoB2TransferConvertTable, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2TransferConvertTableDOSProvider },
+ { kEoB2TransferItemTable, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2TransferItemTableDOSProvider },
+ { kEoB2TransferExpTable, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2TransferExpTableDOSProvider },
+ { kEoB2TransferStrings1, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2TransferStrings1DOSEnglishProvider },
+ { kEoB2TransferStrings2, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2TransferStrings2DOSEnglishProvider },
+ { kEoB2TransferLabels, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2TransferLabelsDOSEnglishProvider },
+ { kEoB2IntroStrings, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2IntroStringsDOSEnglishProvider },
+ { kEoB2IntroCPSFiles, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2IntroCPSFilesDOSEnglishProvider },
+ { kEoB2IntroAnimData00, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData00DOSProvider },
+ { kEoB2IntroAnimData01, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData01DOSProvider },
+ { kEoB2IntroAnimData02, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData02DOSProvider },
+ { kEoB2IntroAnimData03, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData03DOSProvider },
+ { kEoB2IntroAnimData04, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData04DOSProvider },
+ { kEoB2IntroAnimData05, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData05DOSProvider },
+ { kEoB2IntroAnimData06, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData06DOSProvider },
+ { kEoB2IntroAnimData07, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData07DOSProvider },
+ { kEoB2IntroAnimData08, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData08DOSProvider },
+ { kEoB2IntroAnimData09, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData09DOSProvider },
+ { kEoB2IntroAnimData10, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData10DOSProvider },
+ { kEoB2IntroAnimData11, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData11DOSProvider },
+ { kEoB2IntroAnimData12, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData12DOSProvider },
+ { kEoB2IntroAnimData13, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData13DOSProvider },
+ { kEoB2IntroAnimData14, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData14DOSProvider },
+ { kEoB2IntroAnimData15, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData15DOSProvider },
+ { kEoB2IntroAnimData16, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData16DOSProvider },
+ { kEoB2IntroAnimData17, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData17DOSProvider },
+ { kEoB2IntroAnimData18, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData18DOSProvider },
+ { kEoB2IntroAnimData19, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData19DOSProvider },
+ { kEoB2IntroAnimData20, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData20DOSProvider },
+ { kEoB2IntroAnimData21, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData21DOSProvider },
+ { kEoB2IntroAnimData22, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData22DOSProvider },
+ { kEoB2IntroAnimData23, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData23DOSProvider },
+ { kEoB2IntroAnimData24, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData24DOSProvider },
+ { kEoB2IntroAnimData25, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData25DOSProvider },
+ { kEoB2IntroAnimData26, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData26DOSProvider },
+ { kEoB2IntroAnimData27, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData27DOSProvider },
+ { kEoB2IntroAnimData28, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData28DOSProvider },
+ { kEoB2IntroAnimData29, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData29DOSProvider },
+ { kEoB2IntroAnimData30, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData30DOSProvider },
+ { kEoB2IntroAnimData31, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData31DOSProvider },
+ { kEoB2IntroAnimData32, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData32DOSProvider },
+ { kEoB2IntroAnimData33, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData33DOSProvider },
+ { kEoB2IntroAnimData34, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData34DOSProvider },
+ { kEoB2IntroAnimData35, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData35DOSProvider },
+ { kEoB2IntroAnimData36, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData36DOSProvider },
+ { kEoB2IntroAnimData37, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData37DOSProvider },
+ { kEoB2IntroAnimData38, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData38DOSProvider },
+ { kEoB2IntroAnimData39, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData39DOSProvider },
+ { kEoB2IntroAnimData40, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData40DOSProvider },
+ { kEoB2IntroAnimData41, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData41DOSProvider },
+ { kEoB2IntroAnimData42, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData42DOSProvider },
+ { kEoB2IntroAnimData43, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData43DOSProvider },
+ { kEoB2IntroShapes00, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroShapes00DOSProvider },
+ { kEoB2IntroShapes01, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroShapes01DOSProvider },
+ { kEoB2IntroShapes04, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroShapes04DOSProvider },
+ { kEoB2IntroShapes07, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2IntroShapes07DOSProvider },
+ { kEoB2FinaleStrings, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2FinaleStringsDOSEnglishProvider },
+ { kEoB2CreditsData, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2CreditsDataDOSEnglishProvider },
+ { kEoB2FinaleCPSFiles, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2FinaleCPSFilesDOSEnglishProvider },
+ { kEoB2FinaleAnimData00, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2FinaleAnimData00DOSProvider },
+ { kEoB2FinaleAnimData01, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2FinaleAnimData01DOSProvider },
+ { kEoB2FinaleAnimData02, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2FinaleAnimData02DOSProvider },
+ { kEoB2FinaleAnimData03, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2FinaleAnimData03DOSProvider },
+ { kEoB2FinaleAnimData04, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2FinaleAnimData04DOSProvider },
+ { kEoB2FinaleAnimData05, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2FinaleAnimData05DOSProvider },
+ { kEoB2FinaleAnimData06, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2FinaleAnimData06DOSProvider },
+ { kEoB2FinaleAnimData07, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2FinaleAnimData07DOSProvider },
+ { kEoB2FinaleAnimData08, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2FinaleAnimData08DOSProvider },
+ { kEoB2FinaleAnimData09, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2FinaleAnimData09DOSProvider },
+ { kEoB2FinaleAnimData10, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2FinaleAnimData10DOSProvider },
+ { kEoB2FinaleAnimData11, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2FinaleAnimData11DOSProvider },
+ { kEoB2FinaleAnimData12, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2FinaleAnimData12DOSProvider },
+ { kEoB2FinaleAnimData13, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2FinaleAnimData13DOSProvider },
+ { kEoB2FinaleAnimData14, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2FinaleAnimData14DOSProvider },
+ { kEoB2FinaleAnimData15, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2FinaleAnimData15DOSProvider },
+ { kEoB2FinaleAnimData16, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2FinaleAnimData16DOSProvider },
+ { kEoB2FinaleAnimData17, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2FinaleAnimData17DOSProvider },
+ { kEoB2FinaleAnimData18, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2FinaleAnimData18DOSProvider },
+ { kEoB2FinaleAnimData19, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2FinaleAnimData19DOSProvider },
+ { kEoB2FinaleAnimData20, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2FinaleAnimData20DOSProvider },
+ { kEoB2FinaleShapes00, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2FinaleShapes00DOSProvider },
+ { kEoB2FinaleShapes03, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2FinaleShapes03DOSProvider },
+ { kEoB2FinaleShapes07, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2FinaleShapes07DOSProvider },
+ { kEoB2FinaleShapes09, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2FinaleShapes09DOSProvider },
+ { kEoB2FinaleShapes10, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2FinaleShapes10DOSProvider },
+ { kEoB2NpcShapeData, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2NpcShapeDataDOSProvider },
+ { kEoBBaseClassModifierFlags, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2ClassModifierFlagsDOSProvider },
+ { kEoBBaseMonsterStepTable02, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2MonsterStepTable02DOSProvider },
+ { kEoBBaseMonsterStepTable1, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2MonsterStepTable1DOSProvider },
+ { kEoBBaseMonsterStepTable2, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2MonsterStepTable2DOSProvider },
+ { kEoBBaseMonsterStepTable3, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2MonsterStepTable3DOSProvider },
+ { kEoBBaseMonsterCloseAttPosTable1, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2MonsterCloseAttPosTable1DOSProvider },
+ { kEoBBaseMonsterCloseAttPosTable22, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2MonsterCloseAttPosTable22DOSProvider },
+ { kEoBBaseMonsterCloseAttUnkTable, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2MonsterCloseAttUnkTableDOSProvider },
+ { kEoBBaseMonsterCloseAttChkTable1, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2MonsterCloseAttChkTable1DOSProvider },
+ { kEoBBaseMonsterCloseAttChkTable2, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2MonsterCloseAttChkTable2DOSProvider },
+ { kEoBBaseMonsterCloseAttDstTable1, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2MonsterCloseAttDstTable1DOSProvider },
+ { kEoBBaseMonsterCloseAttDstTable2, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2MonsterCloseAttDstTable2DOSProvider },
+ { kEoBBaseMonsterProximityTable, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2MonsterProximityTableDOSProvider },
+ { kEoBBaseFindBlockMonstersTable, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2FindBlockMonstersTableDOSProvider },
+ { kEoBBaseMonsterDirChangeTable, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2MonsterDirChangeTableDOSProvider },
+ { kEoBBaseMonsterDistAttStrings, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MonsterDistAttStringsDOSEnglishProvider },
+ { kEoBBaseEncodeMonsterDefs, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2EncodeMonsterDefsDOSProvider },
+ { kEoBBaseNpcPresets, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2NpcPresetsDOSProvider },
+ { kEoB2Npc1Strings, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2Npc1StringsDOSEnglishProvider },
+ { kEoB2Npc2Strings, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2Npc2StringsDOSEnglishProvider },
+ { kEoB2MonsterDustStrings, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2MonsterDustStringsDOSEnglishProvider },
+ { kEoB2DreamSteps, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2DreamStepsDOSProvider },
+ { kEoB2KheldranStrings, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2KheldranStringsDOSEnglishProvider },
+ { kEoB2HornStrings, kEoB2, kPlatformDOS, kNoSpecial, EN_ANY, &kEoB2HornStringsDOSEnglishProvider },
+ { kEoB2HornSounds, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2HornSoundsDOSProvider },
+ { kEoB2WallOfForceDsX, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2WallOfForceDsXDOSProvider },
+ { kEoB2WallOfForceDsY, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2WallOfForceDsYDOSProvider },
+ { kEoB2WallOfForceNumW, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2WallOfForceNumWDOSProvider },
+ { kEoB2WallOfForceNumH, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2WallOfForceNumHDOSProvider },
+ { kEoB2WallOfForceShpId, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2WallOfForceShpIdDOSProvider },
+ { kRpgCommonDscShapeIndex, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2DscShapeIndexDOSProvider },
+ { kRpgCommonDscX, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2DscXDOSProvider },
+ { kRpgCommonDscTileIndex, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2DscTileIndexDOSProvider },
+ { kRpgCommonDscUnk2, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2DscUnk2DOSProvider },
+ { kRpgCommonDscDimData1, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2DscDimData1DOSProvider },
+ { kRpgCommonDscDimData2, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2DscDimData2DOSProvider },
+ { kRpgCommonDscBlockMap, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2DscBlockMapDOSProvider },
+ { kRpgCommonDscDimMap, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2DscDimMapDOSProvider },
+ { kRpgCommonDscBlockIndex, kEoB2, kPlatformDOS, kNoSpecial, UNK_LANG, &kEoB2DscBlockIndexDOSProvider },
+ { kEoBBaseChargenStrings1, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2ChargenStrings1DOSGermanProvider },
+ { kEoBBaseChargenStrings2, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2ChargenStrings2DOSGermanProvider },
+ { kEoBBaseChargenStatStrings, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2ChargenStatStringsDOSGermanProvider },
+ { kEoBBaseChargenRaceSexStrings, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2ChargenRaceSexStringsDOSGermanProvider },
+ { kEoBBaseChargenClassStrings, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2ChargenClassStringsDOSGermanProvider },
+ { kEoBBaseChargenAlignmentStrings, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2ChargenAlignmentStringsDOSGermanProvider },
+ { kEoBBaseChargenEnterGameStrings, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2ChargenEnterGameStringsDOSGermanProvider },
+ { kEoBBasePryDoorStrings, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2PryDoorStringsDOSGermanProvider },
+ { kEoBBaseWarningStrings, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2WarningStringsDOSGermanProvider },
+ { kEoBBaseItemSuffixStringsRings, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2ItemSuffixStringsRingsDOSGermanProvider },
+ { kEoBBaseItemSuffixStringsPotions, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2ItemSuffixStringsPotionsDOSGermanProvider },
+ { kEoBBaseItemSuffixStringsWands, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2ItemSuffixStringsWandsDOSGermanProvider },
+ { kEoBBaseRipItemStrings, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2RipItemStringsDOSGermanProvider },
+ { kEoBBaseCursedString, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2CursedStringDOSGermanProvider },
+ { kEoBBaseMagicObjectStrings, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MagicObjectStringsDOSGermanProvider },
+ { kEoBBaseMagicObjectString5, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MagicObjectString5DOSGermanProvider },
+ { kEoBBasePatternSuffix, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2PatternSuffixDOSGermanProvider },
+ { kEoBBasePatternGrFix1, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2PatternGrFix1DOSGermanProvider },
+ { kEoBBasePatternGrFix2, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2PatternGrFix2DOSGermanProvider },
+ { kEoBBaseValidateArmorString, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2ValidateArmorStringDOSGermanProvider },
+ { kEoBBaseValidateCursedString, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2ValidateCursedStringDOSGermanProvider },
+ { kEoBBaseValidateNoDropString, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2ValidateNoDropStringDOSGermanProvider },
+ { kEoBBasePotionStrings, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2PotionStringsDOSGermanProvider },
+ { kEoBBaseWandStrings, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2WandStringsDOSGermanProvider },
+ { kEoBBaseItemMisuseStrings, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2ItemMisuseStringsDOSGermanProvider },
+ { kEoBBaseTakenStrings, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2TakenStringsDOSGermanProvider },
+ { kEoBBasePotionEffectStrings, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2PotionEffectStringsDOSGermanProvider },
+ { kEoBBaseYesNoStrings, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2YesNoStringsDOSGermanProvider },
+ { kRpgCommonMoreStrings, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MoreStringsDOSGermanProvider },
+ { kEoBBaseNpcMaxStrings, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2NpcMaxStringsDOSGermanProvider },
+ { kEoBBaseOkStrings, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2OkStringsDOSGermanProvider },
+ { kEoBBaseNpcJoinStrings, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2NpcJoinStringsDOSGermanProvider },
+ { kEoBBaseCancelStrings, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2CancelStringsDOSGermanProvider },
+ { kEoBBaseAbortStrings, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2AbortStringsDOSGermanProvider },
+ { kEoBBaseMenuStringsMain, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MenuStringsMainDOSGermanProvider },
+ { kEoBBaseMenuStringsSaveLoad, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MenuStringsSaveLoadDOSGermanProvider },
+ { kEoBBaseMenuStringsOnOff, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MenuStringsOnOffDOSGermanProvider },
+ { kEoBBaseMenuStringsSpells, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MenuStringsSpellsDOSGermanProvider },
+ { kEoBBaseMenuStringsRest, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MenuStringsRestDOSGermanProvider },
+ { kEoBBaseMenuStringsDrop, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MenuStringsDropDOSGermanProvider },
+ { kEoBBaseMenuStringsExit, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MenuStringsExitDOSGermanProvider },
+ { kEoBBaseMenuStringsStarve, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MenuStringsStarveDOSGermanProvider },
+ { kEoBBaseMenuStringsScribe, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MenuStringsScribeDOSGermanProvider },
+ { kEoBBaseMenuStringsDrop2, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MenuStringsDrop2DOSGermanProvider },
+ { kEoBBaseMenuStringsHead, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MenuStringsHeadDOSGermanProvider },
+ { kEoBBaseMenuStringsPoison, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MenuStringsPoisonDOSGermanProvider },
+ { kEoBBaseMenuStringsMgc, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MenuStringsMgcDOSGermanProvider },
+ { kEoBBaseMenuStringsPrefs, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MenuStringsPrefsDOSGermanProvider },
+ { kEoBBaseMenuStringsRest2, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MenuStringsRest2DOSGermanProvider },
+ { kEoBBaseMenuStringsRest3, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MenuStringsRest3DOSGermanProvider },
+ { kEoBBaseMenuStringsRest4, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MenuStringsRest4DOSGermanProvider },
+ { kEoBBaseMenuStringsDefeat, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MenuStringsDefeatDOSGermanProvider },
+ { kEoBBaseMenuStringsTransfer, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MenuStringsTransferDOSGermanProvider },
+ { kEoBBaseMenuStringsSpec, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MenuStringsSpecDOSGermanProvider },
+ { kEoBBaseMenuYesNoStrings, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MenuYesNoStringsDOSGermanProvider },
+ { kEoBBaseCharGuiStringsHp, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2CharGuiStringsHpDOSGermanProvider },
+ { kEoBBaseCharGuiStringsWp2, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2CharGuiStringsWp2DOSGermanProvider },
+ { kEoBBaseCharGuiStringsWr, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2CharGuiStringsWrDOSGermanProvider },
+ { kEoBBaseCharGuiStringsSt2, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2CharGuiStringsSt2DOSGermanProvider },
+ { kEoBBaseCharGuiStringsIn, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2CharGuiStringsInDOSGermanProvider },
+ { kEoBBaseCharStatusStrings7, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2CharStatusStrings7DOSGermanProvider },
+ { kEoBBaseCharStatusStrings82, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2CharStatusStrings82DOSGermanProvider },
+ { kEoBBaseCharStatusStrings9, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2CharStatusStrings9DOSGermanProvider },
+ { kEoBBaseCharStatusStrings12, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2CharStatusStrings12DOSGermanProvider },
+ { kEoBBaseCharStatusStrings132, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2CharStatusStrings132DOSGermanProvider },
+ { kEoBBaseLevelGainStrings, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2LevelGainStringsDOSGermanProvider },
+ { kEoBBaseBookNumbers, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2BookNumbersDOSGermanProvider },
+ { kEoBBaseMageSpellsList, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MageSpellsListDOSGermanProvider },
+ { kEoBBaseClericSpellsList, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2ClericSpellsListDOSGermanProvider },
+ { kEoBBaseSpellNames, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2SpellNamesDOSGermanProvider },
+ { kEoBBaseMagicStrings1, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MagicStrings1DOSGermanProvider },
+ { kEoBBaseMagicStrings2, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MagicStrings2DOSGermanProvider },
+ { kEoBBaseMagicStrings3, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MagicStrings3DOSGermanProvider },
+ { kEoBBaseMagicStrings4, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MagicStrings4DOSGermanProvider },
+ { kEoBBaseMagicStrings6, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MagicStrings6DOSGermanProvider },
+ { kEoBBaseMagicStrings7, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MagicStrings7DOSGermanProvider },
+ { kEoBBaseMagicStrings8, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MagicStrings8DOSGermanProvider },
+ { kEoBBaseManDef, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2ManDefDOSGermanProvider },
+ { kEoBBaseManWord, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2ManWordDOSGermanProvider },
+ { kEoBBaseManPrompt, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2ManPromptDOSGermanProvider },
+ { kEoB2MainMenuStrings, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MainMenuStringsDOSGermanProvider },
+ { kEoB2TransferStrings1, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2TransferStrings1DOSGermanProvider },
+ { kEoB2TransferStrings2, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2TransferStrings2DOSGermanProvider },
+ { kEoB2TransferLabels, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2TransferLabelsDOSGermanProvider },
+ { kEoB2IntroStrings, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2IntroStringsDOSGermanProvider },
+ { kEoB2IntroCPSFiles, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2IntroCPSFilesDOSGermanProvider },
+ { kEoB2FinaleStrings, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2FinaleStringsDOSGermanProvider },
+ { kEoB2CreditsData, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2CreditsDataDOSGermanProvider },
+ { kEoB2FinaleCPSFiles, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2FinaleCPSFilesDOSGermanProvider },
+ { kEoBBaseMonsterDistAttStrings, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MonsterDistAttStringsDOSGermanProvider },
+ { kEoB2Npc1Strings, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2Npc1StringsDOSGermanProvider },
+ { kEoB2Npc2Strings, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2Npc2StringsDOSGermanProvider },
+ { kEoB2MonsterDustStrings, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MonsterDustStringsDOSGermanProvider },
+ { kEoB2KheldranStrings, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2KheldranStringsDOSGermanProvider },
+ { kEoB2HornStrings, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2HornStringsDOSGermanProvider },
+ { k2SeqplayPakFiles, kLoL, kPlatformDOS, kDemoVersion, UNK_LANG, &kLoLSeqplayPakFilesDOSDemoProvider },
+ { k2SeqplayStrings, kLoL, kPlatformDOS, kDemoVersion, EN_ANY, &kLoLSeqplayStringsDOSDemoEnglishProvider },
+ { k2SeqplaySeqData, kLoL, kPlatformDOS, kDemoVersion, UNK_LANG, &kLoLSeqplaySeqDataDOSDemoProvider },
+ { k2SeqplaySfxFiles, kLoL, kPlatformDOS, kDemoVersion, UNK_LANG, &kLoLSeqplaySfxFilesDOSDemoProvider },
+ { k2SeqplayIntroTracks, kLoL, kPlatformDOS, kDemoVersion, UNK_LANG, &kLoLSeqplayIntroTracksDOSDemoProvider },
+ { kLoLIngamePakFiles, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLIngamePakFilesDOSProvider },
+ { kLoLCharacterDefs, kLoL, kPlatformDOS, kNoSpecial, EN_ANY, &kLoLCharacterDefsDOSEnglishProvider },
+ { kLoLIngameSfxFiles, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLIngameSfxFilesDOSProvider },
+ { kLoLIngameSfxIndex, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLIngameSfxIndexDOSProvider },
+ { kLoLMusicTrackMap, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLMusicTrackMapDOSProvider },
+ { kLoLIngameGMSfxIndex, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLIngameGMSfxIndexDOSProvider },
+ { kLoLIngameMT32SfxIndex, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLIngameMT32SfxIndexDOSProvider },
+ { kLoLIngamePcSpkSfxIndex, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLIngamePcSpkSfxIndexDOSProvider },
+ { kLoLSpellProperties, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLSpellPropertiesDOSProvider },
+ { kLoLGameShapeMap, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLGameShapeMapDOSProvider },
+ { kLoLSceneItemOffs, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLSceneItemOffsDOSProvider },
+ { kLoLCharInvIndex, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLCharInvIndexDOSProvider },
+ { kLoLCharInvDefs, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLCharInvDefsDOSProvider },
+ { kLoLCharDefsMan, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLCharDefsManDOSProvider },
+ { kLoLCharDefsWoman, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLCharDefsWomanDOSProvider },
+ { kLoLCharDefsKieran, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLCharDefsKieranDOSProvider },
+ { kLoLCharDefsAkshel, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLCharDefsAkshelDOSProvider },
+ { kLoLExpRequirements, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLExpRequirementsDOSProvider },
+ { kLoLMonsterModifiers1, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLMonsterModifiers1DOSProvider },
+ { kLoLMonsterModifiers2, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLMonsterModifiers2DOSProvider },
+ { kLoLMonsterModifiers3, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLMonsterModifiers3DOSProvider },
+ { kLoLMonsterShiftOffsets, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLMonsterShiftOffsetsDOSProvider },
+ { kLoLMonsterDirFlags, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLMonsterDirFlagsDOSProvider },
+ { kLoLMonsterScaleY, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLMonsterScaleYDOSProvider },
+ { kLoLMonsterScaleX, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLMonsterScaleXDOSProvider },
+ { kLoLMonsterScaleWH, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLMonsterScaleWHDOSProvider },
+ { kLoLFlyingObjectShp, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLFlyingObjectShpDOSProvider },
+ { kLoLInventoryDesc, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLInventoryDescDOSProvider },
+ { kLoLLevelShpList, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLLevelShpListDOSProvider },
+ { kLoLLevelDatList, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLLevelDatListDOSProvider },
+ { kLoLCompassDefs, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLCompassDefsDOSProvider },
+ { kLoLStashSetup, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLStashSetupDOSProvider },
+ { kLoLDscWalls, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLDscWallsDOSProvider },
+ { kRpgCommonDscShapeIndex, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLDscShapeIndexDOSProvider },
+ { kLoLDscOvlMap, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLDscOvlMapDOSProvider },
+ { kLoLDscScaleWidthData, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLDscScaleWidthDataDOSProvider },
+ { kLoLDscScaleHeightData, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLDscScaleHeightDataDOSProvider },
+ { kRpgCommonDscX, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLDscXDOSProvider },
+ { kLoLBaseDscY, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLBaseDscYDOSProvider },
+ { kRpgCommonDscTileIndex, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLDscTileIndexDOSProvider },
+ { kRpgCommonDscUnk2, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLDscUnk2DOSProvider },
+ { kRpgCommonDscDoorShapeIndex, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLDscDoorShapeIndexDOSProvider },
+ { kRpgCommonDscDimData1, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLDscDimData1DOSProvider },
+ { kRpgCommonDscDimData2, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLDscDimData2DOSProvider },
+ { kRpgCommonDscBlockMap, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLDscBlockMapDOSProvider },
+ { kRpgCommonDscDimMap, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLDscDimMapDOSProvider },
+ { kLoLDscOvlIndex, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLDscOvlIndexDOSProvider },
+ { kRpgCommonDscBlockIndex, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLDscBlockIndexDOSProvider },
+ { kRpgCommonDscDoorY2, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLDscDoorY2DOSProvider },
+ { kRpgCommonDscDoorFrameY1, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLDscDoorFrameY1DOSProvider },
+ { kRpgCommonDscDoorFrameY2, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLDscDoorFrameY2DOSProvider },
+ { kLoLDscDoorScale, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLDscDoorScaleDOSProvider },
+ { kLoLDscDoor4, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLDscDoor4DOSProvider },
+ { kLoLDscDoorX, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLDscDoorXDOSProvider },
+ { kLoLDscDoorY, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLDscDoorYDOSProvider },
+ { kLoLScrollXTop, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLScrollXTopDOSProvider },
+ { kLoLScrollYTop, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLScrollYTopDOSProvider },
+ { kLoLScrollXBottom, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLScrollXBottomDOSProvider },
+ { kLoLScrollYBottom, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLScrollYBottomDOSProvider },
+ { kLoLButtonDefs, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLButtonDefsDOSProvider },
+ { kLoLButtonList1, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLButtonList1DOSProvider },
+ { kLoLButtonList2, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLButtonList2DOSProvider },
+ { kLoLButtonList3, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLButtonList3DOSProvider },
+ { kLoLButtonList4, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLButtonList4DOSProvider },
+ { kLoLButtonList5, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLButtonList5DOSProvider },
+ { kLoLButtonList6, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLButtonList6DOSProvider },
+ { kLoLButtonList7, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLButtonList7DOSProvider },
+ { kLoLButtonList8, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLButtonList8DOSProvider },
+ { kLoLLegendData, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLLegendDataDOSProvider },
+ { kLoLMapCursorOvl, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLMapCursorOvlDOSProvider },
+ { kLoLMapStringId, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLMapStringIdDOSProvider },
+ { kLoLSpellbookAnim, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLSpellbookAnimDOSProvider },
+ { kLoLSpellbookCoords, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLSpellbookCoordsDOSProvider },
+ { kLoLHealShapeFrames, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLHealShapeFramesDOSProvider },
+ { kLoLLightningDefs, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLLightningDefsDOSProvider },
+ { kLoLFireballCoords, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLFireballCoordsDOSProvider },
+ { kLoLCharacterDefs, kLoL, kPlatformDOS, kNoSpecial, RU_RUS, &kLoLCharacterDefsDOSRussianProvider },
+ { kLoLCharacterDefs, kLoL, kPlatformDOS, kNoSpecial, DE_DEU, &kLoLCharacterDefsDOSGermanProvider },
+ { kLoLCharacterDefs, kLoL, kPlatformDOS, kNoSpecial, FR_FRA, &kLoLCharacterDefsDOSFrenchProvider },
+ { kLoLIngamePakFiles, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLIngamePakFilesPC98Provider },
+ { kLoLCharacterDefs, kLoL, kPlatformPC98, kNoSpecial, JA_JPN, &kLoLCharacterDefsPC98JapaneseProvider },
+ { kLoLIngameSfxFiles, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLIngameSfxFilesPC98Provider },
+ { kLoLIngameSfxIndex, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLIngameSfxIndexPC98Provider },
+ { kLoLSpellProperties, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLSpellPropertiesPC98Provider },
+ { kLoLGameShapeMap, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLGameShapeMapPC98Provider },
+ { kLoLSceneItemOffs, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLSceneItemOffsPC98Provider },
+ { kLoLCharInvIndex, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLCharInvIndexPC98Provider },
+ { kLoLCharInvDefs, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLCharInvDefsPC98Provider },
+ { kLoLCharDefsMan, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLCharDefsManPC98Provider },
+ { kLoLCharDefsWoman, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLCharDefsWomanPC98Provider },
+ { kLoLCharDefsKieran, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLCharDefsKieranPC98Provider },
+ { kLoLCharDefsAkshel, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLCharDefsAkshelPC98Provider },
+ { kLoLExpRequirements, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLExpRequirementsPC98Provider },
+ { kLoLMonsterModifiers1, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLMonsterModifiers1PC98Provider },
+ { kLoLMonsterModifiers2, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLMonsterModifiers2PC98Provider },
+ { kLoLMonsterModifiers3, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLMonsterModifiers3PC98Provider },
+ { kLoLMonsterShiftOffsets, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLMonsterShiftOffsetsPC98Provider },
+ { kLoLMonsterDirFlags, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLMonsterDirFlagsPC98Provider },
+ { kLoLMonsterScaleY, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLMonsterScaleYPC98Provider },
+ { kLoLMonsterScaleX, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLMonsterScaleXPC98Provider },
+ { kLoLMonsterScaleWH, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLMonsterScaleWHPC98Provider },
+ { kLoLFlyingObjectShp, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLFlyingObjectShpPC98Provider },
+ { kLoLInventoryDesc, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLInventoryDescPC98Provider },
+ { kLoLLevelShpList, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLLevelShpListPC98Provider },
+ { kLoLLevelDatList, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLLevelDatListPC98Provider },
+ { kLoLCompassDefs, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLCompassDefsPC98Provider },
+ { kLoLStashSetup, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLStashSetupPC98Provider },
+ { kLoLDscWalls, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLDscWallsPC98Provider },
+ { kRpgCommonDscShapeIndex, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLDscShapeIndexPC98Provider },
+ { kLoLDscOvlMap, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLDscOvlMapPC98Provider },
+ { kLoLDscScaleWidthData, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLDscScaleWidthDataPC98Provider },
+ { kLoLDscScaleHeightData, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLDscScaleHeightDataPC98Provider },
+ { kRpgCommonDscX, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLDscXPC98Provider },
+ { kLoLBaseDscY, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLBaseDscYPC98Provider },
+ { kRpgCommonDscTileIndex, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLDscTileIndexPC98Provider },
+ { kRpgCommonDscUnk2, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLDscUnk2PC98Provider },
+ { kRpgCommonDscDoorShapeIndex, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLDscDoorShapeIndexPC98Provider },
+ { kRpgCommonDscDimData1, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLDscDimData1PC98Provider },
+ { kRpgCommonDscDimData2, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLDscDimData2PC98Provider },
+ { kRpgCommonDscBlockMap, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLDscBlockMapPC98Provider },
+ { kRpgCommonDscDimMap, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLDscDimMapPC98Provider },
+ { kLoLDscOvlIndex, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLDscOvlIndexPC98Provider },
+ { kRpgCommonDscBlockIndex, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLDscBlockIndexPC98Provider },
+ { kRpgCommonDscDoorY2, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLDscDoorY2PC98Provider },
+ { kRpgCommonDscDoorFrameY1, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLDscDoorFrameY1PC98Provider },
+ { kRpgCommonDscDoorFrameY2, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLDscDoorFrameY2PC98Provider },
+ { kLoLDscDoorScale, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLDscDoorScalePC98Provider },
+ { kLoLDscDoor4, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLDscDoor4PC98Provider },
+ { kLoLDscDoorX, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLDscDoorXPC98Provider },
+ { kLoLDscDoorY, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLDscDoorYPC98Provider },
+ { kLoLScrollXTop, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLScrollXTopPC98Provider },
+ { kLoLScrollYTop, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLScrollYTopPC98Provider },
+ { kLoLScrollXBottom, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLScrollXBottomPC98Provider },
+ { kLoLScrollYBottom, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLScrollYBottomPC98Provider },
+ { kLoLButtonDefs, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLButtonDefsPC98Provider },
+ { kLoLButtonList1, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLButtonList1PC98Provider },
+ { kLoLButtonList2, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLButtonList2PC98Provider },
+ { kLoLButtonList3, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLButtonList3PC98Provider },
+ { kLoLButtonList4, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLButtonList4PC98Provider },
+ { kLoLButtonList5, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLButtonList5PC98Provider },
+ { kLoLButtonList6, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLButtonList6PC98Provider },
+ { kLoLButtonList7, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLButtonList7PC98Provider },
+ { kLoLButtonList8, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLButtonList8PC98Provider },
+ { kLoLLegendData, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLLegendDataPC98Provider },
+ { kLoLMapStringId, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLMapStringIdPC98Provider },
+ { kLoLSpellbookAnim, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLSpellbookAnimPC98Provider },
+ { kLoLSpellbookCoords, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLSpellbookCoordsPC98Provider },
+ { kLoLHealShapeFrames, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLHealShapeFramesPC98Provider },
+ { kLoLLightningDefs, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLLightningDefsPC98Provider },
+ { kLoLFireballCoords, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLFireballCoordsPC98Provider },
+ { kLoLCredits, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLCreditsPC98Provider },
+ { kLoLIngamePakFiles, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLIngamePakFilesFMTownsProvider },
+ { kLoLCharacterDefs, kLoL, kPlatformFMTowns, kNoSpecial, JA_JPN, &kLoLCharacterDefsFMTownsJapaneseProvider },
+ { kLoLIngameSfxFiles, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLIngameSfxFilesFMTownsProvider },
+ { kLoLIngameSfxIndex, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLIngameSfxIndexFMTownsProvider },
+ { kLoLSpellProperties, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLSpellPropertiesFMTownsProvider },
+ { kLoLGameShapeMap, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLGameShapeMapFMTownsProvider },
+ { kLoLSceneItemOffs, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLSceneItemOffsFMTownsProvider },
+ { kLoLCharInvIndex, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLCharInvIndexFMTownsProvider },
+ { kLoLCharInvDefs, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLCharInvDefsFMTownsProvider },
+ { kLoLCharDefsMan, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLCharDefsManFMTownsProvider },
+ { kLoLCharDefsWoman, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLCharDefsWomanFMTownsProvider },
+ { kLoLCharDefsKieran, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLCharDefsKieranFMTownsProvider },
+ { kLoLCharDefsAkshel, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLCharDefsAkshelFMTownsProvider },
+ { kLoLExpRequirements, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLExpRequirementsFMTownsProvider },
+ { kLoLMonsterModifiers1, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLMonsterModifiers1FMTownsProvider },
+ { kLoLMonsterModifiers2, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLMonsterModifiers2FMTownsProvider },
+ { kLoLMonsterModifiers3, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLMonsterModifiers3FMTownsProvider },
+ { kLoLMonsterShiftOffsets, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLMonsterShiftOffsetsFMTownsProvider },
+ { kLoLMonsterDirFlags, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLMonsterDirFlagsFMTownsProvider },
+ { kLoLMonsterScaleY, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLMonsterScaleYFMTownsProvider },
+ { kLoLMonsterScaleX, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLMonsterScaleXFMTownsProvider },
+ { kLoLMonsterScaleWH, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLMonsterScaleWHFMTownsProvider },
+ { kLoLFlyingObjectShp, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLFlyingObjectShpFMTownsProvider },
+ { kLoLInventoryDesc, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLInventoryDescFMTownsProvider },
+ { kLoLLevelShpList, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLLevelShpListFMTownsProvider },
+ { kLoLLevelDatList, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLLevelDatListFMTownsProvider },
+ { kLoLCompassDefs, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLCompassDefsFMTownsProvider },
+ { kLoLStashSetup, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLStashSetupFMTownsProvider },
+ { kLoLDscWalls, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLDscWallsFMTownsProvider },
+ { kRpgCommonDscShapeIndex, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLDscShapeIndexFMTownsProvider },
+ { kLoLDscOvlMap, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLDscOvlMapFMTownsProvider },
+ { kLoLDscScaleWidthData, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLDscScaleWidthDataFMTownsProvider },
+ { kLoLDscScaleHeightData, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLDscScaleHeightDataFMTownsProvider },
+ { kRpgCommonDscX, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLDscXFMTownsProvider },
+ { kLoLBaseDscY, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLBaseDscYFMTownsProvider },
+ { kRpgCommonDscTileIndex, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLDscTileIndexFMTownsProvider },
+ { kRpgCommonDscUnk2, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLDscUnk2FMTownsProvider },
+ { kRpgCommonDscDoorShapeIndex, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLDscDoorShapeIndexFMTownsProvider },
+ { kRpgCommonDscDimData1, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLDscDimData1FMTownsProvider },
+ { kRpgCommonDscDimData2, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLDscDimData2FMTownsProvider },
+ { kRpgCommonDscBlockMap, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLDscBlockMapFMTownsProvider },
+ { kRpgCommonDscDimMap, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLDscDimMapFMTownsProvider },
+ { kLoLDscOvlIndex, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLDscOvlIndexFMTownsProvider },
+ { kRpgCommonDscBlockIndex, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLDscBlockIndexFMTownsProvider },
+ { kRpgCommonDscDoorY2, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLDscDoorY2FMTownsProvider },
+ { kRpgCommonDscDoorFrameY1, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLDscDoorFrameY1FMTownsProvider },
+ { kRpgCommonDscDoorFrameY2, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLDscDoorFrameY2FMTownsProvider },
+ { kLoLDscDoorScale, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLDscDoorScaleFMTownsProvider },
+ { kLoLDscDoor4, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLDscDoor4FMTownsProvider },
+ { kLoLDscDoorX, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLDscDoorXFMTownsProvider },
+ { kLoLDscDoorY, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLDscDoorYFMTownsProvider },
+ { kLoLScrollXTop, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLScrollXTopFMTownsProvider },
+ { kLoLScrollYTop, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLScrollYTopFMTownsProvider },
+ { kLoLScrollXBottom, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLScrollXBottomFMTownsProvider },
+ { kLoLScrollYBottom, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLScrollYBottomFMTownsProvider },
+ { kLoLButtonDefs, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLButtonDefsFMTownsProvider },
+ { kLoLButtonList1, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLButtonList1FMTownsProvider },
+ { kLoLButtonList2, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLButtonList2FMTownsProvider },
+ { kLoLButtonList3, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLButtonList3FMTownsProvider },
+ { kLoLButtonList4, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLButtonList4FMTownsProvider },
+ { kLoLButtonList5, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLButtonList5FMTownsProvider },
+ { kLoLButtonList6, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLButtonList6FMTownsProvider },
+ { kLoLButtonList7, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLButtonList7FMTownsProvider },
+ { kLoLButtonList8, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLButtonList8FMTownsProvider },
+ { kLoLLegendData, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLLegendDataFMTownsProvider },
+ { kLoLMapStringId, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLMapStringIdFMTownsProvider },
+ { kLoLSpellbookAnim, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLSpellbookAnimFMTownsProvider },
+ { kLoLSpellbookCoords, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLSpellbookCoordsFMTownsProvider },
+ { kLoLHealShapeFrames, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLHealShapeFramesFMTownsProvider },
+ { kLoLLightningDefs, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLLightningDefsFMTownsProvider },
+ { kLoLFireballCoords, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLFireballCoordsFMTownsProvider },
+ { kLoLCredits, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLCreditsFMTownsProvider },
+ { kLoLHistory, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLHistoryDOSCDProvider },
+ { kLoLCharacterDefs, kLoL, kPlatformDOS, kTalkieVersion, EN_ANY, &kLoLCharacterDefsDOSCDEnglishProvider },
+ { kLoLIngameSfxFiles, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLIngameSfxFilesDOSCDProvider },
+ { kLoLIngameSfxIndex, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLIngameSfxIndexDOSCDProvider },
+ { kLoLMusicTrackMap, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLMusicTrackMapDOSCDProvider },
+ { kLoLIngameGMSfxIndex, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLIngameGMSfxIndexDOSCDProvider },
+ { kLoLIngameMT32SfxIndex, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLIngameMT32SfxIndexDOSCDProvider },
+ { kLoLIngamePcSpkSfxIndex, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLIngamePcSpkSfxIndexDOSCDProvider },
+ { kLoLSpellProperties, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLSpellPropertiesDOSCDProvider },
+ { kLoLGameShapeMap, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLGameShapeMapDOSCDProvider },
+ { kLoLSceneItemOffs, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLSceneItemOffsDOSCDProvider },
+ { kLoLCharInvIndex, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLCharInvIndexDOSCDProvider },
+ { kLoLCharInvDefs, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLCharInvDefsDOSCDProvider },
+ { kLoLCharDefsMan, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLCharDefsManDOSCDProvider },
+ { kLoLCharDefsWoman, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLCharDefsWomanDOSCDProvider },
+ { kLoLCharDefsKieran, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLCharDefsKieranDOSCDProvider },
+ { kLoLCharDefsAkshel, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLCharDefsAkshelDOSCDProvider },
+ { kLoLExpRequirements, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLExpRequirementsDOSCDProvider },
+ { kLoLMonsterModifiers1, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLMonsterModifiers1DOSCDProvider },
+ { kLoLMonsterModifiers2, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLMonsterModifiers2DOSCDProvider },
+ { kLoLMonsterModifiers3, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLMonsterModifiers3DOSCDProvider },
+ { kLoLMonsterModifiers4, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLMonsterModifiers4DOSCDProvider },
+ { kLoLMonsterShiftOffsets, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLMonsterShiftOffsetsDOSCDProvider },
+ { kLoLMonsterDirFlags, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLMonsterDirFlagsDOSCDProvider },
+ { kLoLMonsterScaleY, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLMonsterScaleYDOSCDProvider },
+ { kLoLMonsterScaleX, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLMonsterScaleXDOSCDProvider },
+ { kLoLMonsterScaleWH, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLMonsterScaleWHDOSCDProvider },
+ { kLoLFlyingObjectShp, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLFlyingObjectShpDOSCDProvider },
+ { kLoLInventoryDesc, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLInventoryDescDOSCDProvider },
+ { kLoLLevelShpList, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLLevelShpListDOSCDProvider },
+ { kLoLLevelDatList, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLLevelDatListDOSCDProvider },
+ { kLoLCompassDefs, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLCompassDefsDOSCDProvider },
+ { kLoLItemPrices, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLItemPricesDOSCDProvider },
+ { kLoLStashSetup, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLStashSetupDOSCDProvider },
+ { kLoLDscWalls, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLDscWallsDOSCDProvider },
+ { kRpgCommonDscShapeIndex, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLDscShapeIndexDOSCDProvider },
+ { kLoLDscOvlMap, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLDscOvlMapDOSCDProvider },
+ { kLoLDscScaleWidthData, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLDscScaleWidthDataDOSCDProvider },
+ { kLoLDscScaleHeightData, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLDscScaleHeightDataDOSCDProvider },
+ { kRpgCommonDscX, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLDscXDOSCDProvider },
+ { kLoLBaseDscY, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLBaseDscYDOSCDProvider },
+ { kRpgCommonDscTileIndex, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLDscTileIndexDOSCDProvider },
+ { kRpgCommonDscUnk2, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLDscUnk2DOSCDProvider },
+ { kRpgCommonDscDoorShapeIndex, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLDscDoorShapeIndexDOSCDProvider },
+ { kRpgCommonDscDimData1, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLDscDimData1DOSCDProvider },
+ { kRpgCommonDscDimData2, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLDscDimData2DOSCDProvider },
+ { kRpgCommonDscBlockMap, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLDscBlockMapDOSCDProvider },
+ { kRpgCommonDscDimMap, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLDscDimMapDOSCDProvider },
+ { kLoLDscOvlIndex, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLDscOvlIndexDOSCDProvider },
+ { kRpgCommonDscBlockIndex, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLDscBlockIndexDOSCDProvider },
+ { kRpgCommonDscDoorY2, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLDscDoorY2DOSCDProvider },
+ { kRpgCommonDscDoorFrameY1, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLDscDoorFrameY1DOSCDProvider },
+ { kRpgCommonDscDoorFrameY2, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLDscDoorFrameY2DOSCDProvider },
+ { kLoLDscDoorScale, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLDscDoorScaleDOSCDProvider },
+ { kLoLDscDoor4, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLDscDoor4DOSCDProvider },
+ { kLoLDscDoorX, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLDscDoorXDOSCDProvider },
+ { kLoLDscDoorY, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLDscDoorYDOSCDProvider },
+ { kLoLScrollXTop, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLScrollXTopDOSCDProvider },
+ { kLoLScrollYTop, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLScrollYTopDOSCDProvider },
+ { kLoLScrollXBottom, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLScrollXBottomDOSCDProvider },
+ { kLoLScrollYBottom, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLScrollYBottomDOSCDProvider },
+ { kLoLButtonDefs, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLButtonDefsDOSCDProvider },
+ { kLoLButtonList1, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLButtonList1DOSCDProvider },
+ { kLoLButtonList2, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLButtonList2DOSCDProvider },
+ { kLoLButtonList3, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLButtonList3DOSCDProvider },
+ { kLoLButtonList4, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLButtonList4DOSCDProvider },
+ { kLoLButtonList5, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLButtonList5DOSCDProvider },
+ { kLoLButtonList6, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLButtonList6DOSCDProvider },
+ { kLoLButtonList7, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLButtonList7DOSCDProvider },
+ { kLoLButtonList8, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLButtonList8DOSCDProvider },
+ { kLoLLegendData, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLLegendDataDOSCDProvider },
+ { kLoLMapCursorOvl, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLMapCursorOvlDOSCDProvider },
+ { kLoLMapStringId, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLMapStringIdDOSCDProvider },
+ { kLoLSpellbookAnim, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLSpellbookAnimDOSCDProvider },
+ { kLoLSpellbookCoords, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLSpellbookCoordsDOSCDProvider },
+ { kLoLHealShapeFrames, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLHealShapeFramesDOSCDProvider },
+ { kLoLLightningDefs, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLLightningDefsDOSCDProvider },
+ { kLoLFireballCoords, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLFireballCoordsDOSCDProvider },
+ { kLoLCharacterDefs, kLoL, kPlatformDOS, kTalkieVersion, FR_FRA, &kLoLCharacterDefsDOSCDFrenchProvider },
+ { kLoLCharacterDefs, kLoL, kPlatformDOS, kTalkieVersion, DE_DEU, &kLoLCharacterDefsDOSCDGermanProvider },
+ { kLoLCharacterDefs, kLoL, kPlatformDOS, kTalkieVersion, IT_ITA, &kLoLCharacterDefsDOSCDItalianProvider },
+ { kLoLCharacterDefs, kLoL, kPlatformDOS, kTalkieVersion, RU_RUS, &kLoLCharacterDefsDOSCDRussianProvider },
+ { kMaxResIDs, kKyra1, kPlatformDOS, kNoSpecial, UNK_LANG, NULL }
+};
+
+const ResourceProvider *obtainResourceProviders() {
+ return resourceProviders;
+}
diff --git a/devtools/create_kyradat/tables.h b/devtools/create_kyradat/resources.h
index e481e1c17e..c9ab232b02 100644
--- a/devtools/create_kyradat/tables.h
+++ b/devtools/create_kyradat/resources.h
@@ -20,22 +20,26 @@
*
*/
-#ifndef CREATE_KYRADAT_TABLES_H
-#define CREATE_KYRADAT_TABLES_H
+#ifndef CREATE_KYRADAT_RESOURCES_H
+#define CREATE_KYRADAT_RESOURCES_H
-#include "search.h"
-#include "util.h"
+#include "create_kyradat.h"
-#include <list>
+#include "common/util.h"
+#include "common/language.h"
+#include "common/platform.h"
-struct ExtractEntrySearchData {
- int lang;
- int platform;
+using namespace Common;
- SearchData hint;
+struct ResourceProvider {
+ kExtractID id;
+ kGame game;
+ Platform platform;
+ kSpecial special;
+ Language language;
+ const void *provider;
};
-typedef std::list<ExtractEntrySearchData> ExtractEntryList;
-ExtractEntryList getProvidersForId(int id);
+const ResourceProvider *obtainResourceProviders();
#endif
diff --git a/devtools/create_kyradat/resources/eob1_dos.h b/devtools/create_kyradat/resources/eob1_dos.h
new file mode 100644
index 0000000000..b2aa8845de
--- /dev/null
+++ b/devtools/create_kyradat/resources/eob1_dos.h
@@ -0,0 +1,1765 @@
+static const byte kEoB1ChargenStartLevelsDOS[60] = {
+ 0x03, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x01,
+ 0x03, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x01,
+ 0x03, 0x00, 0x00, 0x01, 0x04, 0x00, 0x00, 0x01,
+ 0x02, 0x02, 0x00, 0x02, 0x02, 0x03, 0x00, 0x02,
+ 0x02, 0x02, 0x00, 0x02, 0x01, 0x01, 0x02, 0x03,
+ 0x03, 0x02, 0x00, 0x02, 0x02, 0x03, 0x00, 0x02,
+ 0x01, 0x02, 0x01, 0x03, 0x02, 0x02, 0x00, 0x02,
+ 0x02, 0x02, 0x00, 0x02
+};
+
+static const ByteProvider kEoB1ChargenStartLevelsDOSProvider = { ARRAYSIZE(kEoB1ChargenStartLevelsDOS), kEoB1ChargenStartLevelsDOS };
+
+static const byte kEoB1ChargenClassMinStatsDOS[90] = {
+ 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00,
+ 0x0E, 0x0D, 0x0E, 0x00, 0x0C, 0x00, 0x0D, 0x00,
+ 0x09, 0x11, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x09, 0x00,
+ 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00,
+ 0x09, 0x09, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09,
+ 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x09,
+ 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x00, 0x00,
+ 0x09, 0x09, 0x09, 0x00, 0x00, 0x00, 0x0D, 0x00,
+ 0x0E, 0x0D, 0x0E, 0x00, 0x00, 0x09, 0x09, 0x00,
+ 0x00, 0x00
+};
+
+static const ByteProvider kEoB1ChargenClassMinStatsDOSProvider = { ARRAYSIZE(kEoB1ChargenClassMinStatsDOS), kEoB1ChargenClassMinStatsDOS };
+
+static const byte kEoB1ChargenRaceMinStatsDOS[36] = {
+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x08,
+ 0x03, 0x07, 0x06, 0x08, 0x03, 0x04, 0x03, 0x06,
+ 0x06, 0x03, 0x08, 0x03, 0x03, 0x03, 0x0C, 0x02,
+ 0x06, 0x07, 0x02, 0x03, 0x08, 0x03, 0x07, 0x06,
+ 0x03, 0x08, 0x0A, 0x06
+};
+
+static const ByteProvider kEoB1ChargenRaceMinStatsDOSProvider = { ARRAYSIZE(kEoB1ChargenRaceMinStatsDOS), kEoB1ChargenRaceMinStatsDOS };
+
+static const uint16 kEoB1ChargenRaceMaxStatsDOS[36] = {
+ 0x6412, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x6412, 0x0012,
+ 0x0012, 0x0013, 0x0011, 0x0012, 0x6412, 0x0012, 0x0012, 0x0012,
+ 0x0012, 0x0012, 0x6412, 0x0012, 0x0012, 0x0011, 0x0013, 0x0010,
+ 0x6412, 0x0013, 0x0011, 0x0012, 0x0012, 0x0012, 0x0011, 0x0012,
+ 0x0011, 0x0013, 0x0012, 0x0012
+};
+
+static const Uint16Provider kEoB1ChargenRaceMaxStatsDOSProvider = { ARRAYSIZE(kEoB1ChargenRaceMaxStatsDOS), kEoB1ChargenRaceMaxStatsDOS };
+
+static const byte kEoB1SaveThrowTable1DOS[50] = {
+ 0x10, 0x0E, 0x0D, 0x0B, 0x0A, 0x08, 0x07, 0x05,
+ 0x04, 0x03, 0x12, 0x10, 0x0F, 0x0D, 0x0C, 0x0A,
+ 0x09, 0x07, 0x06, 0x05, 0x11, 0x0F, 0x0E, 0x0C,
+ 0x0B, 0x09, 0x08, 0x06, 0x05, 0x04, 0x14, 0x11,
+ 0x10, 0x0D, 0x0C, 0x09, 0x08, 0x05, 0x04, 0x04,
+ 0x13, 0x11, 0x10, 0x0E, 0x0D, 0x0B, 0x0A, 0x08,
+ 0x07, 0x06
+};
+
+static const ByteProvider kEoB1SaveThrowTable1DOSProvider = { ARRAYSIZE(kEoB1SaveThrowTable1DOS), kEoB1SaveThrowTable1DOS };
+
+static const byte kEoB1SaveThrowTable2DOS[25] = {
+ 0x0E, 0x0D, 0x0B, 0x0A, 0x08, 0x0B, 0x09, 0x07,
+ 0x05, 0x03, 0x0D, 0x0B, 0x09, 0x07, 0x05, 0x0F,
+ 0x0D, 0x0B, 0x09, 0x07, 0x0C, 0x0A, 0x08, 0x06,
+ 0x04
+};
+
+static const ByteProvider kEoB1SaveThrowTable2DOSProvider = { ARRAYSIZE(kEoB1SaveThrowTable2DOS), kEoB1SaveThrowTable2DOS };
+
+static const byte kEoB1SaveThrowTable3DOS[35] = {
+ 0x0A, 0x09, 0x07, 0x06, 0x05, 0x04, 0x02, 0x0E,
+ 0x0D, 0x0B, 0x0A, 0x09, 0x08, 0x06, 0x0D, 0x0C,
+ 0x0A, 0x09, 0x08, 0x07, 0x05, 0x10, 0x0F, 0x0D,
+ 0x0C, 0x0B, 0x0A, 0x08, 0x0F, 0x0E, 0x0C, 0x0B,
+ 0x0A, 0x09, 0x07
+};
+
+static const ByteProvider kEoB1SaveThrowTable3DOSProvider = { ARRAYSIZE(kEoB1SaveThrowTable3DOS), kEoB1SaveThrowTable3DOS };
+
+static const byte kEoB1SaveThrowTable4DOS[30] = {
+ 0x0D, 0x0C, 0x0B, 0x0A, 0x09, 0x08, 0x0E, 0x0C,
+ 0x0A, 0x08, 0x06, 0x07, 0x0C, 0x0B, 0x0A, 0x09,
+ 0x08, 0x04, 0x10, 0x0F, 0x0E, 0x0D, 0x0C, 0x0B,
+ 0x0F, 0x0D, 0x0B, 0x09, 0x07, 0x05
+};
+
+static const ByteProvider kEoB1SaveThrowTable4DOSProvider = { ARRAYSIZE(kEoB1SaveThrowTable4DOS), kEoB1SaveThrowTable4DOS };
+
+static const byte kEoB1SaveThrwLvlIndexDOS[6] = {
+ 0x11, 0x15, 0x13, 0x15, 0x11, 0x11
+};
+
+static const ByteProvider kEoB1SaveThrwLvlIndexDOSProvider = { ARRAYSIZE(kEoB1SaveThrwLvlIndexDOS), kEoB1SaveThrwLvlIndexDOS };
+
+static const byte kEoB1SaveThrwModDivDOS[6] = {
+ 0x02, 0x05, 0x03, 0x04, 0x02, 0x02
+};
+
+static const ByteProvider kEoB1SaveThrwModDivDOSProvider = { ARRAYSIZE(kEoB1SaveThrwModDivDOS), kEoB1SaveThrwModDivDOS };
+
+static const byte kEoB1SaveThrwModExtDOS[6] = {
+ 0x0A, 0x05, 0x07, 0x06, 0x0A, 0x0A
+};
+
+static const ByteProvider kEoB1SaveThrwModExtDOSProvider = { ARRAYSIZE(kEoB1SaveThrwModExtDOS), kEoB1SaveThrwModExtDOS };
+
+static const char *const kEoB1IntroFilesOpeningDOS[6] = {
+ "AND.CMP",
+ "SSI.CMP",
+ "PRESENT.CMP",
+ "DAND.CMP",
+ "WESTWOOD.CMP",
+ "WESTWOOD.COL"
+};
+
+static const StringListProvider kEoB1IntroFilesOpeningDOSProvider = { ARRAYSIZE(kEoB1IntroFilesOpeningDOS), kEoB1IntroFilesOpeningDOS };
+
+static const char *const kEoB1IntroFilesTowerDOS[2] = {
+ "TOWRMAGE.COL",
+ "TOWRMAGE.CMP"
+};
+
+static const StringListProvider kEoB1IntroFilesTowerDOSProvider = { ARRAYSIZE(kEoB1IntroFilesTowerDOS), kEoB1IntroFilesTowerDOS };
+
+static const char *const kEoB1IntroFilesOrbDOS[2] = {
+ "ORB.CMP",
+ "TOWRMAGE.CMP"
+};
+
+static const StringListProvider kEoB1IntroFilesOrbDOSProvider = { ARRAYSIZE(kEoB1IntroFilesOrbDOS), kEoB1IntroFilesOrbDOS };
+
+static const char *const kEoB1IntroFilesWdEntryDOS[4] = {
+ "WTRDP2.COL",
+ "WTRDP1.CMP",
+ "WTRDP2.CMP",
+ "WTRDP3.CMP"
+};
+
+static const StringListProvider kEoB1IntroFilesWdEntryDOSProvider = { ARRAYSIZE(kEoB1IntroFilesWdEntryDOS), kEoB1IntroFilesWdEntryDOS };
+
+static const char *const kEoB1IntroFilesKingDOS[2] = {
+ "KING.CMP",
+ "ADVENTUR.CMP"
+};
+
+static const StringListProvider kEoB1IntroFilesKingDOSProvider = { ARRAYSIZE(kEoB1IntroFilesKingDOS), kEoB1IntroFilesKingDOS };
+
+static const char *const kEoB1IntroFilesHandsDOS[1] = {
+ "HANDS.CMP"
+};
+
+static const StringListProvider kEoB1IntroFilesHandsDOSProvider = { ARRAYSIZE(kEoB1IntroFilesHandsDOS), kEoB1IntroFilesHandsDOS };
+
+static const char *const kEoB1IntroFilesWdExitDOS[5] = {
+ "WTRDP3.CMP",
+ "ORB.COL",
+ "ORB.CMP",
+ "TUNNEL.CMP",
+ "ZOOMTUNL.COL"
+};
+
+static const StringListProvider kEoB1IntroFilesWdExitDOSProvider = { ARRAYSIZE(kEoB1IntroFilesWdExitDOS), kEoB1IntroFilesWdExitDOS };
+
+static const char *const kEoB1IntroFilesTunnelDOS[2] = {
+ "AVALANCH.CMP",
+ "ZOOMTUNL.CMP"
+};
+
+static const StringListProvider kEoB1IntroFilesTunnelDOSProvider = { ARRAYSIZE(kEoB1IntroFilesTunnelDOS), kEoB1IntroFilesTunnelDOS };
+
+static const byte kEoB1IntroOpeningFrmDelayDOS[5] = {
+ 0x8C, 0x32, 0x64, 0x32, 0x8C
+};
+
+static const ByteProvider kEoB1IntroOpeningFrmDelayDOSProvider = { ARRAYSIZE(kEoB1IntroOpeningFrmDelayDOS), kEoB1IntroOpeningFrmDelayDOS };
+
+static const byte kEoB1IntroWdEncodeXDOS[31] = {
+ 0x00, 0x18, 0x02, 0x04, 0x1A, 0x05, 0x10, 0x06,
+ 0x10, 0x07, 0x11, 0x04, 0x13, 0x05, 0x06, 0x13,
+ 0x09, 0x14, 0x0B, 0x0D, 0x16, 0x0D, 0x16, 0x0E,
+ 0x1A, 0x0E, 0x17, 0x0F, 0x1B, 0x0F, 0x17
+};
+
+static const ByteProvider kEoB1IntroWdEncodeXDOSProvider = { ARRAYSIZE(kEoB1IntroWdEncodeXDOS), kEoB1IntroWdEncodeXDOS };
+
+static const byte kEoB1IntroWdEncodeYDOS[31] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00,
+ 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01
+};
+
+static const ByteProvider kEoB1IntroWdEncodeYDOSProvider = { ARRAYSIZE(kEoB1IntroWdEncodeYDOS), kEoB1IntroWdEncodeYDOS };
+
+static const byte kEoB1IntroWdEncodeWHDOS[31] = {
+ 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x01, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01
+};
+
+static const ByteProvider kEoB1IntroWdEncodeWHDOSProvider = { ARRAYSIZE(kEoB1IntroWdEncodeWHDOS), kEoB1IntroWdEncodeWHDOS };
+
+static const uint16 kEoB1IntroWdDsXDOS[31] = {
+ 0x0120, 0x0120, 0x0120, 0x0130, 0x0130, 0x00B2, 0x00B2, 0x00BC,
+ 0x00BC, 0x00AE, 0x00AE, 0x0125, 0x0125, 0x0125, 0x0101, 0x0101,
+ 0x00E9, 0x00E9, 0x00E9, 0x00AB, 0x00AB, 0x00CC, 0x00CC, 0x00F0,
+ 0x00F0, 0x010C, 0x010C, 0x00E0, 0x00E0, 0x00BA, 0x00BA
+};
+
+static const Uint16Provider kEoB1IntroWdDsXDOSProvider = { ARRAYSIZE(kEoB1IntroWdDsXDOS), kEoB1IntroWdDsXDOS };
+
+static const byte kEoB1IntroWdDsYDOS[31] = {
+ 0x28, 0x28, 0x28, 0x38, 0x38, 0x26, 0x26, 0x1D,
+ 0x1D, 0x34, 0x34, 0x50, 0x50, 0x50, 0x50, 0x50,
+ 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x2A, 0x2A, 0x66,
+ 0x66, 0x67, 0x67, 0x1C, 0x1C, 0x44, 0x44
+};
+
+static const ByteProvider kEoB1IntroWdDsYDOSProvider = { ARRAYSIZE(kEoB1IntroWdDsYDOS), kEoB1IntroWdDsYDOS };
+
+static const byte kEoB1IntroTvlX1DOS[6] = {
+ 0x00, 0x08, 0x10, 0x00, 0x0F, 0x00
+};
+
+static const ByteProvider kEoB1IntroTvlX1DOSProvider = { ARRAYSIZE(kEoB1IntroTvlX1DOS), kEoB1IntroTvlX1DOS };
+
+static const byte kEoB1IntroTvlY1DOS[6] = {
+ 0x00, 0x00, 0x00, 0x30, 0x36, 0x86
+};
+
+static const ByteProvider kEoB1IntroTvlY1DOSProvider = { ARRAYSIZE(kEoB1IntroTvlY1DOS), kEoB1IntroTvlY1DOS };
+
+static const byte kEoB1IntroTvlX2DOS[6] = {
+ 0x10, 0x10, 0x0F, 0x0C, 0x0B, 0x0B
+};
+
+static const ByteProvider kEoB1IntroTvlX2DOSProvider = { ARRAYSIZE(kEoB1IntroTvlX2DOS), kEoB1IntroTvlX2DOS };
+
+static const byte kEoB1IntroTvlY2DOS[6] = {
+ 0x35, 0x35, 0x35, 0x35, 0x35, 0x61
+};
+
+static const ByteProvider kEoB1IntroTvlY2DOSProvider = { ARRAYSIZE(kEoB1IntroTvlY2DOS), kEoB1IntroTvlY2DOS };
+
+static const byte kEoB1IntroTvlWDOS[6] = {
+ 0x08, 0x08, 0x0B, 0x0F, 0x12, 0x12
+};
+
+static const ByteProvider kEoB1IntroTvlWDOSProvider = { ARRAYSIZE(kEoB1IntroTvlWDOS), kEoB1IntroTvlWDOS };
+
+static const byte kEoB1IntroTvlHDOS[6] = {
+ 0x1A, 0x30, 0x36, 0x45, 0x50, 0x28
+};
+
+static const ByteProvider kEoB1IntroTvlHDOSProvider = { ARRAYSIZE(kEoB1IntroTvlHDOS), kEoB1IntroTvlHDOS };
+
+static const byte kEoB1DoorShapeDefsDOS[96] = {
+ 0x00, 0x00, 0x0A, 0x48, 0x11, 0x98, 0x07, 0x2F,
+ 0x19, 0x48, 0x04, 0x1D, 0x0A, 0x00, 0x0A, 0x48,
+ 0x1D, 0x48, 0x07, 0x2F, 0x19, 0x68, 0x04, 0x1D,
+ 0x14, 0x00, 0x06, 0x48, 0x24, 0x48, 0x04, 0x2F,
+ 0x1E, 0x78, 0x03, 0x1D, 0x1A, 0x00, 0x0C, 0x48,
+ 0x00, 0x90, 0x07, 0x29, 0x21, 0x78, 0x04, 0x1B,
+ 0x00, 0xBC, 0x0A, 0x0C, 0x0A, 0xBC, 0x06, 0x08,
+ 0x0A, 0xC4, 0x04, 0x02, 0x07, 0x4A, 0x09, 0x37,
+ 0x00, 0x4A, 0x07, 0x25, 0x07, 0xA0, 0x05, 0x17,
+ 0x07, 0x82, 0x09, 0x1C, 0x00, 0x70, 0x07, 0x13,
+ 0x0C, 0xA0, 0x05, 0x0B, 0x10, 0x48, 0x09, 0x4B,
+ 0x18, 0x98, 0x07, 0x2E, 0x1F, 0x98, 0x04, 0x1D
+};
+
+static const ByteProvider kEoB1DoorShapeDefsDOSProvider = { ARRAYSIZE(kEoB1DoorShapeDefsDOS), kEoB1DoorShapeDefsDOS };
+
+static const byte kEoB1DoorSwitchShapeDefsDOS[96] = {
+ 0x25, 0x78, 0x01, 0x07, 0x25, 0x88, 0x01, 0x03,
+ 0x25, 0x90, 0x01, 0x01, 0x25, 0x78, 0x01, 0x07,
+ 0x25, 0x88, 0x01, 0x03, 0x25, 0x90, 0x01, 0x01,
+ 0x26, 0x78, 0x01, 0x0B, 0x26, 0x88, 0x01, 0x06,
+ 0x26, 0x90, 0x01, 0x04, 0x27, 0x78, 0x01, 0x0E,
+ 0x27, 0x88, 0x01, 0x08, 0x25, 0x90, 0x01, 0x01,
+ 0x25, 0x78, 0x01, 0x07, 0x25, 0x88, 0x01, 0x03,
+ 0x25, 0x90, 0x01, 0x01, 0x25, 0x98, 0x01, 0x0B,
+ 0x25, 0xA8, 0x01, 0x06, 0x25, 0xB0, 0x01, 0x04,
+ 0x25, 0x98, 0x01, 0x0B, 0x25, 0xA8, 0x01, 0x05,
+ 0x25, 0xB0, 0x01, 0x04, 0x26, 0x98, 0x01, 0x0A,
+ 0x26, 0xA8, 0x01, 0x04, 0x25, 0x90, 0x01, 0x01
+};
+
+static const ByteProvider kEoB1DoorSwitchShapeDefsDOSProvider = { ARRAYSIZE(kEoB1DoorSwitchShapeDefsDOS), kEoB1DoorSwitchShapeDefsDOS };
+
+static const byte kEoB1DoorSwitchCoordsDOS[48] = {
+ 0x82, 0x24, 0x74, 0x27, 0x00, 0x00, 0x82, 0x24,
+ 0x74, 0x27, 0x00, 0x00, 0x5B, 0x36, 0x5A, 0x33,
+ 0x5A, 0x2D, 0x88, 0x26, 0x74, 0x29, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x24,
+ 0x73, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x80, 0x2B, 0x74, 0x2B, 0x00, 0x00
+};
+
+static const ByteProvider kEoB1DoorSwitchCoordsDOSProvider = { ARRAYSIZE(kEoB1DoorSwitchCoordsDOS), kEoB1DoorSwitchCoordsDOS };
+
+static const byte kEoB1MonsterPropertiesDOS[594] = {
+ 0x07, 0x12, 0xFF, 0x01, 0x01, 0x04, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
+ 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x02, 0x4B,
+ 0x02, 0xFF, 0x00, 0x07, 0x11, 0x02, 0x01, 0x01,
+ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x78, 0x00,
+ 0x01, 0x38, 0x39, 0x00, 0xFF, 0x00, 0x05, 0x11,
+ 0x01, 0x01, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x0C, 0x04, 0x00, 0x00,
+ 0x00, 0x41, 0x00, 0x00, 0x42, 0x43, 0x00, 0x02,
+ 0x00, 0x08, 0x0F, 0x02, 0x01, 0x01, 0x08, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x49,
+ 0x4A, 0x00, 0x03, 0x00, 0x04, 0x10, 0x02, 0x02,
+ 0x01, 0x04, 0x01, 0x01, 0x04, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0xAF,
+ 0x00, 0x02, 0x36, 0x37, 0x04, 0xFF, 0x14, 0x05,
+ 0x11, 0x03, 0x01, 0x01, 0x08, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x03, 0x00,
+ 0x00, 0x00, 0x41, 0x00, 0x00, 0x2F, 0x30, 0x00,
+ 0xFF, 0x00, 0x06, 0x13, 0x02, 0x01, 0x01, 0x08,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x12, 0x02, 0x00, 0x00, 0x00, 0x8A, 0x02, 0x02,
+ 0x31, 0x26, 0x00, 0xFF, 0x00, 0x03, 0x0C, 0x07,
+ 0x01, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
+ 0xDA, 0x02, 0x00, 0x2D, 0x2E, 0x00, 0xFF, 0x00,
+ 0x05, 0x07, 0x0A, 0x01, 0x01, 0x08, 0x06, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x04,
+ 0x00, 0x00, 0x00, 0xDC, 0x05, 0x00, 0x40, 0x41,
+ 0x00, 0x07, 0x00, 0x04, 0x0F, 0x06, 0x02, 0x01,
+ 0x08, 0x00, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x02, 0x03, 0x00, 0x00, 0x00, 0xCF, 0x03,
+ 0x01, 0x27, 0x28, 0x00, 0xFF, 0x00, 0x05, 0x0D,
+ 0x06, 0x03, 0x01, 0x08, 0x00, 0x01, 0x04, 0x00,
+ 0x01, 0x04, 0x00, 0x00, 0x28, 0x03, 0x00, 0x00,
+ 0x00, 0x78, 0x05, 0x02, 0x25, 0x24, 0x00, 0xFF,
+ 0x00, 0x04, 0x0D, 0x05, 0x02, 0x01, 0x04, 0x00,
+ 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0xE2, 0x04, 0x00, 0x3E,
+ 0x3F, 0x00, 0xFF, 0x00, 0x04, 0x0F, 0x04, 0x01,
+ 0x01, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, 0x00, 0x8A,
+ 0x02, 0x00, 0x2B, 0x2C, 0x00, 0xFF, 0x3C, 0xFF,
+ 0x07, 0x0A, 0x01, 0x03, 0x08, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00,
+ 0x00, 0x00, 0x10, 0x27, 0x02, 0x44, 0x45, 0x00,
+ 0xFF, 0x64, 0xFF, 0x07, 0x09, 0x01, 0x03, 0x04,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x42, 0x03, 0x00, 0x00, 0x00, 0xD0, 0x07, 0x00,
+ 0x1F, 0xFF, 0x08, 0xFF, 0x00, 0x03, 0x0D, 0x07,
+ 0x01, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x00,
+ 0x88, 0x13, 0x02, 0x29, 0x2A, 0x02, 0xFF, 0x3C,
+ 0x05, 0x0D, 0x07, 0x01, 0x01, 0x06, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x02,
+ 0x00, 0x00, 0x00, 0x88, 0x13, 0x00, 0x34, 0x35,
+ 0x02, 0xFF, 0x00, 0x05, 0x0B, 0x08, 0x01, 0x05,
+ 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x40, 0x1F,
+ 0x00, 0x3A, 0x3B, 0xFF, 0xFF, 0x5A, 0x02, 0x0F,
+ 0x05, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x82, 0x02, 0x00, 0x00,
+ 0x00, 0x0E, 0x01, 0x02, 0x3C, 0x3D, 0x00, 0xFF,
+ 0x00, 0xFE, 0x0D, 0x08, 0x01, 0x06, 0x04, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
+ 0x02, 0x00, 0x00, 0x00, 0xA0, 0x0F, 0x02, 0x48,
+ 0x47, 0x00, 0xFF, 0x32, 0x04, 0x0D, 0x07, 0x01,
+ 0x01, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0xCF,
+ 0x03, 0x01, 0x33, 0x32, 0x00, 0xFF, 0x28, 0x00,
+ 0x05, 0x23, 0x01, 0x01, 0x64, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00,
+ 0x00, 0x00, 0xB0, 0x36, 0x02, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x64
+};
+
+static const ByteProvider kEoB1MonsterPropertiesDOSProvider = { ARRAYSIZE(kEoB1MonsterPropertiesDOS), kEoB1MonsterPropertiesDOS };
+
+static const byte kEoB1EnemyMageSpellListDOS[10] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x05,
+ 0x06, 0x00
+};
+
+static const ByteProvider kEoB1EnemyMageSpellListDOSProvider = { ARRAYSIZE(kEoB1EnemyMageSpellListDOS), kEoB1EnemyMageSpellListDOS };
+
+static const byte kEoB1EnemyMageSfxDOS[10] = {
+ 0x00, 0x55, 0x55, 0x55, 0x55, 0x62, 0x62, 0x1F,
+ 0x62, 0x02
+};
+
+static const ByteProvider kEoB1EnemyMageSfxDOSProvider = { ARRAYSIZE(kEoB1EnemyMageSfxDOS), kEoB1EnemyMageSfxDOS };
+
+static const byte kEoB1BeholderSpellListDOS[4] = {
+ 0x02, 0x0A, 0x0B, 0x62
+};
+
+static const ByteProvider kEoB1BeholderSpellListDOSProvider = { ARRAYSIZE(kEoB1BeholderSpellListDOS), kEoB1BeholderSpellListDOS };
+
+static const byte kEoB1BeholderSfxDOS[4] = {
+ 0x62, 0x53, 0x40, 0x00
+};
+
+static const ByteProvider kEoB1BeholderSfxDOSProvider = { ARRAYSIZE(kEoB1BeholderSfxDOS), kEoB1BeholderSfxDOS };
+
+static const byte kEoB1CgaMappingDefaultDOS[32] = {
+ 0x00, 0x02, 0x02, 0x01, 0x01, 0x00, 0x01, 0x02,
+ 0x03, 0x01, 0x01, 0x01, 0x00, 0x02, 0x02, 0x03,
+ 0x00, 0x02, 0x02, 0x01, 0x01, 0x00, 0x01, 0x02,
+ 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x02, 0x03
+};
+
+static const ByteProvider kEoB1CgaMappingDefaultDOSProvider = { ARRAYSIZE(kEoB1CgaMappingDefaultDOS), kEoB1CgaMappingDefaultDOS };
+
+static const byte kEoB1CgaMappingAltDOS[32] = {
+ 0x00, 0x02, 0x03, 0x01, 0x01, 0x03, 0x02, 0x03,
+ 0x02, 0x01, 0x02, 0x00, 0x00, 0x02, 0x01, 0x03,
+ 0x00, 0x02, 0x01, 0x00, 0x01, 0x03, 0x02, 0x02,
+ 0x00, 0x03, 0x02, 0x00, 0x00, 0x02, 0x01, 0x03
+};
+
+static const ByteProvider kEoB1CgaMappingAltDOSProvider = { ARRAYSIZE(kEoB1CgaMappingAltDOS), kEoB1CgaMappingAltDOS };
+
+static const byte kEoB1CgaMappingInvDOS[32] = {
+ 0x00, 0x02, 0x02, 0x01, 0x01, 0x00, 0x01, 0x02,
+ 0x03, 0x03, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03,
+ 0x00, 0x02, 0x02, 0x01, 0x01, 0x00, 0x01, 0x02,
+ 0x03, 0x03, 0x01, 0x01, 0x00, 0x01, 0x02, 0x03
+};
+
+static const ByteProvider kEoB1CgaMappingInvDOSProvider = { ARRAYSIZE(kEoB1CgaMappingInvDOS), kEoB1CgaMappingInvDOS };
+
+static const byte kEoB1CgaMappingItemsLDOS[32] = {
+ 0x00, 0x02, 0x02, 0x01, 0x01, 0x00, 0x01, 0x02,
+ 0x02, 0x01, 0x02, 0x01, 0x00, 0x02, 0x02, 0x03,
+ 0x00, 0x02, 0x02, 0x01, 0x01, 0x00, 0x01, 0x02,
+ 0x00, 0x03, 0x02, 0x01, 0x00, 0x00, 0x02, 0x03
+};
+
+static const ByteProvider kEoB1CgaMappingItemsLDOSProvider = { ARRAYSIZE(kEoB1CgaMappingItemsLDOS), kEoB1CgaMappingItemsLDOS };
+
+static const byte kEoB1CgaMappingItemsSDOS[32] = {
+ 0x00, 0x02, 0x02, 0x01, 0x01, 0x03, 0x03, 0x02,
+ 0x03, 0x01, 0x01, 0x01, 0x00, 0x02, 0x01, 0x03,
+ 0x00, 0x02, 0x02, 0x01, 0x01, 0x03, 0x03, 0x02,
+ 0x03, 0x03, 0x01, 0x01, 0x00, 0x02, 0x01, 0x03
+};
+
+static const ByteProvider kEoB1CgaMappingItemsSDOSProvider = { ARRAYSIZE(kEoB1CgaMappingItemsSDOS), kEoB1CgaMappingItemsSDOS };
+
+static const byte kEoB1CgaMappingThrownDOS[32] = {
+ 0x00, 0x02, 0x02, 0x01, 0x01, 0x03, 0x01, 0x02,
+ 0x02, 0x01, 0x01, 0x01, 0x00, 0x02, 0x02, 0x03,
+ 0x00, 0x02, 0x02, 0x01, 0x01, 0x03, 0x01, 0x02,
+ 0x02, 0x03, 0x01, 0x01, 0x00, 0x00, 0x02, 0x03
+};
+
+static const ByteProvider kEoB1CgaMappingThrownDOSProvider = { ARRAYSIZE(kEoB1CgaMappingThrownDOS), kEoB1CgaMappingThrownDOS };
+
+static const byte kEoB1CgaMappingIconsDOS[32] = {
+ 0x00, 0x02, 0x02, 0x01, 0x03, 0x02, 0x03, 0x01,
+ 0x03, 0x01, 0x01, 0x01, 0x00, 0x02, 0x02, 0x03,
+ 0x00, 0x02, 0x02, 0x01, 0x03, 0x02, 0x03, 0x01,
+ 0x03, 0x03, 0x01, 0x01, 0x00, 0x02, 0x03, 0x03
+};
+
+static const ByteProvider kEoB1CgaMappingIconsDOSProvider = { ARRAYSIZE(kEoB1CgaMappingIconsDOS), kEoB1CgaMappingIconsDOS };
+
+static const byte kEoB1CgaMappingDecoDOS[32] = {
+ 0x00, 0x00, 0x02, 0x00, 0x01, 0x03, 0x01, 0x02,
+ 0x02, 0x03, 0x02, 0x02, 0x00, 0x01, 0x03, 0x03,
+ 0x00, 0x01, 0x02, 0x03, 0x00, 0x03, 0x02, 0x02,
+ 0x00, 0x03, 0x02, 0x03, 0x00, 0x01, 0x03, 0x03
+};
+
+static const ByteProvider kEoB1CgaMappingDecoDOSProvider = { ARRAYSIZE(kEoB1CgaMappingDecoDOS), kEoB1CgaMappingDecoDOS };
+
+static const byte kEoB1CgaLevelMappingIndexDOS[12] = {
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02,
+ 0x02, 0x03, 0x03, 0x04
+};
+
+static const ByteProvider kEoB1CgaLevelMappingIndexDOSProvider = { ARRAYSIZE(kEoB1CgaLevelMappingIndexDOS), kEoB1CgaLevelMappingIndexDOS };
+
+static const byte kEoB1CgaMappingLevel0DOS[32] = {
+ 0x00, 0x00, 0x01, 0x01, 0x02, 0x00, 0x03, 0x03,
+ 0x02, 0x03, 0x02, 0x02, 0x00, 0x03, 0x03, 0x03,
+ 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x03, 0x03,
+ 0x02, 0x03, 0x02, 0x03, 0x00, 0x01, 0x02, 0x03
+};
+
+static const ByteProvider kEoB1CgaMappingLevel0DOSProvider = { ARRAYSIZE(kEoB1CgaMappingLevel0DOS), kEoB1CgaMappingLevel0DOS };
+
+static const byte kEoB1CgaMappingLevel1DOS[32] = {
+ 0x00, 0x00, 0x01, 0x00, 0x01, 0x03, 0x01, 0x02,
+ 0x03, 0x01, 0x02, 0x00, 0x00, 0x02, 0x03, 0x03,
+ 0x00, 0x01, 0x01, 0x03, 0x00, 0x03, 0x01, 0x02,
+ 0x03, 0x01, 0x02, 0x01, 0x00, 0x02, 0x03, 0x03
+};
+
+static const ByteProvider kEoB1CgaMappingLevel1DOSProvider = { ARRAYSIZE(kEoB1CgaMappingLevel1DOS), kEoB1CgaMappingLevel1DOS };
+
+static const byte kEoB1CgaMappingLevel2DOS[32] = {
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x02,
+ 0x02, 0x02, 0x02, 0x02, 0x00, 0x02, 0x03, 0x03,
+ 0x00, 0x01, 0x02, 0x03, 0x00, 0x01, 0x03, 0x02,
+ 0x02, 0x01, 0x02, 0x03, 0x00, 0x00, 0x02, 0x03
+};
+
+static const ByteProvider kEoB1CgaMappingLevel2DOSProvider = { ARRAYSIZE(kEoB1CgaMappingLevel2DOS), kEoB1CgaMappingLevel2DOS };
+
+static const byte kEoB1CgaMappingLevel3DOS[32] = {
+ 0x00, 0x00, 0x01, 0x03, 0x03, 0x01, 0x01, 0x01,
+ 0x02, 0x03, 0x01, 0x01, 0x00, 0x02, 0x02, 0x03,
+ 0x00, 0x01, 0x01, 0x01, 0x03, 0x01, 0x02, 0x03,
+ 0x00, 0x03, 0x01, 0x01, 0x00, 0x02, 0x02, 0x03
+};
+
+static const ByteProvider kEoB1CgaMappingLevel3DOSProvider = { ARRAYSIZE(kEoB1CgaMappingLevel3DOS), kEoB1CgaMappingLevel3DOS };
+
+static const byte kEoB1CgaMappingLevel4DOS[32] = {
+ 0x00, 0x02, 0x00, 0x00, 0x01, 0x01, 0x01, 0x03,
+ 0x02, 0x02, 0x02, 0x02, 0x00, 0x02, 0x01, 0x03,
+ 0x00, 0x02, 0x02, 0x03, 0x00, 0x01, 0x02, 0x03,
+ 0x02, 0x01, 0x02, 0x03, 0x00, 0x02, 0x01, 0x03
+};
+
+static const ByteProvider kEoB1CgaMappingLevel4DOSProvider = { ARRAYSIZE(kEoB1CgaMappingLevel4DOS), kEoB1CgaMappingLevel4DOS };
+
+static const byte kEoB1NpcShpDataDOS[76] = {
+ 0x00, 0x00, 0x06, 0x40, 0x06, 0x00, 0x07, 0x48,
+ 0x0D, 0x00, 0x06, 0x30, 0x13, 0x00, 0x05, 0x38,
+ 0x18, 0x00, 0x05, 0x38, 0x1D, 0x00, 0x05, 0x38,
+ 0x22, 0x00, 0x06, 0x48, 0x00, 0x48, 0x06, 0x56,
+ 0x06, 0x48, 0x05, 0x40, 0x0B, 0x48, 0x05, 0x40,
+ 0x10, 0x48, 0x05, 0x30, 0x06, 0x88, 0x03, 0x18,
+ 0x09, 0x88, 0x03, 0x18, 0x0C, 0x88, 0x03, 0x18,
+ 0x0F, 0x88, 0x03, 0x18, 0x12, 0x88, 0x03, 0x18,
+ 0x15, 0x88, 0x03, 0x18, 0x18, 0x48, 0x06, 0x58,
+ 0x1E, 0x48, 0x0A, 0x48
+};
+
+static const ByteProvider kEoB1NpcShpDataDOSProvider = { ARRAYSIZE(kEoB1NpcShpDataDOS), kEoB1NpcShpDataDOS };
+
+static const byte kEoB1NpcSubShpIndex1DOS[6] = {
+ 0x09, 0x08, 0x08, 0x09, 0x09, 0x0A
+};
+
+static const ByteProvider kEoB1NpcSubShpIndex1DOSProvider = { ARRAYSIZE(kEoB1NpcSubShpIndex1DOS), kEoB1NpcSubShpIndex1DOS };
+
+static const byte kEoB1NpcSubShpIndex2DOS[6] = {
+ 0x0D, 0x0B, 0x0C, 0x0E, 0x0F, 0x10
+};
+
+static const ByteProvider kEoB1NpcSubShpIndex2DOSProvider = { ARRAYSIZE(kEoB1NpcSubShpIndex2DOS), kEoB1NpcSubShpIndex2DOS };
+
+static const byte kEoB1NpcSubShpYDOS[6] = {
+ 0x34, 0x31, 0x31, 0x34, 0x34, 0x45
+};
+
+static const ByteProvider kEoB1NpcSubShpYDOSProvider = { ARRAYSIZE(kEoB1NpcSubShpYDOS), kEoB1NpcSubShpYDOS };
+
+static const char *const kEoB1EnchantedStringDOS[1] = {
+ "%s +%d"
+};
+
+static const StringListProvider kEoB1EnchantedStringDOSProvider = { ARRAYSIZE(kEoB1EnchantedStringDOS), kEoB1EnchantedStringDOS };
+
+static const byte kEoB1SpellLevelsMageDOS[26] = {
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02,
+ 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03,
+ 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x05, 0x05,
+ 0x05, 0x00
+};
+
+static const ByteProvider kEoB1SpellLevelsMageDOSProvider = { ARRAYSIZE(kEoB1SpellLevelsMageDOS), kEoB1SpellLevelsMageDOS };
+
+static const byte kEoB1SpellLevelsClericDOS[25] = {
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02,
+ 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x04, 0x04,
+ 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x05, 0x01,
+ 0x00
+};
+
+static const ByteProvider kEoB1SpellLevelsClericDOSProvider = { ARRAYSIZE(kEoB1SpellLevelsClericDOS), kEoB1SpellLevelsClericDOS };
+
+static const byte kEoB1NumSpellsClericDOS[50] = {
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
+ 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x03,
+ 0x02, 0x00, 0x00, 0x00, 0x03, 0x03, 0x01, 0x00,
+ 0x00, 0x03, 0x03, 0x02, 0x00, 0x00, 0x03, 0x03,
+ 0x02, 0x01, 0x00, 0x03, 0x03, 0x03, 0x02, 0x00,
+ 0x04, 0x04, 0x03, 0x02, 0x01, 0x04, 0x04, 0x03,
+ 0x03, 0x02
+};
+
+static const ByteProvider kEoB1NumSpellsClericDOSProvider = { ARRAYSIZE(kEoB1NumSpellsClericDOS), kEoB1NumSpellsClericDOS };
+
+static const byte kEoB1NumSpellsWisAdjDOS[40] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x02,
+ 0x01, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00,
+ 0x00, 0x02, 0x02, 0x01, 0x00, 0x00, 0x02, 0x02,
+ 0x01, 0x01, 0x00, 0x03, 0x02, 0x01, 0x02, 0x00
+};
+
+static const ByteProvider kEoB1NumSpellsWisAdjDOSProvider = { ARRAYSIZE(kEoB1NumSpellsWisAdjDOS), kEoB1NumSpellsWisAdjDOS };
+
+static const byte kEoB1NumSpellsPalDOS[60] = {
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
+ 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x02,
+ 0x02, 0x00, 0x00, 0x00
+};
+
+static const ByteProvider kEoB1NumSpellsPalDOSProvider = { ARRAYSIZE(kEoB1NumSpellsPalDOS), kEoB1NumSpellsPalDOS };
+
+static const byte kEoB1NumSpellsMageDOS[55] = {
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
+ 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x03,
+ 0x02, 0x00, 0x00, 0x00, 0x04, 0x02, 0x01, 0x00,
+ 0x00, 0x04, 0x02, 0x02, 0x00, 0x00, 0x04, 0x03,
+ 0x02, 0x01, 0x00, 0x04, 0x03, 0x03, 0x02, 0x00,
+ 0x04, 0x03, 0x03, 0x02, 0x01, 0x04, 0x04, 0x03,
+ 0x02, 0x02, 0x04, 0x04, 0x04, 0x03, 0x03
+};
+
+static const ByteProvider kEoB1NumSpellsMageDOSProvider = { ARRAYSIZE(kEoB1NumSpellsMageDOS), kEoB1NumSpellsMageDOS };
+
+static const uint32 kEoB1ExperienceTable0DOS[12] = {
+ 0x00000000, 0x000007D0, 0x00000FA0, 0x00001F40, 0x00003E80, 0x00007D00, 0x0000FA00, 0x0001E848,
+ 0x0003D090, 0x0007A120, 0x000B71B0, 0xFFFFFFFF
+};
+
+static const Uint32Provider kEoB1ExperienceTable0DOSProvider = { ARRAYSIZE(kEoB1ExperienceTable0DOS), kEoB1ExperienceTable0DOS };
+
+static const uint32 kEoB1ExperienceTable1DOS[12] = {
+ 0x00000000, 0x000009C4, 0x00001388, 0x00002710, 0x00004E20, 0x00009C40, 0x0000EA60, 0x00015F90,
+ 0x00020F58, 0x0003D090, 0x0005B8D8, 0xFFFFFFFF
+};
+
+static const Uint32Provider kEoB1ExperienceTable1DOSProvider = { ARRAYSIZE(kEoB1ExperienceTable1DOS), kEoB1ExperienceTable1DOS };
+
+static const uint32 kEoB1ExperienceTable2DOS[11] = {
+ 0x00000000, 0x000005DC, 0x00000BB8, 0x00001770, 0x000032C8, 0x00006B6C, 0x0000D6D8, 0x0001ADB0,
+ 0x00036EE8, 0x0006DDD0, 0xFFFFFFFF
+};
+
+static const Uint32Provider kEoB1ExperienceTable2DOSProvider = { ARRAYSIZE(kEoB1ExperienceTable2DOS), kEoB1ExperienceTable2DOS };
+
+static const uint32 kEoB1ExperienceTable3DOS[12] = {
+ 0x00000000, 0x000004E2, 0x000009C4, 0x00001388, 0x00002710, 0x00004E20, 0x00009C40, 0x00011170,
+ 0x0001ADB0, 0x00027100, 0x00035B60, 0xFFFFFFFF
+};
+
+static const Uint32Provider kEoB1ExperienceTable3DOSProvider = { ARRAYSIZE(kEoB1ExperienceTable3DOS), kEoB1ExperienceTable3DOS };
+
+static const uint32 kEoB1ExperienceTable4DOS[12] = {
+ 0x00000000, 0x000008CA, 0x00001194, 0x00002328, 0x00004650, 0x00008CA0, 0x000124F8, 0x000249F0,
+ 0x000493E0, 0x000927C0, 0x000DBBA0, 0xFFFFFFFF
+};
+
+static const Uint32Provider kEoB1ExperienceTable4DOSProvider = { ARRAYSIZE(kEoB1ExperienceTable4DOS), kEoB1ExperienceTable4DOS };
+
+static const byte kEoB1ExpObjectTblIndexDOS[9] = {
+ 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01,
+ 0x00
+};
+
+static const ByteProvider kEoB1ExpObjectTblIndexDOSProvider = { ARRAYSIZE(kEoB1ExpObjectTblIndexDOS), kEoB1ExpObjectTblIndexDOS };
+
+static const byte kEoB1ExpObjectShpStartDOS[4] = {
+ 0x07, 0x0C, 0x0F, 0x12
+};
+
+static const ByteProvider kEoB1ExpObjectShpStartDOSProvider = { ARRAYSIZE(kEoB1ExpObjectShpStartDOS), kEoB1ExpObjectShpStartDOS };
+
+static const byte kEoB1ExpObjectTbl1DOS[13] = {
+ 0x0F, 0x05, 0x0F, 0x05, 0x06, 0x05, 0x06, 0x08,
+ 0x06, 0x08, 0x06, 0x08, 0x00
+};
+
+static const ByteProvider kEoB1ExpObjectTbl1DOSProvider = { ARRAYSIZE(kEoB1ExpObjectTbl1DOS), kEoB1ExpObjectTbl1DOS };
+
+static const byte kEoB1ExpObjectTbl2DOS[10] = {
+ 0x0F, 0x09, 0x0F, 0x09, 0x02, 0x0A, 0x0B, 0x0A,
+ 0x0B, 0x00
+};
+
+static const ByteProvider kEoB1ExpObjectTbl2DOSProvider = { ARRAYSIZE(kEoB1ExpObjectTbl2DOS), kEoB1ExpObjectTbl2DOS };
+
+static const byte kEoB1ExpObjectTbl3DOS[11] = {
+ 0x05, 0x03, 0x05, 0x03, 0x03, 0x03, 0x03, 0x0B,
+ 0x03, 0x0B, 0x00
+};
+
+static const ByteProvider kEoB1ExpObjectTbl3DOSProvider = { ARRAYSIZE(kEoB1ExpObjectTbl3DOS), kEoB1ExpObjectTbl3DOS };
+
+static const byte kEoB1ExpObjectYDOS[4] = {
+ 0x77, 0x67, 0x4F, 0x3F
+};
+
+static const ByteProvider kEoB1ExpObjectYDOSProvider = { ARRAYSIZE(kEoB1ExpObjectYDOS), kEoB1ExpObjectYDOS };
+
+static const byte kEoB1SparkDefStepsDOS[8] = {
+ 0x40, 0x90, 0xE4, 0xB9, 0x6E, 0x1B, 0x06, 0x01
+};
+
+static const ByteProvider kEoB1SparkDefStepsDOSProvider = { ARRAYSIZE(kEoB1SparkDefStepsDOS), kEoB1SparkDefStepsDOS };
+
+static const byte kEoB1SparkDefSubStepsDOS[4] = {
+ 0xC0, 0x30, 0x0C, 0x03
+};
+
+static const ByteProvider kEoB1SparkDefSubStepsDOSProvider = { ARRAYSIZE(kEoB1SparkDefSubStepsDOS), kEoB1SparkDefSubStepsDOS };
+
+static const byte kEoB1SparkDefShiftDOS[4] = {
+ 0x06, 0x04, 0x02, 0x00
+};
+
+static const ByteProvider kEoB1SparkDefShiftDOSProvider = { ARRAYSIZE(kEoB1SparkDefShiftDOS), kEoB1SparkDefShiftDOS };
+
+static const byte kEoB1SparkDefAddDOS[8] = {
+ 0x08, 0x06, 0x1C, 0x14, 0x0D, 0x18, 0x0D, 0x0F
+};
+
+static const ByteProvider kEoB1SparkDefAddDOSProvider = { ARRAYSIZE(kEoB1SparkDefAddDOS), kEoB1SparkDefAddDOS };
+
+static const byte kEoB1SparkDefXDOS[6] = {
+ 0x17, 0x20, 0x17, 0x20, 0x17, 0x20
+};
+
+static const ByteProvider kEoB1SparkDefXDOSProvider = { ARRAYSIZE(kEoB1SparkDefXDOS), kEoB1SparkDefXDOS };
+
+static const byte kEoB1SparkDefYDOS[6] = {
+ 0x02, 0x02, 0x34, 0x34, 0x66, 0x66
+};
+
+static const ByteProvider kEoB1SparkDefYDOSProvider = { ARRAYSIZE(kEoB1SparkDefYDOS), kEoB1SparkDefYDOS };
+
+static const uint32 kEoB1SparkOfFlags1DOS[11] = {
+ 0x40000000, 0x95000000, 0xEA550000, 0xBFAA5400, 0x6AFFA954, 0x15AAFEA9, 0x0055ABFE, 0x000056AB,
+ 0x00000156, 0x00000001, 0x00000000
+};
+
+static const Uint32Provider kEoB1SparkOfFlags1DOSProvider = { ARRAYSIZE(kEoB1SparkOfFlags1DOS), kEoB1SparkOfFlags1DOS };
+
+static const uint32 kEoB1SparkOfFlags2DOS[16] = {
+ 0xC0000000, 0x30000000, 0x0C000000, 0x03000000, 0x00C00000, 0x00300000, 0x000C0000, 0x00030000,
+ 0x0000C000, 0x00003000, 0x00000C00, 0x00000300, 0x000000C0, 0x00000030, 0x0000000C, 0x00000003
+};
+
+static const Uint32Provider kEoB1SparkOfFlags2DOSProvider = { ARRAYSIZE(kEoB1SparkOfFlags2DOS), kEoB1SparkOfFlags2DOS };
+
+static const byte kEoB1SparkOfShiftDOS[16] = {
+ 0x1E, 0x1C, 0x1A, 0x18, 0x16, 0x14, 0x12, 0x10,
+ 0x0E, 0x0C, 0x0A, 0x08, 0x06, 0x04, 0x02, 0x00
+};
+
+static const ByteProvider kEoB1SparkOfShiftDOSProvider = { ARRAYSIZE(kEoB1SparkOfShiftDOS), kEoB1SparkOfShiftDOS };
+
+static const byte kEoB1SparkOfXDOS[16] = {
+ 0x50, 0x70, 0x30, 0x68, 0x20, 0x60, 0x38, 0x78,
+ 0x80, 0x48, 0x58, 0x28, 0x60, 0x40, 0x70, 0x48
+};
+
+static const ByteProvider kEoB1SparkOfXDOSProvider = { ARRAYSIZE(kEoB1SparkOfXDOS), kEoB1SparkOfXDOS };
+
+static const byte kEoB1SparkOfYDOS[16] = {
+ 0x31, 0x2B, 0x48, 0x17, 0x16, 0x48, 0x35, 0x1B,
+ 0x43, 0x2E, 0x24, 0x28, 0x38, 0x1C, 0x16, 0x44
+};
+
+static const ByteProvider kEoB1SparkOfYDOSProvider = { ARRAYSIZE(kEoB1SparkOfYDOS), kEoB1SparkOfYDOS };
+
+static const byte kEoB1SpellPropertiesDOS[1007] = {
+ 0x4D, 0x2C, 0x2E, 0x21, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x4E, 0x2C, 0x2E, 0x21, 0x01,
+ 0x0B, 0x0F, 0xF3, 0x0E, 0x00, 0x00, 0x00, 0x00,
+ 0x86, 0x0F, 0xF3, 0x0E, 0x5C, 0x00, 0x54, 0x2C,
+ 0x2E, 0x21, 0x00, 0x99, 0x0F, 0xF3, 0x0E, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57,
+ 0x01, 0x62, 0x2C, 0x2E, 0x21, 0x08, 0x69, 0x10,
+ 0xF3, 0x0E, 0x00, 0x00, 0x00, 0x00, 0xAE, 0x10,
+ 0xF3, 0x0E, 0x5F, 0x00, 0x6F, 0x2C, 0x2E, 0x21,
+ 0x00, 0xD2, 0x10, 0xF3, 0x0E, 0xF2, 0x10, 0xF3,
+ 0x0E, 0x00, 0x00, 0x00, 0x00, 0x55, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x7D, 0x2C, 0x2E, 0x21, 0x04, 0x22,
+ 0x11, 0xF3, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x76,
+ 0x11, 0xF3, 0x0E, 0x5C, 0x00, 0x84, 0x2C, 0x2E,
+ 0x21, 0x02, 0x97, 0x11, 0xF3, 0x0E, 0x00, 0x00,
+ 0x00, 0x00, 0x33, 0x12, 0xF3, 0x0E, 0x58, 0x00,
+ 0x93, 0x2C, 0x2E, 0x21, 0x01, 0x7F, 0x12, 0xF3,
+ 0x0E, 0x00, 0x00, 0x00, 0x00, 0xA1, 0x12, 0xF3,
+ 0x0E, 0x5E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x2C,
+ 0x2E, 0x21, 0x00, 0xC2, 0x12, 0xF3, 0x0E, 0xE3,
+ 0x12, 0xF3, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x60,
+ 0x01, 0xB2, 0x2C, 0x2E, 0x21, 0x00, 0x15, 0x13,
+ 0xF3, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0xC1, 0x2C, 0x2E, 0x21,
+ 0x01, 0x1A, 0x13, 0xF3, 0x0E, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0x00, 0xCE,
+ 0x2C, 0x2E, 0x21, 0x00, 0xFD, 0x13, 0xF3, 0x0E,
+ 0x1E, 0x14, 0xF3, 0x0E, 0x00, 0x00, 0x00, 0x00,
+ 0x62, 0x01, 0xD7, 0x2C, 0x2E, 0x21, 0x00, 0x4A,
+ 0x14, 0xF3, 0x0E, 0x6B, 0x14, 0xF3, 0x0E, 0x00,
+ 0x00, 0x00, 0x00, 0x63, 0x01, 0xE3, 0x2C, 0x2E,
+ 0x21, 0x08, 0x97, 0x14, 0xF3, 0x0E, 0x00, 0x00,
+ 0x00, 0x00, 0xF9, 0x14, 0xF3, 0x0E, 0x64, 0x00,
+ 0xE9, 0x2C, 0x2E, 0x21, 0x00, 0x0F, 0x15, 0xF3,
+ 0x0E, 0x30, 0x15, 0xF3, 0x0E, 0x00, 0x00, 0x00,
+ 0x00, 0x65, 0x01, 0xF5, 0x2C, 0x2E, 0x21, 0x08,
+ 0xD0, 0x15, 0xF3, 0x0E, 0x00, 0x00, 0x00, 0x00,
+ 0xA1, 0x12, 0xF3, 0x0E, 0x5E, 0x00, 0x0D, 0x2D,
+ 0x2E, 0x21, 0x00, 0x09, 0x16, 0xF3, 0x0E, 0x2A,
+ 0x16, 0xF3, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x1F,
+ 0x01, 0x1C, 0x2D, 0x2E, 0x21, 0x02, 0x56, 0x16,
+ 0xF3, 0x0E, 0x00, 0x00, 0x00, 0x00, 0xDC, 0x16,
+ 0xF3, 0x0E, 0x66, 0x00, 0x2B, 0x2D, 0x2E, 0x21,
+ 0x00, 0x02, 0x17, 0xF3, 0x0E, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x67, 0x01, 0x30,
+ 0x2D, 0x2E, 0x21, 0x00, 0xB7, 0x17, 0xF3, 0x0E,
+ 0xD8, 0x17, 0xF3, 0x0E, 0x00, 0x00, 0x00, 0x00,
+ 0x59, 0x01, 0x3A, 0x2D, 0x2E, 0x21, 0x01, 0x65,
+ 0x18, 0xF3, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x5D, 0x00, 0x44, 0x2D, 0x2E,
+ 0x21, 0x00, 0xD3, 0x18, 0xF3, 0x0E, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+ 0x4E, 0x2D, 0x2E, 0x21, 0x00, 0xD8, 0x18, 0xF3,
+ 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x76, 0x01, 0x5B, 0x2D, 0x2E, 0x21, 0x00,
+ 0x0F, 0x1A, 0xF3, 0x0E, 0x30, 0x1A, 0xF3, 0x0E,
+ 0x00, 0x00, 0x00, 0x00, 0x65, 0x01, 0x68, 0x2D,
+ 0x2E, 0x21, 0x08, 0xD0, 0x1A, 0xF3, 0x0E, 0x00,
+ 0x00, 0x00, 0x00, 0x13, 0x1B, 0xF3, 0x0E, 0x5B,
+ 0x00, 0x6E, 0x2D, 0x2E, 0x21, 0x01, 0x20, 0x1B,
+ 0xF3, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x68, 0x00, 0x80, 0x2D, 0x2E, 0x21,
+ 0x00, 0x43, 0x1B, 0xF3, 0x0E, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x6B, 0x01, 0x93,
+ 0x2D, 0x2E, 0x21, 0x08, 0x69, 0x10, 0xF3, 0x0E,
+ 0x00, 0x00, 0x00, 0x00, 0xAE, 0x10, 0xF3, 0x0E,
+ 0x5F, 0x00, 0xA0, 0x2D, 0x2E, 0x21, 0x01, 0x5A,
+ 0x1B, 0xF3, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x8D,
+ 0x1B, 0xF3, 0x0E, 0x6E, 0x00, 0xB5, 0x2D, 0x2E,
+ 0x21, 0x01, 0xA3, 0x1B, 0xF3, 0x0E, 0x00, 0x00,
+ 0x00, 0x00, 0x45, 0x1C, 0xF3, 0x0E, 0x5B, 0x00,
+ 0xB9, 0x2D, 0x2E, 0x21, 0x02, 0x38, 0x1D, 0xF3,
+ 0x0E, 0x00, 0x00, 0x00, 0x00, 0x33, 0x12, 0xF3,
+ 0x0E, 0x63, 0x00, 0xC5, 0x2D, 0x2E, 0x21, 0x00,
+ 0x0F, 0x15, 0xF3, 0x0E, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x65, 0x01, 0xD1, 0x2D,
+ 0x2E, 0x21, 0x01, 0x75, 0x1C, 0xF3, 0x0E, 0x00,
+ 0x00, 0x00, 0x00, 0xD2, 0x1C, 0xF3, 0x0E, 0x6F,
+ 0x00, 0xDD, 0x2D, 0x2E, 0x21, 0x08, 0xC0, 0x1D,
+ 0xF3, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x70, 0x00, 0xE9, 0x2D, 0x2E, 0x21,
+ 0x01, 0x1A, 0x13, 0xF3, 0x0E, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0x00, 0xF6,
+ 0x2D, 0x2E, 0x21, 0x04, 0xDF, 0x1D, 0xF3, 0x0E,
+ 0x00, 0x00, 0x00, 0x00, 0x1D, 0x1E, 0xF3, 0x0E,
+ 0x71, 0x00, 0x07, 0x2E, 0x2E, 0x21, 0x08, 0x3E,
+ 0x1E, 0xF3, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x6C,
+ 0x1E, 0xF3, 0x0E, 0x5B, 0x00, 0x0E, 0x2E, 0x2E,
+ 0x21, 0x08, 0x7E, 0x1E, 0xF3, 0x0E, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0x00,
+ 0x1F, 0x2E, 0x2E, 0x21, 0x01, 0xCC, 0x1E, 0xF3,
+ 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x69, 0x00, 0x33, 0x2E, 0x2E, 0x21, 0x00,
+ 0xF3, 0x1E, 0xF3, 0x0E, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x6C, 0x01, 0x48, 0x2E,
+ 0x2E, 0x21, 0x01, 0x0B, 0x1F, 0xF3, 0x0E, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73,
+ 0x00, 0x5A, 0x2E, 0x2E, 0x21, 0x08, 0x33, 0x1F,
+ 0xF3, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x8F, 0x1F,
+ 0xF3, 0x0E, 0x6E, 0x00, 0x7A, 0x2E, 0x2E, 0x21,
+ 0x04, 0xC8, 0x1F, 0xF3, 0x0E, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x00, 0x94,
+ 0x2E, 0x2E, 0x21, 0x01, 0xD2, 0x1F, 0xF3, 0x0E,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x6A, 0x00, 0xA9, 0x2E, 0x2E, 0x21, 0x00, 0xF9,
+ 0x1F, 0xF3, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x6C, 0x01, 0xBF, 0x2E, 0x2E,
+ 0x21, 0x00, 0x11, 0x20, 0xF3, 0x0E, 0x32, 0x20,
+ 0xF3, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x62, 0x01,
+ 0xCC, 0x2E, 0x2E, 0x21, 0x01, 0x50, 0x20, 0xF3,
+ 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x75, 0x00, 0xD7, 0x2E, 0x2E, 0x21, 0x01,
+ 0xBC, 0x21, 0xF3, 0x0E, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0xE4, 0x2E,
+ 0x2E, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8A,
+ 0x20, 0xF3, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x75,
+ 0x00, 0xE5, 0x2E, 0x2E, 0x21, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xA8, 0x20, 0xF3, 0x0E, 0x00, 0x00,
+ 0x00, 0x00, 0x75, 0x00, 0xE6, 0x2E, 0x2E, 0x21,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0x21, 0xF3,
+ 0x0E, 0x00, 0x00, 0x00, 0x00, 0x75, 0x00
+};
+
+static const ByteProvider kEoB1SpellPropertiesDOSProvider = { ARRAYSIZE(kEoB1SpellPropertiesDOS), kEoB1SpellPropertiesDOS };
+
+static const byte kEoB1MagicFlightPropsDOS[96] = {
+ 0x04, 0xFF, 0x41, 0x09, 0x0A, 0xFF, 0x04, 0x05,
+ 0x0D, 0xFF, 0x7A, 0x06, 0x0E, 0xFF, 0x0C, 0x05,
+ 0x10, 0xFF, 0x4A, 0x0A, 0x12, 0x06, 0x38, 0x07,
+ 0x15, 0x06, 0x7A, 0x08, 0x19, 0xFF, 0x4A, 0x0A,
+ 0x2F, 0xFF, 0x4B, 0x06, 0x32, 0xFF, 0x09, 0x07,
+ 0x33, 0xFF, 0x09, 0x0A, 0x34, 0xFF, 0x09, 0x0A,
+ 0x01, 0x01, 0x00, 0x00, 0x03, 0xFD, 0x02, 0xFE,
+ 0x01, 0xFF, 0x00, 0x00, 0x98, 0x00, 0x18, 0x00,
+ 0x78, 0x00, 0x38, 0x00, 0x58, 0x00, 0x40, 0x40,
+ 0x38, 0x38, 0x38, 0x38, 0xE0, 0x20, 0x01, 0xFF,
+ 0x0F, 0x00, 0x09, 0x00, 0x0F, 0x00, 0x09, 0x00,
+ 0x02, 0x00, 0x0A, 0x00, 0x02, 0x00, 0x00, 0x00
+};
+
+static const ByteProvider kEoB1MagicFlightPropsDOSProvider = { ARRAYSIZE(kEoB1MagicFlightPropsDOS), kEoB1MagicFlightPropsDOS };
+
+static const byte kEoB1TurnUndeadEffectDOS[140] = {
+ 0x0A, 0x07, 0x04, 0x00, 0x00, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0D, 0x0A,
+ 0x07, 0x04, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x10, 0x0D, 0x0A, 0x07,
+ 0x04, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x13, 0x10, 0x0D, 0x0A, 0x07, 0x04,
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x14, 0x13, 0x10, 0x0D, 0x0A, 0x07, 0x04, 0x00,
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x63, 0x14,
+ 0x13, 0x10, 0x0D, 0x0A, 0x07, 0x04, 0x00, 0x00,
+ 0x00, 0xFF, 0xFF, 0x00, 0x63, 0x63, 0x14, 0x13,
+ 0x10, 0x0D, 0x0A, 0x07, 0x04, 0x00, 0x00, 0x00,
+ 0x00, 0xFF, 0x63, 0x63, 0x63, 0x14, 0x13, 0x10,
+ 0x0D, 0x0A, 0x07, 0x04, 0x04, 0x00, 0x00, 0x00,
+ 0x63, 0x63, 0x63, 0x63, 0x14, 0x13, 0x10, 0x0D,
+ 0x0A, 0x07, 0x07, 0x04, 0x04, 0x00, 0x63, 0x63,
+ 0x63, 0x63, 0x63, 0x14, 0x13, 0x10, 0x0D, 0x0A,
+ 0x0A, 0x07, 0x07, 0x04
+};
+
+static const ByteProvider kEoB1TurnUndeadEffectDOSProvider = { ARRAYSIZE(kEoB1TurnUndeadEffectDOS), kEoB1TurnUndeadEffectDOS };
+
+static const byte kEoB1BurningHandsDestDOS[8] = {
+ 0x02, 0x03, 0x00, 0x02, 0x00, 0x01, 0x01, 0x03
+};
+
+static const ByteProvider kEoB1BurningHandsDestDOSProvider = { ARRAYSIZE(kEoB1BurningHandsDestDOS), kEoB1BurningHandsDestDOS };
+
+static const byte kEoB1ConeOfColdDest1DOS[7] = {
+ 0xE0, 0xC0, 0xC1, 0xBF, 0xA0, 0x9F, 0xA1
+};
+
+static const ByteProvider kEoB1ConeOfColdDest1DOSProvider = { ARRAYSIZE(kEoB1ConeOfColdDest1DOS), kEoB1ConeOfColdDest1DOS };
+
+static const byte kEoB1ConeOfColdDest2DOS[7] = {
+ 0x01, 0x02, 0xE2, 0x22, 0x03, 0xE3, 0x23
+};
+
+static const ByteProvider kEoB1ConeOfColdDest2DOSProvider = { ARRAYSIZE(kEoB1ConeOfColdDest2DOS), kEoB1ConeOfColdDest2DOS };
+
+static const byte kEoB1ConeOfColdDest3DOS[7] = {
+ 0x20, 0x40, 0x3F, 0x41, 0x60, 0x5F, 0x61
+};
+
+static const ByteProvider kEoB1ConeOfColdDest3DOSProvider = { ARRAYSIZE(kEoB1ConeOfColdDest3DOS), kEoB1ConeOfColdDest3DOS };
+
+static const byte kEoB1ConeOfColdDest4DOS[7] = {
+ 0xFF, 0xFE, 0x1E, 0xDE, 0xFD, 0x1D, 0xDD
+};
+
+static const ByteProvider kEoB1ConeOfColdDest4DOSProvider = { ARRAYSIZE(kEoB1ConeOfColdDest4DOS), kEoB1ConeOfColdDest4DOS };
+
+static const byte kEoB1ConeOfColdGfxTblDOS[8] = {
+ 0x0F, 0x09, 0x0F, 0x09, 0x02, 0x0A, 0x02, 0x00
+};
+
+static const ByteProvider kEoB1ConeOfColdGfxTblDOSProvider = { ARRAYSIZE(kEoB1ConeOfColdGfxTblDOS), kEoB1ConeOfColdGfxTblDOS };
+
+static const byte kEoB1DscDoorShapeIndexDOS[32] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03,
+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03
+};
+
+static const ByteProvider kEoB1DscDoorShapeIndexDOSProvider = { ARRAYSIZE(kEoB1DscDoorShapeIndexDOS), kEoB1DscDoorShapeIndexDOS };
+
+static const byte kEoB1WllFlagPresetDOS[25] = {
+ 0x07, 0x00, 0x40, 0xA8, 0x88, 0x88, 0x88, 0x9F,
+ 0xA8, 0x88, 0x88, 0x88, 0x9F, 0xAA, 0x8A, 0x8A,
+ 0x8A, 0x9F, 0xAA, 0x8A, 0x8A, 0x8A, 0x9F, 0x03,
+ 0x03
+};
+
+static const ByteProvider kEoB1WllFlagPresetDOSProvider = { ARRAYSIZE(kEoB1WllFlagPresetDOS), kEoB1WllFlagPresetDOS };
+
+static const uint16 kEoB1DscShapeCoordsDOS[180] = {
+ 0xFF91, 0xFFC1, 0xFFA1, 0xFFC1, 0xFF75, 0xFFC5, 0xFF8B, 0xFFC5,
+ 0xFF88, 0xFFC3, 0xFFB4, 0xFFC1, 0xFFC4, 0xFFC1, 0xFFA1, 0xFFC5,
+ 0xFFB6, 0xFFC5, 0xFFB0, 0xFFC3, 0xFFD5, 0xFFC1, 0xFFE5, 0xFFC1,
+ 0xFFCB, 0xFFC5, 0xFFE1, 0xFFC5, 0xFFD8, 0xFFC3, 0xFFF8, 0xFFC1,
+ 0x0008, 0xFFC1, 0xFFF6, 0xFFC5, 0x000A, 0xFFC5, 0x0000, 0xFFC3,
+ 0x001B, 0xFFC1, 0x002B, 0xFFC1, 0x001F, 0xFFC5, 0x0035, 0xFFC5,
+ 0x0028, 0xFFC3, 0x003C, 0xFFC1, 0x004C, 0xFFC1, 0x004A, 0xFFC5,
+ 0x005F, 0xFFC5, 0x0050, 0xFFC3, 0x005F, 0xFFC1, 0x006F, 0xFFC1,
+ 0x0075, 0xFFC5, 0x008B, 0xFFC5, 0x0078, 0xFFC3, 0xFF8A, 0xFFCB,
+ 0xFFA4, 0xFFCB, 0xFF68, 0xFFD3, 0xFF88, 0xFFD3, 0xFF8A, 0xFFCE,
+ 0xFFBE, 0xFFCB, 0xFFD8, 0xFFCB, 0xFFAC, 0xFFD3, 0xFFCD, 0xFFD3,
+ 0xFFC5, 0xFFCE, 0xFFF3, 0xFFCB, 0x000D, 0xFFCB, 0xFFF0, 0xFFD3,
+ 0x0010, 0xFFD3, 0x0000, 0xFFCE, 0x0028, 0xFFCB, 0x0042, 0xFFCB,
+ 0x0033, 0xFFD3, 0x0054, 0xFFD3, 0x003B, 0xFFCE, 0x005C, 0xFFCB,
+ 0x0076, 0xFFCB, 0x0078, 0xFFD3, 0x0098, 0xFFD3, 0x0076, 0xFFCE,
+ 0xFF92, 0xFFDD, 0xFFBD, 0xFFDD, 0xFF74, 0xFFEA, 0xFFAD, 0xFFEA,
+ 0xFF9E, 0xFFE2, 0xFFEA, 0xFFDD, 0x0016, 0xFFDD, 0xFFE5, 0xFFEA,
+ 0x001B, 0xFFEA, 0x0000, 0xFFE2, 0x0043, 0xFFDD, 0x006E, 0xFFDD,
+ 0x0053, 0xFFEA, 0x008C, 0xFFEA, 0x0062, 0xFFE2, 0xFF80, 0xFFFC,
+ 0x0080, 0xFFFC, 0xFF80, 0xFFBE, 0x0080, 0xFFBE, 0x0080, 0x0000,
+ 0xFFDA, 0xFFFC, 0x0026, 0xFFFC, 0xFFDA, 0xFFBE, 0x0026, 0xFFBE,
+ 0x0000, 0x0000, 0xFF80, 0xFFFC, 0x0080, 0xFFFC, 0xFF80, 0xFFBE,
+ 0x0080, 0xFFBE, 0x0080, 0x0000
+};
+
+static const Uint16Provider kEoB1DscShapeCoordsDOSProvider = { ARRAYSIZE(kEoB1DscShapeCoordsDOS), kEoB1DscShapeCoordsDOS };
+
+static const byte kEoB1DscDoorScaleOffsDOS[32] = {
+ 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03,
+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x12, 0x12, 0x12, 0x12, 0x12, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x1F
+};
+
+static const ByteProvider kEoB1DscDoorScaleOffsDOSProvider = { ARRAYSIZE(kEoB1DscDoorScaleOffsDOS), kEoB1DscDoorScaleOffsDOS };
+
+static const byte kEoB1DscDoorScaleMult1DOS[4] = {
+ 0x08, 0x0C, 0x12, 0x00
+};
+
+static const ByteProvider kEoB1DscDoorScaleMult1DOSProvider = { ARRAYSIZE(kEoB1DscDoorScaleMult1DOS), kEoB1DscDoorScaleMult1DOS };
+
+static const byte kEoB1DscDoorScaleMult2DOS[4] = {
+ 0x00, 0x02, 0x04, 0x00
+};
+
+static const ByteProvider kEoB1DscDoorScaleMult2DOSProvider = { ARRAYSIZE(kEoB1DscDoorScaleMult2DOS), kEoB1DscDoorScaleMult2DOS };
+
+static const byte kEoB1DscDoorScaleMult3DOS[4] = {
+ 0x04, 0x06, 0x09, 0x00
+};
+
+static const ByteProvider kEoB1DscDoorScaleMult3DOSProvider = { ARRAYSIZE(kEoB1DscDoorScaleMult3DOS), kEoB1DscDoorScaleMult3DOS };
+
+static const byte kEoB1DscDoorScaleMult4DOS[4] = {
+ 0x00, 0x02, 0x04, 0x00
+};
+
+static const ByteProvider kEoB1DscDoorScaleMult4DOSProvider = { ARRAYSIZE(kEoB1DscDoorScaleMult4DOS), kEoB1DscDoorScaleMult4DOS };
+
+static const byte kEoB1DscDoorScaleMult5DOS[4] = {
+ 0x07, 0x0B, 0x0E, 0x00
+};
+
+static const ByteProvider kEoB1DscDoorScaleMult5DOSProvider = { ARRAYSIZE(kEoB1DscDoorScaleMult5DOS), kEoB1DscDoorScaleMult5DOS };
+
+static const byte kEoB1DscDoorScaleMult6DOS[4] = {
+ 0x00, 0x02, 0x04, 0x00
+};
+
+static const ByteProvider kEoB1DscDoorScaleMult6DOSProvider = { ARRAYSIZE(kEoB1DscDoorScaleMult6DOS), kEoB1DscDoorScaleMult6DOS };
+
+static const byte kEoB1DscDoorXEDOS[32] = {
+ 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03,
+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x12, 0x12, 0x12, 0x12, 0x12, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x1F
+};
+
+static const ByteProvider kEoB1DscDoorXEDOSProvider = { ARRAYSIZE(kEoB1DscDoorXEDOS), kEoB1DscDoorXEDOS };
+
+static const byte kEoB1DscDoorY1DOS[4] = {
+ 0x3A, 0x47, 0x56, 0x00
+};
+
+static const ByteProvider kEoB1DscDoorY1DOSProvider = { ARRAYSIZE(kEoB1DscDoorY1DOS), kEoB1DscDoorY1DOS };
+
+static const byte kEoB1DscDoorY3DOS[4] = {
+ 0x20, 0x20, 0x18, 0x00
+};
+
+static const ByteProvider kEoB1DscDoorY3DOSProvider = { ARRAYSIZE(kEoB1DscDoorY3DOS), kEoB1DscDoorY3DOS };
+
+static const byte kEoB1DscDoorY4DOS[4] = {
+ 0x1E, 0x18, 0x10, 0x30
+};
+
+static const ByteProvider kEoB1DscDoorY4DOSProvider = { ARRAYSIZE(kEoB1DscDoorY4DOS), kEoB1DscDoorY4DOS };
+
+static const byte kEoB1DscDoorY5DOS[4] = {
+ 0x30, 0x34, 0x3B, 0x3A
+};
+
+static const ByteProvider kEoB1DscDoorY5DOSProvider = { ARRAYSIZE(kEoB1DscDoorY5DOS), kEoB1DscDoorY5DOS };
+
+static const byte kEoB1DscDoorY6DOS[4] = {
+ 0x3A, 0x45, 0x5A, 0x00
+};
+
+static const ByteProvider kEoB1DscDoorY6DOSProvider = { ARRAYSIZE(kEoB1DscDoorY6DOS), kEoB1DscDoorY6DOS };
+
+static const byte kEoB1DscDoorY7DOS[4] = {
+ 0x3B, 0x47, 0x58, 0x00
+};
+
+static const ByteProvider kEoB1DscDoorY7DOSProvider = { ARRAYSIZE(kEoB1DscDoorY7DOS), kEoB1DscDoorY7DOS };
+
+static const uint16 kEoB1DscDoorCoordsExtDOS[36] = {
+ 0x0000, 0x0000, 0xFFE8, 0x0010, 0x0020, 0x0040, 0x0048, 0x0068,
+ 0x0070, 0x0090, 0x00A0, 0x00C8, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFE8, 0x0030, 0x0038, 0x0078, 0x0080, 0x00C8, 0x0000, 0x0000,
+ 0xFFA8, 0x0020, 0x0028, 0x0088, 0x0090, 0x0108, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000
+};
+
+static const Uint16Provider kEoB1DscDoorCoordsExtDOSProvider = { ARRAYSIZE(kEoB1DscDoorCoordsExtDOS), kEoB1DscDoorCoordsExtDOS };
+
+static const byte kEoB1DscDoorFrameY1DOS[32] = {
+ 0x20, 0x18, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x20, 0x20, 0x18, 0x00, 0x1E, 0x18, 0x10, 0x00,
+ 0x3A, 0x48, 0x60, 0x78, 0x3A, 0x46, 0x56, 0x00,
+ 0x78, 0x78, 0x78, 0x78, 0x1F, 0x18, 0x0F, 0x00
+};
+
+static const ByteProvider kEoB1DscDoorFrameY1DOSProvider = { ARRAYSIZE(kEoB1DscDoorFrameY1DOS), kEoB1DscDoorFrameY1DOS };
+
+static const byte kEoB1DscDoorFrameY2DOS[32] = {
+ 0x20, 0x18, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x20, 0x20, 0x18, 0x00, 0x1E, 0x18, 0x10, 0x00,
+ 0x3A, 0x48, 0x60, 0x78, 0x3A, 0x46, 0x56, 0x00,
+ 0x78, 0x78, 0x78, 0x78, 0x1F, 0x18, 0x0F, 0x00
+};
+
+static const ByteProvider kEoB1DscDoorFrameY2DOSProvider = { ARRAYSIZE(kEoB1DscDoorFrameY2DOS), kEoB1DscDoorFrameY2DOS };
+
+static const byte kEoB1DscDoorFrameIndex1DOS[12] = {
+ 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x08, 0x08,
+ 0x08, 0x0C, 0x0C, 0x1C
+};
+
+static const ByteProvider kEoB1DscDoorFrameIndex1DOSProvider = { ARRAYSIZE(kEoB1DscDoorFrameIndex1DOS), kEoB1DscDoorFrameIndex1DOS };
+
+static const byte kEoB1DscDoorFrameIndex2DOS[12] = {
+ 0x10, 0x10, 0x10, 0x18, 0x18, 0x18, 0x10, 0x10,
+ 0x10, 0x14, 0x14, 0x18
+};
+
+static const ByteProvider kEoB1DscDoorFrameIndex2DOSProvider = { ARRAYSIZE(kEoB1DscDoorFrameIndex2DOS), kEoB1DscDoorFrameIndex2DOS };
+
+static const byte kEoB1DscItemPosIndexDOS[16] = {
+ 0x00, 0x01, 0x02, 0x03, 0x02, 0x00, 0x03, 0x01,
+ 0x03, 0x02, 0x01, 0x00, 0x01, 0x03, 0x00, 0x02
+};
+
+static const ByteProvider kEoB1DscItemPosIndexDOSProvider = { ARRAYSIZE(kEoB1DscItemPosIndexDOS), kEoB1DscItemPosIndexDOS };
+
+static const uint16 kEoB1DscItemShpXDOS[18] = {
+ 0xFFC8, 0xFFF8, 0x0028, 0x0058, 0x0088, 0x00B8, 0x00E8, 0xFFB8,
+ 0x0008, 0x0058, 0x00A8, 0x00F8, 0xFFD8, 0x0058, 0x00D8, 0xFFA8,
+ 0x0058, 0x0108
+};
+
+static const Uint16Provider kEoB1DscItemShpXDOSProvider = { ARRAYSIZE(kEoB1DscItemShpXDOS), kEoB1DscItemShpXDOS };
+
+static const byte kEoB1DscItemScaleIndexDOS[18] = {
+ 0xFF, 0xFF, 0x03, 0x03, 0x02, 0x02, 0x02, 0x02,
+ 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0xFF, 0xFF,
+ 0x25, 0x00
+};
+
+static const ByteProvider kEoB1DscItemScaleIndexDOSProvider = { ARRAYSIZE(kEoB1DscItemScaleIndexDOS), kEoB1DscItemScaleIndexDOS };
+
+static const byte kEoB1DscItemTileIndexDOS[18] = {
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x03, 0xFF, 0xFF, 0xFF, 0x09, 0xFF, 0x0B,
+ 0x0C, 0x0D
+};
+
+static const ByteProvider kEoB1DscItemTileIndexDOSProvider = { ARRAYSIZE(kEoB1DscItemTileIndexDOS), kEoB1DscItemTileIndexDOS };
+
+static const byte kEoB1DscItemShapeMapDOS[90] = {
+ 0x00, 0x00, 0x00, 0x04, 0x01, 0x02, 0x03, 0x04,
+ 0x05, 0x06, 0x07, 0x07, 0x12, 0x06, 0x0F, 0x12,
+ 0x14, 0x17, 0x13, 0x11, 0x15, 0x0D, 0x09, 0x09,
+ 0x16, 0x1F, 0x0C, 0x23, 0x0C, 0x0C, 0x0C, 0x0B,
+ 0x0A, 0x1C, 0x1C, 0x1A, 0x1B, 0x21, 0x1D, 0x1D,
+ 0x22, 0x22, 0x22, 0x00, 0x08, 0x00, 0x25, 0x18,
+ 0x16, 0x17, 0x16, 0x17, 0x16, 0x17, 0x19, 0x23,
+ 0x10, 0x1E, 0x24, 0x18, 0x1C, 0x20, 0x12, 0x21,
+ 0x1E, 0x23, 0x1C, 0x00, 0x20, 0x11, 0x11, 0x0D,
+ 0x1F, 0x09, 0x09, 0x15, 0x15, 0x0F, 0x05, 0x0C,
+ 0x1E, 0x1E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1B,
+ 0x1B, 0x00
+};
+
+static const ByteProvider kEoB1DscItemShapeMapDOSProvider = { ARRAYSIZE(kEoB1DscItemShapeMapDOS), kEoB1DscItemShapeMapDOS };
+
+static const byte kEoB1DscTelptrShpCoordsDOS[156] = {
+ 0x0C, 0x07, 0x1A, 0x01, 0x3E, 0x03, 0x0C, 0x1A,
+ 0x2A, 0x13, 0x40, 0x18, 0x02, 0x2D, 0x16, 0x25,
+ 0x28, 0x32, 0x36, 0x27, 0x0A, 0x3E, 0x16, 0x49,
+ 0x3E, 0x44, 0x06, 0x06, 0x2A, 0x04, 0x37, 0x0A,
+ 0x04, 0x1B, 0x1A, 0x16, 0x37, 0x1D, 0x0E, 0x2A,
+ 0x1B, 0x35, 0x2E, 0x28, 0x42, 0x30, 0x06, 0x47,
+ 0x06, 0x47, 0x2D, 0x4C, 0x0A, 0x04, 0x14, 0x00,
+ 0x2E, 0x01, 0x0C, 0x10, 0x1F, 0x10, 0x2F, 0x10,
+ 0x12, 0x18, 0x28, 0x1D, 0x01, 0x21, 0x08, 0x2A,
+ 0x11, 0x32, 0x2F, 0x2E, 0x1F, 0x25, 0x02, 0x02,
+ 0x01, 0x11, 0x01, 0x2F, 0x08, 0x1E, 0x11, 0x0E,
+ 0x11, 0x26, 0x1C, 0x01, 0x1E, 0x19, 0x1F, 0x33,
+ 0x24, 0x11, 0x26, 0x05, 0x28, 0x2B, 0x2F, 0x22,
+ 0x00, 0x13, 0x05, 0x01, 0x06, 0x08, 0x09, 0x0C,
+ 0x04, 0x1A, 0x08, 0x1F, 0x12, 0x05, 0x12, 0x15,
+ 0x16, 0x10, 0x1A, 0x08, 0x1A, 0x1D, 0x0A, 0x00,
+ 0x0A, 0x00, 0x00, 0x09, 0x00, 0x1E, 0x04, 0x11,
+ 0x08, 0x16, 0x08, 0x06, 0x10, 0x00, 0x11, 0x0D,
+ 0x12, 0x20, 0x15, 0x02, 0x14, 0x09, 0x16, 0x1B,
+ 0x1A, 0x14, 0x1A, 0x14
+};
+
+static const ByteProvider kEoB1DscTelptrShpCoordsDOSProvider = { ARRAYSIZE(kEoB1DscTelptrShpCoordsDOS), kEoB1DscTelptrShpCoordsDOS };
+
+static const byte kEoB1PortalSeqDataDOS[126] = {
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00,
+ 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00,
+ 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00,
+ 0x04, 0x00, 0x03, 0x00, 0x02, 0x00, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
+ 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00,
+ 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04,
+ 0x00, 0x01, 0x01, 0x00, 0x02, 0x01, 0x03, 0x02,
+ 0x02, 0x03, 0x01, 0x04, 0x00, 0x02, 0x01, 0x03,
+ 0x02, 0x04, 0x03, 0x02, 0x04, 0x03, 0x03, 0x04,
+ 0x02, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x03, 0x03,
+ 0x04, 0x04, 0x04, 0x05, 0x04, 0x06, 0x03, 0x07,
+ 0x02, 0x08, 0x02, 0x08, 0x01, 0x09, 0x01, 0x09,
+ 0x01, 0x09, 0x00, 0x0A, 0xFF, 0xFF
+};
+
+static const ByteProvider kEoB1PortalSeqDataDOSProvider = { ARRAYSIZE(kEoB1PortalSeqDataDOS), kEoB1PortalSeqDataDOS };
+
+static const byte kEoB1DscMonsterFrmOffsTbl1DOS[32] = {
+ 0x04, 0xFE, 0x01, 0x03, 0x03, 0x04, 0xFE, 0x01,
+ 0x01, 0x03, 0x04, 0xFE, 0xFE, 0x01, 0x03, 0x04,
+ 0xFC, 0xFD, 0xFF, 0x02, 0x02, 0xFC, 0xFD, 0xFF,
+ 0xFF, 0x02, 0xFC, 0xFD, 0xFD, 0xFF, 0x02, 0xFC
+};
+
+static const ByteProvider kEoB1DscMonsterFrmOffsTbl1DOSProvider = { ARRAYSIZE(kEoB1DscMonsterFrmOffsTbl1DOS), kEoB1DscMonsterFrmOffsTbl1DOS };
+
+static const byte kEoB1DscMonsterFrmOffsTbl2DOS[32] = {
+ 0x04, 0xFE, 0x01, 0x03, 0x03, 0x04, 0xFE, 0x01,
+ 0x01, 0x03, 0x04, 0xFE, 0xFE, 0x01, 0x03, 0x04,
+ 0x04, 0xFD, 0x01, 0x02, 0x02, 0x04, 0xFD, 0x01,
+ 0x01, 0x02, 0x04, 0xFD, 0xFD, 0x01, 0x02, 0x04
+};
+
+static const ByteProvider kEoB1DscMonsterFrmOffsTbl2DOSProvider = { ARRAYSIZE(kEoB1DscMonsterFrmOffsTbl2DOS), kEoB1DscMonsterFrmOffsTbl2DOS };
+
+static const uint16 kEoB1InvSlotXDOS[27] = {
+ 0x00E6, 0x0116, 0x00B5, 0x00C7, 0x00B5, 0x00C7, 0x00B5, 0x00C7,
+ 0x00B5, 0x00C7, 0x00B5, 0x00C7, 0x00B5, 0x00C7, 0x00B5, 0x00C7,
+ 0x00E1, 0x00E0, 0x00E1, 0x012A, 0x011F, 0x0115, 0x012C, 0x012C,
+ 0x012C, 0x00E4, 0x00F0
+};
+
+static const Uint16Provider kEoB1InvSlotXDOSProvider = { ARRAYSIZE(kEoB1InvSlotXDOS), kEoB1InvSlotXDOS };
+
+static const byte kEoB1InvSlotYDOS[27] = {
+ 0x74, 0x74, 0x28, 0x28, 0x3A, 0x3A, 0x4C, 0x4C,
+ 0x5E, 0x5E, 0x70, 0x70, 0x82, 0x82, 0x94, 0x94,
+ 0x38, 0x4C, 0x60, 0x37, 0x4B, 0x89, 0x5E, 0x70,
+ 0x82, 0x88, 0x88
+};
+
+static const ByteProvider kEoB1InvSlotYDOSProvider = { ARRAYSIZE(kEoB1InvSlotYDOS), kEoB1InvSlotYDOS };
+
+static const uint16 kEoB1SlotValidationFlagsDOS[27] = {
+ 0x0008, 0x0008, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
+ 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
+ 0x0001, 0x0002, 0x0004, 0x0020, 0x0040, 0x0010, 0xFFFF, 0x0080,
+ 0x0080, 0x0100, 0x0100
+};
+
+static const Uint16Provider kEoB1SlotValidationFlagsDOSProvider = { ARRAYSIZE(kEoB1SlotValidationFlagsDOS), kEoB1SlotValidationFlagsDOS };
+
+static const byte kEoB1ProjectileWeaponTypesDOS[8] = {
+ 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x12
+};
+
+static const ByteProvider kEoB1ProjectileWeaponTypesDOSProvider = { ARRAYSIZE(kEoB1ProjectileWeaponTypesDOS), kEoB1ProjectileWeaponTypesDOS };
+
+static const byte kEoB1WandTypesDOS[7] = {
+ 0x00, 0x12, 0x18, 0x28, 0x0D, 0xFF, 0x04
+};
+
+static const ByteProvider kEoB1WandTypesDOSProvider = { ARRAYSIZE(kEoB1WandTypesDOS), kEoB1WandTypesDOS };
+
+static const byte kEoB1DrawObjPosIndexDOS[20] = {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x02, 0x00, 0x03,
+ 0x01, 0x04, 0x02, 0x03, 0x00, 0x01, 0x04, 0x01,
+ 0x03, 0x00, 0x02, 0x04
+};
+
+static const ByteProvider kEoB1DrawObjPosIndexDOSProvider = { ARRAYSIZE(kEoB1DrawObjPosIndexDOS), kEoB1DrawObjPosIndexDOS };
+
+static const byte kEoB1FlightObjFlipIndexDOS[16] = {
+ 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01,
+ 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00
+};
+
+static const ByteProvider kEoB1FlightObjFlipIndexDOSProvider = { ARRAYSIZE(kEoB1FlightObjFlipIndexDOS), kEoB1FlightObjFlipIndexDOS };
+
+static const byte kEoB1FlightObjShpMapDOS[88] = {
+ 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01,
+ 0xFF, 0xFF, 0x03, 0xFF, 0x05, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x04, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
+};
+
+static const ByteProvider kEoB1FlightObjShpMapDOSProvider = { ARRAYSIZE(kEoB1FlightObjShpMapDOS), kEoB1FlightObjShpMapDOS };
+
+static const byte kEoB1FlightObjSclIndexDOS[72] = {
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03,
+ 0xFF, 0xFF, 0x03, 0x03, 0xFF, 0xFF, 0x03, 0x03,
+ 0xFF, 0xFF, 0x03, 0x03, 0xFF, 0xFF, 0x03, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+ 0x02, 0x02, 0x02, 0x02, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x01, 0xFF, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x01, 0xFF, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
+};
+
+static const ByteProvider kEoB1FlightObjSclIndexDOSProvider = { ARRAYSIZE(kEoB1FlightObjSclIndexDOS), kEoB1FlightObjSclIndexDOS };
+
+static const byte kEoB1DscShapeIndexDOS[36] = {
+ 0x01, 0x01, 0x04, 0x0A, 0x04, 0x08, 0x04, 0x01,
+ 0x04, 0xF8, 0x04, 0xF6, 0x00, 0x00, 0x03, 0x09,
+ 0x03, 0x07, 0x03, 0x01, 0x03, 0xF9, 0x03, 0xF7,
+ 0x02, 0x06, 0x02, 0x01, 0x02, 0xFA, 0x01, 0x05,
+ 0x01, 0x01, 0x01, 0xFB
+};
+
+static const ByteProvider kEoB1DscShapeIndexDOSProvider = { ARRAYSIZE(kEoB1DscShapeIndexDOS), kEoB1DscShapeIndexDOS };
+
+static const uint16 kEoB1DscXDOS[18] = {
+ 0xFF70, 0xFFA0, 0xFFD0, 0x0000, 0x0030, 0x0060, 0x0090, 0xFF60,
+ 0xFFB0, 0x0000, 0x0050, 0x00A0, 0xFF80, 0x0000, 0x0080, 0x0000,
+ 0x0000, 0x0000
+};
+
+static const Uint16Provider kEoB1DscXDOSProvider = { ARRAYSIZE(kEoB1DscXDOS), kEoB1DscXDOS };
+
+static const byte kEoB1DscTileIndexDOS[18] = {
+ 0x00, 0x06, 0x01, 0x05, 0x02, 0x04, 0x03, 0x07,
+ 0x0B, 0x08, 0x0A, 0x09, 0x0C, 0x0E, 0x0D, 0x0F,
+ 0x11, 0x10
+};
+
+static const ByteProvider kEoB1DscTileIndexDOSProvider = { ARRAYSIZE(kEoB1DscTileIndexDOS), kEoB1DscTileIndexDOS };
+
+static const byte kEoB1DscUnk2DOS[23] = {
+ 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03,
+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x12, 0x12, 0x12, 0x12, 0x12
+};
+
+static const ByteProvider kEoB1DscUnk2DOSProvider = { ARRAYSIZE(kEoB1DscUnk2DOS), kEoB1DscUnk2DOS };
+
+static const byte kEoB1DscDimData1DOS[324] = {
+ 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7,
+ 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7,
+ 0xD8, 0xD7, 0xD8, 0xD8, 0x02, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xFE, 0xD7, 0xD8, 0xD8, 0xD8, 0xD7, 0x03,
+ 0xD8, 0xFD, 0xD8, 0xD8, 0xD8, 0xFE, 0xD8, 0x08,
+ 0xD8, 0xD8, 0xD8, 0xFE, 0xD7, 0x06, 0xD8, 0xD8,
+ 0xFA, 0x03, 0xD8, 0xFD, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xFA, 0xD7,
+ 0x10, 0xD8, 0xFD, 0xD7, 0x13, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xF2, 0xD8, 0x14, 0xD8, 0xD8,
+ 0xD8, 0xF0, 0xD7, 0x14, 0xD8, 0xED, 0x10, 0xD8,
+ 0xD8, 0x13, 0xD8, 0xD8, 0xD8, 0xD8, 0xEC, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD7, 0x14, 0xD8, 0xED,
+ 0xD7, 0xD8, 0xD8, 0x13, 0xD7, 0xD7, 0xD7, 0xD7,
+ 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7,
+ 0xD7, 0xD7, 0xD7, 0xD7, 0xD8, 0xD7, 0xD7, 0xD7,
+ 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7,
+ 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD8, 0xD7,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0x06, 0xD8, 0xD8, 0xFA, 0x03, 0xD8, 0xFD,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xFA, 0xD8, 0x10, 0xD8, 0xFD, 0xD7,
+ 0x13, 0xFD, 0xD8, 0x13, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xF0, 0xD8, 0xD8,
+ 0xD8, 0xED, 0x10, 0xD8, 0xD8, 0x13, 0xD7, 0xD7,
+ 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7,
+ 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD8, 0xD7,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0x03, 0xD8, 0xFD,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xFD, 0xD8,
+ 0x13, 0xFD, 0xD8, 0x13, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xED, 0xD8, 0xD8, 0xD8, 0x13, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8
+};
+
+static const ByteProvider kEoB1DscDimData1DOSProvider = { ARRAYSIZE(kEoB1DscDimData1DOS), kEoB1DscDimData1DOS };
+
+static const byte kEoB1DscDimData2DOS[648] = {
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x00, 0x16, 0x16, 0x00, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x02, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x02, 0x16, 0x00, 0x04, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x16, 0x00, 0x00, 0x03,
+ 0x00, 0x16, 0x03, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x02, 0x16, 0x00, 0x16, 0x00, 0x08,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x02,
+ 0x16, 0x00, 0x00, 0x06, 0x00, 0x16, 0x00, 0x16,
+ 0x06, 0x16, 0x00, 0x03, 0x00, 0x16, 0x03, 0x00,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x06, 0x16, 0x08, 0x0E,
+ 0x00, 0x10, 0x00, 0x16, 0x03, 0x16, 0x06, 0x10,
+ 0x00, 0x13, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x0E, 0x16,
+ 0x00, 0x16, 0x00, 0x14, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x10, 0x16, 0x16, 0x00, 0x00, 0x14,
+ 0x00, 0x16, 0x13, 0x16, 0x00, 0x10, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x13, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x14, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x12, 0x16, 0x14, 0x16, 0x00, 0x16, 0x13, 0x16,
+ 0x16, 0x00, 0x00, 0x16, 0x00, 0x16, 0x00, 0x13,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x00, 0x16, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x00, 0x16, 0x16, 0x00,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x06, 0x00, 0x16, 0x00, 0x16,
+ 0x06, 0x16, 0x00, 0x03, 0x00, 0x16, 0x03, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x06, 0x16, 0x00, 0x16,
+ 0x00, 0x10, 0x00, 0x16, 0x03, 0x16, 0x07, 0x0F,
+ 0x00, 0x13, 0x03, 0x16, 0x00, 0x16, 0x00, 0x13,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x10, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x13, 0x16, 0x00, 0x10, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x13, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x00, 0x16, 0x16, 0x00,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x03, 0x00, 0x16, 0x03, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x03, 0x16, 0x00, 0x16,
+ 0x00, 0x13, 0x03, 0x16, 0x00, 0x16, 0x00, 0x13,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x13, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x13, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16
+};
+
+static const ByteProvider kEoB1DscDimData2DOSProvider = { ARRAYSIZE(kEoB1DscDimData2DOS), kEoB1DscDimData2DOS };
+
+static const byte kEoB1DscBlockMapDOS[12] = {
+ 0x02, 0x03, 0x00, 0x01, 0x01, 0x02, 0x03, 0x00,
+ 0x03, 0x00, 0x01, 0x02
+};
+
+static const ByteProvider kEoB1DscBlockMapDOSProvider = { ARRAYSIZE(kEoB1DscBlockMapDOS), kEoB1DscBlockMapDOS };
+
+static const byte kEoB1DscDimMapDOS[18] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x03,
+ 0x03, 0x03
+};
+
+static const ByteProvider kEoB1DscDimMapDOSProvider = { ARRAYSIZE(kEoB1DscDimMapDOS), kEoB1DscDimMapDOS };
+
+static const byte kEoB1DscBlockIndexDOS[72] = {
+ 0x9D, 0x9E, 0x9F, 0xA0, 0xA1, 0xA2, 0xA3, 0xBE,
+ 0xBF, 0xC0, 0xC1, 0xC2, 0xDF, 0xE0, 0xE1, 0xFF,
+ 0x00, 0x01, 0xA3, 0xC3, 0xE3, 0x03, 0x23, 0x43,
+ 0x63, 0xC2, 0xE2, 0x02, 0x22, 0x42, 0xE1, 0x01,
+ 0x21, 0xE0, 0x00, 0x20, 0x63, 0x62, 0x61, 0x60,
+ 0x5F, 0x5E, 0x5D, 0x42, 0x41, 0x40, 0x3F, 0x3E,
+ 0x21, 0x20, 0x1F, 0x01, 0x00, 0xFF, 0x5D, 0x3D,
+ 0x1D, 0xFD, 0xDD, 0xBD, 0x9D, 0x3E, 0x1E, 0xFE,
+ 0xDE, 0xBE, 0x1F, 0xFF, 0xDF, 0x20, 0x00, 0xE0
+};
+
+static const ByteProvider kEoB1DscBlockIndexDOSProvider = { ARRAYSIZE(kEoB1DscBlockIndexDOS), kEoB1DscBlockIndexDOS };
+
+static const byte kEoB1ClassModifierFlagsDOS[15] = {
+ 0x01, 0x01, 0x05, 0x02, 0x04, 0x08, 0x05, 0x09,
+ 0x03, 0x0B, 0x0A, 0x0C, 0x07, 0x05, 0x06
+};
+
+static const ByteProvider kEoB1ClassModifierFlagsDOSProvider = { ARRAYSIZE(kEoB1ClassModifierFlagsDOS), kEoB1ClassModifierFlagsDOS };
+
+static const byte kEoB1MonsterStepTable01DOS[4] = {
+ 0xE0, 0x01, 0x20, 0xFF
+};
+
+static const ByteProvider kEoB1MonsterStepTable01DOSProvider = { ARRAYSIZE(kEoB1MonsterStepTable01DOS), kEoB1MonsterStepTable01DOS };
+
+static const byte kEoB1MonsterStepTable2DOS[8] = {
+ 0x07, 0xFA, 0x05, 0xFC, 0x03, 0xFE, 0x01, 0x00
+};
+
+static const ByteProvider kEoB1MonsterStepTable2DOSProvider = { ARRAYSIZE(kEoB1MonsterStepTable2DOS), kEoB1MonsterStepTable2DOS };
+
+static const byte kEoB1MonsterStepTable3DOS[8] = {
+ 0xF9, 0x06, 0xFB, 0x04, 0xFD, 0x02, 0xFF, 0x00
+};
+
+static const ByteProvider kEoB1MonsterStepTable3DOSProvider = { ARRAYSIZE(kEoB1MonsterStepTable3DOS), kEoB1MonsterStepTable3DOS };
+
+static const byte kEoB1MonsterCloseAttPosTable1DOS[4] = {
+ 0x00, 0x01, 0x03, 0x02
+};
+
+static const ByteProvider kEoB1MonsterCloseAttPosTable1DOSProvider = { ARRAYSIZE(kEoB1MonsterCloseAttPosTable1DOS), kEoB1MonsterCloseAttPosTable1DOS };
+
+static const byte kEoB1MonsterCloseAttPosTable21DOS[8] = {
+ 0x00, 0x01, 0x02, 0x03, 0x00, 0x02, 0x01, 0x03
+};
+
+static const ByteProvider kEoB1MonsterCloseAttPosTable21DOSProvider = { ARRAYSIZE(kEoB1MonsterCloseAttPosTable21DOS), kEoB1MonsterCloseAttPosTable21DOS };
+
+static const byte kEoB1MonsterCloseAttChkTable1DOS[16] = {
+ 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01,
+ 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00
+};
+
+static const ByteProvider kEoB1MonsterCloseAttChkTable1DOSProvider = { ARRAYSIZE(kEoB1MonsterCloseAttChkTable1DOS), kEoB1MonsterCloseAttChkTable1DOS };
+
+static const byte kEoB1MonsterCloseAttChkTable2DOS[16] = {
+ 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01,
+ 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00
+};
+
+static const ByteProvider kEoB1MonsterCloseAttChkTable2DOSProvider = { ARRAYSIZE(kEoB1MonsterCloseAttChkTable2DOS), kEoB1MonsterCloseAttChkTable2DOS };
+
+static const byte kEoB1MonsterCloseAttDstTable1DOS[16] = {
+ 0x02, 0x03, 0x00, 0x01, 0x01, 0x02, 0x03, 0x00,
+ 0x00, 0x01, 0x02, 0x03, 0x03, 0x00, 0x01, 0x02
+};
+
+static const ByteProvider kEoB1MonsterCloseAttDstTable1DOSProvider = { ARRAYSIZE(kEoB1MonsterCloseAttDstTable1DOS), kEoB1MonsterCloseAttDstTable1DOS };
+
+static const byte kEoB1MonsterCloseAttDstTable2DOS[48] = {
+ 0x01, 0x00, 0x03, 0x02, 0x05, 0x04, 0x00, 0x01,
+ 0x02, 0x03, 0x04, 0x05, 0x05, 0x03, 0x01, 0x04,
+ 0x02, 0x00, 0x01, 0x03, 0x05, 0x00, 0x02, 0x04,
+ 0x04, 0x05, 0x02, 0x03, 0x00, 0x01, 0x05, 0x04,
+ 0x03, 0x02, 0x01, 0x00, 0x00, 0x02, 0x04, 0x01,
+ 0x03, 0x05, 0x04, 0x02, 0x00, 0x05, 0x03, 0x01
+};
+
+static const ByteProvider kEoB1MonsterCloseAttDstTable2DOSProvider = { ARRAYSIZE(kEoB1MonsterCloseAttDstTable2DOS), kEoB1MonsterCloseAttDstTable2DOS };
+
+static const byte kEoB1MonsterProximityTableDOS[32] = {
+ 0x02, 0x03, 0x00, 0x01, 0x03, 0x02, 0x01, 0x00,
+ 0x00, 0x02, 0x01, 0x03, 0x02, 0x00, 0x03, 0x01,
+ 0x01, 0x00, 0x03, 0x02, 0x00, 0x01, 0x02, 0x03,
+ 0x03, 0x01, 0x00, 0x02, 0x01, 0x03, 0x02, 0x00
+};
+
+static const ByteProvider kEoB1MonsterProximityTableDOSProvider = { ARRAYSIZE(kEoB1MonsterProximityTableDOS), kEoB1MonsterProximityTableDOS };
+
+static const byte kEoB1FindBlockMonstersTableDOS[64] = {
+ 0x04, 0x02, 0x01, 0x03, 0x04, 0x03, 0x00, 0x02,
+ 0x04, 0x00, 0x03, 0x01, 0x04, 0x01, 0x02, 0x00,
+ 0x04, 0x01, 0x02, 0x03, 0x04, 0x00, 0x03, 0x02,
+ 0x04, 0x03, 0x00, 0x01, 0x04, 0x02, 0x01, 0x00,
+ 0x04, 0x02, 0x01, 0x03, 0x04, 0x03, 0x00, 0x02,
+ 0x04, 0x00, 0x03, 0x01, 0x04, 0x01, 0x02, 0x00,
+ 0x04, 0x01, 0x02, 0x03, 0x04, 0x00, 0x03, 0x02,
+ 0x04, 0x03, 0x00, 0x01, 0x04, 0x02, 0x01, 0x00
+};
+
+static const ByteProvider kEoB1FindBlockMonstersTableDOSProvider = { ARRAYSIZE(kEoB1FindBlockMonstersTableDOS), kEoB1FindBlockMonstersTableDOS };
+
+static const byte kEoB1MonsterDirChangeTableDOS[48] = {
+ 0xFF, 0x06, 0x02, 0xFF, 0x04, 0x05, 0x03, 0xFF,
+ 0x00, 0x07, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xDF, 0xFF, 0xE0, 0xFF, 0xE1, 0xFF, 0xFF, 0xFF,
+ 0x01, 0x00, 0x1F, 0x00, 0x20, 0x00, 0x21, 0x00,
+ 0xC0, 0xFF, 0xA0, 0xFF, 0x02, 0x00, 0x03, 0x00,
+ 0x40, 0x00, 0x60, 0x00, 0xFE, 0xFF, 0xFD, 0xFF
+};
+
+static const ByteProvider kEoB1MonsterDirChangeTableDOSProvider = { ARRAYSIZE(kEoB1MonsterDirChangeTableDOS), kEoB1MonsterDirChangeTableDOS };
+
+static const uint16 kEoB1EncodeMonsterDefsDOS[168] = {
+ 0x0000, 0x0000, 0x0007, 0x0060, 0x0007, 0x0028, 0x000C, 0x0038,
+ 0x0013, 0x0028, 0x000C, 0x0038, 0x001F, 0x0000, 0x0007, 0x0060,
+ 0x0000, 0x0060, 0x0007, 0x0060, 0x0007, 0x0060, 0x0007, 0x0060,
+ 0x000E, 0x0060, 0x0005, 0x0038, 0x0007, 0x0000, 0x0007, 0x0028,
+ 0x000E, 0x0000, 0x0007, 0x0028, 0x0013, 0x0060, 0x0005, 0x0038,
+ 0x0018, 0x0060, 0x0005, 0x0038, 0x001D, 0x0060, 0x0005, 0x0038,
+ 0x000E, 0x0098, 0x0003, 0x0020, 0x0011, 0x00A0, 0x0004, 0x0018,
+ 0x0015, 0x00A0, 0x0004, 0x0018, 0x0019, 0x0098, 0x0003, 0x0020,
+ 0x001C, 0x0098, 0x0003, 0x0020, 0x001F, 0x0098, 0x0003, 0x0020,
+ 0x0000, 0x0000, 0x0007, 0x0060, 0x0007, 0x0000, 0x0007, 0x0060,
+ 0x000E, 0x0000, 0x0007, 0x0060, 0x0015, 0x0000, 0x0007, 0x0060,
+ 0x001C, 0x0000, 0x0007, 0x0060, 0x0000, 0x0060, 0x0007, 0x0060,
+ 0x0007, 0x0060, 0x0005, 0x0038, 0x000C, 0x0060, 0x0005, 0x0038,
+ 0x0011, 0x0060, 0x0005, 0x0038, 0x0016, 0x0060, 0x0005, 0x0038,
+ 0x001B, 0x0060, 0x0005, 0x0038, 0x0020, 0x0060, 0x0005, 0x0038,
+ 0x0007, 0x0098, 0x0003, 0x0020, 0x000A, 0x0098, 0x0003, 0x0020,
+ 0x000D, 0x0098, 0x0003, 0x0020, 0x0010, 0x0098, 0x0003, 0x0020,
+ 0x0013, 0x0098, 0x0003, 0x0020, 0x0016, 0x0098, 0x0003, 0x0020,
+ 0x0000, 0x0000, 0x000A, 0x0058, 0x000A, 0x0000, 0x000A, 0x0058,
+ 0x0014, 0x0000, 0x000A, 0x0058, 0x001E, 0x0000, 0x000A, 0x0058,
+ 0x0000, 0x0058, 0x000A, 0x0058, 0x000A, 0x0058, 0x000A, 0x0058
+};
+
+static const Uint16Provider kEoB1EncodeMonsterDefsDOSProvider = { ARRAYSIZE(kEoB1EncodeMonsterDefsDOS), kEoB1EncodeMonsterDefsDOS };
+
+static const EoBCharacter kEoB1NpcPresetsDOS[9] = {
+ { 0x00, 0x01, "Anya",
+ 18, 18, 59, 59, 5, 5, 11, 11, 14, 14, 16, 16, 9, 9,
+ 45, 45, 10, 0, 1, 0, 2, -1, 100, { 4, 0, 0 },
+ { 0x00001F40, 0x00000000, 0x00000000 }, 0x00000000,
+ { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000 } },
+ { 0x00, 0x01, "Beohram",
+ 17, 17, 0, 0, 9, 9, 15, 15, 13, 13, 18, 18, 17, 17,
+ 55, 55, 10, 0, 0, 0, 0, -2, 100, { 7, 0, 0 },
+ { 0x000130B0, 0x00000000, 0x00000000 }, 0x00000000,
+ { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000 } },
+ { 0x00, 0x01, "Kirath",
+ 11, 11, 0, 0, 17, 17, 13, 13, 18, 18, 8, 8, 12, 12,
+ 20, 20, 10, 0, 4, 3, 4, -3, 100, { 7, 0, 0 },
+ { 0x00011170, 0x00000000, 0x00000000 }, 0x00B3126B,
+ { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000 } },
+ { 0x00, 0x01, "Ileria",
+ 10, 10, 0, 0, 12, 12, 9, 9, 15, 15, 17, 17, 17, 17,
+ 52, 52, 10, 0, 4, 4, 0, -4, 100, { 6, 0, 0 },
+ { 0x00004E20, 0x00000000, 0x00000000 }, 0xFFFFFFFF,
+ { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000 } },
+ { 0x00, 0x01, "Tyrra",
+ 16, 16, 0, 0, 14, 14, 16, 16, 18, 18, 17, 17, 7, 7,
+ 45, 45, 10, 0, 1, 1, 2, -5, 100, { 6, 0, 0 },
+ { 0x0000CF08, 0x00000000, 0x00000000 }, 0x00000000,
+ { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000 } },
+ { 0x00, 0x01, "Tod Uphill",
+ 17, 17, 0, 0, 11, 11, 14, 14, 19, 19, 18, 18, 16, 16,
+ 32, 32, 10, 0, 10, 5, 5, -6, 100, { 5, 0, 0 },
+ { 0x00002D3F, 0x00000000, 0x00000000 }, 0x00000000,
+ { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000 } },
+ { 0x00, 0x01, "Taghor",
+ 17, 17, 0, 0, 11, 11, 15, 15, 15, 15, 19, 19, 9, 9,
+ 3, 45, 3, 0, 6, 0, 1, -7, 25, { 5, 0, 0 },
+ { 0x00003F6A, 0x00000000, 0x00000000 }, 0x00000000,
+ { 0x0024, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0029, 0x0000, 0x002B, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000 } },
+ { 0x00, 0x01, "Dohrum",
+ 18, 18, 29, 29, 13, 13, 11, 11, 16, 16, 17, 17, 14, 14,
+ 28, 28, 10, 0, 6, 0, 0, -8, 100, { 3, 0, 0 },
+ { 0x000013A0, 0x00000000, 0x00000000 }, 0x00000000,
+ { 0x0024, 0x0000, 0x0030, 0x0037, 0x0037, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0029, 0x0000, 0x002B, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000 } },
+ { 0x00, 0x01, "Keirgar",
+ 18, 18, 92, 92, 15, 15, 15, 15, 12, 12, 19, 19, 17, 17,
+ 3, 45, 3, 0, 6, 0, 1, -9, 25, { 5, 0, 0 },
+ { 0x00001F40, 0x00000000, 0x00000000 }, 0x00000000,
+ { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000 } }
+};
+
+static const EoBCharacterProvider kEoB1NpcPresetsDOSProvider = { ARRAYSIZE(kEoB1NpcPresetsDOS), kEoB1NpcPresetsDOS };
+
diff --git a/devtools/create_kyradat/resources/eob1_dos_english.h b/devtools/create_kyradat/resources/eob1_dos_english.h
new file mode 100644
index 0000000000..8a9dfebc8f
--- /dev/null
+++ b/devtools/create_kyradat/resources/eob1_dos_english.h
@@ -0,0 +1,891 @@
+static const char *const kEoB1ChargenStrings1DOSEnglish[9] = {
+ "Your party is\rcomplete. Select\rthe PLAY button\ror press 'P' to\rstart the game.",
+ " ",
+ "AC\rHP\rLVL",
+ "%s\r%d\r%d\r%d\r%d\r%d",
+ "%d\r%d",
+ "%d",
+ "%d/%d",
+ "%d/%d/%d",
+ "Select the box of\rthe character you\rwish to create or\rview."
+};
+
+static const StringListProvider kEoB1ChargenStrings1DOSEnglishProvider = { ARRAYSIZE(kEoB1ChargenStrings1DOSEnglish), kEoB1ChargenStrings1DOSEnglish };
+
+static const char *const kEoB1ChargenStrings2DOSEnglish[12] = {
+ "%s",
+ "%d",
+ "%s",
+ "%d",
+ "%d",
+ "%d",
+ "%s",
+ "%d",
+ "SELECT RACE:",
+ "SELECT CLASS:",
+ "SELECT ALIGNMENT:",
+ "Name:"
+};
+
+static const StringListProvider kEoB1ChargenStrings2DOSEnglishProvider = { ARRAYSIZE(kEoB1ChargenStrings2DOSEnglish), kEoB1ChargenStrings2DOSEnglish };
+
+static const char *const kEoB1ChargenStatStringsDOSEnglish[12] = {
+ "STR",
+ "INT",
+ "WIS",
+ "DEX",
+ "CON",
+ "CHA",
+ "STRENGTH",
+ "INTELLIGENCE",
+ "WISDOM",
+ "DEXTERITY",
+ "CONSTITUTION",
+ "CHARISMA"
+};
+
+static const StringListProvider kEoB1ChargenStatStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1ChargenStatStringsDOSEnglish), kEoB1ChargenStatStringsDOSEnglish };
+
+static const char *const kEoB1ChargenRaceSexStringsDOSEnglish[12] = {
+ "HUMAN MALE",
+ "HUMAN FEMALE",
+ "ELF MALE",
+ "ELF FEMALE",
+ "HALF-ELF MALE",
+ "HALF-ELF FEMALE",
+ "DWARF MALE",
+ "DWARF FEMALE",
+ "GNOME MALE",
+ "GNOME FEMALE",
+ "HALFLING MALE",
+ "HALFLING FEMALE"
+};
+
+static const StringListProvider kEoB1ChargenRaceSexStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1ChargenRaceSexStringsDOSEnglish), kEoB1ChargenRaceSexStringsDOSEnglish };
+
+static const char *const kEoB1ChargenClassStringsDOSEnglish[21] = {
+ "FIGHTER",
+ "RANGER",
+ "PALADIN",
+ "MAGE",
+ "CLERIC",
+ "THIEF",
+ "FIGHTER/CLERIC",
+ "FIGHTER/THIEF",
+ "FIGHTER/MAGE",
+ "FIGHTER/MAGE/THIEF",
+ "THIEF/MAGE",
+ "CLERIC/THIEF",
+ "FIGHTER/CLERIC/MAGE",
+ "RANGER/CLERIC",
+ "CLERIC/MAGE",
+ "FIGHTER",
+ "MAGE",
+ "CLERIC",
+ "THIEF",
+ "PALADIN",
+ "RANGER"
+};
+
+static const StringListProvider kEoB1ChargenClassStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1ChargenClassStringsDOSEnglish), kEoB1ChargenClassStringsDOSEnglish };
+
+static const char *const kEoB1ChargenAlignmentStringsDOSEnglish[9] = {
+ "LAWFUL GOOD",
+ "NEUTRAL GOOD",
+ "CHAOTIC GOOD",
+ "LAWFUL NEUTRAL",
+ "TRUE NEUTRAL",
+ "CHAOTIC NEUTRAL",
+ "LAWFUL EVIL",
+ "NEUTRAL EVIL",
+ "CHAOTIC EVIL"
+};
+
+static const StringListProvider kEoB1ChargenAlignmentStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1ChargenAlignmentStringsDOSEnglish), kEoB1ChargenAlignmentStringsDOSEnglish };
+
+static const char *const kEoB1ChargenEnterGameStringsDOSEnglish[1] = {
+ " Entering game.\r Please wait."
+};
+
+static const StringListProvider kEoB1ChargenEnterGameStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1ChargenEnterGameStringsDOSEnglish), kEoB1ChargenEnterGameStringsDOSEnglish };
+
+static const char *const kEoB1MainMenuStringsDOSEnglish[3] = {
+ "LOAD GAME IN PROGRESS\r",
+ "START A NEW PARTY\r",
+ "EXIT TO DOS\r"
+};
+
+static const StringListProvider kEoB1MainMenuStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1MainMenuStringsDOSEnglish), kEoB1MainMenuStringsDOSEnglish };
+
+static const char *const kEoB1BonusStringsDOSEnglish[3] = {
+ "Congratulations on completing all 12 Beholder Bonuses.\r\rThe names of the character in your winning Beholder Bonus party are:\r\r",
+ "\r",
+ "\r\rPassword: %04x\r"
+};
+
+static const StringListProvider kEoB1BonusStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1BonusStringsDOSEnglish), kEoB1BonusStringsDOSEnglish };
+
+static const char *const kEoB1TurnUndeadStringDOSEnglish[1] = {
+ "\x06\x06""%s uses the power to turn undead!""\x06\x0F""\r"
+};
+
+static const StringListProvider kEoB1TurnUndeadStringDOSEnglishProvider = { ARRAYSIZE(kEoB1TurnUndeadStringDOSEnglish), kEoB1TurnUndeadStringDOSEnglish };
+
+static const char *const kEoB1Npc0StringsDOSEnglish[2] = {
+ "\r I wish you luck in your travels.",
+ "Which should be resurrected?"
+};
+
+static const StringListProvider kEoB1Npc0StringsDOSEnglishProvider = { ARRAYSIZE(kEoB1Npc0StringsDOSEnglish), kEoB1Npc0StringsDOSEnglish };
+
+static const char *const kEoB1Npc11StringsDOSEnglish[3] = {
+ "Tend his wounds",
+ "Talk",
+ "Leave"
+};
+
+static const StringListProvider kEoB1Npc11StringsDOSEnglishProvider = { ARRAYSIZE(kEoB1Npc11StringsDOSEnglish), kEoB1Npc11StringsDOSEnglish };
+
+static const char *const kEoB1Npc12StringsDOSEnglish[2] = {
+ "Tend his wounds",
+ "Leave"
+};
+
+static const StringListProvider kEoB1Npc12StringsDOSEnglishProvider = { ARRAYSIZE(kEoB1Npc12StringsDOSEnglish), kEoB1Npc12StringsDOSEnglish };
+
+static const char *const kEoB1Npc21StringsDOSEnglish[2] = {
+ "Hear proposal",
+ "Leave"
+};
+
+static const StringListProvider kEoB1Npc21StringsDOSEnglishProvider = { ARRAYSIZE(kEoB1Npc21StringsDOSEnglish), kEoB1Npc21StringsDOSEnglish };
+
+static const char *const kEoB1Npc22StringsDOSEnglish[2] = {
+ "Help him",
+ "Leave"
+};
+
+static const StringListProvider kEoB1Npc22StringsDOSEnglishProvider = { ARRAYSIZE(kEoB1Npc22StringsDOSEnglish), kEoB1Npc22StringsDOSEnglish };
+
+static const char *const kEoB1Npc31StringsDOSEnglish[2] = {
+ "Heal Party",
+ "Leave"
+};
+
+static const StringListProvider kEoB1Npc31StringsDOSEnglishProvider = { ARRAYSIZE(kEoB1Npc31StringsDOSEnglish), kEoB1Npc31StringsDOSEnglish };
+
+static const char *const kEoB1Npc32StringsDOSEnglish[3] = {
+ "Heal Party",
+ "Resurrect Dead",
+ "Leave"
+};
+
+static const StringListProvider kEoB1Npc32StringsDOSEnglishProvider = { ARRAYSIZE(kEoB1Npc32StringsDOSEnglish), kEoB1Npc32StringsDOSEnglish };
+
+static const char *const kEoB1Npc4StringsDOSEnglish[2] = {
+ "Attack",
+ "Bribe"
+};
+
+static const StringListProvider kEoB1Npc4StringsDOSEnglishProvider = { ARRAYSIZE(kEoB1Npc4StringsDOSEnglish), kEoB1Npc4StringsDOSEnglish };
+
+static const char *const kEoB1Npc5StringsDOSEnglish[3] = {
+ "Kill her",
+ "Hear her out",
+ "Let her go"
+};
+
+static const StringListProvider kEoB1Npc5StringsDOSEnglishProvider = { ARRAYSIZE(kEoB1Npc5StringsDOSEnglish), kEoB1Npc5StringsDOSEnglish };
+
+static const char *const kEoB1Npc6StringsDOSEnglish[2] = {
+ "Surrender",
+ "Attack"
+};
+
+static const StringListProvider kEoB1Npc6StringsDOSEnglishProvider = { ARRAYSIZE(kEoB1Npc6StringsDOSEnglish), kEoB1Npc6StringsDOSEnglish };
+
+static const char *const kEoB1Npc7StringsDOSEnglish[3] = {
+ "Free Him",
+ "Kill Him",
+ "Leave"
+};
+
+static const StringListProvider kEoB1Npc7StringsDOSEnglishProvider = { ARRAYSIZE(kEoB1Npc7StringsDOSEnglish), kEoB1Npc7StringsDOSEnglish };
+
+static const char *const kEoB1PryDoorStringsDOSEnglish[7] = {
+ "Nobody is able to force the door.\r",
+ "The party forces the door.\r",
+ "%s forces the door!\r",
+ "The party tries to force the door and fails.\r",
+ "You can't put that item there.\r",
+ "The item is too large to fit.\r",
+ "No one is able to pry this door open.\r"
+};
+
+static const StringListProvider kEoB1PryDoorStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1PryDoorStringsDOSEnglish), kEoB1PryDoorStringsDOSEnglish };
+
+static const char *const kEoB1WarningStringsDOSEnglish[3] = {
+ "You can't go that way.\r",
+ "%s isn't capable of eating food!\r",
+ "You may only eat food!\r"
+};
+
+static const StringListProvider kEoB1WarningStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1WarningStringsDOSEnglish), kEoB1WarningStringsDOSEnglish };
+
+static const char *const kEoB1ItemSuffixStringsRingsDOSEnglish[4] = {
+ "Adornment",
+ "Wizardry",
+ "Sustenance",
+ "Feather Fall"
+};
+
+static const StringListProvider kEoB1ItemSuffixStringsRingsDOSEnglishProvider = { ARRAYSIZE(kEoB1ItemSuffixStringsRingsDOSEnglish), kEoB1ItemSuffixStringsRingsDOSEnglish };
+
+static const char *const kEoB1ItemSuffixStringsPotionsDOSEnglish[8] = {
+ "Giant Strength",
+ "Healing",
+ "Extra Healing",
+ "Poison",
+ "Vitality",
+ "Speed",
+ "Invisibility",
+ "Cure Poison"
+};
+
+static const StringListProvider kEoB1ItemSuffixStringsPotionsDOSEnglishProvider = { ARRAYSIZE(kEoB1ItemSuffixStringsPotionsDOSEnglish), kEoB1ItemSuffixStringsPotionsDOSEnglish };
+
+static const char *const kEoB1ItemSuffixStringsWandsDOSEnglish[7] = {
+ "Stick",
+ "Lightning",
+ "Frost",
+ "Curing",
+ "Fireball",
+ "Silvias",
+ "Magic Missile"
+};
+
+static const StringListProvider kEoB1ItemSuffixStringsWandsDOSEnglishProvider = { ARRAYSIZE(kEoB1ItemSuffixStringsWandsDOSEnglish), kEoB1ItemSuffixStringsWandsDOSEnglish };
+
+static const char *const kEoB1RipItemStringsDOSEnglish[3] = {
+ "%s has lost her ",
+ "%s has lost his ",
+ ".\r"
+};
+
+static const StringListProvider kEoB1RipItemStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1RipItemStringsDOSEnglish), kEoB1RipItemStringsDOSEnglish };
+
+static const char *const kEoB1CursedStringDOSEnglish[1] = {
+ "Cursed %s %d"
+};
+
+static const StringListProvider kEoB1CursedStringDOSEnglishProvider = { ARRAYSIZE(kEoB1CursedStringDOSEnglish), kEoB1CursedStringDOSEnglish };
+
+static const char *const kEoB1MagicObjectStringsDOSEnglish[5] = {
+ "Mage Scroll",
+ "Cleric Scroll",
+ "Ring",
+ "Potion",
+ "Wand"
+};
+
+static const StringListProvider kEoB1MagicObjectStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1MagicObjectStringsDOSEnglish), kEoB1MagicObjectStringsDOSEnglish };
+
+static const char *const kEoB1MagicObjectString5DOSEnglish[1] = {
+ "Stick"
+};
+
+static const StringListProvider kEoB1MagicObjectString5DOSEnglishProvider = { ARRAYSIZE(kEoB1MagicObjectString5DOSEnglish), kEoB1MagicObjectString5DOSEnglish };
+
+static const char *const kEoB1PatternSuffixDOSEnglish[1] = {
+ "%s of %s"
+};
+
+static const StringListProvider kEoB1PatternSuffixDOSEnglishProvider = { ARRAYSIZE(kEoB1PatternSuffixDOSEnglish), kEoB1PatternSuffixDOSEnglish };
+
+static const char *const kEoB1PatternGrFix1DOSEnglish[1] = {
+ "%s of %s"
+};
+
+static const StringListProvider kEoB1PatternGrFix1DOSEnglishProvider = { ARRAYSIZE(kEoB1PatternGrFix1DOSEnglish), kEoB1PatternGrFix1DOSEnglish };
+
+static const char *const kEoB1PatternGrFix2DOSEnglish[1] = {
+ "%s of %s"
+};
+
+static const StringListProvider kEoB1PatternGrFix2DOSEnglishProvider = { ARRAYSIZE(kEoB1PatternGrFix2DOSEnglish), kEoB1PatternGrFix2DOSEnglish };
+
+static const char *const kEoB1ValidateArmorStringDOSEnglish[1] = {
+ "%s can't wear that type of armor.\r"
+};
+
+static const StringListProvider kEoB1ValidateArmorStringDOSEnglishProvider = { ARRAYSIZE(kEoB1ValidateArmorStringDOSEnglish), kEoB1ValidateArmorStringDOSEnglish };
+
+static const char *const kEoB1ValidateNoDropStringDOSEnglish[1] = {
+ "You cant put that item there.\r"
+};
+
+static const StringListProvider kEoB1ValidateNoDropStringDOSEnglishProvider = { ARRAYSIZE(kEoB1ValidateNoDropStringDOSEnglish), kEoB1ValidateNoDropStringDOSEnglish };
+
+static const char *const kEoB1PotionStringsDOSEnglish[2] = {
+ "poisoned",
+ "%s feels %s!\r"
+};
+
+static const StringListProvider kEoB1PotionStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1PotionStringsDOSEnglish), kEoB1PotionStringsDOSEnglish };
+
+static const char *const kEoB1WandStringsDOSEnglish[2] = {
+ "The wand has no apparent magical effect\r",
+ "no effect.\r"
+};
+
+static const StringListProvider kEoB1WandStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1WandStringsDOSEnglish), kEoB1WandStringsDOSEnglish };
+
+static const char *const kEoB1ItemMisuseStringsDOSEnglish[3] = {
+ " can not use this item.\r",
+ "This item automatically used when worn.\r",
+ "This item is not used in this way.\r"
+};
+
+static const StringListProvider kEoB1ItemMisuseStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1ItemMisuseStringsDOSEnglish), kEoB1ItemMisuseStringsDOSEnglish };
+
+static const char *const kEoB1TakenStringsDOSEnglish[1] = {
+ " taken.\r"
+};
+
+static const StringListProvider kEoB1TakenStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1TakenStringsDOSEnglish), kEoB1TakenStringsDOSEnglish };
+
+static const char *const kEoB1PotionEffectStringsDOSEnglish[8] = {
+ "much stronger",
+ "better",
+ "much better",
+ "ill for a moment",
+ "no longer hungry",
+ "fast and agile",
+ "transparent",
+ "better"
+};
+
+static const StringListProvider kEoB1PotionEffectStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1PotionEffectStringsDOSEnglish), kEoB1PotionEffectStringsDOSEnglish };
+
+static const char *const kEoB1YesNoStringsDOSEnglish[2] = {
+ "yes",
+ "no"
+};
+
+static const StringListProvider kEoB1YesNoStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1YesNoStringsDOSEnglish), kEoB1YesNoStringsDOSEnglish };
+
+static const char *const kEoB1MoreStringsDOSEnglish[1] = {
+ "MORE"
+};
+
+static const StringListProvider kEoB1MoreStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1MoreStringsDOSEnglish), kEoB1MoreStringsDOSEnglish };
+
+static const char *const kEoB1NpcMaxStringsDOSEnglish[1] = {
+ "You may only have six characters in your party. Select the one you wish to drop."
+};
+
+static const StringListProvider kEoB1NpcMaxStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1NpcMaxStringsDOSEnglish), kEoB1NpcMaxStringsDOSEnglish };
+
+static const char *const kEoB1NpcJoinStringsDOSEnglish[1] = {
+ "%s joins the party.\r"
+};
+
+static const StringListProvider kEoB1NpcJoinStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1NpcJoinStringsDOSEnglish), kEoB1NpcJoinStringsDOSEnglish };
+
+static const char *const kEoB1CancelStringsDOSEnglish[1] = {
+ "CANCEL"
+};
+
+static const StringListProvider kEoB1CancelStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1CancelStringsDOSEnglish), kEoB1CancelStringsDOSEnglish };
+
+static const char *const kEoB1MenuStringsMainDOSEnglish[8] = {
+ "Select Option:",
+ "Rest Party",
+ "Memorize Spells",
+ "Pray for Spells",
+ "Scribe Scrolls",
+ "Preferences",
+ "Game Options",
+ "Exit"
+};
+
+static const StringListProvider kEoB1MenuStringsMainDOSEnglishProvider = { ARRAYSIZE(kEoB1MenuStringsMainDOSEnglish), kEoB1MenuStringsMainDOSEnglish };
+
+static const char *const kEoB1MenuStringsSaveLoadDOSEnglish[8] = {
+ "Load Game",
+ "Save Game",
+ "Drop Character",
+ "Quit Game",
+ "Game Options:",
+ "\r Game saved.",
+ "\r Save game\r failure!",
+ "\r Load game\r failure!"
+};
+
+static const StringListProvider kEoB1MenuStringsSaveLoadDOSEnglishProvider = { ARRAYSIZE(kEoB1MenuStringsSaveLoadDOSEnglish), kEoB1MenuStringsSaveLoadDOSEnglish };
+
+static const char *const kEoB1MenuStringsOnOffDOSEnglish[2] = {
+ "ON",
+ "OFF"
+};
+
+static const StringListProvider kEoB1MenuStringsOnOffDOSEnglishProvider = { ARRAYSIZE(kEoB1MenuStringsOnOffDOSEnglish), kEoB1MenuStringsOnOffDOSEnglish };
+
+static const char *const kEoB1MenuStringsSpellsDOSEnglish[17] = {
+ "\r\r Select a character\r from your party who\r would like to learn\r spells.",
+ "\r Your Paladin is \r too low a level\r for spells.",
+ "\r\r The Mage has no\r Spell Book!",
+ "\r\r\r Select a character\r from your party\r who would like to\r pray for spells.",
+ "\r You don't have\r any Cleric able\r to pray in your\r party.",
+ "\r You don't have\r any Mage able to\r learn spells.",
+ " An unconscious\r or dead Mage\r cannot memorize\r spells.",
+ " An unconscious\r or dead Cleric\r cannot pray for\r spells.",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "Clear",
+ "Spells Available:",
+ "Yes",
+ "No"
+};
+
+static const StringListProvider kEoB1MenuStringsSpellsDOSEnglishProvider = { ARRAYSIZE(kEoB1MenuStringsSpellsDOSEnglish), kEoB1MenuStringsSpellsDOSEnglish };
+
+static const char *const kEoB1MenuStringsRestDOSEnglish[5] = {
+ "\rWill your healers\rheal the party?",
+ " Someone is still\r injured. Rest\r until healed?",
+ "Resting party.",
+ "\r All characters\r are fully\r rested.",
+ " Your party needs\r to rest to gain\r spells."
+};
+
+static const StringListProvider kEoB1MenuStringsRestDOSEnglishProvider = { ARRAYSIZE(kEoB1MenuStringsRestDOSEnglish), kEoB1MenuStringsRestDOSEnglish };
+
+static const char *const kEoB1MenuStringsDropDOSEnglish[1] = {
+ " You cannot have\r less than four\r characters."
+};
+
+static const StringListProvider kEoB1MenuStringsDropDOSEnglishProvider = { ARRAYSIZE(kEoB1MenuStringsDropDOSEnglish), kEoB1MenuStringsDropDOSEnglish };
+
+static const char *const kEoB1MenuStringsExitDOSEnglish[1] = {
+ " Are you sure you\r wish to exit the\r game?"
+};
+
+static const StringListProvider kEoB1MenuStringsExitDOSEnglishProvider = { ARRAYSIZE(kEoB1MenuStringsExitDOSEnglish), kEoB1MenuStringsExitDOSEnglish };
+
+static const char *const kEoB1MenuStringsStarveDOSEnglish[1] = {
+ " Your party is\r starving. Do you\r wish to continue\r resting?"
+};
+
+static const StringListProvider kEoB1MenuStringsStarveDOSEnglishProvider = { ARRAYSIZE(kEoB1MenuStringsStarveDOSEnglish), kEoB1MenuStringsStarveDOSEnglish };
+
+static const char *const kEoB1MenuStringsScribeDOSEnglish[5] = {
+ "Select the scroll(s)\ryou wish to scribe.",
+ "\r\r\r Select a Mage\r from your party\r who would like to\r scribe spells.",
+ " You don't have\r any scolls to be\r scribed.",
+ " You don't have\r any scrolls that\r this Mage needs.",
+ "\r You don't have\r any Mage able to\r scribe scrolls."
+};
+
+static const StringListProvider kEoB1MenuStringsScribeDOSEnglishProvider = { ARRAYSIZE(kEoB1MenuStringsScribeDOSEnglish), kEoB1MenuStringsScribeDOSEnglish };
+
+static const char *const kEoB1MenuStringsDrop2DOSEnglish[3] = {
+ " Select the\r character you\r wish to drop.",
+ " Are you sure you\r wish to SAVE the\r game?",
+ " Are you sure you\r wish to LOAD a\r saved game?"
+};
+
+static const StringListProvider kEoB1MenuStringsDrop2DOSEnglishProvider = { ARRAYSIZE(kEoB1MenuStringsDrop2DOSEnglish), kEoB1MenuStringsDrop2DOSEnglish };
+
+static const char *const kEoB1MenuStringsHeadDOSEnglish[3] = {
+ "Camp:",
+ "Preferences:",
+ "Game Options:"
+};
+
+static const StringListProvider kEoB1MenuStringsHeadDOSEnglishProvider = { ARRAYSIZE(kEoB1MenuStringsHeadDOSEnglish), kEoB1MenuStringsHeadDOSEnglish };
+
+static const char *const kEoB1MenuStringsPoisonDOSEnglish[1] = {
+ "Poisoned party\rmembers will die!\rRest anyway?"
+};
+
+static const StringListProvider kEoB1MenuStringsPoisonDOSEnglishProvider = { ARRAYSIZE(kEoB1MenuStringsPoisonDOSEnglish), kEoB1MenuStringsPoisonDOSEnglish };
+
+static const char *const kEoB1MenuStringsMgcDOSEnglish[2] = {
+ "%-18s %1d",
+ "%d of %d Remaining. "
+};
+
+static const StringListProvider kEoB1MenuStringsMgcDOSEnglishProvider = { ARRAYSIZE(kEoB1MenuStringsMgcDOSEnglish), kEoB1MenuStringsMgcDOSEnglish };
+
+static const char *const kEoB1MenuStringsPrefsDOSEnglish[4] = {
+ "Tunes are %-3s",
+ "Sounds are %-3s",
+ "Bar Graphs are %-3s",
+ "Mouse is %-3s"
+};
+
+static const StringListProvider kEoB1MenuStringsPrefsDOSEnglishProvider = { ARRAYSIZE(kEoB1MenuStringsPrefsDOSEnglish), kEoB1MenuStringsPrefsDOSEnglish };
+
+static const char *const kEoB1MenuStringsRest2DOSEnglish[4] = {
+ "%s gained %s.\r",
+ "%s memorized %s.\r",
+ "%s casts healing on %s.\r",
+ "Hours rested: %-4d"
+};
+
+static const StringListProvider kEoB1MenuStringsRest2DOSEnglishProvider = { ARRAYSIZE(kEoB1MenuStringsRest2DOSEnglish), kEoB1MenuStringsRest2DOSEnglish };
+
+static const char *const kEoB1MenuStringsRest4DOSEnglish[1] = {
+ "\rYou can't rest here, monsters are near."
+};
+
+static const StringListProvider kEoB1MenuStringsRest4DOSEnglishProvider = { ARRAYSIZE(kEoB1MenuStringsRest4DOSEnglish), kEoB1MenuStringsRest4DOSEnglish };
+
+static const char *const kEoB1MenuStringsDefeatDOSEnglish[1] = {
+ "All of your party has been defeated. The minions of evil will be able to carry out their plans unhindered!\r"
+};
+
+static const StringListProvider kEoB1MenuStringsDefeatDOSEnglishProvider = { ARRAYSIZE(kEoB1MenuStringsDefeatDOSEnglish), kEoB1MenuStringsDefeatDOSEnglish };
+
+static const char *const kEoB1MenuYesNoStringsDOSEnglish[2] = {
+ "Yes",
+ "No"
+};
+
+static const StringListProvider kEoB1MenuYesNoStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1MenuYesNoStringsDOSEnglish), kEoB1MenuYesNoStringsDOSEnglish };
+
+static const char *const kEoB1CharGuiStringsHpDOSEnglish[2] = {
+ "HP",
+ "%3d of %-3d"
+};
+
+static const StringListProvider kEoB1CharGuiStringsHpDOSEnglishProvider = { ARRAYSIZE(kEoB1CharGuiStringsHpDOSEnglish), kEoB1CharGuiStringsHpDOSEnglish };
+
+static const char *const kEoB1CharGuiStringsWp1DOSEnglish[2] = {
+ "MISS",
+ "HACK"
+};
+
+static const StringListProvider kEoB1CharGuiStringsWp1DOSEnglishProvider = { ARRAYSIZE(kEoB1CharGuiStringsWp1DOSEnglish), kEoB1CharGuiStringsWp1DOSEnglish };
+
+static const char *const kEoB1CharGuiStringsWrDOSEnglish[4] = {
+ "CAN'T",
+ "REACH",
+ "NO",
+ "AMMO"
+};
+
+static const StringListProvider kEoB1CharGuiStringsWrDOSEnglishProvider = { ARRAYSIZE(kEoB1CharGuiStringsWrDOSEnglish), kEoB1CharGuiStringsWrDOSEnglish };
+
+static const char *const kEoB1CharGuiStringsSt1DOSEnglish[6] = {
+ "Swapping",
+ "DEAD",
+ "UNCONSCIOUS",
+ "POISON (SLOW)",
+ "POISONED",
+ "PARALYZED"
+};
+
+static const StringListProvider kEoB1CharGuiStringsSt1DOSEnglishProvider = { ARRAYSIZE(kEoB1CharGuiStringsSt1DOSEnglish), kEoB1CharGuiStringsSt1DOSEnglish };
+
+static const char *const kEoB1CharGuiStringsInDOSEnglish[4] = {
+ "CHARACTER INFO",
+ "ARMOR CLASS",
+ "EXP",
+ "LVL"
+};
+
+static const StringListProvider kEoB1CharGuiStringsInDOSEnglishProvider = { ARRAYSIZE(kEoB1CharGuiStringsInDOSEnglish), kEoB1CharGuiStringsInDOSEnglish };
+
+static const char *const kEoB1CharStatusStrings7DOSEnglish[1] = {
+ "%s no longer has giant strength.\r"
+};
+
+static const StringListProvider kEoB1CharStatusStrings7DOSEnglishProvider = { ARRAYSIZE(kEoB1CharStatusStrings7DOSEnglish), kEoB1CharStatusStrings7DOSEnglish };
+
+static const char *const kEoB1CharStatusStrings81DOSEnglish[1] = {
+ "%s feels the effects of poison!\r"
+};
+
+static const StringListProvider kEoB1CharStatusStrings81DOSEnglishProvider = { ARRAYSIZE(kEoB1CharStatusStrings81DOSEnglish), kEoB1CharStatusStrings81DOSEnglish };
+
+static const char *const kEoB1CharStatusStrings9DOSEnglish[1] = {
+ "%s is no longer paralyzed!\r"
+};
+
+static const StringListProvider kEoB1CharStatusStrings9DOSEnglishProvider = { ARRAYSIZE(kEoB1CharStatusStrings9DOSEnglish), kEoB1CharStatusStrings9DOSEnglish };
+
+static const char *const kEoB1CharStatusStrings131DOSEnglish[1] = {
+ "%s is %s!\r"
+};
+
+static const StringListProvider kEoB1CharStatusStrings131DOSEnglishProvider = { ARRAYSIZE(kEoB1CharStatusStrings131DOSEnglish), kEoB1CharStatusStrings131DOSEnglish };
+
+static const char *const kEoB1LevelGainStringsDOSEnglish[1] = {
+ "\x06\x01""%s has gained a level of experience.""\x06\x0F""\r"
+};
+
+static const StringListProvider kEoB1LevelGainStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1LevelGainStringsDOSEnglish), kEoB1LevelGainStringsDOSEnglish };
+
+static const char *const kEoB1BookNumbersDOSEnglish[5] = {
+ "First",
+ "Second",
+ "Third",
+ "Fourth",
+ "Fifth"
+};
+
+static const StringListProvider kEoB1BookNumbersDOSEnglishProvider = { ARRAYSIZE(kEoB1BookNumbersDOSEnglish), kEoB1BookNumbersDOSEnglish };
+
+static const char *const kEoB1MageSpellsListDOSEnglish[26] = {
+ "",
+ "Armor",
+ "Burning Hands",
+ "Detect Magic",
+ "Magic Missile",
+ "Read Magic",
+ "Shield",
+ "Shocking Grasp",
+ "Invisibility",
+ "Knock",
+ "M's Acid Arrow",
+ "Stinking Cloud",
+ "Dispel Magic",
+ "Fireball",
+ "Flame Arrow",
+ "Haste",
+ "Hold Person",
+ "Invisibility 10'",
+ "Lightning Bolt",
+ "Vampiric Touch",
+ "Fear",
+ "Ice Storm",
+ "Stoneskin",
+ "Cloudkill",
+ "Cone of Cold",
+ "Hold Monster"
+};
+
+static const StringListProvider kEoB1MageSpellsListDOSEnglishProvider = { ARRAYSIZE(kEoB1MageSpellsListDOSEnglish), kEoB1MageSpellsListDOSEnglish };
+
+static const char *const kEoB1ClericSpellsListDOSEnglish[25] = {
+ "",
+ "Bless",
+ "Cure Light Wnds",
+ "Cause Light Wnds",
+ "Detect Magic",
+ "Protect-Evil",
+ "Aid",
+ "Flame Blade",
+ "Hold Person",
+ "Slow Poison",
+ "Create Food",
+ "Dispel Magic",
+ "Magical Vestment",
+ "Prayer",
+ "Remove Paralysis",
+ "Cure Serious",
+ "Cause Serious",
+ "Neutral-Poison",
+ "Protect-Evil 10'",
+ "Protect-Lightning",
+ "Cure Critical",
+ "Cause Critical",
+ "Flame Strike",
+ "Raise Dead",
+ "Lay on Hands"
+};
+
+static const StringListProvider kEoB1ClericSpellsListDOSEnglishProvider = { ARRAYSIZE(kEoB1ClericSpellsListDOSEnglish), kEoB1ClericSpellsListDOSEnglish };
+
+static const char *const kEoB1SpellNamesDOSEnglish[51] = {
+ "",
+ "armor",
+ "burning hands",
+ "detect magic",
+ "magic missile",
+ "shield",
+ "shocking grasp",
+ "invisibility",
+ "melf's acid arrow",
+ "stinking cloud",
+ "dispel magic",
+ "fireball",
+ "flame arrow",
+ "haste",
+ "hold person",
+ "invisibility 10' radius",
+ "lightning bolt",
+ "vampiric touch",
+ "fear",
+ "ice storm",
+ "stoneskin",
+ "cloudkill",
+ "cone of cold",
+ "hold monster",
+ "bless",
+ "cure light wounds",
+ "cause light wounds",
+ "detect magic",
+ "protection from evil",
+ "aid",
+ "flame blade",
+ "hold person",
+ "slow poison",
+ "create food",
+ "dispel magic",
+ "magical vestment",
+ "prayer",
+ "remove paralysis",
+ "cure serious wounds",
+ "cause serious wounds",
+ "neutralize poison",
+ "protection from evil 10' radius",
+ "protection from lightning",
+ "cure critical wounds",
+ "cause critical wounds",
+ "flame strike",
+ "raise dead",
+ "lay on hands",
+ "",
+ "",
+ ""
+};
+
+static const StringListProvider kEoB1SpellNamesDOSEnglishProvider = { ARRAYSIZE(kEoB1SpellNamesDOSEnglish), kEoB1SpellNamesDOSEnglish };
+
+static const char *const kEoB1MagicStrings1DOSEnglish[6] = {
+ "ABORT SPELL",
+ "ABORT SPELL",
+ "You must have a free hand for this spell.\r",
+ "You can't have two of this spell type active.\r",
+ "%s casts %s.\r",
+ "ok\r"
+};
+
+static const StringListProvider kEoB1MagicStrings1DOSEnglishProvider = { ARRAYSIZE(kEoB1MagicStrings1DOSEnglish), kEoB1MagicStrings1DOSEnglish };
+
+static const char *const kEoB1MagicStrings2DOSEnglish[3] = {
+ "no effect\r",
+ "%s has been disintegrated!\r",
+ "The party has been hit by a death spell!\r"
+};
+
+static const StringListProvider kEoB1MagicStrings2DOSEnglishProvider = { ARRAYSIZE(kEoB1MagicStrings2DOSEnglish), kEoB1MagicStrings2DOSEnglish };
+
+static const char *const kEoB1MagicStrings3DOSEnglish[6] = {
+ "Cast spell on which character? ",
+ "\rok\r",
+ "\rSpell aborted.\r",
+ "%s's %s spell expires.\r",
+ "%s missed the monster.\r",
+ "%s must be in the front ranks to hit!\r"
+};
+
+static const StringListProvider kEoB1MagicStrings3DOSEnglishProvider = { ARRAYSIZE(kEoB1MagicStrings3DOSEnglish), kEoB1MagicStrings3DOSEnglish };
+
+static const char *const kEoB1MagicStrings4DOSEnglish[1] = {
+ "no effect.\r"
+};
+
+static const StringListProvider kEoB1MagicStrings4DOSEnglishProvider = { ARRAYSIZE(kEoB1MagicStrings4DOSEnglish), kEoB1MagicStrings4DOSEnglish };
+
+static const char *const kEoB1MagicStrings6DOSEnglish[1] = {
+ "%s already has a high base armor class.\r"
+};
+
+static const StringListProvider kEoB1MagicStrings6DOSEnglishProvider = { ARRAYSIZE(kEoB1MagicStrings6DOSEnglish), kEoB1MagicStrings6DOSEnglish };
+
+static const char *const kEoB1MagicStrings7DOSEnglish[5] = {
+ "1ST",
+ "2ND",
+ "3RD",
+ "4TH",
+ "5TH"
+};
+
+static const StringListProvider kEoB1MagicStrings7DOSEnglishProvider = { ARRAYSIZE(kEoB1MagicStrings7DOSEnglish), kEoB1MagicStrings7DOSEnglish };
+
+static const char *const kEoB1MagicStrings8DOSEnglish[3] = {
+ "All spells on %s are dispelled.\r",
+ "The party is already blessed!\r",
+ "The aid spell fails!\r"
+};
+
+static const StringListProvider kEoB1MagicStrings8DOSEnglishProvider = { ARRAYSIZE(kEoB1MagicStrings8DOSEnglish), kEoB1MagicStrings8DOSEnglish };
+
+static const byte kEoB1ManDefDOSEnglish[120] = {
+ 0x09, 0x0A, 0x02, 0x00, 0x09, 0x04, 0x03, 0x00,
+ 0x09, 0x06, 0x06, 0x00, 0x09, 0x03, 0x03, 0x00,
+ 0x09, 0x04, 0x02, 0x00, 0x09, 0x01, 0x02, 0x00,
+ 0x09, 0x05, 0x01, 0x00, 0x09, 0x09, 0x02, 0x00,
+ 0x09, 0x06, 0x02, 0x00, 0x23, 0x01, 0x05, 0x00,
+ 0x23, 0x02, 0x02, 0x00, 0x23, 0x03, 0x06, 0x00,
+ 0x23, 0x05, 0x01, 0x00, 0x23, 0x06, 0x03, 0x00,
+ 0x23, 0x07, 0x01, 0x00, 0x1A, 0x01, 0x01, 0x00,
+ 0x1A, 0x03, 0x02, 0x00, 0x1A, 0x06, 0x01, 0x00,
+ 0x24, 0x01, 0x03, 0x00, 0x24, 0x03, 0x04, 0x00,
+ 0x24, 0x03, 0x01, 0x00, 0x02, 0x04, 0x03, 0x00,
+ 0x02, 0x03, 0x03, 0x00, 0x02, 0x05, 0x03, 0x00,
+ 0x01, 0x01, 0x01, 0x00, 0x01, 0x05, 0x03, 0x00,
+ 0x01, 0x04, 0x03, 0x00, 0x0C, 0x02, 0x01, 0x00,
+ 0x0C, 0x03, 0x03, 0x00, 0x0C, 0x04, 0x02, 0x00
+};
+
+static const ByteProvider kEoB1ManDefDOSEnglishProvider = { ARRAYSIZE(kEoB1ManDefDOSEnglish), kEoB1ManDefDOSEnglish };
+
+static const char *const kEoB1ManWordDOSEnglish[31] = {
+ "attacks",
+ "short",
+ "line",
+ "weapons",
+ "certain",
+ "rank",
+ "rear",
+ "can",
+ "away",
+ "dungeon",
+ "cursor",
+ "feature",
+ "information",
+ "displayed",
+ "below",
+ "around",
+ "carefree",
+ "gnomes",
+ "clerics",
+ "mystic",
+ "pummel",
+ "fitness",
+ "using",
+ "toughness",
+ "wealth",
+ "wizard",
+ "officials",
+ "hound",
+ "disturbing",
+ "flaming",
+ ""
+};
+
+static const StringListProvider kEoB1ManWordDOSEnglishProvider = { ARRAYSIZE(kEoB1ManWordDOSEnglish), kEoB1ManWordDOSEnglish };
+
+static const char *const kEoB1ManPromptDOSEnglish[1] = {
+ "\r\r\r\rOn the page with this symbol...\r\rFind line %d\rEnter word %d\r"
+};
+
+static const StringListProvider kEoB1ManPromptDOSEnglishProvider = { ARRAYSIZE(kEoB1ManPromptDOSEnglish), kEoB1ManPromptDOSEnglish };
+
+static const char *const kEoB1MonsterDistAttStringsDOSEnglish[5] = {
+ "%s is hit by a cause serious wounds spell!\r",
+ "The party is hit with a psychic mind blast!\r",
+ "paralyzed",
+ "poisoned",
+ "paralyzed"
+};
+
+static const StringListProvider kEoB1MonsterDistAttStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1MonsterDistAttStringsDOSEnglish), kEoB1MonsterDistAttStringsDOSEnglish };
+
diff --git a/devtools/create_kyradat/resources/eob1_dos_german.h b/devtools/create_kyradat/resources/eob1_dos_german.h
new file mode 100644
index 0000000000..ba2e4876c8
--- /dev/null
+++ b/devtools/create_kyradat/resources/eob1_dos_german.h
@@ -0,0 +1,893 @@
+static const char *const kEoB1ChargenStrings1DOSGerman[9] = {
+ "Ihr Team ist\rkomplett. SPIEL-\rKnopf oder 'P'\rdruecken, um zu\rbeginnen.",
+ " ",
+ "RK\rHP\rEBN",
+ "%s\r%d\r%d\r%d\r%d\r%d",
+ "%d\r%d",
+ "%d",
+ "%d/%d",
+ "%d/%d/%d",
+ "Waehle das Feld\rdes Charakters\rzum erstellen oder\ranschauen."
+};
+
+static const StringListProvider kEoB1ChargenStrings1DOSGermanProvider = { ARRAYSIZE(kEoB1ChargenStrings1DOSGerman), kEoB1ChargenStrings1DOSGerman };
+
+static const char *const kEoB1ChargenStrings2DOSGerman[12] = {
+ "%s",
+ "%d",
+ "%s",
+ "%d",
+ "%d",
+ "%d",
+ "%s",
+ "%d",
+ "WAEHLE RASSE:",
+ "WAEHLE KLASSE:",
+ "GESINNUNG WAEHLEN:",
+ "Name:"
+};
+
+static const StringListProvider kEoB1ChargenStrings2DOSGermanProvider = { ARRAYSIZE(kEoB1ChargenStrings2DOSGerman), kEoB1ChargenStrings2DOSGerman };
+
+static const char *const kEoB1ChargenStatStringsDOSGerman[12] = {
+ "STR",
+ "INT",
+ "WEI",
+ "GEW",
+ "KON",
+ "CHA",
+ "STAERKE",
+ "INTELLIGENZ",
+ "WEISHEIT",
+ "GEWANDHEIT",
+ "KONSTITUTION",
+ "CHARISMA"
+};
+
+static const StringListProvider kEoB1ChargenStatStringsDOSGermanProvider = { ARRAYSIZE(kEoB1ChargenStatStringsDOSGerman), kEoB1ChargenStatStringsDOSGerman };
+
+static const char *const kEoB1ChargenRaceSexStringsDOSGerman[12] = {
+ "MENSCH MAENNL.",
+ "MENSCH WEIBL.",
+ "ELF MAENNL.",
+ "ELF WEIBL.",
+ "HALB-ELF MAENNL.",
+ "HALB-ELF WEIBL.",
+ "ZWERG MAENNL.",
+ "ZWERG WEIBL.",
+ "GNOM MAENNL.",
+ "GNOM WEIBL.",
+ "HALBLING MAENNL.",
+ "HALBLING WEIBL."
+};
+
+static const StringListProvider kEoB1ChargenRaceSexStringsDOSGermanProvider = { ARRAYSIZE(kEoB1ChargenRaceSexStringsDOSGerman), kEoB1ChargenRaceSexStringsDOSGerman };
+
+static const char *const kEoB1ChargenClassStringsDOSGerman[21] = {
+ "KAEMPFER",
+ "WALDLAEUFER",
+ "PALADIN",
+ "MAGIER",
+ "KLERIKER",
+ "DIEB",
+ "KAEMPFER/KLERIKER",
+ "KAEMPFER/DIEB",
+ "KAEMPFER/MAGIER",
+ "KAEMPF./MAGIER/DIEB",
+ "DIEB/MAGIER",
+ "KLERIKER/DIEB",
+ "KAEMPF./KLE./MAGIER",
+ "WALDLAEUF./KLERIKER",
+ "KLERIKER/MAGIER",
+ "KAEMPFER",
+ "MAGIER",
+ "KLERIKER",
+ "DIEB",
+ "PALADIN",
+ "WALDLAEUFER"
+};
+
+static const StringListProvider kEoB1ChargenClassStringsDOSGermanProvider = { ARRAYSIZE(kEoB1ChargenClassStringsDOSGerman), kEoB1ChargenClassStringsDOSGerman };
+
+static const char *const kEoB1ChargenAlignmentStringsDOSGerman[9] = {
+ "RECHTSCH. GUT",
+ "NEUTRAL GUT",
+ "CHAOTISCH GUT",
+ "RECHTSCH. NEUTRAL",
+ "ABSOLUT NEUTRAL",
+ "CHAOTISCH NEUTRAL",
+ "RECHTSCH. BOESE",
+ "NEUTRAL BOESE",
+ "CHAOTISCH BOESE"
+};
+
+static const StringListProvider kEoB1ChargenAlignmentStringsDOSGermanProvider = { ARRAYSIZE(kEoB1ChargenAlignmentStringsDOSGerman), kEoB1ChargenAlignmentStringsDOSGerman };
+
+static const char *const kEoB1ChargenEnterGameStringsDOSGerman[1] = {
+ " Spiel startet.\r Bitte warten."
+};
+
+static const StringListProvider kEoB1ChargenEnterGameStringsDOSGermanProvider = { ARRAYSIZE(kEoB1ChargenEnterGameStringsDOSGerman), kEoB1ChargenEnterGameStringsDOSGerman };
+
+static const char *const kEoB1MainMenuStringsDOSGerman[3] = {
+ "ALTES SPIEL LADEN\r",
+ "NEUES TEAM AUFBAUEN\r",
+ "ENDE > DOS\r"
+};
+
+static const StringListProvider kEoB1MainMenuStringsDOSGermanProvider = { ARRAYSIZE(kEoB1MainMenuStringsDOSGerman), kEoB1MainMenuStringsDOSGerman };
+
+static const char *const kEoB1BonusStringsDOSGerman[3] = {
+ "Herzlichen Glueckwunsch fuer das Auffinden aller 12 Beholder-Boni.\r\rDie beteiligten Charaktere des gluecklichen Teams waren:\r\r",
+ "\r",
+ "\r\rPasswort: %04x\r"
+};
+
+static const StringListProvider kEoB1BonusStringsDOSGermanProvider = { ARRAYSIZE(kEoB1BonusStringsDOSGerman), kEoB1BonusStringsDOSGerman };
+
+static const char *const kEoB1TurnUndeadStringDOSGerman[1] = {
+ "\x06\x06""%s benutzt Magie, um Untote zu vertreiben!""\x06\x0F""\r"
+};
+
+static const StringListProvider kEoB1TurnUndeadStringDOSGermanProvider = { ARRAYSIZE(kEoB1TurnUndeadStringDOSGerman), kEoB1TurnUndeadStringDOSGerman };
+
+static const char *const kEoB1Npc0StringsDOSGerman[2] = {
+ "\r Ich wuensche Euch Glueck auf Euren Reisen.",
+ "Wer soll wiedererweckt werden?"
+};
+
+static const StringListProvider kEoB1Npc0StringsDOSGermanProvider = { ARRAYSIZE(kEoB1Npc0StringsDOSGerman), kEoB1Npc0StringsDOSGerman };
+
+static const char *const kEoB1Npc11StringsDOSGerman[3] = {
+ "Wunden heilen",
+ "Reden",
+ "Gehen"
+};
+
+static const StringListProvider kEoB1Npc11StringsDOSGermanProvider = { ARRAYSIZE(kEoB1Npc11StringsDOSGerman), kEoB1Npc11StringsDOSGerman };
+
+static const char *const kEoB1Npc12StringsDOSGerman[2] = {
+ "Wunden heilen",
+ "Gehen"
+};
+
+static const StringListProvider kEoB1Npc12StringsDOSGermanProvider = { ARRAYSIZE(kEoB1Npc12StringsDOSGerman), kEoB1Npc12StringsDOSGerman };
+
+static const char *const kEoB1Npc21StringsDOSGerman[2] = {
+ "Angebot hoeren",
+ "Gehen"
+};
+
+static const StringListProvider kEoB1Npc21StringsDOSGermanProvider = { ARRAYSIZE(kEoB1Npc21StringsDOSGerman), kEoB1Npc21StringsDOSGerman };
+
+static const char *const kEoB1Npc22StringsDOSGerman[2] = {
+ "Helfen",
+ "Gehen"
+};
+
+static const StringListProvider kEoB1Npc22StringsDOSGermanProvider = { ARRAYSIZE(kEoB1Npc22StringsDOSGerman), kEoB1Npc22StringsDOSGerman };
+
+static const char *const kEoB1Npc31StringsDOSGerman[2] = {
+ "Team heilen",
+ "Gehen"
+};
+
+static const StringListProvider kEoB1Npc31StringsDOSGermanProvider = { ARRAYSIZE(kEoB1Npc31StringsDOSGerman), kEoB1Npc31StringsDOSGerman };
+
+static const char *const kEoB1Npc32StringsDOSGerman[3] = {
+ "Team heilen",
+ "Tote erwecken",
+ "Gehen"
+};
+
+static const StringListProvider kEoB1Npc32StringsDOSGermanProvider = { ARRAYSIZE(kEoB1Npc32StringsDOSGerman), kEoB1Npc32StringsDOSGerman };
+
+static const char *const kEoB1Npc4StringsDOSGerman[2] = {
+ "Angreifen",
+ "Bestechen"
+};
+
+static const StringListProvider kEoB1Npc4StringsDOSGermanProvider = { ARRAYSIZE(kEoB1Npc4StringsDOSGerman), kEoB1Npc4StringsDOSGerman };
+
+static const char *const kEoB1Npc5StringsDOSGerman[3] = {
+ "toeten",
+ "anhoeren",
+ "gehen lassen"
+};
+
+static const StringListProvider kEoB1Npc5StringsDOSGermanProvider = { ARRAYSIZE(kEoB1Npc5StringsDOSGerman), kEoB1Npc5StringsDOSGerman };
+
+static const char *const kEoB1Npc6StringsDOSGerman[2] = {
+ "Ergeben",
+ "Angreifen"
+};
+
+static const StringListProvider kEoB1Npc6StringsDOSGermanProvider = { ARRAYSIZE(kEoB1Npc6StringsDOSGerman), kEoB1Npc6StringsDOSGerman };
+
+static const char *const kEoB1Npc7StringsDOSGerman[3] = {
+ "befreien",
+ "toeten",
+ "Gehen"
+};
+
+static const StringListProvider kEoB1Npc7StringsDOSGermanProvider = { ARRAYSIZE(kEoB1Npc7StringsDOSGerman), kEoB1Npc7StringsDOSGerman };
+
+static const char *const kEoB1PryDoorStringsDOSGerman[8] = {
+ "Niemand schafft es, die Tuer aufzubrechen.\r",
+ "Das Team bricht die Tuer auf.\r",
+ "%s bricht die Tuer auf!\r",
+ "Das Team versucht die Tuer aufzubrechen, doch es schlaegt fehl.\r",
+ "Dieser Gegenstand kann hier nicht plaziert werden.\r",
+ "Dieser Gegenstand ist zu gross.\r",
+ "Niemand schafft es, die Tuer aufzubrechen.\r",
+ "\r"
+};
+
+static const StringListProvider kEoB1PryDoorStringsDOSGermanProvider = { ARRAYSIZE(kEoB1PryDoorStringsDOSGerman), kEoB1PryDoorStringsDOSGerman };
+
+static const char *const kEoB1WarningStringsDOSGerman[3] = {
+ "Hier geht es nicht weiter.\r",
+ "%s kann keine Nahrung zu sich nehmen!\r",
+ "Dies kann man nicht essen!\r"
+};
+
+static const StringListProvider kEoB1WarningStringsDOSGermanProvider = { ARRAYSIZE(kEoB1WarningStringsDOSGerman), kEoB1WarningStringsDOSGerman };
+
+static const char *const kEoB1ItemSuffixStringsRingsDOSGerman[4] = {
+ "Schmuck",
+ "Zauber",
+ "Nahrungs",
+ "Federfall"
+};
+
+static const StringListProvider kEoB1ItemSuffixStringsRingsDOSGermanProvider = { ARRAYSIZE(kEoB1ItemSuffixStringsRingsDOSGerman), kEoB1ItemSuffixStringsRingsDOSGerman };
+
+static const char *const kEoB1ItemSuffixStringsPotionsDOSGerman[8] = {
+ "Riesenstaerke",
+ "Heilungs",
+ "Extra Heilungs",
+ "Gift",
+ "Vitalitaets",
+ "Schnelligkeits",
+ "Unsichtbarkeits",
+ "Gift-Heilungs"
+};
+
+static const StringListProvider kEoB1ItemSuffixStringsPotionsDOSGermanProvider = { ARRAYSIZE(kEoB1ItemSuffixStringsPotionsDOSGerman), kEoB1ItemSuffixStringsPotionsDOSGerman };
+
+static const char *const kEoB1ItemSuffixStringsWandsDOSGerman[7] = {
+ "Stock",
+ "Blitz",
+ "Frost",
+ "Heilungs",
+ "Feuerball",
+ "Silvias",
+ "Magischer Geschoss"
+};
+
+static const StringListProvider kEoB1ItemSuffixStringsWandsDOSGermanProvider = { ARRAYSIZE(kEoB1ItemSuffixStringsWandsDOSGerman), kEoB1ItemSuffixStringsWandsDOSGerman };
+
+static const char *const kEoB1RipItemStringsDOSGerman[3] = {
+ "%s verlor ihre ",
+ "%s verlor seine ",
+ ".\r"
+};
+
+static const StringListProvider kEoB1RipItemStringsDOSGermanProvider = { ARRAYSIZE(kEoB1RipItemStringsDOSGerman), kEoB1RipItemStringsDOSGerman };
+
+static const char *const kEoB1CursedStringDOSGerman[1] = {
+ "Verflucht %s %d"
+};
+
+static const StringListProvider kEoB1CursedStringDOSGermanProvider = { ARRAYSIZE(kEoB1CursedStringDOSGerman), kEoB1CursedStringDOSGerman };
+
+static const char *const kEoB1MagicObjectStringsDOSGerman[5] = {
+ "Magier-Schriftrolle",
+ "Kleriker-Schriftrolle",
+ "Ring",
+ "Trank",
+ "Stab"
+};
+
+static const StringListProvider kEoB1MagicObjectStringsDOSGermanProvider = { ARRAYSIZE(kEoB1MagicObjectStringsDOSGerman), kEoB1MagicObjectStringsDOSGerman };
+
+static const char *const kEoB1MagicObjectString5DOSGerman[1] = {
+ "Stock"
+};
+
+static const StringListProvider kEoB1MagicObjectString5DOSGermanProvider = { ARRAYSIZE(kEoB1MagicObjectString5DOSGerman), kEoB1MagicObjectString5DOSGerman };
+
+static const char *const kEoB1PatternSuffixDOSGerman[1] = {
+ "%s-%s"
+};
+
+static const StringListProvider kEoB1PatternSuffixDOSGermanProvider = { ARRAYSIZE(kEoB1PatternSuffixDOSGerman), kEoB1PatternSuffixDOSGerman };
+
+static const char *const kEoB1PatternGrFix1DOSGerman[1] = {
+ "%s-%s"
+};
+
+static const StringListProvider kEoB1PatternGrFix1DOSGermanProvider = { ARRAYSIZE(kEoB1PatternGrFix1DOSGerman), kEoB1PatternGrFix1DOSGerman };
+
+static const char *const kEoB1PatternGrFix2DOSGerman[1] = {
+ "%s-%s"
+};
+
+static const StringListProvider kEoB1PatternGrFix2DOSGermanProvider = { ARRAYSIZE(kEoB1PatternGrFix2DOSGerman), kEoB1PatternGrFix2DOSGerman };
+
+static const char *const kEoB1ValidateArmorStringDOSGerman[1] = {
+ "%s kann diese Ruestung nicht tragen.\r"
+};
+
+static const StringListProvider kEoB1ValidateArmorStringDOSGermanProvider = { ARRAYSIZE(kEoB1ValidateArmorStringDOSGerman), kEoB1ValidateArmorStringDOSGerman };
+
+static const char *const kEoB1ValidateNoDropStringDOSGerman[1] = {
+ "Das koennt Ihr hier nicht ablegen.\r"
+};
+
+static const StringListProvider kEoB1ValidateNoDropStringDOSGermanProvider = { ARRAYSIZE(kEoB1ValidateNoDropStringDOSGerman), kEoB1ValidateNoDropStringDOSGerman };
+
+static const char *const kEoB1PotionStringsDOSGerman[2] = {
+ "vergiftet",
+ "%s fuehlt sich %s!\r"
+};
+
+static const StringListProvider kEoB1PotionStringsDOSGermanProvider = { ARRAYSIZE(kEoB1PotionStringsDOSGerman), kEoB1PotionStringsDOSGerman };
+
+static const char *const kEoB1WandStringsDOSGerman[2] = {
+ "Der Stab hat keinen offensichtlichen magischen Effekt.\r",
+ "kein effekt.\r"
+};
+
+static const StringListProvider kEoB1WandStringsDOSGermanProvider = { ARRAYSIZE(kEoB1WandStringsDOSGerman), kEoB1WandStringsDOSGerman };
+
+static const char *const kEoB1ItemMisuseStringsDOSGerman[3] = {
+ " kann dies nicht benutzen.\r",
+ "Dies wird automatisch benutzt, wenn angelegt.\r",
+ "Dies wird nicht so benutzt.\r"
+};
+
+static const StringListProvider kEoB1ItemMisuseStringsDOSGermanProvider = { ARRAYSIZE(kEoB1ItemMisuseStringsDOSGerman), kEoB1ItemMisuseStringsDOSGerman };
+
+static const char *const kEoB1TakenStringsDOSGerman[1] = {
+ " aufgenommen.\r"
+};
+
+static const StringListProvider kEoB1TakenStringsDOSGermanProvider = { ARRAYSIZE(kEoB1TakenStringsDOSGerman), kEoB1TakenStringsDOSGerman };
+
+static const char *const kEoB1PotionEffectStringsDOSGerman[8] = {
+ "viel staerker",
+ "besser",
+ "viel besser",
+ "einen Moment uebel",
+ "nicht laenger hungrig",
+ "schnell und agil",
+ "transparent",
+ "besser"
+};
+
+static const StringListProvider kEoB1PotionEffectStringsDOSGermanProvider = { ARRAYSIZE(kEoB1PotionEffectStringsDOSGerman), kEoB1PotionEffectStringsDOSGerman };
+
+static const char *const kEoB1YesNoStringsDOSGerman[2] = {
+ "ja",
+ "nein"
+};
+
+static const StringListProvider kEoB1YesNoStringsDOSGermanProvider = { ARRAYSIZE(kEoB1YesNoStringsDOSGerman), kEoB1YesNoStringsDOSGerman };
+
+static const char *const kEoB1MoreStringsDOSGerman[1] = {
+ "MEHR"
+};
+
+static const StringListProvider kEoB1MoreStringsDOSGermanProvider = { ARRAYSIZE(kEoB1MoreStringsDOSGerman), kEoB1MoreStringsDOSGerman };
+
+static const char *const kEoB1NpcMaxStringsDOSGerman[1] = {
+ "Es sind nur sechs Charaktere in einem Team erlaubt. Waehlen Sie aus, welchen Sie entlassen wollen."
+};
+
+static const StringListProvider kEoB1NpcMaxStringsDOSGermanProvider = { ARRAYSIZE(kEoB1NpcMaxStringsDOSGerman), kEoB1NpcMaxStringsDOSGerman };
+
+static const char *const kEoB1NpcJoinStringsDOSGerman[1] = {
+ "%s wird in's Team aufgenommen.\r"
+};
+
+static const StringListProvider kEoB1NpcJoinStringsDOSGermanProvider = { ARRAYSIZE(kEoB1NpcJoinStringsDOSGerman), kEoB1NpcJoinStringsDOSGerman };
+
+static const char *const kEoB1CancelStringsDOSGerman[1] = {
+ "ABBRECHEN"
+};
+
+static const StringListProvider kEoB1CancelStringsDOSGermanProvider = { ARRAYSIZE(kEoB1CancelStringsDOSGerman), kEoB1CancelStringsDOSGerman };
+
+static const char *const kEoB1MenuStringsMainDOSGerman[8] = {
+ "Option Waehlen:",
+ "Ausruhen",
+ "Zauber lernen",
+ "Fuer Zauber beten",
+ "Schriftrollen",
+ "Einstellungen",
+ "Spieloptionen",
+ "Ende"
+};
+
+static const StringListProvider kEoB1MenuStringsMainDOSGermanProvider = { ARRAYSIZE(kEoB1MenuStringsMainDOSGerman), kEoB1MenuStringsMainDOSGerman };
+
+static const char *const kEoB1MenuStringsSaveLoadDOSGerman[8] = {
+ "Spiel laden",
+ "Spiel speichern",
+ "Charakter entlassen",
+ "Spielende",
+ "Spieloptionen:",
+ "\r Gespeichert.",
+ "\r Speichern\r Fehler!",
+ "\r Spiel laden\r Fehler!"
+};
+
+static const StringListProvider kEoB1MenuStringsSaveLoadDOSGermanProvider = { ARRAYSIZE(kEoB1MenuStringsSaveLoadDOSGerman), kEoB1MenuStringsSaveLoadDOSGerman };
+
+static const char *const kEoB1MenuStringsOnOffDOSGerman[2] = {
+ "AN",
+ "AUS"
+};
+
+static const StringListProvider kEoB1MenuStringsOnOffDOSGermanProvider = { ARRAYSIZE(kEoB1MenuStringsOnOffDOSGerman), kEoB1MenuStringsOnOffDOSGerman };
+
+static const char *const kEoB1MenuStringsSpellsDOSGerman[17] = {
+ "\r\r Charakter aus dem\r Team waehlen, der\r zaubern moechte.\r ",
+ "\r Der Paladin ist \r noch zu \r unerfahren.",
+ "\r\r Der Magier hat\r kein Zauberbuch!",
+ "\r\r\r Charakter aus dem\r Team waehlen, der\r beten moechte.\r ",
+ "\r Das Team hat kei-\r nen Kleriker, der\r beten koennte.\r ",
+ "\r Das Team hat kei-\r nen Magier, der\r zaubern koennte.",
+ " Ein bewusstloser\r oder toter Magier\r kann keine Zauber\r lernen.",
+ " Ein bewusstloser\r oder toter Kleriker\r kann nicht fuer Zauber\r beten.",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "Loesch",
+ "Verfuegbare Zauber:",
+ "Ja",
+ "Nein"
+};
+
+static const StringListProvider kEoB1MenuStringsSpellsDOSGermanProvider = { ARRAYSIZE(kEoB1MenuStringsSpellsDOSGerman), kEoB1MenuStringsSpellsDOSGerman };
+
+static const char *const kEoB1MenuStringsRestDOSGerman[5] = {
+ "\rWerden die Heiler\rdas Team heilen?",
+ " Jemand ist noch\r verletzt. Rasten,\r bis geheilt?",
+ "Ausruhen.",
+ "\r Alle Charaktere\r sind ganz\r ausgeruht.",
+ " Das Team muss\r fuer neue Zauber\r rasten."
+};
+
+static const StringListProvider kEoB1MenuStringsRestDOSGermanProvider = { ARRAYSIZE(kEoB1MenuStringsRestDOSGerman), kEoB1MenuStringsRestDOSGerman };
+
+static const char *const kEoB1MenuStringsDropDOSGerman[1] = {
+ " Sie muessen min-\r destens vier\r Charaktere be-\r sitzen."
+};
+
+static const StringListProvider kEoB1MenuStringsDropDOSGermanProvider = { ARRAYSIZE(kEoB1MenuStringsDropDOSGerman), kEoB1MenuStringsDropDOSGerman };
+
+static const char *const kEoB1MenuStringsExitDOSGerman[1] = {
+ " Wollen Sie wirk-\r lich das Spiel\r beenden?\r"
+};
+
+static const StringListProvider kEoB1MenuStringsExitDOSGermanProvider = { ARRAYSIZE(kEoB1MenuStringsExitDOSGerman), kEoB1MenuStringsExitDOSGerman };
+
+static const char *const kEoB1MenuStringsStarveDOSGerman[1] = {
+ " Ihr Team verhungert.\r Soll weiter gerastet\r werden?\r "
+};
+
+static const StringListProvider kEoB1MenuStringsStarveDOSGermanProvider = { ARRAYSIZE(kEoB1MenuStringsStarveDOSGerman), kEoB1MenuStringsStarveDOSGerman };
+
+static const char *const kEoB1MenuStringsScribeDOSGerman[5] = {
+ "Schriftrolle(n) waeh-\rlen,die notiert wer-\rden soll(en).",
+ "\r\r\r Welcher Magier des\r Teams soll\r Schriftrollen\r notieren?",
+ " Es gibt keine\r Schriftrollen zum\r Notieren.",
+ " Sie haben keine\r Schriftrolle fuer\r diesen Magier.",
+ "\r Keiner Ihrer Magier\r kann Schriftrollen\r notieren."
+};
+
+static const StringListProvider kEoB1MenuStringsScribeDOSGermanProvider = { ARRAYSIZE(kEoB1MenuStringsScribeDOSGerman), kEoB1MenuStringsScribeDOSGerman };
+
+static const char *const kEoB1MenuStringsDrop2DOSGerman[3] = {
+ " Waehlen Sie den\r zu entlassenden\r Charakter.",
+ " Wollen Sie wirk-\r lich das Spiel\r SPEICHERN?",
+ " Wollen Sie wirk-\r lich ein altes\r Spiel LADEN?"
+};
+
+static const StringListProvider kEoB1MenuStringsDrop2DOSGermanProvider = { ARRAYSIZE(kEoB1MenuStringsDrop2DOSGerman), kEoB1MenuStringsDrop2DOSGerman };
+
+static const char *const kEoB1MenuStringsHeadDOSGerman[3] = {
+ "Camp:",
+ "Einstellungen:",
+ "Spieloptionen:"
+};
+
+static const StringListProvider kEoB1MenuStringsHeadDOSGermanProvider = { ARRAYSIZE(kEoB1MenuStringsHeadDOSGerman), kEoB1MenuStringsHeadDOSGerman };
+
+static const char *const kEoB1MenuStringsPoisonDOSGerman[1] = {
+ "Vergiftete Team-\rmitglieder sterben!\rTrotzdem rasten?"
+};
+
+static const StringListProvider kEoB1MenuStringsPoisonDOSGermanProvider = { ARRAYSIZE(kEoB1MenuStringsPoisonDOSGerman), kEoB1MenuStringsPoisonDOSGerman };
+
+static const char *const kEoB1MenuStringsMgcDOSGerman[2] = {
+ "%-18s %1d",
+ "%d von %d Uebrigen. "
+};
+
+static const StringListProvider kEoB1MenuStringsMgcDOSGermanProvider = { ARRAYSIZE(kEoB1MenuStringsMgcDOSGerman), kEoB1MenuStringsMgcDOSGerman };
+
+static const char *const kEoB1MenuStringsPrefsDOSGerman[4] = {
+ "Musik ist %-3s",
+ "Geraeusche sind %-3s",
+ "Graphikzeilen %-3s",
+ "Maus ist %-3s"
+};
+
+static const StringListProvider kEoB1MenuStringsPrefsDOSGermanProvider = { ARRAYSIZE(kEoB1MenuStringsPrefsDOSGerman), kEoB1MenuStringsPrefsDOSGerman };
+
+static const char *const kEoB1MenuStringsRest2DOSGerman[4] = {
+ "%s erhaelt %s.\r",
+ "%s lernt %s.\r",
+ "%s spricht heilung auf %s.\r",
+ "Ruhestunden: %-4d"
+};
+
+static const StringListProvider kEoB1MenuStringsRest2DOSGermanProvider = { ARRAYSIZE(kEoB1MenuStringsRest2DOSGerman), kEoB1MenuStringsRest2DOSGerman };
+
+static const char *const kEoB1MenuStringsRest4DOSGerman[1] = {
+ "\rRast ist nicht moeglich, Monster sind in der Naehe."
+};
+
+static const StringListProvider kEoB1MenuStringsRest4DOSGermanProvider = { ARRAYSIZE(kEoB1MenuStringsRest4DOSGerman), kEoB1MenuStringsRest4DOSGerman };
+
+static const char *const kEoB1MenuStringsDefeatDOSGerman[1] = {
+ " Dein ganzes team ist geschlagen. Die Helfer des boesen koennen ihre Plaene ungehindert erfuellen! \r"
+};
+
+static const StringListProvider kEoB1MenuStringsDefeatDOSGermanProvider = { ARRAYSIZE(kEoB1MenuStringsDefeatDOSGerman), kEoB1MenuStringsDefeatDOSGerman };
+
+static const char *const kEoB1MenuYesNoStringsDOSGerman[2] = {
+ "Ja",
+ "Nein"
+};
+
+static const StringListProvider kEoB1MenuYesNoStringsDOSGermanProvider = { ARRAYSIZE(kEoB1MenuYesNoStringsDOSGerman), kEoB1MenuYesNoStringsDOSGerman };
+
+static const char *const kEoB1CharGuiStringsHpDOSGerman[2] = {
+ "HP",
+ "%3d / %-3d"
+};
+
+static const StringListProvider kEoB1CharGuiStringsHpDOSGermanProvider = { ARRAYSIZE(kEoB1CharGuiStringsHpDOSGerman), kEoB1CharGuiStringsHpDOSGerman };
+
+static const char *const kEoB1CharGuiStringsWp1DOSGerman[2] = {
+ "FEHL",
+ "HACK"
+};
+
+static const StringListProvider kEoB1CharGuiStringsWp1DOSGermanProvider = { ARRAYSIZE(kEoB1CharGuiStringsWp1DOSGerman), kEoB1CharGuiStringsWp1DOSGerman };
+
+static const char *const kEoB1CharGuiStringsWrDOSGerman[4] = {
+ " ZU ",
+ "WEIT",
+ "KEINE",
+ " MUN"
+};
+
+static const StringListProvider kEoB1CharGuiStringsWrDOSGermanProvider = { ARRAYSIZE(kEoB1CharGuiStringsWrDOSGerman), kEoB1CharGuiStringsWrDOSGerman };
+
+static const char *const kEoB1CharGuiStringsSt1DOSGerman[6] = {
+ "Tausche",
+ "TOT",
+ "BEWUSSTLOS",
+ "GIFT (LANGSAM)",
+ "VERGIFTED",
+ "BETAEUBT"
+};
+
+static const StringListProvider kEoB1CharGuiStringsSt1DOSGermanProvider = { ARRAYSIZE(kEoB1CharGuiStringsSt1DOSGerman), kEoB1CharGuiStringsSt1DOSGerman };
+
+static const char *const kEoB1CharGuiStringsInDOSGerman[4] = {
+ "CHARAKTER INFO",
+ "RUESTUNG",
+ "ERF",
+ "EBN"
+};
+
+static const StringListProvider kEoB1CharGuiStringsInDOSGermanProvider = { ARRAYSIZE(kEoB1CharGuiStringsInDOSGerman), kEoB1CharGuiStringsInDOSGerman };
+
+static const char *const kEoB1CharStatusStrings7DOSGerman[1] = {
+ "%s besitzt nun keine Riesen-Staerke mehr.\r"
+};
+
+static const StringListProvider kEoB1CharStatusStrings7DOSGermanProvider = { ARRAYSIZE(kEoB1CharStatusStrings7DOSGerman), kEoB1CharStatusStrings7DOSGerman };
+
+static const char *const kEoB1CharStatusStrings81DOSGerman[1] = {
+ "%s fuehlt, wie das Gift wirkt!\r"
+};
+
+static const StringListProvider kEoB1CharStatusStrings81DOSGermanProvider = { ARRAYSIZE(kEoB1CharStatusStrings81DOSGerman), kEoB1CharStatusStrings81DOSGerman };
+
+static const char *const kEoB1CharStatusStrings9DOSGerman[1] = {
+ "%s ist nicht mehr gelaehmt!\r"
+};
+
+static const StringListProvider kEoB1CharStatusStrings9DOSGermanProvider = { ARRAYSIZE(kEoB1CharStatusStrings9DOSGerman), kEoB1CharStatusStrings9DOSGerman };
+
+static const char *const kEoB1CharStatusStrings131DOSGerman[1] = {
+ "%s ist %s!\r"
+};
+
+static const StringListProvider kEoB1CharStatusStrings131DOSGermanProvider = { ARRAYSIZE(kEoB1CharStatusStrings131DOSGerman), kEoB1CharStatusStrings131DOSGerman };
+
+static const char *const kEoB1LevelGainStringsDOSGerman[1] = {
+ "\x06\x01""%s steigt eine erfahrungsstufe auf.""\x06\x0F""\r"
+};
+
+static const StringListProvider kEoB1LevelGainStringsDOSGermanProvider = { ARRAYSIZE(kEoB1LevelGainStringsDOSGerman), kEoB1LevelGainStringsDOSGerman };
+
+static const char *const kEoB1BookNumbersDOSGerman[5] = {
+ "Erster",
+ "Zweiter",
+ "Dritter",
+ "Vierter",
+ "Fuenfter"
+};
+
+static const StringListProvider kEoB1BookNumbersDOSGermanProvider = { ARRAYSIZE(kEoB1BookNumbersDOSGerman), kEoB1BookNumbersDOSGerman };
+
+static const char *const kEoB1MageSpellsListDOSGerman[26] = {
+ "",
+ "Ruestung",
+ "Brennende Haende",
+ "Magie entdecken",
+ "Magisch. Geschoss",
+ "Magie lesen",
+ "Schild",
+ "Schockgriff",
+ "Unsichtbarkeit",
+ "Klopfen",
+ "Ms Saeurepfeil",
+ "Stinkende Wolke",
+ "Magie bannen",
+ "Feuerball",
+ "Flammenpfeil",
+ "Hast",
+ "Person festhalten",
+ "Usichtbarkeit 3m",
+ "Blitzstrahl",
+ "Vampirgriff",
+ "Furcht",
+ "Eissturm",
+ "Steinhaut",
+ "Todeswolke",
+ "Kaeltekegel",
+ "Monster festhalten"
+};
+
+static const StringListProvider kEoB1MageSpellsListDOSGermanProvider = { ARRAYSIZE(kEoB1MageSpellsListDOSGerman), kEoB1MageSpellsListDOSGerman };
+
+static const char *const kEoB1ClericSpellsListDOSGerman[25] = {
+ "",
+ "Segen",
+ "L. Wnd. heilen",
+ "l. Wnd. verurs.",
+ "Magie entdecken",
+ "Schutz v. Boesem",
+ "Staerkung",
+ "Flammenklinge",
+ "Person festhalten",
+ "Gift verlangsamen",
+ "Nahrung erschaffen",
+ "Magie bannen",
+ "Schutzgewand",
+ "Gebet",
+ "Laehmung aufheben",
+ "Schwere W. heilen",
+ "Schwere W. verurs.",
+ "Gift neutral.",
+ "Schutz v.Boesem 3m",
+ "Schutz v. Blitzen",
+ "Krit. W. heilen",
+ "Krit. W. verurs.",
+ "Flammenschlag",
+ "Tote erwecken",
+ "Haende auflegen"
+};
+
+static const StringListProvider kEoB1ClericSpellsListDOSGermanProvider = { ARRAYSIZE(kEoB1ClericSpellsListDOSGerman), kEoB1ClericSpellsListDOSGerman };
+
+static const char *const kEoB1SpellNamesDOSGerman[51] = {
+ "",
+ "Ruestung",
+ "brennende Haende",
+ "Magie entdecken",
+ "magisches Geschoss",
+ "Schild",
+ "Schockgriff",
+ "Unsichtbarkeit",
+ "Ms saeurepfeil",
+ "stinkende Wolke",
+ "Magie bannen",
+ "Feuerball",
+ "Flammenpfeil",
+ "hast",
+ "Person festhalten",
+ "Unsichtbarkeit 3m",
+ "Blitzstrahl",
+ "Vampirgriff",
+ "Furcht",
+ "Eissturm",
+ "Steinhaut",
+ "Todeswolke",
+ "Kaeltekegel",
+ "Monster festhalten",
+ "Segen",
+ "leichte Wunden heilen",
+ "leichte Wunden verursachen",
+ "Magie entdecken",
+ "Schutz vor boesem",
+ "Staerkung",
+ "Flammenklinge",
+ "Person festhalten",
+ "Gift verlangsamen",
+ "Nahrung erschaffen",
+ "Magie bannen",
+ "Schutzgewand",
+ "Gebet",
+ "Laehmung aufheben",
+ "schwere Wunden heilen",
+ "schwere Wunden verursachen",
+ "Gift neutralisieren",
+ "Schutz vor boesem 3m",
+ "Schutz vor Blitzen",
+ "kritische Wunden heilen",
+ "kritische Wunden verursachen",
+ "Flammenschlag",
+ "Tote erwecken",
+ "Haende auflegen",
+ "",
+ "",
+ ""
+};
+
+static const StringListProvider kEoB1SpellNamesDOSGermanProvider = { ARRAYSIZE(kEoB1SpellNamesDOSGerman), kEoB1SpellNamesDOSGerman };
+
+static const char *const kEoB1MagicStrings1DOSGerman[6] = {
+ "KEIN ZAUBER",
+ "KEIN ZAUBER",
+ "Fuer diesen Zauber musst du eine Hand frei haben.\r",
+ "Zwei Sprueche dieses Typs koennen nicht gleichzeitig wirken.\r",
+ "%s zaubert %s.\r",
+ "ok\r"
+};
+
+static const StringListProvider kEoB1MagicStrings1DOSGermanProvider = { ARRAYSIZE(kEoB1MagicStrings1DOSGerman), kEoB1MagicStrings1DOSGerman };
+
+static const char *const kEoB1MagicStrings2DOSGerman[3] = {
+ "Kein Effekt\r",
+ "%s wurde aufgeloest!\r",
+ "Das Team wurde mit einem Todesbann belegt!\r"
+};
+
+static const StringListProvider kEoB1MagicStrings2DOSGermanProvider = { ARRAYSIZE(kEoB1MagicStrings2DOSGerman), kEoB1MagicStrings2DOSGerman };
+
+static const char *const kEoB1MagicStrings3DOSGerman[6] = {
+ "Zauber auf welchen Charakter anwenden? ",
+ "\rok\r",
+ "\rZauber abgebrochen.\r",
+ "%s's %s Zauber laesst nach.\r",
+ "%s traf das Monster nicht.\r",
+ "%s kann nur in vorderen Reihen zuschlagen!\r"
+};
+
+static const StringListProvider kEoB1MagicStrings3DOSGermanProvider = { ARRAYSIZE(kEoB1MagicStrings3DOSGerman), kEoB1MagicStrings3DOSGerman };
+
+static const char *const kEoB1MagicStrings4DOSGerman[2] = {
+ "Kein Effekt.\r",
+ "Kein Effekt\r"
+};
+
+static const StringListProvider kEoB1MagicStrings4DOSGermanProvider = { ARRAYSIZE(kEoB1MagicStrings4DOSGerman), kEoB1MagicStrings4DOSGerman };
+
+static const char *const kEoB1MagicStrings6DOSGerman[1] = {
+ "%s hat bereits eine hochrangige Ruestungsklasse.\r"
+};
+
+static const StringListProvider kEoB1MagicStrings6DOSGermanProvider = { ARRAYSIZE(kEoB1MagicStrings6DOSGerman), kEoB1MagicStrings6DOSGerman };
+
+static const char *const kEoB1MagicStrings7DOSGerman[5] = {
+ "1.",
+ "2.",
+ "3.",
+ "4.",
+ "5."
+};
+
+static const StringListProvider kEoB1MagicStrings7DOSGermanProvider = { ARRAYSIZE(kEoB1MagicStrings7DOSGerman), kEoB1MagicStrings7DOSGerman };
+
+static const char *const kEoB1MagicStrings8DOSGerman[3] = {
+ "Alle Zauber auf %s wurden abgewehrt.\r",
+ "Das Team ist schon gesegnet!\r",
+ "Der Heilungszauber versagt!\r"
+};
+
+static const StringListProvider kEoB1MagicStrings8DOSGermanProvider = { ARRAYSIZE(kEoB1MagicStrings8DOSGerman), kEoB1MagicStrings8DOSGerman };
+
+static const byte kEoB1ManDefDOSGerman[120] = {
+ 0x09, 0x0A, 0x01, 0x00, 0x09, 0x04, 0x03, 0x00,
+ 0x09, 0x06, 0x01, 0x00, 0x09, 0x03, 0x03, 0x00,
+ 0x09, 0x04, 0x02, 0x00, 0x09, 0x01, 0x02, 0x00,
+ 0x09, 0x05, 0x01, 0x00, 0x09, 0x09, 0x02, 0x00,
+ 0x09, 0x01, 0x03, 0x00, 0x23, 0x01, 0x05, 0x00,
+ 0x23, 0x02, 0x02, 0x00, 0x23, 0x03, 0x06, 0x00,
+ 0x23, 0x05, 0x01, 0x00, 0x23, 0x06, 0x03, 0x00,
+ 0x23, 0x07, 0x01, 0x00, 0x1A, 0x02, 0x01, 0x00,
+ 0x1A, 0x03, 0x02, 0x00, 0x1A, 0x06, 0x01, 0x00,
+ 0x24, 0x01, 0x03, 0x00, 0x24, 0x03, 0x03, 0x00,
+ 0x24, 0x03, 0x01, 0x00, 0x02, 0x04, 0x03, 0x00,
+ 0x02, 0x03, 0x03, 0x00, 0x02, 0x07, 0x02, 0x00,
+ 0x01, 0x01, 0x01, 0x00, 0x01, 0x05, 0x03, 0x00,
+ 0x01, 0x04, 0x03, 0x00, 0x0C, 0x02, 0x01, 0x00,
+ 0x0C, 0x03, 0x03, 0x00, 0x0C, 0x02, 0x04, 0x00
+};
+
+static const ByteProvider kEoB1ManDefDOSGermanProvider = { ARRAYSIZE(kEoB1ManDefDOSGerman), kEoB1ManDefDOSGerman };
+
+static const char *const kEoB1ManWordDOSGerman[31] = {
+ "dargestellt",
+ "nur",
+ "attackieren",
+ "sie",
+ "handwaffen",
+ "monster",
+ "diese",
+ "wird",
+ "jedoch",
+ "sie",
+ "getragene",
+ "sobald",
+ "klerikale",
+ "getragene",
+ "sich",
+ "elternteile",
+ "gesicht",
+ "nicht",
+ "ihrer",
+ "magische",
+ "einige",
+ "sich",
+ "charaktere",
+ "gesinnung",
+ "versammlung",
+ "wachen",
+ "des",
+ "werden",
+ "seinen",
+ "greift",
+ ""
+};
+
+static const StringListProvider kEoB1ManWordDOSGermanProvider = { ARRAYSIZE(kEoB1ManWordDOSGerman), kEoB1ManWordDOSGerman };
+
+static const char *const kEoB1ManPromptDOSGerman[1] = {
+ "\r\r\r\rAuf der Seite mit diesem Symbol...\r\rFinde Zeile %d\rGib Wort %d ein\r"
+};
+
+static const StringListProvider kEoB1ManPromptDOSGermanProvider = { ARRAYSIZE(kEoB1ManPromptDOSGerman), kEoB1ManPromptDOSGerman };
+
+static const char *const kEoB1MonsterDistAttStringsDOSGerman[5] = {
+ "%s wurde von einem Schwere-Wunden-Zauber getroffen!\r",
+ "Das Team wurde von einem psychischen Hirnstoss getroffen!\r",
+ "gelaehmt",
+ "vergiftet",
+ "gelaehmt"
+};
+
+static const StringListProvider kEoB1MonsterDistAttStringsDOSGermanProvider = { ARRAYSIZE(kEoB1MonsterDistAttStringsDOSGerman), kEoB1MonsterDistAttStringsDOSGerman };
+
diff --git a/devtools/create_kyradat/resources/eob2_dos.h b/devtools/create_kyradat/resources/eob2_dos.h
new file mode 100644
index 0000000000..f260913e3c
--- /dev/null
+++ b/devtools/create_kyradat/resources/eob2_dos.h
@@ -0,0 +1,2501 @@
+static const byte kEoB2ChargenStartLevelsDOS[60] = {
+ 0x07, 0x00, 0x00, 0x01, 0x06, 0x00, 0x00, 0x01,
+ 0x06, 0x00, 0x00, 0x01, 0x07, 0x00, 0x00, 0x01,
+ 0x07, 0x00, 0x00, 0x01, 0x07, 0x00, 0x00, 0x01,
+ 0x06, 0x06, 0x00, 0x02, 0x06, 0x06, 0x00, 0x02,
+ 0x06, 0x05, 0x00, 0x02, 0x05, 0x05, 0x06, 0x03,
+ 0x06, 0x05, 0x00, 0x02, 0x06, 0x06, 0x00, 0x02,
+ 0x05, 0x05, 0x05, 0x03, 0x05, 0x06, 0x00, 0x02,
+ 0x06, 0x05, 0x00, 0x02
+};
+
+static const ByteProvider kEoB2ChargenStartLevelsDOSProvider = { ARRAYSIZE(kEoB2ChargenStartLevelsDOS), kEoB2ChargenStartLevelsDOS };
+
+static const byte kEoB2ChargenClassMinStatsDOS[90] = {
+ 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00,
+ 0x0E, 0x0D, 0x0E, 0x00, 0x0C, 0x00, 0x0D, 0x00,
+ 0x09, 0x11, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x09, 0x00,
+ 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00,
+ 0x09, 0x09, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09,
+ 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x09,
+ 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x00, 0x00,
+ 0x09, 0x09, 0x09, 0x00, 0x00, 0x00, 0x0D, 0x00,
+ 0x0E, 0x0D, 0x0E, 0x00, 0x00, 0x09, 0x09, 0x00,
+ 0x00, 0x00
+};
+
+static const ByteProvider kEoB2ChargenClassMinStatsDOSProvider = { ARRAYSIZE(kEoB2ChargenClassMinStatsDOS), kEoB2ChargenClassMinStatsDOS };
+
+static const byte kEoB2ChargenRaceMinStatsDOS[36] = {
+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x08,
+ 0x03, 0x07, 0x06, 0x08, 0x03, 0x04, 0x03, 0x06,
+ 0x06, 0x03, 0x08, 0x03, 0x03, 0x03, 0x0C, 0x02,
+ 0x06, 0x07, 0x02, 0x03, 0x08, 0x03, 0x07, 0x06,
+ 0x03, 0x08, 0x0A, 0x06
+};
+
+static const ByteProvider kEoB2ChargenRaceMinStatsDOSProvider = { ARRAYSIZE(kEoB2ChargenRaceMinStatsDOS), kEoB2ChargenRaceMinStatsDOS };
+
+static const uint16 kEoB2ChargenRaceMaxStatsDOS[36] = {
+ 0x6412, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x6412, 0x0012,
+ 0x0012, 0x0013, 0x0011, 0x0012, 0x6412, 0x0012, 0x0012, 0x0012,
+ 0x0012, 0x0012, 0x6412, 0x0012, 0x0012, 0x0011, 0x0013, 0x0010,
+ 0x6412, 0x0013, 0x0011, 0x0012, 0x0012, 0x0012, 0x0011, 0x0012,
+ 0x0011, 0x0013, 0x0012, 0x0012
+};
+
+static const Uint16Provider kEoB2ChargenRaceMaxStatsDOSProvider = { ARRAYSIZE(kEoB2ChargenRaceMaxStatsDOS), kEoB2ChargenRaceMaxStatsDOS };
+
+static const byte kEoB2SaveThrowTable1DOS[50] = {
+ 0x10, 0x0E, 0x0D, 0x0B, 0x0A, 0x08, 0x07, 0x05,
+ 0x04, 0x03, 0x12, 0x10, 0x0F, 0x0D, 0x0C, 0x0A,
+ 0x09, 0x07, 0x06, 0x05, 0x11, 0x0F, 0x0E, 0x0C,
+ 0x0B, 0x09, 0x08, 0x06, 0x05, 0x04, 0x14, 0x11,
+ 0x10, 0x0D, 0x0C, 0x09, 0x08, 0x05, 0x04, 0x04,
+ 0x13, 0x11, 0x10, 0x0E, 0x0D, 0x0B, 0x0A, 0x08,
+ 0x07, 0x06
+};
+
+static const ByteProvider kEoB2SaveThrowTable1DOSProvider = { ARRAYSIZE(kEoB2SaveThrowTable1DOS), kEoB2SaveThrowTable1DOS };
+
+static const byte kEoB2SaveThrowTable2DOS[25] = {
+ 0x0E, 0x0D, 0x0B, 0x0A, 0x08, 0x0B, 0x09, 0x07,
+ 0x05, 0x03, 0x0D, 0x0B, 0x09, 0x07, 0x05, 0x0F,
+ 0x0D, 0x0B, 0x09, 0x07, 0x0C, 0x0A, 0x08, 0x06,
+ 0x04
+};
+
+static const ByteProvider kEoB2SaveThrowTable2DOSProvider = { ARRAYSIZE(kEoB2SaveThrowTable2DOS), kEoB2SaveThrowTable2DOS };
+
+static const byte kEoB2SaveThrowTable3DOS[35] = {
+ 0x0A, 0x09, 0x07, 0x06, 0x05, 0x04, 0x02, 0x0E,
+ 0x0D, 0x0B, 0x0A, 0x09, 0x08, 0x06, 0x0D, 0x0C,
+ 0x0A, 0x09, 0x08, 0x07, 0x05, 0x10, 0x0F, 0x0D,
+ 0x0C, 0x0B, 0x0A, 0x08, 0x0F, 0x0E, 0x0C, 0x0B,
+ 0x0A, 0x09, 0x07
+};
+
+static const ByteProvider kEoB2SaveThrowTable3DOSProvider = { ARRAYSIZE(kEoB2SaveThrowTable3DOS), kEoB2SaveThrowTable3DOS };
+
+static const byte kEoB2SaveThrowTable4DOS[30] = {
+ 0x0D, 0x0C, 0x0B, 0x0A, 0x09, 0x08, 0x0E, 0x0C,
+ 0x0A, 0x08, 0x06, 0x07, 0x0C, 0x0B, 0x0A, 0x09,
+ 0x08, 0x04, 0x10, 0x0F, 0x0E, 0x0D, 0x0C, 0x0B,
+ 0x0F, 0x0D, 0x0B, 0x09, 0x07, 0x05
+};
+
+static const ByteProvider kEoB2SaveThrowTable4DOSProvider = { ARRAYSIZE(kEoB2SaveThrowTable4DOS), kEoB2SaveThrowTable4DOS };
+
+static const byte kEoB2SaveThrwLvlIndexDOS[6] = {
+ 0x11, 0x15, 0x13, 0x15, 0x11, 0x11
+};
+
+static const ByteProvider kEoB2SaveThrwLvlIndexDOSProvider = { ARRAYSIZE(kEoB2SaveThrwLvlIndexDOS), kEoB2SaveThrwLvlIndexDOS };
+
+static const byte kEoB2SaveThrwModDivDOS[6] = {
+ 0x02, 0x05, 0x03, 0x04, 0x02, 0x02
+};
+
+static const ByteProvider kEoB2SaveThrwModDivDOSProvider = { ARRAYSIZE(kEoB2SaveThrwModDivDOS), kEoB2SaveThrwModDivDOS };
+
+static const byte kEoB2SaveThrwModExtDOS[6] = {
+ 0x0A, 0x05, 0x07, 0x06, 0x0A, 0x0A
+};
+
+static const ByteProvider kEoB2SaveThrwModExtDOSProvider = { ARRAYSIZE(kEoB2SaveThrwModExtDOS), kEoB2SaveThrwModExtDOS };
+
+static const char *const kEoB2EnchantedStringDOS[1] = {
+ "+%d %s"
+};
+
+static const StringListProvider kEoB2EnchantedStringDOSProvider = { ARRAYSIZE(kEoB2EnchantedStringDOS), kEoB2EnchantedStringDOS };
+
+static const char *const kEoB2MenuStringsSpellNoDOS[3] = {
+ "6",
+ "7",
+ "8"
+};
+
+static const StringListProvider kEoB2MenuStringsSpellNoDOSProvider = { ARRAYSIZE(kEoB2MenuStringsSpellNoDOS), kEoB2MenuStringsSpellNoDOS };
+
+static const byte kEoB2SpellLevelsMageDOS[35] = {
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02,
+ 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03,
+ 0x03, 0x03, 0x04, 0x04, 0x04, 0x04, 0x05, 0x05,
+ 0x05, 0x06, 0x06, 0x06, 0x06, 0x07, 0x07, 0x08,
+ 0x00, 0x01, 0x01
+};
+
+static const ByteProvider kEoB2SpellLevelsMageDOSProvider = { ARRAYSIZE(kEoB2SpellLevelsMageDOS), kEoB2SpellLevelsMageDOS };
+
+static const byte kEoB2SpellLevelsClericDOS[29] = {
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02,
+ 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x04, 0x04,
+ 0x04, 0x04, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
+ 0x06, 0x06, 0x08, 0x08, 0x00
+};
+
+static const ByteProvider kEoB2SpellLevelsClericDOSProvider = { ARRAYSIZE(kEoB2SpellLevelsClericDOS), kEoB2SpellLevelsClericDOS };
+
+static const byte kEoB2NumSpellsClericDOS[136] = {
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x03, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00,
+ 0x04, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00,
+ 0x04, 0x04, 0x03, 0x02, 0x02, 0x00, 0x00, 0x00,
+ 0x05, 0x04, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00,
+ 0x06, 0x05, 0x05, 0x03, 0x02, 0x02, 0x00, 0x00,
+ 0x06, 0x06, 0x06, 0x04, 0x02, 0x02, 0x00, 0x00,
+ 0x06, 0x06, 0x06, 0x05, 0x03, 0x02, 0x01, 0x00,
+ 0x06, 0x06, 0x06, 0x06, 0x04, 0x02, 0x01, 0x00,
+ 0x07, 0x07, 0x07, 0x06, 0x04, 0x03, 0x01, 0x00,
+ 0x07, 0x07, 0x07, 0x07, 0x05, 0x03, 0x02, 0x00
+};
+
+static const ByteProvider kEoB2NumSpellsClericDOSProvider = { ARRAYSIZE(kEoB2NumSpellsClericDOS), kEoB2NumSpellsClericDOS };
+
+static const byte kEoB2NumSpellsWisAdjDOS[64] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x02, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x02, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00
+};
+
+static const ByteProvider kEoB2NumSpellsWisAdjDOSProvider = { ARRAYSIZE(kEoB2NumSpellsWisAdjDOS), kEoB2NumSpellsWisAdjDOS };
+
+static const byte kEoB2NumSpellsPalDOS[136] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00
+};
+
+static const ByteProvider kEoB2NumSpellsPalDOSProvider = { ARRAYSIZE(kEoB2NumSpellsPalDOS), kEoB2NumSpellsPalDOS };
+
+static const byte kEoB2NumSpellsMageDOS[276] = {
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x04, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x04, 0x03, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00,
+ 0x04, 0x03, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00,
+ 0x04, 0x04, 0x03, 0x02, 0x02, 0x00, 0x00, 0x00,
+ 0x04, 0x04, 0x04, 0x03, 0x03, 0x00, 0x00, 0x00,
+ 0x04, 0x04, 0x04, 0x04, 0x04, 0x01, 0x00, 0x00,
+ 0x05, 0x05, 0x05, 0x04, 0x04, 0x02, 0x00, 0x00,
+ 0x05, 0x05, 0x05, 0x04, 0x04, 0x02, 0x01, 0x00,
+ 0x05, 0x05, 0x05, 0x05, 0x05, 0x02, 0x01, 0x00,
+ 0x05, 0x05, 0x05, 0x05, 0x05, 0x03, 0x02, 0x01,
+ 0x05, 0x05, 0x05, 0x05, 0x05, 0x03, 0x03, 0x02,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00
+};
+
+static const ByteProvider kEoB2NumSpellsMageDOSProvider = { ARRAYSIZE(kEoB2NumSpellsMageDOS), kEoB2NumSpellsMageDOS };
+
+static const uint32 kEoB2ExperienceTable0DOS[14] = {
+ 0x00000000, 0x000007D0, 0x00000FA0, 0x00001F40, 0x00003E80, 0x00007D00, 0x0000FA00, 0x0001E848,
+ 0x0003D090, 0x0007A120, 0x000B71B0, 0x000F4240, 0x001312D0, 0xFFFFFFFF
+};
+
+static const Uint32Provider kEoB2ExperienceTable0DOSProvider = { ARRAYSIZE(kEoB2ExperienceTable0DOS), kEoB2ExperienceTable0DOS };
+
+static const uint32 kEoB2ExperienceTable1DOS[14] = {
+ 0x00000000, 0x000009C4, 0x00001388, 0x00002710, 0x00004E20, 0x00009C40, 0x0000EA60, 0x00015F90,
+ 0x00020F58, 0x0003D090, 0x0005B8D8, 0x000B71B0, 0x00112A88, 0xFFFFFFFF
+};
+
+static const Uint32Provider kEoB2ExperienceTable1DOSProvider = { ARRAYSIZE(kEoB2ExperienceTable1DOS), kEoB2ExperienceTable1DOS };
+
+static const uint32 kEoB2ExperienceTable2DOS[14] = {
+ 0x00000000, 0x000005DC, 0x00000BB8, 0x00001770, 0x000032C8, 0x00006B6C, 0x0000D6D8, 0x0001ADB0,
+ 0x00036EE8, 0x0006DDD0, 0x000A4CB8, 0x000DBBA0, 0x00112A88, 0xFFFFFFFF
+};
+
+static const Uint32Provider kEoB2ExperienceTable2DOSProvider = { ARRAYSIZE(kEoB2ExperienceTable2DOS), kEoB2ExperienceTable2DOS };
+
+static const uint32 kEoB2ExperienceTable3DOS[14] = {
+ 0x00000000, 0x000004E2, 0x000009C4, 0x00001388, 0x00002710, 0x00004E20, 0x00009C40, 0x00011170,
+ 0x0001ADB0, 0x00027100, 0x00035B60, 0x0006B6C0, 0x000A1220, 0xFFFFFFFF
+};
+
+static const Uint32Provider kEoB2ExperienceTable3DOSProvider = { ARRAYSIZE(kEoB2ExperienceTable3DOS), kEoB2ExperienceTable3DOS };
+
+static const uint32 kEoB2ExperienceTable4DOS[14] = {
+ 0x00000000, 0x000008CA, 0x00001194, 0x00002328, 0x00004650, 0x00008CA0, 0x000124F8, 0x000249F0,
+ 0x000493E0, 0x000927C0, 0x000DBBA0, 0x00124F80, 0x0016E360, 0xFFFFFFFF
+};
+
+static const Uint32Provider kEoB2ExperienceTable4DOSProvider = { ARRAYSIZE(kEoB2ExperienceTable4DOS), kEoB2ExperienceTable4DOS };
+
+static const byte kEoB2ExpObjectTlModeDOS[18] = {
+ 0x00, 0x00, 0x01, 0x02, 0x01, 0x00, 0x00, 0x00,
+ 0x01, 0x02, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00,
+ 0x02, 0x00
+};
+
+static const ByteProvider kEoB2ExpObjectTlModeDOSProvider = { ARRAYSIZE(kEoB2ExpObjectTlModeDOS), kEoB2ExpObjectTlModeDOS };
+
+static const byte kEoB2ExpObjectTblIndexDOS[14] = {
+ 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const ByteProvider kEoB2ExpObjectTblIndexDOSProvider = { ARRAYSIZE(kEoB2ExpObjectTblIndexDOS), kEoB2ExpObjectTblIndexDOS };
+
+static const byte kEoB2ExpObjectShpStartDOS[4] = {
+ 0x07, 0x0C, 0x0F, 0x12
+};
+
+static const ByteProvider kEoB2ExpObjectShpStartDOSProvider = { ARRAYSIZE(kEoB2ExpObjectShpStartDOS), kEoB2ExpObjectShpStartDOS };
+
+static const byte kEoB2ExpObjectTbl1DOS[13] = {
+ 0x0F, 0x05, 0x0F, 0x05, 0x06, 0x05, 0x06, 0x08,
+ 0x06, 0x08, 0x06, 0x08, 0x00
+};
+
+static const ByteProvider kEoB2ExpObjectTbl1DOSProvider = { ARRAYSIZE(kEoB2ExpObjectTbl1DOS), kEoB2ExpObjectTbl1DOS };
+
+static const byte kEoB2ExpObjectTbl2DOS[10] = {
+ 0x0F, 0x09, 0x0F, 0x09, 0x02, 0x0A, 0x0B, 0x0A,
+ 0x0B, 0x00
+};
+
+static const ByteProvider kEoB2ExpObjectTbl2DOSProvider = { ARRAYSIZE(kEoB2ExpObjectTbl2DOS), kEoB2ExpObjectTbl2DOS };
+
+static const byte kEoB2ExpObjectTbl3DOS[11] = {
+ 0x05, 0x03, 0x05, 0x03, 0x03, 0x03, 0x03, 0x0B,
+ 0x03, 0x0B, 0x00
+};
+
+static const ByteProvider kEoB2ExpObjectTbl3DOSProvider = { ARRAYSIZE(kEoB2ExpObjectTbl3DOS), kEoB2ExpObjectTbl3DOS };
+
+static const byte kEoB2ExpObjectYDOS[4] = {
+ 0x77, 0x67, 0x4F, 0x3F
+};
+
+static const ByteProvider kEoB2ExpObjectYDOSProvider = { ARRAYSIZE(kEoB2ExpObjectYDOS), kEoB2ExpObjectYDOS };
+
+static const byte kEoB2SparkDefStepsDOS[8] = {
+ 0x40, 0x90, 0xE4, 0xB9, 0x6E, 0x1B, 0x06, 0x01
+};
+
+static const ByteProvider kEoB2SparkDefStepsDOSProvider = { ARRAYSIZE(kEoB2SparkDefStepsDOS), kEoB2SparkDefStepsDOS };
+
+static const byte kEoB2SparkDefSubStepsDOS[4] = {
+ 0xC0, 0x30, 0x0C, 0x03
+};
+
+static const ByteProvider kEoB2SparkDefSubStepsDOSProvider = { ARRAYSIZE(kEoB2SparkDefSubStepsDOS), kEoB2SparkDefSubStepsDOS };
+
+static const byte kEoB2SparkDefShiftDOS[4] = {
+ 0x06, 0x04, 0x02, 0x00
+};
+
+static const ByteProvider kEoB2SparkDefShiftDOSProvider = { ARRAYSIZE(kEoB2SparkDefShiftDOS), kEoB2SparkDefShiftDOS };
+
+static const byte kEoB2SparkDefAddDOS[8] = {
+ 0x08, 0x06, 0x1C, 0x14, 0x0D, 0x18, 0x0D, 0x0F
+};
+
+static const ByteProvider kEoB2SparkDefAddDOSProvider = { ARRAYSIZE(kEoB2SparkDefAddDOS), kEoB2SparkDefAddDOS };
+
+static const byte kEoB2SparkDefXDOS[6] = {
+ 0x17, 0x20, 0x17, 0x20, 0x17, 0x20
+};
+
+static const ByteProvider kEoB2SparkDefXDOSProvider = { ARRAYSIZE(kEoB2SparkDefXDOS), kEoB2SparkDefXDOS };
+
+static const byte kEoB2SparkDefYDOS[6] = {
+ 0x02, 0x02, 0x34, 0x34, 0x66, 0x66
+};
+
+static const ByteProvider kEoB2SparkDefYDOSProvider = { ARRAYSIZE(kEoB2SparkDefYDOS), kEoB2SparkDefYDOS };
+
+static const uint32 kEoB2SparkOfFlags1DOS[11] = {
+ 0x40000000, 0x95000000, 0xEA550000, 0xBFAA5400, 0x6AFFA954, 0x15AAFEA9, 0x0055ABFE, 0x000056AB,
+ 0x00000156, 0x00000001, 0x00000000
+};
+
+static const Uint32Provider kEoB2SparkOfFlags1DOSProvider = { ARRAYSIZE(kEoB2SparkOfFlags1DOS), kEoB2SparkOfFlags1DOS };
+
+static const uint32 kEoB2SparkOfFlags2DOS[16] = {
+ 0xC0000000, 0x30000000, 0x0C000000, 0x03000000, 0x00C00000, 0x00300000, 0x000C0000, 0x00030000,
+ 0x0000C000, 0x00003000, 0x00000C00, 0x00000300, 0x000000C0, 0x00000030, 0x0000000C, 0x00000003
+};
+
+static const Uint32Provider kEoB2SparkOfFlags2DOSProvider = { ARRAYSIZE(kEoB2SparkOfFlags2DOS), kEoB2SparkOfFlags2DOS };
+
+static const byte kEoB2SparkOfShiftDOS[16] = {
+ 0x1E, 0x1C, 0x1A, 0x18, 0x16, 0x14, 0x12, 0x10,
+ 0x0E, 0x0C, 0x0A, 0x08, 0x06, 0x04, 0x02, 0x00
+};
+
+static const ByteProvider kEoB2SparkOfShiftDOSProvider = { ARRAYSIZE(kEoB2SparkOfShiftDOS), kEoB2SparkOfShiftDOS };
+
+static const byte kEoB2SparkOfXDOS[16] = {
+ 0x50, 0x70, 0x30, 0x68, 0x20, 0x60, 0x38, 0x78,
+ 0x80, 0x48, 0x58, 0x28, 0x60, 0x40, 0x70, 0x48
+};
+
+static const ByteProvider kEoB2SparkOfXDOSProvider = { ARRAYSIZE(kEoB2SparkOfXDOS), kEoB2SparkOfXDOS };
+
+static const byte kEoB2SparkOfYDOS[16] = {
+ 0x31, 0x2B, 0x48, 0x17, 0x16, 0x48, 0x35, 0x1B,
+ 0x43, 0x2E, 0x24, 0x28, 0x38, 0x1C, 0x16, 0x44
+};
+
+static const ByteProvider kEoB2SparkOfYDOSProvider = { ARRAYSIZE(kEoB2SparkOfYDOS), kEoB2SparkOfYDOS };
+
+static const byte kEoB2SpellPropertiesDOS[1750] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xFE, 0x2B, 0x16, 0x2B, 0x60, 0x00, 0xA7,
+ 0x13, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x5C, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x04, 0x2C, 0x16, 0x2B, 0xC3, 0x00,
+ 0xA7, 0x13, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00,
+ 0x00, 0x21, 0x00, 0x12, 0x2C, 0x16, 0x2B, 0x9D,
+ 0x01, 0xA7, 0x13, 0x4C, 0x00, 0x00, 0x00, 0x95,
+ 0x29, 0xBB, 0x01, 0xA7, 0x13, 0x5F, 0x02, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x1F, 0x2C, 0x16, 0x2B,
+ 0xD9, 0x01, 0xA7, 0x13, 0x00, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0xFA, 0x01, 0xA7, 0x13, 0x55, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x00, 0x2D, 0x2C, 0x16,
+ 0x2B, 0x00, 0x00, 0x00, 0x00, 0x8B, 0x00, 0x00,
+ 0x00, 0x96, 0x29, 0x00, 0x00, 0x00, 0x00, 0x5C,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x2C,
+ 0x16, 0x2B, 0x2D, 0x02, 0xA7, 0x13, 0x88, 0x04,
+ 0x00, 0x00, 0x97, 0x29, 0xE4, 0x02, 0xA7, 0x13,
+ 0x58, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x43,
+ 0x2C, 0x16, 0x2B, 0x00, 0x00, 0x00, 0x00, 0x89,
+ 0x00, 0x00, 0x00, 0x98, 0x29, 0x00, 0x00, 0x00,
+ 0x00, 0x4B, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x48, 0x2C, 0x16, 0x2B, 0x00, 0x00, 0x00, 0x00,
+ 0x4C, 0x00, 0x00, 0x00, 0x9A, 0x29, 0x00, 0x00,
+ 0x00, 0x00, 0x5F, 0x20, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x5C, 0x2C, 0x16, 0x2B, 0x2C, 0x00, 0xA7,
+ 0x13, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x14, 0x40, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x6E, 0x2C, 0x16, 0x2B, 0x00, 0x00,
+ 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x5E, 0x40, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x7B, 0x2C, 0x16, 0x2B, 0x2B,
+ 0x03, 0xA7, 0x13, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x4D, 0x03, 0xA7, 0x13, 0x60, 0x00, 0x00,
+ 0x00, 0x00, 0x11, 0x00, 0x8D, 0x2C, 0x16, 0x2B,
+ 0x02, 0x00, 0xA7, 0x13, 0x00, 0x10, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x9A, 0x2C, 0x16,
+ 0x2B, 0x82, 0x03, 0xA7, 0x13, 0x00, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0xA4, 0x03, 0xA7, 0x13, 0x63,
+ 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0xA3, 0x2C,
+ 0x16, 0x2B, 0x00, 0x00, 0x00, 0x00, 0x48, 0x02,
+ 0x00, 0x00, 0x99, 0x29, 0x00, 0x00, 0x00, 0x00,
+ 0x64, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xA9,
+ 0x2C, 0x16, 0x2B, 0xD3, 0x03, 0xA7, 0x13, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0xF5, 0x03, 0xA7,
+ 0x13, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xB5, 0x2C, 0x16, 0x2B, 0x00, 0x00, 0x00, 0x00,
+ 0x40, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x5E, 0x40, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xCD, 0x2C, 0x16, 0x2B, 0xFA, 0x04, 0xA7,
+ 0x13, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x1C,
+ 0x05, 0xA7, 0x13, 0x47, 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0xDC, 0x2C, 0x16, 0x2B, 0x4B, 0x05,
+ 0xA7, 0x13, 0x88, 0x04, 0x00, 0x00, 0x9B, 0x29,
+ 0x04, 0x06, 0xA7, 0x13, 0x66, 0x00, 0x00, 0x00,
+ 0x00, 0x01, 0x00, 0xEB, 0x2C, 0x16, 0x2B, 0x2B,
+ 0x06, 0xA7, 0x13, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xF0, 0x2C, 0x16, 0x2B,
+ 0x89, 0x06, 0xA7, 0x13, 0x00, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0xAB, 0x06, 0xA7, 0x13, 0x59, 0x00,
+ 0x00, 0x00, 0x00, 0x41, 0x00, 0xFA, 0x2C, 0x16,
+ 0x2B, 0x00, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00,
+ 0x00, 0x9C, 0x29, 0x00, 0x00, 0x00, 0x00, 0x08,
+ 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10, 0x2D,
+ 0x16, 0x2B, 0x3C, 0x07, 0xA7, 0x13, 0x20, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D,
+ 0x2D, 0x16, 0x2B, 0x9F, 0x07, 0xA7, 0x13, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x76, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00,
+ 0x2A, 0x2D, 0x16, 0x2B, 0x94, 0x08, 0xA7, 0x13,
+ 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0xB6, 0x08,
+ 0xA7, 0x13, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x37, 0x2D, 0x16, 0x2B, 0xD0, 0x09, 0xA7,
+ 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x4A, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x45, 0x2D, 0x16, 0x2B, 0x25, 0x0B,
+ 0xA7, 0x13, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00,
+ 0x00, 0x01, 0x00, 0x52, 0x2D, 0x16, 0x2B, 0x89,
+ 0x0B, 0xA7, 0x13, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0x00, 0x61, 0x2D, 0x16, 0x2B,
+ 0xF1, 0x0B, 0xA7, 0x13, 0x20, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x2D, 0x16,
+ 0x2B, 0x0D, 0x0C, 0xA7, 0x13, 0x4C, 0x00, 0x00,
+ 0x00, 0x9D, 0x29, 0x1C, 0x0C, 0xA7, 0x13, 0x49,
+ 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x2D,
+ 0x16, 0x2B, 0x2B, 0x0C, 0xA7, 0x13, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x8C,
+ 0x2D, 0x16, 0x2B, 0x98, 0x0C, 0xA7, 0x13, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x9C, 0x2D, 0x16, 0x2B, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xB2, 0x2D, 0x16, 0x2B, 0x00, 0x00,
+ 0x00, 0x00, 0x5C, 0x00, 0x00, 0x00, 0x9E, 0x29,
+ 0x00, 0x00, 0x00, 0x00, 0x5B, 0x00, 0x04, 0x00,
+ 0x00, 0x00, 0x00, 0xB8, 0x2D, 0x16, 0x2B, 0xDE,
+ 0x0C, 0xA7, 0x13, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x6B, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0x00, 0xCB, 0x2D, 0x16, 0x2B,
+ 0xF6, 0x0C, 0xA7, 0x13, 0x20, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xDD, 0x2D, 0x16,
+ 0x2B, 0x9D, 0x01, 0xA7, 0x13, 0x4C, 0x00, 0x00,
+ 0x00, 0x95, 0x29, 0xBB, 0x01, 0xA7, 0x13, 0x5F,
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEA, 0x2D,
+ 0x16, 0x2B, 0x00, 0x00, 0x00, 0x00, 0x29, 0x00,
+ 0x00, 0x00, 0x9F, 0x29, 0x00, 0x00, 0x00, 0x00,
+ 0x6E, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0xFF,
+ 0x2D, 0x16, 0x2B, 0x1A, 0x0D, 0xA7, 0x13, 0x39,
+ 0x00, 0x00, 0x00, 0xA0, 0x29, 0xC9, 0x0D, 0xA7,
+ 0x13, 0x5B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x2E, 0x16, 0x2B, 0xEF, 0x0D, 0xA7, 0x13,
+ 0x08, 0x24, 0x00, 0x00, 0xA1, 0x29, 0xE4, 0x02,
+ 0xA7, 0x13, 0x63, 0x00, 0x00, 0x00, 0x00, 0x21,
+ 0x00, 0x0F, 0x2E, 0x16, 0x2B, 0xD3, 0x03, 0xA7,
+ 0x13, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0xF5,
+ 0x03, 0xA7, 0x13, 0x65, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x1B, 0x2E, 0x16, 0x2B, 0x99, 0x0E,
+ 0xA7, 0x13, 0x28, 0x00, 0x00, 0x00, 0xA2, 0x29,
+ 0xF2, 0x0E, 0xA7, 0x13, 0x6F, 0x00, 0x20, 0x00,
+ 0x00, 0x00, 0x00, 0x27, 0x2E, 0x16, 0x2B, 0x08,
+ 0x0F, 0xA7, 0x13, 0x40, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x33, 0x2E, 0x16, 0x2B,
+ 0x02, 0x00, 0xA7, 0x13, 0x00, 0x10, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x2E, 0x16,
+ 0x2B, 0x00, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00,
+ 0x00, 0xA3, 0x29, 0x00, 0x00, 0x00, 0x00, 0x71,
+ 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x51, 0x2E,
+ 0x16, 0x2B, 0x00, 0x00, 0x00, 0x00, 0x4C, 0x00,
+ 0x00, 0x00, 0xA4, 0x29, 0x00, 0x00, 0x00, 0x00,
+ 0x5B, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x58,
+ 0x2E, 0x16, 0x2B, 0x38, 0x0F, 0xA7, 0x13, 0x40,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x69, 0x2E, 0x16, 0x2B, 0x95, 0x0F, 0xA7, 0x13,
+ 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x01,
+ 0x00, 0x7E, 0x2E, 0x16, 0x2B, 0x71, 0x0F, 0xA7,
+ 0x13, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x92, 0x2E, 0x16, 0x2B, 0xAE, 0x0F,
+ 0xA7, 0x13, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xA4, 0x2E, 0x16, 0x2B, 0x00,
+ 0x00, 0x00, 0x00, 0x48, 0x02, 0x00, 0x00, 0x9F,
+ 0x29, 0x00, 0x00, 0x00, 0x00, 0x6E, 0x00, 0x08,
+ 0x00, 0x00, 0x00, 0x00, 0xC4, 0x2E, 0x16, 0x2B,
+ 0xD1, 0x0F, 0xA7, 0x13, 0x00, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x00, 0xDA, 0x2E, 0x16,
+ 0x2B, 0xEA, 0x0F, 0xA7, 0x13, 0x20, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6A,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEF, 0x2E,
+ 0x16, 0x2B, 0x0E, 0x10, 0xA7, 0x13, 0x00, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x30, 0x10, 0xA7, 0x13,
+ 0x62, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0xFC,
+ 0x2E, 0x16, 0x2B, 0x4F, 0x10, 0xA7, 0x13, 0x20,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x07, 0x2F, 0x16, 0x2B, 0x2B, 0x0C, 0xA7, 0x13,
+ 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x01,
+ 0x00, 0x13, 0x2F, 0x16, 0x2B, 0x0D, 0x0C, 0xA7,
+ 0x13, 0x4C, 0x00, 0x00, 0x00, 0x9D, 0x29, 0x1C,
+ 0x0C, 0xA7, 0x13, 0x49, 0x00, 0x02, 0x00, 0x00,
+ 0x00, 0x00, 0x1F, 0x2F, 0x16, 0x2B, 0x84, 0x10,
+ 0xA7, 0x13, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00,
+ 0x00, 0x01, 0x00, 0x24, 0x2F, 0x16, 0x2B, 0x97,
+ 0x10, 0xA7, 0x13, 0x20, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x29, 0x2F, 0x16, 0x2B,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x2F, 0x16,
+ 0x2B, 0xA8, 0x13, 0xA7, 0x13, 0x20, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5B,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x2F,
+ 0x16, 0x2B, 0xE6, 0x10, 0xA7, 0x13, 0x00, 0x10,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4F,
+ 0x2F, 0x16, 0x2B, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xCD, 0x13, 0xA7,
+ 0x13, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x50, 0x2F, 0x16, 0x2B, 0x00, 0x00, 0x00, 0x00,
+ 0x4C, 0x00, 0x00, 0x00, 0xA5, 0x29, 0x00, 0x00,
+ 0x00, 0x00, 0x5B, 0x00, 0x00, 0x02, 0x00, 0x00,
+ 0x00, 0x5F, 0x2F, 0x16, 0x2B, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D,
+ 0x14, 0xA7, 0x13, 0x62, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x60, 0x2F, 0x16, 0x2B, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x6A, 0x12, 0xA7, 0x13, 0x65, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x61, 0x2F, 0x16, 0x2B, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xF6, 0x11, 0xA7, 0x13, 0x65, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x62, 0x2F, 0x16, 0x2B,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xE1, 0x12, 0xA7, 0x13, 0x65, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x2F, 0x16,
+ 0x2B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x43, 0x13, 0xA7, 0x13, 0x65,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const ByteProvider kEoB2SpellPropertiesDOSProvider = { ARRAYSIZE(kEoB2SpellPropertiesDOS), kEoB2SpellPropertiesDOS };
+
+static const byte kEoB2MagicFlightPropsDOS[56] = {
+ 0x04, 0xFF, 0x41, 0x0C, 0x0B, 0xFF, 0x04, 0x06,
+ 0x0D, 0xFF, 0x7A, 0x09, 0x0F, 0xFF, 0x4A, 0x08,
+ 0x11, 0x06, 0x38, 0x0A, 0x14, 0x06, 0x7A, 0x0B,
+ 0x18, 0xFF, 0x4A, 0x08, 0x36, 0xFF, 0x4B, 0x09,
+ 0x3F, 0xFF, 0x4B, 0x09, 0x41, 0x06, 0x4B, 0x09,
+ 0x42, 0x06, 0x4B, 0x08, 0x43, 0x06, 0x4B, 0x08,
+ 0x44, 0x06, 0x4B, 0x08, 0x45, 0x06, 0x4B, 0x08
+};
+
+static const ByteProvider kEoB2MagicFlightPropsDOSProvider = { ARRAYSIZE(kEoB2MagicFlightPropsDOS), kEoB2MagicFlightPropsDOS };
+
+static const byte kEoB2TurnUndeadEffectDOS[140] = {
+ 0x0A, 0x07, 0x04, 0x00, 0x00, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0D, 0x0A,
+ 0x07, 0x04, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x10, 0x0D, 0x0A, 0x07,
+ 0x04, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x13, 0x10, 0x0D, 0x0A, 0x07, 0x04,
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x14, 0x13, 0x10, 0x0D, 0x0A, 0x07, 0x04, 0x00,
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x63, 0x14,
+ 0x13, 0x10, 0x0D, 0x0A, 0x07, 0x04, 0x00, 0x00,
+ 0x00, 0xFF, 0xFF, 0x00, 0x63, 0x63, 0x14, 0x13,
+ 0x10, 0x0D, 0x0A, 0x07, 0x04, 0x00, 0x00, 0x00,
+ 0x00, 0xFF, 0x63, 0x63, 0x63, 0x14, 0x13, 0x10,
+ 0x0D, 0x0A, 0x07, 0x04, 0x04, 0x00, 0x00, 0x00,
+ 0x63, 0x63, 0x63, 0x63, 0x14, 0x13, 0x10, 0x0D,
+ 0x0A, 0x07, 0x07, 0x04, 0x04, 0x00, 0x63, 0x63,
+ 0x63, 0x63, 0x63, 0x14, 0x13, 0x10, 0x0D, 0x0A,
+ 0x0A, 0x07, 0x07, 0x04
+};
+
+static const ByteProvider kEoB2TurnUndeadEffectDOSProvider = { ARRAYSIZE(kEoB2TurnUndeadEffectDOS), kEoB2TurnUndeadEffectDOS };
+
+static const byte kEoB2BurningHandsDestDOS[32] = {
+ 0x02, 0x03, 0x04, 0x01, 0x02, 0x05, 0x00, 0x00,
+ 0x00, 0x02, 0x04, 0x01, 0x03, 0x05, 0x00, 0x00,
+ 0x00, 0x01, 0x04, 0x02, 0x03, 0x05, 0x00, 0x00,
+ 0x01, 0x03, 0x04, 0x00, 0x02, 0x05, 0x00, 0x00
+};
+
+static const ByteProvider kEoB2BurningHandsDestDOSProvider = { ARRAYSIZE(kEoB2BurningHandsDestDOS), kEoB2BurningHandsDestDOS };
+
+static const byte kEoB2ConeOfColdDest1DOS[7] = {
+ 0xE0, 0xC0, 0xC1, 0xBF, 0xA0, 0x9F, 0xA1
+};
+
+static const ByteProvider kEoB2ConeOfColdDest1DOSProvider = { ARRAYSIZE(kEoB2ConeOfColdDest1DOS), kEoB2ConeOfColdDest1DOS };
+
+static const byte kEoB2ConeOfColdDest2DOS[7] = {
+ 0x01, 0x02, 0xE2, 0x22, 0x03, 0xE3, 0x23
+};
+
+static const ByteProvider kEoB2ConeOfColdDest2DOSProvider = { ARRAYSIZE(kEoB2ConeOfColdDest2DOS), kEoB2ConeOfColdDest2DOS };
+
+static const byte kEoB2ConeOfColdDest3DOS[7] = {
+ 0x20, 0x40, 0x3F, 0x41, 0x60, 0x5F, 0x61
+};
+
+static const ByteProvider kEoB2ConeOfColdDest3DOSProvider = { ARRAYSIZE(kEoB2ConeOfColdDest3DOS), kEoB2ConeOfColdDest3DOS };
+
+static const byte kEoB2ConeOfColdDest4DOS[7] = {
+ 0xFF, 0xFE, 0x1E, 0xDE, 0xFD, 0x1D, 0xDD
+};
+
+static const ByteProvider kEoB2ConeOfColdDest4DOSProvider = { ARRAYSIZE(kEoB2ConeOfColdDest4DOS), kEoB2ConeOfColdDest4DOS };
+
+static const byte kEoB2ConeOfColdGfxTblDOS[8] = {
+ 0x0F, 0x09, 0x0F, 0x09, 0x02, 0x0A, 0x02, 0x00
+};
+
+static const ByteProvider kEoB2ConeOfColdGfxTblDOSProvider = { ARRAYSIZE(kEoB2ConeOfColdGfxTblDOS), kEoB2ConeOfColdGfxTblDOS };
+
+static const byte kEoB2DscDoorShapeIndexDOS[53] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x01
+};
+
+static const ByteProvider kEoB2DscDoorShapeIndexDOSProvider = { ARRAYSIZE(kEoB2DscDoorShapeIndexDOS), kEoB2DscDoorShapeIndexDOS };
+
+static const byte kEoB2WllFlagPresetDOS[25] = {
+ 0x07, 0x00, 0x40, 0xA8, 0x88, 0x88, 0x88, 0x9F,
+ 0xA8, 0x88, 0x88, 0x88, 0x9F, 0xA8, 0x88, 0x88,
+ 0x88, 0x9F, 0xA8, 0x88, 0x88, 0x88, 0x9F, 0x03,
+ 0x03
+};
+
+static const ByteProvider kEoB2WllFlagPresetDOSProvider = { ARRAYSIZE(kEoB2WllFlagPresetDOS), kEoB2WllFlagPresetDOS };
+
+static const uint16 kEoB2DscShapeCoordsDOS[180] = {
+ 0xFF91, 0xFFC1, 0xFFA1, 0xFFC1, 0xFF75, 0xFFC5, 0xFF8B, 0xFFC5,
+ 0xFF88, 0xFFC3, 0xFFB4, 0xFFC1, 0xFFC4, 0xFFC1, 0xFFA1, 0xFFC5,
+ 0xFFB6, 0xFFC5, 0xFFB0, 0xFFC3, 0xFFD5, 0xFFC1, 0xFFE5, 0xFFC1,
+ 0xFFCB, 0xFFC5, 0xFFE1, 0xFFC5, 0xFFD8, 0xFFC3, 0xFFF8, 0xFFC1,
+ 0x0008, 0xFFC1, 0xFFF6, 0xFFC5, 0x000A, 0xFFC5, 0x0000, 0xFFC3,
+ 0x001B, 0xFFC1, 0x002B, 0xFFC1, 0x001F, 0xFFC5, 0x0035, 0xFFC5,
+ 0x0028, 0xFFC3, 0x003C, 0xFFC1, 0x004C, 0xFFC1, 0x004A, 0xFFC5,
+ 0x005F, 0xFFC5, 0x0050, 0xFFC3, 0x005F, 0xFFC1, 0x006F, 0xFFC1,
+ 0x0075, 0xFFC5, 0x008B, 0xFFC5, 0x0078, 0xFFC3, 0xFF8A, 0xFFCB,
+ 0xFFA4, 0xFFCB, 0xFF68, 0xFFD3, 0xFF88, 0xFFD3, 0xFF8A, 0xFFCE,
+ 0xFFBE, 0xFFCB, 0xFFD8, 0xFFCB, 0xFFAC, 0xFFD3, 0xFFCD, 0xFFD3,
+ 0xFFC5, 0xFFCE, 0xFFF3, 0xFFCB, 0x000D, 0xFFCB, 0xFFF0, 0xFFD3,
+ 0x0010, 0xFFD3, 0x0000, 0xFFCE, 0x0028, 0xFFCB, 0x0042, 0xFFCB,
+ 0x0033, 0xFFD3, 0x0054, 0xFFD3, 0x003B, 0xFFCE, 0x005C, 0xFFCB,
+ 0x0076, 0xFFCB, 0x0078, 0xFFD3, 0x0098, 0xFFD3, 0x0076, 0xFFCE,
+ 0xFF92, 0xFFDD, 0xFFBD, 0xFFDD, 0xFF74, 0xFFEA, 0xFFAD, 0xFFEA,
+ 0xFF9E, 0xFFE2, 0xFFEA, 0xFFDD, 0x0016, 0xFFDD, 0xFFE5, 0xFFEA,
+ 0x001B, 0xFFEA, 0x0000, 0xFFE2, 0x0043, 0xFFDD, 0x006E, 0xFFDD,
+ 0x0053, 0xFFEA, 0x008C, 0xFFEA, 0x0062, 0xFFE2, 0xFF80, 0xFFFC,
+ 0x0080, 0xFFFC, 0xFF80, 0xFFBE, 0x0080, 0xFFBE, 0x0080, 0x0000,
+ 0xFFDA, 0xFFFC, 0x0026, 0xFFFC, 0xFFDA, 0xFFBE, 0x0026, 0xFFBE,
+ 0x0000, 0x0000, 0xFF80, 0xFFFC, 0x0080, 0xFFFC, 0xFF80, 0xFFBE,
+ 0x0080, 0xFFBE, 0x0080, 0x0000
+};
+
+static const Uint16Provider kEoB2DscShapeCoordsDOSProvider = { ARRAYSIZE(kEoB2DscShapeCoordsDOS), kEoB2DscShapeCoordsDOS };
+
+static const byte kEoB2DscDoorScaleOffsDOS[53] = {
+ 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03,
+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x12, 0x12, 0x12, 0x12, 0x12, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x33, 0x34
+};
+
+static const ByteProvider kEoB2DscDoorScaleOffsDOSProvider = { ARRAYSIZE(kEoB2DscDoorScaleOffsDOS), kEoB2DscDoorScaleOffsDOS };
+
+static const byte kEoB2DscDoorScaleMult1DOS[4] = {
+ 0x08, 0x0C, 0x12, 0x00
+};
+
+static const ByteProvider kEoB2DscDoorScaleMult1DOSProvider = { ARRAYSIZE(kEoB2DscDoorScaleMult1DOS), kEoB2DscDoorScaleMult1DOS };
+
+static const byte kEoB2DscDoorScaleMult2DOS[4] = {
+ 0x00, 0x02, 0x04, 0x00
+};
+
+static const ByteProvider kEoB2DscDoorScaleMult2DOSProvider = { ARRAYSIZE(kEoB2DscDoorScaleMult2DOS), kEoB2DscDoorScaleMult2DOS };
+
+static const byte kEoB2DscDoorScaleMult3DOS[4] = {
+ 0x05, 0x08, 0x0C, 0x00
+};
+
+static const ByteProvider kEoB2DscDoorScaleMult3DOSProvider = { ARRAYSIZE(kEoB2DscDoorScaleMult3DOS), kEoB2DscDoorScaleMult3DOS };
+
+static const byte kEoB2DscDoorType5OffsDOS[6] = {
+ 0x05, 0x03, 0x01, 0x05, 0x03, 0x01
+};
+
+static const ByteProvider kEoB2DscDoorType5OffsDOSProvider = { ARRAYSIZE(kEoB2DscDoorType5OffsDOS), kEoB2DscDoorType5OffsDOS };
+
+static const byte kEoB2DscDoorY1DOS[4] = {
+ 0x3B, 0x47, 0x56, 0x00
+};
+
+static const ByteProvider kEoB2DscDoorY1DOSProvider = { ARRAYSIZE(kEoB2DscDoorY1DOS), kEoB2DscDoorY1DOS };
+
+static const byte kEoB2DscDoorY2DOS[4] = {
+ 0x1F, 0x18, 0x0F, 0x00
+};
+
+static const ByteProvider kEoB2DscDoorY2DOSProvider = { ARRAYSIZE(kEoB2DscDoorY2DOS), kEoB2DscDoorY2DOS };
+
+static const byte kEoB2DscDoorFrameY1DOS[4] = {
+ 0x1E, 0x18, 0x10, 0x00
+};
+
+static const ByteProvider kEoB2DscDoorFrameY1DOSProvider = { ARRAYSIZE(kEoB2DscDoorFrameY1DOS), kEoB2DscDoorFrameY1DOS };
+
+static const byte kEoB2DscDoorFrameY2DOS[4] = {
+ 0x3B, 0x47, 0x56, 0x78
+};
+
+static const ByteProvider kEoB2DscDoorFrameY2DOSProvider = { ARRAYSIZE(kEoB2DscDoorFrameY2DOS), kEoB2DscDoorFrameY2DOS };
+
+static const byte kEoB2DscItemPosIndexDOS[16] = {
+ 0x00, 0x01, 0x02, 0x03, 0x02, 0x00, 0x03, 0x01,
+ 0x03, 0x02, 0x01, 0x00, 0x01, 0x03, 0x00, 0x02
+};
+
+static const ByteProvider kEoB2DscItemPosIndexDOSProvider = { ARRAYSIZE(kEoB2DscItemPosIndexDOS), kEoB2DscItemPosIndexDOS };
+
+static const uint16 kEoB2DscItemShpXDOS[18] = {
+ 0xFFC8, 0xFFF8, 0x0028, 0x0058, 0x0088, 0x00B8, 0x00E8, 0xFFB8,
+ 0x0008, 0x0058, 0x00A8, 0x00F8, 0xFFD8, 0x0058, 0x00D8, 0xFFA8,
+ 0x0058, 0x0108
+};
+
+static const Uint16Provider kEoB2DscItemShpXDOSProvider = { ARRAYSIZE(kEoB2DscItemShpXDOS), kEoB2DscItemShpXDOS };
+
+static const byte kEoB2DscItemScaleIndexDOS[18] = {
+ 0xFF, 0xFF, 0x03, 0x03, 0x02, 0x02, 0x02, 0x02,
+ 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0xFF, 0xFF,
+ 0x25, 0x00
+};
+
+static const ByteProvider kEoB2DscItemScaleIndexDOSProvider = { ARRAYSIZE(kEoB2DscItemScaleIndexDOS), kEoB2DscItemScaleIndexDOS };
+
+static const byte kEoB2DscItemTileIndexDOS[18] = {
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x03, 0xFF, 0xFF, 0xFF, 0x09, 0xFF, 0x0B,
+ 0x0C, 0x0D
+};
+
+static const ByteProvider kEoB2DscItemTileIndexDOSProvider = { ARRAYSIZE(kEoB2DscItemTileIndexDOS), kEoB2DscItemTileIndexDOS };
+
+static const byte kEoB2DscItemShapeMapDOS[113] = {
+ 0x00, 0x00, 0x00, 0x05, 0x01, 0x02, 0x03, 0x04,
+ 0x03, 0x05, 0x06, 0x06, 0x12, 0x05, 0x0F, 0x12,
+ 0x14, 0x08, 0x13, 0x11, 0x15, 0x18, 0x07, 0x07,
+ 0x07, 0x1F, 0x09, 0x23, 0x09, 0x09, 0x09, 0x09,
+ 0x08, 0x1C, 0x1C, 0x1A, 0x1B, 0x21, 0x1D, 0x1D,
+ 0x22, 0x22, 0x22, 0x00, 0x16, 0x00, 0x00, 0x17,
+ 0x17, 0x17, 0x17, 0x17, 0x22, 0x21, 0x19, 0x23,
+ 0x10, 0x1E, 0x17, 0x25, 0x17, 0x26, 0x12, 0x21,
+ 0x17, 0x23, 0x1C, 0x00, 0x20, 0x25, 0x12, 0x18,
+ 0x1F, 0x07, 0x07, 0x15, 0x15, 0x0F, 0x03, 0x09,
+ 0x1E, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1B,
+ 0x1B, 0x17, 0x17, 0x16, 0x16, 0x21, 0x08, 0x25,
+ 0x25, 0x25, 0x25, 0x28, 0x03, 0x04, 0x21, 0x00,
+ 0x17, 0x00, 0x20, 0x24, 0x27, 0x27, 0x1C, 0x27,
+ 0x00
+};
+
+static const ByteProvider kEoB2DscItemShapeMapDOSProvider = { ARRAYSIZE(kEoB2DscItemShapeMapDOS), kEoB2DscItemShapeMapDOS };
+
+static const byte kEoB2DscTelptrShpCoordsDOS[156] = {
+ 0x0C, 0x07, 0x1A, 0x01, 0x3E, 0x03, 0x0C, 0x1A,
+ 0x2A, 0x13, 0x40, 0x18, 0x02, 0x2D, 0x16, 0x25,
+ 0x28, 0x32, 0x36, 0x27, 0x0A, 0x3E, 0x16, 0x49,
+ 0x3E, 0x44, 0x06, 0x06, 0x2A, 0x04, 0x37, 0x0A,
+ 0x04, 0x1B, 0x1A, 0x16, 0x37, 0x1D, 0x0E, 0x2A,
+ 0x1B, 0x35, 0x2E, 0x28, 0x42, 0x30, 0x06, 0x47,
+ 0x06, 0x47, 0x2D, 0x4C, 0x0A, 0x04, 0x14, 0x00,
+ 0x2E, 0x01, 0x0C, 0x10, 0x1F, 0x10, 0x2F, 0x10,
+ 0x12, 0x18, 0x28, 0x1D, 0x01, 0x21, 0x08, 0x2A,
+ 0x11, 0x32, 0x2F, 0x2E, 0x1F, 0x25, 0x02, 0x02,
+ 0x01, 0x11, 0x01, 0x2F, 0x08, 0x1E, 0x11, 0x0E,
+ 0x11, 0x26, 0x1C, 0x01, 0x1E, 0x19, 0x1F, 0x33,
+ 0x24, 0x11, 0x26, 0x05, 0x28, 0x2B, 0x2F, 0x22,
+ 0x00, 0x13, 0x05, 0x01, 0x06, 0x08, 0x09, 0x0C,
+ 0x04, 0x1A, 0x08, 0x1F, 0x12, 0x05, 0x12, 0x15,
+ 0x16, 0x10, 0x1A, 0x08, 0x1A, 0x1D, 0x0A, 0x00,
+ 0x0A, 0x00, 0x00, 0x09, 0x00, 0x1E, 0x04, 0x11,
+ 0x08, 0x16, 0x08, 0x06, 0x10, 0x00, 0x11, 0x0D,
+ 0x12, 0x20, 0x15, 0x02, 0x14, 0x09, 0x16, 0x1B,
+ 0x1A, 0x14, 0x1A, 0x14
+};
+
+static const ByteProvider kEoB2DscTelptrShpCoordsDOSProvider = { ARRAYSIZE(kEoB2DscTelptrShpCoordsDOS), kEoB2DscTelptrShpCoordsDOS };
+
+static const byte kEoB2PortalSeqDataDOS[126] = {
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00,
+ 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00,
+ 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00,
+ 0x04, 0x00, 0x03, 0x00, 0x02, 0x00, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
+ 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00,
+ 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04,
+ 0x00, 0x01, 0x01, 0x00, 0x02, 0x01, 0x03, 0x02,
+ 0x02, 0x03, 0x01, 0x04, 0x00, 0x02, 0x01, 0x03,
+ 0x02, 0x04, 0x03, 0x02, 0x04, 0x03, 0x03, 0x04,
+ 0x02, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x03, 0x03,
+ 0x04, 0x04, 0x04, 0x05, 0x04, 0x06, 0x03, 0x07,
+ 0x02, 0x08, 0x02, 0x08, 0x01, 0x09, 0x01, 0x09,
+ 0x01, 0x09, 0x00, 0x0A, 0xFF, 0xFF
+};
+
+static const ByteProvider kEoB2PortalSeqDataDOSProvider = { ARRAYSIZE(kEoB2PortalSeqDataDOS), kEoB2PortalSeqDataDOS };
+
+static const byte kEoB2DscMonsterFrmOffsTbl1DOS[32] = {
+ 0x04, 0xFE, 0x01, 0x03, 0x03, 0x04, 0xFE, 0x01,
+ 0x01, 0x03, 0x04, 0xFE, 0xFE, 0x01, 0x03, 0x04,
+ 0xFC, 0xFD, 0xFF, 0x02, 0x02, 0xFC, 0xFD, 0xFF,
+ 0xFF, 0x02, 0xFC, 0xFD, 0xFD, 0xFF, 0x02, 0xFC
+};
+
+static const ByteProvider kEoB2DscMonsterFrmOffsTbl1DOSProvider = { ARRAYSIZE(kEoB2DscMonsterFrmOffsTbl1DOS), kEoB2DscMonsterFrmOffsTbl1DOS };
+
+static const byte kEoB2DscMonsterFrmOffsTbl2DOS[32] = {
+ 0x04, 0xFE, 0x01, 0x03, 0x03, 0x04, 0xFE, 0x01,
+ 0x01, 0x03, 0x04, 0xFE, 0xFE, 0x01, 0x03, 0x04,
+ 0x04, 0xFD, 0x01, 0x02, 0x02, 0x04, 0xFD, 0x01,
+ 0x01, 0x02, 0x04, 0xFD, 0xFD, 0x01, 0x02, 0x04
+};
+
+static const ByteProvider kEoB2DscMonsterFrmOffsTbl2DOSProvider = { ARRAYSIZE(kEoB2DscMonsterFrmOffsTbl2DOS), kEoB2DscMonsterFrmOffsTbl2DOS };
+
+static const uint16 kEoB2InvSlotXDOS[27] = {
+ 0x00E6, 0x0116, 0x00B5, 0x00C7, 0x00B5, 0x00C7, 0x00B5, 0x00C7,
+ 0x00B5, 0x00C7, 0x00B5, 0x00C7, 0x00B5, 0x00C7, 0x00B5, 0x00C7,
+ 0x00E1, 0x00E0, 0x00E1, 0x012A, 0x011F, 0x0115, 0x012C, 0x012C,
+ 0x012C, 0x00E4, 0x00F0
+};
+
+static const Uint16Provider kEoB2InvSlotXDOSProvider = { ARRAYSIZE(kEoB2InvSlotXDOS), kEoB2InvSlotXDOS };
+
+static const byte kEoB2InvSlotYDOS[27] = {
+ 0x74, 0x74, 0x28, 0x28, 0x3A, 0x3A, 0x4C, 0x4C,
+ 0x5E, 0x5E, 0x70, 0x70, 0x82, 0x82, 0x94, 0x94,
+ 0x38, 0x4C, 0x60, 0x37, 0x4B, 0x89, 0x5E, 0x70,
+ 0x82, 0x88, 0x88
+};
+
+static const ByteProvider kEoB2InvSlotYDOSProvider = { ARRAYSIZE(kEoB2InvSlotYDOS), kEoB2InvSlotYDOS };
+
+static const uint16 kEoB2SlotValidationFlagsDOS[27] = {
+ 0x0008, 0x0008, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
+ 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
+ 0x0001, 0x0002, 0x0004, 0x0020, 0x0040, 0x0010, 0xFFFF, 0x0080,
+ 0x0080, 0x0100, 0x0100
+};
+
+static const Uint16Provider kEoB2SlotValidationFlagsDOSProvider = { ARRAYSIZE(kEoB2SlotValidationFlagsDOS), kEoB2SlotValidationFlagsDOS };
+
+static const byte kEoB2ProjectileWeaponTypesDOS[15] = {
+ 0xFF, 0x01, 0xFF, 0x02, 0x04, 0x03, 0x05, 0x10,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x12
+};
+
+static const ByteProvider kEoB2ProjectileWeaponTypesDOSProvider = { ARRAYSIZE(kEoB2ProjectileWeaponTypesDOS), kEoB2ProjectileWeaponTypesDOS };
+
+static const byte kEoB2WandTypesDOS[8] = {
+ 0x00, 0x11, 0x17, 0x31, 0x0D, 0xFF, 0x04, 0x0C
+};
+
+static const ByteProvider kEoB2WandTypesDOSProvider = { ARRAYSIZE(kEoB2WandTypesDOS), kEoB2WandTypesDOS };
+
+static const byte kEoB2DrawObjPosIndexDOS[20] = {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x02, 0x00, 0x03,
+ 0x01, 0x04, 0x02, 0x03, 0x00, 0x01, 0x04, 0x01,
+ 0x03, 0x00, 0x02, 0x04
+};
+
+static const ByteProvider kEoB2DrawObjPosIndexDOSProvider = { ARRAYSIZE(kEoB2DrawObjPosIndexDOS), kEoB2DrawObjPosIndexDOS };
+
+static const byte kEoB2FlightObjFlipIndexDOS[16] = {
+ 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01,
+ 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00
+};
+
+static const ByteProvider kEoB2FlightObjFlipIndexDOSProvider = { ARRAYSIZE(kEoB2FlightObjFlipIndexDOS), kEoB2FlightObjFlipIndexDOS };
+
+static const byte kEoB2FlightObjShpMapDOS[45] = {
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x02,
+ 0xFF, 0xFF, 0x04, 0xFF, 0x06, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x00, 0x00, 0x00, 0x00
+};
+
+static const ByteProvider kEoB2FlightObjShpMapDOSProvider = { ARRAYSIZE(kEoB2FlightObjShpMapDOS), kEoB2FlightObjShpMapDOS };
+
+static const byte kEoB2FlightObjSclIndexDOS[72] = {
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03,
+ 0xFF, 0xFF, 0x03, 0x03, 0xFF, 0xFF, 0x03, 0x03,
+ 0xFF, 0xFF, 0x03, 0x03, 0xFF, 0xFF, 0x03, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+ 0x02, 0x02, 0x02, 0x02, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x01, 0xFF, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x01, 0xFF, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
+};
+
+static const ByteProvider kEoB2FlightObjSclIndexDOSProvider = { ARRAYSIZE(kEoB2FlightObjSclIndexDOS), kEoB2FlightObjSclIndexDOS };
+
+static const uint16 kEoB2TransferPortraitFramesDOS[32] = {
+ 0x0004, 0x0018, 0x009D, 0x0038, 0x00A2, 0x0018, 0x013C, 0x0039,
+ 0x0004, 0x0040, 0x009D, 0x0060, 0x00A2, 0x0040, 0x013C, 0x0060,
+ 0x0004, 0x0068, 0x009D, 0x0089, 0x00A2, 0x0068, 0x013C, 0x0089,
+ 0x0004, 0x0094, 0x002E, 0x009E, 0x0110, 0x0094, 0x013A, 0x009E
+};
+
+static const Uint16Provider kEoB2TransferPortraitFramesDOSProvider = { ARRAYSIZE(kEoB2TransferPortraitFramesDOS), kEoB2TransferPortraitFramesDOS };
+
+static const byte kEoB2TransferConvertTableDOS[49] = {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x00, 0x05, 0x06,
+ 0x0A, 0x00, 0x0B, 0x00, 0x0C, 0x0D, 0x00, 0x0E,
+ 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x00, 0x00,
+ 0x17, 0x18, 0x22, 0x24, 0x23, 0x25, 0x26, 0x27,
+ 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F,
+ 0x31, 0x30, 0x32, 0x33, 0x00, 0x35, 0x34, 0x36,
+ 0x37
+};
+
+static const ByteProvider kEoB2TransferConvertTableDOSProvider = { ARRAYSIZE(kEoB2TransferConvertTableDOS), kEoB2TransferConvertTableDOS };
+
+static const byte kEoB2TransferItemTableDOS[60] = {
+ 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01,
+ 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00,
+ 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01,
+ 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01,
+ 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00
+};
+
+static const ByteProvider kEoB2TransferItemTableDOSProvider = { ARRAYSIZE(kEoB2TransferItemTableDOS), kEoB2TransferItemTableDOS };
+
+static const uint32 kEoB2TransferExpTableDOS[6] = {
+ 0x000F423F, 0x000B71AF, 0x000DBB9F, 0x0006B6BF, 0x000DBB9F, 0x000DBB9F
+};
+
+static const Uint32Provider kEoB2TransferExpTableDOSProvider = { ARRAYSIZE(kEoB2TransferExpTableDOS), kEoB2TransferExpTableDOS };
+
+static const DarkMoonAnimCommand kEoB2IntroAnimData00DOS[5] = {
+ { 0x01, 0, 208, 16, 1, 1, 0, 0, 0, 0 },
+ { 0x01, 0, 208, 16, 1, 1, 0, 0, 0, 0 },
+ { 0x00, 0, 216, 51, 8, 0, 0, 0, 0, 0 },
+ { 0x06, 3, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonAnimCommandProvider kEoB2IntroAnimData00DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData00DOS), kEoB2IntroAnimData00DOS };
+
+static const DarkMoonAnimCommand kEoB2IntroAnimData01DOS[5] = {
+ { 0x01, 1, 184, 8, 1, 1, 0, 0, 0, 0 },
+ { 0x01, 1, 184, 8, 1, 1, 0, 0, 0, 0 },
+ { 0x00, 0, 216, 51, 7, 0, 0, 0, 0, 0 },
+ { 0x06, 4, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonAnimCommandProvider kEoB2IntroAnimData01DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData01DOS), kEoB2IntroAnimData01DOS };
+
+static const DarkMoonAnimCommand kEoB2IntroAnimData02DOS[5] = {
+ { 0x01, 2, 216, 51, 1, 0, 0, 0, 0, 0 },
+ { 0x01, 2, 216, 51, 1, 0, 0, 0, 0, 0 },
+ { 0x00, 0, 216, 51, 18, 0, 0, 0, 0, 0 },
+ { 0x06, 6, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonAnimCommandProvider kEoB2IntroAnimData02DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData02DOS), kEoB2IntroAnimData02DOS };
+
+static const DarkMoonAnimCommand kEoB2IntroAnimData03DOS[4] = {
+ { 0x00, 0, 0, 0, 1, 2, 0, 0, 0, 0 },
+ { 0x06, 3, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0x00, 0, 0, 0, 1, 2, 0, 0, 0, 0 },
+ { 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonAnimCommandProvider kEoB2IntroAnimData03DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData03DOS), kEoB2IntroAnimData03DOS };
+
+static const DarkMoonAnimCommand kEoB2IntroAnimData04DOS[3] = {
+ { 0x01, 0, 282, 8, 1, 0, 0, 0, 0, 0 },
+ { 0x01, 0, 282, 8, 1, 0, 0, 0, 0, 0 },
+ { 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonAnimCommandProvider kEoB2IntroAnimData04DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData04DOS), kEoB2IntroAnimData04DOS };
+
+static const DarkMoonAnimCommand kEoB2IntroAnimData05DOS[4] = {
+ { 0x00, 0, 0, 0, 1, 1, 0, 0, 0, 0 },
+ { 0x00, 0, 0, 0, 1, 1, 0, 0, 0, 0 },
+ { 0x06, 5, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonAnimCommandProvider kEoB2IntroAnimData05DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData05DOS), kEoB2IntroAnimData05DOS };
+
+static const DarkMoonAnimCommand kEoB2IntroAnimData06DOS[16] = {
+ { 0x01, 12, 170, 11, 2, 0, 0, 0, 0, 0 },
+ { 0x01, 12, 188, 38, 2, 0, 0, 0, 0, 0 },
+ { 0x01, 12, 203, 63, 2, 0, 0, 0, 0, 0 },
+ { 0x01, 12, 218, 85, 2, 0, 0, 0, 0, 0 },
+ { 0x01, 12, 232, 107, 2, 0, 0, 0, 0, 0 },
+ { 0x06, 9, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0x01, 3, 242, 125, 2, 0, 0, 0, 0, 0 },
+ { 0x01, 4, 240, 125, 3, 0, 0, 0, 0, 0 },
+ { 0x01, 5, 238, 124, 3, 0, 0, 0, 0, 0 },
+ { 0x01, 6, 236, 123, 3, 0, 0, 0, 0, 0 },
+ { 0x01, 7, 232, 121, 3, 0, 0, 0, 0, 0 },
+ { 0x01, 8, 226, 120, 4, 0, 0, 0, 0, 0 },
+ { 0x01, 9, 220, 119, 4, 0, 0, 0, 0, 0 },
+ { 0x01, 10, 241, 115, 4, 0, 0, 0, 0, 0 },
+ { 0x01, 11, 241, 115, 4, 0, 0, 0, 0, 0 },
+ { 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonAnimCommandProvider kEoB2IntroAnimData06DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData06DOS), kEoB2IntroAnimData06DOS };
+
+static const DarkMoonAnimCommand kEoB2IntroAnimData07DOS[5] = {
+ { 0x01, 12, 54, 17, 2, 0, 0, 0, 0, 0 },
+ { 0x01, 12, 80, 53, 2, 0, 0, 0, 0, 0 },
+ { 0x01, 12, 104, 87, 2, 0, 0, 0, 0, 0 },
+ { 0x01, 12, 130, 124, 2, 0, 0, 0, 0, 0 },
+ { 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonAnimCommandProvider kEoB2IntroAnimData07DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData07DOS), kEoB2IntroAnimData07DOS };
+
+static const DarkMoonAnimCommand kEoB2IntroAnimData08DOS[6] = {
+ { 0x01, 12, 112, 8, 2, 0, 0, 0, 0, 0 },
+ { 0x01, 12, 126, 34, 2, 0, 0, 0, 0, 0 },
+ { 0x01, 12, 142, 60, 2, 0, 0, 0, 0, 0 },
+ { 0x01, 12, 170, 109, 2, 0, 0, 0, 0, 0 },
+ { 0x06, 8, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonAnimCommandProvider kEoB2IntroAnimData08DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData08DOS), kEoB2IntroAnimData08DOS };
+
+static const DarkMoonAnimCommand kEoB2IntroAnimData09DOS[4] = {
+ { 0x05, 0, 184, 64, 6, 0, 30, 8, 3, 16 },
+ { 0x05, 0, 184, 64, 6, 0, 33, 8, 3, 16 },
+ { 0x05, 0, 184, 64, 6, 0, 36, 8, 3, 16 },
+ { 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonAnimCommandProvider kEoB2IntroAnimData09DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData09DOS), kEoB2IntroAnimData09DOS };
+
+static const DarkMoonAnimCommand kEoB2IntroAnimData10DOS[10] = {
+ { 0x05, 0, 184, 64, 0, 0, 30, 8, 3, 16 },
+ { 0x05, 0, 128, 88, 3, 0, 30, 32, 4, 24 },
+ { 0x05, 0, 128, 88, 3, 0, 34, 32, 4, 24 },
+ { 0x05, 0, 184, 64, 0, 0, 33, 8, 3, 16 },
+ { 0x05, 0, 128, 88, 3, 0, 30, 32, 4, 24 },
+ { 0x05, 0, 128, 88, 3, 0, 34, 32, 4, 24 },
+ { 0x05, 0, 184, 64, 0, 0, 36, 8, 3, 16 },
+ { 0x05, 0, 128, 88, 3, 0, 30, 32, 4, 24 },
+ { 0x05, 0, 128, 88, 3, 0, 34, 32, 4, 24 },
+ { 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonAnimCommandProvider kEoB2IntroAnimData10DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData10DOS), kEoB2IntroAnimData10DOS };
+
+static const DarkMoonAnimCommand kEoB2IntroAnimData11DOS[16] = {
+ { 0x03, 15, 36, 48, 1, 1, 0, 0, 0, 0 },
+ { 0x03, 15, 36, 48, 1, 2, 0, 0, 0, 0 },
+ { 0x03, 15, 36, 48, 1, 3, 0, 0, 0, 0 },
+ { 0x03, 15, 36, 48, 1, 4, 0, 0, 0, 0 },
+ { 0x06, 11, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0x03, 15, 36, 48, 1, 5, 0, 0, 0, 0 },
+ { 0x03, 15, 36, 48, 1, 6, 0, 0, 0, 0 },
+ { 0x03, 15, 36, 48, 90, 7, 0, 0, 0, 0 },
+ { 0x03, 15, 36, 48, 1, 6, 0, 0, 0, 0 },
+ { 0x03, 15, 36, 48, 1, 5, 0, 0, 0, 0 },
+ { 0x03, 15, 36, 48, 1, 4, 0, 0, 0, 0 },
+ { 0x03, 15, 36, 48, 1, 3, 0, 0, 0, 0 },
+ { 0x03, 15, 36, 48, 1, 2, 0, 0, 0, 0 },
+ { 0x03, 15, 36, 48, 1, 1, 0, 0, 0, 0 },
+ { 0x03, 15, 36, 48, 1, 0, 0, 0, 0, 0 },
+ { 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonAnimCommandProvider kEoB2IntroAnimData11DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData11DOS), kEoB2IntroAnimData11DOS };
+
+static const DarkMoonAnimCommand kEoB2IntroAnimData12DOS[3] = {
+ { 0x02, 15, 36, 48, 90, 0, 0, 0, 0, 0 },
+ { 0x07, 15, 36, 48, 0, 0, 0, 0, 0, 0 },
+ { 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonAnimCommandProvider kEoB2IntroAnimData12DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData12DOS), kEoB2IntroAnimData12DOS };
+
+static const DarkMoonAnimCommand kEoB2IntroAnimData13DOS[4] = {
+ { 0x06, 10, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0x05, 0, 104, 24, 5, 0, 0, 8, 15, 112 },
+ { 0x05, 0, 104, 24, 5, 0, 15, 8, 15, 112 },
+ { 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonAnimCommandProvider kEoB2IntroAnimData13DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData13DOS), kEoB2IntroAnimData13DOS };
+
+static const DarkMoonAnimCommand kEoB2IntroAnimData14DOS[6] = {
+ { 0x05, 0, 184, 64, 0, 0, 30, 8, 3, 16 },
+ { 0x05, 0, 104, 72, 5, 0, 10, 120, 10, 64 },
+ { 0x05, 0, 184, 64, 0, 0, 33, 8, 3, 16 },
+ { 0x05, 0, 104, 72, 5, 0, 20, 120, 10, 64 },
+ { 0x05, 0, 184, 64, 0, 0, 36, 8, 3, 16 },
+ { 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonAnimCommandProvider kEoB2IntroAnimData14DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData14DOS), kEoB2IntroAnimData14DOS };
+
+static const DarkMoonAnimCommand kEoB2IntroAnimData15DOS[4] = {
+ { 0x05, 0, 104, 0, 8, 0, 0, 0, 13, 200 },
+ { 0x05, 0, 104, 0, 8, 0, 13, 0, 13, 200 },
+ { 0x05, 0, 104, 0, 8, 0, 26, 0, 13, 200 },
+ { 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonAnimCommandProvider kEoB2IntroAnimData15DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData15DOS), kEoB2IntroAnimData15DOS };
+
+static const DarkMoonAnimCommand kEoB2IntroAnimData16DOS[11] = {
+ { 0x06, 255, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0x02, 9, 224, 72, 0, 0, 0, 0, 0, 0 },
+ { 0x02, 3, 240, 40, 0, 0, 0, 0, 0, 0 },
+ { 0x02, 6, 112, 72, 6, 0, 0, 0, 0, 0 },
+ { 0x02, 1, 224, 72, 0, 0, 0, 0, 0, 0 },
+ { 0x02, 4, 240, 40, 0, 0, 0, 0, 0, 0 },
+ { 0x02, 7, 112, 72, 6, 0, 0, 0, 0, 0 },
+ { 0x02, 2, 224, 72, 0, 0, 0, 0, 0, 0 },
+ { 0x02, 5, 240, 40, 0, 0, 0, 0, 0, 0 },
+ { 0x02, 8, 112, 72, 6, 0, 0, 0, 0, 0 },
+ { 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonAnimCommandProvider kEoB2IntroAnimData16DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData16DOS), kEoB2IntroAnimData16DOS };
+
+static const DarkMoonAnimCommand kEoB2IntroAnimData17DOS[12] = {
+ { 0x06, 255, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0x02, 9, 224, 72, 0, 0, 0, 0, 0, 0 },
+ { 0x02, 3, 240, 40, 6, 0, 0, 0, 0, 0 },
+ { 0x06, 5, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0x00, 0, 0, 0, 1, 3, 0, 0, 0, 0 },
+ { 0x00, 0, 0, 0, 1, 3, 0, 0, 0, 0 },
+ { 0x00, 0, 0, 0, 1, 3, 0, 0, 0, 0 },
+ { 0x02, 1, 224, 72, 0, 0, 0, 0, 0, 0 },
+ { 0x02, 4, 240, 40, 6, 0, 0, 0, 0, 0 },
+ { 0x02, 2, 224, 72, 0, 0, 0, 0, 0, 0 },
+ { 0x02, 5, 240, 40, 6, 0, 0, 0, 0, 0 },
+ { 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonAnimCommandProvider kEoB2IntroAnimData17DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData17DOS), kEoB2IntroAnimData17DOS };
+
+static const DarkMoonAnimCommand kEoB2IntroAnimData18DOS[8] = {
+ { 0x06, 255, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0x02, 9, 224, 72, 0, 0, 0, 0, 0, 0 },
+ { 0x02, 3, 240, 40, 6, 0, 0, 0, 0, 0 },
+ { 0x02, 1, 224, 72, 0, 0, 0, 0, 0, 0 },
+ { 0x02, 4, 240, 40, 6, 0, 0, 0, 0, 0 },
+ { 0x02, 2, 224, 72, 0, 0, 0, 0, 0, 0 },
+ { 0x02, 5, 240, 40, 6, 0, 0, 0, 0, 0 },
+ { 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonAnimCommandProvider kEoB2IntroAnimData18DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData18DOS), kEoB2IntroAnimData18DOS };
+
+static const DarkMoonAnimCommand kEoB2IntroAnimData19DOS[14] = {
+ { 0x06, 255, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0x02, 10, 136, 40, 0, 0, 0, 0, 0, 0 },
+ { 0x02, 9, 224, 72, 0, 0, 0, 0, 0, 0 },
+ { 0x02, 3, 240, 40, 3, 0, 0, 0, 0, 0 },
+ { 0x02, 11, 136, 40, 3, 0, 0, 0, 0, 0 },
+ { 0x02, 12, 136, 40, 0, 0, 0, 0, 0, 0 },
+ { 0x02, 1, 224, 72, 0, 0, 0, 0, 0, 0 },
+ { 0x02, 4, 240, 40, 3, 0, 0, 0, 0, 0 },
+ { 0x02, 13, 136, 40, 3, 0, 0, 0, 0, 0 },
+ { 0x02, 10, 136, 40, 0, 0, 0, 0, 0, 0 },
+ { 0x02, 2, 224, 72, 0, 0, 0, 0, 0, 0 },
+ { 0x02, 5, 240, 40, 3, 0, 0, 0, 0, 0 },
+ { 0x02, 13, 136, 40, 3, 0, 0, 0, 0, 0 },
+ { 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonAnimCommandProvider kEoB2IntroAnimData19DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData19DOS), kEoB2IntroAnimData19DOS };
+
+static const DarkMoonAnimCommand kEoB2IntroAnimData20DOS[14] = {
+ { 0x06, 255, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0x02, 11, 136, 40, 0, 0, 0, 0, 0, 0 },
+ { 0x02, 9, 224, 72, 0, 0, 0, 0, 0, 0 },
+ { 0x02, 3, 240, 40, 3, 0, 0, 0, 0, 0 },
+ { 0x02, 10, 136, 40, 3, 0, 0, 0, 0, 0 },
+ { 0x02, 13, 136, 40, 0, 0, 0, 0, 0, 0 },
+ { 0x02, 1, 224, 72, 0, 0, 0, 0, 0, 0 },
+ { 0x02, 4, 240, 40, 3, 0, 0, 0, 0, 0 },
+ { 0x02, 12, 136, 40, 3, 0, 0, 0, 0, 0 },
+ { 0x02, 11, 136, 40, 0, 0, 0, 0, 0, 0 },
+ { 0x02, 2, 224, 72, 0, 0, 0, 0, 0, 0 },
+ { 0x02, 5, 240, 40, 3, 0, 0, 0, 0, 0 },
+ { 0x02, 13, 136, 40, 3, 0, 0, 0, 0, 0 },
+ { 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonAnimCommandProvider kEoB2IntroAnimData20DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData20DOS), kEoB2IntroAnimData20DOS };
+
+static const DarkMoonAnimCommand kEoB2IntroAnimData21DOS[14] = {
+ { 0x06, 255, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0x02, 14, 136, 40, 0, 0, 0, 0, 0, 0 },
+ { 0x02, 9, 224, 72, 0, 0, 0, 0, 0, 0 },
+ { 0x02, 3, 240, 40, 3, 0, 0, 0, 0, 0 },
+ { 0x02, 15, 136, 40, 3, 0, 0, 0, 0, 0 },
+ { 0x02, 16, 136, 40, 0, 0, 0, 0, 0, 0 },
+ { 0x02, 1, 224, 72, 0, 0, 0, 0, 0, 0 },
+ { 0x02, 4, 240, 40, 3, 0, 0, 0, 0, 0 },
+ { 0x02, 17, 136, 40, 3, 0, 0, 0, 0, 0 },
+ { 0x02, 14, 136, 40, 0, 0, 0, 0, 0, 0 },
+ { 0x02, 2, 224, 72, 0, 0, 0, 0, 0, 0 },
+ { 0x02, 5, 240, 40, 3, 0, 0, 0, 0, 0 },
+ { 0x02, 17, 136, 40, 3, 0, 0, 0, 0, 0 },
+ { 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonAnimCommandProvider kEoB2IntroAnimData21DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData21DOS), kEoB2IntroAnimData21DOS };
+
+static const DarkMoonAnimCommand kEoB2IntroAnimData22DOS[2] = {
+ { 0x05, 0, 104, 32, 0, 0, 10, 0, 10, 96 },
+ { 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonAnimCommandProvider kEoB2IntroAnimData22DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData22DOS), kEoB2IntroAnimData22DOS };
+
+static const DarkMoonAnimCommand kEoB2IntroAnimData23DOS[2] = {
+ { 0x05, 0, 104, 32, 3, 0, 20, 0, 10, 96 },
+ { 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonAnimCommandProvider kEoB2IntroAnimData23DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData23DOS), kEoB2IntroAnimData23DOS };
+
+static const DarkMoonAnimCommand kEoB2IntroAnimData24DOS[2] = {
+ { 0x05, 0, 104, 32, 0, 0, 30, 0, 10, 96 },
+ { 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonAnimCommandProvider kEoB2IntroAnimData24DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData24DOS), kEoB2IntroAnimData24DOS };
+
+static const DarkMoonAnimCommand kEoB2IntroAnimData25DOS[2] = {
+ { 0x05, 0, 104, 32, 0, 0, 0, 96, 10, 96 },
+ { 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonAnimCommandProvider kEoB2IntroAnimData25DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData25DOS), kEoB2IntroAnimData25DOS };
+
+static const DarkMoonAnimCommand kEoB2IntroAnimData26DOS[2] = {
+ { 0x05, 0, 104, 32, 3, 0, 10, 96, 10, 96 },
+ { 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonAnimCommandProvider kEoB2IntroAnimData26DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData26DOS), kEoB2IntroAnimData26DOS };
+
+static const DarkMoonAnimCommand kEoB2IntroAnimData27DOS[2] = {
+ { 0x05, 0, 104, 32, 0, 0, 20, 96, 10, 96 },
+ { 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonAnimCommandProvider kEoB2IntroAnimData27DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData27DOS), kEoB2IntroAnimData27DOS };
+
+static const DarkMoonAnimCommand kEoB2IntroAnimData28DOS[2] = {
+ { 0x05, 0, 104, 32, 0, 0, 0, 0, 10, 96 },
+ { 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonAnimCommandProvider kEoB2IntroAnimData28DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData28DOS), kEoB2IntroAnimData28DOS };
+
+static const DarkMoonAnimCommand kEoB2IntroAnimData29DOS[2] = {
+ { 0x05, 0, 104, 32, 3, 0, 0, 0, 10, 96 },
+ { 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonAnimCommandProvider kEoB2IntroAnimData29DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData29DOS), kEoB2IntroAnimData29DOS };
+
+static const DarkMoonAnimCommand kEoB2IntroAnimData30DOS[2] = {
+ { 0x05, 0, 104, 32, 4, 0, 10, 0, 10, 96 },
+ { 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonAnimCommandProvider kEoB2IntroAnimData30DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData30DOS), kEoB2IntroAnimData30DOS };
+
+static const DarkMoonAnimCommand kEoB2IntroAnimData31DOS[2] = {
+ { 0x05, 0, 104, 32, 8, 0, 20, 0, 10, 96 },
+ { 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonAnimCommandProvider kEoB2IntroAnimData31DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData31DOS), kEoB2IntroAnimData31DOS };
+
+static const DarkMoonAnimCommand kEoB2IntroAnimData32DOS[5] = {
+ { 0x06, 255, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0x05, 0, 176, 56, 3, 0, 19, 136, 2, 8 },
+ { 0x05, 0, 176, 56, 3, 0, 21, 136, 2, 8 },
+ { 0x05, 0, 176, 56, 3, 0, 23, 136, 2, 8 },
+ { 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonAnimCommandProvider kEoB2IntroAnimData32DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData32DOS), kEoB2IntroAnimData32DOS };
+
+static const DarkMoonAnimCommand kEoB2IntroAnimData33DOS[14] = {
+ { 0x06, 255, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0x05, 0, 176, 56, 0, 0, 19, 136, 2, 8 },
+ { 0x05, 0, 144, 88, 5, 0, 1, 136, 6, 40 },
+ { 0x05, 0, 176, 56, 0, 0, 21, 136, 2, 8 },
+ { 0x05, 0, 144, 88, 3, 0, 7, 136, 6, 40 },
+ { 0x05, 0, 176, 56, 2, 0, 23, 136, 2, 8 },
+ { 0x05, 0, 144, 88, 3, 0, 13, 136, 6, 40 },
+ { 0x05, 0, 176, 56, 0, 0, 19, 136, 2, 8 },
+ { 0x05, 0, 144, 88, 6, 0, 1, 136, 6, 40 },
+ { 0x05, 0, 176, 56, 0, 0, 21, 136, 2, 8 },
+ { 0x05, 0, 144, 88, 3, 0, 7, 136, 6, 40 },
+ { 0x05, 0, 176, 56, 0, 0, 23, 136, 2, 8 },
+ { 0x05, 0, 144, 88, 3, 0, 1, 136, 6, 40 },
+ { 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonAnimCommandProvider kEoB2IntroAnimData33DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData33DOS), kEoB2IntroAnimData33DOS };
+
+static const DarkMoonAnimCommand kEoB2IntroAnimData34DOS[8] = {
+ { 0x06, 255, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0x05, 0, 80, 64, 0, 0, 1, 136, 2, 16 },
+ { 0x05, 0, 248, 64, 3, 0, 7, 136, 2, 16 },
+ { 0x05, 0, 80, 64, 0, 0, 3, 136, 2, 16 },
+ { 0x05, 0, 248, 64, 3, 0, 9, 136, 2, 16 },
+ { 0x05, 0, 80, 64, 0, 0, 5, 136, 2, 16 },
+ { 0x05, 0, 248, 64, 3, 0, 11, 136, 2, 16 },
+ { 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonAnimCommandProvider kEoB2IntroAnimData34DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData34DOS), kEoB2IntroAnimData34DOS };
+
+static const DarkMoonAnimCommand kEoB2IntroAnimData35DOS[5] = {
+ { 0x06, 255, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0x05, 0, 16, 48, 0, 0, 0, 152, 14, 48 },
+ { 0x05, 0, 192, 48, 4, 0, 14, 128, 13, 48 },
+ { 0x05, 0, 16, 48, 0, 0, 1, 40, 35, 48 },
+ { 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonAnimCommandProvider kEoB2IntroAnimData35DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData35DOS), kEoB2IntroAnimData35DOS };
+
+static const DarkMoonAnimCommand kEoB2IntroAnimData36DOS[6] = {
+ { 0x06, 1, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0x05, 0, 168, 24, 3, 0, 0, 128, 2, 32 },
+ { 0x05, 0, 152, 16, 3, 0, 0, 88, 5, 40 },
+ { 0x05, 0, 128, 0, 3, 0, 0, 0, 10, 88 },
+ { 0x05, 0, 104, 0, 3, 0, 13, 0, 14, 88 },
+ { 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonAnimCommandProvider kEoB2IntroAnimData36DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData36DOS), kEoB2IntroAnimData36DOS };
+
+static const DarkMoonAnimCommand kEoB2IntroAnimData37DOS[2] = {
+ { 0x05, 0, 104, 0, 0, 0, 13, 0, 13, 200 },
+ { 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonAnimCommandProvider kEoB2IntroAnimData37DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData37DOS), kEoB2IntroAnimData37DOS };
+
+static const DarkMoonAnimCommand kEoB2IntroAnimData38DOS[43] = {
+ { 0x03, 17, 36, 48, 0, 1, 0, 0, 0, 0 },
+ { 0x03, 16, 142, 80, 0, 1, 0, 0, 0, 0 },
+ { 0x03, 19, 151, 28, 1, 1, 0, 0, 0, 0 },
+ { 0x03, 17, 36, 48, 0, 2, 0, 0, 0, 0 },
+ { 0x03, 16, 142, 80, 0, 2, 0, 0, 0, 0 },
+ { 0x03, 19, 151, 28, 1, 2, 0, 0, 0, 0 },
+ { 0x03, 17, 36, 48, 0, 3, 0, 0, 0, 0 },
+ { 0x03, 16, 142, 80, 0, 3, 0, 0, 0, 0 },
+ { 0x03, 19, 151, 28, 1, 3, 0, 0, 0, 0 },
+ { 0x03, 17, 36, 48, 0, 4, 0, 0, 0, 0 },
+ { 0x03, 16, 142, 80, 0, 4, 0, 0, 0, 0 },
+ { 0x03, 19, 151, 28, 1, 4, 0, 0, 0, 0 },
+ { 0x03, 17, 36, 48, 0, 5, 0, 0, 0, 0 },
+ { 0x03, 16, 142, 80, 0, 5, 0, 0, 0, 0 },
+ { 0x03, 19, 151, 28, 1, 5, 0, 0, 0, 0 },
+ { 0x03, 17, 36, 48, 0, 6, 0, 0, 0, 0 },
+ { 0x03, 16, 142, 80, 0, 6, 0, 0, 0, 0 },
+ { 0x03, 19, 151, 28, 1, 6, 0, 0, 0, 0 },
+ { 0x03, 17, 36, 48, 0, 7, 0, 0, 0, 0 },
+ { 0x03, 16, 142, 80, 0, 7, 0, 0, 0, 0 },
+ { 0x03, 19, 151, 28, 54, 7, 0, 0, 0, 0 },
+ { 0x03, 17, 36, 48, 0, 6, 0, 0, 0, 0 },
+ { 0x03, 16, 142, 80, 0, 6, 0, 0, 0, 0 },
+ { 0x03, 19, 151, 28, 1, 6, 0, 0, 0, 0 },
+ { 0x03, 17, 36, 48, 0, 5, 0, 0, 0, 0 },
+ { 0x03, 16, 142, 80, 0, 5, 0, 0, 0, 0 },
+ { 0x03, 19, 151, 28, 1, 5, 0, 0, 0, 0 },
+ { 0x03, 17, 36, 48, 0, 4, 0, 0, 0, 0 },
+ { 0x03, 16, 142, 80, 0, 4, 0, 0, 0, 0 },
+ { 0x03, 19, 151, 28, 1, 4, 0, 0, 0, 0 },
+ { 0x03, 17, 36, 48, 0, 3, 0, 0, 0, 0 },
+ { 0x03, 16, 142, 80, 0, 3, 0, 0, 0, 0 },
+ { 0x03, 19, 151, 28, 1, 3, 0, 0, 0, 0 },
+ { 0x03, 17, 36, 48, 0, 2, 0, 0, 0, 0 },
+ { 0x03, 16, 142, 80, 0, 2, 0, 0, 0, 0 },
+ { 0x03, 19, 151, 28, 1, 2, 0, 0, 0, 0 },
+ { 0x03, 17, 36, 48, 0, 1, 0, 0, 0, 0 },
+ { 0x03, 16, 142, 80, 0, 1, 0, 0, 0, 0 },
+ { 0x03, 19, 151, 28, 1, 1, 0, 0, 0, 0 },
+ { 0x03, 17, 36, 48, 0, 0, 0, 0, 0, 0 },
+ { 0x03, 16, 142, 80, 0, 0, 0, 0, 0, 0 },
+ { 0x03, 19, 151, 28, 1, 0, 0, 0, 0, 0 },
+ { 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonAnimCommandProvider kEoB2IntroAnimData38DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData38DOS), kEoB2IntroAnimData38DOS };
+
+static const DarkMoonAnimCommand kEoB2IntroAnimData39DOS[7] = {
+ { 0x02, 17, 36, 48, 0, 0, 0, 0, 0, 0 },
+ { 0x02, 16, 142, 80, 0, 0, 0, 0, 0, 0 },
+ { 0x02, 19, 151, 28, 54, 0, 0, 0, 0, 0 },
+ { 0x07, 17, 36, 48, 0, 0, 0, 0, 0, 0 },
+ { 0x07, 16, 142, 80, 0, 0, 0, 0, 0, 0 },
+ { 0x07, 19, 151, 28, 0, 0, 0, 0, 0, 0 },
+ { 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonAnimCommandProvider kEoB2IntroAnimData39DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData39DOS), kEoB2IntroAnimData39DOS };
+
+static const DarkMoonAnimCommand kEoB2IntroAnimData40DOS[32] = {
+ { 0x03, 22, 21, 32, 0, 1, 0, 0, 0, 0 },
+ { 0x03, 23, 67, 80, 1, 1, 0, 0, 0, 0 },
+ { 0x03, 22, 21, 32, 0, 2, 0, 0, 0, 0 },
+ { 0x03, 23, 67, 80, 1, 1, 0, 0, 0, 0 },
+ { 0x03, 22, 21, 32, 0, 3, 0, 0, 0, 0 },
+ { 0x03, 23, 67, 80, 1, 2, 0, 0, 0, 0 },
+ { 0x03, 22, 21, 32, 0, 4, 0, 0, 0, 0 },
+ { 0x03, 23, 67, 80, 1, 3, 0, 0, 0, 0 },
+ { 0x06, 11, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0x03, 22, 21, 32, 0, 5, 0, 0, 0, 0 },
+ { 0x03, 23, 67, 80, 1, 4, 0, 0, 0, 0 },
+ { 0x03, 22, 21, 32, 0, 6, 0, 0, 0, 0 },
+ { 0x03, 23, 67, 80, 1, 5, 0, 0, 0, 0 },
+ { 0x03, 22, 21, 32, 0, 7, 0, 0, 0, 0 },
+ { 0x03, 23, 67, 80, 18, 6, 0, 0, 0, 0 },
+ { 0x03, 22, 21, 32, 0, 7, 0, 0, 0, 0 },
+ { 0x03, 23, 67, 80, 90, 6, 0, 0, 0, 0 },
+ { 0x03, 22, 21, 32, 0, 6, 0, 0, 0, 0 },
+ { 0x03, 23, 67, 80, 1, 5, 0, 0, 0, 0 },
+ { 0x03, 22, 21, 32, 0, 5, 0, 0, 0, 0 },
+ { 0x03, 23, 67, 80, 1, 4, 0, 0, 0, 0 },
+ { 0x03, 22, 21, 32, 0, 4, 0, 0, 0, 0 },
+ { 0x03, 23, 67, 80, 1, 3, 0, 0, 0, 0 },
+ { 0x03, 22, 21, 32, 0, 3, 0, 0, 0, 0 },
+ { 0x03, 23, 67, 80, 1, 2, 0, 0, 0, 0 },
+ { 0x03, 22, 21, 32, 0, 2, 0, 0, 0, 0 },
+ { 0x03, 23, 67, 80, 1, 1, 0, 0, 0, 0 },
+ { 0x03, 22, 21, 32, 0, 1, 0, 0, 0, 0 },
+ { 0x03, 23, 67, 80, 1, 1, 0, 0, 0, 0 },
+ { 0x03, 22, 21, 32, 0, 0, 0, 0, 0, 0 },
+ { 0x03, 23, 67, 80, 1, 0, 0, 0, 0, 0 },
+ { 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonAnimCommandProvider kEoB2IntroAnimData40DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData40DOS), kEoB2IntroAnimData40DOS };
+
+static const DarkMoonAnimCommand kEoB2IntroAnimData41DOS[5] = {
+ { 0x02, 22, 21, 32, 0, 0, 0, 0, 0, 0 },
+ { 0x02, 23, 67, 80, 90, 0, 0, 0, 0, 0 },
+ { 0x07, 22, 21, 32, 0, 0, 0, 0, 0, 0 },
+ { 0x07, 23, 67, 80, 0, 0, 0, 0, 0, 0 },
+ { 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonAnimCommandProvider kEoB2IntroAnimData41DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData41DOS), kEoB2IntroAnimData41DOS };
+
+static const DarkMoonAnimCommand kEoB2IntroAnimData42DOS[3] = {
+ { 0x06, 3, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0x00, 0, 0, 0, 1, 2, 0, 0, 0, 0 },
+ { 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonAnimCommandProvider kEoB2IntroAnimData42DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData42DOS), kEoB2IntroAnimData42DOS };
+
+static const DarkMoonAnimCommand kEoB2IntroAnimData43DOS[5] = {
+ { 0x06, 5, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0x00, 0, 0, 0, 1, 3, 0, 0, 0, 0 },
+ { 0x00, 0, 0, 0, 1, 3, 0, 0, 0, 0 },
+ { 0x00, 0, 0, 0, 1, 3, 0, 0, 0, 0 },
+ { 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonAnimCommandProvider kEoB2IntroAnimData43DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData43DOS), kEoB2IntroAnimData43DOS };
+
+static const DarkMoonShapeDef kEoB2IntroShapes00DOS[15] = {
+ { 0, 1, 137, 4, 43 },
+ { 1, 5, 137, 4, 54 },
+ { 2, 9, 140, 4, 8 },
+ { 3, 1, 181, 1, 3 },
+ { 4, 9, 154, 1, 3 },
+ { 5, 9, 158, 2, 5 },
+ { 6, 9, 164, 3, 7 },
+ { 7, 9, 172, 3, 11 },
+ { 8, 9, 184, 5, 13 },
+ { 9, 15, 137, 6, 15 },
+ { 10, 15, 153, 2, 21 },
+ { 11, 17, 153, 2, 21 },
+ { 12, 1, 185, 1, 4 },
+ { 13, 1, 190, 1, 1 },
+ { 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonShapeDefProvider kEoB2IntroShapes00DOSProvider = { ARRAYSIZE(kEoB2IntroShapes00DOS), kEoB2IntroShapes00DOS };
+
+static const DarkMoonShapeDef kEoB2IntroShapes01DOS[2] = {
+ { 0, 1, 137, 1, 16 },
+ { 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonShapeDefProvider kEoB2IntroShapes01DOSProvider = { ARRAYSIZE(kEoB2IntroShapes01DOS), kEoB2IntroShapes01DOS };
+
+static const DarkMoonShapeDef kEoB2IntroShapes04DOS[10] = {
+ { 15, 2, 0, 32, 14 },
+ { 16, 5, 16, 5, 8 },
+ { 17, 2, 27, 32, 18 },
+ { 18, 0, 140, 35, 10 },
+ { 19, 21, 16, 3, 8 },
+ { 20, 0, 47, 22, 10 },
+ { 21, 0, 59, 31, 10 },
+ { 22, 0, 71, 35, 39 },
+ { 23, 0, 119, 24, 15 },
+ { 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonShapeDefProvider kEoB2IntroShapes04DOSProvider = { ARRAYSIZE(kEoB2IntroShapes04DOS), kEoB2IntroShapes04DOS };
+
+static const DarkMoonShapeDef kEoB2IntroShapes07DOS[18] = {
+ { -9, 1, 136, 6, 40 },
+ { -1, 7, 136, 6, 40 },
+ { -2, 13, 136, 6, 40 },
+ { 3, 19, 136, 2, 16 },
+ { 4, 21, 136, 2, 16 },
+ { 5, 23, 136, 2, 16 },
+ { 6, 19, 152, 1, 8 },
+ { 7, 20, 152, 1, 8 },
+ { 8, 21, 152, 1, 8 },
+ { -10, 25, 136, 2, 16 },
+ { -11, 27, 136, 2, 16 },
+ { -12, 29, 136, 2, 16 },
+ { -13, 31, 136, 2, 16 },
+ { -14, 25, 152, 2, 16 },
+ { -15, 27, 152, 2, 16 },
+ { -16, 29, 152, 2, 16 },
+ { -17, 31, 152, 2, 16 },
+ { 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonShapeDefProvider kEoB2IntroShapes07DOSProvider = { ARRAYSIZE(kEoB2IntroShapes07DOS), kEoB2IntroShapes07DOS };
+
+static const DarkMoonAnimCommand kEoB2FinaleAnimData00DOS[11] = {
+ { 0x06, 4, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0x05, 0, 136, 8, 8, 0, 5, 136, 11, 48 },
+ { 0x02, 1, 136, 8, 0, 0, 0, 0, 0, 0 },
+ { 0x05, 0, 80, 8, 0, 0, 0, 136, 5, 40 },
+ { 0x06, 5, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0x05, 0, 232, 88, 4, 0, 0, 88, 8, 48 },
+ { 0x02, 3, 80, 8, 0, 0, 0, 0, 0, 0 },
+ { 0x05, 0, 232, 88, 4, 0, 8, 88, 8, 48 },
+ { 0x05, 0, 232, 88, 4, 0, 16, 88, 8, 48 },
+ { 0x02, 2, 232, 88, 4, 0, 0, 0, 0, 0 },
+ { 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonAnimCommandProvider kEoB2FinaleAnimData00DOSProvider = { ARRAYSIZE(kEoB2FinaleAnimData00DOS), kEoB2FinaleAnimData00DOS };
+
+static const DarkMoonAnimCommand kEoB2FinaleAnimData01DOS[9] = {
+ { 0x06, 4, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0x05, 0, 136, 8, 12, 0, 5, 136, 11, 48 },
+ { 0x02, 1, 136, 8, 0, 0, 0, 0, 0, 0 },
+ { 0x06, 5, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0x05, 0, 232, 88, 6, 0, 0, 88, 8, 48 },
+ { 0x05, 0, 232, 88, 6, 0, 8, 88, 8, 48 },
+ { 0x05, 0, 232, 88, 6, 0, 16, 88, 8, 48 },
+ { 0x02, 2, 232, 88, 6, 0, 0, 0, 0, 0 },
+ { 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonAnimCommandProvider kEoB2FinaleAnimData01DOSProvider = { ARRAYSIZE(kEoB2FinaleAnimData01DOS), kEoB2FinaleAnimData01DOS };
+
+static const DarkMoonAnimCommand kEoB2FinaleAnimData02DOS[4] = {
+ { 0x05, 0, 232, 112, 6, 0, 24, 176, 3, 16 },
+ { 0x05, 0, 232, 112, 6, 0, 27, 176, 3, 16 },
+ { 0x05, 0, 232, 112, 6, 0, 30, 176, 3, 16 },
+ { 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonAnimCommandProvider kEoB2FinaleAnimData02DOSProvider = { ARRAYSIZE(kEoB2FinaleAnimData02DOS), kEoB2FinaleAnimData02DOS };
+
+static const DarkMoonAnimCommand kEoB2FinaleAnimData03DOS[6] = {
+ { 0x05, 0, 80, 8, 0, 0, 0, 136, 5, 40 },
+ { 0x05, 0, 232, 112, 3, 0, 24, 176, 3, 16 },
+ { 0x02, 3, 80, 8, 3, 0, 0, 0, 0, 0 },
+ { 0x05, 0, 232, 112, 3, 0, 27, 176, 3, 16 },
+ { 0x05, 0, 232, 112, 3, 0, 30, 176, 3, 16 },
+ { 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonAnimCommandProvider kEoB2FinaleAnimData03DOSProvider = { ARRAYSIZE(kEoB2FinaleAnimData03DOS), kEoB2FinaleAnimData03DOS };
+
+static const DarkMoonAnimCommand kEoB2FinaleAnimData04DOS[8] = {
+ { 0x06, 6, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0x05, 0, 104, 40, 3, 0, 32, 88, 8, 88 },
+ { 0x05, 0, 104, 40, 3, 0, 32, 0, 8, 88 },
+ { 0x05, 0, 104, 40, 3, 0, 24, 0, 8, 88 },
+ { 0x05, 0, 104, 40, 3, 0, 16, 0, 8, 88 },
+ { 0x05, 0, 104, 40, 3, 0, 0, 0, 8, 88 },
+ { 0x05, 0, 104, 40, 3, 0, 24, 88, 8, 88 },
+ { 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonAnimCommandProvider kEoB2FinaleAnimData04DOSProvider = { ARRAYSIZE(kEoB2FinaleAnimData04DOS), kEoB2FinaleAnimData04DOS };
+
+static const DarkMoonAnimCommand kEoB2FinaleAnimData05DOS[7] = {
+ { 0x05, 0, 232, 112, 0, 0, 24, 176, 3, 16 },
+ { 0x05, 0, 128, 40, 4, 0, 33, 176, 2, 16 },
+ { 0x05, 0, 232, 112, 0, 0, 27, 176, 3, 16 },
+ { 0x05, 0, 128, 40, 4, 0, 35, 176, 2, 16 },
+ { 0x05, 0, 232, 112, 0, 0, 30, 176, 3, 16 },
+ { 0x05, 0, 128, 40, 4, 0, 37, 176, 2, 16 },
+ { 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonAnimCommandProvider kEoB2FinaleAnimData05DOSProvider = { ARRAYSIZE(kEoB2FinaleAnimData05DOS), kEoB2FinaleAnimData05DOS };
+
+static const DarkMoonAnimCommand kEoB2FinaleAnimData06DOS[2] = {
+ { 0x05, 0, 104, 40, 0, 0, 16, 136, 8, 48 },
+ { 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonAnimCommandProvider kEoB2FinaleAnimData06DOSProvider = { ARRAYSIZE(kEoB2FinaleAnimData06DOS), kEoB2FinaleAnimData06DOS };
+
+static const DarkMoonAnimCommand kEoB2FinaleAnimData07DOS[6] = {
+ { 0x05, 0, 208, 80, 4, 0, 0, 128, 6, 56 },
+ { 0x05, 0, 208, 80, 4, 0, 6, 128, 6, 56 },
+ { 0x05, 0, 208, 80, 4, 0, 12, 128, 6, 56 },
+ { 0x05, 0, 208, 80, 4, 0, 18, 128, 6, 56 },
+ { 0x05, 0, 208, 80, 4, 0, 24, 128, 6, 56 },
+ { 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonAnimCommandProvider kEoB2FinaleAnimData07DOSProvider = { ARRAYSIZE(kEoB2FinaleAnimData07DOS), kEoB2FinaleAnimData07DOS };
+
+static const DarkMoonAnimCommand kEoB2FinaleAnimData08DOS[3] = {
+ { 0x05, 0, 224, 56, 3, 0, 0, 184, 4, 16 },
+ { 0x05, 0, 224, 56, 0, 0, 4, 184, 4, 16 },
+ { 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonAnimCommandProvider kEoB2FinaleAnimData08DOSProvider = { ARRAYSIZE(kEoB2FinaleAnimData08DOS), kEoB2FinaleAnimData08DOS };
+
+static const DarkMoonAnimCommand kEoB2FinaleAnimData09DOS[8] = {
+ { 0x01, 1, -10, 40, 2, 0, 0, 0, 0, 0 },
+ { 0x01, 1, 0, 40, 2, 0, 0, 0, 0, 0 },
+ { 0x01, 1, 10, 40, 2, 0, 0, 0, 0, 0 },
+ { 0x01, 1, 20, 40, 2, 0, 0, 0, 0, 0 },
+ { 0x01, 1, 30, 40, 2, 0, 0, 0, 0, 0 },
+ { 0x01, 1, 40, 40, 2, 0, 0, 0, 0, 0 },
+ { 0x02, 2, 48, 40, 2, 0, 0, 0, 0, 0 },
+ { 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonAnimCommandProvider kEoB2FinaleAnimData09DOSProvider = { ARRAYSIZE(kEoB2FinaleAnimData09DOS), kEoB2FinaleAnimData09DOS };
+
+static const DarkMoonAnimCommand kEoB2FinaleAnimData10DOS[14] = {
+ { 0x05, 1, 8, 40, 0, 0, 32, 0, 8, 80 },
+ { 0x05, 1, 280, 96, 0, 0, 24, 160, 4, 40 },
+ { 0x05, 1, 96, 96, 3, 0, 12, 80, 1, 16 },
+ { 0x05, 1, 8, 40, 0, 0, 32, 80, 8, 80 },
+ { 0x05, 1, 280, 96, 0, 0, 28, 160, 4, 40 },
+ { 0x05, 1, 96, 96, 3, 0, 13, 80, 1, 16 },
+ { 0x05, 1, 8, 40, 0, 0, 24, 80, 8, 80 },
+ { 0x05, 1, 280, 96, 0, 0, 32, 160, 4, 40 },
+ { 0x05, 1, 96, 96, 3, 0, 14, 80, 1, 16 },
+ { 0x06, 8, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0x05, 1, 40, 32, 0, 0, 0, 40, 16, 40 },
+ { 0x05, 1, 248, 88, 0, 0, 12, 176, 6, 24 },
+ { 0x05, 1, 96, 80, 3, 0, 0, 128, 12, 24 },
+ { 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonAnimCommandProvider kEoB2FinaleAnimData10DOSProvider = { ARRAYSIZE(kEoB2FinaleAnimData10DOS), kEoB2FinaleAnimData10DOS };
+
+static const DarkMoonAnimCommand kEoB2FinaleAnimData11DOS[18] = {
+ { 0x05, 1, 40, 32, 0, 0, 16, 40, 16, 40 },
+ { 0x05, 1, 248, 88, 0, 0, 18, 176, 6, 24 },
+ { 0x05, 1, 96, 80, 0, 0, 0, 152, 12, 24 },
+ { 0x05, 1, 8, 40, 0, 0, 24, 80, 8, 80 },
+ { 0x05, 1, 280, 96, 0, 0, 32, 160, 4, 40 },
+ { 0x05, 1, 96, 96, 0, 0, 14, 80, 1, 16 },
+ { 0x05, 0, 168, 16, 0, 0, 32, 0, 8, 80 },
+ { 0x05, 0, 232, 16, 0, 0, 32, 80, 8, 80 },
+ { 0x05, 1, 8, 40, 0, 0, 24, 80, 8, 80 },
+ { 0x05, 1, 280, 96, 0, 0, 32, 160, 4, 40 },
+ { 0x05, 1, 96, 96, 3, 0, 14, 80, 1, 16 },
+ { 0x05, 1, 8, 40, 0, 0, 32, 0, 8, 80 },
+ { 0x05, 1, 280, 96, 0, 0, 24, 160, 4, 40 },
+ { 0x05, 1, 96, 96, 3, 0, 12, 80, 1, 16 },
+ { 0x05, 1, 8, 40, 0, 0, 16, 80, 8, 80 },
+ { 0x05, 1, 280, 96, 0, 0, 36, 160, 4, 40 },
+ { 0x05, 1, 96, 96, 3, 0, 15, 80, 1, 16 },
+ { 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonAnimCommandProvider kEoB2FinaleAnimData11DOSProvider = { ARRAYSIZE(kEoB2FinaleAnimData11DOS), kEoB2FinaleAnimData11DOS };
+
+static const DarkMoonAnimCommand kEoB2FinaleAnimData12DOS[23] = {
+ { 0x05, 1, 40, 32, 0, 0, 16, 40, 16, 40 },
+ { 0x05, 1, 248, 88, 0, 0, 18, 176, 6, 24 },
+ { 0x05, 1, 96, 80, 0, 0, 0, 152, 12, 24 },
+ { 0x05, 1, 8, 40, 0, 0, 24, 80, 8, 80 },
+ { 0x05, 1, 280, 96, 0, 0, 32, 160, 4, 40 },
+ { 0x05, 1, 96, 96, 0, 0, 14, 80, 1, 16 },
+ { 0x05, 0, 168, 16, 0, 0, 32, 0, 8, 80 },
+ { 0x05, 0, 232, 16, 0, 0, 32, 80, 8, 80 },
+ { 0x06, 15, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0x02, 2, 168, 16, 0, 0, 0, 0, 0, 0 },
+ { 0x05, 1, 8, 40, 0, 0, 32, 0, 8, 80 },
+ { 0x05, 1, 280, 96, 0, 0, 24, 160, 4, 40 },
+ { 0x05, 1, 96, 96, 3, 0, 12, 80, 1, 16 },
+ { 0x05, 0, 168, 16, 0, 0, 32, 0, 8, 80 },
+ { 0x05, 0, 232, 16, 0, 0, 32, 80, 8, 80 },
+ { 0x06, 15, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0x02, 3, 168, 16, 0, 0, 0, 0, 0, 0 },
+ { 0x05, 1, 8, 40, 0, 0, 16, 80, 8, 80 },
+ { 0x05, 1, 280, 96, 0, 0, 36, 160, 4, 40 },
+ { 0x05, 1, 96, 96, 3, 0, 15, 80, 1, 16 },
+ { 0x05, 0, 168, 16, 0, 0, 32, 0, 8, 80 },
+ { 0x05, 0, 232, 16, 0, 0, 32, 80, 8, 80 },
+ { 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonAnimCommandProvider kEoB2FinaleAnimData12DOSProvider = { ARRAYSIZE(kEoB2FinaleAnimData12DOS), kEoB2FinaleAnimData12DOS };
+
+static const DarkMoonAnimCommand kEoB2FinaleAnimData13DOS[23] = {
+ { 0x06, 15, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0x02, 1, 168, 16, 0, 0, 0, 0, 0, 0 },
+ { 0x06, 9, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0x05, 1, 40, 32, 0, 0, 0, 0, 16, 40 },
+ { 0x05, 1, 248, 88, 0, 0, 0, 176, 6, 24 },
+ { 0x05, 1, 96, 80, 3, 0, 0, 80, 12, 24 },
+ { 0x05, 0, 168, 16, 0, 0, 32, 0, 8, 80 },
+ { 0x05, 0, 232, 16, 0, 0, 32, 80, 8, 80 },
+ { 0x06, 15, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0x02, 3, 168, 16, 0, 0, 0, 0, 0, 0 },
+ { 0x05, 1, 40, 32, 0, 0, 16, 0, 16, 40 },
+ { 0x05, 1, 248, 88, 0, 0, 6, 176, 6, 24 },
+ { 0x05, 1, 96, 80, 3, 0, 0, 104, 12, 24 },
+ { 0x05, 0, 168, 16, 0, 0, 32, 0, 8, 80 },
+ { 0x05, 0, 232, 16, 0, 0, 32, 80, 8, 80 },
+ { 0x06, 15, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0x02, 2, 168, 16, 0, 0, 0, 0, 0, 0 },
+ { 0x05, 1, 40, 32, 0, 0, 0, 40, 16, 40 },
+ { 0x05, 1, 248, 88, 0, 0, 12, 176, 6, 24 },
+ { 0x05, 1, 96, 80, 3, 0, 0, 128, 12, 24 },
+ { 0x05, 0, 168, 16, 0, 0, 32, 0, 8, 80 },
+ { 0x05, 0, 232, 16, 0, 0, 32, 80, 8, 80 },
+ { 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonAnimCommandProvider kEoB2FinaleAnimData13DOSProvider = { ARRAYSIZE(kEoB2FinaleAnimData13DOS), kEoB2FinaleAnimData13DOS };
+
+static const DarkMoonAnimCommand kEoB2FinaleAnimData14DOS[24] = {
+ { 0x06, 15, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0x02, 1, 168, 16, 0, 0, 0, 0, 0, 0 },
+ { 0x06, 9, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0x05, 1, 40, 32, 0, 0, 0, 0, 16, 40 },
+ { 0x05, 1, 248, 88, 0, 0, 0, 176, 6, 24 },
+ { 0x05, 1, 96, 80, 3, 0, 0, 80, 12, 24 },
+ { 0x05, 0, 168, 16, 0, 0, 32, 0, 8, 80 },
+ { 0x05, 0, 232, 16, 0, 0, 32, 80, 8, 80 },
+ { 0x06, 15, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0x02, 3, 168, 16, 0, 0, 0, 0, 0, 0 },
+ { 0x05, 1, 40, 32, 0, 0, 16, 0, 16, 40 },
+ { 0x05, 1, 248, 88, 0, 0, 6, 176, 6, 24 },
+ { 0x05, 1, 96, 80, 3, 0, 0, 104, 12, 24 },
+ { 0x05, 0, 168, 16, 0, 0, 32, 0, 8, 80 },
+ { 0x05, 0, 232, 16, 0, 0, 32, 80, 8, 80 },
+ { 0x06, 15, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0x02, 2, 168, 16, 0, 0, 0, 0, 0, 0 },
+ { 0x06, 9, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0x05, 1, 40, 32, 0, 0, 0, 40, 16, 40 },
+ { 0x05, 1, 248, 88, 0, 0, 12, 176, 6, 24 },
+ { 0x05, 1, 96, 80, 3, 0, 0, 128, 12, 24 },
+ { 0x05, 0, 168, 16, 0, 0, 32, 0, 8, 80 },
+ { 0x05, 0, 232, 16, 0, 0, 32, 80, 8, 80 },
+ { 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonAnimCommandProvider kEoB2FinaleAnimData14DOSProvider = { ARRAYSIZE(kEoB2FinaleAnimData14DOS), kEoB2FinaleAnimData14DOS };
+
+static const DarkMoonAnimCommand kEoB2FinaleAnimData15DOS[19] = {
+ { 0x05, 1, 40, 32, 0, 0, 0, 0, 16, 40 },
+ { 0x05, 1, 248, 88, 0, 0, 0, 176, 6, 24 },
+ { 0x05, 1, 96, 80, 3, 0, 0, 80, 12, 24 },
+ { 0x05, 0, 168, 16, 0, 0, 32, 0, 8, 80 },
+ { 0x05, 0, 232, 16, 0, 0, 32, 80, 8, 80 },
+ { 0x06, 15, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0x02, 3, 168, 16, 0, 0, 0, 0, 0, 0 },
+ { 0x05, 1, 40, 32, 0, 0, 16, 0, 16, 40 },
+ { 0x05, 1, 248, 88, 0, 0, 6, 176, 6, 24 },
+ { 0x05, 1, 96, 80, 3, 0, 0, 104, 12, 24 },
+ { 0x05, 0, 168, 16, 0, 0, 32, 0, 8, 80 },
+ { 0x05, 0, 232, 16, 0, 0, 32, 80, 8, 80 },
+ { 0x06, 9, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0x05, 1, 40, 32, 0, 0, 0, 40, 16, 40 },
+ { 0x05, 1, 248, 88, 0, 0, 12, 176, 6, 24 },
+ { 0x05, 1, 96, 80, 3, 0, 0, 128, 12, 24 },
+ { 0x05, 0, 168, 16, 0, 0, 32, 0, 8, 80 },
+ { 0x05, 0, 232, 16, 0, 0, 32, 80, 8, 80 },
+ { 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonAnimCommandProvider kEoB2FinaleAnimData15DOSProvider = { ARRAYSIZE(kEoB2FinaleAnimData15DOS), kEoB2FinaleAnimData15DOS };
+
+static const DarkMoonAnimCommand kEoB2FinaleAnimData16DOS[13] = {
+ { 0x06, 15, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0x02, 1, 168, 16, 3, 0, 0, 0, 0, 0 },
+ { 0x05, 0, 168, 16, 0, 0, 32, 0, 8, 80 },
+ { 0x05, 0, 232, 16, 0, 0, 32, 80, 8, 80 },
+ { 0x06, 15, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0x02, 2, 168, 16, 3, 0, 0, 0, 0, 0 },
+ { 0x05, 0, 168, 16, 0, 0, 32, 0, 8, 80 },
+ { 0x05, 0, 232, 16, 0, 0, 32, 80, 8, 80 },
+ { 0x06, 15, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0x02, 3, 168, 16, 3, 0, 0, 0, 0, 0 },
+ { 0x05, 0, 168, 16, 0, 0, 32, 0, 8, 80 },
+ { 0x05, 0, 232, 16, 0, 0, 32, 80, 8, 80 },
+ { 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonAnimCommandProvider kEoB2FinaleAnimData16DOSProvider = { ARRAYSIZE(kEoB2FinaleAnimData16DOS), kEoB2FinaleAnimData16DOS };
+
+static const DarkMoonAnimCommand kEoB2FinaleAnimData17DOS[20] = {
+ { 0x05, 0, 168, 16, 1, 0, 0, 0, 16, 80 },
+ { 0x05, 0, 168, 16, 2, 0, 16, 0, 16, 80 },
+ { 0x05, 0, 168, 16, 3, 0, 0, 0, 16, 80 },
+ { 0x05, 0, 168, 16, 1, 0, 0, 0, 16, 80 },
+ { 0x05, 0, 168, 16, 2, 0, 16, 0, 16, 80 },
+ { 0x05, 0, 168, 16, 3, 0, 0, 80, 16, 80 },
+ { 0x05, 0, 168, 16, 1, 0, 16, 0, 16, 80 },
+ { 0x05, 0, 168, 16, 2, 0, 0, 80, 16, 80 },
+ { 0x05, 0, 168, 16, 3, 0, 16, 0, 16, 80 },
+ { 0x05, 0, 168, 16, 1, 0, 0, 0, 16, 80 },
+ { 0x05, 0, 168, 16, 2, 0, 16, 0, 16, 80 },
+ { 0x06, 10, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0x05, 0, 168, 16, 3, 0, 0, 0, 16, 80 },
+ { 0x05, 0, 168, 16, 1, 0, 16, 0, 16, 80 },
+ { 0x05, 0, 168, 16, 2, 0, 0, 80, 16, 80 },
+ { 0x05, 0, 168, 16, 3, 0, 16, 0, 16, 80 },
+ { 0x05, 0, 168, 16, 1, 0, 0, 80, 16, 80 },
+ { 0x05, 0, 168, 16, 2, 0, 16, 0, 16, 80 },
+ { 0x05, 0, 168, 16, 3, 0, 16, 0, 16, 80 },
+ { 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonAnimCommandProvider kEoB2FinaleAnimData17DOSProvider = { ARRAYSIZE(kEoB2FinaleAnimData17DOS), kEoB2FinaleAnimData17DOS };
+
+static const DarkMoonAnimCommand kEoB2FinaleAnimData18DOS[28] = {
+ { 0x05, 0, 168, 16, 1, 0, 0, 80, 16, 80 },
+ { 0x05, 0, 168, 16, 2, 0, 0, 80, 16, 80 },
+ { 0x05, 0, 168, 16, 3, 0, 16, 80, 16, 80 },
+ { 0x05, 0, 168, 16, 1, 0, 0, 80, 16, 80 },
+ { 0x05, 0, 168, 16, 2, 0, 16, 80, 16, 80 },
+ { 0x05, 0, 168, 16, 3, 0, 0, 80, 16, 80 },
+ { 0x05, 0, 168, 16, 1, 0, 16, 0, 16, 80 },
+ { 0x05, 0, 168, 16, 2, 0, 0, 80, 16, 80 },
+ { 0x05, 0, 168, 16, 3, 0, 16, 80, 16, 80 },
+ { 0x05, 0, 168, 16, 1, 0, 0, 80, 16, 80 },
+ { 0x05, 0, 168, 16, 2, 0, 16, 0, 16, 80 },
+ { 0x05, 0, 168, 16, 3, 0, 0, 0, 16, 80 },
+ { 0x05, 0, 168, 16, 1, 0, 0, 0, 16, 80 },
+ { 0x05, 0, 168, 16, 2, 0, 16, 0, 16, 80 },
+ { 0x05, 0, 168, 16, 3, 0, 0, 80, 16, 80 },
+ { 0x05, 0, 168, 16, 1, 0, 16, 80, 16, 80 },
+ { 0x05, 0, 168, 16, 2, 0, 0, 80, 16, 80 },
+ { 0x05, 0, 168, 16, 3, 0, 16, 0, 16, 80 },
+ { 0x05, 0, 168, 16, 1, 0, 0, 80, 16, 80 },
+ { 0x05, 0, 168, 16, 2, 0, 16, 80, 16, 80 },
+ { 0x05, 0, 168, 16, 3, 0, 0, 80, 16, 80 },
+ { 0x05, 0, 168, 16, 1, 0, 16, 80, 16, 80 },
+ { 0x05, 0, 168, 16, 2, 0, 0, 80, 16, 80 },
+ { 0x05, 0, 168, 16, 3, 0, 16, 0, 16, 80 },
+ { 0x05, 0, 168, 16, 1, 0, 0, 80, 16, 80 },
+ { 0x05, 0, 168, 16, 2, 0, 16, 80, 16, 80 },
+ { 0x05, 0, 168, 16, 0, 0, 16, 80, 16, 80 },
+ { 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonAnimCommandProvider kEoB2FinaleAnimData18DOSProvider = { ARRAYSIZE(kEoB2FinaleAnimData18DOS), kEoB2FinaleAnimData18DOS };
+
+static const DarkMoonAnimCommand kEoB2FinaleAnimData19DOS[7] = {
+ { 0x05, 0, 80, 80, 4, 0, 0, 128, 6, 56 },
+ { 0x05, 0, 80, 80, 4, 0, 6, 128, 6, 56 },
+ { 0x05, 0, 80, 80, 4, 0, 12, 128, 6, 56 },
+ { 0x05, 0, 80, 80, 4, 0, 18, 128, 6, 56 },
+ { 0x05, 0, 80, 80, 4, 0, 24, 128, 6, 56 },
+ { 0x05, 0, 80, 80, 4, 0, 30, 128, 6, 56 },
+ { 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonAnimCommandProvider kEoB2FinaleAnimData19DOSProvider = { ARRAYSIZE(kEoB2FinaleAnimData19DOS), kEoB2FinaleAnimData19DOS };
+
+static const DarkMoonAnimCommand kEoB2FinaleAnimData20DOS[3] = {
+ { 0x05, 0, 96, 56, 3, 0, 0, 184, 4, 16 },
+ { 0x05, 0, 96, 56, 0, 0, 4, 184, 4, 16 },
+ { 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonAnimCommandProvider kEoB2FinaleAnimData20DOSProvider = { ARRAYSIZE(kEoB2FinaleAnimData20DOS), kEoB2FinaleAnimData20DOS };
+
+static const DarkMoonShapeDef kEoB2FinaleShapes00DOS[4] = {
+ { -1, 16, 0, 11, 48 },
+ { -2, 28, 80, 8, 48 },
+ { -3, 9, 0, 5, 40 },
+ { 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonShapeDefProvider kEoB2FinaleShapes00DOSProvider = { ARRAYSIZE(kEoB2FinaleShapes00DOS), kEoB2FinaleShapes00DOS };
+
+static const DarkMoonShapeDef kEoB2FinaleShapes03DOS[3] = {
+ { -1, 30, 0, 8, 96 },
+ { -2, 30, 104, 10, 96 },
+ { 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonShapeDefProvider kEoB2FinaleShapes03DOSProvider = { ARRAYSIZE(kEoB2FinaleShapes03DOS), kEoB2FinaleShapes03DOS };
+
+static const DarkMoonShapeDef kEoB2FinaleShapes07DOS[4] = {
+ { 1, 0, 0, 16, 72 },
+ { 2, 16, 0, 16, 72 },
+ { 3, 0, 72, 16, 72 },
+ { 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonShapeDefProvider kEoB2FinaleShapes07DOSProvider = { ARRAYSIZE(kEoB2FinaleShapes07DOS), kEoB2FinaleShapes07DOS };
+
+static const DarkMoonShapeDef kEoB2FinaleShapes09DOS[9] = {
+ { 0, 0, 0, 32, 16 },
+ { 2, 0, 36, 35, 41 },
+ { 3, 0, 77, 24, 17 },
+ { 4, 0, 94, 15, 33 },
+ { 5, 24, 77, 10, 17 },
+ { 6, 16, 99, 23, 69 },
+ { -10, 0, 136, 8, 64 },
+ { -11, 8, 136, 8, 64 },
+ { 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonShapeDefProvider kEoB2FinaleShapes09DOSProvider = { ARRAYSIZE(kEoB2FinaleShapes09DOS), kEoB2FinaleShapes09DOS };
+
+static const DarkMoonShapeDef kEoB2FinaleShapes10DOS[4] = {
+ { 1, 0, 0, 40, 30 },
+ { 15, 9, 37, 21, 48 },
+ { 16, 16, 88, 6, 56 },
+ { 0, 0, 0, 0, 0 }
+};
+
+static const DarkMoonShapeDefProvider kEoB2FinaleShapes10DOSProvider = { ARRAYSIZE(kEoB2FinaleShapes10DOS), kEoB2FinaleShapes10DOS };
+
+static const byte kEoB2NpcShapeDataDOS[24] = {
+ 0x00, 0x00, 0x00, 0x05, 0x39, 0x00, 0x00, 0xFF,
+ 0x00, 0x00, 0x64, 0x05, 0x4F, 0x00, 0x00, 0xFF,
+ 0x00, 0x00, 0x39, 0x06, 0x2B, 0x00, 0x00, 0xFF
+};
+
+static const ByteProvider kEoB2NpcShapeDataDOSProvider = { ARRAYSIZE(kEoB2NpcShapeDataDOS), kEoB2NpcShapeDataDOS };
+
+static const byte kEoB2ClassModifierFlagsDOS[15] = {
+ 0x01, 0x20, 0x10, 0x02, 0x04, 0x08, 0x05, 0x09,
+ 0x03, 0x0B, 0x0A, 0x0C, 0x07, 0x05, 0x06
+};
+
+static const ByteProvider kEoB2ClassModifierFlagsDOSProvider = { ARRAYSIZE(kEoB2ClassModifierFlagsDOS), kEoB2ClassModifierFlagsDOS };
+
+static const byte kEoB2MonsterStepTable02DOS[8] = {
+ 0xE0, 0xE1, 0x01, 0x21, 0x20, 0x1F, 0xFF, 0xDF
+};
+
+static const ByteProvider kEoB2MonsterStepTable02DOSProvider = { ARRAYSIZE(kEoB2MonsterStepTable02DOS), kEoB2MonsterStepTable02DOS };
+
+static const byte kEoB2MonsterStepTable1DOS[16] = {
+ 0x01, 0xE0, 0x00, 0x00, 0x00, 0x20, 0x01, 0x00,
+ 0x00, 0x00, 0xFF, 0x20, 0xFF, 0x00, 0x00, 0xE0
+};
+
+static const ByteProvider kEoB2MonsterStepTable1DOSProvider = { ARRAYSIZE(kEoB2MonsterStepTable1DOS), kEoB2MonsterStepTable1DOS };
+
+static const byte kEoB2MonsterStepTable2DOS[8] = {
+ 0x07, 0xFA, 0x05, 0xFC, 0x03, 0xFE, 0x01, 0x00
+};
+
+static const ByteProvider kEoB2MonsterStepTable2DOSProvider = { ARRAYSIZE(kEoB2MonsterStepTable2DOS), kEoB2MonsterStepTable2DOS };
+
+static const byte kEoB2MonsterStepTable3DOS[8] = {
+ 0xF9, 0x06, 0xFB, 0x04, 0xFD, 0x02, 0xFF, 0x00
+};
+
+static const ByteProvider kEoB2MonsterStepTable3DOSProvider = { ARRAYSIZE(kEoB2MonsterStepTable3DOS), kEoB2MonsterStepTable3DOS };
+
+static const byte kEoB2MonsterCloseAttPosTable1DOS[4] = {
+ 0x00, 0x01, 0x03, 0x02
+};
+
+static const ByteProvider kEoB2MonsterCloseAttPosTable1DOSProvider = { ARRAYSIZE(kEoB2MonsterCloseAttPosTable1DOS), kEoB2MonsterCloseAttPosTable1DOS };
+
+static const byte kEoB2MonsterCloseAttPosTable22DOS[16] = {
+ 0x00, 0x01, 0x02, 0x03, 0x00, 0x02, 0x01, 0x03,
+ 0x00, 0x01, 0x02, 0x03, 0x03, 0x01, 0x02, 0x00
+};
+
+static const ByteProvider kEoB2MonsterCloseAttPosTable22DOSProvider = { ARRAYSIZE(kEoB2MonsterCloseAttPosTable22DOS), kEoB2MonsterCloseAttPosTable22DOS };
+
+static const byte kEoB2MonsterCloseAttUnkTableDOS[12] = {
+ 0xFF, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x00, 0x02, 0xFF, 0x01
+};
+
+static const ByteProvider kEoB2MonsterCloseAttUnkTableDOSProvider = { ARRAYSIZE(kEoB2MonsterCloseAttUnkTableDOS), kEoB2MonsterCloseAttUnkTableDOS };
+
+static const byte kEoB2MonsterCloseAttChkTable1DOS[16] = {
+ 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01,
+ 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00
+};
+
+static const ByteProvider kEoB2MonsterCloseAttChkTable1DOSProvider = { ARRAYSIZE(kEoB2MonsterCloseAttChkTable1DOS), kEoB2MonsterCloseAttChkTable1DOS };
+
+static const byte kEoB2MonsterCloseAttChkTable2DOS[16] = {
+ 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01,
+ 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00
+};
+
+static const ByteProvider kEoB2MonsterCloseAttChkTable2DOSProvider = { ARRAYSIZE(kEoB2MonsterCloseAttChkTable2DOS), kEoB2MonsterCloseAttChkTable2DOS };
+
+static const byte kEoB2MonsterCloseAttDstTable1DOS[16] = {
+ 0x02, 0x03, 0x00, 0x01, 0x01, 0x02, 0x03, 0x00,
+ 0x00, 0x01, 0x02, 0x03, 0x03, 0x00, 0x01, 0x02
+};
+
+static const ByteProvider kEoB2MonsterCloseAttDstTable1DOSProvider = { ARRAYSIZE(kEoB2MonsterCloseAttDstTable1DOS), kEoB2MonsterCloseAttDstTable1DOS };
+
+static const byte kEoB2MonsterCloseAttDstTable2DOS[48] = {
+ 0x01, 0x00, 0x03, 0x02, 0x05, 0x04, 0x00, 0x01,
+ 0x02, 0x03, 0x04, 0x05, 0x05, 0x03, 0x01, 0x04,
+ 0x02, 0x00, 0x01, 0x03, 0x05, 0x00, 0x02, 0x04,
+ 0x04, 0x05, 0x02, 0x03, 0x00, 0x01, 0x05, 0x04,
+ 0x03, 0x02, 0x01, 0x00, 0x00, 0x02, 0x04, 0x01,
+ 0x03, 0x05, 0x04, 0x02, 0x00, 0x05, 0x03, 0x01
+};
+
+static const ByteProvider kEoB2MonsterCloseAttDstTable2DOSProvider = { ARRAYSIZE(kEoB2MonsterCloseAttDstTable2DOS), kEoB2MonsterCloseAttDstTable2DOS };
+
+static const byte kEoB2MonsterProximityTableDOS[32] = {
+ 0x02, 0x03, 0x00, 0x01, 0x03, 0x02, 0x01, 0x00,
+ 0x00, 0x02, 0x01, 0x03, 0x02, 0x00, 0x03, 0x01,
+ 0x01, 0x00, 0x03, 0x02, 0x00, 0x01, 0x02, 0x03,
+ 0x03, 0x01, 0x00, 0x02, 0x01, 0x03, 0x02, 0x00
+};
+
+static const ByteProvider kEoB2MonsterProximityTableDOSProvider = { ARRAYSIZE(kEoB2MonsterProximityTableDOS), kEoB2MonsterProximityTableDOS };
+
+static const byte kEoB2FindBlockMonstersTableDOS[64] = {
+ 0x04, 0x02, 0x01, 0x03, 0x04, 0x03, 0x00, 0x02,
+ 0x04, 0x00, 0x03, 0x01, 0x04, 0x01, 0x02, 0x00,
+ 0x04, 0x01, 0x02, 0x03, 0x04, 0x00, 0x03, 0x02,
+ 0x04, 0x03, 0x00, 0x01, 0x04, 0x02, 0x01, 0x00,
+ 0x04, 0x02, 0x01, 0x03, 0x04, 0x03, 0x00, 0x02,
+ 0x04, 0x00, 0x03, 0x01, 0x04, 0x01, 0x02, 0x00,
+ 0x04, 0x01, 0x02, 0x03, 0x04, 0x00, 0x03, 0x02,
+ 0x04, 0x03, 0x00, 0x01, 0x04, 0x02, 0x01, 0x00
+};
+
+static const ByteProvider kEoB2FindBlockMonstersTableDOSProvider = { ARRAYSIZE(kEoB2FindBlockMonstersTableDOS), kEoB2FindBlockMonstersTableDOS };
+
+static const byte kEoB2MonsterDirChangeTableDOS[48] = {
+ 0xFF, 0x06, 0x02, 0xFF, 0x04, 0x05, 0x03, 0xFF,
+ 0x00, 0x07, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xDF, 0xFF, 0xE0, 0xFF, 0xE1, 0xFF, 0xFF, 0xFF,
+ 0x01, 0x00, 0x1F, 0x00, 0x20, 0x00, 0x21, 0x00,
+ 0xC0, 0xFF, 0xA0, 0xFF, 0x02, 0x00, 0x03, 0x00,
+ 0x40, 0x00, 0x60, 0x00, 0xFE, 0xFF, 0xFD, 0xFF
+};
+
+static const ByteProvider kEoB2MonsterDirChangeTableDOSProvider = { ARRAYSIZE(kEoB2MonsterDirChangeTableDOS), kEoB2MonsterDirChangeTableDOS };
+
+static const uint16 kEoB2EncodeMonsterDefsDOS[168] = {
+ 0x0000, 0x0000, 0x0007, 0x0060, 0x0007, 0x0028, 0x000C, 0x0038,
+ 0x0013, 0x0028, 0x000C, 0x0038, 0x001F, 0x0000, 0x0007, 0x0060,
+ 0x0000, 0x0060, 0x0007, 0x0060, 0x0007, 0x0060, 0x0007, 0x0060,
+ 0x000E, 0x0060, 0x0005, 0x0038, 0x0007, 0x0000, 0x0007, 0x0028,
+ 0x000E, 0x0000, 0x0007, 0x0028, 0x0013, 0x0060, 0x0005, 0x0038,
+ 0x0018, 0x0060, 0x0005, 0x0038, 0x001D, 0x0060, 0x0005, 0x0038,
+ 0x000E, 0x0098, 0x0003, 0x0020, 0x0011, 0x00A0, 0x0004, 0x0018,
+ 0x0015, 0x00A0, 0x0004, 0x0018, 0x0019, 0x0098, 0x0003, 0x0020,
+ 0x001C, 0x0098, 0x0003, 0x0020, 0x001F, 0x0098, 0x0003, 0x0020,
+ 0x0000, 0x0000, 0x0007, 0x0060, 0x0007, 0x0000, 0x0007, 0x0060,
+ 0x000E, 0x0000, 0x0007, 0x0060, 0x0015, 0x0000, 0x0007, 0x0060,
+ 0x001C, 0x0000, 0x0007, 0x0060, 0x0000, 0x0060, 0x0007, 0x0060,
+ 0x0007, 0x0060, 0x0005, 0x0038, 0x000C, 0x0060, 0x0005, 0x0038,
+ 0x0011, 0x0060, 0x0005, 0x0038, 0x0016, 0x0060, 0x0005, 0x0038,
+ 0x001B, 0x0060, 0x0005, 0x0038, 0x0020, 0x0060, 0x0005, 0x0038,
+ 0x0007, 0x0098, 0x0003, 0x0020, 0x000A, 0x0098, 0x0003, 0x0020,
+ 0x000D, 0x0098, 0x0003, 0x0020, 0x0010, 0x0098, 0x0003, 0x0020,
+ 0x0013, 0x0098, 0x0003, 0x0020, 0x0016, 0x0098, 0x0003, 0x0020,
+ 0x0000, 0x0000, 0x000A, 0x0058, 0x000A, 0x0000, 0x000A, 0x0058,
+ 0x0014, 0x0000, 0x000A, 0x0058, 0x001E, 0x0000, 0x000A, 0x0058,
+ 0x0000, 0x0058, 0x000A, 0x0058, 0x000A, 0x0058, 0x000A, 0x0058
+};
+
+static const Uint16Provider kEoB2EncodeMonsterDefsDOSProvider = { ARRAYSIZE(kEoB2EncodeMonsterDefsDOS), kEoB2EncodeMonsterDefsDOS };
+
+static const EoBCharacter kEoB2NpcPresetsDOS[6] = {
+ { 0x00, 0x01, "Insal",
+ 15, 15, 0, 0, 13, 13, 11, 11, 17, 17, 16, 16, 9, 9,
+ 3, 39, 10, 0, 10, 5, 5, -1, 8, { 6, 0, 0 },
+ { 0x00006ADA, 0x00000000, 0x00000000 }, 0x00000000,
+ { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000 } },
+ { 0x00, 0x01, "Calandra",
+ 18, 18, 36, 36, 13, 13, 8, 8, 15, 15, 16, 16, 14, 14,
+ 4, 76, 10, 0, 1, 0, 2, -2, 12, { 9, 0, 0 },
+ { 0x0003DF35, 0x00000000, 0x00000000 }, 0x00000000,
+ { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000 } },
+ { 0x00, 0x01, "Shorn",
+ 15, 15, 0, 0, 14, 14, 13, 13, 14, 14, 13, 13, 16, 16,
+ 40, 40, 10, 0, 6, 4, 3, -3, 100, { 8, 0, 0 },
+ { 0x00021730, 0x00000000, 0x00000000 }, 0x00000000,
+ { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000 } },
+ { 0x00, 0x01, "San-raal",
+ 11, 11, 0, 0, 18, 18, 13, 13, 14, 14, 16, 16, 9, 9,
+ 28, 28, 10, 0, 2, 3, 5, -4, 100, { 8, 0, 0 },
+ { 0x00017AF0, 0x00000000, 0x00000000 }, 0x096B4566,
+ { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000 } },
+ { 0x00, 0x01, "Tanglor",
+ 16, 16, 0, 0, 13, 13, 16, 16, 15, 15, 11, 11, 12, 12,
+ 53, 53, 9, 0, 4, 6, 1, -5, 100, { 7, 7, 0 },
+ { 0x00010FC2, 0x00010FC2, 0x00000000 }, 0xFFFFFFFF,
+ { 0x0004, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0024, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000 } },
+ { 0x00, 0x01, "Amber",
+ 14, 14, 0, 0, 17, 17, 12, 12, 18, 18, 9, 9, 17, 17,
+ 36, 36, 10, 0, 3, 10, 1, -6, 100, { 7, 7, 0 },
+ { 0x0000FAE6, 0x0000FAE6, 0x00000000 }, 0x00294566,
+ { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000 } }
+};
+
+static const EoBCharacterProvider kEoB2NpcPresetsDOSProvider = { ARRAYSIZE(kEoB2NpcPresetsDOS), kEoB2NpcPresetsDOS };
+
+static const byte kEoB2DreamStepsDOS[14] = {
+ 0x01, 0x02, 0x03, 0x02, 0x01, 0x00, 0x01, 0x02,
+ 0x03, 0x03, 0x02, 0x01, 0x00, 0xFF
+};
+
+static const ByteProvider kEoB2DreamStepsDOSProvider = { ARRAYSIZE(kEoB2DreamStepsDOS), kEoB2DreamStepsDOS };
+
+static const byte kEoB2HornSoundsDOS[4] = {
+ 0x40, 0x41, 0x42, 0x43
+};
+
+static const ByteProvider kEoB2HornSoundsDOSProvider = { ARRAYSIZE(kEoB2HornSoundsDOS), kEoB2HornSoundsDOS };
+
+static const uint16 kEoB2WallOfForceDsXDOS[18] = {
+ 0xFFCC, 0xFFF4, 0x001C, 0x0044, 0x006C, 0x0094, 0x00BC, 0xFFB8,
+ 0xFFF8, 0x0038, 0x0078, 0x00B8, 0xFFC8, 0x0028, 0x0088, 0x0000,
+ 0x0000, 0x0000
+};
+
+static const Uint16Provider kEoB2WallOfForceDsXDOSProvider = { ARRAYSIZE(kEoB2WallOfForceDsXDOS), kEoB2WallOfForceDsXDOS };
+
+static const byte kEoB2WallOfForceDsYDOS[3] = {
+ 0x20, 0x18, 0x10
+};
+
+static const ByteProvider kEoB2WallOfForceDsYDOSProvider = { ARRAYSIZE(kEoB2WallOfForceDsYDOS), kEoB2WallOfForceDsYDOS };
+
+static const byte kEoB2WallOfForceNumWDOS[3] = {
+ 0x01, 0x02, 0x03
+};
+
+static const ByteProvider kEoB2WallOfForceNumWDOSProvider = { ARRAYSIZE(kEoB2WallOfForceNumWDOS), kEoB2WallOfForceNumWDOS };
+
+static const byte kEoB2WallOfForceNumHDOS[3] = {
+ 0x02, 0x06, 0x09
+};
+
+static const ByteProvider kEoB2WallOfForceNumHDOSProvider = { ARRAYSIZE(kEoB2WallOfForceNumHDOS), kEoB2WallOfForceNumHDOS };
+
+static const byte kEoB2WallOfForceShpIdDOS[3] = {
+ 0x04, 0x02, 0x00
+};
+
+static const ByteProvider kEoB2WallOfForceShpIdDOSProvider = { ARRAYSIZE(kEoB2WallOfForceShpIdDOS), kEoB2WallOfForceShpIdDOS };
+
+static const byte kEoB2DscShapeIndexDOS[36] = {
+ 0x01, 0x01, 0x04, 0x0A, 0x04, 0x08, 0x04, 0x01,
+ 0x04, 0xF8, 0x04, 0xF6, 0x00, 0x00, 0x03, 0x09,
+ 0x03, 0x07, 0x03, 0x01, 0x03, 0xF9, 0x03, 0xF7,
+ 0x02, 0x06, 0x02, 0x01, 0x02, 0xFA, 0x01, 0x05,
+ 0x01, 0x01, 0x01, 0xFB
+};
+
+static const ByteProvider kEoB2DscShapeIndexDOSProvider = { ARRAYSIZE(kEoB2DscShapeIndexDOS), kEoB2DscShapeIndexDOS };
+
+static const uint16 kEoB2DscXDOS[18] = {
+ 0xFF70, 0xFFA0, 0xFFD0, 0x0000, 0x0030, 0x0060, 0x0090, 0xFF60,
+ 0xFFB0, 0x0000, 0x0050, 0x00A0, 0xFF80, 0x0000, 0x0080, 0x0000,
+ 0x0000, 0x0000
+};
+
+static const Uint16Provider kEoB2DscXDOSProvider = { ARRAYSIZE(kEoB2DscXDOS), kEoB2DscXDOS };
+
+static const byte kEoB2DscTileIndexDOS[18] = {
+ 0x00, 0x06, 0x01, 0x05, 0x02, 0x04, 0x03, 0x07,
+ 0x0B, 0x08, 0x0A, 0x09, 0x0C, 0x0E, 0x0D, 0x0F,
+ 0x11, 0x10
+};
+
+static const ByteProvider kEoB2DscTileIndexDOSProvider = { ARRAYSIZE(kEoB2DscTileIndexDOS), kEoB2DscTileIndexDOS };
+
+static const byte kEoB2DscUnk2DOS[23] = {
+ 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03,
+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x12, 0x12, 0x12, 0x12, 0x12
+};
+
+static const ByteProvider kEoB2DscUnk2DOSProvider = { ARRAYSIZE(kEoB2DscUnk2DOS), kEoB2DscUnk2DOS };
+
+static const byte kEoB2DscDimData1DOS[324] = {
+ 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7,
+ 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7,
+ 0xD8, 0xD7, 0xD8, 0xD8, 0x02, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xFE, 0xD7, 0xD8, 0xD8, 0xD8, 0xD7, 0x03,
+ 0xD8, 0xFD, 0xD8, 0xD8, 0xD8, 0xFE, 0xD8, 0x08,
+ 0xD8, 0xD8, 0xD8, 0xFE, 0xD7, 0x06, 0xD8, 0xD8,
+ 0xFA, 0x03, 0xD8, 0xFD, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xFA, 0xD7,
+ 0x10, 0xD8, 0xFD, 0xD7, 0x13, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xF2, 0xD8, 0x14, 0xD8, 0xD8,
+ 0xD8, 0xF0, 0xD7, 0x14, 0xD8, 0xED, 0x10, 0xD8,
+ 0xD8, 0x13, 0xD8, 0xD8, 0xD8, 0xD8, 0xEC, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD7, 0x14, 0xD8, 0xED,
+ 0xD7, 0xD8, 0xD8, 0x13, 0xD7, 0xD7, 0xD7, 0xD7,
+ 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7,
+ 0xD7, 0xD7, 0xD7, 0xD7, 0xD8, 0xD7, 0xD7, 0xD7,
+ 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7,
+ 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD8, 0xD7,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0x06, 0xD8, 0xD8, 0xFA, 0x03, 0xD8, 0xFD,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xFA, 0xD8, 0x10, 0xD8, 0xFD, 0xD7,
+ 0x13, 0xFD, 0xD8, 0x13, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xF0, 0xD8, 0xD8,
+ 0xD8, 0xED, 0x10, 0xD8, 0xD8, 0x13, 0xD7, 0xD7,
+ 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7,
+ 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD8, 0xD7,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0x03, 0xD8, 0xFD,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xFD, 0xD8,
+ 0x13, 0xFD, 0xD8, 0x13, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xED, 0xD8, 0xD8, 0xD8, 0x13, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8
+};
+
+static const ByteProvider kEoB2DscDimData1DOSProvider = { ARRAYSIZE(kEoB2DscDimData1DOS), kEoB2DscDimData1DOS };
+
+static const byte kEoB2DscDimData2DOS[648] = {
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x00, 0x16, 0x16, 0x00, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x02, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x02, 0x16, 0x00, 0x04, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x16, 0x00, 0x00, 0x03,
+ 0x00, 0x16, 0x03, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x02, 0x16, 0x00, 0x16, 0x00, 0x08,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x02,
+ 0x16, 0x00, 0x00, 0x06, 0x00, 0x16, 0x00, 0x16,
+ 0x06, 0x16, 0x00, 0x03, 0x00, 0x16, 0x03, 0x00,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x06, 0x16, 0x08, 0x0E,
+ 0x00, 0x10, 0x00, 0x16, 0x03, 0x16, 0x06, 0x10,
+ 0x00, 0x13, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x0E, 0x16,
+ 0x00, 0x16, 0x00, 0x14, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x10, 0x16, 0x16, 0x00, 0x00, 0x14,
+ 0x00, 0x16, 0x13, 0x16, 0x00, 0x10, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x13, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x14, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x12, 0x16, 0x14, 0x16, 0x00, 0x16, 0x13, 0x16,
+ 0x16, 0x00, 0x00, 0x16, 0x00, 0x16, 0x00, 0x13,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x00, 0x16, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x00, 0x16, 0x16, 0x00,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x06, 0x00, 0x16, 0x00, 0x16,
+ 0x06, 0x16, 0x00, 0x03, 0x00, 0x16, 0x03, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x06, 0x16, 0x00, 0x16,
+ 0x00, 0x10, 0x00, 0x16, 0x03, 0x16, 0x07, 0x0F,
+ 0x00, 0x13, 0x03, 0x16, 0x00, 0x16, 0x00, 0x13,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x10, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x13, 0x16, 0x00, 0x10, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x13, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x00, 0x16, 0x16, 0x00,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x03, 0x00, 0x16, 0x03, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x03, 0x16, 0x00, 0x16,
+ 0x00, 0x13, 0x03, 0x16, 0x00, 0x16, 0x00, 0x13,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x13, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x13, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16
+};
+
+static const ByteProvider kEoB2DscDimData2DOSProvider = { ARRAYSIZE(kEoB2DscDimData2DOS), kEoB2DscDimData2DOS };
+
+static const byte kEoB2DscBlockMapDOS[12] = {
+ 0x02, 0x03, 0x00, 0x01, 0x01, 0x02, 0x03, 0x00,
+ 0x03, 0x00, 0x01, 0x02
+};
+
+static const ByteProvider kEoB2DscBlockMapDOSProvider = { ARRAYSIZE(kEoB2DscBlockMapDOS), kEoB2DscBlockMapDOS };
+
+static const byte kEoB2DscDimMapDOS[18] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x03,
+ 0x03, 0x03
+};
+
+static const ByteProvider kEoB2DscDimMapDOSProvider = { ARRAYSIZE(kEoB2DscDimMapDOS), kEoB2DscDimMapDOS };
+
+static const byte kEoB2DscBlockIndexDOS[72] = {
+ 0x9D, 0x9E, 0x9F, 0xA0, 0xA1, 0xA2, 0xA3, 0xBE,
+ 0xBF, 0xC0, 0xC1, 0xC2, 0xDF, 0xE0, 0xE1, 0xFF,
+ 0x00, 0x01, 0xA3, 0xC3, 0xE3, 0x03, 0x23, 0x43,
+ 0x63, 0xC2, 0xE2, 0x02, 0x22, 0x42, 0xE1, 0x01,
+ 0x21, 0xE0, 0x00, 0x20, 0x63, 0x62, 0x61, 0x60,
+ 0x5F, 0x5E, 0x5D, 0x42, 0x41, 0x40, 0x3F, 0x3E,
+ 0x21, 0x20, 0x1F, 0x01, 0x00, 0xFF, 0x5D, 0x3D,
+ 0x1D, 0xFD, 0xDD, 0xBD, 0x9D, 0x3E, 0x1E, 0xFE,
+ 0xDE, 0xBE, 0x1F, 0xFF, 0xDF, 0x20, 0x00, 0xE0
+};
+
+static const ByteProvider kEoB2DscBlockIndexDOSProvider = { ARRAYSIZE(kEoB2DscBlockIndexDOS), kEoB2DscBlockIndexDOS };
+
diff --git a/devtools/create_kyradat/resources/eob2_dos_english.h b/devtools/create_kyradat/resources/eob2_dos_english.h
new file mode 100644
index 0000000000..1bcf794131
--- /dev/null
+++ b/devtools/create_kyradat/resources/eob2_dos_english.h
@@ -0,0 +1,1347 @@
+static const char *const kEoB2ChargenStrings1DOSEnglish[9] = {
+ "Your party is\rcomplete. Select\rthe PLAY button\ror press 'P' to\rstart the game.",
+ " ",
+ "AC\rHP\rLVL",
+ "%s\r%d\r%d\r%d\r%d\r%d",
+ "%d\r%d",
+ "%d",
+ "%d/%d",
+ "%d/%d/%d",
+ "Select the box of\rthe character you\rwish to create or\rview."
+};
+
+static const StringListProvider kEoB2ChargenStrings1DOSEnglishProvider = { ARRAYSIZE(kEoB2ChargenStrings1DOSEnglish), kEoB2ChargenStrings1DOSEnglish };
+
+static const char *const kEoB2ChargenStrings2DOSEnglish[12] = {
+ "%s",
+ "%d",
+ "%s",
+ "%d",
+ "%d",
+ "%d",
+ "%s",
+ "%d",
+ "SELECT RACE:",
+ "SELECT CLASS:",
+ "SELECT ALIGNMENT:",
+ "Name:"
+};
+
+static const StringListProvider kEoB2ChargenStrings2DOSEnglishProvider = { ARRAYSIZE(kEoB2ChargenStrings2DOSEnglish), kEoB2ChargenStrings2DOSEnglish };
+
+static const char *const kEoB2ChargenStatStringsDOSEnglish[12] = {
+ "STR",
+ "INT",
+ "WIS",
+ "DEX",
+ "CON",
+ "CHA",
+ "STRENGTH",
+ "INTELLIGENCE",
+ "WISDOM",
+ "DEXTERITY",
+ "CONSTITUTION",
+ "CHARISMA"
+};
+
+static const StringListProvider kEoB2ChargenStatStringsDOSEnglishProvider = { ARRAYSIZE(kEoB2ChargenStatStringsDOSEnglish), kEoB2ChargenStatStringsDOSEnglish };
+
+static const char *const kEoB2ChargenRaceSexStringsDOSEnglish[12] = {
+ "HUMAN MALE",
+ "HUMAN FEMALE",
+ "ELF MALE",
+ "ELF FEMALE",
+ "HALF-ELF MALE",
+ "HALF-ELF FEMALE",
+ "DWARF MALE",
+ "DWARF FEMALE",
+ "GNOME MALE",
+ "GNOME FEMALE",
+ "HALFLING MALE",
+ "HALFLING FEMALE"
+};
+
+static const StringListProvider kEoB2ChargenRaceSexStringsDOSEnglishProvider = { ARRAYSIZE(kEoB2ChargenRaceSexStringsDOSEnglish), kEoB2ChargenRaceSexStringsDOSEnglish };
+
+static const char *const kEoB2ChargenClassStringsDOSEnglish[21] = {
+ "FIGHTER",
+ "RANGER",
+ "PALADIN",
+ "MAGE",
+ "CLERIC",
+ "THIEF",
+ "FIGHTER/CLERIC",
+ "FIGHTER/THIEF",
+ "FIGHTER/MAGE",
+ "FIGHTER/MAGE/THIEF",
+ "THIEF/MAGE",
+ "CLERIC/THIEF",
+ "FIGHTER/CLERIC/MAGE",
+ "RANGER/CLERIC",
+ "CLERIC/MAGE",
+ "FIGHTER",
+ "MAGE",
+ "CLERIC",
+ "THIEF",
+ "PALADIN",
+ "RANGER"
+};
+
+static const StringListProvider kEoB2ChargenClassStringsDOSEnglishProvider = { ARRAYSIZE(kEoB2ChargenClassStringsDOSEnglish), kEoB2ChargenClassStringsDOSEnglish };
+
+static const char *const kEoB2ChargenAlignmentStringsDOSEnglish[9] = {
+ "LAWFUL GOOD",
+ "NEUTRAL GOOD",
+ "CHAOTIC GOOD",
+ "LAWFUL NEUTRAL",
+ "TRUE NEUTRAL",
+ "CHAOTIC NEUTRAL",
+ "LAWFUL EVIL",
+ "NEUTRAL EVIL",
+ "CHAOTIC EVIL"
+};
+
+static const StringListProvider kEoB2ChargenAlignmentStringsDOSEnglishProvider = { ARRAYSIZE(kEoB2ChargenAlignmentStringsDOSEnglish), kEoB2ChargenAlignmentStringsDOSEnglish };
+
+static const char *const kEoB2ChargenEnterGameStringsDOSEnglish[1] = {
+ " Entering game.\r Please wait."
+};
+
+static const StringListProvider kEoB2ChargenEnterGameStringsDOSEnglishProvider = { ARRAYSIZE(kEoB2ChargenEnterGameStringsDOSEnglish), kEoB2ChargenEnterGameStringsDOSEnglish };
+
+static const char *const kEoB2PryDoorStringsDOSEnglish[8] = {
+ "\r",
+ "You are not capable of forcing the door.\r",
+ "\x06\x04""You force the door.\r",
+ "\x06\x06""You try to force the door but fail.\r",
+ "You can't put that item there.\r",
+ "The item is too large to fit.\r",
+ "No one is able to pry this door open.\r",
+ "\r"
+};
+
+static const StringListProvider kEoB2PryDoorStringsDOSEnglishProvider = { ARRAYSIZE(kEoB2PryDoorStringsDOSEnglish), kEoB2PryDoorStringsDOSEnglish };
+
+static const char *const kEoB2WarningStringsDOSEnglish[4] = {
+ "You can't go that way.\r",
+ "%s isn't capable of eating food!\r",
+ "That food is rotten! You don't want to eat that!\r",
+ "You may only eat food!\r"
+};
+
+static const StringListProvider kEoB2WarningStringsDOSEnglishProvider = { ARRAYSIZE(kEoB2WarningStringsDOSEnglish), kEoB2WarningStringsDOSEnglish };
+
+static const char *const kEoB2ItemSuffixStringsRingsDOSEnglish[4] = {
+ "Adornment",
+ "Wizardry",
+ "Sustenance",
+ "Feather Fall"
+};
+
+static const StringListProvider kEoB2ItemSuffixStringsRingsDOSEnglishProvider = { ARRAYSIZE(kEoB2ItemSuffixStringsRingsDOSEnglish), kEoB2ItemSuffixStringsRingsDOSEnglish };
+
+static const char *const kEoB2ItemSuffixStringsPotionsDOSEnglish[8] = {
+ "Giant Strength",
+ "Healing",
+ "Extra Healing",
+ "Poison",
+ "Vitality",
+ "Speed",
+ "Invisibility",
+ "Cure Poison"
+};
+
+static const StringListProvider kEoB2ItemSuffixStringsPotionsDOSEnglishProvider = { ARRAYSIZE(kEoB2ItemSuffixStringsPotionsDOSEnglish), kEoB2ItemSuffixStringsPotionsDOSEnglish };
+
+static const char *const kEoB2ItemSuffixStringsWandsDOSEnglish[8] = {
+ "Stick",
+ "Lightning",
+ "Frost",
+ "Curing",
+ "Fireball",
+ "Starfire",
+ "Magic Missile",
+ "Dispel Magic"
+};
+
+static const StringListProvider kEoB2ItemSuffixStringsWandsDOSEnglishProvider = { ARRAYSIZE(kEoB2ItemSuffixStringsWandsDOSEnglish), kEoB2ItemSuffixStringsWandsDOSEnglish };
+
+static const char *const kEoB2RipItemStringsDOSEnglish[3] = {
+ "%s has lost her ",
+ "%s has lost his ",
+ ".\r"
+};
+
+static const StringListProvider kEoB2RipItemStringsDOSEnglishProvider = { ARRAYSIZE(kEoB2RipItemStringsDOSEnglish), kEoB2RipItemStringsDOSEnglish };
+
+static const char *const kEoB2CursedStringDOSEnglish[1] = {
+ "%d Cursed %s"
+};
+
+static const StringListProvider kEoB2CursedStringDOSEnglishProvider = { ARRAYSIZE(kEoB2CursedStringDOSEnglish), kEoB2CursedStringDOSEnglish };
+
+static const char *const kEoB2MagicObjectStringsDOSEnglish[5] = {
+ "Mage Scroll",
+ "Cleric Scroll",
+ "Ring",
+ "Potion",
+ "Wand"
+};
+
+static const StringListProvider kEoB2MagicObjectStringsDOSEnglishProvider = { ARRAYSIZE(kEoB2MagicObjectStringsDOSEnglish), kEoB2MagicObjectStringsDOSEnglish };
+
+static const char *const kEoB2MagicObjectString5DOSEnglish[1] = {
+ "Stick"
+};
+
+static const StringListProvider kEoB2MagicObjectString5DOSEnglishProvider = { ARRAYSIZE(kEoB2MagicObjectString5DOSEnglish), kEoB2MagicObjectString5DOSEnglish };
+
+static const char *const kEoB2PatternSuffixDOSEnglish[1] = {
+ "%s of %s"
+};
+
+static const StringListProvider kEoB2PatternSuffixDOSEnglishProvider = { ARRAYSIZE(kEoB2PatternSuffixDOSEnglish), kEoB2PatternSuffixDOSEnglish };
+
+static const char *const kEoB2PatternGrFix1DOSEnglish[1] = {
+ "%s of %s"
+};
+
+static const StringListProvider kEoB2PatternGrFix1DOSEnglishProvider = { ARRAYSIZE(kEoB2PatternGrFix1DOSEnglish), kEoB2PatternGrFix1DOSEnglish };
+
+static const char *const kEoB2PatternGrFix2DOSEnglish[1] = {
+ "%s of %s"
+};
+
+static const StringListProvider kEoB2PatternGrFix2DOSEnglishProvider = { ARRAYSIZE(kEoB2PatternGrFix2DOSEnglish), kEoB2PatternGrFix2DOSEnglish };
+
+static const char *const kEoB2ValidateArmorStringDOSEnglish[1] = {
+ "%s can't wear that type of armor.\r"
+};
+
+static const StringListProvider kEoB2ValidateArmorStringDOSEnglishProvider = { ARRAYSIZE(kEoB2ValidateArmorStringDOSEnglish), kEoB2ValidateArmorStringDOSEnglish };
+
+static const char *const kEoB2ValidateCursedStringDOSEnglish[1] = {
+ "%s cannot release the weapon! It is cursed!\r"
+};
+
+static const StringListProvider kEoB2ValidateCursedStringDOSEnglishProvider = { ARRAYSIZE(kEoB2ValidateCursedStringDOSEnglish), kEoB2ValidateCursedStringDOSEnglish };
+
+static const char *const kEoB2ValidateNoDropStringDOSEnglish[1] = {
+ "You can't put that item there.\r"
+};
+
+static const StringListProvider kEoB2ValidateNoDropStringDOSEnglishProvider = { ARRAYSIZE(kEoB2ValidateNoDropStringDOSEnglish), kEoB2ValidateNoDropStringDOSEnglish };
+
+static const char *const kEoB2PotionStringsDOSEnglish[2] = {
+ "poisoned",
+ "%s feels %s!\r"
+};
+
+static const StringListProvider kEoB2PotionStringsDOSEnglishProvider = { ARRAYSIZE(kEoB2PotionStringsDOSEnglish), kEoB2PotionStringsDOSEnglish };
+
+static const char *const kEoB2WandStringsDOSEnglish[1] = {
+ "The wand has no apparent magical effect\r"
+};
+
+static const StringListProvider kEoB2WandStringsDOSEnglishProvider = { ARRAYSIZE(kEoB2WandStringsDOSEnglish), kEoB2WandStringsDOSEnglish };
+
+static const char *const kEoB2ItemMisuseStringsDOSEnglish[3] = {
+ " can not use this item.\r",
+ "This item automatically used when worn.\r",
+ "This item is not used in this way.\r"
+};
+
+static const StringListProvider kEoB2ItemMisuseStringsDOSEnglishProvider = { ARRAYSIZE(kEoB2ItemMisuseStringsDOSEnglish), kEoB2ItemMisuseStringsDOSEnglish };
+
+static const char *const kEoB2TakenStringsDOSEnglish[1] = {
+ " taken.\r"
+};
+
+static const StringListProvider kEoB2TakenStringsDOSEnglishProvider = { ARRAYSIZE(kEoB2TakenStringsDOSEnglish), kEoB2TakenStringsDOSEnglish };
+
+static const char *const kEoB2PotionEffectStringsDOSEnglish[8] = {
+ "much stronger",
+ "better",
+ "much better",
+ "ill for a moment",
+ "satiated",
+ "fast and agile",
+ "transparent",
+ "better"
+};
+
+static const StringListProvider kEoB2PotionEffectStringsDOSEnglishProvider = { ARRAYSIZE(kEoB2PotionEffectStringsDOSEnglish), kEoB2PotionEffectStringsDOSEnglish };
+
+static const char *const kEoB2YesNoStringsDOSEnglish[2] = {
+ "yes",
+ "no"
+};
+
+static const StringListProvider kEoB2YesNoStringsDOSEnglishProvider = { ARRAYSIZE(kEoB2YesNoStringsDOSEnglish), kEoB2YesNoStringsDOSEnglish };
+
+static const char *const kEoB2MoreStringsDOSEnglish[1] = {
+ "MORE"
+};
+
+static const StringListProvider kEoB2MoreStringsDOSEnglishProvider = { ARRAYSIZE(kEoB2MoreStringsDOSEnglish), kEoB2MoreStringsDOSEnglish };
+
+static const char *const kEoB2NpcMaxStringsDOSEnglish[1] = {
+ "You may only have six characters in your party. Select the one you wish to drop."
+};
+
+static const StringListProvider kEoB2NpcMaxStringsDOSEnglishProvider = { ARRAYSIZE(kEoB2NpcMaxStringsDOSEnglish), kEoB2NpcMaxStringsDOSEnglish };
+
+static const char *const kEoB2OkStringsDOSEnglish[1] = {
+ "OK"
+};
+
+static const StringListProvider kEoB2OkStringsDOSEnglishProvider = { ARRAYSIZE(kEoB2OkStringsDOSEnglish), kEoB2OkStringsDOSEnglish };
+
+static const char *const kEoB2NpcJoinStringsDOSEnglish[1] = {
+ "%s joins the party.\r"
+};
+
+static const StringListProvider kEoB2NpcJoinStringsDOSEnglishProvider = { ARRAYSIZE(kEoB2NpcJoinStringsDOSEnglish), kEoB2NpcJoinStringsDOSEnglish };
+
+static const char *const kEoB2CancelStringsDOSEnglish[1] = {
+ "CANCEL"
+};
+
+static const StringListProvider kEoB2CancelStringsDOSEnglishProvider = { ARRAYSIZE(kEoB2CancelStringsDOSEnglish), kEoB2CancelStringsDOSEnglish };
+
+static const char *const kEoB2AbortStringsDOSEnglish[1] = {
+ "ABORT"
+};
+
+static const StringListProvider kEoB2AbortStringsDOSEnglishProvider = { ARRAYSIZE(kEoB2AbortStringsDOSEnglish), kEoB2AbortStringsDOSEnglish };
+
+static const char *const kEoB2MenuStringsMainDOSEnglish[8] = {
+ "Select Option:",
+ "Rest Party",
+ "Memorize Spells",
+ "Pray for Spells",
+ "Scribe Scrolls",
+ "Preferences",
+ "Game Options",
+ "Exit"
+};
+
+static const StringListProvider kEoB2MenuStringsMainDOSEnglishProvider = { ARRAYSIZE(kEoB2MenuStringsMainDOSEnglish), kEoB2MenuStringsMainDOSEnglish };
+
+static const char *const kEoB2MenuStringsSaveLoadDOSEnglish[8] = {
+ "Load Game",
+ "Save Game",
+ "Drop Character",
+ "Quit Game",
+ "Game Options:",
+ "\r Game saved.",
+ "Attempts to save your\rgame have failed!",
+ "Cannot load your\rsave game. The\rfile may be corrupt!"
+};
+
+static const StringListProvider kEoB2MenuStringsSaveLoadDOSEnglishProvider = { ARRAYSIZE(kEoB2MenuStringsSaveLoadDOSEnglish), kEoB2MenuStringsSaveLoadDOSEnglish };
+
+static const char *const kEoB2MenuStringsOnOffDOSEnglish[2] = {
+ "ON",
+ "OFF"
+};
+
+static const StringListProvider kEoB2MenuStringsOnOffDOSEnglishProvider = { ARRAYSIZE(kEoB2MenuStringsOnOffDOSEnglish), kEoB2MenuStringsOnOffDOSEnglish };
+
+static const char *const kEoB2MenuStringsSpellsDOSEnglish[17] = {
+ "\r\r Select a character\r from your party who\r would like to learn\r spells.",
+ "\r Your Paladin is \r too low a level\r for spells.",
+ "\r\r The Mage has no\r Spell Book!",
+ "\r\r\r Select a character\r from your party\r who would like to\r pray for spells.",
+ "\r No party members\r are capable of\r praying for new\r spells.",
+ "\r No party members\r are capable of\r memorizing new\r spells.",
+ " An unconscious\r or dead Mage\r cannot memorize\r spells.",
+ " An unconscious\r or dead Cleric\r cannot pray for\r spells.",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "Clear",
+ "Spells Available:",
+ "Yes",
+ "No"
+};
+
+static const StringListProvider kEoB2MenuStringsSpellsDOSEnglishProvider = { ARRAYSIZE(kEoB2MenuStringsSpellsDOSEnglish), kEoB2MenuStringsSpellsDOSEnglish };
+
+static const char *const kEoB2MenuStringsRestDOSEnglish[5] = {
+ "\rWill your healers\rheal the party?",
+ " Someone is still\r injured. Rest\r until healed?",
+ "Resting party.",
+ "\r All characters\r are fully\r rested.",
+ " Your party needs\r to rest to gain\r spells."
+};
+
+static const StringListProvider kEoB2MenuStringsRestDOSEnglishProvider = { ARRAYSIZE(kEoB2MenuStringsRestDOSEnglish), kEoB2MenuStringsRestDOSEnglish };
+
+static const char *const kEoB2MenuStringsDropDOSEnglish[1] = {
+ " You cannot have\r less than four\r characters."
+};
+
+static const StringListProvider kEoB2MenuStringsDropDOSEnglishProvider = { ARRAYSIZE(kEoB2MenuStringsDropDOSEnglish), kEoB2MenuStringsDropDOSEnglish };
+
+static const char *const kEoB2MenuStringsExitDOSEnglish[1] = {
+ " Are you sure you\r wish to exit the\r game?"
+};
+
+static const StringListProvider kEoB2MenuStringsExitDOSEnglishProvider = { ARRAYSIZE(kEoB2MenuStringsExitDOSEnglish), kEoB2MenuStringsExitDOSEnglish };
+
+static const char *const kEoB2MenuStringsStarveDOSEnglish[1] = {
+ " Your party is\r starving. Do you\r wish to continue\r resting?"
+};
+
+static const StringListProvider kEoB2MenuStringsStarveDOSEnglishProvider = { ARRAYSIZE(kEoB2MenuStringsStarveDOSEnglish), kEoB2MenuStringsStarveDOSEnglish };
+
+static const char *const kEoB2MenuStringsScribeDOSEnglish[5] = {
+ "Select the scroll(s)\ryou wish to scribe.",
+ "\r\r\r Select a Mage\r from your party\r who would like to\r scribe spells.",
+ " You don't have\r any scolls to be\r scribed.",
+ " You don't have\r any scrolls that\r this Mage needs.",
+ "\r You don't have\r any Mage able to\r scribe scrolls."
+};
+
+static const StringListProvider kEoB2MenuStringsScribeDOSEnglishProvider = { ARRAYSIZE(kEoB2MenuStringsScribeDOSEnglish), kEoB2MenuStringsScribeDOSEnglish };
+
+static const char *const kEoB2MenuStringsDrop2DOSEnglish[3] = {
+ " Select the\r character you\r wish to drop.",
+ " You must specify\r a name for your\r save game!",
+ " Are you sure you\r wish to replace\r your saved game?"
+};
+
+static const StringListProvider kEoB2MenuStringsDrop2DOSEnglishProvider = { ARRAYSIZE(kEoB2MenuStringsDrop2DOSEnglish), kEoB2MenuStringsDrop2DOSEnglish };
+
+static const char *const kEoB2MenuStringsHeadDOSEnglish[3] = {
+ "Camp:",
+ "Preferences:",
+ "Game Options:"
+};
+
+static const StringListProvider kEoB2MenuStringsHeadDOSEnglishProvider = { ARRAYSIZE(kEoB2MenuStringsHeadDOSEnglish), kEoB2MenuStringsHeadDOSEnglish };
+
+static const char *const kEoB2MenuStringsPoisonDOSEnglish[1] = {
+ "Poisoned party\rmembers may die!\rRest anyway?"
+};
+
+static const StringListProvider kEoB2MenuStringsPoisonDOSEnglishProvider = { ARRAYSIZE(kEoB2MenuStringsPoisonDOSEnglish), kEoB2MenuStringsPoisonDOSEnglish };
+
+static const char *const kEoB2MenuStringsMgcDOSEnglish[2] = {
+ "%-18s %1d",
+ "%d of %d Remaining. "
+};
+
+static const StringListProvider kEoB2MenuStringsMgcDOSEnglishProvider = { ARRAYSIZE(kEoB2MenuStringsMgcDOSEnglish), kEoB2MenuStringsMgcDOSEnglish };
+
+static const char *const kEoB2MenuStringsPrefsDOSEnglish[4] = {
+ "Tunes are %-3s",
+ "Sounds are %-3s",
+ "Bar Graphs are %-3s",
+ "Mouse is %-3s"
+};
+
+static const StringListProvider kEoB2MenuStringsPrefsDOSEnglishProvider = { ARRAYSIZE(kEoB2MenuStringsPrefsDOSEnglish), kEoB2MenuStringsPrefsDOSEnglish };
+
+static const char *const kEoB2MenuStringsRest2DOSEnglish[5] = {
+ "%s gained %s.\r",
+ "%s memorized %s.\r",
+ "%s casts healing on %s.\r",
+ "Hours rested: %-4d",
+ "\r%s\r"
+};
+
+static const StringListProvider kEoB2MenuStringsRest2DOSEnglishProvider = { ARRAYSIZE(kEoB2MenuStringsRest2DOSEnglish), kEoB2MenuStringsRest2DOSEnglish };
+
+static const char *const kEoB2MenuStringsRest3DOSEnglish[1] = {
+ "\x06\x06""You do not feel it is safe to rest here."
+};
+
+static const StringListProvider kEoB2MenuStringsRest3DOSEnglishProvider = { ARRAYSIZE(kEoB2MenuStringsRest3DOSEnglish), kEoB2MenuStringsRest3DOSEnglish };
+
+static const char *const kEoB2MenuStringsRest4DOSEnglish[1] = {
+ "\x06\x06""You can't rest here, monsters are near."
+};
+
+static const StringListProvider kEoB2MenuStringsRest4DOSEnglishProvider = { ARRAYSIZE(kEoB2MenuStringsRest4DOSEnglish), kEoB2MenuStringsRest4DOSEnglish };
+
+static const char *const kEoB2MenuStringsDefeatDOSEnglish[1] = {
+ "\rYour entire party\rhas been defeated!\rWould you like to\rload a previously\rsaved game?"
+};
+
+static const StringListProvider kEoB2MenuStringsDefeatDOSEnglishProvider = { ARRAYSIZE(kEoB2MenuStringsDefeatDOSEnglish), kEoB2MenuStringsDefeatDOSEnglish };
+
+static const char *const kEoB2MenuStringsTransferDOSEnglish[5] = {
+ "You must transfer\rfour party members\rbefore you may play!",
+ "You may only transfer\rfour party members to\rEOB II!",
+ "Items which are not\ruseful or unbalance\rthe game will be\rdeleted.",
+ " \r You do not have\r a mage in your\r party.",
+ " \r You do not have\r a cleric or\r paladin in your\r party."
+};
+
+static const StringListProvider kEoB2MenuStringsTransferDOSEnglishProvider = { ARRAYSIZE(kEoB2MenuStringsTransferDOSEnglish), kEoB2MenuStringsTransferDOSEnglish };
+
+static const char *const kEoB2MenuStringsSpecDOSEnglish[2] = {
+ "As you awaken, you\rdiscover that Insal\rthe thief is gone!",
+ "A quick inventory\rreveals equipment\rhas been stolen!"
+};
+
+static const StringListProvider kEoB2MenuStringsSpecDOSEnglishProvider = { ARRAYSIZE(kEoB2MenuStringsSpecDOSEnglish), kEoB2MenuStringsSpecDOSEnglish };
+
+static const char *const kEoB2MenuYesNoStringsDOSEnglish[2] = {
+ "Yes",
+ "No"
+};
+
+static const StringListProvider kEoB2MenuYesNoStringsDOSEnglishProvider = { ARRAYSIZE(kEoB2MenuYesNoStringsDOSEnglish), kEoB2MenuYesNoStringsDOSEnglish };
+
+static const char *const kEoB2CharGuiStringsHpDOSEnglish[2] = {
+ "HP",
+ "%3d of %-3d"
+};
+
+static const StringListProvider kEoB2CharGuiStringsHpDOSEnglishProvider = { ARRAYSIZE(kEoB2CharGuiStringsHpDOSEnglish), kEoB2CharGuiStringsHpDOSEnglish };
+
+static const char *const kEoB2CharGuiStringsWp2DOSEnglish[3] = {
+ "MISS",
+ "HACK",
+ "BASH"
+};
+
+static const StringListProvider kEoB2CharGuiStringsWp2DOSEnglishProvider = { ARRAYSIZE(kEoB2CharGuiStringsWp2DOSEnglish), kEoB2CharGuiStringsWp2DOSEnglish };
+
+static const char *const kEoB2CharGuiStringsWrDOSEnglish[4] = {
+ "CAN'T",
+ "REACH",
+ "NO",
+ "AMMO"
+};
+
+static const StringListProvider kEoB2CharGuiStringsWrDOSEnglishProvider = { ARRAYSIZE(kEoB2CharGuiStringsWrDOSEnglish), kEoB2CharGuiStringsWrDOSEnglish };
+
+static const char *const kEoB2CharGuiStringsSt2DOSEnglish[7] = {
+ "Swapping",
+ "DEAD",
+ "UNCONSCIOUS",
+ "POISON (SLOW)",
+ "POISONED",
+ "PARALYZED",
+ "PETRIFIED"
+};
+
+static const StringListProvider kEoB2CharGuiStringsSt2DOSEnglishProvider = { ARRAYSIZE(kEoB2CharGuiStringsSt2DOSEnglish), kEoB2CharGuiStringsSt2DOSEnglish };
+
+static const char *const kEoB2CharGuiStringsInDOSEnglish[4] = {
+ "CHARACTER INFO",
+ "ARMOR CLASS",
+ "EXP",
+ "LVL"
+};
+
+static const StringListProvider kEoB2CharGuiStringsInDOSEnglishProvider = { ARRAYSIZE(kEoB2CharGuiStringsInDOSEnglish), kEoB2CharGuiStringsInDOSEnglish };
+
+static const char *const kEoB2CharStatusStrings7DOSEnglish[1] = {
+ "%s no longer has giant strength.\r"
+};
+
+static const StringListProvider kEoB2CharStatusStrings7DOSEnglishProvider = { ARRAYSIZE(kEoB2CharStatusStrings7DOSEnglish), kEoB2CharStatusStrings7DOSEnglish };
+
+static const char *const kEoB2CharStatusStrings82DOSEnglish[1] = {
+ "\x06\x06""%s feels the effects of poison!\r"
+};
+
+static const StringListProvider kEoB2CharStatusStrings82DOSEnglishProvider = { ARRAYSIZE(kEoB2CharStatusStrings82DOSEnglish), kEoB2CharStatusStrings82DOSEnglish };
+
+static const char *const kEoB2CharStatusStrings9DOSEnglish[1] = {
+ "%s is no longer paralyzed!\r"
+};
+
+static const StringListProvider kEoB2CharStatusStrings9DOSEnglishProvider = { ARRAYSIZE(kEoB2CharStatusStrings9DOSEnglish), kEoB2CharStatusStrings9DOSEnglish };
+
+static const char *const kEoB2CharStatusStrings12DOSEnglish[1] = {
+ "%s slows down.\r"
+};
+
+static const StringListProvider kEoB2CharStatusStrings12DOSEnglishProvider = { ARRAYSIZE(kEoB2CharStatusStrings12DOSEnglish), kEoB2CharStatusStrings12DOSEnglish };
+
+static const char *const kEoB2CharStatusStrings132DOSEnglish[1] = {
+ "\x06\x06""%s is %s!\r"
+};
+
+static const StringListProvider kEoB2CharStatusStrings132DOSEnglishProvider = { ARRAYSIZE(kEoB2CharStatusStrings132DOSEnglish), kEoB2CharStatusStrings132DOSEnglish };
+
+static const char *const kEoB2LevelGainStringsDOSEnglish[1] = {
+ "\x06\x01""%s has gained a level.""\x06\x0F""\r"
+};
+
+static const StringListProvider kEoB2LevelGainStringsDOSEnglishProvider = { ARRAYSIZE(kEoB2LevelGainStringsDOSEnglish), kEoB2LevelGainStringsDOSEnglish };
+
+static const char *const kEoB2BookNumbersDOSEnglish[5] = {
+ "First",
+ "Second",
+ "Third",
+ "Fourth",
+ "Fifth"
+};
+
+static const StringListProvider kEoB2BookNumbersDOSEnglishProvider = { ARRAYSIZE(kEoB2BookNumbersDOSEnglish), kEoB2BookNumbersDOSEnglish };
+
+static const char *const kEoB2MageSpellsListDOSEnglish[33] = {
+ "",
+ "Armor",
+ "Burning Hands",
+ "Detect Magic",
+ "Magic Missile",
+ "Shield",
+ "Shocking Grasp",
+ "Blur",
+ "Detect Invisible",
+ "Imp Identify",
+ "Invisibility",
+ "M's Acid Arrow",
+ "Dispel Magic",
+ "Fireball",
+ "Haste",
+ "Hold Person",
+ "Invisibility 10'",
+ "Lightning Bolt",
+ "Vampiric Touch",
+ "Fear",
+ "Ice Storm",
+ "Imp Invisibility",
+ "Remove Curse",
+ "Cone of Cold",
+ "Hold Monster",
+ "Wall of Force",
+ "Disintegrate",
+ "Flesh to Stone",
+ "Stone to Flesh",
+ "True Seeing",
+ "Finger of Death",
+ "Power Word Stun",
+ "Bigby's Fist"
+};
+
+static const StringListProvider kEoB2MageSpellsListDOSEnglishProvider = { ARRAYSIZE(kEoB2MageSpellsListDOSEnglish), kEoB2MageSpellsListDOSEnglish };
+
+static const char *const kEoB2ClericSpellsListDOSEnglish[30] = {
+ "",
+ "Bless",
+ "Cause Light Wnds",
+ "Cure Light Wnds",
+ "Detect Magic",
+ "Protect-Evil",
+ "Aid",
+ "Flame Blade",
+ "Hold Person",
+ "Slow Poison",
+ "Create Food",
+ "Dispel Magic",
+ "Magical Vestment",
+ "Prayer",
+ "Remove Paralysis",
+ "Cause Serious",
+ "Cure Serious",
+ "Neutral-Poison",
+ "Protect-Evil 10'",
+ "Cause Critical",
+ "Cure Critical",
+ "Flame Strike",
+ "Raise Dead",
+ "Slay Living",
+ "True Seeing",
+ "Harm",
+ "Heal",
+ "Ressurection",
+ "Lay on Hands",
+ "Turn undead"
+};
+
+static const StringListProvider kEoB2ClericSpellsListDOSEnglishProvider = { ARRAYSIZE(kEoB2ClericSpellsListDOSEnglish), kEoB2ClericSpellsListDOSEnglish };
+
+static const char *const kEoB2SpellNamesDOSEnglish[68] = {
+ "armor",
+ "burning hands",
+ "detect magic",
+ "magic missile",
+ "shield",
+ "shocking grasp",
+ "blur",
+ "detect invisibility",
+ "improved identify",
+ "invisibility",
+ "melf's acid arrow",
+ "dispel magic",
+ "fireball",
+ "haste",
+ "Hold Person",
+ "invisibility 10' radius",
+ "lightning bolt",
+ "vampiric touch",
+ "fear",
+ "ice storm",
+ "improved invisibility",
+ "remove curse",
+ "cone of cold",
+ "hold monster",
+ "wall of force",
+ "disintegrate",
+ "flesh to stone",
+ "stone to flesh",
+ "true seeing",
+ "finger of death",
+ "power word stun",
+ "bigby's clenched fist",
+ "bless",
+ "cause light wounds",
+ "cure light wounds",
+ "detect magic",
+ "protection from evil",
+ "aid",
+ "flame blade",
+ "hold person",
+ "slow poison",
+ "create food",
+ "dispel magic",
+ "magical vestment",
+ "prayer",
+ "remove paralysis",
+ "cause serious wounds",
+ "cure serious wounds",
+ "neutralize poison",
+ "protection from evil 10' radius",
+ "cause critical wounds",
+ "cure critical wounds",
+ "flame strike",
+ "raise dead",
+ "slay living",
+ "true seeing",
+ "harm",
+ "heal",
+ "ressurection",
+ "lay on hands",
+ "turn undead",
+ "",
+ "mystic defense",
+ "",
+ "",
+ "",
+ "",
+ ""
+};
+
+static const StringListProvider kEoB2SpellNamesDOSEnglishProvider = { ARRAYSIZE(kEoB2SpellNamesDOSEnglish), kEoB2SpellNamesDOSEnglish };
+
+static const char *const kEoB2MagicStrings1DOSEnglish[6] = {
+ "ABORT SPELL",
+ "ABORT SPELL",
+ "You must have a free hand for this spell.\r",
+ "You can't have two of this spell type active.\r",
+ "%s casts %s.\r",
+ "\rok\r"
+};
+
+static const StringListProvider kEoB2MagicStrings1DOSEnglishProvider = { ARRAYSIZE(kEoB2MagicStrings1DOSEnglish), kEoB2MagicStrings1DOSEnglish };
+
+static const char *const kEoB2MagicStrings2DOSEnglish[5] = {
+ "The spell fails!\r",
+ "%s has been disintegrated!\r",
+ "\x06\x06""The party has been hit by a death spell!\r",
+ "\x06\x06""%s has been hit by cause serious wounds.\r",
+ "PETRIFIED"
+};
+
+static const StringListProvider kEoB2MagicStrings2DOSEnglishProvider = { ARRAYSIZE(kEoB2MagicStrings2DOSEnglish), kEoB2MagicStrings2DOSEnglish };
+
+static const char *const kEoB2MagicStrings3DOSEnglish[5] = {
+ "Cast spell on which character? ",
+ "\rSpell aborted.\r",
+ "%s's %s spell expires.\r",
+ "%s missed the monster.\r",
+ "%s must be in the front ranks to hit!\r"
+};
+
+static const StringListProvider kEoB2MagicStrings3DOSEnglishProvider = { ARRAYSIZE(kEoB2MagicStrings3DOSEnglish), kEoB2MagicStrings3DOSEnglish };
+
+static const char *const kEoB2MagicStrings4DOSEnglish[1] = {
+ "no effect.\r"
+};
+
+static const StringListProvider kEoB2MagicStrings4DOSEnglishProvider = { ARRAYSIZE(kEoB2MagicStrings4DOSEnglish), kEoB2MagicStrings4DOSEnglish };
+
+static const char *const kEoB2MagicStrings6DOSEnglish[1] = {
+ "%s already has an armor class better than AC 6."
+};
+
+static const StringListProvider kEoB2MagicStrings6DOSEnglishProvider = { ARRAYSIZE(kEoB2MagicStrings6DOSEnglish), kEoB2MagicStrings6DOSEnglish };
+
+static const char *const kEoB2MagicStrings7DOSEnglish[2] = {
+ "%s is already under the effect of a %s spell.\r",
+ "The party is already under the effect of a %s spell.\r"
+};
+
+static const StringListProvider kEoB2MagicStrings7DOSEnglishProvider = { ARRAYSIZE(kEoB2MagicStrings7DOSEnglish), kEoB2MagicStrings7DOSEnglish };
+
+static const char *const kEoB2MagicStrings8DOSEnglish[6] = {
+ "The spell fails!\r",
+ "held",
+ "The spell fails!\r",
+ "The spell fails\r",
+ "No monster within reach!\r",
+ "%s is already under the effect of an aid spell.\r"
+};
+
+static const StringListProvider kEoB2MagicStrings8DOSEnglishProvider = { ARRAYSIZE(kEoB2MagicStrings8DOSEnglish), kEoB2MagicStrings8DOSEnglish };
+
+static const byte kEoB2ManDefDOSEnglish[200] = {
+ 0x09, 0x03, 0x04, 0x00, 0x09, 0x0D, 0x02, 0x00,
+ 0x09, 0x07, 0x07, 0x00, 0x14, 0x06, 0x05, 0x00,
+ 0x14, 0x10, 0x06, 0x00, 0x14, 0x1C, 0x03, 0x00,
+ 0x1A, 0x04, 0x06, 0x00, 0x1A, 0x0A, 0x05, 0x00,
+ 0x1A, 0x0C, 0x05, 0x00, 0x15, 0x03, 0x04, 0x00,
+ 0x15, 0x05, 0x05, 0x00, 0x15, 0x0F, 0x02, 0x00,
+ 0x15, 0x14, 0x03, 0x00, 0x15, 0x1B, 0x02, 0x00,
+ 0x15, 0x1D, 0x03, 0x00, 0x23, 0x01, 0x03, 0x00,
+ 0x23, 0x03, 0x03, 0x00, 0x23, 0x08, 0x03, 0x00,
+ 0x23, 0x19, 0x02, 0x00, 0x23, 0x1F, 0x04, 0x00,
+ 0x23, 0x26, 0x04, 0x00, 0x26, 0x03, 0x02, 0x00,
+ 0x26, 0x05, 0x06, 0x00, 0x26, 0x12, 0x03, 0x00,
+ 0x26, 0x18, 0x01, 0x00, 0x26, 0x1E, 0x01, 0x00,
+ 0x26, 0x21, 0x04, 0x00, 0x17, 0x01, 0x03, 0x00,
+ 0x17, 0x03, 0x06, 0x00, 0x17, 0x06, 0x02, 0x00,
+ 0x17, 0x0F, 0x05, 0x00, 0x17, 0x1B, 0x01, 0x00,
+ 0x17, 0x21, 0x06, 0x00, 0x12, 0x03, 0x02, 0x00,
+ 0x12, 0x05, 0x04, 0x00, 0x12, 0x09, 0x02, 0x00,
+ 0x12, 0x0B, 0x04, 0x00, 0x12, 0x0D, 0x06, 0x00,
+ 0x12, 0x0F, 0x03, 0x00, 0x12, 0x11, 0x05, 0x00,
+ 0x12, 0x12, 0x02, 0x00, 0x1F, 0x02, 0x04, 0x00,
+ 0x1F, 0x02, 0x07, 0x00, 0x1F, 0x04, 0x03, 0x00,
+ 0x1F, 0x06, 0x03, 0x00, 0x1F, 0x09, 0x03, 0x00,
+ 0x1F, 0x0A, 0x01, 0x00, 0x1C, 0x03, 0x03, 0x00,
+ 0x1C, 0x04, 0x02, 0x00, 0x1C, 0x05, 0x06, 0x00
+};
+
+static const ByteProvider kEoB2ManDefDOSEnglishProvider = { ARRAYSIZE(kEoB2ManDefDOSEnglish), kEoB2ManDefDOSEnglish };
+
+static const char *const kEoB2ManWordDOSEnglish[51] = {
+ "cursor",
+ "majority",
+ "right",
+ "unusable",
+ "greyed",
+ "thrown",
+ "spellcasters",
+ "button",
+ "characters",
+ "carefree",
+ "practical",
+ "inherit",
+ "while",
+ "combinations",
+ "charm",
+ "individuals",
+ "gestures",
+ "pummel",
+ "paladins",
+ "skill",
+ "advancement",
+ "also",
+ "counters",
+ "knowledge",
+ "greater",
+ "assume",
+ "several",
+ "laying",
+ "reach",
+ "swiftly",
+ "allows",
+ "limited",
+ "jack",
+ "thrown",
+ "weapons",
+ "note",
+ "certain",
+ "damage",
+ "done",
+ "bonus",
+ "may",
+ "over",
+ "box",
+ "put",
+ "portrait",
+ "backpack",
+ "inside",
+ "causes",
+ "until",
+ "outright",
+ ""
+};
+
+static const StringListProvider kEoB2ManWordDOSEnglishProvider = { ARRAYSIZE(kEoB2ManWordDOSEnglish), kEoB2ManWordDOSEnglish };
+
+static const char *const kEoB2ManPromptDOSEnglish[1] = {
+ "\r\r\r\rOn the page with this symbol...\r\rFind line %d\rEnter word %d\r"
+};
+
+static const StringListProvider kEoB2ManPromptDOSEnglishProvider = { ARRAYSIZE(kEoB2ManPromptDOSEnglish), kEoB2ManPromptDOSEnglish };
+
+static const char *const kEoB2MainMenuStringsDOSEnglish[5] = {
+ "LOAD GAME IN PROGRESS\r",
+ "START A NEW PARTY\r",
+ "TRANSFER EOB I PARTY\r",
+ "RUN INTRODUCTION\r",
+ "EXIT TO DOS\r"
+};
+
+static const StringListProvider kEoB2MainMenuStringsDOSEnglishProvider = { ARRAYSIZE(kEoB2MainMenuStringsDOSEnglish), kEoB2MainMenuStringsDOSEnglish };
+
+static const char *const kEoB2TransferStrings1DOSEnglish[2] = {
+ "Level: %d",
+ " / %d"
+};
+
+static const StringListProvider kEoB2TransferStrings1DOSEnglishProvider = { ARRAYSIZE(kEoB2TransferStrings1DOSEnglish), kEoB2TransferStrings1DOSEnglish };
+
+static const char *const kEoB2TransferStrings2DOSEnglish[2] = {
+ "You may only take four characters on your adventure.",
+ "Select OK when you are finished choosing your party."
+};
+
+static const StringListProvider kEoB2TransferStrings2DOSEnglishProvider = { ARRAYSIZE(kEoB2TransferStrings2DOSEnglish), kEoB2TransferStrings2DOSEnglish };
+
+static const char *const kEoB2TransferLabelsDOSEnglish[2] = {
+ "CANCEL",
+ "OK"
+};
+
+static const StringListProvider kEoB2TransferLabelsDOSEnglishProvider = { ARRAYSIZE(kEoB2TransferLabelsDOSEnglish), kEoB2TransferLabelsDOSEnglish };
+
+static const char *const kEoB2IntroStringsDOSEnglish[20] = {
+ "You were settling in for an evening \rby the fire.",
+ "Then a note was slipped to you.",
+ "It was from your friend Khelben \rBlackstaff, Archmage of the city.",
+ "The message was urgent.",
+ "What could Khelben want?",
+ "Welcome, please come in.",
+ "Khelben awaits you in his study.",
+ "Thank you for coming so quickly.",
+ "I am troubled my friend.",
+ "Ancient Evil stirs in the \rTemple Darkmoon.",
+ "I fear for the safety of our city.",
+ "I need your help.",
+ "Three nights ago \rI sent forth a scout.",
+ "She has not yet returned.",
+ "I fear for her safety.",
+ "Take this coin.",
+ "I will use it to contact you.",
+ "You must act quickly.",
+ "I will teleport you near Darkmoon.",
+ "May luck be with you, my friend."
+};
+
+static const StringListProvider kEoB2IntroStringsDOSEnglishProvider = { ARRAYSIZE(kEoB2IntroStringsDOSEnglish), kEoB2IntroStringsDOSEnglish };
+
+static const char *const kEoB2IntroCPSFilesDOSEnglish[13] = {
+ "STREET1.CPS",
+ "STREET2.CPS",
+ "DOORWAY1.CPS",
+ "DOORWAY2.CPS",
+ "WESTWOOD.CPS",
+ "WINDING.CPS",
+ "KHELBAN2.CPS",
+ "KHELBAN1.CPS",
+ "KHELBAN3.CPS",
+ "KHELBAN4.CPS",
+ "COIN.CPS",
+ "KHELBAN5.CPS",
+ "KHELBAN6.CPS"
+};
+
+static const StringListProvider kEoB2IntroCPSFilesDOSEnglishProvider = { ARRAYSIZE(kEoB2IntroCPSFilesDOSEnglish), kEoB2IntroCPSFilesDOSEnglish };
+
+static const char *const kEoB2FinaleStringsDOSEnglish[20] = {
+ "Finally, Dran has been defeated.",
+ "Suddenly, your friend Khelben appears.",
+ "Greetings, my victorious friends.",
+ "You have defeated Dran!",
+ "I did not know Dran was a dragon.",
+ "He must have been over 300 years old!",
+ "His power is gone.",
+ "But Darkmoon is still a source\rof great evil.",
+ "And many of his minions remain.",
+ "Now we must leave this place.",
+ "So my forces can destroy it\ronce and for all.",
+ "Follow me.",
+ "Powerful mages stand ready\rfor the final assault\ron Darkmoon.",
+ "The Temple's evil is very strong.",
+ "It must not be allowed to survive!",
+ "The Temple ceases to exist.",
+ "My friends, our work is done.",
+ "Thank you.",
+ "You have earned my deepest respect.",
+ "We will remember you always."
+};
+
+static const StringListProvider kEoB2FinaleStringsDOSEnglishProvider = { ARRAYSIZE(kEoB2FinaleStringsDOSEnglish), kEoB2FinaleStringsDOSEnglish };
+
+static const byte kEoB2CreditsDataDOSEnglish[2316] = {
+ 0x02, 0x05, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x02, 0x10, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
+ 0x02, 0x03, 0x0D, 0x02, 0x04, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x02,
+ 0x06, 0x0D, 0x0D, 0x0D, 0x02, 0x01, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x44, 0x69, 0x72, 0x65,
+ 0x63, 0x74, 0x6F, 0x72, 0x3A, 0x20, 0x42, 0x72,
+ 0x65, 0x74, 0x74, 0x20, 0x57, 0x2E, 0x20, 0x53,
+ 0x70, 0x65, 0x72, 0x72, 0x79, 0x20, 0x20, 0x20,
+ 0x0D, 0x0D, 0x0D, 0x0D, 0x20, 0x20, 0x4F, 0x72,
+ 0x69, 0x67, 0x69, 0x6E, 0x61, 0x6C, 0x20, 0x43,
+ 0x6F, 0x6E, 0x63, 0x65, 0x70, 0x74, 0x3A, 0x20,
+ 0x50, 0x68, 0x69, 0x6C, 0x69, 0x70, 0x20, 0x57,
+ 0x2E, 0x20, 0x47, 0x6F, 0x72, 0x72, 0x6F, 0x77,
+ 0x20, 0x20, 0x0D, 0x0D, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x42, 0x72, 0x65, 0x74, 0x74, 0x20, 0x57, 0x2E,
+ 0x20, 0x53, 0x70, 0x65, 0x72, 0x72, 0x79, 0x20,
+ 0x20, 0x20, 0x0D, 0x0D, 0x0D, 0x0D, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x47, 0x61, 0x6D,
+ 0x65, 0x20, 0x44, 0x65, 0x73, 0x69, 0x67, 0x6E,
+ 0x3A, 0x20, 0x42, 0x72, 0x65, 0x74, 0x74, 0x20,
+ 0x57, 0x2E, 0x20, 0x53, 0x70, 0x65, 0x72, 0x72,
+ 0x79, 0x20, 0x20, 0x20, 0x0D, 0x0D, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x50, 0x61, 0x75, 0x6C, 0x20, 0x53,
+ 0x2E, 0x20, 0x4D, 0x75, 0x64, 0x72, 0x61, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x0D, 0x0D, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x42, 0x69, 0x6C, 0x6C, 0x20, 0x53,
+ 0x74, 0x6F, 0x6B, 0x65, 0x73, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x0D, 0x0D, 0x0D, 0x0D,
+ 0x20, 0x20, 0x20, 0x4C, 0x65, 0x61, 0x64, 0x20,
+ 0x50, 0x72, 0x6F, 0x67, 0x72, 0x61, 0x6D, 0x6D,
+ 0x65, 0x72, 0x3A, 0x20, 0x50, 0x68, 0x69, 0x6C,
+ 0x69, 0x70, 0x20, 0x57, 0x2E, 0x20, 0x47, 0x6F,
+ 0x72, 0x72, 0x6F, 0x77, 0x20, 0x20, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x20, 0x20, 0x4C, 0x65, 0x76, 0x65,
+ 0x6C, 0x20, 0x50, 0x72, 0x6F, 0x67, 0x72, 0x61,
+ 0x6D, 0x6D, 0x65, 0x72, 0x3A, 0x20, 0x42, 0x69,
+ 0x6C, 0x6C, 0x20, 0x53, 0x74, 0x6F, 0x6B, 0x65,
+ 0x73, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x0D, 0x0D, 0x0D, 0x0D, 0x20, 0x20, 0x41, 0x6D,
+ 0x69, 0x67, 0x61, 0x20, 0x50, 0x72, 0x6F, 0x67,
+ 0x72, 0x61, 0x6D, 0x6D, 0x65, 0x72, 0x3A, 0x20,
+ 0x42, 0x69, 0x6C, 0x6C, 0x20, 0x53, 0x74, 0x6F,
+ 0x6B, 0x65, 0x73, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x0D, 0x0D, 0x0D, 0x0D, 0x20, 0x49,
+ 0x6E, 0x74, 0x72, 0x6F, 0x20, 0x26, 0x20, 0x46,
+ 0x69, 0x6E, 0x61, 0x6C, 0x65, 0x20, 0x62, 0x79,
+ 0x3A, 0x20, 0x4A, 0x6F, 0x65, 0x20, 0x42, 0x6F,
+ 0x73, 0x74, 0x69, 0x63, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x0D, 0x0D, 0x0D, 0x0D,
+ 0x20, 0x20, 0x20, 0x20, 0x41, 0x72, 0x74, 0x20,
+ 0x26, 0x20, 0x47, 0x72, 0x61, 0x70, 0x68, 0x69,
+ 0x63, 0x73, 0x3A, 0x20, 0x52, 0x69, 0x63, 0x6B,
+ 0x20, 0x50, 0x61, 0x72, 0x6B, 0x73, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x0D, 0x0D,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x41, 0x61, 0x72, 0x6F,
+ 0x6E, 0x20, 0x50, 0x6F, 0x77, 0x65, 0x6C, 0x6C,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x0D, 0x0D,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x4A, 0x6F, 0x73, 0x65,
+ 0x70, 0x68, 0x20, 0x48, 0x65, 0x77, 0x69, 0x74,
+ 0x74, 0x20, 0x49, 0x56, 0x20, 0x20, 0x0D, 0x0D,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x52, 0x65, 0x6E, 0x20,
+ 0x4F, 0x6C, 0x73, 0x65, 0x6E, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x0D, 0x0D,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x4C, 0x6F, 0x75, 0x69,
+ 0x73, 0x65, 0x20, 0x53, 0x61, 0x6E, 0x64, 0x6F,
+ 0x76, 0x61, 0x6C, 0x20, 0x20, 0x20, 0x0D, 0x0D,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x4A, 0x75, 0x64, 0x69,
+ 0x74, 0x68, 0x20, 0x50, 0x65, 0x74, 0x65, 0x72,
+ 0x73, 0x6F, 0x6E, 0x20, 0x20, 0x20, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x4D,
+ 0x75, 0x73, 0x69, 0x63, 0x3A, 0x20, 0x46, 0x72,
+ 0x61, 0x6E, 0x6B, 0x20, 0x4B, 0x6C, 0x65, 0x70,
+ 0x61, 0x63, 0x6B, 0x69, 0x20, 0x20, 0x20, 0x20,
+ 0x0D, 0x0D, 0x0D, 0x0D, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x53, 0x6F, 0x75, 0x6E, 0x64, 0x20, 0x45,
+ 0x66, 0x66, 0x65, 0x63, 0x74, 0x73, 0x3A, 0x20,
+ 0x50, 0x61, 0x75, 0x6C, 0x20, 0x53, 0x2E, 0x20,
+ 0x4D, 0x75, 0x64, 0x72, 0x61, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x0D, 0x0D, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x44, 0x77, 0x69, 0x67, 0x68, 0x74, 0x20, 0x4F,
+ 0x6B, 0x61, 0x68, 0x61, 0x72, 0x61, 0x20, 0x20,
+ 0x20, 0x20, 0x0D, 0x0D, 0x0D, 0x0D, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x57, 0x72, 0x69, 0x74, 0x65, 0x72,
+ 0x3A, 0x20, 0x4D, 0x61, 0x72, 0x63, 0x20, 0x43,
+ 0x72, 0x61, 0x6D, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x0D, 0x0D, 0x0D, 0x0D,
+ 0x20, 0x51, 0x75, 0x61, 0x6C, 0x69, 0x74, 0x79,
+ 0x20, 0x41, 0x73, 0x73, 0x75, 0x72, 0x61, 0x6E,
+ 0x63, 0x65, 0x3A, 0x20, 0x47, 0x6C, 0x65, 0x6E,
+ 0x6E, 0x20, 0x53, 0x70, 0x65, 0x72, 0x72, 0x79,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x0D, 0x0D, 0x53, 0x70, 0x65, 0x63,
+ 0x69, 0x61, 0x6C, 0x20, 0x54, 0x68, 0x61, 0x6E,
+ 0x6B, 0x73, 0x20, 0x74, 0x6F, 0x0D, 0x0D, 0x0D,
+ 0x43, 0x68, 0x75, 0x63, 0x6B, 0x20, 0x4B, 0x72,
+ 0x6F, 0x65, 0x67, 0x65, 0x6C, 0x0D, 0x0D, 0x58,
+ 0x61, 0x6E, 0x61, 0x74, 0x68, 0x61, 0x72, 0x20,
+ 0x74, 0x68, 0x65, 0x20, 0x42, 0x65, 0x68, 0x6F,
+ 0x6C, 0x64, 0x65, 0x72, 0x0D, 0x0D, 0x61, 0x6E,
+ 0x64, 0x0D, 0x0D, 0x4D, 0x69, 0x6B, 0x65, 0x27,
+ 0x73, 0x20, 0x63, 0x61, 0x74, 0x2C, 0x20, 0x53,
+ 0x70, 0x61, 0x72, 0x6B, 0x79, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x50, 0x75, 0x62,
+ 0x6C, 0x69, 0x73, 0x68, 0x65, 0x64, 0x20, 0x62,
+ 0x79, 0x0D, 0x0D, 0x02, 0x02, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x0D, 0x0D, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x72, 0x6F,
+ 0x64, 0x75, 0x63, 0x65, 0x72, 0x73, 0x3A, 0x20,
+ 0x44, 0x61, 0x6E, 0x20, 0x43, 0x65, 0x72, 0x6D,
+ 0x61, 0x6B, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x0D, 0x0D, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x47, 0x65, 0x6F, 0x72, 0x67, 0x65, 0x20, 0x4D,
+ 0x61, 0x63, 0x44, 0x6F, 0x6E, 0x61, 0x6C, 0x64,
+ 0x20, 0x20, 0x0D, 0x0D, 0x0D, 0x0D, 0x20, 0x20,
+ 0x47, 0x61, 0x6D, 0x65, 0x20, 0x44, 0x65, 0x76,
+ 0x65, 0x6C, 0x6F, 0x70, 0x6D, 0x65, 0x6E, 0x74,
+ 0x3A, 0x20, 0x4E, 0x69, 0x63, 0x68, 0x6F, 0x6C,
+ 0x61, 0x73, 0x20, 0x42, 0x65, 0x6C, 0x69, 0x61,
+ 0x65, 0x66, 0x66, 0x20, 0x0D, 0x0D, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x44, 0x61, 0x76, 0x69, 0x64, 0x20,
+ 0x41, 0x2E, 0x20, 0x4C, 0x75, 0x63, 0x63, 0x61,
+ 0x20, 0x20, 0x20, 0x20, 0x0D, 0x0D, 0x0D, 0x0D,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x6C,
+ 0x61, 0x79, 0x20, 0x54, 0x65, 0x73, 0x74, 0x65,
+ 0x72, 0x73, 0x3A, 0x20, 0x50, 0x68, 0x69, 0x6C,
+ 0x20, 0x41, 0x6C, 0x6E, 0x65, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x0D, 0x0D,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x4A, 0x6F, 0x68, 0x6E,
+ 0x20, 0x42, 0x6F, 0x6F, 0x63, 0x6B, 0x68, 0x6F,
+ 0x6C, 0x64, 0x74, 0x20, 0x20, 0x20, 0x0D, 0x0D,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x47, 0x6C, 0x65, 0x6E,
+ 0x20, 0x43, 0x75, 0x72, 0x65, 0x74, 0x6F, 0x6E,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x0D, 0x0D,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x4D, 0x61, 0x72, 0x6B,
+ 0x20, 0x48, 0x61, 0x6C, 0x6C, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x0D, 0x0D,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x42, 0x72, 0x69, 0x61,
+ 0x6E, 0x20, 0x4C, 0x6F, 0x77, 0x65, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x0D, 0x0D,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x52, 0x6F, 0x62, 0x65,
+ 0x72, 0x74, 0x20, 0x4C, 0x75, 0x70, 0x6F, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x0D, 0x0D,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x41, 0x6C, 0x61, 0x6E,
+ 0x20, 0x4D, 0x61, 0x72, 0x65, 0x6E, 0x63, 0x6F,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x0D, 0x0D,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x4A, 0x61, 0x73, 0x6F,
+ 0x6E, 0x20, 0x52, 0x61, 0x79, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x0D, 0x0D,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x4A, 0x65, 0x66, 0x66,
+ 0x20, 0x53, 0x68, 0x6F, 0x74, 0x77, 0x65, 0x6C,
+ 0x6C, 0x20, 0x20, 0x20, 0x20, 0x20, 0x0D, 0x0D,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x41, 0x6E, 0x64, 0x72,
+ 0x65, 0x20, 0x56, 0x72, 0x69, 0x67, 0x6E, 0x61,
+ 0x75, 0x64, 0x20, 0x20, 0x20, 0x20, 0x0D, 0x0D,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x43, 0x68, 0x72, 0x69,
+ 0x73, 0x20, 0x57, 0x61, 0x72, 0x73, 0x68, 0x61,
+ 0x75, 0x65, 0x72, 0x20, 0x20, 0x20, 0x0D, 0x0D,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x61, 0x6E, 0x64, 0x20,
+ 0x54, 0x53, 0x43, 0x53, 0x2C, 0x20, 0x49, 0x6E,
+ 0x63, 0x20, 0x20, 0x20, 0x20, 0x20, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x54, 0x65, 0x73, 0x74, 0x20, 0x53, 0x75, 0x70,
+ 0x70, 0x6F, 0x72, 0x74, 0x3A, 0x20, 0x4B, 0x79,
+ 0x6D, 0x20, 0x47, 0x6F, 0x79, 0x65, 0x72, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x0D, 0x43, 0x61, 0x73, 0x74, 0x20,
+ 0x6F, 0x66, 0x20, 0x43, 0x68, 0x61, 0x72, 0x61,
+ 0x63, 0x74, 0x65, 0x72, 0x73, 0x0D, 0x0D, 0x0D,
+ 0x54, 0x68, 0x65, 0x20, 0x46, 0x6F, 0x72, 0x63,
+ 0x65, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x44, 0x61,
+ 0x72, 0x6B, 0x6E, 0x65, 0x73, 0x73, 0x0D, 0x0D,
+ 0x0D, 0x44, 0x72, 0x61, 0x6E, 0x20, 0x44, 0x72,
+ 0x61, 0x67, 0x67, 0x6F, 0x72, 0x65, 0x20, 0x28,
+ 0x54, 0x68, 0x65, 0x20, 0x42, 0x69, 0x67, 0x20,
+ 0x42, 0x61, 0x64, 0x20, 0x44, 0x72, 0x61, 0x67,
+ 0x6F, 0x6E, 0x29, 0x0D, 0x0D, 0x4E, 0x61, 0x64,
+ 0x69, 0x61, 0x20, 0x26, 0x20, 0x4A, 0x6F, 0x72,
+ 0x69, 0x6C, 0x20, 0x28, 0x54, 0x68, 0x65, 0x20,
+ 0x54, 0x77, 0x6F, 0x2D, 0x46, 0x61, 0x63, 0x65,
+ 0x64, 0x20, 0x43, 0x6C, 0x65, 0x72, 0x69, 0x63,
+ 0x73, 0x29, 0x0D, 0x0D, 0x44, 0x79, 0x69, 0x6E,
+ 0x67, 0x20, 0x53, 0x65, 0x72, 0x76, 0x61, 0x6E,
+ 0x74, 0x20, 0x28, 0x44, 0x72, 0x61, 0x6E, 0x27,
+ 0x73, 0x20, 0x52, 0x69, 0x67, 0x68, 0x74, 0x20,
+ 0x48, 0x61, 0x6E, 0x64, 0x20, 0x4D, 0x61, 0x6E,
+ 0x29, 0x0D, 0x0D, 0x54, 0x72, 0x61, 0x70, 0x70,
+ 0x65, 0x64, 0x20, 0x43, 0x6C, 0x65, 0x72, 0x69,
+ 0x63, 0x20, 0x28, 0x54, 0x68, 0x65, 0x20, 0x52,
+ 0x65, 0x64, 0x20, 0x48, 0x65, 0x72, 0x72, 0x69,
+ 0x6E, 0x67, 0x29, 0x0D, 0x0D, 0x4B, 0x69, 0x6E,
+ 0x67, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65,
+ 0x20, 0x46, 0x72, 0x6F, 0x73, 0x74, 0x20, 0x47,
+ 0x69, 0x61, 0x6E, 0x74, 0x73, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x54, 0x68, 0x65, 0x20, 0x46, 0x6F, 0x72,
+ 0x63, 0x65, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x47,
+ 0x6F, 0x6F, 0x64, 0x0D, 0x0D, 0x0D, 0x4B, 0x68,
+ 0x65, 0x6C, 0x62, 0x65, 0x6E, 0x20, 0x42, 0x6C,
+ 0x61, 0x63, 0x6B, 0x73, 0x74, 0x61, 0x66, 0x66,
+ 0x0D, 0x0D, 0x41, 0x6D, 0x62, 0x65, 0x72, 0x20,
+ 0x28, 0x4B, 0x68, 0x65, 0x6C, 0x62, 0x65, 0x6E,
+ 0x27, 0x73, 0x20, 0x53, 0x63, 0x6F, 0x75, 0x74,
+ 0x29, 0x0D, 0x0D, 0x53, 0x68, 0x6F, 0x72, 0x6E,
+ 0x20, 0x44, 0x69, 0x65, 0x72, 0x67, 0x61, 0x72,
+ 0x20, 0x28, 0x50, 0x65, 0x73, 0x6B, 0x79, 0x20,
+ 0x44, 0x77, 0x61, 0x72, 0x66, 0x29, 0x0D, 0x0D,
+ 0x49, 0x6E, 0x73, 0x61, 0x6C, 0x20, 0x74, 0x68,
+ 0x65, 0x20, 0x54, 0x68, 0x69, 0x65, 0x66, 0x20,
+ 0x28, 0x54, 0x68, 0x65, 0x20, 0x4E, 0x75, 0x69,
+ 0x73, 0x61, 0x6E, 0x63, 0x65, 0x29, 0x0D, 0x0D,
+ 0x43, 0x61, 0x6C, 0x61, 0x6E, 0x64, 0x72, 0x61,
+ 0x20, 0x28, 0x49, 0x72, 0x61, 0x27, 0x73, 0x20,
+ 0x4C, 0x6F, 0x73, 0x74, 0x20, 0x53, 0x69, 0x73,
+ 0x74, 0x65, 0x72, 0x29, 0x0D, 0x0D, 0x41, 0x6C,
+ 0x61, 0x69, 0x6E, 0x20, 0x28, 0x54, 0x68, 0x65,
+ 0x20, 0x41, 0x6E, 0x63, 0x69, 0x65, 0x6E, 0x74,
+ 0x20, 0x4F, 0x6E, 0x65, 0x29, 0x0D, 0x0D, 0x53,
+ 0x61, 0x6E, 0x2D, 0x52, 0x61, 0x61, 0x6C, 0x20,
+ 0x28, 0x44, 0x72, 0x6F, 0x77, 0x20, 0x4D, 0x61,
+ 0x67, 0x65, 0x29, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x01, 0x41, 0x6E, 0x79, 0x20, 0x63,
+ 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72,
+ 0x73, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x69,
+ 0x73, 0x20, 0x67, 0x61, 0x6D, 0x65, 0x20, 0x77,
+ 0x68, 0x6F, 0x20, 0x62, 0x65, 0x61, 0x72, 0x0D,
+ 0x01, 0x72, 0x65, 0x73, 0x65, 0x6D, 0x62, 0x6C,
+ 0x61, 0x6E, 0x63, 0x65, 0x20, 0x74, 0x6F, 0x20,
+ 0x70, 0x65, 0x72, 0x73, 0x6F, 0x6E, 0x73, 0x20,
+ 0x6C, 0x69, 0x76, 0x69, 0x6E, 0x67, 0x20, 0x6F,
+ 0x72, 0x0D, 0x01, 0x64, 0x65, 0x61, 0x64, 0x20,
+ 0x61, 0x72, 0x65, 0x20, 0x70, 0x75, 0x72, 0x65,
+ 0x6C, 0x79, 0x20, 0x63, 0x6F, 0x69, 0x6E, 0x63,
+ 0x69, 0x64, 0x65, 0x6E, 0x74, 0x61, 0x6C, 0x2E,
+ 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x0D, 0x02, 0x11, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x0D, 0x00
+};
+
+static const ByteProvider kEoB2CreditsDataDOSEnglishProvider = { ARRAYSIZE(kEoB2CreditsDataDOSEnglish), kEoB2CreditsDataDOSEnglish };
+
+static const char *const kEoB2FinaleCPSFilesDOSEnglish[13] = {
+ "DRAGON1.CPS",
+ "DRAGON2.CPS",
+ "HURRY1.CPS",
+ "HURRY2.CPS",
+ "DESTROY0.CPS",
+ "DESTROY1.CPS",
+ "DESTROY2.CPS",
+ "MAGIC.CPS",
+ "DESTROY3.CPS",
+ "CREDITS2.CPS",
+ "CREDITS3.CPS",
+ "HEROES.CPS",
+ "THANKS.CPS"
+};
+
+static const StringListProvider kEoB2FinaleCPSFilesDOSEnglishProvider = { ARRAYSIZE(kEoB2FinaleCPSFilesDOSEnglish), kEoB2FinaleCPSFilesDOSEnglish };
+
+static const char *const kEoB2MonsterDistAttStringsDOSEnglish[5] = {
+ "The party is hit with a psychic mind blast!\r",
+ "paralyzed",
+ "poisoned",
+ "paralyzed",
+ "PETRIFIED"
+};
+
+static const StringListProvider kEoB2MonsterDistAttStringsDOSEnglishProvider = { ARRAYSIZE(kEoB2MonsterDistAttStringsDOSEnglish), kEoB2MonsterDistAttStringsDOSEnglish };
+
+static const char *const kEoB2Npc1StringsDOSEnglish[2] = {
+ "talk",
+ "leave"
+};
+
+static const StringListProvider kEoB2Npc1StringsDOSEnglishProvider = { ARRAYSIZE(kEoB2Npc1StringsDOSEnglish), kEoB2Npc1StringsDOSEnglish };
+
+static const char *const kEoB2Npc2StringsDOSEnglish[2] = {
+ "release him",
+ "leave"
+};
+
+static const StringListProvider kEoB2Npc2StringsDOSEnglishProvider = { ARRAYSIZE(kEoB2Npc2StringsDOSEnglish), kEoB2Npc2StringsDOSEnglish };
+
+static const char *const kEoB2MonsterDustStringsDOSEnglish[1] = {
+ "The monster crumbles to dust!\r"
+};
+
+static const StringListProvider kEoB2MonsterDustStringsDOSEnglishProvider = { ARRAYSIZE(kEoB2MonsterDustStringsDOSEnglish), kEoB2MonsterDustStringsDOSEnglish };
+
+static const char *const kEoB2KheldranStringsDOSEnglish[1] = {
+ " Such trusting whelps!"
+};
+
+static const StringListProvider kEoB2KheldranStringsDOSEnglishProvider = { ARRAYSIZE(kEoB2KheldranStringsDOSEnglish), kEoB2KheldranStringsDOSEnglish };
+
+static const char *const kEoB2HornStringsDOSEnglish[4] = {
+ "A bellowing sound comes from the horn.\r",
+ "A hollow sound comes from the horn.\r",
+ "A melodious sound comes from the horn.\r",
+ "An eerie sound comes from the horn.\r"
+};
+
+static const StringListProvider kEoB2HornStringsDOSEnglishProvider = { ARRAYSIZE(kEoB2HornStringsDOSEnglish), kEoB2HornStringsDOSEnglish };
+
diff --git a/devtools/create_kyradat/resources/eob2_dos_german.h b/devtools/create_kyradat/resources/eob2_dos_german.h
new file mode 100644
index 0000000000..6967eac8a4
--- /dev/null
+++ b/devtools/create_kyradat/resources/eob2_dos_german.h
@@ -0,0 +1,1414 @@
+static const char *const kEoB2ChargenStrings1DOSGerman[9] = {
+ "Die Party ist\rkomplett. W""\x84""hle\rSPIEL oder\rdr""\x81""cke 'P' um\rzu starten.",
+ " ",
+ "RK\rTP\rSTF",
+ "%s\r%d\r%d\r%d\r%d\r%d",
+ "%d\r%d",
+ "%d",
+ "%d/%d",
+ "%d/%d/%d",
+ "W""\x84""hle die Box des\rCharakters, den du\rerschaffen oder\ransehen willst."
+};
+
+static const StringListProvider kEoB2ChargenStrings1DOSGermanProvider = { ARRAYSIZE(kEoB2ChargenStrings1DOSGerman), kEoB2ChargenStrings1DOSGerman };
+
+static const char *const kEoB2ChargenStrings2DOSGerman[12] = {
+ "%s",
+ "%d",
+ "%s",
+ "%d",
+ "%d",
+ "%d",
+ "%s",
+ "%d",
+ "W""\x8E""HLE RASSE:",
+ "W""\x8E""HLE KLASSE:",
+ "W""\x8E""HLE GESINNUNG:",
+ "Name:"
+};
+
+static const StringListProvider kEoB2ChargenStrings2DOSGermanProvider = { ARRAYSIZE(kEoB2ChargenStrings2DOSGerman), kEoB2ChargenStrings2DOSGerman };
+
+static const char *const kEoB2ChargenStatStringsDOSGerman[12] = {
+ "ST""\x8E",
+ "INT",
+ "WEI",
+ "GES",
+ "KON",
+ "CHA",
+ "ST""\x8E""RKE",
+ "INTELLIGENZ",
+ "WEISHEIT",
+ "GESCHICK",
+ "KONSTITUTION",
+ "CHARISMA"
+};
+
+static const StringListProvider kEoB2ChargenStatStringsDOSGermanProvider = { ARRAYSIZE(kEoB2ChargenStatStringsDOSGerman), kEoB2ChargenStatStringsDOSGerman };
+
+static const char *const kEoB2ChargenRaceSexStringsDOSGerman[12] = {
+ "MENSCH, MANN",
+ "MENSCH, FRAU",
+ "ELF, MANN",
+ "ELF, FRAU",
+ "HALB-ELF, MANN",
+ "HALB-ELF, FRAU",
+ "ZWERG, MANN",
+ "ZWERG, FRAU",
+ "GNOM, MANN",
+ "GNOM, FRAU",
+ "HALBLING, MANN",
+ "HALBLING, FRAU"
+};
+
+static const StringListProvider kEoB2ChargenRaceSexStringsDOSGermanProvider = { ARRAYSIZE(kEoB2ChargenRaceSexStringsDOSGerman), kEoB2ChargenRaceSexStringsDOSGerman };
+
+static const char *const kEoB2ChargenClassStringsDOSGerman[21] = {
+ "K""\x8E""MPFER",
+ "WALDL""\x8E""UFER",
+ "PALADIN",
+ "MAGIER",
+ "KLERIKER",
+ "DIEB",
+ "K""\x8E""MPFER/KLERIKER",
+ "K""\x8E""MPFER/DIEB",
+ "K""\x8E""MPFER/MAGIER",
+ "K""\x8E""MPFER/MAGIER/DIEB",
+ "DIEB/MAGIER",
+ "KLERIKER/DIEB",
+ "K""\x8E""MPFER/KLER./MAG.",
+ "WALDL./KLER.",
+ "KLER./MAGIER",
+ "K""\x8E""MPFER",
+ "MAGIER",
+ "KLERIKER",
+ "DIEB",
+ "PALADIN",
+ "WALDL."
+};
+
+static const StringListProvider kEoB2ChargenClassStringsDOSGermanProvider = { ARRAYSIZE(kEoB2ChargenClassStringsDOSGerman), kEoB2ChargenClassStringsDOSGerman };
+
+static const char *const kEoB2ChargenAlignmentStringsDOSGerman[9] = {
+ "RECHTSCH. GUT",
+ "NEUTRAL GUT",
+ "CHAOTISCH GUT",
+ "RECHTSCH. NEUTRAL",
+ "NEUTRAL",
+ "CHAOTISCH NEUTRAL",
+ "RECHTSCH. B""\x99""SE",
+ "NEUTRAL B""\x99""SE",
+ "CHAOTISCH B""\x99""SE"
+};
+
+static const StringListProvider kEoB2ChargenAlignmentStringsDOSGermanProvider = { ARRAYSIZE(kEoB2ChargenAlignmentStringsDOSGerman), kEoB2ChargenAlignmentStringsDOSGerman };
+
+static const char *const kEoB2ChargenEnterGameStringsDOSGerman[1] = {
+ " Lade Spiel.\r Bitte warten."
+};
+
+static const StringListProvider kEoB2ChargenEnterGameStringsDOSGermanProvider = { ARRAYSIZE(kEoB2ChargenEnterGameStringsDOSGerman), kEoB2ChargenEnterGameStringsDOSGerman };
+
+static const char *const kEoB2PryDoorStringsDOSGerman[9] = {
+ "\r",
+ "Ihr k""\x94""nnt die T""\x81""r nicht aufbrechen.\r",
+ "\x06\x04""Ihr brecht die T""\x81""r auf.\r",
+ "\x06\x06""Ihr versucht vergeblich die T""\x81""r gewaltsam zu\r""\x94""ffnen.\r",
+ "Das kann man hier nicht ablegen.\r",
+ "Das passt hier nicht.\r",
+ "Niemand kann die T""\x81""r aufbrechen.\r",
+ "\r",
+ "\r"
+};
+
+static const StringListProvider kEoB2PryDoorStringsDOSGermanProvider = { ARRAYSIZE(kEoB2PryDoorStringsDOSGerman), kEoB2PryDoorStringsDOSGerman };
+
+static const char *const kEoB2WarningStringsDOSGerman[4] = {
+ "Da geht's nicht lang.\r",
+ "%s kann nichts zu sich nehmen!\r",
+ "Das Zeug ist vergammelt! Das will doch kein Mensch essen.\r",
+ "Euch bekommt nur richtige Nahrung!\r"
+};
+
+static const StringListProvider kEoB2WarningStringsDOSGermanProvider = { ARRAYSIZE(kEoB2WarningStringsDOSGerman), kEoB2WarningStringsDOSGerman };
+
+static const char *const kEoB2ItemSuffixStringsRingsDOSGerman[4] = {
+ "s Schmuckes",
+ "r Zauberei",
+ "r Nahrung",
+ "s Federfalls"
+};
+
+static const StringListProvider kEoB2ItemSuffixStringsRingsDOSGermanProvider = { ARRAYSIZE(kEoB2ItemSuffixStringsRingsDOSGerman), kEoB2ItemSuffixStringsRingsDOSGerman };
+
+static const char *const kEoB2ItemSuffixStringsPotionsDOSGerman[8] = {
+ "r Riesenkraft",
+ "r Heilung",
+ "r Extra Heilung",
+ "s Giftes",
+ "r Lebenskraft",
+ "r Geschwindigkeit",
+ "r Unsichtbarkeit",
+ "r Entgiftung"
+};
+
+static const StringListProvider kEoB2ItemSuffixStringsPotionsDOSGermanProvider = { ARRAYSIZE(kEoB2ItemSuffixStringsPotionsDOSGerman), kEoB2ItemSuffixStringsPotionsDOSGerman };
+
+static const char *const kEoB2ItemSuffixStringsWandsDOSGerman[8] = {
+ "r L""\x84""hmung",
+ "s Gewitters",
+ "r K""\x84""lte",
+ "r Heilung",
+ "s Feurballs",
+ "Sternenfeuer",
+ "r Magischen Geschosse",
+ "r gebannten Magie"
+};
+
+static const StringListProvider kEoB2ItemSuffixStringsWandsDOSGermanProvider = { ARRAYSIZE(kEoB2ItemSuffixStringsWandsDOSGerman), kEoB2ItemSuffixStringsWandsDOSGerman };
+
+static const char *const kEoB2RipItemStringsDOSGerman[4] = {
+ "%s verlor: ",
+ "%s verlor: ",
+ ".\r",
+ "%d %s (verflucht) "
+};
+
+static const StringListProvider kEoB2RipItemStringsDOSGermanProvider = { ARRAYSIZE(kEoB2RipItemStringsDOSGerman), kEoB2RipItemStringsDOSGerman };
+
+static const char *const kEoB2CursedStringDOSGerman[1] = {
+ "%d %s (verflucht) "
+};
+
+static const StringListProvider kEoB2CursedStringDOSGermanProvider = { ARRAYSIZE(kEoB2CursedStringDOSGerman), kEoB2CursedStringDOSGerman };
+
+static const char *const kEoB2MagicObjectStringsDOSGerman[5] = {
+ "Magierrolle",
+ "Klerikerrolle",
+ "Ring",
+ "Trank",
+ "Stab"
+};
+
+static const StringListProvider kEoB2MagicObjectStringsDOSGermanProvider = { ARRAYSIZE(kEoB2MagicObjectStringsDOSGerman), kEoB2MagicObjectStringsDOSGerman };
+
+static const char *const kEoB2MagicObjectString5DOSGerman[1] = {
+ "Zepter"
+};
+
+static const StringListProvider kEoB2MagicObjectString5DOSGermanProvider = { ARRAYSIZE(kEoB2MagicObjectString5DOSGerman), kEoB2MagicObjectString5DOSGerman };
+
+static const char *const kEoB2PatternSuffixDOSGerman[1] = {
+ "%s de%s"
+};
+
+static const StringListProvider kEoB2PatternSuffixDOSGermanProvider = { ARRAYSIZE(kEoB2PatternSuffixDOSGerman), kEoB2PatternSuffixDOSGerman };
+
+static const char *const kEoB2PatternGrFix1DOSGerman[1] = {
+ "%s: %s"
+};
+
+static const StringListProvider kEoB2PatternGrFix1DOSGermanProvider = { ARRAYSIZE(kEoB2PatternGrFix1DOSGerman), kEoB2PatternGrFix1DOSGerman };
+
+static const char *const kEoB2PatternGrFix2DOSGerman[1] = {
+ "%s %s"
+};
+
+static const StringListProvider kEoB2PatternGrFix2DOSGermanProvider = { ARRAYSIZE(kEoB2PatternGrFix2DOSGerman), kEoB2PatternGrFix2DOSGerman };
+
+static const char *const kEoB2ValidateArmorStringDOSGerman[1] = {
+ "%s kann diese R""\x81""stungsart nicht tragen.\r"
+};
+
+static const StringListProvider kEoB2ValidateArmorStringDOSGermanProvider = { ARRAYSIZE(kEoB2ValidateArmorStringDOSGerman), kEoB2ValidateArmorStringDOSGerman };
+
+static const char *const kEoB2ValidateCursedStringDOSGerman[1] = {
+ "%s kann die Waffe nicht loslassen! Sie ist verflucht!\r"
+};
+
+static const StringListProvider kEoB2ValidateCursedStringDOSGermanProvider = { ARRAYSIZE(kEoB2ValidateCursedStringDOSGerman), kEoB2ValidateCursedStringDOSGerman };
+
+static const char *const kEoB2ValidateNoDropStringDOSGerman[1] = {
+ "Diesen Gegenstand hier nicht ablegen.\r"
+};
+
+static const StringListProvider kEoB2ValidateNoDropStringDOSGermanProvider = { ARRAYSIZE(kEoB2ValidateNoDropStringDOSGerman), kEoB2ValidateNoDropStringDOSGerman };
+
+static const char *const kEoB2PotionStringsDOSGerman[2] = {
+ "vergiftet",
+ "%s f""\x81""hlt sich %s!\r"
+};
+
+static const StringListProvider kEoB2PotionStringsDOSGermanProvider = { ARRAYSIZE(kEoB2PotionStringsDOSGerman), kEoB2PotionStringsDOSGerman };
+
+static const char *const kEoB2WandStringsDOSGerman[1] = {
+ "Der Stab hat offenbar keinen magischen Effekt\r"
+};
+
+static const StringListProvider kEoB2WandStringsDOSGermanProvider = { ARRAYSIZE(kEoB2WandStringsDOSGerman), kEoB2WandStringsDOSGerman };
+
+static const char *const kEoB2ItemMisuseStringsDOSGerman[3] = {
+ " kann diesen Gegenstand nicht nutzen.\r",
+ "Der Gegenstand wird automatisch beim tragen benutzt.\r",
+ "Das kann man so nicht benutzen.\r"
+};
+
+static const StringListProvider kEoB2ItemMisuseStringsDOSGermanProvider = { ARRAYSIZE(kEoB2ItemMisuseStringsDOSGerman), kEoB2ItemMisuseStringsDOSGerman };
+
+static const char *const kEoB2TakenStringsDOSGerman[1] = {
+ " aufgenommen.\r"
+};
+
+static const StringListProvider kEoB2TakenStringsDOSGermanProvider = { ARRAYSIZE(kEoB2TakenStringsDOSGerman), kEoB2TakenStringsDOSGerman };
+
+static const char *const kEoB2PotionEffectStringsDOSGerman[8] = {
+ "viel st""\x84""rker",
+ "besser",
+ "viel besser",
+ "etwas krank",
+ "pappsatt",
+ "schnell und agil",
+ "transparent",
+ "besser"
+};
+
+static const StringListProvider kEoB2PotionEffectStringsDOSGermanProvider = { ARRAYSIZE(kEoB2PotionEffectStringsDOSGerman), kEoB2PotionEffectStringsDOSGerman };
+
+static const char *const kEoB2YesNoStringsDOSGerman[2] = {
+ "ja",
+ "nein"
+};
+
+static const StringListProvider kEoB2YesNoStringsDOSGermanProvider = { ARRAYSIZE(kEoB2YesNoStringsDOSGerman), kEoB2YesNoStringsDOSGerman };
+
+static const char *const kEoB2MoreStringsDOSGerman[1] = {
+ "MEHR"
+};
+
+static const StringListProvider kEoB2MoreStringsDOSGermanProvider = { ARRAYSIZE(kEoB2MoreStringsDOSGerman), kEoB2MoreStringsDOSGerman };
+
+static const char *const kEoB2NpcMaxStringsDOSGerman[1] = {
+ "Maximal sechs Charaktere pro Party. Wen wollt Ihr entlassen?"
+};
+
+static const StringListProvider kEoB2NpcMaxStringsDOSGermanProvider = { ARRAYSIZE(kEoB2NpcMaxStringsDOSGerman), kEoB2NpcMaxStringsDOSGerman };
+
+static const char *const kEoB2OkStringsDOSGerman[1] = {
+ "OK"
+};
+
+static const StringListProvider kEoB2OkStringsDOSGermanProvider = { ARRAYSIZE(kEoB2OkStringsDOSGerman), kEoB2OkStringsDOSGerman };
+
+static const char *const kEoB2NpcJoinStringsDOSGerman[1] = {
+ "%s wird partymitglied.\r"
+};
+
+static const StringListProvider kEoB2NpcJoinStringsDOSGermanProvider = { ARRAYSIZE(kEoB2NpcJoinStringsDOSGerman), kEoB2NpcJoinStringsDOSGerman };
+
+static const char *const kEoB2CancelStringsDOSGerman[1] = {
+ "ABBR."
+};
+
+static const StringListProvider kEoB2CancelStringsDOSGermanProvider = { ARRAYSIZE(kEoB2CancelStringsDOSGerman), kEoB2CancelStringsDOSGerman };
+
+static const char *const kEoB2AbortStringsDOSGerman[1] = {
+ "ABBR."
+};
+
+static const StringListProvider kEoB2AbortStringsDOSGermanProvider = { ARRAYSIZE(kEoB2AbortStringsDOSGerman), kEoB2AbortStringsDOSGerman };
+
+static const char *const kEoB2MenuStringsMainDOSGerman[8] = {
+ "W""\x84""hle Option:",
+ "Rasten",
+ "Spr""\x81""che merken",
+ "Um Spr""\x81""che beten",
+ "Rollen notieren",
+ "Voreinstellungen",
+ "Spieloptionen",
+ "Ende"
+};
+
+static const StringListProvider kEoB2MenuStringsMainDOSGermanProvider = { ARRAYSIZE(kEoB2MenuStringsMainDOSGerman), kEoB2MenuStringsMainDOSGerman };
+
+static const char *const kEoB2MenuStringsSaveLoadDOSGerman[8] = {
+ "Spiel laden",
+ "Spiel speichern",
+ "Charakter entl.",
+ "Beenden",
+ "Spieloptionen:",
+ "\r Gespeichert.",
+ "Speicherversuch\rfehlgeschlagen!",
+ "Ladeversuch\rfehlgeschlagen.\rEvtl. Disk-Error!"
+};
+
+static const StringListProvider kEoB2MenuStringsSaveLoadDOSGermanProvider = { ARRAYSIZE(kEoB2MenuStringsSaveLoadDOSGerman), kEoB2MenuStringsSaveLoadDOSGerman };
+
+static const char *const kEoB2MenuStringsOnOffDOSGerman[2] = {
+ "AN",
+ "AUS"
+};
+
+static const StringListProvider kEoB2MenuStringsOnOffDOSGermanProvider = { ARRAYSIZE(kEoB2MenuStringsOnOffDOSGerman), kEoB2MenuStringsOnOffDOSGerman };
+
+static const char *const kEoB2MenuStringsSpellsDOSGerman[17] = {
+ "\r\r W""\x84""hlt einen Charak-\r ter aus der Party,\r der Spr""\x81""che lernen\r soll.",
+ "\r Der Paladin ist\r eine Stufe zu nied-\r rig zum zaubern.",
+ "\r\r Der Magier hat\r kein Spruchbuch!",
+ "\r\r\r W""\x84""hlt einen Charak-\r ter aus der Party,\r der f""\x81""r Spr""\x81""che\r beten will.",
+ "\r Niemand in der\r Party ist in der\r Lage, f""\x81""r Spr""\x81""che\r zu beten.",
+ "\r Niemand in der\r Party ist in der\r Lage, sich Spr""\x81""che\r zu merken.",
+ " Jemand der bewu""\xE1""t-\r los oder tot ist\r kann keine Spr""\x81""che\r merken.",
+ " Jemand der bewu""\xE1""t-\r los oder tot ist\r kann nicht um\r Spr""\x81""che beten.",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "Neu",
+ "Verf""\x81""gbare Zauber:",
+ "Ja",
+ "Nein"
+};
+
+static const StringListProvider kEoB2MenuStringsSpellsDOSGermanProvider = { ARRAYSIZE(kEoB2MenuStringsSpellsDOSGerman), kEoB2MenuStringsSpellsDOSGerman };
+
+static const char *const kEoB2MenuStringsRestDOSGerman[5] = {
+ "\rWerden eure Heiler\rdie Party heilen?",
+ " Jemand ist noch\r verletzt. Weiter-\r rasten ?",
+ "Die Party rastet.",
+ "\r Alle Spieler\r sind voll\r ausgeruht.",
+ " Eure Party braucht\r Rast, um Spr""\x81""che\r zu erhalten."
+};
+
+static const StringListProvider kEoB2MenuStringsRestDOSGermanProvider = { ARRAYSIZE(kEoB2MenuStringsRestDOSGerman), kEoB2MenuStringsRestDOSGerman };
+
+static const char *const kEoB2MenuStringsDropDOSGerman[1] = {
+ " Weniger als vier\r Charaktere sind\r nicht erlaubt."
+};
+
+static const StringListProvider kEoB2MenuStringsDropDOSGermanProvider = { ARRAYSIZE(kEoB2MenuStringsDropDOSGerman), kEoB2MenuStringsDropDOSGerman };
+
+static const char *const kEoB2MenuStringsExitDOSGerman[1] = {
+ " Ganz bestimmt\r das Spiel\r abbrechen?"
+};
+
+static const StringListProvider kEoB2MenuStringsExitDOSGermanProvider = { ARRAYSIZE(kEoB2MenuStringsExitDOSGerman), kEoB2MenuStringsExitDOSGerman };
+
+static const char *const kEoB2MenuStringsStarveDOSGerman[1] = {
+ " Eure Party hungert.\r Wollt Ihr weiter\r rasten?"
+};
+
+static const StringListProvider kEoB2MenuStringsStarveDOSGermanProvider = { ARRAYSIZE(kEoB2MenuStringsStarveDOSGerman), kEoB2MenuStringsStarveDOSGerman };
+
+static const char *const kEoB2MenuStringsScribeDOSGerman[5] = {
+ "W""\x84""hlt die Rolle(n)\rzum notieren.",
+ "\r\r\r W""\x84""hlt den Magier\r aus der Party,\r der Spr""\x81""che\r notieren m""\x94""chte.",
+ " Ihr habt keine\r ""\x81""bertragbaren\r Schriftrollen.",
+ " Ihr habt keine\r Rolle, die dieser\r Magier braucht.",
+ "\r Ihr habt keinen\r Magier, der Rollen\r ""\x81""bertragen kann."
+};
+
+static const StringListProvider kEoB2MenuStringsScribeDOSGermanProvider = { ARRAYSIZE(kEoB2MenuStringsScribeDOSGerman), kEoB2MenuStringsScribeDOSGerman };
+
+static const char *const kEoB2MenuStringsDrop2DOSGerman[3] = {
+ " W""\x84""hlt den Charak-\r ter, den Ihr\r entfernen m""\x94""chtet.",
+ " Spielst""\x84""nde m""\x81""ssen\r einen Namen haben!",
+ " Ganz sicher den\r alten Spielstand\r ""\x81""berschreiben?"
+};
+
+static const StringListProvider kEoB2MenuStringsDrop2DOSGermanProvider = { ARRAYSIZE(kEoB2MenuStringsDrop2DOSGerman), kEoB2MenuStringsDrop2DOSGerman };
+
+static const char *const kEoB2MenuStringsHeadDOSGerman[3] = {
+ "Rast:",
+ "Voreinstellung:",
+ "Spieloptionen:"
+};
+
+static const StringListProvider kEoB2MenuStringsHeadDOSGermanProvider = { ARRAYSIZE(kEoB2MenuStringsHeadDOSGerman), kEoB2MenuStringsHeadDOSGerman };
+
+static const char *const kEoB2MenuStringsPoisonDOSGerman[1] = {
+ "Vergiftete Spieler\rk""\x94""nnten sterben!\rTrotzdem rasten?"
+};
+
+static const StringListProvider kEoB2MenuStringsPoisonDOSGermanProvider = { ARRAYSIZE(kEoB2MenuStringsPoisonDOSGerman), kEoB2MenuStringsPoisonDOSGerman };
+
+static const char *const kEoB2MenuStringsMgcDOSGerman[2] = {
+ "%-18s %1d",
+ "%d von %d verf""\x81""gbar. "
+};
+
+static const StringListProvider kEoB2MenuStringsMgcDOSGermanProvider = { ARRAYSIZE(kEoB2MenuStringsMgcDOSGerman), kEoB2MenuStringsMgcDOSGerman };
+
+static const char *const kEoB2MenuStringsPrefsDOSGerman[4] = {
+ "Musik ist %-3s",
+ "FX sind %-3s",
+ "Balkengrafik: %-3s",
+ "Maus ist %-3s"
+};
+
+static const StringListProvider kEoB2MenuStringsPrefsDOSGermanProvider = { ARRAYSIZE(kEoB2MenuStringsPrefsDOSGerman), kEoB2MenuStringsPrefsDOSGerman };
+
+static const char *const kEoB2MenuStringsRest2DOSGerman[5] = {
+ "%s erhielt %s.\r",
+ "%s merkt sich %s.\r",
+ "%s heilt %s.\r",
+ "Raststunden: %-4d ",
+ "\r%s\r"
+};
+
+static const StringListProvider kEoB2MenuStringsRest2DOSGermanProvider = { ARRAYSIZE(kEoB2MenuStringsRest2DOSGerman), kEoB2MenuStringsRest2DOSGerman };
+
+static const char *const kEoB2MenuStringsRest3DOSGerman[1] = {
+ "\x06\x06""Es ist zu gef""\x84""hrlich hier zu rasten."
+};
+
+static const StringListProvider kEoB2MenuStringsRest3DOSGermanProvider = { ARRAYSIZE(kEoB2MenuStringsRest3DOSGerman), kEoB2MenuStringsRest3DOSGerman };
+
+static const char *const kEoB2MenuStringsRest4DOSGerman[1] = {
+ "\x06\x06""In der N""\x84""he von Monstern k""\x94""nnt Ihr nicht rasten."
+};
+
+static const StringListProvider kEoB2MenuStringsRest4DOSGermanProvider = { ARRAYSIZE(kEoB2MenuStringsRest4DOSGerman), kEoB2MenuStringsRest4DOSGerman };
+
+static const char *const kEoB2MenuStringsDefeatDOSGerman[1] = {
+ "\rDie gesamte Party\rwurde besiegt!\rEinen alten Spiel-\rstand laden?"
+};
+
+static const StringListProvider kEoB2MenuStringsDefeatDOSGermanProvider = { ARRAYSIZE(kEoB2MenuStringsDefeatDOSGerman), kEoB2MenuStringsDefeatDOSGerman };
+
+static const char *const kEoB2MenuStringsTransferDOSGerman[5] = {
+ "Mindestens vier\rSpieler vor Spiel-\rbeginn transferieren!",
+ "Nur vier Spieler\rtransferieren!",
+ "Bestimmte Habselig-\rkeiten werden\rgel""\x94""scht.",
+ " \r Kein Magier in\r der Party.",
+ " \r Kein Kleriker\r oder Paladin\r in der Party."
+};
+
+static const StringListProvider kEoB2MenuStringsTransferDOSGermanProvider = { ARRAYSIZE(kEoB2MenuStringsTransferDOSGerman), kEoB2MenuStringsTransferDOSGerman };
+
+static const char *const kEoB2MenuStringsSpecDOSGerman[2] = {
+ "Beim Aufwachen bem-\rerkt Ihr die Ab-\rwesenheit von Insal!",
+ "Eine kurzer Blick\rzeigt, das Ausr""\x81""st-\rung gestohlen wurde!"
+};
+
+static const StringListProvider kEoB2MenuStringsSpecDOSGermanProvider = { ARRAYSIZE(kEoB2MenuStringsSpecDOSGerman), kEoB2MenuStringsSpecDOSGerman };
+
+static const char *const kEoB2MenuYesNoStringsDOSGerman[2] = {
+ "Ja",
+ "Nein"
+};
+
+static const StringListProvider kEoB2MenuYesNoStringsDOSGermanProvider = { ARRAYSIZE(kEoB2MenuYesNoStringsDOSGerman), kEoB2MenuYesNoStringsDOSGerman };
+
+static const char *const kEoB2CharGuiStringsHpDOSGerman[2] = {
+ "TP",
+ "%3d / %-3d"
+};
+
+static const StringListProvider kEoB2CharGuiStringsHpDOSGermanProvider = { ARRAYSIZE(kEoB2CharGuiStringsHpDOSGerman), kEoB2CharGuiStringsHpDOSGerman };
+
+static const char *const kEoB2CharGuiStringsWp2DOSGerman[3] = {
+ "WUSCH",
+ "HACK",
+ "FATZ"
+};
+
+static const StringListProvider kEoB2CharGuiStringsWp2DOSGermanProvider = { ARRAYSIZE(kEoB2CharGuiStringsWp2DOSGerman), kEoB2CharGuiStringsWp2DOSGerman };
+
+static const char *const kEoB2CharGuiStringsWrDOSGerman[4] = {
+ "ZU",
+ "WEIT",
+ "OHNE",
+ "MUN"
+};
+
+static const StringListProvider kEoB2CharGuiStringsWrDOSGermanProvider = { ARRAYSIZE(kEoB2CharGuiStringsWrDOSGerman), kEoB2CharGuiStringsWrDOSGerman };
+
+static const char *const kEoB2CharGuiStringsSt2DOSGerman[7] = {
+ "TAUSCHE",
+ "TOT",
+ "BEWUSSTLOS",
+ "GIFT (LANGSAM)",
+ "VERGIFTET",
+ "BET""\x8E""UBT",
+ "AUS STEIN"
+};
+
+static const StringListProvider kEoB2CharGuiStringsSt2DOSGermanProvider = { ARRAYSIZE(kEoB2CharGuiStringsSt2DOSGerman), kEoB2CharGuiStringsSt2DOSGerman };
+
+static const char *const kEoB2CharGuiStringsInDOSGerman[4] = {
+ "CHARAKTER INFO",
+ "R""\x9A""STUNGSKL.",
+ "ERF",
+ "STF"
+};
+
+static const StringListProvider kEoB2CharGuiStringsInDOSGermanProvider = { ARRAYSIZE(kEoB2CharGuiStringsInDOSGerman), kEoB2CharGuiStringsInDOSGerman };
+
+static const char *const kEoB2CharStatusStrings7DOSGerman[1] = {
+ "%s hat nicht l""\x84""nger riesenkr""\x84""fte.\r"
+};
+
+static const StringListProvider kEoB2CharStatusStrings7DOSGermanProvider = { ARRAYSIZE(kEoB2CharStatusStrings7DOSGerman), kEoB2CharStatusStrings7DOSGerman };
+
+static const char *const kEoB2CharStatusStrings82DOSGerman[1] = {
+ "\x06\x06""%s f""\x81""hlt Gift in sich!\r"
+};
+
+static const StringListProvider kEoB2CharStatusStrings82DOSGermanProvider = { ARRAYSIZE(kEoB2CharStatusStrings82DOSGerman), kEoB2CharStatusStrings82DOSGerman };
+
+static const char *const kEoB2CharStatusStrings9DOSGerman[1] = {
+ "%s ist nicht l""\x84""nger bet""\x84""ubt!\r"
+};
+
+static const StringListProvider kEoB2CharStatusStrings9DOSGermanProvider = { ARRAYSIZE(kEoB2CharStatusStrings9DOSGerman), kEoB2CharStatusStrings9DOSGerman };
+
+static const char *const kEoB2CharStatusStrings12DOSGerman[1] = {
+ "%s wird langsamer.\r"
+};
+
+static const StringListProvider kEoB2CharStatusStrings12DOSGermanProvider = { ARRAYSIZE(kEoB2CharStatusStrings12DOSGerman), kEoB2CharStatusStrings12DOSGerman };
+
+static const char *const kEoB2CharStatusStrings132DOSGerman[1] = {
+ "\x06\x06""%s %s!\r"
+};
+
+static const StringListProvider kEoB2CharStatusStrings132DOSGermanProvider = { ARRAYSIZE(kEoB2CharStatusStrings132DOSGerman), kEoB2CharStatusStrings132DOSGerman };
+
+static const char *const kEoB2LevelGainStringsDOSGerman[1] = {
+ "\x06\x01""%s steigt eine Stufe auf.""\x06\x0F""\r"
+};
+
+static const StringListProvider kEoB2LevelGainStringsDOSGermanProvider = { ARRAYSIZE(kEoB2LevelGainStringsDOSGerman), kEoB2LevelGainStringsDOSGerman };
+
+static const char *const kEoB2BookNumbersDOSGerman[5] = {
+ "Erste",
+ "Zweite",
+ "Dritte",
+ "Vierte",
+ "F""\x81""nfte"
+};
+
+static const StringListProvider kEoB2BookNumbersDOSGermanProvider = { ARRAYSIZE(kEoB2BookNumbersDOSGerman), kEoB2BookNumbersDOSGerman };
+
+static const char *const kEoB2MageSpellsListDOSGerman[33] = {
+ "",
+ "Panzer",
+ "Brennende H""\x84""nde",
+ "Magie entdecken",
+ "Magisch. Geschoss",
+ "Schild",
+ "Schockgriff",
+ "Verschwimmen",
+ "Unsichtb. entd.",
+ "Identifizieren+",
+ "Unsichtbarkeit",
+ "M's S""\x84""urepfeil",
+ "Magie bannen",
+ "Feuerball",
+ "Hast",
+ "Person halten",
+ "Unsichtb. 3m",
+ "Blitzstrahl",
+ "Vampirgriff",
+ "Furcht",
+ "Eissturm",
+ "Unsichtbarkeit+",
+ "Fluch brechen",
+ "K""\x84""ltekegel",
+ "Monster halten",
+ "Kraftfeld",
+ "Aufl""\x94""sung",
+ "Fleisch zu Stein",
+ "Stein zu Fleisch",
+ "Wahrer Blick",
+ "Todesfinger",
+ "Wort:Bet""\x84""ubung",
+ "Bigbys Faust"
+};
+
+static const StringListProvider kEoB2MageSpellsListDOSGermanProvider = { ARRAYSIZE(kEoB2MageSpellsListDOSGerman), kEoB2MageSpellsListDOSGerman };
+
+static const char *const kEoB2ClericSpellsListDOSGerman[30] = {
+ "",
+ "Segen",
+ "Leicht verwunden",
+ "L. Wunden heilen",
+ "Magie entdecken",
+ "Schutz v. B""\x94""sem",
+ "St""\x84""rkung",
+ "Flammenklinge",
+ "Person halten",
+ "Gift verlangs.",
+ "Nahr. erschaffen",
+ "Magie bannen",
+ "Schutzgewand",
+ "Gebet",
+ "L""\x84""hmung aufheben",
+ "Schwer verwunden",
+ "S. Wunden heilen",
+ "Gift neutr.",
+ "Schutz-B""\x94""ses 3m",
+ "Kritisch verw.",
+ "K. Wunden heilen",
+ "Flammenschlag",
+ "Tote erwecken",
+ "Schneller Tod",
+ "Wahrer Blick",
+ "Leid",
+ "Heilung",
+ "Auferstehung",
+ "Handauflegen",
+ "Untote abwenden"
+};
+
+static const StringListProvider kEoB2ClericSpellsListDOSGermanProvider = { ARRAYSIZE(kEoB2ClericSpellsListDOSGerman), kEoB2ClericSpellsListDOSGerman };
+
+static const char *const kEoB2SpellNamesDOSGerman[68] = {
+ "panzer",
+ "brennende H""\x84""nde",
+ "magie entdecken",
+ "magisches Geschoss",
+ "schild",
+ "schockgriff",
+ "verschwimmen",
+ "unsichtbares entdecken",
+ "verbessertes identifizieren",
+ "unsichtbarkeit",
+ "melfs S""\x84""urepfeil",
+ "magie bannen",
+ "feuerball",
+ "hast",
+ "person halten",
+ "unsichtbarkeit 3m",
+ "blitzschlag",
+ "vampirgriff",
+ "furcht",
+ "eissturm",
+ "verbesserte Unsichtbarkeit",
+ "fluch brechen",
+ "k""\x84""ltekegel",
+ "monster halten",
+ "kraftfeld",
+ "aufl""\x94""sung",
+ "fleisch zu stein",
+ "stein zu fleisch",
+ "wahrer Blick",
+ "Todesfinger",
+ "wort der Macht: Bet""\x84""ubung",
+ "bigbys geballte Faust",
+ "segen",
+ "leichte Wunden verursachen",
+ "leichte Wunden heilen",
+ "magie entdecken",
+ "schutz vor B""\x94""sem",
+ "st""\x84""rkung",
+ "flammenklinge",
+ "person halten",
+ "gift verlangsamen",
+ "nahrung erschaffen",
+ "magie bannen",
+ "schutzgewand",
+ "gebet",
+ "l""\x84""hmung aufheben",
+ "schwere wunden verursachen",
+ "schwere wunden heilen",
+ "gift neutralisieren",
+ "schutz vor b""\x94""sem 3m",
+ "kritische wunden verursachen",
+ "kritische wunden heilen",
+ "flammenschlag",
+ "tote erwecken",
+ "schneller tot",
+ "wahrer blick",
+ "leid",
+ "heilung",
+ "auferstehung",
+ "hand auflegen",
+ "untote abwenden",
+ "",
+ "mystische abwehr",
+ "",
+ "",
+ "",
+ "",
+ ""
+};
+
+static const StringListProvider kEoB2SpellNamesDOSGermanProvider = { ARRAYSIZE(kEoB2SpellNamesDOSGerman), kEoB2SpellNamesDOSGerman };
+
+static const char *const kEoB2MagicStrings1DOSGerman[6] = {
+ "ABBRECHEN",
+ "ABBRECHEN",
+ "Man braucht eine freie hand f""\x81""r diesen zauber.\r",
+ "Von diesen Zaubern kann man nur einen aktivieren.\r",
+ "%s zaubert %s.\r",
+ "\rok\r"
+};
+
+static const StringListProvider kEoB2MagicStrings1DOSGermanProvider = { ARRAYSIZE(kEoB2MagicStrings1DOSGerman), kEoB2MagicStrings1DOSGerman };
+
+static const char *const kEoB2MagicStrings2DOSGerman[5] = {
+ "Der Zauber versagt!\r",
+ "%s wurde aufgel""\x94""st!\r",
+ "\x06\x06""Die Party wurde von einem Todeszauber getroffen!\r",
+ "\x06\x06""%s wurde von einem schwer verwunden Zauber getroffen.\r",
+ "AUS STEIN"
+};
+
+static const StringListProvider kEoB2MagicStrings2DOSGermanProvider = { ARRAYSIZE(kEoB2MagicStrings2DOSGerman), kEoB2MagicStrings2DOSGerman };
+
+static const char *const kEoB2MagicStrings3DOSGerman[5] = {
+ "Wen verzaubern? ",
+ "\rSpruch abgebrochen.\r",
+ "%s's %s Zauber l""\x84""sst nach.\r",
+ "%s verfehlt das Monster.\r",
+ "%s muss vorn stehen um zu treffen!\r"
+};
+
+static const StringListProvider kEoB2MagicStrings3DOSGermanProvider = { ARRAYSIZE(kEoB2MagicStrings3DOSGerman), kEoB2MagicStrings3DOSGerman };
+
+static const char *const kEoB2MagicStrings4DOSGerman[1] = {
+ "keine Wirkung.\r"
+};
+
+static const StringListProvider kEoB2MagicStrings4DOSGermanProvider = { ARRAYSIZE(kEoB2MagicStrings4DOSGerman), kEoB2MagicStrings4DOSGerman };
+
+static const char *const kEoB2MagicStrings6DOSGerman[1] = {
+ "%s hat schon eine R""\x81""stunksklasse ""\x81""ber 6."
+};
+
+static const StringListProvider kEoB2MagicStrings6DOSGermanProvider = { ARRAYSIZE(kEoB2MagicStrings6DOSGerman), kEoB2MagicStrings6DOSGerman };
+
+static const char *const kEoB2MagicStrings7DOSGerman[2] = {
+ "%s steht schon unter dem effekt eines %s spruches.\r",
+ "Die Party steht schon unter dem effekt eines %s spruches.\r"
+};
+
+static const StringListProvider kEoB2MagicStrings7DOSGermanProvider = { ARRAYSIZE(kEoB2MagicStrings7DOSGerman), kEoB2MagicStrings7DOSGerman };
+
+static const char *const kEoB2MagicStrings8DOSGerman[6] = {
+ "Der Zauber versagt!\r",
+ "ist gel""\x84""hmt",
+ "Der Zauber versagt!\r",
+ "Der Zauber versagt\r",
+ "Kein Monster in Reichweite!\r",
+ "%s steht bereits unter einem St""\x84""rkungszauber.\r"
+};
+
+static const StringListProvider kEoB2MagicStrings8DOSGermanProvider = { ARRAYSIZE(kEoB2MagicStrings8DOSGerman), kEoB2MagicStrings8DOSGerman };
+
+static const byte kEoB2ManDefDOSGerman[200] = {
+ 0x09, 0x01, 0x03, 0x00, 0x09, 0x01, 0x06, 0x00,
+ 0x09, 0x02, 0x07, 0x00, 0x14, 0x01, 0x01, 0x00,
+ 0x14, 0x02, 0x01, 0x00, 0x14, 0x04, 0x02, 0x00,
+ 0x1A, 0x01, 0x03, 0x00, 0x1A, 0x02, 0x02, 0x00,
+ 0x1A, 0x07, 0x04, 0x00, 0x15, 0x01, 0x02, 0x00,
+ 0x15, 0x01, 0x05, 0x00, 0x15, 0x02, 0x01, 0x00,
+ 0x15, 0x03, 0x04, 0x00, 0x15, 0x04, 0x01, 0x00,
+ 0x15, 0x05, 0x05, 0x00, 0x23, 0x01, 0x02, 0x00,
+ 0x23, 0x01, 0x05, 0x00, 0x23, 0x02, 0x03, 0x00,
+ 0x23, 0x03, 0x01, 0x00, 0x23, 0x06, 0x03, 0x00,
+ 0x23, 0x0A, 0x06, 0x00, 0x26, 0x01, 0x01, 0x00,
+ 0x26, 0x01, 0x03, 0x00, 0x26, 0x01, 0x05, 0x00,
+ 0x26, 0x02, 0x04, 0x00, 0x26, 0x03, 0x02, 0x00,
+ 0x26, 0x04, 0x01, 0x00, 0x17, 0x01, 0x02, 0x00,
+ 0x17, 0x01, 0x04, 0x00, 0x17, 0x01, 0x05, 0x00,
+ 0x17, 0x02, 0x02, 0x00, 0x17, 0x03, 0x03, 0x00,
+ 0x17, 0x07, 0x01, 0x00, 0x12, 0x01, 0x02, 0x00,
+ 0x12, 0x01, 0x07, 0x00, 0x12, 0x03, 0x01, 0x00,
+ 0x12, 0x04, 0x02, 0x00, 0x12, 0x05, 0x02, 0x00,
+ 0x12, 0x06, 0x05, 0x00, 0x12, 0x07, 0x03, 0x00,
+ 0x12, 0x08, 0x01, 0x00, 0x1F, 0x01, 0x05, 0x00,
+ 0x1F, 0x02, 0x06, 0x00, 0x1F, 0x03, 0x02, 0x00,
+ 0x1F, 0x03, 0x01, 0x00, 0x1F, 0x04, 0x01, 0x00,
+ 0x1F, 0x04, 0x03, 0x00, 0x1C, 0x01, 0x01, 0x00,
+ 0x1C, 0x01, 0x03, 0x00, 0x1C, 0x02, 0x01, 0x00
+};
+
+static const ByteProvider kEoB2ManDefDOSGermanProvider = { ARRAYSIZE(kEoB2ManDefDOSGerman), kEoB2ManDefDOSGerman };
+
+static const char *const kEoB2ManWordDOSGerman[51] = {
+ "teil",
+ "geht",
+ "maus",
+ "um",
+ "einer",
+ "kann",
+ "das",
+ "schalter",
+ "der",
+ "einem",
+ "gnome",
+ "magieresistent",
+ "intelligenz",
+ "weisheit",
+ "dieb",
+ "weiter",
+ "setzen",
+ "ein",
+ "magier",
+ "diese",
+ "sind",
+ "eines",
+ "wodurch",
+ "schwerer",
+ "gute",
+ "bonus",
+ "bogen",
+ "und",
+ "dadurch",
+ "oft",
+ "raubt",
+ "keine",
+ "schrift",
+ "waffen",
+ "unterteilt",
+ "vordersten",
+ "nur",
+ "sie",
+ "klassen",
+ "zeigt",
+ "gegen",
+ "mausknopf",
+ "nahrungsbalken",
+ "charakters",
+ "des",
+ "um",
+ "gegenstand",
+ "durch",
+ "spruch",
+ "unsichtbar",
+ ""
+};
+
+static const StringListProvider kEoB2ManWordDOSGermanProvider = { ARRAYSIZE(kEoB2ManWordDOSGerman), kEoB2ManWordDOSGerman };
+
+static const char *const kEoB2ManPromptDOSGerman[1] = {
+ "\r\r\r\rAuf der Seite mit diesem Zeichen...\r\rSuche Zeile %d (ohne ""\x9A""berschrift)\rGib Wort %d ein\r"
+};
+
+static const StringListProvider kEoB2ManPromptDOSGermanProvider = { ARRAYSIZE(kEoB2ManPromptDOSGerman), kEoB2ManPromptDOSGerman };
+
+static const char *const kEoB2MainMenuStringsDOSGerman[5] = {
+ "ALTES SPIEL LADEN\r",
+ "NEUE PARTY ERSTELLEN\r",
+ "EOB I PARTY TRANSFER\r",
+ "INTRO ANSEHEN\r",
+ "ZUR""\x9A""CK ZUM DOS\r"
+};
+
+static const StringListProvider kEoB2MainMenuStringsDOSGermanProvider = { ARRAYSIZE(kEoB2MainMenuStringsDOSGerman), kEoB2MainMenuStringsDOSGerman };
+
+static const char *const kEoB2TransferStrings1DOSGerman[2] = {
+ "Stufe: %d",
+ " / %d"
+};
+
+static const StringListProvider kEoB2TransferStrings1DOSGermanProvider = { ARRAYSIZE(kEoB2TransferStrings1DOSGerman), kEoB2TransferStrings1DOSGerman };
+
+static const char *const kEoB2TransferStrings2DOSGerman[2] = {
+ "Dieses Abenteuer ist nur f""\x81""r vier Charaktere.",
+ "OK w""\x84""hlen, wenn Partyerstellung beendet."
+};
+
+static const StringListProvider kEoB2TransferStrings2DOSGermanProvider = { ARRAYSIZE(kEoB2TransferStrings2DOSGerman), kEoB2TransferStrings2DOSGerman };
+
+static const char *const kEoB2TransferLabelsDOSGerman[2] = {
+ "ABBR.",
+ "OK"
+};
+
+static const StringListProvider kEoB2TransferLabelsDOSGermanProvider = { ARRAYSIZE(kEoB2TransferLabelsDOSGerman), kEoB2TransferLabelsDOSGerman };
+
+static const char *const kEoB2IntroStringsDOSGerman[20] = {
+ "Ihr hattet euch gerade gem""\x81""tlich am \rKamin niedergelassen.",
+ "Da wurde euch eine Botschaft\rzugespielt.",
+ "Sie war von eurem Freund Khelben \rBlackstaff, dem Erzmagier der Stadt.",
+ "Die Mitteilung war dringend.",
+ "Was konnte Khelben nur wollen?",
+ "Willkommen, bitte tretet ein.",
+ "Khelben erwartet euch im Studierzimmer.",
+ "Danke f""\x81""r euer schnelles Kommen.",
+ "Meine Freunde, ich bin besorgt.",
+ "Uralte, b""\x94""se M""\x84""chte rumoren im \rTempel Darkmoon.",
+ "Ich f""\x81""rchte um die Sicherheit \runserer Stadt.",
+ "Ich brauche eure Hilfe...",
+ "Vor drei N""\x84""chten \rentsandte ich einen Kundschafter.",
+ "Sie kam niemals zur""\x81""ck.",
+ "Ich f""\x81""rchte um ihr Leben.",
+ "Nehmt diese M""\x81""nze.",
+ "Mit ihrer Hilfe werde \rich euch erreichen.",
+ "Ihr m""\x81\xE1""t schnell handeln.",
+ "Ich teleportiere euch nun in \rdie N""\x84""he von Darkmoon.",
+ "M""\x94""ge das Gl""\x81""ck auf eurer Seite\rsein, Freunde."
+};
+
+static const StringListProvider kEoB2IntroStringsDOSGermanProvider = { ARRAYSIZE(kEoB2IntroStringsDOSGerman), kEoB2IntroStringsDOSGerman };
+
+static const char *const kEoB2IntroCPSFilesDOSGerman[13] = {
+ "STREET1.CPS",
+ "STREET2.CPS",
+ "DOORWAY1.CPS",
+ "DOORWAY2.CPS",
+ "XESTWOOD.CPS",
+ "WINDING.CPS",
+ "KHELBAN2.CPS",
+ "KHELBAN1.CPS",
+ "KHELBAN3.CPS",
+ "KHELBAN4.CPS",
+ "COIN.CPS",
+ "KHELBAN5.CPS",
+ "KHELBAN6.CPS"
+};
+
+static const StringListProvider kEoB2IntroCPSFilesDOSGermanProvider = { ARRAYSIZE(kEoB2IntroCPSFilesDOSGerman), kEoB2IntroCPSFilesDOSGerman };
+
+static const char *const kEoB2FinaleStringsDOSGerman[20] = {
+ "Nun endlich wurde Dran besiegt.",
+ "Pl""\x94""tzlich erscheint euer Freund \rKhelben.",
+ "Seid gegr""\x81\xE1""t, meine siegreichen \rFreunde.",
+ "Ihr seid die Bezwinger von Dran!",
+ "Ich hatte keine Ahnung, da""\xE1"" \rDran ein Drache war.",
+ "Er mu""\xE1"" ""\x81""ber 300 Jahre alt \rgewesen sein!",
+ "Seine Macht ist vergangen.",
+ "Aber noch immer ist Darkmoon\reine Quelle des B""\x94""sen.",
+ "Und ein Teil seines Gefolges\rexistiert noch.",
+ "Daher m""\x81""ssen wir diesen Platz\rnun verlassen.",
+ "So da""\xE1"" meine Kr""\x84""fte ihn ein\r f""\x81""r allemal\rzerst""\x94""ren k""\x94""nnen.",
+ "Folgt mir.",
+ "M""\x84""chtige Magier sind bereit\rf""\x81""r den letzten Schlag\rgegen Darkmoon.",
+ "Das B""\x94""se im Tempel ist sehr stark.",
+ "Es darf keinesfalls weiter\rbestehen!",
+ "Der Tempel h""\x94""rt auf zu\rexistieren.",
+ "Unsere Arbeit ist nun getan,\rmeine Freunde.",
+ "Seid bedankt.",
+ "Ihr habt Euch meinen tiefen\rRespekt erk""\x84""mpft.",
+ "Wir werden Euch nie vergessen."
+};
+
+static const StringListProvider kEoB2FinaleStringsDOSGermanProvider = { ARRAYSIZE(kEoB2FinaleStringsDOSGerman), kEoB2FinaleStringsDOSGerman };
+
+static const byte kEoB2CreditsDataDOSGerman[2833] = {
+ 0x02, 0x05, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x02, 0x10, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
+ 0x02, 0x03, 0x0D, 0x02, 0x04, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x02,
+ 0x06, 0x0D, 0x0D, 0x0D, 0x02, 0x01, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x44, 0x69, 0x72, 0x65,
+ 0x6B, 0x74, 0x6F, 0x72, 0x3A, 0x20, 0x42, 0x72,
+ 0x65, 0x74, 0x74, 0x20, 0x57, 0x2E, 0x20, 0x53,
+ 0x70, 0x65, 0x72, 0x72, 0x79, 0x20, 0x20, 0x20,
+ 0x0D, 0x0D, 0x0D, 0x0D, 0x20, 0x20, 0x20, 0x4F,
+ 0x72, 0x69, 0x67, 0x69, 0x6E, 0x61, 0x6C, 0x6B,
+ 0x6F, 0x6E, 0x7A, 0x65, 0x70, 0x74, 0x3A, 0x20,
+ 0x50, 0x68, 0x69, 0x6C, 0x69, 0x70, 0x20, 0x57,
+ 0x2E, 0x20, 0x47, 0x6F, 0x72, 0x72, 0x6F, 0x77,
+ 0x20, 0x20, 0x0D, 0x0D, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x42, 0x72, 0x65, 0x74, 0x74, 0x20, 0x57, 0x2E,
+ 0x20, 0x53, 0x70, 0x65, 0x72, 0x72, 0x79, 0x20,
+ 0x20, 0x20, 0x0D, 0x0D, 0x0D, 0x0D, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x53, 0x70, 0x69,
+ 0x65, 0x6C, 0x64, 0x65, 0x73, 0x69, 0x67, 0x6E,
+ 0x3A, 0x20, 0x42, 0x72, 0x65, 0x74, 0x74, 0x20,
+ 0x57, 0x2E, 0x20, 0x53, 0x70, 0x65, 0x72, 0x72,
+ 0x79, 0x20, 0x20, 0x20, 0x0D, 0x0D, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x50, 0x61, 0x75, 0x6C, 0x20, 0x53,
+ 0x2E, 0x20, 0x4D, 0x75, 0x64, 0x72, 0x61, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x0D, 0x0D, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x42, 0x69, 0x6C, 0x6C, 0x20, 0x53,
+ 0x74, 0x6F, 0x6B, 0x65, 0x73, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x0D, 0x0D, 0x0D, 0x0D,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x72, 0x6F,
+ 0x67, 0x72, 0x61, 0x6D, 0x6D, 0x69, 0x65, 0x72,
+ 0x65, 0x72, 0x3A, 0x20, 0x50, 0x68, 0x69, 0x6C,
+ 0x69, 0x70, 0x20, 0x57, 0x2E, 0x20, 0x47, 0x6F,
+ 0x72, 0x72, 0x6F, 0x77, 0x20, 0x20, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x20, 0x20, 0x20, 0x20, 0x4C, 0x65,
+ 0x76, 0x65, 0x6C, 0x70, 0x72, 0x6F, 0x67, 0x72,
+ 0x61, 0x6D, 0x6D, 0x65, 0x3A, 0x20, 0x42, 0x69,
+ 0x6C, 0x6C, 0x20, 0x53, 0x74, 0x6F, 0x6B, 0x65,
+ 0x73, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x0D, 0x0D, 0x0D, 0x0D, 0x20, 0x20, 0x09, 0x20,
+ 0x41, 0x6D, 0x69, 0x67, 0x61, 0x20, 0x50, 0x72,
+ 0x6F, 0x67, 0x72, 0x61, 0x6D, 0x6D, 0x3A, 0x20,
+ 0x42, 0x69, 0x6C, 0x6C, 0x20, 0x53, 0x74, 0x6F,
+ 0x6B, 0x65, 0x73, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x0D, 0x0D, 0x0D, 0x0D, 0x49, 0x6E,
+ 0x74, 0x72, 0x6F, 0x20, 0x26, 0x20, 0x46, 0x69,
+ 0x6E, 0x61, 0x6C, 0x65, 0x20, 0x76, 0x6F, 0x6E,
+ 0x3A, 0x20, 0x4A, 0x6F, 0x65, 0x20, 0x42, 0x6F,
+ 0x73, 0x74, 0x69, 0x63, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x0D, 0x0D, 0x0D, 0x0D,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x72,
+ 0x74, 0x20, 0x26, 0x20, 0x47, 0x72, 0x61, 0x66,
+ 0x69, 0x6B, 0x3A, 0x20, 0x52, 0x69, 0x63, 0x6B,
+ 0x20, 0x50, 0x61, 0x72, 0x6B, 0x73, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x0D, 0x0D,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x41, 0x61, 0x72, 0x6F,
+ 0x6E, 0x20, 0x50, 0x6F, 0x77, 0x65, 0x6C, 0x6C,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x0D, 0x0D,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x4A, 0x6F, 0x73, 0x65,
+ 0x70, 0x68, 0x20, 0x48, 0x65, 0x77, 0x69, 0x74,
+ 0x74, 0x20, 0x49, 0x56, 0x20, 0x20, 0x0D, 0x0D,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x52, 0x65, 0x6E, 0x20,
+ 0x4F, 0x6C, 0x73, 0x65, 0x6E, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x0D, 0x0D,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x4C, 0x6F, 0x75, 0x69,
+ 0x73, 0x65, 0x20, 0x53, 0x61, 0x6E, 0x64, 0x6F,
+ 0x76, 0x61, 0x6C, 0x20, 0x20, 0x20, 0x0D, 0x0D,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x4A, 0x75, 0x64, 0x69,
+ 0x74, 0x68, 0x20, 0x50, 0x65, 0x74, 0x65, 0x72,
+ 0x73, 0x6F, 0x6E, 0x20, 0x20, 0x20, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x4D,
+ 0x75, 0x73, 0x69, 0x6B, 0x3A, 0x20, 0x46, 0x72,
+ 0x61, 0x6E, 0x6B, 0x20, 0x4B, 0x6C, 0x65, 0x70,
+ 0x61, 0x63, 0x6B, 0x69, 0x20, 0x20, 0x20, 0x20,
+ 0x0D, 0x0D, 0x0D, 0x0D, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x53, 0x6F, 0x75, 0x6E, 0x64, 0x65,
+ 0x66, 0x66, 0x65, 0x6B, 0x74, 0x65, 0x3A, 0x20,
+ 0x50, 0x61, 0x75, 0x6C, 0x20, 0x53, 0x2E, 0x20,
+ 0x4D, 0x75, 0x64, 0x72, 0x61, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x0D, 0x0D, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x44, 0x77, 0x69, 0x67, 0x68, 0x74, 0x20, 0x4F,
+ 0x6B, 0x61, 0x68, 0x61, 0x72, 0x61, 0x20, 0x20,
+ 0x20, 0x20, 0x0D, 0x0D, 0x0D, 0x0D, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x41, 0x75, 0x74, 0x6F, 0x72,
+ 0x3A, 0x20, 0x4D, 0x61, 0x72, 0x63, 0x20, 0x43,
+ 0x72, 0x61, 0x6D, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x0D, 0x0D, 0x0D, 0x0D,
+ 0x20, 0x20, 0x51, 0x75, 0x61, 0x6C, 0x69, 0x74,
+ 0x84, 0x74, 0x73, 0x70, 0x72, 0x81, 0x66, 0x75,
+ 0x6E, 0x67, 0x3A, 0x20, 0x47, 0x6C, 0x65, 0x6E,
+ 0x6E, 0x20, 0x53, 0x70, 0x65, 0x72, 0x72, 0x79,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x0D, 0x0D, 0x53, 0x70, 0x65, 0x63,
+ 0x69, 0x61, 0x6C, 0x20, 0x54, 0x68, 0x61, 0x6E,
+ 0x6B, 0x73, 0x0D, 0x0D, 0x0D, 0x43, 0x68, 0x75,
+ 0x63, 0x6B, 0x20, 0x4B, 0x72, 0x6F, 0x65, 0x67,
+ 0x65, 0x6C, 0x0D, 0x0D, 0x58, 0x61, 0x6E, 0x61,
+ 0x74, 0x68, 0x61, 0x72, 0x20, 0x74, 0x68, 0x65,
+ 0x20, 0x42, 0x65, 0x68, 0x6F, 0x6C, 0x64, 0x65,
+ 0x72, 0x0D, 0x0D, 0x75, 0x6E, 0x64, 0x0D, 0x0D,
+ 0x4D, 0x69, 0x6B, 0x65, 0x27, 0x73, 0x20, 0x63,
+ 0x61, 0x74, 0x2C, 0x20, 0x53, 0x70, 0x61, 0x72,
+ 0x6B, 0x79, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x50, 0x75, 0x62, 0x6C, 0x69, 0x73,
+ 0x68, 0x65, 0x64, 0x20, 0x62, 0x79, 0x0D, 0x0D,
+ 0x02, 0x02, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x50, 0x72, 0x6F, 0x64, 0x75,
+ 0x63, 0x65, 0x72, 0x3A, 0x20, 0x44, 0x61, 0x6E,
+ 0x20, 0x43, 0x65, 0x72, 0x6D, 0x61, 0x6B, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x0D,
+ 0x0D, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x47, 0x65, 0x6F,
+ 0x72, 0x67, 0x65, 0x20, 0x4D, 0x61, 0x63, 0x44,
+ 0x6F, 0x6E, 0x61, 0x6C, 0x64, 0x20, 0x20, 0x0D,
+ 0x0D, 0x0D, 0x0D, 0x20, 0x20, 0x53, 0x70, 0x69,
+ 0x65, 0x6C, 0x65, 0x6E, 0x74, 0x77, 0x69, 0x63,
+ 0x6B, 0x6C, 0x75, 0x6E, 0x67, 0x3A, 0x20, 0x4E,
+ 0x69, 0x63, 0x68, 0x6F, 0x6C, 0x61, 0x73, 0x20,
+ 0x42, 0x65, 0x6C, 0x69, 0x61, 0x65, 0x66, 0x66,
+ 0x20, 0x0D, 0x0D, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x44,
+ 0x61, 0x76, 0x69, 0x64, 0x20, 0x41, 0x2E, 0x20,
+ 0x4C, 0x75, 0x63, 0x63, 0x61, 0x20, 0x20, 0x20,
+ 0x20, 0x0D, 0x0D, 0x0D, 0x0D, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x53, 0x70, 0x69, 0x65, 0x6C,
+ 0x65, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x3A,
+ 0x20, 0x50, 0x68, 0x69, 0x6C, 0x20, 0x41, 0x6C,
+ 0x6E, 0x65, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x0D, 0x0D, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x4A, 0x6F, 0x68, 0x6E, 0x20, 0x42, 0x6F,
+ 0x6F, 0x63, 0x6B, 0x68, 0x6F, 0x6C, 0x64, 0x74,
+ 0x20, 0x20, 0x20, 0x0D, 0x0D, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x47, 0x6C, 0x65, 0x6E, 0x20, 0x43, 0x75,
+ 0x72, 0x65, 0x74, 0x6F, 0x6E, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x0D, 0x0D, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x4D, 0x61, 0x72, 0x6B, 0x20, 0x48, 0x61,
+ 0x6C, 0x6C, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x0D, 0x0D, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x42, 0x72, 0x69, 0x61, 0x6E, 0x20, 0x4C,
+ 0x6F, 0x77, 0x65, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x0D, 0x0D, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x52, 0x6F, 0x62, 0x65, 0x72, 0x74, 0x20,
+ 0x4C, 0x75, 0x70, 0x6F, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x0D, 0x0D, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x41, 0x6C, 0x61, 0x6E, 0x20, 0x4D, 0x61,
+ 0x72, 0x65, 0x6E, 0x63, 0x6F, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x0D, 0x0D, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x4A, 0x61, 0x73, 0x6F, 0x6E, 0x20, 0x52,
+ 0x61, 0x79, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x0D, 0x0D, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x4A, 0x65, 0x66, 0x66, 0x20, 0x53, 0x68,
+ 0x6F, 0x74, 0x77, 0x65, 0x6C, 0x6C, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x0D, 0x0D, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x41, 0x6E, 0x64, 0x72, 0x65, 0x20, 0x56,
+ 0x72, 0x69, 0x67, 0x6E, 0x61, 0x75, 0x64, 0x20,
+ 0x20, 0x20, 0x20, 0x0D, 0x0D, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x43, 0x68, 0x72, 0x69, 0x73, 0x20, 0x57,
+ 0x61, 0x72, 0x73, 0x68, 0x61, 0x75, 0x65, 0x72,
+ 0x20, 0x20, 0x20, 0x0D, 0x0D, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x61, 0x6E, 0x64, 0x20, 0x54, 0x53, 0x43,
+ 0x53, 0x2C, 0x20, 0x49, 0x6E, 0x63, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x0D, 0x0D, 0x0D, 0x0D, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x54, 0x65, 0x73,
+ 0x74, 0x20, 0x53, 0x75, 0x70, 0x70, 0x6F, 0x72,
+ 0x74, 0x3A, 0x20, 0x4B, 0x79, 0x6D, 0x20, 0x47,
+ 0x6F, 0x79, 0x65, 0x72, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x20, 0x20, 0x44,
+ 0x65, 0x75, 0x74, 0x73, 0x63, 0x68, 0x65, 0x20,
+ 0x56, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, 0x3A,
+ 0x20, 0x53, 0x6F, 0x66, 0x74, 0x67, 0x6F, 0x6C,
+ 0x64, 0x20, 0x47, 0x6D, 0x62, 0x48, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x0D, 0x0D, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50,
+ 0x72, 0x6F, 0x64, 0x75, 0x63, 0x65, 0x72, 0x3A,
+ 0x20, 0x54, 0x68, 0x6F, 0x6D, 0x61, 0x73, 0x20,
+ 0x42, 0x72, 0x6F, 0x63, 0x6B, 0x68, 0x61, 0x67,
+ 0x65, 0x20, 0x20, 0x0D, 0x0D, 0x20, 0x4C, 0x65,
+ 0x76, 0x65, 0x6C, 0x20, 0x75, 0x2E, 0x20, 0x48,
+ 0x61, 0x6E, 0x64, 0x62, 0x75, 0x63, 0x68, 0x3A,
+ 0x20, 0x4A, 0x61, 0x73, 0x70, 0x65, 0x72, 0x20,
+ 0x42, 0x6F, 0x6E, 0x67, 0x65, 0x72, 0x74, 0x7A,
+ 0x20, 0x20, 0x20, 0x0D, 0x0D, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x53, 0x70, 0x69, 0x65, 0x6C,
+ 0x65, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, 0x3A,
+ 0x20, 0x53, 0x63, 0x68, 0x69, 0x65, 0x76, 0x69,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x0D, 0x0D, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x41, 0x6C, 0x65, 0x78, 0x61, 0x6E, 0x64,
+ 0x65, 0x72, 0x20, 0x42, 0x6F, 0x68, 0x6C, 0x20,
+ 0x20, 0x20, 0x20, 0x0D, 0x0D, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x4D, 0x61, 0x72, 0x6B, 0x75, 0x73, 0x20,
+ 0x4C, 0x75, 0x64, 0x6F, 0x6C, 0x66, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x0D, 0x0D, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x54, 0x68, 0x6F, 0x72, 0x73, 0x74, 0x65,
+ 0x6E, 0x20, 0x4E, 0x65, 0x75, 0x6D, 0x61, 0x6E,
+ 0x6E, 0x20, 0x20, 0x0D, 0x0D, 0x20, 0x20, 0x20,
+ 0x20, 0x53, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6C,
+ 0x20, 0x54, 0x68, 0x61, 0x6E, 0x6B, 0x73, 0x3A,
+ 0x20, 0x4A, 0x94, 0x72, 0x67, 0x20, 0x47, 0x72,
+ 0x84, 0x66, 0x69, 0x6E, 0x67, 0x68, 0x6F, 0x6C,
+ 0x74, 0x20, 0x20, 0x0D, 0x0D, 0x09, 0x09, 0x09,
+ 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x20,
+ 0x4B, 0x72, 0x69, 0x73, 0x74, 0x69, 0x6E, 0x20,
+ 0x44, 0x6F, 0x64, 0x74, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x0D, 0x0D, 0x09, 0x09, 0x09, 0x09,
+ 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x20, 0x54,
+ 0x68, 0x6F, 0x72, 0x62, 0x65, 0x6E, 0x20, 0x57,
+ 0x94, 0x68, 0x6C, 0x65, 0x72, 0x20, 0x20, 0x20,
+ 0x20, 0x0D, 0x0D, 0x09, 0x09, 0x09, 0x09, 0x09,
+ 0x09, 0x09, 0x09, 0x09, 0x09, 0x20, 0x42, 0x65,
+ 0x72, 0x6E, 0x61, 0x72, 0x64, 0x20, 0x4D, 0x6F,
+ 0x72, 0x65, 0x6C, 0x6C, 0x20, 0x20, 0x20, 0x20,
+ 0x0D, 0x0D, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x53, 0x75,
+ 0x73, 0x61, 0x6E, 0x6E, 0x65, 0x20, 0x44, 0x69,
+ 0x65, 0x63, 0x6B, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x0D, 0x0D, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x56, 0x6F,
+ 0x6C, 0x6B, 0x65, 0x72, 0x20, 0x45, 0x6C, 0x6F,
+ 0x65, 0x73, 0x73, 0x65, 0x72, 0x20, 0x20, 0x20,
+ 0x0D, 0x0D, 0x75, 0x6E, 0x64, 0x20, 0x64, 0x65,
+ 0x72, 0x20, 0x44, 0x72, 0x61, 0x63, 0x68, 0x65,
+ 0x6E, 0x74, 0x94, 0x74, 0x65, 0x72, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x0D, 0x43, 0x61, 0x73, 0x74, 0x20,
+ 0x6F, 0x66, 0x20, 0x43, 0x68, 0x61, 0x72, 0x61,
+ 0x63, 0x74, 0x65, 0x72, 0x73, 0x0D, 0x0D, 0x0D,
+ 0x44, 0x69, 0x65, 0x20, 0x4D, 0x84, 0x63, 0x68,
+ 0x74, 0x65, 0x20, 0x64, 0x65, 0x73, 0x20, 0x42,
+ 0x94, 0x73, 0x65, 0x6E, 0x0D, 0x0D, 0x0D, 0x44,
+ 0x72, 0x61, 0x6E, 0x20, 0x44, 0x72, 0x61, 0x67,
+ 0x67, 0x6F, 0x72, 0x65, 0x20, 0x28, 0x44, 0x65,
+ 0x72, 0x20, 0x67, 0x72, 0x6F, 0xE1, 0x65, 0x20,
+ 0x62, 0x94, 0x73, 0x65, 0x20, 0x44, 0x72, 0x61,
+ 0x63, 0x68, 0x65, 0x29, 0x0D, 0x0D, 0x4E, 0x61,
+ 0x64, 0x69, 0x61, 0x20, 0x26, 0x20, 0x4A, 0x6F,
+ 0x72, 0x69, 0x6C, 0x20, 0x28, 0x44, 0x69, 0x65,
+ 0x20, 0x62, 0x94, 0x73, 0x65, 0x6E, 0x20, 0x4B,
+ 0x6C, 0x65, 0x72, 0x69, 0x6B, 0x65, 0x72, 0x29,
+ 0x0D, 0x0D, 0x44, 0x69, 0x65, 0x6E, 0x65, 0x72,
+ 0x20, 0x28, 0x44, 0x72, 0x61, 0x6E, 0x73, 0x20,
+ 0x62, 0x94, 0x73, 0x65, 0x20, 0x72, 0x65, 0x63,
+ 0x68, 0x74, 0x65, 0x20, 0x48, 0x61, 0x6E, 0x64,
+ 0x29, 0x0D, 0x0D, 0x4B, 0x6C, 0x65, 0x72, 0x69,
+ 0x6B, 0x65, 0x72, 0x20, 0x28, 0x44, 0x65, 0x72,
+ 0x20, 0x66, 0x69, 0x65, 0x73, 0x65, 0x20, 0x72,
+ 0x6F, 0x74, 0x65, 0x20, 0x48, 0x65, 0x72, 0x69,
+ 0x6E, 0x67, 0x29, 0x0D, 0x0D, 0x44, 0x65, 0x72,
+ 0x20, 0x4B, 0x94, 0x6E, 0x69, 0x67, 0x20, 0x64,
+ 0x65, 0x72, 0x20, 0x46, 0x72, 0x6F, 0x73, 0x74,
+ 0x72, 0x69, 0x65, 0x73, 0x65, 0x6E, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x44, 0x69, 0x65, 0x20, 0x4D, 0x84,
+ 0x63, 0x68, 0x74, 0x65, 0x20, 0x64, 0x65, 0x73,
+ 0x20, 0x47, 0x75, 0x74, 0x65, 0x6E, 0x0D, 0x0D,
+ 0x0D, 0x4B, 0x68, 0x65, 0x6C, 0x62, 0x65, 0x6E,
+ 0x20, 0x42, 0x6C, 0x61, 0x63, 0x6B, 0x73, 0x74,
+ 0x61, 0x66, 0x66, 0x0D, 0x0D, 0x41, 0x6D, 0x62,
+ 0x65, 0x72, 0x20, 0x28, 0x4B, 0x68, 0x65, 0x6C,
+ 0x62, 0x65, 0x6E, 0x73, 0x20, 0x4B, 0x75, 0x6E,
+ 0x64, 0x73, 0x63, 0x68, 0x61, 0x66, 0x74, 0x65,
+ 0x72, 0x29, 0x0D, 0x0D, 0x53, 0x68, 0x6F, 0x72,
+ 0x6E, 0x20, 0x44, 0x69, 0x65, 0x72, 0x67, 0x61,
+ 0x72, 0x20, 0x28, 0x6C, 0x84, 0x73, 0x74, 0x69,
+ 0x67, 0x65, 0x72, 0x20, 0x5A, 0x77, 0x65, 0x72,
+ 0x67, 0x29, 0x0D, 0x0D, 0x49, 0x6E, 0x73, 0x61,
+ 0x6C, 0x20, 0x64, 0x65, 0x72, 0x20, 0x44, 0x69,
+ 0x65, 0x62, 0x20, 0x28, 0x44, 0x69, 0x65, 0x20,
+ 0x50, 0x6C, 0x61, 0x67, 0x65, 0x29, 0x0D, 0x0D,
+ 0x43, 0x61, 0x6C, 0x61, 0x6E, 0x64, 0x72, 0x61,
+ 0x20, 0x28, 0x49, 0x72, 0x61, 0x73, 0x20, 0x76,
+ 0x65, 0x72, 0x6C, 0x6F, 0x72, 0x65, 0x6E, 0x65,
+ 0x20, 0x53, 0x63, 0x68, 0x77, 0x65, 0x73, 0x74,
+ 0x65, 0x72, 0x29, 0x0D, 0x0D, 0x41, 0x6C, 0x61,
+ 0x69, 0x6E, 0x20, 0x28, 0x44, 0x65, 0x72, 0x20,
+ 0x55, 0x72, 0x61, 0x6C, 0x74, 0x65, 0x29, 0x0D,
+ 0x0D, 0x53, 0x61, 0x6E, 0x2D, 0x52, 0x61, 0x61,
+ 0x6C, 0x20, 0x28, 0x44, 0x75, 0x6E, 0x6B, 0x65,
+ 0x6C, 0x65, 0x6C, 0x66, 0x65, 0x6E, 0x6D, 0x61,
+ 0x67, 0x69, 0x65, 0x72, 0x29, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x0D, 0x0D, 0x01, 0x4A, 0x65, 0x64,
+ 0x65, 0x20, 0x8E, 0x68, 0x6E, 0x6C, 0x69, 0x63,
+ 0x68, 0x6B, 0x65, 0x69, 0x74, 0x20, 0x76, 0x6F,
+ 0x6E, 0x20, 0x43, 0x68, 0x61, 0x72, 0x61, 0x6B,
+ 0x74, 0x65, 0x72, 0x65, 0x6E, 0x2C, 0x0D, 0x01,
+ 0x6F, 0x62, 0x20, 0x54, 0x6F, 0x74, 0x20, 0x6F,
+ 0x64, 0x65, 0x72, 0x20, 0x4C, 0x65, 0x62, 0x65,
+ 0x6E, 0x64, 0x69, 0x67, 0x2C, 0x20, 0x77, 0x84,
+ 0x72, 0x65, 0x20, 0x72, 0x65, 0x69, 0x6E, 0x0D,
+ 0x01, 0x7A, 0x75, 0x66, 0x84, 0x6C, 0x6C, 0x69,
+ 0x67, 0x20, 0x75, 0x6E, 0x64, 0x20, 0x75, 0x6E,
+ 0x62, 0x65, 0x61, 0x62, 0x73, 0x69, 0x63, 0x68,
+ 0x74, 0x69, 0x67, 0x74, 0x2E, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
+ 0x02, 0x11, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
+ 0x00
+};
+
+static const ByteProvider kEoB2CreditsDataDOSGermanProvider = { ARRAYSIZE(kEoB2CreditsDataDOSGerman), kEoB2CreditsDataDOSGerman };
+
+static const char *const kEoB2FinaleCPSFilesDOSGerman[13] = {
+ "DRAGON1.CPS",
+ "DRAGON2.CPS",
+ "HURRY1.CPS",
+ "HURRY2.CPS",
+ "DESTROY0.CPS",
+ "DESTROY1.CPS",
+ "DESTROY2.CPS",
+ "MAGIC.CPS",
+ "DESTROY3.CPS",
+ "XREDITS2.CPS",
+ "CREDITS3.CPS",
+ "XEROES.CPS",
+ "THANKS.CPS"
+};
+
+static const StringListProvider kEoB2FinaleCPSFilesDOSGermanProvider = { ARRAYSIZE(kEoB2FinaleCPSFilesDOSGerman), kEoB2FinaleCPSFilesDOSGerman };
+
+static const char *const kEoB2MonsterDistAttStringsDOSGerman[5] = {
+ "Die Party wurde von einem psychischen Abgriff getroffen!\r",
+ "paralysiert",
+ "vergiftet",
+ "bet""\x84""ubt",
+ "aus stein"
+};
+
+static const StringListProvider kEoB2MonsterDistAttStringsDOSGermanProvider = { ARRAYSIZE(kEoB2MonsterDistAttStringsDOSGerman), kEoB2MonsterDistAttStringsDOSGerman };
+
+static const char *const kEoB2Npc1StringsDOSGerman[2] = {
+ "reden",
+ "weiter"
+};
+
+static const StringListProvider kEoB2Npc1StringsDOSGermanProvider = { ARRAYSIZE(kEoB2Npc1StringsDOSGerman), kEoB2Npc1StringsDOSGerman };
+
+static const char *const kEoB2Npc2StringsDOSGerman[2] = {
+ "Freilassen",
+ "Weiterziehen"
+};
+
+static const StringListProvider kEoB2Npc2StringsDOSGermanProvider = { ARRAYSIZE(kEoB2Npc2StringsDOSGerman), kEoB2Npc2StringsDOSGerman };
+
+static const char *const kEoB2MonsterDustStringsDOSGerman[1] = {
+ "Das Monster vergeht zu Staub!\r"
+};
+
+static const StringListProvider kEoB2MonsterDustStringsDOSGermanProvider = { ARRAYSIZE(kEoB2MonsterDustStringsDOSGerman), kEoB2MonsterDustStringsDOSGerman };
+
+static const char *const kEoB2KheldranStringsDOSGerman[1] = {
+ " Diese Narren!"
+};
+
+static const StringListProvider kEoB2KheldranStringsDOSGermanProvider = { ARRAYSIZE(kEoB2KheldranStringsDOSGerman), kEoB2KheldranStringsDOSGerman };
+
+static const char *const kEoB2HornStringsDOSGerman[4] = {
+ "Ein br""\x81""llendes Ger""\x84""usch kommt aus dem Horn.\r",
+ "Ein hohler Ton dringt aus dem Horn.\r",
+ "Ein melodischer Ton klingt aus dem Horn.\r",
+ "Ein unheimliches Ger""\x84""usch kommt aus dem Horn.\r"
+};
+
+static const StringListProvider kEoB2HornStringsDOSGermanProvider = { ARRAYSIZE(kEoB2HornStringsDOSGerman), kEoB2HornStringsDOSGerman };
+
diff --git a/devtools/create_kyradat/resources/hof_dos.h b/devtools/create_kyradat/resources/hof_dos.h
new file mode 100644
index 0000000000..a90acd4803
--- /dev/null
+++ b/devtools/create_kyradat/resources/hof_dos.h
@@ -0,0 +1,769 @@
+static const char *const k2SeqplayPakFilesDOS[3] = {
+ "INTROGEN.PAK",
+ "INTROVOC.PAK",
+ "VOC.PAK"
+};
+
+static const StringListProvider k2SeqplayPakFilesDOSProvider = { ARRAYSIZE(k2SeqplayPakFilesDOS), k2SeqplayPakFilesDOS };
+
+static const char *const k2SeqplaySfxFilesDOS[33] = {
+ "intro1",
+ "intro2",
+ "intro3",
+ "intro4",
+ "intro5",
+ "intro6",
+ "intro7",
+ "intro8",
+ "intro9",
+ "intro10",
+ "intro11",
+ "intro12",
+ "glow",
+ "asong",
+ "crowcaw",
+ "eyerub2",
+ "pluck3",
+ "rodnreel",
+ "frog1",
+ "scavmov2",
+ "lambmom3",
+ "lambkid1",
+ "thunder2",
+ "thunder3",
+ "wind6",
+ "h2odrop2",
+ "gasleak",
+ "polgulp1",
+ "hndslap1",
+ "burp1",
+ "scream1",
+ "theend",
+ ""
+};
+
+static const StringListProvider k2SeqplaySfxFilesDOSProvider = { ARRAYSIZE(k2SeqplaySfxFilesDOS), k2SeqplaySfxFilesDOS };
+
+static const char *const k2SeqplayIntroTracksDOS[2] = {
+ "k2intro",
+ "k2intro"
+};
+
+static const StringListProvider k2SeqplayIntroTracksDOSProvider = { ARRAYSIZE(k2SeqplayIntroTracksDOS), k2SeqplayIntroTracksDOS };
+
+static const char *const k2SeqplayFinaleTracksDOS[2] = {
+ "k2finale",
+ "k2finale"
+};
+
+static const StringListProvider k2SeqplayFinaleTracksDOSProvider = { ARRAYSIZE(k2SeqplayFinaleTracksDOS), k2SeqplayFinaleTracksDOS };
+
+static const HoFSequence k2SeqplaySeqDataDOSSeq[16] = {
+ { 0x0002, "", "virgin.cps", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x0001, 0x0064, 0, 0, 0x001E },
+ { 0x0001, "westwood.wsa", "", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x0012, 0x0006, 0, 0, 0x00A0 },
+ { 0x0001, "title.wsa", "", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x001A, 0x0006, 0, 0, 0x000A },
+ { 0x0002, "", "over.cps", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x0001, 0x0E10, 0, 0, 0x001E },
+ { 0x0002, "", "library.cps", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x0001, 0x0E10, 0, 0, 0x001E },
+ { 0x0002, "", "hand.cps", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x0001, 0x0E10, 0, 0, 0x005A },
+ { 0x0001, "point.wsa", "", 4, 8, 0xFFFF, 0xFFFF, 0x0000, 0x0026, 0x0007, 0, 0, 0x00C8 },
+ { 0x0001, "zanfaun.wsa", "", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x0033, 0x0010, 0, 0, 0x00F0 },
+ { 0x0001, "funters.wsa", "", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x001B, 0x000C, 0, 0, 0x001E },
+ { 0x0001, "ferb.wsa", "", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x001B, 0x0010, 0, 0, 0x001E },
+ { 0x0001, "fish.wsa", "", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x0038, 0x000C, 0, 0, 0x001E },
+ { 0x0001, "fheep.wsa", "", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x000B, 0x000C, 0, 0, 0x001E },
+ { 0x0001, "farmer.wsa", "", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x0016, 0x000C, 0, 0, 0x0064 },
+ { 0x0001, "fuards.wsa", "", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x0018, 0x000E, 0, 0, 0x001E },
+ { 0x0001, "firates.wsa", "", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x0025, 0x000C, 0, 0, 0x001E },
+ { 0x0001, "frash.wsa", "", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x000C, 0x000A, 0, 0, 0x0154 }
+};
+
+static const FrameControl k2SeqplaySeqDataDOSSeqNestedControl7[18] = {
+ { 0, 10 },
+ { 1, 10 },
+ { 2, 10 },
+ { 3, 10 },
+ { 4, 10 },
+ { 5, 10 },
+ { 6, 10 },
+ { 7, 10 },
+ { 8, 10 },
+ { 9, 10 },
+ { 8, 10 },
+ { 7, 10 },
+ { 6, 10 },
+ { 5, 40 },
+ { 4, 10 },
+ { 3, 10 },
+ { 2, 10 },
+ { 1, 10 }
+};
+
+static const FrameControl k2SeqplaySeqDataDOSSeqNestedControl10[17] = {
+ { 0, 6 },
+ { 1, 6 },
+ { 2, 6 },
+ { 3, 6 },
+ { 4, 6 },
+ { 5, 6 },
+ { 6, 6 },
+ { 7, 6 },
+ { 8, 6 },
+ { 9, 6 },
+ { 10, 6 },
+ { 11, 6 },
+ { 11, 12 },
+ { 12, 12 },
+ { 13, 12 },
+ { 12, 12 },
+ { 11, 12 }
+};
+
+static const FrameControl k2SeqplaySeqDataDOSSeqNestedControl11[9] = {
+ { 0, 6 },
+ { 1, 6 },
+ { 2, 6 },
+ { 3, 6 },
+ { 4, 6 },
+ { 3, 6 },
+ { 4, 6 },
+ { 5, 64 },
+ { 5, 6 }
+};
+
+static const FrameControl k2SeqplaySeqDataDOSSeqNestedControl12[16] = {
+ { 0, 6 },
+ { 1, 6 },
+ { 0, 6 },
+ { 1, 6 },
+ { 0, 6 },
+ { 1, 6 },
+ { 0, 6 },
+ { 1, 6 },
+ { 0, 6 },
+ { 1, 6 },
+ { 0, 6 },
+ { 1, 6 },
+ { 0, 6 },
+ { 1, 6 },
+ { 0, 6 },
+ { 1, 6 }
+};
+
+static const FrameControl k2SeqplaySeqDataDOSSeqNestedControl13[5] = {
+ { 0, 6 },
+ { 1, 6 },
+ { 2, 6 },
+ { 1, 6 },
+ { 0, 1 }
+};
+
+static const FrameControl k2SeqplaySeqDataDOSSeqNestedControl14[8] = {
+ { 0, 6 },
+ { 1, 6 },
+ { 2, 6 },
+ { 3, 6 },
+ { 4, 6 },
+ { 3, 6 },
+ { 2, 6 },
+ { 1, 6 }
+};
+
+static const HoFNestedSequence k2SeqplaySeqDataDOSSeqNested[15] = {
+ { 0x000C, "figgle.wsa", 0, 3, 60, 0, 0, 0, NULL, 0, 0 },
+ { 0x0008, "over1.wsa", 0, 10, 10, 0, 0, 0, NULL, 0, 0 },
+ { 0x0008, "over2.wsa", 0, 11, 9, 0, 0, 0, NULL, 0, 0 },
+ { 0x0008, "forest.wsa", 0, 22, 6, 0, 0, 0, NULL, 1, 3 },
+ { 0x0008, "dragon.wsa", 0, 11, 6, 0, 0, 0, NULL, 2, 0 },
+ { 0x0002, "darm.wsa", 0, 19, 9, 0, 0, 0, NULL, 4, 0 },
+ { 0x0002, "library.wsa", 0, 33, 9, 0, 0, 0, NULL, 4, 0 },
+ { 0x002A, "library.wsa", 0, 18, 9, 0, 0, ARRAYSIZE(k2SeqplaySeqDataDOSSeqNestedControl7), k2SeqplaySeqDataDOSSeqNestedControl7, 0, 0 },
+ { 0x000A, "marco.wsa", 0, 37, 9, 0, 0, 0, NULL, 4, 0 },
+ { 0x0002, "hand1a.wsa", 0, 34, 9, 0, 0, 0, NULL, 0, 0 },
+ { 0x002A, "hand1b.wsa", 0, 16, 9, 0, 0, ARRAYSIZE(k2SeqplaySeqDataDOSSeqNestedControl10), k2SeqplaySeqDataDOSSeqNestedControl10, 0, 0 },
+ { 0x002A, "hand1c.wsa", 0, 9, 9, 0, 0, ARRAYSIZE(k2SeqplaySeqDataDOSSeqNestedControl11), k2SeqplaySeqDataDOSSeqNestedControl11, 0, 0 },
+ { 0x002C, "hand2.wsa", 0, 2, 9, 0, 0, ARRAYSIZE(k2SeqplaySeqDataDOSSeqNestedControl12), k2SeqplaySeqDataDOSSeqNestedControl12, 5, 0 },
+ { 0x002C, "hand3.wsa", 0, 4, 9, 0, 0, ARRAYSIZE(k2SeqplaySeqDataDOSSeqNestedControl13), k2SeqplaySeqDataDOSSeqNestedControl13, 5, 0 },
+ { 0x002C, "hand4.wsa", 0, 8, 9, 0, 0, ARRAYSIZE(k2SeqplaySeqDataDOSSeqNestedControl14), k2SeqplaySeqDataDOSSeqNestedControl14, 5, 0 }
+};
+
+static const HoFSequenceProvider k2SeqplaySeqDataDOSProvider = { ARRAYSIZE(k2SeqplaySeqDataDOSSeq), k2SeqplaySeqDataDOSSeq, ARRAYSIZE(k2SeqplaySeqDataDOSSeqNested), k2SeqplaySeqDataDOSSeqNested };
+
+static const char *const k2IngamePakFilesDOS[108] = {
+ "MISC_EMC.PAK",
+ "VOC.PAK",
+ "MISC_CPS.PAK",
+ "OTHER.PAK",
+ "COST1_SH.PAK",
+ "COST2_SH.PAK",
+ "COST3_SH.PAK",
+ "COST4_SH.PAK",
+ "COST5_SH.PAK",
+ "COST6_SH.PAK",
+ "COST7_SH.PAK",
+ "COST8_SH.PAK",
+ "COST9_SH.PAK",
+ "DRIVERS.PAK",
+ "CAULDRON.PAK",
+ "AUDIO.PAK",
+ "ALLEY.PAK",
+ "ALTAR.PAK",
+ "ANCHOR.PAK",
+ "BRIDGE.PAK",
+ "CELLAR.PAK",
+ "CLEARNG.PAK",
+ "CLIFF.PAK",
+ "CLOSE.PAK",
+ "CRICKET.PAK",
+ "CROC.PAK",
+ "DINOA.PAK",
+ "DINOB.PAK",
+ "DINOC.PAK",
+ "DINOD.PAK",
+ "DOCK.PAK",
+ "DOOR.PAK",
+ "FALL.PAK",
+ "FATE.PAK",
+ "FERRY.PAK",
+ "FIGHT.PAK",
+ "FISHER.PAK",
+ "FLOAT.PAK",
+ "FLYTRAP.PAK",
+ "FOOT.PAK",
+ "GARDEN.PAK",
+ "GEARS.PAK",
+ "GNARL.PAK",
+ "HANOI.PAK",
+ "HOLE.PAK",
+ "INCAVE.PAK",
+ "INGATE.PAK",
+ "INHERB.PAK",
+ "INHOME.PAK",
+ "INJAIL.PAK",
+ "INSHOP.PAK",
+ "INSTORE.PAK",
+ "ISLE.PAK",
+ "JUNGLE.PAK",
+ "MARKHME.PAK",
+ "MEADOW.PAK",
+ "MYSTRM.PAK",
+ "NEST.PAK",
+ "ONBOAT.PAK",
+ "OUTCAVE.PAK",
+ "OUTFARM.PAK",
+ "OUTGATE.PAK",
+ "OUTHERB.PAK",
+ "OUTHOME.PAK",
+ "PHONE_A.PAK",
+ "PHONE_B.PAK",
+ "PHONE_C.PAK",
+ "PHONE_D.PAK",
+ "QUICK.PAK",
+ "RAINA.PAK",
+ "RAINB.PAK",
+ "RAT.PAK",
+ "ROAD.PAK",
+ "ROPE.PAK",
+ "SCORCH.PAK",
+ "SKULL.PAK",
+ "SKY.PAK",
+ "STATION.PAK",
+ "STREET.PAK",
+ "SULFUR.PAK",
+ "TAVERN.PAK",
+ "TIMBER.PAK",
+ "TRAM.PAK",
+ "TREE.PAK",
+ "VOLC_A.PAK",
+ "VOLC_B.PAK",
+ "VOLC_C.PAK",
+ "VOLC_D.PAK",
+ "VOLC_E.PAK",
+ "VOLC_F.PAK",
+ "VOLC_G.PAK",
+ "VOLC_H.PAK",
+ "VOLC_I.PAK",
+ "VOLC_J.PAK",
+ "VOLC_K.PAK",
+ "VOLC_L.PAK",
+ "VOLC_M.PAK",
+ "VOLC_N.PAK",
+ "VOLC_O.PAK",
+ "VOLC_P.PAK",
+ "VOLCANO.PAK",
+ "WHARF.PAK",
+ "WHEEL.PAK",
+ "GEARS2.PAK",
+ "GEARS3.PAK",
+ "OUTCAVE2.PAK",
+ "INJAIL2.PAK",
+ "TREE2.PAK"
+};
+
+static const StringListProvider k2IngamePakFilesDOSProvider = { ARRAYSIZE(k2IngamePakFilesDOS), k2IngamePakFilesDOS };
+
+static const char *const k2IngameSfxFilesDOS[178] = {
+ "ALCHEMY2",
+ "BIGSLAM",
+ "BITE1",
+ "BLINK1",
+ "BOING1",
+ "BUBBLE1",
+ "BUBBLE2",
+ "BURP1",
+ "BUTTON6",
+ "CAULDRN2",
+ "CHEST",
+ "CLOTHES1",
+ "CROCLAF4",
+ "CRY1",
+ "CRY2",
+ "DOORMTCL",
+ "DOORMTOP",
+ "DOORWDCL",
+ "DOORWDOP",
+ "DRUM1",
+ "DRUM2",
+ "DRUM3",
+ "DRUM4",
+ "DRUM5",
+ "DRUM6",
+ "DRUM7",
+ "EYERUB2",
+ "FALL1",
+ "FALL3",
+ "FNGRSNAP",
+ "FORMSPL1",
+ "FROG1",
+ "FROGMIX2",
+ "GASLEAK",
+ "GLOWY1",
+ "GOOD3",
+ "GOOD5",
+ "GROWTWIG",
+ "H2ODROP2",
+ "H2OPLANT",
+ "HACHUCKD",
+ "HAYFALL2",
+ "HAYSRCH4",
+ "ICECUBE",
+ "KEYOPEN",
+ "LAMBKID1",
+ "LAMBMOM3",
+ "LAUGH1",
+ "LAUGH3",
+ "LAUGH4",
+ "LIZLISP",
+ "MAKESPL1",
+ "MSTDOOM1",
+ "ORCMOVE",
+ "PLUCK3",
+ "POLGULP1",
+ "PORTCUL",
+ "POURH20",
+ "RIP2",
+ "RODNREEL",
+ "ROWBOAT1",
+ "RUCKUS1",
+ "SCAVMOV2",
+ "SCRATCH1",
+ "SNAKSPEL",
+ "SNEEZE1",
+ "SNIFF1",
+ "SNOREIN3",
+ "SNOROUT",
+ "SPLASH1",
+ "SQUEAK1",
+ "SQUEAK2",
+ "SQUEAK3",
+ "SQUISH1",
+ "SQUISH2",
+ "STEAM",
+ "STEAM3",
+ "STRETCH1",
+ "SWING",
+ "TREZA1",
+ "TURNPAG2",
+ "TWIGSNAP",
+ "UGH1",
+ "WHEEL4",
+ "WINGS1",
+ "YAWN1",
+ "ZOOM5",
+ "FILBOTL",
+ "H2OPOUR1",
+ "JAILDOR1",
+ "JAILLOK1",
+ "CASHREG1",
+ "SWISH1",
+ "TURNBOAT",
+ "CLAPPING",
+ "CRUNCH1",
+ "WHEEL6",
+ "LITEMAG",
+ "SHELDOWN",
+ "SHELSLID",
+ "ZOW2",
+ "ZANLOOP1",
+ "SCREECH2",
+ "PANTING",
+ "TREX1",
+ "TREX5",
+ "TREX3",
+ "QUAKE",
+ "WRINGH2O",
+ "SPLAT2",
+ "OCEAN1",
+ "SPLAT3",
+ "CROCLAF5",
+ "FALL5",
+ "ZCMON2",
+ "ZWAIT3",
+ "ZNO2",
+ "CROCLAF7",
+ "CRICKET1",
+ "FIREBRTH",
+ "COW2",
+ "SAP2",
+ "PMTLHI",
+ "FROGSIGH",
+ "CRICEND",
+ "CRY3",
+ "CRY4",
+ "SHROOM1",
+ "DRIP1",
+ "SWIM4",
+ "CUCKOO2",
+ "PUNCH1",
+ "SNORT3",
+ "STAMPER2",
+ "WALLFALL",
+ "WOODFAL1",
+ "SPRAY1",
+ "OHNO1",
+ "YAHOO1",
+ "YIPEE1",
+ "WIND1",
+ "WIND3",
+ "WIND6",
+ "BLOWUP2",
+ "BOATLOP2",
+ "ZGIGGL1",
+ "ZCOUGH1",
+ "CRUSH",
+ "ALARM3",
+ "APPLEAT",
+ "BABYCRY1",
+ "BABYLAF1",
+ "BABYLIK1",
+ "GEARMX3",
+ "GLASBRK2",
+ "HANDKIL1",
+ "HNDSLAP1",
+ "ICEPICK1",
+ "KISS3",
+ "LOLIFAL1",
+ "PAGEBURN",
+ "PRTYHORN",
+ "SCREAM1",
+ "SPARKHIT",
+ "SPRING2",
+ "ZANLAND1",
+ "BIGBOW",
+ "BOWFORM",
+ "BULBHIT",
+ "EYELITE",
+ "ROOFBOW",
+ "FBIGFOT1",
+ "BIGFOOT4",
+ "DORSTNCL",
+ "CROWCAW",
+ "THUNDER2",
+ "THUNDER3",
+ "TOILET"
+};
+
+static const StringListProvider k2IngameSfxFilesDOSProvider = { ARRAYSIZE(k2IngameSfxFilesDOS), k2IngameSfxFilesDOS };
+
+static const byte k2IngameSfxIndexDOS[856] = {
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00,
+ 0x37, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
+ 0x47, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00,
+ 0x1F, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00,
+ 0x25, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00,
+ 0x36, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00,
+ 0x3F, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00,
+ 0x45, 0x00, 0x00, 0x00, 0x4D, 0x00, 0x00, 0x00,
+ 0x7B, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00,
+ 0x3C, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x00, 0x00,
+ 0x4E, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x00, 0x43, 0x00, 0x04, 0x00,
+ 0x56, 0x00, 0x00, 0x00, 0x40, 0x00, 0x05, 0x00,
+ 0x40, 0x00, 0x05, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0x64, 0x00, 0x00, 0x00, 0x4C, 0x00, 0x00, 0x00,
+ 0x12, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00,
+ 0x37, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00,
+ 0x1D, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
+ 0x49, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00,
+ 0x0A, 0x00, 0x00, 0x00, 0x4A, 0x00, 0x00, 0x00,
+ 0x09, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
+ 0x0D, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00,
+ 0x53, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00,
+ 0x0C, 0x00, 0x00, 0x00, 0x4B, 0x00, 0x00, 0x00,
+ 0x21, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00,
+ 0x32, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
+ 0x1B, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00,
+ 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
+ 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00,
+ 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00,
+ 0x19, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00,
+ 0x1A, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00,
+ 0x77, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x00, 0x00,
+ 0x55, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00,
+ 0x2A, 0x00, 0x00, 0x00, 0x2E, 0x00, 0x00, 0x00,
+ 0x2D, 0x00, 0x00, 0x00, 0x27, 0x00, 0x05, 0x00,
+ 0x25, 0x00, 0x00, 0x00, 0x46, 0x00, 0x05, 0x00,
+ 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
+ 0x34, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00,
+ 0x4F, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00,
+ 0x0F, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
+ 0x0A, 0x00, 0x00, 0x00, 0x78, 0x00, 0x06, 0x00,
+ 0x50, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x33, 0x00, 0x06, 0x00, 0x3A, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0x1E, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00,
+ 0x23, 0x00, 0x05, 0x00, 0x24, 0x00, 0x05, 0x00,
+ 0x3E, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00,
+ 0x48, 0x00, 0x05, 0x00, 0x20, 0x00, 0x00, 0x00,
+ 0x63, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0x7A, 0x00, 0x00, 0x00, 0x5E, 0x00, 0x00, 0x00,
+ 0x5B, 0x00, 0x00, 0x00, 0x5A, 0x00, 0x00, 0x00,
+ 0x10, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00,
+ 0x5D, 0x00, 0x00, 0x00, 0x5C, 0x00, 0x00, 0x00,
+ 0x57, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00,
+ 0x30, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00,
+ 0x61, 0x00, 0x05, 0x00, 0x58, 0x00, 0x00, 0x00,
+ 0x5F, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0x65, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00,
+ 0x67, 0x00, 0x00, 0x00, 0x68, 0x00, 0x05, 0x00,
+ 0x69, 0x00, 0x05, 0x00, 0x6A, 0x00, 0x05, 0x00,
+ 0x01, 0x00, 0x05, 0x00, 0x6B, 0x00, 0x00, 0x00,
+ 0x6C, 0x00, 0x00, 0x00, 0x6D, 0x00, 0x00, 0x00,
+ 0x90, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0x6F, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00,
+ 0x71, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00,
+ 0x73, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00,
+ 0x75, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00,
+ 0x7F, 0x00, 0x06, 0x00, 0x7D, 0x00, 0x00, 0x00,
+ 0x7E, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00,
+ 0x80, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00,
+ 0x84, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00,
+ 0x82, 0x00, 0x05, 0x00, 0x86, 0x00, 0x00, 0x00,
+ 0x88, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00,
+ 0x8A, 0x00, 0x00, 0x00, 0x8B, 0x00, 0x00, 0x00,
+ 0x87, 0x00, 0x00, 0x00, 0x8C, 0x00, 0x00, 0x00,
+ 0x8D, 0x00, 0x00, 0x00, 0x8E, 0x00, 0x00, 0x00,
+ 0x8F, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00,
+ 0x91, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00,
+ 0x93, 0x00, 0x05, 0x00, 0x94, 0x00, 0x00, 0x00,
+ 0x5F, 0x00, 0x00, 0x00, 0x96, 0x00, 0x05, 0x00,
+ 0x97, 0x00, 0x00, 0x00, 0x98, 0x00, 0x04, 0x00,
+ 0x99, 0x00, 0x00, 0x00, 0x9A, 0x00, 0x00, 0x00,
+ 0x9B, 0x00, 0x00, 0x00, 0x9C, 0x00, 0x00, 0x00,
+ 0x9D, 0x00, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x00,
+ 0x9F, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00,
+ 0xA1, 0x00, 0x00, 0x00, 0xA2, 0x00, 0x00, 0x00,
+ 0xA3, 0x00, 0x00, 0x00, 0xA4, 0x00, 0x00, 0x00,
+ 0xA5, 0x00, 0x00, 0x00, 0xA6, 0x00, 0x00, 0x00,
+ 0xA7, 0x00, 0x00, 0x00, 0xA8, 0x00, 0x00, 0x00,
+ 0xA9, 0x00, 0x00, 0x00, 0xAA, 0x00, 0x00, 0x00,
+ 0xAB, 0x00, 0x00, 0x00, 0xAC, 0x00, 0x00, 0x00,
+ 0xAD, 0x00, 0x00, 0x00, 0xAE, 0x00, 0x05, 0x00,
+ 0xAF, 0x00, 0x00, 0x00, 0xB0, 0x00, 0x00, 0x00,
+ 0xB1, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const ByteProvider k2IngameSfxIndexDOSProvider = { ARRAYSIZE(k2IngameSfxIndexDOS), k2IngameSfxIndexDOS };
+
+static const char *const k2IngameTracksDOS[15] = {
+ "K2TEST1",
+ "K2TEST2",
+ "K2TEST3",
+ "K2TEST4",
+ "K2TEST5",
+ "K2TEST6",
+ "K2TEST7",
+ "K2TEST8",
+ "K2TEST9",
+ "K2TEST10",
+ "K2TEST11",
+ "K2TEST12",
+ "K2TEST13",
+ "K2TEST14",
+ "K2TEST15"
+};
+
+static const StringListProvider k2IngameTracksDOSProvider = { ARRAYSIZE(k2IngameTracksDOS), k2IngameTracksDOS };
+
+static const byte k2IngameTalkObjIndexDOS[120] = {
+ 0x20, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6C, 0x65,
+ 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00,
+ 0x18, 0x00, 0x26, 0x00, 0x41, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, 0x00,
+ 0x05, 0x00, 0x06, 0x00, 0x07, 0x00, 0x08, 0x00,
+ 0x09, 0x00, 0x0A, 0x00, 0x11, 0x00, 0x12, 0x00,
+ 0x13, 0x00, 0x14, 0x00, 0x15, 0x00, 0x2A, 0x00,
+ 0x17, 0x00, 0x18, 0x00, 0x19, 0x00, 0x1A, 0x00,
+ 0x1B, 0x00, 0x1C, 0x00, 0x1D, 0x00, 0x1E, 0x00,
+ 0x1F, 0x00, 0x20, 0x00, 0x21, 0x00, 0x22, 0x00,
+ 0x23, 0x00, 0x24, 0x00, 0x30, 0x00, 0x35, 0x00,
+ 0x36, 0x00, 0x37, 0x00, 0x39, 0x00, 0x3A, 0x00,
+ 0x3B, 0x00, 0x3D, 0x00, 0x3E, 0x00, 0x3F, 0x00,
+ 0x40, 0x00, 0x41, 0x00, 0x42, 0x00, 0x43, 0x00,
+ 0x44, 0x00, 0x45, 0x00, 0x46, 0x00, 0x47, 0x00
+};
+
+static const ByteProvider k2IngameTalkObjIndexDOSProvider = { ARRAYSIZE(k2IngameTalkObjIndexDOS), k2IngameTalkObjIndexDOS };
+
+static const FrameControl k2IngameShapeAnimDataDOS0FrameControl[12] = {
+ { 0x0006, 0x00F0 },
+ { 0x002A, 0x000E },
+ { 0x002B, 0x000E },
+ { 0x002C, 0x000E },
+ { 0x0006, 0x000E },
+ { 0x002A, 0x000E },
+ { 0x002B, 0x000E },
+ { 0x002C, 0x000E },
+ { 0x0006, 0x000E },
+ { 0x002A, 0x000E },
+ { 0x002B, 0x000E },
+ { 0x002C, 0x000E }
+};
+
+static const FrameControl k2IngameShapeAnimDataDOS1FrameControl[6] = {
+ { 0x0002, 0x012C },
+ { 0x002D, 0x012C },
+ { 0x002E, 0x012C },
+ { 0x002F, 0x012C },
+ { 0x002E, 0x012C },
+ { 0x002D, 0x012C }
+};
+
+static const FrameControl k2IngameShapeAnimDataDOS2FrameControl[6] = {
+ { 0x000B, 0x0258 },
+ { 0x0030, 0x0005 },
+ { 0x0031, 0x0005 },
+ { 0x0032, 0x0005 },
+ { 0x0031, 0x0005 },
+ { 0x0030, 0x0005 }
+};
+
+static const FrameControl k2IngameShapeAnimDataDOS3FrameControl[4] = {
+ { 0x001C, 0x0014 },
+ { 0x004E, 0x0014 },
+ { 0x004F, 0x0014 },
+ { 0x0050, 0x0014 }
+};
+
+static const FrameControl k2IngameShapeAnimDataDOS4FrameControl[4] = {
+ { 0x0017, 0x0007 },
+ { 0x0051, 0x0007 },
+ { 0x0052, 0x0007 },
+ { 0x0053, 0x0007 }
+};
+
+static const FrameControl k2IngameShapeAnimDataDOS5FrameControl[4] = {
+ { 0x0016, 0x0014 },
+ { 0x0054, 0x0014 },
+ { 0x0055, 0x0014 },
+ { 0x0056, 0x0014 }
+};
+
+static const FrameControl k2IngameShapeAnimDataDOS6FrameControl[4] = {
+ { 0x003A, 0x003C },
+ { 0x0057, 0x003C },
+ { 0x0058, 0x003C },
+ { 0x0059, 0x003C }
+};
+
+static const FrameControl k2IngameShapeAnimDataDOS7FrameControl[4] = {
+ { 0x001A, 0x0032 },
+ { 0x005A, 0x0032 },
+ { 0x005B, 0x0032 },
+ { 0x005C, 0x0032 }
+};
+
+static const FrameControl k2IngameShapeAnimDataDOS8FrameControl[4] = {
+ { 0x006D, 0x000C },
+ { 0x006E, 0x000C },
+ { 0x006F, 0x000C },
+ { 0x0070, 0x000C }
+};
+
+static const FrameControl k2IngameShapeAnimDataDOS9FrameControl[4] = {
+ { 0x0079, 0x0008 },
+ { 0x007A, 0x0008 },
+ { 0x007B, 0x0008 },
+ { 0x007C, 0x0008 }
+};
+
+static const FrameControl k2IngameShapeAnimDataDOS10FrameControl[4] = {
+ { 0x007E, 0x0008 },
+ { 0x007F, 0x0008 },
+ { 0x0080, 0x0008 },
+ { 0x0081, 0x0008 }
+};
+
+static const FrameControl k2IngameShapeAnimDataDOS11FrameControl[6] = {
+ { 0x0091, 0x01A4 },
+ { 0x0092, 0x0004 },
+ { 0x0093, 0x0004 },
+ { 0x0094, 0x0004 },
+ { 0x0093, 0x0004 },
+ { 0x0092, 0x0004 }
+};
+
+static const FrameControl k2IngameShapeAnimDataDOS12FrameControl[4] = {
+ { 0x0095, 0x0006 },
+ { 0x0096, 0x0006 },
+ { 0x0097, 0x0006 },
+ { 0x0098, 0x0006 }
+};
+
+static const FrameControl k2IngameShapeAnimDataDOS13FrameControl[4] = {
+ { 0x0099, 0x002D },
+ { 0x009A, 0x002D },
+ { 0x009B, 0x002D },
+ { 0x009C, 0x002D }
+};
+
+static const ItemAnimDefinition k2IngameShapeAnimDataDOS[14] = {
+ { 6, 12, k2IngameShapeAnimDataDOS0FrameControl },
+ { 2, 6, k2IngameShapeAnimDataDOS1FrameControl },
+ { 11, 6, k2IngameShapeAnimDataDOS2FrameControl },
+ { 28, 4, k2IngameShapeAnimDataDOS3FrameControl },
+ { 23, 4, k2IngameShapeAnimDataDOS4FrameControl },
+ { 22, 4, k2IngameShapeAnimDataDOS5FrameControl },
+ { 58, 4, k2IngameShapeAnimDataDOS6FrameControl },
+ { 26, 4, k2IngameShapeAnimDataDOS7FrameControl },
+ { 109, 4, k2IngameShapeAnimDataDOS8FrameControl },
+ { 121, 4, k2IngameShapeAnimDataDOS9FrameControl },
+ { 126, 4, k2IngameShapeAnimDataDOS10FrameControl },
+ { 145, 6, k2IngameShapeAnimDataDOS11FrameControl },
+ { 149, 4, k2IngameShapeAnimDataDOS12FrameControl },
+ { 153, 4, k2IngameShapeAnimDataDOS13FrameControl }
+};
+
+static const ItemAnimDefinitionProvider k2IngameShapeAnimDataDOSProvider = { ARRAYSIZE(k2IngameShapeAnimDataDOS), k2IngameShapeAnimDataDOS };
+
diff --git a/devtools/create_kyradat/resources/hof_dos_cd.h b/devtools/create_kyradat/resources/hof_dos_cd.h
new file mode 100644
index 0000000000..17c401c254
--- /dev/null
+++ b/devtools/create_kyradat/resources/hof_dos_cd.h
@@ -0,0 +1,1035 @@
+static const char *const k2SeqplayPakFilesDOSCD[6] = {
+ "INTROGEN.PAK",
+ "TALKENG.PAK",
+ "TALKFRE.PAK",
+ "TALKGER.PAK",
+ "VOC.PAK",
+ "INTROTLK.PAK"
+};
+
+static const StringListProvider k2SeqplayPakFilesDOSCDProvider = { ARRAYSIZE(k2SeqplayPakFilesDOSCD), k2SeqplayPakFilesDOSCD };
+
+static const byte k2SeqplayCreditsDOSCD[2792] = {
+ 0x0D, 0x0D, 0x02, 0x54, 0x48, 0x45, 0x20, 0x50,
+ 0x4C, 0x41, 0x59, 0x45, 0x52, 0x53, 0x0D, 0x0D,
+ 0x03, 0x5A, 0x61, 0x6E, 0x74, 0x68, 0x69, 0x61,
+ 0x20, 0x20, 0x20, 0x05, 0x04, 0x42, 0x4F, 0x4E,
+ 0x4E, 0x49, 0x45, 0x20, 0x4C, 0x59, 0x4E, 0x4E,
+ 0x20, 0x54, 0x4F, 0x55, 0x50, 0x53, 0x0D, 0x03,
+ 0x46, 0x61, 0x75, 0x6E, 0x20, 0x20, 0x20, 0x05,
+ 0x04, 0x45, 0x4C, 0x45, 0x4E, 0x41, 0x20, 0x46,
+ 0x45, 0x52, 0x52, 0x41, 0x4E, 0x54, 0x45, 0x0D,
+ 0x03, 0x4D, 0x61, 0x72, 0x6B, 0x6F, 0x20, 0x20,
+ 0x20, 0x05, 0x04, 0x45, 0x52, 0x49, 0x43, 0x20,
+ 0x52, 0x41, 0x4E, 0x44, 0x41, 0x4C, 0x4C, 0x0D,
+ 0x03, 0x4E, 0x61, 0x72, 0x72, 0x61, 0x74, 0x6F,
+ 0x72, 0x20, 0x20, 0x20, 0x05, 0x04, 0x48, 0x69,
+ 0x73, 0x20, 0x52, 0x6F, 0x79, 0x61, 0x6C, 0x20,
+ 0x48, 0x69, 0x67, 0x68, 0x6E, 0x65, 0x73, 0x73,
+ 0x0D, 0x05, 0x04, 0x42, 0x52, 0x41, 0x4E, 0x44,
+ 0x4F, 0x4E, 0x2C, 0x20, 0x4B, 0x69, 0x6E, 0x67,
+ 0x20, 0x6F, 0x66, 0x0D, 0x05, 0x04, 0x4B, 0x79,
+ 0x72, 0x61, 0x6E, 0x64, 0x69, 0x61, 0x2C, 0x20,
+ 0x44, 0x65, 0x66, 0x65, 0x6E, 0x64, 0x65, 0x72,
+ 0x20, 0x6F, 0x66, 0x0D, 0x05, 0x04, 0x74, 0x68,
+ 0x65, 0x20, 0x4B, 0x79, 0x72, 0x61, 0x67, 0x65,
+ 0x6D, 0x2C, 0x20, 0x56, 0x61, 0x6E, 0x71, 0x75,
+ 0x69, 0x73, 0x68, 0x65, 0x72, 0x0D, 0x05, 0x04,
+ 0x6F, 0x66, 0x20, 0x4D, 0x61, 0x6C, 0x63, 0x6F,
+ 0x6C, 0x6D, 0x2C, 0x20, 0x50, 0x61, 0x74, 0x72,
+ 0x6F, 0x6E, 0x20, 0x6F, 0x66, 0x0D, 0x05, 0x04,
+ 0x74, 0x68, 0x65, 0x20, 0x41, 0x72, 0x74, 0x73,
+ 0x2C, 0x20, 0x57, 0x65, 0x61, 0x72, 0x65, 0x72,
+ 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x0D,
+ 0x05, 0x04, 0x53, 0x61, 0x6E, 0x64, 0x61, 0x6C,
+ 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x4D, 0x61,
+ 0x6A, 0x6F, 0x72, 0x69, 0x74, 0x79, 0x0D, 0x05,
+ 0x04, 0x53, 0x74, 0x6F, 0x63, 0x6B, 0x20, 0x4F,
+ 0x77, 0x6E, 0x65, 0x72, 0x20, 0x61, 0x6E, 0x64,
+ 0x20, 0x43, 0x45, 0x4F, 0x20, 0x6F, 0x66, 0x0D,
+ 0x05, 0x04, 0x54, 0x69, 0x6D, 0x62, 0x65, 0x72,
+ 0x6D, 0x69, 0x73, 0x74, 0x20, 0x43, 0x61, 0x73,
+ 0x75, 0x61, 0x6C, 0x0D, 0x05, 0x04, 0x46, 0x6F,
+ 0x6F, 0x74, 0x77, 0x65, 0x61, 0x72, 0x2C, 0x20,
+ 0x49, 0x6E, 0x63, 0x2E, 0x0D, 0x03, 0x54, 0x68,
+ 0x65, 0x20, 0x48, 0x61, 0x6E, 0x64, 0x20, 0x20,
+ 0x20, 0x05, 0x04, 0x4D, 0x49, 0x43, 0x48, 0x41,
+ 0x45, 0x4C, 0x20, 0x4B, 0x55, 0x43, 0x41, 0x4E,
+ 0x0D, 0x0D, 0x0D, 0x02, 0x44, 0x41, 0x52, 0x4B,
+ 0x4D, 0x4F, 0x4F, 0x52, 0x20, 0x53, 0x57, 0x41,
+ 0x4D, 0x50, 0x0D, 0x0D, 0x03, 0x48, 0x65, 0x72,
+ 0x62, 0x20, 0x20, 0x20, 0x20, 0x05, 0x04, 0x43,
+ 0x48, 0x41, 0x52, 0x4C, 0x45, 0x53, 0x20, 0x4D,
+ 0x4F, 0x53, 0x48, 0x45, 0x52, 0x0D, 0x03, 0x42,
+ 0x72, 0x65, 0x75, 0x74, 0x68, 0x20, 0x20, 0x20,
+ 0x20, 0x05, 0x04, 0x42, 0x52, 0x49, 0x41, 0x4E,
+ 0x20, 0x53, 0x54, 0x52, 0x4F, 0x4D, 0x0D, 0x03,
+ 0x53, 0x77, 0x61, 0x6D, 0x70, 0x20, 0x52, 0x61,
+ 0x74, 0x20, 0x20, 0x20, 0x20, 0x05, 0x04, 0x45,
+ 0x52, 0x49, 0x43, 0x20, 0x4D, 0x41, 0x52, 0x54,
+ 0x49, 0x4E, 0x0D, 0x03, 0x44, 0x72, 0x61, 0x67,
+ 0x6F, 0x6E, 0x66, 0x6C, 0x79, 0x20, 0x20, 0x20,
+ 0x20, 0x05, 0x04, 0x43, 0x4C, 0x49, 0x46, 0x46,
+ 0x20, 0x4C, 0x41, 0x57, 0x52, 0x45, 0x4E, 0x43,
+ 0x45, 0x0D, 0x03, 0x46, 0x69, 0x73, 0x68, 0x65,
+ 0x72, 0x6D, 0x61, 0x6E, 0x20, 0x20, 0x20, 0x20,
+ 0x05, 0x04, 0x45, 0x52, 0x49, 0x43, 0x20, 0x4D,
+ 0x41, 0x52, 0x54, 0x49, 0x4E, 0x0D, 0x03, 0x4F,
+ 0x74, 0x68, 0x65, 0x72, 0x20, 0x46, 0x69, 0x73,
+ 0x68, 0x65, 0x72, 0x6D, 0x61, 0x6E, 0x20, 0x20,
+ 0x20, 0x20, 0x05, 0x04, 0x52, 0x41, 0x59, 0x20,
+ 0x46, 0x41, 0x56, 0x45, 0x52, 0x4F, 0x0D, 0x03,
+ 0x54, 0x6F, 0x61, 0x64, 0x20, 0x20, 0x20, 0x20,
+ 0x05, 0x04, 0x4D, 0x41, 0x52, 0x43, 0x55, 0x53,
+ 0x20, 0x56, 0x41, 0x55, 0x47, 0x48, 0x4E, 0x0D,
+ 0x03, 0x4F, 0x74, 0x68, 0x65, 0x72, 0x20, 0x54,
+ 0x6F, 0x61, 0x64, 0x20, 0x20, 0x20, 0x20, 0x05,
+ 0x04, 0x42, 0x49, 0x4C, 0x4C, 0x20, 0x43, 0x4F,
+ 0x4C, 0x4C, 0x49, 0x4E, 0x53, 0x0D, 0x03, 0x54,
+ 0x68, 0x65, 0x20, 0x48, 0x61, 0x6E, 0x64, 0x20,
+ 0x20, 0x20, 0x20, 0x05, 0x04, 0x4D, 0x41, 0x52,
+ 0x49, 0x41, 0x20, 0x44, 0x45, 0x4C, 0x20, 0x4D,
+ 0x41, 0x52, 0x20, 0x4C, 0x45, 0x47, 0x47, 0x0D,
+ 0x0D, 0x0D, 0x02, 0x4D, 0x4F, 0x52, 0x4E, 0x49,
+ 0x4E, 0x47, 0x4D, 0x49, 0x53, 0x54, 0x20, 0x56,
+ 0x41, 0x4C, 0x4C, 0x45, 0x59, 0x0D, 0x0D, 0x03,
+ 0x46, 0x61, 0x72, 0x6D, 0x65, 0x72, 0x20, 0x47,
+ 0x72, 0x65, 0x65, 0x6E, 0x62, 0x65, 0x72, 0x72,
+ 0x79, 0x20, 0x20, 0x20, 0x20, 0x05, 0x04, 0x45,
+ 0x52, 0x49, 0x43, 0x20, 0x4D, 0x41, 0x52, 0x54,
+ 0x49, 0x4E, 0x0D, 0x03, 0x47, 0x68, 0x6F, 0x73,
+ 0x74, 0x20, 0x20, 0x20, 0x20, 0x05, 0x04, 0x4D,
+ 0x41, 0x52, 0x43, 0x55, 0x53, 0x20, 0x56, 0x41,
+ 0x55, 0x47, 0x48, 0x4E, 0x0D, 0x03, 0x53, 0x63,
+ 0x61, 0x72, 0x65, 0x63, 0x72, 0x6F, 0x77, 0x20,
+ 0x20, 0x20, 0x20, 0x05, 0x04, 0x4D, 0x41, 0x52,
+ 0x43, 0x55, 0x53, 0x20, 0x56, 0x41, 0x55, 0x47,
+ 0x48, 0x4E, 0x0D, 0x03, 0x46, 0x61, 0x74, 0x20,
+ 0x47, 0x75, 0x61, 0x72, 0x64, 0x20, 0x20, 0x20,
+ 0x20, 0x05, 0x04, 0x4D, 0x49, 0x43, 0x48, 0x41,
+ 0x45, 0x4C, 0x20, 0x4C, 0x45, 0x47, 0x47, 0x0D,
+ 0x03, 0x53, 0x6B, 0x69, 0x6E, 0x6E, 0x79, 0x20,
+ 0x47, 0x75, 0x61, 0x72, 0x64, 0x20, 0x20, 0x20,
+ 0x20, 0x05, 0x04, 0x52, 0x49, 0x43, 0x4B, 0x20,
+ 0x22, 0x43, 0x4F, 0x43, 0x4F, 0x22, 0x20, 0x47,
+ 0x55, 0x53, 0x48, 0x0D, 0x03, 0x54, 0x68, 0x65,
+ 0x20, 0x48, 0x61, 0x6E, 0x64, 0x20, 0x20, 0x20,
+ 0x20, 0x05, 0x04, 0x4D, 0x49, 0x43, 0x48, 0x41,
+ 0x45, 0x4C, 0x20, 0x47, 0x52, 0x41, 0x59, 0x46,
+ 0x4F, 0x52, 0x44, 0x0D, 0x0D, 0x0D, 0x02, 0x54,
+ 0x4F, 0x57, 0x4E, 0x45, 0x20, 0x4F, 0x46, 0x20,
+ 0x48, 0x49, 0x47, 0x48, 0x4D, 0x4F, 0x4F, 0x4E,
+ 0x0D, 0x0D, 0x03, 0x53, 0x68, 0x65, 0x72, 0x69,
+ 0x66, 0x66, 0x20, 0x20, 0x20, 0x20, 0x05, 0x04,
+ 0x52, 0x41, 0x59, 0x20, 0x46, 0x41, 0x56, 0x45,
+ 0x52, 0x4F, 0x0D, 0x03, 0x43, 0x61, 0x70, 0x27,
+ 0x6E, 0x20, 0x42, 0x6F, 0x62, 0x20, 0x20, 0x20,
+ 0x20, 0x05, 0x04, 0x42, 0x52, 0x49, 0x41, 0x4E,
+ 0x20, 0x53, 0x54, 0x52, 0x4F, 0x4D, 0x0D, 0x03,
+ 0x4F, 0x63, 0x74, 0x6F, 0x70, 0x75, 0x73, 0x20,
+ 0x20, 0x20, 0x20, 0x05, 0x04, 0x43, 0x4C, 0x49,
+ 0x46, 0x46, 0x20, 0x4C, 0x41, 0x57, 0x52, 0x45,
+ 0x4E, 0x43, 0x45, 0x0D, 0x03, 0x50, 0x69, 0x72,
+ 0x61, 0x74, 0x65, 0x20, 0x20, 0x20, 0x20, 0x05,
+ 0x04, 0x44, 0x4F, 0x55, 0x47, 0x20, 0x42, 0x41,
+ 0x4B, 0x45, 0x52, 0x0D, 0x03, 0x4F, 0x74, 0x68,
+ 0x65, 0x72, 0x20, 0x50, 0x69, 0x72, 0x61, 0x74,
+ 0x65, 0x20, 0x20, 0x20, 0x20, 0x05, 0x04, 0x45,
+ 0x52, 0x49, 0x43, 0x20, 0x4D, 0x41, 0x52, 0x54,
+ 0x49, 0x4E, 0x0D, 0x03, 0x41, 0x6E, 0x6F, 0x74,
+ 0x68, 0x65, 0x72, 0x20, 0x50, 0x69, 0x72, 0x61,
+ 0x74, 0x65, 0x20, 0x20, 0x20, 0x20, 0x05, 0x04,
+ 0x45, 0x52, 0x49, 0x43, 0x20, 0x52, 0x41, 0x4E,
+ 0x44, 0x41, 0x4C, 0x4C, 0x0D, 0x03, 0x53, 0x71,
+ 0x75, 0x61, 0x77, 0x6B, 0x79, 0x20, 0x74, 0x68,
+ 0x65, 0x20, 0x50, 0x61, 0x72, 0x72, 0x6F, 0x74,
+ 0x20, 0x20, 0x20, 0x20, 0x05, 0x04, 0x43, 0x4C,
+ 0x49, 0x46, 0x46, 0x20, 0x4C, 0x41, 0x57, 0x52,
+ 0x45, 0x4E, 0x43, 0x45, 0x0D, 0x03, 0x53, 0x61,
+ 0x69, 0x6C, 0x6F, 0x72, 0x20, 0x20, 0x20, 0x20,
+ 0x05, 0x04, 0x54, 0x49, 0x4D, 0x20, 0x43, 0x4C,
+ 0x41, 0x52, 0x4B, 0x0D, 0x03, 0x4F, 0x74, 0x68,
+ 0x65, 0x72, 0x20, 0x53, 0x61, 0x69, 0x6C, 0x6F,
+ 0x72, 0x20, 0x20, 0x20, 0x20, 0x05, 0x04, 0x4D,
+ 0x41, 0x52, 0x43, 0x55, 0x53, 0x20, 0x56, 0x41,
+ 0x55, 0x47, 0x48, 0x4E, 0x0D, 0x03, 0x54, 0x68,
+ 0x65, 0x20, 0x48, 0x61, 0x6E, 0x64, 0x20, 0x20,
+ 0x20, 0x20, 0x05, 0x04, 0x4A, 0x45, 0x4E, 0x4E,
+ 0x59, 0x20, 0x4B, 0x55, 0x43, 0x41, 0x4E, 0x0D,
+ 0x0D, 0x0D, 0x02, 0x56, 0x4F, 0x4C, 0x43, 0x41,
+ 0x4E, 0x49, 0x41, 0x0D, 0x0D, 0x03, 0x4A, 0x65,
+ 0x73, 0x73, 0x69, 0x63, 0x61, 0x20, 0x20, 0x20,
+ 0x20, 0x05, 0x04, 0x4A, 0x55, 0x4C, 0x49, 0x45,
+ 0x20, 0x43, 0x48, 0x49, 0x52, 0x49, 0x4C, 0x41,
+ 0x0D, 0x03, 0x53, 0x6D, 0x61, 0x72, 0x6D, 0x79,
+ 0x20, 0x20, 0x20, 0x20, 0x05, 0x04, 0x44, 0x4F,
+ 0x55, 0x47, 0x20, 0x42, 0x41, 0x4B, 0x45, 0x52,
+ 0x0D, 0x03, 0x42, 0x75, 0x72, 0x65, 0x61, 0x75,
+ 0x63, 0x72, 0x61, 0x74, 0x20, 0x20, 0x20, 0x20,
+ 0x05, 0x04, 0x45, 0x52, 0x49, 0x43, 0x20, 0x52,
+ 0x41, 0x4E, 0x44, 0x41, 0x4C, 0x4C, 0x0D, 0x03,
+ 0x42, 0x75, 0x72, 0x65, 0x61, 0x75, 0x63, 0x72,
+ 0x61, 0x74, 0x72, 0x65, 0x73, 0x73, 0x20, 0x20,
+ 0x20, 0x20, 0x05, 0x04, 0x4A, 0x55, 0x4C, 0x49,
+ 0x45, 0x20, 0x42, 0x41, 0x4C, 0x53, 0x41, 0x4D,
+ 0x4F, 0x0D, 0x03, 0x4D, 0x61, 0x20, 0x20, 0x20,
+ 0x20, 0x05, 0x04, 0x44, 0x45, 0x4E, 0x49, 0x53,
+ 0x45, 0x20, 0x53, 0x43, 0x48, 0x41, 0x46, 0x45,
+ 0x52, 0x0D, 0x03, 0x50, 0x61, 0x20, 0x20, 0x20,
+ 0x20, 0x05, 0x04, 0x4B, 0x45, 0x4E, 0x4E, 0x45,
+ 0x54, 0x48, 0x20, 0x4A, 0x2E, 0x20, 0x4B, 0x55,
+ 0x43, 0x41, 0x4E, 0x0D, 0x03, 0x54, 0x68, 0x65,
+ 0x20, 0x48, 0x61, 0x6E, 0x64, 0x20, 0x20, 0x20,
+ 0x20, 0x05, 0x04, 0x52, 0x41, 0x4D, 0x49, 0x4E,
+ 0x20, 0x46, 0x41, 0x54, 0x48, 0x49, 0x45, 0x0D,
+ 0x0D, 0x0D, 0x02, 0x45, 0x4E, 0x43, 0x48, 0x41,
+ 0x4E, 0x54, 0x45, 0x44, 0x20, 0x46, 0x4F, 0x52,
+ 0x45, 0x53, 0x54, 0x0D, 0x0D, 0x03, 0x4B, 0x6E,
+ 0x69, 0x67, 0x68, 0x74, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x05, 0x04, 0x45, 0x52, 0x49, 0x43, 0x20,
+ 0x4D, 0x41, 0x52, 0x54, 0x49, 0x4E, 0x0D, 0x03,
+ 0x50, 0x65, 0x74, 0x72, 0x69, 0x66, 0x69, 0x65,
+ 0x64, 0x20, 0x54, 0x72, 0x65, 0x65, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x05, 0x04, 0x44, 0x4F, 0x55,
+ 0x47, 0x20, 0x42, 0x41, 0x4B, 0x45, 0x52, 0x0D,
+ 0x03, 0x55, 0x6E, 0x69, 0x6F, 0x6E, 0x20, 0x53,
+ 0x71, 0x75, 0x69, 0x72, 0x72, 0x65, 0x6C, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x05, 0x04, 0x54, 0x49,
+ 0x4D, 0x20, 0x43, 0x4C, 0x41, 0x52, 0x4B, 0x0D,
+ 0x03, 0x4D, 0x79, 0x73, 0x74, 0x69, 0x63, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x05, 0x04, 0x43, 0x48,
+ 0x41, 0x52, 0x4C, 0x45, 0x53, 0x20, 0x4D, 0x4F,
+ 0x53, 0x48, 0x45, 0x52, 0x0D, 0x03, 0x4F, 0x74,
+ 0x68, 0x65, 0x72, 0x20, 0x4D, 0x79, 0x73, 0x74,
+ 0x69, 0x63, 0x20, 0x20, 0x20, 0x20, 0x20, 0x05,
+ 0x04, 0x43, 0x4F, 0x4E, 0x4E, 0x45, 0x52, 0x20,
+ 0x46, 0x52, 0x45, 0x46, 0x46, 0x20, 0x43, 0x4F,
+ 0x43, 0x48, 0x52, 0x41, 0x4E, 0x0D, 0x03, 0x54,
+ 0x68, 0x65, 0x20, 0x48, 0x61, 0x6E, 0x64, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x05, 0x04, 0x4C, 0x59,
+ 0x4E, 0x44, 0x41, 0x20, 0x57, 0x41, 0x53, 0x4B,
+ 0x4F, 0x4D, 0x0D, 0x0D, 0x0D, 0x02, 0x41, 0x4C,
+ 0x50, 0x49, 0x4E, 0x49, 0x41, 0x0D, 0x0D, 0x03,
+ 0x41, 0x62, 0x6F, 0x6D, 0x69, 0x6E, 0x61, 0x62,
+ 0x6C, 0x65, 0x20, 0x53, 0x6E, 0x6F, 0x77, 0x6D,
+ 0x61, 0x6E, 0x20, 0x20, 0x20, 0x20, 0x20, 0x05,
+ 0x04, 0x44, 0x4F, 0x55, 0x47, 0x20, 0x42, 0x41,
+ 0x4B, 0x45, 0x52, 0x0D, 0x03, 0x4D, 0x6F, 0x6D,
+ 0x6D, 0x79, 0x20, 0x20, 0x20, 0x20, 0x20, 0x05,
+ 0x04, 0x44, 0x45, 0x4E, 0x49, 0x53, 0x45, 0x20,
+ 0x53, 0x43, 0x48, 0x41, 0x46, 0x45, 0x52, 0x0D,
+ 0x03, 0x42, 0x61, 0x62, 0x79, 0x20, 0x41, 0x6C,
+ 0x62, 0x65, 0x72, 0x74, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x05, 0x04, 0x54, 0x48, 0x45, 0x4F, 0x44,
+ 0x4F, 0x52, 0x45, 0x20, 0x4D, 0x4F, 0x52, 0x52,
+ 0x49, 0x53, 0x0D, 0x03, 0x48, 0x75, 0x6E, 0x74,
+ 0x65, 0x72, 0x20, 0x20, 0x20, 0x20, 0x20, 0x05,
+ 0x04, 0x42, 0x49, 0x4C, 0x4C, 0x20, 0x43, 0x4F,
+ 0x4C, 0x4C, 0x49, 0x4E, 0x53, 0x0D, 0x03, 0x4F,
+ 0x74, 0x68, 0x65, 0x72, 0x20, 0x48, 0x75, 0x6E,
+ 0x74, 0x65, 0x72, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x05, 0x04, 0x42, 0x4F, 0x42, 0x20, 0x42, 0x4C,
+ 0x4F, 0x4D, 0x47, 0x52, 0x45, 0x4E, 0x0D, 0x03,
+ 0x46, 0x6F, 0x6F, 0x74, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x05, 0x04, 0x53, 0x50, 0x45, 0x45, 0x44,
+ 0x59, 0x20, 0x44, 0x41, 0x57, 0x4E, 0x20, 0x48,
+ 0x55, 0x4E, 0x54, 0x5A, 0x49, 0x4E, 0x47, 0x45,
+ 0x52, 0x0D, 0x03, 0x53, 0x74, 0x75, 0x6E, 0x74,
+ 0x20, 0x48, 0x61, 0x6E, 0x64, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x05, 0x04, 0x44, 0x41, 0x4E, 0x49,
+ 0x45, 0x4C, 0x20, 0x4B, 0x55, 0x43, 0x41, 0x4E,
+ 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
+ 0x02, 0x54, 0x48, 0x45, 0x20, 0x48, 0x41, 0x4E,
+ 0x44, 0x20, 0x4F, 0x46, 0x20, 0x46, 0x41, 0x54,
+ 0x45, 0x0D, 0x02, 0x54, 0x45, 0x41, 0x4D, 0x20,
+ 0x43, 0x44, 0x0D, 0x0D, 0x0D, 0x0D, 0x02, 0x43,
+ 0x6F, 0x64, 0x65, 0x6A, 0x61, 0x6D, 0x6D, 0x65,
+ 0x72, 0x73, 0x0D, 0x02, 0x4D, 0x49, 0x4B, 0x45,
+ 0x20, 0x61, 0x6E, 0x64, 0x20, 0x4D, 0x49, 0x4B,
+ 0x45, 0x0D, 0x0D, 0x02, 0x56, 0x6F, 0x63, 0x61,
+ 0x6C, 0x20, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74,
+ 0x69, 0x6F, 0x6E, 0x20, 0x62, 0x79, 0x0D, 0x02,
+ 0x4A, 0x4F, 0x45, 0x20, 0x4B, 0x55, 0x43, 0x41,
+ 0x4E, 0x0D, 0x0D, 0x02, 0x44, 0x69, 0x67, 0x69,
+ 0x74, 0x61, 0x6C, 0x20, 0x53, 0x61, 0x6D, 0x70,
+ 0x6C, 0x69, 0x6E, 0x67, 0x20, 0x62, 0x79, 0x0D,
+ 0x02, 0x50, 0x41, 0x54, 0x20, 0x43, 0x4F, 0x4C,
+ 0x4C, 0x49, 0x4E, 0x53, 0x20, 0x61, 0x6E, 0x64,
+ 0x20, 0x44, 0x57, 0x49, 0x47, 0x48, 0x54, 0x20,
+ 0x4F, 0x4B, 0x41, 0x48, 0x41, 0x52, 0x41, 0x0D,
+ 0x0D, 0x02, 0x41, 0x75, 0x64, 0x69, 0x6F, 0x20,
+ 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6F,
+ 0x6E, 0x20, 0x62, 0x79, 0x0D, 0x02, 0x50, 0x41,
+ 0x55, 0x4C, 0x20, 0x4D, 0x55, 0x44, 0x52, 0x41,
+ 0x0D, 0x0D, 0x02, 0x52, 0x65, 0x63, 0x6F, 0x72,
+ 0x64, 0x65, 0x64, 0x20, 0x61, 0x6E, 0x64, 0x20,
+ 0x45, 0x6E, 0x67, 0x69, 0x6E, 0x65, 0x65, 0x72,
+ 0x65, 0x64, 0x20, 0x62, 0x79, 0x0D, 0x02, 0x54,
+ 0x4F, 0x54, 0x4F, 0x20, 0x5A, 0x41, 0x52, 0x41,
+ 0x20, 0x61, 0x74, 0x20, 0x4D, 0x69, 0x64, 0x69,
+ 0x57, 0x6F, 0x72, 0x6B, 0x73, 0x0D, 0x0D, 0x02,
+ 0x53, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6C, 0x20,
+ 0x54, 0x65, 0x63, 0x68, 0x6E, 0x6F, 0x2D, 0x57,
+ 0x69, 0x7A, 0x61, 0x72, 0x64, 0x72, 0x79, 0x20,
+ 0x62, 0x79, 0x0D, 0x02, 0x53, 0x43, 0x4F, 0x54,
+ 0x54, 0x20, 0x42, 0x4F, 0x57, 0x45, 0x4E, 0x2C,
+ 0x20, 0x44, 0x41, 0x56, 0x49, 0x44, 0x20, 0x44,
+ 0x45, 0x54, 0x54, 0x4D, 0x45, 0x52, 0x2C, 0x0D,
+ 0x02, 0x61, 0x6E, 0x64, 0x20, 0x4A, 0x4F, 0x45,
+ 0x20, 0x42, 0x4F, 0x53, 0x54, 0x49, 0x43, 0x0D,
+ 0x0D, 0x02, 0x53, 0x75, 0x70, 0x65, 0x72, 0x76,
+ 0x69, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x50, 0x72,
+ 0x6F, 0x64, 0x75, 0x63, 0x65, 0x72, 0x0D, 0x02,
+ 0x52, 0x49, 0x43, 0x4B, 0x20, 0x47, 0x55, 0x53,
+ 0x48, 0x0D, 0x0D, 0x02, 0x50, 0x72, 0x6F, 0x64,
+ 0x75, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x41,
+ 0x73, 0x73, 0x69, 0x73, 0x74, 0x61, 0x6E, 0x74,
+ 0x0D, 0x02, 0x44, 0x41, 0x56, 0x49, 0x44, 0x20,
+ 0x50, 0x4F, 0x4B, 0x4F, 0x52, 0x4E, 0x59, 0x0D,
+ 0x0D, 0x02, 0x50, 0x72, 0x6F, 0x64, 0x75, 0x63,
+ 0x74, 0x20, 0x43, 0x6F, 0x6F, 0x72, 0x64, 0x69,
+ 0x6E, 0x61, 0x74, 0x6F, 0x72, 0x0D, 0x02, 0x4A,
+ 0x45, 0x46, 0x46, 0x20, 0x5A, 0x49, 0x45, 0x4C,
+ 0x0D, 0x0D, 0x02, 0x51, 0x75, 0x61, 0x6C, 0x69,
+ 0x74, 0x79, 0x20, 0x41, 0x73, 0x73, 0x75, 0x72,
+ 0x61, 0x6E, 0x63, 0x65, 0x0D, 0x02, 0x47, 0x4C,
+ 0x45, 0x4E, 0x4E, 0x20, 0x22, 0x47, 0x4C, 0x45,
+ 0x4E, 0x4E, 0x42, 0x4F, 0x22, 0x20, 0x53, 0x50,
+ 0x45, 0x52, 0x52, 0x59, 0x0D, 0x02, 0x42, 0x52,
+ 0x41, 0x44, 0x20, 0x22, 0x53, 0x54, 0x49, 0x4E,
+ 0x47, 0x22, 0x20, 0x52, 0x4F, 0x42, 0x45, 0x52,
+ 0x54, 0x53, 0x0D, 0x02, 0x43, 0x48, 0x41, 0x44,
+ 0x20, 0x53, 0x4F, 0x41, 0x52, 0x45, 0x53, 0x0D,
+ 0x02, 0x43, 0x48, 0x52, 0x49, 0x53, 0x20, 0x4D,
+ 0x63, 0x46, 0x41, 0x52, 0x4C, 0x41, 0x4E, 0x44,
+ 0x0D, 0x02, 0x43, 0x48, 0x52, 0x49, 0x53, 0x20,
+ 0x22, 0x44, 0x4F, 0x4F, 0x4D, 0x22, 0x20, 0x52,
+ 0x55, 0x42, 0x59, 0x4F, 0x52, 0x0D, 0x02, 0x44,
+ 0x41, 0x56, 0x45, 0x20, 0x4D, 0x41, 0x58, 0x45,
+ 0x59, 0x0D, 0x02, 0x4A, 0x45, 0x46, 0x46, 0x20,
+ 0x42, 0x55, 0x43, 0x43, 0x45, 0x4C, 0x4C, 0x41,
+ 0x54, 0x4F, 0x0D, 0x02, 0x4A, 0x45, 0x53, 0x53,
+ 0x45, 0x20, 0x22, 0x4C, 0x41, 0x52, 0x47, 0x45,
+ 0x59, 0x22, 0x20, 0x43, 0x4C, 0x45, 0x4D, 0x49,
+ 0x54, 0x0D, 0x02, 0x4A, 0x4F, 0x48, 0x4E, 0x20,
+ 0x53, 0x57, 0x45, 0x45, 0x4E, 0x59, 0x0D, 0x02,
+ 0x4A, 0x4F, 0x4E, 0x20, 0x57, 0x49, 0x4C, 0x4C,
+ 0x49, 0x41, 0x4D, 0x53, 0x0D, 0x02, 0x4B, 0x45,
+ 0x4E, 0x4E, 0x45, 0x54, 0x48, 0x20, 0x22, 0x45,
+ 0x58, 0x54, 0x45, 0x52, 0x4D, 0x49, 0x4E, 0x41,
+ 0x54, 0x4F, 0x52, 0x22, 0x20, 0x44, 0x55, 0x4E,
+ 0x4E, 0x45, 0x0D, 0x02, 0x4D, 0x49, 0x4B, 0x45,
+ 0x20, 0x22, 0x44, 0x41, 0x52, 0x4B, 0x4E, 0x49,
+ 0x47, 0x48, 0x54, 0x22, 0x20, 0x4C, 0x49, 0x47,
+ 0x48, 0x54, 0x4E, 0x45, 0x52, 0x0D, 0x02, 0x4D,
+ 0x49, 0x54, 0x43, 0x48, 0x20, 0x46, 0x45, 0x4C,
+ 0x44, 0x4D, 0x41, 0x4E, 0x0D, 0x02, 0x50, 0x41,
+ 0x55, 0x4C, 0x20, 0x53, 0x48, 0x4F, 0x45, 0x4E,
+ 0x45, 0x52, 0x0D, 0x02, 0x53, 0x43, 0x4F, 0x54,
+ 0x54, 0x20, 0x4D, 0x41, 0x4E, 0x4E, 0x49, 0x4E,
+ 0x47, 0x0D, 0x02, 0x54, 0x49, 0x4D, 0x20, 0x22,
+ 0x44, 0x41, 0x52, 0x4B, 0x57, 0x4F, 0x4C, 0x46,
+ 0x22, 0x20, 0x46, 0x52, 0x49, 0x54, 0x5A, 0x0D,
+ 0x02, 0x54, 0x52, 0x4F, 0x59, 0x20, 0x4C, 0x45,
+ 0x4F, 0x4E, 0x41, 0x52, 0x44, 0x0D, 0x0D, 0x02,
+ 0x53, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6C, 0x20,
+ 0x54, 0x68, 0x61, 0x6E, 0x6B, 0x73, 0x20, 0x74,
+ 0x6F, 0x0D, 0x02, 0x42, 0x41, 0x52, 0x42, 0x41,
+ 0x52, 0x41, 0x20, 0x52, 0x49, 0x43, 0x48, 0x4D,
+ 0x41, 0x4E, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x02, 0x41, 0x6E, 0x79, 0x20, 0x72,
+ 0x65, 0x73, 0x65, 0x6D, 0x62, 0x6C, 0x61, 0x6E,
+ 0x63, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68,
+ 0x69, 0x73, 0x20, 0x67, 0x61, 0x6D, 0x65, 0x20,
+ 0x74, 0x6F, 0x20, 0x0D, 0x02, 0x70, 0x65, 0x72,
+ 0x73, 0x6F, 0x6E, 0x73, 0x20, 0x6F, 0x72, 0x20,
+ 0x61, 0x70, 0x70, 0x65, 0x6E, 0x64, 0x61, 0x67,
+ 0x65, 0x73, 0x2C, 0x20, 0x6C, 0x69, 0x76, 0x69,
+ 0x6E, 0x67, 0x20, 0x6F, 0x72, 0x0D, 0x02, 0x64,
+ 0x65, 0x61, 0x64, 0x2C, 0x20, 0x69, 0x73, 0x20,
+ 0x70, 0x75, 0x72, 0x65, 0x6C, 0x79, 0x20, 0x63,
+ 0x6F, 0x69, 0x6E, 0x63, 0x69, 0x64, 0x65, 0x6E,
+ 0x74, 0x61, 0x6C, 0x2E, 0x0D, 0x0D, 0x02, 0x43,
+ 0x6F, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74,
+ 0x20, 0x28, 0x43, 0x29, 0x20, 0x31, 0x39, 0x39,
+ 0x34, 0x2C, 0x20, 0x57, 0x65, 0x73, 0x74, 0x77,
+ 0x6F, 0x6F, 0x64, 0x20, 0x53, 0x74, 0x75, 0x64,
+ 0x69, 0x6F, 0x73, 0x2C, 0x20, 0x49, 0x6E, 0x63,
+ 0x2E, 0x0D, 0x02, 0x41, 0x6C, 0x6C, 0x20, 0x72,
+ 0x69, 0x67, 0x68, 0x74, 0x73, 0x20, 0x72, 0x65,
+ 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x2E, 0x0D,
+ 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x00
+};
+
+static const ByteProvider k2SeqplayCreditsDOSCDProvider = { ARRAYSIZE(k2SeqplayCreditsDOSCD), k2SeqplayCreditsDOSCD };
+
+static const char *const k2SeqplayCreditsSpecialDOSCD[2] = {
+ "Codejammers",
+ "MIKE and MIKE"
+};
+
+static const StringListProvider k2SeqplayCreditsSpecialDOSCDProvider = { ARRAYSIZE(k2SeqplayCreditsSpecialDOSCD), k2SeqplayCreditsSpecialDOSCD };
+
+static const char *const k2SeqplaySfxFilesDOSCD[48] = {
+ "eintro1",
+ "eintro2",
+ "eintro3",
+ "eintro4",
+ "eintro5",
+ "eintro6",
+ "eintro7",
+ "eintro8",
+ "eintro9",
+ "eintro10",
+ "eintro11",
+ "eintro12",
+ "eglow",
+ "0000210",
+ "0000130",
+ "0000180",
+ "0000160",
+ "asong",
+ "crowcaw",
+ "eyerub2",
+ "pluck3",
+ "rodnreel",
+ "frog1",
+ "scavmov2",
+ "lambmom3",
+ "lambkid1",
+ "thunder2",
+ "thunder3",
+ "wind6",
+ "h2odrop2",
+ "gasleak",
+ "polgulp1",
+ "hndslap1",
+ "burp1",
+ "0000220",
+ "0000230",
+ "0000250",
+ "0000260",
+ "0000270",
+ "0000280",
+ "0000290",
+ "0000300",
+ "0000310",
+ "0000320",
+ "0000330",
+ "scream1",
+ "theend",
+ ""
+};
+
+static const StringListProvider k2SeqplaySfxFilesDOSCDProvider = { ARRAYSIZE(k2SeqplaySfxFilesDOSCD), k2SeqplaySfxFilesDOSCD };
+
+static const HoFSequence k2SeqplaySeqDataDOSCDSeq[16] = {
+ { 0x0002, "", "virgin.cps", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x0001, 0x0064, 0, 0, 0x001E },
+ { 0x0001, "westwood.wsa", "", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x0012, 0x0006, 0, 0, 0x00A0 },
+ { 0x0001, "title.wsa", "", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x001A, 0x0006, 0, 0, 0x000A },
+ { 0x0002, "", "over.cps", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x0001, 0x0E10, 0, 0, 0x001E },
+ { 0x0002, "", "library.cps", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x0001, 0x0E10, 0, 0, 0x001E },
+ { 0x0002, "", "hand.cps", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x0001, 0x0E10, 0, 0, 0x005A },
+ { 0x0001, "point.wsa", "", 4, 8, 0xFFFF, 0xFFFF, 0x0000, 0x0026, 0x0007, 0, 0, 0x00C8 },
+ { 0x0001, "zanfaun.wsa", "", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x0033, 0x0010, 0, 0, 0x00F0 },
+ { 0x0001, "funters.wsa", "", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x001B, 0x000C, 0, 0, 0x001E },
+ { 0x0001, "ferb.wsa", "", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x001B, 0x0010, 0, 0, 0x001E },
+ { 0x0001, "fish.wsa", "", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x0038, 0x000C, 0, 0, 0x001E },
+ { 0x0001, "fheep.wsa", "", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x000B, 0x000C, 0, 0, 0x001E },
+ { 0x0001, "farmer.wsa", "", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x0016, 0x000C, 0, 0, 0x0064 },
+ { 0x0001, "fuards.wsa", "", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x0018, 0x000E, 0, 0, 0x001E },
+ { 0x0001, "firates.wsa", "", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x0025, 0x000C, 0, 0, 0x001E },
+ { 0x0001, "frash.wsa", "", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x000C, 0x000A, 0, 0, 0x0154 }
+};
+
+static const FrameControl k2SeqplaySeqDataDOSCDSeqNestedControl7[18] = {
+ { 0, 10 },
+ { 1, 10 },
+ { 2, 10 },
+ { 3, 10 },
+ { 4, 10 },
+ { 5, 10 },
+ { 6, 10 },
+ { 7, 10 },
+ { 8, 10 },
+ { 9, 10 },
+ { 8, 10 },
+ { 7, 10 },
+ { 6, 10 },
+ { 5, 40 },
+ { 4, 10 },
+ { 3, 10 },
+ { 2, 10 },
+ { 1, 10 }
+};
+
+static const FrameControl k2SeqplaySeqDataDOSCDSeqNestedControl10[17] = {
+ { 0, 6 },
+ { 1, 6 },
+ { 2, 6 },
+ { 3, 6 },
+ { 4, 6 },
+ { 5, 6 },
+ { 6, 6 },
+ { 7, 6 },
+ { 8, 6 },
+ { 9, 6 },
+ { 10, 6 },
+ { 11, 6 },
+ { 11, 12 },
+ { 12, 12 },
+ { 13, 12 },
+ { 12, 12 },
+ { 11, 12 }
+};
+
+static const FrameControl k2SeqplaySeqDataDOSCDSeqNestedControl11[9] = {
+ { 0, 6 },
+ { 1, 6 },
+ { 2, 6 },
+ { 3, 6 },
+ { 4, 6 },
+ { 3, 6 },
+ { 4, 6 },
+ { 5, 64 },
+ { 5, 6 }
+};
+
+static const FrameControl k2SeqplaySeqDataDOSCDSeqNestedControl12[16] = {
+ { 0, 6 },
+ { 1, 6 },
+ { 0, 6 },
+ { 1, 6 },
+ { 0, 6 },
+ { 1, 6 },
+ { 0, 6 },
+ { 1, 6 },
+ { 0, 6 },
+ { 1, 6 },
+ { 0, 6 },
+ { 1, 6 },
+ { 0, 6 },
+ { 1, 6 },
+ { 0, 6 },
+ { 1, 6 }
+};
+
+static const FrameControl k2SeqplaySeqDataDOSCDSeqNestedControl13[5] = {
+ { 0, 6 },
+ { 1, 6 },
+ { 2, 6 },
+ { 1, 6 },
+ { 0, 1 }
+};
+
+static const FrameControl k2SeqplaySeqDataDOSCDSeqNestedControl14[8] = {
+ { 0, 6 },
+ { 1, 6 },
+ { 2, 6 },
+ { 3, 6 },
+ { 4, 6 },
+ { 3, 6 },
+ { 2, 6 },
+ { 1, 6 }
+};
+
+static const HoFNestedSequence k2SeqplaySeqDataDOSCDSeqNested[15] = {
+ { 0x000C, "figgle.wsa", 0, 3, 60, 0, 0, 0, NULL, 0, 0 },
+ { 0x0008, "over1.wsa", 0, 10, 10, 0, 0, 0, NULL, 0, 0 },
+ { 0x0008, "over2.wsa", 0, 11, 9, 0, 0, 0, NULL, 0, 0 },
+ { 0x0008, "forest.wsa", 0, 22, 6, 0, 0, 0, NULL, 1, 3 },
+ { 0x0008, "dragon.wsa", 0, 11, 6, 0, 0, 0, NULL, 2, 0 },
+ { 0x0002, "darm.wsa", 0, 19, 9, 0, 0, 0, NULL, 4, 0 },
+ { 0x0002, "library.wsa", 0, 33, 9, 0, 0, 0, NULL, 4, 0 },
+ { 0x002A, "library.wsa", 0, 18, 9, 0, 0, ARRAYSIZE(k2SeqplaySeqDataDOSCDSeqNestedControl7), k2SeqplaySeqDataDOSCDSeqNestedControl7, 0, 0 },
+ { 0x000A, "marco.wsa", 0, 37, 9, 0, 0, 0, NULL, 4, 0 },
+ { 0x0002, "hand1a.wsa", 0, 34, 9, 0, 0, 0, NULL, 0, 0 },
+ { 0x002A, "hand1b.wsa", 0, 16, 9, 0, 0, ARRAYSIZE(k2SeqplaySeqDataDOSCDSeqNestedControl10), k2SeqplaySeqDataDOSCDSeqNestedControl10, 0, 0 },
+ { 0x002A, "hand1c.wsa", 0, 9, 9, 0, 0, ARRAYSIZE(k2SeqplaySeqDataDOSCDSeqNestedControl11), k2SeqplaySeqDataDOSCDSeqNestedControl11, 0, 0 },
+ { 0x002C, "hand2.wsa", 0, 2, 9, 0, 0, ARRAYSIZE(k2SeqplaySeqDataDOSCDSeqNestedControl12), k2SeqplaySeqDataDOSCDSeqNestedControl12, 5, 0 },
+ { 0x002C, "hand3.wsa", 0, 4, 9, 0, 0, ARRAYSIZE(k2SeqplaySeqDataDOSCDSeqNestedControl13), k2SeqplaySeqDataDOSCDSeqNestedControl13, 5, 0 },
+ { 0x002C, "hand4.wsa", 0, 8, 9, 0, 0, ARRAYSIZE(k2SeqplaySeqDataDOSCDSeqNestedControl14), k2SeqplaySeqDataDOSCDSeqNestedControl14, 5, 0 }
+};
+
+static const HoFSequenceProvider k2SeqplaySeqDataDOSCDProvider = { ARRAYSIZE(k2SeqplaySeqDataDOSCDSeq), k2SeqplaySeqDataDOSCDSeq, ARRAYSIZE(k2SeqplaySeqDataDOSCDSeqNested), k2SeqplaySeqDataDOSCDSeqNested };
+
+static const char *const k2SeqplayIntroTracksDOSCD[1] = {
+ "k2intro"
+};
+
+static const StringListProvider k2SeqplayIntroTracksDOSCDProvider = { ARRAYSIZE(k2SeqplayIntroTracksDOSCD), k2SeqplayIntroTracksDOSCD };
+
+static const char *const k2SeqplayFinaleTracksDOSCD[1] = {
+ "k2finale"
+};
+
+static const StringListProvider k2SeqplayFinaleTracksDOSCDProvider = { ARRAYSIZE(k2SeqplayFinaleTracksDOSCD), k2SeqplayFinaleTracksDOSCD };
+
+static const char *const k2IngameSfxFilesDOSCD[178] = {
+ "ALCHEMY2",
+ "BIGSLAM",
+ "BITE1",
+ "BLINK1",
+ "BOING1",
+ "BUBBLE1",
+ "BUBBLE2",
+ "BURP1",
+ "BUTTON6",
+ "CAULDRN2",
+ "CHEST",
+ "CLOTHES1",
+ "CROCLAF4",
+ "CRY1",
+ "CRY2",
+ "DOORMTCL",
+ "DOORMTOP",
+ "DOORWDCL",
+ "DOORWDOP",
+ "DRUM1",
+ "DRUM2",
+ "DRUM3",
+ "DRUM4",
+ "DRUM5",
+ "DRUM6",
+ "DRUM7",
+ "EYERUB2",
+ "FALL1",
+ "FALL3",
+ "FNGRSNAP",
+ "FORMSPL1",
+ "FROG1",
+ "FROGMIX2",
+ "GASLEAK",
+ "GLOWY1",
+ "GOOD3",
+ "GOOD5",
+ "GROWTWIG",
+ "H2ODROP2",
+ "H2OPLANT",
+ "HACHUCKD",
+ "HAYFALL2",
+ "HAYSRCH4",
+ "ICECUBE",
+ "KEYOPEN",
+ "LAMBKID1",
+ "LAMBMOM3",
+ "LAUGH1",
+ "LAUGH3",
+ "LAUGH4",
+ "LIZLISP",
+ "MAKESPL1",
+ "MSTDOOM1",
+ "ORCMOVE",
+ "PLUCK3",
+ "POLGULP1",
+ "PORTCUL",
+ "POURH20",
+ "RIP2",
+ "RODNREEL",
+ "ROWBOAT1",
+ "RUCKUS1",
+ "SCAVMOV2",
+ "SCRATCH1",
+ "SNAKSPEL",
+ "SNEEZE1",
+ "SNIFF1",
+ "SNOREIN3",
+ "SNOROUT",
+ "SPLASH1",
+ "SQUEAK1",
+ "SQUEAK2",
+ "SQUEAK3",
+ "SQUISH1",
+ "SQUISH2",
+ "STEAM",
+ "STEAM3",
+ "STRETCH1",
+ "SWING",
+ "TREZA1",
+ "TURNPAG2",
+ "TWIGSNAP",
+ "UGH1",
+ "WHEEL4",
+ "WINGS1",
+ "YAWN1",
+ "ZOOM5",
+ "FILBOTL",
+ "H2OPOUR1",
+ "JAILDOR1",
+ "JAILLOK1",
+ "CASHREG1",
+ "SWISH1",
+ "TURNBOAT",
+ "CLAPPING",
+ "CRUNCH1",
+ "WHEEL6",
+ "LITEMAG",
+ "SHELDOWN",
+ "SHELSLID",
+ "ZOW2",
+ "ZANLOOP1",
+ "SCREECH2",
+ "PANTING",
+ "TREX1",
+ "TREX5",
+ "TREX3",
+ "QUAKE",
+ "WRINGH2O",
+ "SPLAT2",
+ "OCEAN1",
+ "SPLAT3",
+ "CROCLAF5",
+ "FALL5",
+ "ZCMON2",
+ "ZWAIT3",
+ "ZNO2",
+ "CROCLAF7",
+ "CRICKET1",
+ "FIREBRTH",
+ "COW2",
+ "SAP2",
+ "PMTLHI",
+ "FROGSIGH",
+ "CRICEND",
+ "CRY3",
+ "CRY4",
+ "SHROOM1",
+ "DRIP1",
+ "SWIM4",
+ "CUCKOO2",
+ "PUNCH1",
+ "SNORT3",
+ "STAMPER2",
+ "WALLFALL",
+ "WOODFAL1",
+ "SPRAY1",
+ "OHNO1",
+ "YAHOO1",
+ "YIPEE1",
+ "WIND1",
+ "WIND3",
+ "WIND6",
+ "BLOWUP2",
+ "BOATLOP2",
+ "ZGIGGL1",
+ "ZCOUGH1",
+ "CRUSH",
+ "ALARM3",
+ "APPLEAT",
+ "BABYCRY1",
+ "BABYLAF1",
+ "BABYLIK1",
+ "GEARMX3",
+ "GLASBRK2",
+ "HANDKIL1",
+ "HNDSLAP1",
+ "ICEPICK1",
+ "KISS3",
+ "LOLIFAL1",
+ "PAGEBURN",
+ "PRTYHORN",
+ "SCREAM1",
+ "SPARKHIT",
+ "SPRING2",
+ "ZANLAND1",
+ "BIGBOW",
+ "BOWFORM",
+ "BULBHIT",
+ "EYELITE",
+ "ROOFBOW",
+ "FBIGFOT1",
+ "BIGFOOT4",
+ "DORSTNCL",
+ "CROWCAW",
+ "THUNDER2",
+ "THUNDER3",
+ "TOILET"
+};
+
+static const StringListProvider k2IngameSfxFilesDOSCDProvider = { ARRAYSIZE(k2IngameSfxFilesDOSCD), k2IngameSfxFilesDOSCD };
+
+static const byte k2IngameSfxIndexDOSCD[856] = {
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00,
+ 0x37, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
+ 0x47, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00,
+ 0x1F, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00,
+ 0x25, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00,
+ 0x36, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00,
+ 0x3F, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00,
+ 0x45, 0x00, 0x00, 0x00, 0x4D, 0x00, 0x00, 0x00,
+ 0x7B, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00,
+ 0x3C, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x00, 0x00,
+ 0x4E, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x00, 0x43, 0x00, 0x04, 0x00,
+ 0x56, 0x00, 0x00, 0x00, 0x40, 0x00, 0x05, 0x00,
+ 0x40, 0x00, 0x05, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0x64, 0x00, 0x00, 0x00, 0x4C, 0x00, 0x00, 0x00,
+ 0x12, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00,
+ 0x37, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00,
+ 0x1D, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
+ 0x49, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00,
+ 0x0A, 0x00, 0x00, 0x00, 0x4A, 0x00, 0x00, 0x00,
+ 0x09, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
+ 0x0D, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00,
+ 0x53, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00,
+ 0x0C, 0x00, 0x00, 0x00, 0x4B, 0x00, 0x00, 0x00,
+ 0x21, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00,
+ 0x32, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
+ 0x1B, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00,
+ 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
+ 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00,
+ 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00,
+ 0x19, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00,
+ 0x1A, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00,
+ 0x77, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x00, 0x00,
+ 0x55, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00,
+ 0x2A, 0x00, 0x00, 0x00, 0x2E, 0x00, 0x00, 0x00,
+ 0x2D, 0x00, 0x00, 0x00, 0x27, 0x00, 0x05, 0x00,
+ 0x25, 0x00, 0x00, 0x00, 0x46, 0x00, 0x05, 0x00,
+ 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
+ 0x34, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00,
+ 0x4F, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00,
+ 0x0F, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
+ 0x0A, 0x00, 0x00, 0x00, 0x78, 0x00, 0x06, 0x00,
+ 0x50, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x33, 0x00, 0x06, 0x00, 0x3A, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0x1E, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00,
+ 0x23, 0x00, 0x05, 0x00, 0x24, 0x00, 0x05, 0x00,
+ 0x3E, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00,
+ 0x48, 0x00, 0x05, 0x00, 0x20, 0x00, 0x00, 0x00,
+ 0x63, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0x7A, 0x00, 0x00, 0x00, 0x5E, 0x00, 0x00, 0x00,
+ 0x5B, 0x00, 0x00, 0x00, 0x5A, 0x00, 0x00, 0x00,
+ 0x10, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00,
+ 0x5D, 0x00, 0x00, 0x00, 0x5C, 0x00, 0x00, 0x00,
+ 0x57, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00,
+ 0x30, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00,
+ 0x61, 0x00, 0x05, 0x00, 0x58, 0x00, 0x00, 0x00,
+ 0x5F, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0x65, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00,
+ 0x67, 0x00, 0x00, 0x00, 0x68, 0x00, 0x05, 0x00,
+ 0x69, 0x00, 0x05, 0x00, 0x6A, 0x00, 0x05, 0x00,
+ 0x01, 0x00, 0x05, 0x00, 0x6B, 0x00, 0x00, 0x00,
+ 0x6C, 0x00, 0x00, 0x00, 0x6D, 0x00, 0x00, 0x00,
+ 0x90, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0x6F, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00,
+ 0x71, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00,
+ 0x73, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00,
+ 0x75, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00,
+ 0x7F, 0x00, 0x06, 0x00, 0x7D, 0x00, 0x00, 0x00,
+ 0x7E, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00,
+ 0x80, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00,
+ 0x84, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00,
+ 0x82, 0x00, 0x05, 0x00, 0x86, 0x00, 0x00, 0x00,
+ 0x88, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00,
+ 0x8A, 0x00, 0x00, 0x00, 0x8B, 0x00, 0x00, 0x00,
+ 0x87, 0x00, 0x00, 0x00, 0x8C, 0x00, 0x00, 0x00,
+ 0x8D, 0x00, 0x00, 0x00, 0x8E, 0x00, 0x00, 0x00,
+ 0x8F, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00,
+ 0x91, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00,
+ 0x93, 0x00, 0x05, 0x00, 0x94, 0x00, 0x00, 0x00,
+ 0x5F, 0x00, 0x00, 0x00, 0x96, 0x00, 0x05, 0x00,
+ 0x97, 0x00, 0x00, 0x00, 0x98, 0x00, 0x04, 0x00,
+ 0x99, 0x00, 0x00, 0x00, 0x9A, 0x00, 0x00, 0x00,
+ 0x9B, 0x00, 0x00, 0x00, 0x9C, 0x00, 0x00, 0x00,
+ 0x9D, 0x00, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x00,
+ 0x9F, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00,
+ 0xA1, 0x00, 0x00, 0x00, 0xA2, 0x00, 0x00, 0x00,
+ 0xA3, 0x00, 0x00, 0x00, 0xA4, 0x00, 0x00, 0x00,
+ 0xA5, 0x00, 0x00, 0x00, 0xA6, 0x00, 0x00, 0x00,
+ 0xA7, 0x00, 0x00, 0x00, 0xA8, 0x00, 0x00, 0x00,
+ 0xA9, 0x00, 0x00, 0x00, 0xAA, 0x00, 0x00, 0x00,
+ 0xAB, 0x00, 0x00, 0x00, 0xAC, 0x00, 0x00, 0x00,
+ 0xAD, 0x00, 0x00, 0x00, 0xAE, 0x00, 0x05, 0x00,
+ 0xAF, 0x00, 0x00, 0x00, 0xB0, 0x00, 0x00, 0x00,
+ 0xB1, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const ByteProvider k2IngameSfxIndexDOSCDProvider = { ARRAYSIZE(k2IngameSfxIndexDOSCD), k2IngameSfxIndexDOSCD };
+
+static const char *const k2IngameTracksDOSCD[15] = {
+ "K2TEST1",
+ "K2TEST2",
+ "K2TEST3",
+ "K2TEST4",
+ "K2TEST5",
+ "K2TEST6",
+ "K2TEST7",
+ "K2TEST8",
+ "K2TEST9",
+ "K2TEST10",
+ "K2TEST11",
+ "K2TEST12",
+ "K2TEST13",
+ "K2TEST14",
+ "K2TEST15"
+};
+
+static const StringListProvider k2IngameTracksDOSCDProvider = { ARRAYSIZE(k2IngameTracksDOSCD), k2IngameTracksDOSCD };
+
+static const byte k2IngameTalkObjIndexDOSCD[132] = {
+ 0x20, 0x43, 0x6F, 0x72, 0x72, 0x75, 0x70, 0x74,
+ 0x21, 0x21, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x12, 0x00, 0x18, 0x00, 0x26, 0x00, 0x41, 0x00,
+ 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00,
+ 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00,
+ 0x08, 0x00, 0x09, 0x00, 0x0A, 0x00, 0x11, 0x00,
+ 0x12, 0x00, 0x13, 0x00, 0x14, 0x00, 0x15, 0x00,
+ 0x2A, 0x00, 0x17, 0x00, 0x18, 0x00, 0x19, 0x00,
+ 0x1A, 0x00, 0x1B, 0x00, 0x1C, 0x00, 0x1D, 0x00,
+ 0x1E, 0x00, 0x1F, 0x00, 0x20, 0x00, 0x21, 0x00,
+ 0x22, 0x00, 0x23, 0x00, 0x24, 0x00, 0x30, 0x00,
+ 0x35, 0x00, 0x36, 0x00, 0x37, 0x00, 0x39, 0x00,
+ 0x3A, 0x00, 0x3B, 0x00, 0x3D, 0x00, 0x3E, 0x00,
+ 0x3F, 0x00, 0x40, 0x00, 0x41, 0x00, 0x42, 0x00,
+ 0x43, 0x00, 0x44, 0x00, 0x45, 0x00, 0x46, 0x00,
+ 0x47, 0x00, 0x5B, 0x00, 0x69, 0x00, 0x6E, 0x00,
+ 0x72, 0x00, 0x76, 0x00
+};
+
+static const ByteProvider k2IngameTalkObjIndexDOSCDProvider = { ARRAYSIZE(k2IngameTalkObjIndexDOSCD), k2IngameTalkObjIndexDOSCD };
+
+static const FrameControl k2IngameShapeAnimDataDOSCD0FrameControl[12] = {
+ { 0x0006, 0x00F0 },
+ { 0x002A, 0x000E },
+ { 0x002B, 0x000E },
+ { 0x002C, 0x000E },
+ { 0x0006, 0x000E },
+ { 0x002A, 0x000E },
+ { 0x002B, 0x000E },
+ { 0x002C, 0x000E },
+ { 0x0006, 0x000E },
+ { 0x002A, 0x000E },
+ { 0x002B, 0x000E },
+ { 0x002C, 0x000E }
+};
+
+static const FrameControl k2IngameShapeAnimDataDOSCD1FrameControl[6] = {
+ { 0x0002, 0x012C },
+ { 0x002D, 0x012C },
+ { 0x002E, 0x012C },
+ { 0x002F, 0x012C },
+ { 0x002E, 0x012C },
+ { 0x002D, 0x012C }
+};
+
+static const FrameControl k2IngameShapeAnimDataDOSCD2FrameControl[6] = {
+ { 0x000B, 0x0258 },
+ { 0x0030, 0x0005 },
+ { 0x0031, 0x0005 },
+ { 0x0032, 0x0005 },
+ { 0x0031, 0x0005 },
+ { 0x0030, 0x0005 }
+};
+
+static const FrameControl k2IngameShapeAnimDataDOSCD3FrameControl[4] = {
+ { 0x001C, 0x0014 },
+ { 0x004E, 0x0014 },
+ { 0x004F, 0x0014 },
+ { 0x0050, 0x0014 }
+};
+
+static const FrameControl k2IngameShapeAnimDataDOSCD4FrameControl[4] = {
+ { 0x0017, 0x0007 },
+ { 0x0051, 0x0007 },
+ { 0x0052, 0x0007 },
+ { 0x0053, 0x0007 }
+};
+
+static const FrameControl k2IngameShapeAnimDataDOSCD5FrameControl[4] = {
+ { 0x0016, 0x0014 },
+ { 0x0054, 0x0014 },
+ { 0x0055, 0x0014 },
+ { 0x0056, 0x0014 }
+};
+
+static const FrameControl k2IngameShapeAnimDataDOSCD6FrameControl[4] = {
+ { 0x003A, 0x003C },
+ { 0x0057, 0x003C },
+ { 0x0058, 0x003C },
+ { 0x0059, 0x003C }
+};
+
+static const FrameControl k2IngameShapeAnimDataDOSCD7FrameControl[4] = {
+ { 0x001A, 0x0032 },
+ { 0x005A, 0x0032 },
+ { 0x005B, 0x0032 },
+ { 0x005C, 0x0032 }
+};
+
+static const FrameControl k2IngameShapeAnimDataDOSCD8FrameControl[4] = {
+ { 0x006D, 0x000C },
+ { 0x006E, 0x000C },
+ { 0x006F, 0x000C },
+ { 0x0070, 0x000C }
+};
+
+static const FrameControl k2IngameShapeAnimDataDOSCD9FrameControl[4] = {
+ { 0x0079, 0x0008 },
+ { 0x007A, 0x0008 },
+ { 0x007B, 0x0008 },
+ { 0x007C, 0x0008 }
+};
+
+static const FrameControl k2IngameShapeAnimDataDOSCD10FrameControl[4] = {
+ { 0x007E, 0x0008 },
+ { 0x007F, 0x0008 },
+ { 0x0080, 0x0008 },
+ { 0x0081, 0x0008 }
+};
+
+static const FrameControl k2IngameShapeAnimDataDOSCD11FrameControl[6] = {
+ { 0x0091, 0x01A4 },
+ { 0x0092, 0x0004 },
+ { 0x0093, 0x0004 },
+ { 0x0094, 0x0004 },
+ { 0x0093, 0x0004 },
+ { 0x0092, 0x0004 }
+};
+
+static const FrameControl k2IngameShapeAnimDataDOSCD12FrameControl[4] = {
+ { 0x0095, 0x0006 },
+ { 0x0096, 0x0006 },
+ { 0x0097, 0x0006 },
+ { 0x0098, 0x0006 }
+};
+
+static const FrameControl k2IngameShapeAnimDataDOSCD13FrameControl[4] = {
+ { 0x0099, 0x002D },
+ { 0x009A, 0x002D },
+ { 0x009B, 0x002D },
+ { 0x009C, 0x002D }
+};
+
+static const ItemAnimDefinition k2IngameShapeAnimDataDOSCD[14] = {
+ { 6, 12, k2IngameShapeAnimDataDOSCD0FrameControl },
+ { 2, 6, k2IngameShapeAnimDataDOSCD1FrameControl },
+ { 11, 6, k2IngameShapeAnimDataDOSCD2FrameControl },
+ { 28, 4, k2IngameShapeAnimDataDOSCD3FrameControl },
+ { 23, 4, k2IngameShapeAnimDataDOSCD4FrameControl },
+ { 22, 4, k2IngameShapeAnimDataDOSCD5FrameControl },
+ { 58, 4, k2IngameShapeAnimDataDOSCD6FrameControl },
+ { 26, 4, k2IngameShapeAnimDataDOSCD7FrameControl },
+ { 109, 4, k2IngameShapeAnimDataDOSCD8FrameControl },
+ { 121, 4, k2IngameShapeAnimDataDOSCD9FrameControl },
+ { 126, 4, k2IngameShapeAnimDataDOSCD10FrameControl },
+ { 145, 6, k2IngameShapeAnimDataDOSCD11FrameControl },
+ { 149, 4, k2IngameShapeAnimDataDOSCD12FrameControl },
+ { 153, 4, k2IngameShapeAnimDataDOSCD13FrameControl }
+};
+
+static const ItemAnimDefinitionProvider k2IngameShapeAnimDataDOSCDProvider = { ARRAYSIZE(k2IngameShapeAnimDataDOSCD), k2IngameShapeAnimDataDOSCD };
+
diff --git a/devtools/create_kyradat/resources/hof_dos_cd_english.h b/devtools/create_kyradat/resources/hof_dos_cd_english.h
new file mode 100644
index 0000000000..88db113a4a
--- /dev/null
+++ b/devtools/create_kyradat/resources/hof_dos_cd_english.h
@@ -0,0 +1,128 @@
+static const char *const k2SeqplayStringsDOSCDEnglish[104] = {
+ "Kyrandia is disappearing!",
+ "Rock by rock...",
+ "...and tree by tree.",
+ "Kyrandia ceases to exist!",
+ "The Royal Mystics are baffled.",
+ "Every reference has been consulted.",
+ "Even Marko and his new valet have been allowed into the conference.",
+ "Luckily, the Hand was experienced in these matters.",
+ "And finally a plan was approved...",
+ "...that required a magic Anchor Stone...",
+ "...to be retrieved from the center of the world.",
+ "Zanthia, youngest of the Kyrandian Mystics, has been selected to retrieve the Stone.",
+ "Thank you for playing The Hand of Fate.",
+ "This should be enough blueberries to open a portal to the center of the world.",
+ " DUMMY STRING... ",
+ " DUMMY STRING... ",
+ "Hey! All my equipment has been stolen!",
+ " DUMMY STRING... ",
+ "If they think I'm going to walk all the way down there, they're nuts!",
+ " DUMMY STRING... ",
+ " DUMMY STRING... ",
+ "Hurry up Faun!",
+ "Boy, that was a close call!",
+ "You said it pal. I, for one, am never going hunting again!",
+ "Ribbit.",
+ "How many times do I have to tell you? You're a toad.",
+ "Oh no! We're out of cheese!",
+ "Let's try this earwax. It's orange.",
+ "Mommy, when do I get the ivy?",
+ "Get out of here, shoo!",
+ "You cut, and I'll choose.",
+ "No. You cut and I'll choose.",
+ "I still say it was derivative drivel.",
+ "Aw, you still wouldn't recognize iambic pentameter if it bit you on the butt!",
+ "Executive Producer",
+ "Brett W. Sperry",
+ "Direction & Design",
+ "Rick Gush",
+ "Lead Programmer",
+ "Michael Legg",
+ "Art Management",
+ "Louis Castle",
+ "Joseph B. Hewitt IV",
+ "Lead Artist",
+ "Rick Parks",
+ "Additional Coding by",
+ "Philip W. Gorrow",
+ "Mike Grayford",
+ "Mark McCubbin",
+ "Artists",
+ "Cameron Chun",
+ "Cary Averett",
+ "Cindy Chinn",
+ "Elie Arabian",
+ "Fei Cheng",
+ "Ferby Miguel",
+ "Frank Mendeola",
+ "Jack Martin",
+ "Jerry Moore",
+ "DUMMY STRING... ",
+ "Judith Peterson",
+ "Larry Miller",
+ "Lenny Lee",
+ "Louise Sandoval",
+ "Ren Olsen",
+ "Music & Sounds by",
+ "Paul Mudra",
+ "Frank Klepacki",
+ "Dwight Okahara",
+ "Pat Collins",
+ "Quality Assurance by",
+ "Glenn Sperry",
+ "Michael Lightner",
+ "William Foster",
+ "Jesse Clemit",
+ "Jeff Fillhaber",
+ "Manual, Package Design",
+ "& Fulfillment",
+ "Eydie Laramore",
+ "Lisa Marcinko",
+ "Lauren Rifkin",
+ "Congratulations!",
+ "Thank you for playing The Hand of Fate!",
+ "Guest Coding",
+ "Producer Liaison",
+ "Scott Duckett",
+ "Irvine Testers",
+ "Chris McFarland",
+ "Paul Moore",
+ "Chad Soares",
+ "Jared Brinkley",
+ "Jon Willliams",
+ "Chris Toft",
+ "Joe Kucan's Hair by",
+ "Theodore A. Morris",
+ "Load a game",
+ "Introduction",
+ "Start a new game",
+ "Exit the game",
+ "Special Thanks to",
+ "Sake Joe Bostic-san",
+ "Tim Fritz",
+ "Kenny Dunne",
+ "Thank you for playing \"The Hand of Fate.\"\n"
+};
+
+static const StringListProvider k2SeqplayStringsDOSCDEnglishProvider = { ARRAYSIZE(k2SeqplayStringsDOSCDEnglish), k2SeqplayStringsDOSCDEnglish };
+
+static const char *const k2SeqplayTlkFilesDOSCDEnglish[14] = {
+ "EINTRO1",
+ "EINTRO2",
+ "EINTRO3",
+ "EINTRO4",
+ "EINTRO5",
+ "EINTRO6",
+ "EINTRO7",
+ "EINTRO8",
+ "EINTRO9",
+ "EINTRO10",
+ "EINTRO11",
+ "EINTRO12",
+ "EGLOW",
+ ""
+};
+
+static const StringListProvider k2SeqplayTlkFilesDOSCDEnglishProvider = { ARRAYSIZE(k2SeqplayTlkFilesDOSCDEnglish), k2SeqplayTlkFilesDOSCDEnglish };
+
diff --git a/devtools/create_kyradat/resources/hof_dos_cd_french.h b/devtools/create_kyradat/resources/hof_dos_cd_french.h
new file mode 100644
index 0000000000..fbfdbe9984
--- /dev/null
+++ b/devtools/create_kyradat/resources/hof_dos_cd_french.h
@@ -0,0 +1,128 @@
+static const char *const k2SeqplayStringsDOSCDFrench[104] = {
+ "Kyrandia est en train de dispara""\x8C""tre!",
+ "Pierre apr""\x8A""s pierre...",
+ "Arbre apr""\x8A""s arbre.",
+ "Kyrandia va cesser d'exister!",
+ "Les Grands Mystiques Royaux sont perplexes...",
+ "Ils ont consult""\x82"" tous les ouvrages!",
+ "M""\x88""me Marko et son nouveau valet ont ""\x82""t""\x82"" admis dans la conf""\x82""rence.",
+ "Heureusement, la Main connaissait bien ce sujet.",
+ "Un plan fut finalement approuv""\x82""...",
+ "Il n""\x82""cessitait une Ancre de Pierre magique...",
+ "Qu'il fallait aller chercher au centre du monde!",
+ "Zanthia, la plus jeune des Mystiques de Kyrandia, a ""\x82""t""\x82"" choisie pour r""\x82""cup""\x82""rer cette pierre.",
+ "Merci d'avoir jou""\x82"" ""\x85"" The Hand of Fate.",
+ "Je devrais avoir assez de myrtilles pour ouvrir un portail vers le centre du monde...",
+ " DUMMY STRING... ",
+ " DUMMY STRING... ",
+ "H""\x82""! On m'a vol""\x82"" tout mon ""\x82""quipement!",
+ " DUMMY STRING... ",
+ "S'ils croient que je vais y aller ""\x85"" pied, ils peuvent toujours courir!",
+ " DUMMY STRING... ",
+ " DUMMY STRING... ",
+ "Vite, Faun!",
+ "Mon vieux, nous l'avons ""\x82""chapp""\x82"" belle!",
+ "Tu l'as dit! En ce qui me concerne, j'abandonne la chasse!",
+ "Crooa.",
+ "Combien de fois faudra-t-il que je te le dise? Tu n'es qu'un sale crapaud!",
+ "Oh non! Nous n'avons plus de fromage!",
+ "On n'a qu'""\x85"" essayer ""\x87""a. C'est orange.",
+ "Maman, quand est-ce qu'on mangera du lierre?",
+ "Sortez d'ici! Allez! Filez!",
+ "Tu coupes, et je choisis.",
+ "Non. TU coupes et JE choisis.",
+ "Je maintiens que c'""\x82""tait du radotage sans int""\x82""r""\x88""t.",
+ "Tu ne reconna""\x8C""trais toujours pas un po""\x8A""me ""\x8B""ambique, m""\x88""me s'il te mordait les fesses!",
+ "Producteur Ex""\x82""cutif",
+ "Brett W. Sperry",
+ "Con""\x87""u et Dirig""\x82"" par",
+ "Rick Gush",
+ "Programmeur Principal",
+ "Michael Legg",
+ "Direction Artistique",
+ "Louis Castle",
+ "Joseph B. Hewitt IV",
+ "Graphiste principal",
+ "Rick Parks",
+ "Programmation acrobatie",
+ "Philip W. Gorrow",
+ "Michael Grayford",
+ "Mark McCubbin",
+ "Graphistes",
+ "Cameron Chun",
+ "Cary Averett",
+ "Cindy Chinn",
+ "Elie Arabian",
+ "Fei Cheng",
+ "Ferby Miguel",
+ "Frank Mendeola",
+ "Jack Martin",
+ "Jerry Moore",
+ "DUMMY STRING... ",
+ "Judith Peterson",
+ "Larry Miller",
+ "Lenny Lee",
+ "Louise Sandoval",
+ "Ren Olsen",
+ "Musique et sons",
+ "Paul Mudra",
+ "Frank Klepacki",
+ "Dwight Okahara",
+ "Pat Collins",
+ "Tests de Qualit""\x82",
+ "Glenn Sperry",
+ "Michael Lightner",
+ "William Foster",
+ "Jesse Clemit",
+ "Pierre Cardin",
+ "Conception du Manuel,",
+ "Emballage & Ex""\x82""cution",
+ "Eydie Laramore",
+ "Lisa Marcinko",
+ "Lauren Rifkin",
+ "F""\x82""licitations!",
+ "Merci d'avoir jou""\x82"" ""\x85"" The Hand of Fate!",
+ "Programmeur invit""\x82",
+ "Coordination Production",
+ "Scott Duckett",
+ "Testeurs - Irvine",
+ "Chris McFarland",
+ "Paul Moore",
+ "Chad Soares",
+ "Jared Brinkley",
+ "Jon Williams",
+ "Chris Toft",
+ "Adaptation fran""\x87""aise",
+ "Art Of Words",
+ "Charger une partie",
+ "Introduction",
+ "Nouvelle Partie",
+ "Quitter le jeu",
+ "Remerciements sp""\x82""ciaux",
+ "Sake Joe Bostic-san",
+ "Tim Fritz",
+ "Kenny Dunne",
+ "Merci d'avoir jou""\x82"" ""\x85""\"The Hand of Fate.\"\n"
+};
+
+static const StringListProvider k2SeqplayStringsDOSCDFrenchProvider = { ARRAYSIZE(k2SeqplayStringsDOSCDFrench), k2SeqplayStringsDOSCDFrench };
+
+static const char *const k2SeqplayTlkFilesDOSCDFrench[14] = {
+ "FINTRO1",
+ "FINTRO2",
+ "FINTRO3",
+ "FINTRO4",
+ "FINTRO5",
+ "FINTRO6",
+ "FINTRO7",
+ "FINTRO8",
+ "FINTRO9",
+ "FINTRO10",
+ "FINTRO11",
+ "FINTRO12",
+ "FGLOW",
+ ""
+};
+
+static const StringListProvider k2SeqplayTlkFilesDOSCDFrenchProvider = { ARRAYSIZE(k2SeqplayTlkFilesDOSCDFrench), k2SeqplayTlkFilesDOSCDFrench };
+
diff --git a/devtools/create_kyradat/resources/hof_dos_cd_german.h b/devtools/create_kyradat/resources/hof_dos_cd_german.h
new file mode 100644
index 0000000000..e6120040d2
--- /dev/null
+++ b/devtools/create_kyradat/resources/hof_dos_cd_german.h
@@ -0,0 +1,128 @@
+static const char *const k2SeqplayStringsDOSCDGerman[104] = {
+ "Kyrandia l""\x94""st sich auf!",
+ "Stein f""\x81""r Stein...",
+ "...und Baum f""\x81""r Baum.",
+ "Kyrandia h""\x94""rt auf zu existieren!",
+ "Die k""\x94""niglichen Mystiker sind verzweifelt.",
+ "Jede Informationsquelle wurde zu Rate gezogen.",
+ "Sogar Marko und sein neuer Kammerdiener durften den Konferenzen beiwohnen.",
+ "Gl""\x81""cklicherweise, hatte die Hand Erfahrungen in solchen Dingen.",
+ "Und letztendlich konnte man sich auf einen Plan einigen.",
+ "Zu dessen Durchf""\x81""hrung es eines magischen Ankerstein bedarf...",
+ "...der aus der Mitte der Welt geholt werden mu""\xE1"".",
+ "Zanthia, j""\x81""ngste der kyrandianischen Mystiker, wurde ausgew""\x84""hlt, um diesen Stein zu holen.",
+ "Vielen Dank, da""\xE1"" Du die Hand des Schicksals spielst.",
+ "Dies sollten gen""\x81""gend Blaubeeren sein, um ein Portal zur Mitte der Erde zu ""\x94""ffnen.",
+ " DUMMY STRING... ",
+ " DUMMY STRING... ",
+ "Hey! Meine gesamte Ausr""\x81""stung wurde gestohlen!",
+ " DUMMY STRING... ",
+ "Wenn die glauben, da""\xE1"" ich den ganzen Weg nach unten laufe, haben die sich aber in den Finger geschnitten!",
+ " DUMMY STRING... ",
+ " DUMMY STRING... ",
+ "Beeile Dich, Faun!",
+ "Junge, Junge das war aber knapp!",
+ "Da hast Du recht, Kumpel. Ich werde nie wieder jagen gehen!",
+ "Quuaaak.",
+ "Wie oft mu""\xE1"" ich es Dir noch sagen? Du bist eine Kr""\x94""te.",
+ "Oh nein! Der K""\x84""se ist alle!",
+ "Versuchen wir es mal mit dem Ohrenwachs. Es ist orange.",
+ "Mama, wann bekomme ich das Efeu?",
+ "Husch husch, komm hier raus!",
+ "Du schneidest, und ich suche aus.",
+ "Nein. Du schneidest und ich werde aussuchen.",
+ "Ich bin immernoch der\rMeinung, da""\xE1"" er es nur\rso dahingeplappert hat.",
+ "Argh, Du w""\x81""rdest ein jambisches Pentameter nicht erkennen, wenn es Dich in den Hintern bei""\xE1""en w""\x81""rde!",
+ "Executive Producer",
+ "Brett W. Sperry",
+ "Director & Designer",
+ "Rick Gush",
+ "Lead Programmer",
+ "Michael Legg",
+ "Art Management",
+ "Louis Castle",
+ "Joseph B. Hewitt IV",
+ "Lead Artist",
+ "Rick Parks",
+ "Additional Coding by",
+ "Philip W. Gorrow",
+ "Michael Grayford",
+ "Mark McCubbin",
+ "Artists",
+ "Cameron Chun",
+ "Cary Averett",
+ "Cindy Chinn",
+ "Elie Arabian",
+ "Fei Cheng",
+ "Ferby Miguel",
+ "Frank Mendeola",
+ "Jack Martin",
+ "Jerry Moore",
+ "DUMMY STRING... ",
+ "Judith Peterson",
+ "Larry Miller",
+ "Lenny Lee",
+ "Louise Sandoval",
+ "Ren Olsen",
+ "Music & Sounds by",
+ "Paul Mudra",
+ "Frank Klepacki",
+ "Dwight Okahara",
+ "Pat Collins",
+ "Quality Assurance by",
+ "Glenn Sperry",
+ "Michael Lightner",
+ "William Foster",
+ "Jesse Clemit",
+ "Black Pete",
+ "Manual, Package Design",
+ "& Fulfillment by",
+ "Eydie Laramore",
+ "Lisa Marcinko",
+ "Lauren Rifkin",
+ "Unseren Gl""\x81""ckw""\x81""nsch!",
+ "Vielen Dank, da""\xE1"" Sie The Hand of Fate gespielt haben!",
+ "Guest Coding",
+ "Producer Liaison",
+ "Scott Duckett",
+ "Irvine Testers",
+ "Chris McFarland",
+ "Paul Moore",
+ "Chad Soares",
+ "Jared Brinkley",
+ "Jon Willliams",
+ "Chris Toft",
+ "Ants! Ants! Ants!",
+ "Ted Morris",
+ "Spielstand laden",
+ "Intro",
+ "Neues Spiel starten",
+ "Spiel beenden",
+ "Vielen Dank an",
+ "tom schmidt",
+ "Tim Fritz",
+ "Kenny Dunne",
+ "Vielen Dank, da""\xE1"" Sie \"The Hand of Fate\" gespielt haben.\n"
+};
+
+static const StringListProvider k2SeqplayStringsDOSCDGermanProvider = { ARRAYSIZE(k2SeqplayStringsDOSCDGerman), k2SeqplayStringsDOSCDGerman };
+
+static const char *const k2SeqplayTlkFilesDOSCDGerman[14] = {
+ "GINTRO1",
+ "GINTRO2",
+ "GINTRO3",
+ "GINTRO4",
+ "GINTRO5",
+ "GINTRO6",
+ "GINTRO7",
+ "GINTRO8",
+ "GINTRO9",
+ "GINTRO10",
+ "GINTRO11",
+ "GINTRO12",
+ "GGLOW",
+ ""
+};
+
+static const StringListProvider k2SeqplayTlkFilesDOSCDGermanProvider = { ARRAYSIZE(k2SeqplayTlkFilesDOSCDGerman), k2SeqplayTlkFilesDOSCDGerman };
+
diff --git a/devtools/create_kyradat/resources/hof_dos_cd_italian.h b/devtools/create_kyradat/resources/hof_dos_cd_italian.h
new file mode 100644
index 0000000000..0b2789af4b
--- /dev/null
+++ b/devtools/create_kyradat/resources/hof_dos_cd_italian.h
@@ -0,0 +1,128 @@
+static const char *const k2SeqplayStringsDOSCDItalian[104] = {
+ "Kyrandia sta svanendo!",
+ "Roccia dopo roccia...",
+ "...ed albero dopo albero.",
+ "Kyrandia cessa di esistere!",
+ "I mistici Reali sono sconcertati.",
+ "Ogni libro ""\x8A"" stato consultato.",
+ "Perfino Marko ed il suo nuovo aiutante sono stati invitati alla conferenza.",
+ "Fortunatamente, la Mano era ferrata in materia.",
+ "E finalmente un piano ""\x8A"" stato approvato.",
+ "Bisogna recuperare un'Ancora di pietra",
+ "dal centro della terra.",
+ "Zanthia, la pi""\x97"" giovane trai Mistici, ""\x8A"" stata scelta per recuperare l'artefatto.",
+ "Grazie per aver giocato a Hand of Fate.",
+ "Questi mirtilli dovrebbero bastare ad aprire un portale per il centro della terra.",
+ "X",
+ "X",
+ "Hey! Hanno rubato tutto il mio equipaggiamento!",
+ "X",
+ "Se pensano che vada fin laggi""\x97"" a piedi, si sbagliano di grosso!",
+ "X",
+ "X",
+ "Sbrigati Fauno!",
+ "Ragazzi, c'""\x8A"" mancato un pelo!",
+ "Puoi dirlo forte. Io ho chiuso con la caccia!",
+ "Ribbit.",
+ "Quante volte devo dirtelo? Sei un rospo.",
+ "Oh no! Abbiamo finito il formaggio!",
+ "Proviamo con questo cerume. E' arancione.",
+ "Mamy, mi dai l'edera?",
+ "Via di qui, scio'!",
+ "Tu taglio, e io scelgo.",
+ "No. TU tagli e IO scelgo.",
+ "Sono sempre convinto che fosse un'emerita cretinata.",
+ "Non riconosceresti un pentametro in verso giambico nemmeno se ti mordesse le chiappe!",
+ "Produttore Esecutivo",
+ "Brett W. Sperry",
+ "Direzione&Progetto",
+ "Rick Gush",
+ "Capo Programmatore",
+ "Michael Legg",
+ "Supervisione Artistica",
+ "Louis Castle",
+ "Joseph B. Hewitt IV",
+ "Artista",
+ "Rick Parks",
+ "Codice aggiuntivo",
+ "Philip W. Gorrow",
+ "Mike Grayford",
+ "Mark McCubbin",
+ "Artisti",
+ "Cameron Chun",
+ "Cary Averett",
+ "Cindy Chinn",
+ "Elie Arabian",
+ "Fei Cheng",
+ "Ferby Miguel",
+ "Frank Mendeola",
+ "Jack Martin",
+ "Jerry Moore",
+ "X",
+ "Judith Peterson",
+ "Larry Miller",
+ "Lenny Lee",
+ "Louise Sandoval",
+ "Ren Olsen",
+ "Musica & Suoni",
+ "Paul Mudra",
+ "Frank Klepacki",
+ "Dwight Okahara",
+ "Pat Collins",
+ "Controllo Qualit""\x85",
+ "Glenn Sperry",
+ "Michael Lightner",
+ "William Foster",
+ "Jesse Clemit",
+ "Jeff Fillhaber",
+ "Manuale, Confezione",
+ "& Realizzazione",
+ "Eydie Laramore",
+ "Lisa Marcinko",
+ "Lauren Rifkin",
+ "Congratulazioni!",
+ "Grazie per aver giocato a Hand of Fate!",
+ "Codice extra",
+ " contatti ",
+ "Scott Duckett",
+ "Irvine Testers",
+ "Chris McFarland",
+ "Paul Moore",
+ "Chad Soares",
+ "Jared Brinkley",
+ "Jon Willliams",
+ "Chris Toft",
+ "Capelli di Joe Kucan di",
+ " Theodore A. Morris",
+ "Carica un gioco",
+ "Introduzione",
+ "Inizia nuovo gioco",
+ "Esci dal gioco",
+ "Ringraziamenti speciali a",
+ "Sake Joe Bostic-san",
+ "Tim Fritz",
+ "Kenny Dunne",
+ "Grazie per aver giocato a \"The Hand of Fate.\"\n "
+};
+
+static const StringListProvider k2SeqplayStringsDOSCDItalianProvider = { ARRAYSIZE(k2SeqplayStringsDOSCDItalian), k2SeqplayStringsDOSCDItalian };
+
+static const char *const k2SeqplayTlkFilesDOSCDItalian[14] = {
+ "EINTRO1",
+ "EINTRO2",
+ "EINTRO3",
+ "EINTRO4",
+ "EINTRO5",
+ "EINTRO6",
+ "EINTRO7",
+ "EINTRO8",
+ "EINTRO9",
+ "EINTRO10",
+ "EINTRO11",
+ "EINTRO12",
+ "EGLOW",
+ ""
+};
+
+static const StringListProvider k2SeqplayTlkFilesDOSCDItalianProvider = { ARRAYSIZE(k2SeqplayTlkFilesDOSCDItalian), k2SeqplayTlkFilesDOSCDItalian };
+
diff --git a/devtools/create_kyradat/resources/hof_dos_cd_russian.h b/devtools/create_kyradat/resources/hof_dos_cd_russian.h
new file mode 100644
index 0000000000..e29beb4d3d
--- /dev/null
+++ b/devtools/create_kyradat/resources/hof_dos_cd_russian.h
@@ -0,0 +1,128 @@
+static const char *const k2SeqplayStringsDOSCDRussian[104] = {
+ "Kyrandia is disappearing!",
+ "Rock by rock...",
+ "...and tree by tree.",
+ "Kyrandia ceases to exist!",
+ "The Royal Mystics are baffled.",
+ "Every reference has been consulted.",
+ "Even Marko and his new valet have been allowed into the conference.",
+ "Luckily, the Hand was experienced in these matters.",
+ "And finally a plan was approved...",
+ "...that required a magic Anchor Stone...",
+ "...to be retrieved from the center of the world.",
+ "Zanthia, youngest of the Kyrandian Mystics, has been selected to retrieve the Stone.",
+ "Thank you for playing The Hand of Fate.",
+ "This should be enough blueberries to open a portal to the center of the world.",
+ " DUMMY STRING... ",
+ " DUMMY STRING... ",
+ "Hey! All my equipment has been stolen!",
+ " DUMMY STRING... ",
+ "If they think I'm going to walk all the way down there, they're nuts!",
+ " DUMMY STRING... ",
+ " DUMMY STRING... ",
+ "Hurry up Faun!",
+ "Boy, that was a close call!",
+ "You said it pal. I, for one, am never going hunting again!",
+ "Ribbit.",
+ "How many times do I have to tell you? You're a toad.",
+ "Oh no! We're out of cheese!",
+ "Let's try this earwax. It's orange.",
+ "Mommy, when do I get the ivy?",
+ "Get out of here, shoo!",
+ "You cut, and I'll choose.",
+ "No. You cut and I'll choose.",
+ "I still say it was derivative drivel.",
+ "Aw, you still wouldn't recognize iambic pentameter if it bit you on the butt!",
+ "Executive Producer",
+ "Brett W. Sperry",
+ "Direction & Design",
+ "Rick Gush",
+ "Lead Programmer",
+ "Michael Legg",
+ "Art Management",
+ "Louis Castle",
+ "Joseph B. Hewitt IV",
+ "Lead Artist",
+ "Rick Parks",
+ "Additional Coding by",
+ "Philip W. Gorrow",
+ "Mike Grayford",
+ "Mark McCubbin",
+ "Artists",
+ "Cameron Chun",
+ "Cary Averett",
+ "Cindy Chinn",
+ "Elie Arabian",
+ "Fei Cheng",
+ "Ferby Miguel",
+ "Frank Mendeola",
+ "Jack Martin",
+ "Jerry Moore",
+ "DUMMY STRING... ",
+ "Judith Peterson",
+ "Larry Miller",
+ "Lenny Lee",
+ "Louise Sandoval",
+ "Ren Olsen",
+ "Music & Sounds by",
+ "Paul Mudra",
+ "Frank Klepacki",
+ "Dwight Okahara",
+ "Pat Collins",
+ "Quality Assurance by",
+ "Glenn Sperry",
+ "Michael Lightner",
+ "William Foster",
+ "Jesse Clemit",
+ "Jeff Fillhaber",
+ "Manual, Package Design",
+ "& Fulfillment",
+ "Eydie Laramore",
+ "Lisa Marcinko",
+ "Lauren Rifkin",
+ "Congratulations!",
+ "Thank you for playing The Hand of Fate!",
+ "Guest Coding",
+ "Producer Liaison",
+ "Scott Duckett",
+ "Irvine Testers",
+ "Chris McFarland",
+ "Paul Moore",
+ "Chad Soares",
+ "Jared Brinkley",
+ "Jon Willliams",
+ "Chris Toft",
+ "Joe Kucan's Hair by",
+ "Theodore A. Morris",
+ "\xC7\xE0\xE3\xF0\xF3\xE7\xE8\xF2\xFC"" ""\xE8\xE3\xF0\xF3",
+ "\xC2\xE2\xE5\xE4\xE5\xED\xE8\xE5",
+ "\xCD\xE0\xF7\xE0\xF2\xFC"" ""\xED\xEE\xE2\xF3\xFE"" ""\xE8\xE3\xF0\xF3",
+ "\xC2\xFB\xE9\xF2\xE8"" ""\xE8\xE7"" ""\xE8\xE3\xF0\xFB",
+ "Special Thanks to",
+ "Sake Joe Bostic-san",
+ "Tim Fritz",
+ "Kenny Dunne",
+ "Thank you for playing \"The Hand of Fate.\"\n"
+};
+
+static const StringListProvider k2SeqplayStringsDOSCDRussianProvider = { ARRAYSIZE(k2SeqplayStringsDOSCDRussian), k2SeqplayStringsDOSCDRussian };
+
+static const char *const k2SeqplayTlkFilesDOSCDRussian[14] = {
+ "EINTRO1",
+ "EINTRO2",
+ "EINTRO3",
+ "EINTRO4",
+ "EINTRO5",
+ "EINTRO6",
+ "EINTRO7",
+ "EINTRO8",
+ "EINTRO9",
+ "EINTRO10",
+ "EINTRO11",
+ "EINTRO12",
+ "EGLOW",
+ ""
+};
+
+static const StringListProvider k2SeqplayTlkFilesDOSCDRussianProvider = { ARRAYSIZE(k2SeqplayTlkFilesDOSCDRussian), k2SeqplayTlkFilesDOSCDRussian };
+
diff --git a/devtools/create_kyradat/resources/hof_dos_cddemo.h b/devtools/create_kyradat/resources/hof_dos_cddemo.h
new file mode 100644
index 0000000000..229184853a
--- /dev/null
+++ b/devtools/create_kyradat/resources/hof_dos_cddemo.h
@@ -0,0 +1,1035 @@
+static const char *const k2SeqplayPakFilesDOSCDDemo[6] = {
+ "INTROGEN.PAK",
+ "TALKENG.PAK",
+ "TALKFRE.PAK",
+ "TALKGER.PAK",
+ "VOC.PAK",
+ "INTROTLK.PAK"
+};
+
+static const StringListProvider k2SeqplayPakFilesDOSCDDemoProvider = { ARRAYSIZE(k2SeqplayPakFilesDOSCDDemo), k2SeqplayPakFilesDOSCDDemo };
+
+static const byte k2SeqplayCreditsDOSCDDemo[2792] = {
+ 0x0D, 0x0D, 0x02, 0x54, 0x48, 0x45, 0x20, 0x50,
+ 0x4C, 0x41, 0x59, 0x45, 0x52, 0x53, 0x0D, 0x0D,
+ 0x03, 0x5A, 0x61, 0x6E, 0x74, 0x68, 0x69, 0x61,
+ 0x20, 0x20, 0x20, 0x05, 0x04, 0x42, 0x4F, 0x4E,
+ 0x4E, 0x49, 0x45, 0x20, 0x4C, 0x59, 0x4E, 0x4E,
+ 0x20, 0x54, 0x4F, 0x55, 0x50, 0x53, 0x0D, 0x03,
+ 0x46, 0x61, 0x75, 0x6E, 0x20, 0x20, 0x20, 0x05,
+ 0x04, 0x45, 0x4C, 0x45, 0x4E, 0x41, 0x20, 0x46,
+ 0x45, 0x52, 0x52, 0x41, 0x4E, 0x54, 0x45, 0x0D,
+ 0x03, 0x4D, 0x61, 0x72, 0x6B, 0x6F, 0x20, 0x20,
+ 0x20, 0x05, 0x04, 0x45, 0x52, 0x49, 0x43, 0x20,
+ 0x52, 0x41, 0x4E, 0x44, 0x41, 0x4C, 0x4C, 0x0D,
+ 0x03, 0x4E, 0x61, 0x72, 0x72, 0x61, 0x74, 0x6F,
+ 0x72, 0x20, 0x20, 0x20, 0x05, 0x04, 0x48, 0x69,
+ 0x73, 0x20, 0x52, 0x6F, 0x79, 0x61, 0x6C, 0x20,
+ 0x48, 0x69, 0x67, 0x68, 0x6E, 0x65, 0x73, 0x73,
+ 0x0D, 0x05, 0x04, 0x42, 0x52, 0x41, 0x4E, 0x44,
+ 0x4F, 0x4E, 0x2C, 0x20, 0x4B, 0x69, 0x6E, 0x67,
+ 0x20, 0x6F, 0x66, 0x0D, 0x05, 0x04, 0x4B, 0x79,
+ 0x72, 0x61, 0x6E, 0x64, 0x69, 0x61, 0x2C, 0x20,
+ 0x44, 0x65, 0x66, 0x65, 0x6E, 0x64, 0x65, 0x72,
+ 0x20, 0x6F, 0x66, 0x0D, 0x05, 0x04, 0x74, 0x68,
+ 0x65, 0x20, 0x4B, 0x79, 0x72, 0x61, 0x67, 0x65,
+ 0x6D, 0x2C, 0x20, 0x56, 0x61, 0x6E, 0x71, 0x75,
+ 0x69, 0x73, 0x68, 0x65, 0x72, 0x0D, 0x05, 0x04,
+ 0x6F, 0x66, 0x20, 0x4D, 0x61, 0x6C, 0x63, 0x6F,
+ 0x6C, 0x6D, 0x2C, 0x20, 0x50, 0x61, 0x74, 0x72,
+ 0x6F, 0x6E, 0x20, 0x6F, 0x66, 0x0D, 0x05, 0x04,
+ 0x74, 0x68, 0x65, 0x20, 0x41, 0x72, 0x74, 0x73,
+ 0x2C, 0x20, 0x57, 0x65, 0x61, 0x72, 0x65, 0x72,
+ 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x0D,
+ 0x05, 0x04, 0x53, 0x61, 0x6E, 0x64, 0x61, 0x6C,
+ 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x4D, 0x61,
+ 0x6A, 0x6F, 0x72, 0x69, 0x74, 0x79, 0x0D, 0x05,
+ 0x04, 0x53, 0x74, 0x6F, 0x63, 0x6B, 0x20, 0x4F,
+ 0x77, 0x6E, 0x65, 0x72, 0x20, 0x61, 0x6E, 0x64,
+ 0x20, 0x43, 0x45, 0x4F, 0x20, 0x6F, 0x66, 0x0D,
+ 0x05, 0x04, 0x54, 0x69, 0x6D, 0x62, 0x65, 0x72,
+ 0x6D, 0x69, 0x73, 0x74, 0x20, 0x43, 0x61, 0x73,
+ 0x75, 0x61, 0x6C, 0x0D, 0x05, 0x04, 0x46, 0x6F,
+ 0x6F, 0x74, 0x77, 0x65, 0x61, 0x72, 0x2C, 0x20,
+ 0x49, 0x6E, 0x63, 0x2E, 0x0D, 0x03, 0x54, 0x68,
+ 0x65, 0x20, 0x48, 0x61, 0x6E, 0x64, 0x20, 0x20,
+ 0x20, 0x05, 0x04, 0x4D, 0x49, 0x43, 0x48, 0x41,
+ 0x45, 0x4C, 0x20, 0x4B, 0x55, 0x43, 0x41, 0x4E,
+ 0x0D, 0x0D, 0x0D, 0x02, 0x44, 0x41, 0x52, 0x4B,
+ 0x4D, 0x4F, 0x4F, 0x52, 0x20, 0x53, 0x57, 0x41,
+ 0x4D, 0x50, 0x0D, 0x0D, 0x03, 0x48, 0x65, 0x72,
+ 0x62, 0x20, 0x20, 0x20, 0x20, 0x05, 0x04, 0x43,
+ 0x48, 0x41, 0x52, 0x4C, 0x45, 0x53, 0x20, 0x4D,
+ 0x4F, 0x53, 0x48, 0x45, 0x52, 0x0D, 0x03, 0x42,
+ 0x72, 0x65, 0x75, 0x74, 0x68, 0x20, 0x20, 0x20,
+ 0x20, 0x05, 0x04, 0x42, 0x52, 0x49, 0x41, 0x4E,
+ 0x20, 0x53, 0x54, 0x52, 0x4F, 0x4D, 0x0D, 0x03,
+ 0x53, 0x77, 0x61, 0x6D, 0x70, 0x20, 0x52, 0x61,
+ 0x74, 0x20, 0x20, 0x20, 0x20, 0x05, 0x04, 0x45,
+ 0x52, 0x49, 0x43, 0x20, 0x4D, 0x41, 0x52, 0x54,
+ 0x49, 0x4E, 0x0D, 0x03, 0x44, 0x72, 0x61, 0x67,
+ 0x6F, 0x6E, 0x66, 0x6C, 0x79, 0x20, 0x20, 0x20,
+ 0x20, 0x05, 0x04, 0x43, 0x4C, 0x49, 0x46, 0x46,
+ 0x20, 0x4C, 0x41, 0x57, 0x52, 0x45, 0x4E, 0x43,
+ 0x45, 0x0D, 0x03, 0x46, 0x69, 0x73, 0x68, 0x65,
+ 0x72, 0x6D, 0x61, 0x6E, 0x20, 0x20, 0x20, 0x20,
+ 0x05, 0x04, 0x45, 0x52, 0x49, 0x43, 0x20, 0x4D,
+ 0x41, 0x52, 0x54, 0x49, 0x4E, 0x0D, 0x03, 0x4F,
+ 0x74, 0x68, 0x65, 0x72, 0x20, 0x46, 0x69, 0x73,
+ 0x68, 0x65, 0x72, 0x6D, 0x61, 0x6E, 0x20, 0x20,
+ 0x20, 0x20, 0x05, 0x04, 0x52, 0x41, 0x59, 0x20,
+ 0x46, 0x41, 0x56, 0x45, 0x52, 0x4F, 0x0D, 0x03,
+ 0x54, 0x6F, 0x61, 0x64, 0x20, 0x20, 0x20, 0x20,
+ 0x05, 0x04, 0x4D, 0x41, 0x52, 0x43, 0x55, 0x53,
+ 0x20, 0x56, 0x41, 0x55, 0x47, 0x48, 0x4E, 0x0D,
+ 0x03, 0x4F, 0x74, 0x68, 0x65, 0x72, 0x20, 0x54,
+ 0x6F, 0x61, 0x64, 0x20, 0x20, 0x20, 0x20, 0x05,
+ 0x04, 0x42, 0x49, 0x4C, 0x4C, 0x20, 0x43, 0x4F,
+ 0x4C, 0x4C, 0x49, 0x4E, 0x53, 0x0D, 0x03, 0x54,
+ 0x68, 0x65, 0x20, 0x48, 0x61, 0x6E, 0x64, 0x20,
+ 0x20, 0x20, 0x20, 0x05, 0x04, 0x4D, 0x41, 0x52,
+ 0x49, 0x41, 0x20, 0x44, 0x45, 0x4C, 0x20, 0x4D,
+ 0x41, 0x52, 0x20, 0x4C, 0x45, 0x47, 0x47, 0x0D,
+ 0x0D, 0x0D, 0x02, 0x4D, 0x4F, 0x52, 0x4E, 0x49,
+ 0x4E, 0x47, 0x4D, 0x49, 0x53, 0x54, 0x20, 0x56,
+ 0x41, 0x4C, 0x4C, 0x45, 0x59, 0x0D, 0x0D, 0x03,
+ 0x46, 0x61, 0x72, 0x6D, 0x65, 0x72, 0x20, 0x47,
+ 0x72, 0x65, 0x65, 0x6E, 0x62, 0x65, 0x72, 0x72,
+ 0x79, 0x20, 0x20, 0x20, 0x20, 0x05, 0x04, 0x45,
+ 0x52, 0x49, 0x43, 0x20, 0x4D, 0x41, 0x52, 0x54,
+ 0x49, 0x4E, 0x0D, 0x03, 0x47, 0x68, 0x6F, 0x73,
+ 0x74, 0x20, 0x20, 0x20, 0x20, 0x05, 0x04, 0x4D,
+ 0x41, 0x52, 0x43, 0x55, 0x53, 0x20, 0x56, 0x41,
+ 0x55, 0x47, 0x48, 0x4E, 0x0D, 0x03, 0x53, 0x63,
+ 0x61, 0x72, 0x65, 0x63, 0x72, 0x6F, 0x77, 0x20,
+ 0x20, 0x20, 0x20, 0x05, 0x04, 0x4D, 0x41, 0x52,
+ 0x43, 0x55, 0x53, 0x20, 0x56, 0x41, 0x55, 0x47,
+ 0x48, 0x4E, 0x0D, 0x03, 0x46, 0x61, 0x74, 0x20,
+ 0x47, 0x75, 0x61, 0x72, 0x64, 0x20, 0x20, 0x20,
+ 0x20, 0x05, 0x04, 0x4D, 0x49, 0x43, 0x48, 0x41,
+ 0x45, 0x4C, 0x20, 0x4C, 0x45, 0x47, 0x47, 0x0D,
+ 0x03, 0x53, 0x6B, 0x69, 0x6E, 0x6E, 0x79, 0x20,
+ 0x47, 0x75, 0x61, 0x72, 0x64, 0x20, 0x20, 0x20,
+ 0x20, 0x05, 0x04, 0x52, 0x49, 0x43, 0x4B, 0x20,
+ 0x22, 0x43, 0x4F, 0x43, 0x4F, 0x22, 0x20, 0x47,
+ 0x55, 0x53, 0x48, 0x0D, 0x03, 0x54, 0x68, 0x65,
+ 0x20, 0x48, 0x61, 0x6E, 0x64, 0x20, 0x20, 0x20,
+ 0x20, 0x05, 0x04, 0x4D, 0x49, 0x43, 0x48, 0x41,
+ 0x45, 0x4C, 0x20, 0x47, 0x52, 0x41, 0x59, 0x46,
+ 0x4F, 0x52, 0x44, 0x0D, 0x0D, 0x0D, 0x02, 0x54,
+ 0x4F, 0x57, 0x4E, 0x45, 0x20, 0x4F, 0x46, 0x20,
+ 0x48, 0x49, 0x47, 0x48, 0x4D, 0x4F, 0x4F, 0x4E,
+ 0x0D, 0x0D, 0x03, 0x53, 0x68, 0x65, 0x72, 0x69,
+ 0x66, 0x66, 0x20, 0x20, 0x20, 0x20, 0x05, 0x04,
+ 0x52, 0x41, 0x59, 0x20, 0x46, 0x41, 0x56, 0x45,
+ 0x52, 0x4F, 0x0D, 0x03, 0x43, 0x61, 0x70, 0x27,
+ 0x6E, 0x20, 0x42, 0x6F, 0x62, 0x20, 0x20, 0x20,
+ 0x20, 0x05, 0x04, 0x42, 0x52, 0x49, 0x41, 0x4E,
+ 0x20, 0x53, 0x54, 0x52, 0x4F, 0x4D, 0x0D, 0x03,
+ 0x4F, 0x63, 0x74, 0x6F, 0x70, 0x75, 0x73, 0x20,
+ 0x20, 0x20, 0x20, 0x05, 0x04, 0x43, 0x4C, 0x49,
+ 0x46, 0x46, 0x20, 0x4C, 0x41, 0x57, 0x52, 0x45,
+ 0x4E, 0x43, 0x45, 0x0D, 0x03, 0x50, 0x69, 0x72,
+ 0x61, 0x74, 0x65, 0x20, 0x20, 0x20, 0x20, 0x05,
+ 0x04, 0x44, 0x4F, 0x55, 0x47, 0x20, 0x42, 0x41,
+ 0x4B, 0x45, 0x52, 0x0D, 0x03, 0x4F, 0x74, 0x68,
+ 0x65, 0x72, 0x20, 0x50, 0x69, 0x72, 0x61, 0x74,
+ 0x65, 0x20, 0x20, 0x20, 0x20, 0x05, 0x04, 0x45,
+ 0x52, 0x49, 0x43, 0x20, 0x4D, 0x41, 0x52, 0x54,
+ 0x49, 0x4E, 0x0D, 0x03, 0x41, 0x6E, 0x6F, 0x74,
+ 0x68, 0x65, 0x72, 0x20, 0x50, 0x69, 0x72, 0x61,
+ 0x74, 0x65, 0x20, 0x20, 0x20, 0x20, 0x05, 0x04,
+ 0x45, 0x52, 0x49, 0x43, 0x20, 0x52, 0x41, 0x4E,
+ 0x44, 0x41, 0x4C, 0x4C, 0x0D, 0x03, 0x53, 0x71,
+ 0x75, 0x61, 0x77, 0x6B, 0x79, 0x20, 0x74, 0x68,
+ 0x65, 0x20, 0x50, 0x61, 0x72, 0x72, 0x6F, 0x74,
+ 0x20, 0x20, 0x20, 0x20, 0x05, 0x04, 0x43, 0x4C,
+ 0x49, 0x46, 0x46, 0x20, 0x4C, 0x41, 0x57, 0x52,
+ 0x45, 0x4E, 0x43, 0x45, 0x0D, 0x03, 0x53, 0x61,
+ 0x69, 0x6C, 0x6F, 0x72, 0x20, 0x20, 0x20, 0x20,
+ 0x05, 0x04, 0x54, 0x49, 0x4D, 0x20, 0x43, 0x4C,
+ 0x41, 0x52, 0x4B, 0x0D, 0x03, 0x4F, 0x74, 0x68,
+ 0x65, 0x72, 0x20, 0x53, 0x61, 0x69, 0x6C, 0x6F,
+ 0x72, 0x20, 0x20, 0x20, 0x20, 0x05, 0x04, 0x4D,
+ 0x41, 0x52, 0x43, 0x55, 0x53, 0x20, 0x56, 0x41,
+ 0x55, 0x47, 0x48, 0x4E, 0x0D, 0x03, 0x54, 0x68,
+ 0x65, 0x20, 0x48, 0x61, 0x6E, 0x64, 0x20, 0x20,
+ 0x20, 0x20, 0x05, 0x04, 0x4A, 0x45, 0x4E, 0x4E,
+ 0x59, 0x20, 0x4B, 0x55, 0x43, 0x41, 0x4E, 0x0D,
+ 0x0D, 0x0D, 0x02, 0x56, 0x4F, 0x4C, 0x43, 0x41,
+ 0x4E, 0x49, 0x41, 0x0D, 0x0D, 0x03, 0x4A, 0x65,
+ 0x73, 0x73, 0x69, 0x63, 0x61, 0x20, 0x20, 0x20,
+ 0x20, 0x05, 0x04, 0x4A, 0x55, 0x4C, 0x49, 0x45,
+ 0x20, 0x43, 0x48, 0x49, 0x52, 0x49, 0x4C, 0x41,
+ 0x0D, 0x03, 0x53, 0x6D, 0x61, 0x72, 0x6D, 0x79,
+ 0x20, 0x20, 0x20, 0x20, 0x05, 0x04, 0x44, 0x4F,
+ 0x55, 0x47, 0x20, 0x42, 0x41, 0x4B, 0x45, 0x52,
+ 0x0D, 0x03, 0x42, 0x75, 0x72, 0x65, 0x61, 0x75,
+ 0x63, 0x72, 0x61, 0x74, 0x20, 0x20, 0x20, 0x20,
+ 0x05, 0x04, 0x45, 0x52, 0x49, 0x43, 0x20, 0x52,
+ 0x41, 0x4E, 0x44, 0x41, 0x4C, 0x4C, 0x0D, 0x03,
+ 0x42, 0x75, 0x72, 0x65, 0x61, 0x75, 0x63, 0x72,
+ 0x61, 0x74, 0x72, 0x65, 0x73, 0x73, 0x20, 0x20,
+ 0x20, 0x20, 0x05, 0x04, 0x4A, 0x55, 0x4C, 0x49,
+ 0x45, 0x20, 0x42, 0x41, 0x4C, 0x53, 0x41, 0x4D,
+ 0x4F, 0x0D, 0x03, 0x4D, 0x61, 0x20, 0x20, 0x20,
+ 0x20, 0x05, 0x04, 0x44, 0x45, 0x4E, 0x49, 0x53,
+ 0x45, 0x20, 0x53, 0x43, 0x48, 0x41, 0x46, 0x45,
+ 0x52, 0x0D, 0x03, 0x50, 0x61, 0x20, 0x20, 0x20,
+ 0x20, 0x05, 0x04, 0x4B, 0x45, 0x4E, 0x4E, 0x45,
+ 0x54, 0x48, 0x20, 0x4A, 0x2E, 0x20, 0x4B, 0x55,
+ 0x43, 0x41, 0x4E, 0x0D, 0x03, 0x54, 0x68, 0x65,
+ 0x20, 0x48, 0x61, 0x6E, 0x64, 0x20, 0x20, 0x20,
+ 0x20, 0x05, 0x04, 0x52, 0x41, 0x4D, 0x49, 0x4E,
+ 0x20, 0x46, 0x41, 0x54, 0x48, 0x49, 0x45, 0x0D,
+ 0x0D, 0x0D, 0x02, 0x45, 0x4E, 0x43, 0x48, 0x41,
+ 0x4E, 0x54, 0x45, 0x44, 0x20, 0x46, 0x4F, 0x52,
+ 0x45, 0x53, 0x54, 0x0D, 0x0D, 0x03, 0x4B, 0x6E,
+ 0x69, 0x67, 0x68, 0x74, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x05, 0x04, 0x45, 0x52, 0x49, 0x43, 0x20,
+ 0x4D, 0x41, 0x52, 0x54, 0x49, 0x4E, 0x0D, 0x03,
+ 0x50, 0x65, 0x74, 0x72, 0x69, 0x66, 0x69, 0x65,
+ 0x64, 0x20, 0x54, 0x72, 0x65, 0x65, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x05, 0x04, 0x44, 0x4F, 0x55,
+ 0x47, 0x20, 0x42, 0x41, 0x4B, 0x45, 0x52, 0x0D,
+ 0x03, 0x55, 0x6E, 0x69, 0x6F, 0x6E, 0x20, 0x53,
+ 0x71, 0x75, 0x69, 0x72, 0x72, 0x65, 0x6C, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x05, 0x04, 0x54, 0x49,
+ 0x4D, 0x20, 0x43, 0x4C, 0x41, 0x52, 0x4B, 0x0D,
+ 0x03, 0x4D, 0x79, 0x73, 0x74, 0x69, 0x63, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x05, 0x04, 0x43, 0x48,
+ 0x41, 0x52, 0x4C, 0x45, 0x53, 0x20, 0x4D, 0x4F,
+ 0x53, 0x48, 0x45, 0x52, 0x0D, 0x03, 0x4F, 0x74,
+ 0x68, 0x65, 0x72, 0x20, 0x4D, 0x79, 0x73, 0x74,
+ 0x69, 0x63, 0x20, 0x20, 0x20, 0x20, 0x20, 0x05,
+ 0x04, 0x43, 0x4F, 0x4E, 0x4E, 0x45, 0x52, 0x20,
+ 0x46, 0x52, 0x45, 0x46, 0x46, 0x20, 0x43, 0x4F,
+ 0x43, 0x48, 0x52, 0x41, 0x4E, 0x0D, 0x03, 0x54,
+ 0x68, 0x65, 0x20, 0x48, 0x61, 0x6E, 0x64, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x05, 0x04, 0x4C, 0x59,
+ 0x4E, 0x44, 0x41, 0x20, 0x57, 0x41, 0x53, 0x4B,
+ 0x4F, 0x4D, 0x0D, 0x0D, 0x0D, 0x02, 0x41, 0x4C,
+ 0x50, 0x49, 0x4E, 0x49, 0x41, 0x0D, 0x0D, 0x03,
+ 0x41, 0x62, 0x6F, 0x6D, 0x69, 0x6E, 0x61, 0x62,
+ 0x6C, 0x65, 0x20, 0x53, 0x6E, 0x6F, 0x77, 0x6D,
+ 0x61, 0x6E, 0x20, 0x20, 0x20, 0x20, 0x20, 0x05,
+ 0x04, 0x44, 0x4F, 0x55, 0x47, 0x20, 0x42, 0x41,
+ 0x4B, 0x45, 0x52, 0x0D, 0x03, 0x4D, 0x6F, 0x6D,
+ 0x6D, 0x79, 0x20, 0x20, 0x20, 0x20, 0x20, 0x05,
+ 0x04, 0x44, 0x45, 0x4E, 0x49, 0x53, 0x45, 0x20,
+ 0x53, 0x43, 0x48, 0x41, 0x46, 0x45, 0x52, 0x0D,
+ 0x03, 0x42, 0x61, 0x62, 0x79, 0x20, 0x41, 0x6C,
+ 0x62, 0x65, 0x72, 0x74, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x05, 0x04, 0x54, 0x48, 0x45, 0x4F, 0x44,
+ 0x4F, 0x52, 0x45, 0x20, 0x4D, 0x4F, 0x52, 0x52,
+ 0x49, 0x53, 0x0D, 0x03, 0x48, 0x75, 0x6E, 0x74,
+ 0x65, 0x72, 0x20, 0x20, 0x20, 0x20, 0x20, 0x05,
+ 0x04, 0x42, 0x49, 0x4C, 0x4C, 0x20, 0x43, 0x4F,
+ 0x4C, 0x4C, 0x49, 0x4E, 0x53, 0x0D, 0x03, 0x4F,
+ 0x74, 0x68, 0x65, 0x72, 0x20, 0x48, 0x75, 0x6E,
+ 0x74, 0x65, 0x72, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x05, 0x04, 0x42, 0x4F, 0x42, 0x20, 0x42, 0x4C,
+ 0x4F, 0x4D, 0x47, 0x52, 0x45, 0x4E, 0x0D, 0x03,
+ 0x46, 0x6F, 0x6F, 0x74, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x05, 0x04, 0x53, 0x50, 0x45, 0x45, 0x44,
+ 0x59, 0x20, 0x44, 0x41, 0x57, 0x4E, 0x20, 0x48,
+ 0x55, 0x4E, 0x54, 0x5A, 0x49, 0x4E, 0x47, 0x45,
+ 0x52, 0x0D, 0x03, 0x53, 0x74, 0x75, 0x6E, 0x74,
+ 0x20, 0x48, 0x61, 0x6E, 0x64, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x05, 0x04, 0x44, 0x41, 0x4E, 0x49,
+ 0x45, 0x4C, 0x20, 0x4B, 0x55, 0x43, 0x41, 0x4E,
+ 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
+ 0x02, 0x54, 0x48, 0x45, 0x20, 0x48, 0x41, 0x4E,
+ 0x44, 0x20, 0x4F, 0x46, 0x20, 0x46, 0x41, 0x54,
+ 0x45, 0x0D, 0x02, 0x54, 0x45, 0x41, 0x4D, 0x20,
+ 0x43, 0x44, 0x0D, 0x0D, 0x0D, 0x0D, 0x02, 0x43,
+ 0x6F, 0x64, 0x65, 0x6A, 0x61, 0x6D, 0x6D, 0x65,
+ 0x72, 0x73, 0x0D, 0x02, 0x4D, 0x49, 0x4B, 0x45,
+ 0x20, 0x61, 0x6E, 0x64, 0x20, 0x4D, 0x49, 0x4B,
+ 0x45, 0x0D, 0x0D, 0x02, 0x56, 0x6F, 0x63, 0x61,
+ 0x6C, 0x20, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74,
+ 0x69, 0x6F, 0x6E, 0x20, 0x62, 0x79, 0x0D, 0x02,
+ 0x4A, 0x4F, 0x45, 0x20, 0x4B, 0x55, 0x43, 0x41,
+ 0x4E, 0x0D, 0x0D, 0x02, 0x44, 0x69, 0x67, 0x69,
+ 0x74, 0x61, 0x6C, 0x20, 0x53, 0x61, 0x6D, 0x70,
+ 0x6C, 0x69, 0x6E, 0x67, 0x20, 0x62, 0x79, 0x0D,
+ 0x02, 0x50, 0x41, 0x54, 0x20, 0x43, 0x4F, 0x4C,
+ 0x4C, 0x49, 0x4E, 0x53, 0x20, 0x61, 0x6E, 0x64,
+ 0x20, 0x44, 0x57, 0x49, 0x47, 0x48, 0x54, 0x20,
+ 0x4F, 0x4B, 0x41, 0x48, 0x41, 0x52, 0x41, 0x0D,
+ 0x0D, 0x02, 0x41, 0x75, 0x64, 0x69, 0x6F, 0x20,
+ 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6F,
+ 0x6E, 0x20, 0x62, 0x79, 0x0D, 0x02, 0x50, 0x41,
+ 0x55, 0x4C, 0x20, 0x4D, 0x55, 0x44, 0x52, 0x41,
+ 0x0D, 0x0D, 0x02, 0x52, 0x65, 0x63, 0x6F, 0x72,
+ 0x64, 0x65, 0x64, 0x20, 0x61, 0x6E, 0x64, 0x20,
+ 0x45, 0x6E, 0x67, 0x69, 0x6E, 0x65, 0x65, 0x72,
+ 0x65, 0x64, 0x20, 0x62, 0x79, 0x0D, 0x02, 0x54,
+ 0x4F, 0x54, 0x4F, 0x20, 0x5A, 0x41, 0x52, 0x41,
+ 0x20, 0x61, 0x74, 0x20, 0x4D, 0x69, 0x64, 0x69,
+ 0x57, 0x6F, 0x72, 0x6B, 0x73, 0x0D, 0x0D, 0x02,
+ 0x53, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6C, 0x20,
+ 0x54, 0x65, 0x63, 0x68, 0x6E, 0x6F, 0x2D, 0x57,
+ 0x69, 0x7A, 0x61, 0x72, 0x64, 0x72, 0x79, 0x20,
+ 0x62, 0x79, 0x0D, 0x02, 0x53, 0x43, 0x4F, 0x54,
+ 0x54, 0x20, 0x42, 0x4F, 0x57, 0x45, 0x4E, 0x2C,
+ 0x20, 0x44, 0x41, 0x56, 0x49, 0x44, 0x20, 0x44,
+ 0x45, 0x54, 0x54, 0x4D, 0x45, 0x52, 0x2C, 0x0D,
+ 0x02, 0x61, 0x6E, 0x64, 0x20, 0x4A, 0x4F, 0x45,
+ 0x20, 0x42, 0x4F, 0x53, 0x54, 0x49, 0x43, 0x0D,
+ 0x0D, 0x02, 0x53, 0x75, 0x70, 0x65, 0x72, 0x76,
+ 0x69, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x50, 0x72,
+ 0x6F, 0x64, 0x75, 0x63, 0x65, 0x72, 0x0D, 0x02,
+ 0x52, 0x49, 0x43, 0x4B, 0x20, 0x47, 0x55, 0x53,
+ 0x48, 0x0D, 0x0D, 0x02, 0x50, 0x72, 0x6F, 0x64,
+ 0x75, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x41,
+ 0x73, 0x73, 0x69, 0x73, 0x74, 0x61, 0x6E, 0x74,
+ 0x0D, 0x02, 0x44, 0x41, 0x56, 0x49, 0x44, 0x20,
+ 0x50, 0x4F, 0x4B, 0x4F, 0x52, 0x4E, 0x59, 0x0D,
+ 0x0D, 0x02, 0x50, 0x72, 0x6F, 0x64, 0x75, 0x63,
+ 0x74, 0x20, 0x43, 0x6F, 0x6F, 0x72, 0x64, 0x69,
+ 0x6E, 0x61, 0x74, 0x6F, 0x72, 0x0D, 0x02, 0x4A,
+ 0x45, 0x46, 0x46, 0x20, 0x5A, 0x49, 0x45, 0x4C,
+ 0x0D, 0x0D, 0x02, 0x51, 0x75, 0x61, 0x6C, 0x69,
+ 0x74, 0x79, 0x20, 0x41, 0x73, 0x73, 0x75, 0x72,
+ 0x61, 0x6E, 0x63, 0x65, 0x0D, 0x02, 0x47, 0x4C,
+ 0x45, 0x4E, 0x4E, 0x20, 0x22, 0x47, 0x4C, 0x45,
+ 0x4E, 0x4E, 0x42, 0x4F, 0x22, 0x20, 0x53, 0x50,
+ 0x45, 0x52, 0x52, 0x59, 0x0D, 0x02, 0x42, 0x52,
+ 0x41, 0x44, 0x20, 0x22, 0x53, 0x54, 0x49, 0x4E,
+ 0x47, 0x22, 0x20, 0x52, 0x4F, 0x42, 0x45, 0x52,
+ 0x54, 0x53, 0x0D, 0x02, 0x43, 0x48, 0x41, 0x44,
+ 0x20, 0x53, 0x4F, 0x41, 0x52, 0x45, 0x53, 0x0D,
+ 0x02, 0x43, 0x48, 0x52, 0x49, 0x53, 0x20, 0x4D,
+ 0x63, 0x46, 0x41, 0x52, 0x4C, 0x41, 0x4E, 0x44,
+ 0x0D, 0x02, 0x43, 0x48, 0x52, 0x49, 0x53, 0x20,
+ 0x22, 0x44, 0x4F, 0x4F, 0x4D, 0x22, 0x20, 0x52,
+ 0x55, 0x42, 0x59, 0x4F, 0x52, 0x0D, 0x02, 0x44,
+ 0x41, 0x56, 0x45, 0x20, 0x4D, 0x41, 0x58, 0x45,
+ 0x59, 0x0D, 0x02, 0x4A, 0x45, 0x46, 0x46, 0x20,
+ 0x42, 0x55, 0x43, 0x43, 0x45, 0x4C, 0x4C, 0x41,
+ 0x54, 0x4F, 0x0D, 0x02, 0x4A, 0x45, 0x53, 0x53,
+ 0x45, 0x20, 0x22, 0x4C, 0x41, 0x52, 0x47, 0x45,
+ 0x59, 0x22, 0x20, 0x43, 0x4C, 0x45, 0x4D, 0x49,
+ 0x54, 0x0D, 0x02, 0x4A, 0x4F, 0x48, 0x4E, 0x20,
+ 0x53, 0x57, 0x45, 0x45, 0x4E, 0x59, 0x0D, 0x02,
+ 0x4A, 0x4F, 0x4E, 0x20, 0x57, 0x49, 0x4C, 0x4C,
+ 0x49, 0x41, 0x4D, 0x53, 0x0D, 0x02, 0x4B, 0x45,
+ 0x4E, 0x4E, 0x45, 0x54, 0x48, 0x20, 0x22, 0x45,
+ 0x58, 0x54, 0x45, 0x52, 0x4D, 0x49, 0x4E, 0x41,
+ 0x54, 0x4F, 0x52, 0x22, 0x20, 0x44, 0x55, 0x4E,
+ 0x4E, 0x45, 0x0D, 0x02, 0x4D, 0x49, 0x4B, 0x45,
+ 0x20, 0x22, 0x44, 0x41, 0x52, 0x4B, 0x4E, 0x49,
+ 0x47, 0x48, 0x54, 0x22, 0x20, 0x4C, 0x49, 0x47,
+ 0x48, 0x54, 0x4E, 0x45, 0x52, 0x0D, 0x02, 0x4D,
+ 0x49, 0x54, 0x43, 0x48, 0x20, 0x46, 0x45, 0x4C,
+ 0x44, 0x4D, 0x41, 0x4E, 0x0D, 0x02, 0x50, 0x41,
+ 0x55, 0x4C, 0x20, 0x53, 0x48, 0x4F, 0x45, 0x4E,
+ 0x45, 0x52, 0x0D, 0x02, 0x53, 0x43, 0x4F, 0x54,
+ 0x54, 0x20, 0x4D, 0x41, 0x4E, 0x4E, 0x49, 0x4E,
+ 0x47, 0x0D, 0x02, 0x54, 0x49, 0x4D, 0x20, 0x22,
+ 0x44, 0x41, 0x52, 0x4B, 0x57, 0x4F, 0x4C, 0x46,
+ 0x22, 0x20, 0x46, 0x52, 0x49, 0x54, 0x5A, 0x0D,
+ 0x02, 0x54, 0x52, 0x4F, 0x59, 0x20, 0x4C, 0x45,
+ 0x4F, 0x4E, 0x41, 0x52, 0x44, 0x0D, 0x0D, 0x02,
+ 0x53, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6C, 0x20,
+ 0x54, 0x68, 0x61, 0x6E, 0x6B, 0x73, 0x20, 0x74,
+ 0x6F, 0x0D, 0x02, 0x42, 0x41, 0x52, 0x42, 0x41,
+ 0x52, 0x41, 0x20, 0x52, 0x49, 0x43, 0x48, 0x4D,
+ 0x41, 0x4E, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x02, 0x41, 0x6E, 0x79, 0x20, 0x72,
+ 0x65, 0x73, 0x65, 0x6D, 0x62, 0x6C, 0x61, 0x6E,
+ 0x63, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68,
+ 0x69, 0x73, 0x20, 0x67, 0x61, 0x6D, 0x65, 0x20,
+ 0x74, 0x6F, 0x20, 0x0D, 0x02, 0x70, 0x65, 0x72,
+ 0x73, 0x6F, 0x6E, 0x73, 0x20, 0x6F, 0x72, 0x20,
+ 0x61, 0x70, 0x70, 0x65, 0x6E, 0x64, 0x61, 0x67,
+ 0x65, 0x73, 0x2C, 0x20, 0x6C, 0x69, 0x76, 0x69,
+ 0x6E, 0x67, 0x20, 0x6F, 0x72, 0x0D, 0x02, 0x64,
+ 0x65, 0x61, 0x64, 0x2C, 0x20, 0x69, 0x73, 0x20,
+ 0x70, 0x75, 0x72, 0x65, 0x6C, 0x79, 0x20, 0x63,
+ 0x6F, 0x69, 0x6E, 0x63, 0x69, 0x64, 0x65, 0x6E,
+ 0x74, 0x61, 0x6C, 0x2E, 0x0D, 0x0D, 0x02, 0x43,
+ 0x6F, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74,
+ 0x20, 0x28, 0x43, 0x29, 0x20, 0x31, 0x39, 0x39,
+ 0x34, 0x2C, 0x20, 0x57, 0x65, 0x73, 0x74, 0x77,
+ 0x6F, 0x6F, 0x64, 0x20, 0x53, 0x74, 0x75, 0x64,
+ 0x69, 0x6F, 0x73, 0x2C, 0x20, 0x49, 0x6E, 0x63,
+ 0x2E, 0x0D, 0x02, 0x41, 0x6C, 0x6C, 0x20, 0x72,
+ 0x69, 0x67, 0x68, 0x74, 0x73, 0x20, 0x72, 0x65,
+ 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x2E, 0x0D,
+ 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x00
+};
+
+static const ByteProvider k2SeqplayCreditsDOSCDDemoProvider = { ARRAYSIZE(k2SeqplayCreditsDOSCDDemo), k2SeqplayCreditsDOSCDDemo };
+
+static const char *const k2SeqplayCreditsSpecialDOSCDDemo[2] = {
+ "Codejammers",
+ "MIKE and MIKE"
+};
+
+static const StringListProvider k2SeqplayCreditsSpecialDOSCDDemoProvider = { ARRAYSIZE(k2SeqplayCreditsSpecialDOSCDDemo), k2SeqplayCreditsSpecialDOSCDDemo };
+
+static const char *const k2SeqplaySfxFilesDOSCDDemo[48] = {
+ "eintro1",
+ "eintro2",
+ "eintro3",
+ "eintro4",
+ "eintro5",
+ "eintro6",
+ "eintro7",
+ "eintro8",
+ "eintro9",
+ "eintro10",
+ "eintro11",
+ "eintro12",
+ "eglow",
+ "0000210",
+ "0000130",
+ "0000180",
+ "0000160",
+ "asong",
+ "crowcaw",
+ "eyerub2",
+ "pluck3",
+ "rodnreel",
+ "frog1",
+ "scavmov2",
+ "lambmom3",
+ "lambkid1",
+ "thunder2",
+ "thunder3",
+ "wind6",
+ "h2odrop2",
+ "gasleak",
+ "polgulp1",
+ "hndslap1",
+ "burp1",
+ "0000220",
+ "0000230",
+ "0000250",
+ "0000260",
+ "0000270",
+ "0000280",
+ "0000290",
+ "0000300",
+ "0000310",
+ "0000320",
+ "0000330",
+ "scream1",
+ "theend",
+ ""
+};
+
+static const StringListProvider k2SeqplaySfxFilesDOSCDDemoProvider = { ARRAYSIZE(k2SeqplaySfxFilesDOSCDDemo), k2SeqplaySfxFilesDOSCDDemo };
+
+static const HoFSequence k2SeqplaySeqDataDOSCDDemoSeq[16] = {
+ { 0x0002, "", "virgin.cps", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x0001, 0x0064, 0, 0, 0x001E },
+ { 0x0001, "westwood.wsa", "", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x0012, 0x0006, 0, 0, 0x00A0 },
+ { 0x0001, "title.wsa", "", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x001A, 0x0006, 0, 0, 0x000A },
+ { 0x0002, "", "over.cps", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x0001, 0x0E10, 0, 0, 0x001E },
+ { 0x0002, "", "library.cps", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x0001, 0x0E10, 0, 0, 0x001E },
+ { 0x0002, "", "hand.cps", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x0001, 0x0E10, 0, 0, 0x005A },
+ { 0x0001, "point.wsa", "", 4, 8, 0xFFFF, 0xFFFF, 0x0000, 0x0026, 0x0007, 0, 0, 0x00C8 },
+ { 0x0001, "zanfaun.wsa", "", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x0033, 0x0010, 0, 0, 0x00F0 },
+ { 0x0001, "funters.wsa", "", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x001B, 0x000C, 0, 0, 0x001E },
+ { 0x0001, "ferb.wsa", "", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x001B, 0x0010, 0, 0, 0x001E },
+ { 0x0001, "fish.wsa", "", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x0038, 0x000C, 0, 0, 0x001E },
+ { 0x0001, "fheep.wsa", "", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x000B, 0x000C, 0, 0, 0x001E },
+ { 0x0001, "farmer.wsa", "", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x0016, 0x000C, 0, 0, 0x0064 },
+ { 0x0001, "fuards.wsa", "", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x0018, 0x000E, 0, 0, 0x001E },
+ { 0x0001, "firates.wsa", "", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x0025, 0x000C, 0, 0, 0x001E },
+ { 0x0001, "frash.wsa", "", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x000C, 0x000A, 0, 0, 0x0154 }
+};
+
+static const FrameControl k2SeqplaySeqDataDOSCDDemoSeqNestedControl7[18] = {
+ { 0, 10 },
+ { 1, 10 },
+ { 2, 10 },
+ { 3, 10 },
+ { 4, 10 },
+ { 5, 10 },
+ { 6, 10 },
+ { 7, 10 },
+ { 8, 10 },
+ { 9, 10 },
+ { 8, 10 },
+ { 7, 10 },
+ { 6, 10 },
+ { 5, 40 },
+ { 4, 10 },
+ { 3, 10 },
+ { 2, 10 },
+ { 1, 10 }
+};
+
+static const FrameControl k2SeqplaySeqDataDOSCDDemoSeqNestedControl10[17] = {
+ { 0, 6 },
+ { 1, 6 },
+ { 2, 6 },
+ { 3, 6 },
+ { 4, 6 },
+ { 5, 6 },
+ { 6, 6 },
+ { 7, 6 },
+ { 8, 6 },
+ { 9, 6 },
+ { 10, 6 },
+ { 11, 6 },
+ { 11, 12 },
+ { 12, 12 },
+ { 13, 12 },
+ { 12, 12 },
+ { 11, 12 }
+};
+
+static const FrameControl k2SeqplaySeqDataDOSCDDemoSeqNestedControl11[9] = {
+ { 0, 6 },
+ { 1, 6 },
+ { 2, 6 },
+ { 3, 6 },
+ { 4, 6 },
+ { 3, 6 },
+ { 4, 6 },
+ { 5, 64 },
+ { 5, 6 }
+};
+
+static const FrameControl k2SeqplaySeqDataDOSCDDemoSeqNestedControl12[16] = {
+ { 0, 6 },
+ { 1, 6 },
+ { 0, 6 },
+ { 1, 6 },
+ { 0, 6 },
+ { 1, 6 },
+ { 0, 6 },
+ { 1, 6 },
+ { 0, 6 },
+ { 1, 6 },
+ { 0, 6 },
+ { 1, 6 },
+ { 0, 6 },
+ { 1, 6 },
+ { 0, 6 },
+ { 1, 6 }
+};
+
+static const FrameControl k2SeqplaySeqDataDOSCDDemoSeqNestedControl13[5] = {
+ { 0, 6 },
+ { 1, 6 },
+ { 2, 6 },
+ { 1, 6 },
+ { 0, 1 }
+};
+
+static const FrameControl k2SeqplaySeqDataDOSCDDemoSeqNestedControl14[8] = {
+ { 0, 6 },
+ { 1, 6 },
+ { 2, 6 },
+ { 3, 6 },
+ { 4, 6 },
+ { 3, 6 },
+ { 2, 6 },
+ { 1, 6 }
+};
+
+static const HoFNestedSequence k2SeqplaySeqDataDOSCDDemoSeqNested[15] = {
+ { 0x000C, "figgle.wsa", 0, 3, 60, 0, 0, 0, NULL, 0, 0 },
+ { 0x0008, "over1.wsa", 0, 10, 10, 0, 0, 0, NULL, 0, 0 },
+ { 0x0008, "over2.wsa", 0, 11, 9, 0, 0, 0, NULL, 0, 0 },
+ { 0x0008, "forest.wsa", 0, 22, 6, 0, 0, 0, NULL, 1, 3 },
+ { 0x0008, "dragon.wsa", 0, 11, 6, 0, 0, 0, NULL, 2, 0 },
+ { 0x0002, "darm.wsa", 0, 19, 9, 0, 0, 0, NULL, 4, 0 },
+ { 0x0002, "library.wsa", 0, 33, 9, 0, 0, 0, NULL, 4, 0 },
+ { 0x002A, "library.wsa", 0, 18, 9, 0, 0, ARRAYSIZE(k2SeqplaySeqDataDOSCDDemoSeqNestedControl7), k2SeqplaySeqDataDOSCDDemoSeqNestedControl7, 0, 0 },
+ { 0x000A, "marco.wsa", 0, 37, 9, 0, 0, 0, NULL, 4, 0 },
+ { 0x0002, "hand1a.wsa", 0, 34, 9, 0, 0, 0, NULL, 0, 0 },
+ { 0x002A, "hand1b.wsa", 0, 16, 9, 0, 0, ARRAYSIZE(k2SeqplaySeqDataDOSCDDemoSeqNestedControl10), k2SeqplaySeqDataDOSCDDemoSeqNestedControl10, 0, 0 },
+ { 0x002A, "hand1c.wsa", 0, 9, 9, 0, 0, ARRAYSIZE(k2SeqplaySeqDataDOSCDDemoSeqNestedControl11), k2SeqplaySeqDataDOSCDDemoSeqNestedControl11, 0, 0 },
+ { 0x002C, "hand2.wsa", 0, 2, 9, 0, 0, ARRAYSIZE(k2SeqplaySeqDataDOSCDDemoSeqNestedControl12), k2SeqplaySeqDataDOSCDDemoSeqNestedControl12, 5, 0 },
+ { 0x002C, "hand3.wsa", 0, 4, 9, 0, 0, ARRAYSIZE(k2SeqplaySeqDataDOSCDDemoSeqNestedControl13), k2SeqplaySeqDataDOSCDDemoSeqNestedControl13, 5, 0 },
+ { 0x002C, "hand4.wsa", 0, 8, 9, 0, 0, ARRAYSIZE(k2SeqplaySeqDataDOSCDDemoSeqNestedControl14), k2SeqplaySeqDataDOSCDDemoSeqNestedControl14, 5, 0 }
+};
+
+static const HoFSequenceProvider k2SeqplaySeqDataDOSCDDemoProvider = { ARRAYSIZE(k2SeqplaySeqDataDOSCDDemoSeq), k2SeqplaySeqDataDOSCDDemoSeq, ARRAYSIZE(k2SeqplaySeqDataDOSCDDemoSeqNested), k2SeqplaySeqDataDOSCDDemoSeqNested };
+
+static const char *const k2SeqplayIntroTracksDOSCDDemo[1] = {
+ "k2intro"
+};
+
+static const StringListProvider k2SeqplayIntroTracksDOSCDDemoProvider = { ARRAYSIZE(k2SeqplayIntroTracksDOSCDDemo), k2SeqplayIntroTracksDOSCDDemo };
+
+static const char *const k2SeqplayFinaleTracksDOSCDDemo[1] = {
+ "k2finale"
+};
+
+static const StringListProvider k2SeqplayFinaleTracksDOSCDDemoProvider = { ARRAYSIZE(k2SeqplayFinaleTracksDOSCDDemo), k2SeqplayFinaleTracksDOSCDDemo };
+
+static const char *const k2IngameSfxFilesDOSCDDemo[178] = {
+ "ALCHEMY2",
+ "BIGSLAM",
+ "BITE1",
+ "BLINK1",
+ "BOING1",
+ "BUBBLE1",
+ "BUBBLE2",
+ "BURP1",
+ "BUTTON6",
+ "CAULDRN2",
+ "CHEST",
+ "CLOTHES1",
+ "CROCLAF4",
+ "CRY1",
+ "CRY2",
+ "DOORMTCL",
+ "DOORMTOP",
+ "DOORWDCL",
+ "DOORWDOP",
+ "DRUM1",
+ "DRUM2",
+ "DRUM3",
+ "DRUM4",
+ "DRUM5",
+ "DRUM6",
+ "DRUM7",
+ "EYERUB2",
+ "FALL1",
+ "FALL3",
+ "FNGRSNAP",
+ "FORMSPL1",
+ "FROG1",
+ "FROGMIX2",
+ "GASLEAK",
+ "GLOWY1",
+ "GOOD3",
+ "GOOD5",
+ "GROWTWIG",
+ "H2ODROP2",
+ "H2OPLANT",
+ "HACHUCKD",
+ "HAYFALL2",
+ "HAYSRCH4",
+ "ICECUBE",
+ "KEYOPEN",
+ "LAMBKID1",
+ "LAMBMOM3",
+ "LAUGH1",
+ "LAUGH3",
+ "LAUGH4",
+ "LIZLISP",
+ "MAKESPL1",
+ "MSTDOOM1",
+ "ORCMOVE",
+ "PLUCK3",
+ "POLGULP1",
+ "PORTCUL",
+ "POURH20",
+ "RIP2",
+ "RODNREEL",
+ "ROWBOAT1",
+ "RUCKUS1",
+ "SCAVMOV2",
+ "SCRATCH1",
+ "SNAKSPEL",
+ "SNEEZE1",
+ "SNIFF1",
+ "SNOREIN3",
+ "SNOROUT",
+ "SPLASH1",
+ "SQUEAK1",
+ "SQUEAK2",
+ "SQUEAK3",
+ "SQUISH1",
+ "SQUISH2",
+ "STEAM",
+ "STEAM3",
+ "STRETCH1",
+ "SWING",
+ "TREZA1",
+ "TURNPAG2",
+ "TWIGSNAP",
+ "UGH1",
+ "WHEEL4",
+ "WINGS1",
+ "YAWN1",
+ "ZOOM5",
+ "FILBOTL",
+ "H2OPOUR1",
+ "JAILDOR1",
+ "JAILLOK1",
+ "CASHREG1",
+ "SWISH1",
+ "TURNBOAT",
+ "CLAPPING",
+ "CRUNCH1",
+ "WHEEL6",
+ "LITEMAG",
+ "SHELDOWN",
+ "SHELSLID",
+ "ZOW2",
+ "ZANLOOP1",
+ "SCREECH2",
+ "PANTING",
+ "TREX1",
+ "TREX5",
+ "TREX3",
+ "QUAKE",
+ "WRINGH2O",
+ "SPLAT2",
+ "OCEAN1",
+ "SPLAT3",
+ "CROCLAF5",
+ "FALL5",
+ "ZCMON2",
+ "ZWAIT3",
+ "ZNO2",
+ "CROCLAF7",
+ "CRICKET1",
+ "FIREBRTH",
+ "COW2",
+ "SAP2",
+ "PMTLHI",
+ "FROGSIGH",
+ "CRICEND",
+ "CRY3",
+ "CRY4",
+ "SHROOM1",
+ "DRIP1",
+ "SWIM4",
+ "CUCKOO2",
+ "PUNCH1",
+ "SNORT3",
+ "STAMPER2",
+ "WALLFALL",
+ "WOODFAL1",
+ "SPRAY1",
+ "OHNO1",
+ "YAHOO1",
+ "YIPEE1",
+ "WIND1",
+ "WIND3",
+ "WIND6",
+ "BLOWUP2",
+ "BOATLOP2",
+ "ZGIGGL1",
+ "ZCOUGH1",
+ "CRUSH",
+ "ALARM3",
+ "APPLEAT",
+ "BABYCRY1",
+ "BABYLAF1",
+ "BABYLIK1",
+ "GEARMX3",
+ "GLASBRK2",
+ "HANDKIL1",
+ "HNDSLAP1",
+ "ICEPICK1",
+ "KISS3",
+ "LOLIFAL1",
+ "PAGEBURN",
+ "PRTYHORN",
+ "SCREAM1",
+ "SPARKHIT",
+ "SPRING2",
+ "ZANLAND1",
+ "BIGBOW",
+ "BOWFORM",
+ "BULBHIT",
+ "EYELITE",
+ "ROOFBOW",
+ "FBIGFOT1",
+ "BIGFOOT4",
+ "DORSTNCL",
+ "CROWCAW",
+ "THUNDER2",
+ "THUNDER3",
+ "TOILET"
+};
+
+static const StringListProvider k2IngameSfxFilesDOSCDDemoProvider = { ARRAYSIZE(k2IngameSfxFilesDOSCDDemo), k2IngameSfxFilesDOSCDDemo };
+
+static const byte k2IngameSfxIndexDOSCDDemo[856] = {
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00,
+ 0x37, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
+ 0x47, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00,
+ 0x1F, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00,
+ 0x25, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00,
+ 0x36, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00,
+ 0x3F, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00,
+ 0x45, 0x00, 0x00, 0x00, 0x4D, 0x00, 0x00, 0x00,
+ 0x7B, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00,
+ 0x3C, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x00, 0x00,
+ 0x4E, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x00, 0x43, 0x00, 0x04, 0x00,
+ 0x56, 0x00, 0x00, 0x00, 0x40, 0x00, 0x05, 0x00,
+ 0x40, 0x00, 0x05, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0x64, 0x00, 0x00, 0x00, 0x4C, 0x00, 0x00, 0x00,
+ 0x12, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00,
+ 0x37, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00,
+ 0x1D, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
+ 0x49, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00,
+ 0x0A, 0x00, 0x00, 0x00, 0x4A, 0x00, 0x00, 0x00,
+ 0x09, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
+ 0x0D, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00,
+ 0x53, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00,
+ 0x0C, 0x00, 0x00, 0x00, 0x4B, 0x00, 0x00, 0x00,
+ 0x21, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00,
+ 0x32, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
+ 0x1B, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00,
+ 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
+ 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00,
+ 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00,
+ 0x19, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00,
+ 0x1A, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00,
+ 0x77, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x00, 0x00,
+ 0x55, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00,
+ 0x2A, 0x00, 0x00, 0x00, 0x2E, 0x00, 0x00, 0x00,
+ 0x2D, 0x00, 0x00, 0x00, 0x27, 0x00, 0x05, 0x00,
+ 0x25, 0x00, 0x00, 0x00, 0x46, 0x00, 0x05, 0x00,
+ 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
+ 0x34, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00,
+ 0x4F, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00,
+ 0x0F, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
+ 0x0A, 0x00, 0x00, 0x00, 0x78, 0x00, 0x06, 0x00,
+ 0x50, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x33, 0x00, 0x06, 0x00, 0x3A, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0x1E, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00,
+ 0x23, 0x00, 0x05, 0x00, 0x24, 0x00, 0x05, 0x00,
+ 0x3E, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00,
+ 0x48, 0x00, 0x05, 0x00, 0x20, 0x00, 0x00, 0x00,
+ 0x63, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0x7A, 0x00, 0x00, 0x00, 0x5E, 0x00, 0x00, 0x00,
+ 0x5B, 0x00, 0x00, 0x00, 0x5A, 0x00, 0x00, 0x00,
+ 0x10, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00,
+ 0x5D, 0x00, 0x00, 0x00, 0x5C, 0x00, 0x00, 0x00,
+ 0x57, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00,
+ 0x30, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00,
+ 0x61, 0x00, 0x05, 0x00, 0x58, 0x00, 0x00, 0x00,
+ 0x5F, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0x65, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00,
+ 0x67, 0x00, 0x00, 0x00, 0x68, 0x00, 0x05, 0x00,
+ 0x69, 0x00, 0x05, 0x00, 0x6A, 0x00, 0x05, 0x00,
+ 0x01, 0x00, 0x05, 0x00, 0x6B, 0x00, 0x00, 0x00,
+ 0x6C, 0x00, 0x00, 0x00, 0x6D, 0x00, 0x00, 0x00,
+ 0x90, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0x6F, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00,
+ 0x71, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00,
+ 0x73, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00,
+ 0x75, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00,
+ 0x7F, 0x00, 0x06, 0x00, 0x7D, 0x00, 0x00, 0x00,
+ 0x7E, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00,
+ 0x80, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00,
+ 0x84, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00,
+ 0x82, 0x00, 0x05, 0x00, 0x86, 0x00, 0x00, 0x00,
+ 0x88, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00,
+ 0x8A, 0x00, 0x00, 0x00, 0x8B, 0x00, 0x00, 0x00,
+ 0x87, 0x00, 0x00, 0x00, 0x8C, 0x00, 0x00, 0x00,
+ 0x8D, 0x00, 0x00, 0x00, 0x8E, 0x00, 0x00, 0x00,
+ 0x8F, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00,
+ 0x91, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00,
+ 0x93, 0x00, 0x05, 0x00, 0x94, 0x00, 0x00, 0x00,
+ 0x5F, 0x00, 0x00, 0x00, 0x96, 0x00, 0x05, 0x00,
+ 0x97, 0x00, 0x00, 0x00, 0x98, 0x00, 0x04, 0x00,
+ 0x99, 0x00, 0x00, 0x00, 0x9A, 0x00, 0x00, 0x00,
+ 0x9B, 0x00, 0x00, 0x00, 0x9C, 0x00, 0x00, 0x00,
+ 0x9D, 0x00, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x00,
+ 0x9F, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00,
+ 0xA1, 0x00, 0x00, 0x00, 0xA2, 0x00, 0x00, 0x00,
+ 0xA3, 0x00, 0x00, 0x00, 0xA4, 0x00, 0x00, 0x00,
+ 0xA5, 0x00, 0x00, 0x00, 0xA6, 0x00, 0x00, 0x00,
+ 0xA7, 0x00, 0x00, 0x00, 0xA8, 0x00, 0x00, 0x00,
+ 0xA9, 0x00, 0x00, 0x00, 0xAA, 0x00, 0x00, 0x00,
+ 0xAB, 0x00, 0x00, 0x00, 0xAC, 0x00, 0x00, 0x00,
+ 0xAD, 0x00, 0x00, 0x00, 0xAE, 0x00, 0x05, 0x00,
+ 0xAF, 0x00, 0x00, 0x00, 0xB0, 0x00, 0x00, 0x00,
+ 0xB1, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const ByteProvider k2IngameSfxIndexDOSCDDemoProvider = { ARRAYSIZE(k2IngameSfxIndexDOSCDDemo), k2IngameSfxIndexDOSCDDemo };
+
+static const char *const k2IngameTracksDOSCDDemo[15] = {
+ "K2TEST1",
+ "K2TEST2",
+ "K2TEST3",
+ "K2TEST4",
+ "K2TEST5",
+ "K2TEST6",
+ "K2TEST7",
+ "K2TEST8",
+ "K2TEST9",
+ "K2TEST10",
+ "K2TEST11",
+ "K2TEST12",
+ "K2TEST13",
+ "K2TEST14",
+ "K2TEST15"
+};
+
+static const StringListProvider k2IngameTracksDOSCDDemoProvider = { ARRAYSIZE(k2IngameTracksDOSCDDemo), k2IngameTracksDOSCDDemo };
+
+static const byte k2IngameTalkObjIndexDOSCDDemo[132] = {
+ 0x20, 0x43, 0x6F, 0x72, 0x72, 0x75, 0x70, 0x74,
+ 0x21, 0x21, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x12, 0x00, 0x18, 0x00, 0x26, 0x00, 0x41, 0x00,
+ 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00,
+ 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00,
+ 0x08, 0x00, 0x09, 0x00, 0x0A, 0x00, 0x11, 0x00,
+ 0x12, 0x00, 0x13, 0x00, 0x14, 0x00, 0x15, 0x00,
+ 0x2A, 0x00, 0x17, 0x00, 0x18, 0x00, 0x19, 0x00,
+ 0x1A, 0x00, 0x1B, 0x00, 0x1C, 0x00, 0x1D, 0x00,
+ 0x1E, 0x00, 0x1F, 0x00, 0x20, 0x00, 0x21, 0x00,
+ 0x22, 0x00, 0x23, 0x00, 0x24, 0x00, 0x30, 0x00,
+ 0x35, 0x00, 0x36, 0x00, 0x37, 0x00, 0x39, 0x00,
+ 0x3A, 0x00, 0x3B, 0x00, 0x3D, 0x00, 0x3E, 0x00,
+ 0x3F, 0x00, 0x40, 0x00, 0x41, 0x00, 0x42, 0x00,
+ 0x43, 0x00, 0x44, 0x00, 0x45, 0x00, 0x46, 0x00,
+ 0x47, 0x00, 0x5B, 0x00, 0x69, 0x00, 0x6E, 0x00,
+ 0x72, 0x00, 0x76, 0x00
+};
+
+static const ByteProvider k2IngameTalkObjIndexDOSCDDemoProvider = { ARRAYSIZE(k2IngameTalkObjIndexDOSCDDemo), k2IngameTalkObjIndexDOSCDDemo };
+
+static const FrameControl k2IngameShapeAnimDataDOSCDDemo0FrameControl[12] = {
+ { 0x0006, 0x00F0 },
+ { 0x002A, 0x000E },
+ { 0x002B, 0x000E },
+ { 0x002C, 0x000E },
+ { 0x0006, 0x000E },
+ { 0x002A, 0x000E },
+ { 0x002B, 0x000E },
+ { 0x002C, 0x000E },
+ { 0x0006, 0x000E },
+ { 0x002A, 0x000E },
+ { 0x002B, 0x000E },
+ { 0x002C, 0x000E }
+};
+
+static const FrameControl k2IngameShapeAnimDataDOSCDDemo1FrameControl[6] = {
+ { 0x0002, 0x012C },
+ { 0x002D, 0x012C },
+ { 0x002E, 0x012C },
+ { 0x002F, 0x012C },
+ { 0x002E, 0x012C },
+ { 0x002D, 0x012C }
+};
+
+static const FrameControl k2IngameShapeAnimDataDOSCDDemo2FrameControl[6] = {
+ { 0x000B, 0x0258 },
+ { 0x0030, 0x0005 },
+ { 0x0031, 0x0005 },
+ { 0x0032, 0x0005 },
+ { 0x0031, 0x0005 },
+ { 0x0030, 0x0005 }
+};
+
+static const FrameControl k2IngameShapeAnimDataDOSCDDemo3FrameControl[4] = {
+ { 0x001C, 0x0014 },
+ { 0x004E, 0x0014 },
+ { 0x004F, 0x0014 },
+ { 0x0050, 0x0014 }
+};
+
+static const FrameControl k2IngameShapeAnimDataDOSCDDemo4FrameControl[4] = {
+ { 0x0017, 0x0007 },
+ { 0x0051, 0x0007 },
+ { 0x0052, 0x0007 },
+ { 0x0053, 0x0007 }
+};
+
+static const FrameControl k2IngameShapeAnimDataDOSCDDemo5FrameControl[4] = {
+ { 0x0016, 0x0014 },
+ { 0x0054, 0x0014 },
+ { 0x0055, 0x0014 },
+ { 0x0056, 0x0014 }
+};
+
+static const FrameControl k2IngameShapeAnimDataDOSCDDemo6FrameControl[4] = {
+ { 0x003A, 0x003C },
+ { 0x0057, 0x003C },
+ { 0x0058, 0x003C },
+ { 0x0059, 0x003C }
+};
+
+static const FrameControl k2IngameShapeAnimDataDOSCDDemo7FrameControl[4] = {
+ { 0x001A, 0x0032 },
+ { 0x005A, 0x0032 },
+ { 0x005B, 0x0032 },
+ { 0x005C, 0x0032 }
+};
+
+static const FrameControl k2IngameShapeAnimDataDOSCDDemo8FrameControl[4] = {
+ { 0x006D, 0x000C },
+ { 0x006E, 0x000C },
+ { 0x006F, 0x000C },
+ { 0x0070, 0x000C }
+};
+
+static const FrameControl k2IngameShapeAnimDataDOSCDDemo9FrameControl[4] = {
+ { 0x0079, 0x0008 },
+ { 0x007A, 0x0008 },
+ { 0x007B, 0x0008 },
+ { 0x007C, 0x0008 }
+};
+
+static const FrameControl k2IngameShapeAnimDataDOSCDDemo10FrameControl[4] = {
+ { 0x007E, 0x0008 },
+ { 0x007F, 0x0008 },
+ { 0x0080, 0x0008 },
+ { 0x0081, 0x0008 }
+};
+
+static const FrameControl k2IngameShapeAnimDataDOSCDDemo11FrameControl[6] = {
+ { 0x0091, 0x01A4 },
+ { 0x0092, 0x0004 },
+ { 0x0093, 0x0004 },
+ { 0x0094, 0x0004 },
+ { 0x0093, 0x0004 },
+ { 0x0092, 0x0004 }
+};
+
+static const FrameControl k2IngameShapeAnimDataDOSCDDemo12FrameControl[4] = {
+ { 0x0095, 0x0006 },
+ { 0x0096, 0x0006 },
+ { 0x0097, 0x0006 },
+ { 0x0098, 0x0006 }
+};
+
+static const FrameControl k2IngameShapeAnimDataDOSCDDemo13FrameControl[4] = {
+ { 0x0099, 0x002D },
+ { 0x009A, 0x002D },
+ { 0x009B, 0x002D },
+ { 0x009C, 0x002D }
+};
+
+static const ItemAnimDefinition k2IngameShapeAnimDataDOSCDDemo[14] = {
+ { 6, 12, k2IngameShapeAnimDataDOSCDDemo0FrameControl },
+ { 2, 6, k2IngameShapeAnimDataDOSCDDemo1FrameControl },
+ { 11, 6, k2IngameShapeAnimDataDOSCDDemo2FrameControl },
+ { 28, 4, k2IngameShapeAnimDataDOSCDDemo3FrameControl },
+ { 23, 4, k2IngameShapeAnimDataDOSCDDemo4FrameControl },
+ { 22, 4, k2IngameShapeAnimDataDOSCDDemo5FrameControl },
+ { 58, 4, k2IngameShapeAnimDataDOSCDDemo6FrameControl },
+ { 26, 4, k2IngameShapeAnimDataDOSCDDemo7FrameControl },
+ { 109, 4, k2IngameShapeAnimDataDOSCDDemo8FrameControl },
+ { 121, 4, k2IngameShapeAnimDataDOSCDDemo9FrameControl },
+ { 126, 4, k2IngameShapeAnimDataDOSCDDemo10FrameControl },
+ { 145, 6, k2IngameShapeAnimDataDOSCDDemo11FrameControl },
+ { 149, 4, k2IngameShapeAnimDataDOSCDDemo12FrameControl },
+ { 153, 4, k2IngameShapeAnimDataDOSCDDemo13FrameControl }
+};
+
+static const ItemAnimDefinitionProvider k2IngameShapeAnimDataDOSCDDemoProvider = { ARRAYSIZE(k2IngameShapeAnimDataDOSCDDemo), k2IngameShapeAnimDataDOSCDDemo };
+
diff --git a/devtools/create_kyradat/resources/hof_dos_cddemo_english.h b/devtools/create_kyradat/resources/hof_dos_cddemo_english.h
new file mode 100644
index 0000000000..4b6293363a
--- /dev/null
+++ b/devtools/create_kyradat/resources/hof_dos_cddemo_english.h
@@ -0,0 +1,139 @@
+static const char *const k2SeqplayStringsDOSCDDemoEnglish[104] = {
+ "Kyrandia is disappearing!",
+ "Rock by rock...",
+ "...and tree by tree.",
+ "Kyrandia ceases to exist!",
+ "The Royal Mystics are baffled.",
+ "Every reference has been consulted.",
+ "Even Marko and his new valet have been allowed into the conference.",
+ "Luckily, the Hand was experienced in these matters.",
+ "And finally a plan was approved...",
+ "...that required a magic Anchor Stone...",
+ "...to be retrieved from the center of the world.",
+ "Zanthia, youngest of the Kyrandian Mystics, has been selected to retrieve the Stone.",
+ "Thank you for playing The Hand of Fate.",
+ "This should be enough blueberries to open a portal to the center of the world.",
+ " DUMMY STRING... ",
+ " DUMMY STRING... ",
+ "Hey! All my equipment has been stolen!",
+ " DUMMY STRING... ",
+ "If they think I'm going to walk all the way down there, they're nuts!",
+ " DUMMY STRING... ",
+ " DUMMY STRING... ",
+ "Hurry up Faun!",
+ "Boy, that was a close call!",
+ "You said it pal. I, for one, am never going hunting again!",
+ "Ribbit.",
+ "How many times do I have to tell you? You're a toad.",
+ "Oh no! We're out of cheese!",
+ "Let's try this earwax. It's orange.",
+ "Mommy, when do I get the ivy?",
+ "Get out of here, shoo!",
+ "You cut, and I'll choose.",
+ "No. You cut and I'll choose.",
+ "I still say it was derivative drivel.",
+ "Aw, you still wouldn't recognize iambic pentameter if it bit you on the butt!",
+ "Executive Producer",
+ "Brett W. Sperry",
+ "Direction & Design",
+ "Rick Gush",
+ "Lead Programmer",
+ "Michael Legg",
+ "Art Management",
+ "Louis Castle",
+ "Joseph B. Hewitt IV",
+ "Lead Artist",
+ "Rick Parks",
+ "Additional Coding by",
+ "Philip W. Gorrow",
+ "Mike Grayford",
+ "Mark McCubbin",
+ "Artists",
+ "Cameron Chun",
+ "Cary Averett",
+ "Cindy Chinn",
+ "Elie Arabian",
+ "Fei Cheng",
+ "Ferby Miguel",
+ "Frank Mendeola",
+ "Jack Martin",
+ "Jerry Moore",
+ "DUMMY STRING... ",
+ "Judith Peterson",
+ "Larry Miller",
+ "Lenny Lee",
+ "Louise Sandoval",
+ "Ren Olsen",
+ "Music & Sounds by",
+ "Paul Mudra",
+ "Frank Klepacki",
+ "Dwight Okahara",
+ "Pat Collins",
+ "Quality Assurance by",
+ "Glenn Sperry",
+ "Michael Lightner",
+ "William Foster",
+ "Jesse Clemit",
+ "Jeff Fillhaber",
+ "Manual, Package Design",
+ "& Fulfillment",
+ "Eydie Laramore",
+ "Lisa Marcinko",
+ "Lauren Rifkin",
+ "Congratulations!",
+ "Thank you for playing The Hand of Fate!",
+ "Guest Coding",
+ "Producer Liaison",
+ "Scott Duckett",
+ "Irvine Testers",
+ "Chris McFarland",
+ "Paul Moore",
+ "Chad Soares",
+ "Jared Brinkley",
+ "Jon Willliams",
+ "Chris Toft",
+ "Joe Kucan's Hair by",
+ "Theodore A. Morris",
+ "Load a game",
+ "Introduction",
+ "Start a new game",
+ "Exit the game",
+ "Special Thanks to",
+ "Sake Joe Bostic-san",
+ "Tim Fritz",
+ "Kenny Dunne",
+ "Thank you for playing \"The Hand of Fate.\"\n"
+};
+
+static const StringListProvider k2SeqplayStringsDOSCDDemoEnglishProvider = { ARRAYSIZE(k2SeqplayStringsDOSCDDemoEnglish), k2SeqplayStringsDOSCDDemoEnglish };
+
+static const char *const k2SeqplayTlkFilesDOSCDDemoEnglish[14] = {
+ "EINTRO1",
+ "EINTRO2",
+ "EINTRO3",
+ "EINTRO4",
+ "EINTRO5",
+ "EINTRO6",
+ "EINTRO7",
+ "EINTRO8",
+ "EINTRO9",
+ "EINTRO10",
+ "EINTRO11",
+ "EINTRO12",
+ "EGLOW",
+ ""
+};
+
+static const StringListProvider k2SeqplayTlkFilesDOSCDDemoEnglishProvider = { ARRAYSIZE(k2SeqplayTlkFilesDOSCDDemoEnglish), k2SeqplayTlkFilesDOSCDDemoEnglish };
+
+static const char *const k2IngameTlkDemoStringsDOSCDDemoEnglish[6] = {
+ "Congratulations! Thank you for guiding",
+ "Zanthia safely through Darkmoor Swamp.",
+ "To continue her adventures, look for",
+ "Kyrandia 2: The Hand of Fate on PC",
+ "CD-ROM or floppy disk, at your local",
+ "software store."
+};
+
+static const StringListProvider k2IngameTlkDemoStringsDOSCDDemoEnglishProvider = { ARRAYSIZE(k2IngameTlkDemoStringsDOSCDDemoEnglish), k2IngameTlkDemoStringsDOSCDDemoEnglish };
+
diff --git a/devtools/create_kyradat/resources/hof_dos_cddemo_french.h b/devtools/create_kyradat/resources/hof_dos_cddemo_french.h
new file mode 100644
index 0000000000..399cf2e287
--- /dev/null
+++ b/devtools/create_kyradat/resources/hof_dos_cddemo_french.h
@@ -0,0 +1,139 @@
+static const char *const k2SeqplayStringsDOSCDDemoFrench[104] = {
+ "Kyrandia est en train de dispara""\x8C""tre!",
+ "Pierre apr""\x8A""s pierre...",
+ "Arbre apr""\x8A""s arbre.",
+ "Kyrandia va cesser d'exister!",
+ "Les Grands Mystiques Royaux sont perplexes...",
+ "Ils ont consult""\x82"" tous les ouvrages!",
+ "M""\x88""me Marko et son nouveau valet ont ""\x82""t""\x82"" admis dans la conf""\x82""rence.",
+ "Heureusement, la Main connaissait bien ce sujet.",
+ "Un plan fut finalement approuv""\x82""...",
+ "Il n""\x82""cessitait une Ancre de Pierre magique...",
+ "Qu'il fallait aller chercher au centre du monde!",
+ "Zanthia, la plus jeune des Mystiques de Kyrandia, a ""\x82""t""\x82"" choisie pour r""\x82""cup""\x82""rer cette pierre.",
+ "Merci d'avoir jou""\x82"" ""\x85"" The Hand of Fate.",
+ "Je devrais avoir assez de myrtilles pour ouvrir un portail vers le centre du monde...",
+ " DUMMY STRING... ",
+ " DUMMY STRING... ",
+ "H""\x82""! On m'a vol""\x82"" tout mon ""\x82""quipement!",
+ " DUMMY STRING... ",
+ "S'ils croient que je vais y aller ""\x85"" pied, ils peuvent toujours courir!",
+ " DUMMY STRING... ",
+ " DUMMY STRING... ",
+ "Vite, Faun!",
+ "Mon vieux, nous l'avons ""\x82""chapp""\x82"" belle!",
+ "Tu l'as dit! En ce qui me concerne, j'abandonne la chasse!",
+ "Crooa.",
+ "Combien de fois faudra-t-il que je te le dise? Tu n'es qu'un sale crapaud!",
+ "Oh non! Nous n'avons plus de fromage!",
+ "On n'a qu'""\x85"" essayer ""\x87""a. C'est orange.",
+ "Maman, quand est-ce qu'on mangera du lierre?",
+ "Sortez d'ici! Allez! Filez!",
+ "Tu coupes, et je choisis.",
+ "Non. TU coupes et JE choisis.",
+ "Je maintiens que c'""\x82""tait du radotage sans int""\x82""r""\x88""t.",
+ "Tu ne reconna""\x8C""trais toujours pas un po""\x8A""me ""\x8B""ambique, m""\x88""me s'il te mordait les fesses!",
+ "Producteur Ex""\x82""cutif",
+ "Brett W. Sperry",
+ "Con""\x87""u et Dirig""\x82"" par",
+ "Rick Gush",
+ "Programmeur Principal",
+ "Michael Legg",
+ "Direction Artistique",
+ "Louis Castle",
+ "Joseph B. Hewitt IV",
+ "Graphiste principal",
+ "Rick Parks",
+ "Programmation acrobatie",
+ "Philip W. Gorrow",
+ "Michael Grayford",
+ "Mark McCubbin",
+ "Graphistes",
+ "Cameron Chun",
+ "Cary Averett",
+ "Cindy Chinn",
+ "Elie Arabian",
+ "Fei Cheng",
+ "Ferby Miguel",
+ "Frank Mendeola",
+ "Jack Martin",
+ "Jerry Moore",
+ "DUMMY STRING... ",
+ "Judith Peterson",
+ "Larry Miller",
+ "Lenny Lee",
+ "Louise Sandoval",
+ "Ren Olsen",
+ "Musique et sons",
+ "Paul Mudra",
+ "Frank Klepacki",
+ "Dwight Okahara",
+ "Pat Collins",
+ "Tests de Qualit""\x82",
+ "Glenn Sperry",
+ "Michael Lightner",
+ "William Foster",
+ "Jesse Clemit",
+ "Pierre Cardin",
+ "Conception du Manuel,",
+ "Emballage & Ex""\x82""cution",
+ "Eydie Laramore",
+ "Lisa Marcinko",
+ "Lauren Rifkin",
+ "F""\x82""licitations!",
+ "Merci d'avoir jou""\x82"" ""\x85"" The Hand of Fate!",
+ "Programmeur invit""\x82",
+ "Coordination Production",
+ "Scott Duckett",
+ "Testeurs - Irvine",
+ "Chris McFarland",
+ "Paul Moore",
+ "Chad Soares",
+ "Jared Brinkley",
+ "Jon Williams",
+ "Chris Toft",
+ "Adaptation fran""\x87""aise",
+ "Art Of Words",
+ "Charger une partie",
+ "Introduction",
+ "Nouvelle Partie",
+ "Quitter le jeu",
+ "Remerciements sp""\x82""ciaux",
+ "Sake Joe Bostic-san",
+ "Tim Fritz",
+ "Kenny Dunne",
+ "Merci d'avoir jou""\x82"" ""\x85""\"The Hand of Fate.\"\n"
+};
+
+static const StringListProvider k2SeqplayStringsDOSCDDemoFrenchProvider = { ARRAYSIZE(k2SeqplayStringsDOSCDDemoFrench), k2SeqplayStringsDOSCDDemoFrench };
+
+static const char *const k2SeqplayTlkFilesDOSCDDemoFrench[14] = {
+ "FINTRO1",
+ "FINTRO2",
+ "FINTRO3",
+ "FINTRO4",
+ "FINTRO5",
+ "FINTRO6",
+ "FINTRO7",
+ "FINTRO8",
+ "FINTRO9",
+ "FINTRO10",
+ "FINTRO11",
+ "FINTRO12",
+ "FGLOW",
+ ""
+};
+
+static const StringListProvider k2SeqplayTlkFilesDOSCDDemoFrenchProvider = { ARRAYSIZE(k2SeqplayTlkFilesDOSCDDemoFrench), k2SeqplayTlkFilesDOSCDDemoFrench };
+
+static const char *const k2IngameTlkDemoStringsDOSCDDemoFrench[6] = {
+ "F""\x82""licitations! Merci d'avoir guider",
+ "Zanthia a travers le marals de Darkmoor.",
+ "Pour continuer votre aventure, allez vous",
+ "procurer la version CD-ROM de The Hand of",
+ "Fate chez votre revendeur.",
+ " "
+};
+
+static const StringListProvider k2IngameTlkDemoStringsDOSCDDemoFrenchProvider = { ARRAYSIZE(k2IngameTlkDemoStringsDOSCDDemoFrench), k2IngameTlkDemoStringsDOSCDDemoFrench };
+
diff --git a/devtools/create_kyradat/resources/hof_dos_cddemo_german.h b/devtools/create_kyradat/resources/hof_dos_cddemo_german.h
new file mode 100644
index 0000000000..e32c88de40
--- /dev/null
+++ b/devtools/create_kyradat/resources/hof_dos_cddemo_german.h
@@ -0,0 +1,139 @@
+static const char *const k2SeqplayStringsDOSCDDemoGerman[104] = {
+ "Kyrandia l""\x94""st sich auf!",
+ "Stein f""\x81""r Stein...",
+ "...und Baum f""\x81""r Baum.",
+ "Kyrandia h""\x94""rt auf zu existieren!",
+ "Die k""\x94""niglichen Mystiker sind verzweifelt.",
+ "Jede Informationsquelle wurde zu Rate gezogen.",
+ "Sogar Marko und sein neuer Kammerdiener durften den Konferenzen beiwohnen.",
+ "Gl""\x81""cklicherweise, hatte die Hand Erfahrungen in solchen Dingen.",
+ "Und letztendlich konnte man sich auf einen Plan einigen.",
+ "Zu dessen Durchf""\x81""hrung es eines magischen Ankerstein bedarf...",
+ "...der aus der Mitte der Welt geholt werden mu""\xE1"".",
+ "Zanthia, j""\x81""ngste der kyrandianischen Mystiker, wurde ausgew""\x84""hlt, um diesen Stein zu holen.",
+ "Vielen Dank, da""\xE1"" Du die Hand des Schicksals spielst.",
+ "Dies sollten gen""\x81""gend Blaubeeren sein, um ein Portal zur Mitte der Erde zu ""\x94""ffnen.",
+ " DUMMY STRING... ",
+ " DUMMY STRING... ",
+ "Hey! Meine gesamte Ausr""\x81""stung wurde gestohlen!",
+ " DUMMY STRING... ",
+ "Wenn die glauben, da""\xE1"" ich den ganzen Weg nach unten laufe, haben die sich aber in den Finger geschnitten!",
+ " DUMMY STRING... ",
+ " DUMMY STRING... ",
+ "Beeile Dich, Faun!",
+ "Junge, Junge das war aber knapp!",
+ "Da hast Du recht, Kumpel. Ich werde nie wieder jagen gehen!",
+ "Quuaaak.",
+ "Wie oft mu""\xE1"" ich es Dir noch sagen? Du bist eine Kr""\x94""te.",
+ "Oh nein! Der K""\x84""se ist alle!",
+ "Versuchen wir es mal mit dem Ohrenwachs. Es ist orange.",
+ "Mama, wann bekomme ich das Efeu?",
+ "Husch husch, komm hier raus!",
+ "Du schneidest, und ich suche aus.",
+ "Nein. Du schneidest und ich werde aussuchen.",
+ "Ich bin immernoch der\rMeinung, da""\xE1"" er es nur\rso dahingeplappert hat.",
+ "Argh, Du w""\x81""rdest ein jambisches Pentameter nicht erkennen, wenn es Dich in den Hintern bei""\xE1""en w""\x81""rde!",
+ "Executive Producer",
+ "Brett W. Sperry",
+ "Director & Designer",
+ "Rick Gush",
+ "Lead Programmer",
+ "Michael Legg",
+ "Art Management",
+ "Louis Castle",
+ "Joseph B. Hewitt IV",
+ "Lead Artist",
+ "Rick Parks",
+ "Additional Coding by",
+ "Philip W. Gorrow",
+ "Michael Grayford",
+ "Mark McCubbin",
+ "Artists",
+ "Cameron Chun",
+ "Cary Averett",
+ "Cindy Chinn",
+ "Elie Arabian",
+ "Fei Cheng",
+ "Ferby Miguel",
+ "Frank Mendeola",
+ "Jack Martin",
+ "Jerry Moore",
+ "DUMMY STRING... ",
+ "Judith Peterson",
+ "Larry Miller",
+ "Lenny Lee",
+ "Louise Sandoval",
+ "Ren Olsen",
+ "Music & Sounds by",
+ "Paul Mudra",
+ "Frank Klepacki",
+ "Dwight Okahara",
+ "Pat Collins",
+ "Quality Assurance by",
+ "Glenn Sperry",
+ "Michael Lightner",
+ "William Foster",
+ "Jesse Clemit",
+ "Black Pete",
+ "Manual, Package Design",
+ "& Fulfillment by",
+ "Eydie Laramore",
+ "Lisa Marcinko",
+ "Lauren Rifkin",
+ "Unseren Gl""\x81""ckw""\x81""nsch!",
+ "Vielen Dank, da""\xE1"" Sie The Hand of Fate gespielt haben!",
+ "Guest Coding",
+ "Producer Liaison",
+ "Scott Duckett",
+ "Irvine Testers",
+ "Chris McFarland",
+ "Paul Moore",
+ "Chad Soares",
+ "Jared Brinkley",
+ "Jon Willliams",
+ "Chris Toft",
+ "Ants! Ants! Ants!",
+ "Ted Morris",
+ "Spielstand laden",
+ "Intro",
+ "Neues Spiel starten",
+ "Spiel beenden",
+ "Vielen Dank an",
+ "tom schmidt",
+ "Tim Fritz",
+ "Kenny Dunne",
+ "Vielen Dank, da""\xE1"" Sie \"The Hand of Fate\" gespielt haben.\n"
+};
+
+static const StringListProvider k2SeqplayStringsDOSCDDemoGermanProvider = { ARRAYSIZE(k2SeqplayStringsDOSCDDemoGerman), k2SeqplayStringsDOSCDDemoGerman };
+
+static const char *const k2SeqplayTlkFilesDOSCDDemoGerman[14] = {
+ "GINTRO1",
+ "GINTRO2",
+ "GINTRO3",
+ "GINTRO4",
+ "GINTRO5",
+ "GINTRO6",
+ "GINTRO7",
+ "GINTRO8",
+ "GINTRO9",
+ "GINTRO10",
+ "GINTRO11",
+ "GINTRO12",
+ "GGLOW",
+ ""
+};
+
+static const StringListProvider k2SeqplayTlkFilesDOSCDDemoGermanProvider = { ARRAYSIZE(k2SeqplayTlkFilesDOSCDDemoGerman), k2SeqplayTlkFilesDOSCDDemoGerman };
+
+static const char *const k2IngameTlkDemoStringsDOSCDDemoGerman[6] = {
+ "Herzlichen Gl""\x81""ckwunsch! Wir danken Dir,",
+ "da""\xE1"" Du Zanthia sicher durch Darkmoor",
+ "Swamp geleitet hast. Du kannst ihr",
+ "Abenteuer auf der The Hand of Fate",
+ "CD-ROM fortf""\x81""hren. Erkundige Dich bei",
+ "Deinem H""\x84""ndler nach dieser CD-ROM."
+};
+
+static const StringListProvider k2IngameTlkDemoStringsDOSCDDemoGermanProvider = { ARRAYSIZE(k2IngameTlkDemoStringsDOSCDDemoGerman), k2IngameTlkDemoStringsDOSCDDemoGerman };
+
diff --git a/devtools/create_kyradat/resources/hof_dos_demo.h b/devtools/create_kyradat/resources/hof_dos_demo.h
new file mode 100644
index 0000000000..00e8d3ff05
--- /dev/null
+++ b/devtools/create_kyradat/resources/hof_dos_demo.h
@@ -0,0 +1,77 @@
+static const char *const k2SeqplayPakFilesDOSDemo[2] = {
+ "GENERAL.PAK",
+ "VOC.PAK"
+};
+
+static const StringListProvider k2SeqplayPakFilesDOSDemoProvider = { ARRAYSIZE(k2SeqplayPakFilesDOSDemo), k2SeqplayPakFilesDOSDemo };
+
+static const HoFSequence k2SeqplaySeqDataDOSDemoSeq[8] = {
+ { 0x0002, "", "virgin.cps", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x0001, 0x0064, 0, 0, 0x001E },
+ { 0x0001, "westwood.wsa", "", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x0012, 0x000C, 0, 0, 0x001E },
+ { 0x0001, "title.wsa", "", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x001A, 0x0006, 0, 0, 0x0064 },
+ { 0x0001, "hill.wsa", "", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x0082, 0x0007, 0, 0, 0x001E },
+ { 0x0003, "outhome.wsa", "outhome.cps", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x009A, 0x0005, 0, 0, 0x001E },
+ { 0x0001, "wharf.wsa", "", 5, 0, 0xFFFF, 0xFFFF, 0x0000, 0x001C, 0x000A, 0, 0, 0x001E },
+ { 0x0001, "dinob.wsa", "", 5, 0, 0xFFFF, 0xFFFF, 0x0000, 0x0004, 0x0008, 0, 0, 0x001E },
+ { 0x0002, "", "fisher.cps", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x0001, 0x0FA0, 0, 0, 0x0004 }
+};
+
+static const HoFNestedSequence k2SeqplaySeqDataDOSDemoSeqNested[5] = {
+ { 0x0002, "wharf2.wsa", 0, 70, 1, 0, 0, 0, NULL, 0, 0 },
+ { 0x0002, "dinob2.wsa", 0, 80, 2, 0, 0, 0, NULL, 0, 0 },
+ { 0x0004, "water.wsa", 0, 11, 4, 0, 0, 0, NULL, 0, 0 },
+ { 0x0004, "bail.wsa", 0, 16, 24, 0, 0, 0, NULL, 0, 0 },
+ { 0x0004, "dig.wsa", 0, 12, 18, 0, 0, 0, NULL, 0, 0 }
+};
+
+static const HoFSequenceProvider k2SeqplaySeqDataDOSDemoProvider = { ARRAYSIZE(k2SeqplaySeqDataDOSDemoSeq), k2SeqplaySeqDataDOSDemoSeq, ARRAYSIZE(k2SeqplaySeqDataDOSDemoSeqNested), k2SeqplaySeqDataDOSDemoSeqNested };
+
+static const char *const k2SeqplaySfxFilesDOSDemo[20] = {
+ "bigslam",
+ "clothes1",
+ "doormtop",
+ "fngrsnap",
+ "frogmix2",
+ "frogsigh",
+ "h2odrop2",
+ "orcmove",
+ "rowboat1",
+ "squish1",
+ "stretch1",
+ "ocean1",
+ "splash1",
+ "trex1",
+ "trex3",
+ "trex5",
+ "zno2",
+ "big",
+ "dreamer",
+ ""
+};
+
+static const StringListProvider k2SeqplaySfxFilesDOSDemoProvider = { ARRAYSIZE(k2SeqplaySfxFilesDOSDemo), k2SeqplaySfxFilesDOSDemo };
+
+static const char *const k2SeqplayIntroTracksDOSDemo[2] = {
+ "k2_demo",
+ "k2_demo"
+};
+
+static const StringListProvider k2SeqplayIntroTracksDOSDemoProvider = { ARRAYSIZE(k2SeqplayIntroTracksDOSDemo), k2SeqplayIntroTracksDOSDemo };
+
+static const HoFSeqItemAnimData k2SeqplayShapeAnimDataDOSDemo[4] = {
+ { 0, 67,
+ { 0x0000, 0x0001, 0x0002, 0x0003, 0x0002, 0x0001, 0x0000, 0x0001, 0x0002, 0x0003,
+ 0x0002, 0x0001, 0x0000, 0x0001, 0x0002, 0x0003, 0x0002, 0x0001, 0x0000, 0x0000 } },
+ { 4, 109,
+ { 0x0000, 0x0001, 0x0002, 0x0003, 0x0000, 0x0001, 0x0002, 0x0003, 0x0000, 0x0001,
+ 0x0002, 0x0003, 0x0000, 0x0001, 0x0002, 0x0003, 0x0000, 0x0001, 0x0002, 0x0003 } },
+ { 8, 145,
+ { 0x0000, 0x0001, 0x0002, 0x0003, 0x0003, 0x0002, 0x0001, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 } },
+ { 12, 180,
+ { 0x0000, 0x0001, 0x0002, 0x0003, 0x0000, 0x0001, 0x0002, 0x0003, 0x0000, 0x0001,
+ 0x0002, 0x0003, 0x0000, 0x0001, 0x0002, 0x0003, 0x0000, 0x0001, 0x0002, 0x0003 } }
+};
+
+static const HoFSeqItemAnimDataProvider k2SeqplayShapeAnimDataDOSDemoProvider = { ARRAYSIZE(k2SeqplayShapeAnimDataDOSDemo), k2SeqplayShapeAnimDataDOSDemo };
+
diff --git a/devtools/create_kyradat/resources/hof_dos_english.h b/devtools/create_kyradat/resources/hof_dos_english.h
new file mode 100644
index 0000000000..35ba8eac15
--- /dev/null
+++ b/devtools/create_kyradat/resources/hof_dos_english.h
@@ -0,0 +1,108 @@
+static const char *const k2SeqplayStringsDOSEnglish[103] = {
+ "Kyrandia is disappearing!",
+ "Rock by rock,",
+ "And tree by tree.",
+ "Kyrandia ceases to exist!",
+ "The Royal Mystics are baffled.",
+ "Every reference has been consulted.",
+ "Even Marko and his new valet, have been allowed into the conference.",
+ "Luckily, the Hand was experienced in these matters.",
+ "And finally a plan was approved,",
+ "That required a magic Anchor Stone,",
+ "To be retrieved from the center of the world.",
+ "Zanthia, youngest of the Kyrandian Mystics, has been selected to retrieve the Stone.",
+ "Thank you for playing The Hand of Fate.",
+ "This should be enough blueberries to open a portal to the center of the world.",
+ " DUMMY STRING... ",
+ " DUMMY STRING... ",
+ "Hey! All my equipment has been stolen!",
+ " DUMMY STRING... ",
+ "If they think I'm going to walk all the way down there, they're nuts!",
+ " DUMMY STRING... ",
+ " DUMMY STRING... ",
+ "Hurry up Faun!",
+ "Boy, that was a close call!",
+ "You said it pal. I, for one, am never going hunting again!",
+ "Ribbit.",
+ "How many times do I have to tell you? You're a toad.",
+ "Oh no! We're out of cheese!",
+ "Let's try this earwax. It's orange.",
+ "Mommy, when do I get the ivy?",
+ "Get out of here, shoo!",
+ "You cut, and I'll choose.",
+ "No. You cut and I'll choose.",
+ "I still say it was derivative drivel.",
+ "Aw, you still wouldn't recognize iambic pentameter if it bit you on the butt!",
+ "Executive Producer",
+ "Brett W. Sperry",
+ "Designed & Directed by",
+ "Rick Gush",
+ "Lead Programmer",
+ "Michael Legg",
+ "Art Management",
+ "Louis Castle",
+ "Joseph B. Hewitt IV",
+ "Lead Artist",
+ "Rick Parks",
+ "Additional Coding by",
+ "Philip W. Gorrow",
+ "Matt Collins",
+ "Mark McCubbin",
+ "Artists",
+ "Cameron Chun",
+ "Cary Averett",
+ "Cindy Chinn",
+ "Elie Arabian",
+ "Fei Cheng",
+ "Ferby Miguel",
+ "Frank Mendeola",
+ "Jack Martin",
+ "Jerry Moore",
+ "",
+ "Judith Peterson",
+ "Larry Miller",
+ "Lenny Lee",
+ "Louise Sandoval",
+ "Ren Olsen",
+ "Music & Sounds by",
+ "Paul Mudra",
+ "Frank Klepacki",
+ "Dwight Okahara",
+ "Pat Collins",
+ "Qualilty Assurance by",
+ "Glenn Sperry",
+ "Michael Lightner",
+ "William Foster",
+ "Jesse Clemit",
+ "Jeff Fillhaber",
+ "Manual, Package Design",
+ "& Fulfillment",
+ "Eydie Laramore",
+ "Lisa Marcinko",
+ "Lauren Rifkin",
+ "Congratulations!",
+ "Thank you for playing The Hand of Fate!",
+ "Guest Coding",
+ "Producer Liaison",
+ "Scott Duckett",
+ "Irvine Testers",
+ "Chris McFarland",
+ "Paul Moore",
+ "Chad Soares",
+ "Jared Brinkley",
+ "Jon Willliams",
+ "Chris Toft",
+ "Chris's Hair by",
+ "Cumulo Nimbus",
+ "Load a game",
+ "Introduction",
+ "Start a new game",
+ "Exit the game",
+ "Special Thanks to",
+ "Sake Joe Bostic-san",
+ "Tim Fritz",
+ "Kenny Dunne"
+};
+
+static const StringListProvider k2SeqplayStringsDOSEnglishProvider = { ARRAYSIZE(k2SeqplayStringsDOSEnglish), k2SeqplayStringsDOSEnglish };
+
diff --git a/devtools/create_kyradat/resources/hof_dos_french.h b/devtools/create_kyradat/resources/hof_dos_french.h
new file mode 100644
index 0000000000..fc21dc0601
--- /dev/null
+++ b/devtools/create_kyradat/resources/hof_dos_french.h
@@ -0,0 +1,108 @@
+static const char *const k2SeqplayStringsDOSFrench[103] = {
+ "Kyrandia est en train de dispara""\x8C""tre!",
+ "Pierre apr""\x8A""s pierre...",
+ "Arbre apr""\x8A""s arbre.",
+ "Kyrandia va cesser d'exister!",
+ "Les Grands Mystiques Royaux sont perplexes...",
+ "Ils ont consult""\x82"" tous les ouvrages!",
+ "M""\x88""me Marko et son nouveau valet ont ""\x82""t""\x82"" admis dans la conf""\x82""rence.",
+ "Heureusement, la Main connaissait bien ce sujet.",
+ "Un plan fut finalement approuv""\x82""...",
+ "Il n""\x82""cessitait une Ancre de Pierre magique...",
+ "Qu'il fallait aller chercher... au centre du monde!",
+ "Zanthia, la plus jeune des Mystiques de Kyrandia, a ""\x82""t""\x82"" choisie pour r""\x82""cup""\x82""rer cette pierre.",
+ "Merci d'avoir jou""\x82"" ""\x85"" The Hand of Fate.",
+ "Je devrais avoir assez de myrtilles pour ouvrir un portail vers le centre du monde...",
+ " DUMMY STRING... ",
+ " DUMMY STRING... ",
+ "H""\x82""! On m'a vol""\x82"" tout mon ""\x82""quipement!",
+ " DUMMY STRING... ",
+ "S'ils croient que je vais y aller ""\x85"" pied, ils peuvent toujours courir!",
+ " DUMMY STRING... ",
+ " DUMMY STRING... ",
+ "Vite, Faun!",
+ "Mon vieux, nous l'avons ""\x82""chapp""\x82"" belle!",
+ "Tu l'as dit! En ce qui me concerne, j'abandonne la chasse!",
+ "Crooa.",
+ "Combien de fois faudra-t-il que je te le dise? Tu n'es qu'un sale crapaud!",
+ "Oh non! Nous n'avons plus de fromage!",
+ "On n'a qu'""\x85"" essayer ""\x87""a. C'est orange.",
+ "Maman, quand est-ce qu'on mangera du lierre?",
+ "Sortez d'ici! Allez! Filez!",
+ "Tu coupes, et je choisis.",
+ "Non. TU coupes et JE choisis.",
+ "Je maintiens que c'""\x82""tait du radotage sans int""\x82""r""\x88""t.",
+ "Tu ne reconna""\x8C""trais toujours pas un po""\x8A""me ""\x8B""ambique, m""\x88""me s'il te mordait les fesses!",
+ "Producteur Ex""\x82""cutif",
+ "Brett W. Sperry",
+ "Con""\x87""u et Dirig""\x82"" par",
+ "Rick Gush",
+ "Programmeur Principal",
+ "Michael Legg",
+ "Direction Artistique",
+ "Louis Castle",
+ "Joseph B. Hewitt IV",
+ "Graphiste principal",
+ "Rick Parks",
+ "Programmation acrobatie",
+ "Philip W. Gorrow",
+ "Michael Grayford",
+ "Mark McCubbin",
+ "Graphistes",
+ "Cameron Chun",
+ "Cary Averett",
+ "Cindy Chinn",
+ "Elie Arabian",
+ "Fei Cheng",
+ "Ferby Miguel",
+ "Frank Mendeola",
+ "Jack Martin",
+ "Jerry Moore",
+ "",
+ "Judith Peterson",
+ "Larry Miller",
+ "Lenny Lee",
+ "Louise Sandoval",
+ "Ren Olsen",
+ "Musique et sons:",
+ "Paul Mudra",
+ "Frank Klepacki",
+ "Dwight Okahara",
+ "Pat Collins",
+ "Tests de Qualit""\x82",
+ "Glenn Sperry",
+ "Michael Lightner",
+ "William Foster",
+ "Jesse Clemit",
+ "Pierre Cardin",
+ "Conception du Manuel,",
+ "Emballage & Ex""\x82""cution",
+ "Eydie Laramore",
+ "Lisa Marcinko",
+ "Lauren Rifkin",
+ "F""\x82""licitations!",
+ "Merci d'avoir jou""\x82"" ""\x85"" The Hand of Fate!",
+ "Programmeur invit""\x82",
+ "Coordination Production",
+ "Scott Duckett",
+ "Testeurs - Irvine",
+ "Chris McFarland",
+ "Paul Moore",
+ "Chad Soares",
+ "Jared Brinkley",
+ "Jon Williams",
+ "Chris Toft",
+ "Adaptation fran""\x87""aise:",
+ "Art Of Words",
+ "Charger une partie",
+ "Introduction",
+ "Nouvelle Partie",
+ "Quitter le jeu",
+ "Remerciements sp""\x82""ciaux",
+ "Sake Joe Bostic-san",
+ "Tim Fritz",
+ "Kenny Dunne"
+};
+
+static const StringListProvider k2SeqplayStringsDOSFrenchProvider = { ARRAYSIZE(k2SeqplayStringsDOSFrench), k2SeqplayStringsDOSFrench };
+
diff --git a/devtools/create_kyradat/resources/hof_dos_german.h b/devtools/create_kyradat/resources/hof_dos_german.h
new file mode 100644
index 0000000000..8529ed03da
--- /dev/null
+++ b/devtools/create_kyradat/resources/hof_dos_german.h
@@ -0,0 +1,108 @@
+static const char *const k2SeqplayStringsDOSGerman[103] = {
+ "Kyrandia l""\x94""st sich auf!",
+ "Stein f""\x81""r Stein,",
+ "Und Baum f""\x81""r Baum.",
+ "Kyrandia h""\x94""rt auf zu existieren!",
+ "Die k""\x94""niglichen Mystiker sind verzweifelt.",
+ "Jede Informationsquelle wurde zu Rate gezogen.",
+ "Sogar Marko und sein neuer Kammerdiener durften den Konferenzen beiwohnen.",
+ "Gl""\x81""cklicherweise, hatte die Hand Erfahrungen in solchen Dingen.",
+ "Und letztendlich konnte man sich auf einen Plan einigen,",
+ "Zu dessen Durchf""\x81""hrung es eines magischen Ankerstein bedarf,",
+ "Der aus der Mitte der Welt geholt werden mu""\xE1"".",
+ "Zanthia, j""\x81""ngste der kyrandianischen Mystiker, wurde ausgew""\x84""hlt, um diesen Stein zu holen.",
+ "Vielen Dank, da""\xE1"" Du die Hand des Schicksals spielst.",
+ "Dies sollten gen""\x81""gend Blaubeeren sein, um ein Portal zur Mitte der Erde zu ""\x94""ffnen.",
+ " DUMMY STRING... ",
+ " DUMMY STRING... ",
+ "Hey! Meine gesamte Ausr""\x81""stung wurde gestohlen!",
+ " DUMMY STRING... ",
+ "Wenn die glauben, da""\xE1"" ich den ganzen Weg nach unten laufe, haben die sich aber in den Finger geschnitten!",
+ " DUMMY STRING... ",
+ " DUMMY STRING... ",
+ "Beeile Dich, Faun!",
+ "Junge, Junge das war aber knapp!",
+ "Da hast Du recht, Kumpel. Ich werde nie wieder jagen gehen!",
+ "Quuaaak.",
+ "Wie oft mu""\xE1"" ich es Dir noch sagen? Du bist eine Kr""\x94""te.",
+ "Oh nein! Der K""\x84""se ist alle!",
+ "Versuchen wir es mal mit dem Ohrenwachs. Es ist orange.",
+ "Mama, wann bekomme ich das Efeu?",
+ "Husch husch, komm hier raus!",
+ "Du schneidest, und ich suche aus.",
+ "Nein. Du schneidest und ich werde aussuchen.",
+ "Ich bin immernoch der\rMeinung, da""\xE1"" er es nur\rso dahingeplappert hat.",
+ "Argh, Du w""\x81""rdest ein jambisches Pentameter nicht erkennen, wenn es Dich in den Hintern bei""\xE1""en w""\x81""rde!",
+ "Executive Producer",
+ "Brett W. Sperry",
+ "Director & Designer",
+ "Rick Gush",
+ "Lead Programmer",
+ "Michael Legg",
+ "Art Management",
+ "Louis Castle",
+ "Joseph B. Hewitt IV",
+ "Lead Artist",
+ "Rick Parks",
+ "Additional Coding by",
+ "Philip W. Gorrow",
+ "Michael Grayford",
+ "Mark McCubbin",
+ "Artists",
+ "Cameron Chun",
+ "Cary Averett",
+ "Cindy Chinn",
+ "Elie Arabian",
+ "Fei Cheng",
+ "Ferby Miguel",
+ "Frank Mendeola",
+ "Jack Martin",
+ "Jerry Moore",
+ "",
+ "Judith Peterson",
+ "Larry Miller",
+ "Lenny Lee",
+ "Louise Sandoval",
+ "Ren Olsen",
+ "Music & Sounds by",
+ "Paul Mudra",
+ "Frank Klepacki",
+ "Dwight Okahara",
+ "Pat Collins",
+ "Quality Assurance by",
+ "Glenn Sperry",
+ "Michael Lightner",
+ "William Foster",
+ "Jesse Clemit",
+ "Black Pete",
+ "Manual, Package Design",
+ "& Fulfillment by",
+ "Eydie Laramore",
+ "Lisa Marcinko",
+ "Lauren Rifkin",
+ "Unseren Gl""\x81""ckw""\x81""nsch!",
+ "Vielen Dank, da""\xE1"" Sie The Hand of Fate gespielt haben!",
+ "Guest Coding",
+ "Producer Liaison",
+ "Scott Duckett",
+ "Irvine Testers",
+ "Chris McFarland",
+ "Paul Moore",
+ "Chad Soares",
+ "Jared Brinkley",
+ "Jon Willliams",
+ "Chris Toft",
+ "Ants! Ants! Ants!",
+ "Ted Morris",
+ "Spielstand laden",
+ "Intro",
+ "Neues Spiel starten",
+ "Spiel beenden",
+ "Vielen Dank an",
+ "tom schmidt",
+ "Tim Fritz",
+ "Kenny Dunne"
+};
+
+static const StringListProvider k2SeqplayStringsDOSGermanProvider = { ARRAYSIZE(k2SeqplayStringsDOSGerman), k2SeqplayStringsDOSGerman };
+
diff --git a/devtools/create_kyradat/resources/hof_dos_italian.h b/devtools/create_kyradat/resources/hof_dos_italian.h
new file mode 100644
index 0000000000..825c6231f2
--- /dev/null
+++ b/devtools/create_kyradat/resources/hof_dos_italian.h
@@ -0,0 +1,108 @@
+static const char *const k2SeqplayStringsDOSItalian[103] = {
+ "Kyrandia sta scomparendo!",
+ "Roccia dopo roccia...",
+ "...e albero dopo albero.",
+ "Kyrandia cessa di esistere!",
+ "I Mistici Reali sono sconcertati.",
+ "Ogni testo ""\x8A"" stato consultato.",
+ "Perfino Marko e il suo nuovo assistente sono stati invitati alla conferenza.",
+ "Per fortuna, Mano ha esperienza in queste situazioni.",
+ "E finalmente un piano viene approvato...",
+ "...occorre un'Ancora magica di Pietra...",
+ "...da recuperare al centro della terra.",
+ "Zanthia, la pi""\x97"" giovane tra i Mistici di Kyrandia, ""\x8A"" stata scelta per recuperare la Pietra.",
+ "Grazie per aver giocato a The Hand of Fate.",
+ "Questi mirtilli dovrebbero bastare ad aprire un portale per il centro della terra.",
+ " MY ",
+ " MY ",
+ "Hey! Hanno rubato tutto il mio equipaggiamento!",
+ " MY ",
+ "Se pensano che ci arrivi a piedi fin laggi""\x97"", sono proprio dei pazzi!",
+ " MY ",
+ " DUMMY STRNG... ",
+ "Muoviti Fauno!",
+ "C'""\x8A"" mancato un pelo!",
+ "L'hai detto amico. Io ho smesso con la caccia!",
+ "Ribbit.",
+ "Quante volte devo dirtelo? Sei un rospo.",
+ "Oh no! Abbiamo finito il formaggio!",
+ "Proviamo con questo cerume. E' arancione.",
+ "Mami, non ""\x8A"" che alla fine mi trasformano in un golf?",
+ "Via di qui, shoo!",
+ "Tu tagli, e io scelgo.",
+ "No. Tu tagli e io scelgo.",
+ "Sono sempre convinta che si trattasse di un'assoluta cretinata.",
+ "Aw, non capirai mai niente di poesia. Facciamoci un'altra birra che ""\x8A"" meglio!",
+ "Executive Producer",
+ "Brett W. Sperry",
+ "Director",
+ "Rick Gush",
+ "Lead Programmer",
+ "Michael Legg",
+ "Art Management",
+ "Louis Castle",
+ "Joseph B. Hewitt IV",
+ "Lead Artist",
+ "Rick Parks",
+ "Additional Coding by",
+ "Philip W. Gorrow",
+ "Matt Collins",
+ "Mark McCubbin",
+ "Artists",
+ "Cameron Chun",
+ "Cary Averett",
+ "Cindy Chinn",
+ "Elie Arabian",
+ "Fei Cheng",
+ "Ferby Miguel",
+ "Frank Mendeola",
+ "Jack Martin",
+ "Jerry Moore",
+ "",
+ "Judith Peterson",
+ "Larry Miller",
+ "Lenny Lee",
+ "Louise Sandoval",
+ "Ren Olsen",
+ "Music & Sounds by",
+ "Paul Mudra",
+ "Frank Klepacki",
+ "Dwight Okahara",
+ "Pat Collins",
+ "Qualilty Assurance by",
+ "Glenn Sperry",
+ "Michael Lightner",
+ "William Foster",
+ "Jesse Clemit",
+ "Jeff Fillhaber",
+ "Manual, Package Design",
+ "& Fulfillment",
+ "Eydie Laramore",
+ "Lisa Marcinko",
+ "Lauren Rifkin",
+ "Congratulazioni!",
+ "Grazie per aver giocato a The Hand of Fate!",
+ "Guest Coding",
+ "Producer Liaison",
+ "Scott Duckett",
+ "Irvine Testers",
+ "Chris McFarland",
+ "Paul Moore",
+ "Chad Soares",
+ "Jared Brinkley",
+ "Jon Willliams",
+ "Chris Toft",
+ "Chris's Hair by",
+ "Cumulo Nimbus",
+ "Carica gioco",
+ "Introduzione",
+ "Nuovo gioco",
+ "Esci",
+ "Special Thanks to",
+ "Sake Joe Bostic-san",
+ "Tim Fritz",
+ "Kenny Dunne"
+};
+
+static const StringListProvider k2SeqplayStringsDOSItalianProvider = { ARRAYSIZE(k2SeqplayStringsDOSItalian), k2SeqplayStringsDOSItalian };
+
diff --git a/devtools/create_kyradat/resources/hof_dos_russian.h b/devtools/create_kyradat/resources/hof_dos_russian.h
new file mode 100644
index 0000000000..12df4ed31e
--- /dev/null
+++ b/devtools/create_kyradat/resources/hof_dos_russian.h
@@ -0,0 +1,133 @@
+static const char *const k2SeqplayStringsDOSRussian[128] = {
+ "K""\x18""pa""\x1D\x16\x18""~ ""\x18""c\\e""\x17""ae""\x1F""!",
+ "Ka""\x1C\x1D\x18""...",
+ "\x0F""epe""\x14""{~...",
+ "K""\x18""pa""\x1D\x16\x18\x18"" c#opo ""\x1D""e c""\x1F""a""\x1D""e""\x1F""!",
+ "Bo""\x10""]e""\x13\x1D\x18""#""\x18"" c""\x13\x18\x1F""` c ""\x1F""o""\x10""#y.",
+ "\x06\x16""e""\x1F"" ""\x1D""ay\\""\x1D""a~ ""\x16\x18""c#ycc""\x18""~.",
+ "\x0F""a""\x7F""e Map#o ""\x18"" e""\x15""o ""\x1D""o""\x14""`""\x19"" c""\x10""y""\x15""a, ""\x1E""p""\x18\x15\x10""a]e""\x1D""` ""\x1D""a o""\x13""cy""\x7F\x16""e""\x1D\x18""e.",
+ "K c\\ac""\x1F""{}, Py#a ""\x18\x1C""ee""\x1F"" o""\x1E""`""\x1F"" ""\x14"" |""\x1F\x18""x ""\x16""e""\x10""ax.",
+ "\x06"", ""\x1D""a#o""\x1D""e[, y""\x1F\x14""ep""\x7F\x16""e""\x1D"" ""\x1E\x10""a""\x1D"",",
+ "\x16\x10""~ #o""\x1F""opo""\x15""o ""\x1D""y""\x7F""e""\x1D"" ""\x12""#op""\x1D""`""\x19"" Ka""\x1C""e""\x1D""{,",
+ "\x18\x17\x14\x10""e\\e""\x1D\x1D""`""\x19"" ""\x18\x17"" [e""\x1D\x1F""pa ""\x17""e""\x1C\x10\x18"".",
+ "Ha""\x19\x1F\x18"" #a""\x1C""e""\x1D""{ ""\x1E""pe""\x16""c""\x1F""o""\x18\x1F"" ""\x05""a""\x1D""[""\x18\x18"", ca""\x1C""o""\x19"" ""\x1C\x10""a""\x16""]e""\x19"" ""\x14""o""\x10""]e""\x13\x1D\x18""[e K""\x18""pa""\x1D\x16\x18\x18"".",
+ "Thank you for playing The Hand of Fate.",
+ "\x08""o""\x1D""a""\x16""o""\x13\x18\x1F""{c~ ""\x1C\x1D""o""\x15""o c""\x18\x1D\x18""x ~""\x15""o""\x16"", \\""\x1F""o""\x13""` o""\x1F""#p`""\x1F""{ ""\x1E""op""\x1F""a""\x10"" ""\x14"" [e""\x1D\x1F""pe ""\x17""e""\x1C\x10\x18"".",
+ " DUMMY STRING... ",
+ " DUMMY STRING... ",
+ "O""\x19""! Bce o""\x13""opy""\x16""o""\x14""a""\x1D\x18""e y#pa""\x16""e""\x1D""o!",
+ " DUMMY STRING... ",
+ "Ec""\x10\x18"" o""\x1D\x18"" ""\x16""y""\x1C""a}""\x1F"", \\""\x1F""o ~ ""\x1E""o""\x19\x16""y ""\x1F""y""\x16""a ""\x1E""e]#o""\x1C"", ""\x1F""o o""\x1D\x18"" co]""\x10\x18"" c y""\x1C""a!",
+ " DUMMY STRING... ",
+ " DUMMY STRING... ",
+ "Topo""\x1E\x18""c{ \nay""\x1D""!",
+ "Ha |""\x1F""o""\x1F"" pa""\x17"" ""\x1E""po""\x1D""ec""\x10""o!",
+ "\x12"" ""\x13""o""\x10""{]e ""\x1D""a oxo""\x1F""y ""\x1D""e ""\x1E""o""\x19\x16""y!",
+ "K""\x14""a-#""\x14""a",
+ "C#o""\x10""{#o pa""\x17"" ""\x1F""e""\x13""e ""\x15""o""\x14""op""\x18\x1F""{? T` ""\x7F""a""\x13""a.",
+ "O ""\x1D""e""\x1F""! \t ""\x1D""ac\r#o""\x1D""\\""\x18\x10""c~ c`p!",
+ "\x08""o""\x1E""po""\x13""y""\x19"" y]""\x1D""y} cepy. O""\x1D""a opa""\x1D\x7F""e""\x14""a~.",
+ "Ma""\x1C""a, #o""\x15\x16""a ""\x1C\x1D""e\r""\x16""a""\x16""y""\x1F"" ""\x1E\x10""}^a?",
+ "K`]! K`]! ""\x01""yyy!",
+ "T` pa""\x17""pe""\x7F""{, a ~ ""\x14""`""\x13""epy.",
+ "He""\x1F"". T` pa""\x17""pe""\x7F""{, a ~ ""\x14""`""\x13""epy.",
+ "\x12"" ""\x14""ce ""\x7F""e y""\x1F\x14""ep""\x7F\x16""a}, \\""\x1F""o |""\x1F""o \\e""\x1E""yxa.",
+ "A, ""\x1F""` ""\x14""ce e^e ""\x1D""e ""\x1C""o""\x7F""e]{\rpac""\x1E""o""\x17\x1D""a""\x1F""{ ~""\x1C\x13\x18""\\ec#""\x18\x19"" ""\x1E""e""\x1D\x1F""a""\x1C""e""\x1F""p!",
+ "Executive Producer",
+ "Brett W. Sperry",
+ "Designed & Directed by",
+ "Rick Gush",
+ "Lead Programmer",
+ "Michael Legg",
+ "Art Management",
+ "Louis Castle",
+ "Joseph B. Hewitt IV",
+ "Lead Artist",
+ "Rick Parks",
+ "Additional Coding by",
+ "Philip W. Gorrow",
+ "Matt Collins",
+ "Mark McCubbin",
+ "Artists",
+ "Cameron Chun",
+ "Cary Averett",
+ "Cindy Chinn",
+ "Elie Arabian",
+ "Fei Cheng",
+ "Ferby Miguel",
+ "Frank Mendeola",
+ "Jack Martin",
+ "Jerry Moore",
+ "",
+ "Judith Peterson",
+ "Larry Miller",
+ "Lenny Lee",
+ "Louise Sandoval",
+ "Ren Olsen",
+ "Music & Sounds by",
+ "Paul Mudra",
+ "Frank Klepacki",
+ "Dwight Okahara",
+ "Pat Collins",
+ "Qualilty Assurance by",
+ "Glenn Sperry",
+ "Michael Lightner",
+ "William Foster",
+ "Jesse Clemit",
+ "Jeff Fillhaber",
+ "Manual, Package Design",
+ "& Fulfillment",
+ "Eydie Laramore",
+ "Lisa Marcinko",
+ "Lauren Rifkin",
+ "\x08""o""\x17\x16""pa""\x14\x10""~e""\x1C""!",
+ "\x08""epe""\x14""o""\x16"": Tapac Ka""\x1F""#o""\x14"". K""\x18""e""\x14"". 296-19-77.",
+ "Guest Coding",
+ "Producer Liaison",
+ "Scott Duckett",
+ "Irvine Testers",
+ "Chris McFarland",
+ "Paul Moore",
+ "Chad Soares",
+ "Jared Brinkley",
+ "Jon Willliams",
+ "Chris Toft",
+ "Chris's Hair by",
+ "Cumulo Nimbus",
+ "\x05""a""\x15""py""\x17\x18\x1F""{",
+ "B""\x14""e""\x16""e""\x1D\x18""e",
+ "Ho""\x14""a~ ""\x18\x15""pa",
+ "B`""\x19\x1F\x18"" ""\x18\x17"" ""\x18\x15""p`",
+ "Special Thanks to",
+ "Sake Joe Bostic-san",
+ "Tim Fritz",
+ "Kenny Dunne",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+};
+
+static const StringListProvider k2SeqplayStringsDOSRussianProvider = { ARRAYSIZE(k2SeqplayStringsDOSRussian), k2SeqplayStringsDOSRussian };
+
diff --git a/devtools/create_kyradat/resources/hof_fmtowns.h b/devtools/create_kyradat/resources/hof_fmtowns.h
new file mode 100644
index 0000000000..b254946492
--- /dev/null
+++ b/devtools/create_kyradat/resources/hof_fmtowns.h
@@ -0,0 +1,716 @@
+static const char *const k2SeqplayPakFilesFMTowns[4] = {
+ "INTROGEN.PAK",
+ "INTROVOC.PAK",
+ "VOC.PAK",
+ "WSCORE.PAK"
+};
+
+static const StringListProvider k2SeqplayPakFilesFMTownsProvider = { ARRAYSIZE(k2SeqplayPakFilesFMTowns), k2SeqplayPakFilesFMTowns };
+
+static const char *const k2SeqplaySfxFilesFMTowns[33] = {
+ "intro1",
+ "intro2",
+ "intro3",
+ "intro4",
+ "intro5",
+ "intro6",
+ "intro7",
+ "intro8",
+ "intro9",
+ "intro10",
+ "intro11",
+ "intro12",
+ "glow",
+ "asong",
+ "crowcaw",
+ "eyerub2",
+ "pluck3",
+ "rodnreel",
+ "frog1",
+ "scavmov2",
+ "lambmom3",
+ "lambkid1",
+ "thunder2",
+ "thunder3",
+ "wind6",
+ "h2odrop2",
+ "gasleak",
+ "polgulp1",
+ "hndslap1",
+ "burp1",
+ "scream1",
+ "theend",
+ ""
+};
+
+static const StringListProvider k2SeqplaySfxFilesFMTownsProvider = { ARRAYSIZE(k2SeqplaySfxFilesFMTowns), k2SeqplaySfxFilesFMTowns };
+
+static const HoFSequence k2SeqplaySeqDataFMTownsSeq[16] = {
+ { 0x0002, "", "virgin.cps", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x0001, 0x0064, 0, 0, 0x001E },
+ { 0x0001, "westwood.wsa", "", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x0012, 0x000C, 0, 0, 0x00A0 },
+ { 0x0001, "title.wsa", "", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x001A, 0x000C, 0, 0, 0x000A },
+ { 0x0002, "", "over.cps", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x0001, 0x0E10, 0, 0, 0x001E },
+ { 0x0002, "", "library.cps", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x0001, 0x0E10, 0, 0, 0x001E },
+ { 0x0002, "", "hand.cps", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x0001, 0x0E10, 0, 0, 0x005A },
+ { 0x0001, "point.wsa", "", 4, 8, 0xFFFF, 0xFFFF, 0x0000, 0x0026, 0x0007, 0, 0, 0x00C8 },
+ { 0x0001, "zanfaun.wsa", "", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x0033, 0x0010, 0, 0, 0x00F0 },
+ { 0x0001, "funters.wsa", "", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x001B, 0x000C, 0, 0, 0x001E },
+ { 0x0001, "ferb.wsa", "", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x001B, 0x0010, 0, 0, 0x001E },
+ { 0x0001, "fish.wsa", "", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x0038, 0x000C, 0, 0, 0x001E },
+ { 0x0001, "fheep.wsa", "", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x000B, 0x000C, 0, 0, 0x001E },
+ { 0x0001, "farmer.wsa", "", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x0016, 0x000C, 0, 0, 0x0064 },
+ { 0x0001, "fuards.wsa", "", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x0018, 0x000E, 0, 0, 0x001E },
+ { 0x0001, "firates.wsa", "", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x0025, 0x000C, 0, 0, 0x001E },
+ { 0x0001, "frash.wsa", "", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x000C, 0x000A, 0, 0, 0x0154 }
+};
+
+static const FrameControl k2SeqplaySeqDataFMTownsSeqNestedControl7[18] = {
+ { 0, 10 },
+ { 1, 10 },
+ { 2, 10 },
+ { 3, 10 },
+ { 4, 10 },
+ { 5, 10 },
+ { 6, 10 },
+ { 7, 10 },
+ { 8, 10 },
+ { 9, 10 },
+ { 8, 10 },
+ { 7, 10 },
+ { 6, 10 },
+ { 5, 40 },
+ { 4, 10 },
+ { 3, 10 },
+ { 2, 10 },
+ { 1, 10 }
+};
+
+static const FrameControl k2SeqplaySeqDataFMTownsSeqNestedControl10[17] = {
+ { 0, 6 },
+ { 1, 6 },
+ { 2, 6 },
+ { 3, 6 },
+ { 4, 6 },
+ { 5, 6 },
+ { 6, 6 },
+ { 7, 6 },
+ { 8, 6 },
+ { 9, 6 },
+ { 10, 6 },
+ { 11, 6 },
+ { 11, 12 },
+ { 12, 12 },
+ { 13, 12 },
+ { 12, 12 },
+ { 11, 12 }
+};
+
+static const FrameControl k2SeqplaySeqDataFMTownsSeqNestedControl11[9] = {
+ { 0, 6 },
+ { 1, 6 },
+ { 2, 6 },
+ { 3, 6 },
+ { 4, 6 },
+ { 3, 6 },
+ { 4, 6 },
+ { 5, 64 },
+ { 5, 6 }
+};
+
+static const FrameControl k2SeqplaySeqDataFMTownsSeqNestedControl12[16] = {
+ { 0, 6 },
+ { 1, 6 },
+ { 0, 6 },
+ { 1, 6 },
+ { 0, 6 },
+ { 1, 6 },
+ { 0, 6 },
+ { 1, 6 },
+ { 0, 6 },
+ { 1, 6 },
+ { 0, 6 },
+ { 1, 6 },
+ { 0, 6 },
+ { 1, 6 },
+ { 0, 6 },
+ { 1, 6 }
+};
+
+static const FrameControl k2SeqplaySeqDataFMTownsSeqNestedControl13[5] = {
+ { 0, 6 },
+ { 1, 6 },
+ { 2, 6 },
+ { 1, 6 },
+ { 0, 1 }
+};
+
+static const FrameControl k2SeqplaySeqDataFMTownsSeqNestedControl14[8] = {
+ { 0, 6 },
+ { 1, 6 },
+ { 2, 6 },
+ { 3, 6 },
+ { 4, 6 },
+ { 3, 6 },
+ { 2, 6 },
+ { 1, 6 }
+};
+
+static const HoFNestedSequence k2SeqplaySeqDataFMTownsSeqNested[15] = {
+ { 0x000C, "figgle.wsa", 0, 3, 60, 0, 0, 0, NULL, 0, 0 },
+ { 0x0008, "over1.wsa", 0, 10, 10, 0, 0, 0, NULL, 0, 0 },
+ { 0x0008, "over2.wsa", 0, 11, 9, 0, 0, 0, NULL, 0, 0 },
+ { 0x0008, "forest.wsa", 0, 22, 6, 0, 0, 0, NULL, 1, 3 },
+ { 0x0008, "dragon.wsa", 0, 11, 6, 0, 0, 0, NULL, 2, 0 },
+ { 0x0002, "darm.wsa", 0, 19, 9, 0, 0, 0, NULL, 4, 0 },
+ { 0x0002, "library.wsa", 0, 33, 9, 0, 0, 0, NULL, 4, 0 },
+ { 0x002A, "library.wsa", 0, 18, 9, 0, 0, ARRAYSIZE(k2SeqplaySeqDataFMTownsSeqNestedControl7), k2SeqplaySeqDataFMTownsSeqNestedControl7, 0, 0 },
+ { 0x000A, "marco.wsa", 0, 37, 9, 0, 0, 0, NULL, 4, 0 },
+ { 0x0002, "hand1a.wsa", 0, 34, 9, 0, 0, 0, NULL, 0, 0 },
+ { 0x002A, "hand1b.wsa", 0, 16, 9, 0, 0, ARRAYSIZE(k2SeqplaySeqDataFMTownsSeqNestedControl10), k2SeqplaySeqDataFMTownsSeqNestedControl10, 0, 0 },
+ { 0x002A, "hand1c.wsa", 0, 9, 9, 0, 0, ARRAYSIZE(k2SeqplaySeqDataFMTownsSeqNestedControl11), k2SeqplaySeqDataFMTownsSeqNestedControl11, 0, 0 },
+ { 0x002C, "hand2.wsa", 0, 2, 9, 0, 0, ARRAYSIZE(k2SeqplaySeqDataFMTownsSeqNestedControl12), k2SeqplaySeqDataFMTownsSeqNestedControl12, 5, 0 },
+ { 0x002C, "hand3.wsa", 0, 4, 9, 0, 0, ARRAYSIZE(k2SeqplaySeqDataFMTownsSeqNestedControl13), k2SeqplaySeqDataFMTownsSeqNestedControl13, 5, 0 },
+ { 0x002C, "hand4.wsa", 0, 8, 9, 0, 0, ARRAYSIZE(k2SeqplaySeqDataFMTownsSeqNestedControl14), k2SeqplaySeqDataFMTownsSeqNestedControl14, 5, 0 }
+};
+
+static const HoFSequenceProvider k2SeqplaySeqDataFMTownsProvider = { ARRAYSIZE(k2SeqplaySeqDataFMTownsSeq), k2SeqplaySeqDataFMTownsSeq, ARRAYSIZE(k2SeqplaySeqDataFMTownsSeqNested), k2SeqplaySeqDataFMTownsSeqNested };
+
+static const byte k2SeqplayIntroCDAFMTowns[24] = {
+ 0x03, 0x00, 0x01, 0x00, 0x04, 0x00, 0x02, 0x00,
+ 0x05, 0x00, 0x03, 0x00, 0x06, 0x00, 0x04, 0x00,
+ 0x07, 0x00, 0x05, 0x00, 0x08, 0x00, 0x06, 0x00
+};
+
+static const ByteProvider k2SeqplayIntroCDAFMTownsProvider = { ARRAYSIZE(k2SeqplayIntroCDAFMTowns), k2SeqplayIntroCDAFMTowns };
+
+static const byte k2SeqplayFinaleCDAFMTowns[8] = {
+ 0x03, 0x00, 0x53, 0x00, 0x04, 0x00, 0x54, 0x00
+};
+
+static const ByteProvider k2SeqplayFinaleCDAFMTownsProvider = { ARRAYSIZE(k2SeqplayFinaleCDAFMTowns), k2SeqplayFinaleCDAFMTowns };
+
+static const char *const k2IngamePakFilesFMTowns[20] = {
+ "MISC_EMC.PAK",
+ "VOC.PAK",
+ "MISC_CPS.PAK",
+ "OTHER.PAK",
+ "COST1_SH.PAK",
+ "COST2_SH.PAK",
+ "COST3_SH.PAK",
+ "COST4_SH.PAK",
+ "COST5_SH.PAK",
+ "COST6_SH.PAK",
+ "COST7_SH.PAK",
+ "COST8_SH.PAK",
+ "COST9_SH.PAK",
+ "CAULDRON.PAK",
+ "WSCORE.PAK",
+ "HOFCH_1.PAK",
+ "HOFCH_2.PAK",
+ "HOFCH_3.PAK",
+ "HOFCH_4.PAK",
+ "HOFCH_5.PAK"
+};
+
+static const StringListProvider k2IngamePakFilesFMTownsProvider = { ARRAYSIZE(k2IngamePakFilesFMTowns), k2IngamePakFilesFMTowns };
+
+static const char *const k2IngameSfxFilesFMTowns[179] = {
+ "ALCHEMY2",
+ "BIGSLAM",
+ "BITE1",
+ "BLINK1",
+ "BOING1",
+ "BUBBLE1",
+ "BUBBLE2",
+ "BURP1",
+ "BUTTON6",
+ "CAULDRN2",
+ "CHEST",
+ "CLOTHES1",
+ "CROCLAF4",
+ "CRY1",
+ "CRY2",
+ "DOORMTCL",
+ "DOORMTOP",
+ "DOORWDCL",
+ "DOORWDOP",
+ "DRUM1",
+ "DRUM2",
+ "DRUM3",
+ "DRUM4",
+ "DRUM5",
+ "DRUM6",
+ "DRUM7",
+ "EYERUB2",
+ "FALL1",
+ "FALL3",
+ "FNGRSNAP",
+ "FORMSPL1",
+ "FROG1",
+ "FROGMIX2",
+ "GASLEAK",
+ "GLOWY1",
+ "GOOD3",
+ "GOOD5",
+ "GROWTWIG",
+ "H2ODROP2",
+ "H2OPLANT",
+ "HACHUCKD",
+ "HAYFALL2",
+ "HAYSRCH4",
+ "ICECUBE",
+ "KEYOPEN",
+ "LAMBKID1",
+ "LAMBMOM3",
+ "LAUGH1",
+ "LAUGH3",
+ "LAUGH4",
+ "LIZLISP",
+ "MAKESPL1",
+ "MSTDOOM1",
+ "ORCMOVE",
+ "PLUCK3",
+ "POLGULP1",
+ "PORTCUL",
+ "POURH20",
+ "RIP2",
+ "RODNREEL",
+ "ROWBOAT1",
+ "RUCKUS1",
+ "SCAVMOV2",
+ "SCRATCH1",
+ "SNAKSPEL",
+ "SNEEZE1",
+ "SNIFF1",
+ "SNOREIN3",
+ "SNOROUT",
+ "SPLASH1",
+ "SQUEAK1",
+ "SQUEAK2",
+ "SQUEAK3",
+ "SQUISH1",
+ "SQUISH2",
+ "STEAM",
+ "STEAM3",
+ "STRETCH1",
+ "SWING",
+ "TREZA1",
+ "TURNPAG2",
+ "TWIGSNAP",
+ "UGH1",
+ "WHEEL4",
+ "WINGS1",
+ "YAWN1",
+ "ZOOM5",
+ "FILBOTL",
+ "H2OPOUR1",
+ "JAILDOR1",
+ "JAILLOK1",
+ "CASHREG1",
+ "SWISH1",
+ "TURNBOAT",
+ "CLAPPING",
+ "CRUNCH1",
+ "WHEEL6",
+ "LITEMAG",
+ "SHELDOWN",
+ "SHELSLID",
+ "ZOW2",
+ "ZANLOOP1",
+ "SCREECH2",
+ "PANTING",
+ "TREX1",
+ "TREX5",
+ "TREX3",
+ "QUAKE",
+ "WRINGH2O",
+ "SPLAT2",
+ "OCEAN1",
+ "SPLAT3",
+ "CROCLAF5",
+ "FALL5",
+ "ZCMON2",
+ "ZWAIT3",
+ "ZNO2",
+ "CROCLAF7",
+ "CRICKET1",
+ "FIREBRTH",
+ "COW2",
+ "SAP2",
+ "PMTLHI",
+ "FROGSIGH",
+ "CRICEND",
+ "CRY3",
+ "CRY4",
+ "SHROOM1",
+ "DRIP1",
+ "SWIM4",
+ "CUCKOO2",
+ "PUNCH1",
+ "SNORT3",
+ "STAMPER2",
+ "WALLFALL",
+ "WOODFAL1",
+ "SPRAY1",
+ "OHNO1",
+ "YAHOO1",
+ "YIPEE1",
+ "WIND1",
+ "WIND3",
+ "WIND6",
+ "BLOWUP2",
+ "BOATLOP2",
+ "ZGIGGL1",
+ "ZCOUGH1",
+ "CRUSH",
+ "ALARM3",
+ "APPLEAT",
+ "BABYCRY1",
+ "BABYLAF1",
+ "BABYLIK1",
+ "GEARMX3",
+ "GLASBRK2",
+ "HANDKIL1",
+ "HNDSLAP1",
+ "ICEPICK1",
+ "KISS3",
+ "LOLIFAL1",
+ "PAGEBURN",
+ "PRTYHORN",
+ "SCREAM1",
+ "SPARKHIT",
+ "SPRING2",
+ "ZANLAND1",
+ "BIGBOW",
+ "BOWFORM",
+ "BULBHIT",
+ "EYELITE",
+ "ROOFBOW",
+ "FBIGFOT1",
+ "BIGFOOT4",
+ "DORSTNCL",
+ "CROWCAW",
+ "THUNDER2",
+ "THUNDER3",
+ "TOILET",
+ ""
+};
+
+static const StringListProvider k2IngameSfxFilesFMTownsProvider = { ARRAYSIZE(k2IngameSfxFilesFMTowns), k2IngameSfxFilesFMTowns };
+
+static const byte k2IngameSfxIndexFMTowns[856] = {
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00,
+ 0x37, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
+ 0x47, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00,
+ 0x1F, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00,
+ 0x25, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00,
+ 0x36, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00,
+ 0x3F, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00,
+ 0x45, 0x00, 0x00, 0x00, 0x4D, 0x00, 0x00, 0x00,
+ 0x7B, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00,
+ 0x3C, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x00, 0x00,
+ 0x4E, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x00, 0x43, 0x00, 0x04, 0x00,
+ 0x56, 0x00, 0x00, 0x00, 0x40, 0x00, 0x05, 0x00,
+ 0x40, 0x00, 0x05, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0x64, 0x00, 0x00, 0x00, 0x4C, 0x00, 0x00, 0x00,
+ 0x12, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00,
+ 0x37, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00,
+ 0x1D, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
+ 0x49, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00,
+ 0x0A, 0x00, 0x00, 0x00, 0x4A, 0x00, 0x00, 0x00,
+ 0x09, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
+ 0x0D, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00,
+ 0x53, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00,
+ 0x0C, 0x00, 0x00, 0x00, 0x4B, 0x00, 0x00, 0x00,
+ 0x21, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00,
+ 0x32, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
+ 0x1B, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00,
+ 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
+ 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00,
+ 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00,
+ 0x19, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00,
+ 0x1A, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00,
+ 0x77, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x00, 0x00,
+ 0x55, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00,
+ 0x2A, 0x00, 0x00, 0x00, 0x2E, 0x00, 0x00, 0x00,
+ 0x2D, 0x00, 0x00, 0x00, 0x27, 0x00, 0x05, 0x00,
+ 0x25, 0x00, 0x00, 0x00, 0x46, 0x00, 0x05, 0x00,
+ 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
+ 0x34, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00,
+ 0x4F, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00,
+ 0x0F, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
+ 0x0A, 0x00, 0x00, 0x00, 0x78, 0x00, 0x06, 0x00,
+ 0x50, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x33, 0x00, 0x06, 0x00, 0x3A, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0x1E, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00,
+ 0x23, 0x00, 0x05, 0x00, 0x24, 0x00, 0x05, 0x00,
+ 0x3E, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00,
+ 0x48, 0x00, 0x05, 0x00, 0x20, 0x00, 0x00, 0x00,
+ 0x63, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0x7A, 0x00, 0x00, 0x00, 0x5E, 0x00, 0x00, 0x00,
+ 0x5B, 0x00, 0x00, 0x00, 0x5A, 0x00, 0x00, 0x00,
+ 0x10, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00,
+ 0x5D, 0x00, 0x00, 0x00, 0x5C, 0x00, 0x00, 0x00,
+ 0x57, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00,
+ 0x30, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00,
+ 0x61, 0x00, 0x05, 0x00, 0x58, 0x00, 0x00, 0x00,
+ 0x5F, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0x65, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00,
+ 0x67, 0x00, 0x00, 0x00, 0x68, 0x00, 0x05, 0x00,
+ 0x69, 0x00, 0x05, 0x00, 0x6A, 0x00, 0x05, 0x00,
+ 0x01, 0x00, 0x05, 0x00, 0x6B, 0x00, 0x00, 0x00,
+ 0x6C, 0x00, 0x00, 0x00, 0x6D, 0x00, 0x00, 0x00,
+ 0x90, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0x6F, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00,
+ 0x71, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00,
+ 0x73, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00,
+ 0x75, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00,
+ 0x09, 0x00, 0x06, 0x00, 0x7D, 0x00, 0x00, 0x00,
+ 0x7E, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00,
+ 0x80, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00,
+ 0x84, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00,
+ 0x82, 0x00, 0x05, 0x00, 0x86, 0x00, 0x00, 0x00,
+ 0x88, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00,
+ 0x8A, 0x00, 0x00, 0x00, 0x8B, 0x00, 0x00, 0x00,
+ 0x87, 0x00, 0x00, 0x00, 0x8C, 0x00, 0x00, 0x00,
+ 0x8D, 0x00, 0x00, 0x00, 0x8E, 0x00, 0x00, 0x00,
+ 0x8F, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00,
+ 0x91, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00,
+ 0x93, 0x00, 0x05, 0x00, 0x94, 0x00, 0x00, 0x00,
+ 0x5F, 0x00, 0x00, 0x00, 0x96, 0x00, 0x05, 0x00,
+ 0x97, 0x00, 0x00, 0x00, 0x98, 0x00, 0x04, 0x00,
+ 0x99, 0x00, 0x00, 0x00, 0x9A, 0x00, 0x00, 0x00,
+ 0x9B, 0x00, 0x00, 0x00, 0x9C, 0x00, 0x00, 0x00,
+ 0x9D, 0x00, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x00,
+ 0x9F, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00,
+ 0xA1, 0x00, 0x00, 0x00, 0xA2, 0x00, 0x00, 0x00,
+ 0xA3, 0x00, 0x00, 0x00, 0xA4, 0x00, 0x00, 0x00,
+ 0xA5, 0x00, 0x00, 0x00, 0xA6, 0x00, 0x00, 0x00,
+ 0xA7, 0x00, 0x00, 0x00, 0xA8, 0x00, 0x00, 0x00,
+ 0xA9, 0x00, 0x00, 0x00, 0xAA, 0x00, 0x00, 0x00,
+ 0xAB, 0x00, 0x00, 0x00, 0xAC, 0x00, 0x00, 0x00,
+ 0xAD, 0x00, 0x00, 0x00, 0xAE, 0x00, 0x05, 0x00,
+ 0xAF, 0x00, 0x00, 0x00, 0xB0, 0x00, 0x00, 0x00,
+ 0xB1, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const ByteProvider k2IngameSfxIndexFMTownsProvider = { ARRAYSIZE(k2IngameSfxIndexFMTowns), k2IngameSfxIndexFMTowns };
+
+static const byte k2IngameCDAFMTowns[304] = {
+ 0x02, 0x00, 0x07, 0x00, 0x03, 0x00, 0x08, 0x00,
+ 0x04, 0x00, 0x09, 0x00, 0x07, 0x00, 0x0A, 0x00,
+ 0x0C, 0x00, 0x0B, 0x00, 0x0D, 0x00, 0x0C, 0x00,
+ 0x0E, 0x00, 0x0D, 0x00, 0x0F, 0x00, 0x0E, 0x00,
+ 0x10, 0x00, 0x0F, 0x00, 0x12, 0x00, 0x10, 0x00,
+ 0x13, 0x00, 0x11, 0x00, 0x15, 0x00, 0x12, 0x00,
+ 0x17, 0x00, 0x13, 0x00, 0x18, 0x00, 0x14, 0x00,
+ 0x19, 0x00, 0x15, 0x00, 0x1A, 0x00, 0x16, 0x00,
+ 0x1B, 0x00, 0x17, 0x00, 0x1C, 0x00, 0x18, 0x00,
+ 0x1D, 0x00, 0x19, 0x00, 0x1E, 0x00, 0x1A, 0x00,
+ 0x1F, 0x00, 0x1B, 0x00, 0x21, 0x00, 0x1C, 0x00,
+ 0x22, 0x00, 0x1D, 0x00, 0x23, 0x00, 0x1E, 0x00,
+ 0x24, 0x00, 0x1F, 0x00, 0x25, 0x00, 0x20, 0x00,
+ 0x26, 0x00, 0x21, 0x00, 0x27, 0x00, 0x22, 0x00,
+ 0x28, 0x00, 0x23, 0x00, 0x29, 0x00, 0x24, 0x00,
+ 0x2A, 0x00, 0x25, 0x00, 0x2B, 0x00, 0x26, 0x00,
+ 0x2C, 0x00, 0x27, 0x00, 0x2D, 0x00, 0x28, 0x00,
+ 0x2E, 0x00, 0x29, 0x00, 0x2F, 0x00, 0x2A, 0x00,
+ 0x30, 0x00, 0x2B, 0x00, 0x31, 0x00, 0x2C, 0x00,
+ 0x32, 0x00, 0x2D, 0x00, 0x33, 0x00, 0x2E, 0x00,
+ 0x34, 0x00, 0x2F, 0x00, 0x35, 0x00, 0x30, 0x00,
+ 0x36, 0x00, 0x31, 0x00, 0x37, 0x00, 0x32, 0x00,
+ 0x38, 0x00, 0x33, 0x00, 0x39, 0x00, 0x34, 0x00,
+ 0x3A, 0x00, 0x35, 0x00, 0x3B, 0x00, 0x36, 0x00,
+ 0x3C, 0x00, 0x37, 0x00, 0x3D, 0x00, 0x38, 0x00,
+ 0x3E, 0x00, 0x39, 0x00, 0x3F, 0x00, 0x3A, 0x00,
+ 0x40, 0x00, 0x3B, 0x00, 0x41, 0x00, 0x3C, 0x00,
+ 0x42, 0x00, 0x3D, 0x00, 0x43, 0x00, 0x3E, 0x00,
+ 0x44, 0x00, 0x3F, 0x00, 0x45, 0x00, 0x40, 0x00,
+ 0x46, 0x00, 0x41, 0x00, 0x47, 0x00, 0x42, 0x00,
+ 0x48, 0x00, 0x43, 0x00, 0x49, 0x00, 0x44, 0x00,
+ 0x4A, 0x00, 0x45, 0x00, 0x4B, 0x00, 0x46, 0x00,
+ 0x4C, 0x00, 0x47, 0x00, 0x4D, 0x00, 0x48, 0x00,
+ 0x4E, 0x00, 0x49, 0x00, 0x4F, 0x00, 0x4A, 0x00,
+ 0x50, 0x00, 0x4B, 0x00, 0x51, 0x00, 0x4C, 0x00,
+ 0x52, 0x00, 0x4D, 0x00, 0x53, 0x00, 0x4E, 0x00,
+ 0x54, 0x00, 0x4F, 0x00, 0x55, 0x00, 0x50, 0x00,
+ 0x56, 0x00, 0x51, 0x00, 0x57, 0x00, 0x52, 0x00
+};
+
+static const ByteProvider k2IngameCDAFMTownsProvider = { ARRAYSIZE(k2IngameCDAFMTowns), k2IngameCDAFMTowns };
+
+static const byte k2IngameTalkObjIndexFMTowns[122] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00,
+ 0x18, 0x00, 0x26, 0x00, 0x41, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, 0x00,
+ 0x05, 0x00, 0x06, 0x00, 0x07, 0x00, 0x08, 0x00,
+ 0x09, 0x00, 0x0A, 0x00, 0x11, 0x00, 0x12, 0x00,
+ 0x13, 0x00, 0x14, 0x00, 0x15, 0x00, 0x2A, 0x00,
+ 0x17, 0x00, 0x18, 0x00, 0x19, 0x00, 0x1A, 0x00,
+ 0x1B, 0x00, 0x1C, 0x00, 0x1D, 0x00, 0x1E, 0x00,
+ 0x1F, 0x00, 0x20, 0x00, 0x21, 0x00, 0x22, 0x00,
+ 0x23, 0x00, 0x24, 0x00, 0x30, 0x00, 0x35, 0x00,
+ 0x36, 0x00, 0x37, 0x00, 0x39, 0x00, 0x3A, 0x00,
+ 0x3B, 0x00, 0x3D, 0x00, 0x3E, 0x00, 0x3F, 0x00,
+ 0x40, 0x00, 0x41, 0x00, 0x42, 0x00, 0x43, 0x00,
+ 0x44, 0x00, 0x45, 0x00, 0x46, 0x00, 0x47, 0x00,
+ 0x00, 0x00
+};
+
+static const ByteProvider k2IngameTalkObjIndexFMTownsProvider = { ARRAYSIZE(k2IngameTalkObjIndexFMTowns), k2IngameTalkObjIndexFMTowns };
+
+static const char *const k2IngameTimJpStringsFMTowns[4] = {
+ "Yippee!",
+ "\x82\xE2\x82\xC1\x82\xBD\x81""[""\x81""I",
+ "Hop on!",
+ "\x82\xB3\x82\xA0\x81""A""\x8D""s""\x82\xB1\x82\xA4\x82\xE6\x81""I"
+};
+
+static const StringListProvider k2IngameTimJpStringsFMTownsProvider = { ARRAYSIZE(k2IngameTimJpStringsFMTowns), k2IngameTimJpStringsFMTowns };
+
+static const FrameControl k2IngameShapeAnimDataFMTowns0FrameControl[12] = {
+ { 0x0006, 0x00F0 },
+ { 0x002A, 0x000E },
+ { 0x002B, 0x000E },
+ { 0x002C, 0x000E },
+ { 0x0006, 0x000E },
+ { 0x002A, 0x000E },
+ { 0x002B, 0x000E },
+ { 0x002C, 0x000E },
+ { 0x0006, 0x000E },
+ { 0x002A, 0x000E },
+ { 0x002B, 0x000E },
+ { 0x002C, 0x000E }
+};
+
+static const FrameControl k2IngameShapeAnimDataFMTowns1FrameControl[6] = {
+ { 0x0002, 0x012C },
+ { 0x002D, 0x012C },
+ { 0x002E, 0x012C },
+ { 0x002F, 0x012C },
+ { 0x002E, 0x012C },
+ { 0x002D, 0x012C }
+};
+
+static const FrameControl k2IngameShapeAnimDataFMTowns2FrameControl[6] = {
+ { 0x000B, 0x0258 },
+ { 0x0030, 0x0005 },
+ { 0x0031, 0x0005 },
+ { 0x0032, 0x0005 },
+ { 0x0031, 0x0005 },
+ { 0x0030, 0x0005 }
+};
+
+static const FrameControl k2IngameShapeAnimDataFMTowns3FrameControl[4] = {
+ { 0x001C, 0x0014 },
+ { 0x004E, 0x0014 },
+ { 0x004F, 0x0014 },
+ { 0x0050, 0x0014 }
+};
+
+static const FrameControl k2IngameShapeAnimDataFMTowns4FrameControl[4] = {
+ { 0x0017, 0x0007 },
+ { 0x0051, 0x0007 },
+ { 0x0052, 0x0007 },
+ { 0x0053, 0x0007 }
+};
+
+static const FrameControl k2IngameShapeAnimDataFMTowns5FrameControl[4] = {
+ { 0x0016, 0x0014 },
+ { 0x0054, 0x0014 },
+ { 0x0055, 0x0014 },
+ { 0x0056, 0x0014 }
+};
+
+static const FrameControl k2IngameShapeAnimDataFMTowns6FrameControl[4] = {
+ { 0x003A, 0x003C },
+ { 0x0057, 0x003C },
+ { 0x0058, 0x003C },
+ { 0x0059, 0x003C }
+};
+
+static const FrameControl k2IngameShapeAnimDataFMTowns7FrameControl[4] = {
+ { 0x001A, 0x0032 },
+ { 0x005A, 0x0032 },
+ { 0x005B, 0x0032 },
+ { 0x005C, 0x0032 }
+};
+
+static const FrameControl k2IngameShapeAnimDataFMTowns8FrameControl[4] = {
+ { 0x006D, 0x000C },
+ { 0x006E, 0x000C },
+ { 0x006F, 0x000C },
+ { 0x0070, 0x000C }
+};
+
+static const FrameControl k2IngameShapeAnimDataFMTowns9FrameControl[4] = {
+ { 0x0079, 0x0008 },
+ { 0x007A, 0x0008 },
+ { 0x007B, 0x0008 },
+ { 0x007C, 0x0008 }
+};
+
+static const FrameControl k2IngameShapeAnimDataFMTowns10FrameControl[4] = {
+ { 0x007E, 0x0008 },
+ { 0x007F, 0x0008 },
+ { 0x0080, 0x0008 },
+ { 0x0081, 0x0008 }
+};
+
+static const FrameControl k2IngameShapeAnimDataFMTowns11FrameControl[6] = {
+ { 0x0091, 0x01A4 },
+ { 0x0092, 0x0004 },
+ { 0x0093, 0x0004 },
+ { 0x0094, 0x0004 },
+ { 0x0093, 0x0004 },
+ { 0x0092, 0x0004 }
+};
+
+static const FrameControl k2IngameShapeAnimDataFMTowns12FrameControl[4] = {
+ { 0x0095, 0x0006 },
+ { 0x0096, 0x0006 },
+ { 0x0097, 0x0006 },
+ { 0x0098, 0x0006 }
+};
+
+static const FrameControl k2IngameShapeAnimDataFMTowns13FrameControl[4] = {
+ { 0x0099, 0x002D },
+ { 0x009A, 0x002D },
+ { 0x009B, 0x002D },
+ { 0x009C, 0x002D }
+};
+
+static const ItemAnimDefinition k2IngameShapeAnimDataFMTowns[14] = {
+ { 6, 12, k2IngameShapeAnimDataFMTowns0FrameControl },
+ { 2, 6, k2IngameShapeAnimDataFMTowns1FrameControl },
+ { 11, 6, k2IngameShapeAnimDataFMTowns2FrameControl },
+ { 28, 4, k2IngameShapeAnimDataFMTowns3FrameControl },
+ { 23, 4, k2IngameShapeAnimDataFMTowns4FrameControl },
+ { 22, 4, k2IngameShapeAnimDataFMTowns5FrameControl },
+ { 58, 4, k2IngameShapeAnimDataFMTowns6FrameControl },
+ { 26, 4, k2IngameShapeAnimDataFMTowns7FrameControl },
+ { 109, 4, k2IngameShapeAnimDataFMTowns8FrameControl },
+ { 121, 4, k2IngameShapeAnimDataFMTowns9FrameControl },
+ { 126, 4, k2IngameShapeAnimDataFMTowns10FrameControl },
+ { 145, 6, k2IngameShapeAnimDataFMTowns11FrameControl },
+ { 149, 4, k2IngameShapeAnimDataFMTowns12FrameControl },
+ { 153, 4, k2IngameShapeAnimDataFMTowns13FrameControl }
+};
+
+static const ItemAnimDefinitionProvider k2IngameShapeAnimDataFMTownsProvider = { ARRAYSIZE(k2IngameShapeAnimDataFMTowns), k2IngameShapeAnimDataFMTowns };
+
diff --git a/devtools/create_kyradat/resources/hof_fmtowns_english.h b/devtools/create_kyradat/resources/hof_fmtowns_english.h
new file mode 100644
index 0000000000..e2904c70ad
--- /dev/null
+++ b/devtools/create_kyradat/resources/hof_fmtowns_english.h
@@ -0,0 +1,110 @@
+static const char *const k2SeqplayStringsFMTownsEnglish[105] = {
+ "Kyrandia is disappearing!",
+ "Rock by rock,",
+ "And tree by tree.",
+ "Kyrandia ceases to exist!",
+ "The Royal Mystics are baffled.",
+ "Every reference has been consulted.",
+ "Even Marko and his new valet, have been allowed into the conference.",
+ "Luckily, the Hand was experienced in these matters.",
+ "And finally a plan was approved,",
+ "That required a magic Anchor Stone,",
+ "To be retrieved from the center of the world.",
+ "Zanthia, youngest of the Kyrandian Mystics, has been selected to retrieve the Stone.",
+ "Thank you for playing The Hand of Fate.",
+ "This should be enough blueberries to open a portal to the center of the world.",
+ " DUMMY STRING... ",
+ " DUMMY STRING... ",
+ "Hey! All my equipment has been stolen!",
+ " DUMMY STRING... ",
+ "If they think I'm going to walk all the way down there, they're nuts!",
+ " DUMMY STRING... ",
+ " DUMMY STRING... ",
+ "Hurry up Faun!",
+ "Boy, that was a close call!",
+ "You said it pal. I, for one, am never going hunting again!",
+ "Ribbit.",
+ "How many times do I have to tell you? You're a toad.",
+ "Oh no! We're out of cheese!",
+ "Let's try this earwax. It's orange.",
+ "Mommy, when do I get the ivy?",
+ "Get out of here, shoo!",
+ "You cut, and I'll choose.",
+ "No. You cut and I'll choose.",
+ "I still say it was derivative drivel.",
+ "Aw, you still wouldn't recognize iambic pentameter if it bit you on the butt!",
+ "Executive Producer",
+ "Brett W. Sperry",
+ "Designed & Directed by",
+ "Rick Gush",
+ "Lead Programmer",
+ "Michael Legg",
+ "Art Management",
+ "Louis Castle",
+ "Joseph B. Hewitt IV",
+ "Lead Artist",
+ "Rick Parks",
+ "Additional Coding by",
+ "Philip W. Gorrow",
+ "Matt Collins",
+ "Mark McCubbin",
+ "Artists",
+ "Cameron Chun",
+ "Cary Averett",
+ "Cindy Chinn",
+ "Elie Arabian",
+ "Fei Cheng",
+ "Ferby Miguel",
+ "Frank Mendeola",
+ "Jack Martin",
+ "Jerry Moore",
+ "",
+ "Judith Peterson",
+ "Larry Miller",
+ "Lenny Lee",
+ "Louise Sandoval",
+ "Ren Olsen",
+ "Music & Sounds by",
+ "Paul Mudra",
+ "Frank Klepacki",
+ "Dwight Okahara",
+ "Pat Collins",
+ "Qualilty Assurance by",
+ "Glenn Sperry",
+ "Michael Lightner",
+ "William Foster",
+ "Jesse Clemit",
+ "Jeff Fillhaber",
+ "Manual, Package Design",
+ "& Fulfillment",
+ "Eydie Laramore",
+ "Lisa Marcinko",
+ "Lauren Rifkin",
+ "Congratulations!",
+ "Thank you for playing The Hand of Fate!",
+ "Guest Coding",
+ "Producer Liaison",
+ "Scott Duckett",
+ "Irvine Testers",
+ "Chris McFarland",
+ "Paul Moore",
+ "Chad Soares",
+ "Jared Brinkley",
+ "Jon Willliams",
+ "Chris Toft",
+ "Chris's Hair by",
+ "Cumulo Nimbus",
+ "Load a game",
+ "Introduction",
+ "Start a new game",
+ "Exit the game",
+ "Special Thanks to",
+ "Sake Joe Bostic-san",
+ "Tim Fritz",
+ "Kenny Dunne",
+ "Yukio Sekiguchi (Japan)",
+ "Takeshi Abo (Japan)"
+};
+
+static const StringListProvider k2SeqplayStringsFMTownsEnglishProvider = { ARRAYSIZE(k2SeqplayStringsFMTownsEnglish), k2SeqplayStringsFMTownsEnglish };
+
diff --git a/devtools/create_kyradat/resources/hof_fmtowns_japanese.h b/devtools/create_kyradat/resources/hof_fmtowns_japanese.h
new file mode 100644
index 0000000000..4029b01d03
--- /dev/null
+++ b/devtools/create_kyradat/resources/hof_fmtowns_japanese.h
@@ -0,0 +1,110 @@
+static const char *const k2SeqplayStringsFMTownsJapanese[105] = {
+ "\x83""L""\x83\x89\x83\x93\x83""f""\x83""B""\x83""A""\x82\xAA\x8F\xC1\x82\xA6\x82\xC4\x82\xA2\x82\xAD\x81""I",
+ "\x8A\xE2\x81""X""\x82\xE2\x81""A",
+ "\x96\xD8\x81""X""\x82\xDC\x82\xC5\x82\xE0\x81""B",
+ "\x83""L""\x83\x89\x83\x93\x83""f""\x83""B""\x83""A""\x82\xF0\x8B""~""\x82\xED\x82\xC8\x82\xAF\x82\xEA\x82\xCE\x82\xC8\x82\xE7\x82\xC8\x82\xA2\x81""I",
+ "\x96\x82\x8F""p""\x8E""t""\x82\xBD\x82\xBF\x82\xCD\x94""Y""\x82\xF1\x82\xBE\x81""B",
+ "\x82\xA0\x82\xE7\x82\xE4\x82\xE9\x91\xCE\x8D\xF4\x82\xAA\x8B\xA6\x8B""c""\x82\xB3\x82\xEA\x82\xBD\x82\xAA\x81""E""\x81""E""\x81""E",
+ "\x83""}""\x83\x8B\x83""R""\x82\xC6\x83""n""\x83\x93\x83""h""\x82\xAA\x81""A""\x82\xB1\x82\xCC\x96\xE2\x91\xE8\x82\xF0\x94""C""\x82\xB3\x82\xEA\x82\xBD\x81""B",
+ "\x83""n""\x83\x93\x83""h""\x82\xAA\x94\xAD\x88\xC4\x82\xB5\x82\xC4\x81""A",
+ "\x82\xC2\x82\xA2\x82\xC9\x81""A""\x89\xF0\x8C\x88\x8D\xF4\x82\xAA\x8C\x88\x92\xE8\x82\xB5\x82\xBD\x81""B",
+ "\x83""L""\x83\x89\x83\x93\x83""f""\x83""B""\x83""A""\x82\xF0\x8B""~""\x82\xA4\x82\xC9\x82\xCD\x81""A",
+ "\x90\xA2\x8A""E""\x82\xCC\x92\x86\x90""S""\x82\xC9\x82\xA0\x82\xE9\x81""h""\x96\x82\x96""@""\x82\xCC\x82\xA2\x82\xA9\x82\xE8\x90\xCE\x81""h""\x82\xAA\x95""K""\x97""v""\x82\xBE\x81""B",
+ "\x83""U""\x83\x93\x83""V""\x83""A""\x81""A""\x8C""N""\x82\xAA\x8D\xCC\x82\xE8\x82\xC9\x8D""s""\x82\xAD\x82\xCC\x82\xBE\x81""B",
+ "Thank you for playing The Hand of Fate.",
+ "\x90\xA2\x8A""E""\x82\xCC\x92\x86\x90""S""\x82\xD6\x8D""s""\x82\xAD\x82\xC9\x82\xCD\x81""A""\x83""u""\x83\x8B\x81""[""\x83""x""\x83\x8A\x81""[""\x82\xE0\x95""K""\x97""v""\x82\xBE\x82\xC6\x8E""v""\x82\xA4\x82\xED\x81""B",
+ " DUMMY STRING... ",
+ " DUMMY STRING... ",
+ "\x82\xA0\x82\x9F\x81""A""\x8E\x84\x82\xCC\x8E\x9D\x82\xBF\x95\xA8\x82\xAA\x82\xB7\x82\xD7\x82\xC4\x93\x90\x82\xDC\x82\xEA\x82\xC4\x82\xA2\x82\xE9\x81""I",
+ " DUMMY STRING... ",
+ "\x82\xBE\x82\xC1\x82\xC4\x81""A""\x90\xA2\x8A""E""\x82\xCC\x92\x86\x90""S""\x82\xDC\x82\xC5\x95\xE0\x82\xA2\x82\xC4\x8D""s""\x82\xAD\x82\xC8\x82\xF1\x82\xC4\x81""A""\x8B""C""\x82\xAA\x89\x93\x82\xAD\x82\xC8\x82\xE9\x82\xB6\x82\xE1\x82\xC8\x82\xA2\x81""I",
+ " DUMMY STRING... ",
+ " DUMMY STRING... ",
+ "\x8B""}""\x82\xAE\x82\xCC\x82\xE6\x81""A""\x83""t""\x83""H""\x81""[""\x83\x93\x81""I",
+ "\x82\xE2\x82\xC1\x82\xCF\x82\xE8\x81""A""\x97\x88\x82\xE9\x82\xF1\x82\xB6\x82\xE1\x82\xC8\x82\xA9\x82\xC1\x82\xBD\x81""I",
+ "\x82\xE0\x82\xA4\x81""A""\x93\xF1\x93""x""\x82\xC6\x97\xC2\x82\xC9\x8D""s""\x82\xA9\x82\xCB\x82\xA6\x81""I",
+ "\x83""Q""\x83\x8D\x83""Q""\x81""[""\x83\x8D\x81""B",
+ "\x8A""^""\x82\xCC\x8E""q""\x82\xCD\x8A""^""\x82\xBE\x81""B""\x81""@",
+ "\x82\xC8\x82\xF1\x82\xBE\x81""A""\x82\xE0\x82\xA4\x83""`""\x81""[""\x83""Y""\x82\xCD\x82\xC8\x82\xA2\x82\xBC\x81""I",
+ "\x82\xE6\x82\xB5\x81""A""\x83""I""\x83\x8C\x83\x93\x83""W""\x82\xCC\x94\xE7\x82\xC5\x82\xE2\x82\xEB\x82\xA4\x81""B",
+ "\x83""}""\x83""}""\x81""A""\x96""l""\x82\xCC\x96\xD1\x82\xE0\x82\xD3\x82\xB3\x82\xD3\x82\xB3\x81""H",
+ "\x82\xA8\x82\xA2\x82\xB1\x82\xE7\x81""A""\x82\xB1\x82\xB1\x82\xA9\x82\xE7\x8F""o""\x82\xC4\x8D""s""\x82\xAF\x81""I",
+ "\x82\xA8\x91""O""\x82\xAA\x94\xBC\x95\xAA\x82\xC9\x90\xD8\x82\xEA\x82\xE6\x81""A""\x89\xB4\x82\xAA\x91""I""\x82\xD4\x82\xA9\x82\xE7\x82\xB3\x81""B",
+ "\x82\xA2\x82\xE2\x81""A""\x82\xA8\x91""O""\x82\xAA\x94\xBC\x95\xAA\x82\xC9\x90\xD8\x82\xEA\x82\xCE\x81""A""\x89\xB4\x82\xAA\x91""I""\x82\xD4\x81""B",
+ "\x89\xB4\x82\xCD\x82\xDC\x82\xBE\x81""A""\x94""[""\x93\xBE\x82\xB5\x82\xBF\x82\xE1\x82\xA2\x82\xC8\x82\xA2\x82\xBA\x81""B",
+ "\x82\xA2\x82\xA2\x89\xC1\x8C\xB8\x82\xC9\x82\xB5\x82\xEB\x81""A""\x82\xDC\x82\xBD\x89\xA3\x82\xE9\x82\xBC\x81""I",
+ "Executive Producer",
+ "Brett W. Sperry",
+ "Designed & Directed by",
+ "Rick Gush",
+ "Lead Programmer",
+ "Michael Legg",
+ "Art Management",
+ "Louis Castle",
+ "Joseph B. Hewitt IV",
+ "Lead Artist",
+ "Rick Parks",
+ "Additional Coding by",
+ "Philip W. Gorrow",
+ "Matt Collins",
+ "Mark McCubbin",
+ "Artists",
+ "Cameron Chun",
+ "Cary Averett",
+ "Cindy Chinn",
+ "Elie Arabian",
+ "Fei Cheng",
+ "Ferby Miguel",
+ "Frank Mendeola",
+ "Jack Martin",
+ "Jerry Moore",
+ "",
+ "Judith Peterson",
+ "Larry Miller",
+ "Lenny Lee",
+ "Louise Sandoval",
+ "Ren Olsen",
+ "Music & Sounds by",
+ "Paul Mudra",
+ "Frank Klepacki",
+ "Dwight Okahara",
+ "Pat Collins",
+ "Qualilty Assurance by",
+ "Glenn Sperry",
+ "Michael Lightner",
+ "William Foster",
+ "Jesse Clemit",
+ "Jeff Fillhaber",
+ "Manual, Package Design",
+ "& Fulfillment",
+ "Eydie Laramore",
+ "Lisa Marcinko",
+ "Lauren Rifkin",
+ "Congratulations!",
+ "Thank you for playing The Hand of Fate!",
+ "Guest Coding",
+ "Producer Liaison",
+ "Scott Duckett",
+ "Irvine Testers",
+ "Chris McFarland",
+ "Paul Moore",
+ "Chad Soares",
+ "Jared Brinkley",
+ "Jon Willliams",
+ "Chris Toft",
+ "Chris's Hair by",
+ "Cumulo Nimbus",
+ "\x83""f""\x81""[""\x83""^""\x82\xF0\x83\x8D\x81""[""\x83""h""\x82\xB7\x82\xE9",
+ "\x83""C""\x83\x93\x83""g""\x83\x8D\x83""_""\x83""N""\x83""V""\x83\x87\x83\x93",
+ "\x90""V""\x82\xBD\x82\xC9\x83""Q""\x81""[""\x83\x80\x82\xF0\x8E""n""\x82\xDF\x82\xE9",
+ "\x83""Q""\x81""[""\x83\x80\x82\xF0\x8F""I""\x97\xB9\x82\xB7\x82\xE9",
+ "Special Thanks to",
+ "Sake Joe Bostic-san",
+ "Tim Fritz",
+ "Kenny Dunne",
+ "Yukio Sekiguchi (Japan)",
+ "Takeshi Abo (Japan)"
+};
+
+static const StringListProvider k2SeqplayStringsFMTownsJapaneseProvider = { ARRAYSIZE(k2SeqplayStringsFMTownsJapanese), k2SeqplayStringsFMTownsJapanese };
+
diff --git a/devtools/create_kyradat/resources/hof_pc98.h b/devtools/create_kyradat/resources/hof_pc98.h
new file mode 100644
index 0000000000..3ff072f5e9
--- /dev/null
+++ b/devtools/create_kyradat/resources/hof_pc98.h
@@ -0,0 +1,656 @@
+static const char *const k2SeqplayPakFilesPC98[3] = {
+ "INTROGEN.PAK",
+ "INTROVOC.PAK",
+ "VOC.PAK"
+};
+
+static const StringListProvider k2SeqplayPakFilesPC98Provider = { ARRAYSIZE(k2SeqplayPakFilesPC98), k2SeqplayPakFilesPC98 };
+
+static const char *const k2SeqplaySfxFilesPC98[33] = {
+ "intro1",
+ "intro2",
+ "intro3",
+ "intro4",
+ "intro5",
+ "intro6",
+ "intro7",
+ "intro8",
+ "intro9",
+ "intro10",
+ "intro11",
+ "intro12",
+ "glow",
+ "asong",
+ "crowcaw",
+ "eyerub2",
+ "pluck3",
+ "rodnreel",
+ "frog1",
+ "scavmov2",
+ "lambmom3",
+ "lambkid1",
+ "thunder2",
+ "thunder3",
+ "wind6",
+ "h2odrop2",
+ "gasleak",
+ "polgulp1",
+ "hndslap1",
+ "burp1",
+ "scream1",
+ "theend",
+ ""
+};
+
+static const StringListProvider k2SeqplaySfxFilesPC98Provider = { ARRAYSIZE(k2SeqplaySfxFilesPC98), k2SeqplaySfxFilesPC98 };
+
+static const HoFSequence k2SeqplaySeqDataPC98Seq[16] = {
+ { 0x0002, "", "virgin.cps", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x0001, 0x0064, 0, 0, 0x001E },
+ { 0x0001, "westwood.wsa", "", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x0012, 0x000C, 0, 0, 0x00A0 },
+ { 0x0001, "title.wsa", "", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x001A, 0x000C, 0, 0, 0x000A },
+ { 0x0002, "", "over.cps", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x0001, 0x0E10, 0, 0, 0x001E },
+ { 0x0002, "", "library.cps", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x0001, 0x0E10, 0, 0, 0x001E },
+ { 0x0002, "", "hand.cps", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x0001, 0x0E10, 0, 0, 0x005A },
+ { 0x0001, "point.wsa", "", 4, 8, 0xFFFF, 0xFFFF, 0x0000, 0x0026, 0x0007, 0, 0, 0x00C8 },
+ { 0x0001, "zanfaun.wsa", "", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x0033, 0x0010, 0, 0, 0x00F0 },
+ { 0x0001, "funters.wsa", "", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x001B, 0x000C, 0, 0, 0x001E },
+ { 0x0001, "ferb.wsa", "", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x001B, 0x0010, 0, 0, 0x001E },
+ { 0x0001, "fish.wsa", "", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x0038, 0x000C, 0, 0, 0x001E },
+ { 0x0001, "fheep.wsa", "", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x000B, 0x000C, 0, 0, 0x001E },
+ { 0x0001, "farmer.wsa", "", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x0016, 0x000C, 0, 0, 0x0064 },
+ { 0x0001, "fuards.wsa", "", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x0018, 0x000E, 0, 0, 0x001E },
+ { 0x0001, "firates.wsa", "", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x0025, 0x000C, 0, 0, 0x001E },
+ { 0x0001, "frash.wsa", "", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x000C, 0x000A, 0, 0, 0x0154 }
+};
+
+static const FrameControl k2SeqplaySeqDataPC98SeqNestedControl7[18] = {
+ { 0, 10 },
+ { 1, 10 },
+ { 2, 10 },
+ { 3, 10 },
+ { 4, 10 },
+ { 5, 10 },
+ { 6, 10 },
+ { 7, 10 },
+ { 8, 10 },
+ { 9, 10 },
+ { 8, 10 },
+ { 7, 10 },
+ { 6, 10 },
+ { 5, 40 },
+ { 4, 10 },
+ { 3, 10 },
+ { 2, 10 },
+ { 1, 10 }
+};
+
+static const FrameControl k2SeqplaySeqDataPC98SeqNestedControl10[17] = {
+ { 0, 6 },
+ { 1, 6 },
+ { 2, 6 },
+ { 3, 6 },
+ { 4, 6 },
+ { 5, 6 },
+ { 6, 6 },
+ { 7, 6 },
+ { 8, 6 },
+ { 9, 6 },
+ { 10, 6 },
+ { 11, 6 },
+ { 11, 12 },
+ { 12, 12 },
+ { 13, 12 },
+ { 12, 12 },
+ { 11, 12 }
+};
+
+static const FrameControl k2SeqplaySeqDataPC98SeqNestedControl11[9] = {
+ { 0, 6 },
+ { 1, 6 },
+ { 2, 6 },
+ { 3, 6 },
+ { 4, 6 },
+ { 3, 6 },
+ { 4, 6 },
+ { 5, 64 },
+ { 5, 6 }
+};
+
+static const FrameControl k2SeqplaySeqDataPC98SeqNestedControl12[16] = {
+ { 0, 6 },
+ { 1, 6 },
+ { 0, 6 },
+ { 1, 6 },
+ { 0, 6 },
+ { 1, 6 },
+ { 0, 6 },
+ { 1, 6 },
+ { 0, 6 },
+ { 1, 6 },
+ { 0, 6 },
+ { 1, 6 },
+ { 0, 6 },
+ { 1, 6 },
+ { 0, 6 },
+ { 1, 6 }
+};
+
+static const FrameControl k2SeqplaySeqDataPC98SeqNestedControl13[5] = {
+ { 0, 6 },
+ { 1, 6 },
+ { 2, 6 },
+ { 1, 6 },
+ { 0, 1 }
+};
+
+static const FrameControl k2SeqplaySeqDataPC98SeqNestedControl14[8] = {
+ { 0, 6 },
+ { 1, 6 },
+ { 2, 6 },
+ { 3, 6 },
+ { 4, 6 },
+ { 3, 6 },
+ { 2, 6 },
+ { 1, 6 }
+};
+
+static const HoFNestedSequence k2SeqplaySeqDataPC98SeqNested[15] = {
+ { 0x000C, "figgle.wsa", 0, 3, 60, 0, 0, 0, NULL, 0, 0 },
+ { 0x0008, "over1.wsa", 0, 10, 10, 0, 0, 0, NULL, 0, 0 },
+ { 0x0008, "over2.wsa", 0, 11, 9, 0, 0, 0, NULL, 0, 0 },
+ { 0x0008, "forest.wsa", 0, 22, 6, 0, 0, 0, NULL, 1, 3 },
+ { 0x0008, "dragon.wsa", 0, 11, 6, 0, 0, 0, NULL, 2, 0 },
+ { 0x0002, "darm.wsa", 0, 19, 9, 0, 0, 0, NULL, 4, 0 },
+ { 0x0002, "library.wsa", 0, 33, 9, 0, 0, 0, NULL, 4, 0 },
+ { 0x002A, "library.wsa", 0, 18, 9, 0, 0, ARRAYSIZE(k2SeqplaySeqDataPC98SeqNestedControl7), k2SeqplaySeqDataPC98SeqNestedControl7, 0, 0 },
+ { 0x000A, "marco.wsa", 0, 37, 9, 0, 0, 0, NULL, 4, 0 },
+ { 0x0002, "hand1a.wsa", 0, 34, 9, 0, 0, 0, NULL, 0, 0 },
+ { 0x002A, "hand1b.wsa", 0, 16, 9, 0, 0, ARRAYSIZE(k2SeqplaySeqDataPC98SeqNestedControl10), k2SeqplaySeqDataPC98SeqNestedControl10, 0, 0 },
+ { 0x002A, "hand1c.wsa", 0, 9, 9, 0, 0, ARRAYSIZE(k2SeqplaySeqDataPC98SeqNestedControl11), k2SeqplaySeqDataPC98SeqNestedControl11, 0, 0 },
+ { 0x002C, "hand2.wsa", 0, 2, 9, 0, 0, ARRAYSIZE(k2SeqplaySeqDataPC98SeqNestedControl12), k2SeqplaySeqDataPC98SeqNestedControl12, 5, 0 },
+ { 0x002C, "hand3.wsa", 0, 4, 9, 0, 0, ARRAYSIZE(k2SeqplaySeqDataPC98SeqNestedControl13), k2SeqplaySeqDataPC98SeqNestedControl13, 5, 0 },
+ { 0x002C, "hand4.wsa", 0, 8, 9, 0, 0, ARRAYSIZE(k2SeqplaySeqDataPC98SeqNestedControl14), k2SeqplaySeqDataPC98SeqNestedControl14, 5, 0 }
+};
+
+static const HoFSequenceProvider k2SeqplaySeqDataPC98Provider = { ARRAYSIZE(k2SeqplaySeqDataPC98Seq), k2SeqplaySeqDataPC98Seq, ARRAYSIZE(k2SeqplaySeqDataPC98SeqNested), k2SeqplaySeqDataPC98SeqNested };
+
+static const char *const k2IngamePakFilesPC98[20] = {
+ "MISC_EMC.PAK",
+ "VOC.PAK",
+ "MISC_CPS.PAK",
+ "OTHER.PAK",
+ "COST1_SH.PAK",
+ "COST2_SH.PAK",
+ "COST3_SH.PAK",
+ "COST4_SH.PAK",
+ "COST5_SH.PAK",
+ "COST6_SH.PAK",
+ "COST7_SH.PAK",
+ "COST8_SH.PAK",
+ "COST9_SH.PAK",
+ "CAULDRON.PAK",
+ "AUDIO.PAK",
+ "HOFCH_1.PAK",
+ "HOFCH_2.PAK",
+ "HOFCH_3.PAK",
+ "HOFCH_4.PAK",
+ "HOFCH_5.PAK"
+};
+
+static const StringListProvider k2IngamePakFilesPC98Provider = { ARRAYSIZE(k2IngamePakFilesPC98), k2IngamePakFilesPC98 };
+
+static const char *const k2IngameSfxFilesPC98[178] = {
+ "ALCHEMY2",
+ "BIGSLAM",
+ "BITE1",
+ "BLINK1",
+ "BOING1",
+ "BUBBLE1",
+ "BUBBLE2",
+ "BURP1",
+ "BUTTON6",
+ "CAULDRN2",
+ "CHEST",
+ "CLOTHES1",
+ "CROCLAF4",
+ "CRY1",
+ "CRY2",
+ "DOORMTCL",
+ "DOORMTOP",
+ "DOORWDCL",
+ "DOORWDOP",
+ "DRUM1",
+ "DRUM2",
+ "DRUM3",
+ "DRUM4",
+ "DRUM5",
+ "DRUM6",
+ "DRUM7",
+ "EYERUB2",
+ "FALL1",
+ "FALL3",
+ "FNGRSNAP",
+ "FORMSPL1",
+ "FROG1",
+ "FROGMIX2",
+ "GASLEAK",
+ "GLOWY1",
+ "GOOD3",
+ "GOOD5",
+ "GROWTWIG",
+ "H2ODROP2",
+ "H2OPLANT",
+ "HACHUCKD",
+ "HAYFALL2",
+ "HAYSRCH4",
+ "ICECUBE",
+ "KEYOPEN",
+ "LAMBKID1",
+ "LAMBMOM3",
+ "LAUGH1",
+ "LAUGH3",
+ "LAUGH4",
+ "LIZLISP",
+ "MAKESPL1",
+ "MSTDOOM1",
+ "ORCMOVE",
+ "PLUCK3",
+ "POLGULP1",
+ "PORTCUL",
+ "POURH20",
+ "RIP2",
+ "RODNREEL",
+ "ROWBOAT1",
+ "RUCKUS1",
+ "SCAVMOV2",
+ "SCRATCH1",
+ "SNAKSPEL",
+ "SNEEZE1",
+ "SNIFF1",
+ "SNOREIN3",
+ "SNOROUT",
+ "SPLASH1",
+ "SQUEAK1",
+ "SQUEAK2",
+ "SQUEAK3",
+ "SQUISH1",
+ "SQUISH2",
+ "STEAM",
+ "STEAM3",
+ "STRETCH1",
+ "SWING",
+ "TREZA1",
+ "TURNPAG2",
+ "TWIGSNAP",
+ "UGH1",
+ "WHEEL4",
+ "WINGS1",
+ "YAWN1",
+ "ZOOM5",
+ "FILBOTL",
+ "H2OPOUR1",
+ "JAILDOR1",
+ "JAILLOK1",
+ "CASHREG1",
+ "SWISH1",
+ "TURNBOAT",
+ "CLAPPING",
+ "CRUNCH1",
+ "WHEEL6",
+ "LITEMAG",
+ "SHELDOWN",
+ "SHELSLID",
+ "ZOW2",
+ "ZANLOOP1",
+ "SCREECH2",
+ "PANTING",
+ "TREX1",
+ "TREX5",
+ "TREX3",
+ "QUAKE",
+ "WRINGH2O",
+ "SPLAT2",
+ "OCEAN1",
+ "SPLAT3",
+ "CROCLAF5",
+ "FALL5",
+ "ZCMON2",
+ "ZWAIT3",
+ "ZNO2",
+ "CROCLAF7",
+ "CRICKET1",
+ "FIREBRTH",
+ "COW2",
+ "SAP2",
+ "PMTLHI",
+ "FROGSIGH",
+ "CRICEND",
+ "CRY3",
+ "CRY4",
+ "SHROOM1",
+ "DRIP1",
+ "SWIM4",
+ "CUCKOO2",
+ "PUNCH1",
+ "SNORT3",
+ "STAMPER2",
+ "WALLFALL",
+ "WOODFAL1",
+ "SPRAY1",
+ "OHNO1",
+ "YAHOO1",
+ "YIPEE1",
+ "WIND1",
+ "WIND3",
+ "WIND6",
+ "BLOWUP2",
+ "BOATLOP2",
+ "ZGIGGL1",
+ "ZCOUGH1",
+ "CRUSH",
+ "ALARM3",
+ "APPLEAT",
+ "BABYCRY1",
+ "BABYLAF1",
+ "BABYLIK1",
+ "GEARMX3",
+ "GLASBRK2",
+ "HANDKIL1",
+ "HNDSLAP1",
+ "ICEPICK1",
+ "KISS3",
+ "LOLIFAL1",
+ "PAGEBURN",
+ "PRTYHORN",
+ "SCREAM1",
+ "SPARKHIT",
+ "SPRING2",
+ "ZANLAND1",
+ "BIGBOW",
+ "BOWFORM",
+ "BULBHIT",
+ "EYELITE",
+ "ROOFBOW",
+ "FBIGFOT1",
+ "BIGFOOT4",
+ "DORSTNCL",
+ "CROWCAW",
+ "THUNDER2",
+ "THUNDER3",
+ "TOILET"
+};
+
+static const StringListProvider k2IngameSfxFilesPC98Provider = { ARRAYSIZE(k2IngameSfxFilesPC98), k2IngameSfxFilesPC98 };
+
+static const byte k2IngameSfxIndexPC98[856] = {
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00,
+ 0x37, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
+ 0x47, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00,
+ 0x1F, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00,
+ 0x25, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00,
+ 0x36, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00,
+ 0x3F, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00,
+ 0x45, 0x00, 0x00, 0x00, 0x4D, 0x00, 0x00, 0x00,
+ 0x7B, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00,
+ 0x3C, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x00, 0x00,
+ 0x4E, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x00, 0x43, 0x00, 0x04, 0x00,
+ 0x56, 0x00, 0x00, 0x00, 0x40, 0x00, 0x05, 0x00,
+ 0x40, 0x00, 0x05, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0x64, 0x00, 0x00, 0x00, 0x4C, 0x00, 0x00, 0x00,
+ 0x12, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00,
+ 0x37, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00,
+ 0x1D, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
+ 0x49, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00,
+ 0x0A, 0x00, 0x00, 0x00, 0x4A, 0x00, 0x00, 0x00,
+ 0x09, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
+ 0x0D, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00,
+ 0x53, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00,
+ 0x0C, 0x00, 0x00, 0x00, 0x4B, 0x00, 0x00, 0x00,
+ 0x21, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00,
+ 0x32, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
+ 0x1B, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00,
+ 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
+ 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00,
+ 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00,
+ 0x19, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00,
+ 0x1A, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00,
+ 0x77, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x00, 0x00,
+ 0x55, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00,
+ 0x2A, 0x00, 0x00, 0x00, 0x2E, 0x00, 0x00, 0x00,
+ 0x2D, 0x00, 0x00, 0x00, 0x27, 0x00, 0x05, 0x00,
+ 0x25, 0x00, 0x00, 0x00, 0x46, 0x00, 0x05, 0x00,
+ 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
+ 0x34, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00,
+ 0x4F, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00,
+ 0x0F, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
+ 0x0A, 0x00, 0x00, 0x00, 0x78, 0x00, 0x06, 0x00,
+ 0x50, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x33, 0x00, 0x06, 0x00, 0x3A, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0x1E, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00,
+ 0x23, 0x00, 0x05, 0x00, 0x24, 0x00, 0x05, 0x00,
+ 0x3E, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00,
+ 0x48, 0x00, 0x05, 0x00, 0x20, 0x00, 0x00, 0x00,
+ 0x63, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0x7A, 0x00, 0x00, 0x00, 0x5E, 0x00, 0x00, 0x00,
+ 0x5B, 0x00, 0x00, 0x00, 0x5A, 0x00, 0x00, 0x00,
+ 0x10, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00,
+ 0x5D, 0x00, 0x00, 0x00, 0x5C, 0x00, 0x00, 0x00,
+ 0x57, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00,
+ 0x30, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00,
+ 0x61, 0x00, 0x05, 0x00, 0x58, 0x00, 0x00, 0x00,
+ 0x5F, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0x65, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00,
+ 0x67, 0x00, 0x00, 0x00, 0x68, 0x00, 0x05, 0x00,
+ 0x69, 0x00, 0x05, 0x00, 0x6A, 0x00, 0x05, 0x00,
+ 0x01, 0x00, 0x05, 0x00, 0x6B, 0x00, 0x00, 0x00,
+ 0x6C, 0x00, 0x00, 0x00, 0x6D, 0x00, 0x00, 0x00,
+ 0x90, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0x6F, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00,
+ 0x71, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00,
+ 0x73, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00,
+ 0x75, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00,
+ 0x09, 0x00, 0x06, 0x00, 0x7D, 0x00, 0x00, 0x00,
+ 0x7E, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00,
+ 0x80, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00,
+ 0x84, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00,
+ 0x82, 0x00, 0x05, 0x00, 0x86, 0x00, 0x00, 0x00,
+ 0x88, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00,
+ 0x8A, 0x00, 0x00, 0x00, 0x8B, 0x00, 0x00, 0x00,
+ 0x87, 0x00, 0x00, 0x00, 0x8C, 0x00, 0x00, 0x00,
+ 0x8D, 0x00, 0x00, 0x00, 0x8E, 0x00, 0x00, 0x00,
+ 0x8F, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00,
+ 0x91, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00,
+ 0x93, 0x00, 0x05, 0x00, 0x94, 0x00, 0x00, 0x00,
+ 0x5F, 0x00, 0x00, 0x00, 0x96, 0x00, 0x05, 0x00,
+ 0x97, 0x00, 0x00, 0x00, 0x98, 0x00, 0x04, 0x00,
+ 0x99, 0x00, 0x00, 0x00, 0x9A, 0x00, 0x00, 0x00,
+ 0x9B, 0x00, 0x00, 0x00, 0x9C, 0x00, 0x00, 0x00,
+ 0x9D, 0x00, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x00,
+ 0x9F, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00,
+ 0xA1, 0x00, 0x00, 0x00, 0xA2, 0x00, 0x00, 0x00,
+ 0xA3, 0x00, 0x00, 0x00, 0xA4, 0x00, 0x00, 0x00,
+ 0xA5, 0x00, 0x00, 0x00, 0xA6, 0x00, 0x00, 0x00,
+ 0xA7, 0x00, 0x00, 0x00, 0xA8, 0x00, 0x00, 0x00,
+ 0xA9, 0x00, 0x00, 0x00, 0xAA, 0x00, 0x00, 0x00,
+ 0xAB, 0x00, 0x00, 0x00, 0xAC, 0x00, 0x00, 0x00,
+ 0xAD, 0x00, 0x00, 0x00, 0xAE, 0x00, 0x05, 0x00,
+ 0xAF, 0x00, 0x00, 0x00, 0xB0, 0x00, 0x00, 0x00,
+ 0xB1, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const ByteProvider k2IngameSfxIndexPC98Provider = { ARRAYSIZE(k2IngameSfxIndexPC98), k2IngameSfxIndexPC98 };
+
+static const byte k2IngameTalkObjIndexPC98[120] = {
+ 0x6B, 0x6D, 0x25, 0x30, 0x32, 0x64, 0x2E, 0x32,
+ 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00,
+ 0x18, 0x00, 0x26, 0x00, 0x41, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, 0x00,
+ 0x05, 0x00, 0x06, 0x00, 0x07, 0x00, 0x08, 0x00,
+ 0x09, 0x00, 0x0A, 0x00, 0x11, 0x00, 0x12, 0x00,
+ 0x13, 0x00, 0x14, 0x00, 0x15, 0x00, 0x2A, 0x00,
+ 0x17, 0x00, 0x18, 0x00, 0x19, 0x00, 0x1A, 0x00,
+ 0x1B, 0x00, 0x1C, 0x00, 0x1D, 0x00, 0x1E, 0x00,
+ 0x1F, 0x00, 0x20, 0x00, 0x21, 0x00, 0x22, 0x00,
+ 0x23, 0x00, 0x24, 0x00, 0x30, 0x00, 0x35, 0x00,
+ 0x36, 0x00, 0x37, 0x00, 0x39, 0x00, 0x3A, 0x00,
+ 0x3B, 0x00, 0x3D, 0x00, 0x3E, 0x00, 0x3F, 0x00,
+ 0x40, 0x00, 0x41, 0x00, 0x42, 0x00, 0x43, 0x00,
+ 0x44, 0x00, 0x45, 0x00, 0x46, 0x00, 0x47, 0x00
+};
+
+static const ByteProvider k2IngameTalkObjIndexPC98Provider = { ARRAYSIZE(k2IngameTalkObjIndexPC98), k2IngameTalkObjIndexPC98 };
+
+static const char *const k2IngameTimJpStringsPC98[4] = {
+ "Yippee!",
+ "\x82\xE2\x82\xC1\x82\xBD\x81""[""\x81""I",
+ "Hop on!",
+ "\x82\xB3\x82\xA0\x81""A""\x8D""s""\x82\xB1\x82\xA4\x82\xE6\x81""I"
+};
+
+static const StringListProvider k2IngameTimJpStringsPC98Provider = { ARRAYSIZE(k2IngameTimJpStringsPC98), k2IngameTimJpStringsPC98 };
+
+static const FrameControl k2IngameShapeAnimDataPC980FrameControl[12] = {
+ { 0x0006, 0x00F0 },
+ { 0x002A, 0x000E },
+ { 0x002B, 0x000E },
+ { 0x002C, 0x000E },
+ { 0x0006, 0x000E },
+ { 0x002A, 0x000E },
+ { 0x002B, 0x000E },
+ { 0x002C, 0x000E },
+ { 0x0006, 0x000E },
+ { 0x002A, 0x000E },
+ { 0x002B, 0x000E },
+ { 0x002C, 0x000E }
+};
+
+static const FrameControl k2IngameShapeAnimDataPC981FrameControl[6] = {
+ { 0x0002, 0x012C },
+ { 0x002D, 0x012C },
+ { 0x002E, 0x012C },
+ { 0x002F, 0x012C },
+ { 0x002E, 0x012C },
+ { 0x002D, 0x012C }
+};
+
+static const FrameControl k2IngameShapeAnimDataPC982FrameControl[6] = {
+ { 0x000B, 0x0258 },
+ { 0x0030, 0x0005 },
+ { 0x0031, 0x0005 },
+ { 0x0032, 0x0005 },
+ { 0x0031, 0x0005 },
+ { 0x0030, 0x0005 }
+};
+
+static const FrameControl k2IngameShapeAnimDataPC983FrameControl[4] = {
+ { 0x001C, 0x0014 },
+ { 0x004E, 0x0014 },
+ { 0x004F, 0x0014 },
+ { 0x0050, 0x0014 }
+};
+
+static const FrameControl k2IngameShapeAnimDataPC984FrameControl[4] = {
+ { 0x0017, 0x0007 },
+ { 0x0051, 0x0007 },
+ { 0x0052, 0x0007 },
+ { 0x0053, 0x0007 }
+};
+
+static const FrameControl k2IngameShapeAnimDataPC985FrameControl[4] = {
+ { 0x0016, 0x0014 },
+ { 0x0054, 0x0014 },
+ { 0x0055, 0x0014 },
+ { 0x0056, 0x0014 }
+};
+
+static const FrameControl k2IngameShapeAnimDataPC986FrameControl[4] = {
+ { 0x003A, 0x003C },
+ { 0x0057, 0x003C },
+ { 0x0058, 0x003C },
+ { 0x0059, 0x003C }
+};
+
+static const FrameControl k2IngameShapeAnimDataPC987FrameControl[4] = {
+ { 0x001A, 0x0032 },
+ { 0x005A, 0x0032 },
+ { 0x005B, 0x0032 },
+ { 0x005C, 0x0032 }
+};
+
+static const FrameControl k2IngameShapeAnimDataPC988FrameControl[4] = {
+ { 0x006D, 0x000C },
+ { 0x006E, 0x000C },
+ { 0x006F, 0x000C },
+ { 0x0070, 0x000C }
+};
+
+static const FrameControl k2IngameShapeAnimDataPC989FrameControl[4] = {
+ { 0x0079, 0x0008 },
+ { 0x007A, 0x0008 },
+ { 0x007B, 0x0008 },
+ { 0x007C, 0x0008 }
+};
+
+static const FrameControl k2IngameShapeAnimDataPC9810FrameControl[4] = {
+ { 0x007E, 0x0008 },
+ { 0x007F, 0x0008 },
+ { 0x0080, 0x0008 },
+ { 0x0081, 0x0008 }
+};
+
+static const FrameControl k2IngameShapeAnimDataPC9811FrameControl[6] = {
+ { 0x0091, 0x01A4 },
+ { 0x0092, 0x0004 },
+ { 0x0093, 0x0004 },
+ { 0x0094, 0x0004 },
+ { 0x0093, 0x0004 },
+ { 0x0092, 0x0004 }
+};
+
+static const FrameControl k2IngameShapeAnimDataPC9812FrameControl[4] = {
+ { 0x0095, 0x0006 },
+ { 0x0096, 0x0006 },
+ { 0x0097, 0x0006 },
+ { 0x0098, 0x0006 }
+};
+
+static const FrameControl k2IngameShapeAnimDataPC9813FrameControl[4] = {
+ { 0x0099, 0x002D },
+ { 0x009A, 0x002D },
+ { 0x009B, 0x002D },
+ { 0x009C, 0x002D }
+};
+
+static const ItemAnimDefinition k2IngameShapeAnimDataPC98[14] = {
+ { 6, 12, k2IngameShapeAnimDataPC980FrameControl },
+ { 2, 6, k2IngameShapeAnimDataPC981FrameControl },
+ { 11, 6, k2IngameShapeAnimDataPC982FrameControl },
+ { 28, 4, k2IngameShapeAnimDataPC983FrameControl },
+ { 23, 4, k2IngameShapeAnimDataPC984FrameControl },
+ { 22, 4, k2IngameShapeAnimDataPC985FrameControl },
+ { 58, 4, k2IngameShapeAnimDataPC986FrameControl },
+ { 26, 4, k2IngameShapeAnimDataPC987FrameControl },
+ { 109, 4, k2IngameShapeAnimDataPC988FrameControl },
+ { 121, 4, k2IngameShapeAnimDataPC989FrameControl },
+ { 126, 4, k2IngameShapeAnimDataPC9810FrameControl },
+ { 145, 6, k2IngameShapeAnimDataPC9811FrameControl },
+ { 149, 4, k2IngameShapeAnimDataPC9812FrameControl },
+ { 153, 4, k2IngameShapeAnimDataPC9813FrameControl }
+};
+
+static const ItemAnimDefinitionProvider k2IngameShapeAnimDataPC98Provider = { ARRAYSIZE(k2IngameShapeAnimDataPC98), k2IngameShapeAnimDataPC98 };
+
diff --git a/devtools/create_kyradat/resources/hof_pc98_english.h b/devtools/create_kyradat/resources/hof_pc98_english.h
new file mode 100644
index 0000000000..8d121ec2d5
--- /dev/null
+++ b/devtools/create_kyradat/resources/hof_pc98_english.h
@@ -0,0 +1,110 @@
+static const char *const k2SeqplayStringsPC98English[105] = {
+ "Kyrandia is disappearing!",
+ "Rock by rock,",
+ "And tree by tree.",
+ "Kyrandia ceases to exist!",
+ "The Royal Mystics are baffled.",
+ "Every reference has been consulted.",
+ "Even Marko and his new valet, have been allowed into the conference.",
+ "Luckily, the Hand was experienced in these matters.",
+ "And finally a plan was approved,",
+ "That required a magic Anchor Stone,",
+ "To be retrieved from the center of the world.",
+ "Zanthia, youngest of the Kyrandian Mystics, has been selected to retrieve the Stone.",
+ "Thank you for playing The Hand of Fate.",
+ "This should be enough blueberries to open a portal to the center of the world.",
+ " DUMMY STRING... ",
+ " DUMMY STRING... ",
+ "Hey! All my equipment has been stolen!",
+ " DUMMY STRING... ",
+ "If they think I'm going to walk all the way down there, they're nuts!",
+ " DUMMY STRING... ",
+ " DUMMY STRING... ",
+ "Hurry up Faun!",
+ "Boy, that was a close call!",
+ "You said it pal. I, for one, am never going hunting again!",
+ "Ribbit.",
+ "How many times do I have to tell you? You're a toad.",
+ "Oh no! We're out of cheese!",
+ "Let's try this earwax. It's orange.",
+ "Mommy, when do I get the ivy?",
+ "Get out of here, shoo!",
+ "You cut, and I'll choose.",
+ "No. You cut and I'll choose.",
+ "I still say it was derivative drivel.",
+ "Aw, you still wouldn't recognize iambic pentameter if it bit you on the butt!",
+ "Executive Producer",
+ "Brett W. Sperry",
+ "Designed & Directed by",
+ "Rick Gush",
+ "Lead Programmer",
+ "Michael Legg",
+ "Art Management",
+ "Louis Castle",
+ "Joseph B. Hewitt IV",
+ "Lead Artist",
+ "Rick Parks",
+ "Additional Coding by",
+ "Philip W. Gorrow",
+ "Matt Collins",
+ "Mark McCubbin",
+ "Artists",
+ "Cameron Chun",
+ "Cary Averett",
+ "Cindy Chinn",
+ "Elie Arabian",
+ "Fei Cheng",
+ "Ferby Miguel",
+ "Frank Mendeola",
+ "Jack Martin",
+ "Jerry Moore",
+ "",
+ "Judith Peterson",
+ "Larry Miller",
+ "Lenny Lee",
+ "Louise Sandoval",
+ "Ren Olsen",
+ "Music & Sounds by",
+ "Paul Mudra",
+ "Frank Klepacki",
+ "Dwight Okahara",
+ "Pat Collins",
+ "Qualilty Assurance by",
+ "Glenn Sperry",
+ "Michael Lightner",
+ "William Foster",
+ "Jesse Clemit",
+ "Jeff Fillhaber",
+ "Manual, Package Design",
+ "& Fulfillment",
+ "Eydie Laramore",
+ "Lisa Marcinko",
+ "Lauren Rifkin",
+ "Congratulations!",
+ "Thank you for playing The Hand of Fate!",
+ "Guest Coding",
+ "Producer Liaison",
+ "Scott Duckett",
+ "Irvine Testers",
+ "Chris McFarland",
+ "Paul Moore",
+ "Chad Soares",
+ "Jared Brinkley",
+ "Jon Willliams",
+ "Chris Toft",
+ "Chris's Hair by",
+ "Cumulo Nimbus",
+ "Load a game",
+ "Introduction",
+ "Start a new game",
+ "Exit the game",
+ "Special Thanks to",
+ "Sake Joe Bostic-san",
+ "Tim Fritz",
+ "Kenny Dunne",
+ "Yukio Sekiguchi (Japan)",
+ "Takeshi Abo (Japan)"
+};
+
+static const StringListProvider k2SeqplayStringsPC98EnglishProvider = { ARRAYSIZE(k2SeqplayStringsPC98English), k2SeqplayStringsPC98English };
+
diff --git a/devtools/create_kyradat/resources/hof_pc98_japanese.h b/devtools/create_kyradat/resources/hof_pc98_japanese.h
new file mode 100644
index 0000000000..3ea4e5df96
--- /dev/null
+++ b/devtools/create_kyradat/resources/hof_pc98_japanese.h
@@ -0,0 +1,110 @@
+static const char *const k2SeqplayStringsPC98Japanese[105] = {
+ "\x83""L""\x83\x89\x83\x93\x83""f""\x83""B""\x83""A""\x82\xAA\x8F\xC1\x82\xA6\x82\xC4\x82\xA2\x82\xAD\x81""I",
+ "\x8A\xE2\x81""X""\x82\xE2\x81""A",
+ "\x96\xD8\x81""X""\x82\xDC\x82\xC5\x82\xE0\x81""B",
+ "\x83""L""\x83\x89\x83\x93\x83""f""\x83""B""\x83""A""\x82\xF0\x8B""~""\x82\xED\x82\xC8\x82\xAF\x82\xEA\x82\xCE\x82\xC8\x82\xE7\x82\xC8\x82\xA2\x81""I",
+ "\x96\x82\x8F""p""\x8E""t""\x82\xBD\x82\xBF\x82\xCD\x94""Y""\x82\xF1\x82\xBE\x81""B",
+ "\x82\xA0\x82\xE7\x82\xE4\x82\xE9\x91\xCE\x8D\xF4\x82\xAA\x8B\xA6\x8B""c""\x82\xB3\x82\xEA\x82\xBD\x82\xAA\x81""E""\x81""E""\x81""E",
+ "\x83""}""\x83\x8B\x83""R""\x82\xC6\x83""n""\x83\x93\x83""h""\x82\xAA\x81""A""\x82\xB1\x82\xCC\x96\xE2\x91\xE8\x82\xF0\x94""C""\x82\xB3\x82\xEA\x82\xBD\x81""B",
+ "\x83""n""\x83\x93\x83""h""\x82\xAA\x94\xAD\x88\xC4\x82\xB5\x82\xC4\x81""A",
+ "\x82\xC2\x82\xA2\x82\xC9\x81""A""\x89\xF0\x8C\x88\x8D\xF4\x82\xAA\x8C\x88\x92\xE8\x82\xB5\x82\xBD\x81""B",
+ "\x83""L""\x83\x89\x83\x93\x83""f""\x83""B""\x83""A""\x82\xF0\x8B""~""\x82\xA4\x82\xC9\x82\xCD\x81""A",
+ "\x90\xA2\x8A""E""\x82\xCC\x92\x86\x90""S""\x82\xC9\x82\xA0\x82\xE9\x81""h""\x96\x82\x96""@""\x82\xCC\x82\xA2\x82\xA9\x82\xE8\x90\xCE\x81""h""\x82\xAA\x95""K""\x97""v""\x82\xBE\x81""B",
+ "\x83""U""\x83\x93\x83""V""\x83""A""\x81""A""\x8C""N""\x82\xAA\x8D\xCC\x82\xE8\x82\xC9\x8D""s""\x82\xAD\x82\xCC\x82\xBE\x81""B",
+ "Thank you for playing The Hand of Fate.",
+ "\x90\xA2\x8A""E""\x82\xCC\x92\x86\x90""S""\x82\xD6\x8D""s""\x82\xAD\x82\xC9\x82\xCD\x81""A""\x83""u""\x83\x8B\x81""[""\x83""x""\x83\x8A\x81""[""\x82\xE0\x95""K""\x97""v""\x82\xBE\x82\xC6\x8E""v""\x82\xA4\x82\xED\x81""B",
+ " DUMMY STRING... ",
+ " DUMMY STRING... ",
+ "\x82\xA0\x82\x9F\x81""A""\x8E\x84\x82\xCC\x8E\x9D\x82\xBF\x95\xA8\x82\xAA\x82\xB7\x82\xD7\x82\xC4\x93\x90\x82\xDC\x82\xEA\x82\xC4\x82\xA2\x82\xE9\x81""I",
+ " DUMMY STRING... ",
+ "\x82\xBE\x82\xC1\x82\xC4\x81""A""\x90\xA2\x8A""E""\x82\xCC\x92\x86\x90""S""\x82\xDC\x82\xC5\x95\xE0\x82\xA2\x82\xC4\x8D""s""\x82\xAD\x82\xC8\x82\xF1\x82\xC4\x81""A""\x8B""C""\x82\xAA\x89\x93\x82\xAD\x82\xC8\x82\xE9\x82\xB6\x82\xE1\x82\xC8\x82\xA2\x81""I",
+ " DUMMY STRING... ",
+ " DUMMY STRING... ",
+ "\x8B""}""\x82\xAE\x82\xCC\x82\xE6\x81""A""\x83""t""\x83""H""\x81""[""\x83\x93\x81""I",
+ "\x82\xE2\x82\xC1\x82\xCF\x82\xE8\x81""A""\x97\x88\x82\xE9\x82\xF1\x82\xB6\x82\xE1\x82\xC8\x82\xA9\x82\xC1\x82\xBD\x81""I",
+ "\x82\xE0\x82\xA4\x81""A""\x93\xF1\x93""x""\x82\xC6\x97\xC2\x82\xC9\x8D""s""\x82\xA9\x82\xCB\x82\xA6\x81""I",
+ "\x83""Q""\x83\x8D\x83""Q""\x81""[""\x83\x8D\x81""B",
+ "\x8A""^""\x82\xCC\x8E""q""\x82\xCD\x8A""^""\x82\xBE\x81""B""\x81""@",
+ "\x82\xC8\x82\xF1\x82\xBE\x81""A""\x82\xE0\x82\xA4\x83""`""\x81""[""\x83""Y""\x82\xCD\x82\xC8\x82\xA2\x82\xBC\x81""I",
+ "\x82\xE6\x82\xB5\x81""A""\x83""I""\x83\x8C\x83\x93\x83""W""\x82\xCC\x94\xE7\x82\xC5\x82\xE2\x82\xEB\x82\xA4\x81""B",
+ "\x83""}""\x83""}""\x81""A""\x96""l""\x82\xCC\x96\xD1\x82\xE0\x82\xD3\x82\xB3\x82\xD3\x82\xB3\x81""H",
+ "\x82\xA8\x82\xA2\x82\xB1\x82\xE7\x81""A""\x82\xB1\x82\xB1\x82\xA9\x82\xE7\x8F""o""\x82\xC4\x8D""s""\x82\xAF\x81""I",
+ "\x82\xA8\x91""O""\x82\xAA\x94\xBC\x95\xAA\x82\xC9\x90\xD8\x82\xEA\x82\xE6\x81""A""\x89\xB4\x82\xAA\x91""I""\x82\xD4\x82\xA9\x82\xE7\x82\xB3\x81""B",
+ "\x82\xA2\x82\xE2\x81""A""\x82\xA8\x91""O""\x82\xAA\x94\xBC\x95\xAA\x82\xC9\x90\xD8\x82\xEA\x82\xCE\x81""A""\x89\xB4\x82\xAA\x91""I""\x82\xD4\x81""B",
+ "\x89\xB4\x82\xCD\x82\xDC\x82\xBE\x81""A""\x94""[""\x93\xBE\x82\xB5\x82\xBF\x82\xE1\x82\xA2\x82\xC8\x82\xA2\x82\xBA\x81""B",
+ "\x82\xA2\x82\xA2\x89\xC1\x8C\xB8\x82\xC9\x82\xB5\x82\xEB\x81""A""\x82\xDC\x82\xBD\x89\xA3\x82\xE9\x82\xBC\x81""I",
+ "Executive Producer",
+ "Brett W. Sperry",
+ "Designed & Directed by",
+ "Rick Gush",
+ "Lead Programmer",
+ "Michael Legg",
+ "Art Management",
+ "Louis Castle",
+ "Joseph B. Hewitt IV",
+ "Lead Artist",
+ "Rick Parks",
+ "Additional Coding by",
+ "Philip W. Gorrow",
+ "Matt Collins",
+ "Mark McCubbin",
+ "Artists",
+ "Cameron Chun",
+ "Cary Averett",
+ "Cindy Chinn",
+ "Elie Arabian",
+ "Fei Cheng",
+ "Ferby Miguel",
+ "Frank Mendeola",
+ "Jack Martin",
+ "Jerry Moore",
+ "",
+ "Judith Peterson",
+ "Larry Miller",
+ "Lenny Lee",
+ "Louise Sandoval",
+ "Ren Olsen",
+ "Music & Sounds by",
+ "Paul Mudra",
+ "Frank Klepacki",
+ "Dwight Okahara",
+ "Pat Collins",
+ "Qualilty Assurance by",
+ "Glenn Sperry",
+ "Michael Lightner",
+ "William Foster",
+ "Jesse Clemit",
+ "Jeff Fillhaber",
+ "Manual, Package Design",
+ "& Fulfillment",
+ "Eydie Laramore",
+ "Lisa Marcinko",
+ "Lauren Rifkin",
+ "Congratulations!",
+ "Thank you for playing The Hand of Fate!",
+ "Guest Coding",
+ "Producer Liaison",
+ "Scott Duckett",
+ "Irvine Testers",
+ "Chris McFarland",
+ "Paul Moore",
+ "Chad Soares",
+ "Jared Brinkley",
+ "Jon Willliams",
+ "Chris Toft",
+ "Chris's Hair by",
+ "Cumulo Nimbus",
+ "\x83""f""\x81""[""\x83""^""\x82\xF0\x83\x8D\x81""[""\x83""h""\x82\xB7\x82\xE9",
+ "\x83""C""\x83\x93\x83""g""\x83\x8D\x83""_""\x83""N""\x83""V""\x83\x87\x83\x93",
+ "\x90""V""\x82\xBD\x82\xC9\x83""Q""\x81""[""\x83\x80\x82\xF0\x8E""n""\x82\xDF\x82\xE9",
+ "\x83""Q""\x81""[""\x83\x80\x82\xF0\x8F""I""\x97\xB9\x82\xB7\x82\xE9",
+ "Special Thanks to",
+ "Sake Joe Bostic-san",
+ "Tim Fritz",
+ "Kenny Dunne",
+ "Yukio Sekiguchi (Japan)",
+ "Takeshi Abo (Japan)"
+};
+
+static const StringListProvider k2SeqplayStringsPC98JapaneseProvider = { ARRAYSIZE(k2SeqplayStringsPC98Japanese), k2SeqplayStringsPC98Japanese };
+
diff --git a/devtools/create_kyradat/resources/lok_amiga.h b/devtools/create_kyradat/resources/lok_amiga.h
new file mode 100644
index 0000000000..4cfa275a55
--- /dev/null
+++ b/devtools/create_kyradat/resources/lok_amiga.h
@@ -0,0 +1,1763 @@
+static const byte k1KallakWritingSeqAmiga[2036] = {
+ 0x00, 0x00, 0x01, 0x1A, 0x0E, 0x1B, 0x17, 0x00,
+ 0x00, 0x00, 0x3F, 0x01, 0xC7, 0x00, 0x00, 0x0C,
+ 0x00, 0x19, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00,
+ 0x10, 0x05, 0x00, 0x95, 0x00, 0x20, 0x09, 0x0F,
+ 0x2E, 0x02, 0x00, 0x01, 0x00, 0x00, 0x10, 0x05,
+ 0x01, 0x94, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x18,
+ 0x1D, 0x02, 0x00, 0x02, 0x00, 0x00, 0x10, 0x05,
+ 0x02, 0x93, 0x00, 0x14, 0x07, 0x06, 0x00, 0x02,
+ 0x00, 0x03, 0x00, 0x00, 0x10, 0x05, 0x01, 0x90,
+ 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00, 0x04,
+ 0x00, 0x00, 0x10, 0x05, 0x00, 0x8D, 0x00, 0x20,
+ 0x07, 0x06, 0x00, 0x18, 0x1D, 0x02, 0x00, 0x05,
+ 0x00, 0x00, 0x10, 0x05, 0x01, 0x8A, 0x00, 0x1B,
+ 0x07, 0x06, 0x00, 0x02, 0x00, 0x06, 0x00, 0x00,
+ 0x10, 0x05, 0x02, 0x88, 0x00, 0x14, 0x07, 0x06,
+ 0x00, 0x18, 0x1D, 0x02, 0x00, 0x07, 0x00, 0x00,
+ 0x10, 0x05, 0x01, 0x85, 0x00, 0x1B, 0x07, 0x06,
+ 0x00, 0x02, 0x00, 0x08, 0x00, 0x00, 0x10, 0x05,
+ 0x00, 0x82, 0x00, 0x20, 0x07, 0x06, 0x00, 0x02,
+ 0x00, 0x09, 0x00, 0x00, 0x10, 0x05, 0x01, 0x7F,
+ 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00, 0x0A,
+ 0x00, 0x00, 0x10, 0x05, 0x02, 0x7C, 0x00, 0x14,
+ 0x07, 0x06, 0x00, 0x18, 0x1D, 0x02, 0x00, 0x0B,
+ 0x00, 0x00, 0x10, 0x05, 0x01, 0x79, 0x00, 0x1B,
+ 0x07, 0x06, 0x00, 0x02, 0x00, 0x0C, 0x00, 0x00,
+ 0x10, 0x05, 0x00, 0x76, 0x00, 0x20, 0x07, 0x06,
+ 0x00, 0x02, 0x00, 0x0D, 0x00, 0x00, 0x10, 0x05,
+ 0x01, 0x73, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x18,
+ 0x1D, 0x02, 0x00, 0x0E, 0x00, 0x00, 0x10, 0x05,
+ 0x02, 0x70, 0x00, 0x14, 0x07, 0x06, 0x00, 0x02,
+ 0x00, 0x0F, 0x00, 0x00, 0x10, 0x05, 0x01, 0x6D,
+ 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00, 0x10,
+ 0x00, 0x00, 0x10, 0x05, 0x00, 0x6A, 0x00, 0x20,
+ 0x07, 0x06, 0x00, 0x02, 0x00, 0x11, 0x00, 0x00,
+ 0x10, 0x05, 0x01, 0x67, 0x00, 0x1B, 0x07, 0x06,
+ 0x00, 0x18, 0x1D, 0x02, 0x00, 0x12, 0x00, 0x00,
+ 0x10, 0x05, 0x02, 0x65, 0x00, 0x14, 0x07, 0x06,
+ 0x00, 0x02, 0x00, 0x13, 0x00, 0x00, 0x10, 0x05,
+ 0x01, 0x63, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02,
+ 0x00, 0x14, 0x00, 0x00, 0x10, 0x05, 0x00, 0x63,
+ 0x00, 0x20, 0x07, 0x06, 0x00, 0x02, 0x00, 0x15,
+ 0x00, 0x00, 0x10, 0x05, 0x00, 0x65, 0x00, 0x1F,
+ 0x07, 0x06, 0x00, 0x02, 0x00, 0x16, 0x00, 0x00,
+ 0x10, 0x05, 0x00, 0x6A, 0x00, 0x1D, 0x07, 0x06,
+ 0x00, 0x02, 0x00, 0x17, 0x00, 0x00, 0x10, 0x05,
+ 0x00, 0x70, 0x00, 0x19, 0x07, 0x06, 0x00, 0x02,
+ 0x00, 0x18, 0x00, 0x00, 0x10, 0x05, 0x00, 0x76,
+ 0x00, 0x17, 0x07, 0x06, 0x00, 0x02, 0x00, 0x19,
+ 0x00, 0x00, 0x10, 0x05, 0x00, 0x7C, 0x00, 0x16,
+ 0x07, 0x06, 0x00, 0x02, 0x00, 0x1A, 0x00, 0x00,
+ 0x10, 0x05, 0x00, 0x82, 0x00, 0x17, 0x07, 0x06,
+ 0x00, 0x02, 0x00, 0x1B, 0x00, 0x00, 0x10, 0x05,
+ 0x00, 0x88, 0x00, 0x19, 0x07, 0x06, 0x00, 0x02,
+ 0x00, 0x1C, 0x00, 0x00, 0x10, 0x05, 0x00, 0x8D,
+ 0x00, 0x1D, 0x07, 0x06, 0x00, 0x02, 0x00, 0x1D,
+ 0x00, 0x00, 0x10, 0x05, 0x00, 0x93, 0x00, 0x1F,
+ 0x07, 0x06, 0x00, 0x1C, 0x1B, 0x0F, 0x2F, 0x02,
+ 0x00, 0x01, 0x00, 0x00, 0x10, 0x05, 0x01, 0x94,
+ 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00, 0x01,
+ 0x00, 0x00, 0x10, 0x05, 0x01, 0x94, 0x00, 0x1B,
+ 0x07, 0x06, 0x00, 0x18, 0x1D, 0x02, 0x00, 0x02,
+ 0x00, 0x00, 0x10, 0x05, 0x02, 0x93, 0x00, 0x14,
+ 0x07, 0x06, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00,
+ 0x10, 0x05, 0x02, 0x93, 0x00, 0x14, 0x07, 0x06,
+ 0x00, 0x02, 0x00, 0x03, 0x00, 0x00, 0x10, 0x05,
+ 0x01, 0x90, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02,
+ 0x00, 0x04, 0x00, 0x00, 0x10, 0x05, 0x00, 0x8D,
+ 0x00, 0x20, 0x07, 0x06, 0x00, 0x18, 0x1D, 0x02,
+ 0x00, 0x05, 0x00, 0x00, 0x10, 0x05, 0x01, 0x8A,
+ 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00, 0x05,
+ 0x00, 0x00, 0x10, 0x05, 0x01, 0x8A, 0x00, 0x1B,
+ 0x07, 0x06, 0x00, 0x02, 0x00, 0x06, 0x00, 0x00,
+ 0x10, 0x05, 0x02, 0x88, 0x00, 0x14, 0x07, 0x06,
+ 0x00, 0x18, 0x1D, 0x02, 0x00, 0x07, 0x00, 0x00,
+ 0x10, 0x05, 0x01, 0x85, 0x00, 0x1B, 0x07, 0x06,
+ 0x00, 0x02, 0x00, 0x08, 0x00, 0x00, 0x10, 0x05,
+ 0x00, 0x82, 0x00, 0x20, 0x07, 0x06, 0x00, 0x02,
+ 0x00, 0x09, 0x00, 0x00, 0x10, 0x05, 0x01, 0x7F,
+ 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00, 0x0A,
+ 0x00, 0x00, 0x10, 0x05, 0x02, 0x7C, 0x00, 0x14,
+ 0x07, 0x06, 0x00, 0x18, 0x1D, 0x02, 0x00, 0x0B,
+ 0x00, 0x00, 0x10, 0x05, 0x01, 0x79, 0x00, 0x1B,
+ 0x07, 0x06, 0x00, 0x02, 0x00, 0x0C, 0x00, 0x00,
+ 0x10, 0x05, 0x00, 0x76, 0x00, 0x20, 0x07, 0x06,
+ 0x00, 0x02, 0x00, 0x0D, 0x00, 0x00, 0x10, 0x05,
+ 0x01, 0x73, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x18,
+ 0x1D, 0x02, 0x00, 0x0E, 0x00, 0x00, 0x10, 0x05,
+ 0x02, 0x70, 0x00, 0x14, 0x07, 0x06, 0x00, 0x02,
+ 0x00, 0x0F, 0x00, 0x00, 0x10, 0x05, 0x01, 0x6D,
+ 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00, 0x10,
+ 0x00, 0x00, 0x10, 0x05, 0x00, 0x6A, 0x00, 0x20,
+ 0x07, 0x06, 0x00, 0x02, 0x00, 0x11, 0x00, 0x00,
+ 0x10, 0x05, 0x01, 0x67, 0x00, 0x1B, 0x07, 0x06,
+ 0x00, 0x18, 0x1D, 0x02, 0x00, 0x12, 0x00, 0x00,
+ 0x10, 0x05, 0x02, 0x65, 0x00, 0x14, 0x07, 0x06,
+ 0x00, 0x02, 0x00, 0x13, 0x00, 0x00, 0x10, 0x05,
+ 0x01, 0x63, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02,
+ 0x00, 0x14, 0x00, 0x00, 0x10, 0x05, 0x00, 0x63,
+ 0x00, 0x20, 0x07, 0x06, 0x00, 0x02, 0x00, 0x15,
+ 0x00, 0x00, 0x10, 0x05, 0x00, 0x65, 0x00, 0x1F,
+ 0x07, 0x06, 0x00, 0x02, 0x00, 0x16, 0x00, 0x00,
+ 0x10, 0x05, 0x00, 0x6A, 0x00, 0x1D, 0x07, 0x06,
+ 0x00, 0x02, 0x00, 0x17, 0x00, 0x00, 0x10, 0x05,
+ 0x00, 0x70, 0x00, 0x19, 0x07, 0x06, 0x00, 0x02,
+ 0x00, 0x18, 0x00, 0x00, 0x10, 0x05, 0x00, 0x76,
+ 0x00, 0x17, 0x07, 0x06, 0x00, 0x02, 0x00, 0x19,
+ 0x00, 0x00, 0x10, 0x05, 0x00, 0x7C, 0x00, 0x16,
+ 0x07, 0x06, 0x00, 0x02, 0x00, 0x1A, 0x00, 0x00,
+ 0x10, 0x05, 0x00, 0x82, 0x00, 0x17, 0x07, 0x06,
+ 0x00, 0x02, 0x00, 0x1B, 0x00, 0x00, 0x10, 0x05,
+ 0x00, 0x88, 0x00, 0x19, 0x07, 0x06, 0x00, 0x02,
+ 0x00, 0x1C, 0x00, 0x00, 0x10, 0x05, 0x00, 0x8D,
+ 0x00, 0x1D, 0x07, 0x06, 0x00, 0x02, 0x00, 0x1D,
+ 0x00, 0x00, 0x10, 0x05, 0x00, 0x93, 0x00, 0x1F,
+ 0x07, 0x06, 0x00, 0x1C, 0x1B, 0x0F, 0x30, 0x02,
+ 0x00, 0x01, 0x00, 0x00, 0x10, 0x05, 0x01, 0x94,
+ 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00, 0x01,
+ 0x00, 0x00, 0x10, 0x05, 0x01, 0x94, 0x00, 0x1B,
+ 0x07, 0x06, 0x00, 0x18, 0x1D, 0x02, 0x00, 0x02,
+ 0x00, 0x00, 0x10, 0x05, 0x02, 0x93, 0x00, 0x14,
+ 0x07, 0x06, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00,
+ 0x10, 0x05, 0x02, 0x93, 0x00, 0x14, 0x07, 0x06,
+ 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x10, 0x05,
+ 0x02, 0x93, 0x00, 0x14, 0x07, 0x06, 0x00, 0x02,
+ 0x00, 0x03, 0x00, 0x00, 0x10, 0x05, 0x01, 0x90,
+ 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00, 0x03,
+ 0x00, 0x00, 0x10, 0x05, 0x01, 0x90, 0x00, 0x1B,
+ 0x07, 0x06, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00,
+ 0x10, 0x05, 0x00, 0x8D, 0x00, 0x20, 0x07, 0x06,
+ 0x00, 0x18, 0x1D, 0x02, 0x00, 0x05, 0x00, 0x00,
+ 0x10, 0x05, 0x01, 0x8A, 0x00, 0x1B, 0x07, 0x06,
+ 0x00, 0x02, 0x00, 0x06, 0x00, 0x00, 0x10, 0x05,
+ 0x02, 0x88, 0x00, 0x14, 0x07, 0x06, 0x00, 0x18,
+ 0x1D, 0x02, 0x00, 0x07, 0x00, 0x00, 0x10, 0x05,
+ 0x01, 0x85, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02,
+ 0x00, 0x08, 0x00, 0x00, 0x10, 0x05, 0x00, 0x82,
+ 0x00, 0x20, 0x07, 0x06, 0x00, 0x02, 0x00, 0x09,
+ 0x00, 0x00, 0x10, 0x05, 0x01, 0x7F, 0x00, 0x1B,
+ 0x07, 0x06, 0x00, 0x02, 0x00, 0x0A, 0x00, 0x00,
+ 0x10, 0x05, 0x02, 0x7C, 0x00, 0x14, 0x07, 0x06,
+ 0x00, 0x18, 0x1D, 0x02, 0x00, 0x0B, 0x00, 0x00,
+ 0x10, 0x05, 0x01, 0x79, 0x00, 0x1B, 0x07, 0x06,
+ 0x00, 0x02, 0x00, 0x0C, 0x00, 0x00, 0x10, 0x05,
+ 0x00, 0x76, 0x00, 0x20, 0x07, 0x06, 0x00, 0x02,
+ 0x00, 0x0D, 0x00, 0x00, 0x10, 0x05, 0x01, 0x73,
+ 0x00, 0x1B, 0x07, 0x06, 0x00, 0x18, 0x1D, 0x02,
+ 0x00, 0x0E, 0x00, 0x00, 0x10, 0x05, 0x02, 0x70,
+ 0x00, 0x14, 0x07, 0x06, 0x00, 0x02, 0x00, 0x0F,
+ 0x00, 0x00, 0x10, 0x05, 0x01, 0x6D, 0x00, 0x1B,
+ 0x07, 0x06, 0x00, 0x02, 0x00, 0x10, 0x00, 0x00,
+ 0x10, 0x05, 0x00, 0x6A, 0x00, 0x20, 0x07, 0x06,
+ 0x00, 0x02, 0x00, 0x11, 0x00, 0x00, 0x10, 0x05,
+ 0x01, 0x67, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x18,
+ 0x1D, 0x02, 0x00, 0x12, 0x00, 0x00, 0x10, 0x05,
+ 0x02, 0x65, 0x00, 0x14, 0x07, 0x06, 0x00, 0x02,
+ 0x00, 0x13, 0x00, 0x00, 0x10, 0x05, 0x01, 0x63,
+ 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00, 0x14,
+ 0x00, 0x00, 0x10, 0x05, 0x00, 0x63, 0x00, 0x20,
+ 0x07, 0x06, 0x00, 0x02, 0x00, 0x15, 0x00, 0x00,
+ 0x10, 0x05, 0x00, 0x65, 0x00, 0x1F, 0x07, 0x06,
+ 0x00, 0x02, 0x00, 0x16, 0x00, 0x00, 0x10, 0x05,
+ 0x00, 0x6A, 0x00, 0x1D, 0x07, 0x06, 0x00, 0x02,
+ 0x00, 0x17, 0x00, 0x00, 0x10, 0x05, 0x00, 0x70,
+ 0x00, 0x19, 0x07, 0x06, 0x00, 0x02, 0x00, 0x18,
+ 0x00, 0x00, 0x10, 0x05, 0x00, 0x76, 0x00, 0x17,
+ 0x07, 0x06, 0x00, 0x02, 0x00, 0x19, 0x00, 0x00,
+ 0x10, 0x05, 0x00, 0x7C, 0x00, 0x16, 0x07, 0x06,
+ 0x00, 0x02, 0x00, 0x1A, 0x00, 0x00, 0x10, 0x05,
+ 0x00, 0x82, 0x00, 0x17, 0x07, 0x06, 0x00, 0x02,
+ 0x00, 0x1B, 0x00, 0x00, 0x10, 0x05, 0x00, 0x88,
+ 0x00, 0x19, 0x07, 0x06, 0x00, 0x02, 0x00, 0x1C,
+ 0x00, 0x00, 0x10, 0x05, 0x00, 0x8D, 0x00, 0x1D,
+ 0x07, 0x06, 0x00, 0x02, 0x00, 0x1D, 0x00, 0x00,
+ 0x10, 0x05, 0x00, 0x93, 0x00, 0x1F, 0x07, 0x06,
+ 0x00, 0x1C, 0x06, 0x3C, 0x00, 0x1B, 0x0F, 0x31,
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x10, 0x05, 0x00,
+ 0x95, 0x00, 0x20, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x00, 0x00, 0x00, 0x10, 0x05, 0x00, 0x95, 0x00,
+ 0x20, 0x07, 0x06, 0x00, 0x18, 0x1D, 0x02, 0x00,
+ 0x01, 0x00, 0x00, 0x10, 0x05, 0x01, 0x94, 0x00,
+ 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00, 0x01, 0x00,
+ 0x00, 0x10, 0x05, 0x01, 0x94, 0x00, 0x1B, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x10,
+ 0x05, 0x02, 0x93, 0x00, 0x14, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x02, 0x00, 0x00, 0x10, 0x05, 0x02,
+ 0x93, 0x00, 0x14, 0x07, 0x06, 0x00, 0x18, 0x1D,
+ 0x02, 0x00, 0x03, 0x00, 0x00, 0x10, 0x05, 0x01,
+ 0x90, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x04, 0x00, 0x00, 0x10, 0x05, 0x00, 0x8D, 0x00,
+ 0x20, 0x07, 0x06, 0x00, 0x02, 0x00, 0x05, 0x00,
+ 0x00, 0x10, 0x05, 0x01, 0x8A, 0x00, 0x1B, 0x07,
+ 0x06, 0x00, 0x18, 0x1D, 0x02, 0x00, 0x06, 0x00,
+ 0x00, 0x10, 0x05, 0x02, 0x88, 0x00, 0x14, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x07, 0x00, 0x00, 0x10,
+ 0x05, 0x01, 0x85, 0x00, 0x1B, 0x07, 0x06, 0x00,
+ 0x18, 0x1D, 0x02, 0x00, 0x08, 0x00, 0x00, 0x10,
+ 0x05, 0x00, 0x82, 0x00, 0x20, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x09, 0x00, 0x00, 0x10, 0x05, 0x01,
+ 0x7F, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x0A, 0x00, 0x00, 0x10, 0x05, 0x02, 0x7C, 0x00,
+ 0x14, 0x07, 0x06, 0x00, 0x18, 0x1D, 0x02, 0x00,
+ 0x0B, 0x00, 0x00, 0x10, 0x05, 0x01, 0x79, 0x00,
+ 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00, 0x0C, 0x00,
+ 0x00, 0x10, 0x05, 0x00, 0x76, 0x00, 0x20, 0x07,
+ 0x06, 0x00, 0x18, 0x1D, 0x02, 0x00, 0x0D, 0x00,
+ 0x00, 0x10, 0x05, 0x01, 0x73, 0x00, 0x1B, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x0E, 0x00, 0x00, 0x10,
+ 0x05, 0x02, 0x70, 0x00, 0x14, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x0F, 0x00, 0x00, 0x10, 0x05, 0x01,
+ 0x6D, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x18, 0x1D,
+ 0x02, 0x00, 0x10, 0x00, 0x00, 0x10, 0x05, 0x00,
+ 0x6A, 0x00, 0x20, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x11, 0x00, 0x00, 0x10, 0x05, 0x01, 0x67, 0x00,
+ 0x1B, 0x07, 0x06, 0x00, 0x18, 0x1D, 0x02, 0x00,
+ 0x12, 0x00, 0x00, 0x10, 0x05, 0x02, 0x65, 0x00,
+ 0x14, 0x07, 0x06, 0x00, 0x06, 0x3C, 0x00, 0x02,
+ 0x00, 0x1E, 0x00, 0x00, 0x10, 0x08, 0x12, 0x06,
+ 0x1E, 0x00, 0x0A, 0x01, 0x02, 0x00, 0x1F, 0x00,
+ 0x00, 0x10, 0x07, 0x0A, 0x00, 0x02, 0x00, 0x20,
+ 0x00, 0x00, 0x10, 0x07, 0x0A, 0x00, 0x02, 0x00,
+ 0x21, 0x00, 0x00, 0x10, 0x07, 0x0A, 0x00, 0x02,
+ 0x00, 0x22, 0x00, 0x00, 0x10, 0x07, 0x0A, 0x00,
+ 0x0B, 0x01, 0x02, 0x00, 0x18, 0x1F, 0x06, 0x0A,
+ 0x00, 0x02, 0x00, 0x23, 0x00, 0x00, 0x10, 0x07,
+ 0x14, 0x00, 0x18, 0x1E, 0x02, 0x00, 0x24, 0x00,
+ 0x00, 0x10, 0x07, 0x14, 0x00, 0x02, 0x00, 0x25,
+ 0x00, 0x00, 0x10, 0x07, 0x14, 0x00, 0x18, 0x1F,
+ 0x02, 0x00, 0x26, 0x00, 0x00, 0x10, 0x07, 0x14,
+ 0x00, 0x02, 0x00, 0x27, 0x00, 0x00, 0x10, 0x07,
+ 0x14, 0x00, 0x18, 0x1E, 0x02, 0x00, 0x28, 0x00,
+ 0x00, 0x10, 0x08, 0x06, 0x3C, 0x00, 0x18, 0x1E,
+ 0x03, 0x00, 0x07, 0x06, 0x00, 0x18, 0x1E, 0x03,
+ 0x00, 0x07, 0x06, 0x00, 0x03, 0x00, 0x07, 0x06,
+ 0x00, 0x03, 0x00, 0x07, 0x06, 0x00, 0x03, 0x00,
+ 0x07, 0x06, 0x00, 0x03, 0x00, 0x07, 0x06, 0x00,
+ 0x03, 0x00, 0x07, 0x06, 0x00, 0x18, 0x1E, 0x03,
+ 0x00, 0x07, 0x06, 0x00, 0x03, 0x00, 0x07, 0x06,
+ 0x00, 0x03, 0x00, 0x07, 0x06, 0x00, 0x03, 0x00,
+ 0x07, 0x06, 0x00, 0x03, 0x00, 0x07, 0x06, 0x00,
+ 0x03, 0x00, 0x07, 0x06, 0x00, 0x03, 0x00, 0x07,
+ 0x06, 0x00, 0x03, 0x00, 0x07, 0x06, 0x00, 0x03,
+ 0x00, 0x07, 0x06, 0x00, 0x18, 0x1E, 0x03, 0x00,
+ 0x07, 0x06, 0x00, 0x03, 0x00, 0x07, 0x06, 0x00,
+ 0x03, 0x00, 0x07, 0x06, 0x00, 0x03, 0x00, 0x07,
+ 0x06, 0x00, 0x03, 0x00, 0x07, 0x06, 0x00, 0x03,
+ 0x00, 0x07, 0x06, 0x00, 0x03, 0x00, 0x07, 0x06,
+ 0x00, 0x03, 0x00, 0x07, 0x06, 0x00, 0x18, 0x1E,
+ 0x03, 0x00, 0x07, 0x06, 0x00, 0x03, 0x00, 0x07,
+ 0x06, 0x00, 0x03, 0x00, 0x07, 0x06, 0x00, 0x03,
+ 0x00, 0x07, 0x06, 0x00, 0x03, 0x00, 0x07, 0x06,
+ 0x00, 0x03, 0x00, 0x07, 0x06, 0x00, 0x03, 0x00,
+ 0x07, 0x06, 0x00, 0x03, 0x00, 0x07, 0x06, 0x00,
+ 0x03, 0x00, 0x07, 0x06, 0x00, 0x03, 0x00, 0x07,
+ 0x06, 0x00, 0x13, 0x1C, 0x19, 0x01, 0x06, 0x3C,
+ 0x00, 0x01, 0x00, 0x1D
+};
+
+static const ByteProvider k1KallakWritingSeqAmigaProvider = { ARRAYSIZE(k1KallakWritingSeqAmiga), k1KallakWritingSeqAmiga };
+
+static const byte k1MalcolmTreeSeqAmiga[532] = {
+ 0x00, 0x01, 0x00, 0x1A, 0x0E, 0x17, 0x00, 0x00,
+ 0x00, 0x3F, 0x01, 0xC7, 0x00, 0x00, 0x0D, 0x01,
+ 0x09, 0x02, 0x01, 0x00, 0x00, 0x00, 0x10, 0x19,
+ 0x03, 0x09, 0x18, 0x1E, 0x14, 0x18, 0x1F, 0x0A,
+ 0x00, 0x03, 0x01, 0x06, 0x06, 0x00, 0x0B, 0x00,
+ 0x1F, 0x00, 0x18, 0x19, 0x0A, 0x01, 0x03, 0x01,
+ 0x06, 0x06, 0x00, 0x0B, 0x01, 0x0F, 0x00, 0x18,
+ 0x26, 0x10, 0x1F, 0x50, 0x00, 0x2D, 0x05, 0x0A,
+ 0x02, 0x03, 0x01, 0x06, 0x06, 0x00, 0x0B, 0x02,
+ 0x10, 0x00, 0x11, 0x18, 0x1F, 0x03, 0x01, 0x06,
+ 0x06, 0x00, 0x03, 0x01, 0x06, 0x06, 0x00, 0x03,
+ 0x01, 0x06, 0x06, 0x00, 0x18, 0x24, 0x18, 0x1F,
+ 0x03, 0x01, 0x06, 0x06, 0x00, 0x18, 0x1E, 0x0A,
+ 0x03, 0x03, 0x01, 0x06, 0x06, 0x00, 0x0B, 0x03,
+ 0x15, 0x00, 0x10, 0x16, 0x50, 0x00, 0x2D, 0x05,
+ 0x18, 0x1F, 0x03, 0x01, 0x06, 0x06, 0x00, 0x03,
+ 0x01, 0x06, 0x06, 0x00, 0x18, 0x1E, 0x03, 0x01,
+ 0x06, 0x06, 0x00, 0x03, 0x01, 0x06, 0x06, 0x00,
+ 0x18, 0x1F, 0x03, 0x01, 0x06, 0x06, 0x00, 0x03,
+ 0x01, 0x06, 0x06, 0x00, 0x03, 0x01, 0x06, 0x06,
+ 0x00, 0x03, 0x01, 0x06, 0x06, 0x00, 0x18, 0x1E,
+ 0x03, 0x01, 0x06, 0x06, 0x00, 0x18, 0x1A, 0x18,
+ 0x1E, 0x0A, 0x05, 0x03, 0x01, 0x06, 0x06, 0x00,
+ 0x0B, 0x05, 0x09, 0x00, 0x11, 0x0A, 0x06, 0x03,
+ 0x01, 0x06, 0x06, 0x00, 0x0B, 0x06, 0x14, 0x00,
+ 0x18, 0x1A, 0x18, 0x1F, 0x10, 0x17, 0x50, 0x00,
+ 0x2D, 0x05, 0x06, 0x3C, 0x00, 0x0A, 0x07, 0x03,
+ 0x01, 0x06, 0x06, 0x00, 0x0B, 0x07, 0x06, 0x00,
+ 0x18, 0x1E, 0x06, 0x1E, 0x00, 0x10, 0x18, 0x50,
+ 0x00, 0x2D, 0x05, 0x03, 0x01, 0x06, 0x06, 0x00,
+ 0x03, 0x01, 0x06, 0x06, 0x00, 0x03, 0x01, 0x06,
+ 0x06, 0x00, 0x0A, 0x08, 0x04, 0x01, 0x06, 0x06,
+ 0x00, 0x04, 0x01, 0x06, 0x06, 0x00, 0x03, 0x01,
+ 0x06, 0x06, 0x00, 0x03, 0x01, 0x06, 0x06, 0x00,
+ 0x0B, 0x08, 0x01, 0x00, 0x03, 0x01, 0x06, 0x06,
+ 0x00, 0x06, 0x78, 0x00, 0x0A, 0x09, 0x03, 0x01,
+ 0x06, 0x06, 0x00, 0x0B, 0x09, 0x04, 0x00, 0x18,
+ 0x1B, 0x0A, 0x0A, 0x03, 0x01, 0x06, 0x06, 0x00,
+ 0x0B, 0x0A, 0x09, 0x00, 0x06, 0x14, 0x00, 0x10,
+ 0x19, 0x50, 0x00, 0x2D, 0x05, 0x03, 0x01, 0x06,
+ 0x06, 0x00, 0x03, 0x01, 0x06, 0x06, 0x00, 0x0A,
+ 0x0B, 0x03, 0x01, 0x06, 0x06, 0x00, 0x04, 0x01,
+ 0x06, 0x06, 0x00, 0x04, 0x01, 0x06, 0x06, 0x00,
+ 0x03, 0x01, 0x06, 0x06, 0x00, 0x03, 0x01, 0x06,
+ 0x06, 0x00, 0x0B, 0x0B, 0x01, 0x00, 0x03, 0x01,
+ 0x06, 0x06, 0x00, 0x03, 0x01, 0x06, 0x06, 0x00,
+ 0x03, 0x01, 0x06, 0x06, 0x00, 0x10, 0x1A, 0x50,
+ 0x00, 0x2D, 0x05, 0x0A, 0x0C, 0x03, 0x01, 0x06,
+ 0x06, 0x00, 0x0B, 0x0C, 0x12, 0x00, 0x03, 0x01,
+ 0x01, 0x01, 0x11, 0x15, 0x00, 0x02, 0x00, 0x02,
+ 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x10, 0x10,
+ 0x1C, 0x50, 0x00, 0x2D, 0x05, 0x06, 0x1E, 0x00,
+ 0x03, 0x02, 0x03, 0x02, 0x06, 0x06, 0x00, 0x11,
+ 0x18, 0x1C, 0x0A, 0x0F, 0x03, 0x02, 0x06, 0x06,
+ 0x00, 0x0B, 0x0F, 0x0D, 0x00, 0x10, 0x1D, 0x50,
+ 0x00, 0x2D, 0x05, 0x0A, 0x10, 0x03, 0x02, 0x06,
+ 0x06, 0x00, 0x03, 0x02, 0x06, 0x06, 0x00, 0x03,
+ 0x02, 0x06, 0x06, 0x00, 0x04, 0x02, 0x06, 0x06,
+ 0x00, 0x04, 0x02, 0x06, 0x06, 0x00, 0x04, 0x02,
+ 0x06, 0x06, 0x00, 0x0B, 0x10, 0x02, 0x00, 0x10,
+ 0x1E, 0x50, 0x00, 0x2D, 0x05, 0x0A, 0x11, 0x03,
+ 0x02, 0x06, 0x06, 0x00, 0x03, 0x02, 0x06, 0x06,
+ 0x00, 0x03, 0x02, 0x06, 0x06, 0x00, 0x04, 0x02,
+ 0x06, 0x06, 0x00, 0x04, 0x02, 0x06, 0x06, 0x00,
+ 0x04, 0x02, 0x06, 0x06, 0x00, 0x0B, 0x11, 0x02,
+ 0x00, 0x06, 0xB4, 0x00, 0x13, 0x19, 0x01, 0x01,
+ 0x01, 0x01, 0x02, 0x1D
+};
+
+static const ByteProvider k1MalcolmTreeSeqAmigaProvider = { ARRAYSIZE(k1MalcolmTreeSeqAmiga), k1MalcolmTreeSeqAmiga };
+
+static const byte k1WestwoodLogoSeqAmiga[77] = {
+ 0x19, 0x02, 0x00, 0x03, 0x01, 0x1A, 0x02, 0x03,
+ 0x00, 0x00, 0x00, 0x00, 0x16, 0x01, 0x06, 0x06,
+ 0x00, 0x06, 0x3C, 0x00, 0x18, 0x14, 0x0A, 0x00,
+ 0x03, 0x03, 0x16, 0x01, 0x0B, 0x00, 0x08, 0x00,
+ 0x06, 0x3C, 0x00, 0x18, 0x27, 0x0A, 0x01, 0x03,
+ 0x03, 0x16, 0x01, 0x0B, 0x01, 0x0B, 0x00, 0x06,
+ 0x78, 0x00, 0x18, 0x14, 0x02, 0x03, 0x0A, 0x00,
+ 0x00, 0x00, 0x16, 0x01, 0x06, 0x06, 0x00, 0x0A,
+ 0x02, 0x04, 0x03, 0x16, 0x01, 0x0B, 0x02, 0x09,
+ 0x00, 0x13, 0x01, 0x03, 0x1D
+};
+
+static const ByteProvider k1WestwoodLogoSeqAmigaProvider = { ARRAYSIZE(k1WestwoodLogoSeqAmiga), k1WestwoodLogoSeqAmiga };
+
+static const byte k1KyrandiaLogoSeqAmiga[92] = {
+ 0x15, 0x00, 0x02, 0x00, 0x06, 0x01, 0x1A, 0x02,
+ 0x06, 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x06,
+ 0x06, 0x00, 0x18, 0x14, 0x16, 0x04, 0x0A, 0x00,
+ 0x03, 0x06, 0x16, 0x00, 0x0B, 0x00, 0x0B, 0x00,
+ 0x06, 0x3C, 0x00, 0x18, 0x27, 0x0A, 0x01, 0x03,
+ 0x06, 0x16, 0x00, 0x0B, 0x01, 0x0F, 0x00, 0x06,
+ 0x3C, 0x00, 0x18, 0x27, 0x0A, 0x02, 0x04, 0x06,
+ 0x16, 0x00, 0x0B, 0x02, 0x0F, 0x00, 0x02, 0x06,
+ 0x0D, 0x00, 0x00, 0x00, 0x16, 0x00, 0x06, 0x06,
+ 0x00, 0x06, 0x78, 0x00, 0x18, 0x14, 0x0A, 0x02,
+ 0x04, 0x06, 0x16, 0x00, 0x0B, 0x02, 0x0C, 0x00,
+ 0x13, 0x01, 0x06, 0x1D
+};
+
+static const ByteProvider k1KyrandiaLogoSeqAmigaProvider = { ARRAYSIZE(k1KyrandiaLogoSeqAmiga), k1KyrandiaLogoSeqAmiga };
+
+static const byte k1KallakMalcolmSeqAmiga[635] = {
+ 0x00, 0x04, 0x01, 0x1A, 0x0E, 0x17, 0x00, 0x00,
+ 0x00, 0x3F, 0x01, 0xC7, 0x00, 0x00, 0x0D, 0x00,
+ 0x0C, 0x03, 0x17, 0x00, 0x00, 0x88, 0x3F, 0x01,
+ 0xC7, 0x00, 0x02, 0x19, 0x05, 0x02, 0x04, 0x00,
+ 0x10, 0x00, 0x3A, 0x09, 0x14, 0x18, 0x23, 0x0A,
+ 0x00, 0x03, 0x04, 0x07, 0x07, 0x00, 0x0B, 0x00,
+ 0x22, 0x00, 0x11, 0x10, 0x02, 0x50, 0x00, 0x3A,
+ 0x05, 0x0A, 0x01, 0x03, 0x04, 0x07, 0x07, 0x00,
+ 0x0B, 0x01, 0x07, 0x00, 0x06, 0x3C, 0x00, 0x11,
+ 0x10, 0x03, 0x50, 0x00, 0x3A, 0x05, 0x0A, 0x02,
+ 0x03, 0x04, 0x07, 0x07, 0x00, 0x0B, 0x02, 0x17,
+ 0x00, 0x06, 0x3C, 0x00, 0x11, 0x10, 0x04, 0x50,
+ 0x00, 0x3A, 0x05, 0x0A, 0x03, 0x03, 0x04, 0x07,
+ 0x07, 0x00, 0x0B, 0x03, 0x0A, 0x00, 0x06, 0x3C,
+ 0x00, 0x03, 0x04, 0x07, 0x07, 0x00, 0x03, 0x04,
+ 0x07, 0x07, 0x00, 0x03, 0x04, 0x07, 0x07, 0x00,
+ 0x11, 0x11, 0x10, 0x05, 0xF0, 0x00, 0x3A, 0x05,
+ 0x03, 0x04, 0x07, 0x07, 0x00, 0x03, 0x04, 0x07,
+ 0x07, 0x00, 0x03, 0x04, 0x07, 0x07, 0x00, 0x03,
+ 0x04, 0x07, 0x07, 0x00, 0x06, 0x3C, 0x00, 0x11,
+ 0x10, 0x06, 0xF0, 0x00, 0x3A, 0x05, 0x0A, 0x04,
+ 0x03, 0x04, 0x07, 0x07, 0x00, 0x0B, 0x04, 0x12,
+ 0x00, 0x06, 0x3C, 0x00, 0x03, 0x04, 0x07, 0x07,
+ 0x00, 0x03, 0x04, 0x07, 0x07, 0x00, 0x03, 0x04,
+ 0x07, 0x07, 0x00, 0x03, 0x04, 0x07, 0x07, 0x00,
+ 0x06, 0x78, 0x00, 0x11, 0x10, 0x07, 0xF0, 0x00,
+ 0x3A, 0x05, 0x0A, 0x05, 0x03, 0x04, 0x07, 0x07,
+ 0x00, 0x0B, 0x05, 0x11, 0x00, 0x06, 0x3C, 0x00,
+ 0x03, 0x04, 0x07, 0x07, 0x00, 0x03, 0x04, 0x07,
+ 0x07, 0x00, 0x11, 0x11, 0x10, 0x08, 0x50, 0x00,
+ 0x3A, 0x05, 0x0A, 0x06, 0x03, 0x04, 0x07, 0x07,
+ 0x00, 0x0B, 0x06, 0x07, 0x00, 0x06, 0x3C, 0x00,
+ 0x03, 0x04, 0x07, 0x07, 0x00, 0x03, 0x04, 0x07,
+ 0x07, 0x00, 0x03, 0x04, 0x07, 0x07, 0x00, 0x11,
+ 0x10, 0x09, 0x50, 0x00, 0x3A, 0x05, 0x0A, 0x07,
+ 0x03, 0x04, 0x07, 0x07, 0x00, 0x0B, 0x07, 0x0A,
+ 0x00, 0x06, 0x3C, 0x00, 0x03, 0x04, 0x07, 0x07,
+ 0x00, 0x11, 0x10, 0x0A, 0x50, 0x00, 0x3A, 0x05,
+ 0x0A, 0x08, 0x03, 0x04, 0x07, 0x07, 0x00, 0x0B,
+ 0x08, 0x10, 0x00, 0x06, 0x3C, 0x00, 0x03, 0x04,
+ 0x07, 0x07, 0x00, 0x11, 0x11, 0x10, 0x0B, 0xF0,
+ 0x00, 0x3A, 0x05, 0x03, 0x04, 0x07, 0x07, 0x00,
+ 0x03, 0x04, 0x07, 0x07, 0x00, 0x03, 0x04, 0x07,
+ 0x07, 0x00, 0x03, 0x04, 0x07, 0x07, 0x00, 0x03,
+ 0x04, 0x07, 0x07, 0x00, 0x03, 0x04, 0x07, 0x07,
+ 0x00, 0x03, 0x04, 0x07, 0x07, 0x00, 0x03, 0x04,
+ 0x07, 0x07, 0x00, 0x06, 0x3C, 0x00, 0x03, 0x04,
+ 0x07, 0x07, 0x00, 0x11, 0x10, 0x0C, 0xF0, 0x00,
+ 0x3A, 0x05, 0x0A, 0x09, 0x03, 0x04, 0x07, 0x07,
+ 0x00, 0x0B, 0x09, 0x0E, 0x00, 0x06, 0x3C, 0x00,
+ 0x03, 0x04, 0x07, 0x07, 0x00, 0x03, 0x04, 0x07,
+ 0x07, 0x00, 0x03, 0x04, 0x07, 0x07, 0x00, 0x03,
+ 0x04, 0x07, 0x07, 0x00, 0x03, 0x04, 0x07, 0x07,
+ 0x00, 0x03, 0x04, 0x07, 0x07, 0x00, 0x11, 0x11,
+ 0x10, 0x0D, 0x50, 0x00, 0x3A, 0x05, 0x0A, 0x0A,
+ 0x03, 0x04, 0x07, 0x07, 0x00, 0x0B, 0x0A, 0x0E,
+ 0x00, 0x06, 0x3C, 0x00, 0x0A, 0x0B, 0x03, 0x04,
+ 0x07, 0x07, 0x00, 0x0B, 0x0B, 0x02, 0x00, 0x18,
+ 0x20, 0x0A, 0x0C, 0x03, 0x04, 0x07, 0x07, 0x00,
+ 0x0B, 0x0C, 0x06, 0x00, 0x18, 0x21, 0x0A, 0x0D,
+ 0x03, 0x04, 0x07, 0x07, 0x00, 0x0B, 0x0D, 0x0C,
+ 0x00, 0x18, 0x22, 0x0A, 0x0E, 0x03, 0x04, 0x07,
+ 0x07, 0x00, 0x0B, 0x0E, 0x0B, 0x00, 0x11, 0x10,
+ 0x0E, 0x50, 0x00, 0x3A, 0x05, 0x0A, 0x0F, 0x03,
+ 0x04, 0x07, 0x07, 0x00, 0x0B, 0x0F, 0x09, 0x00,
+ 0x06, 0x3C, 0x00, 0x03, 0x04, 0x07, 0x07, 0x00,
+ 0x11, 0x10, 0x0F, 0x50, 0x00, 0x3A, 0x05, 0x0A,
+ 0x10, 0x03, 0x04, 0x07, 0x07, 0x00, 0x0B, 0x10,
+ 0x09, 0x00, 0x06, 0x3C, 0x00, 0x03, 0x04, 0x07,
+ 0x07, 0x00, 0x11, 0x10, 0x10, 0x50, 0x00, 0x3A,
+ 0x05, 0x0A, 0x11, 0x03, 0x04, 0x07, 0x07, 0x00,
+ 0x0B, 0x11, 0x0F, 0x00, 0x06, 0x3C, 0x00, 0x03,
+ 0x04, 0x07, 0x07, 0x00, 0x11, 0x10, 0x11, 0x50,
+ 0x00, 0x3A, 0x05, 0x0A, 0x12, 0x03, 0x04, 0x07,
+ 0x07, 0x00, 0x0B, 0x12, 0x14, 0x00, 0x06, 0x3C,
+ 0x00, 0x0A, 0x13, 0x03, 0x04, 0x07, 0x07, 0x00,
+ 0x0B, 0x13, 0x06, 0x00, 0x18, 0x23, 0x0A, 0x13,
+ 0x03, 0x04, 0x07, 0x07, 0x00, 0x0B, 0x13, 0x07,
+ 0x00, 0x11, 0x06, 0x3C, 0x00, 0x13, 0x19, 0x01,
+ 0x01, 0x04, 0x1D
+};
+
+static const ByteProvider k1KallakMalcolmSeqAmigaProvider = { ARRAYSIZE(k1KallakMalcolmSeqAmiga), k1KallakMalcolmSeqAmiga };
+
+static const byte k1ForestSeqAmiga[734] = {
+ 0x00, 0x05, 0x01, 0x00, 0x07, 0x01, 0x1A, 0x02,
+ 0x07, 0x00, 0x00, 0x00, 0x08, 0x02, 0x05, 0x00,
+ 0x98, 0x00, 0x38, 0x0A, 0x00, 0x03, 0x07, 0x16,
+ 0x02, 0x06, 0x09, 0x00, 0x0B, 0x00, 0x41, 0x00,
+ 0x18, 0x16, 0x03, 0x07, 0x02, 0x05, 0x01, 0x98,
+ 0x00, 0x38, 0x16, 0x02, 0x16, 0x03, 0x06, 0x09,
+ 0x00, 0x03, 0x07, 0x02, 0x05, 0x03, 0x98, 0x00,
+ 0x38, 0x16, 0x02, 0x16, 0x03, 0x06, 0x09, 0x00,
+ 0x03, 0x07, 0x02, 0x05, 0x01, 0x98, 0x00, 0x38,
+ 0x16, 0x02, 0x16, 0x03, 0x06, 0x09, 0x00, 0x03,
+ 0x07, 0x02, 0x05, 0x00, 0x98, 0x00, 0x38, 0x16,
+ 0x02, 0x16, 0x03, 0x06, 0x09, 0x00, 0x0A, 0x05,
+ 0x03, 0x07, 0x16, 0x02, 0x06, 0x09, 0x00, 0x0B,
+ 0x05, 0x0E, 0x00, 0x18, 0x16, 0x03, 0x07, 0x02,
+ 0x05, 0x01, 0x98, 0x00, 0x38, 0x16, 0x02, 0x16,
+ 0x03, 0x06, 0x09, 0x00, 0x03, 0x07, 0x02, 0x05,
+ 0x03, 0x98, 0x00, 0x38, 0x16, 0x02, 0x16, 0x03,
+ 0x06, 0x09, 0x00, 0x03, 0x07, 0x02, 0x05, 0x01,
+ 0x98, 0x00, 0x38, 0x16, 0x02, 0x16, 0x03, 0x06,
+ 0x09, 0x00, 0x03, 0x07, 0x02, 0x05, 0x04, 0x98,
+ 0x00, 0x38, 0x16, 0x02, 0x16, 0x03, 0x06, 0x09,
+ 0x00, 0x03, 0x07, 0x16, 0x02, 0x06, 0x09, 0x00,
+ 0x03, 0x07, 0x16, 0x02, 0x06, 0x09, 0x00, 0x03,
+ 0x07, 0x02, 0x05, 0x05, 0x98, 0x00, 0x38, 0x16,
+ 0x02, 0x16, 0x03, 0x06, 0x09, 0x00, 0x03, 0x07,
+ 0x16, 0x02, 0x06, 0x09, 0x00, 0x03, 0x07, 0x16,
+ 0x02, 0x06, 0x09, 0x00, 0x03, 0x07, 0x02, 0x05,
+ 0x06, 0x98, 0x00, 0x38, 0x16, 0x02, 0x16, 0x03,
+ 0x06, 0x09, 0x00, 0x03, 0x07, 0x16, 0x02, 0x06,
+ 0x09, 0x00, 0x03, 0x07, 0x16, 0x02, 0x06, 0x09,
+ 0x00, 0x18, 0x25, 0x0A, 0x00, 0x03, 0x07, 0x03,
+ 0x05, 0x16, 0x02, 0x16, 0x03, 0x06, 0x09, 0x00,
+ 0x0B, 0x00, 0x09, 0x00, 0x0A, 0x06, 0x03, 0x07,
+ 0x16, 0x02, 0x06, 0x09, 0x00, 0x0B, 0x06, 0x0E,
+ 0x00, 0x18, 0x17, 0x0A, 0x01, 0x0C, 0x04, 0x03,
+ 0x07, 0x03, 0x05, 0x16, 0x02, 0x16, 0x03, 0x06,
+ 0x09, 0x00, 0x0B, 0x01, 0x0D, 0x00, 0x18, 0x25,
+ 0x0A, 0x07, 0x03, 0x07, 0x16, 0x02, 0x06, 0x09,
+ 0x00, 0x0B, 0x07, 0x0E, 0x00, 0x18, 0x18, 0x03,
+ 0x07, 0x03, 0x05, 0x16, 0x02, 0x16, 0x03, 0x06,
+ 0x09, 0x00, 0x03, 0x07, 0x03, 0x05, 0x16, 0x02,
+ 0x16, 0x03, 0x06, 0x09, 0x00, 0x03, 0x07, 0x03,
+ 0x05, 0x16, 0x02, 0x16, 0x03, 0x06, 0x09, 0x00,
+ 0x03, 0x07, 0x03, 0x05, 0x16, 0x02, 0x16, 0x03,
+ 0x06, 0x09, 0x00, 0x03, 0x07, 0x03, 0x05, 0x16,
+ 0x02, 0x16, 0x03, 0x06, 0x09, 0x00, 0x06, 0x12,
+ 0x00, 0x18, 0x25, 0x0A, 0x02, 0x03, 0x07, 0x03,
+ 0x05, 0x16, 0x02, 0x16, 0x03, 0x06, 0x09, 0x00,
+ 0x0B, 0x02, 0x07, 0x00, 0x0A, 0x03, 0x03, 0x07,
+ 0x16, 0x02, 0x06, 0x09, 0x00, 0x0B, 0x03, 0x0F,
+ 0x00, 0x13, 0x01, 0x07, 0x01, 0x05, 0x1D, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x03, 0xEC, 0x00, 0x00,
+ 0x00, 0x4A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x32, 0x00, 0x00, 0x00, 0x2E, 0x00, 0x00,
+ 0x00, 0x2A, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00,
+ 0x00, 0x22, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00,
+ 0x01, 0x46, 0x00, 0x00, 0x01, 0x42, 0x00, 0x00,
+ 0x01, 0x3E, 0x00, 0x00, 0x01, 0x3A, 0x00, 0x00,
+ 0x01, 0x36, 0x00, 0x00, 0x01, 0x32, 0x00, 0x00,
+ 0x01, 0x2E, 0x00, 0x00, 0x01, 0x2A, 0x00, 0x00,
+ 0x01, 0x26, 0x00, 0x00, 0x01, 0x22, 0x00, 0x00,
+ 0x01, 0x1E, 0x00, 0x00, 0x01, 0x1A, 0x00, 0x00,
+ 0x01, 0x16, 0x00, 0x00, 0x01, 0x12, 0x00, 0x00,
+ 0x01, 0x0E, 0x00, 0x00, 0x01, 0x0A, 0x00, 0x00,
+ 0x01, 0x06, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00,
+ 0x00, 0xFE, 0x00, 0x00, 0x00, 0xFA, 0x00, 0x00,
+ 0x00, 0xF6, 0x00, 0x00, 0x00, 0xF2, 0x00, 0x00,
+ 0x00, 0xEE, 0x00, 0x00, 0x00, 0xEA, 0x00, 0x00,
+ 0x00, 0xE6, 0x00, 0x00, 0x00, 0xE2, 0x00, 0x00,
+ 0x00, 0xDE, 0x00, 0x00, 0x00, 0xDA, 0x00, 0x00,
+ 0x00, 0xD6, 0x00, 0x00, 0x00, 0xD2, 0x00, 0x00,
+ 0x00, 0xCE, 0x00, 0x00, 0x00, 0xCA, 0x00, 0x00,
+ 0x00, 0xC6, 0x00, 0x00, 0x00, 0xC2, 0x00, 0x00,
+ 0x00, 0xBE, 0x00, 0x00, 0x00, 0xBA, 0x00, 0x00,
+ 0x00, 0xB6, 0x00, 0x00, 0x00, 0xB2, 0x00, 0x00,
+ 0x00, 0xAE, 0x00, 0x00, 0x00, 0xAA, 0x00, 0x00,
+ 0x00, 0xA6, 0x00, 0x00, 0x00, 0xA2, 0x00, 0x00,
+ 0x00, 0x9E, 0x00, 0x00, 0x00, 0x9A, 0x00, 0x00,
+ 0x00, 0x96, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00,
+ 0x00, 0x8E, 0x00, 0x00, 0x00, 0x8A, 0x00, 0x00,
+ 0x00, 0x86, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00,
+ 0x00, 0x7E, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00,
+ 0x00, 0x72, 0x00, 0x00, 0x00, 0x6E, 0x00, 0x00,
+ 0x00, 0x6A, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00,
+ 0x00, 0x62, 0x00, 0x00, 0x00, 0x5E, 0x00, 0x00,
+ 0x00, 0x5A, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00,
+ 0x00, 0x52, 0x00, 0x00, 0x00, 0x4E, 0x00, 0x00,
+ 0x00, 0x4A, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00,
+ 0x00, 0x42, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00,
+ 0x00, 0x3A, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x03, 0xF2, 0x00, 0x00,
+ 0x03, 0xEA, 0x00, 0x00, 0x00, 0x08
+};
+
+static const ByteProvider k1ForestSeqAmigaProvider = { ARRAYSIZE(k1ForestSeqAmiga), k1ForestSeqAmiga };
+
+static const char *const k1IntroCPSStringsAmiga[2] = {
+ "malkal.cps",
+ "tree.cps"
+};
+
+static const StringListProvider k1IntroCPSStringsAmigaProvider = { ARRAYSIZE(k1IntroCPSStringsAmiga), k1IntroCPSStringsAmiga };
+
+static const char *const k1IntroWSAStringsAmiga[11] = {
+ "kallak.wsa",
+ "tree1.wsa",
+ "tree2.wsa",
+ "westwood.wsa",
+ "mal-kal.wsa",
+ "destruct.wsa",
+ "kyrandia.wsa",
+ "shore.wsa",
+ "reunion.wsa",
+ "reuniont.wsa",
+ "latern.wsa"
+};
+
+static const StringListProvider k1IntroWSAStringsAmigaProvider = { ARRAYSIZE(k1IntroWSAStringsAmiga), k1IntroWSAStringsAmiga };
+
+static const char *const k1IntroCOLStringsAmiga[4] = {
+ "kallak.col",
+ "tree_exp.col",
+ "ww.col",
+ "mal-kal.col"
+};
+
+static const StringListProvider k1IntroCOLStringsAmigaProvider = { ARRAYSIZE(k1IntroCOLStringsAmiga), k1IntroCOLStringsAmiga };
+
+static const Room k1RoomListAmiga[246] = {
+ { 30, 0xFFFF, 0xFFFF, 0x0001, 0xFFFF },
+ { 71, 0xFFFF, 0xFFFF, 0x0005, 0xFFFF },
+ { 44, 0xFFFF, 0x0003, 0xFFFF, 0xFFFF },
+ { 72, 0xFFFF, 0xFFFF, 0x000E, 0xFFFF },
+ { 48, 0xFFFF, 0x0005, 0xFFFF, 0x000E },
+ { 74, 0xFFFF, 0x000A, 0xFFFF, 0x0004 },
+ { 46, 0xFFFF, 0x000F, 0xFFFF, 0x000B },
+ { 75, 0xFFFF, 0x0009, 0xFFFF, 0x0018 },
+ { 13, 0xFFFF, 0x000C, 0xFFFF, 0x000A },
+ { 5, 0x000D, 0xFFFF, 0xFFFF, 0x0007 },
+ { 84, 0xFFFF, 0x0008, 0xFFFF, 0x0005 },
+ { 37, 0xFFFF, 0x0006, 0x000C, 0x0010 },
+ { 51, 0x000B, 0xFFFF, 0x000D, 0x0008 },
+ { 23, 0x000C, 0xFFFF, 0x0009, 0xFFFF },
+ { 25, 0x0003, 0x0004, 0xFFFF, 0xFFFF },
+ { 11, 0xFFFF, 0xFFFF, 0xFFFF, 0x0006 },
+ { 86, 0xFFFF, 0x000B, 0xFFFF, 0xFFFF },
+ { 84, 0xFFFF, 0x0022, 0x0017, 0x0016 },
+ { 51, 0x0020, 0x0014, 0x0024, 0x0015 },
+ { 85, 0x0014, 0x0019, 0xFFFF, 0x0024 },
+ { 33, 0x001C, 0xFFFF, 0x0013, 0x0012 },
+ { 31, 0x0022, 0x0012, 0xFFFF, 0x0017 },
+ { 25, 0x001F, 0x0011, 0xFFFF, 0xFFFF },
+ { 25, 0x0011, 0x0015, 0xFFFF, 0xFFFF },
+ { 2, 0xFFFF, 0x0007, 0xFFFF, 0x001A },
+ { 82, 0xFFFF, 0x006D, 0xFFFF, 0x0013 },
+ { 77, 0xFFFF, 0x0018, 0x0021, 0xFFFF },
+ { 15, 0xFFFF, 0x001A, 0xFFFF, 0xFFFF },
+ { 16, 0xFFFF, 0xFFFF, 0x0014, 0x0020 },
+ { 19, 0xFFFF, 0x0021, 0xFFFF, 0x001F },
+ { 12, 0xFFFF, 0xFFFF, 0x0020, 0x0021 },
+ { 7, 0x0023, 0x001D, 0x0016, 0xFFFF },
+ { 20, 0x001E, 0x001C, 0x0012, 0x0022 },
+ { 17, 0x001A, 0x001E, 0x0022, 0x001D },
+ { 22, 0x0021, 0x0020, 0x0015, 0x0011 },
+ { 24, 0xFFFF, 0xFFFF, 0x001F, 0xFFFF },
+ { 32, 0x0012, 0x0013, 0xFFFF, 0xFFFF },
+ { 87, 0xFFFF, 0x0026, 0xFFFF, 0xFFFF },
+ { 8, 0xFFFF, 0x0027, 0xFFFF, 0x0025 },
+ { 88, 0xFFFF, 0x0035, 0x0037, 0x0026 },
+ { 35, 0xFFFF, 0x0036, 0x0038, 0xFFFF },
+ { 47, 0xFFFF, 0xFFFF, 0x003B, 0xFFFF },
+ { 28, 0x0035, 0x002B, 0x002F, 0x0037 },
+ { 36, 0xFFFF, 0x002C, 0xFFFF, 0x002A },
+ { 78, 0xFFFF, 0xFFFF, 0xFFFF, 0x002B },
+ { 10, 0xFFFF, 0xFFFF, 0xFFFF, 0x002C },
+ { 51, 0x0037, 0x002F, 0x0040, 0x003C },
+ { 38, 0x002A, 0x003D, 0x0041, 0x002E },
+ { 81, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 41, 0xFFFF, 0xFFFF, 0x0069, 0xFFFF },
+ { 50, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 18, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 49, 0xFFFF, 0xFFFF, 0x0054, 0xFFFF },
+ { 105, 0xFFFF, 0xFFFF, 0x002A, 0x0027 },
+ { 105, 0xFFFF, 0xFFFF, 0x0039, 0x0028 },
+ { 37, 0x0027, 0x002A, 0x002E, 0x0049 },
+ { 34, 0x0028, 0x0039, 0xFFFF, 0xFFFF },
+ { 51, 0x0036, 0x003A, 0xFFFF, 0x0038 },
+ { 84, 0xFFFF, 0x003B, 0xFFFF, 0x0039 },
+ { 1, 0x0029, 0xFFFF, 0x003E, 0x003A },
+ { 37, 0x0049, 0x002E, 0x003F, 0xFFFF },
+ { 33, 0xFFFF, 0xFFFF, 0xFFFF, 0x002F },
+ { 34, 0x003B, 0x003F, 0xFFFF, 0xFFFF },
+ { 85, 0x003C, 0x0040, 0xFFFF, 0x003E },
+ { 106, 0x002E, 0x0041, 0xFFFF, 0x003F },
+ { 33, 0x002F, 0xFFFF, 0xFFFF, 0x0040 },
+ { 60, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 11, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 33, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 26, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 0, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 25, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 23, 0xFFFF, 0x0037, 0x003C, 0xFFFF },
+ { 6, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 51, 0x0063, 0x0067, 0x006B, 0x0066 },
+ { 66, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 67, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 62, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 65, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 18, 0x0056, 0x005A, 0x005E, 0xFFFF },
+ { 6, 0xFFFF, 0x0052, 0x0056, 0xFFFF },
+ { 4, 0xFFFF, 0x0053, 0x0057, 0x0051 },
+ { 3, 0xFFFF, 0x0054, 0xFFFF, 0x0052 },
+ { 37, 0x0034, 0x0055, 0x0058, 0x0053 },
+ { 11, 0xFFFF, 0xFFFF, 0x0059, 0x0054 },
+ { 37, 0x0051, 0x0057, 0x0050, 0xFFFF },
+ { 51, 0x0052, 0xFFFF, 0x005A, 0x0056 },
+ { 51, 0x0054, 0x0059, 0x005C, 0xFFFF },
+ { 1, 0x0055, 0xFFFF, 0x005D, 0x0058 },
+ { 106, 0x0057, 0x005B, 0xFFFF, 0x0050 },
+ { 85, 0xFFFF, 0x005C, 0xFFFF, 0x005A },
+ { 37, 0x0058, 0x005D, 0x005F, 0x005B },
+ { 33, 0x0059, 0xFFFF, 0xFFFF, 0x005C },
+ { 51, 0x0050, 0xFFFF, 0x0061, 0xFFFF },
+ { 51, 0x005C, 0xFFFF, 0x0064, 0xFFFF },
+ { 37, 0xFFFF, 0x0061, 0x0065, 0xFFFF },
+ { 51, 0x005E, 0x0062, 0xFFFF, 0x0060 },
+ { 84, 0xFFFF, 0x0063, 0x0066, 0x0061 },
+ { 84, 0xFFFF, 0x0064, 0x004B, 0x0062 },
+ { 33, 0x005F, 0xFFFF, 0x0067, 0x0063 },
+ { 51, 0x0060, 0xFFFF, 0x0068, 0xFFFF },
+ { 37, 0x0062, 0x004B, 0x006A, 0xFFFF },
+ { 1, 0x0064, 0xFFFF, 0x006C, 0x004B },
+ { 34, 0x0065, 0x0069, 0xFFFF, 0xFFFF },
+ { 51, 0x0031, 0x006A, 0xFFFF, 0x0068 },
+ { 85, 0x0066, 0x006B, 0xFFFF, 0x0069 },
+ { 106, 0x004B, 0x006C, 0xFFFF, 0x006A },
+ { 33, 0x0067, 0xFFFF, 0xFFFF, 0x006B },
+ { 55, 0x00C4, 0x00C5, 0xFFFF, 0x0019 },
+ { 52, 0xFFFF, 0x00C1, 0xFFFF, 0x0096 },
+ { 64, 0xFFFF, 0x00BF, 0xFFFF, 0x008C },
+ { 57, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 54, 0x00AF, 0xFFFF, 0x00B7, 0x00AC },
+ { 53, 0x0078, 0xFFFF, 0x0079, 0xFFFF },
+ { 29, 0xFFFF, 0x00BB, 0xFFFF, 0x00C5 },
+ { 69, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 76, 0x00C6, 0xFFFF, 0xFFFF, 0x00B1 },
+ { 59, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 58, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 59, 0xFFFF, 0x0025, 0x0072, 0xFFFF },
+ { 58, 0x0072, 0x007B, 0x00BB, 0xFFFF },
+ { 58, 0xFFFF, 0x007F, 0x007B, 0xFFFF },
+ { 59, 0x007A, 0xFFFF, 0x007C, 0x0079 },
+ { 58, 0x007B, 0x0081, 0x00BC, 0xFFFF },
+ { 58, 0x00BC, 0x0083, 0xFFFF, 0xFFFF },
+ { 58, 0xFFFF, 0x0085, 0x007F, 0xFFFF },
+ { 59, 0x007E, 0x0086, 0x0080, 0x007A },
+ { 58, 0x007F, 0x00BD, 0x0081, 0xFFFF },
+ { 59, 0x0080, 0x0087, 0x0082, 0x007C },
+ { 58, 0x0081, 0xFFFF, 0x0083, 0x00BC },
+ { 59, 0x0082, 0x0089, 0x0084, 0x007D },
+ { 58, 0x0083, 0x008A, 0xFFFF, 0xFFFF },
+ { 59, 0xFFFF, 0x008B, 0x0086, 0x007E },
+ { 58, 0x0085, 0x008C, 0x00BD, 0x007F },
+ { 58, 0x00BD, 0x008E, 0x0088, 0x0081 },
+ { 59, 0x0087, 0xFFFF, 0x0089, 0xFFFF },
+ { 58, 0x0088, 0x0090, 0x008A, 0x0083 },
+ { 59, 0x0089, 0x0091, 0xFFFF, 0x0084 },
+ { 58, 0xFFFF, 0x0092, 0x008C, 0x0085 },
+ { 59, 0x008B, 0x006F, 0x008D, 0x0086 },
+ { 58, 0x008C, 0x0093, 0x008E, 0x00BD },
+ { 59, 0x008D, 0xFFFF, 0xFFFF, 0x0087 },
+ { 58, 0xFFFF, 0x00BE, 0x0090, 0xFFFF },
+ { 59, 0x008F, 0x0095, 0x0091, 0x0089 },
+ { 58, 0x0090, 0x0096, 0xFFFF, 0x008A },
+ { 59, 0xFFFF, 0x0098, 0xFFFF, 0x008B },
+ { 59, 0xFFFF, 0xFFFF, 0xFFFF, 0x008D },
+ { 58, 0xFFFF, 0x009A, 0x00BE, 0xFFFF },
+ { 58, 0x00BE, 0xFFFF, 0x0096, 0x0090 },
+ { 59, 0x0095, 0x006E, 0x0097, 0x0091 },
+ { 58, 0x0096, 0x009D, 0xFFFF, 0xFFFF },
+ { 58, 0xFFFF, 0x009E, 0x00BF, 0x0092 },
+ { 58, 0x00BF, 0x00A0, 0x009A, 0xFFFF },
+ { 59, 0x0099, 0xFFFF, 0x009B, 0x0094 },
+ { 58, 0x009A, 0xFFFF, 0x009C, 0xFFFF },
+ { 59, 0x009B, 0x00A2, 0xFFFF, 0xFFFF },
+ { 59, 0xFFFF, 0x00A3, 0xFFFF, 0x0097 },
+ { 59, 0xFFFF, 0xFFFF, 0x009F, 0x0098 },
+ { 58, 0x009E, 0x00A4, 0x00A0, 0x00BF },
+ { 59, 0x009F, 0x00A5, 0xFFFF, 0x0099 },
+ { 58, 0xFFFF, 0x00A6, 0x00C0, 0xFFFF },
+ { 58, 0x00C0, 0x00A8, 0xFFFF, 0x009C },
+ { 58, 0x00C1, 0xFFFF, 0xFFFF, 0x009D },
+ { 59, 0xFFFF, 0x00AA, 0x00A5, 0x009F },
+ { 58, 0x00A4, 0x00AB, 0x00A6, 0x00A0 },
+ { 59, 0x00A5, 0x00AC, 0x00A7, 0x00A1 },
+ { 58, 0x00A6, 0xFFFF, 0xFFFF, 0x00C0 },
+ { 59, 0xFFFF, 0x00AD, 0x00A9, 0x00A2 },
+ { 58, 0x00A8, 0x00AE, 0xFFFF, 0x00C1 },
+ { 58, 0xFFFF, 0xFFFF, 0x00AB, 0x00A4 },
+ { 59, 0x00AA, 0x00AF, 0x00AC, 0x00A5 },
+ { 58, 0x00AB, 0x0071, 0x00C2, 0x00A6 },
+ { 58, 0xFFFF, 0x00B0, 0x00AE, 0x00A8 },
+ { 59, 0x00AD, 0xFFFF, 0xFFFF, 0x00A9 },
+ { 58, 0xFFFF, 0x00C3, 0x0071, 0x00AB },
+ { 59, 0xFFFF, 0xFFFF, 0x00B1, 0x00AD },
+ { 58, 0x00B0, 0x0075, 0xFFFF, 0xFFFF },
+ { 59, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 59, 0x00C3, 0xFFFF, 0x00B4, 0xFFFF },
+ { 59, 0x00B3, 0x00BA, 0xFFFF, 0xFFFF },
+ { 58, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 59, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 58, 0x0071, 0xFFFF, 0xFFFF, 0x00C2 },
+ { 58, 0xFFFF, 0xFFFF, 0x00B9, 0xFFFF },
+ { 59, 0x00B8, 0xFFFF, 0xFFFF, 0x00C3 },
+ { 58, 0xFFFF, 0xFFFF, 0xFFFF, 0x00B4 },
+ { 59, 0x0079, 0xFFFF, 0xFFFF, 0x0073 },
+ { 59, 0x007C, 0x0082, 0x007D, 0xFFFF },
+ { 59, 0x0086, 0x008D, 0x0087, 0x0080 },
+ { 59, 0x0094, 0xFFFF, 0x0095, 0x008F },
+ { 59, 0x0098, 0x009F, 0x0099, 0x006F },
+ { 59, 0x00A1, 0x00A7, 0x00A2, 0xFFFF },
+ { 59, 0xFFFF, 0x00A9, 0x00A3, 0x006E },
+ { 59, 0x00AC, 0x00B7, 0xFFFF, 0xFFFF },
+ { 58, 0xFFFF, 0x00B9, 0x00B3, 0x00AF },
+ { 59, 0xFFFF, 0xFFFF, 0x006D, 0xFFFF },
+ { 58, 0xFFFF, 0x0073, 0xFFFF, 0x006D },
+ { 59, 0xFFFF, 0xFFFF, 0x0075, 0xFFFF },
+ { 94, 0xFFFF, 0x00C8, 0xFFFF, 0xFFFF },
+ { 43, 0x00C9, 0x00CB, 0x00CA, 0x00C7 },
+ { 51, 0xFFFF, 0xFFFF, 0x00C8, 0xFFFF },
+ { 37, 0x00C8, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 79, 0xFFFF, 0xFFFF, 0xFFFF, 0x00C8 },
+ { 80, 0xFFFF, 0xFFFF, 0x00CB, 0x00CD },
+ { 97, 0x00E3, 0x00D4, 0x00CC, 0x00D3 },
+ { 103, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 100, 0xFFFF, 0x00CE, 0x00D5, 0xFFFF },
+ { 98, 0xFFFF, 0xFFFF, 0xFFFF, 0x00D7 },
+ { 101, 0xFFFF, 0x00D2, 0x00CE, 0xFFFF },
+ { 99, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 93, 0x00D5, 0x00CD, 0xFFFF, 0xFFFF },
+ { 93, 0x00D6, 0xFFFF, 0xFFFF, 0x00CD },
+ { 93, 0x00CF, 0x00CE, 0x00D3, 0xFFFF },
+ { 93, 0x00D7, 0xFFFF, 0x00D4, 0x00CE },
+ { 93, 0xFFFF, 0x00D0, 0x00D6, 0x00CE },
+ { 93, 0x00DA, 0x00E3, 0xFFFF, 0xFFFF },
+ { 93, 0x00DB, 0xFFFF, 0xFFFF, 0x00E3 },
+ { 93, 0xFFFF, 0x00E4, 0x00D8, 0x00E2 },
+ { 93, 0xFFFF, 0x00E1, 0x00D9, 0x00E4 },
+ { 93, 0xFFFF, 0x00E4, 0xFFFF, 0x00DF },
+ { 93, 0xFFFF, 0x00E0, 0xFFFF, 0x00E4 },
+ { 93, 0xFFFF, 0xFFFF, 0x00E4, 0xFFFF },
+ { 91, 0xFFFF, 0x00DC, 0xFFFF, 0xFFFF },
+ { 90, 0xFFFF, 0xFFFF, 0xFFFF, 0x00DD },
+ { 92, 0xFFFF, 0xFFFF, 0xFFFF, 0x00DB },
+ { 95, 0xFFFF, 0x00DA, 0xFFFF, 0xFFFF },
+ { 96, 0xFFFF, 0x00D9, 0x00CD, 0x00D8 },
+ { 89, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 102, 0xFFFF, 0x00E6, 0xFFFF, 0xFFFF },
+ { 102, 0xFFFF, 0x00EA, 0x00E8, 0x00E5 },
+ { 102, 0xFFFF, 0x00E8, 0x00EB, 0xFFFF },
+ { 102, 0x00E6, 0xFFFF, 0xFFFF, 0x00E7 },
+ { 102, 0xFFFF, 0xFFFF, 0x00ED, 0xFFFF },
+ { 102, 0xFFFF, 0xFFFF, 0xFFFF, 0x00E6 },
+ { 102, 0x00E7, 0x00EC, 0x00EF, 0xFFFF },
+ { 102, 0xFFFF, 0x00ED, 0x00F0, 0x00EB },
+ { 102, 0x00E9, 0x00EE, 0x00F1, 0x00EC },
+ { 102, 0xFFFF, 0xFFFF, 0x00F2, 0x00ED },
+ { 102, 0x00EB, 0x00F0, 0xFFFF, 0xFFFF },
+ { 102, 0x00EC, 0x00F1, 0x00F3, 0x00EF },
+ { 102, 0x00ED, 0xFFFF, 0x00F4, 0x00F0 },
+ { 102, 0x00EE, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 102, 0x00F0, 0x00F4, 0xFFFF, 0xFFFF },
+ { 102, 0x00F1, 0x00F5, 0xFFFF, 0x00F3 },
+ { 102, 0xFFFF, 0xFFFF, 0x00CF, 0x00F4 }
+};
+
+static const RoomProvider k1RoomListAmigaProvider = { ARRAYSIZE(k1RoomListAmiga), k1RoomListAmiga };
+
+static const char *const k1RoomFilenamesAmiga[107] = {
+ "CLIFFB",
+ "XEDGEB",
+ "CAVEB",
+ "NCLIFF",
+ "NCLIFFB",
+ "CAVE",
+ "NWCLIFF",
+ "OAKS",
+ "PLATEAU",
+ "POTHUT",
+ "POTION",
+ "NWCLIFB",
+ "SONG",
+ "SORROW",
+ "SPELHUT",
+ "SPELL",
+ "SPRING",
+ "SQUARE",
+ "STUMP",
+ "TEMPLE",
+ "WELL",
+ "WILLOW",
+ "WISE",
+ "XEDGE",
+ "RUBY",
+ "ZROCK",
+ "ZROCKB",
+ "FORESTD",
+ "FOUNTN",
+ "GATECV",
+ "GEMCUT",
+ "CLIFF",
+ "DEAD",
+ "EDGE",
+ "EDGEB",
+ "FALLS",
+ "FORESTC",
+ "FORESTB",
+ "GLADE",
+ "GEMHUT",
+ "ALGAE",
+ "MIX",
+ "BRIDGE",
+ "GRAVE",
+ "HEALER",
+ "HEALHUT",
+ "ALTAR",
+ "BURN",
+ "SICKWIL",
+ "LAGOON",
+ "MAPLE",
+ "FORESTA",
+ "ARCH",
+ "CHASM",
+ "EMCAV",
+ "ENTER",
+ "FLOWERS",
+ "GEMSLOT",
+ "GEN_CAV",
+ "GENCAVB",
+ "GOLDEN",
+ "GOLDENB",
+ "ICE",
+ "MARKET",
+ "MOONCAV",
+ "MSHCAV",
+ "POOL",
+ "SEASONS",
+ "SHRINE",
+ "TREECAV",
+ "EXTGEM",
+ "GEM",
+ "EXTHEAL",
+ "BASE",
+ "TRUNK",
+ "BROKEN",
+ "LAVA",
+ "EXTSPEL",
+ "EXTPOT",
+ "CASTLE",
+ "CGATE",
+ "LEPHOLE",
+ "DRAGON",
+ "XEDGEC",
+ "FNORTH",
+ "FSOUTH",
+ "FGOWEST",
+ "PLTCAVE",
+ "BONKBG",
+ "BALCONY",
+ "DARMS",
+ "BRINS",
+ "ALCHEMY",
+ "GENHALL",
+ "LANDING",
+ "BELROOM",
+ "UPSTAIR",
+ "DNSTAIR",
+ "KITCHEN",
+ "KYRAGEM",
+ "LIBRARY",
+ "FOYER",
+ "CATACOM",
+ "GRTHALL",
+ "FESTSTH",
+ "FWSTSTH",
+ "FSOUTHB"
+};
+
+static const StringListProvider k1RoomFilenamesAmigaProvider = { ARRAYSIZE(k1RoomFilenamesAmiga), k1RoomFilenamesAmiga };
+
+static const char *const k1CharacterImageFilenamesAmiga[20] = {
+ "BRANDON.CPS",
+ "DAPHNE.CPS",
+ "MERITH.CPS",
+ "HERMAN.CPS",
+ "SMALL.CPS",
+ "MALCOM.CPS",
+ "DRINK.CPS",
+ "SHRINK.CPS",
+ "HEALBR1.CPS",
+ "HEALBR2.CPS",
+ "SNOW1A.CPS",
+ "SNOW2A.CPS",
+ "BRANWILL.CPS",
+ "FLUTE1.CPS",
+ "FLUTE2.CPS",
+ "POISON1.CPS",
+ "POISON2.CPS",
+ "TELEKIN.CPS",
+ "BRANSTON.CPS",
+ "POISON.CPS"
+};
+
+static const StringListProvider k1CharacterImageFilenamesAmigaProvider = { ARRAYSIZE(k1CharacterImageFilenamesAmiga), k1CharacterImageFilenamesAmiga };
+
+static const Shape k1DefaultShapesAmiga[166] = {
+ { 0, 0, 0, 3, 48, -12, -48 },
+ { 0, 3, 0, 3, 48, -12, -48 },
+ { 0, 6, 0, 3, 48, -12, -48 },
+ { 0, 9, 0, 3, 48, -12, -48 },
+ { 0, 12, 0, 3, 48, -12, -48 },
+ { 0, 15, 0, 3, 48, -12, -48 },
+ { 0, 18, 0, 3, 48, -12, -48 },
+ { 0, 21, 0, 3, 48, -12, -48 },
+ { 0, 24, 0, 3, 48, -12, -48 },
+ { 0, 27, 0, 3, 48, -12, -48 },
+ { 0, 0, 51, 2, 11, -2, -8 },
+ { 0, 2, 51, 2, 11, -2, -8 },
+ { 0, 4, 51, 2, 11, -2, -8 },
+ { 0, 6, 51, 2, 11, -2, -8 },
+ { 0, 8, 51, 2, 11, -2, -8 },
+ { 0, 10, 51, 2, 11, -2, -8 },
+ { 0, 12, 51, 2, 11, -2, -8 },
+ { 0, 14, 51, 2, 11, -2, -8 },
+ { 0, 16, 51, 2, 11, -2, -8 },
+ { 0, 18, 51, 2, 11, -2, -8 },
+ { 0, 20, 51, 2, 11, -2, -8 },
+ { 0, 22, 51, 2, 11, -2, -8 },
+ { 0, 0, 80, 3, 48, -12, -48 },
+ { 0, 3, 80, 3, 48, -12, -48 },
+ { 0, 6, 80, 3, 48, -12, -48 },
+ { 0, 9, 80, 3, 48, -12, -48 },
+ { 0, 12, 80, 3, 48, -12, -48 },
+ { 0, 15, 80, 3, 48, -12, -48 },
+ { 0, 0, 129, 3, 48, -12, -48 },
+ { 0, 3, 129, 3, 48, -12, -48 },
+ { 0, 6, 129, 3, 48, -12, -48 },
+ { 0, 9, 129, 3, 48, -12, -48 },
+ { 0, 12, 129, 3, 48, -12, -48 },
+ { 0, 15, 129, 3, 48, -12, -48 },
+ { 2, 0, 0, 3, 48, -12, -48 },
+ { 2, 3, 0, 3, 48, -12, -48 },
+ { 2, 6, 0, 3, 48, -12, -48 },
+ { 2, 9, 0, 3, 48, -12, -48 },
+ { 2, 12, 0, 3, 48, -12, -48 },
+ { 2, 15, 0, 3, 48, -12, -48 },
+ { 2, 18, 0, 3, 48, -12, -48 },
+ { 2, 21, 0, 3, 48, -12, -48 },
+ { 2, 24, 0, 3, 48, -12, -48 },
+ { 2, 27, 0, 3, 48, -12, -48 },
+ { 2, 30, 10, 3, 38, -16, -38 },
+ { 2, 27, 48, 4, 40, -8, -40 },
+ { 2, 0, 51, 2, 11, -4, 0 },
+ { 2, 2, 51, 2, 11, -4, 0 },
+ { 2, 4, 51, 2, 11, -4, 0 },
+ { 2, 6, 51, 2, 11, -4, 0 },
+ { 2, 8, 51, 2, 11, -4, 0 },
+ { 2, 10, 51, 2, 11, -4, 0 },
+ { 2, 12, 51, 2, 11, -4, 0 },
+ { 2, 14, 51, 2, 11, -4, 0 },
+ { 2, 16, 51, 2, 11, -4, 0 },
+ { 2, 18, 51, 2, 11, -4, 0 },
+ { 2, 20, 51, 2, 11, -4, 0 },
+ { 2, 22, 51, 2, 11, -4, 0 },
+ { 255, 0, 80, 3, 48, -12, -48 },
+ { 255, 3, 80, 3, 48, -12, -48 },
+ { 255, 6, 80, 3, 48, -12, -48 },
+ { 255, 9, 80, 3, 48, -12, -48 },
+ { 255, 12, 80, 3, 48, -12, -48 },
+ { 255, 15, 80, 3, 48, -12, -48 },
+ { 255, 0, 129, 3, 48, -12, -48 },
+ { 255, 3, 129, 3, 48, -12, -48 },
+ { 255, 6, 129, 3, 48, -12, -48 },
+ { 255, 9, 129, 3, 48, -12, -48 },
+ { 255, 12, 129, 3, 48, -12, -48 },
+ { 255, 15, 129, 3, 48, -12, -48 },
+ { 3, 0, 0, 3, 48, -12, -46 },
+ { 3, 3, 0, 3, 48, -12, -48 },
+ { 3, 6, 0, 3, 48, -12, -48 },
+ { 3, 9, 0, 3, 48, -12, -48 },
+ { 3, 12, 0, 3, 48, -12, -48 },
+ { 3, 15, 0, 3, 48, -12, -48 },
+ { 3, 18, 0, 3, 48, -12, -48 },
+ { 3, 21, 0, 3, 48, -12, -48 },
+ { 3, 24, 0, 3, 48, -12, -48 },
+ { 3, 27, 0, 3, 48, -12, -46 },
+ { 3, 30, 0, 3, 48, -14, -47 },
+ { 3, 39, 199, 1, 1, -12, -48 },
+ { 3, 0, 51, 2, 11, 0, -7 },
+ { 3, 2, 51, 2, 11, 0, -7 },
+ { 3, 4, 51, 2, 11, 0, -7 },
+ { 3, 6, 51, 2, 11, 0, -7 },
+ { 3, 8, 51, 2, 11, 0, -7 },
+ { 3, 10, 51, 2, 11, 0, -7 },
+ { 3, 12, 51, 2, 11, 0, -7 },
+ { 3, 14, 51, 2, 11, 0, -7 },
+ { 3, 16, 51, 2, 11, 0, -7 },
+ { 3, 18, 51, 2, 11, 0, -7 },
+ { 3, 20, 51, 2, 11, 0, -7 },
+ { 3, 22, 51, 2, 11, 0, -7 },
+ { 3, 0, 80, 3, 48, -12, -48 },
+ { 3, 3, 80, 3, 48, -12, -48 },
+ { 3, 6, 80, 3, 48, -12, -48 },
+ { 3, 9, 80, 3, 48, -12, -48 },
+ { 3, 12, 80, 3, 48, -12, -48 },
+ { 3, 15, 80, 3, 48, -12, -48 },
+ { 3, 0, 129, 3, 48, -12, -48 },
+ { 3, 3, 129, 3, 48, -12, -48 },
+ { 3, 6, 129, 3, 48, -12, -48 },
+ { 3, 9, 129, 3, 48, -12, -48 },
+ { 3, 12, 129, 3, 48, -12, -48 },
+ { 3, 15, 129, 3, 48, -12, -48 },
+ { 12, 0, 96, 5, 29, -20, -42 },
+ { 12, 5, 96, 5, 29, -20, -42 },
+ { 12, 10, 96, 5, 29, -20, -42 },
+ { 12, 15, 96, 5, 29, -20, -42 },
+ { 12, 20, 96, 5, 29, -20, -42 },
+ { 12, 25, 96, 5, 29, -20, -42 },
+ { 12, 30, 96, 5, 29, -20, -42 },
+ { 12, 35, 96, 5, 29, -20, -42 },
+ { 12, 0, 125, 5, 29, -20, -42 },
+ { 12, 5, 125, 5, 29, -20, -42 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 }
+};
+
+static const ShapeProvider k1DefaultShapesAmigaProvider = { ARRAYSIZE(k1DefaultShapesAmiga), k1DefaultShapesAmiga };
+
+static const byte k1AmuleteAnimSeqAmiga[42] = {
+ 0x00, 0x01, 0x02, 0x01, 0x03, 0x04, 0x03, 0x01,
+ 0x02, 0x03, 0x04, 0x05, 0x06, 0x05, 0x04, 0x05,
+ 0x07, 0x08, 0x07, 0x08, 0x09, 0x08, 0x09, 0x07,
+ 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
+ 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15,
+ 0x16, 0xFF
+};
+
+static const ByteProvider k1AmuleteAnimSeqAmigaProvider = { ARRAYSIZE(k1AmuleteAnimSeqAmiga), k1AmuleteAnimSeqAmiga };
+
+static const Shape k1Healing1ShapesAmiga[22] = {
+ { 8, 0, 0, 3, 48, -12, -48 },
+ { 8, 3, 0, 3, 48, -12, -48 },
+ { 8, 6, 0, 3, 48, -12, -48 },
+ { 8, 9, 0, 3, 48, -12, -48 },
+ { 8, 12, 0, 3, 48, -12, -48 },
+ { 8, 15, 0, 3, 48, -12, -48 },
+ { 8, 18, 0, 3, 48, -12, -48 },
+ { 8, 21, 0, 3, 48, -12, -48 },
+ { 8, 24, 0, 3, 48, -12, -48 },
+ { 8, 27, 0, 3, 48, -12, -48 },
+ { 8, 30, 0, 3, 48, -12, -48 },
+ { 8, 33, 0, 3, 48, -12, -48 },
+ { 8, 0, 48, 3, 48, -12, -48 },
+ { 8, 3, 48, 3, 48, -12, -48 },
+ { 8, 6, 48, 3, 48, -12, -48 },
+ { 8, 9, 48, 3, 48, -12, -48 },
+ { 8, 12, 48, 3, 48, -12, -48 },
+ { 8, 15, 48, 3, 48, -12, -48 },
+ { 8, 18, 48, 3, 48, -12, -48 },
+ { 8, 21, 48, 3, 48, -12, -48 },
+ { 8, 24, 48, 3, 48, -12, -48 },
+ { 8, 27, 48, 3, 48, -12, -48 }
+};
+
+static const ShapeProvider k1Healing1ShapesAmigaProvider = { ARRAYSIZE(k1Healing1ShapesAmiga), k1Healing1ShapesAmiga };
+
+static const Shape k1Healing2ShapesAmiga[30] = {
+ { 9, 0, 0, 3, 48, -11, -48 },
+ { 9, 3, 0, 3, 48, -11, -48 },
+ { 9, 6, 0, 3, 48, -11, -48 },
+ { 9, 9, 0, 3, 48, -11, -48 },
+ { 9, 12, 0, 3, 48, -11, -48 },
+ { 9, 15, 0, 3, 48, -11, -48 },
+ { 9, 18, 0, 3, 48, -11, -48 },
+ { 9, 21, 0, 3, 48, -11, -48 },
+ { 9, 24, 0, 3, 48, -11, -48 },
+ { 9, 27, 0, 3, 48, -11, -48 },
+ { 9, 30, 0, 3, 48, -11, -48 },
+ { 9, 33, 0, 3, 48, -11, -48 },
+ { 9, 0, 48, 3, 48, -11, -48 },
+ { 9, 3, 48, 3, 48, -11, -48 },
+ { 9, 6, 48, 3, 48, -11, -48 },
+ { 9, 9, 48, 3, 48, -11, -48 },
+ { 9, 12, 48, 3, 48, -11, -48 },
+ { 9, 15, 48, 3, 48, -11, -48 },
+ { 9, 18, 48, 3, 48, -11, -48 },
+ { 9, 21, 48, 3, 48, -11, -48 },
+ { 9, 24, 48, 3, 48, -11, -48 },
+ { 9, 27, 48, 3, 48, -11, -48 },
+ { 9, 30, 48, 3, 48, -11, -48 },
+ { 9, 33, 48, 3, 48, -11, -48 },
+ { 9, 0, 96, 3, 48, -11, -48 },
+ { 9, 3, 96, 3, 48, -11, -48 },
+ { 9, 6, 96, 3, 48, -11, -48 },
+ { 9, 9, 96, 3, 48, -11, -48 },
+ { 9, 12, 96, 3, 48, -11, -48 },
+ { 9, 15, 96, 3, 48, -11, -48 }
+};
+
+static const ShapeProvider k1Healing2ShapesAmigaProvider = { ARRAYSIZE(k1Healing2ShapesAmiga), k1Healing2ShapesAmiga };
+
+static const Shape k1PoisonDeathShapesAmiga[20] = {
+ { 19, 0, 0, 8, 48, -31, -48 },
+ { 19, 8, 0, 8, 48, -31, -48 },
+ { 19, 16, 0, 8, 48, -31, -48 },
+ { 19, 24, 0, 8, 48, -31, -48 },
+ { 19, 32, 0, 8, 48, -31, -48 },
+ { 19, 0, 48, 8, 48, -31, -48 },
+ { 19, 8, 48, 8, 48, -31, -48 },
+ { 19, 16, 48, 8, 48, -31, -48 },
+ { 19, 24, 48, 8, 48, -31, -48 },
+ { 19, 32, 48, 8, 48, -31, -48 },
+ { 19, 0, 96, 8, 48, -31, -48 },
+ { 19, 8, 96, 8, 48, -31, -48 },
+ { 19, 16, 96, 8, 48, -31, -48 },
+ { 19, 24, 96, 8, 48, -31, -48 },
+ { 19, 32, 96, 8, 48, -31, -48 },
+ { 19, 0, 144, 8, 48, -31, -48 },
+ { 19, 8, 144, 8, 48, -31, -48 },
+ { 19, 16, 144, 8, 48, -31, -48 },
+ { 19, 24, 144, 8, 48, -31, -48 },
+ { 19, 32, 144, 8, 48, -31, -48 }
+};
+
+static const ShapeProvider k1PoisonDeathShapesAmigaProvider = { ARRAYSIZE(k1PoisonDeathShapesAmiga), k1PoisonDeathShapesAmiga };
+
+static const Shape k1FluteShapesAmiga[36] = {
+ { 13, 0, 0, 3, 75, -12, -75 },
+ { 13, 3, 0, 3, 75, -12, -75 },
+ { 13, 6, 0, 3, 75, -12, -75 },
+ { 13, 9, 0, 3, 75, -12, -75 },
+ { 13, 12, 0, 3, 75, -12, -75 },
+ { 13, 15, 0, 3, 75, -12, -75 },
+ { 13, 18, 0, 3, 75, -12, -75 },
+ { 13, 21, 0, 3, 75, -12, -75 },
+ { 13, 24, 0, 3, 75, -12, -75 },
+ { 13, 27, 0, 3, 75, -12, -75 },
+ { 13, 30, 0, 3, 75, -12, -75 },
+ { 13, 33, 0, 3, 75, -12, -75 },
+ { 13, 36, 75, 3, 75, -12, -75 },
+ { 13, 0, 75, 3, 75, -12, -75 },
+ { 13, 3, 75, 3, 75, -12, -75 },
+ { 13, 6, 75, 3, 75, -12, -75 },
+ { 13, 9, 75, 3, 75, -12, -75 },
+ { 13, 12, 75, 3, 75, -12, -75 },
+ { 13, 15, 75, 3, 75, -12, -75 },
+ { 13, 18, 75, 3, 75, -12, -75 },
+ { 13, 21, 75, 3, 75, -12, -75 },
+ { 13, 24, 75, 3, 75, -12, -75 },
+ { 13, 27, 75, 3, 75, -12, -75 },
+ { 13, 30, 75, 3, 75, -12, -75 },
+ { 13, 33, 75, 3, 75, -12, -75 },
+ { 13, 36, 75, 3, 75, -12, -75 },
+ { 14, 0, 0, 3, 75, -12, -75 },
+ { 14, 3, 0, 3, 75, -12, -75 },
+ { 14, 6, 0, 3, 75, -12, -75 },
+ { 14, 9, 0, 3, 75, -12, -75 },
+ { 14, 12, 0, 3, 75, -12, -75 },
+ { 14, 15, 0, 3, 75, -12, -75 },
+ { 14, 18, 0, 3, 75, -12, -75 },
+ { 14, 21, 0, 3, 75, -12, -75 },
+ { 14, 24, 0, 3, 75, -12, -75 },
+ { 14, 27, 0, 3, 75, -12, -75 }
+};
+
+static const ShapeProvider k1FluteShapesAmigaProvider = { ARRAYSIZE(k1FluteShapesAmiga), k1FluteShapesAmiga };
+
+static const Shape k1Winter1ShapesAmiga[7] = {
+ { 10, 5, 0, 5, 66, -20, -65 },
+ { 10, 10, 0, 5, 66, -20, -65 },
+ { 10, 15, 0, 5, 66, -20, -65 },
+ { 10, 20, 0, 5, 66, -20, -65 },
+ { 10, 25, 0, 5, 66, -20, -65 },
+ { 10, 30, 0, 5, 66, -20, -65 },
+ { 10, 35, 0, 5, 66, -20, -65 }
+};
+
+static const ShapeProvider k1Winter1ShapesAmigaProvider = { ARRAYSIZE(k1Winter1ShapesAmiga), k1Winter1ShapesAmiga };
+
+static const Shape k1Winter2ShapesAmiga[35] = {
+ { 10, 0, 66, 5, 66, -20, -65 },
+ { 10, 5, 66, 5, 66, -20, -65 },
+ { 10, 10, 66, 5, 66, -20, -65 },
+ { 10, 15, 66, 5, 66, -20, -65 },
+ { 10, 20, 66, 5, 66, -20, -65 },
+ { 10, 25, 66, 5, 66, -20, -65 },
+ { 10, 30, 66, 5, 66, -20, -65 },
+ { 10, 35, 66, 5, 66, -20, -65 },
+ { 10, 0, 132, 5, 66, -20, -65 },
+ { 10, 5, 132, 5, 66, -20, -65 },
+ { 10, 10, 132, 5, 66, -20, -65 },
+ { 10, 15, 132, 5, 66, -20, -65 },
+ { 10, 20, 132, 5, 66, -20, -65 },
+ { 10, 25, 132, 5, 66, -20, -65 },
+ { 10, 30, 132, 5, 66, -20, -65 },
+ { 10, 35, 132, 5, 66, -20, -65 },
+ { 11, 0, 0, 5, 66, -20, -65 },
+ { 11, 5, 0, 5, 66, -20, -65 },
+ { 11, 10, 0, 5, 66, -20, -65 },
+ { 11, 15, 0, 5, 66, -20, -65 },
+ { 11, 20, 0, 5, 66, -20, -65 },
+ { 11, 25, 0, 5, 66, -20, -65 },
+ { 11, 30, 0, 5, 66, -20, -65 },
+ { 11, 35, 0, 5, 66, -20, -65 },
+ { 11, 0, 66, 5, 66, -20, -65 },
+ { 11, 5, 66, 5, 66, -20, -65 },
+ { 11, 10, 66, 5, 66, -20, -65 },
+ { 11, 15, 66, 5, 66, -20, -65 },
+ { 11, 20, 66, 5, 66, -20, -65 },
+ { 11, 25, 66, 5, 66, -20, -65 },
+ { 11, 30, 66, 5, 66, -20, -65 },
+ { 11, 35, 66, 5, 66, -20, -65 },
+ { 11, 0, 132, 5, 66, -20, -65 },
+ { 11, 5, 132, 5, 66, -20, -65 },
+ { 11, 10, 132, 5, 66, -20, -65 }
+};
+
+static const ShapeProvider k1Winter2ShapesAmigaProvider = { ARRAYSIZE(k1Winter2ShapesAmiga), k1Winter2ShapesAmiga };
+
+static const Shape k1Winter3ShapesAmiga[4] = {
+ { 11, 15, 132, 5, 66, -20, -65 },
+ { 11, 20, 132, 5, 66, -20, -65 },
+ { 11, 25, 132, 5, 66, -20, -65 },
+ { 11, 30, 132, 5, 66, -20, -65 }
+};
+
+static const ShapeProvider k1Winter3ShapesAmigaProvider = { ARRAYSIZE(k1Winter3ShapesAmiga), k1Winter3ShapesAmiga };
+
+static const Shape k1DrinkShapesAmiga[15] = {
+ { 6, 0, 0, 4, 48, -20, -48 },
+ { 6, 4, 0, 4, 48, -20, -48 },
+ { 6, 8, 0, 4, 48, -20, -48 },
+ { 6, 12, 0, 4, 48, -20, -48 },
+ { 6, 16, 0, 4, 48, -20, -48 },
+ { 6, 20, 0, 5, 48, -20, -48 },
+ { 6, 0, 48, 5, 54, -20, -54 },
+ { 6, 5, 48, 5, 54, -20, -54 },
+ { 6, 10, 48, 5, 54, -20, -54 },
+ { 7, 0, 0, 3, 43, -12, -43 },
+ { 7, 3, 3, 2, 40, -8, -40 },
+ { 7, 5, 7, 2, 36, -8, -36 },
+ { 7, 7, 10, 2, 33, -8, -33 },
+ { 7, 9, 12, 2, 31, -8, -31 },
+ { 7, 11, 15, 2, 28, -8, -28 }
+};
+
+static const ShapeProvider k1DrinkShapesAmigaProvider = { ARRAYSIZE(k1DrinkShapesAmiga), k1DrinkShapesAmiga };
+
+static const Shape k1WispShapesAmiga[26] = {
+ { 12, 0, 0, 5, 48, -20, -48 },
+ { 12, 5, 0, 5, 48, -20, -48 },
+ { 12, 10, 0, 5, 48, -20, -48 },
+ { 12, 15, 0, 5, 48, -20, -48 },
+ { 12, 20, 0, 5, 48, -20, -48 },
+ { 12, 25, 0, 5, 48, -20, -48 },
+ { 12, 30, 0, 5, 48, -20, -48 },
+ { 12, 35, 0, 5, 48, -20, -48 },
+ { 12, 0, 48, 5, 48, -20, -48 },
+ { 12, 5, 48, 5, 48, -20, -48 },
+ { 12, 10, 48, 5, 48, -20, -48 },
+ { 12, 15, 48, 5, 48, -20, -48 },
+ { 12, 20, 48, 5, 48, -20, -48 },
+ { 12, 25, 48, 5, 48, -20, -48 },
+ { 12, 30, 48, 5, 48, -20, -48 },
+ { 12, 35, 48, 5, 48, -20, -48 },
+ { 12, 0, 96, 5, 29, -20, -42 },
+ { 12, 5, 96, 5, 29, -20, -42 },
+ { 12, 10, 96, 5, 29, -20, -42 },
+ { 12, 15, 96, 5, 29, -20, -42 },
+ { 12, 20, 96, 5, 29, -20, -42 },
+ { 12, 25, 96, 5, 29, -20, -42 },
+ { 12, 30, 96, 5, 29, -20, -42 },
+ { 12, 35, 96, 5, 29, -20, -42 },
+ { 12, 0, 125, 5, 29, -20, -42 },
+ { 12, 5, 125, 5, 29, -20, -42 }
+};
+
+static const ShapeProvider k1WispShapesAmigaProvider = { ARRAYSIZE(k1WispShapesAmiga), k1WispShapesAmiga };
+
+static const Shape k1MagicAnimShapesAmiga[5] = {
+ { 17, 0, 0, 8, 49, -32, -49 },
+ { 17, 8, 0, 8, 49, -32, -49 },
+ { 17, 16, 0, 8, 49, -32, -49 },
+ { 17, 24, 0, 8, 49, -32, -49 },
+ { 17, 32, 0, 8, 49, -32, -49 }
+};
+
+static const ShapeProvider k1MagicAnimShapesAmigaProvider = { ARRAYSIZE(k1MagicAnimShapesAmiga), k1MagicAnimShapesAmiga };
+
+static const Shape k1BranStoneShapesAmiga[15] = {
+ { 18, 0, 0, 5, 51, -20, -50 },
+ { 18, 5, 0, 5, 51, -20, -50 },
+ { 18, 10, 0, 5, 51, -20, -50 },
+ { 18, 15, 0, 5, 51, -20, -50 },
+ { 18, 20, 0, 5, 51, -20, -50 },
+ { 18, 25, 0, 5, 51, -20, -50 },
+ { 18, 30, 0, 5, 51, -20, -50 },
+ { 18, 35, 0, 5, 51, -20, -50 },
+ { 18, 0, 51, 5, 51, -20, -50 },
+ { 18, 5, 51, 5, 51, -20, -50 },
+ { 18, 10, 51, 5, 51, -20, -50 },
+ { 18, 15, 51, 5, 51, -20, -50 },
+ { 18, 20, 51, 5, 51, -20, -50 },
+ { 18, 25, 51, 5, 51, -20, -50 },
+ { 0, 0, 3, 242, 0, 0, 3 }
+};
+
+static const ShapeProvider k1BranStoneShapesAmigaProvider = { ARRAYSIZE(k1BranStoneShapesAmiga), k1BranStoneShapesAmiga };
+
+static const byte k1OutroReunionSeqAmiga[1354] = {
+ 0x1A, 0x00, 0x08, 0x01, 0x06, 0x01, 0x00, 0x02,
+ 0x08, 0x00, 0x50, 0x00, 0x43, 0x07, 0x08, 0x00,
+ 0x14, 0x0A, 0x00, 0x03, 0x08, 0x07, 0x08, 0x00,
+ 0x0B, 0x00, 0x09, 0x00, 0x10, 0x20, 0x5A, 0x00,
+ 0x3A, 0x04, 0x02, 0x08, 0x0D, 0x50, 0x00, 0x43,
+ 0x07, 0x10, 0x00, 0x02, 0x08, 0x0E, 0x50, 0x00,
+ 0x43, 0x07, 0x10, 0x00, 0x02, 0x08, 0x0C, 0x50,
+ 0x00, 0x43, 0x07, 0x10, 0x00, 0x02, 0x08, 0x0B,
+ 0x50, 0x00, 0x43, 0x07, 0x10, 0x00, 0x02, 0x08,
+ 0x0C, 0x50, 0x00, 0x43, 0x07, 0x10, 0x00, 0x02,
+ 0x08, 0x0D, 0x50, 0x00, 0x43, 0x07, 0x10, 0x00,
+ 0x02, 0x08, 0x0E, 0x50, 0x00, 0x43, 0x07, 0x10,
+ 0x00, 0x0A, 0x01, 0x03, 0x08, 0x07, 0x08, 0x00,
+ 0x0B, 0x01, 0x04, 0x00, 0x10, 0x21, 0x5A, 0x00,
+ 0x3A, 0x04, 0x0A, 0x02, 0x02, 0x08, 0x14, 0x50,
+ 0x00, 0x43, 0x07, 0x08, 0x00, 0x03, 0x08, 0x07,
+ 0x08, 0x00, 0x03, 0x08, 0x07, 0x08, 0x00, 0x03,
+ 0x08, 0x07, 0x08, 0x00, 0x03, 0x08, 0x07, 0x08,
+ 0x00, 0x0B, 0x02, 0x01, 0x00, 0x03, 0x08, 0x07,
+ 0x08, 0x00, 0x03, 0x08, 0x07, 0x08, 0x00, 0x03,
+ 0x08, 0x07, 0x08, 0x00, 0x10, 0x22, 0x5A, 0x00,
+ 0x3A, 0x04, 0x0A, 0x03, 0x03, 0x08, 0x07, 0x08,
+ 0x00, 0x0B, 0x03, 0x0B, 0x00, 0x10, 0x23, 0x78,
+ 0x00, 0x3A, 0x1F, 0x0A, 0x03, 0x03, 0x08, 0x07,
+ 0x08, 0x00, 0x0B, 0x03, 0x05, 0x00, 0x06, 0x28,
+ 0x00, 0x02, 0x08, 0x2E, 0x50, 0x00, 0x43, 0x07,
+ 0x10, 0x00, 0x02, 0x08, 0x2D, 0x50, 0x00, 0x43,
+ 0x07, 0x10, 0x00, 0x02, 0x08, 0x2E, 0x50, 0x00,
+ 0x43, 0x07, 0x10, 0x00, 0x02, 0x08, 0x2D, 0x50,
+ 0x00, 0x43, 0x07, 0x10, 0x00, 0x02, 0x08, 0x2E,
+ 0x50, 0x00, 0x43, 0x07, 0x10, 0x00, 0x02, 0x08,
+ 0x2D, 0x50, 0x00, 0x43, 0x07, 0x10, 0x00, 0x02,
+ 0x08, 0x2F, 0x50, 0x00, 0x43, 0x07, 0x08, 0x00,
+ 0x02, 0x08, 0x30, 0x50, 0x00, 0x43, 0x07, 0x08,
+ 0x00, 0x02, 0x08, 0x31, 0x50, 0x00, 0x43, 0x07,
+ 0x08, 0x00, 0x02, 0x08, 0x32, 0x50, 0x00, 0x43,
+ 0x07, 0x08, 0x00, 0x06, 0x0A, 0x00, 0x10, 0x24,
+ 0x5A, 0x00, 0x3A, 0x04, 0x02, 0x08, 0x33, 0x50,
+ 0x00, 0x43, 0x07, 0x08, 0x00, 0x02, 0x08, 0x34,
+ 0x50, 0x00, 0x43, 0x07, 0x08, 0x00, 0x02, 0x08,
+ 0x35, 0x50, 0x00, 0x43, 0x07, 0x08, 0x00, 0x02,
+ 0x08, 0x36, 0x50, 0x00, 0x43, 0x07, 0x08, 0x00,
+ 0x02, 0x08, 0x37, 0x50, 0x00, 0x43, 0x07, 0x08,
+ 0x00, 0x02, 0x08, 0x35, 0x50, 0x00, 0x43, 0x07,
+ 0x08, 0x00, 0x02, 0x08, 0x34, 0x50, 0x00, 0x43,
+ 0x07, 0x08, 0x00, 0x02, 0x08, 0x33, 0x50, 0x00,
+ 0x43, 0x07, 0x08, 0x00, 0x02, 0x08, 0x35, 0x50,
+ 0x00, 0x43, 0x07, 0x08, 0x00, 0x02, 0x08, 0x36,
+ 0x50, 0x00, 0x43, 0x07, 0x08, 0x00, 0x02, 0x08,
+ 0x37, 0x50, 0x00, 0x43, 0x07, 0x08, 0x00, 0x06,
+ 0x0A, 0x00, 0x10, 0x25, 0x5A, 0x00, 0x3A, 0x04,
+ 0x02, 0x08, 0x33, 0x50, 0x00, 0x43, 0x07, 0x08,
+ 0x00, 0x02, 0x08, 0x34, 0x50, 0x00, 0x43, 0x07,
+ 0x08, 0x00, 0x02, 0x08, 0x35, 0x50, 0x00, 0x43,
+ 0x07, 0x08, 0x00, 0x02, 0x08, 0x36, 0x50, 0x00,
+ 0x43, 0x07, 0x08, 0x00, 0x02, 0x08, 0x37, 0x50,
+ 0x00, 0x43, 0x07, 0x08, 0x00, 0x02, 0x08, 0x35,
+ 0x50, 0x00, 0x43, 0x07, 0x08, 0x00, 0x02, 0x08,
+ 0x34, 0x50, 0x00, 0x43, 0x07, 0x08, 0x00, 0x02,
+ 0x08, 0x33, 0x50, 0x00, 0x43, 0x07, 0x08, 0x00,
+ 0x02, 0x08, 0x35, 0x50, 0x00, 0x43, 0x07, 0x08,
+ 0x00, 0x02, 0x08, 0x36, 0x50, 0x00, 0x43, 0x07,
+ 0x08, 0x00, 0x02, 0x08, 0x37, 0x50, 0x00, 0x43,
+ 0x07, 0x08, 0x00, 0x06, 0x1E, 0x00, 0x10, 0x26,
+ 0x78, 0x00, 0x3A, 0x1F, 0x02, 0x08, 0x38, 0x50,
+ 0x00, 0x43, 0x07, 0x08, 0x00, 0x02, 0x08, 0x39,
+ 0x50, 0x00, 0x43, 0x07, 0x08, 0x00, 0x02, 0x08,
+ 0x3A, 0x50, 0x00, 0x43, 0x07, 0x08, 0x00, 0x02,
+ 0x08, 0x38, 0x50, 0x00, 0x43, 0x07, 0x08, 0x00,
+ 0x02, 0x08, 0x3B, 0x50, 0x00, 0x43, 0x07, 0x08,
+ 0x00, 0x06, 0x0A, 0x00, 0x02, 0x08, 0x39, 0x50,
+ 0x00, 0x43, 0x07, 0x08, 0x00, 0x02, 0x08, 0x38,
+ 0x50, 0x00, 0x43, 0x07, 0x08, 0x00, 0x02, 0x08,
+ 0x39, 0x50, 0x00, 0x43, 0x07, 0x08, 0x00, 0x02,
+ 0x08, 0x3A, 0x50, 0x00, 0x43, 0x07, 0x08, 0x00,
+ 0x06, 0x3C, 0x00, 0x11, 0x02, 0x08, 0x33, 0x50,
+ 0x00, 0x43, 0x07, 0x08, 0x00, 0x02, 0x08, 0x32,
+ 0x50, 0x00, 0x43, 0x07, 0x08, 0x00, 0x02, 0x08,
+ 0x31, 0x50, 0x00, 0x43, 0x07, 0x08, 0x00, 0x02,
+ 0x08, 0x30, 0x50, 0x00, 0x43, 0x07, 0x08, 0x00,
+ 0x02, 0x08, 0x2F, 0x50, 0x00, 0x43, 0x07, 0x08,
+ 0x00, 0x02, 0x08, 0x2E, 0x50, 0x00, 0x43, 0x07,
+ 0x08, 0x00, 0x02, 0x08, 0x2D, 0x50, 0x00, 0x43,
+ 0x07, 0x08, 0x00, 0x06, 0x1E, 0x00, 0x02, 0x08,
+ 0x2E, 0x50, 0x00, 0x43, 0x07, 0x08, 0x00, 0x02,
+ 0x08, 0x2F, 0x50, 0x00, 0x43, 0x07, 0x08, 0x00,
+ 0x02, 0x08, 0x30, 0x50, 0x00, 0x43, 0x07, 0x08,
+ 0x00, 0x02, 0x08, 0x31, 0x50, 0x00, 0x43, 0x07,
+ 0x08, 0x00, 0x02, 0x08, 0x32, 0x50, 0x00, 0x43,
+ 0x07, 0x08, 0x00, 0x02, 0x08, 0x33, 0x50, 0x00,
+ 0x43, 0x07, 0x08, 0x00, 0x02, 0x08, 0x41, 0x50,
+ 0x00, 0x43, 0x07, 0x08, 0x00, 0x02, 0x08, 0x42,
+ 0x50, 0x00, 0x43, 0x07, 0x08, 0x00, 0x02, 0x08,
+ 0x43, 0x50, 0x00, 0x43, 0x07, 0x08, 0x00, 0x02,
+ 0x08, 0x44, 0x50, 0x00, 0x43, 0x07, 0x08, 0x00,
+ 0x02, 0x08, 0x45, 0x50, 0x00, 0x43, 0x07, 0x08,
+ 0x00, 0x02, 0x08, 0x46, 0x50, 0x00, 0x43, 0x07,
+ 0x08, 0x00, 0x06, 0x0A, 0x00, 0x10, 0x27, 0x5A,
+ 0x00, 0x3A, 0x04, 0x02, 0x08, 0x4E, 0x50, 0x00,
+ 0x43, 0x07, 0x08, 0x00, 0x02, 0x08, 0x4F, 0x50,
+ 0x00, 0x43, 0x07, 0x08, 0x00, 0x02, 0x08, 0x50,
+ 0x50, 0x00, 0x43, 0x07, 0x08, 0x00, 0x02, 0x08,
+ 0x51, 0x50, 0x00, 0x43, 0x07, 0x08, 0x00, 0x02,
+ 0x08, 0x52, 0x50, 0x00, 0x43, 0x07, 0x08, 0x00,
+ 0x02, 0x08, 0x53, 0x50, 0x00, 0x43, 0x07, 0x08,
+ 0x00, 0x02, 0x08, 0x54, 0x50, 0x00, 0x43, 0x07,
+ 0x08, 0x00, 0x02, 0x08, 0x55, 0x50, 0x00, 0x43,
+ 0x07, 0x08, 0x00, 0x06, 0x78, 0x00, 0x10, 0x28,
+ 0x78, 0x00, 0x3A, 0x1F, 0x0A, 0x05, 0x02, 0x08,
+ 0x59, 0x50, 0x00, 0x43, 0x07, 0x08, 0x00, 0x02,
+ 0x08, 0x5A, 0x50, 0x00, 0x43, 0x07, 0x08, 0x00,
+ 0x02, 0x08, 0x5B, 0x50, 0x00, 0x43, 0x07, 0x08,
+ 0x00, 0x02, 0x08, 0x5C, 0x50, 0x00, 0x43, 0x07,
+ 0x08, 0x00, 0x02, 0x08, 0x5D, 0x50, 0x00, 0x43,
+ 0x07, 0x08, 0x00, 0x0B, 0x05, 0x01, 0x00, 0x06,
+ 0x28, 0x00, 0x10, 0x29, 0x78, 0x00, 0x3A, 0x1F,
+ 0x0A, 0x06, 0x02, 0x08, 0x59, 0x50, 0x00, 0x43,
+ 0x07, 0x08, 0x00, 0x02, 0x08, 0x5A, 0x50, 0x00,
+ 0x43, 0x07, 0x08, 0x00, 0x02, 0x08, 0x5B, 0x50,
+ 0x00, 0x43, 0x07, 0x08, 0x00, 0x02, 0x08, 0x5C,
+ 0x50, 0x00, 0x43, 0x07, 0x08, 0x00, 0x02, 0x08,
+ 0x5D, 0x50, 0x00, 0x43, 0x07, 0x08, 0x00, 0x0B,
+ 0x06, 0x01, 0x00, 0x06, 0x28, 0x00, 0x10, 0x2A,
+ 0x78, 0x00, 0x3A, 0x1F, 0x02, 0x08, 0x5E, 0x50,
+ 0x00, 0x43, 0x07, 0x10, 0x00, 0x02, 0x08, 0x63,
+ 0x50, 0x00, 0x43, 0x07, 0x10, 0x00, 0x06, 0xB4,
+ 0x00, 0x11, 0x00, 0x09, 0x01, 0x18, 0x69, 0x02,
+ 0x09, 0x00, 0x50, 0x00, 0x22, 0x07, 0x10, 0x00,
+ 0x02, 0x09, 0x01, 0x50, 0x00, 0x22, 0x07, 0x10,
+ 0x00, 0x18, 0x74, 0x02, 0x09, 0x02, 0x50, 0x00,
+ 0x22, 0x07, 0x10, 0x00, 0x02, 0x09, 0x03, 0x50,
+ 0x00, 0x22, 0x07, 0x10, 0x00, 0x18, 0x75, 0x02,
+ 0x09, 0x04, 0x50, 0x00, 0x22, 0x07, 0x10, 0x00,
+ 0x02, 0x09, 0x05, 0x50, 0x00, 0x22, 0x07, 0x10,
+ 0x00, 0x10, 0x2B, 0x96, 0x00, 0x23, 0x22, 0x0A,
+ 0x06, 0x02, 0x09, 0x07, 0x50, 0x00, 0x22, 0x07,
+ 0x10, 0x00, 0x02, 0x09, 0x08, 0x50, 0x00, 0x22,
+ 0x07, 0x10, 0x00, 0x02, 0x09, 0x09, 0x50, 0x00,
+ 0x22, 0x07, 0x10, 0x00, 0x02, 0x09, 0x0A, 0x50,
+ 0x00, 0x22, 0x07, 0x10, 0x00, 0x02, 0x09, 0x0B,
+ 0x50, 0x00, 0x22, 0x07, 0x10, 0x00, 0x02, 0x09,
+ 0x0C, 0x50, 0x00, 0x22, 0x07, 0x10, 0x00, 0x02,
+ 0x09, 0x0D, 0x50, 0x00, 0x22, 0x07, 0x10, 0x00,
+ 0x0B, 0x06, 0x01, 0x00, 0x06, 0x1E, 0x00, 0x10,
+ 0x2C, 0x96, 0x00, 0x23, 0x22, 0x0A, 0x06, 0x02,
+ 0x09, 0x07, 0x50, 0x00, 0x22, 0x07, 0x10, 0x00,
+ 0x02, 0x09, 0x08, 0x50, 0x00, 0x22, 0x07, 0x10,
+ 0x00, 0x02, 0x09, 0x09, 0x50, 0x00, 0x22, 0x07,
+ 0x10, 0x00, 0x02, 0x09, 0x0A, 0x50, 0x00, 0x22,
+ 0x07, 0x10, 0x00, 0x02, 0x09, 0x0B, 0x50, 0x00,
+ 0x22, 0x07, 0x10, 0x00, 0x02, 0x09, 0x0C, 0x50,
+ 0x00, 0x22, 0x07, 0x10, 0x00, 0x02, 0x09, 0x0D,
+ 0x50, 0x00, 0x22, 0x07, 0x10, 0x00, 0x0B, 0x06,
+ 0x01, 0x00, 0x06, 0x1E, 0x00, 0x10, 0x2D, 0x96,
+ 0x00, 0x23, 0x22, 0x0A, 0x06, 0x02, 0x09, 0x07,
+ 0x50, 0x00, 0x22, 0x07, 0x10, 0x00, 0x02, 0x09,
+ 0x08, 0x50, 0x00, 0x22, 0x07, 0x10, 0x00, 0x02,
+ 0x09, 0x09, 0x50, 0x00, 0x22, 0x07, 0x10, 0x00,
+ 0x02, 0x09, 0x0A, 0x50, 0x00, 0x22, 0x07, 0x10,
+ 0x00, 0x02, 0x09, 0x0B, 0x50, 0x00, 0x22, 0x07,
+ 0x10, 0x00, 0x02, 0x09, 0x0C, 0x50, 0x00, 0x22,
+ 0x07, 0x10, 0x00, 0x02, 0x09, 0x0D, 0x50, 0x00,
+ 0x22, 0x07, 0x10, 0x00, 0x0B, 0x06, 0x01, 0x00,
+ 0x06, 0x1E, 0x00, 0x02, 0x09, 0x0E, 0x50, 0x00,
+ 0x22, 0x07, 0x10, 0x00, 0x02, 0x09, 0x0F, 0x50,
+ 0x00, 0x22, 0x07, 0x10, 0x00, 0x06, 0x14, 0x00,
+ 0x02, 0x09, 0x10, 0x50, 0x00, 0x22, 0x07, 0x10,
+ 0x00, 0x02, 0x09, 0x11, 0x50, 0x00, 0x22, 0x07,
+ 0x10, 0x00, 0x06, 0x78, 0x00, 0x13, 0x01, 0x08,
+ 0x1D, 0x00
+};
+
+static const ByteProvider k1OutroReunionSeqAmigaProvider = { ARRAYSIZE(k1OutroReunionSeqAmiga), k1OutroReunionSeqAmiga };
+
+static const AmigaSfxTable k1AmigaIntroSFXTableAmiga[40] = {
+ { 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0 },
+ { 60, 25, 9516, 110, 0 },
+ { 60, 25, 9516, 110, 0 },
+ { 60, 25, 9516, 110, 0 },
+ { 60, 19, 7057, 110, 0 },
+ { 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0 },
+ { 60, 22, 9847, 110, 0 },
+ { 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0 },
+ { 60, 23, 4504, 110, 0 },
+ { 60, 25, 9516, 110, 0 },
+ { 60, 24, 8913, 110, 0 },
+ { 60, 25, 9516, 110, 0 },
+ { 69, 3, 548, 110, 0 },
+ { 60, 22, 9847, 110, 0 },
+ { 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0 }
+};
+
+static const AmigaSfxTableProvider k1AmigaIntroSFXTableAmigaProvider = { ARRAYSIZE(k1AmigaIntroSFXTableAmiga), k1AmigaIntroSFXTableAmiga };
+
+static const AmigaSfxTable k1AmigaGameSFXTableAmiga[120] = {
+ { 0, 0, 0, 0, 0 },
+ { 1, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0 },
+ { 60, 19, 342, 120, 2 },
+ { 60, 20, 10028, 120, 2 },
+ { 60, 21, 7057, 120, 2 },
+ { 60, 22, 7831, 120, 2 },
+ { 60, 23, 4651, 120, 2 },
+ { 60, 22, 7831, 120, 2 },
+ { 69, 3, 548, 120, 2 },
+ { 60, 22, 7831, 120, 2 },
+ { 0, 0, 0, 0, 0 },
+ { 60, 25, 9516, 120, 2 },
+ { 44, 4, 2320, 120, 2 },
+ { 60, 25, 9516, 120, 2 },
+ { 60, 26, 15083, 120, 2 },
+ { 37, 27, 5003, 120, 2 },
+ { 24, 3, 3922, 120, 2 },
+ { 62, 28, 1570, 120, 2 },
+ { 59, 28, 1876, 120, 2 },
+ { 22, 3, 8303, 120, 2 },
+ { 60, 25, 9516, 120, 2 },
+ { 60, 29, 2538, 120, 2 },
+ { 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0 },
+ { 60, 20, 10028, 120, 2 },
+ { 60, 30, 878, 120, 2 },
+ { 60, 23, 4651, 120, 2 },
+ { 78, 11, 2449, 120, 2 },
+ { 71, 27, 700, 120, 2 },
+ { 76, 27, 529, 120, 2 },
+ { 0, 0, 0, 0, 0 },
+ { 60, 19, 342, 120, 2 },
+ { 60, 19, 342, 120, 2 },
+ { 60, 31, 3742, 120, 2 },
+ { 60, 32, 268, 120, 2 },
+ { 0, 0, 0, 0, 0 },
+ { 60, 25, 9516, 120, 2 },
+ { 60, 33, 3964, 120, 2 },
+ { 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0 },
+ { 42, 11, 19527, 120, 2 },
+ { 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0 },
+ { 60, 27, 1320, 120, 2 },
+ { 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0 },
+ { 44, 4, 2320, 120, 2 },
+ { 0, 0, 0, 0, 0 },
+ { 60, 34, 2798, 120, 2 },
+ { 60, 22, 7831, 120, 2 },
+ { 60, 21, 7057, 120, 2 },
+ { 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0 },
+ { 60, 20, 10028, 120, 2 },
+ { 0, 0, 0, 0, 0 },
+ { 60, 34, 2798, 120, 2 },
+ { 60, 20, 10028, 120, 2 },
+ { 50, 35, 5145, 156, 2 },
+ { 60, 25, 5916, 120, 2 },
+ { 60, 20, 10028, 120, 2 },
+ { 62, 28, 1570, 120, 2 },
+ { 67, 19, 513, 120, 2 },
+ { 60, 36, 4675, 90, 2 },
+ { 62, 32, 238, 120, 2 },
+ { 60, 25, 9516, 120, 2 },
+ { 41, 4, 6634, 120, 2 },
+ { 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0 },
+ { 60, 32, 268, 120, 2 },
+ { 60, 37, 12470, 120, 2 },
+ { 60, 25, 9516, 120, 2 },
+ { 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0 },
+ { 60, 22, 7831, 120, 2 },
+ { 0, 0, 0, 0, 0 },
+ { 60, 26, 15083, 120, 2 },
+ { 27, 4, 14835, 120, 2 },
+ { 48, 35, 5785, 80, 2 },
+ { 60, 21, 7057, 120, 2 },
+ { 41, 6, 6634, 80, 2 },
+ { 60, 25, 9516, 120, 2 },
+ { 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0 },
+ { 60, 26, 15083, 120, 2 },
+ { 60, 25, 9516, 120, 2 },
+ { 60, 38, 1811, 120, 2 },
+ { 60, 38, 1811, 120, 2 },
+ { 60, 20, 10028, 120, 2 },
+ { 48, 35, 5785, 80, 2 },
+ { 48, 35, 5785, 80, 2 },
+ { 0, 0, 0, 0, 0 },
+ { 60, 19, 342, 120, 2 }
+};
+
+static const AmigaSfxTableProvider k1AmigaGameSFXTableAmigaProvider = { ARRAYSIZE(k1AmigaGameSFXTableAmiga), k1AmigaGameSFXTableAmiga };
+
diff --git a/devtools/create_kyradat/resources/lok_amiga_english.h b/devtools/create_kyradat/resources/lok_amiga_english.h
new file mode 100644
index 0000000000..c157f4a0b0
--- /dev/null
+++ b/devtools/create_kyradat/resources/lok_amiga_english.h
@@ -0,0 +1,497 @@
+static const char *const k1IntroStringsAmigaEnglish[51] = {
+ "This is a text test - 1",
+ "This is a text test - 2",
+ "Greetings, Kallak...",
+ "...Powerful leader of the Royal Mystics!",
+ "Did I frighten you?",
+ "Malcolm!",
+ "I heard yesterday of your escape.",
+ "And have expected you before now.",
+ "Why would I rush?",
+ "I rule this land!",
+ "Your puny curse restrains me naught.",
+ "So, slay me now!",
+ "I have little magic left.",
+ "I mean to harm you, have no doubt...",
+ "...Now you are stone...",
+ "...Yet I leave your eyes.",
+ "I shed no tears for Kyrandia...",
+ "...But cannot deny you yours.",
+ "Malcolm the Jester has broken free!",
+ "He now controls the Kyragem...",
+ "...source of all magic in Kyrandia!",
+ "",
+ "How dare you trip ME!",
+ "But no, something special for you...",
+ "A humorous hex!",
+ "But I shall give fair warning.",
+ "Don't jump on THAT tree!",
+ "Don't climb up THAT tree little squirrel!",
+ "Boo!",
+ "Tis funnier that way...",
+ "...Is it not?",
+ "Ha ha ha...",
+ "Aren't fingers wonderful?",
+ "It's great to be alive!",
+ "Brandon!",
+ "Grandfather! We did it!",
+ "No! YOU did it!",
+ "Long live King Brandon!",
+ "Long live the Royal Mystics!",
+ "Now, let's go put Kyrandia back together!",
+ "Good idea!",
+ "As my first Royal Proclamation...",
+ "I name sandals as the official footwear of Kyrandia!",
+ "Well done, Brandon!",
+ "The Land no longer weeps...",
+ "And your friends have been restored!",
+ "Dear Brynn...",
+ "Malcolm has broken free!",
+ "Soon he will come for me.",
+ "Please help Brandon...",
+ ""
+};
+
+static const StringListProvider k1IntroStringsAmigaEnglishProvider = { ARRAYSIZE(k1IntroStringsAmigaEnglish), k1IntroStringsAmigaEnglish };
+
+static const char *const k1ItemNamesAmigaEnglish[82] = {
+ "Garnet",
+ "Amethyst",
+ "Aquamarine",
+ "Diamond",
+ "Emerald",
+ "Pearl",
+ "Ruby",
+ "Peridot",
+ "Sapphire",
+ "Opal",
+ "Topaz",
+ "Onyx",
+ "Sunstone",
+ "Moonstone",
+ "Rainbowstone",
+ "Lodestone",
+ "Rose",
+ "Tulip",
+ "Orchid",
+ "Silver Rose",
+ "Silver Statuette",
+ "Silver Coin",
+ "Gold Coin",
+ "Gold Ring",
+ "Royal Chalice",
+ "Pinecone",
+ "Acorn",
+ "Walnut",
+ "Everglowing Fireberries",
+ "Fireberries",
+ "Fish",
+ "Fish Bone",
+ "Mutton Leg",
+ "Bone",
+ "Apple",
+ "Apple Core",
+ "Blueberries",
+ "Mushroom",
+ "Note",
+ "Marble",
+ "Saw",
+ "Ankh",
+ "Feather",
+ "Egg",
+ "Leaf",
+ "Shamrock",
+ "Fallen Star",
+ "Crystal Ball",
+ "Teardrop",
+ "Mirror",
+ "Ice Shard",
+ "Flute",
+ "Hourglass",
+ "Iron Key",
+ "Jade Key",
+ "Obsidion Key",
+ "Red Potion",
+ "Blue Potion",
+ "Yellow Potion",
+ "Green Potion",
+ "Orange Potion",
+ "Purple Potion",
+ "Potion of Rainbows",
+ "Fresh Water",
+ "Salt Water",
+ "Mineral Water",
+ "Magical Water",
+ "Empty Flask",
+ "Scroll",
+ "Parchment scrap",
+ "Red Magestone",
+ "Orange Magestone",
+ "Yellow Magestone",
+ "Green Magestone",
+ "Blue-Green Magestone",
+ "Blue Magestone",
+ "Purple Magestone",
+ "Heavy rock",
+ "Royal Crown",
+ "Royal Sceptre",
+ "Gold key",
+ "Unknown item"
+};
+
+static const StringListProvider k1ItemNamesAmigaEnglishProvider = { ARRAYSIZE(k1ItemNamesAmigaEnglish), k1ItemNamesAmigaEnglish };
+
+static const char *const k1TakenStringsAmigaEnglish[1] = {
+ " taken."
+};
+
+static const StringListProvider k1TakenStringsAmigaEnglishProvider = { ARRAYSIZE(k1TakenStringsAmigaEnglish), k1TakenStringsAmigaEnglish };
+
+static const char *const k1PlacedStringsAmigaEnglish[1] = {
+ " placed."
+};
+
+static const StringListProvider k1PlacedStringsAmigaEnglishProvider = { ARRAYSIZE(k1PlacedStringsAmigaEnglish), k1PlacedStringsAmigaEnglish };
+
+static const char *const k1DroppedStringsAmigaEnglish[1] = {
+ " dropped."
+};
+
+static const StringListProvider k1DroppedStringsAmigaEnglishProvider = { ARRAYSIZE(k1DroppedStringsAmigaEnglish), k1DroppedStringsAmigaEnglish };
+
+static const char *const k1NoDropStringsAmigaEnglish[2] = {
+ "You can't drop any more items in this scene.",
+ "You can't put that there."
+};
+
+static const StringListProvider k1NoDropStringsAmigaEnglishProvider = { ARRAYSIZE(k1NoDropStringsAmigaEnglish), k1NoDropStringsAmigaEnglish };
+
+static const char *const k1PutDownStringAmigaEnglish[1] = {
+ "Maybe I'd better put this down first."
+};
+
+static const StringListProvider k1PutDownStringAmigaEnglishProvider = { ARRAYSIZE(k1PutDownStringAmigaEnglish), k1PutDownStringAmigaEnglish };
+
+static const char *const k1WaitAmuletStringAmigaEnglish[1] = {
+ "I guess I'll have to wait for my Amulet to regain its power."
+};
+
+static const StringListProvider k1WaitAmuletStringAmigaEnglishProvider = { ARRAYSIZE(k1WaitAmuletStringAmigaEnglish), k1WaitAmuletStringAmigaEnglish };
+
+static const char *const k1BlackJewelStringAmigaEnglish[1] = {
+ "It's a jewel, but why is it black?"
+};
+
+static const StringListProvider k1BlackJewelStringAmigaEnglishProvider = { ARRAYSIZE(k1BlackJewelStringAmigaEnglish), k1BlackJewelStringAmigaEnglish };
+
+static const char *const k1HealingTipStringAmigaEnglish[1] = {
+ "Gee, this could come in handy if I get hurt."
+};
+
+static const StringListProvider k1HealingTipStringAmigaEnglishProvider = { ARRAYSIZE(k1HealingTipStringAmigaEnglish), k1HealingTipStringAmigaEnglish };
+
+static const char *const k1PoisonGoneStringAmigaEnglish[2] = {
+ "Amazing!",
+ "The effects of the poison are gone!"
+};
+
+static const StringListProvider k1PoisonGoneStringAmigaEnglishProvider = { ARRAYSIZE(k1PoisonGoneStringAmigaEnglish), k1PoisonGoneStringAmigaEnglish };
+
+static const char *const k1ThePoisonStringsAmigaEnglish[4] = {
+ "The poison...",
+ "I can't breathe...",
+ "I don't feel so good...",
+ "That snake must\rbe poisonous!"
+};
+
+static const StringListProvider k1ThePoisonStringsAmigaEnglishProvider = { ARRAYSIZE(k1ThePoisonStringsAmigaEnglish), k1ThePoisonStringsAmigaEnglish };
+
+static const char *const k1FluteStringsAmigaEnglish[2] = {
+ "Not very impressive sounding.",
+ "That last note sure was high!"
+};
+
+static const StringListProvider k1FluteStringsAmigaEnglishProvider = { ARRAYSIZE(k1FluteStringsAmigaEnglish), k1FluteStringsAmigaEnglish };
+
+static const char *const k1WispJewelStringsAmigaEnglish[3] = {
+ "I'm not really feeling up to it right now.",
+ "I probably should put down my ",
+ ", first."
+};
+
+static const StringListProvider k1WispJewelStringsAmigaEnglishProvider = { ARRAYSIZE(k1WispJewelStringsAmigaEnglish), k1WispJewelStringsAmigaEnglish };
+
+static const char *const k1MagicJewelStringsAmigaEnglish[1] = {
+ "That felt strange."
+};
+
+static const StringListProvider k1MagicJewelStringsAmigaEnglishProvider = { ARRAYSIZE(k1MagicJewelStringsAmigaEnglish), k1MagicJewelStringsAmigaEnglish };
+
+static const char *const k1FlaskFullStringAmigaEnglish[1] = {
+ "This flask is already full."
+};
+
+static const StringListProvider k1FlaskFullStringAmigaEnglishProvider = { ARRAYSIZE(k1FlaskFullStringAmigaEnglish), k1FlaskFullStringAmigaEnglish };
+
+static const char *const k1FullFlaskStringAmigaEnglish[4] = {
+ "The flask is now filled\rwith fresh, sparkling water.",
+ "The flask is now filled\rwith salt water.",
+ "The flask is now filled\rwith mineral water.",
+ "Magic water."
+};
+
+static const StringListProvider k1FullFlaskStringAmigaEnglishProvider = { ARRAYSIZE(k1FullFlaskStringAmigaEnglish), k1FullFlaskStringAmigaEnglish };
+
+static const char *const k1OutroHomeStringAmigaEnglish[1] = {
+ "Home"
+};
+
+static const StringListProvider k1OutroHomeStringAmigaEnglishProvider = { ARRAYSIZE(k1OutroHomeStringAmigaEnglish), k1OutroHomeStringAmigaEnglish };
+
+static const char *const k1VeryCleverStringAmigaEnglish[1] = {
+ "Very clever! But your feeble efforts are futile."
+};
+
+static const StringListProvider k1VeryCleverStringAmigaEnglishProvider = { ARRAYSIZE(k1VeryCleverStringAmigaEnglish), k1VeryCleverStringAmigaEnglish };
+
+static const char *const k1GUIStringsAmigaEnglish[60] = {
+ "The Legend of Kyrandia",
+ "Load a game",
+ "Save this game",
+ "Game controls",
+ "Quit playing",
+ "Resume game",
+ "Game Controls",
+ "Which game would you like to reload?",
+ "Select a position to save to:",
+ "[ EMPTY SLOT ]",
+ "Cancel",
+ "Enter a description of your saved game:",
+ "Save",
+ "Rest in peace, Brandon.",
+ "Are you sure you want to quit playing?",
+ "XXX",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "XXX",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "XXXXXXX",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "XXXXXXXXX",
+ "",
+ "",
+ "",
+ "",
+ "Main menu",
+ "on",
+ "off",
+ "Yes",
+ "No",
+ "",
+ "\x01""Y""\xD6",
+ "\x01""Y""\xDE",
+ "\x01""Y""\xE4",
+ "\x01""Y""\xEC",
+ "\x01""Y""\xF2",
+ "\x01""Y""\xD6",
+ "\x01""Y""\xE4",
+ "\x01""Y""\xEC",
+ "\x01""Y""\xFA""Walk speed ",
+ "Text speed ",
+ "Music is ",
+ "Sounds are "
+};
+
+static const StringListProvider k1GUIStringsAmigaEnglishProvider = { ARRAYSIZE(k1GUIStringsAmigaEnglish), k1GUIStringsAmigaEnglish };
+
+static const char *const k1NewGameStringAmigaEnglish[1] = {
+ "[ START A NEW GAME ]"
+};
+
+static const StringListProvider k1NewGameStringAmigaEnglishProvider = { ARRAYSIZE(k1NewGameStringAmigaEnglish), k1NewGameStringAmigaEnglish };
+
+static const char *const k1ConfigStringsAmigaEnglish[6] = {
+ "slowest",
+ "slow",
+ "normal",
+ "fast",
+ "fastest",
+ "clickable"
+};
+
+static const StringListProvider k1ConfigStringsAmigaEnglishProvider = { ARRAYSIZE(k1ConfigStringsAmigaEnglish), k1ConfigStringsAmigaEnglish };
+
+static const byte k1CreditsStringsAmigaEnglish[1228] = {
+ 0x05, 0x46, 0x61, 0x62, 0x6C, 0x65, 0x73, 0x20,
+ 0x26, 0x20, 0x46, 0x69, 0x65, 0x6E, 0x64, 0x73,
+ 0x0D, 0x05, 0x42, 0x6F, 0x6F, 0x6B, 0x20, 0x49,
+ 0x0D, 0x05, 0x54, 0x48, 0x45, 0x20, 0x4C, 0x45,
+ 0x47, 0x45, 0x4E, 0x44, 0x20, 0x4F, 0x46, 0x20,
+ 0x4B, 0x59, 0x52, 0x41, 0x4E, 0x44, 0x49, 0x41,
+ 0x0D, 0x0D, 0x05, 0x50, 0x75, 0x62, 0x6C, 0x69,
+ 0x73, 0x68, 0x65, 0x64, 0x20, 0x62, 0x79, 0x0D,
+ 0x05, 0x57, 0x65, 0x73, 0x74, 0x77, 0x6F, 0x6F,
+ 0x64, 0x20, 0x53, 0x74, 0x75, 0x64, 0x69, 0x6F,
+ 0x73, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x03, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74,
+ 0x6F, 0x72, 0x3A, 0x04, 0x42, 0x72, 0x65, 0x74,
+ 0x74, 0x20, 0x57, 0x2E, 0x20, 0x53, 0x70, 0x65,
+ 0x72, 0x72, 0x79, 0x0D, 0x0D, 0x03, 0x44, 0x65,
+ 0x73, 0x69, 0x67, 0x6E, 0x3A, 0x04, 0x4D, 0x69,
+ 0x63, 0x68, 0x61, 0x65, 0x6C, 0x20, 0x4C, 0x65,
+ 0x67, 0x67, 0x0D, 0x04, 0x52, 0x69, 0x63, 0x6B,
+ 0x20, 0x50, 0x61, 0x72, 0x6B, 0x73, 0x0D, 0x04,
+ 0x50, 0x61, 0x75, 0x6C, 0x20, 0x53, 0x2E, 0x20,
+ 0x4D, 0x75, 0x64, 0x72, 0x61, 0x0D, 0x0D, 0x03,
+ 0x4C, 0x65, 0x61, 0x64, 0x20, 0x50, 0x72, 0x6F,
+ 0x67, 0x72, 0x61, 0x6D, 0x6D, 0x65, 0x72, 0x3A,
+ 0x04, 0x4D, 0x69, 0x63, 0x68, 0x61, 0x65, 0x6C,
+ 0x20, 0x4C, 0x65, 0x67, 0x67, 0x0D, 0x0D, 0x03,
+ 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x20, 0x50,
+ 0x72, 0x6F, 0x67, 0x72, 0x61, 0x6D, 0x6D, 0x65,
+ 0x72, 0x3A, 0x04, 0x53, 0x63, 0x6F, 0x74, 0x74,
+ 0x20, 0x42, 0x6F, 0x77, 0x65, 0x6E, 0x0D, 0x0D,
+ 0x03, 0x41, 0x6D, 0x69, 0x67, 0x61, 0x20, 0x50,
+ 0x72, 0x6F, 0x67, 0x72, 0x61, 0x6D, 0x6D, 0x65,
+ 0x72, 0x3A, 0x04, 0x42, 0x69, 0x6C, 0x6C, 0x20,
+ 0x53, 0x74, 0x6F, 0x6B, 0x65, 0x73, 0x0D, 0x0D,
+ 0x03, 0x49, 0x6E, 0x74, 0x72, 0x6F, 0x20, 0x26,
+ 0x20, 0x46, 0x69, 0x6E, 0x61, 0x6C, 0x65, 0x3A,
+ 0x04, 0x43, 0x68, 0x72, 0x69, 0x73, 0x74, 0x6F,
+ 0x70, 0x68, 0x65, 0x72, 0x20, 0x59, 0x61, 0x74,
+ 0x65, 0x73, 0x0D, 0x0D, 0x03, 0x41, 0x72, 0x74,
+ 0x20, 0x26, 0x20, 0x47, 0x72, 0x61, 0x70, 0x68,
+ 0x69, 0x63, 0x73, 0x3A, 0x04, 0x52, 0x69, 0x63,
+ 0x6B, 0x20, 0x50, 0x61, 0x72, 0x6B, 0x73, 0x0D,
+ 0x04, 0x52, 0x65, 0x6E, 0x20, 0x4F, 0x6C, 0x73,
+ 0x65, 0x6E, 0x0D, 0x04, 0x4C, 0x6F, 0x75, 0x69,
+ 0x73, 0x65, 0x20, 0x53, 0x61, 0x6E, 0x64, 0x6F,
+ 0x76, 0x61, 0x6C, 0x0D, 0x04, 0x4A, 0x6F, 0x73,
+ 0x65, 0x70, 0x68, 0x20, 0x48, 0x65, 0x77, 0x69,
+ 0x74, 0x74, 0x20, 0x49, 0x56, 0x0D, 0x04, 0x4A,
+ 0x75, 0x64, 0x69, 0x74, 0x68, 0x20, 0x50, 0x65,
+ 0x74, 0x65, 0x72, 0x73, 0x6F, 0x6E, 0x0D, 0x04,
+ 0x41, 0x61, 0x72, 0x6F, 0x6E, 0x20, 0x50, 0x6F,
+ 0x77, 0x65, 0x6C, 0x6C, 0x0D, 0x04, 0x45, 0x6C,
+ 0x69, 0x65, 0x20, 0x41, 0x72, 0x61, 0x62, 0x69,
+ 0x61, 0x6E, 0x0D, 0x04, 0x45, 0x72, 0x69, 0x63,
+ 0x20, 0x53, 0x68, 0x75, 0x6C, 0x74, 0x73, 0x0D,
+ 0x0D, 0x03, 0x41, 0x75, 0x64, 0x69, 0x6F, 0x20,
+ 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72,
+ 0x3A, 0x04, 0x50, 0x61, 0x75, 0x6C, 0x20, 0x53,
+ 0x2E, 0x20, 0x4D, 0x75, 0x64, 0x72, 0x61, 0x0D,
+ 0x0D, 0x03, 0x4D, 0x75, 0x73, 0x69, 0x63, 0x3A,
+ 0x04, 0x46, 0x72, 0x61, 0x6E, 0x6B, 0x20, 0x4B,
+ 0x6C, 0x65, 0x70, 0x61, 0x63, 0x6B, 0x69, 0x0D,
+ 0x0D, 0x03, 0x53, 0x6F, 0x75, 0x6E, 0x64, 0x20,
+ 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x73, 0x3A,
+ 0x04, 0x44, 0x77, 0x69, 0x67, 0x68, 0x74, 0x20,
+ 0x4F, 0x6B, 0x61, 0x68, 0x61, 0x72, 0x61, 0x0D,
+ 0x0D, 0x03, 0x57, 0x72, 0x69, 0x74, 0x65, 0x72,
+ 0x3A, 0x04, 0x22, 0x43, 0x6F, 0x63, 0x6F, 0x22,
+ 0x0D, 0x0D, 0x03, 0x51, 0x75, 0x61, 0x6C, 0x69,
+ 0x74, 0x79, 0x20, 0x41, 0x73, 0x73, 0x75, 0x72,
+ 0x61, 0x6E, 0x63, 0x65, 0x3A, 0x04, 0x47, 0x6C,
+ 0x65, 0x6E, 0x6E, 0x20, 0x53, 0x70, 0x65, 0x72,
+ 0x72, 0x79, 0x0D, 0x04, 0x4D, 0x61, 0x74, 0x74,
+ 0x20, 0x43, 0x6F, 0x6C, 0x6C, 0x69, 0x6E, 0x73,
+ 0x0D, 0x04, 0x42, 0x69, 0x6C, 0x6C, 0x20, 0x46,
+ 0x6F, 0x73, 0x74, 0x65, 0x72, 0x0D, 0x04, 0x4D,
+ 0x69, 0x63, 0x68, 0x61, 0x65, 0x6C, 0x20, 0x4C,
+ 0x69, 0x67, 0x68, 0x74, 0x6E, 0x65, 0x72, 0x0D,
+ 0x04, 0x4D, 0x69, 0x63, 0x68, 0x61, 0x65, 0x6C,
+ 0x20, 0x47, 0x61, 0x74, 0x65, 0x72, 0x0D, 0x04,
+ 0x45, 0x75, 0x67, 0x65, 0x6E, 0x65, 0x20, 0x4D,
+ 0x61, 0x72, 0x74, 0x69, 0x6E, 0x0D, 0x04, 0x4D,
+ 0x69, 0x63, 0x68, 0x61, 0x65, 0x6C, 0x20, 0x47,
+ 0x6C, 0x6F, 0x73, 0x65, 0x63, 0x6B, 0x69, 0x0D,
+ 0x04, 0x4A, 0x75, 0x73, 0x74, 0x69, 0x6E, 0x20,
+ 0x4E, 0x6F, 0x72, 0x72, 0x0D, 0x04, 0x54, 0x6F,
+ 0x70, 0x20, 0x53, 0x74, 0x61, 0x72, 0x20, 0x54,
+ 0x65, 0x73, 0x74, 0x69, 0x6E, 0x67, 0x0D, 0x04,
+ 0x54, 0x65, 0x73, 0x74, 0x69, 0x6E, 0x67, 0x20,
+ 0x31, 0x2C, 0x32, 0x2C, 0x33, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x05, 0x53, 0x70, 0x65, 0x63, 0x69,
+ 0x61, 0x6C, 0x20, 0x54, 0x68, 0x61, 0x6E, 0x6B,
+ 0x73, 0x20, 0x74, 0x6F, 0x0D, 0x05, 0x4C, 0x79,
+ 0x6C, 0x65, 0x20, 0x4A, 0x2E, 0x20, 0x48, 0x61,
+ 0x6C, 0x6C, 0x0D, 0x05, 0x44, 0x61, 0x76, 0x69,
+ 0x64, 0x20, 0x42, 0x69, 0x73, 0x68, 0x6F, 0x70,
+ 0x0D, 0x05, 0x22, 0x54, 0x68, 0x65, 0x20, 0x44,
+ 0x6F, 0x63, 0x22, 0x0D, 0x05, 0x61, 0x6E, 0x64,
+ 0x0D, 0x05, 0x46, 0x69, 0x72, 0x65, 0x62, 0x65,
+ 0x72, 0x72, 0x79, 0x20, 0x47, 0x72, 0x65, 0x65,
+ 0x6E, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x05, 0x43, 0x41, 0x53, 0x54, 0x20, 0x4F,
+ 0x46, 0x20, 0x43, 0x48, 0x41, 0x52, 0x41, 0x43,
+ 0x54, 0x45, 0x52, 0x53, 0x0D, 0x0D, 0x05, 0x4D,
+ 0x61, 0x6C, 0x63, 0x6F, 0x6C, 0x6D, 0x20, 0x74,
+ 0x68, 0x65, 0x20, 0x4A, 0x65, 0x73, 0x74, 0x65,
+ 0x72, 0x0D, 0x05, 0x42, 0x72, 0x61, 0x6E, 0x64,
+ 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x42,
+ 0x6F, 0x6C, 0x64, 0x0D, 0x05, 0x42, 0x72, 0x61,
+ 0x6E, 0x64, 0x79, 0x77, 0x69, 0x6E, 0x65, 0x20,
+ 0x61, 0x6E, 0x64, 0x20, 0x44, 0x61, 0x72, 0x6D,
+ 0x0D, 0x05, 0x50, 0x72, 0x69, 0x65, 0x73, 0x74,
+ 0x65, 0x73, 0x73, 0x20, 0x42, 0x72, 0x79, 0x6E,
+ 0x6E, 0x0D, 0x05, 0x5A, 0x61, 0x6E, 0x74, 0x68,
+ 0x69, 0x61, 0x2C, 0x20, 0x4C, 0x61, 0x64, 0x79,
+ 0x20, 0x6F, 0x66, 0x20, 0x41, 0x6C, 0x63, 0x68,
+ 0x65, 0x6D, 0x79, 0x0D, 0x05, 0x48, 0x65, 0x72,
+ 0x6D, 0x61, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20,
+ 0x48, 0x61, 0x6E, 0x64, 0x79, 0x6D, 0x61, 0x6E,
+ 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x05,
+ 0x41, 0x6E, 0x79, 0x20, 0x63, 0x68, 0x61, 0x72,
+ 0x61, 0x63, 0x74, 0x65, 0x72, 0x73, 0x20, 0x69,
+ 0x6E, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x67,
+ 0x61, 0x6D, 0x65, 0x20, 0x77, 0x68, 0x6F, 0x20,
+ 0x62, 0x65, 0x61, 0x72, 0x0D, 0x05, 0x72, 0x65,
+ 0x73, 0x65, 0x6D, 0x62, 0x6C, 0x61, 0x6E, 0x63,
+ 0x65, 0x20, 0x74, 0x6F, 0x20, 0x70, 0x65, 0x72,
+ 0x73, 0x6F, 0x6E, 0x73, 0x20, 0x6C, 0x69, 0x76,
+ 0x69, 0x6E, 0x67, 0x20, 0x6F, 0x72, 0x0D, 0x05,
+ 0x64, 0x65, 0x61, 0x64, 0x20, 0x61, 0x72, 0x65,
+ 0x20, 0x70, 0x75, 0x72, 0x65, 0x6C, 0x79, 0x20,
+ 0x63, 0x6F, 0x69, 0x6E, 0x63, 0x69, 0x64, 0x65,
+ 0x6E, 0x74, 0x61, 0x6C, 0x2E, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x05, 0x4D, 0x61, 0x78, 0x54, 0x72,
+ 0x61, 0x78, 0xE2, 0x20, 0x6D, 0x75, 0x73, 0x69,
+ 0x63, 0x20, 0x73, 0x6F, 0x66, 0x74, 0x77, 0x61,
+ 0x72, 0x65, 0x0D, 0x05, 0x20, 0xE3, 0x20, 0x31,
+ 0x39, 0x39, 0x32, 0x20, 0x53, 0x79, 0x6C, 0x76,
+ 0x61, 0x6E, 0x20, 0x54, 0x65, 0x63, 0x68, 0x6E,
+ 0x69, 0x63, 0x61, 0x6C, 0x20, 0x41, 0x72, 0x74,
+ 0x73, 0x0D, 0x05, 0x4C, 0x69, 0x63, 0x65, 0x6E,
+ 0x73, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x74,
+ 0x68, 0x65, 0x20, 0x44, 0x72, 0x65, 0x61, 0x6D,
+ 0x65, 0x72, 0x73, 0x20, 0x47, 0x75, 0x69, 0x6C,
+ 0x64, 0x2C, 0x20, 0x49, 0x6E, 0x63, 0x2E, 0x0D,
+ 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x05, 0x43, 0x6F,
+ 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x20,
+ 0x28, 0x43, 0x29, 0x20, 0x31, 0x39, 0x39, 0x32,
+ 0x2C, 0x20, 0x57, 0x65, 0x73, 0x74, 0x77, 0x6F,
+ 0x6F, 0x64, 0x20, 0x53, 0x74, 0x75, 0x64, 0x69,
+ 0x6F, 0x73, 0x2C, 0x20, 0x49, 0x6E, 0x63, 0x2E,
+ 0x0D, 0x05, 0x41, 0x6C, 0x6C, 0x20, 0x72, 0x69,
+ 0x67, 0x68, 0x74, 0x73, 0x20, 0x72, 0x65, 0x73,
+ 0x65, 0x72, 0x76, 0x65, 0x64, 0x2E, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x00, 0x00
+};
+
+static const ByteProvider k1CreditsStringsAmigaEnglishProvider = { ARRAYSIZE(k1CreditsStringsAmigaEnglish), k1CreditsStringsAmigaEnglish };
+
diff --git a/devtools/create_kyradat/resources/lok_amiga_german.h b/devtools/create_kyradat/resources/lok_amiga_german.h
new file mode 100644
index 0000000000..ff9090ab2a
--- /dev/null
+++ b/devtools/create_kyradat/resources/lok_amiga_german.h
@@ -0,0 +1,492 @@
+static const char *const k1IntroStringsAmigaGerman[51] = {
+ "This is a text test - 1",
+ "This is a text test - 2",
+ "Sei gegr""\x81\xE1""t, Kallak...",
+ "...M""\x84""chtiger Anf""\x81""hrer der k""\x94""niglichen Mystiker!",
+ "Habe ich dich erschreckt?",
+ "Malcolm!",
+ "Ich habe gestern von deiner Flucht geh""\x94""rt.",
+ "Ich habe dich fr""\x81""her erwartet.",
+ "Warum sollte ich mich beeilen?",
+ "Ich herrsche ""\x81""ber dieses Land!",
+ "Dein mickriger Fluch h""\x84""lt mich nicht zur""\x81""ck.",
+ "So, erschlag mich doch!",
+ "Ich habe nur noch wenig Magie ""\x81""brig.",
+ "Ich werde dir zu Leibe r""\x81""cken, zweifle blo""\xE1"" nicht daran...",
+ "...du bist jetzt aus Stein...",
+ "...Ich lassen dir allein deine Augen.",
+ "F""\x81""r Kyrandia vergie""\xE1""e ich nicht eine Tr""\x84""ne...",
+ "...aber deine will ich dir nicht nehmen.",
+ "Malcolm der Hofnarr ist ausgebrochen!",
+ "Er beherrscht nun den Kyragem...",
+ "...die Quelle aller Magie in Kyrandia!",
+ "",
+ "Wie kannst du es wagen, MICH umzuwerfen!",
+ "Nicht doch, etwas Besonderes f""\x81""r dich...",
+ "Was f""\x81""r ein l""\x84""cherlicher Fluch!",
+ "Ich warne dich vorher.",
+ "Springe nicht auf DIESEN Baum!",
+ "Klettre nicht auf diesen Baum, kleines Eichh""\x94""rnchen!",
+ "Buuh!",
+ "So ist es viel lustiger...",
+ "...nicht wahr?",
+ "Ha ha ha...",
+ "Sind Finger nicht 'was Tolles?",
+ "Es ist gro""\xE1""artig, am Leben zu sein!",
+ "Brandon!",
+ "Gro""\xE1""vater! Wir haben es geschafft!",
+ "Nein! DU hast es geschafft!",
+ "Lang lebe K""\x94""nig Brandon!",
+ "Lang leben die k""\x94""niglichen Mystiker!",
+ "Bauen wir Kyrandia wieder auf!",
+ "Eine gute Idee!",
+ "Als meine erste k""\x94""nigliche Proklamation,...",
+ "...erkl""\x84""re ich Sandalen zur offiziellen Fu""\xE1""bekleidung Kyrandias!",
+ "Sehr weise, Brandon!",
+ "Das Land ist nicht l""\x84""nger in Trauer!",
+ "Und deine Freunde sind gerettet.",
+ "Liebe Brynn...",
+ "Malcolm ist ausgebrochen!",
+ "Er wird bald zu mir kommen.",
+ "Bitte hilf Brandon...",
+ ""
+};
+
+static const StringListProvider k1IntroStringsAmigaGermanProvider = { ARRAYSIZE(k1IntroStringsAmigaGerman), k1IntroStringsAmigaGerman };
+
+static const char *const k1ItemNamesAmigaGerman[82] = {
+ "Granat",
+ "Amethyst",
+ "Aquamarin",
+ "Diamant",
+ "Smaragd",
+ "Perle",
+ "Rubin",
+ "Peridot",
+ "Saphir",
+ "Opal",
+ "Topas",
+ "Onyx",
+ "Sonnenstein",
+ "Mondstein",
+ "Regenbogenstein",
+ "Magnetstein",
+ "Rose",
+ "Tulpe",
+ "Orchidee",
+ "Silberne Rose",
+ "Silberne Statuette",
+ "Silberm""\x81""nze",
+ "Goldm""\x81""nze",
+ "Goldring",
+ "Der Kelch des K""\x94""nigs",
+ "Kienapfel",
+ "Eichel",
+ "Walnu""\xE1",
+ "Immerleuchtende Feuerbeeren",
+ "Feuerbeeren",
+ "Fisch",
+ "Fischgr""\x84""te",
+ "Hammelkeule",
+ "Knochen",
+ "Apfel",
+ "Apfelgriebsch",
+ "Heidelbeeren",
+ "Pilz",
+ "Notiz",
+ "Murmel",
+ "S""\x84""ge",
+ "Henkelkreuz",
+ "Feder",
+ "Ei",
+ "Blatt",
+ "Kleeblatt",
+ "Sternschnuppe",
+ "Kristallkugel",
+ "Tr""\x84""ne",
+ "Spiegel",
+ "Eisst""\x81""ck",
+ "Fl""\x94""te",
+ "Sanduhr",
+ "Eisenschl""\x81""ssel",
+ "Jadeschl""\x81""ssel",
+ "Obsidianschl""\x81""ssel",
+ "Roter Trank",
+ "Blauer Trank",
+ "Gelber Trank",
+ "Gr""\x81""ner Trank",
+ "Oranger Trank",
+ "Violetter Trank",
+ "Regenbogentrank",
+ "S""\x81\xE1""wasser",
+ "Salzwasser",
+ "Mineralwasser",
+ "Magisches Wasser",
+ "Leere Flasche",
+ "Schriftrolle",
+ "Pergamentfetzen",
+ "Roter Weisenstein",
+ "Oranger Weisenstein",
+ "Gelber Weisenstein",
+ "Gr""\x81""ner Weisenstein",
+ "T""\x81""rkiser Weisenstein",
+ "Blauer Weisenstein",
+ "Violetter Weisenstein",
+ "Schwerer Stein",
+ "K""\x94""nigliche Krone",
+ "K""\x94""nigliches Zepter",
+ "Goldschl""\x81""ssel",
+ "Unbekannter Gegenstand"
+};
+
+static const StringListProvider k1ItemNamesAmigaGermanProvider = { ARRAYSIZE(k1ItemNamesAmigaGerman), k1ItemNamesAmigaGerman };
+
+static const char *const k1TakenStringsAmigaGerman[1] = {
+ " aufgenommen."
+};
+
+static const StringListProvider k1TakenStringsAmigaGermanProvider = { ARRAYSIZE(k1TakenStringsAmigaGerman), k1TakenStringsAmigaGerman };
+
+static const char *const k1PlacedStringsAmigaGerman[1] = {
+ " abgelegt."
+};
+
+static const StringListProvider k1PlacedStringsAmigaGermanProvider = { ARRAYSIZE(k1PlacedStringsAmigaGerman), k1PlacedStringsAmigaGerman };
+
+static const char *const k1DroppedStringsAmigaGerman[1] = {
+ " fallengelassen."
+};
+
+static const StringListProvider k1DroppedStringsAmigaGermanProvider = { ARRAYSIZE(k1DroppedStringsAmigaGerman), k1DroppedStringsAmigaGerman };
+
+static const char *const k1NoDropStringsAmigaGerman[2] = {
+ "Hier kann nichts mehr abgelegt werden.",
+ "Das kann hier nicht abgelegt werden."
+};
+
+static const StringListProvider k1NoDropStringsAmigaGermanProvider = { ARRAYSIZE(k1NoDropStringsAmigaGerman), k1NoDropStringsAmigaGerman };
+
+static const char *const k1PutDownStringAmigaGerman[1] = {
+ "Vielleicht sollte ich es erst hinlegen."
+};
+
+static const StringListProvider k1PutDownStringAmigaGermanProvider = { ARRAYSIZE(k1PutDownStringAmigaGerman), k1PutDownStringAmigaGerman };
+
+static const char *const k1WaitAmuletStringAmigaGerman[1] = {
+ "I nehme an, ich mu""\xE1"" warten, bis mein Amulett seine Kraft wiedererlangt."
+};
+
+static const StringListProvider k1WaitAmuletStringAmigaGermanProvider = { ARRAYSIZE(k1WaitAmuletStringAmigaGerman), k1WaitAmuletStringAmigaGerman };
+
+static const char *const k1BlackJewelStringAmigaGerman[1] = {
+ "Es ist ein Edelstein, aber warum ist er schwarz?"
+};
+
+static const StringListProvider k1BlackJewelStringAmigaGermanProvider = { ARRAYSIZE(k1BlackJewelStringAmigaGerman), k1BlackJewelStringAmigaGerman };
+
+static const char *const k1HealingTipStringAmigaGerman[1] = {
+ "Mann, das kann ganz n""\x81""tzlich sein, falls ich mich verletze!"
+};
+
+static const StringListProvider k1HealingTipStringAmigaGermanProvider = { ARRAYSIZE(k1HealingTipStringAmigaGerman), k1HealingTipStringAmigaGerman };
+
+static const char *const k1PoisonGoneStringAmigaGerman[2] = {
+ "Erstaunlich!",
+ "Die Wirkung des Giftes hat nachgelassen!"
+};
+
+static const StringListProvider k1PoisonGoneStringAmigaGermanProvider = { ARRAYSIZE(k1PoisonGoneStringAmigaGerman), k1PoisonGoneStringAmigaGerman };
+
+static const char *const k1ThePoisonStringsAmigaGerman[4] = {
+ "Das Gift...",
+ "Ich kann nicht atmen...",
+ "Ich f""\x81""hle mich nicht besonders wohl...",
+ "Die Schlange mu""\xE1"" \rgiftig gewesen sein!"
+};
+
+static const StringListProvider k1ThePoisonStringsAmigaGermanProvider = { ARRAYSIZE(k1ThePoisonStringsAmigaGerman), k1ThePoisonStringsAmigaGerman };
+
+static const char *const k1FluteStringsAmigaGerman[2] = {
+ "Klingt nicht besonders beeindruckend.",
+ "Die letzte Note war hoch!"
+};
+
+static const StringListProvider k1FluteStringsAmigaGermanProvider = { ARRAYSIZE(k1FluteStringsAmigaGerman), k1FluteStringsAmigaGerman };
+
+static const char *const k1WispJewelStringsAmigaGerman[3] = {
+ "Im Moment f""\x81""hle ich mich dazu nicht in der Lage.",
+ "Ich mu""\xE1"" wahrscheinlich erst mein(e)...",
+ "ablegen."
+};
+
+static const StringListProvider k1WispJewelStringsAmigaGermanProvider = { ARRAYSIZE(k1WispJewelStringsAmigaGerman), k1WispJewelStringsAmigaGerman };
+
+static const char *const k1MagicJewelStringsAmigaGerman[1] = {
+ "Das war eigenartig."
+};
+
+static const StringListProvider k1MagicJewelStringsAmigaGermanProvider = { ARRAYSIZE(k1MagicJewelStringsAmigaGerman), k1MagicJewelStringsAmigaGerman };
+
+static const char *const k1FlaskFullStringAmigaGerman[1] = {
+ "Die Flasche ist bereits voll."
+};
+
+static const StringListProvider k1FlaskFullStringAmigaGermanProvider = { ARRAYSIZE(k1FlaskFullStringAmigaGerman), k1FlaskFullStringAmigaGerman };
+
+static const char *const k1FullFlaskStringAmigaGerman[4] = {
+ "Die Flasche ist jetzt mit \rfrischem, klarem Wasser gef""\x81""llt.",
+ "Die Flasche ist jetzt mit \rSalzwasser gef""\x81""llt.",
+ "Die Flasche ist jetzt mit \rMineralwasser gef""\x81""llt.",
+ "Magisches Wasser."
+};
+
+static const StringListProvider k1FullFlaskStringAmigaGermanProvider = { ARRAYSIZE(k1FullFlaskStringAmigaGerman), k1FullFlaskStringAmigaGerman };
+
+static const char *const k1OutroHomeStringAmigaGerman[1] = {
+ "Ab nach Hause"
+};
+
+static const StringListProvider k1OutroHomeStringAmigaGermanProvider = { ARRAYSIZE(k1OutroHomeStringAmigaGerman), k1OutroHomeStringAmigaGerman };
+
+static const char *const k1VeryCleverStringAmigaGerman[1] = {
+ "Sehr clever! Aber nichtige Versuche sind zum Scheitern verurteilt."
+};
+
+static const StringListProvider k1VeryCleverStringAmigaGermanProvider = { ARRAYSIZE(k1VeryCleverStringAmigaGerman), k1VeryCleverStringAmigaGerman };
+
+static const char *const k1GUIStringsAmigaGerman[49] = {
+ "Die Legende von Kyrandia",
+ "Ein Spiel laden",
+ "Dieses Spiel sichern",
+ "Spielsteuerungen",
+ "Spiel beenden",
+ "Spiel wieder aufnehmen",
+ "Spielsteuerungen",
+ "Welches Spiel soll noch einmal geladen werden?",
+ "W""\x84""hlen Sie den Platz zum Sichern aus.",
+ "[ LEERER PLATZ ]",
+ "Abbrechen",
+ "Beschreibung des gesicherten Spiels eingeben.",
+ "Sichern",
+ "Ruhe in Frieden, Brandon.",
+ "Soll das Spiel wirklich beendet werden?",
+ "XXXXX",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "XXXXX",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "XXXXXXXXXXXXXXXXX",
+ "XXXXXXXXXXXXXXXXX",
+ "Hauptmen""\x81",
+ "An",
+ "Aus",
+ "Ja",
+ "Nein",
+ "",
+ "\x01""[""\xA2",
+ "\x01""[""\xB2",
+ "\x01""[""\xBA",
+ "\x01""[""\xC2",
+ "\x01""[""\xCA",
+ "\x01""[""\xA2",
+ "\x01""[""\xBA",
+ "\x01""[""\xC2",
+ "\x01""[""\xDA""Schrittempo",
+ "Textgeschwindigkeit",
+ "Die Musik ist",
+ "Die Soundeffekte sind"
+};
+
+static const StringListProvider k1GUIStringsAmigaGermanProvider = { ARRAYSIZE(k1GUIStringsAmigaGerman), k1GUIStringsAmigaGerman };
+
+static const char *const k1NewGameStringAmigaGerman[1] = {
+ "[ EIN NEUES SPIEL ANFANGEN ]"
+};
+
+static const StringListProvider k1NewGameStringAmigaGermanProvider = { ARRAYSIZE(k1NewGameStringAmigaGerman), k1NewGameStringAmigaGerman };
+
+static const char *const k1ConfigStringsAmigaGerman[6] = {
+ "am langsamsten",
+ "langsam",
+ "normal",
+ "schnell",
+ "am schnellsten",
+ "anklickbar"
+};
+
+static const StringListProvider k1ConfigStringsAmigaGermanProvider = { ARRAYSIZE(k1ConfigStringsAmigaGerman), k1ConfigStringsAmigaGerman };
+
+static const byte k1CreditsStringsAmigaGerman[1275] = {
+ 0x05, 0x46, 0x61, 0x62, 0x6C, 0x65, 0x73, 0x20,
+ 0x26, 0x20, 0x46, 0x69, 0x65, 0x6E, 0x64, 0x73,
+ 0x0D, 0x05, 0x42, 0x6F, 0x6F, 0x6B, 0x20, 0x49,
+ 0x0D, 0x05, 0x54, 0x48, 0x45, 0x20, 0x4C, 0x45,
+ 0x47, 0x45, 0x4E, 0x44, 0x20, 0x4F, 0x46, 0x20,
+ 0x4B, 0x59, 0x52, 0x41, 0x4E, 0x44, 0x49, 0x41,
+ 0x0D, 0x0D, 0x05, 0x56, 0x65, 0x72, 0x94, 0x66,
+ 0x66, 0x65, 0x6E, 0x74, 0x6C, 0x69, 0x63, 0x68,
+ 0x74, 0x20, 0x76, 0x6F, 0x6E, 0x0D, 0x05, 0x57,
+ 0x65, 0x73, 0x74, 0x77, 0x6F, 0x6F, 0x64, 0x20,
+ 0x53, 0x74, 0x75, 0x64, 0x69, 0x6F, 0x73, 0x0D,
+ 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x03,
+ 0x52, 0x65, 0x67, 0x69, 0x65, 0x3A, 0x04, 0x42,
+ 0x72, 0x65, 0x74, 0x74, 0x20, 0x57, 0x2E, 0x20,
+ 0x53, 0x70, 0x65, 0x72, 0x72, 0x79, 0x0D, 0x0D,
+ 0x03, 0x44, 0x65, 0x73, 0x69, 0x67, 0x6E, 0x3A,
+ 0x04, 0x4D, 0x69, 0x63, 0x68, 0x61, 0x65, 0x6C,
+ 0x20, 0x4C, 0x65, 0x67, 0x67, 0x0D, 0x04, 0x52,
+ 0x69, 0x63, 0x6B, 0x20, 0x50, 0x61, 0x72, 0x6B,
+ 0x73, 0x0D, 0x04, 0x50, 0x61, 0x75, 0x6C, 0x20,
+ 0x53, 0x2E, 0x20, 0x4D, 0x75, 0x64, 0x72, 0x61,
+ 0x0D, 0x0D, 0x03, 0x50, 0x72, 0x6F, 0x67, 0x72,
+ 0x61, 0x6D, 0x6D, 0x69, 0x65, 0x72, 0x75, 0x6E,
+ 0x67, 0x73, 0x6C, 0x65, 0x69, 0x74, 0x75, 0x6E,
+ 0x67, 0x3A, 0x04, 0x4D, 0x69, 0x63, 0x68, 0x61,
+ 0x65, 0x6C, 0x20, 0x4C, 0x65, 0x67, 0x67, 0x0D,
+ 0x0D, 0x03, 0x54, 0x65, 0x78, 0x74, 0x70, 0x72,
+ 0x6F, 0x67, 0x72, 0x61, 0x6D, 0x6D, 0x69, 0x65,
+ 0x72, 0x65, 0x72, 0x3A, 0x04, 0x53, 0x63, 0x6F,
+ 0x74, 0x74, 0x20, 0x42, 0x6F, 0x77, 0x65, 0x6E,
+ 0x0D, 0x0D, 0x03, 0x41, 0x6D, 0x69, 0x67, 0x61,
+ 0x2D, 0x50, 0x72, 0x6F, 0x67, 0x72, 0x61, 0x6D,
+ 0x6D, 0x69, 0x65, 0x72, 0x65, 0x72, 0x3A, 0x04,
+ 0x42, 0x69, 0x6C, 0x6C, 0x20, 0x53, 0x74, 0x6F,
+ 0x6B, 0x65, 0x73, 0x0D, 0x0D, 0x03, 0x56, 0x6F,
+ 0x72, 0x2D, 0x20, 0x75, 0x6E, 0x64, 0x20, 0x4E,
+ 0x61, 0x63, 0x68, 0x73, 0x70, 0x61, 0x6E, 0x6E,
+ 0x3A, 0x04, 0x43, 0x68, 0x72, 0x69, 0x73, 0x74,
+ 0x6F, 0x70, 0x68, 0x65, 0x72, 0x20, 0x59, 0x61,
+ 0x74, 0x65, 0x73, 0x0D, 0x0D, 0x03, 0x4B, 0x81,
+ 0x6E, 0x73, 0x74, 0x6C, 0x65, 0x72, 0x69, 0x73,
+ 0x63, 0x68, 0x65, 0x20, 0x47, 0x65, 0x73, 0x74,
+ 0x61, 0x6C, 0x74, 0x75, 0x6E, 0x67, 0x3A, 0x04,
+ 0x52, 0x69, 0x63, 0x6B, 0x20, 0x50, 0x61, 0x72,
+ 0x6B, 0x73, 0x0D, 0x04, 0x52, 0x65, 0x6E, 0x20,
+ 0x4F, 0x6C, 0x73, 0x65, 0x6E, 0x0D, 0x04, 0x4C,
+ 0x6F, 0x75, 0x69, 0x73, 0x65, 0x20, 0x53, 0x61,
+ 0x6E, 0x64, 0x6F, 0x76, 0x61, 0x6C, 0x0D, 0x04,
+ 0x4A, 0x6F, 0x73, 0x65, 0x70, 0x68, 0x20, 0x48,
+ 0x65, 0x77, 0x69, 0x74, 0x74, 0x20, 0x49, 0x56,
+ 0x0D, 0x04, 0x4A, 0x75, 0x64, 0x69, 0x74, 0x68,
+ 0x20, 0x50, 0x65, 0x74, 0x65, 0x72, 0x73, 0x6F,
+ 0x6E, 0x0D, 0x04, 0x41, 0x61, 0x72, 0x6F, 0x6E,
+ 0x20, 0x50, 0x6F, 0x77, 0x65, 0x6C, 0x6C, 0x0D,
+ 0x04, 0x45, 0x6C, 0x69, 0x65, 0x20, 0x41, 0x72,
+ 0x61, 0x62, 0x69, 0x61, 0x6E, 0x0D, 0x04, 0x45,
+ 0x72, 0x69, 0x63, 0x20, 0x53, 0x68, 0x75, 0x6C,
+ 0x74, 0x73, 0x0D, 0x0D, 0x03, 0x54, 0x6F, 0x6E,
+ 0x72, 0x65, 0x67, 0x69, 0x65, 0x3A, 0x04, 0x50,
+ 0x61, 0x75, 0x6C, 0x20, 0x53, 0x2E, 0x20, 0x4D,
+ 0x75, 0x64, 0x72, 0x61, 0x0D, 0x0D, 0x03, 0x4D,
+ 0x75, 0x73, 0x69, 0x6B, 0x3A, 0x04, 0x46, 0x72,
+ 0x61, 0x6E, 0x6B, 0x20, 0x4B, 0x6C, 0x65, 0x70,
+ 0x61, 0x63, 0x6B, 0x69, 0x0D, 0x0D, 0x03, 0x53,
+ 0x6F, 0x75, 0x6E, 0x64, 0x65, 0x66, 0x66, 0x65,
+ 0x6B, 0x74, 0x65, 0x3A, 0x04, 0x44, 0x77, 0x69,
+ 0x67, 0x68, 0x74, 0x20, 0x4F, 0x6B, 0x61, 0x68,
+ 0x61, 0x72, 0x61, 0x0D, 0x0D, 0x03, 0x41, 0x75,
+ 0x74, 0x6F, 0x72, 0x3A, 0x04, 0x22, 0x43, 0x6F,
+ 0x63, 0x6F, 0x22, 0x0D, 0x0D, 0x03, 0x51, 0x75,
+ 0x61, 0x6C, 0x69, 0x74, 0x84, 0x74, 0x73, 0x73,
+ 0x69, 0x63, 0x68, 0x65, 0x72, 0x75, 0x6E, 0x67,
+ 0x3A, 0x04, 0x47, 0x6C, 0x65, 0x6E, 0x6E, 0x20,
+ 0x53, 0x70, 0x65, 0x72, 0x72, 0x79, 0x0D, 0x04,
+ 0x4D, 0x61, 0x74, 0x74, 0x20, 0x43, 0x6F, 0x6C,
+ 0x6C, 0x69, 0x6E, 0x73, 0x0D, 0x04, 0x42, 0x69,
+ 0x6C, 0x6C, 0x20, 0x46, 0x6F, 0x73, 0x74, 0x65,
+ 0x72, 0x0D, 0x04, 0x4D, 0x69, 0x63, 0x68, 0x61,
+ 0x65, 0x6C, 0x20, 0x4C, 0x69, 0x67, 0x68, 0x74,
+ 0x6E, 0x65, 0x72, 0x0D, 0x04, 0x4D, 0x69, 0x63,
+ 0x68, 0x61, 0x65, 0x6C, 0x20, 0x47, 0x61, 0x74,
+ 0x65, 0x72, 0x0D, 0x04, 0x45, 0x75, 0x67, 0x65,
+ 0x6E, 0x65, 0x20, 0x4D, 0x61, 0x72, 0x74, 0x69,
+ 0x6E, 0x0D, 0x04, 0x4D, 0x69, 0x63, 0x68, 0x61,
+ 0x65, 0x6C, 0x20, 0x47, 0x6C, 0x6F, 0x73, 0x65,
+ 0x63, 0x6B, 0x69, 0x0D, 0x04, 0x4A, 0x75, 0x73,
+ 0x74, 0x69, 0x6E, 0x20, 0x4E, 0x6F, 0x72, 0x72,
+ 0x0D, 0x04, 0x54, 0x6F, 0x70, 0x20, 0x53, 0x74,
+ 0x61, 0x72, 0x20, 0x54, 0x65, 0x73, 0x74, 0x69,
+ 0x6E, 0x67, 0x0D, 0x04, 0x54, 0x65, 0x73, 0x74,
+ 0x69, 0x6E, 0x67, 0x20, 0x31, 0x2C, 0x20, 0x32,
+ 0x2C, 0x20, 0x33, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
+ 0x05, 0x42, 0x65, 0x73, 0x6F, 0x6E, 0x64, 0x65,
+ 0x72, 0x65, 0x72, 0x20, 0x44, 0x61, 0x6E, 0x6B,
+ 0x20, 0x67, 0x69, 0x6C, 0x74, 0x3A, 0x0D, 0x05,
+ 0x4C, 0x79, 0x6C, 0x65, 0x20, 0x4A, 0x2E, 0x20,
+ 0x48, 0x61, 0x6C, 0x6C, 0x0D, 0x05, 0x44, 0x61,
+ 0x76, 0x69, 0x64, 0x20, 0x42, 0x69, 0x73, 0x68,
+ 0x6F, 0x70, 0x0D, 0x05, 0x22, 0x54, 0x68, 0x65,
+ 0x20, 0x44, 0x6F, 0x63, 0x22, 0x0D, 0x05, 0x75,
+ 0x6E, 0x64, 0x0D, 0x05, 0x53, 0x50, 0x52, 0x4F,
+ 0x43, 0x4B, 0x45, 0x54, 0x53, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x05, 0x4D, 0x49,
+ 0x54, 0x57, 0x49, 0x52, 0x4B, 0x45, 0x4E, 0x44,
+ 0x45, 0x20, 0x46, 0x49, 0x47, 0x55, 0x52, 0x45,
+ 0x4E, 0x0D, 0x0D, 0x05, 0x4D, 0x61, 0x6C, 0x63,
+ 0x6F, 0x6C, 0x6D, 0x20, 0x64, 0x65, 0x72, 0x20,
+ 0x48, 0x6F, 0x66, 0x6E, 0x61, 0x72, 0x72, 0x0D,
+ 0x05, 0x42, 0x72, 0x61, 0x6E, 0x64, 0x6F, 0x6E,
+ 0x20, 0x64, 0x65, 0x72, 0x20, 0x4B, 0x81, 0x68,
+ 0x6E, 0x65, 0x0D, 0x05, 0x42, 0x72, 0x61, 0x6E,
+ 0x64, 0x79, 0x77, 0x69, 0x6E, 0x65, 0x20, 0x75,
+ 0x6E, 0x64, 0x20, 0x44, 0x61, 0x72, 0x6D, 0x0D,
+ 0x05, 0x50, 0x72, 0x69, 0x65, 0x73, 0x74, 0x65,
+ 0x72, 0x69, 0x6E, 0x20, 0x42, 0x72, 0x79, 0x6E,
+ 0x6E, 0x0D, 0x05, 0x5A, 0x61, 0x6E, 0x74, 0x68,
+ 0x69, 0x61, 0x2C, 0x20, 0x64, 0x69, 0x65, 0x20,
+ 0x4C, 0x61, 0x64, 0x79, 0x20, 0x64, 0x65, 0x72,
+ 0x20, 0x41, 0x6C, 0x63, 0x68, 0x65, 0x6D, 0x69,
+ 0x65, 0x0D, 0x05, 0x48, 0x65, 0x72, 0x6D, 0x61,
+ 0x6E, 0x20, 0x64, 0x65, 0x72, 0x20, 0x47, 0x65,
+ 0x73, 0x63, 0x68, 0x69, 0x63, 0x6B, 0x74, 0x65,
+ 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x05,
+ 0x41, 0x6C, 0x6C, 0x65, 0x20, 0x8E, 0x68, 0x6E,
+ 0x6C, 0x69, 0x63, 0x68, 0x6B, 0x65, 0x69, 0x74,
+ 0x65, 0x6E, 0x20, 0x76, 0x6F, 0x6E, 0x20, 0x69,
+ 0x6D, 0x20, 0x53, 0x70, 0x69, 0x65, 0x6C, 0x20,
+ 0x61, 0x75, 0x66, 0x74, 0x72, 0x65, 0x74, 0x65,
+ 0x6E, 0x64, 0x65, 0x6E, 0x0D, 0x05, 0x46, 0x69,
+ 0x67, 0x75, 0x72, 0x65, 0x6E, 0x20, 0x6D, 0x69,
+ 0x74, 0x20, 0x6C, 0x65, 0x62, 0x65, 0x6E, 0x64,
+ 0x65, 0x6E, 0x20, 0x6F, 0x64, 0x65, 0x72, 0x20,
+ 0x76, 0x65, 0x72, 0x73, 0x74, 0x6F, 0x72, 0x62,
+ 0x65, 0x6E, 0x65, 0x6E, 0x0D, 0x05, 0x50, 0x65,
+ 0x72, 0x73, 0x6F, 0x6E, 0x65, 0x6E, 0x20, 0x73,
+ 0x69, 0x6E, 0x64, 0x20, 0x72, 0x65, 0x69, 0x6E,
+ 0x20, 0x7A, 0x75, 0x66, 0x8E, 0x6C, 0x6C, 0x69,
+ 0x67, 0x2E, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x05,
+ 0x4D, 0x61, 0x78, 0x54, 0x72, 0x61, 0x78, 0xE2,
+ 0x20, 0x6D, 0x75, 0x73, 0x69, 0x63, 0x20, 0x73,
+ 0x6F, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x0D,
+ 0x05, 0x20, 0xE3, 0x20, 0x31, 0x39, 0x39, 0x32,
+ 0x20, 0x53, 0x79, 0x6C, 0x76, 0x61, 0x6E, 0x20,
+ 0x54, 0x65, 0x63, 0x68, 0x6E, 0x69, 0x63, 0x61,
+ 0x6C, 0x20, 0x41, 0x72, 0x74, 0x73, 0x0D, 0x05,
+ 0x4C, 0x69, 0x63, 0x65, 0x6E, 0x73, 0x65, 0x64,
+ 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20,
+ 0x44, 0x72, 0x65, 0x61, 0x6D, 0x65, 0x72, 0x73,
+ 0x20, 0x47, 0x75, 0x69, 0x6C, 0x64, 0x2C, 0x20,
+ 0x49, 0x6E, 0x63, 0x2E, 0x0D, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x05, 0x43, 0x6F, 0x70, 0x79, 0x72,
+ 0x69, 0x67, 0x68, 0x74, 0x20, 0x28, 0x63, 0x29,
+ 0x20, 0x31, 0x39, 0x39, 0x32, 0x2C, 0x20, 0x57,
+ 0x65, 0x73, 0x74, 0x77, 0x6F, 0x6F, 0x64, 0x20,
+ 0x53, 0x74, 0x75, 0x64, 0x69, 0x6F, 0x73, 0x2C,
+ 0x20, 0x49, 0x6E, 0x63, 0x2E, 0x0D, 0x05, 0x41,
+ 0x6C, 0x6C, 0x65, 0x20, 0x52, 0x65, 0x63, 0x68,
+ 0x74, 0x65, 0x20, 0x56, 0x6F, 0x72, 0x62, 0x65,
+ 0x68, 0x61, 0x6C, 0x74, 0x65, 0x6E, 0x2E, 0x0D,
+ 0x0D, 0x0D, 0x0D
+};
+
+static const ByteProvider k1CreditsStringsAmigaGermanProvider = { ARRAYSIZE(k1CreditsStringsAmigaGerman), k1CreditsStringsAmigaGerman };
+
diff --git a/devtools/create_kyradat/resources/lok_dos.h b/devtools/create_kyradat/resources/lok_dos.h
new file mode 100644
index 0000000000..e8d987fe1b
--- /dev/null
+++ b/devtools/create_kyradat/resources/lok_dos.h
@@ -0,0 +1,1925 @@
+static const byte k1KallakWritingSeqDOS[2037] = {
+ 0x00, 0x00, 0x01, 0x0E, 0x1A, 0x1B, 0x17, 0x00,
+ 0x00, 0x00, 0x3F, 0x01, 0xC7, 0x0C, 0x00, 0x0C,
+ 0x00, 0x19, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00,
+ 0x10, 0x05, 0x00, 0x95, 0x00, 0x20, 0x09, 0x14,
+ 0x0F, 0x2E, 0x02, 0x00, 0x01, 0x00, 0x00, 0x10,
+ 0x05, 0x01, 0x94, 0x00, 0x1B, 0x07, 0x06, 0x00,
+ 0x18, 0x1D, 0x02, 0x00, 0x02, 0x00, 0x00, 0x10,
+ 0x05, 0x02, 0x93, 0x00, 0x14, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x03, 0x00, 0x00, 0x10, 0x05, 0x01,
+ 0x90, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x04, 0x00, 0x00, 0x10, 0x05, 0x00, 0x8D, 0x00,
+ 0x20, 0x07, 0x06, 0x00, 0x18, 0x1D, 0x02, 0x00,
+ 0x05, 0x00, 0x00, 0x10, 0x05, 0x01, 0x8A, 0x00,
+ 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00, 0x06, 0x00,
+ 0x00, 0x10, 0x05, 0x02, 0x88, 0x00, 0x14, 0x07,
+ 0x06, 0x00, 0x18, 0x1D, 0x02, 0x00, 0x07, 0x00,
+ 0x00, 0x10, 0x05, 0x01, 0x85, 0x00, 0x1B, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00, 0x10,
+ 0x05, 0x00, 0x82, 0x00, 0x20, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x09, 0x00, 0x00, 0x10, 0x05, 0x01,
+ 0x7F, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x0A, 0x00, 0x00, 0x10, 0x05, 0x02, 0x7C, 0x00,
+ 0x14, 0x07, 0x06, 0x00, 0x18, 0x1D, 0x02, 0x00,
+ 0x0B, 0x00, 0x00, 0x10, 0x05, 0x01, 0x79, 0x00,
+ 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00, 0x0C, 0x00,
+ 0x00, 0x10, 0x05, 0x00, 0x76, 0x00, 0x20, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x0D, 0x00, 0x00, 0x10,
+ 0x05, 0x01, 0x73, 0x00, 0x1B, 0x07, 0x06, 0x00,
+ 0x18, 0x1D, 0x02, 0x00, 0x0E, 0x00, 0x00, 0x10,
+ 0x05, 0x02, 0x70, 0x00, 0x14, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x0F, 0x00, 0x00, 0x10, 0x05, 0x01,
+ 0x6D, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x10, 0x00, 0x00, 0x10, 0x05, 0x00, 0x6A, 0x00,
+ 0x20, 0x07, 0x06, 0x00, 0x02, 0x00, 0x11, 0x00,
+ 0x00, 0x10, 0x05, 0x01, 0x67, 0x00, 0x1B, 0x07,
+ 0x06, 0x00, 0x18, 0x1D, 0x02, 0x00, 0x12, 0x00,
+ 0x00, 0x10, 0x05, 0x02, 0x65, 0x00, 0x14, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x13, 0x00, 0x00, 0x10,
+ 0x05, 0x01, 0x63, 0x00, 0x1B, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x14, 0x00, 0x00, 0x10, 0x05, 0x00,
+ 0x63, 0x00, 0x20, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x15, 0x00, 0x00, 0x10, 0x05, 0x00, 0x65, 0x00,
+ 0x1F, 0x07, 0x06, 0x00, 0x02, 0x00, 0x16, 0x00,
+ 0x00, 0x10, 0x05, 0x00, 0x6A, 0x00, 0x1D, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x17, 0x00, 0x00, 0x10,
+ 0x05, 0x00, 0x70, 0x00, 0x19, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x18, 0x00, 0x00, 0x10, 0x05, 0x00,
+ 0x76, 0x00, 0x17, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x19, 0x00, 0x00, 0x10, 0x05, 0x00, 0x7C, 0x00,
+ 0x16, 0x07, 0x06, 0x00, 0x02, 0x00, 0x1A, 0x00,
+ 0x00, 0x10, 0x05, 0x00, 0x82, 0x00, 0x17, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x1B, 0x00, 0x00, 0x10,
+ 0x05, 0x00, 0x88, 0x00, 0x19, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x1C, 0x00, 0x00, 0x10, 0x05, 0x00,
+ 0x8D, 0x00, 0x1D, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x1D, 0x00, 0x00, 0x10, 0x05, 0x00, 0x93, 0x00,
+ 0x1F, 0x07, 0x06, 0x00, 0x1C, 0x1B, 0x0F, 0x2F,
+ 0x02, 0x00, 0x01, 0x00, 0x00, 0x10, 0x05, 0x01,
+ 0x94, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x01, 0x00, 0x00, 0x10, 0x05, 0x01, 0x94, 0x00,
+ 0x1B, 0x07, 0x06, 0x00, 0x18, 0x1D, 0x02, 0x00,
+ 0x02, 0x00, 0x00, 0x10, 0x05, 0x02, 0x93, 0x00,
+ 0x14, 0x07, 0x06, 0x00, 0x02, 0x00, 0x02, 0x00,
+ 0x00, 0x10, 0x05, 0x02, 0x93, 0x00, 0x14, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x03, 0x00, 0x00, 0x10,
+ 0x05, 0x01, 0x90, 0x00, 0x1B, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x04, 0x00, 0x00, 0x10, 0x05, 0x00,
+ 0x8D, 0x00, 0x20, 0x07, 0x06, 0x00, 0x18, 0x1D,
+ 0x02, 0x00, 0x05, 0x00, 0x00, 0x10, 0x05, 0x01,
+ 0x8A, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x05, 0x00, 0x00, 0x10, 0x05, 0x01, 0x8A, 0x00,
+ 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00, 0x06, 0x00,
+ 0x00, 0x10, 0x05, 0x02, 0x88, 0x00, 0x14, 0x07,
+ 0x06, 0x00, 0x18, 0x1D, 0x02, 0x00, 0x07, 0x00,
+ 0x00, 0x10, 0x05, 0x01, 0x85, 0x00, 0x1B, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00, 0x10,
+ 0x05, 0x00, 0x82, 0x00, 0x20, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x09, 0x00, 0x00, 0x10, 0x05, 0x01,
+ 0x7F, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x0A, 0x00, 0x00, 0x10, 0x05, 0x02, 0x7C, 0x00,
+ 0x14, 0x07, 0x06, 0x00, 0x18, 0x1D, 0x02, 0x00,
+ 0x0B, 0x00, 0x00, 0x10, 0x05, 0x01, 0x79, 0x00,
+ 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00, 0x0C, 0x00,
+ 0x00, 0x10, 0x05, 0x00, 0x76, 0x00, 0x20, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x0D, 0x00, 0x00, 0x10,
+ 0x05, 0x01, 0x73, 0x00, 0x1B, 0x07, 0x06, 0x00,
+ 0x18, 0x1D, 0x02, 0x00, 0x0E, 0x00, 0x00, 0x10,
+ 0x05, 0x02, 0x70, 0x00, 0x14, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x0F, 0x00, 0x00, 0x10, 0x05, 0x01,
+ 0x6D, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x10, 0x00, 0x00, 0x10, 0x05, 0x00, 0x6A, 0x00,
+ 0x20, 0x07, 0x06, 0x00, 0x02, 0x00, 0x11, 0x00,
+ 0x00, 0x10, 0x05, 0x01, 0x67, 0x00, 0x1B, 0x07,
+ 0x06, 0x00, 0x18, 0x1D, 0x02, 0x00, 0x12, 0x00,
+ 0x00, 0x10, 0x05, 0x02, 0x65, 0x00, 0x14, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x13, 0x00, 0x00, 0x10,
+ 0x05, 0x01, 0x63, 0x00, 0x1B, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x14, 0x00, 0x00, 0x10, 0x05, 0x00,
+ 0x63, 0x00, 0x20, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x15, 0x00, 0x00, 0x10, 0x05, 0x00, 0x65, 0x00,
+ 0x1F, 0x07, 0x06, 0x00, 0x02, 0x00, 0x16, 0x00,
+ 0x00, 0x10, 0x05, 0x00, 0x6A, 0x00, 0x1D, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x17, 0x00, 0x00, 0x10,
+ 0x05, 0x00, 0x70, 0x00, 0x19, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x18, 0x00, 0x00, 0x10, 0x05, 0x00,
+ 0x76, 0x00, 0x17, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x19, 0x00, 0x00, 0x10, 0x05, 0x00, 0x7C, 0x00,
+ 0x16, 0x07, 0x06, 0x00, 0x02, 0x00, 0x1A, 0x00,
+ 0x00, 0x10, 0x05, 0x00, 0x82, 0x00, 0x17, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x1B, 0x00, 0x00, 0x10,
+ 0x05, 0x00, 0x88, 0x00, 0x19, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x1C, 0x00, 0x00, 0x10, 0x05, 0x00,
+ 0x8D, 0x00, 0x1D, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x1D, 0x00, 0x00, 0x10, 0x05, 0x00, 0x93, 0x00,
+ 0x1F, 0x07, 0x06, 0x00, 0x1C, 0x1B, 0x0F, 0x30,
+ 0x02, 0x00, 0x01, 0x00, 0x00, 0x10, 0x05, 0x01,
+ 0x94, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x01, 0x00, 0x00, 0x10, 0x05, 0x01, 0x94, 0x00,
+ 0x1B, 0x07, 0x06, 0x00, 0x18, 0x1D, 0x02, 0x00,
+ 0x02, 0x00, 0x00, 0x10, 0x05, 0x02, 0x93, 0x00,
+ 0x14, 0x07, 0x06, 0x00, 0x02, 0x00, 0x02, 0x00,
+ 0x00, 0x10, 0x05, 0x02, 0x93, 0x00, 0x14, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x10,
+ 0x05, 0x02, 0x93, 0x00, 0x14, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x03, 0x00, 0x00, 0x10, 0x05, 0x01,
+ 0x90, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x03, 0x00, 0x00, 0x10, 0x05, 0x01, 0x90, 0x00,
+ 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00, 0x04, 0x00,
+ 0x00, 0x10, 0x05, 0x00, 0x8D, 0x00, 0x20, 0x07,
+ 0x06, 0x00, 0x18, 0x1D, 0x02, 0x00, 0x05, 0x00,
+ 0x00, 0x10, 0x05, 0x01, 0x8A, 0x00, 0x1B, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x06, 0x00, 0x00, 0x10,
+ 0x05, 0x02, 0x88, 0x00, 0x14, 0x07, 0x06, 0x00,
+ 0x18, 0x1D, 0x02, 0x00, 0x07, 0x00, 0x00, 0x10,
+ 0x05, 0x01, 0x85, 0x00, 0x1B, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x08, 0x00, 0x00, 0x10, 0x05, 0x00,
+ 0x82, 0x00, 0x20, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x09, 0x00, 0x00, 0x10, 0x05, 0x01, 0x7F, 0x00,
+ 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00, 0x0A, 0x00,
+ 0x00, 0x10, 0x05, 0x02, 0x7C, 0x00, 0x14, 0x07,
+ 0x06, 0x00, 0x18, 0x1D, 0x02, 0x00, 0x0B, 0x00,
+ 0x00, 0x10, 0x05, 0x01, 0x79, 0x00, 0x1B, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x0C, 0x00, 0x00, 0x10,
+ 0x05, 0x00, 0x76, 0x00, 0x20, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x0D, 0x00, 0x00, 0x10, 0x05, 0x01,
+ 0x73, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x18, 0x1D,
+ 0x02, 0x00, 0x0E, 0x00, 0x00, 0x10, 0x05, 0x02,
+ 0x70, 0x00, 0x14, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x0F, 0x00, 0x00, 0x10, 0x05, 0x01, 0x6D, 0x00,
+ 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00, 0x10, 0x00,
+ 0x00, 0x10, 0x05, 0x00, 0x6A, 0x00, 0x20, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x11, 0x00, 0x00, 0x10,
+ 0x05, 0x01, 0x67, 0x00, 0x1B, 0x07, 0x06, 0x00,
+ 0x18, 0x1D, 0x02, 0x00, 0x12, 0x00, 0x00, 0x10,
+ 0x05, 0x02, 0x65, 0x00, 0x14, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x13, 0x00, 0x00, 0x10, 0x05, 0x01,
+ 0x63, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x14, 0x00, 0x00, 0x10, 0x05, 0x00, 0x63, 0x00,
+ 0x20, 0x07, 0x06, 0x00, 0x02, 0x00, 0x15, 0x00,
+ 0x00, 0x10, 0x05, 0x00, 0x65, 0x00, 0x1F, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x16, 0x00, 0x00, 0x10,
+ 0x05, 0x00, 0x6A, 0x00, 0x1D, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x17, 0x00, 0x00, 0x10, 0x05, 0x00,
+ 0x70, 0x00, 0x19, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x18, 0x00, 0x00, 0x10, 0x05, 0x00, 0x76, 0x00,
+ 0x17, 0x07, 0x06, 0x00, 0x02, 0x00, 0x19, 0x00,
+ 0x00, 0x10, 0x05, 0x00, 0x7C, 0x00, 0x16, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x1A, 0x00, 0x00, 0x10,
+ 0x05, 0x00, 0x82, 0x00, 0x17, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x1B, 0x00, 0x00, 0x10, 0x05, 0x00,
+ 0x88, 0x00, 0x19, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x1C, 0x00, 0x00, 0x10, 0x05, 0x00, 0x8D, 0x00,
+ 0x1D, 0x07, 0x06, 0x00, 0x02, 0x00, 0x1D, 0x00,
+ 0x00, 0x10, 0x05, 0x00, 0x93, 0x00, 0x1F, 0x07,
+ 0x06, 0x00, 0x1C, 0x06, 0x3C, 0x00, 0x1B, 0x0F,
+ 0x31, 0x02, 0x00, 0x00, 0x00, 0x00, 0x10, 0x05,
+ 0x00, 0x95, 0x00, 0x20, 0x07, 0x06, 0x00, 0x02,
+ 0x00, 0x00, 0x00, 0x00, 0x10, 0x05, 0x00, 0x95,
+ 0x00, 0x20, 0x07, 0x06, 0x00, 0x18, 0x1D, 0x02,
+ 0x00, 0x01, 0x00, 0x00, 0x10, 0x05, 0x01, 0x94,
+ 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00, 0x01,
+ 0x00, 0x00, 0x10, 0x05, 0x01, 0x94, 0x00, 0x1B,
+ 0x07, 0x06, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00,
+ 0x10, 0x05, 0x02, 0x93, 0x00, 0x14, 0x07, 0x06,
+ 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x10, 0x05,
+ 0x02, 0x93, 0x00, 0x14, 0x07, 0x06, 0x00, 0x18,
+ 0x1D, 0x02, 0x00, 0x03, 0x00, 0x00, 0x10, 0x05,
+ 0x01, 0x90, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02,
+ 0x00, 0x04, 0x00, 0x00, 0x10, 0x05, 0x00, 0x8D,
+ 0x00, 0x20, 0x07, 0x06, 0x00, 0x02, 0x00, 0x05,
+ 0x00, 0x00, 0x10, 0x05, 0x01, 0x8A, 0x00, 0x1B,
+ 0x07, 0x06, 0x00, 0x18, 0x1D, 0x02, 0x00, 0x06,
+ 0x00, 0x00, 0x10, 0x05, 0x02, 0x88, 0x00, 0x14,
+ 0x07, 0x06, 0x00, 0x02, 0x00, 0x07, 0x00, 0x00,
+ 0x10, 0x05, 0x01, 0x85, 0x00, 0x1B, 0x07, 0x06,
+ 0x00, 0x18, 0x1D, 0x02, 0x00, 0x08, 0x00, 0x00,
+ 0x10, 0x05, 0x00, 0x82, 0x00, 0x20, 0x07, 0x06,
+ 0x00, 0x02, 0x00, 0x09, 0x00, 0x00, 0x10, 0x05,
+ 0x01, 0x7F, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02,
+ 0x00, 0x0A, 0x00, 0x00, 0x10, 0x05, 0x02, 0x7C,
+ 0x00, 0x14, 0x07, 0x06, 0x00, 0x18, 0x1D, 0x02,
+ 0x00, 0x0B, 0x00, 0x00, 0x10, 0x05, 0x01, 0x79,
+ 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00, 0x0C,
+ 0x00, 0x00, 0x10, 0x05, 0x00, 0x76, 0x00, 0x20,
+ 0x07, 0x06, 0x00, 0x18, 0x1D, 0x02, 0x00, 0x0D,
+ 0x00, 0x00, 0x10, 0x05, 0x01, 0x73, 0x00, 0x1B,
+ 0x07, 0x06, 0x00, 0x02, 0x00, 0x0E, 0x00, 0x00,
+ 0x10, 0x05, 0x02, 0x70, 0x00, 0x14, 0x07, 0x06,
+ 0x00, 0x02, 0x00, 0x0F, 0x00, 0x00, 0x10, 0x05,
+ 0x01, 0x6D, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x18,
+ 0x1D, 0x02, 0x00, 0x10, 0x00, 0x00, 0x10, 0x05,
+ 0x00, 0x6A, 0x00, 0x20, 0x07, 0x06, 0x00, 0x02,
+ 0x00, 0x11, 0x00, 0x00, 0x10, 0x05, 0x01, 0x67,
+ 0x00, 0x1B, 0x07, 0x06, 0x00, 0x18, 0x1D, 0x02,
+ 0x00, 0x12, 0x00, 0x00, 0x10, 0x05, 0x02, 0x65,
+ 0x00, 0x14, 0x07, 0x06, 0x00, 0x06, 0x3C, 0x00,
+ 0x02, 0x00, 0x1E, 0x00, 0x00, 0x10, 0x08, 0x12,
+ 0x06, 0x1E, 0x00, 0x0A, 0x01, 0x02, 0x00, 0x1F,
+ 0x00, 0x00, 0x10, 0x07, 0x0A, 0x00, 0x02, 0x00,
+ 0x20, 0x00, 0x00, 0x10, 0x07, 0x0A, 0x00, 0x02,
+ 0x00, 0x21, 0x00, 0x00, 0x10, 0x07, 0x0A, 0x00,
+ 0x02, 0x00, 0x22, 0x00, 0x00, 0x10, 0x07, 0x0A,
+ 0x00, 0x0B, 0x01, 0x02, 0x00, 0x18, 0x1F, 0x06,
+ 0x0A, 0x00, 0x02, 0x00, 0x23, 0x00, 0x00, 0x10,
+ 0x07, 0x14, 0x00, 0x18, 0x1E, 0x02, 0x00, 0x24,
+ 0x00, 0x00, 0x10, 0x07, 0x14, 0x00, 0x02, 0x00,
+ 0x25, 0x00, 0x00, 0x10, 0x07, 0x14, 0x00, 0x18,
+ 0x1F, 0x02, 0x00, 0x26, 0x00, 0x00, 0x10, 0x07,
+ 0x14, 0x00, 0x02, 0x00, 0x27, 0x00, 0x00, 0x10,
+ 0x07, 0x14, 0x00, 0x18, 0x1E, 0x02, 0x00, 0x28,
+ 0x00, 0x00, 0x10, 0x08, 0x06, 0x3C, 0x00, 0x18,
+ 0x1E, 0x03, 0x00, 0x07, 0x06, 0x00, 0x18, 0x1E,
+ 0x03, 0x00, 0x07, 0x06, 0x00, 0x03, 0x00, 0x07,
+ 0x06, 0x00, 0x03, 0x00, 0x07, 0x06, 0x00, 0x03,
+ 0x00, 0x07, 0x06, 0x00, 0x03, 0x00, 0x07, 0x06,
+ 0x00, 0x03, 0x00, 0x07, 0x06, 0x00, 0x18, 0x1E,
+ 0x03, 0x00, 0x07, 0x06, 0x00, 0x03, 0x00, 0x07,
+ 0x06, 0x00, 0x03, 0x00, 0x07, 0x06, 0x00, 0x03,
+ 0x00, 0x07, 0x06, 0x00, 0x03, 0x00, 0x07, 0x06,
+ 0x00, 0x03, 0x00, 0x07, 0x06, 0x00, 0x03, 0x00,
+ 0x07, 0x06, 0x00, 0x03, 0x00, 0x07, 0x06, 0x00,
+ 0x03, 0x00, 0x07, 0x06, 0x00, 0x18, 0x1E, 0x03,
+ 0x00, 0x07, 0x06, 0x00, 0x03, 0x00, 0x07, 0x06,
+ 0x00, 0x03, 0x00, 0x07, 0x06, 0x00, 0x03, 0x00,
+ 0x07, 0x06, 0x00, 0x03, 0x00, 0x07, 0x06, 0x00,
+ 0x03, 0x00, 0x07, 0x06, 0x00, 0x03, 0x00, 0x07,
+ 0x06, 0x00, 0x03, 0x00, 0x07, 0x06, 0x00, 0x18,
+ 0x1E, 0x03, 0x00, 0x07, 0x06, 0x00, 0x03, 0x00,
+ 0x07, 0x06, 0x00, 0x03, 0x00, 0x07, 0x06, 0x00,
+ 0x03, 0x00, 0x07, 0x06, 0x00, 0x03, 0x00, 0x07,
+ 0x06, 0x00, 0x03, 0x00, 0x07, 0x06, 0x00, 0x03,
+ 0x00, 0x07, 0x06, 0x00, 0x03, 0x00, 0x07, 0x06,
+ 0x00, 0x03, 0x00, 0x07, 0x06, 0x00, 0x03, 0x00,
+ 0x07, 0x06, 0x00, 0x13, 0x1C, 0x19, 0x01, 0x06,
+ 0x3C, 0x00, 0x01, 0x00, 0x1D
+};
+
+static const ByteProvider k1KallakWritingSeqDOSProvider = { ARRAYSIZE(k1KallakWritingSeqDOS), k1KallakWritingSeqDOS };
+
+static const byte k1MalcolmTreeSeqDOS[534] = {
+ 0x00, 0x01, 0x00, 0x1A, 0x0E, 0x17, 0x00, 0x00,
+ 0x00, 0x3F, 0x01, 0xC7, 0x0C, 0x00, 0x0C, 0x01,
+ 0x0D, 0x01, 0x09, 0x02, 0x01, 0x00, 0x00, 0x00,
+ 0x10, 0x19, 0x03, 0x09, 0x18, 0x1E, 0x14, 0x18,
+ 0x1F, 0x0A, 0x00, 0x03, 0x01, 0x06, 0x06, 0x00,
+ 0x0B, 0x00, 0x1F, 0x00, 0x18, 0x19, 0x0A, 0x01,
+ 0x03, 0x01, 0x06, 0x06, 0x00, 0x0B, 0x01, 0x0F,
+ 0x00, 0x18, 0x26, 0x10, 0x1F, 0x50, 0x00, 0x2D,
+ 0x05, 0x0A, 0x02, 0x03, 0x01, 0x06, 0x06, 0x00,
+ 0x0B, 0x02, 0x10, 0x00, 0x11, 0x18, 0x1F, 0x03,
+ 0x01, 0x06, 0x06, 0x00, 0x03, 0x01, 0x06, 0x06,
+ 0x00, 0x03, 0x01, 0x06, 0x06, 0x00, 0x18, 0x24,
+ 0x18, 0x1F, 0x03, 0x01, 0x06, 0x06, 0x00, 0x18,
+ 0x1E, 0x0A, 0x03, 0x03, 0x01, 0x06, 0x06, 0x00,
+ 0x0B, 0x03, 0x15, 0x00, 0x10, 0x16, 0x50, 0x00,
+ 0x2D, 0x05, 0x18, 0x1F, 0x03, 0x01, 0x06, 0x06,
+ 0x00, 0x03, 0x01, 0x06, 0x06, 0x00, 0x18, 0x1E,
+ 0x03, 0x01, 0x06, 0x06, 0x00, 0x03, 0x01, 0x06,
+ 0x06, 0x00, 0x18, 0x1F, 0x03, 0x01, 0x06, 0x06,
+ 0x00, 0x03, 0x01, 0x06, 0x06, 0x00, 0x03, 0x01,
+ 0x06, 0x06, 0x00, 0x03, 0x01, 0x06, 0x06, 0x00,
+ 0x18, 0x1E, 0x03, 0x01, 0x06, 0x06, 0x00, 0x18,
+ 0x1A, 0x18, 0x1E, 0x0A, 0x05, 0x03, 0x01, 0x06,
+ 0x06, 0x00, 0x0B, 0x05, 0x09, 0x00, 0x11, 0x0A,
+ 0x06, 0x03, 0x01, 0x06, 0x06, 0x00, 0x0B, 0x06,
+ 0x14, 0x00, 0x18, 0x1A, 0x18, 0x1F, 0x10, 0x17,
+ 0x50, 0x00, 0x2D, 0x05, 0x06, 0x3C, 0x00, 0x0A,
+ 0x07, 0x03, 0x01, 0x06, 0x06, 0x00, 0x0B, 0x07,
+ 0x06, 0x00, 0x18, 0x1E, 0x06, 0x1E, 0x00, 0x10,
+ 0x18, 0x50, 0x00, 0x2D, 0x05, 0x03, 0x01, 0x06,
+ 0x06, 0x00, 0x03, 0x01, 0x06, 0x06, 0x00, 0x03,
+ 0x01, 0x06, 0x06, 0x00, 0x0A, 0x08, 0x04, 0x01,
+ 0x06, 0x06, 0x00, 0x04, 0x01, 0x06, 0x06, 0x00,
+ 0x03, 0x01, 0x06, 0x06, 0x00, 0x03, 0x01, 0x06,
+ 0x06, 0x00, 0x0B, 0x08, 0x01, 0x00, 0x03, 0x01,
+ 0x06, 0x06, 0x00, 0x06, 0x78, 0x00, 0x0A, 0x09,
+ 0x03, 0x01, 0x06, 0x06, 0x00, 0x0B, 0x09, 0x04,
+ 0x00, 0x18, 0x1B, 0x0A, 0x0A, 0x03, 0x01, 0x06,
+ 0x06, 0x00, 0x0B, 0x0A, 0x09, 0x00, 0x06, 0x14,
+ 0x00, 0x10, 0x19, 0x50, 0x00, 0x2D, 0x05, 0x03,
+ 0x01, 0x06, 0x06, 0x00, 0x03, 0x01, 0x06, 0x06,
+ 0x00, 0x0A, 0x0B, 0x03, 0x01, 0x06, 0x06, 0x00,
+ 0x04, 0x01, 0x06, 0x06, 0x00, 0x04, 0x01, 0x06,
+ 0x06, 0x00, 0x03, 0x01, 0x06, 0x06, 0x00, 0x03,
+ 0x01, 0x06, 0x06, 0x00, 0x0B, 0x0B, 0x01, 0x00,
+ 0x03, 0x01, 0x06, 0x06, 0x00, 0x03, 0x01, 0x06,
+ 0x06, 0x00, 0x03, 0x01, 0x06, 0x06, 0x00, 0x10,
+ 0x1A, 0x50, 0x00, 0x2D, 0x05, 0x0A, 0x0C, 0x03,
+ 0x01, 0x06, 0x06, 0x00, 0x0B, 0x0C, 0x12, 0x00,
+ 0x03, 0x01, 0x01, 0x01, 0x11, 0x15, 0x00, 0x02,
+ 0x00, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00,
+ 0x10, 0x10, 0x1C, 0x50, 0x00, 0x2D, 0x05, 0x06,
+ 0x3C, 0x00, 0x03, 0x02, 0x03, 0x02, 0x06, 0x06,
+ 0x00, 0x11, 0x18, 0x1C, 0x0A, 0x0F, 0x03, 0x02,
+ 0x06, 0x06, 0x00, 0x0B, 0x0F, 0x0D, 0x00, 0x10,
+ 0x1D, 0x50, 0x00, 0x2D, 0x05, 0x0A, 0x10, 0x03,
+ 0x02, 0x06, 0x06, 0x00, 0x03, 0x02, 0x06, 0x06,
+ 0x00, 0x03, 0x02, 0x06, 0x06, 0x00, 0x04, 0x02,
+ 0x06, 0x06, 0x00, 0x04, 0x02, 0x06, 0x06, 0x00,
+ 0x04, 0x02, 0x06, 0x06, 0x00, 0x0B, 0x10, 0x02,
+ 0x00, 0x10, 0x1E, 0x50, 0x00, 0x2D, 0x05, 0x0A,
+ 0x11, 0x03, 0x02, 0x06, 0x06, 0x00, 0x03, 0x02,
+ 0x06, 0x06, 0x00, 0x03, 0x02, 0x06, 0x06, 0x00,
+ 0x04, 0x02, 0x06, 0x06, 0x00, 0x04, 0x02, 0x06,
+ 0x06, 0x00, 0x04, 0x02, 0x06, 0x06, 0x00, 0x0B,
+ 0x11, 0x02, 0x00, 0x06, 0xB4, 0x00, 0x13, 0x19,
+ 0x01, 0x01, 0x01, 0x01, 0x02, 0x1D
+};
+
+static const ByteProvider k1MalcolmTreeSeqDOSProvider = { ARRAYSIZE(k1MalcolmTreeSeqDOS), k1MalcolmTreeSeqDOS };
+
+static const byte k1WestwoodLogoSeqDOS[75] = {
+ 0x00, 0x03, 0x01, 0x1A, 0x02, 0x03, 0x00, 0x00,
+ 0x00, 0x00, 0x16, 0x01, 0x06, 0x06, 0x00, 0x06,
+ 0x3C, 0x00, 0x18, 0x14, 0x0A, 0x00, 0x03, 0x03,
+ 0x16, 0x01, 0x0B, 0x00, 0x08, 0x00, 0x06, 0x3C,
+ 0x00, 0x18, 0x27, 0x0A, 0x01, 0x03, 0x03, 0x16,
+ 0x01, 0x0B, 0x01, 0x0B, 0x00, 0x06, 0x78, 0x00,
+ 0x18, 0x14, 0x02, 0x03, 0x0A, 0x00, 0x00, 0x00,
+ 0x16, 0x01, 0x06, 0x06, 0x00, 0x0A, 0x02, 0x04,
+ 0x03, 0x16, 0x01, 0x0B, 0x02, 0x09, 0x00, 0x13,
+ 0x01, 0x03, 0x1D
+};
+
+static const ByteProvider k1WestwoodLogoSeqDOSProvider = { ARRAYSIZE(k1WestwoodLogoSeqDOS), k1WestwoodLogoSeqDOS };
+
+static const byte k1KyrandiaLogoSeqDOS[92] = {
+ 0x15, 0x00, 0x02, 0x00, 0x06, 0x01, 0x1A, 0x02,
+ 0x06, 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x06,
+ 0x06, 0x00, 0x18, 0x14, 0x16, 0x04, 0x0A, 0x00,
+ 0x03, 0x06, 0x16, 0x00, 0x0B, 0x00, 0x0B, 0x00,
+ 0x06, 0x3C, 0x00, 0x18, 0x27, 0x0A, 0x01, 0x03,
+ 0x06, 0x16, 0x00, 0x0B, 0x01, 0x0F, 0x00, 0x06,
+ 0x3C, 0x00, 0x18, 0x27, 0x0A, 0x02, 0x04, 0x06,
+ 0x16, 0x00, 0x0B, 0x02, 0x0F, 0x00, 0x02, 0x06,
+ 0x0D, 0x00, 0x00, 0x00, 0x16, 0x00, 0x06, 0x06,
+ 0x00, 0x06, 0x78, 0x00, 0x18, 0x14, 0x0A, 0x02,
+ 0x04, 0x06, 0x16, 0x00, 0x0B, 0x02, 0x0C, 0x00,
+ 0x13, 0x01, 0x06, 0x1D
+};
+
+static const ByteProvider k1KyrandiaLogoSeqDOSProvider = { ARRAYSIZE(k1KyrandiaLogoSeqDOS), k1KyrandiaLogoSeqDOS };
+
+static const byte k1KallakMalcolmSeqDOS[619] = {
+ 0x00, 0x04, 0x01, 0x1A, 0x0E, 0x17, 0x00, 0x00,
+ 0x00, 0x3F, 0x01, 0xC7, 0x0C, 0x00, 0x0C, 0x03,
+ 0x0D, 0x00, 0x17, 0x00, 0x00, 0x88, 0x3F, 0x01,
+ 0xC7, 0x0C, 0x02, 0x19, 0x00, 0x02, 0x04, 0x00,
+ 0x10, 0x00, 0x3A, 0x09, 0x19, 0x00, 0x19, 0x05,
+ 0x14, 0x18, 0x23, 0x0A, 0x00, 0x03, 0x04, 0x07,
+ 0x07, 0x00, 0x0B, 0x00, 0x22, 0x00, 0x10, 0x02,
+ 0x50, 0x00, 0x3A, 0x05, 0x0A, 0x01, 0x03, 0x04,
+ 0x07, 0x07, 0x00, 0x0B, 0x01, 0x07, 0x00, 0x06,
+ 0x3C, 0x00, 0x10, 0x03, 0x50, 0x00, 0x3A, 0x05,
+ 0x0A, 0x02, 0x03, 0x04, 0x07, 0x07, 0x00, 0x0B,
+ 0x02, 0x17, 0x00, 0x06, 0x3C, 0x00, 0x10, 0x04,
+ 0x50, 0x00, 0x3A, 0x05, 0x0A, 0x03, 0x03, 0x04,
+ 0x07, 0x07, 0x00, 0x0B, 0x03, 0x0A, 0x00, 0x06,
+ 0x3C, 0x00, 0x03, 0x04, 0x07, 0x07, 0x00, 0x03,
+ 0x04, 0x07, 0x07, 0x00, 0x03, 0x04, 0x07, 0x07,
+ 0x00, 0x10, 0x05, 0xF0, 0x00, 0x3A, 0x0F, 0x03,
+ 0x04, 0x07, 0x07, 0x00, 0x03, 0x04, 0x07, 0x07,
+ 0x00, 0x03, 0x04, 0x07, 0x07, 0x00, 0x03, 0x04,
+ 0x07, 0x07, 0x00, 0x06, 0x3C, 0x00, 0x10, 0x06,
+ 0xF0, 0x00, 0x3A, 0x0F, 0x0A, 0x04, 0x03, 0x04,
+ 0x07, 0x07, 0x00, 0x0B, 0x04, 0x12, 0x00, 0x06,
+ 0x3C, 0x00, 0x03, 0x04, 0x07, 0x07, 0x00, 0x03,
+ 0x04, 0x07, 0x07, 0x00, 0x03, 0x04, 0x07, 0x07,
+ 0x00, 0x03, 0x04, 0x07, 0x07, 0x00, 0x06, 0x78,
+ 0x00, 0x10, 0x07, 0xF0, 0x00, 0x3A, 0x0F, 0x0A,
+ 0x05, 0x03, 0x04, 0x07, 0x07, 0x00, 0x0B, 0x05,
+ 0x11, 0x00, 0x06, 0x3C, 0x00, 0x03, 0x04, 0x07,
+ 0x07, 0x00, 0x03, 0x04, 0x07, 0x07, 0x00, 0x10,
+ 0x08, 0x50, 0x00, 0x3A, 0x05, 0x0A, 0x06, 0x03,
+ 0x04, 0x07, 0x07, 0x00, 0x0B, 0x06, 0x07, 0x00,
+ 0x06, 0x3C, 0x00, 0x03, 0x04, 0x07, 0x07, 0x00,
+ 0x03, 0x04, 0x07, 0x07, 0x00, 0x03, 0x04, 0x07,
+ 0x07, 0x00, 0x10, 0x09, 0x50, 0x00, 0x3A, 0x05,
+ 0x0A, 0x07, 0x03, 0x04, 0x07, 0x07, 0x00, 0x0B,
+ 0x07, 0x0A, 0x00, 0x06, 0x3C, 0x00, 0x03, 0x04,
+ 0x07, 0x07, 0x00, 0x10, 0x0A, 0x50, 0x00, 0x3A,
+ 0x05, 0x0A, 0x08, 0x03, 0x04, 0x07, 0x07, 0x00,
+ 0x0B, 0x08, 0x10, 0x00, 0x06, 0x3C, 0x00, 0x03,
+ 0x04, 0x07, 0x07, 0x00, 0x10, 0x0B, 0xF0, 0x00,
+ 0x3A, 0x0F, 0x03, 0x04, 0x07, 0x07, 0x00, 0x03,
+ 0x04, 0x07, 0x07, 0x00, 0x03, 0x04, 0x07, 0x07,
+ 0x00, 0x03, 0x04, 0x07, 0x07, 0x00, 0x03, 0x04,
+ 0x07, 0x07, 0x00, 0x03, 0x04, 0x07, 0x07, 0x00,
+ 0x03, 0x04, 0x07, 0x07, 0x00, 0x03, 0x04, 0x07,
+ 0x07, 0x00, 0x06, 0x3C, 0x00, 0x03, 0x04, 0x07,
+ 0x07, 0x00, 0x10, 0x0C, 0xF0, 0x00, 0x3A, 0x0F,
+ 0x0A, 0x09, 0x03, 0x04, 0x07, 0x07, 0x00, 0x0B,
+ 0x09, 0x0E, 0x00, 0x06, 0x3C, 0x00, 0x03, 0x04,
+ 0x07, 0x07, 0x00, 0x03, 0x04, 0x07, 0x07, 0x00,
+ 0x03, 0x04, 0x07, 0x07, 0x00, 0x03, 0x04, 0x07,
+ 0x07, 0x00, 0x03, 0x04, 0x07, 0x07, 0x00, 0x03,
+ 0x04, 0x07, 0x07, 0x00, 0x10, 0x0D, 0x50, 0x00,
+ 0x3A, 0x05, 0x0A, 0x0A, 0x03, 0x04, 0x07, 0x07,
+ 0x00, 0x0B, 0x0A, 0x0E, 0x00, 0x06, 0x3C, 0x00,
+ 0x0A, 0x0B, 0x03, 0x04, 0x07, 0x07, 0x00, 0x0B,
+ 0x0B, 0x02, 0x00, 0x18, 0x20, 0x0A, 0x0C, 0x03,
+ 0x04, 0x07, 0x07, 0x00, 0x0B, 0x0C, 0x06, 0x00,
+ 0x18, 0x21, 0x0A, 0x0D, 0x03, 0x04, 0x07, 0x07,
+ 0x00, 0x0B, 0x0D, 0x0C, 0x00, 0x18, 0x22, 0x0A,
+ 0x0E, 0x03, 0x04, 0x07, 0x07, 0x00, 0x0B, 0x0E,
+ 0x0B, 0x00, 0x10, 0x0E, 0x50, 0x00, 0x3A, 0x05,
+ 0x0A, 0x0F, 0x03, 0x04, 0x07, 0x07, 0x00, 0x0B,
+ 0x0F, 0x09, 0x00, 0x06, 0x3C, 0x00, 0x03, 0x04,
+ 0x07, 0x07, 0x00, 0x10, 0x0F, 0x50, 0x00, 0x3A,
+ 0x05, 0x0A, 0x10, 0x03, 0x04, 0x07, 0x07, 0x00,
+ 0x0B, 0x10, 0x09, 0x00, 0x06, 0x3C, 0x00, 0x03,
+ 0x04, 0x07, 0x07, 0x00, 0x10, 0x10, 0x50, 0x00,
+ 0x3A, 0x05, 0x0A, 0x11, 0x03, 0x04, 0x07, 0x07,
+ 0x00, 0x0B, 0x11, 0x0F, 0x00, 0x06, 0x3C, 0x00,
+ 0x03, 0x04, 0x07, 0x07, 0x00, 0x10, 0x11, 0x50,
+ 0x00, 0x3A, 0x05, 0x0A, 0x12, 0x03, 0x04, 0x07,
+ 0x07, 0x00, 0x0B, 0x12, 0x14, 0x00, 0x06, 0x3C,
+ 0x00, 0x0A, 0x13, 0x03, 0x04, 0x07, 0x07, 0x00,
+ 0x0B, 0x13, 0x06, 0x00, 0x18, 0x23, 0x0A, 0x13,
+ 0x03, 0x04, 0x07, 0x07, 0x00, 0x0B, 0x13, 0x07,
+ 0x00, 0x11, 0x06, 0x3C, 0x00, 0x13, 0x19, 0x01,
+ 0x01, 0x04, 0x1D
+};
+
+static const ByteProvider k1KallakMalcolmSeqDOSProvider = { ARRAYSIZE(k1KallakMalcolmSeqDOS), k1KallakMalcolmSeqDOS };
+
+static const byte k1ForestSeqDOS[405] = {
+ 0x00, 0x05, 0x01, 0x00, 0x07, 0x01, 0x1A, 0x02,
+ 0x07, 0x00, 0x00, 0x00, 0x08, 0x02, 0x05, 0x00,
+ 0x98, 0x00, 0x38, 0x0A, 0x00, 0x03, 0x07, 0x16,
+ 0x02, 0x06, 0x09, 0x00, 0x0B, 0x00, 0x41, 0x00,
+ 0x18, 0x16, 0x03, 0x07, 0x02, 0x05, 0x01, 0x98,
+ 0x00, 0x38, 0x16, 0x02, 0x16, 0x03, 0x06, 0x09,
+ 0x00, 0x03, 0x07, 0x02, 0x05, 0x03, 0x98, 0x00,
+ 0x38, 0x16, 0x02, 0x16, 0x03, 0x06, 0x09, 0x00,
+ 0x03, 0x07, 0x02, 0x05, 0x01, 0x98, 0x00, 0x38,
+ 0x16, 0x02, 0x16, 0x03, 0x06, 0x09, 0x00, 0x03,
+ 0x07, 0x02, 0x05, 0x00, 0x98, 0x00, 0x38, 0x16,
+ 0x02, 0x16, 0x03, 0x06, 0x09, 0x00, 0x0A, 0x05,
+ 0x03, 0x07, 0x16, 0x02, 0x06, 0x09, 0x00, 0x0B,
+ 0x05, 0x0E, 0x00, 0x18, 0x16, 0x03, 0x07, 0x02,
+ 0x05, 0x01, 0x98, 0x00, 0x38, 0x16, 0x02, 0x16,
+ 0x03, 0x06, 0x09, 0x00, 0x03, 0x07, 0x02, 0x05,
+ 0x03, 0x98, 0x00, 0x38, 0x16, 0x02, 0x16, 0x03,
+ 0x06, 0x09, 0x00, 0x03, 0x07, 0x02, 0x05, 0x01,
+ 0x98, 0x00, 0x38, 0x16, 0x02, 0x16, 0x03, 0x06,
+ 0x09, 0x00, 0x03, 0x07, 0x02, 0x05, 0x04, 0x98,
+ 0x00, 0x38, 0x16, 0x02, 0x16, 0x03, 0x06, 0x09,
+ 0x00, 0x03, 0x07, 0x16, 0x02, 0x06, 0x09, 0x00,
+ 0x03, 0x07, 0x16, 0x02, 0x06, 0x09, 0x00, 0x03,
+ 0x07, 0x02, 0x05, 0x05, 0x98, 0x00, 0x38, 0x16,
+ 0x02, 0x16, 0x03, 0x06, 0x09, 0x00, 0x03, 0x07,
+ 0x16, 0x02, 0x06, 0x09, 0x00, 0x03, 0x07, 0x16,
+ 0x02, 0x06, 0x09, 0x00, 0x03, 0x07, 0x02, 0x05,
+ 0x06, 0x98, 0x00, 0x38, 0x16, 0x02, 0x16, 0x03,
+ 0x06, 0x09, 0x00, 0x03, 0x07, 0x16, 0x02, 0x06,
+ 0x09, 0x00, 0x03, 0x07, 0x16, 0x02, 0x06, 0x09,
+ 0x00, 0x18, 0x25, 0x0A, 0x00, 0x03, 0x07, 0x03,
+ 0x05, 0x16, 0x02, 0x16, 0x03, 0x06, 0x09, 0x00,
+ 0x0B, 0x00, 0x09, 0x00, 0x0A, 0x06, 0x03, 0x07,
+ 0x16, 0x02, 0x06, 0x09, 0x00, 0x0B, 0x06, 0x0E,
+ 0x00, 0x18, 0x17, 0x0A, 0x01, 0x03, 0x07, 0x03,
+ 0x05, 0x16, 0x02, 0x16, 0x03, 0x06, 0x09, 0x00,
+ 0x0B, 0x01, 0x0D, 0x00, 0x18, 0x25, 0x0A, 0x07,
+ 0x03, 0x07, 0x16, 0x02, 0x06, 0x09, 0x00, 0x0B,
+ 0x07, 0x0E, 0x00, 0x18, 0x18, 0x03, 0x07, 0x03,
+ 0x05, 0x16, 0x02, 0x16, 0x03, 0x06, 0x09, 0x00,
+ 0x03, 0x07, 0x03, 0x05, 0x16, 0x02, 0x16, 0x03,
+ 0x06, 0x09, 0x00, 0x03, 0x07, 0x03, 0x05, 0x16,
+ 0x02, 0x16, 0x03, 0x06, 0x09, 0x00, 0x03, 0x07,
+ 0x03, 0x05, 0x16, 0x02, 0x16, 0x03, 0x06, 0x09,
+ 0x00, 0x03, 0x07, 0x03, 0x05, 0x16, 0x02, 0x16,
+ 0x03, 0x06, 0x09, 0x00, 0x06, 0x12, 0x00, 0x18,
+ 0x25, 0x0A, 0x02, 0x03, 0x07, 0x03, 0x05, 0x16,
+ 0x02, 0x16, 0x03, 0x06, 0x09, 0x00, 0x0B, 0x02,
+ 0x07, 0x00, 0x0A, 0x03, 0x03, 0x07, 0x16, 0x02,
+ 0x06, 0x09, 0x00, 0x0B, 0x03, 0x0F, 0x00, 0x13,
+ 0x01, 0x07, 0x01, 0x05, 0x1D
+};
+
+static const ByteProvider k1ForestSeqDOSProvider = { ARRAYSIZE(k1ForestSeqDOS), k1ForestSeqDOS };
+
+static const char *const k1IntroCPSStringsDOS[2] = {
+ "gemcut.cps",
+ "tree.cps"
+};
+
+static const StringListProvider k1IntroCPSStringsDOSProvider = { ARRAYSIZE(k1IntroCPSStringsDOS), k1IntroCPSStringsDOS };
+
+static const char *const k1IntroCOLStringsDOS[4] = {
+ "kallak.col",
+ "tree_exp.col",
+ "ww.col",
+ "mal-kal.col"
+};
+
+static const StringListProvider k1IntroCOLStringsDOSProvider = { ARRAYSIZE(k1IntroCOLStringsDOS), k1IntroCOLStringsDOS };
+
+static const char *const k1IntroWSAStringsDOS[11] = {
+ "kallak.wsa",
+ "tree1.wsa",
+ "tree2.wsa",
+ "westwood.wsa",
+ "mal-kal.wsa",
+ "destruct.wsa",
+ "kyrandia.wsa",
+ "shore.wsa",
+ "reunion.wsa",
+ "reuniont.wsa",
+ "latern.wsa"
+};
+
+static const StringListProvider k1IntroWSAStringsDOSProvider = { ARRAYSIZE(k1IntroWSAStringsDOS), k1IntroWSAStringsDOS };
+
+static const Room k1RoomListDOS[246] = {
+ { 30, 0xFFFF, 0xFFFF, 0x0001, 0xFFFF },
+ { 71, 0xFFFF, 0xFFFF, 0x0005, 0xFFFF },
+ { 44, 0xFFFF, 0x0003, 0xFFFF, 0xFFFF },
+ { 72, 0xFFFF, 0xFFFF, 0x000E, 0xFFFF },
+ { 48, 0xFFFF, 0x0005, 0xFFFF, 0x000E },
+ { 74, 0xFFFF, 0x000A, 0xFFFF, 0x0004 },
+ { 46, 0xFFFF, 0x000F, 0xFFFF, 0x000B },
+ { 75, 0xFFFF, 0x0009, 0xFFFF, 0x0018 },
+ { 13, 0xFFFF, 0x000C, 0xFFFF, 0x000A },
+ { 5, 0x000D, 0xFFFF, 0xFFFF, 0x0007 },
+ { 84, 0xFFFF, 0x0008, 0xFFFF, 0x0005 },
+ { 37, 0xFFFF, 0x0006, 0x000C, 0x0010 },
+ { 51, 0x000B, 0xFFFF, 0x000D, 0x0008 },
+ { 23, 0x000C, 0xFFFF, 0x0009, 0xFFFF },
+ { 25, 0x0003, 0x0004, 0xFFFF, 0xFFFF },
+ { 11, 0xFFFF, 0xFFFF, 0xFFFF, 0x0006 },
+ { 86, 0xFFFF, 0x000B, 0xFFFF, 0xFFFF },
+ { 84, 0xFFFF, 0x0022, 0x0017, 0x0016 },
+ { 51, 0x0020, 0x0014, 0x0024, 0x0015 },
+ { 85, 0x0014, 0x0019, 0xFFFF, 0x0024 },
+ { 33, 0x001C, 0xFFFF, 0x0013, 0x0012 },
+ { 31, 0x0022, 0x0012, 0xFFFF, 0x0017 },
+ { 25, 0x001F, 0x0011, 0xFFFF, 0xFFFF },
+ { 25, 0x0011, 0x0015, 0xFFFF, 0xFFFF },
+ { 2, 0xFFFF, 0x0007, 0xFFFF, 0x001A },
+ { 82, 0xFFFF, 0x006D, 0xFFFF, 0x0013 },
+ { 77, 0xFFFF, 0x0018, 0x0021, 0xFFFF },
+ { 15, 0xFFFF, 0x001A, 0xFFFF, 0xFFFF },
+ { 16, 0xFFFF, 0xFFFF, 0x0014, 0x0020 },
+ { 19, 0xFFFF, 0x0021, 0xFFFF, 0x001F },
+ { 12, 0xFFFF, 0xFFFF, 0x0020, 0x0021 },
+ { 7, 0x0023, 0x001D, 0x0016, 0xFFFF },
+ { 20, 0x001E, 0x001C, 0x0012, 0x0022 },
+ { 17, 0x001A, 0x001E, 0x0022, 0x001D },
+ { 22, 0x0021, 0x0020, 0x0015, 0x0011 },
+ { 24, 0xFFFF, 0xFFFF, 0x001F, 0xFFFF },
+ { 32, 0x0012, 0x0013, 0xFFFF, 0xFFFF },
+ { 87, 0xFFFF, 0x0026, 0xFFFF, 0xFFFF },
+ { 8, 0xFFFF, 0x0027, 0xFFFF, 0x0025 },
+ { 88, 0xFFFF, 0x0035, 0x0037, 0x0026 },
+ { 35, 0xFFFF, 0x0036, 0x0038, 0xFFFF },
+ { 47, 0xFFFF, 0xFFFF, 0x003B, 0xFFFF },
+ { 28, 0x0035, 0x002B, 0x002F, 0x0037 },
+ { 36, 0xFFFF, 0x002C, 0xFFFF, 0x002A },
+ { 78, 0xFFFF, 0xFFFF, 0xFFFF, 0x002B },
+ { 10, 0xFFFF, 0xFFFF, 0xFFFF, 0x002C },
+ { 51, 0x0037, 0x002F, 0x0040, 0x003C },
+ { 38, 0x002A, 0x003D, 0x0041, 0x002E },
+ { 81, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 41, 0xFFFF, 0xFFFF, 0x0069, 0xFFFF },
+ { 50, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 18, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 49, 0xFFFF, 0xFFFF, 0x0054, 0xFFFF },
+ { 105, 0xFFFF, 0xFFFF, 0x002A, 0x0027 },
+ { 105, 0xFFFF, 0xFFFF, 0x0039, 0x0028 },
+ { 37, 0x0027, 0x002A, 0x002E, 0x0049 },
+ { 34, 0x0028, 0x0039, 0xFFFF, 0xFFFF },
+ { 51, 0x0036, 0x003A, 0xFFFF, 0x0038 },
+ { 84, 0xFFFF, 0x003B, 0xFFFF, 0x0039 },
+ { 1, 0x0029, 0xFFFF, 0x003E, 0x003A },
+ { 37, 0x0049, 0x002E, 0x003F, 0xFFFF },
+ { 33, 0xFFFF, 0xFFFF, 0xFFFF, 0x002F },
+ { 34, 0x003B, 0x003F, 0xFFFF, 0xFFFF },
+ { 85, 0x003C, 0x0040, 0xFFFF, 0x003E },
+ { 106, 0x002E, 0x0041, 0xFFFF, 0x003F },
+ { 33, 0x002F, 0xFFFF, 0xFFFF, 0x0040 },
+ { 60, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 11, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 33, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 26, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 0, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 25, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 23, 0xFFFF, 0x0037, 0x003C, 0xFFFF },
+ { 6, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 51, 0x0063, 0x0067, 0x006B, 0x0066 },
+ { 66, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 67, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 62, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 65, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 18, 0x0056, 0x005A, 0x005E, 0xFFFF },
+ { 6, 0xFFFF, 0x0052, 0x0056, 0xFFFF },
+ { 4, 0xFFFF, 0x0053, 0x0057, 0x0051 },
+ { 3, 0xFFFF, 0x0054, 0xFFFF, 0x0052 },
+ { 37, 0x0034, 0x0055, 0x0058, 0x0053 },
+ { 11, 0xFFFF, 0xFFFF, 0x0059, 0x0054 },
+ { 37, 0x0051, 0x0057, 0x0050, 0xFFFF },
+ { 51, 0x0052, 0xFFFF, 0x005A, 0x0056 },
+ { 51, 0x0054, 0x0059, 0x005C, 0xFFFF },
+ { 1, 0x0055, 0xFFFF, 0x005D, 0x0058 },
+ { 106, 0x0057, 0x005B, 0xFFFF, 0x0050 },
+ { 85, 0xFFFF, 0x005C, 0xFFFF, 0x005A },
+ { 37, 0x0058, 0x005D, 0x005F, 0x005B },
+ { 33, 0x0059, 0xFFFF, 0xFFFF, 0x005C },
+ { 51, 0x0050, 0xFFFF, 0x0061, 0xFFFF },
+ { 51, 0x005C, 0xFFFF, 0x0064, 0xFFFF },
+ { 37, 0xFFFF, 0x0061, 0x0065, 0xFFFF },
+ { 51, 0x005E, 0x0062, 0xFFFF, 0x0060 },
+ { 84, 0xFFFF, 0x0063, 0x0066, 0x0061 },
+ { 84, 0xFFFF, 0x0064, 0x004B, 0x0062 },
+ { 33, 0x005F, 0xFFFF, 0x0067, 0x0063 },
+ { 51, 0x0060, 0xFFFF, 0x0068, 0xFFFF },
+ { 37, 0x0062, 0x004B, 0x006A, 0xFFFF },
+ { 1, 0x0064, 0xFFFF, 0x006C, 0x004B },
+ { 34, 0x0065, 0x0069, 0xFFFF, 0xFFFF },
+ { 51, 0x0031, 0x006A, 0xFFFF, 0x0068 },
+ { 85, 0x0066, 0x006B, 0xFFFF, 0x0069 },
+ { 106, 0x004B, 0x006C, 0xFFFF, 0x006A },
+ { 33, 0x0067, 0xFFFF, 0xFFFF, 0x006B },
+ { 55, 0x00C4, 0x00C5, 0xFFFF, 0x0019 },
+ { 52, 0xFFFF, 0x00C1, 0xFFFF, 0x0096 },
+ { 64, 0xFFFF, 0x00BF, 0xFFFF, 0x008C },
+ { 57, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 54, 0x00AF, 0xFFFF, 0x00B7, 0x00AC },
+ { 53, 0x0078, 0xFFFF, 0x0079, 0xFFFF },
+ { 29, 0xFFFF, 0x00BB, 0xFFFF, 0x00C5 },
+ { 69, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 76, 0x00C6, 0xFFFF, 0xFFFF, 0x00B1 },
+ { 59, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 58, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 59, 0xFFFF, 0x0025, 0x0072, 0xFFFF },
+ { 58, 0x0072, 0x007B, 0x00BB, 0xFFFF },
+ { 58, 0xFFFF, 0x007F, 0x007B, 0xFFFF },
+ { 59, 0x007A, 0xFFFF, 0x007C, 0x0079 },
+ { 58, 0x007B, 0x0081, 0x00BC, 0xFFFF },
+ { 58, 0x00BC, 0x0083, 0xFFFF, 0xFFFF },
+ { 58, 0xFFFF, 0x0085, 0x007F, 0xFFFF },
+ { 59, 0x007E, 0x0086, 0x0080, 0x007A },
+ { 58, 0x007F, 0x00BD, 0x0081, 0xFFFF },
+ { 59, 0x0080, 0x0087, 0x0082, 0x007C },
+ { 58, 0x0081, 0xFFFF, 0x0083, 0x00BC },
+ { 59, 0x0082, 0x0089, 0x0084, 0x007D },
+ { 58, 0x0083, 0x008A, 0xFFFF, 0xFFFF },
+ { 59, 0xFFFF, 0x008B, 0x0086, 0x007E },
+ { 58, 0x0085, 0x008C, 0x00BD, 0x007F },
+ { 58, 0x00BD, 0x008E, 0x0088, 0x0081 },
+ { 59, 0x0087, 0xFFFF, 0x0089, 0xFFFF },
+ { 58, 0x0088, 0x0090, 0x008A, 0x0083 },
+ { 59, 0x0089, 0x0091, 0xFFFF, 0x0084 },
+ { 58, 0xFFFF, 0x0092, 0x008C, 0x0085 },
+ { 59, 0x008B, 0x006F, 0x008D, 0x0086 },
+ { 58, 0x008C, 0x0093, 0x008E, 0x00BD },
+ { 59, 0x008D, 0xFFFF, 0xFFFF, 0x0087 },
+ { 58, 0xFFFF, 0x00BE, 0x0090, 0xFFFF },
+ { 59, 0x008F, 0x0095, 0x0091, 0x0089 },
+ { 58, 0x0090, 0x0096, 0xFFFF, 0x008A },
+ { 59, 0xFFFF, 0x0098, 0xFFFF, 0x008B },
+ { 59, 0xFFFF, 0xFFFF, 0xFFFF, 0x008D },
+ { 58, 0xFFFF, 0x009A, 0x00BE, 0xFFFF },
+ { 58, 0x00BE, 0xFFFF, 0x0096, 0x0090 },
+ { 59, 0x0095, 0x006E, 0x0097, 0x0091 },
+ { 58, 0x0096, 0x009D, 0xFFFF, 0xFFFF },
+ { 58, 0xFFFF, 0x009E, 0x00BF, 0x0092 },
+ { 58, 0x00BF, 0x00A0, 0x009A, 0xFFFF },
+ { 59, 0x0099, 0xFFFF, 0x009B, 0x0094 },
+ { 58, 0x009A, 0xFFFF, 0x009C, 0xFFFF },
+ { 59, 0x009B, 0x00A2, 0xFFFF, 0xFFFF },
+ { 59, 0xFFFF, 0x00A3, 0xFFFF, 0x0097 },
+ { 59, 0xFFFF, 0xFFFF, 0x009F, 0x0098 },
+ { 58, 0x009E, 0x00A4, 0x00A0, 0x00BF },
+ { 59, 0x009F, 0x00A5, 0xFFFF, 0x0099 },
+ { 58, 0xFFFF, 0x00A6, 0x00C0, 0xFFFF },
+ { 58, 0x00C0, 0x00A8, 0xFFFF, 0x009C },
+ { 58, 0x00C1, 0xFFFF, 0xFFFF, 0x009D },
+ { 59, 0xFFFF, 0x00AA, 0x00A5, 0x009F },
+ { 58, 0x00A4, 0x00AB, 0x00A6, 0x00A0 },
+ { 59, 0x00A5, 0x00AC, 0x00A7, 0x00A1 },
+ { 58, 0x00A6, 0xFFFF, 0xFFFF, 0x00C0 },
+ { 59, 0xFFFF, 0x00AD, 0x00A9, 0x00A2 },
+ { 58, 0x00A8, 0x00AE, 0xFFFF, 0x00C1 },
+ { 58, 0xFFFF, 0xFFFF, 0x00AB, 0x00A4 },
+ { 59, 0x00AA, 0x00AF, 0x00AC, 0x00A5 },
+ { 58, 0x00AB, 0x0071, 0x00C2, 0x00A6 },
+ { 58, 0xFFFF, 0x00B0, 0x00AE, 0x00A8 },
+ { 59, 0x00AD, 0xFFFF, 0xFFFF, 0x00A9 },
+ { 58, 0xFFFF, 0x00C3, 0x0071, 0x00AB },
+ { 59, 0xFFFF, 0xFFFF, 0x00B1, 0x00AD },
+ { 58, 0x00B0, 0x0075, 0xFFFF, 0xFFFF },
+ { 59, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 59, 0x00C3, 0xFFFF, 0x00B4, 0xFFFF },
+ { 59, 0x00B3, 0x00BA, 0xFFFF, 0xFFFF },
+ { 58, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 59, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 58, 0x0071, 0xFFFF, 0xFFFF, 0x00C2 },
+ { 58, 0xFFFF, 0xFFFF, 0x00B9, 0xFFFF },
+ { 59, 0x00B8, 0xFFFF, 0xFFFF, 0x00C3 },
+ { 58, 0xFFFF, 0xFFFF, 0xFFFF, 0x00B4 },
+ { 59, 0x0079, 0xFFFF, 0xFFFF, 0x0073 },
+ { 59, 0x007C, 0x0082, 0x007D, 0xFFFF },
+ { 59, 0x0086, 0x008D, 0x0087, 0x0080 },
+ { 59, 0x0094, 0xFFFF, 0x0095, 0x008F },
+ { 59, 0x0098, 0x009F, 0x0099, 0x006F },
+ { 59, 0x00A1, 0x00A7, 0x00A2, 0xFFFF },
+ { 59, 0xFFFF, 0x00A9, 0x00A3, 0x006E },
+ { 59, 0x00AC, 0x00B7, 0xFFFF, 0xFFFF },
+ { 58, 0xFFFF, 0x00B9, 0x00B3, 0x00AF },
+ { 59, 0xFFFF, 0xFFFF, 0x006D, 0xFFFF },
+ { 58, 0xFFFF, 0x0073, 0xFFFF, 0x006D },
+ { 59, 0xFFFF, 0xFFFF, 0x0075, 0xFFFF },
+ { 94, 0xFFFF, 0x00C8, 0xFFFF, 0xFFFF },
+ { 43, 0x00C9, 0x00CB, 0x00CA, 0x00C7 },
+ { 51, 0xFFFF, 0xFFFF, 0x00C8, 0xFFFF },
+ { 37, 0x00C8, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 79, 0xFFFF, 0xFFFF, 0xFFFF, 0x00C8 },
+ { 80, 0xFFFF, 0xFFFF, 0x00CB, 0x00CD },
+ { 97, 0x00E3, 0x00D4, 0x00CC, 0x00D3 },
+ { 103, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 100, 0xFFFF, 0x00CE, 0x00D5, 0xFFFF },
+ { 98, 0xFFFF, 0xFFFF, 0xFFFF, 0x00D7 },
+ { 101, 0xFFFF, 0x00D2, 0x00CE, 0xFFFF },
+ { 99, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 93, 0x00D5, 0x00CD, 0xFFFF, 0xFFFF },
+ { 93, 0x00D6, 0xFFFF, 0xFFFF, 0x00CD },
+ { 93, 0x00CF, 0x00CE, 0x00D3, 0xFFFF },
+ { 93, 0x00D7, 0xFFFF, 0x00D4, 0x00CE },
+ { 93, 0xFFFF, 0x00D0, 0x00D6, 0x00CE },
+ { 93, 0x00DA, 0x00E3, 0xFFFF, 0xFFFF },
+ { 93, 0x00DB, 0xFFFF, 0xFFFF, 0x00E3 },
+ { 93, 0xFFFF, 0x00E4, 0x00D8, 0x00E2 },
+ { 93, 0xFFFF, 0x00E1, 0x00D9, 0x00E4 },
+ { 93, 0xFFFF, 0x00E4, 0xFFFF, 0x00DF },
+ { 93, 0xFFFF, 0x00E0, 0xFFFF, 0x00E4 },
+ { 93, 0xFFFF, 0xFFFF, 0x00E4, 0xFFFF },
+ { 91, 0xFFFF, 0x00DC, 0xFFFF, 0xFFFF },
+ { 90, 0xFFFF, 0xFFFF, 0xFFFF, 0x00DD },
+ { 92, 0xFFFF, 0xFFFF, 0xFFFF, 0x00DB },
+ { 95, 0xFFFF, 0x00DA, 0xFFFF, 0xFFFF },
+ { 96, 0xFFFF, 0x00D9, 0x00CD, 0x00D8 },
+ { 89, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 102, 0xFFFF, 0x00E6, 0xFFFF, 0xFFFF },
+ { 102, 0xFFFF, 0x00EA, 0x00E8, 0x00E5 },
+ { 102, 0xFFFF, 0x00E8, 0x00EB, 0xFFFF },
+ { 102, 0x00E6, 0xFFFF, 0xFFFF, 0x00E7 },
+ { 102, 0xFFFF, 0xFFFF, 0x00ED, 0xFFFF },
+ { 102, 0xFFFF, 0xFFFF, 0xFFFF, 0x00E6 },
+ { 102, 0x00E7, 0x00EC, 0x00EF, 0xFFFF },
+ { 102, 0xFFFF, 0x00ED, 0x00F0, 0x00EB },
+ { 102, 0x00E9, 0x00EE, 0x00F1, 0x00EC },
+ { 102, 0xFFFF, 0xFFFF, 0x00F2, 0x00ED },
+ { 102, 0x00EB, 0x00F0, 0xFFFF, 0xFFFF },
+ { 102, 0x00EC, 0x00F1, 0x00F3, 0x00EF },
+ { 102, 0x00ED, 0xFFFF, 0x00F4, 0x00F0 },
+ { 102, 0x00EE, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 102, 0x00F0, 0x00F4, 0xFFFF, 0xFFFF },
+ { 102, 0x00F1, 0x00F5, 0xFFFF, 0x00F3 },
+ { 102, 0xFFFF, 0xFFFF, 0x00CF, 0x00F4 }
+};
+
+static const RoomProvider k1RoomListDOSProvider = { ARRAYSIZE(k1RoomListDOS), k1RoomListDOS };
+
+static const char *const k1RoomFilenamesDOS[107] = {
+ "CLIFFB",
+ "XEDGEB",
+ "CAVEB",
+ "NCLIFF",
+ "NCLIFFB",
+ "CAVE",
+ "NWCLIFF",
+ "OAKS",
+ "PLATEAU",
+ "POTHUT",
+ "POTION",
+ "NWCLIFB",
+ "SONG",
+ "SORROW",
+ "SPELHUT",
+ "SPELL",
+ "SPRING",
+ "SQUARE",
+ "STUMP",
+ "TEMPLE",
+ "WELL",
+ "WILLOW",
+ "WISE",
+ "XEDGE",
+ "RUBY",
+ "ZROCK",
+ "ZROCKB",
+ "FORESTD",
+ "FOUNTN",
+ "GATECV",
+ "GEMCUT",
+ "CLIFF",
+ "DEAD",
+ "EDGE",
+ "EDGEB",
+ "FALLS",
+ "FORESTC",
+ "FORESTB",
+ "GLADE",
+ "GEMHUT",
+ "ALGAE",
+ "MIX",
+ "BRIDGE",
+ "GRAVE",
+ "HEALER",
+ "HEALHUT",
+ "ALTAR",
+ "BURN",
+ "SICKWIL",
+ "LAGOON",
+ "MAPLE",
+ "FORESTA",
+ "ARCH",
+ "CHASM",
+ "EMCAV",
+ "ENTER",
+ "FLOWERS",
+ "GEMSLOT",
+ "GEN_CAV",
+ "GENCAVB",
+ "GOLDEN",
+ "GOLDENB",
+ "ICE",
+ "MARKET",
+ "MOONCAV",
+ "MSHCAV",
+ "POOL",
+ "SEASONS",
+ "SHRINE",
+ "TREECAV",
+ "EXTGEM",
+ "GEM",
+ "EXTHEAL",
+ "BASE",
+ "TRUNK",
+ "BROKEN",
+ "LAVA",
+ "EXTSPEL",
+ "EXTPOT",
+ "CASTLE",
+ "CGATE",
+ "LEPHOLE",
+ "DRAGON",
+ "XEDGEC",
+ "FNORTH",
+ "FSOUTH",
+ "FGOWEST",
+ "PLTCAVE",
+ "BONKBG",
+ "BALCONY",
+ "DARMS",
+ "BRINS",
+ "ALCHEMY",
+ "GENHALL",
+ "LANDING",
+ "BELROOM",
+ "UPSTAIR",
+ "DNSTAIR",
+ "KITCHEN",
+ "KYRAGEM",
+ "LIBRARY",
+ "FOYER",
+ "CATACOM",
+ "GRTHALL",
+ "FESTSTH",
+ "FWSTSTH",
+ "FSOUTHB"
+};
+
+static const StringListProvider k1RoomFilenamesDOSProvider = { ARRAYSIZE(k1RoomFilenamesDOS), k1RoomFilenamesDOS };
+
+static const char *const k1CharacterImageFilenamesDOS[20] = {
+ "BRANDON.CPS",
+ "DAPHNE.CPS",
+ "MERITH.CPS",
+ "HERMAN.CPS",
+ "SMALL.CPS",
+ "MALCOM.CPS",
+ "DRINK.CPS",
+ "SHRINK.CPS",
+ "HEALBR1.CPS",
+ "HEALBR2.CPS",
+ "SNOW1A.CPS",
+ "SNOW2A.CPS",
+ "BRANWILL.CPS",
+ "FLUTE1.CPS",
+ "FLUTE2.CPS",
+ "POISON1.CPS",
+ "POISON2.CPS",
+ "TELEKIN.CPS",
+ "BRANSTON.CPS",
+ "POISON.CPS"
+};
+
+static const StringListProvider k1CharacterImageFilenamesDOSProvider = { ARRAYSIZE(k1CharacterImageFilenamesDOS), k1CharacterImageFilenamesDOS };
+
+static const Shape k1DefaultShapesDOS[166] = {
+ { 0, 0, 0, 3, 48, -12, -48 },
+ { 0, 3, 0, 3, 48, -12, -48 },
+ { 0, 6, 0, 3, 48, -12, -48 },
+ { 0, 9, 0, 3, 48, -12, -48 },
+ { 0, 12, 0, 3, 48, -12, -48 },
+ { 0, 15, 0, 3, 48, -12, -48 },
+ { 0, 18, 0, 3, 48, -12, -48 },
+ { 0, 21, 0, 3, 48, -12, -48 },
+ { 0, 24, 0, 3, 48, -12, -48 },
+ { 0, 27, 0, 3, 48, -12, -48 },
+ { 0, 0, 51, 2, 11, -2, -8 },
+ { 0, 2, 51, 2, 11, -2, -8 },
+ { 0, 4, 51, 2, 11, -2, -8 },
+ { 0, 6, 51, 2, 11, -2, -8 },
+ { 0, 8, 51, 2, 11, -2, -8 },
+ { 0, 10, 51, 2, 11, -2, -8 },
+ { 0, 12, 51, 2, 11, -2, -8 },
+ { 0, 14, 51, 2, 11, -2, -8 },
+ { 0, 16, 51, 2, 11, -2, -8 },
+ { 0, 18, 51, 2, 11, -2, -8 },
+ { 0, 20, 51, 2, 11, -2, -8 },
+ { 0, 22, 51, 2, 11, -2, -8 },
+ { 0, 0, 80, 3, 48, -12, -48 },
+ { 0, 3, 80, 3, 48, -12, -48 },
+ { 0, 6, 80, 3, 48, -12, -48 },
+ { 0, 9, 80, 3, 48, -12, -48 },
+ { 0, 12, 80, 3, 48, -12, -48 },
+ { 0, 15, 80, 3, 48, -12, -48 },
+ { 0, 0, 129, 3, 48, -12, -48 },
+ { 0, 3, 129, 3, 48, -12, -48 },
+ { 0, 6, 129, 3, 48, -12, -48 },
+ { 0, 9, 129, 3, 48, -12, -48 },
+ { 0, 12, 129, 3, 48, -12, -48 },
+ { 0, 15, 129, 3, 48, -12, -48 },
+ { 2, 0, 0, 3, 48, -12, -48 },
+ { 2, 3, 0, 3, 48, -12, -48 },
+ { 2, 6, 0, 3, 48, -12, -48 },
+ { 2, 9, 0, 3, 48, -12, -48 },
+ { 2, 12, 0, 3, 48, -12, -48 },
+ { 2, 15, 0, 3, 48, -12, -48 },
+ { 2, 18, 0, 3, 48, -12, -48 },
+ { 2, 21, 0, 3, 48, -12, -48 },
+ { 2, 24, 0, 3, 48, -12, -48 },
+ { 2, 27, 0, 3, 48, -12, -48 },
+ { 2, 30, 10, 3, 38, -16, -38 },
+ { 2, 27, 48, 4, 40, -8, -40 },
+ { 2, 0, 51, 2, 11, -4, 0 },
+ { 2, 2, 51, 2, 11, -4, 0 },
+ { 2, 4, 51, 2, 11, -4, 0 },
+ { 2, 6, 51, 2, 11, -4, 0 },
+ { 2, 8, 51, 2, 11, -4, 0 },
+ { 2, 10, 51, 2, 11, -4, 0 },
+ { 2, 12, 51, 2, 11, -4, 0 },
+ { 2, 14, 51, 2, 11, -4, 0 },
+ { 2, 16, 51, 2, 11, -4, 0 },
+ { 2, 18, 51, 2, 11, -4, 0 },
+ { 2, 20, 51, 2, 11, -4, 0 },
+ { 2, 22, 51, 2, 11, -4, 0 },
+ { 255, 0, 80, 3, 48, -12, -48 },
+ { 255, 3, 80, 3, 48, -12, -48 },
+ { 255, 6, 80, 3, 48, -12, -48 },
+ { 255, 9, 80, 3, 48, -12, -48 },
+ { 255, 12, 80, 3, 48, -12, -48 },
+ { 255, 15, 80, 3, 48, -12, -48 },
+ { 255, 0, 129, 3, 48, -12, -48 },
+ { 255, 3, 129, 3, 48, -12, -48 },
+ { 255, 6, 129, 3, 48, -12, -48 },
+ { 255, 9, 129, 3, 48, -12, -48 },
+ { 255, 12, 129, 3, 48, -12, -48 },
+ { 255, 15, 129, 3, 48, -12, -48 },
+ { 3, 0, 0, 3, 48, -12, -46 },
+ { 3, 3, 0, 3, 48, -12, -48 },
+ { 3, 6, 0, 3, 48, -12, -48 },
+ { 3, 9, 0, 3, 48, -12, -48 },
+ { 3, 12, 0, 3, 48, -12, -48 },
+ { 3, 15, 0, 3, 48, -12, -48 },
+ { 3, 18, 0, 3, 48, -12, -48 },
+ { 3, 21, 0, 3, 48, -12, -48 },
+ { 3, 24, 0, 3, 48, -12, -48 },
+ { 3, 27, 0, 3, 48, -12, -46 },
+ { 3, 30, 0, 3, 48, -14, -47 },
+ { 3, 39, 199, 1, 1, -12, -48 },
+ { 3, 0, 51, 2, 11, 0, -7 },
+ { 3, 2, 51, 2, 11, 0, -7 },
+ { 3, 4, 51, 2, 11, 0, -7 },
+ { 3, 6, 51, 2, 11, 0, -7 },
+ { 3, 8, 51, 2, 11, 0, -7 },
+ { 3, 10, 51, 2, 11, 0, -7 },
+ { 3, 12, 51, 2, 11, 0, -7 },
+ { 3, 14, 51, 2, 11, 0, -7 },
+ { 3, 16, 51, 2, 11, 0, -7 },
+ { 3, 18, 51, 2, 11, 0, -7 },
+ { 3, 20, 51, 2, 11, 0, -7 },
+ { 3, 22, 51, 2, 11, 0, -7 },
+ { 3, 0, 80, 3, 48, -12, -48 },
+ { 3, 3, 80, 3, 48, -12, -48 },
+ { 3, 6, 80, 3, 48, -12, -48 },
+ { 3, 9, 80, 3, 48, -12, -48 },
+ { 3, 12, 80, 3, 48, -12, -48 },
+ { 3, 15, 80, 3, 48, -12, -48 },
+ { 3, 0, 129, 3, 48, -12, -48 },
+ { 3, 3, 129, 3, 48, -12, -48 },
+ { 3, 6, 129, 3, 48, -12, -48 },
+ { 3, 9, 129, 3, 48, -12, -48 },
+ { 3, 12, 129, 3, 48, -12, -48 },
+ { 3, 15, 129, 3, 48, -12, -48 },
+ { 12, 0, 96, 5, 29, -20, -42 },
+ { 12, 5, 96, 5, 29, -20, -42 },
+ { 12, 10, 96, 5, 29, -20, -42 },
+ { 12, 15, 96, 5, 29, -20, -42 },
+ { 12, 20, 96, 5, 29, -20, -42 },
+ { 12, 25, 96, 5, 29, -20, -42 },
+ { 12, 30, 96, 5, 29, -20, -42 },
+ { 12, 35, 96, 5, 29, -20, -42 },
+ { 12, 0, 125, 5, 29, -20, -42 },
+ { 12, 5, 125, 5, 29, -20, -42 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 }
+};
+
+static const ShapeProvider k1DefaultShapesDOSProvider = { ARRAYSIZE(k1DefaultShapesDOS), k1DefaultShapesDOS };
+
+static const byte k1AmuleteAnimSeqDOS[42] = {
+ 0x00, 0x01, 0x02, 0x01, 0x03, 0x04, 0x03, 0x01,
+ 0x02, 0x03, 0x04, 0x05, 0x06, 0x05, 0x04, 0x05,
+ 0x07, 0x08, 0x07, 0x08, 0x09, 0x08, 0x09, 0x07,
+ 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
+ 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15,
+ 0x16, 0xFF
+};
+
+static const ByteProvider k1AmuleteAnimSeqDOSProvider = { ARRAYSIZE(k1AmuleteAnimSeqDOS), k1AmuleteAnimSeqDOS };
+
+static const byte k1SpecialPalette1DOS[21] = {
+ 0x36, 0x25, 0x1C, 0x31, 0x21, 0x19, 0x2C, 0x1D,
+ 0x16, 0x27, 0x19, 0x13, 0x22, 0x16, 0x11, 0x1D,
+ 0x12, 0x0D, 0x18, 0x0F, 0x0B
+};
+
+static const ByteProvider k1SpecialPalette1DOSProvider = { ARRAYSIZE(k1SpecialPalette1DOS), k1SpecialPalette1DOS };
+
+static const byte k1SpecialPalette2DOS[51] = {
+ 0x03, 0x03, 0x00, 0x37, 0x29, 0x1D, 0x33, 0x25,
+ 0x1A, 0x2D, 0x21, 0x17, 0x2A, 0x1D, 0x13, 0x26,
+ 0x19, 0x11, 0x22, 0x16, 0x0E, 0x1E, 0x12, 0x0C,
+ 0x1A, 0x0F, 0x0A, 0x16, 0x0C, 0x08, 0x12, 0x0A,
+ 0x05, 0x0E, 0x08, 0x05, 0x2D, 0x1E, 0x13, 0x27,
+ 0x19, 0x0F, 0x22, 0x14, 0x0C, 0x1C, 0x11, 0x0A,
+ 0x17, 0x0C, 0x08
+};
+
+static const ByteProvider k1SpecialPalette2DOSProvider = { ARRAYSIZE(k1SpecialPalette2DOS), k1SpecialPalette2DOS };
+
+static const byte k1SpecialPalette3DOS[51] = {
+ 0x03, 0x03, 0x00, 0x25, 0x30, 0x1B, 0x24, 0x2C,
+ 0x18, 0x23, 0x29, 0x15, 0x22, 0x25, 0x12, 0x21,
+ 0x22, 0x11, 0x1F, 0x1D, 0x0D, 0x1B, 0x18, 0x0B,
+ 0x18, 0x13, 0x0A, 0x14, 0x0E, 0x08, 0x11, 0x0A,
+ 0x05, 0x0E, 0x08, 0x05, 0x21, 0x22, 0x11, 0x1D,
+ 0x1C, 0x0C, 0x19, 0x15, 0x0A, 0x15, 0x0F, 0x08,
+ 0x11, 0x0A, 0x05
+};
+
+static const ByteProvider k1SpecialPalette3DOSProvider = { ARRAYSIZE(k1SpecialPalette3DOS), k1SpecialPalette3DOS };
+
+static const byte k1SpecialPalette4DOS[51] = {
+ 0x06, 0x03, 0x01, 0x33, 0x25, 0x0A, 0x2F, 0x21,
+ 0x0A, 0x2B, 0x1D, 0x08, 0x28, 0x1A, 0x08, 0x24,
+ 0x17, 0x06, 0x21, 0x22, 0x06, 0x1D, 0x11, 0x05,
+ 0x19, 0x0E, 0x05, 0x16, 0x0B, 0x03, 0x12, 0x0A,
+ 0x03, 0x0F, 0x08, 0x03, 0x28, 0x1A, 0x08, 0x22,
+ 0x15, 0x05, 0x1D, 0x11, 0x05, 0x17, 0x0C, 0x03,
+ 0x12, 0x0A, 0x03
+};
+
+static const ByteProvider k1SpecialPalette4DOSProvider = { ARRAYSIZE(k1SpecialPalette4DOS), k1SpecialPalette4DOS };
+
+static const byte k1SpecialPalette5DOS[51] = {
+ 0x03, 0x03, 0x00, 0x2A, 0x1D, 0x13, 0x27, 0x1A,
+ 0x11, 0x24, 0x18, 0x0F, 0x21, 0x15, 0x0D, 0x1E,
+ 0x13, 0x0C, 0x1C, 0x11, 0x0A, 0x19, 0x0F, 0x0A,
+ 0x16, 0x0C, 0x08, 0x13, 0x0A, 0x06, 0x11, 0x08,
+ 0x05, 0x0E, 0x08, 0x05, 0x1C, 0x11, 0x0A, 0x19,
+ 0x0E, 0x08, 0x16, 0x0C, 0x08, 0x13, 0x0A, 0x06,
+ 0x11, 0x08, 0x05
+};
+
+static const ByteProvider k1SpecialPalette5DOSProvider = { ARRAYSIZE(k1SpecialPalette5DOS), k1SpecialPalette5DOS };
+
+static const byte k1SpecialPalette6DOS[51] = {
+ 0x00, 0x08, 0x01, 0x00, 0x1E, 0x00, 0x00, 0x1B,
+ 0x00, 0x00, 0x19, 0x00, 0x00, 0x17, 0x00, 0x00,
+ 0x14, 0x00, 0x00, 0x12, 0x00, 0x00, 0x11, 0x00,
+ 0x00, 0x0E, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x0A,
+ 0x00, 0x00, 0x08, 0x00, 0x13, 0x21, 0x0F, 0x11,
+ 0x1F, 0x0D, 0x0E, 0x1D, 0x0C, 0x0C, 0x1B, 0x0B,
+ 0x0A, 0x19, 0x0A
+};
+
+static const ByteProvider k1SpecialPalette6DOSProvider = { ARRAYSIZE(k1SpecialPalette6DOS), k1SpecialPalette6DOS };
+
+static const byte k1SpecialPalette7DOS[54] = {
+ 0x05, 0x2B, 0x00, 0x00, 0x22, 0x00, 0x00, 0x1E,
+ 0x00, 0x00, 0x16, 0x01, 0x00, 0x12, 0x03, 0x00,
+ 0x0F, 0x01, 0x00, 0x0B, 0x03, 0x0A, 0x19, 0x0A,
+ 0x2D, 0x2D, 0x32, 0x29, 0x29, 0x2D, 0x25, 0x25,
+ 0x2B, 0x1F, 0x1F, 0x26, 0x1B, 0x1B, 0x22, 0x14,
+ 0x16, 0x1D, 0x11, 0x11, 0x18, 0x0D, 0x0D, 0x14,
+ 0x0A, 0x0A, 0x0F, 0x06, 0x06, 0x0B
+};
+
+static const ByteProvider k1SpecialPalette7DOSProvider = { ARRAYSIZE(k1SpecialPalette7DOS), k1SpecialPalette7DOS };
+
+static const byte k1SpecialPalette8DOS[54] = {
+ 0x12, 0x37, 0x3F, 0x14, 0x31, 0x3F, 0x14, 0x29,
+ 0x3F, 0x14, 0x22, 0x3F, 0x14, 0x1B, 0x3F, 0x14,
+ 0x14, 0x3F, 0x0E, 0x0F, 0x37, 0x14, 0x29, 0x3F,
+ 0x2F, 0x3F, 0x3D, 0x26, 0x3F, 0x3F, 0x15, 0x3F,
+ 0x3F, 0x14, 0x3B, 0x3F, 0x12, 0x37, 0x3F, 0x14,
+ 0x31, 0x3F, 0x14, 0x29, 0x3F, 0x14, 0x22, 0x3F,
+ 0x14, 0x1B, 0x3F, 0x14, 0x14, 0x3F
+};
+
+static const ByteProvider k1SpecialPalette8DOSProvider = { ARRAYSIZE(k1SpecialPalette8DOS), k1SpecialPalette8DOS };
+
+static const byte k1SpecialPalette9DOS[45] = {
+ 0x36, 0x00, 0x00, 0x32, 0x00, 0x00, 0x2F, 0x00,
+ 0x00, 0x2C, 0x00, 0x00, 0x29, 0x00, 0x00, 0x26,
+ 0x00, 0x00, 0x23, 0x00, 0x00, 0x20, 0x00, 0x00,
+ 0x1C, 0x00, 0x00, 0x19, 0x00, 0x00, 0x16, 0x00,
+ 0x00, 0x13, 0x00, 0x00, 0x11, 0x00, 0x00, 0x0D,
+ 0x00, 0x00, 0x0A, 0x00, 0x00
+};
+
+static const ByteProvider k1SpecialPalette9DOSProvider = { ARRAYSIZE(k1SpecialPalette9DOS), k1SpecialPalette9DOS };
+
+static const byte k1SpecialPalette10DOS[45] = {
+ 0x29, 0x00, 0x00, 0x26, 0x00, 0x00, 0x24, 0x00,
+ 0x00, 0x22, 0x00, 0x00, 0x20, 0x00, 0x00, 0x1E,
+ 0x00, 0x00, 0x1B, 0x00, 0x00, 0x19, 0x00, 0x00,
+ 0x17, 0x00, 0x00, 0x15, 0x00, 0x00, 0x12, 0x00,
+ 0x00, 0x11, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x0C,
+ 0x00, 0x00, 0x0A, 0x00, 0x00
+};
+
+static const ByteProvider k1SpecialPalette10DOSProvider = { ARRAYSIZE(k1SpecialPalette10DOS), k1SpecialPalette10DOS };
+
+static const byte k1SpecialPalette11DOS[45] = {
+ 0x20, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x1C, 0x00,
+ 0x00, 0x1B, 0x00, 0x00, 0x19, 0x00, 0x00, 0x18,
+ 0x00, 0x00, 0x16, 0x00, 0x00, 0x15, 0x00, 0x00,
+ 0x13, 0x00, 0x00, 0x11, 0x00, 0x00, 0x11, 0x00,
+ 0x00, 0x0E, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x0B,
+ 0x00, 0x00, 0x0A, 0x00, 0x00
+};
+
+static const ByteProvider k1SpecialPalette11DOSProvider = { ARRAYSIZE(k1SpecialPalette11DOS), k1SpecialPalette11DOS };
+
+static const byte k1SpecialPalette12DOS[45] = {
+ 0x19, 0x00, 0x00, 0x18, 0x00, 0x00, 0x16, 0x00,
+ 0x00, 0x15, 0x00, 0x00, 0x14, 0x00, 0x00, 0x13,
+ 0x00, 0x00, 0x12, 0x00, 0x00, 0x11, 0x00, 0x00,
+ 0x11, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x0E, 0x00,
+ 0x00, 0x0D, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0B,
+ 0x00, 0x00, 0x0A, 0x00, 0x00
+};
+
+static const ByteProvider k1SpecialPalette12DOSProvider = { ARRAYSIZE(k1SpecialPalette12DOS), k1SpecialPalette12DOS };
+
+static const byte k1SpecialPalette13DOS[45] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const ByteProvider k1SpecialPalette13DOSProvider = { ARRAYSIZE(k1SpecialPalette13DOS), k1SpecialPalette13DOS };
+
+static const byte k1SpecialPalette14DOS[60] = {
+ 0x0E, 0x28, 0x3F, 0x0C, 0x24, 0x3B, 0x0A, 0x20,
+ 0x38, 0x0A, 0x1C, 0x34, 0x08, 0x19, 0x31, 0x08,
+ 0x15, 0x2D, 0x05, 0x13, 0x2A, 0x05, 0x11, 0x27,
+ 0x03, 0x0D, 0x24, 0x03, 0x0A, 0x20, 0x03, 0x08,
+ 0x1D, 0x01, 0x06, 0x19, 0x01, 0x05, 0x16, 0x00,
+ 0x03, 0x13, 0x00, 0x01, 0x0F, 0x00, 0x01, 0x0C,
+ 0x00, 0x00, 0x08, 0x00, 0x00, 0x05, 0x00, 0x00,
+ 0x03, 0x00, 0x00, 0x00
+};
+
+static const ByteProvider k1SpecialPalette14DOSProvider = { ARRAYSIZE(k1SpecialPalette14DOS), k1SpecialPalette14DOS };
+
+static const byte k1SpecialPalette15DOS[45] = {
+ 0x24, 0x00, 0x39, 0x21, 0x00, 0x36, 0x1F, 0x00,
+ 0x32, 0x1C, 0x00, 0x2D, 0x1A, 0x00, 0x2A, 0x17,
+ 0x00, 0x26, 0x15, 0x00, 0x22, 0x12, 0x00, 0x1E,
+ 0x11, 0x00, 0x1A, 0x0E, 0x00, 0x16, 0x0B, 0x00,
+ 0x12, 0x0A, 0x00, 0x0F, 0x06, 0x00, 0x0B, 0x05,
+ 0x00, 0x08, 0x01, 0x00, 0x03
+};
+
+static const ByteProvider k1SpecialPalette15DOSProvider = { ARRAYSIZE(k1SpecialPalette15DOS), k1SpecialPalette15DOS };
+
+static const byte k1SpecialPalette16DOS[33] = {
+ 0x00, 0x3F, 0x3F, 0x00, 0x38, 0x38, 0x00, 0x34,
+ 0x34, 0x00, 0x30, 0x30, 0x00, 0x2D, 0x2D, 0x00,
+ 0x29, 0x29, 0x00, 0x25, 0x25, 0x00, 0x1F, 0x1F,
+ 0x00, 0x1B, 0x1B, 0x00, 0x16, 0x16, 0x00, 0x11,
+ 0x11
+};
+
+static const ByteProvider k1SpecialPalette16DOSProvider = { ARRAYSIZE(k1SpecialPalette16DOS), k1SpecialPalette16DOS };
+
+static const byte k1SpecialPalette17DOS[33] = {
+ 0x3B, 0x3B, 0x3B, 0x36, 0x36, 0x36, 0x32, 0x32,
+ 0x32, 0x2D, 0x2D, 0x2D, 0x2A, 0x2A, 0x2A, 0x26,
+ 0x26, 0x26, 0x21, 0x21, 0x21, 0x1D, 0x1D, 0x1D,
+ 0x19, 0x19, 0x19, 0x15, 0x15, 0x15, 0x11, 0x11,
+ 0x11
+};
+
+static const ByteProvider k1SpecialPalette17DOSProvider = { ARRAYSIZE(k1SpecialPalette17DOS), k1SpecialPalette17DOS };
+
+static const byte k1SpecialPalette18DOS[21] = {
+ 0x0F, 0x23, 0x1C, 0x2A, 0x36, 0x3F, 0x24, 0x2F,
+ 0x38, 0x1F, 0x2A, 0x32, 0x1A, 0x24, 0x2B, 0x15,
+ 0x1E, 0x25, 0x11, 0x19, 0x1F
+};
+
+static const ByteProvider k1SpecialPalette18DOSProvider = { ARRAYSIZE(k1SpecialPalette18DOS), k1SpecialPalette18DOS };
+
+static const byte k1SpecialPalette19DOS[21] = {
+ 0x00, 0x00, 0x1C, 0x00, 0x00, 0x3F, 0x00, 0x00,
+ 0x38, 0x00, 0x00, 0x32, 0x00, 0x00, 0x2B, 0x00,
+ 0x00, 0x25, 0x00, 0x00, 0x1F
+};
+
+static const ByteProvider k1SpecialPalette19DOSProvider = { ARRAYSIZE(k1SpecialPalette19DOS), k1SpecialPalette19DOS };
+
+static const byte k1SpecialPalette20DOS[21] = {
+ 0x26, 0x1B, 0x1B, 0x3F, 0x34, 0x34, 0x3B, 0x2F,
+ 0x2F, 0x39, 0x2B, 0x2B, 0x36, 0x26, 0x27, 0x33,
+ 0x22, 0x23, 0x31, 0x1F, 0x20
+};
+
+static const ByteProvider k1SpecialPalette20DOSProvider = { ARRAYSIZE(k1SpecialPalette20DOS), k1SpecialPalette20DOS };
+
+static const byte k1SpecialPalette21DOS[21] = {
+ 0x1C, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x38, 0x00,
+ 0x00, 0x32, 0x00, 0x00, 0x2B, 0x00, 0x00, 0x25,
+ 0x00, 0x00, 0x1F, 0x00, 0x00
+};
+
+static const ByteProvider k1SpecialPalette21DOSProvider = { ARRAYSIZE(k1SpecialPalette21DOS), k1SpecialPalette21DOS };
+
+static const byte k1SpecialPalette22DOS[21] = {
+ 0x1F, 0x1F, 0x0C, 0x3F, 0x3F, 0x21, 0x3B, 0x3B,
+ 0x1F, 0x37, 0x37, 0x1D, 0x34, 0x34, 0x1B, 0x30,
+ 0x30, 0x19, 0x2D, 0x2D, 0x17
+};
+
+static const ByteProvider k1SpecialPalette22DOSProvider = { ARRAYSIZE(k1SpecialPalette22DOS), k1SpecialPalette22DOS };
+
+static const byte k1SpecialPalette23DOS[21] = {
+ 0x1F, 0x1F, 0x00, 0x3F, 0x3F, 0x00, 0x3B, 0x3B,
+ 0x00, 0x37, 0x37, 0x00, 0x34, 0x34, 0x00, 0x30,
+ 0x30, 0x00, 0x2D, 0x2D, 0x00
+};
+
+static const ByteProvider k1SpecialPalette23DOSProvider = { ARRAYSIZE(k1SpecialPalette23DOS), k1SpecialPalette23DOS };
+
+static const byte k1SpecialPalette24DOS[48] = {
+ 0x36, 0x38, 0x2C, 0x31, 0x38, 0x23, 0x2A, 0x33,
+ 0x1E, 0x24, 0x2F, 0x1A, 0x1E, 0x2A, 0x16, 0x18,
+ 0x26, 0x13, 0x13, 0x21, 0x0F, 0x0E, 0x1D, 0x0D,
+ 0x0D, 0x1B, 0x0C, 0x0A, 0x19, 0x0A, 0x0A, 0x18,
+ 0x0A, 0x08, 0x17, 0x08, 0x08, 0x16, 0x08, 0x08,
+ 0x15, 0x06, 0x06, 0x14, 0x06, 0x06, 0x11, 0x06
+};
+
+static const ByteProvider k1SpecialPalette24DOSProvider = { ARRAYSIZE(k1SpecialPalette24DOS), k1SpecialPalette24DOS };
+
+static const byte k1SpecialPalette25DOS[48] = {
+ 0x36, 0x38, 0x2C, 0x31, 0x36, 0x23, 0x2A, 0x33,
+ 0x1E, 0x24, 0x2F, 0x1A, 0x1E, 0x2A, 0x16, 0x1E,
+ 0x2A, 0x16, 0x18, 0x26, 0x13, 0x13, 0x21, 0x0F,
+ 0x0E, 0x1D, 0x0D, 0x0D, 0x1B, 0x0C, 0x0D, 0x1B,
+ 0x0C, 0x0A, 0x19, 0x0A, 0x0A, 0x18, 0x0A, 0x0A,
+ 0x18, 0x0A, 0x0A, 0x18, 0x0A, 0x06, 0x14, 0x06
+};
+
+static const ByteProvider k1SpecialPalette25DOSProvider = { ARRAYSIZE(k1SpecialPalette25DOS), k1SpecialPalette25DOS };
+
+static const byte k1SpecialPalette26DOS[48] = {
+ 0x31, 0x38, 0x23, 0x31, 0x38, 0x23, 0x2A, 0x33,
+ 0x1E, 0x24, 0x2F, 0x1A, 0x19, 0x2A, 0x16, 0x18,
+ 0x26, 0x13, 0x13, 0x21, 0x0F, 0x13, 0x21, 0x11,
+ 0x13, 0x21, 0x0F, 0x0E, 0x1D, 0x0D, 0x0E, 0x1D,
+ 0x0D, 0x0E, 0x1D, 0x0D, 0x0D, 0x1B, 0x0C, 0x0A,
+ 0x19, 0x0A, 0x0A, 0x19, 0x0A, 0x06, 0x13, 0x06
+};
+
+static const ByteProvider k1SpecialPalette26DOSProvider = { ARRAYSIZE(k1SpecialPalette26DOS), k1SpecialPalette26DOS };
+
+static const byte k1SpecialPalette27DOS[48] = {
+ 0x31, 0x38, 0x23, 0x31, 0x38, 0x23, 0x2A, 0x33,
+ 0x1E, 0x24, 0x2F, 0x1A, 0x19, 0x2A, 0x16, 0x18,
+ 0x26, 0x13, 0x13, 0x21, 0x0F, 0x13, 0x21, 0x0F,
+ 0x13, 0x21, 0x0F, 0x0E, 0x1D, 0x0D, 0x0E, 0x1D,
+ 0x0D, 0x0E, 0x1D, 0x0D, 0x0D, 0x1B, 0x0C, 0x0D,
+ 0x19, 0x0C, 0x0D, 0x19, 0x0C, 0x08, 0x16, 0x08
+};
+
+static const ByteProvider k1SpecialPalette27DOSProvider = { ARRAYSIZE(k1SpecialPalette27DOS), k1SpecialPalette27DOS };
+
+static const byte k1SpecialPalette28DOS[48] = {
+ 0x36, 0x38, 0x2C, 0x31, 0x38, 0x23, 0x2A, 0x33,
+ 0x1E, 0x24, 0x2F, 0x1A, 0x19, 0x2A, 0x16, 0x1E,
+ 0x2A, 0x16, 0x18, 0x26, 0x13, 0x13, 0x21, 0x0F,
+ 0x13, 0x21, 0x0F, 0x13, 0x21, 0x0F, 0x13, 0x21,
+ 0x0F, 0x0E, 0x1D, 0x0D, 0x0D, 0x1B, 0x0C, 0x0D,
+ 0x1B, 0x0C, 0x0D, 0x1B, 0x0C, 0x08, 0x17, 0x08
+};
+
+static const ByteProvider k1SpecialPalette28DOSProvider = { ARRAYSIZE(k1SpecialPalette28DOS), k1SpecialPalette28DOS };
+
+static const byte k1SpecialPalette29DOS[48] = {
+ 0x36, 0x38, 0x2C, 0x31, 0x38, 0x23, 0x2A, 0x33,
+ 0x1E, 0x24, 0x2F, 0x1A, 0x19, 0x2A, 0x16, 0x1E,
+ 0x2A, 0x16, 0x18, 0x26, 0x13, 0x13, 0x21, 0x0F,
+ 0x13, 0x21, 0x0F, 0x13, 0x21, 0x0F, 0x13, 0x21,
+ 0x0F, 0x13, 0x21, 0x0F, 0x0E, 0x1D, 0x0D, 0x0E,
+ 0x1D, 0x0D, 0x0E, 0x1D, 0x0D, 0x08, 0x17, 0x08
+};
+
+static const ByteProvider k1SpecialPalette29DOSProvider = { ARRAYSIZE(k1SpecialPalette29DOS), k1SpecialPalette29DOS };
+
+static const byte k1SpecialPalette30DOS[60] = {
+ 0x1E, 0x1D, 0x3F, 0x1A, 0x19, 0x3F, 0x14, 0x12,
+ 0x3B, 0x12, 0x11, 0x37, 0x11, 0x11, 0x33, 0x0F,
+ 0x0E, 0x2F, 0x0E, 0x0D, 0x2C, 0x0D, 0x0C, 0x28,
+ 0x0B, 0x0B, 0x24, 0x0A, 0x0A, 0x20, 0x0A, 0x0A,
+ 0x1D, 0x05, 0x05, 0x18, 0x03, 0x03, 0x13, 0x01,
+ 0x01, 0x11, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x05,
+ 0x00, 0x0A, 0x1A, 0x00, 0x0F, 0x13, 0x00, 0x14,
+ 0x11, 0x0F, 0x0D, 0x00
+};
+
+static const ByteProvider k1SpecialPalette30DOSProvider = { ARRAYSIZE(k1SpecialPalette30DOS), k1SpecialPalette30DOS };
+
+static const byte k1SpecialPalette31DOS[39] = {
+ 0x2B, 0x19, 0x34, 0x27, 0x17, 0x30, 0x23, 0x14,
+ 0x2C, 0x20, 0x12, 0x27, 0x1C, 0x11, 0x23, 0x18,
+ 0x0E, 0x1E, 0x15, 0x0C, 0x1A, 0x11, 0x0A, 0x15,
+ 0x0E, 0x08, 0x11, 0x0A, 0x05, 0x0C, 0x06, 0x03,
+ 0x08, 0x03, 0x01, 0x03, 0x00, 0x00, 0x00
+};
+
+static const ByteProvider k1SpecialPalette31DOSProvider = { ARRAYSIZE(k1SpecialPalette31DOS), k1SpecialPalette31DOS };
+
+static const byte k1SpecialPalette32DOS[39] = {
+ 0x12, 0x12, 0x16, 0x11, 0x11, 0x14, 0x0F, 0x0F,
+ 0x12, 0x0D, 0x0D, 0x11, 0x0B, 0x0B, 0x0E, 0x0A,
+ 0x0A, 0x0C, 0x08, 0x08, 0x0A, 0x08, 0x08, 0x08,
+ 0x05, 0x05, 0x06, 0x05, 0x05, 0x05, 0x03, 0x03,
+ 0x03, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00
+};
+
+static const ByteProvider k1SpecialPalette32DOSProvider = { ARRAYSIZE(k1SpecialPalette32DOS), k1SpecialPalette32DOS };
+
+static const byte k1SpecialPalette33DOS[60] = {
+ 0x3F, 0x3D, 0x2F, 0x3F, 0x3D, 0x29, 0x3F, 0x3D,
+ 0x23, 0x3F, 0x3D, 0x1D, 0x3F, 0x3B, 0x17, 0x3F,
+ 0x3B, 0x11, 0x3F, 0x3B, 0x0B, 0x3F, 0x3B, 0x05,
+ 0x3F, 0x3B, 0x00, 0x3D, 0x38, 0x00, 0x3B, 0x34,
+ 0x00, 0x39, 0x33, 0x00, 0x39, 0x30, 0x00, 0x37,
+ 0x2D, 0x00, 0x36, 0x2B, 0x00, 0x34, 0x28, 0x00,
+ 0x33, 0x26, 0x00, 0x32, 0x24, 0x00, 0x30, 0x22,
+ 0x00, 0x2F, 0x20, 0x00
+};
+
+static const ByteProvider k1SpecialPalette33DOSProvider = { ARRAYSIZE(k1SpecialPalette33DOS), k1SpecialPalette33DOS };
+
+static const Shape k1Healing1ShapesDOS[22] = {
+ { 8, 0, 0, 3, 48, -12, -48 },
+ { 8, 3, 0, 3, 48, -12, -48 },
+ { 8, 6, 0, 3, 48, -12, -48 },
+ { 8, 9, 0, 3, 48, -12, -48 },
+ { 8, 12, 0, 3, 48, -12, -48 },
+ { 8, 15, 0, 3, 48, -12, -48 },
+ { 8, 18, 0, 3, 48, -12, -48 },
+ { 8, 21, 0, 3, 48, -12, -48 },
+ { 8, 24, 0, 3, 48, -12, -48 },
+ { 8, 27, 0, 3, 48, -12, -48 },
+ { 8, 30, 0, 3, 48, -12, -48 },
+ { 8, 33, 0, 3, 48, -12, -48 },
+ { 8, 0, 48, 3, 48, -12, -48 },
+ { 8, 3, 48, 3, 48, -12, -48 },
+ { 8, 6, 48, 3, 48, -12, -48 },
+ { 8, 9, 48, 3, 48, -12, -48 },
+ { 8, 12, 48, 3, 48, -12, -48 },
+ { 8, 15, 48, 3, 48, -12, -48 },
+ { 8, 18, 48, 3, 48, -12, -48 },
+ { 8, 21, 48, 3, 48, -12, -48 },
+ { 8, 24, 48, 3, 48, -12, -48 },
+ { 8, 27, 48, 3, 48, -12, -48 }
+};
+
+static const ShapeProvider k1Healing1ShapesDOSProvider = { ARRAYSIZE(k1Healing1ShapesDOS), k1Healing1ShapesDOS };
+
+static const Shape k1Healing2ShapesDOS[30] = {
+ { 9, 0, 0, 3, 48, -11, -48 },
+ { 9, 3, 0, 3, 48, -11, -48 },
+ { 9, 6, 0, 3, 48, -11, -48 },
+ { 9, 9, 0, 3, 48, -11, -48 },
+ { 9, 12, 0, 3, 48, -11, -48 },
+ { 9, 15, 0, 3, 48, -11, -48 },
+ { 9, 18, 0, 3, 48, -11, -48 },
+ { 9, 21, 0, 3, 48, -11, -48 },
+ { 9, 24, 0, 3, 48, -11, -48 },
+ { 9, 27, 0, 3, 48, -11, -48 },
+ { 9, 30, 0, 3, 48, -11, -48 },
+ { 9, 33, 0, 3, 48, -11, -48 },
+ { 9, 0, 48, 3, 48, -11, -48 },
+ { 9, 3, 48, 3, 48, -11, -48 },
+ { 9, 6, 48, 3, 48, -11, -48 },
+ { 9, 9, 48, 3, 48, -11, -48 },
+ { 9, 12, 48, 3, 48, -11, -48 },
+ { 9, 15, 48, 3, 48, -11, -48 },
+ { 9, 18, 48, 3, 48, -11, -48 },
+ { 9, 21, 48, 3, 48, -11, -48 },
+ { 9, 24, 48, 3, 48, -11, -48 },
+ { 9, 27, 48, 3, 48, -11, -48 },
+ { 9, 30, 48, 3, 48, -11, -48 },
+ { 9, 33, 48, 3, 48, -11, -48 },
+ { 9, 0, 96, 3, 48, -11, -48 },
+ { 9, 3, 96, 3, 48, -11, -48 },
+ { 9, 6, 96, 3, 48, -11, -48 },
+ { 9, 9, 96, 3, 48, -11, -48 },
+ { 9, 12, 96, 3, 48, -11, -48 },
+ { 9, 15, 96, 3, 48, -11, -48 }
+};
+
+static const ShapeProvider k1Healing2ShapesDOSProvider = { ARRAYSIZE(k1Healing2ShapesDOS), k1Healing2ShapesDOS };
+
+static const Shape k1PoisonDeathShapesDOS[20] = {
+ { 19, 0, 0, 8, 48, -31, -48 },
+ { 19, 8, 0, 8, 48, -31, -48 },
+ { 19, 16, 0, 8, 48, -31, -48 },
+ { 19, 24, 0, 8, 48, -31, -48 },
+ { 19, 32, 0, 8, 48, -31, -48 },
+ { 19, 0, 48, 8, 48, -31, -48 },
+ { 19, 8, 48, 8, 48, -31, -48 },
+ { 19, 16, 48, 8, 48, -31, -48 },
+ { 19, 24, 48, 8, 48, -31, -48 },
+ { 19, 32, 48, 8, 48, -31, -48 },
+ { 19, 0, 96, 8, 48, -31, -48 },
+ { 19, 8, 96, 8, 48, -31, -48 },
+ { 19, 16, 96, 8, 48, -31, -48 },
+ { 19, 24, 96, 8, 48, -31, -48 },
+ { 19, 32, 96, 8, 48, -31, -48 },
+ { 19, 0, 144, 8, 48, -31, -48 },
+ { 19, 8, 144, 8, 48, -31, -48 },
+ { 19, 16, 144, 8, 48, -31, -48 },
+ { 19, 24, 144, 8, 48, -31, -48 },
+ { 19, 32, 144, 8, 48, -31, -48 }
+};
+
+static const ShapeProvider k1PoisonDeathShapesDOSProvider = { ARRAYSIZE(k1PoisonDeathShapesDOS), k1PoisonDeathShapesDOS };
+
+static const Shape k1FluteShapesDOS[36] = {
+ { 13, 0, 0, 3, 75, -12, -75 },
+ { 13, 3, 0, 3, 75, -12, -75 },
+ { 13, 6, 0, 3, 75, -12, -75 },
+ { 13, 9, 0, 3, 75, -12, -75 },
+ { 13, 12, 0, 3, 75, -12, -75 },
+ { 13, 15, 0, 3, 75, -12, -75 },
+ { 13, 18, 0, 3, 75, -12, -75 },
+ { 13, 21, 0, 3, 75, -12, -75 },
+ { 13, 24, 0, 3, 75, -12, -75 },
+ { 13, 27, 0, 3, 75, -12, -75 },
+ { 13, 30, 0, 3, 75, -12, -75 },
+ { 13, 33, 0, 3, 75, -12, -75 },
+ { 13, 36, 75, 3, 75, -12, -75 },
+ { 13, 0, 75, 3, 75, -12, -75 },
+ { 13, 3, 75, 3, 75, -12, -75 },
+ { 13, 6, 75, 3, 75, -12, -75 },
+ { 13, 9, 75, 3, 75, -12, -75 },
+ { 13, 12, 75, 3, 75, -12, -75 },
+ { 13, 15, 75, 3, 75, -12, -75 },
+ { 13, 18, 75, 3, 75, -12, -75 },
+ { 13, 21, 75, 3, 75, -12, -75 },
+ { 13, 24, 75, 3, 75, -12, -75 },
+ { 13, 27, 75, 3, 75, -12, -75 },
+ { 13, 30, 75, 3, 75, -12, -75 },
+ { 13, 33, 75, 3, 75, -12, -75 },
+ { 13, 36, 75, 3, 75, -12, -75 },
+ { 14, 0, 0, 3, 75, -12, -75 },
+ { 14, 3, 0, 3, 75, -12, -75 },
+ { 14, 6, 0, 3, 75, -12, -75 },
+ { 14, 9, 0, 3, 75, -12, -75 },
+ { 14, 12, 0, 3, 75, -12, -75 },
+ { 14, 15, 0, 3, 75, -12, -75 },
+ { 14, 18, 0, 3, 75, -12, -75 },
+ { 14, 21, 0, 3, 75, -12, -75 },
+ { 14, 24, 0, 3, 75, -12, -75 },
+ { 14, 27, 0, 3, 75, -12, -75 }
+};
+
+static const ShapeProvider k1FluteShapesDOSProvider = { ARRAYSIZE(k1FluteShapesDOS), k1FluteShapesDOS };
+
+static const Shape k1Winter1ShapesDOS[7] = {
+ { 10, 5, 0, 5, 66, -20, -65 },
+ { 10, 10, 0, 5, 66, -20, -65 },
+ { 10, 15, 0, 5, 66, -20, -65 },
+ { 10, 20, 0, 5, 66, -20, -65 },
+ { 10, 25, 0, 5, 66, -20, -65 },
+ { 10, 30, 0, 5, 66, -20, -65 },
+ { 10, 35, 0, 5, 66, -20, -65 }
+};
+
+static const ShapeProvider k1Winter1ShapesDOSProvider = { ARRAYSIZE(k1Winter1ShapesDOS), k1Winter1ShapesDOS };
+
+static const Shape k1Winter2ShapesDOS[35] = {
+ { 10, 0, 66, 5, 66, -20, -65 },
+ { 10, 5, 66, 5, 66, -20, -65 },
+ { 10, 10, 66, 5, 66, -20, -65 },
+ { 10, 15, 66, 5, 66, -20, -65 },
+ { 10, 20, 66, 5, 66, -20, -65 },
+ { 10, 25, 66, 5, 66, -20, -65 },
+ { 10, 30, 66, 5, 66, -20, -65 },
+ { 10, 35, 66, 5, 66, -20, -65 },
+ { 10, 0, 132, 5, 66, -20, -65 },
+ { 10, 5, 132, 5, 66, -20, -65 },
+ { 10, 10, 132, 5, 66, -20, -65 },
+ { 10, 15, 132, 5, 66, -20, -65 },
+ { 10, 20, 132, 5, 66, -20, -65 },
+ { 10, 25, 132, 5, 66, -20, -65 },
+ { 10, 30, 132, 5, 66, -20, -65 },
+ { 10, 35, 132, 5, 66, -20, -65 },
+ { 11, 0, 0, 5, 66, -20, -65 },
+ { 11, 5, 0, 5, 66, -20, -65 },
+ { 11, 10, 0, 5, 66, -20, -65 },
+ { 11, 15, 0, 5, 66, -20, -65 },
+ { 11, 20, 0, 5, 66, -20, -65 },
+ { 11, 25, 0, 5, 66, -20, -65 },
+ { 11, 30, 0, 5, 66, -20, -65 },
+ { 11, 35, 0, 5, 66, -20, -65 },
+ { 11, 0, 66, 5, 66, -20, -65 },
+ { 11, 5, 66, 5, 66, -20, -65 },
+ { 11, 10, 66, 5, 66, -20, -65 },
+ { 11, 15, 66, 5, 66, -20, -65 },
+ { 11, 20, 66, 5, 66, -20, -65 },
+ { 11, 25, 66, 5, 66, -20, -65 },
+ { 11, 30, 66, 5, 66, -20, -65 },
+ { 11, 35, 66, 5, 66, -20, -65 },
+ { 11, 0, 132, 5, 66, -20, -65 },
+ { 11, 5, 132, 5, 66, -20, -65 },
+ { 11, 10, 132, 5, 66, -20, -65 }
+};
+
+static const ShapeProvider k1Winter2ShapesDOSProvider = { ARRAYSIZE(k1Winter2ShapesDOS), k1Winter2ShapesDOS };
+
+static const Shape k1Winter3ShapesDOS[4] = {
+ { 11, 15, 132, 5, 66, -20, -65 },
+ { 11, 20, 132, 5, 66, -20, -65 },
+ { 11, 25, 132, 5, 66, -20, -65 },
+ { 11, 30, 132, 5, 66, -20, -65 }
+};
+
+static const ShapeProvider k1Winter3ShapesDOSProvider = { ARRAYSIZE(k1Winter3ShapesDOS), k1Winter3ShapesDOS };
+
+static const Shape k1DrinkShapesDOS[15] = {
+ { 6, 0, 0, 4, 48, -20, -48 },
+ { 6, 4, 0, 4, 48, -20, -48 },
+ { 6, 8, 0, 4, 48, -20, -48 },
+ { 6, 12, 0, 4, 48, -20, -48 },
+ { 6, 16, 0, 4, 48, -20, -48 },
+ { 6, 20, 0, 5, 48, -20, -48 },
+ { 6, 0, 48, 5, 54, -20, -54 },
+ { 6, 5, 48, 5, 54, -20, -54 },
+ { 6, 10, 48, 5, 54, -20, -54 },
+ { 7, 0, 0, 3, 43, -12, -43 },
+ { 7, 3, 3, 2, 40, -8, -40 },
+ { 7, 5, 7, 2, 36, -8, -36 },
+ { 7, 7, 10, 2, 33, -8, -33 },
+ { 7, 9, 12, 2, 31, -8, -31 },
+ { 7, 11, 15, 2, 28, -8, -28 }
+};
+
+static const ShapeProvider k1DrinkShapesDOSProvider = { ARRAYSIZE(k1DrinkShapesDOS), k1DrinkShapesDOS };
+
+static const Shape k1WispShapesDOS[26] = {
+ { 12, 0, 0, 5, 48, -20, -48 },
+ { 12, 5, 0, 5, 48, -20, -48 },
+ { 12, 10, 0, 5, 48, -20, -48 },
+ { 12, 15, 0, 5, 48, -20, -48 },
+ { 12, 20, 0, 5, 48, -20, -48 },
+ { 12, 25, 0, 5, 48, -20, -48 },
+ { 12, 30, 0, 5, 48, -20, -48 },
+ { 12, 35, 0, 5, 48, -20, -48 },
+ { 12, 0, 48, 5, 48, -20, -48 },
+ { 12, 5, 48, 5, 48, -20, -48 },
+ { 12, 10, 48, 5, 48, -20, -48 },
+ { 12, 15, 48, 5, 48, -20, -48 },
+ { 12, 20, 48, 5, 48, -20, -48 },
+ { 12, 25, 48, 5, 48, -20, -48 },
+ { 12, 30, 48, 5, 48, -20, -48 },
+ { 12, 35, 48, 5, 48, -20, -48 },
+ { 12, 0, 96, 5, 29, -20, -42 },
+ { 12, 5, 96, 5, 29, -20, -42 },
+ { 12, 10, 96, 5, 29, -20, -42 },
+ { 12, 15, 96, 5, 29, -20, -42 },
+ { 12, 20, 96, 5, 29, -20, -42 },
+ { 12, 25, 96, 5, 29, -20, -42 },
+ { 12, 30, 96, 5, 29, -20, -42 },
+ { 12, 35, 96, 5, 29, -20, -42 },
+ { 12, 0, 125, 5, 29, -20, -42 },
+ { 12, 5, 125, 5, 29, -20, -42 }
+};
+
+static const ShapeProvider k1WispShapesDOSProvider = { ARRAYSIZE(k1WispShapesDOS), k1WispShapesDOS };
+
+static const Shape k1MagicAnimShapesDOS[5] = {
+ { 17, 0, 0, 8, 49, -32, -49 },
+ { 17, 8, 0, 8, 49, -32, -49 },
+ { 17, 16, 0, 8, 49, -32, -49 },
+ { 17, 24, 0, 8, 49, -32, -49 },
+ { 17, 32, 0, 8, 49, -32, -49 }
+};
+
+static const ShapeProvider k1MagicAnimShapesDOSProvider = { ARRAYSIZE(k1MagicAnimShapesDOS), k1MagicAnimShapesDOS };
+
+static const Shape k1BranStoneShapesDOS[15] = {
+ { 18, 0, 0, 5, 51, -20, -50 },
+ { 18, 5, 0, 5, 51, -20, -50 },
+ { 18, 10, 0, 5, 51, -20, -50 },
+ { 18, 15, 0, 5, 51, -20, -50 },
+ { 18, 20, 0, 5, 51, -20, -50 },
+ { 18, 25, 0, 5, 51, -20, -50 },
+ { 18, 30, 0, 5, 51, -20, -50 },
+ { 18, 35, 0, 5, 51, -20, -50 },
+ { 18, 0, 51, 5, 51, -20, -50 },
+ { 18, 5, 51, 5, 51, -20, -50 },
+ { 18, 10, 51, 5, 51, -20, -50 },
+ { 18, 15, 51, 5, 51, -20, -50 },
+ { 18, 20, 51, 5, 51, -20, -50 },
+ { 18, 25, 51, 5, 51, -20, -50 },
+ { 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static const ShapeProvider k1BranStoneShapesDOSProvider = { ARRAYSIZE(k1BranStoneShapesDOS), k1BranStoneShapesDOS };
+
+static const byte k1OutroReunionSeqDOS[1351] = {
+ 0x1A, 0x00, 0x08, 0x01, 0x06, 0x01, 0x00, 0x02,
+ 0x08, 0x00, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00,
+ 0x14, 0x0A, 0x00, 0x03, 0x08, 0x07, 0x08, 0x00,
+ 0x0B, 0x00, 0x09, 0x00, 0x10, 0x20, 0x5A, 0x00,
+ 0x3A, 0x02, 0x02, 0x08, 0x0D, 0x50, 0x00, 0x22,
+ 0x07, 0x10, 0x00, 0x02, 0x08, 0x0E, 0x50, 0x00,
+ 0x22, 0x07, 0x10, 0x00, 0x02, 0x08, 0x0C, 0x50,
+ 0x00, 0x22, 0x07, 0x10, 0x00, 0x02, 0x08, 0x0B,
+ 0x50, 0x00, 0x22, 0x07, 0x10, 0x00, 0x02, 0x08,
+ 0x0C, 0x50, 0x00, 0x22, 0x07, 0x10, 0x00, 0x02,
+ 0x08, 0x0D, 0x50, 0x00, 0x22, 0x07, 0x10, 0x00,
+ 0x02, 0x08, 0x0E, 0x50, 0x00, 0x22, 0x07, 0x10,
+ 0x00, 0x0A, 0x01, 0x03, 0x08, 0x07, 0x08, 0x00,
+ 0x0B, 0x01, 0x04, 0x00, 0x10, 0x21, 0x5A, 0x00,
+ 0x3A, 0x02, 0x0A, 0x02, 0x02, 0x08, 0x14, 0x50,
+ 0x00, 0x22, 0x07, 0x08, 0x00, 0x03, 0x08, 0x07,
+ 0x08, 0x00, 0x03, 0x08, 0x07, 0x08, 0x00, 0x03,
+ 0x08, 0x07, 0x08, 0x00, 0x03, 0x08, 0x07, 0x08,
+ 0x00, 0x0B, 0x02, 0x01, 0x00, 0x03, 0x08, 0x07,
+ 0x08, 0x00, 0x03, 0x08, 0x07, 0x08, 0x00, 0x03,
+ 0x08, 0x07, 0x08, 0x00, 0x10, 0x22, 0x5A, 0x00,
+ 0x3A, 0x02, 0x0A, 0x03, 0x03, 0x08, 0x07, 0x08,
+ 0x00, 0x0B, 0x03, 0x0B, 0x00, 0x10, 0x23, 0x78,
+ 0x00, 0x3A, 0x0F, 0x0A, 0x03, 0x03, 0x08, 0x07,
+ 0x08, 0x00, 0x0B, 0x03, 0x05, 0x00, 0x06, 0x28,
+ 0x00, 0x02, 0x08, 0x2E, 0x50, 0x00, 0x22, 0x07,
+ 0x10, 0x00, 0x02, 0x08, 0x2D, 0x50, 0x00, 0x22,
+ 0x07, 0x10, 0x00, 0x02, 0x08, 0x2E, 0x50, 0x00,
+ 0x22, 0x07, 0x10, 0x00, 0x02, 0x08, 0x2D, 0x50,
+ 0x00, 0x22, 0x07, 0x10, 0x00, 0x02, 0x08, 0x2E,
+ 0x50, 0x00, 0x22, 0x07, 0x10, 0x00, 0x02, 0x08,
+ 0x2D, 0x50, 0x00, 0x22, 0x07, 0x10, 0x00, 0x02,
+ 0x08, 0x2F, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00,
+ 0x02, 0x08, 0x30, 0x50, 0x00, 0x22, 0x07, 0x08,
+ 0x00, 0x02, 0x08, 0x31, 0x50, 0x00, 0x22, 0x07,
+ 0x08, 0x00, 0x02, 0x08, 0x32, 0x50, 0x00, 0x22,
+ 0x07, 0x08, 0x00, 0x06, 0x0A, 0x00, 0x10, 0x24,
+ 0x5A, 0x00, 0x3A, 0x02, 0x02, 0x08, 0x33, 0x50,
+ 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08, 0x34,
+ 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08,
+ 0x35, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02,
+ 0x08, 0x36, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00,
+ 0x02, 0x08, 0x37, 0x50, 0x00, 0x22, 0x07, 0x08,
+ 0x00, 0x02, 0x08, 0x35, 0x50, 0x00, 0x22, 0x07,
+ 0x08, 0x00, 0x02, 0x08, 0x34, 0x50, 0x00, 0x22,
+ 0x07, 0x08, 0x00, 0x02, 0x08, 0x33, 0x50, 0x00,
+ 0x22, 0x07, 0x08, 0x00, 0x02, 0x08, 0x35, 0x50,
+ 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08, 0x36,
+ 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08,
+ 0x37, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x06,
+ 0x0A, 0x00, 0x10, 0x25, 0x5A, 0x00, 0x3A, 0x02,
+ 0x02, 0x08, 0x33, 0x50, 0x00, 0x22, 0x07, 0x08,
+ 0x00, 0x02, 0x08, 0x34, 0x50, 0x00, 0x22, 0x07,
+ 0x08, 0x00, 0x02, 0x08, 0x35, 0x50, 0x00, 0x22,
+ 0x07, 0x08, 0x00, 0x02, 0x08, 0x36, 0x50, 0x00,
+ 0x22, 0x07, 0x08, 0x00, 0x02, 0x08, 0x37, 0x50,
+ 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08, 0x35,
+ 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08,
+ 0x34, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02,
+ 0x08, 0x33, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00,
+ 0x02, 0x08, 0x35, 0x50, 0x00, 0x22, 0x07, 0x08,
+ 0x00, 0x02, 0x08, 0x36, 0x50, 0x00, 0x22, 0x07,
+ 0x08, 0x00, 0x02, 0x08, 0x37, 0x50, 0x00, 0x22,
+ 0x07, 0x08, 0x00, 0x06, 0x1E, 0x00, 0x10, 0x26,
+ 0x78, 0x00, 0x3A, 0x0F, 0x02, 0x08, 0x38, 0x50,
+ 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08, 0x39,
+ 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08,
+ 0x3A, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02,
+ 0x08, 0x38, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00,
+ 0x02, 0x08, 0x3B, 0x50, 0x00, 0x22, 0x07, 0x08,
+ 0x00, 0x06, 0x0A, 0x00, 0x02, 0x08, 0x39, 0x50,
+ 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08, 0x38,
+ 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08,
+ 0x39, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02,
+ 0x08, 0x3A, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00,
+ 0x06, 0x3C, 0x00, 0x11, 0x02, 0x08, 0x33, 0x50,
+ 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08, 0x32,
+ 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08,
+ 0x31, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02,
+ 0x08, 0x30, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00,
+ 0x02, 0x08, 0x2F, 0x50, 0x00, 0x22, 0x07, 0x08,
+ 0x00, 0x02, 0x08, 0x2E, 0x50, 0x00, 0x22, 0x07,
+ 0x08, 0x00, 0x02, 0x08, 0x2D, 0x50, 0x00, 0x22,
+ 0x07, 0x08, 0x00, 0x06, 0x1E, 0x00, 0x02, 0x08,
+ 0x2E, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02,
+ 0x08, 0x2F, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00,
+ 0x02, 0x08, 0x30, 0x50, 0x00, 0x22, 0x07, 0x08,
+ 0x00, 0x02, 0x08, 0x31, 0x50, 0x00, 0x22, 0x07,
+ 0x08, 0x00, 0x02, 0x08, 0x32, 0x50, 0x00, 0x22,
+ 0x07, 0x08, 0x00, 0x02, 0x08, 0x33, 0x50, 0x00,
+ 0x22, 0x07, 0x08, 0x00, 0x02, 0x08, 0x41, 0x50,
+ 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08, 0x42,
+ 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08,
+ 0x43, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02,
+ 0x08, 0x44, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00,
+ 0x02, 0x08, 0x45, 0x50, 0x00, 0x22, 0x07, 0x08,
+ 0x00, 0x02, 0x08, 0x46, 0x50, 0x00, 0x22, 0x07,
+ 0x08, 0x00, 0x06, 0x0A, 0x00, 0x10, 0x27, 0x5A,
+ 0x00, 0x3A, 0x02, 0x02, 0x08, 0x4E, 0x50, 0x00,
+ 0x22, 0x07, 0x08, 0x00, 0x02, 0x08, 0x4F, 0x50,
+ 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08, 0x50,
+ 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08,
+ 0x51, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02,
+ 0x08, 0x52, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00,
+ 0x02, 0x08, 0x53, 0x50, 0x00, 0x22, 0x07, 0x08,
+ 0x00, 0x02, 0x08, 0x54, 0x50, 0x00, 0x22, 0x07,
+ 0x08, 0x00, 0x02, 0x08, 0x55, 0x50, 0x00, 0x22,
+ 0x07, 0x08, 0x00, 0x06, 0x78, 0x00, 0x10, 0x28,
+ 0x78, 0x00, 0x3A, 0x0F, 0x0A, 0x05, 0x02, 0x08,
+ 0x59, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02,
+ 0x08, 0x5A, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00,
+ 0x02, 0x08, 0x5B, 0x50, 0x00, 0x22, 0x07, 0x08,
+ 0x00, 0x02, 0x08, 0x5C, 0x50, 0x00, 0x22, 0x07,
+ 0x08, 0x00, 0x02, 0x08, 0x5D, 0x50, 0x00, 0x22,
+ 0x07, 0x08, 0x00, 0x0B, 0x05, 0x01, 0x00, 0x06,
+ 0x28, 0x00, 0x10, 0x29, 0x78, 0x00, 0x3A, 0x0F,
+ 0x0A, 0x06, 0x02, 0x08, 0x59, 0x50, 0x00, 0x22,
+ 0x07, 0x08, 0x00, 0x02, 0x08, 0x5A, 0x50, 0x00,
+ 0x22, 0x07, 0x08, 0x00, 0x02, 0x08, 0x5B, 0x50,
+ 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08, 0x5C,
+ 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08,
+ 0x5D, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x0B,
+ 0x06, 0x01, 0x00, 0x06, 0x28, 0x00, 0x10, 0x2A,
+ 0x78, 0x00, 0x3A, 0x0F, 0x02, 0x08, 0x5E, 0x50,
+ 0x00, 0x22, 0x07, 0x10, 0x00, 0x02, 0x08, 0x63,
+ 0x50, 0x00, 0x22, 0x07, 0x10, 0x00, 0x06, 0x5A,
+ 0x00, 0x11, 0x18, 0x69, 0x02, 0x08, 0x64, 0x50,
+ 0x00, 0x22, 0x07, 0x10, 0x00, 0x02, 0x08, 0x65,
+ 0x50, 0x00, 0x22, 0x07, 0x10, 0x00, 0x18, 0x74,
+ 0x02, 0x08, 0x66, 0x50, 0x00, 0x22, 0x07, 0x10,
+ 0x00, 0x02, 0x08, 0x67, 0x50, 0x00, 0x22, 0x07,
+ 0x10, 0x00, 0x18, 0x75, 0x02, 0x08, 0x68, 0x50,
+ 0x00, 0x22, 0x07, 0x10, 0x00, 0x02, 0x08, 0x69,
+ 0x50, 0x00, 0x22, 0x07, 0x10, 0x00, 0x10, 0x2B,
+ 0x96, 0x00, 0x1C, 0x22, 0x0A, 0x06, 0x02, 0x08,
+ 0x6B, 0x50, 0x00, 0x22, 0x07, 0x10, 0x00, 0x02,
+ 0x08, 0x6C, 0x50, 0x00, 0x22, 0x07, 0x10, 0x00,
+ 0x02, 0x08, 0x6D, 0x50, 0x00, 0x22, 0x07, 0x10,
+ 0x00, 0x02, 0x08, 0x6E, 0x50, 0x00, 0x22, 0x07,
+ 0x10, 0x00, 0x02, 0x08, 0x6F, 0x50, 0x00, 0x22,
+ 0x07, 0x10, 0x00, 0x02, 0x08, 0x70, 0x50, 0x00,
+ 0x22, 0x07, 0x10, 0x00, 0x02, 0x08, 0x71, 0x50,
+ 0x00, 0x22, 0x07, 0x10, 0x00, 0x0B, 0x06, 0x01,
+ 0x00, 0x06, 0x1E, 0x00, 0x10, 0x2C, 0x96, 0x00,
+ 0x1C, 0x22, 0x0A, 0x06, 0x02, 0x08, 0x6B, 0x50,
+ 0x00, 0x22, 0x07, 0x10, 0x00, 0x02, 0x08, 0x6C,
+ 0x50, 0x00, 0x22, 0x07, 0x10, 0x00, 0x02, 0x08,
+ 0x6D, 0x50, 0x00, 0x22, 0x07, 0x10, 0x00, 0x02,
+ 0x08, 0x6E, 0x50, 0x00, 0x22, 0x07, 0x10, 0x00,
+ 0x02, 0x08, 0x6F, 0x50, 0x00, 0x22, 0x07, 0x10,
+ 0x00, 0x02, 0x08, 0x70, 0x50, 0x00, 0x22, 0x07,
+ 0x10, 0x00, 0x02, 0x08, 0x71, 0x50, 0x00, 0x22,
+ 0x07, 0x10, 0x00, 0x0B, 0x06, 0x01, 0x00, 0x06,
+ 0x1E, 0x00, 0x10, 0x2D, 0x96, 0x00, 0x1C, 0x22,
+ 0x0A, 0x06, 0x02, 0x08, 0x6B, 0x50, 0x00, 0x22,
+ 0x07, 0x10, 0x00, 0x02, 0x08, 0x6C, 0x50, 0x00,
+ 0x22, 0x07, 0x10, 0x00, 0x02, 0x08, 0x6D, 0x50,
+ 0x00, 0x22, 0x07, 0x10, 0x00, 0x02, 0x08, 0x6E,
+ 0x50, 0x00, 0x22, 0x07, 0x10, 0x00, 0x02, 0x08,
+ 0x6F, 0x50, 0x00, 0x22, 0x07, 0x10, 0x00, 0x02,
+ 0x08, 0x70, 0x50, 0x00, 0x22, 0x07, 0x10, 0x00,
+ 0x02, 0x08, 0x71, 0x50, 0x00, 0x22, 0x07, 0x10,
+ 0x00, 0x0B, 0x06, 0x01, 0x00, 0x06, 0x1E, 0x00,
+ 0x02, 0x08, 0x72, 0x50, 0x00, 0x22, 0x07, 0x10,
+ 0x00, 0x02, 0x08, 0x73, 0x50, 0x00, 0x22, 0x07,
+ 0x10, 0x00, 0x06, 0x14, 0x00, 0x02, 0x08, 0x74,
+ 0x50, 0x00, 0x22, 0x07, 0x10, 0x00, 0x02, 0x08,
+ 0x75, 0x50, 0x00, 0x22, 0x07, 0x10, 0x00, 0x06,
+ 0x78, 0x00, 0x13, 0x0E, 0x01, 0x08, 0x1D
+};
+
+static const ByteProvider k1OutroReunionSeqDOSProvider = { ARRAYSIZE(k1OutroReunionSeqDOS), k1OutroReunionSeqDOS };
+
+static const char *const k1AudioTracksDOS[8] = {
+ "KYRA1A",
+ "KYRA1B",
+ "KYRA2A",
+ "KYRA3A",
+ "KYRA4A",
+ "KYRA4B",
+ "KYRA5A",
+ "KYRA5B"
+};
+
+static const StringListProvider k1AudioTracksDOSProvider = { ARRAYSIZE(k1AudioTracksDOS), k1AudioTracksDOS };
+
+static const char *const k1AudioTracks2DOS[1] = {
+ "kyramisc"
+};
+
+static const StringListProvider k1AudioTracks2DOSProvider = { ARRAYSIZE(k1AudioTracks2DOS), k1AudioTracks2DOS };
+
+static const char *const k1AudioTracksIntroDOS[1] = {
+ "intro"
+};
+
+static const StringListProvider k1AudioTracksIntroDOSProvider = { ARRAYSIZE(k1AudioTracksIntroDOS), k1AudioTracksIntroDOS };
+
diff --git a/devtools/create_kyradat/resources/lok_dos_cd.h b/devtools/create_kyradat/resources/lok_dos_cd.h
new file mode 100644
index 0000000000..9550d53d61
--- /dev/null
+++ b/devtools/create_kyradat/resources/lok_dos_cd.h
@@ -0,0 +1,1997 @@
+static const byte k1KallakWritingSeqDOSCD[2053] = {
+ 0x00, 0x00, 0x01, 0x11, 0x1D, 0x1A, 0x00, 0x00,
+ 0x00, 0x3F, 0x01, 0xC7, 0x0C, 0x00, 0x0F, 0x00,
+ 0x24, 0x2B, 0x24, 0x2C, 0x24, 0x2D, 0x24, 0x2E,
+ 0x1C, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, 0x10,
+ 0x05, 0x00, 0x95, 0x00, 0x20, 0x0A, 0x17, 0x22,
+ 0x2B, 0x1E, 0x12, 0x2E, 0x02, 0x00, 0x01, 0x00,
+ 0x00, 0x10, 0x05, 0x01, 0x94, 0x00, 0x1B, 0x08,
+ 0x06, 0x00, 0x1B, 0x1D, 0x02, 0x00, 0x02, 0x00,
+ 0x00, 0x10, 0x05, 0x02, 0x93, 0x00, 0x14, 0x08,
+ 0x06, 0x00, 0x02, 0x00, 0x03, 0x00, 0x00, 0x10,
+ 0x05, 0x01, 0x90, 0x00, 0x1B, 0x08, 0x06, 0x00,
+ 0x02, 0x00, 0x04, 0x00, 0x00, 0x10, 0x05, 0x00,
+ 0x8D, 0x00, 0x20, 0x08, 0x06, 0x00, 0x1B, 0x1D,
+ 0x02, 0x00, 0x05, 0x00, 0x00, 0x10, 0x05, 0x01,
+ 0x8A, 0x00, 0x1B, 0x08, 0x06, 0x00, 0x02, 0x00,
+ 0x06, 0x00, 0x00, 0x10, 0x05, 0x02, 0x88, 0x00,
+ 0x14, 0x08, 0x06, 0x00, 0x1B, 0x1D, 0x02, 0x00,
+ 0x07, 0x00, 0x00, 0x10, 0x05, 0x01, 0x85, 0x00,
+ 0x1B, 0x08, 0x06, 0x00, 0x02, 0x00, 0x08, 0x00,
+ 0x00, 0x10, 0x05, 0x00, 0x82, 0x00, 0x20, 0x08,
+ 0x06, 0x00, 0x02, 0x00, 0x09, 0x00, 0x00, 0x10,
+ 0x05, 0x01, 0x7F, 0x00, 0x1B, 0x08, 0x06, 0x00,
+ 0x02, 0x00, 0x0A, 0x00, 0x00, 0x10, 0x05, 0x02,
+ 0x7C, 0x00, 0x14, 0x08, 0x06, 0x00, 0x1B, 0x1D,
+ 0x02, 0x00, 0x0B, 0x00, 0x00, 0x10, 0x05, 0x01,
+ 0x79, 0x00, 0x1B, 0x08, 0x06, 0x00, 0x02, 0x00,
+ 0x0C, 0x00, 0x00, 0x10, 0x05, 0x00, 0x76, 0x00,
+ 0x20, 0x08, 0x06, 0x00, 0x02, 0x00, 0x0D, 0x00,
+ 0x00, 0x10, 0x05, 0x01, 0x73, 0x00, 0x1B, 0x08,
+ 0x06, 0x00, 0x1B, 0x1D, 0x02, 0x00, 0x0E, 0x00,
+ 0x00, 0x10, 0x05, 0x02, 0x70, 0x00, 0x14, 0x08,
+ 0x06, 0x00, 0x02, 0x00, 0x0F, 0x00, 0x00, 0x10,
+ 0x05, 0x01, 0x6D, 0x00, 0x1B, 0x08, 0x06, 0x00,
+ 0x02, 0x00, 0x10, 0x00, 0x00, 0x10, 0x05, 0x00,
+ 0x6A, 0x00, 0x20, 0x08, 0x06, 0x00, 0x02, 0x00,
+ 0x11, 0x00, 0x00, 0x10, 0x05, 0x01, 0x67, 0x00,
+ 0x1B, 0x08, 0x06, 0x00, 0x1B, 0x1D, 0x02, 0x00,
+ 0x12, 0x00, 0x00, 0x10, 0x05, 0x02, 0x65, 0x00,
+ 0x14, 0x08, 0x06, 0x00, 0x02, 0x00, 0x13, 0x00,
+ 0x00, 0x10, 0x05, 0x01, 0x63, 0x00, 0x1B, 0x08,
+ 0x06, 0x00, 0x02, 0x00, 0x14, 0x00, 0x00, 0x10,
+ 0x05, 0x00, 0x63, 0x00, 0x20, 0x08, 0x06, 0x00,
+ 0x02, 0x00, 0x15, 0x00, 0x00, 0x10, 0x05, 0x00,
+ 0x65, 0x00, 0x1F, 0x08, 0x06, 0x00, 0x02, 0x00,
+ 0x16, 0x00, 0x00, 0x10, 0x05, 0x00, 0x6A, 0x00,
+ 0x1D, 0x08, 0x06, 0x00, 0x02, 0x00, 0x17, 0x00,
+ 0x00, 0x10, 0x05, 0x00, 0x70, 0x00, 0x19, 0x08,
+ 0x06, 0x00, 0x02, 0x00, 0x18, 0x00, 0x00, 0x10,
+ 0x05, 0x00, 0x76, 0x00, 0x17, 0x08, 0x06, 0x00,
+ 0x02, 0x00, 0x19, 0x00, 0x00, 0x10, 0x05, 0x00,
+ 0x7C, 0x00, 0x16, 0x08, 0x06, 0x00, 0x02, 0x00,
+ 0x1A, 0x00, 0x00, 0x10, 0x05, 0x00, 0x82, 0x00,
+ 0x17, 0x08, 0x06, 0x00, 0x02, 0x00, 0x1B, 0x00,
+ 0x00, 0x10, 0x05, 0x00, 0x88, 0x00, 0x19, 0x08,
+ 0x06, 0x00, 0x02, 0x00, 0x1C, 0x00, 0x00, 0x10,
+ 0x05, 0x00, 0x8D, 0x00, 0x1D, 0x08, 0x06, 0x00,
+ 0x02, 0x00, 0x1D, 0x00, 0x00, 0x10, 0x05, 0x00,
+ 0x93, 0x00, 0x1F, 0x08, 0x06, 0x00, 0x1F, 0x22,
+ 0x2C, 0x1E, 0x12, 0x2F, 0x02, 0x00, 0x01, 0x00,
+ 0x00, 0x10, 0x05, 0x01, 0x94, 0x00, 0x1B, 0x08,
+ 0x06, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x10,
+ 0x05, 0x01, 0x94, 0x00, 0x1B, 0x08, 0x06, 0x00,
+ 0x1B, 0x1D, 0x02, 0x00, 0x02, 0x00, 0x00, 0x10,
+ 0x05, 0x02, 0x93, 0x00, 0x14, 0x08, 0x06, 0x00,
+ 0x02, 0x00, 0x02, 0x00, 0x00, 0x10, 0x05, 0x02,
+ 0x93, 0x00, 0x14, 0x08, 0x06, 0x00, 0x02, 0x00,
+ 0x03, 0x00, 0x00, 0x10, 0x05, 0x01, 0x90, 0x00,
+ 0x1B, 0x08, 0x06, 0x00, 0x02, 0x00, 0x04, 0x00,
+ 0x00, 0x10, 0x05, 0x00, 0x8D, 0x00, 0x20, 0x08,
+ 0x06, 0x00, 0x1B, 0x1D, 0x02, 0x00, 0x05, 0x00,
+ 0x00, 0x10, 0x05, 0x01, 0x8A, 0x00, 0x1B, 0x08,
+ 0x06, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x10,
+ 0x05, 0x01, 0x8A, 0x00, 0x1B, 0x08, 0x06, 0x00,
+ 0x02, 0x00, 0x06, 0x00, 0x00, 0x10, 0x05, 0x02,
+ 0x88, 0x00, 0x14, 0x08, 0x06, 0x00, 0x1B, 0x1D,
+ 0x02, 0x00, 0x07, 0x00, 0x00, 0x10, 0x05, 0x01,
+ 0x85, 0x00, 0x1B, 0x08, 0x06, 0x00, 0x02, 0x00,
+ 0x08, 0x00, 0x00, 0x10, 0x05, 0x00, 0x82, 0x00,
+ 0x20, 0x08, 0x06, 0x00, 0x02, 0x00, 0x09, 0x00,
+ 0x00, 0x10, 0x05, 0x01, 0x7F, 0x00, 0x1B, 0x08,
+ 0x06, 0x00, 0x02, 0x00, 0x0A, 0x00, 0x00, 0x10,
+ 0x05, 0x02, 0x7C, 0x00, 0x14, 0x08, 0x06, 0x00,
+ 0x1B, 0x1D, 0x02, 0x00, 0x0B, 0x00, 0x00, 0x10,
+ 0x05, 0x01, 0x79, 0x00, 0x1B, 0x08, 0x06, 0x00,
+ 0x02, 0x00, 0x0C, 0x00, 0x00, 0x10, 0x05, 0x00,
+ 0x76, 0x00, 0x20, 0x08, 0x06, 0x00, 0x02, 0x00,
+ 0x0D, 0x00, 0x00, 0x10, 0x05, 0x01, 0x73, 0x00,
+ 0x1B, 0x08, 0x06, 0x00, 0x1B, 0x1D, 0x02, 0x00,
+ 0x0E, 0x00, 0x00, 0x10, 0x05, 0x02, 0x70, 0x00,
+ 0x14, 0x08, 0x06, 0x00, 0x02, 0x00, 0x0F, 0x00,
+ 0x00, 0x10, 0x05, 0x01, 0x6D, 0x00, 0x1B, 0x08,
+ 0x06, 0x00, 0x02, 0x00, 0x10, 0x00, 0x00, 0x10,
+ 0x05, 0x00, 0x6A, 0x00, 0x20, 0x08, 0x06, 0x00,
+ 0x02, 0x00, 0x11, 0x00, 0x00, 0x10, 0x05, 0x01,
+ 0x67, 0x00, 0x1B, 0x08, 0x06, 0x00, 0x1B, 0x1D,
+ 0x02, 0x00, 0x12, 0x00, 0x00, 0x10, 0x05, 0x02,
+ 0x65, 0x00, 0x14, 0x08, 0x06, 0x00, 0x02, 0x00,
+ 0x13, 0x00, 0x00, 0x10, 0x05, 0x01, 0x63, 0x00,
+ 0x1B, 0x08, 0x06, 0x00, 0x02, 0x00, 0x14, 0x00,
+ 0x00, 0x10, 0x05, 0x00, 0x63, 0x00, 0x20, 0x08,
+ 0x06, 0x00, 0x02, 0x00, 0x15, 0x00, 0x00, 0x10,
+ 0x05, 0x00, 0x65, 0x00, 0x1F, 0x08, 0x06, 0x00,
+ 0x02, 0x00, 0x16, 0x00, 0x00, 0x10, 0x05, 0x00,
+ 0x6A, 0x00, 0x1D, 0x08, 0x06, 0x00, 0x02, 0x00,
+ 0x17, 0x00, 0x00, 0x10, 0x05, 0x00, 0x70, 0x00,
+ 0x19, 0x08, 0x06, 0x00, 0x02, 0x00, 0x18, 0x00,
+ 0x00, 0x10, 0x05, 0x00, 0x76, 0x00, 0x17, 0x08,
+ 0x06, 0x00, 0x02, 0x00, 0x19, 0x00, 0x00, 0x10,
+ 0x05, 0x00, 0x7C, 0x00, 0x16, 0x08, 0x06, 0x00,
+ 0x02, 0x00, 0x1A, 0x00, 0x00, 0x10, 0x05, 0x00,
+ 0x82, 0x00, 0x17, 0x08, 0x06, 0x00, 0x02, 0x00,
+ 0x1B, 0x00, 0x00, 0x10, 0x05, 0x00, 0x88, 0x00,
+ 0x19, 0x08, 0x06, 0x00, 0x02, 0x00, 0x1C, 0x00,
+ 0x00, 0x10, 0x05, 0x00, 0x8D, 0x00, 0x1D, 0x08,
+ 0x06, 0x00, 0x02, 0x00, 0x1D, 0x00, 0x00, 0x10,
+ 0x05, 0x00, 0x93, 0x00, 0x1F, 0x08, 0x06, 0x00,
+ 0x1F, 0x22, 0x2D, 0x1E, 0x12, 0x30, 0x02, 0x00,
+ 0x01, 0x00, 0x00, 0x10, 0x05, 0x01, 0x94, 0x00,
+ 0x1B, 0x08, 0x06, 0x00, 0x02, 0x00, 0x01, 0x00,
+ 0x00, 0x10, 0x05, 0x01, 0x94, 0x00, 0x1B, 0x08,
+ 0x06, 0x00, 0x1B, 0x1D, 0x02, 0x00, 0x02, 0x00,
+ 0x00, 0x10, 0x05, 0x02, 0x93, 0x00, 0x14, 0x08,
+ 0x06, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x10,
+ 0x05, 0x02, 0x93, 0x00, 0x14, 0x08, 0x06, 0x00,
+ 0x02, 0x00, 0x02, 0x00, 0x00, 0x10, 0x05, 0x02,
+ 0x93, 0x00, 0x14, 0x08, 0x06, 0x00, 0x02, 0x00,
+ 0x03, 0x00, 0x00, 0x10, 0x05, 0x01, 0x90, 0x00,
+ 0x1B, 0x08, 0x06, 0x00, 0x02, 0x00, 0x03, 0x00,
+ 0x00, 0x10, 0x05, 0x01, 0x90, 0x00, 0x1B, 0x08,
+ 0x06, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 0x10,
+ 0x05, 0x00, 0x8D, 0x00, 0x20, 0x08, 0x06, 0x00,
+ 0x1B, 0x1D, 0x02, 0x00, 0x05, 0x00, 0x00, 0x10,
+ 0x05, 0x01, 0x8A, 0x00, 0x1B, 0x08, 0x06, 0x00,
+ 0x02, 0x00, 0x06, 0x00, 0x00, 0x10, 0x05, 0x02,
+ 0x88, 0x00, 0x14, 0x08, 0x06, 0x00, 0x1B, 0x1D,
+ 0x02, 0x00, 0x07, 0x00, 0x00, 0x10, 0x05, 0x01,
+ 0x85, 0x00, 0x1B, 0x08, 0x06, 0x00, 0x02, 0x00,
+ 0x08, 0x00, 0x00, 0x10, 0x05, 0x00, 0x82, 0x00,
+ 0x20, 0x08, 0x06, 0x00, 0x02, 0x00, 0x09, 0x00,
+ 0x00, 0x10, 0x05, 0x01, 0x7F, 0x00, 0x1B, 0x08,
+ 0x06, 0x00, 0x02, 0x00, 0x0A, 0x00, 0x00, 0x10,
+ 0x05, 0x02, 0x7C, 0x00, 0x14, 0x08, 0x06, 0x00,
+ 0x1B, 0x1D, 0x02, 0x00, 0x0B, 0x00, 0x00, 0x10,
+ 0x05, 0x01, 0x79, 0x00, 0x1B, 0x08, 0x06, 0x00,
+ 0x02, 0x00, 0x0C, 0x00, 0x00, 0x10, 0x05, 0x00,
+ 0x76, 0x00, 0x20, 0x08, 0x06, 0x00, 0x02, 0x00,
+ 0x0D, 0x00, 0x00, 0x10, 0x05, 0x01, 0x73, 0x00,
+ 0x1B, 0x08, 0x06, 0x00, 0x1B, 0x1D, 0x02, 0x00,
+ 0x0E, 0x00, 0x00, 0x10, 0x05, 0x02, 0x70, 0x00,
+ 0x14, 0x08, 0x06, 0x00, 0x02, 0x00, 0x0F, 0x00,
+ 0x00, 0x10, 0x05, 0x01, 0x6D, 0x00, 0x1B, 0x08,
+ 0x06, 0x00, 0x02, 0x00, 0x10, 0x00, 0x00, 0x10,
+ 0x05, 0x00, 0x6A, 0x00, 0x20, 0x08, 0x06, 0x00,
+ 0x02, 0x00, 0x11, 0x00, 0x00, 0x10, 0x05, 0x01,
+ 0x67, 0x00, 0x1B, 0x08, 0x06, 0x00, 0x1B, 0x1D,
+ 0x02, 0x00, 0x12, 0x00, 0x00, 0x10, 0x05, 0x02,
+ 0x65, 0x00, 0x14, 0x08, 0x06, 0x00, 0x02, 0x00,
+ 0x13, 0x00, 0x00, 0x10, 0x05, 0x01, 0x63, 0x00,
+ 0x1B, 0x08, 0x06, 0x00, 0x02, 0x00, 0x14, 0x00,
+ 0x00, 0x10, 0x05, 0x00, 0x63, 0x00, 0x20, 0x08,
+ 0x06, 0x00, 0x02, 0x00, 0x15, 0x00, 0x00, 0x10,
+ 0x05, 0x00, 0x65, 0x00, 0x1F, 0x08, 0x06, 0x00,
+ 0x02, 0x00, 0x16, 0x00, 0x00, 0x10, 0x05, 0x00,
+ 0x6A, 0x00, 0x1D, 0x08, 0x06, 0x00, 0x02, 0x00,
+ 0x17, 0x00, 0x00, 0x10, 0x05, 0x00, 0x70, 0x00,
+ 0x19, 0x08, 0x06, 0x00, 0x02, 0x00, 0x18, 0x00,
+ 0x00, 0x10, 0x05, 0x00, 0x76, 0x00, 0x17, 0x08,
+ 0x06, 0x00, 0x02, 0x00, 0x19, 0x00, 0x00, 0x10,
+ 0x05, 0x00, 0x7C, 0x00, 0x16, 0x08, 0x06, 0x00,
+ 0x02, 0x00, 0x1A, 0x00, 0x00, 0x10, 0x05, 0x00,
+ 0x82, 0x00, 0x17, 0x08, 0x06, 0x00, 0x02, 0x00,
+ 0x1B, 0x00, 0x00, 0x10, 0x05, 0x00, 0x88, 0x00,
+ 0x19, 0x08, 0x06, 0x00, 0x02, 0x00, 0x1C, 0x00,
+ 0x00, 0x10, 0x05, 0x00, 0x8D, 0x00, 0x1D, 0x08,
+ 0x06, 0x00, 0x02, 0x00, 0x1D, 0x00, 0x00, 0x10,
+ 0x05, 0x00, 0x93, 0x00, 0x1F, 0x08, 0x06, 0x00,
+ 0x1F, 0x07, 0x3C, 0x00, 0x22, 0x2E, 0x1E, 0x12,
+ 0x31, 0x02, 0x00, 0x00, 0x00, 0x00, 0x10, 0x05,
+ 0x00, 0x95, 0x00, 0x20, 0x08, 0x06, 0x00, 0x02,
+ 0x00, 0x00, 0x00, 0x00, 0x10, 0x05, 0x00, 0x95,
+ 0x00, 0x20, 0x08, 0x06, 0x00, 0x1B, 0x1D, 0x02,
+ 0x00, 0x01, 0x00, 0x00, 0x10, 0x05, 0x01, 0x94,
+ 0x00, 0x1B, 0x08, 0x06, 0x00, 0x02, 0x00, 0x01,
+ 0x00, 0x00, 0x10, 0x05, 0x01, 0x94, 0x00, 0x1B,
+ 0x08, 0x06, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00,
+ 0x10, 0x05, 0x02, 0x93, 0x00, 0x14, 0x08, 0x06,
+ 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x10, 0x05,
+ 0x02, 0x93, 0x00, 0x14, 0x08, 0x06, 0x00, 0x1B,
+ 0x1D, 0x02, 0x00, 0x03, 0x00, 0x00, 0x10, 0x05,
+ 0x01, 0x90, 0x00, 0x1B, 0x08, 0x06, 0x00, 0x02,
+ 0x00, 0x04, 0x00, 0x00, 0x10, 0x05, 0x00, 0x8D,
+ 0x00, 0x20, 0x08, 0x06, 0x00, 0x02, 0x00, 0x05,
+ 0x00, 0x00, 0x10, 0x05, 0x01, 0x8A, 0x00, 0x1B,
+ 0x08, 0x06, 0x00, 0x1B, 0x1D, 0x02, 0x00, 0x06,
+ 0x00, 0x00, 0x10, 0x05, 0x02, 0x88, 0x00, 0x14,
+ 0x08, 0x06, 0x00, 0x02, 0x00, 0x07, 0x00, 0x00,
+ 0x10, 0x05, 0x01, 0x85, 0x00, 0x1B, 0x08, 0x06,
+ 0x00, 0x1B, 0x1D, 0x02, 0x00, 0x08, 0x00, 0x00,
+ 0x10, 0x05, 0x00, 0x82, 0x00, 0x20, 0x08, 0x06,
+ 0x00, 0x02, 0x00, 0x09, 0x00, 0x00, 0x10, 0x05,
+ 0x01, 0x7F, 0x00, 0x1B, 0x08, 0x06, 0x00, 0x02,
+ 0x00, 0x0A, 0x00, 0x00, 0x10, 0x05, 0x02, 0x7C,
+ 0x00, 0x14, 0x08, 0x06, 0x00, 0x1B, 0x1D, 0x02,
+ 0x00, 0x0B, 0x00, 0x00, 0x10, 0x05, 0x01, 0x79,
+ 0x00, 0x1B, 0x08, 0x06, 0x00, 0x02, 0x00, 0x0C,
+ 0x00, 0x00, 0x10, 0x05, 0x00, 0x76, 0x00, 0x20,
+ 0x08, 0x06, 0x00, 0x1B, 0x1D, 0x02, 0x00, 0x0D,
+ 0x00, 0x00, 0x10, 0x05, 0x01, 0x73, 0x00, 0x1B,
+ 0x08, 0x06, 0x00, 0x02, 0x00, 0x0E, 0x00, 0x00,
+ 0x10, 0x05, 0x02, 0x70, 0x00, 0x14, 0x08, 0x06,
+ 0x00, 0x02, 0x00, 0x0F, 0x00, 0x00, 0x10, 0x05,
+ 0x01, 0x6D, 0x00, 0x1B, 0x08, 0x06, 0x00, 0x1B,
+ 0x1D, 0x02, 0x00, 0x10, 0x00, 0x00, 0x10, 0x05,
+ 0x00, 0x6A, 0x00, 0x20, 0x08, 0x06, 0x00, 0x02,
+ 0x00, 0x11, 0x00, 0x00, 0x10, 0x05, 0x01, 0x67,
+ 0x00, 0x1B, 0x08, 0x06, 0x00, 0x1B, 0x1D, 0x02,
+ 0x00, 0x12, 0x00, 0x00, 0x10, 0x05, 0x02, 0x65,
+ 0x00, 0x14, 0x08, 0x06, 0x00, 0x07, 0x3C, 0x00,
+ 0x02, 0x00, 0x1E, 0x00, 0x00, 0x10, 0x09, 0x15,
+ 0x07, 0x1E, 0x00, 0x0B, 0x01, 0x02, 0x00, 0x1F,
+ 0x00, 0x00, 0x10, 0x08, 0x0A, 0x00, 0x02, 0x00,
+ 0x20, 0x00, 0x00, 0x10, 0x08, 0x0A, 0x00, 0x02,
+ 0x00, 0x21, 0x00, 0x00, 0x10, 0x08, 0x0A, 0x00,
+ 0x02, 0x00, 0x22, 0x00, 0x00, 0x10, 0x08, 0x0A,
+ 0x00, 0x0C, 0x01, 0x02, 0x00, 0x1B, 0x1F, 0x07,
+ 0x0A, 0x00, 0x02, 0x00, 0x23, 0x00, 0x00, 0x10,
+ 0x08, 0x14, 0x00, 0x1B, 0x1E, 0x02, 0x00, 0x24,
+ 0x00, 0x00, 0x10, 0x08, 0x14, 0x00, 0x02, 0x00,
+ 0x25, 0x00, 0x00, 0x10, 0x08, 0x14, 0x00, 0x1B,
+ 0x1F, 0x02, 0x00, 0x26, 0x00, 0x00, 0x10, 0x08,
+ 0x14, 0x00, 0x02, 0x00, 0x27, 0x00, 0x00, 0x10,
+ 0x08, 0x14, 0x00, 0x1B, 0x1E, 0x02, 0x00, 0x28,
+ 0x00, 0x00, 0x10, 0x09, 0x07, 0x3C, 0x00, 0x1B,
+ 0x1E, 0x03, 0x00, 0x08, 0x06, 0x00, 0x1B, 0x1E,
+ 0x03, 0x00, 0x08, 0x06, 0x00, 0x03, 0x00, 0x08,
+ 0x06, 0x00, 0x03, 0x00, 0x08, 0x06, 0x00, 0x03,
+ 0x00, 0x08, 0x06, 0x00, 0x03, 0x00, 0x08, 0x06,
+ 0x00, 0x03, 0x00, 0x08, 0x06, 0x00, 0x1B, 0x1E,
+ 0x03, 0x00, 0x08, 0x06, 0x00, 0x03, 0x00, 0x08,
+ 0x06, 0x00, 0x03, 0x00, 0x08, 0x06, 0x00, 0x03,
+ 0x00, 0x08, 0x06, 0x00, 0x03, 0x00, 0x08, 0x06,
+ 0x00, 0x03, 0x00, 0x08, 0x06, 0x00, 0x03, 0x00,
+ 0x08, 0x06, 0x00, 0x03, 0x00, 0x08, 0x06, 0x00,
+ 0x03, 0x00, 0x08, 0x06, 0x00, 0x1B, 0x1E, 0x03,
+ 0x00, 0x08, 0x06, 0x00, 0x03, 0x00, 0x08, 0x06,
+ 0x00, 0x03, 0x00, 0x08, 0x06, 0x00, 0x03, 0x00,
+ 0x08, 0x06, 0x00, 0x03, 0x00, 0x08, 0x06, 0x00,
+ 0x03, 0x00, 0x08, 0x06, 0x00, 0x03, 0x00, 0x08,
+ 0x06, 0x00, 0x03, 0x00, 0x08, 0x06, 0x00, 0x1B,
+ 0x1E, 0x03, 0x00, 0x08, 0x06, 0x00, 0x03, 0x00,
+ 0x08, 0x06, 0x00, 0x03, 0x00, 0x08, 0x06, 0x00,
+ 0x03, 0x00, 0x08, 0x06, 0x00, 0x03, 0x00, 0x08,
+ 0x06, 0x00, 0x03, 0x00, 0x08, 0x06, 0x00, 0x03,
+ 0x00, 0x08, 0x06, 0x00, 0x03, 0x00, 0x08, 0x06,
+ 0x00, 0x03, 0x00, 0x08, 0x06, 0x00, 0x03, 0x00,
+ 0x08, 0x06, 0x00, 0x16, 0x1F, 0x1C, 0x01, 0x07,
+ 0x3C, 0x00, 0x01, 0x00, 0x20
+};
+
+static const ByteProvider k1KallakWritingSeqDOSCDProvider = { ARRAYSIZE(k1KallakWritingSeqDOSCD), k1KallakWritingSeqDOSCD };
+
+static const byte k1MalcolmTreeSeqDOSCD[560] = {
+ 0x23, 0x00, 0x01, 0x00, 0x1D, 0x11, 0x24, 0x1C,
+ 0x24, 0x13, 0x24, 0x14, 0x24, 0x15, 0x24, 0x16,
+ 0x24, 0x17, 0x24, 0x19, 0x24, 0x1B, 0x1A, 0x00,
+ 0x00, 0x00, 0x3F, 0x01, 0xC7, 0x0C, 0x00, 0x0F,
+ 0x01, 0x10, 0x01, 0x0A, 0x02, 0x01, 0x00, 0x00,
+ 0x00, 0x10, 0x1C, 0x03, 0x0A, 0x1B, 0x1E, 0x17,
+ 0x1B, 0x1F, 0x0B, 0x00, 0x03, 0x01, 0x07, 0x06,
+ 0x00, 0x0C, 0x00, 0x1F, 0x00, 0x1B, 0x19, 0x0B,
+ 0x01, 0x03, 0x01, 0x07, 0x06, 0x00, 0x0C, 0x01,
+ 0x0D, 0x00, 0x22, 0x1C, 0x13, 0x1F, 0x50, 0x00,
+ 0x2D, 0x05, 0x03, 0x01, 0x07, 0x06, 0x00, 0x03,
+ 0x01, 0x07, 0x06, 0x00, 0x0B, 0x02, 0x03, 0x01,
+ 0x07, 0x06, 0x00, 0x0C, 0x02, 0x10, 0x00, 0x14,
+ 0x1B, 0x1F, 0x03, 0x01, 0x07, 0x06, 0x00, 0x03,
+ 0x01, 0x07, 0x06, 0x00, 0x03, 0x01, 0x07, 0x06,
+ 0x00, 0x1B, 0x24, 0x1B, 0x1F, 0x03, 0x01, 0x07,
+ 0x06, 0x00, 0x1B, 0x1E, 0x0B, 0x03, 0x03, 0x01,
+ 0x07, 0x06, 0x00, 0x0C, 0x03, 0x15, 0x00, 0x22,
+ 0x13, 0x13, 0x16, 0x50, 0x00, 0x2D, 0x05, 0x1B,
+ 0x1F, 0x0B, 0x04, 0x03, 0x01, 0x07, 0x04, 0x00,
+ 0x0C, 0x04, 0x08, 0x00, 0x02, 0x01, 0x64, 0x00,
+ 0x00, 0x10, 0x1B, 0x1A, 0x1B, 0x1E, 0x0B, 0x05,
+ 0x03, 0x01, 0x07, 0x04, 0x00, 0x0C, 0x05, 0x09,
+ 0x00, 0x14, 0x06, 0x3C, 0x00, 0x13, 0x17, 0x50,
+ 0x00, 0x2D, 0x05, 0x0B, 0x06, 0x03, 0x01, 0x07,
+ 0x04, 0x00, 0x0C, 0x06, 0x09, 0x00, 0x22, 0x14,
+ 0x07, 0x1E, 0x00, 0x0B, 0x06, 0x03, 0x01, 0x07,
+ 0x04, 0x00, 0x0C, 0x06, 0x09, 0x00, 0x1B, 0x1A,
+ 0x1B, 0x1F, 0x0B, 0x07, 0x03, 0x01, 0x07, 0x04,
+ 0x00, 0x0C, 0x07, 0x06, 0x00, 0x1B, 0x1E, 0x07,
+ 0x1E, 0x00, 0x22, 0x15, 0x13, 0x18, 0x50, 0x00,
+ 0x2D, 0x05, 0x03, 0x01, 0x07, 0x06, 0x00, 0x03,
+ 0x01, 0x07, 0x06, 0x00, 0x03, 0x01, 0x07, 0x06,
+ 0x00, 0x0B, 0x08, 0x04, 0x01, 0x07, 0x06, 0x00,
+ 0x04, 0x01, 0x07, 0x06, 0x00, 0x03, 0x01, 0x07,
+ 0x06, 0x00, 0x03, 0x01, 0x07, 0x06, 0x00, 0x0D,
+ 0x08, 0x01, 0x00, 0x03, 0x01, 0x07, 0x06, 0x00,
+ 0x06, 0x78, 0x00, 0x0B, 0x09, 0x03, 0x01, 0x07,
+ 0x06, 0x00, 0x0C, 0x09, 0x04, 0x00, 0x1B, 0x1B,
+ 0x0B, 0x0A, 0x03, 0x01, 0x07, 0x06, 0x00, 0x0C,
+ 0x0A, 0x09, 0x00, 0x06, 0x14, 0x00, 0x22, 0x16,
+ 0x13, 0x19, 0x50, 0x00, 0x2D, 0x05, 0x03, 0x01,
+ 0x07, 0x06, 0x00, 0x03, 0x01, 0x07, 0x06, 0x00,
+ 0x0B, 0x0B, 0x03, 0x01, 0x07, 0x06, 0x00, 0x04,
+ 0x01, 0x07, 0x06, 0x00, 0x04, 0x01, 0x07, 0x06,
+ 0x00, 0x03, 0x01, 0x07, 0x06, 0x00, 0x03, 0x01,
+ 0x07, 0x06, 0x00, 0x0C, 0x0B, 0x01, 0x00, 0x03,
+ 0x01, 0x07, 0x06, 0x00, 0x03, 0x01, 0x07, 0x06,
+ 0x00, 0x03, 0x01, 0x07, 0x06, 0x00, 0x22, 0x17,
+ 0x13, 0x1A, 0x50, 0x00, 0x2D, 0x05, 0x0B, 0x0C,
+ 0x03, 0x01, 0x07, 0x06, 0x00, 0x0C, 0x0C, 0x12,
+ 0x00, 0x03, 0x01, 0x01, 0x01, 0x14, 0x18, 0x00,
+ 0x02, 0x00, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00,
+ 0x00, 0x10, 0x22, 0x19, 0x13, 0x1C, 0x50, 0x00,
+ 0x2D, 0x05, 0x06, 0x3C, 0x00, 0x03, 0x02, 0x03,
+ 0x02, 0x07, 0x06, 0x00, 0x14, 0x1B, 0x1C, 0x0B,
+ 0x0F, 0x03, 0x02, 0x07, 0x06, 0x00, 0x0C, 0x0F,
+ 0x0D, 0x00, 0x22, 0x1B, 0x13, 0x1D, 0x50, 0x00,
+ 0x2D, 0x05, 0x0B, 0x10, 0x03, 0x02, 0x07, 0x04,
+ 0x00, 0x03, 0x02, 0x07, 0x04, 0x00, 0x03, 0x02,
+ 0x07, 0x04, 0x00, 0x04, 0x02, 0x07, 0x04, 0x00,
+ 0x04, 0x02, 0x07, 0x04, 0x00, 0x04, 0x02, 0x07,
+ 0x04, 0x00, 0x0D, 0x10, 0x02, 0x00, 0x13, 0x1E,
+ 0x50, 0x00, 0x2D, 0x05, 0x0B, 0x11, 0x03, 0x02,
+ 0x07, 0x04, 0x00, 0x03, 0x02, 0x07, 0x04, 0x00,
+ 0x03, 0x02, 0x07, 0x04, 0x00, 0x04, 0x02, 0x07,
+ 0x04, 0x00, 0x04, 0x02, 0x07, 0x04, 0x00, 0x04,
+ 0x02, 0x07, 0x04, 0x00, 0x0D, 0x11, 0x01, 0x00,
+ 0x03, 0x02, 0x07, 0x04, 0x00, 0x07, 0xB4, 0x00,
+ 0x16, 0x1C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x20
+};
+
+static const ByteProvider k1MalcolmTreeSeqDOSCDProvider = { ARRAYSIZE(k1MalcolmTreeSeqDOSCD), k1MalcolmTreeSeqDOSCD };
+
+static const byte k1WestwoodLogoSeqDOSCD[75] = {
+ 0x00, 0x03, 0x01, 0x1D, 0x02, 0x03, 0x00, 0x00,
+ 0x00, 0x00, 0x19, 0x01, 0x07, 0x06, 0x00, 0x07,
+ 0x3C, 0x00, 0x1B, 0x14, 0x0B, 0x00, 0x03, 0x03,
+ 0x19, 0x01, 0x0C, 0x00, 0x08, 0x00, 0x07, 0x3C,
+ 0x00, 0x1B, 0x27, 0x0B, 0x01, 0x03, 0x03, 0x19,
+ 0x01, 0x0C, 0x01, 0x0B, 0x00, 0x07, 0x78, 0x00,
+ 0x1B, 0x14, 0x02, 0x03, 0x0A, 0x00, 0x00, 0x00,
+ 0x19, 0x01, 0x07, 0x06, 0x00, 0x0B, 0x02, 0x04,
+ 0x03, 0x19, 0x01, 0x0C, 0x02, 0x09, 0x00, 0x16,
+ 0x01, 0x03, 0x20
+};
+
+static const ByteProvider k1WestwoodLogoSeqDOSCDProvider = { ARRAYSIZE(k1WestwoodLogoSeqDOSCD), k1WestwoodLogoSeqDOSCD };
+
+static const byte k1KyrandiaLogoSeqDOSCD[166] = {
+ 0x18, 0x00, 0x02, 0x00, 0x06, 0x01, 0x1D, 0x02,
+ 0x06, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x07,
+ 0x06, 0x00, 0x19, 0x04, 0x03, 0x06, 0x19, 0x00,
+ 0x03, 0x06, 0x19, 0x00, 0x03, 0x06, 0x19, 0x00,
+ 0x03, 0x06, 0x19, 0x00, 0x03, 0x06, 0x19, 0x00,
+ 0x03, 0x06, 0x19, 0x00, 0x0B, 0x00, 0x03, 0x06,
+ 0x19, 0x00, 0x0C, 0x00, 0x06, 0x00, 0x03, 0x06,
+ 0x19, 0x00, 0x03, 0x06, 0x19, 0x00, 0x03, 0x06,
+ 0x19, 0x00, 0x03, 0x06, 0x19, 0x00, 0x03, 0x06,
+ 0x19, 0x00, 0x03, 0x06, 0x19, 0x00, 0x03, 0x06,
+ 0x19, 0x00, 0x03, 0x06, 0x19, 0x00, 0x1B, 0x27,
+ 0x0B, 0x01, 0x03, 0x06, 0x19, 0x00, 0x0C, 0x01,
+ 0x07, 0x00, 0x06, 0xF0, 0x00, 0x1B, 0x27, 0x0B,
+ 0x02, 0x04, 0x06, 0x19, 0x00, 0x0C, 0x02, 0x0F,
+ 0x00, 0x07, 0x78, 0x00, 0x07, 0xB4, 0x00, 0x24,
+ 0x37, 0x24, 0x38, 0x24, 0x39, 0x24, 0x3A, 0x24,
+ 0x3B, 0x24, 0x3C, 0x02, 0x06, 0x0D, 0x00, 0x00,
+ 0x00, 0x19, 0x00, 0x07, 0x06, 0x00, 0x07, 0x3C,
+ 0x00, 0x22, 0x1C, 0x1B, 0x14, 0x0B, 0x02, 0x04,
+ 0x06, 0x19, 0x00, 0x0C, 0x02, 0x0C, 0x00, 0x07,
+ 0x78, 0x00, 0x16, 0x01, 0x06, 0x20
+};
+
+static const ByteProvider k1KyrandiaLogoSeqDOSCDProvider = { ARRAYSIZE(k1KyrandiaLogoSeqDOSCD), k1KyrandiaLogoSeqDOSCD };
+
+static const byte k1KallakMalcolmSeqDOSCD[696] = {
+ 0x00, 0x04, 0x01, 0x1D, 0x24, 0x00, 0x24, 0x01,
+ 0x24, 0x02, 0x24, 0x0B, 0x24, 0x0C, 0x11, 0x1A,
+ 0x00, 0x00, 0x00, 0x3F, 0x01, 0xC7, 0x0C, 0x00,
+ 0x0F, 0x03, 0x10, 0x00, 0x1A, 0x00, 0x00, 0x88,
+ 0x3F, 0x01, 0xC7, 0x0C, 0x02, 0x1C, 0x00, 0x02,
+ 0x04, 0x00, 0x10, 0x00, 0x3A, 0x0A, 0x1C, 0x00,
+ 0x1C, 0x05, 0x17, 0x1B, 0x23, 0x0B, 0x00, 0x03,
+ 0x04, 0x08, 0x07, 0x00, 0x0C, 0x00, 0x23, 0x00,
+ 0x22, 0x00, 0x13, 0x02, 0x50, 0x00, 0x3A, 0x05,
+ 0x03, 0x04, 0x08, 0x07, 0x00, 0x03, 0x04, 0x08,
+ 0x07, 0x00, 0x0B, 0x01, 0x03, 0x04, 0x08, 0x0E,
+ 0x00, 0x0C, 0x01, 0x04, 0x00, 0x06, 0x3C, 0x00,
+ 0x22, 0x01, 0x13, 0x03, 0x50, 0x00, 0x3A, 0x05,
+ 0x0B, 0x02, 0x03, 0x04, 0x08, 0x06, 0x00, 0x0C,
+ 0x02, 0x18, 0x00, 0x06, 0x3C, 0x00, 0x22, 0x02,
+ 0x13, 0x04, 0x50, 0x00, 0x3A, 0x05, 0x0B, 0x03,
+ 0x03, 0x04, 0x08, 0x07, 0x00, 0x0C, 0x03, 0x0A,
+ 0x00, 0x06, 0x3C, 0x00, 0x24, 0x04, 0x24, 0x05,
+ 0x24, 0x03, 0x03, 0x04, 0x08, 0x07, 0x00, 0x03,
+ 0x04, 0x08, 0x07, 0x00, 0x22, 0x03, 0x13, 0x05,
+ 0xF0, 0x00, 0x3A, 0x0F, 0x03, 0x04, 0x08, 0x0A,
+ 0x00, 0x03, 0x04, 0x08, 0x0A, 0x00, 0x03, 0x04,
+ 0x08, 0x0A, 0x00, 0x03, 0x04, 0x08, 0x0A, 0x00,
+ 0x03, 0x04, 0x08, 0x0A, 0x00, 0x07, 0x1E, 0x00,
+ 0x22, 0x04, 0x13, 0x06, 0xF0, 0x00, 0x3A, 0x0F,
+ 0x0B, 0x04, 0x03, 0x04, 0x08, 0x05, 0x00, 0x0C,
+ 0x04, 0x12, 0x00, 0x07, 0x14, 0x00, 0x03, 0x04,
+ 0x08, 0x07, 0x00, 0x03, 0x04, 0x08, 0x07, 0x00,
+ 0x03, 0x04, 0x08, 0x07, 0x00, 0x06, 0x3C, 0x00,
+ 0x22, 0x05, 0x13, 0x07, 0xF0, 0x00, 0x3A, 0x0F,
+ 0x0B, 0x05, 0x03, 0x04, 0x08, 0x05, 0x00, 0x0C,
+ 0x05, 0x12, 0x00, 0x06, 0x3C, 0x00, 0x24, 0x06,
+ 0x03, 0x04, 0x08, 0x07, 0x00, 0x03, 0x04, 0x08,
+ 0x07, 0x00, 0x22, 0x06, 0x13, 0x08, 0x50, 0x00,
+ 0x3A, 0x05, 0x0B, 0x06, 0x03, 0x04, 0x08, 0x08,
+ 0x00, 0x0C, 0x06, 0x07, 0x00, 0x06, 0x3C, 0x00,
+ 0x24, 0x07, 0x03, 0x04, 0x08, 0x07, 0x00, 0x03,
+ 0x04, 0x08, 0x07, 0x00, 0x22, 0x07, 0x13, 0x09,
+ 0x50, 0x00, 0x3A, 0x05, 0x03, 0x04, 0x08, 0x07,
+ 0x00, 0x0B, 0x07, 0x03, 0x04, 0x08, 0x07, 0x00,
+ 0x0C, 0x07, 0x0A, 0x00, 0x06, 0x3C, 0x00, 0x22,
+ 0x08, 0x03, 0x04, 0x08, 0x07, 0x00, 0x13, 0x0A,
+ 0x50, 0x00, 0x3A, 0x05, 0x0B, 0x08, 0x03, 0x04,
+ 0x08, 0x07, 0x00, 0x0C, 0x08, 0x0F, 0x00, 0x06,
+ 0x3C, 0x00, 0x24, 0x0A, 0x22, 0x09, 0x13, 0x0B,
+ 0xF0, 0x00, 0x3A, 0x0F, 0x03, 0x04, 0x08, 0x07,
+ 0x00, 0x03, 0x04, 0x08, 0x07, 0x00, 0x03, 0x04,
+ 0x08, 0x07, 0x00, 0x03, 0x04, 0x08, 0x07, 0x00,
+ 0x03, 0x04, 0x08, 0x07, 0x00, 0x03, 0x04, 0x08,
+ 0x07, 0x00, 0x03, 0x04, 0x08, 0x07, 0x00, 0x03,
+ 0x04, 0x08, 0x07, 0x00, 0x03, 0x04, 0x08, 0x07,
+ 0x00, 0x07, 0x3C, 0x00, 0x22, 0x0A, 0x03, 0x04,
+ 0x08, 0x07, 0x00, 0x13, 0x0C, 0xF0, 0x00, 0x3A,
+ 0x0F, 0x0B, 0x09, 0x03, 0x04, 0x08, 0x05, 0x00,
+ 0x0C, 0x09, 0x0F, 0x00, 0x06, 0x3C, 0x00, 0x24,
+ 0x0B, 0x24, 0x0C, 0x24, 0x0D, 0x03, 0x04, 0x08,
+ 0x07, 0x00, 0x03, 0x04, 0x08, 0x07, 0x00, 0x03,
+ 0x04, 0x08, 0x07, 0x00, 0x03, 0x04, 0x08, 0x07,
+ 0x00, 0x03, 0x04, 0x08, 0x07, 0x00, 0x03, 0x04,
+ 0x08, 0x07, 0x00, 0x22, 0x0B, 0x13, 0x0D, 0x50,
+ 0x00, 0x3A, 0x05, 0x0B, 0x0A, 0x03, 0x04, 0x08,
+ 0x08, 0x00, 0x0C, 0x0A, 0x0E, 0x00, 0x06, 0x3C,
+ 0x00, 0x0B, 0x0B, 0x03, 0x04, 0x08, 0x07, 0x00,
+ 0x0C, 0x0B, 0x02, 0x00, 0x1B, 0x20, 0x0B, 0x0C,
+ 0x03, 0x04, 0x08, 0x07, 0x00, 0x0C, 0x0C, 0x06,
+ 0x00, 0x1B, 0x21, 0x0B, 0x0D, 0x03, 0x04, 0x08,
+ 0x07, 0x00, 0x0C, 0x0D, 0x0C, 0x00, 0x1B, 0x22,
+ 0x0B, 0x0E, 0x03, 0x04, 0x08, 0x07, 0x00, 0x0C,
+ 0x0E, 0x0B, 0x00, 0x22, 0x0C, 0x13, 0x0E, 0x50,
+ 0x00, 0x3A, 0x05, 0x0B, 0x0F, 0x03, 0x04, 0x08,
+ 0x07, 0x00, 0x0C, 0x0F, 0x09, 0x00, 0x06, 0x3C,
+ 0x00, 0x03, 0x04, 0x08, 0x07, 0x00, 0x22, 0x0D,
+ 0x13, 0x0F, 0x50, 0x00, 0x3A, 0x05, 0x0B, 0x10,
+ 0x03, 0x04, 0x08, 0x07, 0x00, 0x0C, 0x10, 0x09,
+ 0x00, 0x06, 0x3C, 0x00, 0x24, 0x0E, 0x24, 0x0F,
+ 0x03, 0x04, 0x08, 0x07, 0x00, 0x22, 0x0E, 0x13,
+ 0x10, 0x50, 0x00, 0x3A, 0x05, 0x0B, 0x11, 0x03,
+ 0x04, 0x08, 0x07, 0x00, 0x0C, 0x11, 0x0F, 0x00,
+ 0x06, 0x3C, 0x00, 0x03, 0x04, 0x08, 0x07, 0x00,
+ 0x22, 0x0F, 0x13, 0x11, 0x50, 0x00, 0x3A, 0x05,
+ 0x0B, 0x12, 0x03, 0x04, 0x08, 0x05, 0x00, 0x0C,
+ 0x12, 0x14, 0x00, 0x07, 0x3C, 0x00, 0x0B, 0x13,
+ 0x03, 0x04, 0x08, 0x07, 0x00, 0x0C, 0x13, 0x06,
+ 0x00, 0x1B, 0x23, 0x22, 0x1C, 0x0B, 0x13, 0x03,
+ 0x04, 0x08, 0x07, 0x00, 0x0C, 0x13, 0x06, 0x00,
+ 0x02, 0x04, 0x45, 0x10, 0x00, 0x3A, 0x14, 0x07,
+ 0x78, 0x00, 0x16, 0x1C, 0x01, 0x01, 0x04, 0x20
+};
+
+static const ByteProvider k1KallakMalcolmSeqDOSCDProvider = { ARRAYSIZE(k1KallakMalcolmSeqDOSCD), k1KallakMalcolmSeqDOSCD };
+
+static const byte k1ForestSeqDOSCD[627] = {
+ 0x00, 0x05, 0x01, 0x00, 0x07, 0x01, 0x1D, 0x02,
+ 0x07, 0x00, 0x00, 0x00, 0x08, 0x02, 0x05, 0x00,
+ 0x98, 0x00, 0x38, 0x0B, 0x00, 0x03, 0x07, 0x19,
+ 0x02, 0x07, 0x09, 0x00, 0x0C, 0x00, 0x0F, 0x00,
+ 0x22, 0x37, 0x03, 0x07, 0x19, 0x02, 0x07, 0x09,
+ 0x00, 0x03, 0x07, 0x19, 0x02, 0x07, 0x09, 0x00,
+ 0x03, 0x07, 0x19, 0x02, 0x07, 0x09, 0x00, 0x03,
+ 0x07, 0x19, 0x02, 0x07, 0x09, 0x00, 0x03, 0x07,
+ 0x19, 0x02, 0x07, 0x09, 0x00, 0x03, 0x07, 0x19,
+ 0x02, 0x07, 0x09, 0x00, 0x1B, 0x16, 0x03, 0x07,
+ 0x02, 0x05, 0x01, 0x98, 0x00, 0x38, 0x19, 0x02,
+ 0x19, 0x03, 0x07, 0x09, 0x00, 0x03, 0x07, 0x02,
+ 0x05, 0x03, 0x98, 0x00, 0x38, 0x19, 0x02, 0x19,
+ 0x03, 0x07, 0x09, 0x00, 0x03, 0x07, 0x02, 0x05,
+ 0x01, 0x98, 0x00, 0x38, 0x19, 0x02, 0x19, 0x03,
+ 0x07, 0x09, 0x00, 0x03, 0x07, 0x02, 0x05, 0x00,
+ 0x98, 0x00, 0x38, 0x19, 0x02, 0x19, 0x03, 0x07,
+ 0x09, 0x00, 0x03, 0x07, 0x19, 0x02, 0x07, 0x09,
+ 0x00, 0x03, 0x07, 0x19, 0x02, 0x07, 0x09, 0x00,
+ 0x03, 0x07, 0x19, 0x02, 0x07, 0x09, 0x00, 0x03,
+ 0x07, 0x19, 0x02, 0x07, 0x09, 0x00, 0x03, 0x07,
+ 0x19, 0x02, 0x07, 0x09, 0x00, 0x03, 0x07, 0x19,
+ 0x02, 0x07, 0x09, 0x00, 0x03, 0x07, 0x19, 0x02,
+ 0x07, 0x09, 0x00, 0x03, 0x07, 0x19, 0x02, 0x07,
+ 0x09, 0x00, 0x03, 0x07, 0x19, 0x02, 0x07, 0x09,
+ 0x00, 0x03, 0x07, 0x19, 0x02, 0x07, 0x09, 0x00,
+ 0x03, 0x07, 0x19, 0x02, 0x07, 0x09, 0x00, 0x22,
+ 0x38, 0x0B, 0x09, 0x03, 0x07, 0x19, 0x02, 0x07,
+ 0x09, 0x00, 0x0C, 0x09, 0x21, 0x00, 0x1B, 0x16,
+ 0x03, 0x07, 0x02, 0x05, 0x01, 0x98, 0x00, 0x38,
+ 0x19, 0x02, 0x19, 0x03, 0x07, 0x09, 0x00, 0x03,
+ 0x07, 0x02, 0x05, 0x03, 0x98, 0x00, 0x38, 0x19,
+ 0x02, 0x19, 0x03, 0x07, 0x09, 0x00, 0x03, 0x07,
+ 0x02, 0x05, 0x01, 0x98, 0x00, 0x38, 0x19, 0x02,
+ 0x19, 0x03, 0x07, 0x09, 0x00, 0x03, 0x07, 0x02,
+ 0x05, 0x04, 0x98, 0x00, 0x38, 0x19, 0x02, 0x19,
+ 0x03, 0x07, 0x09, 0x00, 0x03, 0x07, 0x19, 0x02,
+ 0x07, 0x09, 0x00, 0x22, 0x39, 0x03, 0x07, 0x19,
+ 0x02, 0x07, 0x09, 0x00, 0x03, 0x07, 0x02, 0x05,
+ 0x05, 0x98, 0x00, 0x38, 0x19, 0x02, 0x19, 0x03,
+ 0x07, 0x09, 0x00, 0x03, 0x07, 0x19, 0x02, 0x07,
+ 0x09, 0x00, 0x03, 0x07, 0x19, 0x02, 0x07, 0x09,
+ 0x00, 0x03, 0x07, 0x02, 0x05, 0x06, 0x98, 0x00,
+ 0x38, 0x19, 0x02, 0x19, 0x03, 0x07, 0x09, 0x00,
+ 0x03, 0x07, 0x19, 0x02, 0x07, 0x09, 0x00, 0x03,
+ 0x07, 0x19, 0x02, 0x07, 0x09, 0x00, 0x1B, 0x25,
+ 0x0B, 0x00, 0x03, 0x07, 0x03, 0x05, 0x19, 0x02,
+ 0x19, 0x03, 0x07, 0x09, 0x00, 0x0C, 0x00, 0x09,
+ 0x00, 0x0B, 0x06, 0x03, 0x07, 0x19, 0x02, 0x07,
+ 0x09, 0x00, 0x0C, 0x06, 0x0E, 0x00, 0x22, 0x3A,
+ 0x03, 0x07, 0x19, 0x02, 0x07, 0x09, 0x00, 0x03,
+ 0x07, 0x19, 0x02, 0x07, 0x09, 0x00, 0x03, 0x07,
+ 0x19, 0x02, 0x07, 0x09, 0x00, 0x03, 0x07, 0x19,
+ 0x02, 0x07, 0x09, 0x00, 0x1B, 0x17, 0x0B, 0x01,
+ 0x03, 0x07, 0x03, 0x05, 0x19, 0x02, 0x19, 0x03,
+ 0x07, 0x09, 0x00, 0x0C, 0x01, 0x0D, 0x00, 0x1B,
+ 0x25, 0x0B, 0x07, 0x03, 0x07, 0x19, 0x02, 0x07,
+ 0x09, 0x00, 0x0C, 0x07, 0x08, 0x00, 0x03, 0x07,
+ 0x19, 0x02, 0x07, 0x09, 0x00, 0x03, 0x07, 0x19,
+ 0x02, 0x07, 0x09, 0x00, 0x03, 0x07, 0x19, 0x02,
+ 0x07, 0x09, 0x00, 0x03, 0x07, 0x19, 0x02, 0x07,
+ 0x09, 0x00, 0x1B, 0x18, 0x03, 0x07, 0x03, 0x05,
+ 0x19, 0x02, 0x19, 0x03, 0x07, 0x09, 0x00, 0x22,
+ 0x3B, 0x03, 0x07, 0x03, 0x05, 0x19, 0x02, 0x19,
+ 0x03, 0x07, 0x09, 0x00, 0x03, 0x07, 0x03, 0x05,
+ 0x19, 0x02, 0x19, 0x03, 0x07, 0x09, 0x00, 0x03,
+ 0x07, 0x03, 0x05, 0x19, 0x02, 0x19, 0x03, 0x07,
+ 0x09, 0x00, 0x03, 0x07, 0x03, 0x05, 0x19, 0x02,
+ 0x19, 0x03, 0x07, 0x09, 0x00, 0x07, 0x12, 0x00,
+ 0x1B, 0x25, 0x0B, 0x02, 0x03, 0x07, 0x03, 0x05,
+ 0x19, 0x02, 0x19, 0x03, 0x07, 0x09, 0x00, 0x0C,
+ 0x02, 0x07, 0x00, 0x03, 0x07, 0x19, 0x02, 0x07,
+ 0x09, 0x00, 0x03, 0x07, 0x19, 0x02, 0x07, 0x09,
+ 0x00, 0x03, 0x07, 0x19, 0x02, 0x07, 0x09, 0x00,
+ 0x03, 0x07, 0x19, 0x02, 0x07, 0x09, 0x00, 0x03,
+ 0x07, 0x19, 0x02, 0x07, 0x09, 0x00, 0x22, 0x3C,
+ 0x0B, 0x03, 0x03, 0x07, 0x19, 0x02, 0x07, 0x09,
+ 0x00, 0x0C, 0x03, 0x23, 0x00, 0x16, 0x01, 0x07,
+ 0x01, 0x05, 0x20
+};
+
+static const ByteProvider k1ForestSeqDOSCDProvider = { ARRAYSIZE(k1ForestSeqDOSCD), k1ForestSeqDOSCD };
+
+static const char *const k1IntroCPSStringsDOSCD[2] = {
+ "gemcuti.cps",
+ "tree.cps"
+};
+
+static const StringListProvider k1IntroCPSStringsDOSCDProvider = { ARRAYSIZE(k1IntroCPSStringsDOSCD), k1IntroCPSStringsDOSCD };
+
+static const char *const k1IntroCOLStringsDOSCD[4] = {
+ "kallak.col",
+ "tree_exp.col",
+ "ww.col",
+ "mal-kal.col"
+};
+
+static const StringListProvider k1IntroCOLStringsDOSCDProvider = { ARRAYSIZE(k1IntroCOLStringsDOSCD), k1IntroCOLStringsDOSCD };
+
+static const char *const k1IntroWSAStringsDOSCD[11] = {
+ "kallak.wsa",
+ "tree1.wsa",
+ "tree2.wsa",
+ "westwood.wsa",
+ "mal-kal.wsa",
+ "destruct.wsa",
+ "kyrandia.wsa",
+ "shore.wsa",
+ "reunion.wsa",
+ "reuniont.wsa",
+ "latern.wsa"
+};
+
+static const StringListProvider k1IntroWSAStringsDOSCDProvider = { ARRAYSIZE(k1IntroWSAStringsDOSCD), k1IntroWSAStringsDOSCD };
+
+static const Room k1RoomListDOSCD[246] = {
+ { 30, 0xFFFF, 0xFFFF, 0x0001, 0xFFFF },
+ { 71, 0xFFFF, 0xFFFF, 0x0005, 0xFFFF },
+ { 44, 0xFFFF, 0x0003, 0xFFFF, 0xFFFF },
+ { 72, 0xFFFF, 0xFFFF, 0x000E, 0xFFFF },
+ { 48, 0xFFFF, 0x0005, 0xFFFF, 0x000E },
+ { 74, 0xFFFF, 0x000A, 0xFFFF, 0x0004 },
+ { 46, 0xFFFF, 0x000F, 0xFFFF, 0x000B },
+ { 75, 0xFFFF, 0x0009, 0xFFFF, 0x0018 },
+ { 13, 0xFFFF, 0x000C, 0xFFFF, 0x000A },
+ { 5, 0x000D, 0xFFFF, 0xFFFF, 0x0007 },
+ { 84, 0xFFFF, 0x0008, 0xFFFF, 0x0005 },
+ { 37, 0xFFFF, 0x0006, 0x000C, 0x0010 },
+ { 51, 0x000B, 0xFFFF, 0x000D, 0x0008 },
+ { 23, 0x000C, 0xFFFF, 0x0009, 0xFFFF },
+ { 25, 0x0003, 0x0004, 0xFFFF, 0xFFFF },
+ { 11, 0xFFFF, 0xFFFF, 0xFFFF, 0x0006 },
+ { 86, 0xFFFF, 0x000B, 0xFFFF, 0xFFFF },
+ { 84, 0xFFFF, 0x0022, 0x0017, 0x0016 },
+ { 51, 0x0020, 0x0014, 0x0024, 0x0015 },
+ { 85, 0x0014, 0x0019, 0xFFFF, 0x0024 },
+ { 33, 0x001C, 0xFFFF, 0x0013, 0x0012 },
+ { 31, 0x0022, 0x0012, 0xFFFF, 0x0017 },
+ { 25, 0x001F, 0x0011, 0xFFFF, 0xFFFF },
+ { 25, 0x0011, 0x0015, 0xFFFF, 0xFFFF },
+ { 2, 0xFFFF, 0x0007, 0xFFFF, 0x001A },
+ { 82, 0xFFFF, 0x006D, 0xFFFF, 0x0013 },
+ { 77, 0xFFFF, 0x0018, 0x0021, 0xFFFF },
+ { 15, 0xFFFF, 0x001A, 0xFFFF, 0xFFFF },
+ { 16, 0xFFFF, 0xFFFF, 0x0014, 0x0020 },
+ { 19, 0xFFFF, 0x0021, 0xFFFF, 0x001F },
+ { 12, 0xFFFF, 0xFFFF, 0x0020, 0x0021 },
+ { 7, 0x0023, 0x001D, 0x0016, 0xFFFF },
+ { 20, 0x001E, 0x001C, 0x0012, 0x0022 },
+ { 17, 0x001A, 0x001E, 0x0022, 0x001D },
+ { 22, 0x0021, 0x0020, 0x0015, 0x0011 },
+ { 24, 0xFFFF, 0xFFFF, 0x001F, 0xFFFF },
+ { 32, 0x0012, 0x0013, 0xFFFF, 0xFFFF },
+ { 87, 0xFFFF, 0x0026, 0xFFFF, 0xFFFF },
+ { 8, 0xFFFF, 0x0027, 0xFFFF, 0x0025 },
+ { 88, 0xFFFF, 0x0035, 0x0037, 0x0026 },
+ { 35, 0xFFFF, 0x0036, 0x0038, 0xFFFF },
+ { 47, 0xFFFF, 0xFFFF, 0x003B, 0xFFFF },
+ { 28, 0x0035, 0x002B, 0x002F, 0x0037 },
+ { 36, 0xFFFF, 0x002C, 0xFFFF, 0x002A },
+ { 78, 0xFFFF, 0xFFFF, 0xFFFF, 0x002B },
+ { 10, 0xFFFF, 0xFFFF, 0xFFFF, 0x002C },
+ { 51, 0x0037, 0x002F, 0x0040, 0x003C },
+ { 38, 0x002A, 0x003D, 0x0041, 0x002E },
+ { 81, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 41, 0xFFFF, 0xFFFF, 0x0069, 0xFFFF },
+ { 50, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 18, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 49, 0xFFFF, 0xFFFF, 0x0054, 0xFFFF },
+ { 105, 0xFFFF, 0xFFFF, 0x002A, 0x0027 },
+ { 105, 0xFFFF, 0xFFFF, 0x0039, 0x0028 },
+ { 37, 0x0027, 0x002A, 0x002E, 0x0049 },
+ { 34, 0x0028, 0x0039, 0xFFFF, 0xFFFF },
+ { 51, 0x0036, 0x003A, 0xFFFF, 0x0038 },
+ { 84, 0xFFFF, 0x003B, 0xFFFF, 0x0039 },
+ { 1, 0x0029, 0xFFFF, 0x003E, 0x003A },
+ { 37, 0x0049, 0x002E, 0x003F, 0xFFFF },
+ { 33, 0xFFFF, 0xFFFF, 0xFFFF, 0x002F },
+ { 34, 0x003B, 0x003F, 0xFFFF, 0xFFFF },
+ { 85, 0x003C, 0x0040, 0xFFFF, 0x003E },
+ { 106, 0x002E, 0x0041, 0xFFFF, 0x003F },
+ { 33, 0x002F, 0xFFFF, 0xFFFF, 0x0040 },
+ { 60, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 11, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 33, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 26, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 0, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 25, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 23, 0xFFFF, 0x0037, 0x003C, 0xFFFF },
+ { 6, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 51, 0x0063, 0x0067, 0x006B, 0x0066 },
+ { 66, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 67, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 62, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 65, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 18, 0x0056, 0x005A, 0x005E, 0xFFFF },
+ { 6, 0xFFFF, 0x0052, 0x0056, 0xFFFF },
+ { 4, 0xFFFF, 0x0053, 0x0057, 0x0051 },
+ { 3, 0xFFFF, 0x0054, 0xFFFF, 0x0052 },
+ { 37, 0x0034, 0x0055, 0x0058, 0x0053 },
+ { 11, 0xFFFF, 0xFFFF, 0x0059, 0x0054 },
+ { 37, 0x0051, 0x0057, 0x0050, 0xFFFF },
+ { 51, 0x0052, 0xFFFF, 0x005A, 0x0056 },
+ { 51, 0x0054, 0x0059, 0x005C, 0xFFFF },
+ { 1, 0x0055, 0xFFFF, 0x005D, 0x0058 },
+ { 106, 0x0057, 0x005B, 0xFFFF, 0x0050 },
+ { 85, 0xFFFF, 0x005C, 0xFFFF, 0x005A },
+ { 37, 0x0058, 0x005D, 0x005F, 0x005B },
+ { 33, 0x0059, 0xFFFF, 0xFFFF, 0x005C },
+ { 51, 0x0050, 0xFFFF, 0x0061, 0xFFFF },
+ { 51, 0x005C, 0xFFFF, 0x0064, 0xFFFF },
+ { 37, 0xFFFF, 0x0061, 0x0065, 0xFFFF },
+ { 51, 0x005E, 0x0062, 0xFFFF, 0x0060 },
+ { 84, 0xFFFF, 0x0063, 0x0066, 0x0061 },
+ { 84, 0xFFFF, 0x0064, 0x004B, 0x0062 },
+ { 33, 0x005F, 0xFFFF, 0x0067, 0x0063 },
+ { 51, 0x0060, 0xFFFF, 0x0068, 0xFFFF },
+ { 37, 0x0062, 0x004B, 0x006A, 0xFFFF },
+ { 1, 0x0064, 0xFFFF, 0x006C, 0x004B },
+ { 34, 0x0065, 0x0069, 0xFFFF, 0xFFFF },
+ { 51, 0x0031, 0x006A, 0xFFFF, 0x0068 },
+ { 85, 0x0066, 0x006B, 0xFFFF, 0x0069 },
+ { 106, 0x004B, 0x006C, 0xFFFF, 0x006A },
+ { 33, 0x0067, 0xFFFF, 0xFFFF, 0x006B },
+ { 55, 0x00C4, 0x00C5, 0xFFFF, 0x0019 },
+ { 52, 0xFFFF, 0x00C1, 0xFFFF, 0x0096 },
+ { 64, 0xFFFF, 0x00BF, 0xFFFF, 0x008C },
+ { 57, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 54, 0x00AF, 0xFFFF, 0x00B7, 0x00AC },
+ { 53, 0x0078, 0xFFFF, 0x0079, 0xFFFF },
+ { 29, 0xFFFF, 0x00BB, 0xFFFF, 0x00C5 },
+ { 69, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 76, 0x00C6, 0xFFFF, 0xFFFF, 0x00B1 },
+ { 59, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 58, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 59, 0xFFFF, 0x0025, 0x0072, 0xFFFF },
+ { 58, 0x0072, 0x007B, 0x00BB, 0xFFFF },
+ { 58, 0xFFFF, 0x007F, 0x007B, 0xFFFF },
+ { 59, 0x007A, 0xFFFF, 0x007C, 0x0079 },
+ { 58, 0x007B, 0x0081, 0x00BC, 0xFFFF },
+ { 58, 0x00BC, 0x0083, 0xFFFF, 0xFFFF },
+ { 58, 0xFFFF, 0x0085, 0x007F, 0xFFFF },
+ { 59, 0x007E, 0x0086, 0x0080, 0x007A },
+ { 58, 0x007F, 0x00BD, 0x0081, 0xFFFF },
+ { 59, 0x0080, 0x0087, 0x0082, 0x007C },
+ { 58, 0x0081, 0xFFFF, 0x0083, 0x00BC },
+ { 59, 0x0082, 0x0089, 0x0084, 0x007D },
+ { 58, 0x0083, 0x008A, 0xFFFF, 0xFFFF },
+ { 59, 0xFFFF, 0x008B, 0x0086, 0x007E },
+ { 58, 0x0085, 0x008C, 0x00BD, 0x007F },
+ { 58, 0x00BD, 0x008E, 0x0088, 0x0081 },
+ { 59, 0x0087, 0xFFFF, 0x0089, 0xFFFF },
+ { 58, 0x0088, 0x0090, 0x008A, 0x0083 },
+ { 59, 0x0089, 0x0091, 0xFFFF, 0x0084 },
+ { 58, 0xFFFF, 0x0092, 0x008C, 0x0085 },
+ { 59, 0x008B, 0x006F, 0x008D, 0x0086 },
+ { 58, 0x008C, 0x0093, 0x008E, 0x00BD },
+ { 59, 0x008D, 0xFFFF, 0xFFFF, 0x0087 },
+ { 58, 0xFFFF, 0x00BE, 0x0090, 0xFFFF },
+ { 59, 0x008F, 0x0095, 0x0091, 0x0089 },
+ { 58, 0x0090, 0x0096, 0xFFFF, 0x008A },
+ { 59, 0xFFFF, 0x0098, 0xFFFF, 0x008B },
+ { 59, 0xFFFF, 0xFFFF, 0xFFFF, 0x008D },
+ { 58, 0xFFFF, 0x009A, 0x00BE, 0xFFFF },
+ { 58, 0x00BE, 0xFFFF, 0x0096, 0x0090 },
+ { 59, 0x0095, 0x006E, 0x0097, 0x0091 },
+ { 58, 0x0096, 0x009D, 0xFFFF, 0xFFFF },
+ { 58, 0xFFFF, 0x009E, 0x00BF, 0x0092 },
+ { 58, 0x00BF, 0x00A0, 0x009A, 0xFFFF },
+ { 59, 0x0099, 0xFFFF, 0x009B, 0x0094 },
+ { 58, 0x009A, 0xFFFF, 0x009C, 0xFFFF },
+ { 59, 0x009B, 0x00A2, 0xFFFF, 0xFFFF },
+ { 59, 0xFFFF, 0x00A3, 0xFFFF, 0x0097 },
+ { 59, 0xFFFF, 0xFFFF, 0x009F, 0x0098 },
+ { 58, 0x009E, 0x00A4, 0x00A0, 0x00BF },
+ { 59, 0x009F, 0x00A5, 0xFFFF, 0x0099 },
+ { 58, 0xFFFF, 0x00A6, 0x00C0, 0xFFFF },
+ { 58, 0x00C0, 0x00A8, 0xFFFF, 0x009C },
+ { 58, 0x00C1, 0xFFFF, 0xFFFF, 0x009D },
+ { 59, 0xFFFF, 0x00AA, 0x00A5, 0x009F },
+ { 58, 0x00A4, 0x00AB, 0x00A6, 0x00A0 },
+ { 59, 0x00A5, 0x00AC, 0x00A7, 0x00A1 },
+ { 58, 0x00A6, 0xFFFF, 0xFFFF, 0x00C0 },
+ { 59, 0xFFFF, 0x00AD, 0x00A9, 0x00A2 },
+ { 58, 0x00A8, 0x00AE, 0xFFFF, 0x00C1 },
+ { 58, 0xFFFF, 0xFFFF, 0x00AB, 0x00A4 },
+ { 59, 0x00AA, 0x00AF, 0x00AC, 0x00A5 },
+ { 58, 0x00AB, 0x0071, 0x00C2, 0x00A6 },
+ { 58, 0xFFFF, 0x00B0, 0x00AE, 0x00A8 },
+ { 59, 0x00AD, 0xFFFF, 0xFFFF, 0x00A9 },
+ { 58, 0xFFFF, 0x00C3, 0x0071, 0x00AB },
+ { 59, 0xFFFF, 0xFFFF, 0x00B1, 0x00AD },
+ { 58, 0x00B0, 0x0075, 0xFFFF, 0xFFFF },
+ { 59, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 59, 0x00C3, 0xFFFF, 0x00B4, 0xFFFF },
+ { 59, 0x00B3, 0x00BA, 0xFFFF, 0xFFFF },
+ { 58, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 59, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 58, 0x0071, 0xFFFF, 0xFFFF, 0x00C2 },
+ { 58, 0xFFFF, 0xFFFF, 0x00B9, 0xFFFF },
+ { 59, 0x00B8, 0xFFFF, 0xFFFF, 0x00C3 },
+ { 58, 0xFFFF, 0xFFFF, 0xFFFF, 0x00B4 },
+ { 59, 0x0079, 0xFFFF, 0xFFFF, 0x0073 },
+ { 59, 0x007C, 0x0082, 0x007D, 0xFFFF },
+ { 59, 0x0086, 0x008D, 0x0087, 0x0080 },
+ { 59, 0x0094, 0xFFFF, 0x0095, 0x008F },
+ { 59, 0x0098, 0x009F, 0x0099, 0x006F },
+ { 59, 0x00A1, 0x00A7, 0x00A2, 0xFFFF },
+ { 59, 0xFFFF, 0x00A9, 0x00A3, 0x006E },
+ { 59, 0x00AC, 0x00B7, 0xFFFF, 0xFFFF },
+ { 58, 0xFFFF, 0x00B9, 0x00B3, 0x00AF },
+ { 59, 0xFFFF, 0xFFFF, 0x006D, 0xFFFF },
+ { 58, 0xFFFF, 0x0073, 0xFFFF, 0x006D },
+ { 59, 0xFFFF, 0xFFFF, 0x0075, 0xFFFF },
+ { 94, 0xFFFF, 0x00C8, 0xFFFF, 0xFFFF },
+ { 43, 0x00C9, 0x00CB, 0x00CA, 0x00C7 },
+ { 51, 0xFFFF, 0xFFFF, 0x00C8, 0xFFFF },
+ { 37, 0x00C8, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 79, 0xFFFF, 0xFFFF, 0xFFFF, 0x00C8 },
+ { 80, 0xFFFF, 0xFFFF, 0x00CB, 0x00CD },
+ { 97, 0x00E3, 0x00D4, 0x00CC, 0x00D3 },
+ { 103, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 100, 0xFFFF, 0x00CE, 0x00D5, 0xFFFF },
+ { 98, 0xFFFF, 0xFFFF, 0xFFFF, 0x00D7 },
+ { 101, 0xFFFF, 0x00D2, 0x00CE, 0xFFFF },
+ { 99, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 93, 0x00D5, 0x00CD, 0xFFFF, 0xFFFF },
+ { 93, 0x00D6, 0xFFFF, 0xFFFF, 0x00CD },
+ { 93, 0x00CF, 0x00CE, 0x00D3, 0xFFFF },
+ { 93, 0x00D7, 0xFFFF, 0x00D4, 0x00CE },
+ { 93, 0xFFFF, 0x00D0, 0x00D6, 0x00CE },
+ { 93, 0x00DA, 0x00E3, 0xFFFF, 0xFFFF },
+ { 93, 0x00DB, 0xFFFF, 0xFFFF, 0x00E3 },
+ { 93, 0xFFFF, 0x00E4, 0x00D8, 0x00E2 },
+ { 93, 0xFFFF, 0x00E1, 0x00D9, 0x00E4 },
+ { 93, 0xFFFF, 0x00E4, 0xFFFF, 0x00DF },
+ { 93, 0xFFFF, 0x00E0, 0xFFFF, 0x00E4 },
+ { 93, 0xFFFF, 0xFFFF, 0x00E4, 0xFFFF },
+ { 91, 0xFFFF, 0x00DC, 0xFFFF, 0xFFFF },
+ { 90, 0xFFFF, 0xFFFF, 0xFFFF, 0x00DD },
+ { 92, 0xFFFF, 0xFFFF, 0xFFFF, 0x00DB },
+ { 95, 0xFFFF, 0x00DA, 0xFFFF, 0xFFFF },
+ { 96, 0xFFFF, 0x00D9, 0x00CD, 0x00D8 },
+ { 89, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 102, 0xFFFF, 0x00E6, 0xFFFF, 0xFFFF },
+ { 102, 0xFFFF, 0x00EA, 0x00E8, 0x00E5 },
+ { 102, 0xFFFF, 0x00E8, 0x00EB, 0xFFFF },
+ { 102, 0x00E6, 0xFFFF, 0xFFFF, 0x00E7 },
+ { 102, 0xFFFF, 0xFFFF, 0x00ED, 0xFFFF },
+ { 102, 0xFFFF, 0xFFFF, 0xFFFF, 0x00E6 },
+ { 102, 0x00E7, 0x00EC, 0x00EF, 0xFFFF },
+ { 102, 0xFFFF, 0x00ED, 0x00F0, 0x00EB },
+ { 102, 0x00E9, 0x00EE, 0x00F1, 0x00EC },
+ { 102, 0xFFFF, 0xFFFF, 0x00F2, 0x00ED },
+ { 102, 0x00EB, 0x00F0, 0xFFFF, 0xFFFF },
+ { 102, 0x00EC, 0x00F1, 0x00F3, 0x00EF },
+ { 102, 0x00ED, 0xFFFF, 0x00F4, 0x00F0 },
+ { 102, 0x00EE, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 102, 0x00F0, 0x00F4, 0xFFFF, 0xFFFF },
+ { 102, 0x00F1, 0x00F5, 0xFFFF, 0x00F3 },
+ { 102, 0xFFFF, 0xFFFF, 0x00CF, 0x00F4 }
+};
+
+static const RoomProvider k1RoomListDOSCDProvider = { ARRAYSIZE(k1RoomListDOSCD), k1RoomListDOSCD };
+
+static const char *const k1RoomFilenamesDOSCD[107] = {
+ "CLIFFB",
+ "XEDGEB",
+ "CAVEB",
+ "NCLIFF",
+ "NCLIFFB",
+ "CAVE",
+ "NWCLIFF",
+ "OAKS",
+ "PLATEAU",
+ "POTHUT",
+ "POTION",
+ "NWCLIFB",
+ "SONG",
+ "SORROW",
+ "SPELHUT",
+ "SPELL",
+ "SPRING",
+ "SQUARE",
+ "STUMP",
+ "TEMPLE",
+ "WELL",
+ "WILLOW",
+ "WISE",
+ "XEDGE",
+ "RUBY",
+ "ZROCK",
+ "ZROCKB",
+ "FORESTD",
+ "FOUNTN",
+ "GATECV",
+ "GEMCUT",
+ "CLIFF",
+ "DEAD",
+ "EDGE",
+ "EDGEB",
+ "FALLS",
+ "FORESTC",
+ "FORESTB",
+ "GLADE",
+ "GEMHUT",
+ "ALGAE",
+ "MIX",
+ "BRIDGE",
+ "GRAVE",
+ "HEALER",
+ "HEALHUT",
+ "ALTAR",
+ "BURN",
+ "SICKWIL",
+ "LAGOON",
+ "MAPLE",
+ "FORESTA",
+ "ARCH",
+ "CHASM",
+ "EMCAV",
+ "ENTER",
+ "FLOWERS",
+ "GEMSLOT",
+ "GEN_CAV",
+ "GENCAVB",
+ "GOLDEN",
+ "GOLDENB",
+ "ICE",
+ "MARKET",
+ "MOONCAV",
+ "MSHCAV",
+ "POOL",
+ "SEASONS",
+ "SHRINE",
+ "TREECAV",
+ "EXTGEM",
+ "GEM",
+ "EXTHEAL",
+ "BASE",
+ "TRUNK",
+ "BROKEN",
+ "LAVA",
+ "EXTSPEL",
+ "EXTPOT",
+ "CASTLE",
+ "CGATE",
+ "LEPHOLE",
+ "DRAGON",
+ "XEDGEC",
+ "FNORTH",
+ "FSOUTH",
+ "FGOWEST",
+ "PLTCAVE",
+ "BONKBG",
+ "BALCONY",
+ "DARMS",
+ "BRINS",
+ "ALCHEMY",
+ "GENHALL",
+ "LANDING",
+ "BELROOM",
+ "UPSTAIR",
+ "DNSTAIR",
+ "KITCHEN",
+ "KYRAGEM",
+ "LIBRARY",
+ "FOYER",
+ "CATACOM",
+ "GRTHALL",
+ "FESTSTH",
+ "FWSTSTH",
+ "FSOUTHB"
+};
+
+static const StringListProvider k1RoomFilenamesDOSCDProvider = { ARRAYSIZE(k1RoomFilenamesDOSCD), k1RoomFilenamesDOSCD };
+
+static const char *const k1CharacterImageFilenamesDOSCD[20] = {
+ "BRANDON.CPS",
+ "DAPHNE.CPS",
+ "MERITH.CPS",
+ "HERMAN.CPS",
+ "SMALL.CPS",
+ "MALCOM.CPS",
+ "DRINK.CPS",
+ "SHRINK.CPS",
+ "HEALBR1.CPS",
+ "HEALBR2.CPS",
+ "SNOW1A.CPS",
+ "SNOW2A.CPS",
+ "BRANWILL.CPS",
+ "FLUTE1.CPS",
+ "FLUTE2.CPS",
+ "POISON1.CPS",
+ "POISON2.CPS",
+ "TELEKIN.CPS",
+ "BRANSTON.CPS",
+ "POISON.CPS"
+};
+
+static const StringListProvider k1CharacterImageFilenamesDOSCDProvider = { ARRAYSIZE(k1CharacterImageFilenamesDOSCD), k1CharacterImageFilenamesDOSCD };
+
+static const Shape k1DefaultShapesDOSCD[166] = {
+ { 0, 0, 0, 3, 48, -12, -48 },
+ { 0, 3, 0, 3, 48, -12, -48 },
+ { 0, 6, 0, 3, 48, -12, -48 },
+ { 0, 9, 0, 3, 48, -12, -48 },
+ { 0, 12, 0, 3, 48, -12, -48 },
+ { 0, 15, 0, 3, 48, -12, -48 },
+ { 0, 18, 0, 3, 48, -12, -48 },
+ { 0, 21, 0, 3, 48, -12, -48 },
+ { 0, 24, 0, 3, 48, -12, -48 },
+ { 0, 27, 0, 3, 48, -12, -48 },
+ { 0, 0, 51, 2, 11, -2, -8 },
+ { 0, 2, 51, 2, 11, -2, -8 },
+ { 0, 4, 51, 2, 11, -2, -8 },
+ { 0, 6, 51, 2, 11, -2, -8 },
+ { 0, 8, 51, 2, 11, -2, -8 },
+ { 0, 10, 51, 2, 11, -2, -8 },
+ { 0, 12, 51, 2, 11, -2, -8 },
+ { 0, 14, 51, 2, 11, -2, -8 },
+ { 0, 16, 51, 2, 11, -2, -8 },
+ { 0, 18, 51, 2, 11, -2, -8 },
+ { 0, 20, 51, 2, 11, -2, -8 },
+ { 0, 22, 51, 2, 11, -2, -8 },
+ { 0, 0, 80, 3, 48, -12, -48 },
+ { 0, 3, 80, 3, 48, -12, -48 },
+ { 0, 6, 80, 3, 48, -12, -48 },
+ { 0, 9, 80, 3, 48, -12, -48 },
+ { 0, 12, 80, 3, 48, -12, -48 },
+ { 0, 15, 80, 3, 48, -12, -48 },
+ { 0, 0, 129, 3, 48, -12, -48 },
+ { 0, 3, 129, 3, 48, -12, -48 },
+ { 0, 6, 129, 3, 48, -12, -48 },
+ { 0, 9, 129, 3, 48, -12, -48 },
+ { 0, 12, 129, 3, 48, -12, -48 },
+ { 0, 15, 129, 3, 48, -12, -48 },
+ { 2, 0, 0, 3, 48, -12, -48 },
+ { 2, 3, 0, 3, 48, -12, -48 },
+ { 2, 6, 0, 3, 48, -12, -48 },
+ { 2, 9, 0, 3, 48, -12, -48 },
+ { 2, 12, 0, 3, 48, -12, -48 },
+ { 2, 15, 0, 3, 48, -12, -48 },
+ { 2, 18, 0, 3, 48, -12, -48 },
+ { 2, 21, 0, 3, 48, -12, -48 },
+ { 2, 24, 0, 3, 48, -12, -48 },
+ { 2, 27, 0, 3, 48, -12, -48 },
+ { 2, 30, 10, 3, 38, -16, -38 },
+ { 2, 27, 48, 4, 40, -8, -40 },
+ { 2, 0, 51, 2, 11, -4, 0 },
+ { 2, 2, 51, 2, 11, -4, 0 },
+ { 2, 4, 51, 2, 11, -4, 0 },
+ { 2, 6, 51, 2, 11, -4, 0 },
+ { 2, 8, 51, 2, 11, -4, 0 },
+ { 2, 10, 51, 2, 11, -4, 0 },
+ { 2, 12, 51, 2, 11, -4, 0 },
+ { 2, 14, 51, 2, 11, -4, 0 },
+ { 2, 16, 51, 2, 11, -4, 0 },
+ { 2, 18, 51, 2, 11, -4, 0 },
+ { 2, 20, 51, 2, 11, -4, 0 },
+ { 2, 22, 51, 2, 11, -4, 0 },
+ { 255, 0, 80, 3, 48, -12, -48 },
+ { 255, 3, 80, 3, 48, -12, -48 },
+ { 255, 6, 80, 3, 48, -12, -48 },
+ { 255, 9, 80, 3, 48, -12, -48 },
+ { 255, 12, 80, 3, 48, -12, -48 },
+ { 255, 15, 80, 3, 48, -12, -48 },
+ { 255, 0, 129, 3, 48, -12, -48 },
+ { 255, 3, 129, 3, 48, -12, -48 },
+ { 255, 6, 129, 3, 48, -12, -48 },
+ { 255, 9, 129, 3, 48, -12, -48 },
+ { 255, 12, 129, 3, 48, -12, -48 },
+ { 255, 15, 129, 3, 48, -12, -48 },
+ { 3, 0, 0, 3, 48, -12, -46 },
+ { 3, 3, 0, 3, 48, -12, -48 },
+ { 3, 6, 0, 3, 48, -12, -48 },
+ { 3, 9, 0, 3, 48, -12, -48 },
+ { 3, 12, 0, 3, 48, -12, -48 },
+ { 3, 15, 0, 3, 48, -12, -48 },
+ { 3, 18, 0, 3, 48, -12, -48 },
+ { 3, 21, 0, 3, 48, -12, -48 },
+ { 3, 24, 0, 3, 48, -12, -48 },
+ { 3, 27, 0, 3, 48, -12, -46 },
+ { 3, 30, 0, 3, 48, -14, -47 },
+ { 3, 39, 199, 1, 1, -12, -48 },
+ { 3, 0, 51, 2, 11, 0, -7 },
+ { 3, 2, 51, 2, 11, 0, -7 },
+ { 3, 4, 51, 2, 11, 0, -7 },
+ { 3, 6, 51, 2, 11, 0, -7 },
+ { 3, 8, 51, 2, 11, 0, -7 },
+ { 3, 10, 51, 2, 11, 0, -7 },
+ { 3, 12, 51, 2, 11, 0, -7 },
+ { 3, 14, 51, 2, 11, 0, -7 },
+ { 3, 16, 51, 2, 11, 0, -7 },
+ { 3, 18, 51, 2, 11, 0, -7 },
+ { 3, 20, 51, 2, 11, 0, -7 },
+ { 3, 22, 51, 2, 11, 0, -7 },
+ { 3, 0, 80, 3, 48, -12, -48 },
+ { 3, 3, 80, 3, 48, -12, -48 },
+ { 3, 6, 80, 3, 48, -12, -48 },
+ { 3, 9, 80, 3, 48, -12, -48 },
+ { 3, 12, 80, 3, 48, -12, -48 },
+ { 3, 15, 80, 3, 48, -12, -48 },
+ { 3, 0, 129, 3, 48, -12, -48 },
+ { 3, 3, 129, 3, 48, -12, -48 },
+ { 3, 6, 129, 3, 48, -12, -48 },
+ { 3, 9, 129, 3, 48, -12, -48 },
+ { 3, 12, 129, 3, 48, -12, -48 },
+ { 3, 15, 129, 3, 48, -12, -48 },
+ { 12, 0, 96, 5, 29, -20, -42 },
+ { 12, 5, 96, 5, 29, -20, -42 },
+ { 12, 10, 96, 5, 29, -20, -42 },
+ { 12, 15, 96, 5, 29, -20, -42 },
+ { 12, 20, 96, 5, 29, -20, -42 },
+ { 12, 25, 96, 5, 29, -20, -42 },
+ { 12, 30, 96, 5, 29, -20, -42 },
+ { 12, 35, 96, 5, 29, -20, -42 },
+ { 12, 0, 125, 5, 29, -20, -42 },
+ { 12, 5, 125, 5, 29, -20, -42 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 }
+};
+
+static const ShapeProvider k1DefaultShapesDOSCDProvider = { ARRAYSIZE(k1DefaultShapesDOSCD), k1DefaultShapesDOSCD };
+
+static const byte k1AmuleteAnimSeqDOSCD[42] = {
+ 0x00, 0x01, 0x02, 0x01, 0x03, 0x04, 0x03, 0x01,
+ 0x02, 0x03, 0x04, 0x05, 0x06, 0x05, 0x04, 0x05,
+ 0x07, 0x08, 0x07, 0x08, 0x09, 0x08, 0x09, 0x07,
+ 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
+ 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15,
+ 0x16, 0xFF
+};
+
+static const ByteProvider k1AmuleteAnimSeqDOSCDProvider = { ARRAYSIZE(k1AmuleteAnimSeqDOSCD), k1AmuleteAnimSeqDOSCD };
+
+static const byte k1SpecialPalette1DOSCD[21] = {
+ 0x36, 0x25, 0x1C, 0x31, 0x21, 0x19, 0x2C, 0x1D,
+ 0x16, 0x27, 0x19, 0x13, 0x22, 0x16, 0x11, 0x1D,
+ 0x12, 0x0D, 0x18, 0x0F, 0x0B
+};
+
+static const ByteProvider k1SpecialPalette1DOSCDProvider = { ARRAYSIZE(k1SpecialPalette1DOSCD), k1SpecialPalette1DOSCD };
+
+static const byte k1SpecialPalette2DOSCD[51] = {
+ 0x03, 0x03, 0x00, 0x37, 0x29, 0x1D, 0x33, 0x25,
+ 0x1A, 0x2D, 0x21, 0x17, 0x2A, 0x1D, 0x13, 0x26,
+ 0x19, 0x11, 0x22, 0x16, 0x0E, 0x1E, 0x12, 0x0C,
+ 0x1A, 0x0F, 0x0A, 0x16, 0x0C, 0x08, 0x12, 0x0A,
+ 0x05, 0x0E, 0x08, 0x05, 0x2D, 0x1E, 0x13, 0x27,
+ 0x19, 0x0F, 0x22, 0x14, 0x0C, 0x1C, 0x11, 0x0A,
+ 0x17, 0x0C, 0x08
+};
+
+static const ByteProvider k1SpecialPalette2DOSCDProvider = { ARRAYSIZE(k1SpecialPalette2DOSCD), k1SpecialPalette2DOSCD };
+
+static const byte k1SpecialPalette3DOSCD[51] = {
+ 0x03, 0x03, 0x00, 0x25, 0x30, 0x1B, 0x24, 0x2C,
+ 0x18, 0x23, 0x29, 0x15, 0x22, 0x25, 0x12, 0x21,
+ 0x22, 0x11, 0x1F, 0x1D, 0x0D, 0x1B, 0x18, 0x0B,
+ 0x18, 0x13, 0x0A, 0x14, 0x0E, 0x08, 0x11, 0x0A,
+ 0x05, 0x0E, 0x08, 0x05, 0x21, 0x22, 0x11, 0x1D,
+ 0x1C, 0x0C, 0x19, 0x15, 0x0A, 0x15, 0x0F, 0x08,
+ 0x11, 0x0A, 0x05
+};
+
+static const ByteProvider k1SpecialPalette3DOSCDProvider = { ARRAYSIZE(k1SpecialPalette3DOSCD), k1SpecialPalette3DOSCD };
+
+static const byte k1SpecialPalette4DOSCD[51] = {
+ 0x06, 0x03, 0x01, 0x33, 0x25, 0x0A, 0x2F, 0x21,
+ 0x0A, 0x2B, 0x1D, 0x08, 0x28, 0x1A, 0x08, 0x24,
+ 0x17, 0x06, 0x21, 0x22, 0x06, 0x1D, 0x11, 0x05,
+ 0x19, 0x0E, 0x05, 0x16, 0x0B, 0x03, 0x12, 0x0A,
+ 0x03, 0x0F, 0x08, 0x03, 0x28, 0x1A, 0x08, 0x22,
+ 0x15, 0x05, 0x1D, 0x11, 0x05, 0x17, 0x0C, 0x03,
+ 0x12, 0x0A, 0x03
+};
+
+static const ByteProvider k1SpecialPalette4DOSCDProvider = { ARRAYSIZE(k1SpecialPalette4DOSCD), k1SpecialPalette4DOSCD };
+
+static const byte k1SpecialPalette5DOSCD[51] = {
+ 0x03, 0x03, 0x00, 0x2A, 0x1D, 0x13, 0x27, 0x1A,
+ 0x11, 0x24, 0x18, 0x0F, 0x21, 0x15, 0x0D, 0x1E,
+ 0x13, 0x0C, 0x1C, 0x11, 0x0A, 0x19, 0x0F, 0x0A,
+ 0x16, 0x0C, 0x08, 0x13, 0x0A, 0x06, 0x11, 0x08,
+ 0x05, 0x0E, 0x08, 0x05, 0x1C, 0x11, 0x0A, 0x19,
+ 0x0E, 0x08, 0x16, 0x0C, 0x08, 0x13, 0x0A, 0x06,
+ 0x11, 0x08, 0x05
+};
+
+static const ByteProvider k1SpecialPalette5DOSCDProvider = { ARRAYSIZE(k1SpecialPalette5DOSCD), k1SpecialPalette5DOSCD };
+
+static const byte k1SpecialPalette6DOSCD[51] = {
+ 0x00, 0x08, 0x01, 0x00, 0x1E, 0x00, 0x00, 0x1B,
+ 0x00, 0x00, 0x19, 0x00, 0x00, 0x17, 0x00, 0x00,
+ 0x14, 0x00, 0x00, 0x12, 0x00, 0x00, 0x11, 0x00,
+ 0x00, 0x0E, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x0A,
+ 0x00, 0x00, 0x08, 0x00, 0x13, 0x21, 0x0F, 0x11,
+ 0x1F, 0x0D, 0x0E, 0x1D, 0x0C, 0x0C, 0x1B, 0x0B,
+ 0x0A, 0x19, 0x0A
+};
+
+static const ByteProvider k1SpecialPalette6DOSCDProvider = { ARRAYSIZE(k1SpecialPalette6DOSCD), k1SpecialPalette6DOSCD };
+
+static const byte k1SpecialPalette7DOSCD[54] = {
+ 0x05, 0x2B, 0x00, 0x00, 0x22, 0x00, 0x00, 0x1E,
+ 0x00, 0x00, 0x16, 0x01, 0x00, 0x12, 0x03, 0x00,
+ 0x0F, 0x01, 0x00, 0x0B, 0x03, 0x0A, 0x19, 0x0A,
+ 0x2D, 0x2D, 0x32, 0x29, 0x29, 0x2D, 0x25, 0x25,
+ 0x2B, 0x1F, 0x1F, 0x26, 0x1B, 0x1B, 0x22, 0x14,
+ 0x16, 0x1D, 0x11, 0x11, 0x18, 0x0D, 0x0D, 0x14,
+ 0x0A, 0x0A, 0x0F, 0x06, 0x06, 0x0B
+};
+
+static const ByteProvider k1SpecialPalette7DOSCDProvider = { ARRAYSIZE(k1SpecialPalette7DOSCD), k1SpecialPalette7DOSCD };
+
+static const byte k1SpecialPalette8DOSCD[54] = {
+ 0x12, 0x37, 0x3F, 0x14, 0x31, 0x3F, 0x14, 0x29,
+ 0x3F, 0x14, 0x22, 0x3F, 0x14, 0x1B, 0x3F, 0x14,
+ 0x14, 0x3F, 0x0E, 0x0F, 0x37, 0x14, 0x29, 0x3F,
+ 0x2F, 0x3F, 0x3D, 0x26, 0x3F, 0x3F, 0x15, 0x3F,
+ 0x3F, 0x14, 0x3B, 0x3F, 0x12, 0x37, 0x3F, 0x14,
+ 0x31, 0x3F, 0x14, 0x29, 0x3F, 0x14, 0x22, 0x3F,
+ 0x14, 0x1B, 0x3F, 0x14, 0x14, 0x3F
+};
+
+static const ByteProvider k1SpecialPalette8DOSCDProvider = { ARRAYSIZE(k1SpecialPalette8DOSCD), k1SpecialPalette8DOSCD };
+
+static const byte k1SpecialPalette9DOSCD[45] = {
+ 0x36, 0x00, 0x00, 0x32, 0x00, 0x00, 0x2F, 0x00,
+ 0x00, 0x2C, 0x00, 0x00, 0x29, 0x00, 0x00, 0x26,
+ 0x00, 0x00, 0x23, 0x00, 0x00, 0x20, 0x00, 0x00,
+ 0x1C, 0x00, 0x00, 0x19, 0x00, 0x00, 0x16, 0x00,
+ 0x00, 0x13, 0x00, 0x00, 0x11, 0x00, 0x00, 0x0D,
+ 0x00, 0x00, 0x0A, 0x00, 0x00
+};
+
+static const ByteProvider k1SpecialPalette9DOSCDProvider = { ARRAYSIZE(k1SpecialPalette9DOSCD), k1SpecialPalette9DOSCD };
+
+static const byte k1SpecialPalette10DOSCD[45] = {
+ 0x29, 0x00, 0x00, 0x26, 0x00, 0x00, 0x24, 0x00,
+ 0x00, 0x22, 0x00, 0x00, 0x20, 0x00, 0x00, 0x1E,
+ 0x00, 0x00, 0x1B, 0x00, 0x00, 0x19, 0x00, 0x00,
+ 0x17, 0x00, 0x00, 0x15, 0x00, 0x00, 0x12, 0x00,
+ 0x00, 0x11, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x0C,
+ 0x00, 0x00, 0x0A, 0x00, 0x00
+};
+
+static const ByteProvider k1SpecialPalette10DOSCDProvider = { ARRAYSIZE(k1SpecialPalette10DOSCD), k1SpecialPalette10DOSCD };
+
+static const byte k1SpecialPalette11DOSCD[45] = {
+ 0x20, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x1C, 0x00,
+ 0x00, 0x1B, 0x00, 0x00, 0x19, 0x00, 0x00, 0x18,
+ 0x00, 0x00, 0x16, 0x00, 0x00, 0x15, 0x00, 0x00,
+ 0x13, 0x00, 0x00, 0x11, 0x00, 0x00, 0x11, 0x00,
+ 0x00, 0x0E, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x0B,
+ 0x00, 0x00, 0x0A, 0x00, 0x00
+};
+
+static const ByteProvider k1SpecialPalette11DOSCDProvider = { ARRAYSIZE(k1SpecialPalette11DOSCD), k1SpecialPalette11DOSCD };
+
+static const byte k1SpecialPalette12DOSCD[45] = {
+ 0x19, 0x00, 0x00, 0x18, 0x00, 0x00, 0x16, 0x00,
+ 0x00, 0x15, 0x00, 0x00, 0x14, 0x00, 0x00, 0x13,
+ 0x00, 0x00, 0x12, 0x00, 0x00, 0x11, 0x00, 0x00,
+ 0x11, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x0E, 0x00,
+ 0x00, 0x0D, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0B,
+ 0x00, 0x00, 0x0A, 0x00, 0x00
+};
+
+static const ByteProvider k1SpecialPalette12DOSCDProvider = { ARRAYSIZE(k1SpecialPalette12DOSCD), k1SpecialPalette12DOSCD };
+
+static const byte k1SpecialPalette13DOSCD[45] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const ByteProvider k1SpecialPalette13DOSCDProvider = { ARRAYSIZE(k1SpecialPalette13DOSCD), k1SpecialPalette13DOSCD };
+
+static const byte k1SpecialPalette14DOSCD[60] = {
+ 0x0E, 0x28, 0x3F, 0x0C, 0x24, 0x3B, 0x0A, 0x20,
+ 0x38, 0x0A, 0x1C, 0x34, 0x08, 0x19, 0x31, 0x08,
+ 0x15, 0x2D, 0x05, 0x13, 0x2A, 0x05, 0x11, 0x27,
+ 0x03, 0x0D, 0x24, 0x03, 0x0A, 0x20, 0x03, 0x08,
+ 0x1D, 0x01, 0x06, 0x19, 0x01, 0x05, 0x16, 0x00,
+ 0x03, 0x13, 0x00, 0x01, 0x0F, 0x00, 0x01, 0x0C,
+ 0x00, 0x00, 0x08, 0x00, 0x00, 0x05, 0x00, 0x00,
+ 0x03, 0x00, 0x00, 0x00
+};
+
+static const ByteProvider k1SpecialPalette14DOSCDProvider = { ARRAYSIZE(k1SpecialPalette14DOSCD), k1SpecialPalette14DOSCD };
+
+static const byte k1SpecialPalette15DOSCD[45] = {
+ 0x24, 0x00, 0x39, 0x21, 0x00, 0x36, 0x1F, 0x00,
+ 0x32, 0x1C, 0x00, 0x2D, 0x1A, 0x00, 0x2A, 0x17,
+ 0x00, 0x26, 0x15, 0x00, 0x22, 0x12, 0x00, 0x1E,
+ 0x11, 0x00, 0x1A, 0x0E, 0x00, 0x16, 0x0B, 0x00,
+ 0x12, 0x0A, 0x00, 0x0F, 0x06, 0x00, 0x0B, 0x05,
+ 0x00, 0x08, 0x01, 0x00, 0x03
+};
+
+static const ByteProvider k1SpecialPalette15DOSCDProvider = { ARRAYSIZE(k1SpecialPalette15DOSCD), k1SpecialPalette15DOSCD };
+
+static const byte k1SpecialPalette16DOSCD[33] = {
+ 0x00, 0x3F, 0x3F, 0x00, 0x38, 0x38, 0x00, 0x34,
+ 0x34, 0x00, 0x30, 0x30, 0x00, 0x2D, 0x2D, 0x00,
+ 0x29, 0x29, 0x00, 0x25, 0x25, 0x00, 0x1F, 0x1F,
+ 0x00, 0x1B, 0x1B, 0x00, 0x16, 0x16, 0x00, 0x11,
+ 0x11
+};
+
+static const ByteProvider k1SpecialPalette16DOSCDProvider = { ARRAYSIZE(k1SpecialPalette16DOSCD), k1SpecialPalette16DOSCD };
+
+static const byte k1SpecialPalette17DOSCD[33] = {
+ 0x3B, 0x3B, 0x3B, 0x36, 0x36, 0x36, 0x32, 0x32,
+ 0x32, 0x2D, 0x2D, 0x2D, 0x2A, 0x2A, 0x2A, 0x26,
+ 0x26, 0x26, 0x21, 0x21, 0x21, 0x1D, 0x1D, 0x1D,
+ 0x19, 0x19, 0x19, 0x15, 0x15, 0x15, 0x11, 0x11,
+ 0x11
+};
+
+static const ByteProvider k1SpecialPalette17DOSCDProvider = { ARRAYSIZE(k1SpecialPalette17DOSCD), k1SpecialPalette17DOSCD };
+
+static const byte k1SpecialPalette18DOSCD[21] = {
+ 0x0F, 0x23, 0x1C, 0x2A, 0x36, 0x3F, 0x24, 0x2F,
+ 0x38, 0x1F, 0x2A, 0x32, 0x1A, 0x24, 0x2B, 0x15,
+ 0x1E, 0x25, 0x11, 0x19, 0x1F
+};
+
+static const ByteProvider k1SpecialPalette18DOSCDProvider = { ARRAYSIZE(k1SpecialPalette18DOSCD), k1SpecialPalette18DOSCD };
+
+static const byte k1SpecialPalette19DOSCD[21] = {
+ 0x00, 0x00, 0x1C, 0x00, 0x00, 0x3F, 0x00, 0x00,
+ 0x38, 0x00, 0x00, 0x32, 0x00, 0x00, 0x2B, 0x00,
+ 0x00, 0x25, 0x00, 0x00, 0x1F
+};
+
+static const ByteProvider k1SpecialPalette19DOSCDProvider = { ARRAYSIZE(k1SpecialPalette19DOSCD), k1SpecialPalette19DOSCD };
+
+static const byte k1SpecialPalette20DOSCD[21] = {
+ 0x26, 0x1B, 0x1B, 0x3F, 0x34, 0x34, 0x3B, 0x2F,
+ 0x2F, 0x39, 0x2B, 0x2B, 0x36, 0x26, 0x27, 0x33,
+ 0x22, 0x23, 0x31, 0x1F, 0x20
+};
+
+static const ByteProvider k1SpecialPalette20DOSCDProvider = { ARRAYSIZE(k1SpecialPalette20DOSCD), k1SpecialPalette20DOSCD };
+
+static const byte k1SpecialPalette21DOSCD[21] = {
+ 0x1C, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x38, 0x00,
+ 0x00, 0x32, 0x00, 0x00, 0x2B, 0x00, 0x00, 0x25,
+ 0x00, 0x00, 0x1F, 0x00, 0x00
+};
+
+static const ByteProvider k1SpecialPalette21DOSCDProvider = { ARRAYSIZE(k1SpecialPalette21DOSCD), k1SpecialPalette21DOSCD };
+
+static const byte k1SpecialPalette22DOSCD[21] = {
+ 0x1F, 0x1F, 0x0C, 0x3F, 0x3F, 0x21, 0x3B, 0x3B,
+ 0x1F, 0x37, 0x37, 0x1D, 0x34, 0x34, 0x1B, 0x30,
+ 0x30, 0x19, 0x2D, 0x2D, 0x17
+};
+
+static const ByteProvider k1SpecialPalette22DOSCDProvider = { ARRAYSIZE(k1SpecialPalette22DOSCD), k1SpecialPalette22DOSCD };
+
+static const byte k1SpecialPalette23DOSCD[21] = {
+ 0x1F, 0x1F, 0x00, 0x3F, 0x3F, 0x00, 0x3B, 0x3B,
+ 0x00, 0x37, 0x37, 0x00, 0x34, 0x34, 0x00, 0x30,
+ 0x30, 0x00, 0x2D, 0x2D, 0x00
+};
+
+static const ByteProvider k1SpecialPalette23DOSCDProvider = { ARRAYSIZE(k1SpecialPalette23DOSCD), k1SpecialPalette23DOSCD };
+
+static const byte k1SpecialPalette24DOSCD[48] = {
+ 0x36, 0x38, 0x2C, 0x31, 0x38, 0x23, 0x2A, 0x33,
+ 0x1E, 0x24, 0x2F, 0x1A, 0x1E, 0x2A, 0x16, 0x18,
+ 0x26, 0x13, 0x13, 0x21, 0x0F, 0x0E, 0x1D, 0x0D,
+ 0x0D, 0x1B, 0x0C, 0x0A, 0x19, 0x0A, 0x0A, 0x18,
+ 0x0A, 0x08, 0x17, 0x08, 0x08, 0x16, 0x08, 0x08,
+ 0x15, 0x06, 0x06, 0x14, 0x06, 0x06, 0x11, 0x06
+};
+
+static const ByteProvider k1SpecialPalette24DOSCDProvider = { ARRAYSIZE(k1SpecialPalette24DOSCD), k1SpecialPalette24DOSCD };
+
+static const byte k1SpecialPalette25DOSCD[48] = {
+ 0x36, 0x38, 0x2C, 0x31, 0x36, 0x23, 0x2A, 0x33,
+ 0x1E, 0x24, 0x2F, 0x1A, 0x1E, 0x2A, 0x16, 0x1E,
+ 0x2A, 0x16, 0x18, 0x26, 0x13, 0x13, 0x21, 0x0F,
+ 0x0E, 0x1D, 0x0D, 0x0D, 0x1B, 0x0C, 0x0D, 0x1B,
+ 0x0C, 0x0A, 0x19, 0x0A, 0x0A, 0x18, 0x0A, 0x0A,
+ 0x18, 0x0A, 0x0A, 0x18, 0x0A, 0x06, 0x14, 0x06
+};
+
+static const ByteProvider k1SpecialPalette25DOSCDProvider = { ARRAYSIZE(k1SpecialPalette25DOSCD), k1SpecialPalette25DOSCD };
+
+static const byte k1SpecialPalette26DOSCD[48] = {
+ 0x31, 0x38, 0x23, 0x31, 0x38, 0x23, 0x2A, 0x33,
+ 0x1E, 0x24, 0x2F, 0x1A, 0x19, 0x2A, 0x16, 0x18,
+ 0x26, 0x13, 0x13, 0x21, 0x0F, 0x13, 0x21, 0x11,
+ 0x13, 0x21, 0x0F, 0x0E, 0x1D, 0x0D, 0x0E, 0x1D,
+ 0x0D, 0x0E, 0x1D, 0x0D, 0x0D, 0x1B, 0x0C, 0x0A,
+ 0x19, 0x0A, 0x0A, 0x19, 0x0A, 0x06, 0x13, 0x06
+};
+
+static const ByteProvider k1SpecialPalette26DOSCDProvider = { ARRAYSIZE(k1SpecialPalette26DOSCD), k1SpecialPalette26DOSCD };
+
+static const byte k1SpecialPalette27DOSCD[48] = {
+ 0x31, 0x38, 0x23, 0x31, 0x38, 0x23, 0x2A, 0x33,
+ 0x1E, 0x24, 0x2F, 0x1A, 0x19, 0x2A, 0x16, 0x18,
+ 0x26, 0x13, 0x13, 0x21, 0x0F, 0x13, 0x21, 0x0F,
+ 0x13, 0x21, 0x0F, 0x0E, 0x1D, 0x0D, 0x0E, 0x1D,
+ 0x0D, 0x0E, 0x1D, 0x0D, 0x0D, 0x1B, 0x0C, 0x0D,
+ 0x19, 0x0C, 0x0D, 0x19, 0x0C, 0x08, 0x16, 0x08
+};
+
+static const ByteProvider k1SpecialPalette27DOSCDProvider = { ARRAYSIZE(k1SpecialPalette27DOSCD), k1SpecialPalette27DOSCD };
+
+static const byte k1SpecialPalette28DOSCD[48] = {
+ 0x36, 0x38, 0x2C, 0x31, 0x38, 0x23, 0x2A, 0x33,
+ 0x1E, 0x24, 0x2F, 0x1A, 0x19, 0x2A, 0x16, 0x1E,
+ 0x2A, 0x16, 0x18, 0x26, 0x13, 0x13, 0x21, 0x0F,
+ 0x13, 0x21, 0x0F, 0x13, 0x21, 0x0F, 0x13, 0x21,
+ 0x0F, 0x0E, 0x1D, 0x0D, 0x0D, 0x1B, 0x0C, 0x0D,
+ 0x1B, 0x0C, 0x0D, 0x1B, 0x0C, 0x08, 0x17, 0x08
+};
+
+static const ByteProvider k1SpecialPalette28DOSCDProvider = { ARRAYSIZE(k1SpecialPalette28DOSCD), k1SpecialPalette28DOSCD };
+
+static const byte k1SpecialPalette29DOSCD[48] = {
+ 0x36, 0x38, 0x2C, 0x31, 0x38, 0x23, 0x2A, 0x33,
+ 0x1E, 0x24, 0x2F, 0x1A, 0x19, 0x2A, 0x16, 0x1E,
+ 0x2A, 0x16, 0x18, 0x26, 0x13, 0x13, 0x21, 0x0F,
+ 0x13, 0x21, 0x0F, 0x13, 0x21, 0x0F, 0x13, 0x21,
+ 0x0F, 0x13, 0x21, 0x0F, 0x0E, 0x1D, 0x0D, 0x0E,
+ 0x1D, 0x0D, 0x0E, 0x1D, 0x0D, 0x08, 0x17, 0x08
+};
+
+static const ByteProvider k1SpecialPalette29DOSCDProvider = { ARRAYSIZE(k1SpecialPalette29DOSCD), k1SpecialPalette29DOSCD };
+
+static const byte k1SpecialPalette30DOSCD[60] = {
+ 0x1E, 0x1D, 0x3F, 0x1A, 0x19, 0x3F, 0x14, 0x12,
+ 0x3B, 0x12, 0x11, 0x37, 0x11, 0x11, 0x33, 0x0F,
+ 0x0E, 0x2F, 0x0E, 0x0D, 0x2C, 0x0D, 0x0C, 0x28,
+ 0x0B, 0x0B, 0x24, 0x0A, 0x0A, 0x20, 0x0A, 0x0A,
+ 0x1D, 0x05, 0x05, 0x18, 0x03, 0x03, 0x13, 0x01,
+ 0x01, 0x11, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x05,
+ 0x00, 0x0A, 0x1A, 0x00, 0x0F, 0x13, 0x00, 0x14,
+ 0x11, 0x0F, 0x0D, 0x00
+};
+
+static const ByteProvider k1SpecialPalette30DOSCDProvider = { ARRAYSIZE(k1SpecialPalette30DOSCD), k1SpecialPalette30DOSCD };
+
+static const byte k1SpecialPalette31DOSCD[39] = {
+ 0x2B, 0x19, 0x34, 0x27, 0x17, 0x30, 0x23, 0x14,
+ 0x2C, 0x20, 0x12, 0x27, 0x1C, 0x11, 0x23, 0x18,
+ 0x0E, 0x1E, 0x15, 0x0C, 0x1A, 0x11, 0x0A, 0x15,
+ 0x0E, 0x08, 0x11, 0x0A, 0x05, 0x0C, 0x06, 0x03,
+ 0x08, 0x03, 0x01, 0x03, 0x00, 0x00, 0x00
+};
+
+static const ByteProvider k1SpecialPalette31DOSCDProvider = { ARRAYSIZE(k1SpecialPalette31DOSCD), k1SpecialPalette31DOSCD };
+
+static const byte k1SpecialPalette32DOSCD[39] = {
+ 0x12, 0x12, 0x16, 0x11, 0x11, 0x14, 0x0F, 0x0F,
+ 0x12, 0x0D, 0x0D, 0x11, 0x0B, 0x0B, 0x0E, 0x0A,
+ 0x0A, 0x0C, 0x08, 0x08, 0x0A, 0x08, 0x08, 0x08,
+ 0x05, 0x05, 0x06, 0x05, 0x05, 0x05, 0x03, 0x03,
+ 0x03, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00
+};
+
+static const ByteProvider k1SpecialPalette32DOSCDProvider = { ARRAYSIZE(k1SpecialPalette32DOSCD), k1SpecialPalette32DOSCD };
+
+static const byte k1SpecialPalette33DOSCD[60] = {
+ 0x3F, 0x3D, 0x2F, 0x3F, 0x3D, 0x29, 0x3F, 0x3D,
+ 0x23, 0x3F, 0x3D, 0x1D, 0x3F, 0x3B, 0x17, 0x3F,
+ 0x3B, 0x11, 0x3F, 0x3B, 0x0B, 0x3F, 0x3B, 0x05,
+ 0x3F, 0x3B, 0x00, 0x3D, 0x38, 0x00, 0x3B, 0x34,
+ 0x00, 0x39, 0x33, 0x00, 0x39, 0x30, 0x00, 0x37,
+ 0x2D, 0x00, 0x36, 0x2B, 0x00, 0x34, 0x28, 0x00,
+ 0x33, 0x26, 0x00, 0x32, 0x24, 0x00, 0x30, 0x22,
+ 0x00, 0x2F, 0x20, 0x00
+};
+
+static const ByteProvider k1SpecialPalette33DOSCDProvider = { ARRAYSIZE(k1SpecialPalette33DOSCD), k1SpecialPalette33DOSCD };
+
+static const Shape k1Healing1ShapesDOSCD[22] = {
+ { 8, 0, 0, 3, 48, -12, -48 },
+ { 8, 3, 0, 3, 48, -12, -48 },
+ { 8, 6, 0, 3, 48, -12, -48 },
+ { 8, 9, 0, 3, 48, -12, -48 },
+ { 8, 12, 0, 3, 48, -12, -48 },
+ { 8, 15, 0, 3, 48, -12, -48 },
+ { 8, 18, 0, 3, 48, -12, -48 },
+ { 8, 21, 0, 3, 48, -12, -48 },
+ { 8, 24, 0, 3, 48, -12, -48 },
+ { 8, 27, 0, 3, 48, -12, -48 },
+ { 8, 30, 0, 3, 48, -12, -48 },
+ { 8, 33, 0, 3, 48, -12, -48 },
+ { 8, 0, 48, 3, 48, -12, -48 },
+ { 8, 3, 48, 3, 48, -12, -48 },
+ { 8, 6, 48, 3, 48, -12, -48 },
+ { 8, 9, 48, 3, 48, -12, -48 },
+ { 8, 12, 48, 3, 48, -12, -48 },
+ { 8, 15, 48, 3, 48, -12, -48 },
+ { 8, 18, 48, 3, 48, -12, -48 },
+ { 8, 21, 48, 3, 48, -12, -48 },
+ { 8, 24, 48, 3, 48, -12, -48 },
+ { 8, 27, 48, 3, 48, -12, -48 }
+};
+
+static const ShapeProvider k1Healing1ShapesDOSCDProvider = { ARRAYSIZE(k1Healing1ShapesDOSCD), k1Healing1ShapesDOSCD };
+
+static const Shape k1Healing2ShapesDOSCD[30] = {
+ { 9, 0, 0, 3, 48, -11, -48 },
+ { 9, 3, 0, 3, 48, -11, -48 },
+ { 9, 6, 0, 3, 48, -11, -48 },
+ { 9, 9, 0, 3, 48, -11, -48 },
+ { 9, 12, 0, 3, 48, -11, -48 },
+ { 9, 15, 0, 3, 48, -11, -48 },
+ { 9, 18, 0, 3, 48, -11, -48 },
+ { 9, 21, 0, 3, 48, -11, -48 },
+ { 9, 24, 0, 3, 48, -11, -48 },
+ { 9, 27, 0, 3, 48, -11, -48 },
+ { 9, 30, 0, 3, 48, -11, -48 },
+ { 9, 33, 0, 3, 48, -11, -48 },
+ { 9, 0, 48, 3, 48, -11, -48 },
+ { 9, 3, 48, 3, 48, -11, -48 },
+ { 9, 6, 48, 3, 48, -11, -48 },
+ { 9, 9, 48, 3, 48, -11, -48 },
+ { 9, 12, 48, 3, 48, -11, -48 },
+ { 9, 15, 48, 3, 48, -11, -48 },
+ { 9, 18, 48, 3, 48, -11, -48 },
+ { 9, 21, 48, 3, 48, -11, -48 },
+ { 9, 24, 48, 3, 48, -11, -48 },
+ { 9, 27, 48, 3, 48, -11, -48 },
+ { 9, 30, 48, 3, 48, -11, -48 },
+ { 9, 33, 48, 3, 48, -11, -48 },
+ { 9, 0, 96, 3, 48, -11, -48 },
+ { 9, 3, 96, 3, 48, -11, -48 },
+ { 9, 6, 96, 3, 48, -11, -48 },
+ { 9, 9, 96, 3, 48, -11, -48 },
+ { 9, 12, 96, 3, 48, -11, -48 },
+ { 9, 15, 96, 3, 48, -11, -48 }
+};
+
+static const ShapeProvider k1Healing2ShapesDOSCDProvider = { ARRAYSIZE(k1Healing2ShapesDOSCD), k1Healing2ShapesDOSCD };
+
+static const Shape k1PoisonDeathShapesDOSCD[20] = {
+ { 19, 0, 0, 8, 48, -31, -48 },
+ { 19, 8, 0, 8, 48, -31, -48 },
+ { 19, 16, 0, 8, 48, -31, -48 },
+ { 19, 24, 0, 8, 48, -31, -48 },
+ { 19, 32, 0, 8, 48, -31, -48 },
+ { 19, 0, 48, 8, 48, -31, -48 },
+ { 19, 8, 48, 8, 48, -31, -48 },
+ { 19, 16, 48, 8, 48, -31, -48 },
+ { 19, 24, 48, 8, 48, -31, -48 },
+ { 19, 32, 48, 8, 48, -31, -48 },
+ { 19, 0, 96, 8, 48, -31, -48 },
+ { 19, 8, 96, 8, 48, -31, -48 },
+ { 19, 16, 96, 8, 48, -31, -48 },
+ { 19, 24, 96, 8, 48, -31, -48 },
+ { 19, 32, 96, 8, 48, -31, -48 },
+ { 19, 0, 144, 8, 48, -31, -48 },
+ { 19, 8, 144, 8, 48, -31, -48 },
+ { 19, 16, 144, 8, 48, -31, -48 },
+ { 19, 24, 144, 8, 48, -31, -48 },
+ { 19, 32, 144, 8, 48, -31, -48 }
+};
+
+static const ShapeProvider k1PoisonDeathShapesDOSCDProvider = { ARRAYSIZE(k1PoisonDeathShapesDOSCD), k1PoisonDeathShapesDOSCD };
+
+static const Shape k1FluteShapesDOSCD[36] = {
+ { 13, 0, 0, 3, 75, -12, -75 },
+ { 13, 3, 0, 3, 75, -12, -75 },
+ { 13, 6, 0, 3, 75, -12, -75 },
+ { 13, 9, 0, 3, 75, -12, -75 },
+ { 13, 12, 0, 3, 75, -12, -75 },
+ { 13, 15, 0, 3, 75, -12, -75 },
+ { 13, 18, 0, 3, 75, -12, -75 },
+ { 13, 21, 0, 3, 75, -12, -75 },
+ { 13, 24, 0, 3, 75, -12, -75 },
+ { 13, 27, 0, 3, 75, -12, -75 },
+ { 13, 30, 0, 3, 75, -12, -75 },
+ { 13, 33, 0, 3, 75, -12, -75 },
+ { 13, 36, 75, 3, 75, -12, -75 },
+ { 13, 0, 75, 3, 75, -12, -75 },
+ { 13, 3, 75, 3, 75, -12, -75 },
+ { 13, 6, 75, 3, 75, -12, -75 },
+ { 13, 9, 75, 3, 75, -12, -75 },
+ { 13, 12, 75, 3, 75, -12, -75 },
+ { 13, 15, 75, 3, 75, -12, -75 },
+ { 13, 18, 75, 3, 75, -12, -75 },
+ { 13, 21, 75, 3, 75, -12, -75 },
+ { 13, 24, 75, 3, 75, -12, -75 },
+ { 13, 27, 75, 3, 75, -12, -75 },
+ { 13, 30, 75, 3, 75, -12, -75 },
+ { 13, 33, 75, 3, 75, -12, -75 },
+ { 13, 36, 75, 3, 75, -12, -75 },
+ { 14, 0, 0, 3, 75, -12, -75 },
+ { 14, 3, 0, 3, 75, -12, -75 },
+ { 14, 6, 0, 3, 75, -12, -75 },
+ { 14, 9, 0, 3, 75, -12, -75 },
+ { 14, 12, 0, 3, 75, -12, -75 },
+ { 14, 15, 0, 3, 75, -12, -75 },
+ { 14, 18, 0, 3, 75, -12, -75 },
+ { 14, 21, 0, 3, 75, -12, -75 },
+ { 14, 24, 0, 3, 75, -12, -75 },
+ { 14, 27, 0, 3, 75, -12, -75 }
+};
+
+static const ShapeProvider k1FluteShapesDOSCDProvider = { ARRAYSIZE(k1FluteShapesDOSCD), k1FluteShapesDOSCD };
+
+static const Shape k1Winter1ShapesDOSCD[7] = {
+ { 10, 5, 0, 5, 66, -20, -65 },
+ { 10, 10, 0, 5, 66, -20, -65 },
+ { 10, 15, 0, 5, 66, -20, -65 },
+ { 10, 20, 0, 5, 66, -20, -65 },
+ { 10, 25, 0, 5, 66, -20, -65 },
+ { 10, 30, 0, 5, 66, -20, -65 },
+ { 10, 35, 0, 5, 66, -20, -65 }
+};
+
+static const ShapeProvider k1Winter1ShapesDOSCDProvider = { ARRAYSIZE(k1Winter1ShapesDOSCD), k1Winter1ShapesDOSCD };
+
+static const Shape k1Winter2ShapesDOSCD[35] = {
+ { 10, 0, 66, 5, 66, -20, -65 },
+ { 10, 10, 66, 5, 66, -20, -65 },
+ { 10, 20, 66, 5, 66, -20, -65 },
+ { 10, 30, 66, 5, 66, -20, -65 },
+ { 10, 0, 132, 5, 66, -20, -65 },
+ { 10, 10, 132, 5, 66, -20, -65 },
+ { 10, 20, 132, 5, 66, -20, -65 },
+ { 10, 30, 132, 5, 66, -20, -65 },
+ { 11, 0, 0, 5, 66, -20, -65 },
+ { 11, 10, 0, 5, 66, -20, -65 },
+ { 11, 20, 0, 5, 66, -20, -65 },
+ { 11, 30, 0, 5, 66, -20, -65 },
+ { 11, 0, 66, 5, 66, -20, -65 },
+ { 11, 10, 66, 5, 66, -20, -65 },
+ { 11, 20, 66, 5, 66, -20, -65 },
+ { 11, 30, 66, 5, 66, -20, -65 },
+ { 11, 0, 132, 5, 66, -20, -65 },
+ { 11, 10, 132, 5, 66, -20, -65 },
+ { 0, 0, 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static const ShapeProvider k1Winter2ShapesDOSCDProvider = { ARRAYSIZE(k1Winter2ShapesDOSCD), k1Winter2ShapesDOSCD };
+
+static const Shape k1Winter3ShapesDOSCD[4] = {
+ { 11, 15, 132, 5, 66, -20, -65 },
+ { 11, 20, 132, 5, 66, -20, -65 },
+ { 11, 25, 132, 5, 66, -20, -65 },
+ { 11, 30, 132, 5, 66, -20, -65 }
+};
+
+static const ShapeProvider k1Winter3ShapesDOSCDProvider = { ARRAYSIZE(k1Winter3ShapesDOSCD), k1Winter3ShapesDOSCD };
+
+static const Shape k1DrinkShapesDOSCD[15] = {
+ { 6, 0, 0, 4, 48, -20, -48 },
+ { 6, 4, 0, 4, 48, -20, -48 },
+ { 6, 8, 0, 4, 48, -20, -48 },
+ { 6, 12, 0, 4, 48, -20, -48 },
+ { 6, 16, 0, 4, 48, -20, -48 },
+ { 6, 20, 0, 5, 48, -20, -48 },
+ { 6, 0, 48, 5, 54, -20, -54 },
+ { 6, 5, 48, 5, 54, -20, -54 },
+ { 6, 10, 48, 5, 54, -20, -54 },
+ { 7, 0, 0, 3, 43, -12, -43 },
+ { 7, 3, 3, 2, 40, -8, -40 },
+ { 7, 5, 7, 2, 36, -8, -36 },
+ { 7, 7, 10, 2, 33, -8, -33 },
+ { 7, 9, 12, 2, 31, -8, -31 },
+ { 7, 11, 15, 2, 28, -8, -28 }
+};
+
+static const ShapeProvider k1DrinkShapesDOSCDProvider = { ARRAYSIZE(k1DrinkShapesDOSCD), k1DrinkShapesDOSCD };
+
+static const Shape k1WispShapesDOSCD[26] = {
+ { 12, 0, 0, 5, 48, -20, -48 },
+ { 12, 5, 0, 5, 48, -20, -48 },
+ { 12, 10, 0, 5, 48, -20, -48 },
+ { 12, 15, 0, 5, 48, -20, -48 },
+ { 12, 20, 0, 5, 48, -20, -48 },
+ { 12, 25, 0, 5, 48, -20, -48 },
+ { 12, 30, 0, 5, 48, -20, -48 },
+ { 12, 35, 0, 5, 48, -20, -48 },
+ { 12, 0, 48, 5, 48, -20, -48 },
+ { 12, 5, 48, 5, 48, -20, -48 },
+ { 12, 10, 48, 5, 48, -20, -48 },
+ { 12, 15, 48, 5, 48, -20, -48 },
+ { 12, 20, 48, 5, 48, -20, -48 },
+ { 12, 25, 48, 5, 48, -20, -48 },
+ { 12, 30, 48, 5, 48, -20, -48 },
+ { 12, 35, 48, 5, 48, -20, -48 },
+ { 12, 0, 96, 5, 29, -20, -42 },
+ { 12, 5, 96, 5, 29, -20, -42 },
+ { 12, 10, 96, 5, 29, -20, -42 },
+ { 12, 15, 96, 5, 29, -20, -42 },
+ { 12, 20, 96, 5, 29, -20, -42 },
+ { 12, 25, 96, 5, 29, -20, -42 },
+ { 12, 30, 96, 5, 29, -20, -42 },
+ { 12, 35, 96, 5, 29, -20, -42 },
+ { 12, 0, 125, 5, 29, -20, -42 },
+ { 12, 5, 125, 5, 29, -20, -42 }
+};
+
+static const ShapeProvider k1WispShapesDOSCDProvider = { ARRAYSIZE(k1WispShapesDOSCD), k1WispShapesDOSCD };
+
+static const Shape k1MagicAnimShapesDOSCD[5] = {
+ { 17, 0, 0, 8, 49, -32, -49 },
+ { 17, 8, 0, 8, 49, -32, -49 },
+ { 17, 16, 0, 8, 49, -32, -49 },
+ { 17, 24, 0, 8, 49, -32, -49 },
+ { 17, 32, 0, 8, 49, -32, -49 }
+};
+
+static const ShapeProvider k1MagicAnimShapesDOSCDProvider = { ARRAYSIZE(k1MagicAnimShapesDOSCD), k1MagicAnimShapesDOSCD };
+
+static const Shape k1BranStoneShapesDOSCD[15] = {
+ { 18, 0, 0, 5, 51, -20, -50 },
+ { 18, 5, 0, 5, 51, -20, -50 },
+ { 18, 10, 0, 5, 51, -20, -50 },
+ { 18, 15, 0, 5, 51, -20, -50 },
+ { 18, 20, 0, 5, 51, -20, -50 },
+ { 18, 25, 0, 5, 51, -20, -50 },
+ { 18, 30, 0, 5, 51, -20, -50 },
+ { 18, 35, 0, 5, 51, -20, -50 },
+ { 18, 0, 51, 5, 51, -20, -50 },
+ { 18, 5, 51, 5, 51, -20, -50 },
+ { 18, 10, 51, 5, 51, -20, -50 },
+ { 18, 15, 51, 5, 51, -20, -50 },
+ { 18, 20, 51, 5, 51, -20, -50 },
+ { 18, 25, 51, 5, 51, -20, -50 },
+ { 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static const ShapeProvider k1BranStoneShapesDOSCDProvider = { ARRAYSIZE(k1BranStoneShapesDOSCD), k1BranStoneShapesDOSCD };
+
+static const byte k1OutroReunionSeqDOSCD[1509] = {
+ 0x23, 0x21, 0x1D, 0x00, 0x08, 0x01, 0x24, 0x20,
+ 0x24, 0x1D, 0x24, 0x1E, 0x24, 0x1F, 0x06, 0x01,
+ 0x00, 0x02, 0x08, 0x00, 0x50, 0x00, 0x22, 0x08,
+ 0x08, 0x00, 0x17, 0x0B, 0x00, 0x03, 0x08, 0x08,
+ 0x08, 0x00, 0x0C, 0x00, 0x09, 0x00, 0x22, 0x1D,
+ 0x13, 0x20, 0x5A, 0x00, 0x3A, 0x02, 0x02, 0x08,
+ 0x0D, 0x50, 0x00, 0x22, 0x08, 0x10, 0x00, 0x02,
+ 0x08, 0x0E, 0x50, 0x00, 0x22, 0x08, 0x10, 0x00,
+ 0x02, 0x08, 0x0C, 0x50, 0x00, 0x22, 0x08, 0x10,
+ 0x00, 0x02, 0x08, 0x0B, 0x50, 0x00, 0x22, 0x08,
+ 0x10, 0x00, 0x02, 0x08, 0x0C, 0x50, 0x00, 0x22,
+ 0x08, 0x10, 0x00, 0x02, 0x08, 0x0D, 0x50, 0x00,
+ 0x22, 0x08, 0x10, 0x00, 0x02, 0x08, 0x0E, 0x50,
+ 0x00, 0x22, 0x08, 0x10, 0x00, 0x0B, 0x01, 0x03,
+ 0x08, 0x08, 0x08, 0x00, 0x0C, 0x01, 0x04, 0x00,
+ 0x22, 0x1E, 0x13, 0x21, 0x5A, 0x00, 0x3A, 0x02,
+ 0x0B, 0x02, 0x02, 0x08, 0x14, 0x50, 0x00, 0x22,
+ 0x08, 0x08, 0x00, 0x03, 0x08, 0x08, 0x08, 0x00,
+ 0x03, 0x08, 0x08, 0x08, 0x00, 0x03, 0x08, 0x08,
+ 0x08, 0x00, 0x03, 0x08, 0x08, 0x08, 0x00, 0x0C,
+ 0x02, 0x01, 0x00, 0x03, 0x08, 0x08, 0x08, 0x00,
+ 0x03, 0x08, 0x08, 0x08, 0x00, 0x03, 0x08, 0x08,
+ 0x08, 0x00, 0x22, 0x1F, 0x13, 0x22, 0x5A, 0x00,
+ 0x3A, 0x02, 0x0B, 0x03, 0x03, 0x08, 0x08, 0x08,
+ 0x00, 0x0C, 0x03, 0x0B, 0x00, 0x22, 0x20, 0x13,
+ 0x23, 0x78, 0x00, 0x3A, 0x0F, 0x0B, 0x03, 0x03,
+ 0x08, 0x08, 0x08, 0x00, 0x0C, 0x03, 0x05, 0x00,
+ 0x07, 0x28, 0x00, 0x02, 0x08, 0x2E, 0x50, 0x00,
+ 0x22, 0x08, 0x10, 0x00, 0x02, 0x08, 0x2D, 0x50,
+ 0x00, 0x22, 0x08, 0x10, 0x00, 0x02, 0x08, 0x2E,
+ 0x50, 0x00, 0x22, 0x08, 0x10, 0x00, 0x02, 0x08,
+ 0x2D, 0x50, 0x00, 0x22, 0x08, 0x10, 0x00, 0x02,
+ 0x08, 0x2E, 0x50, 0x00, 0x22, 0x08, 0x10, 0x00,
+ 0x02, 0x08, 0x2D, 0x50, 0x00, 0x22, 0x08, 0x10,
+ 0x00, 0x02, 0x08, 0x2F, 0x50, 0x00, 0x22, 0x08,
+ 0x08, 0x00, 0x02, 0x08, 0x30, 0x50, 0x00, 0x22,
+ 0x08, 0x08, 0x00, 0x02, 0x08, 0x31, 0x50, 0x00,
+ 0x22, 0x08, 0x08, 0x00, 0x02, 0x08, 0x32, 0x50,
+ 0x00, 0x22, 0x08, 0x08, 0x00, 0x06, 0x0A, 0x00,
+ 0x22, 0x21, 0x13, 0x24, 0x5A, 0x00, 0x3A, 0x02,
+ 0x02, 0x08, 0x33, 0x50, 0x00, 0x22, 0x08, 0x08,
+ 0x00, 0x02, 0x08, 0x34, 0x50, 0x00, 0x22, 0x08,
+ 0x08, 0x00, 0x02, 0x08, 0x35, 0x50, 0x00, 0x22,
+ 0x08, 0x08, 0x00, 0x02, 0x08, 0x36, 0x50, 0x00,
+ 0x22, 0x08, 0x08, 0x00, 0x02, 0x08, 0x37, 0x50,
+ 0x00, 0x22, 0x08, 0x08, 0x00, 0x02, 0x08, 0x35,
+ 0x50, 0x00, 0x22, 0x08, 0x08, 0x00, 0x02, 0x08,
+ 0x34, 0x50, 0x00, 0x22, 0x08, 0x08, 0x00, 0x02,
+ 0x08, 0x33, 0x50, 0x00, 0x22, 0x08, 0x08, 0x00,
+ 0x02, 0x08, 0x35, 0x50, 0x00, 0x22, 0x08, 0x08,
+ 0x00, 0x02, 0x08, 0x36, 0x50, 0x00, 0x22, 0x08,
+ 0x08, 0x00, 0x02, 0x08, 0x37, 0x50, 0x00, 0x22,
+ 0x08, 0x08, 0x00, 0x07, 0x0A, 0x00, 0x22, 0x22,
+ 0x13, 0x25, 0x5A, 0x00, 0x3A, 0x02, 0x02, 0x08,
+ 0x33, 0x50, 0x00, 0x22, 0x08, 0x08, 0x00, 0x02,
+ 0x08, 0x34, 0x50, 0x00, 0x22, 0x08, 0x08, 0x00,
+ 0x02, 0x08, 0x35, 0x50, 0x00, 0x22, 0x08, 0x08,
+ 0x00, 0x02, 0x08, 0x36, 0x50, 0x00, 0x22, 0x08,
+ 0x08, 0x00, 0x02, 0x08, 0x37, 0x50, 0x00, 0x22,
+ 0x08, 0x08, 0x00, 0x02, 0x08, 0x35, 0x50, 0x00,
+ 0x22, 0x08, 0x08, 0x00, 0x02, 0x08, 0x34, 0x50,
+ 0x00, 0x22, 0x08, 0x08, 0x00, 0x02, 0x08, 0x33,
+ 0x50, 0x00, 0x22, 0x08, 0x08, 0x00, 0x02, 0x08,
+ 0x35, 0x50, 0x00, 0x22, 0x08, 0x08, 0x00, 0x02,
+ 0x08, 0x36, 0x50, 0x00, 0x22, 0x08, 0x08, 0x00,
+ 0x02, 0x08, 0x37, 0x50, 0x00, 0x22, 0x08, 0x08,
+ 0x00, 0x07, 0x1E, 0x00, 0x22, 0x23, 0x13, 0x26,
+ 0x78, 0x00, 0x3A, 0x0F, 0x02, 0x08, 0x38, 0x50,
+ 0x00, 0x22, 0x08, 0x08, 0x00, 0x02, 0x08, 0x39,
+ 0x50, 0x00, 0x22, 0x08, 0x08, 0x00, 0x02, 0x08,
+ 0x3A, 0x50, 0x00, 0x22, 0x08, 0x08, 0x00, 0x02,
+ 0x08, 0x38, 0x50, 0x00, 0x22, 0x08, 0x08, 0x00,
+ 0x02, 0x08, 0x3B, 0x50, 0x00, 0x22, 0x08, 0x08,
+ 0x00, 0x07, 0x0A, 0x00, 0x02, 0x08, 0x39, 0x50,
+ 0x00, 0x22, 0x08, 0x08, 0x00, 0x02, 0x08, 0x38,
+ 0x50, 0x00, 0x22, 0x08, 0x08, 0x00, 0x02, 0x08,
+ 0x39, 0x50, 0x00, 0x22, 0x08, 0x08, 0x00, 0x02,
+ 0x08, 0x3A, 0x50, 0x00, 0x22, 0x08, 0x08, 0x00,
+ 0x07, 0x3C, 0x00, 0x14, 0x02, 0x08, 0x33, 0x50,
+ 0x00, 0x22, 0x08, 0x08, 0x00, 0x02, 0x08, 0x32,
+ 0x50, 0x00, 0x22, 0x08, 0x08, 0x00, 0x02, 0x08,
+ 0x31, 0x50, 0x00, 0x22, 0x08, 0x08, 0x00, 0x02,
+ 0x08, 0x30, 0x50, 0x00, 0x22, 0x08, 0x08, 0x00,
+ 0x02, 0x08, 0x2F, 0x50, 0x00, 0x22, 0x08, 0x08,
+ 0x00, 0x02, 0x08, 0x2E, 0x50, 0x00, 0x22, 0x08,
+ 0x08, 0x00, 0x02, 0x08, 0x2D, 0x50, 0x00, 0x22,
+ 0x08, 0x08, 0x00, 0x07, 0x1E, 0x00, 0x02, 0x08,
+ 0x2E, 0x50, 0x00, 0x22, 0x08, 0x08, 0x00, 0x02,
+ 0x08, 0x2F, 0x50, 0x00, 0x22, 0x08, 0x08, 0x00,
+ 0x02, 0x08, 0x30, 0x50, 0x00, 0x22, 0x08, 0x08,
+ 0x00, 0x02, 0x08, 0x31, 0x50, 0x00, 0x22, 0x08,
+ 0x08, 0x00, 0x02, 0x08, 0x32, 0x50, 0x00, 0x22,
+ 0x08, 0x08, 0x00, 0x02, 0x08, 0x33, 0x50, 0x00,
+ 0x22, 0x08, 0x08, 0x00, 0x02, 0x08, 0x41, 0x50,
+ 0x00, 0x22, 0x08, 0x08, 0x00, 0x02, 0x08, 0x42,
+ 0x50, 0x00, 0x22, 0x08, 0x08, 0x00, 0x02, 0x08,
+ 0x43, 0x50, 0x00, 0x22, 0x08, 0x08, 0x00, 0x02,
+ 0x08, 0x44, 0x50, 0x00, 0x22, 0x08, 0x08, 0x00,
+ 0x02, 0x08, 0x45, 0x50, 0x00, 0x22, 0x08, 0x08,
+ 0x00, 0x02, 0x08, 0x46, 0x50, 0x00, 0x22, 0x08,
+ 0x08, 0x00, 0x07, 0x0A, 0x00, 0x22, 0x24, 0x13,
+ 0x27, 0x78, 0x00, 0x3A, 0x0F, 0x0B, 0x05, 0x02,
+ 0x08, 0x59, 0x50, 0x00, 0x22, 0x08, 0x08, 0x00,
+ 0x02, 0x08, 0x5A, 0x50, 0x00, 0x22, 0x08, 0x08,
+ 0x00, 0x02, 0x08, 0x5B, 0x50, 0x00, 0x22, 0x08,
+ 0x08, 0x00, 0x02, 0x08, 0x5C, 0x50, 0x00, 0x22,
+ 0x08, 0x08, 0x00, 0x02, 0x08, 0x5D, 0x50, 0x00,
+ 0x22, 0x08, 0x08, 0x00, 0x0D, 0x05, 0x01, 0x00,
+ 0x02, 0x08, 0x5C, 0x50, 0x00, 0x22, 0x08, 0x08,
+ 0x00, 0x06, 0x28, 0x00, 0x24, 0x25, 0x02, 0x08,
+ 0x4E, 0x50, 0x00, 0x22, 0x08, 0x08, 0x00, 0x02,
+ 0x08, 0x4F, 0x50, 0x00, 0x22, 0x08, 0x08, 0x00,
+ 0x22, 0x25, 0x13, 0x28, 0x5A, 0x00, 0x3A, 0x02,
+ 0x02, 0x08, 0x50, 0x50, 0x00, 0x22, 0x08, 0x08,
+ 0x00, 0x02, 0x08, 0x51, 0x50, 0x00, 0x22, 0x08,
+ 0x08, 0x00, 0x02, 0x08, 0x55, 0x50, 0x00, 0x22,
+ 0x08, 0x08, 0x00, 0x07, 0x3C, 0x00, 0x22, 0x26,
+ 0x13, 0x29, 0x78, 0x00, 0x3A, 0x0F, 0x0B, 0x06,
+ 0x02, 0x08, 0x59, 0x50, 0x00, 0x22, 0x08, 0x08,
+ 0x00, 0x02, 0x08, 0x5A, 0x50, 0x00, 0x22, 0x08,
+ 0x08, 0x00, 0x02, 0x08, 0x5B, 0x50, 0x00, 0x22,
+ 0x08, 0x08, 0x00, 0x02, 0x08, 0x5C, 0x50, 0x00,
+ 0x22, 0x08, 0x08, 0x00, 0x0C, 0x06, 0x02, 0x00,
+ 0x07, 0x1E, 0x00, 0x22, 0x27, 0x13, 0x2A, 0x78,
+ 0x00, 0x3A, 0x0F, 0x0B, 0x06, 0x02, 0x08, 0x59,
+ 0x50, 0x00, 0x22, 0x08, 0x08, 0x00, 0x02, 0x08,
+ 0x5A, 0x50, 0x00, 0x22, 0x08, 0x08, 0x00, 0x02,
+ 0x08, 0x5B, 0x50, 0x00, 0x22, 0x08, 0x08, 0x00,
+ 0x02, 0x08, 0x5C, 0x50, 0x00, 0x22, 0x08, 0x08,
+ 0x00, 0x0C, 0x06, 0x02, 0x00, 0x02, 0x08, 0x5E,
+ 0x50, 0x00, 0x22, 0x08, 0x10, 0x00, 0x02, 0x08,
+ 0x63, 0x50, 0x00, 0x22, 0x08, 0x10, 0x00, 0x07,
+ 0x3C, 0x00, 0x24, 0x28, 0x14, 0x1B, 0x69, 0x02,
+ 0x08, 0x64, 0x50, 0x00, 0x22, 0x08, 0x10, 0x00,
+ 0x02, 0x08, 0x65, 0x50, 0x00, 0x22, 0x08, 0x10,
+ 0x00, 0x1B, 0x74, 0x02, 0x08, 0x66, 0x50, 0x00,
+ 0x22, 0x08, 0x10, 0x00, 0x02, 0x08, 0x67, 0x50,
+ 0x00, 0x22, 0x08, 0x10, 0x00, 0x1B, 0x75, 0x02,
+ 0x08, 0x68, 0x50, 0x00, 0x22, 0x08, 0x10, 0x00,
+ 0x02, 0x08, 0x69, 0x50, 0x00, 0x22, 0x08, 0x10,
+ 0x00, 0x02, 0x08, 0x6C, 0x50, 0x00, 0x22, 0x08,
+ 0x01, 0x00, 0x22, 0x28, 0x13, 0x2B, 0x96, 0x00,
+ 0x1C, 0x22, 0x0B, 0x06, 0x0E, 0x28, 0x02, 0x08,
+ 0x69, 0x50, 0x00, 0x22, 0x08, 0x06, 0x00, 0x0E,
+ 0x28, 0x02, 0x08, 0x6A, 0x50, 0x00, 0x22, 0x08,
+ 0x06, 0x00, 0x0E, 0x28, 0x02, 0x08, 0x6B, 0x50,
+ 0x00, 0x22, 0x08, 0x06, 0x00, 0x0E, 0x28, 0x02,
+ 0x08, 0x6C, 0x50, 0x00, 0x22, 0x08, 0x06, 0x00,
+ 0x0E, 0x28, 0x02, 0x08, 0x6D, 0x50, 0x00, 0x22,
+ 0x08, 0x06, 0x00, 0x0E, 0x28, 0x02, 0x08, 0x6E,
+ 0x50, 0x00, 0x22, 0x08, 0x06, 0x00, 0x0E, 0x28,
+ 0x02, 0x08, 0x6F, 0x50, 0x00, 0x22, 0x08, 0x06,
+ 0x00, 0x0E, 0x28, 0x02, 0x08, 0x70, 0x50, 0x00,
+ 0x22, 0x08, 0x06, 0x00, 0x0E, 0x28, 0x02, 0x08,
+ 0x71, 0x50, 0x00, 0x22, 0x08, 0x06, 0x00, 0x0D,
+ 0x06, 0x02, 0x00, 0x0E, 0x00, 0x02, 0x08, 0x6C,
+ 0x50, 0x00, 0x22, 0x08, 0x05, 0x00, 0x06, 0x1E,
+ 0x00, 0x22, 0x29, 0x13, 0x2C, 0x96, 0x00, 0x1C,
+ 0x22, 0x0E, 0x00, 0x0B, 0x06, 0x0E, 0x32, 0x02,
+ 0x08, 0x6B, 0x50, 0x00, 0x22, 0x08, 0x06, 0x00,
+ 0x0E, 0x32, 0x02, 0x08, 0x6C, 0x50, 0x00, 0x22,
+ 0x08, 0x06, 0x00, 0x0E, 0x32, 0x02, 0x08, 0x6D,
+ 0x50, 0x00, 0x22, 0x08, 0x06, 0x00, 0x0E, 0x32,
+ 0x02, 0x08, 0x6E, 0x50, 0x00, 0x22, 0x08, 0x06,
+ 0x00, 0x0E, 0x32, 0x02, 0x08, 0x6F, 0x50, 0x00,
+ 0x22, 0x08, 0x06, 0x00, 0x0E, 0x32, 0x02, 0x08,
+ 0x70, 0x50, 0x00, 0x22, 0x08, 0x06, 0x00, 0x0E,
+ 0x32, 0x02, 0x08, 0x71, 0x50, 0x00, 0x22, 0x08,
+ 0x06, 0x00, 0x0D, 0x06, 0x02, 0x00, 0x0E, 0x00,
+ 0x02, 0x08, 0x6C, 0x50, 0x00, 0x22, 0x08, 0x06,
+ 0x00, 0x06, 0x1E, 0x00, 0x22, 0x2A, 0x13, 0x2D,
+ 0x96, 0x00, 0x1C, 0x22, 0x0E, 0x00, 0x0B, 0x06,
+ 0x0E, 0x32, 0x02, 0x08, 0x6B, 0x50, 0x00, 0x22,
+ 0x08, 0x06, 0x00, 0x0E, 0x32, 0x02, 0x08, 0x6C,
+ 0x50, 0x00, 0x22, 0x08, 0x06, 0x00, 0x0E, 0x32,
+ 0x02, 0x08, 0x6D, 0x50, 0x00, 0x22, 0x08, 0x06,
+ 0x00, 0x0E, 0x32, 0x02, 0x08, 0x6E, 0x50, 0x00,
+ 0x22, 0x08, 0x06, 0x00, 0x0E, 0x32, 0x02, 0x08,
+ 0x6F, 0x50, 0x00, 0x22, 0x08, 0x06, 0x00, 0x0E,
+ 0x32, 0x02, 0x08, 0x70, 0x50, 0x00, 0x22, 0x08,
+ 0x06, 0x00, 0x0E, 0x32, 0x02, 0x08, 0x71, 0x50,
+ 0x00, 0x22, 0x08, 0x06, 0x00, 0x0D, 0x06, 0x01,
+ 0x00, 0x0E, 0x00, 0x06, 0x1E, 0x00, 0x02, 0x08,
+ 0x72, 0x50, 0x00, 0x22, 0x08, 0x10, 0x00, 0x02,
+ 0x08, 0x73, 0x50, 0x00, 0x22, 0x08, 0x10, 0x00,
+ 0x07, 0x14, 0x00, 0x02, 0x08, 0x74, 0x50, 0x00,
+ 0x22, 0x08, 0x10, 0x00, 0x02, 0x08, 0x75, 0x50,
+ 0x00, 0x22, 0x08, 0x10, 0x00, 0x07, 0x78, 0x00,
+ 0x16, 0x11, 0x01, 0x08, 0x20
+};
+
+static const ByteProvider k1OutroReunionSeqDOSCDProvider = { ARRAYSIZE(k1OutroReunionSeqDOSCD), k1OutroReunionSeqDOSCD };
+
+static const char *const k1AudioTracksDOSCD[8] = {
+ "KYRA1A",
+ "KYRA1B",
+ "KYRA2A",
+ "KYRA3A",
+ "KYRA4A",
+ "KYRA4B",
+ "KYRA5A",
+ "KYRA5B"
+};
+
+static const StringListProvider k1AudioTracksDOSCDProvider = { ARRAYSIZE(k1AudioTracksDOSCD), k1AudioTracksDOSCD };
+
+static const char *const k1AudioTracks2DOSCD[1] = {
+ "kyramisc"
+};
+
+static const StringListProvider k1AudioTracks2DOSCDProvider = { ARRAYSIZE(k1AudioTracks2DOSCD), k1AudioTracks2DOSCD };
+
+static const char *const k1AudioTracksIntroDOSCD[2] = {
+ "intro",
+ "intro"
+};
+
+static const StringListProvider k1AudioTracksIntroDOSCDProvider = { ARRAYSIZE(k1AudioTracksIntroDOSCD), k1AudioTracksIntroDOSCD };
+
diff --git a/devtools/create_kyradat/resources/lok_dos_cd_english.h b/devtools/create_kyradat/resources/lok_dos_cd_english.h
new file mode 100644
index 0000000000..af695470a3
--- /dev/null
+++ b/devtools/create_kyradat/resources/lok_dos_cd_english.h
@@ -0,0 +1,428 @@
+static const char *const k1IntroStringsDOSCDEnglish[51] = {
+ "This is a text test - 1",
+ "This is a text test - 2",
+ "Greetings, Kallak...",
+ "...Powerful leader of the Royal Mystics!",
+ "Did I frighten you?",
+ "Malcolm!",
+ "I heard yesterday of your escape.",
+ "And have expected you before now.",
+ "Why would I rush?",
+ "I rule this land!",
+ "Your puny curse restrains me naught.",
+ "So, slay me now!",
+ "I have little magic left.",
+ "I mean to harm you, have no doubt...",
+ "...Now you are stone...",
+ "...Yet I leave your eyes.",
+ "I shed no tears for Kyrandia...",
+ "...But cannot deny you yours.",
+ "Malcolm the Jester has broken free!",
+ "He now controls the Kyragem...",
+ "...source of all magic in Kyrandia!",
+ "",
+ "How dare you trip ME!",
+ "But no, something special for you...",
+ "A humorous hex!",
+ "But I shall give fair warning.",
+ "Don't jump on THAT tree!",
+ "Don't climb up THAT tree little squirrel!",
+ "Boo!",
+ "Tis funnier that way...",
+ "...Is it not?",
+ "Ha ha ha...",
+ "Aren't fingers wonderful?",
+ "It's great to be alive!",
+ "Brandon!",
+ "Grandfather! We did it!",
+ "No! YOU did it!",
+ "Long live King Brandon!",
+ "Long live the Royal Mystics!",
+ "Now, let's go put Kyrandia back together!",
+ "Good idea!",
+ "As my first Royal Proclamation...",
+ "I name sandals as the official footwear of Kyrandia!",
+ "Well done, Brandon!",
+ "The Land no longer weeps...",
+ "And your friends have been restored!",
+ "Dear Brynn...",
+ "Malcolm has broken free!",
+ "Soon he will come for me.",
+ "Please help Brandon...",
+ ""
+};
+
+static const StringListProvider k1IntroStringsDOSCDEnglishProvider = { ARRAYSIZE(k1IntroStringsDOSCDEnglish), k1IntroStringsDOSCDEnglish };
+
+static const char *const k1ItemNamesDOSCDEnglish[107] = {
+ "Garnet",
+ "Amethyst",
+ "Aquamarine",
+ "Diamond",
+ "Emerald",
+ "Pearl",
+ "Ruby",
+ "Peridot",
+ "Sapphire",
+ "Opal",
+ "Topaz",
+ "Onyx",
+ "Sunstone",
+ "Moonstone",
+ "Rainbowstone",
+ "Lodestone",
+ "Rose",
+ "Tulip",
+ "Orchid",
+ "Silver Rose",
+ "Silver Statuette",
+ "Silver Coin",
+ "Gold Coin",
+ "Gold Ring",
+ "Royal Chalice",
+ "Pinecone",
+ "Acorn",
+ "Walnut",
+ "Everglowing Fireberries",
+ "Fireberries",
+ "Fireberries",
+ "Fireberries",
+ "Fireberries",
+ "Fireberries",
+ "Fish",
+ "Fish Bone",
+ "Mutton Leg",
+ "Bone",
+ "Apple",
+ "Apple Core",
+ "Blueberries",
+ "Mushroom",
+ "Note",
+ "Marble",
+ "Saw",
+ "Ankh",
+ "Feather",
+ "Egg",
+ "Leaf",
+ "Shamrock",
+ "Fallen Star",
+ "Crystal Ball",
+ "Teardrop",
+ "Mirror",
+ "Ice Shard",
+ "Flute",
+ "Hourglass",
+ "Iron Key",
+ "Jade Key",
+ "Obsidion Key",
+ "Red Potion",
+ "Red Potion",
+ "Blue Potion",
+ "Blue Potion",
+ "Yellow Potion",
+ "Yellow Potion",
+ "Green Potion",
+ "Orange Potion",
+ "Purple Potion",
+ "Potion of Rainbows",
+ "Fresh Water",
+ "Fresh Water",
+ "Salt Water",
+ "Salt Water",
+ "Mineral Water",
+ "Mineral Water",
+ "Magical Water",
+ "Magical Water",
+ "Empty Flask",
+ "Empty Flask",
+ "Scroll",
+ "Scroll",
+ "Scroll",
+ "Scroll",
+ "Scroll",
+ "Scroll",
+ "Scroll",
+ "Scroll",
+ "Scroll",
+ "Scroll",
+ "Parchment scrap",
+ "Parchment scrap",
+ "Parchment scrap",
+ "Parchment scrap",
+ "Parchment scrap",
+ "Red Magestone",
+ "Orange Magestone",
+ "Yellow Magestone",
+ "Green Magestone",
+ "Blue-Green Magestone",
+ "Blue Magestone",
+ "Purple Magestone",
+ "Heavy rock",
+ "Royal Crown",
+ "Royal Sceptre",
+ "Gold key",
+ "Unknown item"
+};
+
+static const StringListProvider k1ItemNamesDOSCDEnglishProvider = { ARRAYSIZE(k1ItemNamesDOSCDEnglish), k1ItemNamesDOSCDEnglish };
+
+static const char *const k1TakenStringsDOSCDEnglish[2] = {
+ " taken.",
+ " taken."
+};
+
+static const StringListProvider k1TakenStringsDOSCDEnglishProvider = { ARRAYSIZE(k1TakenStringsDOSCDEnglish), k1TakenStringsDOSCDEnglish };
+
+static const char *const k1PlacedStringsDOSCDEnglish[1] = {
+ " placed."
+};
+
+static const StringListProvider k1PlacedStringsDOSCDEnglishProvider = { ARRAYSIZE(k1PlacedStringsDOSCDEnglish), k1PlacedStringsDOSCDEnglish };
+
+static const char *const k1DroppedStringsDOSCDEnglish[1] = {
+ " dropped."
+};
+
+static const StringListProvider k1DroppedStringsDOSCDEnglishProvider = { ARRAYSIZE(k1DroppedStringsDOSCDEnglish), k1DroppedStringsDOSCDEnglish };
+
+static const char *const k1NoDropStringsDOSCDEnglish[2] = {
+ "You can't drop any more items in this scene.",
+ "You can't put that there."
+};
+
+static const StringListProvider k1NoDropStringsDOSCDEnglishProvider = { ARRAYSIZE(k1NoDropStringsDOSCDEnglish), k1NoDropStringsDOSCDEnglish };
+
+static const char *const k1PutDownStringDOSCDEnglish[1] = {
+ "Maybe I'd better put this down first."
+};
+
+static const StringListProvider k1PutDownStringDOSCDEnglishProvider = { ARRAYSIZE(k1PutDownStringDOSCDEnglish), k1PutDownStringDOSCDEnglish };
+
+static const char *const k1WaitAmuletStringDOSCDEnglish[1] = {
+ "I guess I'll have to wait for my Amulet to regain its power."
+};
+
+static const StringListProvider k1WaitAmuletStringDOSCDEnglishProvider = { ARRAYSIZE(k1WaitAmuletStringDOSCDEnglish), k1WaitAmuletStringDOSCDEnglish };
+
+static const char *const k1BlackJewelStringDOSCDEnglish[1] = {
+ "It's a jewel, but why is it black?"
+};
+
+static const StringListProvider k1BlackJewelStringDOSCDEnglishProvider = { ARRAYSIZE(k1BlackJewelStringDOSCDEnglish), k1BlackJewelStringDOSCDEnglish };
+
+static const char *const k1HealingTipStringDOSCDEnglish[1] = {
+ "Gee, this could come in handy if I get hurt."
+};
+
+static const StringListProvider k1HealingTipStringDOSCDEnglishProvider = { ARRAYSIZE(k1HealingTipStringDOSCDEnglish), k1HealingTipStringDOSCDEnglish };
+
+static const char *const k1PoisonGoneStringDOSCDEnglish[2] = {
+ "Amazing!",
+ "The effects of the poison are gone!"
+};
+
+static const StringListProvider k1PoisonGoneStringDOSCDEnglishProvider = { ARRAYSIZE(k1PoisonGoneStringDOSCDEnglish), k1PoisonGoneStringDOSCDEnglish };
+
+static const char *const k1ThePoisonStringsDOSCDEnglish[4] = {
+ "The poison...",
+ "I can't breathe...",
+ "I don't feel so good...",
+ "That snake must\rbe poisonous!"
+};
+
+static const StringListProvider k1ThePoisonStringsDOSCDEnglishProvider = { ARRAYSIZE(k1ThePoisonStringsDOSCDEnglish), k1ThePoisonStringsDOSCDEnglish };
+
+static const char *const k1FluteStringsDOSCDEnglish[40] = {
+ "Not very impressive sounding.",
+ "That last note sure was high!",
+ "\xBA",
+ "\xBA",
+ "",
+ "\x01",
+ "\x01\xB3",
+ "\xB3",
+ "\x06\x04\x08\x03\x06",
+ "\x08\x01\x01",
+ "\x02\x04",
+ "\x05\x02",
+ "\x08\x01\x01",
+ "\x11",
+ "5",
+ "Y",
+ "",
+ "",
+ "",
+ "",
+ "\x15",
+ "9",
+ "]",
+ "",
+ "",
+ "",
+ "",
+ "\x07",
+ ")",
+ "M",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "SHAPE_HORZ_REV",
+ "SHAPE_VERT_REV"
+};
+
+static const StringListProvider k1FluteStringsDOSCDEnglishProvider = { ARRAYSIZE(k1FluteStringsDOSCDEnglish), k1FluteStringsDOSCDEnglish };
+
+static const char *const k1WispJewelStringsDOSCDEnglish[2] = {
+ "I'm not really feeling up to it right now.",
+ "I probably should put down this first."
+};
+
+static const StringListProvider k1WispJewelStringsDOSCDEnglishProvider = { ARRAYSIZE(k1WispJewelStringsDOSCDEnglish), k1WispJewelStringsDOSCDEnglish };
+
+static const char *const k1MagicJewelStringsDOSCDEnglish[1] = {
+ "That felt strange."
+};
+
+static const StringListProvider k1MagicJewelStringsDOSCDEnglishProvider = { ARRAYSIZE(k1MagicJewelStringsDOSCDEnglish), k1MagicJewelStringsDOSCDEnglish };
+
+static const char *const k1FlaskFullStringDOSCDEnglish[1] = {
+ "This flask is already full."
+};
+
+static const StringListProvider k1FlaskFullStringDOSCDEnglishProvider = { ARRAYSIZE(k1FlaskFullStringDOSCDEnglish), k1FlaskFullStringDOSCDEnglish };
+
+static const char *const k1FullFlaskStringDOSCDEnglish[4] = {
+ "The flask is now filled\rwith fresh, sparkling water.",
+ "The flask is now filled\rwith salt water.",
+ "The flask is now filled\rwith mineral water.",
+ "Magic water."
+};
+
+static const StringListProvider k1FullFlaskStringDOSCDEnglishProvider = { ARRAYSIZE(k1FullFlaskStringDOSCDEnglish), k1FullFlaskStringDOSCDEnglish };
+
+static const char *const k1OutroHomeStringDOSCDEnglish[1] = {
+ "Home"
+};
+
+static const StringListProvider k1OutroHomeStringDOSCDEnglishProvider = { ARRAYSIZE(k1OutroHomeStringDOSCDEnglish), k1OutroHomeStringDOSCDEnglish };
+
+static const char *const k1VeryCleverStringDOSCDEnglish[1] = {
+ "Very clever! But your feeble efforts are futile."
+};
+
+static const StringListProvider k1VeryCleverStringDOSCDEnglishProvider = { ARRAYSIZE(k1VeryCleverStringDOSCDEnglish), k1VeryCleverStringDOSCDEnglish };
+
+static const char *const k1GUIStringsDOSCDEnglish[81] = {
+ "The Legend of Kyrandia",
+ "Load a game",
+ "Save this game",
+ "Game controls",
+ "Quit playing",
+ "Resume game",
+ "Game Controls",
+ "Which game would you like to reload?",
+ "Select a position to save to:",
+ "[ EMPTY SLOT ]",
+ "Cancel",
+ "Enter a description of your saved game:",
+ "Save",
+ "Rest in peace, Brandon.",
+ "Are you sure you want to quit playing?",
+ "XXX",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "XXX",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "XXXXXXX",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "XXXXXXXXX",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "XXXXXXXXXXXX",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "Main menu",
+ "on",
+ "off",
+ "Yes",
+ "No",
+ "\xCD\x0E\x17""+""\xD5\x0E\x17""+""\xDA\x0E\x17""+""\xE1\x0E\x17""+""\xE6\x0E\x17""+""\xEE\x0E\x17""+""\xF8\x0E\x17""+""\x03\x0F\x17""+""\x10\x0F\x17""+""\x18\x0F\x17""+""\x1F\x0F\x17""+$""\x0F\x17""+Walk speed ",
+ "Text speed ",
+ "Music is ",
+ "Sounds are ",
+ "Voice / Text"
+};
+
+static const StringListProvider k1GUIStringsDOSCDEnglishProvider = { ARRAYSIZE(k1GUIStringsDOSCDEnglish), k1GUIStringsDOSCDEnglish };
+
+static const char *const k1NewGameStringDOSCDEnglish[1] = {
+ "[ START A NEW GAME ]"
+};
+
+static const StringListProvider k1NewGameStringDOSCDEnglishProvider = { ARRAYSIZE(k1NewGameStringDOSCDEnglish), k1NewGameStringDOSCDEnglish };
+
+static const char *const k1ConfigStringsDOSCDEnglish[12] = {
+ "slowest",
+ "slow",
+ "normal",
+ "fast",
+ "fastest",
+ "Text only",
+ "Voice only",
+ "Voice & Text",
+ "slowest",
+ "normal",
+ "fast",
+ "clickable"
+};
+
+static const StringListProvider k1ConfigStringsDOSCDEnglishProvider = { ARRAYSIZE(k1ConfigStringsDOSCDEnglish), k1ConfigStringsDOSCDEnglish };
+
diff --git a/devtools/create_kyradat/resources/lok_dos_cd_french.h b/devtools/create_kyradat/resources/lok_dos_cd_french.h
new file mode 100644
index 0000000000..cf45a2fb28
--- /dev/null
+++ b/devtools/create_kyradat/resources/lok_dos_cd_french.h
@@ -0,0 +1,349 @@
+static const char *const k1IntroStringsDOSCDFrench[51] = {
+ "This is a text test - 1",
+ "This is a text test - 2",
+ "Salut Kallak...",
+ "...Puissant Chef de l'Ordre des Mystiques Royaux!",
+ "Je t'ai fait peur?",
+ "Malcolm!",
+ "On m'a dit hier que tu t'""\x82""tais ""\x82""vad""\x82"".",
+ "Je t'attendais depuis longtemps.",
+ "Pourquoi me serais-je press""\x82""?",
+ "C'est moi qui gouverne ce pays!",
+ "Ton faible sort n'a pas d'effet sur moi.",
+ "Tue-moi maintenant!",
+ "Il ne me reste pas beaucoup de pouvoirs magiques.",
+ "Je veux te faire du mal, sois-en s""\x96""r...",
+ "...Maintenant, tu es transform""\x82"" en pierre...",
+ "...mais je te laisse tes yeux.",
+ "Je ne verse aucune larme pour Kyrandia...",
+ "...mais je ne peux pas te refuser les tiennes.",
+ "Malcolm le Bouffon est libre!",
+ "Il contr""\x93""le la Kyragemme maintenant...",
+ "...source de tous les pouvoirs magiques de Kyrandia!",
+ "",
+ "Comment oses-tu ME faire tr""\x82""bucher!",
+ "Mais non, quelque chose de sp""\x82""cial pour toi...",
+ "Un sort humoristique!",
+ "Mais je pr""\x82""viendrai.",
+ "Ne saute pas sur CET arbre!",
+ "Ne grimpe pas sur CET arbre, petit ""\x82""cureuil!",
+ "Hou!",
+ "C'est plus marrant comme ""\x87""a...",
+ "...n'est-ce pas?",
+ "Ha ha ha...",
+ "Les doigts ne sont-ils pas une chose merveilleuse?",
+ "C'est super d'""\x88""tre en vie!",
+ "Brandon!",
+ "Grand-P""\x8A""re! On y est arriv""\x82""!",
+ "Non! TU y es arriv""\x82""!",
+ "Longue vie au Roi Brandon!",
+ "Longue vie ""\x85"" l'Ordre des Mystiques Royaux!",
+ "Retournons mettre de l'ordre dans Kyrandia!",
+ "Bonne id""\x82""e!",
+ "En tant que Roi...",
+ "je d""\x82""clare que les sandales sont d""\x82""sormais les souliers officiels ""\x85"" Kyrandia!",
+ "Bien jou""\x82"", Brandon!",
+ "La Terre ne pleure plus...",
+ "Et tu as retrouv""\x82"" tes amis!",
+ "Ma Ch""\x8A""re Brynn...",
+ "Malcolm s'est ""\x82""vad""\x82""!",
+ "Il viendra me chercher bient""\x93""t.",
+ "S'il te pla""\x8C""t Brandon, aide-moi...",
+ ""
+};
+
+static const StringListProvider k1IntroStringsDOSCDFrenchProvider = { ARRAYSIZE(k1IntroStringsDOSCDFrench), k1IntroStringsDOSCDFrench };
+
+static const char *const k1ItemNamesDOSCDFrench[108] = {
+ "Grenat",
+ "Am""\x82""thyste",
+ "Aigue-marine",
+ "Diamant",
+ "Emeraude",
+ "Perle",
+ "Rubis",
+ "Olivine",
+ "Saphir",
+ "Opale",
+ "Topaze",
+ "Onyx",
+ "Aventurine",
+ "Pierre de Lune",
+ "Pierre d'Iris",
+ "Magn""\x82""tite",
+ "Rose",
+ "Tulipe",
+ "Orchid""\x82""e",
+ "Rose d'argent",
+ "Statuette d'argent",
+ "Pi""\x8A""ce d'argent",
+ "Pi""\x8A""ce d'or",
+ "Bague en or",
+ "Calice royal",
+ "Pomme de pin",
+ "Gland",
+ "Noix",
+ "Baie de feu luisantes",
+ "Baie de feu",
+ "Baie de feu",
+ "Baie de feu",
+ "Baie de feu",
+ "Baie de feu",
+ "Poisson",
+ "Ar""\x88""te",
+ "Gigot de mouton",
+ "Os",
+ "Pomme",
+ "Trognon de pomme",
+ "Myrtille",
+ "Champignon",
+ "Note",
+ "Bille",
+ "Scie",
+ "Croix ans""\x82""e",
+ "Plume",
+ "Oeuf",
+ "Feuille",
+ "Tr""\x8A""fle",
+ "Etoile bris""\x82""e",
+ "Boule de cristal",
+ "Larme",
+ "Miroir",
+ "Tesson de glace",
+ "Fl""\x96""te",
+ "Sablier",
+ "Cl""\x82"" m""\x82""tallique",
+ "Cl""\x82"" de jade",
+ "Cl""\x82"" obsidion",
+ "Potion rouge",
+ "Potion rouge",
+ "Potion bleue",
+ "Potion bleue",
+ "Potion jaune",
+ "Potion jaune",
+ "Potion verte",
+ "Potion orange",
+ "Potion violette",
+ "Potion d'arcs-en-ciel",
+ "Eau fraiche",
+ "Eau fraiche",
+ "Eau sal""\x82""e",
+ "Eau sal""\x82""e",
+ "Eau min""\x82""rale",
+ "Eau min""\x82""rale",
+ "Eau magique",
+ "Eau magique",
+ "Gourde vide",
+ "Gourde vide",
+ "Parchemin",
+ "Parchemin",
+ "Parchemin",
+ "Parchemin",
+ "Parchemin",
+ "Parchemin",
+ "Parchemin",
+ "Parchemin",
+ "Parchemin",
+ "Parchemin",
+ "Morceau de parchemin",
+ "Morceau de parchemin",
+ "Morceau de parchemin",
+ "Morceau de parchemin",
+ "Morceau de parchemin",
+ "Pierre magique rouge",
+ "Pierre magique orange",
+ "Pierre magique jaune",
+ "Pierre magique verte",
+ "Pierre magique turquoise",
+ "Pierre magique bleue",
+ "Pierre magique violette",
+ "Rocher lourd",
+ "Couronne royale",
+ "Sceptre royal",
+ "Cl""\x82"" en or",
+ "Objet inconnu",
+ ""
+};
+
+static const StringListProvider k1ItemNamesDOSCDFrenchProvider = { ARRAYSIZE(k1ItemNamesDOSCDFrench), k1ItemNamesDOSCDFrench };
+
+static const char *const k1TakenStringsDOSCDFrench[4] = {
+ " prise.",
+ " pris.",
+ " prise.",
+ " pris."
+};
+
+static const StringListProvider k1TakenStringsDOSCDFrenchProvider = { ARRAYSIZE(k1TakenStringsDOSCDFrench), k1TakenStringsDOSCDFrench };
+
+static const char *const k1PlacedStringsDOSCDFrench[2] = {
+ " plac""\x82""e.",
+ " plac""\x82""."
+};
+
+static const StringListProvider k1PlacedStringsDOSCDFrenchProvider = { ARRAYSIZE(k1PlacedStringsDOSCDFrench), k1PlacedStringsDOSCDFrench };
+
+static const char *const k1DroppedStringsDOSCDFrench[2] = {
+ " l""\x83""ch""\x82""e.",
+ " l""\x83""ch""\x82""."
+};
+
+static const StringListProvider k1DroppedStringsDOSCDFrenchProvider = { ARRAYSIZE(k1DroppedStringsDOSCDFrench), k1DroppedStringsDOSCDFrench };
+
+static const char *const k1NoDropStringsDOSCDFrench[2] = {
+ "Vous ne pouvez pas l""\x83""cher autre chose ici.",
+ "Vous ne pouvez pas mettre ""\x87""a l""\x85""."
+};
+
+static const StringListProvider k1NoDropStringsDOSCDFrenchProvider = { ARRAYSIZE(k1NoDropStringsDOSCDFrench), k1NoDropStringsDOSCDFrench };
+
+static const char *const k1PutDownStringDOSCDFrench[1] = {
+ "Il faudrait peut-""\x88""tre que je pose ""\x87""a d'abord."
+};
+
+static const StringListProvider k1PutDownStringDOSCDFrenchProvider = { ARRAYSIZE(k1PutDownStringDOSCDFrench), k1PutDownStringDOSCDFrench };
+
+static const char *const k1WaitAmuletStringDOSCDFrench[1] = {
+ "Je suppose qu'il me faut attendre que mon amulette retrouve son pouvoir."
+};
+
+static const StringListProvider k1WaitAmuletStringDOSCDFrenchProvider = { ARRAYSIZE(k1WaitAmuletStringDOSCDFrench), k1WaitAmuletStringDOSCDFrench };
+
+static const char *const k1BlackJewelStringDOSCDFrench[1] = {
+ "C'est un bijou, mais pourquoi est-il noir?"
+};
+
+static const StringListProvider k1BlackJewelStringDOSCDFrenchProvider = { ARRAYSIZE(k1BlackJewelStringDOSCDFrench), k1BlackJewelStringDOSCDFrench };
+
+static const char *const k1HealingTipStringDOSCDFrench[1] = {
+ "Hue, ""\x87""a pourrait bien m'""\x88""tre utile si je suis bless""\x82""."
+};
+
+static const StringListProvider k1HealingTipStringDOSCDFrenchProvider = { ARRAYSIZE(k1HealingTipStringDOSCDFrench), k1HealingTipStringDOSCDFrench };
+
+static const char *const k1PoisonGoneStringDOSCDFrench[2] = {
+ "G""\x82""nial!",
+ "Les effets du poison ont disparu!"
+};
+
+static const StringListProvider k1PoisonGoneStringDOSCDFrenchProvider = { ARRAYSIZE(k1PoisonGoneStringDOSCDFrench), k1PoisonGoneStringDOSCDFrench };
+
+static const char *const k1ThePoisonStringsDOSCDFrench[4] = {
+ "Le poison...",
+ "Je ne peux plus respirer...",
+ "Je ne me sens pas tr""\x8A""s bien...",
+ "Ce serpent doit ""\x88""tre \rvenimeux!"
+};
+
+static const StringListProvider k1ThePoisonStringsDOSCDFrenchProvider = { ARRAYSIZE(k1ThePoisonStringsDOSCDFrench), k1ThePoisonStringsDOSCDFrench };
+
+static const char *const k1FluteStringsDOSCDFrench[2] = {
+ "\x80""a ne sonne pas tr""\x8A""s bien.",
+ "Cette derni""\x8A""re note ""\x82""tait vraiment aigue!"
+};
+
+static const StringListProvider k1FluteStringsDOSCDFrenchProvider = { ARRAYSIZE(k1FluteStringsDOSCDFrench), k1FluteStringsDOSCDFrench };
+
+static const char *const k1WispJewelStringsDOSCDFrench[2] = {
+ "Je ne m'en sens pas vraiment capable maintenant.",
+ "Je devrait poser mon, ma, mes "
+};
+
+static const StringListProvider k1WispJewelStringsDOSCDFrenchProvider = { ARRAYSIZE(k1WispJewelStringsDOSCDFrench), k1WispJewelStringsDOSCDFrench };
+
+static const char *const k1MagicJewelStringsDOSCDFrench[1] = {
+ "C'""\x82""tait bizarre."
+};
+
+static const StringListProvider k1MagicJewelStringsDOSCDFrenchProvider = { ARRAYSIZE(k1MagicJewelStringsDOSCDFrench), k1MagicJewelStringsDOSCDFrench };
+
+static const char *const k1FlaskFullStringDOSCDFrench[1] = {
+ "Cette gourde est d""\x82""j""\x85"" pleine."
+};
+
+static const StringListProvider k1FlaskFullStringDOSCDFrenchProvider = { ARRAYSIZE(k1FlaskFullStringDOSCDFrench), k1FlaskFullStringDOSCDFrench };
+
+static const char *const k1FullFlaskStringDOSCDFrench[4] = {
+ "La gourde est remplie \rd'eau gazeuse fra""\x8C""che.",
+ "La gourde est remplie \rd'eau sal""\x82""e.",
+ "La gourde est remplie \rd'eau min""\x82""rale.",
+ "Eau magique."
+};
+
+static const StringListProvider k1FullFlaskStringDOSCDFrenchProvider = { ARRAYSIZE(k1FullFlaskStringDOSCDFrench), k1FullFlaskStringDOSCDFrench };
+
+static const char *const k1OutroHomeStringDOSCDFrench[1] = {
+ "Maison"
+};
+
+static const StringListProvider k1OutroHomeStringDOSCDFrenchProvider = { ARRAYSIZE(k1OutroHomeStringDOSCDFrench), k1OutroHomeStringDOSCDFrench };
+
+static const char *const k1VeryCleverStringDOSCDFrench[1] = {
+ "Malin! Mais vos efforts restent vains."
+};
+
+static const StringListProvider k1VeryCleverStringDOSCDFrenchProvider = { ARRAYSIZE(k1VeryCleverStringDOSCDFrench), k1VeryCleverStringDOSCDFrench };
+
+static const char *const k1GUIStringsDOSCDFrench[35] = {
+ "The Legend of Kyrandia",
+ "Charger un jeu",
+ "Sauvegarder ce jeu",
+ "Contr""\x93""les du jeu",
+ "Quitter le jeu",
+ "Reprendre le jeu",
+ "Contr""\x93""les du jeu",
+ "Quel jeu voulez-vous re-charger?",
+ "S""\x82""lectionnez une position o""\x97"" sauvegarder:",
+ "[ EMPLACEMENT VIDE ]",
+ "Annuler",
+ "Entrez description de votre jeu sauvegard""\x82"".",
+ "Sauvegarder",
+ "Repose en paix, Brandon.",
+ "Vous voulez vraiment quitter le jeu?",
+ "XXXXXXXXXXXXXXXXX",
+ "XXXXXXXXXXXXXXXXX",
+ "XXXXXXXXXXXXXXXXX",
+ "XXXXXXXXXXXXXXXXX",
+ "XXXXXXXXXXXX",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "Menu principal",
+ "activ""\x82",
+ "d""\x82""sactiv""\x82",
+ "Oui",
+ "Non",
+ "?""\x0F"")+I""\x0F"")+N""\x0F"")+U""\x0F"")+\\""\x0F"")+h""\x0F"")+y""\x0F"")+""\x89\x0F"")+""\x97\x0F"")+""\xA1\x0F"")+""\xA8\x0F"")+""\xAF\x0F"")+Vitesse de d""\x82""placement",
+ "Vitesse du texte",
+ "La musique est ",
+ "Les sons sont ",
+ "Voix/Texte"
+};
+
+static const StringListProvider k1GUIStringsDOSCDFrenchProvider = { ARRAYSIZE(k1GUIStringsDOSCDFrench), k1GUIStringsDOSCDFrench };
+
+static const char *const k1NewGameStringDOSCDFrench[1] = {
+ "[ COMMENCER UN NOUVEAU JEU ]"
+};
+
+static const StringListProvider k1NewGameStringDOSCDFrenchProvider = { ARRAYSIZE(k1NewGameStringDOSCDFrench), k1NewGameStringDOSCDFrench };
+
+static const char *const k1ConfigStringsDOSCDFrench[12] = {
+ "plus lent",
+ "lent",
+ "normal",
+ "rapide",
+ "plus rapide",
+ "Texte uniquement",
+ "Voix uniquement",
+ "Voix et Texte",
+ "plus lent",
+ "normal",
+ "rapide",
+ "cliquable"
+};
+
+static const StringListProvider k1ConfigStringsDOSCDFrenchProvider = { ARRAYSIZE(k1ConfigStringsDOSCDFrench), k1ConfigStringsDOSCDFrench };
+
diff --git a/devtools/create_kyradat/resources/lok_dos_cd_german.h b/devtools/create_kyradat/resources/lok_dos_cd_german.h
new file mode 100644
index 0000000000..a462362e81
--- /dev/null
+++ b/devtools/create_kyradat/resources/lok_dos_cd_german.h
@@ -0,0 +1,370 @@
+static const char *const k1IntroStringsDOSCDGerman[52] = {
+ "This is a text test - 1",
+ "This is a text test - 2",
+ "Sei gegr""\x81\xE1""t, Kallak...",
+ "...M""\x84""chtiger Anf""\x81""hrer der k""\x94""niglichen Mystiker!",
+ "Habe ich dich erschreckt?",
+ "Malcolm!",
+ "Ich habe gestern von deiner Flucht geh""\x94""rt.",
+ "Ich habe dich fr""\x81""her erwartet.",
+ "Warum sollte ich mich beeilen?",
+ "Ich herrsche ""\x81""ber dieses Land!",
+ "Dein mickriger Fluch h""\x84""lt mich nicht zur""\x81""ck.",
+ "So, erschlag mich doch!",
+ "Ich habe nur noch wenig Magie ""\x81""brig.",
+ "Ich werde dir zu Leibe r""\x81""cken, zweifle blo""\xE1"" nicht daran...",
+ "...du bist jetzt aus Stein...",
+ "...Ich lasse dir allein deine Augen.",
+ "F""\x81""r Kyrandia vergie""\xE1""e ich nicht eine Tr""\x84""ne...",
+ "...aber deine will ich dir nicht nehmen.",
+ "Malcolm der Hofnarr ist ausgebrochen!",
+ "Er beherrscht nun den Kyragem...",
+ "...die Quelle aller Magie in Kyrandia!",
+ "",
+ "Wie kannst du es wagen, MICH umzuwerfen!",
+ "Nicht doch, etwas Besonderes f""\x81""r dich...",
+ "Was f""\x81""r ein l""\x84""cherlicher Fluch!",
+ "Ich warne dich vorher.",
+ "Springe nicht auf DIESEN Baum!",
+ "Klettre nicht auf diesen Baum, kleines Eichh""\x94""rnchen!",
+ "Buuh!",
+ "So ist es viel lustiger...",
+ "...nicht wahr?",
+ "Ha ha ha...",
+ "Sind Finger nicht 'was Tolles?",
+ "Es ist gro""\xE1""artig, am Leben zu sein!",
+ "Brandon!",
+ "Gro""\xE1""vater! Wir haben es geschafft!",
+ "Nein! DU hast es geschafft!",
+ "Lang lebe K""\x94""nig Brandon!",
+ "Lang leben die k""\x94""niglichen Mystiker!",
+ "Bauen wir Kyrandia wieder auf!",
+ "Eine gute Idee!",
+ "Als meine erste k""\x94""nigliche Proklamation,...",
+ "...erkl""\x84""re ich Sandalen zur offiziellen Fu""\xE1""bekleidung Kyrandias!",
+ "Sehr weise, Brandon!",
+ "Das Land ist nicht l""\x84""nger in Trauer!",
+ "Und deine Freunde sind gerettet.",
+ "Liebe Brynn...",
+ "Malcolm ist ausgebrochen!",
+ "Er wird bald zu mir kommen.",
+ "Bitte hilf Brandon...",
+ "",
+ ""
+};
+
+static const StringListProvider k1IntroStringsDOSCDGermanProvider = { ARRAYSIZE(k1IntroStringsDOSCDGerman), k1IntroStringsDOSCDGerman };
+
+static const char *const k1ItemNamesDOSCDGerman[108] = {
+ "Granat",
+ "Amethyst",
+ "Aquamarin",
+ "Diamant",
+ "Smaragd",
+ "Perle",
+ "Rubin",
+ "Peridot",
+ "Saphir",
+ "Opal",
+ "Topas",
+ "Onyx",
+ "Sonnenstein",
+ "Mondstein",
+ "Regenbogenstein",
+ "Magnetstein",
+ "Rose",
+ "Tulpe",
+ "Orchidee",
+ "Silberne Rose",
+ "Silberne Statuette",
+ "Silberm""\x81""nze",
+ "Goldm""\x81""nze",
+ "Goldring",
+ "Der Kelch des K""\x94""nigs",
+ "Kienapfel",
+ "Eichel",
+ "Walnu""\xE1",
+ "Immerleuchtende Feuerbeeren",
+ "Feuerbeeren",
+ "Feuerbeeren",
+ "Feuerbeeren",
+ "Feuerbeeren",
+ "Feuerbeeren",
+ "Fisch",
+ "Fischgr""\x84""te",
+ "Hammelkeule",
+ "Knochen",
+ "Apfel",
+ "Apfelgriebsch",
+ "Heidelbeeren",
+ "Pilz",
+ "Notiz",
+ "Murmel",
+ "S""\x84""ge",
+ "Henkelkreuz",
+ "Feder",
+ "Ei",
+ "Blatt",
+ "Kleeblatt",
+ "Sternschnuppe",
+ "Kristallkugel",
+ "Tr""\x84""ne",
+ "Spiegel",
+ "Eisst""\x81""ck",
+ "Fl""\x94""te",
+ "Sanduhr",
+ "Eisenschl""\x81""ssel",
+ "Jadeschl""\x81""ssel",
+ "Obsidianschl""\x81""ssel",
+ "Roter Trank",
+ "Roter Trank",
+ "Blauer Trank",
+ "Blauer Trank",
+ "Gelber Trank",
+ "Gelber Trank",
+ "Gr""\x81""ner Trank",
+ "Oranger Trank",
+ "Violetter Trank",
+ "Regenbogentrank",
+ "S""\x81\xE1""wasser",
+ "S""\x81\xE1""wasser",
+ "Salzwasser",
+ "Salzwasser",
+ "Mineralwasser",
+ "Mineralwasser",
+ "Magisches Wasser",
+ "Magisches Wasser",
+ "Leere Flasche",
+ "Leere Flasche",
+ "Schriftrolle",
+ "Schriftrolle",
+ "Schriftrolle",
+ "Schriftrolle",
+ "Schriftrolle",
+ "Schriftrolle",
+ "Schriftrolle",
+ "Schriftrolle",
+ "Schriftrolle",
+ "Schriftrolle",
+ "Pergamentfetzen",
+ "Pergamentfetzen",
+ "Pergamentfetzen",
+ "Pergamentfetzen",
+ "Pergamentfetzen",
+ "Roter Weisenstein",
+ "Oranger Weisenstein",
+ "Gelber Weisenstein",
+ "Gr""\x81""ner Weisenstein",
+ "T""\x81""rkiser Weisenstein",
+ "Blauer Weisenstein",
+ "Violetter Weisenstein",
+ "Schwerer Stein",
+ "K""\x94""nigliche Krone",
+ "K""\x94""nigliches Zepter",
+ "Goldschl""\x81""ssel",
+ "Unbekannter Gegenstand",
+ ""
+};
+
+static const StringListProvider k1ItemNamesDOSCDGermanProvider = { ARRAYSIZE(k1ItemNamesDOSCDGerman), k1ItemNamesDOSCDGerman };
+
+static const char *const k1TakenStringsDOSCDGerman[2] = {
+ " aufgenommen.",
+ " aufgenommen."
+};
+
+static const StringListProvider k1TakenStringsDOSCDGermanProvider = { ARRAYSIZE(k1TakenStringsDOSCDGerman), k1TakenStringsDOSCDGerman };
+
+static const char *const k1PlacedStringsDOSCDGerman[1] = {
+ " abgelegt."
+};
+
+static const StringListProvider k1PlacedStringsDOSCDGermanProvider = { ARRAYSIZE(k1PlacedStringsDOSCDGerman), k1PlacedStringsDOSCDGerman };
+
+static const char *const k1DroppedStringsDOSCDGerman[1] = {
+ " fallengelassen."
+};
+
+static const StringListProvider k1DroppedStringsDOSCDGermanProvider = { ARRAYSIZE(k1DroppedStringsDOSCDGerman), k1DroppedStringsDOSCDGerman };
+
+static const char *const k1NoDropStringsDOSCDGerman[2] = {
+ "Hier kann nichts mehr abgelegt werden.",
+ "Das kann hier nicht abgelegt werden."
+};
+
+static const StringListProvider k1NoDropStringsDOSCDGermanProvider = { ARRAYSIZE(k1NoDropStringsDOSCDGerman), k1NoDropStringsDOSCDGerman };
+
+static const char *const k1PutDownStringDOSCDGerman[1] = {
+ "Vielleicht sollte ich es erst hinlegen."
+};
+
+static const StringListProvider k1PutDownStringDOSCDGermanProvider = { ARRAYSIZE(k1PutDownStringDOSCDGerman), k1PutDownStringDOSCDGerman };
+
+static const char *const k1WaitAmuletStringDOSCDGerman[1] = {
+ "I nehme an, ich mu""\xE1"" warten, bis mein Amulett seine Kraft wiedererlangt."
+};
+
+static const StringListProvider k1WaitAmuletStringDOSCDGermanProvider = { ARRAYSIZE(k1WaitAmuletStringDOSCDGerman), k1WaitAmuletStringDOSCDGerman };
+
+static const char *const k1BlackJewelStringDOSCDGerman[1] = {
+ "Es ist ein Edelstein, aber warum ist er schwarz?"
+};
+
+static const StringListProvider k1BlackJewelStringDOSCDGermanProvider = { ARRAYSIZE(k1BlackJewelStringDOSCDGerman), k1BlackJewelStringDOSCDGerman };
+
+static const char *const k1HealingTipStringDOSCDGerman[1] = {
+ "Mann, das kann ganz n""\x81""tzlich sein, falls ich mich verletze!"
+};
+
+static const StringListProvider k1HealingTipStringDOSCDGermanProvider = { ARRAYSIZE(k1HealingTipStringDOSCDGerman), k1HealingTipStringDOSCDGerman };
+
+static const char *const k1PoisonGoneStringDOSCDGerman[2] = {
+ "Erstaunlich!",
+ "Die Wirkung des Giftes hat nachgelassen!"
+};
+
+static const StringListProvider k1PoisonGoneStringDOSCDGermanProvider = { ARRAYSIZE(k1PoisonGoneStringDOSCDGerman), k1PoisonGoneStringDOSCDGerman };
+
+static const char *const k1ThePoisonStringsDOSCDGerman[4] = {
+ "Das Gift...",
+ "Ich kann nicht atmen...",
+ "Ich f""\x81""hle mich nicht besonders wohl...",
+ "Die Schlange mu""\xE1"" \rgiftig gewesen sein!"
+};
+
+static const StringListProvider k1ThePoisonStringsDOSCDGermanProvider = { ARRAYSIZE(k1ThePoisonStringsDOSCDGerman), k1ThePoisonStringsDOSCDGerman };
+
+static const char *const k1FluteStringsDOSCDGerman[2] = {
+ "Klingt nicht besonders beeindruckend.",
+ "Die letzte Note war hoch!"
+};
+
+static const StringListProvider k1FluteStringsDOSCDGermanProvider = { ARRAYSIZE(k1FluteStringsDOSCDGerman), k1FluteStringsDOSCDGerman };
+
+static const char *const k1WispJewelStringsDOSCDGerman[2] = {
+ "Im Moment f""\x81""hle ich mich dazu nicht in der Lage.",
+ "Ich mu""\xE1"" wahrscheinlich erst mein(e)..."
+};
+
+static const StringListProvider k1WispJewelStringsDOSCDGermanProvider = { ARRAYSIZE(k1WispJewelStringsDOSCDGerman), k1WispJewelStringsDOSCDGerman };
+
+static const char *const k1MagicJewelStringsDOSCDGerman[1] = {
+ "Das war eigenartig."
+};
+
+static const StringListProvider k1MagicJewelStringsDOSCDGermanProvider = { ARRAYSIZE(k1MagicJewelStringsDOSCDGerman), k1MagicJewelStringsDOSCDGerman };
+
+static const char *const k1FlaskFullStringDOSCDGerman[1] = {
+ "Die Flasche ist bereits voll."
+};
+
+static const StringListProvider k1FlaskFullStringDOSCDGermanProvider = { ARRAYSIZE(k1FlaskFullStringDOSCDGerman), k1FlaskFullStringDOSCDGerman };
+
+static const char *const k1FullFlaskStringDOSCDGerman[4] = {
+ "Die Flasche ist jetzt mit \rfrischem, klarem Wasser gef""\x81""llt.",
+ "Die Flasche ist jetzt mit \rSalzwasser gef""\x81""llt.",
+ "Die Flasche ist jetzt mit \rMineralwasser gef""\x81""llt.",
+ "Magisches Wasser."
+};
+
+static const StringListProvider k1FullFlaskStringDOSCDGermanProvider = { ARRAYSIZE(k1FullFlaskStringDOSCDGerman), k1FullFlaskStringDOSCDGerman };
+
+static const char *const k1OutroHomeStringDOSCDGerman[1] = {
+ "Ab nach Hause"
+};
+
+static const StringListProvider k1OutroHomeStringDOSCDGermanProvider = { ARRAYSIZE(k1OutroHomeStringDOSCDGerman), k1OutroHomeStringDOSCDGerman };
+
+static const char *const k1VeryCleverStringDOSCDGerman[1] = {
+ "Sehr clever! Aber nichtige Versuche sind zum Scheitern verurteilt."
+};
+
+static const StringListProvider k1VeryCleverStringDOSCDGermanProvider = { ARRAYSIZE(k1VeryCleverStringDOSCDGerman), k1VeryCleverStringDOSCDGerman };
+
+static const char *const k1GUIStringsDOSCDGerman[59] = {
+ "Die Legende von Kyrandia",
+ "Ein Spiel laden",
+ "Dieses Spiel sichern",
+ "Spielsteuerungen",
+ "Spiel beenden",
+ "Spiel wieder aufnehmen",
+ "Spielsteuerungen",
+ "Welches Spiel soll noch einmal geladen werden?",
+ "W""\x84""hlen Sie den Platz zum Sichern aus.",
+ "[ LEERER PLATZ ]",
+ "Abbrechen",
+ "Beschreibung des gesicherten Spiels eingeben.",
+ "Sichern",
+ "Ruhe in Frieden, Brandon.",
+ "Soll das Spiel wirklich beendet werden?",
+ "XXXXX",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "XXXXX",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "XXXXXXXXXXXXXXXXX",
+ "XXXXXXXXXXXXXXXXX",
+ "XXXXXXXXXXXX",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "Hauptmen""\x81",
+ "An",
+ "Aus",
+ "Ja",
+ "Nein",
+ "c""\x0F\x17""+r""\x0F\x17""+z""\x0F\x17""+""\x81\x0F\x17""+""\x89\x0F\x17""+""\x98\x0F\x17""+""\xA1\x0F\x17""+""\xAD\x0F\x17""+""\xBC\x0F\x17""+""\xCB\x0F\x17""+""\xD2\x0F\x17""+""\xDA\x0F\x17""+Schrittempo",
+ "Textgeschwindigkeit",
+ "Die Musik ist",
+ "Die Soundeffekte sind",
+ "Stimmen/Text"
+};
+
+static const StringListProvider k1GUIStringsDOSCDGermanProvider = { ARRAYSIZE(k1GUIStringsDOSCDGerman), k1GUIStringsDOSCDGerman };
+
+static const char *const k1NewGameStringDOSCDGerman[1] = {
+ "[ EIN NEUES SPIEL ANFANGEN ]"
+};
+
+static const StringListProvider k1NewGameStringDOSCDGermanProvider = { ARRAYSIZE(k1NewGameStringDOSCDGerman), k1NewGameStringDOSCDGerman };
+
+static const char *const k1ConfigStringsDOSCDGerman[12] = {
+ "am langsamsten",
+ "langsam",
+ "normal",
+ "schnell",
+ "am schnellsten",
+ "Nur Text",
+ "Nur Stimmen",
+ "Stimmen & Text",
+ "am langsamsten",
+ "normal",
+ "schnell",
+ "anklickbar"
+};
+
+static const StringListProvider k1ConfigStringsDOSCDGermanProvider = { ARRAYSIZE(k1ConfigStringsDOSCDGerman), k1ConfigStringsDOSCDGerman };
+
diff --git a/devtools/create_kyradat/resources/lok_dos_cd_italian.h b/devtools/create_kyradat/resources/lok_dos_cd_italian.h
new file mode 100644
index 0000000000..0fa8ee66e3
--- /dev/null
+++ b/devtools/create_kyradat/resources/lok_dos_cd_italian.h
@@ -0,0 +1,346 @@
+static const char *const k1IntroStringsDOSCDItalian[51] = {
+ "This is a text test - 1",
+ "This is a text test - 2",
+ "Salute, Kallak.",
+ "...Potente guida dei Mistici Reali! ",
+ "Ti ho spaventato? ",
+ "Malcolm!",
+ "Ho saputo ieri della tua fuga. ",
+ "E ti stavo aspettando. ",
+ "Dovrei forse aver fretta? ",
+ "Io governo queste terre, ora! ",
+ "La vostra magia mi fa il solletico. ",
+ "Allora uccidimi! ",
+ "Ma sappi che ho ancora qualche asso nella manica.",
+ "Avevo intenzione di fartela pagare... ",
+ "...Ora ti ho trasformato in pietra ",
+ "...tutto tranne i tuoi occhi ",
+ "Non verso lacrime per Kyrandia... ",
+ "...per""\x95"" non posso negarti le tue. ",
+ "Malcolm il Buffone ""\x8A"" libero! ",
+ "Ora controlla la Kyragemma... ",
+ "..\nfonte di tutta la magia di Kyrandia! ",
+ "",
+ "Come hai osato farmi lo sgambetto! ",
+ "Anzi, ho qualcosa di speciale per te... ",
+ "Un bel trucchetto! ",
+ "Ma ti avverto... ",
+ "Non saltare sull'albero! ",
+ "Non saltare su QUESTO albero, piccoletto! ",
+ "Boo!",
+ "Cos""\x8D"" ""\x8A"" pi""\x97"" divertente! ",
+ "...non credete? ",
+ "Ha ha HA...",
+ "Le mie dita! Riesco a muoverle! ",
+ "E' bello essere VIVI! ",
+ "Brandon!",
+ "NONNO!!! Ce l'abbiamo fatta!",
+ "NO! Ce l'HAI fatta! ",
+ "Lunga vita al R""\x8A"" Brandon! ",
+ "Lunga vita ai Mistici Reali! ",
+ "Ed ora, Ricostruiamo Kyrandia insieme! ",
+ "Ben detto! ",
+ "Come prima cosa...",
+ "...proclamo i Sandali, calzatura ufficiale di Kyrandia!!! ",
+ "Ben fatto, Brandon!",
+ "La terra non piange pi""\x97""...",
+ "Ci hai salvato tutti! ",
+ "Cara Brynn... ",
+ "Malcolm ""\x8A"" fuggito! ",
+ "Presto verr""\x85"" a prendermi. ",
+ "Ti prego, aiuta Brandon... ",
+ ""
+};
+
+static const StringListProvider k1IntroStringsDOSCDItalianProvider = { ARRAYSIZE(k1IntroStringsDOSCDItalian), k1IntroStringsDOSCDItalian };
+
+static const char *const k1ItemNamesDOSCDItalian[107] = {
+ "Biglia",
+ "Ametista",
+ "Acquamarina",
+ "Diamante",
+ "Smeraldo",
+ "Perla",
+ "Rubino",
+ "Olivina",
+ "Zaffiro",
+ "Opale",
+ "Topazio",
+ "Onice",
+ "Pietra di Sole",
+ "Pietra di Luna",
+ "Pietra di Arcobaleno",
+ "Magnetite",
+ "Rosa",
+ "Tulipano",
+ "Orchidea",
+ "Rosa d'Argento",
+ "Statuetta d'Argento",
+ "Moneta d'Argento",
+ "Moneta d'Oro",
+ "Anello d'Oro",
+ "Calice Reale",
+ "Pigna",
+ "Ghianda",
+ "Noce",
+ "BaccheInfuocate perenni",
+ "Baccheinfuocate",
+ "Baccheinfuocate",
+ "Baccheinfuocate",
+ "Baccheinfuocate",
+ "Baccheinfuocate",
+ "Pesce",
+ "Lisca di Pesce",
+ "Zampa di Montone",
+ "Osso",
+ "Mela",
+ "Torsolo di Mela",
+ "Mirtilli",
+ "Fungo",
+ "Messaggio",
+ "Marmo",
+ "Sega",
+ "Croce Ansata Egiziana",
+ "Piuma",
+ "Uovo",
+ "Foglia",
+ "Trifoglio",
+ "Stella Cadente",
+ "Sfera di Cristallo",
+ "Lacrima",
+ "Specchio",
+ "Ghiacciolo",
+ "Flauto",
+ "Clessidra",
+ "Chiave di Ferro",
+ "Chiave di Giada",
+ "Chiave id Ossidiana",
+ "Pozione Rossa",
+ "Pozione Rossa",
+ "Pozione Blu",
+ "Pozione Blu",
+ "Pozione Gialla",
+ "Pozione Gialla",
+ "Pozione Verde",
+ "Pozione Arancione",
+ "Pozione Viola",
+ "Pozione Arcobaleno",
+ "Acqua Fresca",
+ "Acqua Fresca",
+ "Acqua Salata",
+ "Acqua Salata",
+ "Acqua Minerale",
+ "Acqua Minerale",
+ "Acqua Magica",
+ "Acqua Magica",
+ "Bottiglietta vuota",
+ "Bottiglietta Vuota",
+ "Pergamena",
+ "Pergamena",
+ "Pergamena",
+ "Pergamena",
+ "Pergamena",
+ "Pergamena",
+ "Pergamena",
+ "Pergamena",
+ "Pergamena",
+ "Pergamena",
+ "Pezzo",
+ "Pezzo",
+ "Pezzo",
+ "Pezzo",
+ "Pezzo",
+ "Magipietra Rossa",
+ "Magipietra Arancione",
+ "Magipietra Gialla",
+ "Magipietra Verde",
+ "Magipietra Blu-Verde",
+ "Magipietra Blu",
+ "Magipietra Porpora",
+ "Roccia pesante",
+ "Corona Reale",
+ "Scettro Reale",
+ "Chiave d'Oro",
+ "?????"
+};
+
+static const StringListProvider k1ItemNamesDOSCDItalianProvider = { ARRAYSIZE(k1ItemNamesDOSCDItalian), k1ItemNamesDOSCDItalian };
+
+static const char *const k1TakenStringsDOSCDItalian[2] = {
+ " su ",
+ " su "
+};
+
+static const StringListProvider k1TakenStringsDOSCDItalianProvider = { ARRAYSIZE(k1TakenStringsDOSCDItalian), k1TakenStringsDOSCDItalian };
+
+static const char *const k1PlacedStringsDOSCDItalian[2] = {
+ " giu' ",
+ " giu' "
+};
+
+static const StringListProvider k1PlacedStringsDOSCDItalianProvider = { ARRAYSIZE(k1PlacedStringsDOSCDItalian), k1PlacedStringsDOSCDItalian };
+
+static const char *const k1DroppedStringsDOSCDItalian[2] = {
+ " giu' ",
+ " giu' "
+};
+
+static const StringListProvider k1DroppedStringsDOSCDItalianProvider = { ARRAYSIZE(k1DroppedStringsDOSCDItalian), k1DroppedStringsDOSCDItalian };
+
+static const char *const k1NoDropStringsDOSCDItalian[2] = {
+ "Non puoi pi""\x97"" lasciare nulla qui. ",
+ "Non puoi metterlo l""\x8D"". "
+};
+
+static const StringListProvider k1NoDropStringsDOSCDItalianProvider = { ARRAYSIZE(k1NoDropStringsDOSCDItalian), k1NoDropStringsDOSCDItalian };
+
+static const char *const k1PutDownStringDOSCDItalian[1] = {
+ "Forse devo prima mettere gi""\x97"" questo. "
+};
+
+static const StringListProvider k1PutDownStringDOSCDItalianProvider = { ARRAYSIZE(k1PutDownStringDOSCDItalian), k1PutDownStringDOSCDItalian };
+
+static const char *const k1WaitAmuletStringDOSCDItalian[1] = {
+ "Credo di dover attendere che l'amuleto racquisti i suoi poteri. "
+};
+
+static const StringListProvider k1WaitAmuletStringDOSCDItalianProvider = { ARRAYSIZE(k1WaitAmuletStringDOSCDItalian), k1WaitAmuletStringDOSCDItalian };
+
+static const char *const k1BlackJewelStringDOSCDItalian[1] = {
+ "E' un gioiello, ma perch""\x8A"" mai ""\x8A"" nero? "
+};
+
+static const StringListProvider k1BlackJewelStringDOSCDItalianProvider = { ARRAYSIZE(k1BlackJewelStringDOSCDItalian), k1BlackJewelStringDOSCDItalian };
+
+static const char *const k1HealingTipStringDOSCDItalian[1] = {
+ "Grande, mi pu""\x95"" essere utile in caso mi dovessi ferire"
+};
+
+static const StringListProvider k1HealingTipStringDOSCDItalianProvider = { ARRAYSIZE(k1HealingTipStringDOSCDItalian), k1HealingTipStringDOSCDItalian };
+
+static const char *const k1PoisonGoneStringDOSCDItalian[2] = {
+ "Grande!",
+ "L'effetto del veleno ""\x8A"" sparito! "
+};
+
+static const StringListProvider k1PoisonGoneStringDOSCDItalianProvider = { ARRAYSIZE(k1PoisonGoneStringDOSCDItalian), k1PoisonGoneStringDOSCDItalian };
+
+static const char *const k1ThePoisonStringsDOSCDItalian[4] = {
+ "Il veleno...",
+ "Non riesco a respirare... ",
+ "Non mi sento molto bene... ",
+ "\xAD""E' un serpente velenoso! "
+};
+
+static const StringListProvider k1ThePoisonStringsDOSCDItalianProvider = { ARRAYSIZE(k1ThePoisonStringsDOSCDItalian), k1ThePoisonStringsDOSCDItalian };
+
+static const char *const k1FluteStringsDOSCDItalian[2] = {
+ "Non ha un gran bel suono..",
+ "Quest'ultima nota era piuttosto ALTINA! "
+};
+
+static const StringListProvider k1FluteStringsDOSCDItalianProvider = { ARRAYSIZE(k1FluteStringsDOSCDItalian), k1FluteStringsDOSCDItalian };
+
+static const char *const k1WispJewelStringsDOSCDItalian[2] = {
+ "Non credo sia il caso in questo momento. ",
+ "Dovrei prima posare questo. "
+};
+
+static const StringListProvider k1WispJewelStringsDOSCDItalianProvider = { ARRAYSIZE(k1WispJewelStringsDOSCDItalian), k1WispJewelStringsDOSCDItalian };
+
+static const char *const k1MagicJewelStringsDOSCDItalian[1] = {
+ "Mi sento strano."
+};
+
+static const StringListProvider k1MagicJewelStringsDOSCDItalianProvider = { ARRAYSIZE(k1MagicJewelStringsDOSCDItalian), k1MagicJewelStringsDOSCDItalian };
+
+static const char *const k1FlaskFullStringDOSCDItalian[1] = {
+ "La Bottiglia ""\x8A"" gi""\xA0"" piena "
+};
+
+static const StringListProvider k1FlaskFullStringDOSCDItalianProvider = { ARRAYSIZE(k1FlaskFullStringDOSCDItalian), k1FlaskFullStringDOSCDItalian };
+
+static const char *const k1FullFlaskStringDOSCDItalian[4] = {
+ "La bottiglietta ""\x8A"" piena\rdi acqua gassata ",
+ "L'ampolla contiene acqua salata ",
+ "L'ampolla contiene acqua minerale ",
+ "Acqua magica"
+};
+
+static const StringListProvider k1FullFlaskStringDOSCDItalianProvider = { ARRAYSIZE(k1FullFlaskStringDOSCDItalian), k1FullFlaskStringDOSCDItalian };
+
+static const char *const k1OutroHomeStringDOSCDItalian[1] = {
+ "Casa "
+};
+
+static const StringListProvider k1OutroHomeStringDOSCDItalianProvider = { ARRAYSIZE(k1OutroHomeStringDOSCDItalian), k1OutroHomeStringDOSCDItalian };
+
+static const char *const k1VeryCleverStringDOSCDItalian[1] = {
+ "Intelligente! ma ""\x8A"" tutto inutile... "
+};
+
+static const StringListProvider k1VeryCleverStringDOSCDItalianProvider = { ARRAYSIZE(k1VeryCleverStringDOSCDItalian), k1VeryCleverStringDOSCDItalian };
+
+static const char *const k1GUIStringsDOSCDItalian[35] = {
+ "The Legend of Kyrandia",
+ "Caricare Gioco",
+ " Salvare Gioco ",
+ " Impostazioni ",
+ " Uscire ",
+ " Torna al Gioco ",
+ " Impostazioni ",
+ "Quale partita vuoi caricare? ",
+ "Seleziona una posizione: ",
+ "[ SPAZIO VUOTO ] ",
+ " Esci ",
+ "Immettere una descrizione per il gioco: ",
+ " OK ",
+ "Riposa in pace Brandon. ",
+ " Sei sicuro di voler uscire? ",
+ "XXXXXXXXXXXXXXXXX",
+ "XXXXXXXXXXXXXXXXX",
+ "XXXXXXXXXXXXXXXXX",
+ "XXXXXXXXXXXXXXXXX",
+ "XXXXXXXXXXXX",
+ "",
+ "",
+ "",
+ "",
+ "",
+ " Indietro ",
+ "ON ",
+ "OFF ",
+ "Si ",
+ "No ",
+ "?""\x0F"")+F""\x0F"")+L""\x0F"")+T""\x0F"")+[""\x0F"")+h""\x0F"")+y""\x0F"")+""\x89\x0F"")+""\x97\x0F"")+""\x9D\x0F"")+""\xA5\x0F"")+""\xAC\x0F"")+Velocit""\x85"" Camminata ",
+ "Velocit""\x85"" Testo ",
+ "Musica ",
+ "Effetti Sonori",
+ "Voce/Testo"
+};
+
+static const StringListProvider k1GUIStringsDOSCDItalianProvider = { ARRAYSIZE(k1GUIStringsDOSCDItalian), k1GUIStringsDOSCDItalian };
+
+static const char *const k1NewGameStringDOSCDItalian[1] = {
+ "[COMINCIARE UN NUOVO GIOCO] "
+};
+
+static const StringListProvider k1NewGameStringDOSCDItalianProvider = { ARRAYSIZE(k1NewGameStringDOSCDItalian), k1NewGameStringDOSCDItalian };
+
+static const char *const k1ConfigStringsDOSCDItalian[12] = {
+ "Lumaca",
+ "Lenta",
+ "Normale",
+ "Veloce",
+ "Molto Veloce",
+ "Solamente Testo ",
+ "Solamente Voce ",
+ "Voce e Testo ",
+ "Lenta",
+ "Normale",
+ "Veloce",
+ "Cliccabile "
+};
+
+static const StringListProvider k1ConfigStringsDOSCDItalianProvider = { ARRAYSIZE(k1ConfigStringsDOSCDItalian), k1ConfigStringsDOSCDItalian };
+
diff --git a/devtools/create_kyradat/resources/lok_dos_cddemo.h b/devtools/create_kyradat/resources/lok_dos_cddemo.h
new file mode 100644
index 0000000000..b2c4ce9863
--- /dev/null
+++ b/devtools/create_kyradat/resources/lok_dos_cddemo.h
@@ -0,0 +1,593 @@
+static const byte k1KallakWritingSeqDOSCDDemo[2053] = {
+ 0x00, 0x00, 0x01, 0x11, 0x1D, 0x1A, 0x00, 0x00,
+ 0x00, 0x3F, 0x01, 0xC7, 0x0C, 0x00, 0x0F, 0x00,
+ 0x24, 0x2B, 0x24, 0x2C, 0x24, 0x2D, 0x24, 0x2E,
+ 0x1C, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, 0x10,
+ 0x05, 0x00, 0x95, 0x00, 0x20, 0x0A, 0x17, 0x22,
+ 0x2B, 0x1E, 0x12, 0x2E, 0x02, 0x00, 0x01, 0x00,
+ 0x00, 0x10, 0x05, 0x01, 0x94, 0x00, 0x1B, 0x08,
+ 0x06, 0x00, 0x1B, 0x1D, 0x02, 0x00, 0x02, 0x00,
+ 0x00, 0x10, 0x05, 0x02, 0x93, 0x00, 0x14, 0x08,
+ 0x06, 0x00, 0x02, 0x00, 0x03, 0x00, 0x00, 0x10,
+ 0x05, 0x01, 0x90, 0x00, 0x1B, 0x08, 0x06, 0x00,
+ 0x02, 0x00, 0x04, 0x00, 0x00, 0x10, 0x05, 0x00,
+ 0x8D, 0x00, 0x20, 0x08, 0x06, 0x00, 0x1B, 0x1D,
+ 0x02, 0x00, 0x05, 0x00, 0x00, 0x10, 0x05, 0x01,
+ 0x8A, 0x00, 0x1B, 0x08, 0x06, 0x00, 0x02, 0x00,
+ 0x06, 0x00, 0x00, 0x10, 0x05, 0x02, 0x88, 0x00,
+ 0x14, 0x08, 0x06, 0x00, 0x1B, 0x1D, 0x02, 0x00,
+ 0x07, 0x00, 0x00, 0x10, 0x05, 0x01, 0x85, 0x00,
+ 0x1B, 0x08, 0x06, 0x00, 0x02, 0x00, 0x08, 0x00,
+ 0x00, 0x10, 0x05, 0x00, 0x82, 0x00, 0x20, 0x08,
+ 0x06, 0x00, 0x02, 0x00, 0x09, 0x00, 0x00, 0x10,
+ 0x05, 0x01, 0x7F, 0x00, 0x1B, 0x08, 0x06, 0x00,
+ 0x02, 0x00, 0x0A, 0x00, 0x00, 0x10, 0x05, 0x02,
+ 0x7C, 0x00, 0x14, 0x08, 0x06, 0x00, 0x1B, 0x1D,
+ 0x02, 0x00, 0x0B, 0x00, 0x00, 0x10, 0x05, 0x01,
+ 0x79, 0x00, 0x1B, 0x08, 0x06, 0x00, 0x02, 0x00,
+ 0x0C, 0x00, 0x00, 0x10, 0x05, 0x00, 0x76, 0x00,
+ 0x20, 0x08, 0x06, 0x00, 0x02, 0x00, 0x0D, 0x00,
+ 0x00, 0x10, 0x05, 0x01, 0x73, 0x00, 0x1B, 0x08,
+ 0x06, 0x00, 0x1B, 0x1D, 0x02, 0x00, 0x0E, 0x00,
+ 0x00, 0x10, 0x05, 0x02, 0x70, 0x00, 0x14, 0x08,
+ 0x06, 0x00, 0x02, 0x00, 0x0F, 0x00, 0x00, 0x10,
+ 0x05, 0x01, 0x6D, 0x00, 0x1B, 0x08, 0x06, 0x00,
+ 0x02, 0x00, 0x10, 0x00, 0x00, 0x10, 0x05, 0x00,
+ 0x6A, 0x00, 0x20, 0x08, 0x06, 0x00, 0x02, 0x00,
+ 0x11, 0x00, 0x00, 0x10, 0x05, 0x01, 0x67, 0x00,
+ 0x1B, 0x08, 0x06, 0x00, 0x1B, 0x1D, 0x02, 0x00,
+ 0x12, 0x00, 0x00, 0x10, 0x05, 0x02, 0x65, 0x00,
+ 0x14, 0x08, 0x06, 0x00, 0x02, 0x00, 0x13, 0x00,
+ 0x00, 0x10, 0x05, 0x01, 0x63, 0x00, 0x1B, 0x08,
+ 0x06, 0x00, 0x02, 0x00, 0x14, 0x00, 0x00, 0x10,
+ 0x05, 0x00, 0x63, 0x00, 0x20, 0x08, 0x06, 0x00,
+ 0x02, 0x00, 0x15, 0x00, 0x00, 0x10, 0x05, 0x00,
+ 0x65, 0x00, 0x1F, 0x08, 0x06, 0x00, 0x02, 0x00,
+ 0x16, 0x00, 0x00, 0x10, 0x05, 0x00, 0x6A, 0x00,
+ 0x1D, 0x08, 0x06, 0x00, 0x02, 0x00, 0x17, 0x00,
+ 0x00, 0x10, 0x05, 0x00, 0x70, 0x00, 0x19, 0x08,
+ 0x06, 0x00, 0x02, 0x00, 0x18, 0x00, 0x00, 0x10,
+ 0x05, 0x00, 0x76, 0x00, 0x17, 0x08, 0x06, 0x00,
+ 0x02, 0x00, 0x19, 0x00, 0x00, 0x10, 0x05, 0x00,
+ 0x7C, 0x00, 0x16, 0x08, 0x06, 0x00, 0x02, 0x00,
+ 0x1A, 0x00, 0x00, 0x10, 0x05, 0x00, 0x82, 0x00,
+ 0x17, 0x08, 0x06, 0x00, 0x02, 0x00, 0x1B, 0x00,
+ 0x00, 0x10, 0x05, 0x00, 0x88, 0x00, 0x19, 0x08,
+ 0x06, 0x00, 0x02, 0x00, 0x1C, 0x00, 0x00, 0x10,
+ 0x05, 0x00, 0x8D, 0x00, 0x1D, 0x08, 0x06, 0x00,
+ 0x02, 0x00, 0x1D, 0x00, 0x00, 0x10, 0x05, 0x00,
+ 0x93, 0x00, 0x1F, 0x08, 0x06, 0x00, 0x1F, 0x22,
+ 0x2C, 0x1E, 0x12, 0x2F, 0x02, 0x00, 0x01, 0x00,
+ 0x00, 0x10, 0x05, 0x01, 0x94, 0x00, 0x1B, 0x08,
+ 0x06, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x10,
+ 0x05, 0x01, 0x94, 0x00, 0x1B, 0x08, 0x06, 0x00,
+ 0x1B, 0x1D, 0x02, 0x00, 0x02, 0x00, 0x00, 0x10,
+ 0x05, 0x02, 0x93, 0x00, 0x14, 0x08, 0x06, 0x00,
+ 0x02, 0x00, 0x02, 0x00, 0x00, 0x10, 0x05, 0x02,
+ 0x93, 0x00, 0x14, 0x08, 0x06, 0x00, 0x02, 0x00,
+ 0x03, 0x00, 0x00, 0x10, 0x05, 0x01, 0x90, 0x00,
+ 0x1B, 0x08, 0x06, 0x00, 0x02, 0x00, 0x04, 0x00,
+ 0x00, 0x10, 0x05, 0x00, 0x8D, 0x00, 0x20, 0x08,
+ 0x06, 0x00, 0x1B, 0x1D, 0x02, 0x00, 0x05, 0x00,
+ 0x00, 0x10, 0x05, 0x01, 0x8A, 0x00, 0x1B, 0x08,
+ 0x06, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x10,
+ 0x05, 0x01, 0x8A, 0x00, 0x1B, 0x08, 0x06, 0x00,
+ 0x02, 0x00, 0x06, 0x00, 0x00, 0x10, 0x05, 0x02,
+ 0x88, 0x00, 0x14, 0x08, 0x06, 0x00, 0x1B, 0x1D,
+ 0x02, 0x00, 0x07, 0x00, 0x00, 0x10, 0x05, 0x01,
+ 0x85, 0x00, 0x1B, 0x08, 0x06, 0x00, 0x02, 0x00,
+ 0x08, 0x00, 0x00, 0x10, 0x05, 0x00, 0x82, 0x00,
+ 0x20, 0x08, 0x06, 0x00, 0x02, 0x00, 0x09, 0x00,
+ 0x00, 0x10, 0x05, 0x01, 0x7F, 0x00, 0x1B, 0x08,
+ 0x06, 0x00, 0x02, 0x00, 0x0A, 0x00, 0x00, 0x10,
+ 0x05, 0x02, 0x7C, 0x00, 0x14, 0x08, 0x06, 0x00,
+ 0x1B, 0x1D, 0x02, 0x00, 0x0B, 0x00, 0x00, 0x10,
+ 0x05, 0x01, 0x79, 0x00, 0x1B, 0x08, 0x06, 0x00,
+ 0x02, 0x00, 0x0C, 0x00, 0x00, 0x10, 0x05, 0x00,
+ 0x76, 0x00, 0x20, 0x08, 0x06, 0x00, 0x02, 0x00,
+ 0x0D, 0x00, 0x00, 0x10, 0x05, 0x01, 0x73, 0x00,
+ 0x1B, 0x08, 0x06, 0x00, 0x1B, 0x1D, 0x02, 0x00,
+ 0x0E, 0x00, 0x00, 0x10, 0x05, 0x02, 0x70, 0x00,
+ 0x14, 0x08, 0x06, 0x00, 0x02, 0x00, 0x0F, 0x00,
+ 0x00, 0x10, 0x05, 0x01, 0x6D, 0x00, 0x1B, 0x08,
+ 0x06, 0x00, 0x02, 0x00, 0x10, 0x00, 0x00, 0x10,
+ 0x05, 0x00, 0x6A, 0x00, 0x20, 0x08, 0x06, 0x00,
+ 0x02, 0x00, 0x11, 0x00, 0x00, 0x10, 0x05, 0x01,
+ 0x67, 0x00, 0x1B, 0x08, 0x06, 0x00, 0x1B, 0x1D,
+ 0x02, 0x00, 0x12, 0x00, 0x00, 0x10, 0x05, 0x02,
+ 0x65, 0x00, 0x14, 0x08, 0x06, 0x00, 0x02, 0x00,
+ 0x13, 0x00, 0x00, 0x10, 0x05, 0x01, 0x63, 0x00,
+ 0x1B, 0x08, 0x06, 0x00, 0x02, 0x00, 0x14, 0x00,
+ 0x00, 0x10, 0x05, 0x00, 0x63, 0x00, 0x20, 0x08,
+ 0x06, 0x00, 0x02, 0x00, 0x15, 0x00, 0x00, 0x10,
+ 0x05, 0x00, 0x65, 0x00, 0x1F, 0x08, 0x06, 0x00,
+ 0x02, 0x00, 0x16, 0x00, 0x00, 0x10, 0x05, 0x00,
+ 0x6A, 0x00, 0x1D, 0x08, 0x06, 0x00, 0x02, 0x00,
+ 0x17, 0x00, 0x00, 0x10, 0x05, 0x00, 0x70, 0x00,
+ 0x19, 0x08, 0x06, 0x00, 0x02, 0x00, 0x18, 0x00,
+ 0x00, 0x10, 0x05, 0x00, 0x76, 0x00, 0x17, 0x08,
+ 0x06, 0x00, 0x02, 0x00, 0x19, 0x00, 0x00, 0x10,
+ 0x05, 0x00, 0x7C, 0x00, 0x16, 0x08, 0x06, 0x00,
+ 0x02, 0x00, 0x1A, 0x00, 0x00, 0x10, 0x05, 0x00,
+ 0x82, 0x00, 0x17, 0x08, 0x06, 0x00, 0x02, 0x00,
+ 0x1B, 0x00, 0x00, 0x10, 0x05, 0x00, 0x88, 0x00,
+ 0x19, 0x08, 0x06, 0x00, 0x02, 0x00, 0x1C, 0x00,
+ 0x00, 0x10, 0x05, 0x00, 0x8D, 0x00, 0x1D, 0x08,
+ 0x06, 0x00, 0x02, 0x00, 0x1D, 0x00, 0x00, 0x10,
+ 0x05, 0x00, 0x93, 0x00, 0x1F, 0x08, 0x06, 0x00,
+ 0x1F, 0x22, 0x2D, 0x1E, 0x12, 0x30, 0x02, 0x00,
+ 0x01, 0x00, 0x00, 0x10, 0x05, 0x01, 0x94, 0x00,
+ 0x1B, 0x08, 0x06, 0x00, 0x02, 0x00, 0x01, 0x00,
+ 0x00, 0x10, 0x05, 0x01, 0x94, 0x00, 0x1B, 0x08,
+ 0x06, 0x00, 0x1B, 0x1D, 0x02, 0x00, 0x02, 0x00,
+ 0x00, 0x10, 0x05, 0x02, 0x93, 0x00, 0x14, 0x08,
+ 0x06, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x10,
+ 0x05, 0x02, 0x93, 0x00, 0x14, 0x08, 0x06, 0x00,
+ 0x02, 0x00, 0x02, 0x00, 0x00, 0x10, 0x05, 0x02,
+ 0x93, 0x00, 0x14, 0x08, 0x06, 0x00, 0x02, 0x00,
+ 0x03, 0x00, 0x00, 0x10, 0x05, 0x01, 0x90, 0x00,
+ 0x1B, 0x08, 0x06, 0x00, 0x02, 0x00, 0x03, 0x00,
+ 0x00, 0x10, 0x05, 0x01, 0x90, 0x00, 0x1B, 0x08,
+ 0x06, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 0x10,
+ 0x05, 0x00, 0x8D, 0x00, 0x20, 0x08, 0x06, 0x00,
+ 0x1B, 0x1D, 0x02, 0x00, 0x05, 0x00, 0x00, 0x10,
+ 0x05, 0x01, 0x8A, 0x00, 0x1B, 0x08, 0x06, 0x00,
+ 0x02, 0x00, 0x06, 0x00, 0x00, 0x10, 0x05, 0x02,
+ 0x88, 0x00, 0x14, 0x08, 0x06, 0x00, 0x1B, 0x1D,
+ 0x02, 0x00, 0x07, 0x00, 0x00, 0x10, 0x05, 0x01,
+ 0x85, 0x00, 0x1B, 0x08, 0x06, 0x00, 0x02, 0x00,
+ 0x08, 0x00, 0x00, 0x10, 0x05, 0x00, 0x82, 0x00,
+ 0x20, 0x08, 0x06, 0x00, 0x02, 0x00, 0x09, 0x00,
+ 0x00, 0x10, 0x05, 0x01, 0x7F, 0x00, 0x1B, 0x08,
+ 0x06, 0x00, 0x02, 0x00, 0x0A, 0x00, 0x00, 0x10,
+ 0x05, 0x02, 0x7C, 0x00, 0x14, 0x08, 0x06, 0x00,
+ 0x1B, 0x1D, 0x02, 0x00, 0x0B, 0x00, 0x00, 0x10,
+ 0x05, 0x01, 0x79, 0x00, 0x1B, 0x08, 0x06, 0x00,
+ 0x02, 0x00, 0x0C, 0x00, 0x00, 0x10, 0x05, 0x00,
+ 0x76, 0x00, 0x20, 0x08, 0x06, 0x00, 0x02, 0x00,
+ 0x0D, 0x00, 0x00, 0x10, 0x05, 0x01, 0x73, 0x00,
+ 0x1B, 0x08, 0x06, 0x00, 0x1B, 0x1D, 0x02, 0x00,
+ 0x0E, 0x00, 0x00, 0x10, 0x05, 0x02, 0x70, 0x00,
+ 0x14, 0x08, 0x06, 0x00, 0x02, 0x00, 0x0F, 0x00,
+ 0x00, 0x10, 0x05, 0x01, 0x6D, 0x00, 0x1B, 0x08,
+ 0x06, 0x00, 0x02, 0x00, 0x10, 0x00, 0x00, 0x10,
+ 0x05, 0x00, 0x6A, 0x00, 0x20, 0x08, 0x06, 0x00,
+ 0x02, 0x00, 0x11, 0x00, 0x00, 0x10, 0x05, 0x01,
+ 0x67, 0x00, 0x1B, 0x08, 0x06, 0x00, 0x1B, 0x1D,
+ 0x02, 0x00, 0x12, 0x00, 0x00, 0x10, 0x05, 0x02,
+ 0x65, 0x00, 0x14, 0x08, 0x06, 0x00, 0x02, 0x00,
+ 0x13, 0x00, 0x00, 0x10, 0x05, 0x01, 0x63, 0x00,
+ 0x1B, 0x08, 0x06, 0x00, 0x02, 0x00, 0x14, 0x00,
+ 0x00, 0x10, 0x05, 0x00, 0x63, 0x00, 0x20, 0x08,
+ 0x06, 0x00, 0x02, 0x00, 0x15, 0x00, 0x00, 0x10,
+ 0x05, 0x00, 0x65, 0x00, 0x1F, 0x08, 0x06, 0x00,
+ 0x02, 0x00, 0x16, 0x00, 0x00, 0x10, 0x05, 0x00,
+ 0x6A, 0x00, 0x1D, 0x08, 0x06, 0x00, 0x02, 0x00,
+ 0x17, 0x00, 0x00, 0x10, 0x05, 0x00, 0x70, 0x00,
+ 0x19, 0x08, 0x06, 0x00, 0x02, 0x00, 0x18, 0x00,
+ 0x00, 0x10, 0x05, 0x00, 0x76, 0x00, 0x17, 0x08,
+ 0x06, 0x00, 0x02, 0x00, 0x19, 0x00, 0x00, 0x10,
+ 0x05, 0x00, 0x7C, 0x00, 0x16, 0x08, 0x06, 0x00,
+ 0x02, 0x00, 0x1A, 0x00, 0x00, 0x10, 0x05, 0x00,
+ 0x82, 0x00, 0x17, 0x08, 0x06, 0x00, 0x02, 0x00,
+ 0x1B, 0x00, 0x00, 0x10, 0x05, 0x00, 0x88, 0x00,
+ 0x19, 0x08, 0x06, 0x00, 0x02, 0x00, 0x1C, 0x00,
+ 0x00, 0x10, 0x05, 0x00, 0x8D, 0x00, 0x1D, 0x08,
+ 0x06, 0x00, 0x02, 0x00, 0x1D, 0x00, 0x00, 0x10,
+ 0x05, 0x00, 0x93, 0x00, 0x1F, 0x08, 0x06, 0x00,
+ 0x1F, 0x07, 0x3C, 0x00, 0x22, 0x2E, 0x1E, 0x12,
+ 0x31, 0x02, 0x00, 0x00, 0x00, 0x00, 0x10, 0x05,
+ 0x00, 0x95, 0x00, 0x20, 0x08, 0x06, 0x00, 0x02,
+ 0x00, 0x00, 0x00, 0x00, 0x10, 0x05, 0x00, 0x95,
+ 0x00, 0x20, 0x08, 0x06, 0x00, 0x1B, 0x1D, 0x02,
+ 0x00, 0x01, 0x00, 0x00, 0x10, 0x05, 0x01, 0x94,
+ 0x00, 0x1B, 0x08, 0x06, 0x00, 0x02, 0x00, 0x01,
+ 0x00, 0x00, 0x10, 0x05, 0x01, 0x94, 0x00, 0x1B,
+ 0x08, 0x06, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00,
+ 0x10, 0x05, 0x02, 0x93, 0x00, 0x14, 0x08, 0x06,
+ 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x10, 0x05,
+ 0x02, 0x93, 0x00, 0x14, 0x08, 0x06, 0x00, 0x1B,
+ 0x1D, 0x02, 0x00, 0x03, 0x00, 0x00, 0x10, 0x05,
+ 0x01, 0x90, 0x00, 0x1B, 0x08, 0x06, 0x00, 0x02,
+ 0x00, 0x04, 0x00, 0x00, 0x10, 0x05, 0x00, 0x8D,
+ 0x00, 0x20, 0x08, 0x06, 0x00, 0x02, 0x00, 0x05,
+ 0x00, 0x00, 0x10, 0x05, 0x01, 0x8A, 0x00, 0x1B,
+ 0x08, 0x06, 0x00, 0x1B, 0x1D, 0x02, 0x00, 0x06,
+ 0x00, 0x00, 0x10, 0x05, 0x02, 0x88, 0x00, 0x14,
+ 0x08, 0x06, 0x00, 0x02, 0x00, 0x07, 0x00, 0x00,
+ 0x10, 0x05, 0x01, 0x85, 0x00, 0x1B, 0x08, 0x06,
+ 0x00, 0x1B, 0x1D, 0x02, 0x00, 0x08, 0x00, 0x00,
+ 0x10, 0x05, 0x00, 0x82, 0x00, 0x20, 0x08, 0x06,
+ 0x00, 0x02, 0x00, 0x09, 0x00, 0x00, 0x10, 0x05,
+ 0x01, 0x7F, 0x00, 0x1B, 0x08, 0x06, 0x00, 0x02,
+ 0x00, 0x0A, 0x00, 0x00, 0x10, 0x05, 0x02, 0x7C,
+ 0x00, 0x14, 0x08, 0x06, 0x00, 0x1B, 0x1D, 0x02,
+ 0x00, 0x0B, 0x00, 0x00, 0x10, 0x05, 0x01, 0x79,
+ 0x00, 0x1B, 0x08, 0x06, 0x00, 0x02, 0x00, 0x0C,
+ 0x00, 0x00, 0x10, 0x05, 0x00, 0x76, 0x00, 0x20,
+ 0x08, 0x06, 0x00, 0x1B, 0x1D, 0x02, 0x00, 0x0D,
+ 0x00, 0x00, 0x10, 0x05, 0x01, 0x73, 0x00, 0x1B,
+ 0x08, 0x06, 0x00, 0x02, 0x00, 0x0E, 0x00, 0x00,
+ 0x10, 0x05, 0x02, 0x70, 0x00, 0x14, 0x08, 0x06,
+ 0x00, 0x02, 0x00, 0x0F, 0x00, 0x00, 0x10, 0x05,
+ 0x01, 0x6D, 0x00, 0x1B, 0x08, 0x06, 0x00, 0x1B,
+ 0x1D, 0x02, 0x00, 0x10, 0x00, 0x00, 0x10, 0x05,
+ 0x00, 0x6A, 0x00, 0x20, 0x08, 0x06, 0x00, 0x02,
+ 0x00, 0x11, 0x00, 0x00, 0x10, 0x05, 0x01, 0x67,
+ 0x00, 0x1B, 0x08, 0x06, 0x00, 0x1B, 0x1D, 0x02,
+ 0x00, 0x12, 0x00, 0x00, 0x10, 0x05, 0x02, 0x65,
+ 0x00, 0x14, 0x08, 0x06, 0x00, 0x07, 0x3C, 0x00,
+ 0x02, 0x00, 0x1E, 0x00, 0x00, 0x10, 0x09, 0x15,
+ 0x07, 0x1E, 0x00, 0x0B, 0x01, 0x02, 0x00, 0x1F,
+ 0x00, 0x00, 0x10, 0x08, 0x0A, 0x00, 0x02, 0x00,
+ 0x20, 0x00, 0x00, 0x10, 0x08, 0x0A, 0x00, 0x02,
+ 0x00, 0x21, 0x00, 0x00, 0x10, 0x08, 0x0A, 0x00,
+ 0x02, 0x00, 0x22, 0x00, 0x00, 0x10, 0x08, 0x0A,
+ 0x00, 0x0C, 0x01, 0x02, 0x00, 0x1B, 0x1F, 0x07,
+ 0x0A, 0x00, 0x02, 0x00, 0x23, 0x00, 0x00, 0x10,
+ 0x08, 0x14, 0x00, 0x1B, 0x1E, 0x02, 0x00, 0x24,
+ 0x00, 0x00, 0x10, 0x08, 0x14, 0x00, 0x02, 0x00,
+ 0x25, 0x00, 0x00, 0x10, 0x08, 0x14, 0x00, 0x1B,
+ 0x1F, 0x02, 0x00, 0x26, 0x00, 0x00, 0x10, 0x08,
+ 0x14, 0x00, 0x02, 0x00, 0x27, 0x00, 0x00, 0x10,
+ 0x08, 0x14, 0x00, 0x1B, 0x1E, 0x02, 0x00, 0x28,
+ 0x00, 0x00, 0x10, 0x09, 0x07, 0x3C, 0x00, 0x1B,
+ 0x1E, 0x03, 0x00, 0x08, 0x06, 0x00, 0x1B, 0x1E,
+ 0x03, 0x00, 0x08, 0x06, 0x00, 0x03, 0x00, 0x08,
+ 0x06, 0x00, 0x03, 0x00, 0x08, 0x06, 0x00, 0x03,
+ 0x00, 0x08, 0x06, 0x00, 0x03, 0x00, 0x08, 0x06,
+ 0x00, 0x03, 0x00, 0x08, 0x06, 0x00, 0x1B, 0x1E,
+ 0x03, 0x00, 0x08, 0x06, 0x00, 0x03, 0x00, 0x08,
+ 0x06, 0x00, 0x03, 0x00, 0x08, 0x06, 0x00, 0x03,
+ 0x00, 0x08, 0x06, 0x00, 0x03, 0x00, 0x08, 0x06,
+ 0x00, 0x03, 0x00, 0x08, 0x06, 0x00, 0x03, 0x00,
+ 0x08, 0x06, 0x00, 0x03, 0x00, 0x08, 0x06, 0x00,
+ 0x03, 0x00, 0x08, 0x06, 0x00, 0x1B, 0x1E, 0x03,
+ 0x00, 0x08, 0x06, 0x00, 0x03, 0x00, 0x08, 0x06,
+ 0x00, 0x03, 0x00, 0x08, 0x06, 0x00, 0x03, 0x00,
+ 0x08, 0x06, 0x00, 0x03, 0x00, 0x08, 0x06, 0x00,
+ 0x03, 0x00, 0x08, 0x06, 0x00, 0x03, 0x00, 0x08,
+ 0x06, 0x00, 0x03, 0x00, 0x08, 0x06, 0x00, 0x1B,
+ 0x1E, 0x03, 0x00, 0x08, 0x06, 0x00, 0x03, 0x00,
+ 0x08, 0x06, 0x00, 0x03, 0x00, 0x08, 0x06, 0x00,
+ 0x03, 0x00, 0x08, 0x06, 0x00, 0x03, 0x00, 0x08,
+ 0x06, 0x00, 0x03, 0x00, 0x08, 0x06, 0x00, 0x03,
+ 0x00, 0x08, 0x06, 0x00, 0x03, 0x00, 0x08, 0x06,
+ 0x00, 0x03, 0x00, 0x08, 0x06, 0x00, 0x03, 0x00,
+ 0x08, 0x06, 0x00, 0x16, 0x1F, 0x1C, 0x01, 0x07,
+ 0x3C, 0x00, 0x01, 0x00, 0x20
+};
+
+static const ByteProvider k1KallakWritingSeqDOSCDDemoProvider = { ARRAYSIZE(k1KallakWritingSeqDOSCDDemo), k1KallakWritingSeqDOSCDDemo };
+
+static const byte k1MalcolmTreeSeqDOSCDDemo[560] = {
+ 0x23, 0x00, 0x01, 0x00, 0x1D, 0x11, 0x24, 0x1C,
+ 0x24, 0x13, 0x24, 0x14, 0x24, 0x15, 0x24, 0x16,
+ 0x24, 0x17, 0x24, 0x19, 0x24, 0x1B, 0x1A, 0x00,
+ 0x00, 0x00, 0x3F, 0x01, 0xC7, 0x0C, 0x00, 0x0F,
+ 0x01, 0x10, 0x01, 0x0A, 0x02, 0x01, 0x00, 0x00,
+ 0x00, 0x10, 0x1C, 0x03, 0x0A, 0x1B, 0x1E, 0x17,
+ 0x1B, 0x1F, 0x0B, 0x00, 0x03, 0x01, 0x07, 0x06,
+ 0x00, 0x0C, 0x00, 0x1F, 0x00, 0x1B, 0x19, 0x0B,
+ 0x01, 0x03, 0x01, 0x07, 0x06, 0x00, 0x0C, 0x01,
+ 0x0D, 0x00, 0x22, 0x1C, 0x13, 0x1F, 0x50, 0x00,
+ 0x2D, 0x05, 0x03, 0x01, 0x07, 0x06, 0x00, 0x03,
+ 0x01, 0x07, 0x06, 0x00, 0x0B, 0x02, 0x03, 0x01,
+ 0x07, 0x06, 0x00, 0x0C, 0x02, 0x10, 0x00, 0x14,
+ 0x1B, 0x1F, 0x03, 0x01, 0x07, 0x06, 0x00, 0x03,
+ 0x01, 0x07, 0x06, 0x00, 0x03, 0x01, 0x07, 0x06,
+ 0x00, 0x1B, 0x24, 0x1B, 0x1F, 0x03, 0x01, 0x07,
+ 0x06, 0x00, 0x1B, 0x1E, 0x0B, 0x03, 0x03, 0x01,
+ 0x07, 0x06, 0x00, 0x0C, 0x03, 0x15, 0x00, 0x22,
+ 0x13, 0x13, 0x16, 0x50, 0x00, 0x2D, 0x05, 0x1B,
+ 0x1F, 0x0B, 0x04, 0x03, 0x01, 0x07, 0x04, 0x00,
+ 0x0C, 0x04, 0x08, 0x00, 0x02, 0x01, 0x64, 0x00,
+ 0x00, 0x10, 0x1B, 0x1A, 0x1B, 0x1E, 0x0B, 0x05,
+ 0x03, 0x01, 0x07, 0x04, 0x00, 0x0C, 0x05, 0x09,
+ 0x00, 0x14, 0x06, 0x3C, 0x00, 0x13, 0x17, 0x50,
+ 0x00, 0x2D, 0x05, 0x0B, 0x06, 0x03, 0x01, 0x07,
+ 0x04, 0x00, 0x0C, 0x06, 0x09, 0x00, 0x22, 0x14,
+ 0x07, 0x1E, 0x00, 0x0B, 0x06, 0x03, 0x01, 0x07,
+ 0x04, 0x00, 0x0C, 0x06, 0x09, 0x00, 0x1B, 0x1A,
+ 0x1B, 0x1F, 0x0B, 0x07, 0x03, 0x01, 0x07, 0x04,
+ 0x00, 0x0C, 0x07, 0x06, 0x00, 0x1B, 0x1E, 0x07,
+ 0x1E, 0x00, 0x22, 0x15, 0x13, 0x18, 0x50, 0x00,
+ 0x2D, 0x05, 0x03, 0x01, 0x07, 0x06, 0x00, 0x03,
+ 0x01, 0x07, 0x06, 0x00, 0x03, 0x01, 0x07, 0x06,
+ 0x00, 0x0B, 0x08, 0x04, 0x01, 0x07, 0x06, 0x00,
+ 0x04, 0x01, 0x07, 0x06, 0x00, 0x03, 0x01, 0x07,
+ 0x06, 0x00, 0x03, 0x01, 0x07, 0x06, 0x00, 0x0D,
+ 0x08, 0x01, 0x00, 0x03, 0x01, 0x07, 0x06, 0x00,
+ 0x06, 0x78, 0x00, 0x0B, 0x09, 0x03, 0x01, 0x07,
+ 0x06, 0x00, 0x0C, 0x09, 0x04, 0x00, 0x1B, 0x1B,
+ 0x0B, 0x0A, 0x03, 0x01, 0x07, 0x06, 0x00, 0x0C,
+ 0x0A, 0x09, 0x00, 0x06, 0x14, 0x00, 0x22, 0x16,
+ 0x13, 0x19, 0x50, 0x00, 0x2D, 0x05, 0x03, 0x01,
+ 0x07, 0x06, 0x00, 0x03, 0x01, 0x07, 0x06, 0x00,
+ 0x0B, 0x0B, 0x03, 0x01, 0x07, 0x06, 0x00, 0x04,
+ 0x01, 0x07, 0x06, 0x00, 0x04, 0x01, 0x07, 0x06,
+ 0x00, 0x03, 0x01, 0x07, 0x06, 0x00, 0x03, 0x01,
+ 0x07, 0x06, 0x00, 0x0C, 0x0B, 0x01, 0x00, 0x03,
+ 0x01, 0x07, 0x06, 0x00, 0x03, 0x01, 0x07, 0x06,
+ 0x00, 0x03, 0x01, 0x07, 0x06, 0x00, 0x22, 0x17,
+ 0x13, 0x1A, 0x50, 0x00, 0x2D, 0x05, 0x0B, 0x0C,
+ 0x03, 0x01, 0x07, 0x06, 0x00, 0x0C, 0x0C, 0x12,
+ 0x00, 0x03, 0x01, 0x01, 0x01, 0x14, 0x18, 0x00,
+ 0x02, 0x00, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00,
+ 0x00, 0x10, 0x22, 0x19, 0x13, 0x1C, 0x50, 0x00,
+ 0x2D, 0x05, 0x06, 0x3C, 0x00, 0x03, 0x02, 0x03,
+ 0x02, 0x07, 0x06, 0x00, 0x14, 0x1B, 0x1C, 0x0B,
+ 0x0F, 0x03, 0x02, 0x07, 0x06, 0x00, 0x0C, 0x0F,
+ 0x0D, 0x00, 0x22, 0x1B, 0x13, 0x1D, 0x50, 0x00,
+ 0x2D, 0x05, 0x0B, 0x10, 0x03, 0x02, 0x07, 0x04,
+ 0x00, 0x03, 0x02, 0x07, 0x04, 0x00, 0x03, 0x02,
+ 0x07, 0x04, 0x00, 0x04, 0x02, 0x07, 0x04, 0x00,
+ 0x04, 0x02, 0x07, 0x04, 0x00, 0x04, 0x02, 0x07,
+ 0x04, 0x00, 0x0D, 0x10, 0x02, 0x00, 0x13, 0x1E,
+ 0x50, 0x00, 0x2D, 0x05, 0x0B, 0x11, 0x03, 0x02,
+ 0x07, 0x04, 0x00, 0x03, 0x02, 0x07, 0x04, 0x00,
+ 0x03, 0x02, 0x07, 0x04, 0x00, 0x04, 0x02, 0x07,
+ 0x04, 0x00, 0x04, 0x02, 0x07, 0x04, 0x00, 0x04,
+ 0x02, 0x07, 0x04, 0x00, 0x0D, 0x11, 0x01, 0x00,
+ 0x03, 0x02, 0x07, 0x04, 0x00, 0x07, 0xB4, 0x00,
+ 0x16, 0x1C, 0x01, 0x01, 0x01, 0x01, 0x02, 0x20
+};
+
+static const ByteProvider k1MalcolmTreeSeqDOSCDDemoProvider = { ARRAYSIZE(k1MalcolmTreeSeqDOSCDDemo), k1MalcolmTreeSeqDOSCDDemo };
+
+static const byte k1WestwoodLogoSeqDOSCDDemo[75] = {
+ 0x00, 0x03, 0x01, 0x1D, 0x02, 0x03, 0x00, 0x00,
+ 0x00, 0x00, 0x19, 0x01, 0x07, 0x06, 0x00, 0x07,
+ 0x3C, 0x00, 0x1B, 0x14, 0x0B, 0x00, 0x03, 0x03,
+ 0x19, 0x01, 0x0C, 0x00, 0x08, 0x00, 0x07, 0x3C,
+ 0x00, 0x1B, 0x27, 0x0B, 0x01, 0x03, 0x03, 0x19,
+ 0x01, 0x0C, 0x01, 0x0B, 0x00, 0x07, 0x78, 0x00,
+ 0x1B, 0x14, 0x02, 0x03, 0x0A, 0x00, 0x00, 0x00,
+ 0x19, 0x01, 0x07, 0x06, 0x00, 0x0B, 0x02, 0x04,
+ 0x03, 0x19, 0x01, 0x0C, 0x02, 0x09, 0x00, 0x16,
+ 0x01, 0x03, 0x20
+};
+
+static const ByteProvider k1WestwoodLogoSeqDOSCDDemoProvider = { ARRAYSIZE(k1WestwoodLogoSeqDOSCDDemo), k1WestwoodLogoSeqDOSCDDemo };
+
+static const byte k1KyrandiaLogoSeqDOSCDDemo[166] = {
+ 0x18, 0x00, 0x02, 0x00, 0x06, 0x01, 0x1D, 0x02,
+ 0x06, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x07,
+ 0x06, 0x00, 0x19, 0x04, 0x03, 0x06, 0x19, 0x00,
+ 0x03, 0x06, 0x19, 0x00, 0x03, 0x06, 0x19, 0x00,
+ 0x03, 0x06, 0x19, 0x00, 0x03, 0x06, 0x19, 0x00,
+ 0x03, 0x06, 0x19, 0x00, 0x0B, 0x00, 0x03, 0x06,
+ 0x19, 0x00, 0x0C, 0x00, 0x06, 0x00, 0x03, 0x06,
+ 0x19, 0x00, 0x03, 0x06, 0x19, 0x00, 0x03, 0x06,
+ 0x19, 0x00, 0x03, 0x06, 0x19, 0x00, 0x03, 0x06,
+ 0x19, 0x00, 0x03, 0x06, 0x19, 0x00, 0x03, 0x06,
+ 0x19, 0x00, 0x03, 0x06, 0x19, 0x00, 0x1B, 0x27,
+ 0x0B, 0x01, 0x03, 0x06, 0x19, 0x00, 0x0C, 0x01,
+ 0x07, 0x00, 0x06, 0xF0, 0x00, 0x1B, 0x27, 0x0B,
+ 0x02, 0x04, 0x06, 0x19, 0x00, 0x0C, 0x02, 0x0F,
+ 0x00, 0x07, 0x78, 0x00, 0x07, 0xB4, 0x00, 0x24,
+ 0x37, 0x24, 0x38, 0x24, 0x39, 0x24, 0x3A, 0x24,
+ 0x3B, 0x24, 0x3C, 0x02, 0x06, 0x0D, 0x00, 0x00,
+ 0x00, 0x19, 0x00, 0x07, 0x06, 0x00, 0x07, 0x3C,
+ 0x00, 0x22, 0x1C, 0x1B, 0x14, 0x0B, 0x02, 0x04,
+ 0x06, 0x19, 0x00, 0x0C, 0x02, 0x0C, 0x00, 0x07,
+ 0x78, 0x00, 0x16, 0x01, 0x06, 0x20
+};
+
+static const ByteProvider k1KyrandiaLogoSeqDOSCDDemoProvider = { ARRAYSIZE(k1KyrandiaLogoSeqDOSCDDemo), k1KyrandiaLogoSeqDOSCDDemo };
+
+static const byte k1KallakMalcolmSeqDOSCDDemo[696] = {
+ 0x00, 0x04, 0x01, 0x1D, 0x24, 0x00, 0x24, 0x01,
+ 0x24, 0x02, 0x24, 0x0B, 0x24, 0x0C, 0x11, 0x1A,
+ 0x00, 0x00, 0x00, 0x3F, 0x01, 0xC7, 0x0C, 0x00,
+ 0x0F, 0x03, 0x10, 0x00, 0x1A, 0x00, 0x00, 0x88,
+ 0x3F, 0x01, 0xC7, 0x0C, 0x02, 0x1C, 0x00, 0x02,
+ 0x04, 0x00, 0x10, 0x00, 0x3A, 0x0A, 0x1C, 0x00,
+ 0x1C, 0x05, 0x17, 0x1B, 0x23, 0x0B, 0x00, 0x03,
+ 0x04, 0x08, 0x07, 0x00, 0x0C, 0x00, 0x23, 0x00,
+ 0x22, 0x00, 0x13, 0x02, 0x50, 0x00, 0x3A, 0x05,
+ 0x03, 0x04, 0x08, 0x07, 0x00, 0x03, 0x04, 0x08,
+ 0x07, 0x00, 0x0B, 0x01, 0x03, 0x04, 0x08, 0x0E,
+ 0x00, 0x0C, 0x01, 0x04, 0x00, 0x06, 0x3C, 0x00,
+ 0x22, 0x01, 0x13, 0x03, 0x50, 0x00, 0x3A, 0x05,
+ 0x0B, 0x02, 0x03, 0x04, 0x08, 0x06, 0x00, 0x0C,
+ 0x02, 0x18, 0x00, 0x06, 0x3C, 0x00, 0x22, 0x02,
+ 0x13, 0x04, 0x50, 0x00, 0x3A, 0x05, 0x0B, 0x03,
+ 0x03, 0x04, 0x08, 0x07, 0x00, 0x0C, 0x03, 0x0A,
+ 0x00, 0x06, 0x3C, 0x00, 0x24, 0x04, 0x24, 0x05,
+ 0x24, 0x03, 0x03, 0x04, 0x08, 0x07, 0x00, 0x03,
+ 0x04, 0x08, 0x07, 0x00, 0x22, 0x03, 0x13, 0x05,
+ 0xF0, 0x00, 0x3A, 0x0F, 0x03, 0x04, 0x08, 0x0A,
+ 0x00, 0x03, 0x04, 0x08, 0x0A, 0x00, 0x03, 0x04,
+ 0x08, 0x0A, 0x00, 0x03, 0x04, 0x08, 0x0A, 0x00,
+ 0x03, 0x04, 0x08, 0x0A, 0x00, 0x07, 0x1E, 0x00,
+ 0x22, 0x04, 0x13, 0x06, 0xF0, 0x00, 0x3A, 0x0F,
+ 0x0B, 0x04, 0x03, 0x04, 0x08, 0x05, 0x00, 0x0C,
+ 0x04, 0x12, 0x00, 0x07, 0x14, 0x00, 0x03, 0x04,
+ 0x08, 0x07, 0x00, 0x03, 0x04, 0x08, 0x07, 0x00,
+ 0x03, 0x04, 0x08, 0x07, 0x00, 0x06, 0x3C, 0x00,
+ 0x22, 0x05, 0x13, 0x07, 0xF0, 0x00, 0x3A, 0x0F,
+ 0x0B, 0x05, 0x03, 0x04, 0x08, 0x05, 0x00, 0x0C,
+ 0x05, 0x12, 0x00, 0x06, 0x3C, 0x00, 0x24, 0x06,
+ 0x03, 0x04, 0x08, 0x07, 0x00, 0x03, 0x04, 0x08,
+ 0x07, 0x00, 0x22, 0x06, 0x13, 0x08, 0x50, 0x00,
+ 0x3A, 0x05, 0x0B, 0x06, 0x03, 0x04, 0x08, 0x08,
+ 0x00, 0x0C, 0x06, 0x07, 0x00, 0x06, 0x3C, 0x00,
+ 0x24, 0x07, 0x03, 0x04, 0x08, 0x07, 0x00, 0x03,
+ 0x04, 0x08, 0x07, 0x00, 0x22, 0x07, 0x13, 0x09,
+ 0x50, 0x00, 0x3A, 0x05, 0x03, 0x04, 0x08, 0x07,
+ 0x00, 0x0B, 0x07, 0x03, 0x04, 0x08, 0x07, 0x00,
+ 0x0C, 0x07, 0x0A, 0x00, 0x06, 0x3C, 0x00, 0x22,
+ 0x08, 0x03, 0x04, 0x08, 0x07, 0x00, 0x13, 0x0A,
+ 0x50, 0x00, 0x3A, 0x05, 0x0B, 0x08, 0x03, 0x04,
+ 0x08, 0x07, 0x00, 0x0C, 0x08, 0x0F, 0x00, 0x06,
+ 0x3C, 0x00, 0x24, 0x0A, 0x22, 0x09, 0x13, 0x0B,
+ 0xF0, 0x00, 0x3A, 0x0F, 0x03, 0x04, 0x08, 0x07,
+ 0x00, 0x03, 0x04, 0x08, 0x07, 0x00, 0x03, 0x04,
+ 0x08, 0x07, 0x00, 0x03, 0x04, 0x08, 0x07, 0x00,
+ 0x03, 0x04, 0x08, 0x07, 0x00, 0x03, 0x04, 0x08,
+ 0x07, 0x00, 0x03, 0x04, 0x08, 0x07, 0x00, 0x03,
+ 0x04, 0x08, 0x07, 0x00, 0x03, 0x04, 0x08, 0x07,
+ 0x00, 0x07, 0x3C, 0x00, 0x22, 0x0A, 0x03, 0x04,
+ 0x08, 0x07, 0x00, 0x13, 0x0C, 0xF0, 0x00, 0x3A,
+ 0x0F, 0x0B, 0x09, 0x03, 0x04, 0x08, 0x05, 0x00,
+ 0x0C, 0x09, 0x0F, 0x00, 0x06, 0x3C, 0x00, 0x24,
+ 0x0B, 0x24, 0x0C, 0x24, 0x0D, 0x03, 0x04, 0x08,
+ 0x07, 0x00, 0x03, 0x04, 0x08, 0x07, 0x00, 0x03,
+ 0x04, 0x08, 0x07, 0x00, 0x03, 0x04, 0x08, 0x07,
+ 0x00, 0x03, 0x04, 0x08, 0x07, 0x00, 0x03, 0x04,
+ 0x08, 0x07, 0x00, 0x22, 0x0B, 0x13, 0x0D, 0x50,
+ 0x00, 0x3A, 0x05, 0x0B, 0x0A, 0x03, 0x04, 0x08,
+ 0x08, 0x00, 0x0C, 0x0A, 0x0E, 0x00, 0x06, 0x3C,
+ 0x00, 0x0B, 0x0B, 0x03, 0x04, 0x08, 0x07, 0x00,
+ 0x0C, 0x0B, 0x02, 0x00, 0x1B, 0x20, 0x0B, 0x0C,
+ 0x03, 0x04, 0x08, 0x07, 0x00, 0x0C, 0x0C, 0x06,
+ 0x00, 0x1B, 0x21, 0x0B, 0x0D, 0x03, 0x04, 0x08,
+ 0x07, 0x00, 0x0C, 0x0D, 0x0C, 0x00, 0x1B, 0x22,
+ 0x0B, 0x0E, 0x03, 0x04, 0x08, 0x07, 0x00, 0x0C,
+ 0x0E, 0x0B, 0x00, 0x22, 0x0C, 0x13, 0x0E, 0x50,
+ 0x00, 0x3A, 0x05, 0x0B, 0x0F, 0x03, 0x04, 0x08,
+ 0x07, 0x00, 0x0C, 0x0F, 0x09, 0x00, 0x06, 0x3C,
+ 0x00, 0x03, 0x04, 0x08, 0x07, 0x00, 0x22, 0x0D,
+ 0x13, 0x0F, 0x50, 0x00, 0x3A, 0x05, 0x0B, 0x10,
+ 0x03, 0x04, 0x08, 0x07, 0x00, 0x0C, 0x10, 0x09,
+ 0x00, 0x06, 0x3C, 0x00, 0x24, 0x0E, 0x24, 0x0F,
+ 0x03, 0x04, 0x08, 0x07, 0x00, 0x22, 0x0E, 0x13,
+ 0x10, 0x50, 0x00, 0x3A, 0x05, 0x0B, 0x11, 0x03,
+ 0x04, 0x08, 0x07, 0x00, 0x0C, 0x11, 0x0F, 0x00,
+ 0x06, 0x3C, 0x00, 0x03, 0x04, 0x08, 0x07, 0x00,
+ 0x22, 0x0F, 0x13, 0x11, 0x50, 0x00, 0x3A, 0x05,
+ 0x0B, 0x12, 0x03, 0x04, 0x08, 0x05, 0x00, 0x0C,
+ 0x12, 0x14, 0x00, 0x07, 0x3C, 0x00, 0x0B, 0x13,
+ 0x03, 0x04, 0x08, 0x07, 0x00, 0x0C, 0x13, 0x06,
+ 0x00, 0x1B, 0x23, 0x22, 0x1C, 0x0B, 0x13, 0x03,
+ 0x04, 0x08, 0x07, 0x00, 0x0C, 0x13, 0x06, 0x00,
+ 0x02, 0x04, 0x45, 0x10, 0x00, 0x3A, 0x14, 0x07,
+ 0x78, 0x00, 0x16, 0x1C, 0x01, 0x01, 0x04, 0x20
+};
+
+static const ByteProvider k1KallakMalcolmSeqDOSCDDemoProvider = { ARRAYSIZE(k1KallakMalcolmSeqDOSCDDemo), k1KallakMalcolmSeqDOSCDDemo };
+
+static const byte k1ForestSeqDOSCDDemo[627] = {
+ 0x00, 0x05, 0x01, 0x00, 0x07, 0x01, 0x1D, 0x02,
+ 0x07, 0x00, 0x00, 0x00, 0x08, 0x02, 0x05, 0x00,
+ 0x98, 0x00, 0x38, 0x0B, 0x00, 0x03, 0x07, 0x19,
+ 0x02, 0x07, 0x09, 0x00, 0x0C, 0x00, 0x0F, 0x00,
+ 0x22, 0x37, 0x03, 0x07, 0x19, 0x02, 0x07, 0x09,
+ 0x00, 0x03, 0x07, 0x19, 0x02, 0x07, 0x09, 0x00,
+ 0x03, 0x07, 0x19, 0x02, 0x07, 0x09, 0x00, 0x03,
+ 0x07, 0x19, 0x02, 0x07, 0x09, 0x00, 0x03, 0x07,
+ 0x19, 0x02, 0x07, 0x09, 0x00, 0x03, 0x07, 0x19,
+ 0x02, 0x07, 0x09, 0x00, 0x1B, 0x16, 0x03, 0x07,
+ 0x02, 0x05, 0x01, 0x98, 0x00, 0x38, 0x19, 0x02,
+ 0x19, 0x03, 0x07, 0x09, 0x00, 0x03, 0x07, 0x02,
+ 0x05, 0x03, 0x98, 0x00, 0x38, 0x19, 0x02, 0x19,
+ 0x03, 0x07, 0x09, 0x00, 0x03, 0x07, 0x02, 0x05,
+ 0x01, 0x98, 0x00, 0x38, 0x19, 0x02, 0x19, 0x03,
+ 0x07, 0x09, 0x00, 0x03, 0x07, 0x02, 0x05, 0x00,
+ 0x98, 0x00, 0x38, 0x19, 0x02, 0x19, 0x03, 0x07,
+ 0x09, 0x00, 0x03, 0x07, 0x19, 0x02, 0x07, 0x09,
+ 0x00, 0x03, 0x07, 0x19, 0x02, 0x07, 0x09, 0x00,
+ 0x03, 0x07, 0x19, 0x02, 0x07, 0x09, 0x00, 0x03,
+ 0x07, 0x19, 0x02, 0x07, 0x09, 0x00, 0x03, 0x07,
+ 0x19, 0x02, 0x07, 0x09, 0x00, 0x03, 0x07, 0x19,
+ 0x02, 0x07, 0x09, 0x00, 0x03, 0x07, 0x19, 0x02,
+ 0x07, 0x09, 0x00, 0x03, 0x07, 0x19, 0x02, 0x07,
+ 0x09, 0x00, 0x03, 0x07, 0x19, 0x02, 0x07, 0x09,
+ 0x00, 0x03, 0x07, 0x19, 0x02, 0x07, 0x09, 0x00,
+ 0x03, 0x07, 0x19, 0x02, 0x07, 0x09, 0x00, 0x22,
+ 0x38, 0x0B, 0x09, 0x03, 0x07, 0x19, 0x02, 0x07,
+ 0x09, 0x00, 0x0C, 0x09, 0x21, 0x00, 0x1B, 0x16,
+ 0x03, 0x07, 0x02, 0x05, 0x01, 0x98, 0x00, 0x38,
+ 0x19, 0x02, 0x19, 0x03, 0x07, 0x09, 0x00, 0x03,
+ 0x07, 0x02, 0x05, 0x03, 0x98, 0x00, 0x38, 0x19,
+ 0x02, 0x19, 0x03, 0x07, 0x09, 0x00, 0x03, 0x07,
+ 0x02, 0x05, 0x01, 0x98, 0x00, 0x38, 0x19, 0x02,
+ 0x19, 0x03, 0x07, 0x09, 0x00, 0x03, 0x07, 0x02,
+ 0x05, 0x04, 0x98, 0x00, 0x38, 0x19, 0x02, 0x19,
+ 0x03, 0x07, 0x09, 0x00, 0x03, 0x07, 0x19, 0x02,
+ 0x07, 0x09, 0x00, 0x22, 0x39, 0x03, 0x07, 0x19,
+ 0x02, 0x07, 0x09, 0x00, 0x03, 0x07, 0x02, 0x05,
+ 0x05, 0x98, 0x00, 0x38, 0x19, 0x02, 0x19, 0x03,
+ 0x07, 0x09, 0x00, 0x03, 0x07, 0x19, 0x02, 0x07,
+ 0x09, 0x00, 0x03, 0x07, 0x19, 0x02, 0x07, 0x09,
+ 0x00, 0x03, 0x07, 0x02, 0x05, 0x06, 0x98, 0x00,
+ 0x38, 0x19, 0x02, 0x19, 0x03, 0x07, 0x09, 0x00,
+ 0x03, 0x07, 0x19, 0x02, 0x07, 0x09, 0x00, 0x03,
+ 0x07, 0x19, 0x02, 0x07, 0x09, 0x00, 0x1B, 0x25,
+ 0x0B, 0x00, 0x03, 0x07, 0x03, 0x05, 0x19, 0x02,
+ 0x19, 0x03, 0x07, 0x09, 0x00, 0x0C, 0x00, 0x09,
+ 0x00, 0x0B, 0x06, 0x03, 0x07, 0x19, 0x02, 0x07,
+ 0x09, 0x00, 0x0C, 0x06, 0x0E, 0x00, 0x22, 0x3A,
+ 0x03, 0x07, 0x19, 0x02, 0x07, 0x09, 0x00, 0x03,
+ 0x07, 0x19, 0x02, 0x07, 0x09, 0x00, 0x03, 0x07,
+ 0x19, 0x02, 0x07, 0x09, 0x00, 0x03, 0x07, 0x19,
+ 0x02, 0x07, 0x09, 0x00, 0x1B, 0x17, 0x0B, 0x01,
+ 0x03, 0x07, 0x03, 0x05, 0x19, 0x02, 0x19, 0x03,
+ 0x07, 0x09, 0x00, 0x0C, 0x01, 0x0D, 0x00, 0x1B,
+ 0x25, 0x0B, 0x07, 0x03, 0x07, 0x19, 0x02, 0x07,
+ 0x09, 0x00, 0x0C, 0x07, 0x08, 0x00, 0x03, 0x07,
+ 0x19, 0x02, 0x07, 0x09, 0x00, 0x03, 0x07, 0x19,
+ 0x02, 0x07, 0x09, 0x00, 0x03, 0x07, 0x19, 0x02,
+ 0x07, 0x09, 0x00, 0x03, 0x07, 0x19, 0x02, 0x07,
+ 0x09, 0x00, 0x1B, 0x18, 0x03, 0x07, 0x03, 0x05,
+ 0x19, 0x02, 0x19, 0x03, 0x07, 0x09, 0x00, 0x22,
+ 0x3B, 0x03, 0x07, 0x03, 0x05, 0x19, 0x02, 0x19,
+ 0x03, 0x07, 0x09, 0x00, 0x03, 0x07, 0x03, 0x05,
+ 0x19, 0x02, 0x19, 0x03, 0x07, 0x09, 0x00, 0x03,
+ 0x07, 0x03, 0x05, 0x19, 0x02, 0x19, 0x03, 0x07,
+ 0x09, 0x00, 0x03, 0x07, 0x03, 0x05, 0x19, 0x02,
+ 0x19, 0x03, 0x07, 0x09, 0x00, 0x07, 0x12, 0x00,
+ 0x1B, 0x25, 0x0B, 0x02, 0x03, 0x07, 0x03, 0x05,
+ 0x19, 0x02, 0x19, 0x03, 0x07, 0x09, 0x00, 0x0C,
+ 0x02, 0x07, 0x00, 0x03, 0x07, 0x19, 0x02, 0x07,
+ 0x09, 0x00, 0x03, 0x07, 0x19, 0x02, 0x07, 0x09,
+ 0x00, 0x03, 0x07, 0x19, 0x02, 0x07, 0x09, 0x00,
+ 0x03, 0x07, 0x19, 0x02, 0x07, 0x09, 0x00, 0x03,
+ 0x07, 0x19, 0x02, 0x07, 0x09, 0x00, 0x22, 0x3C,
+ 0x0B, 0x03, 0x03, 0x07, 0x19, 0x02, 0x07, 0x09,
+ 0x00, 0x0C, 0x03, 0x23, 0x00, 0x16, 0x01, 0x07,
+ 0x01, 0x05, 0x20
+};
+
+static const ByteProvider k1ForestSeqDOSCDDemoProvider = { ARRAYSIZE(k1ForestSeqDOSCDDemo), k1ForestSeqDOSCDDemo };
+
+static const char *const k1IntroCPSStringsDOSCDDemo[2] = {
+ "gemcuti.cps",
+ "tree.cps"
+};
+
+static const StringListProvider k1IntroCPSStringsDOSCDDemoProvider = { ARRAYSIZE(k1IntroCPSStringsDOSCDDemo), k1IntroCPSStringsDOSCDDemo };
+
+static const char *const k1IntroCOLStringsDOSCDDemo[4] = {
+ "kallak.col",
+ "tree_exp.col",
+ "ww.col",
+ "mal-kal.col"
+};
+
+static const StringListProvider k1IntroCOLStringsDOSCDDemoProvider = { ARRAYSIZE(k1IntroCOLStringsDOSCDDemo), k1IntroCOLStringsDOSCDDemo };
+
+static const char *const k1IntroWSAStringsDOSCDDemo[11] = {
+ "kallak.wsa",
+ "tree1.wsa",
+ "tree2.wsa",
+ "westwood.wsa",
+ "mal-kal.wsa",
+ "destruct.wsa",
+ "kyrandia.wsa",
+ "shore.wsa",
+ "reunion.wsa",
+ "reuniont.wsa",
+ "latern.wsa"
+};
+
+static const StringListProvider k1IntroWSAStringsDOSCDDemoProvider = { ARRAYSIZE(k1IntroWSAStringsDOSCDDemo), k1IntroWSAStringsDOSCDDemo };
+
+static const char *const k1AudioTracksIntroDOSCDDemo[2] = {
+ "intro",
+ "intro"
+};
+
+static const StringListProvider k1AudioTracksIntroDOSCDDemoProvider = { ARRAYSIZE(k1AudioTracksIntroDOSCDDemo), k1AudioTracksIntroDOSCDDemo };
+
diff --git a/devtools/create_kyradat/resources/lok_dos_cddemo_english.h b/devtools/create_kyradat/resources/lok_dos_cddemo_english.h
new file mode 100644
index 0000000000..538bab63b3
--- /dev/null
+++ b/devtools/create_kyradat/resources/lok_dos_cddemo_english.h
@@ -0,0 +1,56 @@
+static const char *const k1IntroStringsDOSCDDemoEnglish[51] = {
+ "This is a text test - 1",
+ "This is a text test - 2",
+ "Greetings, Kallak...",
+ "...Powerful leader of the Royal Mystics!",
+ "Did I frighten you?",
+ "Malcolm!",
+ "I heard yesterday of your escape.",
+ "And have expected you before now.",
+ "Why would I rush?",
+ "I rule this land!",
+ "Your puny curse restrains me naught.",
+ "So, slay me now!",
+ "I have little magic left.",
+ "I mean to harm you, have no doubt...",
+ "...Now you are stone...",
+ "...Yet I leave your eyes.",
+ "I shed no tears for Kyrandia...",
+ "...But cannot deny you yours.",
+ "Malcolm the Jester has broken free!",
+ "He now controls the Kyragem...",
+ "...source of all magic in Kyrandia!",
+ "",
+ "How dare you trip ME!",
+ "But no, something special for you...",
+ "A humorous hex!",
+ "But I shall give fair warning.",
+ "Don't jump on THAT tree!",
+ "Don't climb up THAT tree little squirrel!",
+ "Boo!",
+ "Tis funnier that way...",
+ "...Is it not?",
+ "Ha ha ha...",
+ "Aren't fingers wonderful?",
+ "It's great to be alive!",
+ "Brandon!",
+ "Grandfather! We did it!",
+ "No! YOU did it!",
+ "Long live King Brandon!",
+ "Long live the Royal Mystics!",
+ "Now, let's go put Kyrandia back together!",
+ "Good idea!",
+ "As my first Royal Proclamation...",
+ "I name sandals as the official footwear of Kyrandia!",
+ "Well done, Brandon!",
+ "The Land no longer weeps...",
+ "And your friends have been restored!",
+ "Dear Brynn...",
+ "Malcolm has broken free!",
+ "Soon he will come for me.",
+ "Please help Brandon...",
+ ""
+};
+
+static const StringListProvider k1IntroStringsDOSCDDemoEnglishProvider = { ARRAYSIZE(k1IntroStringsDOSCDDemoEnglish), k1IntroStringsDOSCDDemoEnglish };
+
diff --git a/devtools/create_kyradat/resources/lok_dos_demo.h b/devtools/create_kyradat/resources/lok_dos_demo.h
new file mode 100644
index 0000000000..c8f09337de
--- /dev/null
+++ b/devtools/create_kyradat/resources/lok_dos_demo.h
@@ -0,0 +1,112 @@
+static const byte k1WestwoodLogoSeqDOSDemo[68] = {
+ 0x00, 0x02, 0x01, 0x02, 0x02, 0x00, 0x00, 0x00,
+ 0x00, 0x16, 0x01, 0x06, 0x06, 0x00, 0x06, 0x3C,
+ 0x00, 0x0A, 0x00, 0x03, 0x02, 0x16, 0x01, 0x0B,
+ 0x00, 0x08, 0x00, 0x06, 0x3C, 0x00, 0x0A, 0x01,
+ 0x03, 0x02, 0x16, 0x01, 0x0B, 0x01, 0x0B, 0x00,
+ 0x06, 0x78, 0x00, 0x02, 0x02, 0x0A, 0x00, 0x00,
+ 0x00, 0x16, 0x01, 0x06, 0x06, 0x00, 0x0A, 0x02,
+ 0x04, 0x02, 0x16, 0x01, 0x0B, 0x02, 0x09, 0x00,
+ 0x13, 0x01, 0x02, 0x1A
+};
+
+static const ByteProvider k1WestwoodLogoSeqDOSDemoProvider = { ARRAYSIZE(k1WestwoodLogoSeqDOSDemo), k1WestwoodLogoSeqDOSDemo };
+
+static const byte k1KyrandiaLogoSeqDOSDemo[84] = {
+ 0x15, 0x00, 0x02, 0x00, 0x05, 0x01, 0x02, 0x05,
+ 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x06, 0x06,
+ 0x00, 0x06, 0x3C, 0x00, 0x0A, 0x00, 0x03, 0x05,
+ 0x16, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x06, 0x3C,
+ 0x00, 0x0A, 0x01, 0x03, 0x05, 0x16, 0x00, 0x0B,
+ 0x01, 0x0F, 0x00, 0x06, 0x3C, 0x00, 0x0A, 0x02,
+ 0x04, 0x05, 0x16, 0x00, 0x0B, 0x02, 0x0F, 0x00,
+ 0x02, 0x05, 0x0D, 0x00, 0x00, 0x00, 0x16, 0x00,
+ 0x06, 0x06, 0x00, 0x06, 0x78, 0x00, 0x0A, 0x02,
+ 0x04, 0x05, 0x16, 0x00, 0x0B, 0x02, 0x0C, 0x00,
+ 0x13, 0x01, 0x05, 0x1A
+};
+
+static const ByteProvider k1KyrandiaLogoSeqDOSDemoProvider = { ARRAYSIZE(k1KyrandiaLogoSeqDOSDemo), k1KyrandiaLogoSeqDOSDemo };
+
+static const char *const k1IntroCPSStringsDOSDemo[1] = {
+ "mal-kal.cps"
+};
+
+static const StringListProvider k1IntroCPSStringsDOSDemoProvider = { ARRAYSIZE(k1IntroCPSStringsDOSDemo), k1IntroCPSStringsDOSDemo };
+
+static const char *const k1IntroCOLStringsDOSDemo[7] = {
+ "kallak.col",
+ "demo1.col",
+ "demo2.col",
+ "demo3.col",
+ "demo4.col",
+ "ww.col",
+ "mal-kal.col"
+};
+
+static const StringListProvider k1IntroCOLStringsDOSDemoProvider = { ARRAYSIZE(k1IntroCOLStringsDOSDemo), k1IntroCOLStringsDOSDemo };
+
+static const char *const k1IntroWSAStringsDOSDemo[7] = {
+ "kallak.wsa",
+ "demo1.wsa",
+ "westwood.wsa",
+ "demo2.wsa",
+ "demo3.wsa",
+ "kyrandia.wsa",
+ "demo4.wsa"
+};
+
+static const StringListProvider k1IntroWSAStringsDOSDemoProvider = { ARRAYSIZE(k1IntroWSAStringsDOSDemo), k1IntroWSAStringsDOSDemo };
+
+static const byte k1Demo1SeqDOSDemo[38] = {
+ 0x00, 0x01, 0x00, 0x0C, 0x01, 0x02, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x09, 0x14, 0x06, 0x01, 0x00,
+ 0x06, 0x3C, 0x00, 0x0A, 0x00, 0x03, 0x01, 0x06,
+ 0x04, 0x00, 0x0B, 0x00, 0x19, 0x00, 0x06, 0x78,
+ 0x00, 0x13, 0x0E, 0x01, 0x01, 0x1A
+};
+
+static const ByteProvider k1Demo1SeqDOSDemoProvider = { ARRAYSIZE(k1Demo1SeqDOSDemo), k1Demo1SeqDOSDemo };
+
+static const byte k1Demo2SeqDOSDemo[35] = {
+ 0x00, 0x03, 0x00, 0x0C, 0x02, 0x02, 0x03, 0x00,
+ 0x00, 0x00, 0x00, 0x09, 0x14, 0x06, 0x01, 0x00,
+ 0x06, 0x3C, 0x00, 0x0A, 0x00, 0x03, 0x03, 0x06,
+ 0x04, 0x00, 0x0B, 0x00, 0x71, 0x00, 0x13, 0x0E,
+ 0x01, 0x03, 0x1A
+};
+
+static const ByteProvider k1Demo2SeqDOSDemoProvider = { ARRAYSIZE(k1Demo2SeqDOSDemo), k1Demo2SeqDOSDemo };
+
+static const byte k1Demo3SeqDOSDemo[89] = {
+ 0x00, 0x04, 0x00, 0x0C, 0x03, 0x02, 0x04, 0x00,
+ 0x00, 0x00, 0x00, 0x09, 0x14, 0x0A, 0x00, 0x03,
+ 0x04, 0x06, 0x07, 0x00, 0x03, 0x04, 0x06, 0x07,
+ 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x06,
+ 0x07, 0x00, 0x0B, 0x00, 0x0E, 0x00, 0x03, 0x04,
+ 0x06, 0x07, 0x00, 0x03, 0x04, 0x06, 0x07, 0x00,
+ 0x0A, 0x01, 0x03, 0x04, 0x06, 0x07, 0x00, 0x0B,
+ 0x01, 0x0B, 0x00, 0x0A, 0x02, 0x02, 0x04, 0x0F,
+ 0x00, 0x00, 0x00, 0x06, 0x07, 0x00, 0x03, 0x04,
+ 0x06, 0x07, 0x00, 0x03, 0x04, 0x06, 0x07, 0x00,
+ 0x0B, 0x02, 0x13, 0x00, 0x13, 0x0E, 0x01, 0x04,
+ 0x1A
+};
+
+static const ByteProvider k1Demo3SeqDOSDemoProvider = { ARRAYSIZE(k1Demo3SeqDOSDemo), k1Demo3SeqDOSDemo };
+
+static const byte k1Demo4SeqDOSDemo[32] = {
+ 0x00, 0x06, 0x00, 0x0C, 0x04, 0x02, 0x06, 0x00,
+ 0x00, 0x00, 0x00, 0x09, 0x14, 0x0A, 0x00, 0x03,
+ 0x06, 0x06, 0x04, 0x00, 0x0B, 0x00, 0x39, 0x00,
+ 0x06, 0x5A, 0x00, 0x13, 0x0E, 0x01, 0x06, 0x1A
+};
+
+static const ByteProvider k1Demo4SeqDOSDemoProvider = { ARRAYSIZE(k1Demo4SeqDOSDemo), k1Demo4SeqDOSDemo };
+
+static const char *const k1AudioTracksIntroDOSDemo[1] = {
+ "intro"
+};
+
+static const StringListProvider k1AudioTracksIntroDOSDemoProvider = { ARRAYSIZE(k1AudioTracksIntroDOSDemo), k1AudioTracksIntroDOSDemo };
+
diff --git a/devtools/create_kyradat/resources/lok_dos_demo_english.h b/devtools/create_kyradat/resources/lok_dos_demo_english.h
new file mode 100644
index 0000000000..f974718856
--- /dev/null
+++ b/devtools/create_kyradat/resources/lok_dos_demo_english.h
@@ -0,0 +1,37 @@
+static const char *const k1IntroStringsDOSDemoEnglish[32] = {
+ "This is a text test - 1",
+ "This is a text test - 2",
+ "Greetings, Kallak,",
+ "Powerful leader of the Royal Mystics!",
+ "Did I frighten you?",
+ "Malcom!",
+ "I heard yesterday of your escape.",
+ "And have expected you before now.",
+ "Why would I rush?",
+ "I rule this land.",
+ "Your puny curse restrains me naught.",
+ "So, slay me now.",
+ "I have little magic left.",
+ "I mean to harm you, have no doubt,",
+ "Now you are stone,",
+ "Yet I leave your eyes.",
+ "I shed no tears for Kyrandia,",
+ "But cannot deny you yours.",
+ "Malcom the jester has broken free.",
+ "He now controls the Kyragem",
+ "source of all magic in Kyrandia.",
+ "",
+ "How dare you trip ME!",
+ "But no,...something special for you.",
+ "A humorous hex!",
+ "But, I am fair!",
+ "And I shall give fair warning!",
+ "Don't climb up THAT tree little squirrel!",
+ "Boo!",
+ "Tis funnier that way,",
+ "Is it not?",
+ "Ha ha ha..."
+};
+
+static const StringListProvider k1IntroStringsDOSDemoEnglishProvider = { ARRAYSIZE(k1IntroStringsDOSDemoEnglish), k1IntroStringsDOSDemoEnglish };
+
diff --git a/devtools/create_kyradat/resources/lok_dos_english.h b/devtools/create_kyradat/resources/lok_dos_english.h
new file mode 100644
index 0000000000..d53bad80af
--- /dev/null
+++ b/devtools/create_kyradat/resources/lok_dos_english.h
@@ -0,0 +1,335 @@
+static const char *const k1IntroStringsDOSEnglish[51] = {
+ "This is a text test - 1",
+ "This is a text test - 2",
+ "Greetings, Kallak...",
+ "...Powerful leader of the Royal Mystics!",
+ "Did I frighten you?",
+ "Malcolm!",
+ "I heard yesterday of your escape.",
+ "And have expected you before now.",
+ "Why would I rush?",
+ "I rule this land!",
+ "Your puny curse restrains me naught.",
+ "So, slay me now!",
+ "I have little magic left.",
+ "I mean to harm you, have no doubt...",
+ "...Now you are stone...",
+ "...Yet I leave your eyes.",
+ "I shed no tears for Kyrandia...",
+ "...But cannot deny you yours.",
+ "Malcolm the Jester has broken free!",
+ "He now controls the Kyragem...",
+ "...source of all magic in Kyrandia!",
+ "",
+ "How dare you trip ME!",
+ "But no, something special for you...",
+ "A humorous hex!",
+ "But I shall give fair warning.",
+ "Don't jump on THAT tree!",
+ "Don't climb up THAT tree little squirrel!",
+ "Boo!",
+ "Tis funnier that way...",
+ "...Is it not?",
+ "Ha ha ha...",
+ "Aren't fingers wonderful?",
+ "It's great to be alive!",
+ "Brandon!",
+ "Grandfather! We did it!",
+ "No! YOU did it!",
+ "Long live King Brandon!",
+ "Long live the Royal Mystics!",
+ "Now, let's go put Kyrandia back together!",
+ "Good idea!",
+ "As my first Royal Proclamation...",
+ "I name sandals as the official footwear of Kyrandia!",
+ "Well done, Brandon!",
+ "The Land no longer weeps...",
+ "And your friends have been restored!",
+ "Dear Brynn...",
+ "Malcolm has broken free!",
+ "Soon he will come for me.",
+ "Please help Brandon...",
+ ""
+};
+
+static const StringListProvider k1IntroStringsDOSEnglishProvider = { ARRAYSIZE(k1IntroStringsDOSEnglish), k1IntroStringsDOSEnglish };
+
+static const char *const k1ItemNamesDOSEnglish[107] = {
+ "Garnet",
+ "Amethyst",
+ "Aquamarine",
+ "Diamond",
+ "Emerald",
+ "Pearl",
+ "Ruby",
+ "Peridot",
+ "Sapphire",
+ "Opal",
+ "Topaz",
+ "Onyx",
+ "Sunstone",
+ "Moonstone",
+ "Rainbowstone",
+ "Lodestone",
+ "Rose",
+ "Tulip",
+ "Orchid",
+ "Silver Rose",
+ "Silver Statuette",
+ "Silver Coin",
+ "Gold Coin",
+ "Gold Ring",
+ "Royal Chalice",
+ "Pinecone",
+ "Acorn",
+ "Walnut",
+ "Everglowing Fireberries",
+ "Fireberries",
+ "Fireberries",
+ "Fireberries",
+ "Fireberries",
+ "Fireberries",
+ "Fish",
+ "Fish Bone",
+ "Mutton Leg",
+ "Bone",
+ "Apple",
+ "Apple Core",
+ "Blueberries",
+ "Mushroom",
+ "Note",
+ "Marble",
+ "Saw",
+ "Ankh",
+ "Feather",
+ "Egg",
+ "Leaf",
+ "Shamrock",
+ "Fallen Star",
+ "Crystal Ball",
+ "Teardrop",
+ "Mirror",
+ "Ice Shard",
+ "Flute",
+ "Hourglass",
+ "Iron Key",
+ "Jade Key",
+ "Obsidion Key",
+ "Red Potion",
+ "Red Potion",
+ "Blue Potion",
+ "Blue Potion",
+ "Yellow Potion",
+ "Yellow Potion",
+ "Green Potion",
+ "Orange Potion",
+ "Purple Potion",
+ "Potion of Rainbows",
+ "Fresh Water",
+ "Fresh Water",
+ "Salt Water",
+ "Salt Water",
+ "Mineral Water",
+ "Mineral Water",
+ "Magical Water",
+ "Magical Water",
+ "Empty Flask",
+ "Empty Flask",
+ "Scroll",
+ "Scroll",
+ "Scroll",
+ "Scroll",
+ "Scroll",
+ "Scroll",
+ "Scroll",
+ "Scroll",
+ "Scroll",
+ "Scroll",
+ "Parchment scrap",
+ "Parchment scrap",
+ "Parchment scrap",
+ "Parchment scrap",
+ "Parchment scrap",
+ "Red Magestone",
+ "Orange Magestone",
+ "Yellow Magestone",
+ "Green Magestone",
+ "Blue-Green Magestone",
+ "Blue Magestone",
+ "Purple Magestone",
+ "Heavy rock",
+ "Royal Crown",
+ "Royal Sceptre",
+ "Gold key",
+ "Unknown item"
+};
+
+static const StringListProvider k1ItemNamesDOSEnglishProvider = { ARRAYSIZE(k1ItemNamesDOSEnglish), k1ItemNamesDOSEnglish };
+
+static const char *const k1TakenStringsDOSEnglish[2] = {
+ " taken.",
+ " taken."
+};
+
+static const StringListProvider k1TakenStringsDOSEnglishProvider = { ARRAYSIZE(k1TakenStringsDOSEnglish), k1TakenStringsDOSEnglish };
+
+static const char *const k1PlacedStringsDOSEnglish[1] = {
+ " placed."
+};
+
+static const StringListProvider k1PlacedStringsDOSEnglishProvider = { ARRAYSIZE(k1PlacedStringsDOSEnglish), k1PlacedStringsDOSEnglish };
+
+static const char *const k1DroppedStringsDOSEnglish[1] = {
+ " dropped."
+};
+
+static const StringListProvider k1DroppedStringsDOSEnglishProvider = { ARRAYSIZE(k1DroppedStringsDOSEnglish), k1DroppedStringsDOSEnglish };
+
+static const char *const k1NoDropStringsDOSEnglish[2] = {
+ "You can't drop any more items in this scene.",
+ "You can't put that there."
+};
+
+static const StringListProvider k1NoDropStringsDOSEnglishProvider = { ARRAYSIZE(k1NoDropStringsDOSEnglish), k1NoDropStringsDOSEnglish };
+
+static const char *const k1PutDownStringDOSEnglish[1] = {
+ "Maybe I'd better put this down first."
+};
+
+static const StringListProvider k1PutDownStringDOSEnglishProvider = { ARRAYSIZE(k1PutDownStringDOSEnglish), k1PutDownStringDOSEnglish };
+
+static const char *const k1WaitAmuletStringDOSEnglish[1] = {
+ "I guess I'll have to wait for my Amulet to regain its power."
+};
+
+static const StringListProvider k1WaitAmuletStringDOSEnglishProvider = { ARRAYSIZE(k1WaitAmuletStringDOSEnglish), k1WaitAmuletStringDOSEnglish };
+
+static const char *const k1BlackJewelStringDOSEnglish[1] = {
+ "It's a jewel, but why is it black?"
+};
+
+static const StringListProvider k1BlackJewelStringDOSEnglishProvider = { ARRAYSIZE(k1BlackJewelStringDOSEnglish), k1BlackJewelStringDOSEnglish };
+
+static const char *const k1HealingTipStringDOSEnglish[1] = {
+ "Gee, this could come in handy if I get hurt."
+};
+
+static const StringListProvider k1HealingTipStringDOSEnglishProvider = { ARRAYSIZE(k1HealingTipStringDOSEnglish), k1HealingTipStringDOSEnglish };
+
+static const char *const k1PoisonGoneStringDOSEnglish[2] = {
+ "Amazing!",
+ "The effects of the poison are gone!"
+};
+
+static const StringListProvider k1PoisonGoneStringDOSEnglishProvider = { ARRAYSIZE(k1PoisonGoneStringDOSEnglish), k1PoisonGoneStringDOSEnglish };
+
+static const char *const k1ThePoisonStringsDOSEnglish[4] = {
+ "The poison...",
+ "I can't breathe...",
+ "I don't feel so good...",
+ "That snake must\rbe poisonous!"
+};
+
+static const StringListProvider k1ThePoisonStringsDOSEnglishProvider = { ARRAYSIZE(k1ThePoisonStringsDOSEnglish), k1ThePoisonStringsDOSEnglish };
+
+static const char *const k1FluteStringsDOSEnglish[2] = {
+ "Not very impressive sounding.",
+ "That last note sure was high!"
+};
+
+static const StringListProvider k1FluteStringsDOSEnglishProvider = { ARRAYSIZE(k1FluteStringsDOSEnglish), k1FluteStringsDOSEnglish };
+
+static const char *const k1WispJewelStringsDOSEnglish[3] = {
+ "I'm not really feeling up to it right now.",
+ "I probably should put down my ",
+ ", first."
+};
+
+static const StringListProvider k1WispJewelStringsDOSEnglishProvider = { ARRAYSIZE(k1WispJewelStringsDOSEnglish), k1WispJewelStringsDOSEnglish };
+
+static const char *const k1MagicJewelStringsDOSEnglish[1] = {
+ "That felt strange."
+};
+
+static const StringListProvider k1MagicJewelStringsDOSEnglishProvider = { ARRAYSIZE(k1MagicJewelStringsDOSEnglish), k1MagicJewelStringsDOSEnglish };
+
+static const char *const k1FlaskFullStringDOSEnglish[1] = {
+ "This flask is already full."
+};
+
+static const StringListProvider k1FlaskFullStringDOSEnglishProvider = { ARRAYSIZE(k1FlaskFullStringDOSEnglish), k1FlaskFullStringDOSEnglish };
+
+static const char *const k1FullFlaskStringDOSEnglish[4] = {
+ "The flask is now filled\rwith fresh, sparkling water.",
+ "The flask is now filled\rwith salt water.",
+ "The flask is now filled\rwith mineral water.",
+ "Magic water."
+};
+
+static const StringListProvider k1FullFlaskStringDOSEnglishProvider = { ARRAYSIZE(k1FullFlaskStringDOSEnglish), k1FullFlaskStringDOSEnglish };
+
+static const char *const k1OutroHomeStringDOSEnglish[1] = {
+ "Home"
+};
+
+static const StringListProvider k1OutroHomeStringDOSEnglishProvider = { ARRAYSIZE(k1OutroHomeStringDOSEnglish), k1OutroHomeStringDOSEnglish };
+
+static const char *const k1VeryCleverStringDOSEnglish[1] = {
+ "Very clever! But your feeble efforts are futile."
+};
+
+static const StringListProvider k1VeryCleverStringDOSEnglishProvider = { ARRAYSIZE(k1VeryCleverStringDOSEnglish), k1VeryCleverStringDOSEnglish };
+
+static const char *const k1GUIStringsDOSEnglish[28] = {
+ "The Legend of Kyrandia",
+ "Load a game",
+ "Save this game",
+ "Game controls",
+ "Quit playing",
+ "Resume game",
+ "Game Controls",
+ "Which game would you like to reload?",
+ "Select a position to save to:",
+ "[ EMPTY SLOT ]",
+ "Cancel",
+ "Enter a description of your saved game:",
+ "Save",
+ "Rest in peace, Brandon.",
+ "Are you sure you want to quit playing?",
+ "XXX",
+ "XXX",
+ "XXXXXXX",
+ "XXXXXXXXX",
+ "Main menu",
+ "on",
+ "off",
+ "Yes",
+ "No",
+ "\x80\x0E\xFF""*""\x88\x0E\xFF""*""\x8D\x0E\xFF""*""\x94\x0E\xFF""*""\x99\x0E\xFF""*""\xA1\x0E\xFF""*""\xA9\x0E\xFF""*""\xB0\x0E\xFF""*""\xB5\x0E\xFF""*Walk speed ",
+ "Text speed ",
+ "Music is ",
+ "Sounds are "
+};
+
+static const StringListProvider k1GUIStringsDOSEnglishProvider = { ARRAYSIZE(k1GUIStringsDOSEnglish), k1GUIStringsDOSEnglish };
+
+static const char *const k1NewGameStringDOSEnglish[1] = {
+ "[ START A NEW GAME ]"
+};
+
+static const StringListProvider k1NewGameStringDOSEnglishProvider = { ARRAYSIZE(k1NewGameStringDOSEnglish), k1NewGameStringDOSEnglish };
+
+static const char *const k1ConfigStringsDOSEnglish[9] = {
+ "slowest",
+ "slow",
+ "normal",
+ "fast",
+ "fastest",
+ "slowest",
+ "normal",
+ "fast",
+ "clickable"
+};
+
+static const StringListProvider k1ConfigStringsDOSEnglishProvider = { ARRAYSIZE(k1ConfigStringsDOSEnglish), k1ConfigStringsDOSEnglish };
+
diff --git a/devtools/create_kyradat/resources/lok_dos_french.h b/devtools/create_kyradat/resources/lok_dos_french.h
new file mode 100644
index 0000000000..c96652102c
--- /dev/null
+++ b/devtools/create_kyradat/resources/lok_dos_french.h
@@ -0,0 +1,341 @@
+static const char *const k1IntroStringsDOSFrench[51] = {
+ "This is a text test - 1",
+ "This is a text test - 2",
+ "Salut Kallak...",
+ "...Puissant Chef de l'Ordre des Mystiques Royaux!",
+ "Je t'ai fait peur?",
+ "Malcolm!",
+ "On m'a dit hier que tu t'""\x82""tais ""\x82""vad""\x82"".",
+ "Je t'attendais depuis longtemps.",
+ "Pourquoi me serais-je press""\x82""?",
+ "C'est moi qui gouverne ce pays!",
+ "Ton faible sort n'a pas d'effet sur moi.",
+ "Tue-moi maintenant!",
+ "Il ne me reste pas beaucoup de pouvoirs magiques.",
+ "Je veux te faire du mal, sois-en s""\x96""r...",
+ "...Maintenant, tu es transform""\x82"" en pierre...",
+ "...mais je te laisse tes yeux.",
+ "Je ne verse aucune larme pour Kyrandia...",
+ "...mais je ne peux pas te refuser les tiennes.",
+ "Malcolm le Bouffon est libre!",
+ "Il contr""\x93""le la Kyragemme maintenant...",
+ "...source de tous les pouvoirs magiques de Kyrandia!",
+ "",
+ "Comment oses-tu ME faire tr""\x82""bucher!",
+ "Mais non, quelque chose de sp""\x82""cial pour toi...",
+ "Un sort humoristique!",
+ "Mais je pr""\x82""viendrai.",
+ "Ne saute pas sur CET arbre!",
+ "Ne grimpe pas sur CET arbre, petit ""\x82""cureuil!",
+ "Hou!",
+ "C'est plus marrant comme ""\x87""a...",
+ "...n'est-ce pas?",
+ "Ha ha ha...",
+ "Les doigts ne sont-ils pas une chose merveilleuse?",
+ "C'est super d'""\x88""tre en vie!",
+ "Brandon!",
+ "Grand-P""\x8A""re! On y est arriv""\x82""!",
+ "Non! TU y es arriv""\x82""!",
+ "Longue vie au Roi Brandon!",
+ "Longue vie ""\x85"" l'Ordre des Mystiques Royaux!",
+ "Retournons mettre de l'ordre dans Kyrandia!",
+ "Bonne id""\x82""e!",
+ "En tant que Roi...",
+ "je d""\x82""clare que les sandales sont d""\x82""sormais les souliers officiels ""\x85"" Kyrandia!",
+ "Bien jou""\x82"", Brandon!",
+ "La Terre ne pleure plus...",
+ "Et tu as retrouv""\x82"" tes amis!",
+ "Ma Ch""\x8A""re Brynn...",
+ "Malcolm s'est ""\x82""vad""\x82""!",
+ "Il viendra me chercher bient""\x93""t.",
+ "S'il te pla""\x8C""t Brandon, aide-moi...",
+ ""
+};
+
+static const StringListProvider k1IntroStringsDOSFrenchProvider = { ARRAYSIZE(k1IntroStringsDOSFrench), k1IntroStringsDOSFrench };
+
+static const char *const k1ItemNamesDOSFrench[108] = {
+ "Grenat",
+ "Am""\x82""thyste",
+ "Aigue-marine",
+ "Diamant",
+ "Emeraude",
+ "Perle",
+ "Rubis",
+ "Olivine",
+ "Saphir",
+ "Opale",
+ "Topaze",
+ "Onyx",
+ "Aventurine",
+ "Pierre de Lune",
+ "Pierre d'Iris",
+ "Magn""\x82""tite",
+ "Rose",
+ "Tulipe",
+ "Orchid""\x82""e",
+ "Rose d'argent",
+ "Statuette d'argent",
+ "Pi""\x8A""ce d'argent",
+ "Pi""\x8A""ce d'or",
+ "Bague en or",
+ "Calice royal",
+ "Pomme de pin",
+ "Gland",
+ "Noix",
+ "Baie de feu luisantes",
+ "Baie de feu",
+ "Baie de feu",
+ "Baie de feu",
+ "Baie de feu",
+ "Baie de feu",
+ "Poisson",
+ "Ar""\x88""te",
+ "Gigot de mouton",
+ "Os",
+ "Pomme",
+ "Trognon de pomme",
+ "Myrtille",
+ "Champignon",
+ "Note",
+ "Bille",
+ "Scie",
+ "Croix ans""\x82""e",
+ "Plume",
+ "Oeuf",
+ "Feuille",
+ "Tr""\x8A""fle",
+ "Etoile bris""\x82""e",
+ "Boule de cristal",
+ "Larme",
+ "Miroir",
+ "Tesson de glace",
+ "Fl""\x96""te",
+ "Sablier",
+ "Cl""\x82"" m""\x82""tallique",
+ "Cl""\x82"" de jade",
+ "Cl""\x82"" obsidion",
+ "Potion rouge",
+ "Potion rouge",
+ "Potion bleue",
+ "Potion bleue",
+ "Potion jaune",
+ "Potion jaune",
+ "Potion verte",
+ "Potion orange",
+ "Potion violette",
+ "Potion d'arcs-en-ciel",
+ "Eau fraiche",
+ "Eau fraiche",
+ "Eau sal""\x82""e",
+ "Eau sal""\x82""e",
+ "Eau min""\x82""rale",
+ "Eau min""\x82""rale",
+ "Eau magique",
+ "Eau magique",
+ "Gourde vide",
+ "Gourde vide",
+ "Parchemin",
+ "Parchemin",
+ "Parchemin",
+ "Parchemin",
+ "Parchemin",
+ "Parchemin",
+ "Parchemin",
+ "Parchemin",
+ "Parchemin",
+ "Parchemin",
+ "Morceau de parchemin",
+ "Morceau de parchemin",
+ "Morceau de parchemin",
+ "Morceau de parchemin",
+ "Morceau de parchemin",
+ "Pierre magique rouge",
+ "Pierre magique orange",
+ "Pierre magique jaune",
+ "Pierre magique verte",
+ "Pierre magique turquoise",
+ "Pierre magique bleue",
+ "Pierre magique violette",
+ "Rocher lourd",
+ "Couronne royale",
+ "Sceptre royal",
+ "Cl""\x82"" en or",
+ "Objet inconnu",
+ ""
+};
+
+static const StringListProvider k1ItemNamesDOSFrenchProvider = { ARRAYSIZE(k1ItemNamesDOSFrench), k1ItemNamesDOSFrench };
+
+static const char *const k1TakenStringsDOSFrench[4] = {
+ " prise.",
+ " pris.",
+ " prise.",
+ " pris."
+};
+
+static const StringListProvider k1TakenStringsDOSFrenchProvider = { ARRAYSIZE(k1TakenStringsDOSFrench), k1TakenStringsDOSFrench };
+
+static const char *const k1PlacedStringsDOSFrench[2] = {
+ " plac""\x82""e.",
+ " plac""\x82""."
+};
+
+static const StringListProvider k1PlacedStringsDOSFrenchProvider = { ARRAYSIZE(k1PlacedStringsDOSFrench), k1PlacedStringsDOSFrench };
+
+static const char *const k1DroppedStringsDOSFrench[2] = {
+ " l""\x83""ch""\x82""e.",
+ " l""\x83""ch""\x82""."
+};
+
+static const StringListProvider k1DroppedStringsDOSFrenchProvider = { ARRAYSIZE(k1DroppedStringsDOSFrench), k1DroppedStringsDOSFrench };
+
+static const char *const k1NoDropStringsDOSFrench[2] = {
+ "Vous ne pouvez pas l""\x83""cher autre chose ici.",
+ "Vous ne pouvez pas mettre ""\x87""a l""\x85""."
+};
+
+static const StringListProvider k1NoDropStringsDOSFrenchProvider = { ARRAYSIZE(k1NoDropStringsDOSFrench), k1NoDropStringsDOSFrench };
+
+static const char *const k1PutDownStringDOSFrench[1] = {
+ "Il faudrait peut-""\x88""tre que je pose ""\x87""a d'abord."
+};
+
+static const StringListProvider k1PutDownStringDOSFrenchProvider = { ARRAYSIZE(k1PutDownStringDOSFrench), k1PutDownStringDOSFrench };
+
+static const char *const k1WaitAmuletStringDOSFrench[1] = {
+ "Je suppose qu'il me faut attendre que mon amulette retrouve son pouvoir."
+};
+
+static const StringListProvider k1WaitAmuletStringDOSFrenchProvider = { ARRAYSIZE(k1WaitAmuletStringDOSFrench), k1WaitAmuletStringDOSFrench };
+
+static const char *const k1BlackJewelStringDOSFrench[1] = {
+ "C'est un bijou, mais pourquoi est-il noir?"
+};
+
+static const StringListProvider k1BlackJewelStringDOSFrenchProvider = { ARRAYSIZE(k1BlackJewelStringDOSFrench), k1BlackJewelStringDOSFrench };
+
+static const char *const k1HealingTipStringDOSFrench[1] = {
+ "Hue, ""\x87""a pourrait bien m'""\x88""tre utile si je suis bless""\x82""."
+};
+
+static const StringListProvider k1HealingTipStringDOSFrenchProvider = { ARRAYSIZE(k1HealingTipStringDOSFrench), k1HealingTipStringDOSFrench };
+
+static const char *const k1PoisonGoneStringDOSFrench[3] = {
+ "G""\x82""nial!",
+ "Les effets du poison ont disparu!",
+ "MBL1ERREUR: Jeu sauvegard""\x82"" d'un autre produit."
+};
+
+static const StringListProvider k1PoisonGoneStringDOSFrenchProvider = { ARRAYSIZE(k1PoisonGoneStringDOSFrench), k1PoisonGoneStringDOSFrench };
+
+static const char *const k1ThePoisonStringsDOSFrench[4] = {
+ "Le poison...",
+ "Je ne peux plus respirer...",
+ "Je ne me sens pas tr""\x8A""s bien...",
+ "Ce serpent doit ""\x88""tre \rvenimeux!"
+};
+
+static const StringListProvider k1ThePoisonStringsDOSFrenchProvider = { ARRAYSIZE(k1ThePoisonStringsDOSFrench), k1ThePoisonStringsDOSFrench };
+
+static const char *const k1FluteStringsDOSFrench[2] = {
+ "\x80""a ne sonne pas tr""\x8A""s bien.",
+ "Cette derni""\x8A""re note ""\x82""tait vraiment aigue!"
+};
+
+static const StringListProvider k1FluteStringsDOSFrenchProvider = { ARRAYSIZE(k1FluteStringsDOSFrench), k1FluteStringsDOSFrench };
+
+static const char *const k1WispJewelStringsDOSFrench[3] = {
+ "Je ne m'en sens pas vraiment capable maintenant.",
+ "Je devrait poser mon, ma, mes ",
+ ", d'abord."
+};
+
+static const StringListProvider k1WispJewelStringsDOSFrenchProvider = { ARRAYSIZE(k1WispJewelStringsDOSFrench), k1WispJewelStringsDOSFrench };
+
+static const char *const k1MagicJewelStringsDOSFrench[1] = {
+ "C'""\x82""tait bizarre."
+};
+
+static const StringListProvider k1MagicJewelStringsDOSFrenchProvider = { ARRAYSIZE(k1MagicJewelStringsDOSFrench), k1MagicJewelStringsDOSFrench };
+
+static const char *const k1FlaskFullStringDOSFrench[1] = {
+ "Cette gourde est d""\x82""j""\x85"" pleine."
+};
+
+static const StringListProvider k1FlaskFullStringDOSFrenchProvider = { ARRAYSIZE(k1FlaskFullStringDOSFrench), k1FlaskFullStringDOSFrench };
+
+static const char *const k1FullFlaskStringDOSFrench[4] = {
+ "La gourde est remplie \rd'eau gazeuse fra""\x8C""che.",
+ "La gourde est remplie \rd'eau sal""\x82""e.",
+ "La gourde est remplie \rd'eau min""\x82""rale.",
+ "Eau magique."
+};
+
+static const StringListProvider k1FullFlaskStringDOSFrenchProvider = { ARRAYSIZE(k1FullFlaskStringDOSFrench), k1FullFlaskStringDOSFrench };
+
+static const char *const k1OutroHomeStringDOSFrench[1] = {
+ "Maison"
+};
+
+static const StringListProvider k1OutroHomeStringDOSFrenchProvider = { ARRAYSIZE(k1OutroHomeStringDOSFrench), k1OutroHomeStringDOSFrench };
+
+static const char *const k1VeryCleverStringDOSFrench[1] = {
+ "Malin! Mais vos efforts restent vains."
+};
+
+static const StringListProvider k1VeryCleverStringDOSFrenchProvider = { ARRAYSIZE(k1VeryCleverStringDOSFrench), k1VeryCleverStringDOSFrench };
+
+static const char *const k1GUIStringsDOSFrench[28] = {
+ "The Legend of Kyrandia",
+ "Charger un jeu",
+ "Sauvegarder ce jeu",
+ "Contr""\x93""les du jeu",
+ "Quitter le jeu",
+ "Reprendre le jeu",
+ "Contr""\x93""les du jeu",
+ "Quel jeu voulez-vous re-charger?",
+ "S""\x82""lectionnez une position o""\x97"" sauvegarder:",
+ "[ EMPLACEMENT VIDE ]",
+ "Annuler",
+ "Entrez description de votre jeu sauvegard""\x82"".",
+ "Sauvegarder",
+ "Repose en paix, Brandon.",
+ "Vous voulez vraiment quitter le jeu?",
+ "XXXXXXXXXXXXXXXXX",
+ "XXXXXXXXXXXXXXXXX",
+ "XXXXXXXXXXXXXXXXX",
+ "XXXXXXXXXXXXXXXXX",
+ "Menu principal",
+ "activ""\x82",
+ "d""\x82""sactiv""\x82",
+ "Oui",
+ "Non",
+ "6""\x0F""f+@""\x0F""f+E""\x0F""f+L""\x0F""f+S""\x0F""f+_""\x0F""f+i""\x0F""f+p""\x0F""f+w""\x0F""f+Vitesse de d""\x82""placement",
+ "Vitesse du texte",
+ "La musique est ",
+ "Les sons sont "
+};
+
+static const StringListProvider k1GUIStringsDOSFrenchProvider = { ARRAYSIZE(k1GUIStringsDOSFrench), k1GUIStringsDOSFrench };
+
+static const char *const k1NewGameStringDOSFrench[1] = {
+ "[ COMMENCER UN NOUVEAU JEU ]"
+};
+
+static const StringListProvider k1NewGameStringDOSFrenchProvider = { ARRAYSIZE(k1NewGameStringDOSFrench), k1NewGameStringDOSFrench };
+
+static const char *const k1ConfigStringsDOSFrench[9] = {
+ "plus lent",
+ "lent",
+ "normal",
+ "rapide",
+ "plus rapide",
+ "plus lent",
+ "normal",
+ "rapide",
+ "cliquable"
+};
+
+static const StringListProvider k1ConfigStringsDOSFrenchProvider = { ARRAYSIZE(k1ConfigStringsDOSFrench), k1ConfigStringsDOSFrench };
+
diff --git a/devtools/create_kyradat/resources/lok_dos_german.h b/devtools/create_kyradat/resources/lok_dos_german.h
new file mode 100644
index 0000000000..5a5e9cfd06
--- /dev/null
+++ b/devtools/create_kyradat/resources/lok_dos_german.h
@@ -0,0 +1,361 @@
+static const char *const k1IntroStringsDOSGerman[52] = {
+ "This is a text test - 1",
+ "This is a text test - 2",
+ "Sei gegr""\x81\xE1""t, Kallak...",
+ "...M""\x84""chtiger Anf""\x81""hrer der k""\x94""niglichen Mystiker!",
+ "Habe ich dich erschreckt?",
+ "Malcolm!",
+ "Ich habe gestern von deiner Flucht geh""\x94""rt.",
+ "Ich habe dich fr""\x81""her erwartet.",
+ "Warum sollte ich mich beeilen?",
+ "Ich herrsche ""\x81""ber dieses Land!",
+ "Dein mickriger Fluch h""\x84""lt mich nicht zur""\x81""ck.",
+ "So, erschlag mich doch!",
+ "Ich habe nur noch wenig Magie ""\x81""brig.",
+ "Ich werde dir zu Leibe r""\x81""cken, zweifle blo""\xE1"" nicht daran...",
+ "...du bist jetzt aus Stein...",
+ "...Ich lasse dir allein deine Augen.",
+ "F""\x81""r Kyrandia vergie""\xE1""e ich nicht eine Tr""\x84""ne...",
+ "...aber deine will ich dir nicht nehmen.",
+ "Malcolm der Hofnarr ist ausgebrochen!",
+ "Er beherrscht nun den Kyragem...",
+ "...die Quelle aller Magie in Kyrandia!",
+ "",
+ "Wie kannst du es wagen, MICH umzuwerfen!",
+ "Nicht doch, etwas Besonderes f""\x81""r dich...",
+ "Was f""\x81""r ein l""\x84""cherlicher Fluch!",
+ "Ich warne dich vorher.",
+ "Springe nicht auf DIESEN Baum!",
+ "Klettre nicht auf diesen Baum, kleines Eichh""\x94""rnchen!",
+ "Buuh!",
+ "So ist es viel lustiger...",
+ "...nicht wahr?",
+ "Ha ha ha...",
+ "Sind Finger nicht 'was Tolles?",
+ "Es ist gro""\xE1""artig, am Leben zu sein!",
+ "Brandon!",
+ "Gro""\xE1""vater! Wir haben es geschafft!",
+ "Nein! DU hast es geschafft!",
+ "Lang lebe K""\x94""nig Brandon!",
+ "Lang leben die k""\x94""niglichen Mystiker!",
+ "Bauen wir Kyrandia wieder auf!",
+ "Eine gute Idee!",
+ "Als meine erste k""\x94""nigliche Proklamation,...",
+ "...erkl""\x84""re ich Sandalen zur offiziellen Fu""\xE1""bekleidung Kyrandias!",
+ "Sehr weise, Brandon!",
+ "Das Land ist nicht l""\x84""nger in Trauer!",
+ "Und deine Freunde sind gerettet.",
+ "Liebe Brynn...",
+ "Malcolm ist ausgebrochen!",
+ "Er wird bald zu mir kommen.",
+ "Bitte hilf Brandon...",
+ "",
+ ""
+};
+
+static const StringListProvider k1IntroStringsDOSGermanProvider = { ARRAYSIZE(k1IntroStringsDOSGerman), k1IntroStringsDOSGerman };
+
+static const char *const k1ItemNamesDOSGerman[108] = {
+ "Granat",
+ "Amethyst",
+ "Aquamarin",
+ "Diamant",
+ "Smaragd",
+ "Perle",
+ "Rubin",
+ "Peridot",
+ "Saphir",
+ "Opal",
+ "Topas",
+ "Onyx",
+ "Sonnenstein",
+ "Mondstein",
+ "Regenbogenstein",
+ "Magnetstein",
+ "Rose",
+ "Tulpe",
+ "Orchidee",
+ "Silberne Rose",
+ "Silberne Statuette",
+ "Silberm""\x81""nze",
+ "Goldm""\x81""nze",
+ "Goldring",
+ "Der Kelch des K""\x94""nigs",
+ "Kienapfel",
+ "Eichel",
+ "Walnu""\xE1",
+ "Immerleuchtende Feuerbeeren",
+ "Feuerbeeren",
+ "Feuerbeeren",
+ "Feuerbeeren",
+ "Feuerbeeren",
+ "Feuerbeeren",
+ "Fisch",
+ "Fischgr""\x84""te",
+ "Hammelkeule",
+ "Knochen",
+ "Apfel",
+ "Apfelgriebsch",
+ "Heidelbeeren",
+ "Pilz",
+ "Notiz",
+ "Murmel",
+ "S""\x84""ge",
+ "Henkelkreuz",
+ "Feder",
+ "Ei",
+ "Blatt",
+ "Kleeblatt",
+ "Sternschnuppe",
+ "Kristallkugel",
+ "Tr""\x84""ne",
+ "Spiegel",
+ "Eisst""\x81""ck",
+ "Fl""\x94""te",
+ "Sanduhr",
+ "Eisenschl""\x81""ssel",
+ "Jadeschl""\x81""ssel",
+ "Obsidianschl""\x81""ssel",
+ "Roter Trank",
+ "Roter Trank",
+ "Blauer Trank",
+ "Blauer Trank",
+ "Gelber Trank",
+ "Gelber Trank",
+ "Gr""\x81""ner Trank",
+ "Oranger Trank",
+ "Violetter Trank",
+ "Regenbogentrank",
+ "S""\x81\xE1""wasser",
+ "S""\x81\xE1""wasser",
+ "Salzwasser",
+ "Salzwasser",
+ "Mineralwasser",
+ "Mineralwasser",
+ "Magisches Wasser",
+ "Magisches Wasser",
+ "Leere Flasche",
+ "Leere Flasche",
+ "Schriftrolle",
+ "Schriftrolle",
+ "Schriftrolle",
+ "Schriftrolle",
+ "Schriftrolle",
+ "Schriftrolle",
+ "Schriftrolle",
+ "Schriftrolle",
+ "Schriftrolle",
+ "Schriftrolle",
+ "Pergamentfetzen",
+ "Pergamentfetzen",
+ "Pergamentfetzen",
+ "Pergamentfetzen",
+ "Pergamentfetzen",
+ "Roter Weisenstein",
+ "Oranger Weisenstein",
+ "Gelber Weisenstein",
+ "Gr""\x81""ner Weisenstein",
+ "T""\x81""rkiser Weisenstein",
+ "Blauer Weisenstein",
+ "Violetter Weisenstein",
+ "Schwerer Stein",
+ "K""\x94""nigliche Krone",
+ "K""\x94""nigliches Zepter",
+ "Goldschl""\x81""ssel",
+ "Unbekannter Gegenstand",
+ ""
+};
+
+static const StringListProvider k1ItemNamesDOSGermanProvider = { ARRAYSIZE(k1ItemNamesDOSGerman), k1ItemNamesDOSGerman };
+
+static const char *const k1TakenStringsDOSGerman[2] = {
+ " aufgenommen.",
+ " aufgenommen."
+};
+
+static const StringListProvider k1TakenStringsDOSGermanProvider = { ARRAYSIZE(k1TakenStringsDOSGerman), k1TakenStringsDOSGerman };
+
+static const char *const k1PlacedStringsDOSGerman[1] = {
+ " abgelegt."
+};
+
+static const StringListProvider k1PlacedStringsDOSGermanProvider = { ARRAYSIZE(k1PlacedStringsDOSGerman), k1PlacedStringsDOSGerman };
+
+static const char *const k1DroppedStringsDOSGerman[1] = {
+ " fallengelassen."
+};
+
+static const StringListProvider k1DroppedStringsDOSGermanProvider = { ARRAYSIZE(k1DroppedStringsDOSGerman), k1DroppedStringsDOSGerman };
+
+static const char *const k1NoDropStringsDOSGerman[2] = {
+ "Hier kann nichts mehr abgelegt werden.",
+ "Das kann hier nicht abgelegt werden."
+};
+
+static const StringListProvider k1NoDropStringsDOSGermanProvider = { ARRAYSIZE(k1NoDropStringsDOSGerman), k1NoDropStringsDOSGerman };
+
+static const char *const k1PutDownStringDOSGerman[1] = {
+ "Vielleicht sollte ich es erst hinlegen."
+};
+
+static const StringListProvider k1PutDownStringDOSGermanProvider = { ARRAYSIZE(k1PutDownStringDOSGerman), k1PutDownStringDOSGerman };
+
+static const char *const k1WaitAmuletStringDOSGerman[1] = {
+ "I nehme an, ich mu""\xE1"" warten, bis mein Amulett seine Kraft wiedererlangt."
+};
+
+static const StringListProvider k1WaitAmuletStringDOSGermanProvider = { ARRAYSIZE(k1WaitAmuletStringDOSGerman), k1WaitAmuletStringDOSGerman };
+
+static const char *const k1BlackJewelStringDOSGerman[1] = {
+ "Es ist ein Edelstein, aber warum ist er schwarz?"
+};
+
+static const StringListProvider k1BlackJewelStringDOSGermanProvider = { ARRAYSIZE(k1BlackJewelStringDOSGerman), k1BlackJewelStringDOSGerman };
+
+static const char *const k1HealingTipStringDOSGerman[1] = {
+ "Mann, das kann ganz n""\x81""tzlich sein, falls ich mich verletze!"
+};
+
+static const StringListProvider k1HealingTipStringDOSGermanProvider = { ARRAYSIZE(k1HealingTipStringDOSGerman), k1HealingTipStringDOSGerman };
+
+static const char *const k1PoisonGoneStringDOSGerman[2] = {
+ "Erstaunlich!",
+ "Die Wirkung des Giftes hat nachgelassen!"
+};
+
+static const StringListProvider k1PoisonGoneStringDOSGermanProvider = { ARRAYSIZE(k1PoisonGoneStringDOSGerman), k1PoisonGoneStringDOSGerman };
+
+static const char *const k1ThePoisonStringsDOSGerman[4] = {
+ "Das Gift...",
+ "Ich kann nicht atmen...",
+ "Ich f""\x81""hle mich nicht besonders wohl...",
+ "Die Schlange mu""\xE1"" \rgiftig gewesen sein!"
+};
+
+static const StringListProvider k1ThePoisonStringsDOSGermanProvider = { ARRAYSIZE(k1ThePoisonStringsDOSGerman), k1ThePoisonStringsDOSGerman };
+
+static const char *const k1FluteStringsDOSGerman[2] = {
+ "Klingt nicht besonders beeindruckend.",
+ "Die letzte Note war hoch!"
+};
+
+static const StringListProvider k1FluteStringsDOSGermanProvider = { ARRAYSIZE(k1FluteStringsDOSGerman), k1FluteStringsDOSGerman };
+
+static const char *const k1WispJewelStringsDOSGerman[3] = {
+ "Im Moment f""\x81""hle ich mich dazu nicht in der Lage.",
+ "Ich mu""\xE1"" wahrscheinlich erst mein(e)...",
+ "ablegen."
+};
+
+static const StringListProvider k1WispJewelStringsDOSGermanProvider = { ARRAYSIZE(k1WispJewelStringsDOSGerman), k1WispJewelStringsDOSGerman };
+
+static const char *const k1MagicJewelStringsDOSGerman[1] = {
+ "Das war eigenartig."
+};
+
+static const StringListProvider k1MagicJewelStringsDOSGermanProvider = { ARRAYSIZE(k1MagicJewelStringsDOSGerman), k1MagicJewelStringsDOSGerman };
+
+static const char *const k1FlaskFullStringDOSGerman[1] = {
+ "Die Flasche ist bereits voll."
+};
+
+static const StringListProvider k1FlaskFullStringDOSGermanProvider = { ARRAYSIZE(k1FlaskFullStringDOSGerman), k1FlaskFullStringDOSGerman };
+
+static const char *const k1FullFlaskStringDOSGerman[4] = {
+ "Die Flasche ist jetzt mit \rfrischem, klarem Wasser gef""\x81""llt.",
+ "Die Flasche ist jetzt mit \rSalzwasser gef""\x81""llt.",
+ "Die Flasche ist jetzt mit \rMineralwasser gef""\x81""llt.",
+ "Magisches Wasser."
+};
+
+static const StringListProvider k1FullFlaskStringDOSGermanProvider = { ARRAYSIZE(k1FullFlaskStringDOSGerman), k1FullFlaskStringDOSGerman };
+
+static const char *const k1OutroHomeStringDOSGerman[1] = {
+ "Ab nach Hause"
+};
+
+static const StringListProvider k1OutroHomeStringDOSGermanProvider = { ARRAYSIZE(k1OutroHomeStringDOSGerman), k1OutroHomeStringDOSGerman };
+
+static const char *const k1VeryCleverStringDOSGerman[1] = {
+ "Sehr clever! Aber nichtige Versuche sind zum Scheitern verurteilt."
+};
+
+static const StringListProvider k1VeryCleverStringDOSGermanProvider = { ARRAYSIZE(k1VeryCleverStringDOSGerman), k1VeryCleverStringDOSGerman };
+
+static const char *const k1GUIStringsDOSGerman[52] = {
+ "Die Legende von Kyrandia",
+ "Ein Spiel laden",
+ "Dieses Spiel sichern",
+ "Spielsteuerungen",
+ "Spiel beenden",
+ "Spiel wieder aufnehmen",
+ "Spielsteuerungen",
+ "Welches Spiel soll noch einmal geladen werden?",
+ "W""\x84""hlen Sie den Platz zum Sichern aus.",
+ "[ LEERER PLATZ ]",
+ "Abbrechen",
+ "Beschreibung des gesicherten Spiels eingeben.",
+ "Sichern",
+ "Ruhe in Frieden, Brandon.",
+ "Soll das Spiel wirklich beendet werden?",
+ "XXXXX",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "XXXXX",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "XXXXXXXXXXXXXXXXX",
+ "XXXXXXXXXXXXXXXXX",
+ "Hauptmen""\x81",
+ "An",
+ "Aus",
+ "Ja",
+ "Nein",
+ "V""\x0F""R+e""\x0F""R+m""\x0F""R+t""\x0F""R+|""\x0F""R+""\x8B\x0F""R+""\x9A\x0F""R+""\xA1\x0F""R+""\xA9\x0F""R+Schrittempo",
+ "Textgeschwindigkeit",
+ "Die Musik ist",
+ "Die Soundeffekte sind"
+};
+
+static const StringListProvider k1GUIStringsDOSGermanProvider = { ARRAYSIZE(k1GUIStringsDOSGerman), k1GUIStringsDOSGerman };
+
+static const char *const k1NewGameStringDOSGerman[1] = {
+ "[ EIN NEUES SPIEL ANFANGEN ]"
+};
+
+static const StringListProvider k1NewGameStringDOSGermanProvider = { ARRAYSIZE(k1NewGameStringDOSGerman), k1NewGameStringDOSGerman };
+
+static const char *const k1ConfigStringsDOSGerman[9] = {
+ "am langsamsten",
+ "langsam",
+ "normal",
+ "schnell",
+ "am schnellsten",
+ "am langsamsten",
+ "normal",
+ "schnell",
+ "anklickbar"
+};
+
+static const StringListProvider k1ConfigStringsDOSGermanProvider = { ARRAYSIZE(k1ConfigStringsDOSGerman), k1ConfigStringsDOSGerman };
+
diff --git a/devtools/create_kyradat/resources/lok_dos_italian.h b/devtools/create_kyradat/resources/lok_dos_italian.h
new file mode 100644
index 0000000000..65991769e5
--- /dev/null
+++ b/devtools/create_kyradat/resources/lok_dos_italian.h
@@ -0,0 +1,366 @@
+static const char *const k1IntroStringsDOSItalian[50] = {
+ "This is a text test - 1",
+ "This is a text test - 2",
+ "Salute, Kallak...",
+ "...Potente capo dei Mistici reali!",
+ "Ti ho spaventato?",
+ "Malcolm!",
+ "Ieri ho saputo della tua fuga.",
+ "E ti aspettavo prima di adesso.",
+ "Perch""\x82"" affrettarmi?",
+ "Sono io che governo questa terra!",
+ "La tua gracile maledizione non mi ha trattenuto affatto.",
+ "Quindi, uccidimi adesso!",
+ "Mi ""\x8A"" rimasta poca magia.",
+ "Intendo danneggiarti, non ho dubbi...",
+ "...Adesso tu sei di pietra...",
+ "...tuttavia, lascio i tuoi occhi.",
+ "Non ho versato alcuna lacrima per Kyrandia...",
+ "Ma non posso negarti le tue.",
+ "Malcolm il buffone si ""\x8A"" liberato!",
+ "Adesso ha il controllo della GemmaKyra...",
+ "...fonte di tutta la magia in Kyrandia!",
+ "",
+ "Come osi farMi lo sgambetto?",
+ "Ma niente, qualcosa di speciale per te...",
+ "Un malocchio spassoso!",
+ "Dar""\x95"" un giusto avvertimento.",
+ "Non saltare su QUELL'albero!",
+ "Non salire su QUELL'albero piccolo scoiattolo!",
+ "Bo!",
+ "E' divertente in questo modo...",
+ "...non ""\x8A"" vero?",
+ "Ah ah ah...",
+ "Non sono fantastiche le dita?",
+ "E' meraviglioso essere vivo!",
+ "Brandon!",
+ "Nonno! Ce l'abbiamo fatta!",
+ "No! TU ce l'hai fatta!",
+ "Lunga vita a Re Brandon!",
+ "Lunga vita ai Mistici Reali!",
+ "Adesso, rimettiamo insieme Kyrandia!",
+ "Buona idea!",
+ "Come mia prima Proclamazione Reale...",
+ "Nomino i sandali la calzatura ufficiale di Kyrandia!",
+ "Ben fatto, Brandon!",
+ "La Terra non versa pi""\x97"" lacrime...",
+ "E i tuoi amici sono stati recuperati!",
+ "Caro Brynn...",
+ "Malcolm si ""\x8A"" liberato!",
+ "Presto mi verr""\x85"" a cercare.",
+ "Per favore aiuta Brandon..."
+};
+
+static const StringListProvider k1IntroStringsDOSItalianProvider = { ARRAYSIZE(k1IntroStringsDOSItalian), k1IntroStringsDOSItalian };
+
+static const char *const k1ItemNamesDOSItalian[107] = {
+ "Granito rosso",
+ "Ametista",
+ "Acquamarina",
+ "Diamante",
+ "Smeraldo",
+ "Perla",
+ "Rubino",
+ "Olivina",
+ "Zaffiro",
+ "Opale",
+ "Topazio",
+ "Onice",
+ "Pietra Solare",
+ "Pietra Lunare",
+ "Pietra-arcobaleno",
+ "Magnetite",
+ "Rosa",
+ "Tulipano",
+ "Orchidea",
+ "Rosa d'Argento",
+ "Statuetta d'Argento",
+ "Moneta d'Argento",
+ "Moneta d'Oro",
+ "Anello d'Oro",
+ "Calice Reale",
+ "Pigna",
+ "Ghianda",
+ "Noce",
+ "Baccheinfuocate Sempreardenti",
+ "Baccheinfuocate",
+ "Baccheinfuocate",
+ "Baccheinfuocate",
+ "Baccheinfuocate",
+ "Baccheinfuocate",
+ "Pesce",
+ "Lisca di Pesce",
+ "Zampa di Montone",
+ "Osso",
+ "Mela",
+ "Torsolo di Mela",
+ "Mirtilli",
+ "Fungo",
+ "Nota",
+ "Marmo",
+ "Sega",
+ "Croce ansata",
+ "Piuma",
+ "Uovo",
+ "Foglia",
+ "Trifoglio",
+ "Stella Cadente",
+ "Sfera di Cristallo",
+ "Lacrima",
+ "Specchio",
+ "Frammento di ghiaccio",
+ "Flauto",
+ "Clessidra",
+ "Chiave di Ferro",
+ "Chiave di Giada",
+ "Chiave di Ossidione",
+ "Pozione Rossa",
+ "Pozione Rossa",
+ "Pozione Azzurra",
+ "Pozione Azzurra",
+ "Pozione Gialla",
+ "Pozione Gialla",
+ "Pozione Verde",
+ "Pozione Arancione",
+ "Pozione viola",
+ "Pozione di Arcobaleni",
+ "Acqua Fresca",
+ "Acqua Fresca",
+ "Acqua Salata",
+ "Acqua Salata",
+ "Acqua Minerale",
+ "Acqua Minerale",
+ "Acqua Magica",
+ "Acqua Magica",
+ "Bottiglietta Vuota",
+ "Bottiglietta Vuota",
+ "Pergamena",
+ "Pergamena",
+ "Pergamena",
+ "Pergamena",
+ "Pergamena",
+ "Pergamena",
+ "Pergamena",
+ "Pergamena",
+ "Pergamena",
+ "Pergamena",
+ "Frammento di Pergamena",
+ "Frammento di Pergamena",
+ "Frammento di Pergamena",
+ "Frammento di Pergamena",
+ "Frammento di Pergamena",
+ "Pietramagica Rossa",
+ "Pietramagica Arancione",
+ "Pietramagica Gialla",
+ "Pietramagica Verde",
+ "Pietramagica Verde-Azzurra",
+ "Pietramagica Azzurra",
+ "Pietramagica Viola",
+ "Roccia Pesante",
+ "Corona Reale",
+ "Scettro Reale",
+ "Chiave d'oro",
+ "Articolo non conosciuto"
+};
+
+static const StringListProvider k1ItemNamesDOSItalianProvider = { ARRAYSIZE(k1ItemNamesDOSItalian), k1ItemNamesDOSItalian };
+
+static const char *const k1TakenStringsDOSItalian[2] = {
+ " - preso.",
+ " - preso."
+};
+
+static const StringListProvider k1TakenStringsDOSItalianProvider = { ARRAYSIZE(k1TakenStringsDOSItalian), k1TakenStringsDOSItalian };
+
+static const char *const k1PlacedStringsDOSItalian[1] = {
+ " - piazzato."
+};
+
+static const StringListProvider k1PlacedStringsDOSItalianProvider = { ARRAYSIZE(k1PlacedStringsDOSItalian), k1PlacedStringsDOSItalian };
+
+static const char *const k1DroppedStringsDOSItalian[1] = {
+ " - caduto."
+};
+
+static const StringListProvider k1DroppedStringsDOSItalianProvider = { ARRAYSIZE(k1DroppedStringsDOSItalian), k1DroppedStringsDOSItalian };
+
+static const char *const k1NoDropStringsDOSItalian[2] = {
+ "Qui, non ci puoi lasciare altri oggetti.",
+ "Non lo puoi mettere laggiu."
+};
+
+static const StringListProvider k1NoDropStringsDOSItalianProvider = { ARRAYSIZE(k1NoDropStringsDOSItalian), k1NoDropStringsDOSItalian };
+
+static const char *const k1PutDownStringDOSItalian[1] = {
+ "Forse prima sarebbe meglio che mettessi gi""\x97"" questo."
+};
+
+static const StringListProvider k1PutDownStringDOSItalianProvider = { ARRAYSIZE(k1PutDownStringDOSItalian), k1PutDownStringDOSItalian };
+
+static const char *const k1WaitAmuletStringDOSItalian[1] = {
+ "Suppongo che dovr""\x95"" aspettare che il mio Amuleto riacquisti il suo potere."
+};
+
+static const StringListProvider k1WaitAmuletStringDOSItalianProvider = { ARRAYSIZE(k1WaitAmuletStringDOSItalian), k1WaitAmuletStringDOSItalian };
+
+static const char *const k1BlackJewelStringDOSItalian[1] = {
+ "E' un gioiello, ma perch""\x82"" ""\x8A"" nero?"
+};
+
+static const StringListProvider k1BlackJewelStringDOSItalianProvider = { ARRAYSIZE(k1BlackJewelStringDOSItalian), k1BlackJewelStringDOSItalian };
+
+static const char *const k1HealingTipStringDOSItalian[1] = {
+ "Accidenti, questo potrebbe essere utile nel caso fossi ferito."
+};
+
+static const StringListProvider k1HealingTipStringDOSItalianProvider = { ARRAYSIZE(k1HealingTipStringDOSItalian), k1HealingTipStringDOSItalian };
+
+static const char *const k1PoisonGoneStringDOSItalian[2] = {
+ "Incredibile!",
+ "Gli effetti del veleno sono scomparsi!"
+};
+
+static const StringListProvider k1PoisonGoneStringDOSItalianProvider = { ARRAYSIZE(k1PoisonGoneStringDOSItalian), k1PoisonGoneStringDOSItalian };
+
+static const char *const k1ThePoisonStringsDOSItalian[4] = {
+ "Il veleno...",
+ "Non posso respirare...",
+ "Non mi sento molto bene...",
+ "Quel serpente deve\ressere velenoso!"
+};
+
+static const StringListProvider k1ThePoisonStringsDOSItalianProvider = { ARRAYSIZE(k1ThePoisonStringsDOSItalian), k1ThePoisonStringsDOSItalian };
+
+static const char *const k1FluteStringsDOSItalian[2] = {
+ "Un suono non molto impressionante.",
+ "Quell'ultima nota era sicuramente acuta!"
+};
+
+static const StringListProvider k1FluteStringsDOSItalianProvider = { ARRAYSIZE(k1FluteStringsDOSItalian), k1FluteStringsDOSItalian };
+
+static const char *const k1WispJewelStringsDOSItalian[3] = {
+ "Non mi sento effettivamente in grado di farlo, per adesso.",
+ "Probabilmente dovrei metter gi""\x97"" il mio",
+ ", per prima cosa."
+};
+
+static const StringListProvider k1WispJewelStringsDOSItalianProvider = { ARRAYSIZE(k1WispJewelStringsDOSItalian), k1WispJewelStringsDOSItalian };
+
+static const char *const k1MagicJewelStringsDOSItalian[1] = {
+ "Questo mi ""\x8A"" sembrato strano."
+};
+
+static const StringListProvider k1MagicJewelStringsDOSItalianProvider = { ARRAYSIZE(k1MagicJewelStringsDOSItalian), k1MagicJewelStringsDOSItalian };
+
+static const char *const k1FlaskFullStringDOSItalian[1] = {
+ "Questa bottiglietta ""\x8A"" gi""\x85"" piena."
+};
+
+static const StringListProvider k1FlaskFullStringDOSItalianProvider = { ARRAYSIZE(k1FlaskFullStringDOSItalian), k1FlaskFullStringDOSItalian };
+
+static const char *const k1FullFlaskStringDOSItalian[4] = {
+ "Adesso la bottiglietta ""\x8A"" riempita\rcon acqua fresca e gasata.",
+ "Adesso la bottiglietta ""\x8A"" riempita\rcon acqua salata.",
+ "Adesso la bottiglietta ""\x8A"" riempita\rcon acqua minerale.",
+ "Acqua magica."
+};
+
+static const StringListProvider k1FullFlaskStringDOSItalianProvider = { ARRAYSIZE(k1FullFlaskStringDOSItalian), k1FullFlaskStringDOSItalian };
+
+static const char *const k1OutroHomeStringDOSItalian[1] = {
+ "Casa"
+};
+
+static const StringListProvider k1OutroHomeStringDOSItalianProvider = { ARRAYSIZE(k1OutroHomeStringDOSItalian), k1OutroHomeStringDOSItalian };
+
+static const char *const k1VeryCleverStringDOSItalian[1] = {
+ "Molto intelligente! Ma i tuoi deboli sforzi sono vani."
+};
+
+static const StringListProvider k1VeryCleverStringDOSItalianProvider = { ARRAYSIZE(k1VeryCleverStringDOSItalian), k1VeryCleverStringDOSItalian };
+
+static const char *const k1GUIStringsDOSItalian[60] = {
+ "The Legend of Kyrandia",
+ "Carica un gioco",
+ "Salva questo gioco",
+ "Comandi di Gioco",
+ "Abbandona il gioco",
+ "Ricomincia il gioco",
+ "Comandi di gioco",
+ "Quale gioco desideri ricaricare?",
+ "Seleziona una posizione da salvare:",
+ "[ GRIGLIA VUOTA ]",
+ "Annulla",
+ "Inserisci descrizione del tuo gioco salvato:",
+ "Salva",
+ "Riposa in pace, Brandon.",
+ "Sei sicuro di voler abbandonare il gioco?",
+ "XXXXXXXXX",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "XXXXXXXXX",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "XXXXXXXXX",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "XXXXXXXXX",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "Menu principale",
+ "acceso",
+ "spento",
+ "Si",
+ "No",
+ "_""\x0F""T+k""\x0F""T+q""\x0F""T+y""\x0F""T+""\x80\x0F""T+""\x8D\x0F""T+""\x99\x0F""T+""\xA1\x0F""T+""\xA8\x0F""T+Velocit""\x85"" di movimento",
+ "Velocit""\x85"" del testo",
+ "Musica ""\x8A",
+ "Suoni sono"
+};
+
+static const StringListProvider k1GUIStringsDOSItalianProvider = { ARRAYSIZE(k1GUIStringsDOSItalian), k1GUIStringsDOSItalian };
+
+static const char *const k1NewGameStringDOSItalian[1] = {
+ "[ INIZIARE UN NUOVO GIOCO ]"
+};
+
+static const StringListProvider k1NewGameStringDOSItalianProvider = { ARRAYSIZE(k1NewGameStringDOSItalian), k1NewGameStringDOSItalian };
+
+static const char *const k1ConfigStringsDOSItalian[9] = {
+ "molto lento",
+ "lento",
+ "normale",
+ "veloce",
+ "molto veloce",
+ "molto lento",
+ "normale",
+ "veloce",
+ "cliccabile"
+};
+
+static const StringListProvider k1ConfigStringsDOSItalianProvider = { ARRAYSIZE(k1ConfigStringsDOSItalian), k1ConfigStringsDOSItalian };
+
diff --git a/devtools/create_kyradat/resources/lok_dos_oldfloppy.h b/devtools/create_kyradat/resources/lok_dos_oldfloppy.h
new file mode 100644
index 0000000000..e19cb5a6ef
--- /dev/null
+++ b/devtools/create_kyradat/resources/lok_dos_oldfloppy.h
@@ -0,0 +1,1911 @@
+static const byte k1KallakWritingSeqDOSOldFloppy[2037] = {
+ 0x00, 0x00, 0x01, 0x0E, 0x1A, 0x1B, 0x17, 0x00,
+ 0x00, 0x00, 0x3F, 0x01, 0xC7, 0x0C, 0x00, 0x0C,
+ 0x00, 0x19, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00,
+ 0x10, 0x05, 0x00, 0x95, 0x00, 0x20, 0x09, 0x14,
+ 0x0F, 0x2E, 0x02, 0x00, 0x01, 0x00, 0x00, 0x10,
+ 0x05, 0x01, 0x94, 0x00, 0x1B, 0x07, 0x06, 0x00,
+ 0x18, 0x1D, 0x02, 0x00, 0x02, 0x00, 0x00, 0x10,
+ 0x05, 0x02, 0x93, 0x00, 0x14, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x03, 0x00, 0x00, 0x10, 0x05, 0x01,
+ 0x90, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x04, 0x00, 0x00, 0x10, 0x05, 0x00, 0x8D, 0x00,
+ 0x20, 0x07, 0x06, 0x00, 0x18, 0x1D, 0x02, 0x00,
+ 0x05, 0x00, 0x00, 0x10, 0x05, 0x01, 0x8A, 0x00,
+ 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00, 0x06, 0x00,
+ 0x00, 0x10, 0x05, 0x02, 0x88, 0x00, 0x14, 0x07,
+ 0x06, 0x00, 0x18, 0x1D, 0x02, 0x00, 0x07, 0x00,
+ 0x00, 0x10, 0x05, 0x01, 0x85, 0x00, 0x1B, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00, 0x10,
+ 0x05, 0x00, 0x82, 0x00, 0x20, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x09, 0x00, 0x00, 0x10, 0x05, 0x01,
+ 0x7F, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x0A, 0x00, 0x00, 0x10, 0x05, 0x02, 0x7C, 0x00,
+ 0x14, 0x07, 0x06, 0x00, 0x18, 0x1D, 0x02, 0x00,
+ 0x0B, 0x00, 0x00, 0x10, 0x05, 0x01, 0x79, 0x00,
+ 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00, 0x0C, 0x00,
+ 0x00, 0x10, 0x05, 0x00, 0x76, 0x00, 0x20, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x0D, 0x00, 0x00, 0x10,
+ 0x05, 0x01, 0x73, 0x00, 0x1B, 0x07, 0x06, 0x00,
+ 0x18, 0x1D, 0x02, 0x00, 0x0E, 0x00, 0x00, 0x10,
+ 0x05, 0x02, 0x70, 0x00, 0x14, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x0F, 0x00, 0x00, 0x10, 0x05, 0x01,
+ 0x6D, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x10, 0x00, 0x00, 0x10, 0x05, 0x00, 0x6A, 0x00,
+ 0x20, 0x07, 0x06, 0x00, 0x02, 0x00, 0x11, 0x00,
+ 0x00, 0x10, 0x05, 0x01, 0x67, 0x00, 0x1B, 0x07,
+ 0x06, 0x00, 0x18, 0x1D, 0x02, 0x00, 0x12, 0x00,
+ 0x00, 0x10, 0x05, 0x02, 0x65, 0x00, 0x14, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x13, 0x00, 0x00, 0x10,
+ 0x05, 0x01, 0x63, 0x00, 0x1B, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x14, 0x00, 0x00, 0x10, 0x05, 0x00,
+ 0x63, 0x00, 0x20, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x15, 0x00, 0x00, 0x10, 0x05, 0x00, 0x65, 0x00,
+ 0x1F, 0x07, 0x06, 0x00, 0x02, 0x00, 0x16, 0x00,
+ 0x00, 0x10, 0x05, 0x00, 0x6A, 0x00, 0x1D, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x17, 0x00, 0x00, 0x10,
+ 0x05, 0x00, 0x70, 0x00, 0x19, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x18, 0x00, 0x00, 0x10, 0x05, 0x00,
+ 0x76, 0x00, 0x17, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x19, 0x00, 0x00, 0x10, 0x05, 0x00, 0x7C, 0x00,
+ 0x16, 0x07, 0x06, 0x00, 0x02, 0x00, 0x1A, 0x00,
+ 0x00, 0x10, 0x05, 0x00, 0x82, 0x00, 0x17, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x1B, 0x00, 0x00, 0x10,
+ 0x05, 0x00, 0x88, 0x00, 0x19, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x1C, 0x00, 0x00, 0x10, 0x05, 0x00,
+ 0x8D, 0x00, 0x1D, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x1D, 0x00, 0x00, 0x10, 0x05, 0x00, 0x93, 0x00,
+ 0x1F, 0x07, 0x06, 0x00, 0x1C, 0x1B, 0x0F, 0x2F,
+ 0x02, 0x00, 0x01, 0x00, 0x00, 0x10, 0x05, 0x01,
+ 0x94, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x01, 0x00, 0x00, 0x10, 0x05, 0x01, 0x94, 0x00,
+ 0x1B, 0x07, 0x06, 0x00, 0x18, 0x1D, 0x02, 0x00,
+ 0x02, 0x00, 0x00, 0x10, 0x05, 0x02, 0x93, 0x00,
+ 0x14, 0x07, 0x06, 0x00, 0x02, 0x00, 0x02, 0x00,
+ 0x00, 0x10, 0x05, 0x02, 0x93, 0x00, 0x14, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x03, 0x00, 0x00, 0x10,
+ 0x05, 0x01, 0x90, 0x00, 0x1B, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x04, 0x00, 0x00, 0x10, 0x05, 0x00,
+ 0x8D, 0x00, 0x20, 0x07, 0x06, 0x00, 0x18, 0x1D,
+ 0x02, 0x00, 0x05, 0x00, 0x00, 0x10, 0x05, 0x01,
+ 0x8A, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x05, 0x00, 0x00, 0x10, 0x05, 0x01, 0x8A, 0x00,
+ 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00, 0x06, 0x00,
+ 0x00, 0x10, 0x05, 0x02, 0x88, 0x00, 0x14, 0x07,
+ 0x06, 0x00, 0x18, 0x1D, 0x02, 0x00, 0x07, 0x00,
+ 0x00, 0x10, 0x05, 0x01, 0x85, 0x00, 0x1B, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00, 0x10,
+ 0x05, 0x00, 0x82, 0x00, 0x20, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x09, 0x00, 0x00, 0x10, 0x05, 0x01,
+ 0x7F, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x0A, 0x00, 0x00, 0x10, 0x05, 0x02, 0x7C, 0x00,
+ 0x14, 0x07, 0x06, 0x00, 0x18, 0x1D, 0x02, 0x00,
+ 0x0B, 0x00, 0x00, 0x10, 0x05, 0x01, 0x79, 0x00,
+ 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00, 0x0C, 0x00,
+ 0x00, 0x10, 0x05, 0x00, 0x76, 0x00, 0x20, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x0D, 0x00, 0x00, 0x10,
+ 0x05, 0x01, 0x73, 0x00, 0x1B, 0x07, 0x06, 0x00,
+ 0x18, 0x1D, 0x02, 0x00, 0x0E, 0x00, 0x00, 0x10,
+ 0x05, 0x02, 0x70, 0x00, 0x14, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x0F, 0x00, 0x00, 0x10, 0x05, 0x01,
+ 0x6D, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x10, 0x00, 0x00, 0x10, 0x05, 0x00, 0x6A, 0x00,
+ 0x20, 0x07, 0x06, 0x00, 0x02, 0x00, 0x11, 0x00,
+ 0x00, 0x10, 0x05, 0x01, 0x67, 0x00, 0x1B, 0x07,
+ 0x06, 0x00, 0x18, 0x1D, 0x02, 0x00, 0x12, 0x00,
+ 0x00, 0x10, 0x05, 0x02, 0x65, 0x00, 0x14, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x13, 0x00, 0x00, 0x10,
+ 0x05, 0x01, 0x63, 0x00, 0x1B, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x14, 0x00, 0x00, 0x10, 0x05, 0x00,
+ 0x63, 0x00, 0x20, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x15, 0x00, 0x00, 0x10, 0x05, 0x00, 0x65, 0x00,
+ 0x1F, 0x07, 0x06, 0x00, 0x02, 0x00, 0x16, 0x00,
+ 0x00, 0x10, 0x05, 0x00, 0x6A, 0x00, 0x1D, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x17, 0x00, 0x00, 0x10,
+ 0x05, 0x00, 0x70, 0x00, 0x19, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x18, 0x00, 0x00, 0x10, 0x05, 0x00,
+ 0x76, 0x00, 0x17, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x19, 0x00, 0x00, 0x10, 0x05, 0x00, 0x7C, 0x00,
+ 0x16, 0x07, 0x06, 0x00, 0x02, 0x00, 0x1A, 0x00,
+ 0x00, 0x10, 0x05, 0x00, 0x82, 0x00, 0x17, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x1B, 0x00, 0x00, 0x10,
+ 0x05, 0x00, 0x88, 0x00, 0x19, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x1C, 0x00, 0x00, 0x10, 0x05, 0x00,
+ 0x8D, 0x00, 0x1D, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x1D, 0x00, 0x00, 0x10, 0x05, 0x00, 0x93, 0x00,
+ 0x1F, 0x07, 0x06, 0x00, 0x1C, 0x1B, 0x0F, 0x30,
+ 0x02, 0x00, 0x01, 0x00, 0x00, 0x10, 0x05, 0x01,
+ 0x94, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x01, 0x00, 0x00, 0x10, 0x05, 0x01, 0x94, 0x00,
+ 0x1B, 0x07, 0x06, 0x00, 0x18, 0x1D, 0x02, 0x00,
+ 0x02, 0x00, 0x00, 0x10, 0x05, 0x02, 0x93, 0x00,
+ 0x14, 0x07, 0x06, 0x00, 0x02, 0x00, 0x02, 0x00,
+ 0x00, 0x10, 0x05, 0x02, 0x93, 0x00, 0x14, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x10,
+ 0x05, 0x02, 0x93, 0x00, 0x14, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x03, 0x00, 0x00, 0x10, 0x05, 0x01,
+ 0x90, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x03, 0x00, 0x00, 0x10, 0x05, 0x01, 0x90, 0x00,
+ 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00, 0x04, 0x00,
+ 0x00, 0x10, 0x05, 0x00, 0x8D, 0x00, 0x20, 0x07,
+ 0x06, 0x00, 0x18, 0x1D, 0x02, 0x00, 0x05, 0x00,
+ 0x00, 0x10, 0x05, 0x01, 0x8A, 0x00, 0x1B, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x06, 0x00, 0x00, 0x10,
+ 0x05, 0x02, 0x88, 0x00, 0x14, 0x07, 0x06, 0x00,
+ 0x18, 0x1D, 0x02, 0x00, 0x07, 0x00, 0x00, 0x10,
+ 0x05, 0x01, 0x85, 0x00, 0x1B, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x08, 0x00, 0x00, 0x10, 0x05, 0x00,
+ 0x82, 0x00, 0x20, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x09, 0x00, 0x00, 0x10, 0x05, 0x01, 0x7F, 0x00,
+ 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00, 0x0A, 0x00,
+ 0x00, 0x10, 0x05, 0x02, 0x7C, 0x00, 0x14, 0x07,
+ 0x06, 0x00, 0x18, 0x1D, 0x02, 0x00, 0x0B, 0x00,
+ 0x00, 0x10, 0x05, 0x01, 0x79, 0x00, 0x1B, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x0C, 0x00, 0x00, 0x10,
+ 0x05, 0x00, 0x76, 0x00, 0x20, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x0D, 0x00, 0x00, 0x10, 0x05, 0x01,
+ 0x73, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x18, 0x1D,
+ 0x02, 0x00, 0x0E, 0x00, 0x00, 0x10, 0x05, 0x02,
+ 0x70, 0x00, 0x14, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x0F, 0x00, 0x00, 0x10, 0x05, 0x01, 0x6D, 0x00,
+ 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00, 0x10, 0x00,
+ 0x00, 0x10, 0x05, 0x00, 0x6A, 0x00, 0x20, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x11, 0x00, 0x00, 0x10,
+ 0x05, 0x01, 0x67, 0x00, 0x1B, 0x07, 0x06, 0x00,
+ 0x18, 0x1D, 0x02, 0x00, 0x12, 0x00, 0x00, 0x10,
+ 0x05, 0x02, 0x65, 0x00, 0x14, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x13, 0x00, 0x00, 0x10, 0x05, 0x01,
+ 0x63, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x14, 0x00, 0x00, 0x10, 0x05, 0x00, 0x63, 0x00,
+ 0x20, 0x07, 0x06, 0x00, 0x02, 0x00, 0x15, 0x00,
+ 0x00, 0x10, 0x05, 0x00, 0x65, 0x00, 0x1F, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x16, 0x00, 0x00, 0x10,
+ 0x05, 0x00, 0x6A, 0x00, 0x1D, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x17, 0x00, 0x00, 0x10, 0x05, 0x00,
+ 0x70, 0x00, 0x19, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x18, 0x00, 0x00, 0x10, 0x05, 0x00, 0x76, 0x00,
+ 0x17, 0x07, 0x06, 0x00, 0x02, 0x00, 0x19, 0x00,
+ 0x00, 0x10, 0x05, 0x00, 0x7C, 0x00, 0x16, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x1A, 0x00, 0x00, 0x10,
+ 0x05, 0x00, 0x82, 0x00, 0x17, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x1B, 0x00, 0x00, 0x10, 0x05, 0x00,
+ 0x88, 0x00, 0x19, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x1C, 0x00, 0x00, 0x10, 0x05, 0x00, 0x8D, 0x00,
+ 0x1D, 0x07, 0x06, 0x00, 0x02, 0x00, 0x1D, 0x00,
+ 0x00, 0x10, 0x05, 0x00, 0x93, 0x00, 0x1F, 0x07,
+ 0x06, 0x00, 0x1C, 0x06, 0x3C, 0x00, 0x1B, 0x0F,
+ 0x31, 0x02, 0x00, 0x00, 0x00, 0x00, 0x10, 0x05,
+ 0x00, 0x95, 0x00, 0x20, 0x07, 0x06, 0x00, 0x02,
+ 0x00, 0x00, 0x00, 0x00, 0x10, 0x05, 0x00, 0x95,
+ 0x00, 0x20, 0x07, 0x06, 0x00, 0x18, 0x1D, 0x02,
+ 0x00, 0x01, 0x00, 0x00, 0x10, 0x05, 0x01, 0x94,
+ 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00, 0x01,
+ 0x00, 0x00, 0x10, 0x05, 0x01, 0x94, 0x00, 0x1B,
+ 0x07, 0x06, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00,
+ 0x10, 0x05, 0x02, 0x93, 0x00, 0x14, 0x07, 0x06,
+ 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x10, 0x05,
+ 0x02, 0x93, 0x00, 0x14, 0x07, 0x06, 0x00, 0x18,
+ 0x1D, 0x02, 0x00, 0x03, 0x00, 0x00, 0x10, 0x05,
+ 0x01, 0x90, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02,
+ 0x00, 0x04, 0x00, 0x00, 0x10, 0x05, 0x00, 0x8D,
+ 0x00, 0x20, 0x07, 0x06, 0x00, 0x02, 0x00, 0x05,
+ 0x00, 0x00, 0x10, 0x05, 0x01, 0x8A, 0x00, 0x1B,
+ 0x07, 0x06, 0x00, 0x18, 0x1D, 0x02, 0x00, 0x06,
+ 0x00, 0x00, 0x10, 0x05, 0x02, 0x88, 0x00, 0x14,
+ 0x07, 0x06, 0x00, 0x02, 0x00, 0x07, 0x00, 0x00,
+ 0x10, 0x05, 0x01, 0x85, 0x00, 0x1B, 0x07, 0x06,
+ 0x00, 0x18, 0x1D, 0x02, 0x00, 0x08, 0x00, 0x00,
+ 0x10, 0x05, 0x00, 0x82, 0x00, 0x20, 0x07, 0x06,
+ 0x00, 0x02, 0x00, 0x09, 0x00, 0x00, 0x10, 0x05,
+ 0x01, 0x7F, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02,
+ 0x00, 0x0A, 0x00, 0x00, 0x10, 0x05, 0x02, 0x7C,
+ 0x00, 0x14, 0x07, 0x06, 0x00, 0x18, 0x1D, 0x02,
+ 0x00, 0x0B, 0x00, 0x00, 0x10, 0x05, 0x01, 0x79,
+ 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00, 0x0C,
+ 0x00, 0x00, 0x10, 0x05, 0x00, 0x76, 0x00, 0x20,
+ 0x07, 0x06, 0x00, 0x18, 0x1D, 0x02, 0x00, 0x0D,
+ 0x00, 0x00, 0x10, 0x05, 0x01, 0x73, 0x00, 0x1B,
+ 0x07, 0x06, 0x00, 0x02, 0x00, 0x0E, 0x00, 0x00,
+ 0x10, 0x05, 0x02, 0x70, 0x00, 0x14, 0x07, 0x06,
+ 0x00, 0x02, 0x00, 0x0F, 0x00, 0x00, 0x10, 0x05,
+ 0x01, 0x6D, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x18,
+ 0x1D, 0x02, 0x00, 0x10, 0x00, 0x00, 0x10, 0x05,
+ 0x00, 0x6A, 0x00, 0x20, 0x07, 0x06, 0x00, 0x02,
+ 0x00, 0x11, 0x00, 0x00, 0x10, 0x05, 0x01, 0x67,
+ 0x00, 0x1B, 0x07, 0x06, 0x00, 0x18, 0x1D, 0x02,
+ 0x00, 0x12, 0x00, 0x00, 0x10, 0x05, 0x02, 0x65,
+ 0x00, 0x14, 0x07, 0x06, 0x00, 0x06, 0x3C, 0x00,
+ 0x02, 0x00, 0x1E, 0x00, 0x00, 0x10, 0x08, 0x12,
+ 0x06, 0x1E, 0x00, 0x0A, 0x01, 0x02, 0x00, 0x1F,
+ 0x00, 0x00, 0x10, 0x07, 0x0A, 0x00, 0x02, 0x00,
+ 0x20, 0x00, 0x00, 0x10, 0x07, 0x0A, 0x00, 0x02,
+ 0x00, 0x21, 0x00, 0x00, 0x10, 0x07, 0x0A, 0x00,
+ 0x02, 0x00, 0x22, 0x00, 0x00, 0x10, 0x07, 0x0A,
+ 0x00, 0x0B, 0x01, 0x02, 0x00, 0x18, 0x1F, 0x06,
+ 0x0A, 0x00, 0x02, 0x00, 0x23, 0x00, 0x00, 0x10,
+ 0x07, 0x14, 0x00, 0x18, 0x1E, 0x02, 0x00, 0x24,
+ 0x00, 0x00, 0x10, 0x07, 0x14, 0x00, 0x02, 0x00,
+ 0x25, 0x00, 0x00, 0x10, 0x07, 0x14, 0x00, 0x18,
+ 0x1F, 0x02, 0x00, 0x26, 0x00, 0x00, 0x10, 0x07,
+ 0x14, 0x00, 0x02, 0x00, 0x27, 0x00, 0x00, 0x10,
+ 0x07, 0x14, 0x00, 0x18, 0x1E, 0x02, 0x00, 0x28,
+ 0x00, 0x00, 0x10, 0x08, 0x06, 0x3C, 0x00, 0x18,
+ 0x1E, 0x03, 0x00, 0x07, 0x06, 0x00, 0x18, 0x1E,
+ 0x03, 0x00, 0x07, 0x06, 0x00, 0x03, 0x00, 0x07,
+ 0x06, 0x00, 0x03, 0x00, 0x07, 0x06, 0x00, 0x03,
+ 0x00, 0x07, 0x06, 0x00, 0x03, 0x00, 0x07, 0x06,
+ 0x00, 0x03, 0x00, 0x07, 0x06, 0x00, 0x18, 0x1E,
+ 0x03, 0x00, 0x07, 0x06, 0x00, 0x03, 0x00, 0x07,
+ 0x06, 0x00, 0x03, 0x00, 0x07, 0x06, 0x00, 0x03,
+ 0x00, 0x07, 0x06, 0x00, 0x03, 0x00, 0x07, 0x06,
+ 0x00, 0x03, 0x00, 0x07, 0x06, 0x00, 0x03, 0x00,
+ 0x07, 0x06, 0x00, 0x03, 0x00, 0x07, 0x06, 0x00,
+ 0x03, 0x00, 0x07, 0x06, 0x00, 0x18, 0x1E, 0x03,
+ 0x00, 0x07, 0x06, 0x00, 0x03, 0x00, 0x07, 0x06,
+ 0x00, 0x03, 0x00, 0x07, 0x06, 0x00, 0x03, 0x00,
+ 0x07, 0x06, 0x00, 0x03, 0x00, 0x07, 0x06, 0x00,
+ 0x03, 0x00, 0x07, 0x06, 0x00, 0x03, 0x00, 0x07,
+ 0x06, 0x00, 0x03, 0x00, 0x07, 0x06, 0x00, 0x18,
+ 0x1E, 0x03, 0x00, 0x07, 0x06, 0x00, 0x03, 0x00,
+ 0x07, 0x06, 0x00, 0x03, 0x00, 0x07, 0x06, 0x00,
+ 0x03, 0x00, 0x07, 0x06, 0x00, 0x03, 0x00, 0x07,
+ 0x06, 0x00, 0x03, 0x00, 0x07, 0x06, 0x00, 0x03,
+ 0x00, 0x07, 0x06, 0x00, 0x03, 0x00, 0x07, 0x06,
+ 0x00, 0x03, 0x00, 0x07, 0x06, 0x00, 0x03, 0x00,
+ 0x07, 0x06, 0x00, 0x13, 0x1C, 0x19, 0x01, 0x06,
+ 0x3C, 0x00, 0x01, 0x00, 0x1D
+};
+
+static const ByteProvider k1KallakWritingSeqDOSOldFloppyProvider = { ARRAYSIZE(k1KallakWritingSeqDOSOldFloppy), k1KallakWritingSeqDOSOldFloppy };
+
+static const byte k1MalcolmTreeSeqDOSOldFloppy[534] = {
+ 0x00, 0x01, 0x00, 0x1A, 0x0E, 0x17, 0x00, 0x00,
+ 0x00, 0x3F, 0x01, 0xC7, 0x0C, 0x00, 0x0C, 0x01,
+ 0x0D, 0x01, 0x09, 0x02, 0x01, 0x00, 0x00, 0x00,
+ 0x10, 0x19, 0x03, 0x09, 0x18, 0x1E, 0x14, 0x18,
+ 0x1F, 0x0A, 0x00, 0x03, 0x01, 0x06, 0x06, 0x00,
+ 0x0B, 0x00, 0x1F, 0x00, 0x18, 0x19, 0x0A, 0x01,
+ 0x03, 0x01, 0x06, 0x06, 0x00, 0x0B, 0x01, 0x0F,
+ 0x00, 0x18, 0x26, 0x10, 0x1F, 0x50, 0x00, 0x2D,
+ 0x05, 0x0A, 0x02, 0x03, 0x01, 0x06, 0x06, 0x00,
+ 0x0B, 0x02, 0x10, 0x00, 0x11, 0x18, 0x1F, 0x03,
+ 0x01, 0x06, 0x06, 0x00, 0x03, 0x01, 0x06, 0x06,
+ 0x00, 0x03, 0x01, 0x06, 0x06, 0x00, 0x18, 0x24,
+ 0x18, 0x1F, 0x03, 0x01, 0x06, 0x06, 0x00, 0x18,
+ 0x1E, 0x0A, 0x03, 0x03, 0x01, 0x06, 0x06, 0x00,
+ 0x0B, 0x03, 0x15, 0x00, 0x10, 0x16, 0x50, 0x00,
+ 0x2D, 0x05, 0x18, 0x1F, 0x03, 0x01, 0x06, 0x06,
+ 0x00, 0x03, 0x01, 0x06, 0x06, 0x00, 0x18, 0x1E,
+ 0x03, 0x01, 0x06, 0x06, 0x00, 0x03, 0x01, 0x06,
+ 0x06, 0x00, 0x18, 0x1F, 0x03, 0x01, 0x06, 0x06,
+ 0x00, 0x03, 0x01, 0x06, 0x06, 0x00, 0x03, 0x01,
+ 0x06, 0x06, 0x00, 0x03, 0x01, 0x06, 0x06, 0x00,
+ 0x18, 0x1E, 0x03, 0x01, 0x06, 0x06, 0x00, 0x18,
+ 0x1A, 0x18, 0x1E, 0x0A, 0x05, 0x03, 0x01, 0x06,
+ 0x06, 0x00, 0x0B, 0x05, 0x09, 0x00, 0x11, 0x0A,
+ 0x06, 0x03, 0x01, 0x06, 0x06, 0x00, 0x0B, 0x06,
+ 0x14, 0x00, 0x18, 0x1A, 0x18, 0x1F, 0x10, 0x17,
+ 0x50, 0x00, 0x2D, 0x05, 0x06, 0x3C, 0x00, 0x0A,
+ 0x07, 0x03, 0x01, 0x06, 0x06, 0x00, 0x0B, 0x07,
+ 0x06, 0x00, 0x18, 0x1E, 0x06, 0x1E, 0x00, 0x10,
+ 0x18, 0x50, 0x00, 0x2D, 0x05, 0x03, 0x01, 0x06,
+ 0x06, 0x00, 0x03, 0x01, 0x06, 0x06, 0x00, 0x03,
+ 0x01, 0x06, 0x06, 0x00, 0x0A, 0x08, 0x04, 0x01,
+ 0x06, 0x06, 0x00, 0x04, 0x01, 0x06, 0x06, 0x00,
+ 0x03, 0x01, 0x06, 0x06, 0x00, 0x03, 0x01, 0x06,
+ 0x06, 0x00, 0x0B, 0x08, 0x01, 0x00, 0x03, 0x01,
+ 0x06, 0x06, 0x00, 0x06, 0x78, 0x00, 0x0A, 0x09,
+ 0x03, 0x01, 0x06, 0x06, 0x00, 0x0B, 0x09, 0x04,
+ 0x00, 0x18, 0x1B, 0x0A, 0x0A, 0x03, 0x01, 0x06,
+ 0x06, 0x00, 0x0B, 0x0A, 0x09, 0x00, 0x06, 0x14,
+ 0x00, 0x10, 0x19, 0x50, 0x00, 0x2D, 0x05, 0x03,
+ 0x01, 0x06, 0x06, 0x00, 0x03, 0x01, 0x06, 0x06,
+ 0x00, 0x0A, 0x0B, 0x03, 0x01, 0x06, 0x06, 0x00,
+ 0x04, 0x01, 0x06, 0x06, 0x00, 0x04, 0x01, 0x06,
+ 0x06, 0x00, 0x03, 0x01, 0x06, 0x06, 0x00, 0x03,
+ 0x01, 0x06, 0x06, 0x00, 0x0B, 0x0B, 0x01, 0x00,
+ 0x03, 0x01, 0x06, 0x06, 0x00, 0x03, 0x01, 0x06,
+ 0x06, 0x00, 0x03, 0x01, 0x06, 0x06, 0x00, 0x10,
+ 0x1A, 0x50, 0x00, 0x2D, 0x05, 0x0A, 0x0C, 0x03,
+ 0x01, 0x06, 0x06, 0x00, 0x0B, 0x0C, 0x12, 0x00,
+ 0x03, 0x01, 0x01, 0x01, 0x11, 0x15, 0x00, 0x02,
+ 0x00, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00,
+ 0x10, 0x10, 0x1C, 0x50, 0x00, 0x2D, 0x05, 0x06,
+ 0x3C, 0x00, 0x03, 0x02, 0x03, 0x02, 0x06, 0x06,
+ 0x00, 0x11, 0x18, 0x1C, 0x0A, 0x0F, 0x03, 0x02,
+ 0x06, 0x06, 0x00, 0x0B, 0x0F, 0x0D, 0x00, 0x10,
+ 0x1D, 0x50, 0x00, 0x2D, 0x05, 0x0A, 0x10, 0x03,
+ 0x02, 0x06, 0x06, 0x00, 0x03, 0x02, 0x06, 0x06,
+ 0x00, 0x03, 0x02, 0x06, 0x06, 0x00, 0x04, 0x02,
+ 0x06, 0x06, 0x00, 0x04, 0x02, 0x06, 0x06, 0x00,
+ 0x04, 0x02, 0x06, 0x06, 0x00, 0x0B, 0x10, 0x02,
+ 0x00, 0x10, 0x1E, 0x50, 0x00, 0x2D, 0x05, 0x0A,
+ 0x11, 0x03, 0x02, 0x06, 0x06, 0x00, 0x03, 0x02,
+ 0x06, 0x06, 0x00, 0x03, 0x02, 0x06, 0x06, 0x00,
+ 0x04, 0x02, 0x06, 0x06, 0x00, 0x04, 0x02, 0x06,
+ 0x06, 0x00, 0x04, 0x02, 0x06, 0x06, 0x00, 0x0B,
+ 0x11, 0x02, 0x00, 0x06, 0xB4, 0x00, 0x13, 0x19,
+ 0x01, 0x01, 0x01, 0x01, 0x02, 0x1D
+};
+
+static const ByteProvider k1MalcolmTreeSeqDOSOldFloppyProvider = { ARRAYSIZE(k1MalcolmTreeSeqDOSOldFloppy), k1MalcolmTreeSeqDOSOldFloppy };
+
+static const byte k1WestwoodLogoSeqDOSOldFloppy[75] = {
+ 0x00, 0x03, 0x01, 0x1A, 0x02, 0x03, 0x00, 0x00,
+ 0x00, 0x00, 0x16, 0x01, 0x06, 0x06, 0x00, 0x06,
+ 0x3C, 0x00, 0x18, 0x14, 0x0A, 0x00, 0x03, 0x03,
+ 0x16, 0x01, 0x0B, 0x00, 0x08, 0x00, 0x06, 0x3C,
+ 0x00, 0x18, 0x27, 0x0A, 0x01, 0x03, 0x03, 0x16,
+ 0x01, 0x0B, 0x01, 0x0B, 0x00, 0x06, 0x78, 0x00,
+ 0x18, 0x14, 0x02, 0x03, 0x0A, 0x00, 0x00, 0x00,
+ 0x16, 0x01, 0x06, 0x06, 0x00, 0x0A, 0x02, 0x04,
+ 0x03, 0x16, 0x01, 0x0B, 0x02, 0x09, 0x00, 0x13,
+ 0x01, 0x03, 0x1D
+};
+
+static const ByteProvider k1WestwoodLogoSeqDOSOldFloppyProvider = { ARRAYSIZE(k1WestwoodLogoSeqDOSOldFloppy), k1WestwoodLogoSeqDOSOldFloppy };
+
+static const byte k1KyrandiaLogoSeqDOSOldFloppy[92] = {
+ 0x15, 0x00, 0x02, 0x00, 0x06, 0x01, 0x1A, 0x02,
+ 0x06, 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x06,
+ 0x06, 0x00, 0x18, 0x14, 0x16, 0x04, 0x0A, 0x00,
+ 0x03, 0x06, 0x16, 0x00, 0x0B, 0x00, 0x0B, 0x00,
+ 0x06, 0x3C, 0x00, 0x18, 0x27, 0x0A, 0x01, 0x03,
+ 0x06, 0x16, 0x00, 0x0B, 0x01, 0x0F, 0x00, 0x06,
+ 0x3C, 0x00, 0x18, 0x27, 0x0A, 0x02, 0x04, 0x06,
+ 0x16, 0x00, 0x0B, 0x02, 0x0F, 0x00, 0x02, 0x06,
+ 0x0D, 0x00, 0x00, 0x00, 0x16, 0x00, 0x06, 0x06,
+ 0x00, 0x06, 0x78, 0x00, 0x18, 0x14, 0x0A, 0x02,
+ 0x04, 0x06, 0x16, 0x00, 0x0B, 0x02, 0x0C, 0x00,
+ 0x13, 0x01, 0x06, 0x1D
+};
+
+static const ByteProvider k1KyrandiaLogoSeqDOSOldFloppyProvider = { ARRAYSIZE(k1KyrandiaLogoSeqDOSOldFloppy), k1KyrandiaLogoSeqDOSOldFloppy };
+
+static const byte k1KallakMalcolmSeqDOSOldFloppy[615] = {
+ 0x00, 0x04, 0x01, 0x1A, 0x0E, 0x17, 0x00, 0x00,
+ 0x00, 0x3F, 0x01, 0xC7, 0x0C, 0x00, 0x0C, 0x03,
+ 0x0D, 0x00, 0x17, 0x00, 0x00, 0x88, 0x3F, 0x01,
+ 0xC7, 0x0C, 0x02, 0x19, 0x05, 0x02, 0x04, 0x00,
+ 0x10, 0x00, 0x3A, 0x09, 0x14, 0x18, 0x23, 0x0A,
+ 0x00, 0x03, 0x04, 0x07, 0x07, 0x00, 0x0B, 0x00,
+ 0x22, 0x00, 0x10, 0x02, 0x50, 0x00, 0x3A, 0x05,
+ 0x0A, 0x01, 0x03, 0x04, 0x07, 0x07, 0x00, 0x0B,
+ 0x01, 0x07, 0x00, 0x06, 0x3C, 0x00, 0x10, 0x03,
+ 0x50, 0x00, 0x3A, 0x05, 0x0A, 0x02, 0x03, 0x04,
+ 0x07, 0x07, 0x00, 0x0B, 0x02, 0x17, 0x00, 0x06,
+ 0x3C, 0x00, 0x10, 0x04, 0x50, 0x00, 0x3A, 0x05,
+ 0x0A, 0x03, 0x03, 0x04, 0x07, 0x07, 0x00, 0x0B,
+ 0x03, 0x0A, 0x00, 0x06, 0x3C, 0x00, 0x03, 0x04,
+ 0x07, 0x07, 0x00, 0x03, 0x04, 0x07, 0x07, 0x00,
+ 0x03, 0x04, 0x07, 0x07, 0x00, 0x10, 0x05, 0xF0,
+ 0x00, 0x3A, 0x0F, 0x03, 0x04, 0x07, 0x07, 0x00,
+ 0x03, 0x04, 0x07, 0x07, 0x00, 0x03, 0x04, 0x07,
+ 0x07, 0x00, 0x03, 0x04, 0x07, 0x07, 0x00, 0x06,
+ 0x3C, 0x00, 0x10, 0x06, 0xF0, 0x00, 0x3A, 0x0F,
+ 0x0A, 0x04, 0x03, 0x04, 0x07, 0x07, 0x00, 0x0B,
+ 0x04, 0x12, 0x00, 0x06, 0x3C, 0x00, 0x03, 0x04,
+ 0x07, 0x07, 0x00, 0x03, 0x04, 0x07, 0x07, 0x00,
+ 0x03, 0x04, 0x07, 0x07, 0x00, 0x03, 0x04, 0x07,
+ 0x07, 0x00, 0x06, 0x78, 0x00, 0x10, 0x07, 0xF0,
+ 0x00, 0x3A, 0x0F, 0x0A, 0x05, 0x03, 0x04, 0x07,
+ 0x07, 0x00, 0x0B, 0x05, 0x11, 0x00, 0x06, 0x3C,
+ 0x00, 0x03, 0x04, 0x07, 0x07, 0x00, 0x03, 0x04,
+ 0x07, 0x07, 0x00, 0x10, 0x08, 0x50, 0x00, 0x3A,
+ 0x05, 0x0A, 0x06, 0x03, 0x04, 0x07, 0x07, 0x00,
+ 0x0B, 0x06, 0x07, 0x00, 0x06, 0x3C, 0x00, 0x03,
+ 0x04, 0x07, 0x07, 0x00, 0x03, 0x04, 0x07, 0x07,
+ 0x00, 0x03, 0x04, 0x07, 0x07, 0x00, 0x10, 0x09,
+ 0x50, 0x00, 0x3A, 0x05, 0x0A, 0x07, 0x03, 0x04,
+ 0x07, 0x07, 0x00, 0x0B, 0x07, 0x0A, 0x00, 0x06,
+ 0x3C, 0x00, 0x03, 0x04, 0x07, 0x07, 0x00, 0x10,
+ 0x0A, 0x50, 0x00, 0x3A, 0x05, 0x0A, 0x08, 0x03,
+ 0x04, 0x07, 0x07, 0x00, 0x0B, 0x08, 0x10, 0x00,
+ 0x06, 0x3C, 0x00, 0x03, 0x04, 0x07, 0x07, 0x00,
+ 0x10, 0x0B, 0xF0, 0x00, 0x3A, 0x0F, 0x03, 0x04,
+ 0x07, 0x07, 0x00, 0x03, 0x04, 0x07, 0x07, 0x00,
+ 0x03, 0x04, 0x07, 0x07, 0x00, 0x03, 0x04, 0x07,
+ 0x07, 0x00, 0x03, 0x04, 0x07, 0x07, 0x00, 0x03,
+ 0x04, 0x07, 0x07, 0x00, 0x03, 0x04, 0x07, 0x07,
+ 0x00, 0x03, 0x04, 0x07, 0x07, 0x00, 0x06, 0x3C,
+ 0x00, 0x03, 0x04, 0x07, 0x07, 0x00, 0x10, 0x0C,
+ 0xF0, 0x00, 0x3A, 0x0F, 0x0A, 0x09, 0x03, 0x04,
+ 0x07, 0x07, 0x00, 0x0B, 0x09, 0x0E, 0x00, 0x06,
+ 0x3C, 0x00, 0x03, 0x04, 0x07, 0x07, 0x00, 0x03,
+ 0x04, 0x07, 0x07, 0x00, 0x03, 0x04, 0x07, 0x07,
+ 0x00, 0x03, 0x04, 0x07, 0x07, 0x00, 0x03, 0x04,
+ 0x07, 0x07, 0x00, 0x03, 0x04, 0x07, 0x07, 0x00,
+ 0x10, 0x0D, 0x50, 0x00, 0x3A, 0x05, 0x0A, 0x0A,
+ 0x03, 0x04, 0x07, 0x07, 0x00, 0x0B, 0x0A, 0x0E,
+ 0x00, 0x06, 0x3C, 0x00, 0x0A, 0x0B, 0x03, 0x04,
+ 0x07, 0x07, 0x00, 0x0B, 0x0B, 0x02, 0x00, 0x18,
+ 0x20, 0x0A, 0x0C, 0x03, 0x04, 0x07, 0x07, 0x00,
+ 0x0B, 0x0C, 0x06, 0x00, 0x18, 0x21, 0x0A, 0x0D,
+ 0x03, 0x04, 0x07, 0x07, 0x00, 0x0B, 0x0D, 0x0C,
+ 0x00, 0x18, 0x22, 0x0A, 0x0E, 0x03, 0x04, 0x07,
+ 0x07, 0x00, 0x0B, 0x0E, 0x0B, 0x00, 0x10, 0x0E,
+ 0x50, 0x00, 0x3A, 0x05, 0x0A, 0x0F, 0x03, 0x04,
+ 0x07, 0x07, 0x00, 0x0B, 0x0F, 0x09, 0x00, 0x06,
+ 0x3C, 0x00, 0x03, 0x04, 0x07, 0x07, 0x00, 0x10,
+ 0x0F, 0x50, 0x00, 0x3A, 0x05, 0x0A, 0x10, 0x03,
+ 0x04, 0x07, 0x07, 0x00, 0x0B, 0x10, 0x09, 0x00,
+ 0x06, 0x3C, 0x00, 0x03, 0x04, 0x07, 0x07, 0x00,
+ 0x10, 0x10, 0x50, 0x00, 0x3A, 0x05, 0x0A, 0x11,
+ 0x03, 0x04, 0x07, 0x07, 0x00, 0x0B, 0x11, 0x0F,
+ 0x00, 0x06, 0x3C, 0x00, 0x03, 0x04, 0x07, 0x07,
+ 0x00, 0x10, 0x11, 0x50, 0x00, 0x3A, 0x05, 0x0A,
+ 0x12, 0x03, 0x04, 0x07, 0x07, 0x00, 0x0B, 0x12,
+ 0x14, 0x00, 0x06, 0x3C, 0x00, 0x0A, 0x13, 0x03,
+ 0x04, 0x07, 0x07, 0x00, 0x0B, 0x13, 0x06, 0x00,
+ 0x18, 0x23, 0x0A, 0x13, 0x03, 0x04, 0x07, 0x07,
+ 0x00, 0x0B, 0x13, 0x07, 0x00, 0x11, 0x06, 0x3C,
+ 0x00, 0x13, 0x19, 0x01, 0x01, 0x04, 0x1D
+};
+
+static const ByteProvider k1KallakMalcolmSeqDOSOldFloppyProvider = { ARRAYSIZE(k1KallakMalcolmSeqDOSOldFloppy), k1KallakMalcolmSeqDOSOldFloppy };
+
+static const byte k1ForestSeqDOSOldFloppy[405] = {
+ 0x00, 0x05, 0x01, 0x00, 0x07, 0x01, 0x1A, 0x02,
+ 0x07, 0x00, 0x00, 0x00, 0x08, 0x02, 0x05, 0x00,
+ 0x98, 0x00, 0x38, 0x0A, 0x00, 0x03, 0x07, 0x16,
+ 0x02, 0x06, 0x09, 0x00, 0x0B, 0x00, 0x41, 0x00,
+ 0x18, 0x16, 0x03, 0x07, 0x02, 0x05, 0x01, 0x98,
+ 0x00, 0x38, 0x16, 0x02, 0x16, 0x03, 0x06, 0x09,
+ 0x00, 0x03, 0x07, 0x02, 0x05, 0x03, 0x98, 0x00,
+ 0x38, 0x16, 0x02, 0x16, 0x03, 0x06, 0x09, 0x00,
+ 0x03, 0x07, 0x02, 0x05, 0x01, 0x98, 0x00, 0x38,
+ 0x16, 0x02, 0x16, 0x03, 0x06, 0x09, 0x00, 0x03,
+ 0x07, 0x02, 0x05, 0x00, 0x98, 0x00, 0x38, 0x16,
+ 0x02, 0x16, 0x03, 0x06, 0x09, 0x00, 0x0A, 0x05,
+ 0x03, 0x07, 0x16, 0x02, 0x06, 0x09, 0x00, 0x0B,
+ 0x05, 0x0E, 0x00, 0x18, 0x16, 0x03, 0x07, 0x02,
+ 0x05, 0x01, 0x98, 0x00, 0x38, 0x16, 0x02, 0x16,
+ 0x03, 0x06, 0x09, 0x00, 0x03, 0x07, 0x02, 0x05,
+ 0x03, 0x98, 0x00, 0x38, 0x16, 0x02, 0x16, 0x03,
+ 0x06, 0x09, 0x00, 0x03, 0x07, 0x02, 0x05, 0x01,
+ 0x98, 0x00, 0x38, 0x16, 0x02, 0x16, 0x03, 0x06,
+ 0x09, 0x00, 0x03, 0x07, 0x02, 0x05, 0x04, 0x98,
+ 0x00, 0x38, 0x16, 0x02, 0x16, 0x03, 0x06, 0x09,
+ 0x00, 0x03, 0x07, 0x16, 0x02, 0x06, 0x09, 0x00,
+ 0x03, 0x07, 0x16, 0x02, 0x06, 0x09, 0x00, 0x03,
+ 0x07, 0x02, 0x05, 0x05, 0x98, 0x00, 0x38, 0x16,
+ 0x02, 0x16, 0x03, 0x06, 0x09, 0x00, 0x03, 0x07,
+ 0x16, 0x02, 0x06, 0x09, 0x00, 0x03, 0x07, 0x16,
+ 0x02, 0x06, 0x09, 0x00, 0x03, 0x07, 0x02, 0x05,
+ 0x06, 0x98, 0x00, 0x38, 0x16, 0x02, 0x16, 0x03,
+ 0x06, 0x09, 0x00, 0x03, 0x07, 0x16, 0x02, 0x06,
+ 0x09, 0x00, 0x03, 0x07, 0x16, 0x02, 0x06, 0x09,
+ 0x00, 0x18, 0x25, 0x0A, 0x00, 0x03, 0x07, 0x03,
+ 0x05, 0x16, 0x02, 0x16, 0x03, 0x06, 0x09, 0x00,
+ 0x0B, 0x00, 0x09, 0x00, 0x0A, 0x06, 0x03, 0x07,
+ 0x16, 0x02, 0x06, 0x09, 0x00, 0x0B, 0x06, 0x0E,
+ 0x00, 0x18, 0x17, 0x0A, 0x01, 0x03, 0x07, 0x03,
+ 0x05, 0x16, 0x02, 0x16, 0x03, 0x06, 0x09, 0x00,
+ 0x0B, 0x01, 0x0D, 0x00, 0x18, 0x25, 0x0A, 0x07,
+ 0x03, 0x07, 0x16, 0x02, 0x06, 0x09, 0x00, 0x0B,
+ 0x07, 0x0E, 0x00, 0x18, 0x18, 0x03, 0x07, 0x03,
+ 0x05, 0x16, 0x02, 0x16, 0x03, 0x06, 0x09, 0x00,
+ 0x03, 0x07, 0x03, 0x05, 0x16, 0x02, 0x16, 0x03,
+ 0x06, 0x09, 0x00, 0x03, 0x07, 0x03, 0x05, 0x16,
+ 0x02, 0x16, 0x03, 0x06, 0x09, 0x00, 0x03, 0x07,
+ 0x03, 0x05, 0x16, 0x02, 0x16, 0x03, 0x06, 0x09,
+ 0x00, 0x03, 0x07, 0x03, 0x05, 0x16, 0x02, 0x16,
+ 0x03, 0x06, 0x09, 0x00, 0x06, 0x12, 0x00, 0x18,
+ 0x25, 0x0A, 0x02, 0x03, 0x07, 0x03, 0x05, 0x16,
+ 0x02, 0x16, 0x03, 0x06, 0x09, 0x00, 0x0B, 0x02,
+ 0x07, 0x00, 0x0A, 0x03, 0x03, 0x07, 0x16, 0x02,
+ 0x06, 0x09, 0x00, 0x0B, 0x03, 0x0F, 0x00, 0x13,
+ 0x01, 0x07, 0x01, 0x05, 0x1D
+};
+
+static const ByteProvider k1ForestSeqDOSOldFloppyProvider = { ARRAYSIZE(k1ForestSeqDOSOldFloppy), k1ForestSeqDOSOldFloppy };
+
+static const char *const k1IntroCPSStringsDOSOldFloppy[2] = {
+ "mal-kal.cps",
+ "tree.cps"
+};
+
+static const StringListProvider k1IntroCPSStringsDOSOldFloppyProvider = { ARRAYSIZE(k1IntroCPSStringsDOSOldFloppy), k1IntroCPSStringsDOSOldFloppy };
+
+static const char *const k1IntroCOLStringsDOSOldFloppy[4] = {
+ "kallak.col",
+ "tree_exp.col",
+ "ww.col",
+ "mal-kal.col"
+};
+
+static const StringListProvider k1IntroCOLStringsDOSOldFloppyProvider = { ARRAYSIZE(k1IntroCOLStringsDOSOldFloppy), k1IntroCOLStringsDOSOldFloppy };
+
+static const char *const k1IntroWSAStringsDOSOldFloppy[11] = {
+ "kallak.wsa",
+ "tree1.wsa",
+ "tree2.wsa",
+ "westwood.wsa",
+ "mal-kal.wsa",
+ "destruct.wsa",
+ "kyrandia.wsa",
+ "shore.wsa",
+ "reunion.wsa",
+ "reuniont.wsa",
+ "latern.wsa"
+};
+
+static const StringListProvider k1IntroWSAStringsDOSOldFloppyProvider = { ARRAYSIZE(k1IntroWSAStringsDOSOldFloppy), k1IntroWSAStringsDOSOldFloppy };
+
+static const Room k1RoomListDOSOldFloppy[246] = {
+ { 30, 0xFFFF, 0xFFFF, 0x0001, 0xFFFF },
+ { 71, 0xFFFF, 0xFFFF, 0x0005, 0xFFFF },
+ { 44, 0xFFFF, 0x0003, 0xFFFF, 0xFFFF },
+ { 72, 0xFFFF, 0xFFFF, 0x000E, 0xFFFF },
+ { 48, 0xFFFF, 0x0005, 0xFFFF, 0x000E },
+ { 74, 0xFFFF, 0x000A, 0xFFFF, 0x0004 },
+ { 46, 0xFFFF, 0x000F, 0xFFFF, 0x000B },
+ { 75, 0xFFFF, 0x0009, 0xFFFF, 0x0018 },
+ { 13, 0xFFFF, 0x000C, 0xFFFF, 0x000A },
+ { 5, 0x000D, 0xFFFF, 0xFFFF, 0x0007 },
+ { 84, 0xFFFF, 0x0008, 0xFFFF, 0x0005 },
+ { 37, 0xFFFF, 0x0006, 0x000C, 0x0010 },
+ { 51, 0x000B, 0xFFFF, 0x000D, 0x0008 },
+ { 23, 0x000C, 0xFFFF, 0x0009, 0xFFFF },
+ { 25, 0x0003, 0x0004, 0xFFFF, 0xFFFF },
+ { 11, 0xFFFF, 0xFFFF, 0xFFFF, 0x0006 },
+ { 86, 0xFFFF, 0x000B, 0xFFFF, 0xFFFF },
+ { 84, 0xFFFF, 0x0022, 0x0017, 0x0016 },
+ { 51, 0x0020, 0x0014, 0x0024, 0x0015 },
+ { 85, 0x0014, 0x0019, 0xFFFF, 0x0024 },
+ { 33, 0x001C, 0xFFFF, 0x0013, 0x0012 },
+ { 31, 0x0022, 0x0012, 0xFFFF, 0x0017 },
+ { 25, 0x001F, 0x0011, 0xFFFF, 0xFFFF },
+ { 25, 0x0011, 0x0015, 0xFFFF, 0xFFFF },
+ { 2, 0xFFFF, 0x0007, 0xFFFF, 0x001A },
+ { 82, 0xFFFF, 0x006D, 0xFFFF, 0x0013 },
+ { 77, 0xFFFF, 0x0018, 0x0021, 0xFFFF },
+ { 15, 0xFFFF, 0x001A, 0xFFFF, 0xFFFF },
+ { 16, 0xFFFF, 0xFFFF, 0x0014, 0x0020 },
+ { 19, 0xFFFF, 0x0021, 0xFFFF, 0x001F },
+ { 12, 0xFFFF, 0xFFFF, 0x0020, 0x0021 },
+ { 7, 0x0023, 0x001D, 0x0016, 0xFFFF },
+ { 20, 0x001E, 0x001C, 0x0012, 0x0022 },
+ { 17, 0x001A, 0x001E, 0x0022, 0x001D },
+ { 22, 0x0021, 0x0020, 0x0015, 0x0011 },
+ { 24, 0xFFFF, 0xFFFF, 0x001F, 0xFFFF },
+ { 32, 0x0012, 0x0013, 0xFFFF, 0xFFFF },
+ { 87, 0xFFFF, 0x0026, 0xFFFF, 0xFFFF },
+ { 8, 0xFFFF, 0x0027, 0xFFFF, 0x0025 },
+ { 88, 0xFFFF, 0x0035, 0x0037, 0x0026 },
+ { 35, 0xFFFF, 0x0036, 0x0038, 0xFFFF },
+ { 47, 0xFFFF, 0xFFFF, 0x003B, 0xFFFF },
+ { 28, 0x0035, 0x002B, 0x002F, 0x0037 },
+ { 36, 0xFFFF, 0x002C, 0xFFFF, 0x002A },
+ { 78, 0xFFFF, 0xFFFF, 0xFFFF, 0x002B },
+ { 10, 0xFFFF, 0xFFFF, 0xFFFF, 0x002C },
+ { 51, 0x0037, 0x002F, 0x0040, 0x003C },
+ { 38, 0x002A, 0x003D, 0x0041, 0x002E },
+ { 81, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 41, 0xFFFF, 0xFFFF, 0x0069, 0xFFFF },
+ { 50, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 18, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 49, 0xFFFF, 0xFFFF, 0x0054, 0xFFFF },
+ { 105, 0xFFFF, 0xFFFF, 0x002A, 0x0027 },
+ { 105, 0xFFFF, 0xFFFF, 0x0039, 0x0028 },
+ { 51, 0x0027, 0x002A, 0x002E, 0x0049 },
+ { 34, 0x0028, 0x0039, 0xFFFF, 0xFFFF },
+ { 51, 0x0036, 0x003A, 0xFFFF, 0x0038 },
+ { 84, 0xFFFF, 0x003B, 0xFFFF, 0x0039 },
+ { 37, 0x0029, 0xFFFF, 0x003E, 0x003A },
+ { 37, 0x0049, 0x002E, 0x003F, 0xFFFF },
+ { 33, 0xFFFF, 0xFFFF, 0xFFFF, 0x002F },
+ { 34, 0x003B, 0x003F, 0xFFFF, 0xFFFF },
+ { 85, 0x003C, 0x0040, 0xFFFF, 0x003E },
+ { 106, 0x002E, 0x0041, 0xFFFF, 0x003F },
+ { 33, 0x002F, 0xFFFF, 0xFFFF, 0x0040 },
+ { 60, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 11, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 33, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 26, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 0, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 25, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 23, 0xFFFF, 0x0037, 0x003C, 0xFFFF },
+ { 6, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 51, 0x0063, 0x0067, 0x006B, 0x0066 },
+ { 66, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 67, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 62, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 65, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 18, 0x0056, 0x005A, 0x005E, 0xFFFF },
+ { 6, 0xFFFF, 0x0052, 0x0056, 0xFFFF },
+ { 4, 0xFFFF, 0x0053, 0x0057, 0x0051 },
+ { 3, 0xFFFF, 0x0054, 0xFFFF, 0x0052 },
+ { 37, 0x0034, 0x0055, 0x0058, 0x0053 },
+ { 11, 0xFFFF, 0xFFFF, 0x0059, 0x0054 },
+ { 37, 0x0051, 0x0057, 0x0050, 0xFFFF },
+ { 51, 0x0052, 0xFFFF, 0x005A, 0x0056 },
+ { 51, 0x0054, 0x0059, 0x005C, 0xFFFF },
+ { 1, 0x0055, 0xFFFF, 0x005D, 0x0058 },
+ { 106, 0x0057, 0x005B, 0xFFFF, 0x0050 },
+ { 85, 0xFFFF, 0x005C, 0xFFFF, 0x005A },
+ { 37, 0x0058, 0x005D, 0x005F, 0x005B },
+ { 33, 0x0059, 0xFFFF, 0xFFFF, 0x005C },
+ { 51, 0x0050, 0xFFFF, 0x0061, 0xFFFF },
+ { 51, 0x005C, 0xFFFF, 0x0064, 0xFFFF },
+ { 37, 0xFFFF, 0x0061, 0x0065, 0xFFFF },
+ { 51, 0x005E, 0x0062, 0xFFFF, 0x0060 },
+ { 84, 0xFFFF, 0x0063, 0x0066, 0x0061 },
+ { 84, 0xFFFF, 0x0064, 0x004B, 0x0062 },
+ { 33, 0x005F, 0xFFFF, 0x0067, 0x0063 },
+ { 51, 0x0060, 0xFFFF, 0x0068, 0xFFFF },
+ { 37, 0x0062, 0x004B, 0x006A, 0xFFFF },
+ { 1, 0x0064, 0xFFFF, 0x006C, 0x004B },
+ { 34, 0x0065, 0x0069, 0xFFFF, 0xFFFF },
+ { 51, 0x0031, 0x006A, 0xFFFF, 0x0068 },
+ { 85, 0x0066, 0x006B, 0xFFFF, 0x0069 },
+ { 106, 0x004B, 0x006C, 0xFFFF, 0x006A },
+ { 33, 0x0067, 0xFFFF, 0xFFFF, 0x006B },
+ { 55, 0x00C4, 0x00C5, 0xFFFF, 0x0019 },
+ { 52, 0xFFFF, 0x00C1, 0xFFFF, 0x0096 },
+ { 64, 0xFFFF, 0x00BF, 0xFFFF, 0x008C },
+ { 57, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 54, 0x00AF, 0xFFFF, 0x00B7, 0x00AC },
+ { 53, 0x0078, 0xFFFF, 0x0079, 0xFFFF },
+ { 29, 0xFFFF, 0x00BB, 0xFFFF, 0x00C5 },
+ { 69, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 76, 0x00C6, 0xFFFF, 0xFFFF, 0x00B1 },
+ { 59, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 58, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 59, 0xFFFF, 0x0025, 0x0072, 0xFFFF },
+ { 58, 0x0072, 0x007B, 0x00BB, 0xFFFF },
+ { 58, 0xFFFF, 0x007F, 0x007B, 0xFFFF },
+ { 59, 0x007A, 0xFFFF, 0x007C, 0x0079 },
+ { 58, 0x007B, 0x0081, 0x00BC, 0xFFFF },
+ { 58, 0x00BC, 0x0083, 0xFFFF, 0xFFFF },
+ { 58, 0xFFFF, 0x0085, 0x007F, 0xFFFF },
+ { 59, 0x007E, 0x0086, 0x0080, 0x007A },
+ { 58, 0x007F, 0x00BD, 0x0081, 0xFFFF },
+ { 59, 0x0080, 0x0087, 0x0082, 0x007C },
+ { 58, 0x0081, 0xFFFF, 0x0083, 0x00BC },
+ { 59, 0x0082, 0x0089, 0x0084, 0x007D },
+ { 58, 0x0083, 0x008A, 0xFFFF, 0xFFFF },
+ { 59, 0xFFFF, 0x008B, 0x0086, 0x007E },
+ { 58, 0x0085, 0x008C, 0x00BD, 0x007F },
+ { 58, 0x00BD, 0x008E, 0x0088, 0x0081 },
+ { 59, 0x0087, 0xFFFF, 0x0089, 0xFFFF },
+ { 58, 0x0088, 0x0090, 0x008A, 0x0083 },
+ { 59, 0x0089, 0x0091, 0xFFFF, 0x0084 },
+ { 58, 0xFFFF, 0x0092, 0x008C, 0x0085 },
+ { 59, 0x008B, 0x006F, 0x008D, 0x0086 },
+ { 58, 0x008C, 0x0093, 0x008E, 0x00BD },
+ { 59, 0x008D, 0xFFFF, 0xFFFF, 0x0087 },
+ { 58, 0xFFFF, 0x00BE, 0x0090, 0xFFFF },
+ { 59, 0x008F, 0x0095, 0x0091, 0x0089 },
+ { 58, 0x0090, 0x0096, 0xFFFF, 0x008A },
+ { 59, 0xFFFF, 0x0098, 0xFFFF, 0x008B },
+ { 59, 0xFFFF, 0xFFFF, 0xFFFF, 0x008D },
+ { 58, 0xFFFF, 0x009A, 0x00BE, 0xFFFF },
+ { 58, 0x00BE, 0xFFFF, 0x0096, 0x0090 },
+ { 59, 0x0095, 0x006E, 0x0097, 0x0091 },
+ { 58, 0x0096, 0x009D, 0xFFFF, 0xFFFF },
+ { 58, 0xFFFF, 0x009E, 0x00BF, 0x0092 },
+ { 58, 0x00BF, 0x00A0, 0x009A, 0xFFFF },
+ { 59, 0x0099, 0xFFFF, 0x009B, 0x0094 },
+ { 58, 0x009A, 0xFFFF, 0x009C, 0xFFFF },
+ { 59, 0x009B, 0x00A2, 0xFFFF, 0xFFFF },
+ { 59, 0xFFFF, 0x00A3, 0xFFFF, 0x0097 },
+ { 59, 0xFFFF, 0xFFFF, 0x009F, 0x0098 },
+ { 58, 0x009E, 0x00A4, 0x00A0, 0x00BF },
+ { 59, 0x009F, 0x00A5, 0xFFFF, 0x0099 },
+ { 58, 0xFFFF, 0x00A6, 0x00C0, 0xFFFF },
+ { 58, 0x00C0, 0x00A8, 0xFFFF, 0x009C },
+ { 58, 0x00C1, 0xFFFF, 0xFFFF, 0x009D },
+ { 59, 0xFFFF, 0x00AA, 0x00A5, 0x009F },
+ { 58, 0x00A4, 0x00AB, 0x00A6, 0x00A0 },
+ { 59, 0x00A5, 0x00AC, 0x00A7, 0x00A1 },
+ { 58, 0x00A6, 0xFFFF, 0xFFFF, 0x00C0 },
+ { 59, 0xFFFF, 0x00AD, 0x00A9, 0x00A2 },
+ { 58, 0x00A8, 0x00AE, 0xFFFF, 0x00C1 },
+ { 58, 0xFFFF, 0xFFFF, 0x00AB, 0x00A4 },
+ { 59, 0x00AA, 0x00AF, 0x00AC, 0x00A5 },
+ { 58, 0x00AB, 0x0071, 0x00C2, 0x00A6 },
+ { 58, 0xFFFF, 0x00B0, 0x00AE, 0x00A8 },
+ { 59, 0x00AD, 0xFFFF, 0xFFFF, 0x00A9 },
+ { 58, 0xFFFF, 0x00C3, 0x0071, 0x00AB },
+ { 59, 0xFFFF, 0xFFFF, 0x00B1, 0x00AD },
+ { 58, 0x00B0, 0x0075, 0xFFFF, 0xFFFF },
+ { 59, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 59, 0x00C3, 0xFFFF, 0x00B4, 0xFFFF },
+ { 59, 0x00B3, 0x00BA, 0xFFFF, 0xFFFF },
+ { 58, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 59, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 58, 0x0071, 0xFFFF, 0xFFFF, 0x00C2 },
+ { 58, 0xFFFF, 0xFFFF, 0x00B9, 0xFFFF },
+ { 59, 0x00B8, 0xFFFF, 0xFFFF, 0x00C3 },
+ { 58, 0xFFFF, 0xFFFF, 0xFFFF, 0x00B4 },
+ { 59, 0x0079, 0xFFFF, 0xFFFF, 0x0073 },
+ { 59, 0x007C, 0x0082, 0x007D, 0xFFFF },
+ { 59, 0x0086, 0x008D, 0x0087, 0x0080 },
+ { 59, 0x0094, 0xFFFF, 0x0095, 0x008F },
+ { 59, 0x0098, 0x009F, 0x0099, 0x006F },
+ { 59, 0x00A1, 0x00A7, 0x00A2, 0xFFFF },
+ { 59, 0xFFFF, 0x00A9, 0x00A3, 0x006E },
+ { 59, 0x00AC, 0x00B7, 0xFFFF, 0xFFFF },
+ { 58, 0xFFFF, 0x00B9, 0x00B3, 0x00AF },
+ { 59, 0xFFFF, 0xFFFF, 0x006D, 0xFFFF },
+ { 58, 0xFFFF, 0x0073, 0xFFFF, 0x006D },
+ { 59, 0xFFFF, 0xFFFF, 0x0075, 0xFFFF },
+ { 94, 0xFFFF, 0x00C8, 0xFFFF, 0xFFFF },
+ { 43, 0x00C9, 0x00CB, 0x00CA, 0x00C7 },
+ { 51, 0xFFFF, 0xFFFF, 0x00C8, 0xFFFF },
+ { 37, 0x00C8, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 79, 0xFFFF, 0xFFFF, 0xFFFF, 0x00C8 },
+ { 80, 0xFFFF, 0xFFFF, 0x00CB, 0x00CD },
+ { 97, 0x00E3, 0x00D4, 0x00CC, 0x00D3 },
+ { 103, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 100, 0xFFFF, 0x00CE, 0x00D5, 0xFFFF },
+ { 98, 0xFFFF, 0xFFFF, 0xFFFF, 0x00D7 },
+ { 101, 0xFFFF, 0x00D2, 0x00CE, 0xFFFF },
+ { 99, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 93, 0x00D5, 0x00CD, 0xFFFF, 0xFFFF },
+ { 93, 0x00D6, 0xFFFF, 0xFFFF, 0x00CD },
+ { 93, 0x00CF, 0x00CE, 0x00D3, 0xFFFF },
+ { 93, 0x00D7, 0xFFFF, 0x00D4, 0x00CE },
+ { 93, 0xFFFF, 0x00D0, 0x00D6, 0x00CE },
+ { 93, 0x00DA, 0x00E3, 0xFFFF, 0xFFFF },
+ { 93, 0x00DB, 0xFFFF, 0xFFFF, 0x00E3 },
+ { 93, 0xFFFF, 0x00E4, 0x00D8, 0x00E2 },
+ { 93, 0xFFFF, 0x00E1, 0x00D9, 0x00E4 },
+ { 93, 0xFFFF, 0x00E4, 0xFFFF, 0x00DF },
+ { 93, 0xFFFF, 0x00E0, 0xFFFF, 0x00E4 },
+ { 93, 0xFFFF, 0xFFFF, 0x00E4, 0xFFFF },
+ { 91, 0xFFFF, 0x00DC, 0xFFFF, 0xFFFF },
+ { 90, 0xFFFF, 0xFFFF, 0xFFFF, 0x00DD },
+ { 92, 0xFFFF, 0xFFFF, 0xFFFF, 0x00DB },
+ { 95, 0xFFFF, 0x00DA, 0xFFFF, 0xFFFF },
+ { 96, 0xFFFF, 0x00D9, 0x00CD, 0x00D8 },
+ { 89, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 102, 0xFFFF, 0x00E6, 0xFFFF, 0xFFFF },
+ { 102, 0xFFFF, 0x00EA, 0x00E8, 0x00E5 },
+ { 102, 0xFFFF, 0x00E8, 0x00EB, 0xFFFF },
+ { 102, 0x00E6, 0xFFFF, 0xFFFF, 0x00E7 },
+ { 102, 0xFFFF, 0xFFFF, 0x00ED, 0xFFFF },
+ { 102, 0xFFFF, 0xFFFF, 0xFFFF, 0x00E6 },
+ { 102, 0x00E7, 0x00EC, 0x00EF, 0xFFFF },
+ { 102, 0xFFFF, 0x00ED, 0x00F0, 0x00EB },
+ { 102, 0x00E9, 0x00EE, 0x00F1, 0x00EC },
+ { 102, 0xFFFF, 0xFFFF, 0x00F2, 0x00ED },
+ { 102, 0x00EB, 0x00F0, 0xFFFF, 0xFFFF },
+ { 102, 0x00EC, 0x00F1, 0x00F3, 0x00EF },
+ { 102, 0x00ED, 0xFFFF, 0x00F4, 0x00F0 },
+ { 102, 0x00EE, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 102, 0x00F0, 0x00F4, 0xFFFF, 0xFFFF },
+ { 102, 0x00F1, 0x00F5, 0xFFFF, 0x00F3 },
+ { 102, 0xFFFF, 0xFFFF, 0x00CF, 0x00F4 }
+};
+
+static const RoomProvider k1RoomListDOSOldFloppyProvider = { ARRAYSIZE(k1RoomListDOSOldFloppy), k1RoomListDOSOldFloppy };
+
+static const char *const k1RoomFilenamesDOSOldFloppy[107] = {
+ "CLIFFB",
+ "XEDGEB",
+ "CAVEB",
+ "NCLIFF",
+ "NCLIFFB",
+ "CAVE",
+ "NWCLIFF",
+ "OAKS",
+ "PLATEAU",
+ "POTHUT",
+ "POTION",
+ "NWCLIFB",
+ "SONG",
+ "SORROW",
+ "SPELHUT",
+ "SPELL",
+ "SPRING",
+ "SQUARE",
+ "STUMP",
+ "TEMPLE",
+ "WELL",
+ "WILLOW",
+ "WISE",
+ "XEDGE",
+ "RUBY",
+ "ZROCK",
+ "ZROCKB",
+ "FORESTD",
+ "FOUNTN",
+ "GATECV",
+ "GEMCUT",
+ "CLIFF",
+ "DEAD",
+ "EDGE",
+ "EDGEB",
+ "FALLS",
+ "FORESTC",
+ "FORESTB",
+ "GLADE",
+ "GEMHUT",
+ "ALGAE",
+ "MIX",
+ "BRIDGE",
+ "GRAVE",
+ "HEALER",
+ "HEALHUT",
+ "ALTAR",
+ "BURN",
+ "SICKWIL",
+ "LAGOON",
+ "MAPLE",
+ "FORESTA",
+ "ARCH",
+ "CHASM",
+ "EMCAV",
+ "ENTER",
+ "FLOWERS",
+ "GEMSLOT",
+ "GEN_CAV",
+ "GENCAVB",
+ "GOLDEN",
+ "GOLDENB",
+ "ICE",
+ "MARKET",
+ "MOONCAV",
+ "MSHCAV",
+ "POOL",
+ "SEASONS",
+ "SHRINE",
+ "TREECAV",
+ "EXTGEM",
+ "GEM",
+ "EXTHEAL",
+ "BASE",
+ "TRUNK",
+ "BROKEN",
+ "LAVA",
+ "EXTSPEL",
+ "EXTPOT",
+ "CASTLE",
+ "CGATE",
+ "LEPHOLE",
+ "DRAGON",
+ "XEDGEC",
+ "FNORTH",
+ "FSOUTH",
+ "FGOWEST",
+ "PLTCAVE",
+ "BONKBG",
+ "BALCONY",
+ "DARMS",
+ "BRINS",
+ "ALCHEMY",
+ "GENHALL",
+ "LANDING",
+ "BELROOM",
+ "UPSTAIR",
+ "DNSTAIR",
+ "KITCHEN",
+ "KYRAGEM",
+ "LIBRARY",
+ "FOYER",
+ "CATACOM",
+ "GRTHALL",
+ "FESTSTH",
+ "FWSTSTH",
+ "FSOUTHB"
+};
+
+static const StringListProvider k1RoomFilenamesDOSOldFloppyProvider = { ARRAYSIZE(k1RoomFilenamesDOSOldFloppy), k1RoomFilenamesDOSOldFloppy };
+
+static const char *const k1CharacterImageFilenamesDOSOldFloppy[20] = {
+ "BRANDON.CPS",
+ "DAPHNE.CPS",
+ "MERITH.CPS",
+ "HERMAN.CPS",
+ "SMALL.CPS",
+ "MALCOM.CPS",
+ "DRINK.CPS",
+ "SHRINK.CPS",
+ "HEALBR1.CPS",
+ "HEALBR2.CPS",
+ "SNOW1A.CPS",
+ "SNOW2A.CPS",
+ "BRANWILL.CPS",
+ "FLUTE1.CPS",
+ "FLUTE2.CPS",
+ "POISON1.CPS",
+ "POISON2.CPS",
+ "TELEKIN.CPS",
+ "BRANSTON.CPS",
+ "POISON.CPS"
+};
+
+static const StringListProvider k1CharacterImageFilenamesDOSOldFloppyProvider = { ARRAYSIZE(k1CharacterImageFilenamesDOSOldFloppy), k1CharacterImageFilenamesDOSOldFloppy };
+
+static const Shape k1DefaultShapesDOSOldFloppy[166] = {
+ { 0, 0, 0, 3, 48, -12, -48 },
+ { 0, 3, 0, 3, 48, -12, -48 },
+ { 0, 6, 0, 3, 48, -12, -48 },
+ { 0, 9, 0, 3, 48, -12, -48 },
+ { 0, 12, 0, 3, 48, -12, -48 },
+ { 0, 15, 0, 3, 48, -12, -48 },
+ { 0, 18, 0, 3, 48, -12, -48 },
+ { 0, 21, 0, 3, 48, -12, -48 },
+ { 0, 24, 0, 3, 48, -12, -48 },
+ { 0, 27, 0, 3, 48, -12, -48 },
+ { 0, 0, 51, 2, 11, -2, -8 },
+ { 0, 2, 51, 2, 11, -2, -8 },
+ { 0, 4, 51, 2, 11, -2, -8 },
+ { 0, 6, 51, 2, 11, -2, -8 },
+ { 0, 8, 51, 2, 11, -2, -8 },
+ { 0, 10, 51, 2, 11, -2, -8 },
+ { 0, 12, 51, 2, 11, -2, -8 },
+ { 0, 14, 51, 2, 11, -2, -8 },
+ { 0, 16, 51, 2, 11, -2, -8 },
+ { 0, 18, 51, 2, 11, -2, -8 },
+ { 0, 20, 51, 2, 11, -2, -8 },
+ { 0, 22, 51, 2, 11, -2, -8 },
+ { 0, 0, 80, 3, 48, -12, -48 },
+ { 0, 3, 80, 3, 48, -12, -48 },
+ { 0, 6, 80, 3, 48, -12, -48 },
+ { 0, 9, 80, 3, 48, -12, -48 },
+ { 0, 12, 80, 3, 48, -12, -48 },
+ { 0, 15, 80, 3, 48, -12, -48 },
+ { 0, 0, 129, 3, 48, -12, -48 },
+ { 0, 3, 129, 3, 48, -12, -48 },
+ { 0, 6, 129, 3, 48, -12, -48 },
+ { 0, 9, 129, 3, 48, -12, -48 },
+ { 0, 12, 129, 3, 48, -12, -48 },
+ { 0, 15, 129, 3, 48, -12, -48 },
+ { 2, 0, 0, 3, 48, -12, -48 },
+ { 2, 3, 0, 3, 48, -12, -48 },
+ { 2, 6, 0, 3, 48, -12, -48 },
+ { 2, 9, 0, 3, 48, -12, -48 },
+ { 2, 12, 0, 3, 48, -12, -48 },
+ { 2, 15, 0, 3, 48, -12, -48 },
+ { 2, 18, 0, 3, 48, -12, -48 },
+ { 2, 21, 0, 3, 48, -12, -48 },
+ { 2, 24, 0, 3, 48, -12, -48 },
+ { 2, 27, 0, 3, 48, -12, -48 },
+ { 2, 30, 10, 3, 38, -16, -38 },
+ { 2, 27, 48, 4, 40, -8, -40 },
+ { 2, 0, 51, 2, 11, -4, 0 },
+ { 2, 2, 51, 2, 11, -4, 0 },
+ { 2, 4, 51, 2, 11, -4, 0 },
+ { 2, 6, 51, 2, 11, -4, 0 },
+ { 2, 8, 51, 2, 11, -4, 0 },
+ { 2, 10, 51, 2, 11, -4, 0 },
+ { 2, 12, 51, 2, 11, -4, 0 },
+ { 2, 14, 51, 2, 11, -4, 0 },
+ { 2, 16, 51, 2, 11, -4, 0 },
+ { 2, 18, 51, 2, 11, -4, 0 },
+ { 2, 20, 51, 2, 11, -4, 0 },
+ { 2, 22, 51, 2, 11, -4, 0 },
+ { 255, 0, 80, 3, 48, -12, -48 },
+ { 255, 3, 80, 3, 48, -12, -48 },
+ { 255, 6, 80, 3, 48, -12, -48 },
+ { 255, 9, 80, 3, 48, -12, -48 },
+ { 255, 12, 80, 3, 48, -12, -48 },
+ { 255, 15, 80, 3, 48, -12, -48 },
+ { 255, 0, 129, 3, 48, -12, -48 },
+ { 255, 3, 129, 3, 48, -12, -48 },
+ { 255, 6, 129, 3, 48, -12, -48 },
+ { 255, 9, 129, 3, 48, -12, -48 },
+ { 255, 12, 129, 3, 48, -12, -48 },
+ { 255, 15, 129, 3, 48, -12, -48 },
+ { 3, 0, 0, 3, 48, -12, -46 },
+ { 3, 3, 0, 3, 48, -12, -48 },
+ { 3, 6, 0, 3, 48, -12, -48 },
+ { 3, 9, 0, 3, 48, -12, -48 },
+ { 3, 12, 0, 3, 48, -12, -48 },
+ { 3, 15, 0, 3, 48, -12, -48 },
+ { 3, 18, 0, 3, 48, -12, -48 },
+ { 3, 21, 0, 3, 48, -12, -48 },
+ { 3, 24, 0, 3, 48, -12, -48 },
+ { 3, 27, 0, 3, 48, -12, -46 },
+ { 3, 30, 0, 3, 48, -14, -47 },
+ { 3, 39, 199, 1, 1, -12, -48 },
+ { 3, 0, 51, 2, 11, 0, -7 },
+ { 3, 2, 51, 2, 11, 0, -7 },
+ { 3, 4, 51, 2, 11, 0, -7 },
+ { 3, 6, 51, 2, 11, 0, -7 },
+ { 3, 8, 51, 2, 11, 0, -7 },
+ { 3, 10, 51, 2, 11, 0, -7 },
+ { 3, 12, 51, 2, 11, 0, -7 },
+ { 3, 14, 51, 2, 11, 0, -7 },
+ { 3, 16, 51, 2, 11, 0, -7 },
+ { 3, 18, 51, 2, 11, 0, -7 },
+ { 3, 20, 51, 2, 11, 0, -7 },
+ { 3, 22, 51, 2, 11, 0, -7 },
+ { 3, 0, 80, 3, 48, -12, -48 },
+ { 3, 3, 80, 3, 48, -12, -48 },
+ { 3, 6, 80, 3, 48, -12, -48 },
+ { 3, 9, 80, 3, 48, -12, -48 },
+ { 3, 12, 80, 3, 48, -12, -48 },
+ { 3, 15, 80, 3, 48, -12, -48 },
+ { 3, 0, 129, 3, 48, -12, -48 },
+ { 3, 3, 129, 3, 48, -12, -48 },
+ { 3, 6, 129, 3, 48, -12, -48 },
+ { 3, 9, 129, 3, 48, -12, -48 },
+ { 3, 12, 129, 3, 48, -12, -48 },
+ { 3, 15, 129, 3, 48, -12, -48 },
+ { 12, 0, 96, 5, 29, -20, -42 },
+ { 12, 5, 96, 5, 29, -20, -42 },
+ { 12, 10, 96, 5, 29, -20, -42 },
+ { 12, 15, 96, 5, 29, -20, -42 },
+ { 12, 20, 96, 5, 29, -20, -42 },
+ { 12, 25, 96, 5, 29, -20, -42 },
+ { 12, 30, 96, 5, 29, -20, -42 },
+ { 12, 35, 96, 5, 29, -20, -42 },
+ { 12, 0, 125, 5, 29, -20, -42 },
+ { 12, 5, 125, 5, 29, -20, -42 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 }
+};
+
+static const ShapeProvider k1DefaultShapesDOSOldFloppyProvider = { ARRAYSIZE(k1DefaultShapesDOSOldFloppy), k1DefaultShapesDOSOldFloppy };
+
+static const byte k1AmuleteAnimSeqDOSOldFloppy[42] = {
+ 0x00, 0x01, 0x02, 0x01, 0x03, 0x04, 0x03, 0x01,
+ 0x02, 0x03, 0x04, 0x05, 0x06, 0x05, 0x04, 0x05,
+ 0x07, 0x08, 0x07, 0x08, 0x09, 0x08, 0x09, 0x07,
+ 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
+ 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15,
+ 0x16, 0xFF
+};
+
+static const ByteProvider k1AmuleteAnimSeqDOSOldFloppyProvider = { ARRAYSIZE(k1AmuleteAnimSeqDOSOldFloppy), k1AmuleteAnimSeqDOSOldFloppy };
+
+static const byte k1SpecialPalette1DOSOldFloppy[21] = {
+ 0x36, 0x25, 0x1C, 0x31, 0x21, 0x19, 0x2C, 0x1D,
+ 0x16, 0x27, 0x19, 0x13, 0x22, 0x16, 0x11, 0x1D,
+ 0x12, 0x0D, 0x18, 0x0F, 0x0B
+};
+
+static const ByteProvider k1SpecialPalette1DOSOldFloppyProvider = { ARRAYSIZE(k1SpecialPalette1DOSOldFloppy), k1SpecialPalette1DOSOldFloppy };
+
+static const byte k1SpecialPalette2DOSOldFloppy[51] = {
+ 0x03, 0x03, 0x00, 0x37, 0x29, 0x1D, 0x33, 0x25,
+ 0x1A, 0x2D, 0x21, 0x17, 0x2A, 0x1D, 0x13, 0x26,
+ 0x19, 0x11, 0x22, 0x16, 0x0E, 0x1E, 0x12, 0x0C,
+ 0x1A, 0x0F, 0x0A, 0x16, 0x0C, 0x08, 0x12, 0x0A,
+ 0x05, 0x0E, 0x08, 0x05, 0x2D, 0x1E, 0x13, 0x27,
+ 0x19, 0x0F, 0x22, 0x14, 0x0C, 0x1C, 0x11, 0x0A,
+ 0x17, 0x0C, 0x08
+};
+
+static const ByteProvider k1SpecialPalette2DOSOldFloppyProvider = { ARRAYSIZE(k1SpecialPalette2DOSOldFloppy), k1SpecialPalette2DOSOldFloppy };
+
+static const byte k1SpecialPalette3DOSOldFloppy[51] = {
+ 0x03, 0x03, 0x00, 0x25, 0x30, 0x1B, 0x24, 0x2C,
+ 0x18, 0x23, 0x29, 0x15, 0x22, 0x25, 0x12, 0x21,
+ 0x22, 0x11, 0x1F, 0x1D, 0x0D, 0x1B, 0x18, 0x0B,
+ 0x18, 0x13, 0x0A, 0x14, 0x0E, 0x08, 0x11, 0x0A,
+ 0x05, 0x0E, 0x08, 0x05, 0x21, 0x22, 0x11, 0x1D,
+ 0x1C, 0x0C, 0x19, 0x15, 0x0A, 0x15, 0x0F, 0x08,
+ 0x11, 0x0A, 0x05
+};
+
+static const ByteProvider k1SpecialPalette3DOSOldFloppyProvider = { ARRAYSIZE(k1SpecialPalette3DOSOldFloppy), k1SpecialPalette3DOSOldFloppy };
+
+static const byte k1SpecialPalette4DOSOldFloppy[51] = {
+ 0x06, 0x03, 0x01, 0x33, 0x25, 0x0A, 0x2F, 0x21,
+ 0x0A, 0x2B, 0x1D, 0x08, 0x28, 0x1A, 0x08, 0x24,
+ 0x17, 0x06, 0x21, 0x22, 0x06, 0x1D, 0x11, 0x05,
+ 0x19, 0x0E, 0x05, 0x16, 0x0B, 0x03, 0x12, 0x0A,
+ 0x03, 0x0F, 0x08, 0x03, 0x28, 0x1A, 0x08, 0x22,
+ 0x15, 0x05, 0x1D, 0x11, 0x05, 0x17, 0x0C, 0x03,
+ 0x12, 0x0A, 0x03
+};
+
+static const ByteProvider k1SpecialPalette4DOSOldFloppyProvider = { ARRAYSIZE(k1SpecialPalette4DOSOldFloppy), k1SpecialPalette4DOSOldFloppy };
+
+static const byte k1SpecialPalette5DOSOldFloppy[51] = {
+ 0x03, 0x03, 0x00, 0x2A, 0x1D, 0x13, 0x27, 0x1A,
+ 0x11, 0x24, 0x18, 0x0F, 0x21, 0x15, 0x0D, 0x1E,
+ 0x13, 0x0C, 0x1C, 0x11, 0x0A, 0x19, 0x0F, 0x0A,
+ 0x16, 0x0C, 0x08, 0x13, 0x0A, 0x06, 0x11, 0x08,
+ 0x05, 0x0E, 0x08, 0x05, 0x1C, 0x11, 0x0A, 0x19,
+ 0x0E, 0x08, 0x16, 0x0C, 0x08, 0x13, 0x0A, 0x06,
+ 0x11, 0x08, 0x05
+};
+
+static const ByteProvider k1SpecialPalette5DOSOldFloppyProvider = { ARRAYSIZE(k1SpecialPalette5DOSOldFloppy), k1SpecialPalette5DOSOldFloppy };
+
+static const byte k1SpecialPalette6DOSOldFloppy[51] = {
+ 0x00, 0x08, 0x01, 0x00, 0x1E, 0x00, 0x00, 0x1B,
+ 0x00, 0x00, 0x19, 0x00, 0x00, 0x17, 0x00, 0x00,
+ 0x14, 0x00, 0x00, 0x12, 0x00, 0x00, 0x11, 0x00,
+ 0x00, 0x0E, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x0A,
+ 0x00, 0x00, 0x08, 0x00, 0x13, 0x21, 0x0F, 0x11,
+ 0x1F, 0x0D, 0x0E, 0x1D, 0x0C, 0x0C, 0x1B, 0x0B,
+ 0x0A, 0x19, 0x0A
+};
+
+static const ByteProvider k1SpecialPalette6DOSOldFloppyProvider = { ARRAYSIZE(k1SpecialPalette6DOSOldFloppy), k1SpecialPalette6DOSOldFloppy };
+
+static const byte k1SpecialPalette7DOSOldFloppy[54] = {
+ 0x05, 0x2B, 0x00, 0x00, 0x22, 0x00, 0x00, 0x1E,
+ 0x00, 0x00, 0x16, 0x01, 0x00, 0x12, 0x03, 0x00,
+ 0x0F, 0x01, 0x00, 0x0B, 0x03, 0x0A, 0x19, 0x0A,
+ 0x2D, 0x2D, 0x32, 0x29, 0x29, 0x2D, 0x25, 0x25,
+ 0x2B, 0x1F, 0x1F, 0x26, 0x1B, 0x1B, 0x22, 0x14,
+ 0x16, 0x1D, 0x11, 0x11, 0x18, 0x0D, 0x0D, 0x14,
+ 0x0A, 0x0A, 0x0F, 0x06, 0x06, 0x0B
+};
+
+static const ByteProvider k1SpecialPalette7DOSOldFloppyProvider = { ARRAYSIZE(k1SpecialPalette7DOSOldFloppy), k1SpecialPalette7DOSOldFloppy };
+
+static const byte k1SpecialPalette8DOSOldFloppy[54] = {
+ 0x12, 0x37, 0x3F, 0x14, 0x31, 0x3F, 0x14, 0x29,
+ 0x3F, 0x14, 0x22, 0x3F, 0x14, 0x1B, 0x3F, 0x14,
+ 0x14, 0x3F, 0x0E, 0x0F, 0x37, 0x14, 0x29, 0x3F,
+ 0x2F, 0x3F, 0x3D, 0x26, 0x3F, 0x3F, 0x15, 0x3F,
+ 0x3F, 0x14, 0x3B, 0x3F, 0x12, 0x37, 0x3F, 0x14,
+ 0x31, 0x3F, 0x14, 0x29, 0x3F, 0x14, 0x22, 0x3F,
+ 0x14, 0x1B, 0x3F, 0x14, 0x14, 0x3F
+};
+
+static const ByteProvider k1SpecialPalette8DOSOldFloppyProvider = { ARRAYSIZE(k1SpecialPalette8DOSOldFloppy), k1SpecialPalette8DOSOldFloppy };
+
+static const byte k1SpecialPalette9DOSOldFloppy[45] = {
+ 0x36, 0x00, 0x00, 0x32, 0x00, 0x00, 0x2F, 0x00,
+ 0x00, 0x2C, 0x00, 0x00, 0x29, 0x00, 0x00, 0x26,
+ 0x00, 0x00, 0x23, 0x00, 0x00, 0x20, 0x00, 0x00,
+ 0x1C, 0x00, 0x00, 0x19, 0x00, 0x00, 0x16, 0x00,
+ 0x00, 0x13, 0x00, 0x00, 0x11, 0x00, 0x00, 0x0D,
+ 0x00, 0x00, 0x0A, 0x00, 0x00
+};
+
+static const ByteProvider k1SpecialPalette9DOSOldFloppyProvider = { ARRAYSIZE(k1SpecialPalette9DOSOldFloppy), k1SpecialPalette9DOSOldFloppy };
+
+static const byte k1SpecialPalette10DOSOldFloppy[45] = {
+ 0x29, 0x00, 0x00, 0x26, 0x00, 0x00, 0x24, 0x00,
+ 0x00, 0x22, 0x00, 0x00, 0x20, 0x00, 0x00, 0x1E,
+ 0x00, 0x00, 0x1B, 0x00, 0x00, 0x19, 0x00, 0x00,
+ 0x17, 0x00, 0x00, 0x15, 0x00, 0x00, 0x12, 0x00,
+ 0x00, 0x11, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x0C,
+ 0x00, 0x00, 0x0A, 0x00, 0x00
+};
+
+static const ByteProvider k1SpecialPalette10DOSOldFloppyProvider = { ARRAYSIZE(k1SpecialPalette10DOSOldFloppy), k1SpecialPalette10DOSOldFloppy };
+
+static const byte k1SpecialPalette11DOSOldFloppy[45] = {
+ 0x20, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x1C, 0x00,
+ 0x00, 0x1B, 0x00, 0x00, 0x19, 0x00, 0x00, 0x18,
+ 0x00, 0x00, 0x16, 0x00, 0x00, 0x15, 0x00, 0x00,
+ 0x13, 0x00, 0x00, 0x11, 0x00, 0x00, 0x11, 0x00,
+ 0x00, 0x0E, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x0B,
+ 0x00, 0x00, 0x0A, 0x00, 0x00
+};
+
+static const ByteProvider k1SpecialPalette11DOSOldFloppyProvider = { ARRAYSIZE(k1SpecialPalette11DOSOldFloppy), k1SpecialPalette11DOSOldFloppy };
+
+static const byte k1SpecialPalette12DOSOldFloppy[45] = {
+ 0x19, 0x00, 0x00, 0x18, 0x00, 0x00, 0x16, 0x00,
+ 0x00, 0x15, 0x00, 0x00, 0x14, 0x00, 0x00, 0x13,
+ 0x00, 0x00, 0x12, 0x00, 0x00, 0x11, 0x00, 0x00,
+ 0x11, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x0E, 0x00,
+ 0x00, 0x0D, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0B,
+ 0x00, 0x00, 0x0A, 0x00, 0x00
+};
+
+static const ByteProvider k1SpecialPalette12DOSOldFloppyProvider = { ARRAYSIZE(k1SpecialPalette12DOSOldFloppy), k1SpecialPalette12DOSOldFloppy };
+
+static const byte k1SpecialPalette13DOSOldFloppy[45] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const ByteProvider k1SpecialPalette13DOSOldFloppyProvider = { ARRAYSIZE(k1SpecialPalette13DOSOldFloppy), k1SpecialPalette13DOSOldFloppy };
+
+static const byte k1SpecialPalette14DOSOldFloppy[60] = {
+ 0x0E, 0x28, 0x3F, 0x0C, 0x24, 0x3B, 0x0A, 0x20,
+ 0x38, 0x0A, 0x1C, 0x34, 0x08, 0x19, 0x31, 0x08,
+ 0x15, 0x2D, 0x05, 0x13, 0x2A, 0x05, 0x11, 0x27,
+ 0x03, 0x0D, 0x24, 0x03, 0x0A, 0x20, 0x03, 0x08,
+ 0x1D, 0x01, 0x06, 0x19, 0x01, 0x05, 0x16, 0x00,
+ 0x03, 0x13, 0x00, 0x01, 0x0F, 0x00, 0x01, 0x0C,
+ 0x00, 0x00, 0x08, 0x00, 0x00, 0x05, 0x00, 0x00,
+ 0x03, 0x00, 0x00, 0x00
+};
+
+static const ByteProvider k1SpecialPalette14DOSOldFloppyProvider = { ARRAYSIZE(k1SpecialPalette14DOSOldFloppy), k1SpecialPalette14DOSOldFloppy };
+
+static const byte k1SpecialPalette15DOSOldFloppy[45] = {
+ 0x24, 0x00, 0x39, 0x21, 0x00, 0x36, 0x1F, 0x00,
+ 0x32, 0x1C, 0x00, 0x2D, 0x1A, 0x00, 0x2A, 0x17,
+ 0x00, 0x26, 0x15, 0x00, 0x22, 0x12, 0x00, 0x1E,
+ 0x11, 0x00, 0x1A, 0x0E, 0x00, 0x16, 0x0B, 0x00,
+ 0x12, 0x0A, 0x00, 0x0F, 0x06, 0x00, 0x0B, 0x05,
+ 0x00, 0x08, 0x01, 0x00, 0x03
+};
+
+static const ByteProvider k1SpecialPalette15DOSOldFloppyProvider = { ARRAYSIZE(k1SpecialPalette15DOSOldFloppy), k1SpecialPalette15DOSOldFloppy };
+
+static const byte k1SpecialPalette16DOSOldFloppy[33] = {
+ 0x00, 0x3F, 0x3F, 0x00, 0x38, 0x38, 0x00, 0x34,
+ 0x34, 0x00, 0x30, 0x30, 0x00, 0x2D, 0x2D, 0x00,
+ 0x29, 0x29, 0x00, 0x25, 0x25, 0x00, 0x1F, 0x1F,
+ 0x00, 0x1B, 0x1B, 0x00, 0x16, 0x16, 0x00, 0x11,
+ 0x11
+};
+
+static const ByteProvider k1SpecialPalette16DOSOldFloppyProvider = { ARRAYSIZE(k1SpecialPalette16DOSOldFloppy), k1SpecialPalette16DOSOldFloppy };
+
+static const byte k1SpecialPalette17DOSOldFloppy[33] = {
+ 0x3B, 0x3B, 0x3B, 0x36, 0x36, 0x36, 0x32, 0x32,
+ 0x32, 0x2D, 0x2D, 0x2D, 0x2A, 0x2A, 0x2A, 0x26,
+ 0x26, 0x26, 0x21, 0x21, 0x21, 0x1D, 0x1D, 0x1D,
+ 0x19, 0x19, 0x19, 0x15, 0x15, 0x15, 0x11, 0x11,
+ 0x11
+};
+
+static const ByteProvider k1SpecialPalette17DOSOldFloppyProvider = { ARRAYSIZE(k1SpecialPalette17DOSOldFloppy), k1SpecialPalette17DOSOldFloppy };
+
+static const byte k1SpecialPalette18DOSOldFloppy[21] = {
+ 0x0F, 0x23, 0x1C, 0x2A, 0x36, 0x3F, 0x24, 0x2F,
+ 0x38, 0x1F, 0x2A, 0x32, 0x1A, 0x24, 0x2B, 0x15,
+ 0x1E, 0x25, 0x11, 0x19, 0x1F
+};
+
+static const ByteProvider k1SpecialPalette18DOSOldFloppyProvider = { ARRAYSIZE(k1SpecialPalette18DOSOldFloppy), k1SpecialPalette18DOSOldFloppy };
+
+static const byte k1SpecialPalette19DOSOldFloppy[21] = {
+ 0x00, 0x00, 0x1C, 0x00, 0x00, 0x3F, 0x00, 0x00,
+ 0x38, 0x00, 0x00, 0x32, 0x00, 0x00, 0x2B, 0x00,
+ 0x00, 0x25, 0x00, 0x00, 0x1F
+};
+
+static const ByteProvider k1SpecialPalette19DOSOldFloppyProvider = { ARRAYSIZE(k1SpecialPalette19DOSOldFloppy), k1SpecialPalette19DOSOldFloppy };
+
+static const byte k1SpecialPalette20DOSOldFloppy[21] = {
+ 0x26, 0x1B, 0x1B, 0x3F, 0x34, 0x34, 0x3B, 0x2F,
+ 0x2F, 0x39, 0x2B, 0x2B, 0x36, 0x26, 0x27, 0x33,
+ 0x22, 0x23, 0x31, 0x1F, 0x20
+};
+
+static const ByteProvider k1SpecialPalette20DOSOldFloppyProvider = { ARRAYSIZE(k1SpecialPalette20DOSOldFloppy), k1SpecialPalette20DOSOldFloppy };
+
+static const byte k1SpecialPalette21DOSOldFloppy[21] = {
+ 0x1C, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x38, 0x00,
+ 0x00, 0x32, 0x00, 0x00, 0x2B, 0x00, 0x00, 0x25,
+ 0x00, 0x00, 0x1F, 0x00, 0x00
+};
+
+static const ByteProvider k1SpecialPalette21DOSOldFloppyProvider = { ARRAYSIZE(k1SpecialPalette21DOSOldFloppy), k1SpecialPalette21DOSOldFloppy };
+
+static const byte k1SpecialPalette22DOSOldFloppy[21] = {
+ 0x1F, 0x1F, 0x0C, 0x3F, 0x3F, 0x21, 0x3B, 0x3B,
+ 0x1F, 0x37, 0x37, 0x1D, 0x34, 0x34, 0x1B, 0x30,
+ 0x30, 0x19, 0x2D, 0x2D, 0x17
+};
+
+static const ByteProvider k1SpecialPalette22DOSOldFloppyProvider = { ARRAYSIZE(k1SpecialPalette22DOSOldFloppy), k1SpecialPalette22DOSOldFloppy };
+
+static const byte k1SpecialPalette23DOSOldFloppy[21] = {
+ 0x1F, 0x1F, 0x00, 0x3F, 0x3F, 0x00, 0x3B, 0x3B,
+ 0x00, 0x37, 0x37, 0x00, 0x34, 0x34, 0x00, 0x30,
+ 0x30, 0x00, 0x2D, 0x2D, 0x00
+};
+
+static const ByteProvider k1SpecialPalette23DOSOldFloppyProvider = { ARRAYSIZE(k1SpecialPalette23DOSOldFloppy), k1SpecialPalette23DOSOldFloppy };
+
+static const byte k1SpecialPalette24DOSOldFloppy[48] = {
+ 0x36, 0x38, 0x2C, 0x31, 0x38, 0x23, 0x2A, 0x33,
+ 0x1E, 0x24, 0x2F, 0x1A, 0x1E, 0x2A, 0x16, 0x18,
+ 0x26, 0x13, 0x13, 0x21, 0x0F, 0x0E, 0x1D, 0x0D,
+ 0x0D, 0x1B, 0x0C, 0x0A, 0x19, 0x0A, 0x0A, 0x18,
+ 0x0A, 0x08, 0x17, 0x08, 0x08, 0x16, 0x08, 0x08,
+ 0x15, 0x06, 0x06, 0x14, 0x06, 0x06, 0x11, 0x06
+};
+
+static const ByteProvider k1SpecialPalette24DOSOldFloppyProvider = { ARRAYSIZE(k1SpecialPalette24DOSOldFloppy), k1SpecialPalette24DOSOldFloppy };
+
+static const byte k1SpecialPalette25DOSOldFloppy[48] = {
+ 0x36, 0x38, 0x2C, 0x31, 0x36, 0x23, 0x2A, 0x33,
+ 0x1E, 0x24, 0x2F, 0x1A, 0x1E, 0x2A, 0x16, 0x1E,
+ 0x2A, 0x16, 0x18, 0x26, 0x13, 0x13, 0x21, 0x0F,
+ 0x0E, 0x1D, 0x0D, 0x0D, 0x1B, 0x0C, 0x0D, 0x1B,
+ 0x0C, 0x0A, 0x19, 0x0A, 0x0A, 0x18, 0x0A, 0x0A,
+ 0x18, 0x0A, 0x0A, 0x18, 0x0A, 0x06, 0x14, 0x06
+};
+
+static const ByteProvider k1SpecialPalette25DOSOldFloppyProvider = { ARRAYSIZE(k1SpecialPalette25DOSOldFloppy), k1SpecialPalette25DOSOldFloppy };
+
+static const byte k1SpecialPalette26DOSOldFloppy[48] = {
+ 0x31, 0x38, 0x23, 0x31, 0x38, 0x23, 0x2A, 0x33,
+ 0x1E, 0x24, 0x2F, 0x1A, 0x19, 0x2A, 0x16, 0x18,
+ 0x26, 0x13, 0x13, 0x21, 0x0F, 0x13, 0x21, 0x11,
+ 0x13, 0x21, 0x0F, 0x0E, 0x1D, 0x0D, 0x0E, 0x1D,
+ 0x0D, 0x0E, 0x1D, 0x0D, 0x0D, 0x1B, 0x0C, 0x0A,
+ 0x19, 0x0A, 0x0A, 0x19, 0x0A, 0x06, 0x13, 0x06
+};
+
+static const ByteProvider k1SpecialPalette26DOSOldFloppyProvider = { ARRAYSIZE(k1SpecialPalette26DOSOldFloppy), k1SpecialPalette26DOSOldFloppy };
+
+static const byte k1SpecialPalette27DOSOldFloppy[48] = {
+ 0x31, 0x38, 0x23, 0x31, 0x38, 0x23, 0x2A, 0x33,
+ 0x1E, 0x24, 0x2F, 0x1A, 0x19, 0x2A, 0x16, 0x18,
+ 0x26, 0x13, 0x13, 0x21, 0x0F, 0x13, 0x21, 0x0F,
+ 0x13, 0x21, 0x0F, 0x0E, 0x1D, 0x0D, 0x0E, 0x1D,
+ 0x0D, 0x0E, 0x1D, 0x0D, 0x0D, 0x1B, 0x0C, 0x0D,
+ 0x19, 0x0C, 0x0D, 0x19, 0x0C, 0x08, 0x16, 0x08
+};
+
+static const ByteProvider k1SpecialPalette27DOSOldFloppyProvider = { ARRAYSIZE(k1SpecialPalette27DOSOldFloppy), k1SpecialPalette27DOSOldFloppy };
+
+static const byte k1SpecialPalette28DOSOldFloppy[48] = {
+ 0x36, 0x38, 0x2C, 0x31, 0x38, 0x23, 0x2A, 0x33,
+ 0x1E, 0x24, 0x2F, 0x1A, 0x19, 0x2A, 0x16, 0x1E,
+ 0x2A, 0x16, 0x18, 0x26, 0x13, 0x13, 0x21, 0x0F,
+ 0x13, 0x21, 0x0F, 0x13, 0x21, 0x0F, 0x13, 0x21,
+ 0x0F, 0x0E, 0x1D, 0x0D, 0x0D, 0x1B, 0x0C, 0x0D,
+ 0x1B, 0x0C, 0x0D, 0x1B, 0x0C, 0x08, 0x17, 0x08
+};
+
+static const ByteProvider k1SpecialPalette28DOSOldFloppyProvider = { ARRAYSIZE(k1SpecialPalette28DOSOldFloppy), k1SpecialPalette28DOSOldFloppy };
+
+static const byte k1SpecialPalette29DOSOldFloppy[48] = {
+ 0x36, 0x38, 0x2C, 0x31, 0x38, 0x23, 0x2A, 0x33,
+ 0x1E, 0x24, 0x2F, 0x1A, 0x19, 0x2A, 0x16, 0x1E,
+ 0x2A, 0x16, 0x18, 0x26, 0x13, 0x13, 0x21, 0x0F,
+ 0x13, 0x21, 0x0F, 0x13, 0x21, 0x0F, 0x13, 0x21,
+ 0x0F, 0x13, 0x21, 0x0F, 0x0E, 0x1D, 0x0D, 0x0E,
+ 0x1D, 0x0D, 0x0E, 0x1D, 0x0D, 0x08, 0x17, 0x08
+};
+
+static const ByteProvider k1SpecialPalette29DOSOldFloppyProvider = { ARRAYSIZE(k1SpecialPalette29DOSOldFloppy), k1SpecialPalette29DOSOldFloppy };
+
+static const byte k1SpecialPalette30DOSOldFloppy[60] = {
+ 0x1E, 0x1D, 0x3F, 0x1A, 0x19, 0x3F, 0x14, 0x12,
+ 0x3B, 0x12, 0x11, 0x37, 0x11, 0x11, 0x33, 0x0F,
+ 0x0E, 0x2F, 0x0E, 0x0D, 0x2C, 0x0D, 0x0C, 0x28,
+ 0x0B, 0x0B, 0x24, 0x0A, 0x0A, 0x20, 0x0A, 0x0A,
+ 0x1D, 0x05, 0x05, 0x18, 0x03, 0x03, 0x13, 0x01,
+ 0x01, 0x11, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x05,
+ 0x00, 0x0A, 0x1A, 0x00, 0x0F, 0x13, 0x00, 0x14,
+ 0x11, 0x0F, 0x0D, 0x00
+};
+
+static const ByteProvider k1SpecialPalette30DOSOldFloppyProvider = { ARRAYSIZE(k1SpecialPalette30DOSOldFloppy), k1SpecialPalette30DOSOldFloppy };
+
+static const byte k1SpecialPalette31DOSOldFloppy[39] = {
+ 0x2B, 0x19, 0x34, 0x27, 0x17, 0x30, 0x23, 0x14,
+ 0x2C, 0x20, 0x12, 0x27, 0x1C, 0x11, 0x23, 0x18,
+ 0x0E, 0x1E, 0x15, 0x0C, 0x1A, 0x11, 0x0A, 0x15,
+ 0x0E, 0x08, 0x11, 0x0A, 0x05, 0x0C, 0x06, 0x03,
+ 0x08, 0x03, 0x01, 0x03, 0x00, 0x00, 0x00
+};
+
+static const ByteProvider k1SpecialPalette31DOSOldFloppyProvider = { ARRAYSIZE(k1SpecialPalette31DOSOldFloppy), k1SpecialPalette31DOSOldFloppy };
+
+static const byte k1SpecialPalette32DOSOldFloppy[39] = {
+ 0x12, 0x12, 0x16, 0x11, 0x11, 0x14, 0x0F, 0x0F,
+ 0x12, 0x0D, 0x0D, 0x11, 0x0B, 0x0B, 0x0E, 0x0A,
+ 0x0A, 0x0C, 0x08, 0x08, 0x0A, 0x08, 0x08, 0x08,
+ 0x05, 0x05, 0x06, 0x05, 0x05, 0x05, 0x03, 0x03,
+ 0x03, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00
+};
+
+static const ByteProvider k1SpecialPalette32DOSOldFloppyProvider = { ARRAYSIZE(k1SpecialPalette32DOSOldFloppy), k1SpecialPalette32DOSOldFloppy };
+
+static const Shape k1Healing1ShapesDOSOldFloppy[22] = {
+ { 8, 0, 0, 3, 48, -12, -48 },
+ { 8, 3, 0, 3, 48, -12, -48 },
+ { 8, 6, 0, 3, 48, -12, -48 },
+ { 8, 9, 0, 3, 48, -12, -48 },
+ { 8, 12, 0, 3, 48, -12, -48 },
+ { 8, 15, 0, 3, 48, -12, -48 },
+ { 8, 18, 0, 3, 48, -12, -48 },
+ { 8, 21, 0, 3, 48, -12, -48 },
+ { 8, 24, 0, 3, 48, -12, -48 },
+ { 8, 27, 0, 3, 48, -12, -48 },
+ { 8, 30, 0, 3, 48, -12, -48 },
+ { 8, 33, 0, 3, 48, -12, -48 },
+ { 8, 0, 48, 3, 48, -12, -48 },
+ { 8, 3, 48, 3, 48, -12, -48 },
+ { 8, 6, 48, 3, 48, -12, -48 },
+ { 8, 9, 48, 3, 48, -12, -48 },
+ { 8, 12, 48, 3, 48, -12, -48 },
+ { 8, 15, 48, 3, 48, -12, -48 },
+ { 8, 18, 48, 3, 48, -12, -48 },
+ { 8, 21, 48, 3, 48, -12, -48 },
+ { 8, 24, 48, 3, 48, -12, -48 },
+ { 8, 27, 48, 3, 48, -12, -48 }
+};
+
+static const ShapeProvider k1Healing1ShapesDOSOldFloppyProvider = { ARRAYSIZE(k1Healing1ShapesDOSOldFloppy), k1Healing1ShapesDOSOldFloppy };
+
+static const Shape k1Healing2ShapesDOSOldFloppy[30] = {
+ { 9, 0, 0, 3, 48, -11, -48 },
+ { 9, 3, 0, 3, 48, -11, -48 },
+ { 9, 6, 0, 3, 48, -11, -48 },
+ { 9, 9, 0, 3, 48, -11, -48 },
+ { 9, 12, 0, 3, 48, -11, -48 },
+ { 9, 15, 0, 3, 48, -11, -48 },
+ { 9, 18, 0, 3, 48, -11, -48 },
+ { 9, 21, 0, 3, 48, -11, -48 },
+ { 9, 24, 0, 3, 48, -11, -48 },
+ { 9, 27, 0, 3, 48, -11, -48 },
+ { 9, 30, 0, 3, 48, -11, -48 },
+ { 9, 33, 0, 3, 48, -11, -48 },
+ { 9, 0, 48, 3, 48, -11, -48 },
+ { 9, 3, 48, 3, 48, -11, -48 },
+ { 9, 6, 48, 3, 48, -11, -48 },
+ { 9, 9, 48, 3, 48, -11, -48 },
+ { 9, 12, 48, 3, 48, -11, -48 },
+ { 9, 15, 48, 3, 48, -11, -48 },
+ { 9, 18, 48, 3, 48, -11, -48 },
+ { 9, 21, 48, 3, 48, -11, -48 },
+ { 9, 24, 48, 3, 48, -11, -48 },
+ { 9, 27, 48, 3, 48, -11, -48 },
+ { 9, 30, 48, 3, 48, -11, -48 },
+ { 9, 33, 48, 3, 48, -11, -48 },
+ { 9, 0, 96, 3, 48, -11, -48 },
+ { 9, 3, 96, 3, 48, -11, -48 },
+ { 9, 6, 96, 3, 48, -11, -48 },
+ { 9, 9, 96, 3, 48, -11, -48 },
+ { 9, 12, 96, 3, 48, -11, -48 },
+ { 9, 15, 96, 3, 48, -11, -48 }
+};
+
+static const ShapeProvider k1Healing2ShapesDOSOldFloppyProvider = { ARRAYSIZE(k1Healing2ShapesDOSOldFloppy), k1Healing2ShapesDOSOldFloppy };
+
+static const Shape k1PoisonDeathShapesDOSOldFloppy[20] = {
+ { 19, 0, 0, 8, 48, -32, -48 },
+ { 19, 8, 0, 8, 48, -32, -48 },
+ { 19, 16, 0, 8, 48, -32, -48 },
+ { 19, 24, 0, 8, 48, -32, -48 },
+ { 19, 32, 0, 8, 48, -32, -48 },
+ { 19, 0, 48, 8, 48, -32, -48 },
+ { 19, 8, 48, 8, 48, -32, -48 },
+ { 19, 16, 48, 8, 48, -32, -48 },
+ { 19, 24, 48, 8, 48, -32, -48 },
+ { 19, 32, 48, 8, 48, -32, -48 },
+ { 19, 0, 96, 8, 48, -32, -48 },
+ { 19, 8, 96, 8, 48, -32, -48 },
+ { 19, 16, 96, 8, 48, -32, -48 },
+ { 19, 24, 96, 8, 48, -32, -48 },
+ { 19, 32, 96, 8, 48, -32, -48 },
+ { 19, 0, 144, 8, 48, -32, -48 },
+ { 19, 8, 144, 8, 48, -32, -48 },
+ { 19, 16, 144, 8, 48, -32, -48 },
+ { 19, 24, 144, 8, 48, -32, -48 },
+ { 19, 32, 144, 8, 48, -32, -48 }
+};
+
+static const ShapeProvider k1PoisonDeathShapesDOSOldFloppyProvider = { ARRAYSIZE(k1PoisonDeathShapesDOSOldFloppy), k1PoisonDeathShapesDOSOldFloppy };
+
+static const Shape k1FluteShapesDOSOldFloppy[36] = {
+ { 13, 0, 0, 3, 75, -12, -75 },
+ { 13, 3, 0, 3, 75, -12, -75 },
+ { 13, 6, 0, 3, 75, -12, -75 },
+ { 13, 9, 0, 3, 75, -12, -75 },
+ { 13, 12, 0, 3, 75, -12, -75 },
+ { 13, 15, 0, 3, 75, -12, -75 },
+ { 13, 18, 0, 3, 75, -12, -75 },
+ { 13, 21, 0, 3, 75, -12, -75 },
+ { 13, 24, 0, 3, 75, -12, -75 },
+ { 13, 27, 0, 3, 75, -12, -75 },
+ { 13, 30, 0, 3, 75, -12, -75 },
+ { 13, 33, 0, 3, 75, -12, -75 },
+ { 13, 36, 75, 3, 75, -12, -75 },
+ { 13, 0, 75, 3, 75, -12, -75 },
+ { 13, 3, 75, 3, 75, -12, -75 },
+ { 13, 6, 75, 3, 75, -12, -75 },
+ { 13, 9, 75, 3, 75, -12, -75 },
+ { 13, 12, 75, 3, 75, -12, -75 },
+ { 13, 15, 75, 3, 75, -12, -75 },
+ { 13, 18, 75, 3, 75, -12, -75 },
+ { 13, 21, 75, 3, 75, -12, -75 },
+ { 13, 24, 75, 3, 75, -12, -75 },
+ { 13, 27, 75, 3, 75, -12, -75 },
+ { 13, 30, 75, 3, 75, -12, -75 },
+ { 13, 33, 75, 3, 75, -12, -75 },
+ { 13, 36, 75, 3, 75, -12, -75 },
+ { 14, 0, 0, 3, 75, -12, -75 },
+ { 14, 3, 0, 3, 75, -12, -75 },
+ { 14, 6, 0, 3, 75, -12, -75 },
+ { 14, 9, 0, 3, 75, -12, -75 },
+ { 14, 12, 0, 3, 75, -12, -75 },
+ { 14, 15, 0, 3, 75, -12, -75 },
+ { 14, 18, 0, 3, 75, -12, -75 },
+ { 14, 21, 0, 3, 75, -12, -75 },
+ { 14, 24, 0, 3, 75, -12, -75 },
+ { 14, 27, 0, 3, 75, -12, -75 }
+};
+
+static const ShapeProvider k1FluteShapesDOSOldFloppyProvider = { ARRAYSIZE(k1FluteShapesDOSOldFloppy), k1FluteShapesDOSOldFloppy };
+
+static const Shape k1Winter1ShapesDOSOldFloppy[7] = {
+ { 10, 5, 0, 5, 66, -20, -65 },
+ { 10, 10, 0, 5, 66, -20, -65 },
+ { 10, 15, 0, 5, 66, -20, -65 },
+ { 10, 20, 0, 5, 66, -20, -65 },
+ { 10, 25, 0, 5, 66, -20, -65 },
+ { 10, 30, 0, 5, 66, -20, -65 },
+ { 10, 35, 0, 5, 66, -20, -65 }
+};
+
+static const ShapeProvider k1Winter1ShapesDOSOldFloppyProvider = { ARRAYSIZE(k1Winter1ShapesDOSOldFloppy), k1Winter1ShapesDOSOldFloppy };
+
+static const Shape k1Winter2ShapesDOSOldFloppy[35] = {
+ { 10, 0, 66, 5, 66, -20, -65 },
+ { 10, 5, 66, 5, 66, -20, -65 },
+ { 10, 10, 66, 5, 66, -20, -65 },
+ { 10, 15, 66, 5, 66, -20, -65 },
+ { 10, 20, 66, 5, 66, -20, -65 },
+ { 10, 25, 66, 5, 66, -20, -65 },
+ { 10, 30, 66, 5, 66, -20, -65 },
+ { 10, 35, 66, 5, 66, -20, -65 },
+ { 10, 0, 132, 5, 66, -20, -65 },
+ { 10, 5, 132, 5, 66, -20, -65 },
+ { 10, 10, 132, 5, 66, -20, -65 },
+ { 10, 15, 132, 5, 66, -20, -65 },
+ { 10, 20, 132, 5, 66, -20, -65 },
+ { 10, 25, 132, 5, 66, -20, -65 },
+ { 10, 30, 132, 5, 66, -20, -65 },
+ { 10, 35, 132, 5, 66, -20, -65 },
+ { 11, 0, 0, 5, 66, -20, -65 },
+ { 11, 5, 0, 5, 66, -20, -65 },
+ { 11, 10, 0, 5, 66, -20, -65 },
+ { 11, 15, 0, 5, 66, -20, -65 },
+ { 11, 20, 0, 5, 66, -20, -65 },
+ { 11, 25, 0, 5, 66, -20, -65 },
+ { 11, 30, 0, 5, 66, -20, -65 },
+ { 11, 35, 0, 5, 66, -20, -65 },
+ { 11, 0, 66, 5, 66, -20, -65 },
+ { 11, 5, 66, 5, 66, -20, -65 },
+ { 11, 10, 66, 5, 66, -20, -65 },
+ { 11, 15, 66, 5, 66, -20, -65 },
+ { 11, 20, 66, 5, 66, -20, -65 },
+ { 11, 25, 66, 5, 66, -20, -65 },
+ { 11, 30, 66, 5, 66, -20, -65 },
+ { 11, 35, 66, 5, 66, -20, -65 },
+ { 11, 0, 132, 5, 66, -20, -65 },
+ { 11, 5, 132, 5, 66, -20, -65 },
+ { 11, 10, 132, 5, 66, -20, -65 }
+};
+
+static const ShapeProvider k1Winter2ShapesDOSOldFloppyProvider = { ARRAYSIZE(k1Winter2ShapesDOSOldFloppy), k1Winter2ShapesDOSOldFloppy };
+
+static const Shape k1Winter3ShapesDOSOldFloppy[4] = {
+ { 11, 15, 132, 5, 66, -20, -65 },
+ { 11, 20, 132, 5, 66, -20, -65 },
+ { 11, 25, 132, 5, 66, -20, -65 },
+ { 11, 30, 132, 5, 66, -20, -65 }
+};
+
+static const ShapeProvider k1Winter3ShapesDOSOldFloppyProvider = { ARRAYSIZE(k1Winter3ShapesDOSOldFloppy), k1Winter3ShapesDOSOldFloppy };
+
+static const Shape k1DrinkShapesDOSOldFloppy[15] = {
+ { 6, 0, 0, 4, 48, -20, -48 },
+ { 6, 4, 0, 4, 48, -20, -48 },
+ { 6, 8, 0, 4, 48, -20, -48 },
+ { 6, 12, 0, 4, 48, -20, -48 },
+ { 6, 16, 0, 4, 48, -20, -48 },
+ { 6, 20, 0, 5, 48, -20, -48 },
+ { 6, 0, 48, 5, 54, -20, -54 },
+ { 6, 5, 48, 5, 54, -20, -54 },
+ { 6, 10, 48, 5, 54, -20, -54 },
+ { 7, 0, 0, 3, 43, -12, -43 },
+ { 7, 3, 3, 2, 40, -8, -40 },
+ { 7, 5, 7, 2, 36, -8, -36 },
+ { 7, 7, 10, 2, 33, -8, -33 },
+ { 7, 9, 12, 2, 31, -8, -31 },
+ { 7, 11, 15, 2, 28, -8, -28 }
+};
+
+static const ShapeProvider k1DrinkShapesDOSOldFloppyProvider = { ARRAYSIZE(k1DrinkShapesDOSOldFloppy), k1DrinkShapesDOSOldFloppy };
+
+static const Shape k1WispShapesDOSOldFloppy[26] = {
+ { 12, 0, 0, 5, 48, -20, -48 },
+ { 12, 5, 0, 5, 48, -20, -48 },
+ { 12, 10, 0, 5, 48, -20, -48 },
+ { 12, 15, 0, 5, 48, -20, -48 },
+ { 12, 20, 0, 5, 48, -20, -48 },
+ { 12, 25, 0, 5, 48, -20, -48 },
+ { 12, 30, 0, 5, 48, -20, -48 },
+ { 12, 35, 0, 5, 48, -20, -48 },
+ { 12, 0, 48, 5, 48, -20, -48 },
+ { 12, 5, 48, 5, 48, -20, -48 },
+ { 12, 10, 48, 5, 48, -20, -48 },
+ { 12, 15, 48, 5, 48, -20, -48 },
+ { 12, 20, 48, 5, 48, -20, -48 },
+ { 12, 25, 48, 5, 48, -20, -48 },
+ { 12, 30, 48, 5, 48, -20, -48 },
+ { 12, 35, 48, 5, 48, -20, -48 },
+ { 12, 0, 96, 5, 29, -20, -42 },
+ { 12, 5, 96, 5, 29, -20, -42 },
+ { 12, 10, 96, 5, 29, -20, -42 },
+ { 12, 15, 96, 5, 29, -20, -42 },
+ { 12, 20, 96, 5, 29, -20, -42 },
+ { 12, 25, 96, 5, 29, -20, -42 },
+ { 12, 30, 96, 5, 29, -20, -42 },
+ { 12, 35, 96, 5, 29, -20, -42 },
+ { 12, 0, 125, 5, 29, -20, -42 },
+ { 12, 5, 125, 5, 29, -20, -42 }
+};
+
+static const ShapeProvider k1WispShapesDOSOldFloppyProvider = { ARRAYSIZE(k1WispShapesDOSOldFloppy), k1WispShapesDOSOldFloppy };
+
+static const Shape k1MagicAnimShapesDOSOldFloppy[5] = {
+ { 17, 0, 0, 8, 49, -32, -49 },
+ { 17, 8, 0, 8, 49, -32, -49 },
+ { 17, 16, 0, 8, 49, -32, -49 },
+ { 17, 24, 0, 8, 49, -32, -49 },
+ { 17, 32, 0, 8, 49, -32, -49 }
+};
+
+static const ShapeProvider k1MagicAnimShapesDOSOldFloppyProvider = { ARRAYSIZE(k1MagicAnimShapesDOSOldFloppy), k1MagicAnimShapesDOSOldFloppy };
+
+static const Shape k1BranStoneShapesDOSOldFloppy[15] = {
+ { 18, 0, 0, 5, 51, -20, -50 },
+ { 18, 5, 0, 5, 51, -20, -50 },
+ { 18, 10, 0, 5, 51, -20, -50 },
+ { 18, 15, 0, 5, 51, -20, -50 },
+ { 18, 20, 0, 5, 51, -20, -50 },
+ { 18, 25, 0, 5, 51, -20, -50 },
+ { 18, 30, 0, 5, 51, -20, -50 },
+ { 18, 35, 0, 5, 51, -20, -50 },
+ { 18, 0, 51, 5, 51, -20, -50 },
+ { 18, 5, 51, 5, 51, -20, -50 },
+ { 18, 10, 51, 5, 51, -20, -50 },
+ { 18, 15, 51, 5, 51, -20, -50 },
+ { 18, 20, 51, 5, 51, -20, -50 },
+ { 18, 25, 51, 5, 51, -20, -50 },
+ { 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static const ShapeProvider k1BranStoneShapesDOSOldFloppyProvider = { ARRAYSIZE(k1BranStoneShapesDOSOldFloppy), k1BranStoneShapesDOSOldFloppy };
+
+static const byte k1OutroReunionSeqDOSOldFloppy[1351] = {
+ 0x1A, 0x00, 0x08, 0x01, 0x06, 0x01, 0x00, 0x02,
+ 0x08, 0x00, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00,
+ 0x14, 0x0A, 0x00, 0x03, 0x08, 0x07, 0x08, 0x00,
+ 0x0B, 0x00, 0x09, 0x00, 0x10, 0x20, 0x5A, 0x00,
+ 0x3A, 0x02, 0x02, 0x08, 0x0D, 0x50, 0x00, 0x22,
+ 0x07, 0x10, 0x00, 0x02, 0x08, 0x0E, 0x50, 0x00,
+ 0x22, 0x07, 0x10, 0x00, 0x02, 0x08, 0x0C, 0x50,
+ 0x00, 0x22, 0x07, 0x10, 0x00, 0x02, 0x08, 0x0B,
+ 0x50, 0x00, 0x22, 0x07, 0x10, 0x00, 0x02, 0x08,
+ 0x0C, 0x50, 0x00, 0x22, 0x07, 0x10, 0x00, 0x02,
+ 0x08, 0x0D, 0x50, 0x00, 0x22, 0x07, 0x10, 0x00,
+ 0x02, 0x08, 0x0E, 0x50, 0x00, 0x22, 0x07, 0x10,
+ 0x00, 0x0A, 0x01, 0x03, 0x08, 0x07, 0x08, 0x00,
+ 0x0B, 0x01, 0x04, 0x00, 0x10, 0x21, 0x5A, 0x00,
+ 0x3A, 0x02, 0x0A, 0x02, 0x02, 0x08, 0x14, 0x50,
+ 0x00, 0x22, 0x07, 0x08, 0x00, 0x03, 0x08, 0x07,
+ 0x08, 0x00, 0x03, 0x08, 0x07, 0x08, 0x00, 0x03,
+ 0x08, 0x07, 0x08, 0x00, 0x03, 0x08, 0x07, 0x08,
+ 0x00, 0x0B, 0x02, 0x01, 0x00, 0x03, 0x08, 0x07,
+ 0x08, 0x00, 0x03, 0x08, 0x07, 0x08, 0x00, 0x03,
+ 0x08, 0x07, 0x08, 0x00, 0x10, 0x22, 0x5A, 0x00,
+ 0x3A, 0x02, 0x0A, 0x03, 0x03, 0x08, 0x07, 0x08,
+ 0x00, 0x0B, 0x03, 0x0B, 0x00, 0x10, 0x23, 0x78,
+ 0x00, 0x3A, 0x0F, 0x0A, 0x03, 0x03, 0x08, 0x07,
+ 0x08, 0x00, 0x0B, 0x03, 0x05, 0x00, 0x06, 0x28,
+ 0x00, 0x02, 0x08, 0x2E, 0x50, 0x00, 0x22, 0x07,
+ 0x10, 0x00, 0x02, 0x08, 0x2D, 0x50, 0x00, 0x22,
+ 0x07, 0x10, 0x00, 0x02, 0x08, 0x2E, 0x50, 0x00,
+ 0x22, 0x07, 0x10, 0x00, 0x02, 0x08, 0x2D, 0x50,
+ 0x00, 0x22, 0x07, 0x10, 0x00, 0x02, 0x08, 0x2E,
+ 0x50, 0x00, 0x22, 0x07, 0x10, 0x00, 0x02, 0x08,
+ 0x2D, 0x50, 0x00, 0x22, 0x07, 0x10, 0x00, 0x02,
+ 0x08, 0x2F, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00,
+ 0x02, 0x08, 0x30, 0x50, 0x00, 0x22, 0x07, 0x08,
+ 0x00, 0x02, 0x08, 0x31, 0x50, 0x00, 0x22, 0x07,
+ 0x08, 0x00, 0x02, 0x08, 0x32, 0x50, 0x00, 0x22,
+ 0x07, 0x08, 0x00, 0x06, 0x0A, 0x00, 0x10, 0x24,
+ 0x5A, 0x00, 0x3A, 0x02, 0x02, 0x08, 0x33, 0x50,
+ 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08, 0x34,
+ 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08,
+ 0x35, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02,
+ 0x08, 0x36, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00,
+ 0x02, 0x08, 0x37, 0x50, 0x00, 0x22, 0x07, 0x08,
+ 0x00, 0x02, 0x08, 0x35, 0x50, 0x00, 0x22, 0x07,
+ 0x08, 0x00, 0x02, 0x08, 0x34, 0x50, 0x00, 0x22,
+ 0x07, 0x08, 0x00, 0x02, 0x08, 0x33, 0x50, 0x00,
+ 0x22, 0x07, 0x08, 0x00, 0x02, 0x08, 0x35, 0x50,
+ 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08, 0x36,
+ 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08,
+ 0x37, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x06,
+ 0x0A, 0x00, 0x10, 0x25, 0x5A, 0x00, 0x3A, 0x02,
+ 0x02, 0x08, 0x33, 0x50, 0x00, 0x22, 0x07, 0x08,
+ 0x00, 0x02, 0x08, 0x34, 0x50, 0x00, 0x22, 0x07,
+ 0x08, 0x00, 0x02, 0x08, 0x35, 0x50, 0x00, 0x22,
+ 0x07, 0x08, 0x00, 0x02, 0x08, 0x36, 0x50, 0x00,
+ 0x22, 0x07, 0x08, 0x00, 0x02, 0x08, 0x37, 0x50,
+ 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08, 0x35,
+ 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08,
+ 0x34, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02,
+ 0x08, 0x33, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00,
+ 0x02, 0x08, 0x35, 0x50, 0x00, 0x22, 0x07, 0x08,
+ 0x00, 0x02, 0x08, 0x36, 0x50, 0x00, 0x22, 0x07,
+ 0x08, 0x00, 0x02, 0x08, 0x37, 0x50, 0x00, 0x22,
+ 0x07, 0x08, 0x00, 0x06, 0x1E, 0x00, 0x10, 0x26,
+ 0x78, 0x00, 0x3A, 0x0F, 0x02, 0x08, 0x38, 0x50,
+ 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08, 0x39,
+ 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08,
+ 0x3A, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02,
+ 0x08, 0x38, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00,
+ 0x02, 0x08, 0x3B, 0x50, 0x00, 0x22, 0x07, 0x08,
+ 0x00, 0x06, 0x0A, 0x00, 0x02, 0x08, 0x39, 0x50,
+ 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08, 0x38,
+ 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08,
+ 0x39, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02,
+ 0x08, 0x3A, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00,
+ 0x06, 0x3C, 0x00, 0x11, 0x02, 0x08, 0x33, 0x50,
+ 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08, 0x32,
+ 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08,
+ 0x31, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02,
+ 0x08, 0x30, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00,
+ 0x02, 0x08, 0x2F, 0x50, 0x00, 0x22, 0x07, 0x08,
+ 0x00, 0x02, 0x08, 0x2E, 0x50, 0x00, 0x22, 0x07,
+ 0x08, 0x00, 0x02, 0x08, 0x2D, 0x50, 0x00, 0x22,
+ 0x07, 0x08, 0x00, 0x06, 0x1E, 0x00, 0x02, 0x08,
+ 0x2E, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02,
+ 0x08, 0x2F, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00,
+ 0x02, 0x08, 0x30, 0x50, 0x00, 0x22, 0x07, 0x08,
+ 0x00, 0x02, 0x08, 0x31, 0x50, 0x00, 0x22, 0x07,
+ 0x08, 0x00, 0x02, 0x08, 0x32, 0x50, 0x00, 0x22,
+ 0x07, 0x08, 0x00, 0x02, 0x08, 0x33, 0x50, 0x00,
+ 0x22, 0x07, 0x08, 0x00, 0x02, 0x08, 0x41, 0x50,
+ 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08, 0x42,
+ 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08,
+ 0x43, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02,
+ 0x08, 0x44, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00,
+ 0x02, 0x08, 0x45, 0x50, 0x00, 0x22, 0x07, 0x08,
+ 0x00, 0x02, 0x08, 0x46, 0x50, 0x00, 0x22, 0x07,
+ 0x08, 0x00, 0x06, 0x0A, 0x00, 0x10, 0x27, 0x5A,
+ 0x00, 0x3A, 0x02, 0x02, 0x08, 0x4E, 0x50, 0x00,
+ 0x22, 0x07, 0x08, 0x00, 0x02, 0x08, 0x4F, 0x50,
+ 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08, 0x50,
+ 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08,
+ 0x51, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02,
+ 0x08, 0x52, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00,
+ 0x02, 0x08, 0x53, 0x50, 0x00, 0x22, 0x07, 0x08,
+ 0x00, 0x02, 0x08, 0x54, 0x50, 0x00, 0x22, 0x07,
+ 0x08, 0x00, 0x02, 0x08, 0x55, 0x50, 0x00, 0x22,
+ 0x07, 0x08, 0x00, 0x06, 0x3C, 0x00, 0x10, 0x28,
+ 0x78, 0x00, 0x3A, 0x0F, 0x0A, 0x05, 0x02, 0x08,
+ 0x59, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02,
+ 0x08, 0x5A, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00,
+ 0x02, 0x08, 0x5B, 0x50, 0x00, 0x22, 0x07, 0x08,
+ 0x00, 0x02, 0x08, 0x5C, 0x50, 0x00, 0x22, 0x07,
+ 0x08, 0x00, 0x02, 0x08, 0x5D, 0x50, 0x00, 0x22,
+ 0x07, 0x08, 0x00, 0x0B, 0x05, 0x01, 0x00, 0x06,
+ 0x28, 0x00, 0x10, 0x29, 0x78, 0x00, 0x3A, 0x0F,
+ 0x0A, 0x06, 0x02, 0x08, 0x59, 0x50, 0x00, 0x22,
+ 0x07, 0x08, 0x00, 0x02, 0x08, 0x5A, 0x50, 0x00,
+ 0x22, 0x07, 0x08, 0x00, 0x02, 0x08, 0x5B, 0x50,
+ 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08, 0x5C,
+ 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08,
+ 0x5D, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x0B,
+ 0x06, 0x01, 0x00, 0x06, 0x28, 0x00, 0x10, 0x2A,
+ 0x78, 0x00, 0x3A, 0x0F, 0x02, 0x08, 0x5E, 0x50,
+ 0x00, 0x22, 0x07, 0x10, 0x00, 0x02, 0x08, 0x63,
+ 0x50, 0x00, 0x22, 0x07, 0x10, 0x00, 0x06, 0x5A,
+ 0x00, 0x11, 0x18, 0x69, 0x02, 0x08, 0x64, 0x50,
+ 0x00, 0x22, 0x07, 0x10, 0x00, 0x02, 0x08, 0x65,
+ 0x50, 0x00, 0x22, 0x07, 0x10, 0x00, 0x18, 0x74,
+ 0x02, 0x08, 0x66, 0x50, 0x00, 0x22, 0x07, 0x10,
+ 0x00, 0x02, 0x08, 0x67, 0x50, 0x00, 0x22, 0x07,
+ 0x10, 0x00, 0x18, 0x75, 0x02, 0x08, 0x68, 0x50,
+ 0x00, 0x22, 0x07, 0x10, 0x00, 0x02, 0x08, 0x69,
+ 0x50, 0x00, 0x22, 0x07, 0x10, 0x00, 0x10, 0x2B,
+ 0x96, 0x00, 0x1C, 0x22, 0x0A, 0x06, 0x02, 0x08,
+ 0x6B, 0x50, 0x00, 0x22, 0x07, 0x10, 0x00, 0x02,
+ 0x08, 0x6C, 0x50, 0x00, 0x22, 0x07, 0x10, 0x00,
+ 0x02, 0x08, 0x6D, 0x50, 0x00, 0x22, 0x07, 0x10,
+ 0x00, 0x02, 0x08, 0x6E, 0x50, 0x00, 0x22, 0x07,
+ 0x10, 0x00, 0x02, 0x08, 0x6F, 0x50, 0x00, 0x22,
+ 0x07, 0x10, 0x00, 0x02, 0x08, 0x70, 0x50, 0x00,
+ 0x22, 0x07, 0x10, 0x00, 0x02, 0x08, 0x71, 0x50,
+ 0x00, 0x22, 0x07, 0x10, 0x00, 0x0B, 0x06, 0x01,
+ 0x00, 0x06, 0x1E, 0x00, 0x10, 0x2C, 0x96, 0x00,
+ 0x1C, 0x22, 0x0A, 0x06, 0x02, 0x08, 0x6B, 0x50,
+ 0x00, 0x22, 0x07, 0x10, 0x00, 0x02, 0x08, 0x6C,
+ 0x50, 0x00, 0x22, 0x07, 0x10, 0x00, 0x02, 0x08,
+ 0x6D, 0x50, 0x00, 0x22, 0x07, 0x10, 0x00, 0x02,
+ 0x08, 0x6E, 0x50, 0x00, 0x22, 0x07, 0x10, 0x00,
+ 0x02, 0x08, 0x6F, 0x50, 0x00, 0x22, 0x07, 0x10,
+ 0x00, 0x02, 0x08, 0x70, 0x50, 0x00, 0x22, 0x07,
+ 0x10, 0x00, 0x02, 0x08, 0x71, 0x50, 0x00, 0x22,
+ 0x07, 0x10, 0x00, 0x0B, 0x06, 0x01, 0x00, 0x06,
+ 0x1E, 0x00, 0x10, 0x2D, 0x96, 0x00, 0x1C, 0x22,
+ 0x0A, 0x06, 0x02, 0x08, 0x6B, 0x50, 0x00, 0x22,
+ 0x07, 0x10, 0x00, 0x02, 0x08, 0x6C, 0x50, 0x00,
+ 0x22, 0x07, 0x10, 0x00, 0x02, 0x08, 0x6D, 0x50,
+ 0x00, 0x22, 0x07, 0x10, 0x00, 0x02, 0x08, 0x6E,
+ 0x50, 0x00, 0x22, 0x07, 0x10, 0x00, 0x02, 0x08,
+ 0x6F, 0x50, 0x00, 0x22, 0x07, 0x10, 0x00, 0x02,
+ 0x08, 0x70, 0x50, 0x00, 0x22, 0x07, 0x10, 0x00,
+ 0x02, 0x08, 0x71, 0x50, 0x00, 0x22, 0x07, 0x10,
+ 0x00, 0x0B, 0x06, 0x01, 0x00, 0x06, 0x1E, 0x00,
+ 0x02, 0x08, 0x72, 0x50, 0x00, 0x22, 0x07, 0x10,
+ 0x00, 0x02, 0x08, 0x73, 0x50, 0x00, 0x22, 0x07,
+ 0x10, 0x00, 0x06, 0x14, 0x00, 0x02, 0x08, 0x74,
+ 0x50, 0x00, 0x22, 0x07, 0x10, 0x00, 0x02, 0x08,
+ 0x75, 0x50, 0x00, 0x22, 0x07, 0x10, 0x00, 0x06,
+ 0x78, 0x00, 0x13, 0x0E, 0x01, 0x08, 0x1D
+};
+
+static const ByteProvider k1OutroReunionSeqDOSOldFloppyProvider = { ARRAYSIZE(k1OutroReunionSeqDOSOldFloppy), k1OutroReunionSeqDOSOldFloppy };
+
+static const char *const k1AudioTracksDOSOldFloppy[8] = {
+ "KYRA1A",
+ "KYRA1B",
+ "KYRA2A",
+ "KYRA3A",
+ "KYRA4A",
+ "KYRA4B",
+ "KYRA5A",
+ "KYRA5B"
+};
+
+static const StringListProvider k1AudioTracksDOSOldFloppyProvider = { ARRAYSIZE(k1AudioTracksDOSOldFloppy), k1AudioTracksDOSOldFloppy };
+
+static const char *const k1AudioTracks2DOSOldFloppy[1] = {
+ "kyramisc"
+};
+
+static const StringListProvider k1AudioTracks2DOSOldFloppyProvider = { ARRAYSIZE(k1AudioTracks2DOSOldFloppy), k1AudioTracks2DOSOldFloppy };
+
+static const char *const k1AudioTracksIntroDOSOldFloppy[1] = {
+ "intro"
+};
+
+static const StringListProvider k1AudioTracksIntroDOSOldFloppyProvider = { ARRAYSIZE(k1AudioTracksIntroDOSOldFloppy), k1AudioTracksIntroDOSOldFloppy };
+
diff --git a/devtools/create_kyradat/resources/lok_dos_oldfloppy_russian.h b/devtools/create_kyradat/resources/lok_dos_oldfloppy_russian.h
new file mode 100644
index 0000000000..d0afaf6c50
--- /dev/null
+++ b/devtools/create_kyradat/resources/lok_dos_oldfloppy_russian.h
@@ -0,0 +1,328 @@
+static const char *const k1IntroStringsDOSOldFloppyRussian[51] = {
+ "This is a text test - 1",
+ "This is a text test - 2",
+ "\x08""p""\x18\x14""e""\x1F"", Ka""\x1B\x1B""a""\x1A""...",
+ "...""\x08""o""\x14""e""\x1B\x18\x1F""e""\x1B""{ Kopo""\x1B""e""\x14""c""\x1A""o""\x19"" Ma""\x15\x18\x18""!",
+ "\x12"" ""\x1D""e ""\x18""c""\x1E""y""\x15""a""\x1B"" ""\x1F""e""\x13""~?",
+ "Ma""\x1B\x1A""o""\x1B\x1C""!",
+ "\x12"" ""\x14""\\epa y""\x17\x1D""a""\x1B"" o ""\x1F\x14""oe""\x1C"" ""\x1E""o""\x13""e""\x15""e...",
+ "... ""\x18"" o""\x7F\x18\x16""a""\x1B"" ""\x1F""e""\x13""~ y""\x14\x18\x16""e""\x1F""{.",
+ "K \\e""\x1C""y c""\x1E""e]""\x18\x1F""{?",
+ "\x12"" ""\x17\x16""ec{ ""\x02""oc""\x1E""o""\x16\x18\x1D""!",
+ "T""\x14""oe ""\x1E""po""\x1A\x1B""~""\x1F\x18""e ""\x1C""e""\x1D""~ ""\x1D""e y""\x16""ep""\x7F\x18\x1F"".",
+ "Ta""\x1A"" y""\x13""e""\x19"" ""\x1C""e""\x1D""~!",
+ "\t ""\x1C""e""\x1D""~ oc""\x1F""a""\x1B""ac{ e^e ""\x1C""a""\x15\x18""~",
+ "He co""\x1C\x1D""e""\x14""a""\x19""c~...",
+ "...""\x1F""e""\x1E""ep{ ""\x1F""` ""\x1A""a""\x1C""e""\x1D""{...",
+ "...""\x1D""o ~ oc""\x1F""a""\x14\x18\x1B"" ""\x15\x1B""a""\x17""a.",
+ "\x12"" ""\x1D""e ""\x13""y""\x16""y ""\x1E\x1B""a""\x1A""a""\x1F""{ o K""\x18""pa""\x1D\x16\x18\x18""...",
+ "...""\x1D""o ""\x17""a""\x1E""pe""\x1F\x18\x1F""{ ""\x1F""e""\x13""e ""\x1D""e ""\x1C""o""\x15""y.",
+ "Malcolm the Jester has broken free!",
+ "He now controls the Kyragem...",
+ "...source of all magic in Kyrandia!",
+ "",
+ "Ka""\x1A"" ""\x1F""` ""\x1E""oc""\x1C""e""\x1B""!",
+ "Ho ""\x1D\x18""\\e""\x15""o, y ""\x1C""e""\x1D""~ ec""\x1F""{ ""\x1A""oe-\\""\x1F""o...",
+ "Bo""\x1F"" ""\x1A""o""\x1C""e""\x16\x18""~!",
+ "Ho ~ \\ec""\x1F\x1D""o ""\x1E""pe""\x16""y""\x1E""pe""\x7F\x16""a}.",
+ "He ""\x1E""p`""\x15""a""\x19"" ""\x1D""a ""\x10""TO ""\x16""epe""\x14""o!",
+ "He ""\x14\x17\x13\x18""pa""\x19""c~ ""\x1D""a ""\x10""TO ""\x16""epe""\x14""o ""\x13""e""\x1B""o\\""\x1A""a!",
+ "\x02""AB!",
+ "Ta""\x1A"" c""\x1C""e]""\x1D""ee...",
+ "...He ""\x1F""a""\x1A"" ""\x1B\x18""?",
+ "Xa xa xa...",
+ "Pa""\x17\x14""e ""\x1E""a""\x1B""{[` ""\x1D""e ""\x1E""pe""\x1A""pac""\x1D""`",
+ "Ka""\x1A"" ""\x17\x16""opo""\x14""o o""\x7F\x18\x1F""{!",
+ "\x01""p|""\x1D\x16""o""\x1D""!",
+ "\x03""e""\x16""! M` c""\x16""e""\x1B""a""\x1B\x18"" |""\x1F""o!",
+ "He""\x1F""! T` c""\x16""e""\x1B""a""\x1B""!",
+ "\tpa Kopo""\x1B""} ""\x01""p|""\x1D\x16""o""\x1D""y!",
+ "\tpa Kopo""\x1B""e""\x14""c""\x1A""o""\x19"" Ma""\x15\x18\x18""!",
+ "Te""\x1E""ep{ ""\x1C""o""\x7F\x1D""o ""\x17""a""\x1D""~""\x1F""{c~ K""\x18""pa""\x1D\x16\x18""e""\x19"" ""\x14\x1C""ec""\x1F""e!",
+ "O""\x1F\x1B\x18""\\""\x1D""o!",
+ "\x06"" ""\x1C""o""\x19"" ""\x1E""ep""\x14""`""\x19"" Kopo""\x1B""e""\x14""c""\x1A\x18\x19"" \t""\x1A""a""\x17""...",
+ "\x12"" o""\x13""_~""\x14\x1B""~} ca""\x1D\x16""a""\x1B\x18\x18"" o@""\x18""[""\x18""a""\x1B""{""\x1D""o""\x19"" o""\x13""y""\x14""{} K""\x18""pa""\x1D\x16\x18\x18""!",
+ "O""\x1F\x1B\x18""\\""\x1D""o, ""\x01""p|""\x1D\x16""o""\x1D""!",
+ "\x05""e""\x1C\x1B""~ ""\x13""o""\x1B""{]e ""\x1D""e c""\x1F""pa""\x16""ae""\x1F""...",
+ "\x06"" c ""\x1F\x14""o""\x18""x ""\x16""py""\x17""e""\x19"" c""\x1D""~""\x1F""o ""\x17""a""\x1A\x1B""~""\x1F\x18""e!",
+ "\x03""opo""\x15""a~ ""\x01""p""\x18\x1D"".",
+ "Ma""\x1B\x1A""o""\x1B\x1C"" oc""\x14""o""\x13""o""\x16\x18\x1B""c~!",
+ "C""\x1A""opo o""\x1D"" ""\x1E""p""\x18\x16""e""\x1F"" ""\x17""a ""\x1C\x1D""o""\x19"".",
+ "\x08""o""\x1C""o""\x15\x18"" ""\x01""p|""\x1D\x16""o""\x1D""y...",
+ ""
+};
+
+static const StringListProvider k1IntroStringsDOSOldFloppyRussianProvider = { ARRAYSIZE(k1IntroStringsDOSOldFloppyRussian), k1IntroStringsDOSOldFloppyRussian };
+
+static const char *const k1ItemNamesDOSOldFloppyRussian[107] = {
+ "\x02""pa""\x1D""a""\x1F",
+ "A""\x1C""e""\x1F\x18""c""\x1F",
+ "A""\x1A\x14""a""\x1C""ap""\x18\x1D",
+ "A""\x1B\x1C""a""\x17",
+ "\x06\x17""y""\x1C""py""\x16",
+ "\x04""e""\x1C""\\y""\x7F\x18\x1D""a",
+ "Py""\x13\x18\x1D",
+ "\x08""ep""\x18\x16""o""\x1F",
+ "Ca""\x1E""@""\x18""p",
+ "O""\x1E""a""\x1B",
+ "To""\x1E""a""\x17",
+ "O""\x1D\x18\x1A""c",
+ "Co""\x1B\x1D""e\\""\x1D""`""\x19"" ""\x1A""a""\x1C""e""\x1D""{",
+ "\x07""y""\x1D\x1D""`""\x19"" ""\x1A""a""\x1C""e""\x1D""{",
+ "Pa""\x16""y""\x7F\x1D""`""\x19"" ""\x1A""a""\x1C""e""\x1D""{",
+ "Ko""\x1C\x1E""ac",
+ "Po""\x17""a",
+ "T}""\x1B""{""\x1E""a""\x1D",
+ "Opx""\x18\x16""e~",
+ "Cepe""\x13""p~""\x1D\x1D""a~ po""\x17""a",
+ "Cepe""\x13""p~""\x1D\x1D""a~ c""\x1F""a""\x1F""ye""\x1F\x1A""a",
+ "Cepe""\x13""p~""\x1D\x1D""a~ ""\x1C""o""\x1D""e""\x1F""a",
+ "\x05""o""\x1B""o""\x1F""a~ ""\x1C""o""\x1D""e""\x1F""a",
+ "\x05""o""\x1B""o""\x1F""oe ""\x1A""o""\x1B""{[o",
+ "Kopo""\x1B""e""\x14""c""\x1A""a~ \\a]a",
+ "\x0E\x18""]""\x1A""a",
+ "\x04""e""\x1B""y""\x16""{",
+ "Opex",
+ "Be\\""\x1D""oc""\x18""~}^""\x18""e ~""\x15""o""\x16""`",
+ "O""\x15\x1D""e""\x1D\x1D""`e ~""\x15""o""\x16""`",
+ "O""\x15\x1D""e""\x1D\x1D""`e ~""\x15""o""\x16""`",
+ "O""\x15\x1D""e""\x1D\x1D""`e ~""\x15""o""\x16""`",
+ "O""\x15\x1D""e""\x1D\x1D""`e ~""\x15""o""\x16""`",
+ "O""\x15\x1D""e""\x1D\x1D""`e ~""\x15""o""\x16""`",
+ "P`""\x13""a",
+ "C""\x1A""e""\x1B""e""\x1F"" p`""\x13""`",
+ "\x01""apa""\x1D""{~ ""\x1D""o""\x15""a",
+ "Koc""\x1F""{",
+ "\x12\x13\x1B""o""\x1A""o",
+ "O""\x15""p`""\x17""o""\x1A",
+ "C""\x18\x1D\x18""e ~""\x15""o""\x16""`",
+ "\x02""p""\x18\x13",
+ "\x05""a""\x1E\x18""c""\x1A""a",
+ "Mpa""\x1C""op",
+ "\x08\x18\x1B""a",
+ "A""\x1D\x1A",
+ "\x08""epo",
+ "\x12\x19""[o",
+ "\x07\x18""c""\x1F",
+ "Tp""\x18\x1B\x18""c""\x1F\x1D\x18\x1A",
+ "\t""\x1E""a""\x14""]a~ ""\x17\x14""e""\x17\x16""a",
+ "Xpyc""\x1F""a""\x1B""{""\x1D""`""\x19"" ]ap",
+ "C""\x1B""e""\x17""a",
+ "\x05""ep""\x1A""a""\x1B""o",
+ "\x07""{""\x16\x18\x1D\x1A""a",
+ "\n""\x1B""e""\x19\x1F""a",
+ "\x08""eco\\""\x1D""`e \\ac`",
+ "\x04""e""\x1B""e""\x17\x1D""`""\x19"" ""\x1A\x1B""}\\",
+ "He@p""\x18\x1F""o""\x14""`""\x19"" ""\x1A\x1B""}\\",
+ "O""\x13""c""\x18\x16\x18""a""\x1D""o""\x14""`""\x19"" ""\x1A\x1B""}\\",
+ "Kpac""\x1D""oe ""\x17""e""\x1B""{e",
+ "Kpac""\x1D""oe ""\x17""e""\x1B""{e",
+ "C""\x18\x1D""ee ""\x17""e""\x1B""{e",
+ "C""\x18\x1D""ee ""\x17""e""\x1B""{e",
+ "\x04""e""\x1B\x1F""oe ""\x17""e""\x1B""{e",
+ "\x04""e""\x1B\x1F""oe ""\x17""e""\x1B""{e",
+ "\x05""e""\x1B""e""\x1D""oe ""\x17""e""\x1B""{e",
+ "Opa""\x1D\x7F""e""\x14""oe ""\x17""e""\x1B""{e",
+ "\x08""yp""\x1E""yp""\x1D""oe ""\x17""e""\x1B""{e",
+ "Pa""\x16""y""\x7F\x1D""oe ""\x17""e""\x1B""{e",
+ "C""\x14""e""\x7F""a~ Bo""\x16""a",
+ "C""\x14""e""\x7F""a~ Bo""\x16""a",
+ "Co""\x1B""e""\x1D""a~ ""\x14""o""\x16""a",
+ "Co""\x1B""e""\x1D""a~ ""\x14""o""\x16""a",
+ "M""\x18\x1D""epa""\x1B""{""\x1D""a~ ""\x14""o""\x16""a",
+ "M""\x18\x1D""epa""\x1B""{""\x1D""a~ ""\x14""o""\x16""a",
+ "Bo""\x1B""]e""\x13\x1D""a~ ""\x14""o""\x16""a",
+ "Bo""\x1B""]e""\x13\x1D""a~ ""\x14""o""\x16""a",
+ "\x08""yc""\x1F""a~ @""\x1B""~""\x15""a",
+ "\x08""yc""\x1F""a~ @""\x1B""~""\x15""a",
+ "C""\x14\x18\x1F""o""\x1A",
+ "C""\x14\x18\x1F""o""\x1A",
+ "C""\x14\x18\x1F""o""\x1A",
+ "C""\x14\x18\x1F""o""\x1A",
+ "C""\x14\x18\x1F""o""\x1A",
+ "C""\x14\x18\x1F""o""\x1A",
+ "C""\x14\x18\x1F""o""\x1A",
+ "C""\x14\x18\x1F""o""\x1A",
+ "C""\x14\x18\x1F""o""\x1A",
+ "C""\x14\x18\x1F""o""\x1A",
+ "\x08""ep""\x15""a""\x1C""e""\x1D\x1F",
+ "\x08""ep""\x15""a""\x1C""e""\x1D\x1F",
+ "\x08""ep""\x15""a""\x1C""e""\x1D\x1F",
+ "\x08""ep""\x15""a""\x1C""e""\x1D\x1F",
+ "\x08""ep""\x15""a""\x1C""e""\x1D\x1F",
+ "Kpac""\x1D""`""\x19"" ""\x1A""a""\x1C""e""\x1D""{",
+ "Opa""\x1D\x7F""e""\x14""`""\x19"" ""\x1A""a""\x1C""e""\x1D""{",
+ "\x04""e""\x1B\x1F""`""\x19"" ""\x1A""a""\x1C""e""\x1D""{",
+ "\x05""e""\x1B""e""\x1D""`""\x19"" ""\x1A""a""\x1C""e""\x1D""{",
+ "C""\x18\x1D""e-""\x17""e""\x1B""e""\x1D""`""\x19"" ""\x1A""a""\x1C""e""\x1D""{",
+ "C""\x18\x1D\x18\x19"" ""\x1A""a""\x1C""e""\x1D""{",
+ "\x08""yp""\x1E""yp""\x1D""`""\x19"" ""\x1A""a""\x1C""e""\x1D""{",
+ "T~""\x7F""e""\x1B""`""\x19"" ""\x1A""a""\x1C""e""\x1D""{",
+ "Kopo""\x1B""e""\x14""c""\x1A""a~ ""\x1A""opo""\x1D""a",
+ "Kopo""\x1B""e""\x14""c""\x1A\x18\x19"" c""\x1A\x18\x1E""e""\x1F""p",
+ "\x05""o""\x1B""o""\x1F""o""\x19"" ""\x1A\x1B""}\\",
+ "?"
+};
+
+static const StringListProvider k1ItemNamesDOSOldFloppyRussianProvider = { ARRAYSIZE(k1ItemNamesDOSOldFloppyRussian), k1ItemNamesDOSOldFloppyRussian };
+
+static const char *const k1TakenStringsDOSOldFloppyRussian[2] = {
+ " - ""\x14\x17""~""\x1B",
+ " - ""\x14\x17""~""\x1B"
+};
+
+static const StringListProvider k1TakenStringsDOSOldFloppyRussianProvider = { ARRAYSIZE(k1TakenStringsDOSOldFloppyRussian), k1TakenStringsDOSOldFloppyRussian };
+
+static const char *const k1PlacedStringsDOSOldFloppyRussian[1] = {
+ " y ""\x1C""e""\x1D""~."
+};
+
+static const StringListProvider k1PlacedStringsDOSOldFloppyRussianProvider = { ARRAYSIZE(k1PlacedStringsDOSOldFloppyRussian), k1PlacedStringsDOSOldFloppyRussian };
+
+static const char *const k1DroppedStringsDOSOldFloppyRussian[1] = {
+ " - ""\x13""poc""\x18\x1B"
+};
+
+static const StringListProvider k1DroppedStringsDOSOldFloppyRussianProvider = { ARRAYSIZE(k1DroppedStringsDOSOldFloppyRussian), k1DroppedStringsDOSOldFloppyRussian };
+
+static const char *const k1PutDownStringDOSOldFloppyRussian[1] = {
+ "Ha""\x14""ep""\x1D""o ""\x1B""y\\]e |""\x1F""o ""\x14\x1D""a\\a""\x1B""e ""\x1E""o""\x1B""o""\x7F\x18\x1F""{."
+};
+
+static const StringListProvider k1PutDownStringDOSOldFloppyRussianProvider = { ARRAYSIZE(k1PutDownStringDOSOldFloppyRussian), k1PutDownStringDOSOldFloppyRussian };
+
+static const char *const k1WaitAmuletStringDOSOldFloppyRussian[1] = {
+ "Ha""\x14""ep""\x1D""oe ""\x1D""a""\x16""o ""\x1E""o""\x16""o""\x7F\x16""a""\x1F""{, ""\x1E""o""\x1A""a A""\x1C""y""\x1B""e""\x1F"" ""\x14""occ""\x1F""a""\x1D""o""\x14\x18\x1F"" c""\x14""o} c""\x18\x1B""y."
+};
+
+static const StringListProvider k1WaitAmuletStringDOSOldFloppyRussianProvider = { ARRAYSIZE(k1WaitAmuletStringDOSOldFloppyRussian), k1WaitAmuletStringDOSOldFloppyRussian };
+
+static const char *const k1BlackJewelStringDOSOldFloppyRussian[1] = {
+ "\x10\x1F""o ""\x1A""a""\x1C""e""\x1D""{, ""\x1D""o ""\x1E""o\\e""\x1C""y o""\x1D"" \\ep""\x1D""`""\x19""?"
+};
+
+static const StringListProvider k1BlackJewelStringDOSOldFloppyRussianProvider = { ARRAYSIZE(k1BlackJewelStringDOSOldFloppyRussian), k1BlackJewelStringDOSOldFloppyRussian };
+
+static const char *const k1HealingTipStringDOSOldFloppyRussian[1] = {
+ "\x10\x1F""o ""\x1C""o""\x7F""e""\x1F"" ""\x1E""p""\x18\x15""o""\x16\x18\x1F""c~, ec""\x1B\x18"" ~ ""\x17""a""\x13""o""\x1B""e}."
+};
+
+static const StringListProvider k1HealingTipStringDOSOldFloppyRussianProvider = { ARRAYSIZE(k1HealingTipStringDOSOldFloppyRussian), k1HealingTipStringDOSOldFloppyRussian };
+
+static const char *const k1PoisonGoneStringDOSOldFloppyRussian[2] = {
+ "\x05\x16""opo""\x14""o!",
+ "\x03""e""\x19""c""\x1F\x14\x18""e o""\x1F""pa""\x14""` ""\x1E""pe""\x1A""pa""\x1F\x18\x1B""oc{!"
+};
+
+static const StringListProvider k1PoisonGoneStringDOSOldFloppyRussianProvider = { ARRAYSIZE(k1PoisonGoneStringDOSOldFloppyRussian), k1PoisonGoneStringDOSOldFloppyRussian };
+
+static const char *const k1ThePoisonStringsDOSOldFloppyRussian[4] = {
+ "O""\x1F""pa""\x14""a...",
+ "He ""\x1C""o""\x15""y ""\x16""`]a""\x1F""{...",
+ "M""\x1D""e ""\x1D""exopo]o...",
+ "\x10\x1F""a ""\x17\x1C""e~\r~""\x16""o""\x14\x18\x1F""a!"
+};
+
+static const StringListProvider k1ThePoisonStringsDOSOldFloppyRussianProvider = { ARRAYSIZE(k1ThePoisonStringsDOSOldFloppyRussian), k1ThePoisonStringsDOSOldFloppyRussian };
+
+static const char *const k1FluteStringsDOSOldFloppyRussian[2] = {
+ "Not very impressive sounding.",
+ "That last note sure was high!"
+};
+
+static const StringListProvider k1FluteStringsDOSOldFloppyRussianProvider = { ARRAYSIZE(k1FluteStringsDOSOldFloppyRussian), k1FluteStringsDOSOldFloppyRussian };
+
+static const char *const k1WispJewelStringsDOSOldFloppyRussian[3] = {
+ "I'm not really feeling up to it right now.",
+ "Ha""\x14""ep""\x1D""oe ~ ""\x16""o""\x1B\x7F""e""\x1D"" ""\x1E""o""\x1B""o""\x7F\x18\x1F""{ ",
+ ",c""\x1D""a\\a""\x1B""a"
+};
+
+static const StringListProvider k1WispJewelStringsDOSOldFloppyRussianProvider = { ARRAYSIZE(k1WispJewelStringsDOSOldFloppyRussian), k1WispJewelStringsDOSOldFloppyRussian };
+
+static const char *const k1MagicJewelStringsDOSOldFloppyRussian[1] = {
+ "C""\x1F""pa""\x1D\x1D""oe \\y""\x14""c""\x1F\x14""o."
+};
+
+static const StringListProvider k1MagicJewelStringsDOSOldFloppyRussianProvider = { ARRAYSIZE(k1MagicJewelStringsDOSOldFloppyRussian), k1MagicJewelStringsDOSOldFloppyRussian };
+
+static const char *const k1FlaskFullStringDOSOldFloppyRussian[1] = {
+ "\x10\x1F""a @""\x1B""~""\x7F\x1A""a y""\x7F""e ""\x17""a""\x1E""o""\x1B\x1D""e""\x1D""a."
+};
+
+static const StringListProvider k1FlaskFullStringDOSOldFloppyRussianProvider = { ARRAYSIZE(k1FlaskFullStringDOSOldFloppyRussian), k1FlaskFullStringDOSOldFloppyRussian };
+
+static const char *const k1FullFlaskStringDOSOldFloppyRussian[4] = {
+ "\n""\x1B""~""\x7F\x1A""a ""\x1F""e""\x1E""ep{ ""\x1E""o""\x1B\x1D""a\red\rc""\x14""e""\x7F""e""\x19"", c""\x14""ep""\x1A""a }^e""\x19"" ""\x14""o""\x16""o""\x19"".",
+ "\n""\x1B""~""\x7F\x1A""a ""\x1F""e""\x1E""ep{ ""\x1E""o""\x1B\x1D""a\red\rco""\x1B""e""\x1D""o""\x19"" ""\x14""o""\x16""o""\x19"".",
+ "\n""\x1B""~""\x7F\x1A""a ""\x1F""e""\x1E""ep{ ""\x1E""o""\x1B\x1D""a\red\r""\x1C\x18\x1D""epa""\x1B""{""\x1D""o""\x19"" ""\x14""o""\x16""o""\x19"".",
+ " o""\x1B""]. ""\x14""o""\x16""o""\x19""."
+};
+
+static const StringListProvider k1FullFlaskStringDOSOldFloppyRussianProvider = { ARRAYSIZE(k1FullFlaskStringDOSOldFloppyRussian), k1FullFlaskStringDOSOldFloppyRussian };
+
+static const char *const k1OutroHomeStringDOSOldFloppyRussian[1] = {
+ "\x03""o""\x1C""a"
+};
+
+static const StringListProvider k1OutroHomeStringDOSOldFloppyRussianProvider = { ARRAYSIZE(k1OutroHomeStringDOSOldFloppyRussian), k1OutroHomeStringDOSOldFloppyRussian };
+
+static const char *const k1VeryCleverStringDOSOldFloppyRussian[1] = {
+ "Very clever! But your feeble efforts are futile."
+};
+
+static const StringListProvider k1VeryCleverStringDOSOldFloppyRussianProvider = { ARRAYSIZE(k1VeryCleverStringDOSOldFloppyRussian), k1VeryCleverStringDOSOldFloppyRussian };
+
+static const char *const k1GUIStringsDOSOldFloppyRussian[28] = {
+ "\x07""e""\x15""e""\x1D\x16""a K""\x18""pa""\x1D\x16\x18\x18",
+ "\x05""a""\x15""py""\x17\x18\x1F""{",
+ "Coxpa""\x1D\x18\x1F""{ ""\x18\x15""py",
+ "\t""\x1E""pa""\x14\x1B""e""\x1D\x18""e",
+ "\x05""a""\x1A""o""\x1D""\\""\x18\x1F""{",
+ "\x08""po""\x16""o""\x1B\x7F\x18\x1F""{",
+ "\t""\x1E""pa""\x14\x1B""e""\x1D\x18""e",
+ "Ka""\x1A""y} ""\x18\x15""py B` xo""\x1F\x18\x1F""e ""\x17""a""\x15""py""\x17\x18\x1F""{?",
+ "B`""\x13""ep""\x18\x1F""e ""\x1E""o""\x17\x18""[""\x18""} coxpa""\x1D""e""\x1D\x18""~:",
+ "< ""\x08""\tCTO >",
+ "O""\x1F\x1C""e""\x1D""a",
+ "B""\x14""e""\x16\x18\x1F""e o""\x1E\x18""ca""\x1D\x18""e coxpa""\x1D""~e""\x1C""o""\x19"" ""\x18\x15""p`:",
+ "Save",
+ "C""\x1E\x18"" c""\x1E""o""\x1A""o""\x19\x1D""o, ""\x01""p|""\x1D\x16""o""\x1D"".",
+ "B` y""\x14""epe""\x1D""`, \\""\x1F""o xo""\x1F\x18\x1F""e ""\x17""a""\x1A""o""\x1D""\\""\x18\x1F""{ ""\x18\x15""py?",
+ "XXX",
+ "XXX",
+ "XXXXXXX",
+ "XXXXXXXXX",
+ "\x02\x1B""a""\x14"".""\x1C""e""\x1D""}",
+ "on",
+ "\x1D""e""\x1F",
+ "\x03""a ",
+ "No",
+ "\x10\x0F\xE0""(""\x18\x0F\xE0""(""\x1D\x0F\xE0""($""\x0F\xE0""()""\x0F\xE0""(1""\x0F\xE0""(9""\x0F\xE0""(@""\x0F\xE0""(E""\x0F\xE0""(""\x03\x14\x18\x7F""e""\x1D\x18""e ",
+ "Te""\x1A""c""\x1F"" ",
+ "My""\x17""`""\x1A""a ",
+ "\x05\x14""y""\x1A\x18"" ",
+};
+
+static const StringListProvider k1GUIStringsDOSOldFloppyRussianProvider = { ARRAYSIZE(k1GUIStringsDOSOldFloppyRussian), k1GUIStringsDOSOldFloppyRussian };
+
+static const char *const k1NewGameStringDOSOldFloppyRussian[1] = {
+ "< HOBA""\x12"" ""\x06\x02""PA >"
+};
+
+static const StringListProvider k1NewGameStringDOSOldFloppyRussianProvider = { ARRAYSIZE(k1NewGameStringDOSOldFloppyRussian), k1NewGameStringDOSOldFloppyRussian };
+
+static const char *const k1ConfigStringsDOSOldFloppyRussian[9] = {
+ "\x1C\x18\x1D\x18\x1C""y""\x1C",
+ "\x1C""e""\x16\x1B",
+ "\x1D""op""\x1C""a""\x1B",
+ "\x13""`c""\x1F",
+ "\x1C""a""\x1A""c. ",
+ "\x1C\x18\x1D\x18\x1C""y""\x1C",
+ "\x1D""op""\x1C""a""\x1B",
+ "\x13""`c""\x1F",
+ "\x1E""o ""\x1A\x1B\x18\x1A""y "
+};
+
+static const StringListProvider k1ConfigStringsDOSOldFloppyRussianProvider = { ARRAYSIZE(k1ConfigStringsDOSOldFloppyRussian), k1ConfigStringsDOSOldFloppyRussian };
+
diff --git a/devtools/create_kyradat/resources/lok_dos_spanish.h b/devtools/create_kyradat/resources/lok_dos_spanish.h
new file mode 100644
index 0000000000..40e5bbb53e
--- /dev/null
+++ b/devtools/create_kyradat/resources/lok_dos_spanish.h
@@ -0,0 +1,333 @@
+static const char *const k1IntroStringsDOSSpanish[53] = {
+ "This is a text test - 1",
+ "This is a text test - 2",
+ "Buenas Kallak...",
+ "...""\xAD""Poderoso jefe de la Orden de los M""\xA1""sticos reales!",
+ "\xA8""Te he asustado?",
+ "\xAD""Malcolm!",
+ "Me enter""\x82"" ayer de tu fuga.",
+ "Y te estaba esperando desde hace un rato.",
+ "\xA8""Por qu""\x82"" me iba a dar prisa?",
+ "\xAD""Soy yo el que gobierna este pa""\xA1""s!",
+ "Tu d""\x82""bil maleficio no me atemoriza.",
+ "\xAD""Anda, m""\xA0""tame de una vez!",
+ "Me queda poco poder m""\xA0""gico.",
+ "No te quepa ninguna duda de que vengo a hacerte da""\xA4""o...",
+ "...Ahora eres de piedra...",
+ "...pero he respetado tus ojos.",
+ "No he derramado ni una l""\xA0""grima por Kyrandia...",
+ "...pero no voy a negarte el placer de las tuyas.",
+ "\xAD""Malcolm el Buf""\xA2""n est""\xA0"" en libertad!",
+ "Y es ""\x82""l quien ahora controla la Kyragema...",
+ "...fuente de toda la magia de Kyrandia!",
+ "",
+ "\xAD""C""\xA2""mo te atreves a tropezar conmigo!",
+ "En absoluto, he reservado algo especial para ti...",
+ "\xAD""Un hechizo humor""\xA1""stico!",
+ "Pero te advertir""\x82"" honestamente.",
+ "\xAD""No saltes a ESE ""\xA0""rbol!",
+ "\xAD""No te subas a ESE ""\xA0""rbol ardillita!",
+ "\xAD""Buuu!",
+ "Es requete divertido de este modo...",
+ "...""\xA8""Verdad?",
+ "Ja ja ja...",
+ "\xA8""Verdad que los dedos son una maravilla?",
+ "\xAD""Es estupendo estar vivo!",
+ "\xAD""Brandon!",
+ "\xAD""Abuelo! ""\xAD""Lo hemos conseguido!",
+ "\xAD""No! ""\xAD""TU lo has hecho!",
+ "\xAD""Larga vida al rey Brandon!",
+ "\xAD""Larga vida a los M""\xA1""sticos reales!",
+ "\xAD""Ahora vamos a reconstruir Kyrandia!",
+ "\xAD""Buena idea!",
+ "En mi primera proclamaci""\xA2""n como rey...",
+ "\xAD""Declaro las sandalias como calzado oficial de Kyrandia!",
+ "\xAD""Bien hecho, Brandon!",
+ "La Tierra no sufre m""\xA0""s...",
+ "\xAD""Y tus amigos han regresado!",
+ "Querida Brynn...",
+ "\xAD""Malcolm se ha fugado!",
+ "Pronto vendr""\xA0"" a por m""\xA1"".",
+ "Por favor, ayuda a Brandon...",
+ "",
+ "",
+ ""
+};
+
+static const StringListProvider k1IntroStringsDOSSpanishProvider = { ARRAYSIZE(k1IntroStringsDOSSpanish), k1IntroStringsDOSSpanish };
+
+static const char *const k1ItemNamesDOSSpanish[107] = {
+ "Granate",
+ "Amatista",
+ "Aguamarina",
+ "Diamante",
+ "Esmeralda",
+ "Perla",
+ "Rub""\xA1",
+ "Peridot",
+ "Zafiro",
+ "Opalo",
+ "Topacio",
+ "Onix",
+ "Piedra Solar",
+ "Piedra Lunar",
+ "Piedra Arco Iris",
+ "Piedra Magn""\x82""tica",
+ "Rosa",
+ "Tulip""\xA0""n",
+ "Orqu""\xA1""dea",
+ "Rosa de plata",
+ "Estatua de plata",
+ "Moneda de Plata",
+ "Moneda de oro",
+ "Anillo de oro",
+ "C""\xA0""liz real",
+ "Pi""\xA4""a pi""\xA4""onera",
+ "Bellota",
+ "Nuez",
+ "Fogofrutas brillantes",
+ "Fogofrutas",
+ "Fogofrutas",
+ "Fogofrutas",
+ "Fogofrutas",
+ "Fogofrutas",
+ "Pescado",
+ "Espina de pescado",
+ "Pierna de Cordero",
+ "Hueso",
+ "Manzana",
+ "Coraz""\xA2""n de Manzana",
+ "Ar""\xA0""ndanos",
+ "Champi""\xA4\xA2""n",
+ "Nota",
+ "Canica",
+ "Serrucho",
+ "Cruz de vida",
+ "Pluma",
+ "Huevo",
+ "Hoja",
+ "Tr""\x82""bol",
+ "Estrella Ca""\xA1""da",
+ "Bola de cristal",
+ "L""\xA0""grima",
+ "Espejo",
+ "Trozo de hielo",
+ "Flauta",
+ "Reloj de arena",
+ "Llave de hierro",
+ "Llave de jade",
+ "Llave de obsidiana",
+ "Poci""\xA2""n roja",
+ "Poci""\xA2""n roja",
+ "Poci""\xA2""n azul",
+ "Poci""\xA2""n azul",
+ "Poci""\xA2""n amarilla",
+ "Poci""\xA2""n amarilla",
+ "Poci""\xA2""n verde",
+ "Poci""\xA2""n naranja",
+ "Poci""\xA2""n morada",
+ "Poci""\xA2""n Arco Iris",
+ "Agua fresca",
+ "Agua fresca",
+ "Agua salada",
+ "Agua salada",
+ "Agua mineral",
+ "Agua mineral",
+ "Agua m""\xA0""gica",
+ "Agua m""\xA0""gica",
+ "Frasco vac""\xA1""o",
+ "Frasco vac""\xA1""o",
+ "Pergamino",
+ "Pergamino",
+ "Pergamino",
+ "Pergamino",
+ "Pergamino",
+ "Pergamino",
+ "Pergamino",
+ "Pergamino",
+ "Pergamino",
+ "Pergamino",
+ "Pedazo de pergamino",
+ "Pedazo de pergamino",
+ "Pedazo de pergamino",
+ "Pedazo de pergamino",
+ "Pedazo de pergamino",
+ "Piedra m""\xA0""gica roja",
+ "Piedra m""\xA0""gica naranja",
+ "Piedra m""\xA0""gica amarilla",
+ "Piedra m""\xA0""gica verde",
+ "Piedra m""\xA0""gica turquesa",
+ "Piedra m""\xA0""gica azul",
+ "Piedra m""\xA0""gica morada",
+ "Roca pesada",
+ "Corona real",
+ "Cetro real",
+ "Llave de oro",
+ "Objeto desconocido"
+};
+
+static const StringListProvider k1ItemNamesDOSSpanishProvider = { ARRAYSIZE(k1ItemNamesDOSSpanish), k1ItemNamesDOSSpanish };
+
+static const char *const k1TakenStringsDOSSpanish[2] = {
+ " en mano.",
+ " en mano."
+};
+
+static const StringListProvider k1TakenStringsDOSSpanishProvider = { ARRAYSIZE(k1TakenStringsDOSSpanish), k1TakenStringsDOSSpanish };
+
+static const char *const k1PlacedStringsDOSSpanish[1] = {
+ " en reserva."
+};
+
+static const StringListProvider k1PlacedStringsDOSSpanishProvider = { ARRAYSIZE(k1PlacedStringsDOSSpanish), k1PlacedStringsDOSSpanish };
+
+static const char *const k1DroppedStringsDOSSpanish[1] = {
+ " fuera."
+};
+
+static const StringListProvider k1DroppedStringsDOSSpanishProvider = { ARRAYSIZE(k1DroppedStringsDOSSpanish), k1DroppedStringsDOSSpanish };
+
+static const char *const k1NoDropStringsDOSSpanish[2] = {
+ "No puedes dejar m""\xA0""s objetos aqu""\xA1"".",
+ "No puedes colocar eso ah""\xA1""."
+};
+
+static const StringListProvider k1NoDropStringsDOSSpanishProvider = { ARRAYSIZE(k1NoDropStringsDOSSpanish), k1NoDropStringsDOSSpanish };
+
+static const char *const k1PutDownStringDOSSpanish[1] = {
+ "Mejor ser""\xA0"" que deposite esto antes que nada."
+};
+
+static const StringListProvider k1PutDownStringDOSSpanishProvider = { ARRAYSIZE(k1PutDownStringDOSSpanish), k1PutDownStringDOSSpanish };
+
+static const char *const k1WaitAmuletStringDOSSpanish[1] = {
+ "Supongo que tendr""\x82"" que esperar a que mi amuleto recobre su poder."
+};
+
+static const StringListProvider k1WaitAmuletStringDOSSpanishProvider = { ARRAYSIZE(k1WaitAmuletStringDOSSpanish), k1WaitAmuletStringDOSSpanish };
+
+static const char *const k1BlackJewelStringDOSSpanish[1] = {
+ "Es una joya, pero ""\xA8""por qu""\x82"" es negra?"
+};
+
+static const StringListProvider k1BlackJewelStringDOSSpanishProvider = { ARRAYSIZE(k1BlackJewelStringDOSSpanish), k1BlackJewelStringDOSSpanish };
+
+static const char *const k1HealingTipStringDOSSpanish[1] = {
+ "Oye, esto me ser""\xA0"" ""\xA3""til si me hago da""\xA4""o."
+};
+
+static const StringListProvider k1HealingTipStringDOSSpanishProvider = { ARRAYSIZE(k1HealingTipStringDOSSpanish), k1HealingTipStringDOSSpanish };
+
+static const char *const k1PoisonGoneStringDOSSpanish[2] = {
+ "\xAD""Genial!",
+ "\xAD""Han desaparecido los efectos del veneno!"
+};
+
+static const StringListProvider k1PoisonGoneStringDOSSpanishProvider = { ARRAYSIZE(k1PoisonGoneStringDOSSpanish), k1PoisonGoneStringDOSSpanish };
+
+static const char *const k1ThePoisonStringsDOSSpanish[4] = {
+ "El veneno...",
+ "No puedo respirar...",
+ "No me siento bien...",
+ "\xAD""Esa serpiente debe ser\rvenenosa!"
+};
+
+static const StringListProvider k1ThePoisonStringsDOSSpanishProvider = { ARRAYSIZE(k1ThePoisonStringsDOSSpanish), k1ThePoisonStringsDOSSpanish };
+
+static const char *const k1FluteStringsDOSSpanish[2] = {
+ "No es un sonido muy impresionante que digamos.",
+ "\xAD""Fijo que la ""\xA3""ltima nota era alta!"
+};
+
+static const StringListProvider k1FluteStringsDOSSpanishProvider = { ARRAYSIZE(k1FluteStringsDOSSpanish), k1FluteStringsDOSSpanish };
+
+static const char *const k1WispJewelStringsDOSSpanish[3] = {
+ "No me siento con fuerzas para hacerlo ahora mismo.",
+ "Deber""\xA1""a poner en el suelo mi ",
+ ", lo primero."
+};
+
+static const StringListProvider k1WispJewelStringsDOSSpanishProvider = { ARRAYSIZE(k1WispJewelStringsDOSSpanish), k1WispJewelStringsDOSSpanish };
+
+static const char *const k1MagicJewelStringsDOSSpanish[1] = {
+ "Eso sienta raro."
+};
+
+static const StringListProvider k1MagicJewelStringsDOSSpanishProvider = { ARRAYSIZE(k1MagicJewelStringsDOSSpanish), k1MagicJewelStringsDOSSpanish };
+
+static const char *const k1FlaskFullStringDOSSpanish[1] = {
+ "Este frasco ya est""\xA0"" lleno."
+};
+
+static const StringListProvider k1FlaskFullStringDOSSpanishProvider = { ARRAYSIZE(k1FlaskFullStringDOSSpanish), k1FlaskFullStringDOSSpanish };
+
+static const char *const k1FullFlaskStringDOSSpanish[4] = {
+ "Ahora el frasco est""\xA0"" lleno\rde agua fresca y espumosa.",
+ "Ahora el frasco est""\xA0"" lleno\rde agua salada.",
+ "Ahora el frasco est""\xA0"" lleno\rde agua mineral.",
+ "Agua m""\xA0""gica."
+};
+
+static const StringListProvider k1FullFlaskStringDOSSpanishProvider = { ARRAYSIZE(k1FullFlaskStringDOSSpanish), k1FullFlaskStringDOSSpanish };
+
+static const char *const k1OutroHomeStringDOSSpanish[1] = {
+ "Casa"
+};
+
+static const StringListProvider k1OutroHomeStringDOSSpanishProvider = { ARRAYSIZE(k1OutroHomeStringDOSSpanish), k1OutroHomeStringDOSSpanish };
+
+static const char *const k1VeryCleverStringDOSSpanish[1] = {
+ "\xAD""Muy listo!, pero tus in""\xA3""tiles esfuerzos son en vano."
+};
+
+static const StringListProvider k1VeryCleverStringDOSSpanishProvider = { ARRAYSIZE(k1VeryCleverStringDOSSpanish), k1VeryCleverStringDOSSpanish };
+
+static const char *const k1GUIStringsDOSSpanish[24] = {
+ "The Legend of Kyrandia",
+ "Cargar un juego",
+ "Salvar este juego",
+ "Controles de juego",
+ "Abandonar el juego",
+ "Reanudar el juego",
+ "Controles de juego",
+ "\xA8""Qu""\x82"" juego deseas recargar?",
+ "Seleccionar una posici""\xA2""n para salvar:",
+ "[ RANURA VACIA ]",
+ "Abandonar",
+ "Introduce una descripci""\xA2""n de tu juego salvado.",
+ "Salvar",
+ "Descansa en paz, Brandon.",
+ "\xA8""Est""\xA0""s seguro de que deseas Abandonar el juego?",
+ "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXMen""\xA3"" principal",
+ "activado",
+ "desactivado",
+ "S""\xA1",
+ "No",
+ "0""\x0F""R+:""\x0F""R+@""\x0F""R+G""\x0F""R+N""\x0F""R+Y""\x0F""R+c""\x0F""R+j""\x0F""R+q""\x0F""R+Velocidad al paso",
+ "Velocidad de texto",
+ "La m""\xA3""sica en ",
+ "Los sonidos en "
+};
+
+static const StringListProvider k1GUIStringsDOSSpanishProvider = { ARRAYSIZE(k1GUIStringsDOSSpanish), k1GUIStringsDOSSpanish };
+
+static const char *const k1NewGameStringDOSSpanish[1] = {
+ "[ INICIAR UN JUEGO NUEVO ]"
+};
+
+static const StringListProvider k1NewGameStringDOSSpanishProvider = { ARRAYSIZE(k1NewGameStringDOSSpanish), k1NewGameStringDOSSpanish };
+
+static const char *const k1ConfigStringsDOSSpanish[9] = {
+ "muy lento",
+ "lento",
+ "normal",
+ "r""\xA0""pido",
+ "muy r""\xA0""pido",
+ "muy lento",
+ "normal",
+ "r""\xA0""pido",
+ "pulsable"
+};
+
+static const StringListProvider k1ConfigStringsDOSSpanishProvider = { ARRAYSIZE(k1ConfigStringsDOSSpanish), k1ConfigStringsDOSSpanish };
+
diff --git a/devtools/create_kyradat/resources/lok_fmtowns.h b/devtools/create_kyradat/resources/lok_fmtowns.h
new file mode 100644
index 0000000000..7491f45a67
--- /dev/null
+++ b/devtools/create_kyradat/resources/lok_fmtowns.h
@@ -0,0 +1,11637 @@
+static const byte k1KallakWritingSeqFMTowns[2039] = {
+ 0x00, 0x00, 0x01, 0x0E, 0x1A, 0x1B, 0x17, 0x00,
+ 0x00, 0x00, 0x3F, 0x01, 0xC7, 0x0C, 0x00, 0x0C,
+ 0x00, 0x19, 0x39, 0x02, 0x00, 0x00, 0x00, 0x00,
+ 0x10, 0x05, 0x00, 0x95, 0x00, 0x20, 0x09, 0x14,
+ 0x0F, 0x2E, 0x02, 0x00, 0x01, 0x00, 0x00, 0x10,
+ 0x05, 0x01, 0x94, 0x00, 0x1B, 0x07, 0x06, 0x00,
+ 0x18, 0x1D, 0x02, 0x00, 0x02, 0x00, 0x00, 0x10,
+ 0x05, 0x02, 0x93, 0x00, 0x14, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x03, 0x00, 0x00, 0x10, 0x05, 0x01,
+ 0x90, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x04, 0x00, 0x00, 0x10, 0x05, 0x00, 0x8D, 0x00,
+ 0x20, 0x07, 0x06, 0x00, 0x18, 0x1D, 0x02, 0x00,
+ 0x05, 0x00, 0x00, 0x10, 0x05, 0x01, 0x8A, 0x00,
+ 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00, 0x06, 0x00,
+ 0x00, 0x10, 0x05, 0x02, 0x88, 0x00, 0x14, 0x07,
+ 0x06, 0x00, 0x18, 0x1D, 0x02, 0x00, 0x07, 0x00,
+ 0x00, 0x10, 0x05, 0x01, 0x85, 0x00, 0x1B, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00, 0x10,
+ 0x05, 0x00, 0x82, 0x00, 0x20, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x09, 0x00, 0x00, 0x10, 0x05, 0x01,
+ 0x7F, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x0A, 0x00, 0x00, 0x10, 0x05, 0x02, 0x7C, 0x00,
+ 0x14, 0x07, 0x06, 0x00, 0x18, 0x1D, 0x02, 0x00,
+ 0x0B, 0x00, 0x00, 0x10, 0x05, 0x01, 0x79, 0x00,
+ 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00, 0x0C, 0x00,
+ 0x00, 0x10, 0x05, 0x00, 0x76, 0x00, 0x20, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x0D, 0x00, 0x00, 0x10,
+ 0x05, 0x01, 0x73, 0x00, 0x1B, 0x07, 0x06, 0x00,
+ 0x18, 0x1D, 0x02, 0x00, 0x0E, 0x00, 0x00, 0x10,
+ 0x05, 0x02, 0x70, 0x00, 0x14, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x0F, 0x00, 0x00, 0x10, 0x05, 0x01,
+ 0x6D, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x10, 0x00, 0x00, 0x10, 0x05, 0x00, 0x6A, 0x00,
+ 0x20, 0x07, 0x06, 0x00, 0x02, 0x00, 0x11, 0x00,
+ 0x00, 0x10, 0x05, 0x01, 0x67, 0x00, 0x1B, 0x07,
+ 0x06, 0x00, 0x18, 0x1D, 0x02, 0x00, 0x12, 0x00,
+ 0x00, 0x10, 0x05, 0x02, 0x65, 0x00, 0x14, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x13, 0x00, 0x00, 0x10,
+ 0x05, 0x01, 0x63, 0x00, 0x1B, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x14, 0x00, 0x00, 0x10, 0x05, 0x00,
+ 0x63, 0x00, 0x20, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x15, 0x00, 0x00, 0x10, 0x05, 0x00, 0x65, 0x00,
+ 0x1F, 0x07, 0x06, 0x00, 0x02, 0x00, 0x16, 0x00,
+ 0x00, 0x10, 0x05, 0x00, 0x6A, 0x00, 0x1D, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x17, 0x00, 0x00, 0x10,
+ 0x05, 0x00, 0x70, 0x00, 0x19, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x18, 0x00, 0x00, 0x10, 0x05, 0x00,
+ 0x76, 0x00, 0x17, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x19, 0x00, 0x00, 0x10, 0x05, 0x00, 0x7C, 0x00,
+ 0x16, 0x07, 0x06, 0x00, 0x02, 0x00, 0x1A, 0x00,
+ 0x00, 0x10, 0x05, 0x00, 0x82, 0x00, 0x17, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x1B, 0x00, 0x00, 0x10,
+ 0x05, 0x00, 0x88, 0x00, 0x19, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x1C, 0x00, 0x00, 0x10, 0x05, 0x00,
+ 0x8D, 0x00, 0x1D, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x1D, 0x00, 0x00, 0x10, 0x05, 0x00, 0x93, 0x00,
+ 0x1F, 0x07, 0x06, 0x00, 0x1C, 0x1B, 0x0F, 0x2F,
+ 0x02, 0x00, 0x01, 0x00, 0x00, 0x10, 0x05, 0x01,
+ 0x94, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x01, 0x00, 0x00, 0x10, 0x05, 0x01, 0x94, 0x00,
+ 0x1B, 0x07, 0x06, 0x00, 0x18, 0x1D, 0x02, 0x00,
+ 0x02, 0x00, 0x00, 0x10, 0x05, 0x02, 0x93, 0x00,
+ 0x14, 0x07, 0x06, 0x00, 0x02, 0x00, 0x02, 0x00,
+ 0x00, 0x10, 0x05, 0x02, 0x93, 0x00, 0x14, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x03, 0x00, 0x00, 0x10,
+ 0x05, 0x01, 0x90, 0x00, 0x1B, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x04, 0x00, 0x00, 0x10, 0x05, 0x00,
+ 0x8D, 0x00, 0x20, 0x07, 0x06, 0x00, 0x18, 0x1D,
+ 0x02, 0x00, 0x05, 0x00, 0x00, 0x10, 0x05, 0x01,
+ 0x8A, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x05, 0x00, 0x00, 0x10, 0x05, 0x01, 0x8A, 0x00,
+ 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00, 0x06, 0x00,
+ 0x00, 0x10, 0x05, 0x02, 0x88, 0x00, 0x14, 0x07,
+ 0x06, 0x00, 0x18, 0x1D, 0x02, 0x00, 0x07, 0x00,
+ 0x00, 0x10, 0x05, 0x01, 0x85, 0x00, 0x1B, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00, 0x10,
+ 0x05, 0x00, 0x82, 0x00, 0x20, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x09, 0x00, 0x00, 0x10, 0x05, 0x01,
+ 0x7F, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x0A, 0x00, 0x00, 0x10, 0x05, 0x02, 0x7C, 0x00,
+ 0x14, 0x07, 0x06, 0x00, 0x18, 0x1D, 0x02, 0x00,
+ 0x0B, 0x00, 0x00, 0x10, 0x05, 0x01, 0x79, 0x00,
+ 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00, 0x0C, 0x00,
+ 0x00, 0x10, 0x05, 0x00, 0x76, 0x00, 0x20, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x0D, 0x00, 0x00, 0x10,
+ 0x05, 0x01, 0x73, 0x00, 0x1B, 0x07, 0x06, 0x00,
+ 0x18, 0x1D, 0x02, 0x00, 0x0E, 0x00, 0x00, 0x10,
+ 0x05, 0x02, 0x70, 0x00, 0x14, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x0F, 0x00, 0x00, 0x10, 0x05, 0x01,
+ 0x6D, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x10, 0x00, 0x00, 0x10, 0x05, 0x00, 0x6A, 0x00,
+ 0x20, 0x07, 0x06, 0x00, 0x02, 0x00, 0x11, 0x00,
+ 0x00, 0x10, 0x05, 0x01, 0x67, 0x00, 0x1B, 0x07,
+ 0x06, 0x00, 0x18, 0x1D, 0x02, 0x00, 0x12, 0x00,
+ 0x00, 0x10, 0x05, 0x02, 0x65, 0x00, 0x14, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x13, 0x00, 0x00, 0x10,
+ 0x05, 0x01, 0x63, 0x00, 0x1B, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x14, 0x00, 0x00, 0x10, 0x05, 0x00,
+ 0x63, 0x00, 0x20, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x15, 0x00, 0x00, 0x10, 0x05, 0x00, 0x65, 0x00,
+ 0x1F, 0x07, 0x06, 0x00, 0x02, 0x00, 0x16, 0x00,
+ 0x00, 0x10, 0x05, 0x00, 0x6A, 0x00, 0x1D, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x17, 0x00, 0x00, 0x10,
+ 0x05, 0x00, 0x70, 0x00, 0x19, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x18, 0x00, 0x00, 0x10, 0x05, 0x00,
+ 0x76, 0x00, 0x17, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x19, 0x00, 0x00, 0x10, 0x05, 0x00, 0x7C, 0x00,
+ 0x16, 0x07, 0x06, 0x00, 0x02, 0x00, 0x1A, 0x00,
+ 0x00, 0x10, 0x05, 0x00, 0x82, 0x00, 0x17, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x1B, 0x00, 0x00, 0x10,
+ 0x05, 0x00, 0x88, 0x00, 0x19, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x1C, 0x00, 0x00, 0x10, 0x05, 0x00,
+ 0x8D, 0x00, 0x1D, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x1D, 0x00, 0x00, 0x10, 0x05, 0x00, 0x93, 0x00,
+ 0x1F, 0x07, 0x06, 0x00, 0x1C, 0x1B, 0x0F, 0x30,
+ 0x02, 0x00, 0x01, 0x00, 0x00, 0x10, 0x05, 0x01,
+ 0x94, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x01, 0x00, 0x00, 0x10, 0x05, 0x01, 0x94, 0x00,
+ 0x1B, 0x07, 0x06, 0x00, 0x18, 0x1D, 0x02, 0x00,
+ 0x02, 0x00, 0x00, 0x10, 0x05, 0x02, 0x93, 0x00,
+ 0x14, 0x07, 0x06, 0x00, 0x02, 0x00, 0x02, 0x00,
+ 0x00, 0x10, 0x05, 0x02, 0x93, 0x00, 0x14, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x10,
+ 0x05, 0x02, 0x93, 0x00, 0x14, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x03, 0x00, 0x00, 0x10, 0x05, 0x01,
+ 0x90, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x03, 0x00, 0x00, 0x10, 0x05, 0x01, 0x90, 0x00,
+ 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00, 0x04, 0x00,
+ 0x00, 0x10, 0x05, 0x00, 0x8D, 0x00, 0x20, 0x07,
+ 0x06, 0x00, 0x18, 0x1D, 0x02, 0x00, 0x05, 0x00,
+ 0x00, 0x10, 0x05, 0x01, 0x8A, 0x00, 0x1B, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x06, 0x00, 0x00, 0x10,
+ 0x05, 0x02, 0x88, 0x00, 0x14, 0x07, 0x06, 0x00,
+ 0x18, 0x1D, 0x02, 0x00, 0x07, 0x00, 0x00, 0x10,
+ 0x05, 0x01, 0x85, 0x00, 0x1B, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x08, 0x00, 0x00, 0x10, 0x05, 0x00,
+ 0x82, 0x00, 0x20, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x09, 0x00, 0x00, 0x10, 0x05, 0x01, 0x7F, 0x00,
+ 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00, 0x0A, 0x00,
+ 0x00, 0x10, 0x05, 0x02, 0x7C, 0x00, 0x14, 0x07,
+ 0x06, 0x00, 0x18, 0x1D, 0x02, 0x00, 0x0B, 0x00,
+ 0x00, 0x10, 0x05, 0x01, 0x79, 0x00, 0x1B, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x0C, 0x00, 0x00, 0x10,
+ 0x05, 0x00, 0x76, 0x00, 0x20, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x0D, 0x00, 0x00, 0x10, 0x05, 0x01,
+ 0x73, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x18, 0x1D,
+ 0x02, 0x00, 0x0E, 0x00, 0x00, 0x10, 0x05, 0x02,
+ 0x70, 0x00, 0x14, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x0F, 0x00, 0x00, 0x10, 0x05, 0x01, 0x6D, 0x00,
+ 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00, 0x10, 0x00,
+ 0x00, 0x10, 0x05, 0x00, 0x6A, 0x00, 0x20, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x11, 0x00, 0x00, 0x10,
+ 0x05, 0x01, 0x67, 0x00, 0x1B, 0x07, 0x06, 0x00,
+ 0x18, 0x1D, 0x02, 0x00, 0x12, 0x00, 0x00, 0x10,
+ 0x05, 0x02, 0x65, 0x00, 0x14, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x13, 0x00, 0x00, 0x10, 0x05, 0x01,
+ 0x63, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x14, 0x00, 0x00, 0x10, 0x05, 0x00, 0x63, 0x00,
+ 0x20, 0x07, 0x06, 0x00, 0x02, 0x00, 0x15, 0x00,
+ 0x00, 0x10, 0x05, 0x00, 0x65, 0x00, 0x1F, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x16, 0x00, 0x00, 0x10,
+ 0x05, 0x00, 0x6A, 0x00, 0x1D, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x17, 0x00, 0x00, 0x10, 0x05, 0x00,
+ 0x70, 0x00, 0x19, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x18, 0x00, 0x00, 0x10, 0x05, 0x00, 0x76, 0x00,
+ 0x17, 0x07, 0x06, 0x00, 0x02, 0x00, 0x19, 0x00,
+ 0x00, 0x10, 0x05, 0x00, 0x7C, 0x00, 0x16, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x1A, 0x00, 0x00, 0x10,
+ 0x05, 0x00, 0x82, 0x00, 0x17, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x1B, 0x00, 0x00, 0x10, 0x05, 0x00,
+ 0x88, 0x00, 0x19, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x1C, 0x00, 0x00, 0x10, 0x05, 0x00, 0x8D, 0x00,
+ 0x1D, 0x07, 0x06, 0x00, 0x02, 0x00, 0x1D, 0x00,
+ 0x00, 0x10, 0x05, 0x00, 0x93, 0x00, 0x1F, 0x07,
+ 0x06, 0x00, 0x1C, 0x06, 0x3C, 0x00, 0x1B, 0x0F,
+ 0x31, 0x02, 0x00, 0x00, 0x00, 0x00, 0x10, 0x05,
+ 0x00, 0x95, 0x00, 0x20, 0x07, 0x06, 0x00, 0x02,
+ 0x00, 0x00, 0x00, 0x00, 0x10, 0x05, 0x00, 0x95,
+ 0x00, 0x20, 0x07, 0x06, 0x00, 0x18, 0x1D, 0x02,
+ 0x00, 0x01, 0x00, 0x00, 0x10, 0x05, 0x01, 0x94,
+ 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00, 0x01,
+ 0x00, 0x00, 0x10, 0x05, 0x01, 0x94, 0x00, 0x1B,
+ 0x07, 0x06, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00,
+ 0x10, 0x05, 0x02, 0x93, 0x00, 0x14, 0x07, 0x06,
+ 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x10, 0x05,
+ 0x02, 0x93, 0x00, 0x14, 0x07, 0x06, 0x00, 0x18,
+ 0x1D, 0x02, 0x00, 0x03, 0x00, 0x00, 0x10, 0x05,
+ 0x01, 0x90, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02,
+ 0x00, 0x04, 0x00, 0x00, 0x10, 0x05, 0x00, 0x8D,
+ 0x00, 0x20, 0x07, 0x06, 0x00, 0x02, 0x00, 0x05,
+ 0x00, 0x00, 0x10, 0x05, 0x01, 0x8A, 0x00, 0x1B,
+ 0x07, 0x06, 0x00, 0x18, 0x1D, 0x02, 0x00, 0x06,
+ 0x00, 0x00, 0x10, 0x05, 0x02, 0x88, 0x00, 0x14,
+ 0x07, 0x06, 0x00, 0x02, 0x00, 0x07, 0x00, 0x00,
+ 0x10, 0x05, 0x01, 0x85, 0x00, 0x1B, 0x07, 0x06,
+ 0x00, 0x18, 0x1D, 0x02, 0x00, 0x08, 0x00, 0x00,
+ 0x10, 0x05, 0x00, 0x82, 0x00, 0x20, 0x07, 0x06,
+ 0x00, 0x02, 0x00, 0x09, 0x00, 0x00, 0x10, 0x05,
+ 0x01, 0x7F, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02,
+ 0x00, 0x0A, 0x00, 0x00, 0x10, 0x05, 0x02, 0x7C,
+ 0x00, 0x14, 0x07, 0x06, 0x00, 0x18, 0x1D, 0x02,
+ 0x00, 0x0B, 0x00, 0x00, 0x10, 0x05, 0x01, 0x79,
+ 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00, 0x0C,
+ 0x00, 0x00, 0x10, 0x05, 0x00, 0x76, 0x00, 0x20,
+ 0x07, 0x06, 0x00, 0x18, 0x1D, 0x02, 0x00, 0x0D,
+ 0x00, 0x00, 0x10, 0x05, 0x01, 0x73, 0x00, 0x1B,
+ 0x07, 0x06, 0x00, 0x02, 0x00, 0x0E, 0x00, 0x00,
+ 0x10, 0x05, 0x02, 0x70, 0x00, 0x14, 0x07, 0x06,
+ 0x00, 0x02, 0x00, 0x0F, 0x00, 0x00, 0x10, 0x05,
+ 0x01, 0x6D, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x18,
+ 0x1D, 0x02, 0x00, 0x10, 0x00, 0x00, 0x10, 0x05,
+ 0x00, 0x6A, 0x00, 0x20, 0x07, 0x06, 0x00, 0x02,
+ 0x00, 0x11, 0x00, 0x00, 0x10, 0x05, 0x01, 0x67,
+ 0x00, 0x1B, 0x07, 0x06, 0x00, 0x18, 0x1D, 0x02,
+ 0x00, 0x12, 0x00, 0x00, 0x10, 0x05, 0x02, 0x65,
+ 0x00, 0x14, 0x07, 0x06, 0x00, 0x06, 0x3C, 0x00,
+ 0x02, 0x00, 0x1E, 0x00, 0x00, 0x10, 0x08, 0x12,
+ 0x06, 0x1E, 0x00, 0x0A, 0x01, 0x02, 0x00, 0x1F,
+ 0x00, 0x00, 0x10, 0x07, 0x0A, 0x00, 0x02, 0x00,
+ 0x20, 0x00, 0x00, 0x10, 0x07, 0x0A, 0x00, 0x02,
+ 0x00, 0x21, 0x00, 0x00, 0x10, 0x07, 0x0A, 0x00,
+ 0x02, 0x00, 0x22, 0x00, 0x00, 0x10, 0x07, 0x0A,
+ 0x00, 0x0B, 0x01, 0x02, 0x00, 0x18, 0x1F, 0x06,
+ 0x0A, 0x00, 0x02, 0x00, 0x23, 0x00, 0x00, 0x10,
+ 0x07, 0x14, 0x00, 0x18, 0x1E, 0x02, 0x00, 0x24,
+ 0x00, 0x00, 0x10, 0x07, 0x14, 0x00, 0x02, 0x00,
+ 0x25, 0x00, 0x00, 0x10, 0x07, 0x14, 0x00, 0x18,
+ 0x1F, 0x02, 0x00, 0x26, 0x00, 0x00, 0x10, 0x07,
+ 0x14, 0x00, 0x02, 0x00, 0x27, 0x00, 0x00, 0x10,
+ 0x07, 0x14, 0x00, 0x18, 0x1E, 0x02, 0x00, 0x28,
+ 0x00, 0x00, 0x10, 0x08, 0x06, 0x3C, 0x00, 0x18,
+ 0x1E, 0x03, 0x00, 0x07, 0x06, 0x00, 0x18, 0x1E,
+ 0x03, 0x00, 0x07, 0x06, 0x00, 0x03, 0x00, 0x07,
+ 0x06, 0x00, 0x03, 0x00, 0x07, 0x06, 0x00, 0x03,
+ 0x00, 0x07, 0x06, 0x00, 0x03, 0x00, 0x07, 0x06,
+ 0x00, 0x03, 0x00, 0x07, 0x06, 0x00, 0x18, 0x1E,
+ 0x03, 0x00, 0x07, 0x06, 0x00, 0x03, 0x00, 0x07,
+ 0x06, 0x00, 0x03, 0x00, 0x07, 0x06, 0x00, 0x03,
+ 0x00, 0x07, 0x06, 0x00, 0x03, 0x00, 0x07, 0x06,
+ 0x00, 0x03, 0x00, 0x07, 0x06, 0x00, 0x03, 0x00,
+ 0x07, 0x06, 0x00, 0x03, 0x00, 0x07, 0x06, 0x00,
+ 0x03, 0x00, 0x07, 0x06, 0x00, 0x18, 0x1E, 0x03,
+ 0x00, 0x07, 0x06, 0x00, 0x03, 0x00, 0x07, 0x06,
+ 0x00, 0x03, 0x00, 0x07, 0x06, 0x00, 0x03, 0x00,
+ 0x07, 0x06, 0x00, 0x03, 0x00, 0x07, 0x06, 0x00,
+ 0x03, 0x00, 0x07, 0x06, 0x00, 0x03, 0x00, 0x07,
+ 0x06, 0x00, 0x03, 0x00, 0x07, 0x06, 0x00, 0x18,
+ 0x1E, 0x03, 0x00, 0x07, 0x06, 0x00, 0x03, 0x00,
+ 0x07, 0x06, 0x00, 0x03, 0x00, 0x07, 0x06, 0x00,
+ 0x03, 0x00, 0x07, 0x06, 0x00, 0x03, 0x00, 0x07,
+ 0x06, 0x00, 0x03, 0x00, 0x07, 0x06, 0x00, 0x03,
+ 0x00, 0x07, 0x06, 0x00, 0x03, 0x00, 0x07, 0x06,
+ 0x00, 0x03, 0x00, 0x07, 0x06, 0x00, 0x03, 0x00,
+ 0x07, 0x06, 0x00, 0x13, 0x1C, 0x19, 0x01, 0x0E,
+ 0x06, 0x3C, 0x00, 0x13, 0x01, 0x00, 0x1D
+};
+
+static const ByteProvider k1KallakWritingSeqFMTownsProvider = { ARRAYSIZE(k1KallakWritingSeqFMTowns), k1KallakWritingSeqFMTowns };
+
+static const byte k1MalcolmTreeSeqFMTowns[536] = {
+ 0x00, 0x01, 0x00, 0x1A, 0x0E, 0x17, 0x00, 0x00,
+ 0x00, 0x3F, 0x01, 0xC7, 0x0C, 0x00, 0x0C, 0x01,
+ 0x0D, 0x01, 0x09, 0x02, 0x01, 0x00, 0x00, 0x00,
+ 0x10, 0x19, 0x38, 0x09, 0x18, 0x1E, 0x14, 0x18,
+ 0x1F, 0x0A, 0x00, 0x03, 0x01, 0x06, 0x06, 0x00,
+ 0x0B, 0x00, 0x1F, 0x00, 0x18, 0x19, 0x0A, 0x01,
+ 0x03, 0x01, 0x06, 0x06, 0x00, 0x0B, 0x01, 0x0F,
+ 0x00, 0x18, 0x26, 0x10, 0x1F, 0x50, 0x00, 0x2D,
+ 0x05, 0x0A, 0x02, 0x03, 0x01, 0x06, 0x06, 0x00,
+ 0x0B, 0x02, 0x10, 0x00, 0x11, 0x18, 0x1F, 0x03,
+ 0x01, 0x06, 0x06, 0x00, 0x03, 0x01, 0x06, 0x06,
+ 0x00, 0x03, 0x01, 0x06, 0x06, 0x00, 0x18, 0x24,
+ 0x18, 0x1F, 0x03, 0x01, 0x06, 0x06, 0x00, 0x18,
+ 0x1E, 0x0A, 0x03, 0x03, 0x01, 0x06, 0x06, 0x00,
+ 0x0B, 0x03, 0x15, 0x00, 0x10, 0x16, 0x50, 0x00,
+ 0x2D, 0x05, 0x18, 0x1F, 0x03, 0x01, 0x06, 0x06,
+ 0x00, 0x03, 0x01, 0x06, 0x06, 0x00, 0x18, 0x1E,
+ 0x03, 0x01, 0x06, 0x06, 0x00, 0x03, 0x01, 0x06,
+ 0x06, 0x00, 0x18, 0x1F, 0x03, 0x01, 0x06, 0x06,
+ 0x00, 0x03, 0x01, 0x06, 0x06, 0x00, 0x03, 0x01,
+ 0x06, 0x06, 0x00, 0x03, 0x01, 0x06, 0x06, 0x00,
+ 0x18, 0x1E, 0x03, 0x01, 0x06, 0x06, 0x00, 0x18,
+ 0x1A, 0x18, 0x1E, 0x0A, 0x05, 0x03, 0x01, 0x06,
+ 0x06, 0x00, 0x0B, 0x05, 0x09, 0x00, 0x11, 0x0A,
+ 0x06, 0x03, 0x01, 0x06, 0x06, 0x00, 0x0B, 0x06,
+ 0x14, 0x00, 0x18, 0x1A, 0x18, 0x1F, 0x10, 0x17,
+ 0x50, 0x00, 0x2D, 0x05, 0x06, 0x3C, 0x00, 0x0A,
+ 0x07, 0x03, 0x01, 0x06, 0x06, 0x00, 0x0B, 0x07,
+ 0x06, 0x00, 0x18, 0x1E, 0x06, 0x1E, 0x00, 0x10,
+ 0x18, 0x50, 0x00, 0x2D, 0x05, 0x03, 0x01, 0x06,
+ 0x06, 0x00, 0x03, 0x01, 0x06, 0x06, 0x00, 0x03,
+ 0x01, 0x06, 0x06, 0x00, 0x0A, 0x08, 0x04, 0x01,
+ 0x06, 0x06, 0x00, 0x04, 0x01, 0x06, 0x06, 0x00,
+ 0x03, 0x01, 0x06, 0x06, 0x00, 0x03, 0x01, 0x06,
+ 0x06, 0x00, 0x0B, 0x08, 0x01, 0x00, 0x03, 0x01,
+ 0x06, 0x06, 0x00, 0x06, 0x78, 0x00, 0x0A, 0x09,
+ 0x03, 0x01, 0x06, 0x06, 0x00, 0x0B, 0x09, 0x04,
+ 0x00, 0x18, 0x1B, 0x0A, 0x0A, 0x03, 0x01, 0x06,
+ 0x06, 0x00, 0x0B, 0x0A, 0x09, 0x00, 0x06, 0x14,
+ 0x00, 0x10, 0x19, 0x50, 0x00, 0x2D, 0x05, 0x03,
+ 0x01, 0x06, 0x06, 0x00, 0x03, 0x01, 0x06, 0x06,
+ 0x00, 0x0A, 0x0B, 0x03, 0x01, 0x06, 0x06, 0x00,
+ 0x04, 0x01, 0x06, 0x06, 0x00, 0x04, 0x01, 0x06,
+ 0x06, 0x00, 0x03, 0x01, 0x06, 0x06, 0x00, 0x03,
+ 0x01, 0x06, 0x06, 0x00, 0x0B, 0x0B, 0x01, 0x00,
+ 0x03, 0x01, 0x06, 0x06, 0x00, 0x03, 0x01, 0x06,
+ 0x06, 0x00, 0x03, 0x01, 0x06, 0x06, 0x00, 0x10,
+ 0x1A, 0x50, 0x00, 0x2D, 0x05, 0x0A, 0x0C, 0x03,
+ 0x01, 0x06, 0x06, 0x00, 0x0B, 0x0C, 0x12, 0x00,
+ 0x03, 0x01, 0x01, 0x01, 0x11, 0x15, 0x00, 0x02,
+ 0x00, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00,
+ 0x10, 0x10, 0x1C, 0x50, 0x00, 0x2D, 0x05, 0x06,
+ 0x3C, 0x00, 0x03, 0x02, 0x03, 0x02, 0x06, 0x06,
+ 0x00, 0x11, 0x18, 0x1C, 0x0A, 0x0F, 0x03, 0x02,
+ 0x06, 0x06, 0x00, 0x0B, 0x0F, 0x0D, 0x00, 0x10,
+ 0x1D, 0x50, 0x00, 0x2D, 0x05, 0x0A, 0x10, 0x03,
+ 0x02, 0x06, 0x06, 0x00, 0x03, 0x02, 0x06, 0x06,
+ 0x00, 0x03, 0x02, 0x06, 0x06, 0x00, 0x04, 0x02,
+ 0x06, 0x06, 0x00, 0x04, 0x02, 0x06, 0x06, 0x00,
+ 0x04, 0x02, 0x06, 0x06, 0x00, 0x0B, 0x10, 0x02,
+ 0x00, 0x10, 0x1E, 0x50, 0x00, 0x2D, 0x05, 0x0A,
+ 0x11, 0x03, 0x02, 0x06, 0x06, 0x00, 0x03, 0x02,
+ 0x06, 0x06, 0x00, 0x03, 0x02, 0x06, 0x06, 0x00,
+ 0x04, 0x02, 0x06, 0x06, 0x00, 0x04, 0x02, 0x06,
+ 0x06, 0x00, 0x04, 0x02, 0x06, 0x06, 0x00, 0x0B,
+ 0x11, 0x02, 0x00, 0x06, 0xB4, 0x00, 0x13, 0x19,
+ 0x01, 0x0E, 0x01, 0x01, 0x13, 0x01, 0x02, 0x1D
+};
+
+static const ByteProvider k1MalcolmTreeSeqFMTownsProvider = { ARRAYSIZE(k1MalcolmTreeSeqFMTowns), k1MalcolmTreeSeqFMTowns };
+
+static const byte k1WestwoodLogoSeqFMTowns[75] = {
+ 0x00, 0x03, 0x01, 0x1A, 0x02, 0x03, 0x00, 0x00,
+ 0x00, 0x00, 0x16, 0x01, 0x06, 0x06, 0x00, 0x06,
+ 0x3C, 0x00, 0x18, 0x14, 0x0A, 0x00, 0x03, 0x03,
+ 0x16, 0x01, 0x0B, 0x00, 0x08, 0x00, 0x06, 0x3C,
+ 0x00, 0x18, 0x27, 0x0A, 0x01, 0x03, 0x03, 0x16,
+ 0x01, 0x0B, 0x01, 0x0B, 0x00, 0x06, 0x78, 0x00,
+ 0x18, 0x14, 0x02, 0x03, 0x0A, 0x00, 0x00, 0x00,
+ 0x16, 0x01, 0x06, 0x06, 0x00, 0x0A, 0x02, 0x04,
+ 0x03, 0x16, 0x01, 0x0B, 0x02, 0x09, 0x00, 0x13,
+ 0x01, 0x03, 0x1D
+};
+
+static const ByteProvider k1WestwoodLogoSeqFMTownsProvider = { ARRAYSIZE(k1WestwoodLogoSeqFMTowns), k1WestwoodLogoSeqFMTowns };
+
+static const byte k1KyrandiaLogoSeqFMTowns[92] = {
+ 0x15, 0x00, 0x02, 0x00, 0x06, 0x01, 0x1A, 0x02,
+ 0x06, 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x06,
+ 0x06, 0x00, 0x18, 0x14, 0x16, 0x04, 0x0A, 0x00,
+ 0x03, 0x06, 0x16, 0x00, 0x0B, 0x00, 0x0B, 0x00,
+ 0x06, 0x3C, 0x00, 0x18, 0x27, 0x0A, 0x01, 0x03,
+ 0x06, 0x16, 0x00, 0x0B, 0x01, 0x0F, 0x00, 0x06,
+ 0x3C, 0x00, 0x18, 0x27, 0x0A, 0x02, 0x04, 0x06,
+ 0x16, 0x00, 0x0B, 0x02, 0x0F, 0x00, 0x02, 0x06,
+ 0x0D, 0x00, 0x00, 0x00, 0x16, 0x00, 0x06, 0x06,
+ 0x00, 0x06, 0x78, 0x00, 0x18, 0x14, 0x0A, 0x02,
+ 0x04, 0x06, 0x16, 0x00, 0x0B, 0x02, 0x0C, 0x00,
+ 0x13, 0x01, 0x06, 0x1D
+};
+
+static const ByteProvider k1KyrandiaLogoSeqFMTownsProvider = { ARRAYSIZE(k1KyrandiaLogoSeqFMTowns), k1KyrandiaLogoSeqFMTowns };
+
+static const byte k1KallakMalcolmSeqFMTowns[621] = {
+ 0x00, 0x04, 0x01, 0x1A, 0x0E, 0x17, 0x00, 0x00,
+ 0x00, 0x3F, 0x01, 0xC7, 0x0C, 0x00, 0x0C, 0x03,
+ 0x0D, 0x00, 0x17, 0x00, 0x00, 0x88, 0x3F, 0x01,
+ 0xC7, 0x0C, 0x02, 0x19, 0x00, 0x02, 0x04, 0x00,
+ 0x10, 0x00, 0x3A, 0x09, 0x19, 0x00, 0x19, 0x3A,
+ 0x14, 0x18, 0x23, 0x0A, 0x00, 0x03, 0x04, 0x07,
+ 0x07, 0x00, 0x0B, 0x00, 0x22, 0x00, 0x10, 0x02,
+ 0x50, 0x00, 0x3A, 0x05, 0x0A, 0x01, 0x03, 0x04,
+ 0x07, 0x07, 0x00, 0x0B, 0x01, 0x07, 0x00, 0x06,
+ 0x3C, 0x00, 0x10, 0x03, 0x50, 0x00, 0x3A, 0x05,
+ 0x0A, 0x02, 0x03, 0x04, 0x07, 0x07, 0x00, 0x0B,
+ 0x02, 0x17, 0x00, 0x06, 0x3C, 0x00, 0x10, 0x04,
+ 0x50, 0x00, 0x3A, 0x05, 0x0A, 0x03, 0x03, 0x04,
+ 0x07, 0x07, 0x00, 0x0B, 0x03, 0x0A, 0x00, 0x06,
+ 0x3C, 0x00, 0x03, 0x04, 0x07, 0x07, 0x00, 0x03,
+ 0x04, 0x07, 0x07, 0x00, 0x03, 0x04, 0x07, 0x07,
+ 0x00, 0x10, 0x05, 0xF0, 0x00, 0x3A, 0x0F, 0x03,
+ 0x04, 0x07, 0x07, 0x00, 0x03, 0x04, 0x07, 0x07,
+ 0x00, 0x03, 0x04, 0x07, 0x07, 0x00, 0x03, 0x04,
+ 0x07, 0x07, 0x00, 0x06, 0x3C, 0x00, 0x10, 0x06,
+ 0xF0, 0x00, 0x3A, 0x0F, 0x0A, 0x04, 0x03, 0x04,
+ 0x07, 0x07, 0x00, 0x0B, 0x04, 0x12, 0x00, 0x06,
+ 0x3C, 0x00, 0x03, 0x04, 0x07, 0x07, 0x00, 0x03,
+ 0x04, 0x07, 0x07, 0x00, 0x03, 0x04, 0x07, 0x07,
+ 0x00, 0x03, 0x04, 0x07, 0x07, 0x00, 0x06, 0x78,
+ 0x00, 0x10, 0x07, 0xF0, 0x00, 0x3A, 0x0F, 0x0A,
+ 0x05, 0x03, 0x04, 0x07, 0x07, 0x00, 0x0B, 0x05,
+ 0x11, 0x00, 0x06, 0x3C, 0x00, 0x03, 0x04, 0x07,
+ 0x07, 0x00, 0x03, 0x04, 0x07, 0x07, 0x00, 0x10,
+ 0x08, 0x50, 0x00, 0x3A, 0x05, 0x0A, 0x06, 0x03,
+ 0x04, 0x07, 0x07, 0x00, 0x0B, 0x06, 0x07, 0x00,
+ 0x06, 0x3C, 0x00, 0x03, 0x04, 0x07, 0x07, 0x00,
+ 0x03, 0x04, 0x07, 0x07, 0x00, 0x03, 0x04, 0x07,
+ 0x07, 0x00, 0x10, 0x09, 0x50, 0x00, 0x3A, 0x05,
+ 0x0A, 0x07, 0x03, 0x04, 0x07, 0x07, 0x00, 0x0B,
+ 0x07, 0x0A, 0x00, 0x06, 0x3C, 0x00, 0x03, 0x04,
+ 0x07, 0x07, 0x00, 0x10, 0x0A, 0x50, 0x00, 0x3A,
+ 0x05, 0x0A, 0x08, 0x03, 0x04, 0x07, 0x07, 0x00,
+ 0x0B, 0x08, 0x10, 0x00, 0x06, 0x3C, 0x00, 0x03,
+ 0x04, 0x07, 0x07, 0x00, 0x10, 0x0B, 0xF0, 0x00,
+ 0x3A, 0x0F, 0x03, 0x04, 0x07, 0x07, 0x00, 0x03,
+ 0x04, 0x07, 0x07, 0x00, 0x03, 0x04, 0x07, 0x07,
+ 0x00, 0x03, 0x04, 0x07, 0x07, 0x00, 0x03, 0x04,
+ 0x07, 0x07, 0x00, 0x03, 0x04, 0x07, 0x07, 0x00,
+ 0x03, 0x04, 0x07, 0x07, 0x00, 0x03, 0x04, 0x07,
+ 0x07, 0x00, 0x06, 0x3C, 0x00, 0x03, 0x04, 0x07,
+ 0x07, 0x00, 0x10, 0x0C, 0xF0, 0x00, 0x3A, 0x0F,
+ 0x0A, 0x09, 0x03, 0x04, 0x07, 0x07, 0x00, 0x0B,
+ 0x09, 0x0E, 0x00, 0x06, 0x3C, 0x00, 0x03, 0x04,
+ 0x07, 0x07, 0x00, 0x03, 0x04, 0x07, 0x07, 0x00,
+ 0x03, 0x04, 0x07, 0x07, 0x00, 0x03, 0x04, 0x07,
+ 0x07, 0x00, 0x03, 0x04, 0x07, 0x07, 0x00, 0x03,
+ 0x04, 0x07, 0x07, 0x00, 0x10, 0x0D, 0x50, 0x00,
+ 0x3A, 0x05, 0x0A, 0x0A, 0x03, 0x04, 0x07, 0x07,
+ 0x00, 0x0B, 0x0A, 0x0E, 0x00, 0x06, 0x3C, 0x00,
+ 0x0A, 0x0B, 0x03, 0x04, 0x07, 0x07, 0x00, 0x0B,
+ 0x0B, 0x02, 0x00, 0x18, 0x20, 0x0A, 0x0C, 0x03,
+ 0x04, 0x07, 0x07, 0x00, 0x0B, 0x0C, 0x06, 0x00,
+ 0x18, 0x21, 0x0A, 0x0D, 0x03, 0x04, 0x07, 0x07,
+ 0x00, 0x0B, 0x0D, 0x0C, 0x00, 0x18, 0x22, 0x0A,
+ 0x0E, 0x03, 0x04, 0x07, 0x07, 0x00, 0x0B, 0x0E,
+ 0x0B, 0x00, 0x10, 0x0E, 0x50, 0x00, 0x3A, 0x05,
+ 0x0A, 0x0F, 0x03, 0x04, 0x07, 0x07, 0x00, 0x0B,
+ 0x0F, 0x09, 0x00, 0x06, 0x3C, 0x00, 0x03, 0x04,
+ 0x07, 0x07, 0x00, 0x10, 0x0F, 0x50, 0x00, 0x3A,
+ 0x05, 0x0A, 0x10, 0x03, 0x04, 0x07, 0x07, 0x00,
+ 0x0B, 0x10, 0x09, 0x00, 0x06, 0x3C, 0x00, 0x03,
+ 0x04, 0x07, 0x07, 0x00, 0x10, 0x10, 0x50, 0x00,
+ 0x3A, 0x05, 0x0A, 0x11, 0x03, 0x04, 0x07, 0x07,
+ 0x00, 0x0B, 0x11, 0x0F, 0x00, 0x06, 0x3C, 0x00,
+ 0x03, 0x04, 0x07, 0x07, 0x00, 0x10, 0x11, 0x50,
+ 0x00, 0x3A, 0x05, 0x0A, 0x12, 0x03, 0x04, 0x07,
+ 0x07, 0x00, 0x0B, 0x12, 0x14, 0x00, 0x06, 0x3C,
+ 0x00, 0x0A, 0x13, 0x03, 0x04, 0x07, 0x07, 0x00,
+ 0x0B, 0x13, 0x06, 0x00, 0x18, 0x23, 0x0A, 0x13,
+ 0x03, 0x04, 0x07, 0x07, 0x00, 0x0B, 0x13, 0x07,
+ 0x00, 0x11, 0x06, 0x3C, 0x00, 0x13, 0x19, 0x01,
+ 0x0E, 0x13, 0x01, 0x04, 0x1D
+};
+
+static const ByteProvider k1KallakMalcolmSeqFMTownsProvider = { ARRAYSIZE(k1KallakMalcolmSeqFMTowns), k1KallakMalcolmSeqFMTowns };
+
+static const byte k1ForestSeqFMTowns[406] = {
+ 0x00, 0x05, 0x01, 0x00, 0x07, 0x01, 0x1A, 0x02,
+ 0x07, 0x00, 0x00, 0x00, 0x08, 0x02, 0x05, 0x00,
+ 0x98, 0x00, 0x38, 0x0A, 0x00, 0x03, 0x07, 0x16,
+ 0x02, 0x06, 0x09, 0x00, 0x0B, 0x00, 0x41, 0x00,
+ 0x18, 0x16, 0x03, 0x07, 0x02, 0x05, 0x01, 0x98,
+ 0x00, 0x38, 0x16, 0x02, 0x16, 0x03, 0x06, 0x09,
+ 0x00, 0x03, 0x07, 0x02, 0x05, 0x03, 0x98, 0x00,
+ 0x38, 0x16, 0x02, 0x16, 0x03, 0x06, 0x09, 0x00,
+ 0x03, 0x07, 0x02, 0x05, 0x01, 0x98, 0x00, 0x38,
+ 0x16, 0x02, 0x16, 0x03, 0x06, 0x09, 0x00, 0x03,
+ 0x07, 0x02, 0x05, 0x00, 0x98, 0x00, 0x38, 0x16,
+ 0x02, 0x16, 0x03, 0x06, 0x09, 0x00, 0x0A, 0x05,
+ 0x03, 0x07, 0x16, 0x02, 0x06, 0x09, 0x00, 0x0B,
+ 0x05, 0x0E, 0x00, 0x18, 0x16, 0x03, 0x07, 0x02,
+ 0x05, 0x01, 0x98, 0x00, 0x38, 0x16, 0x02, 0x16,
+ 0x03, 0x06, 0x09, 0x00, 0x03, 0x07, 0x02, 0x05,
+ 0x03, 0x98, 0x00, 0x38, 0x16, 0x02, 0x16, 0x03,
+ 0x06, 0x09, 0x00, 0x03, 0x07, 0x02, 0x05, 0x01,
+ 0x98, 0x00, 0x38, 0x16, 0x02, 0x16, 0x03, 0x06,
+ 0x09, 0x00, 0x03, 0x07, 0x02, 0x05, 0x04, 0x98,
+ 0x00, 0x38, 0x16, 0x02, 0x16, 0x03, 0x06, 0x09,
+ 0x00, 0x03, 0x07, 0x16, 0x02, 0x06, 0x09, 0x00,
+ 0x03, 0x07, 0x16, 0x02, 0x06, 0x09, 0x00, 0x03,
+ 0x07, 0x02, 0x05, 0x05, 0x98, 0x00, 0x38, 0x16,
+ 0x02, 0x16, 0x03, 0x06, 0x09, 0x00, 0x03, 0x07,
+ 0x16, 0x02, 0x06, 0x09, 0x00, 0x03, 0x07, 0x16,
+ 0x02, 0x06, 0x09, 0x00, 0x03, 0x07, 0x02, 0x05,
+ 0x06, 0x98, 0x00, 0x38, 0x16, 0x02, 0x16, 0x03,
+ 0x06, 0x09, 0x00, 0x03, 0x07, 0x16, 0x02, 0x06,
+ 0x09, 0x00, 0x03, 0x07, 0x16, 0x02, 0x06, 0x09,
+ 0x00, 0x18, 0x25, 0x0A, 0x00, 0x03, 0x07, 0x03,
+ 0x05, 0x16, 0x02, 0x16, 0x03, 0x06, 0x09, 0x00,
+ 0x0B, 0x00, 0x09, 0x00, 0x0A, 0x06, 0x03, 0x07,
+ 0x16, 0x02, 0x06, 0x09, 0x00, 0x0B, 0x06, 0x0E,
+ 0x00, 0x18, 0x17, 0x0A, 0x01, 0x03, 0x07, 0x03,
+ 0x05, 0x16, 0x02, 0x16, 0x03, 0x06, 0x09, 0x00,
+ 0x0B, 0x01, 0x0D, 0x00, 0x18, 0x25, 0x0A, 0x07,
+ 0x03, 0x07, 0x16, 0x02, 0x06, 0x09, 0x00, 0x0B,
+ 0x07, 0x0E, 0x00, 0x18, 0x18, 0x03, 0x07, 0x03,
+ 0x05, 0x16, 0x02, 0x16, 0x03, 0x06, 0x09, 0x00,
+ 0x03, 0x07, 0x03, 0x05, 0x16, 0x02, 0x16, 0x03,
+ 0x06, 0x09, 0x00, 0x03, 0x07, 0x03, 0x05, 0x16,
+ 0x02, 0x16, 0x03, 0x06, 0x09, 0x00, 0x03, 0x07,
+ 0x03, 0x05, 0x16, 0x02, 0x16, 0x03, 0x06, 0x09,
+ 0x00, 0x03, 0x07, 0x03, 0x05, 0x16, 0x02, 0x16,
+ 0x03, 0x06, 0x09, 0x00, 0x06, 0x12, 0x00, 0x18,
+ 0x25, 0x0A, 0x02, 0x03, 0x07, 0x03, 0x05, 0x16,
+ 0x02, 0x16, 0x03, 0x06, 0x09, 0x00, 0x0B, 0x02,
+ 0x07, 0x00, 0x0A, 0x03, 0x03, 0x07, 0x16, 0x02,
+ 0x06, 0x09, 0x00, 0x0B, 0x03, 0x0F, 0x00, 0x13,
+ 0x13, 0x01, 0x07, 0x01, 0x05, 0x1D
+};
+
+static const ByteProvider k1ForestSeqFMTownsProvider = { ARRAYSIZE(k1ForestSeqFMTowns), k1ForestSeqFMTowns };
+
+static const char *const k1IntroCPSStringsFMTowns[2] = {
+ "gemcut.cps",
+ "tree.cps"
+};
+
+static const StringListProvider k1IntroCPSStringsFMTownsProvider = { ARRAYSIZE(k1IntroCPSStringsFMTowns), k1IntroCPSStringsFMTowns };
+
+static const char *const k1IntroCOLStringsFMTowns[4] = {
+ "kallak.col",
+ "tree_exp.col",
+ "ww.col",
+ "mal-kal.col"
+};
+
+static const StringListProvider k1IntroCOLStringsFMTownsProvider = { ARRAYSIZE(k1IntroCOLStringsFMTowns), k1IntroCOLStringsFMTowns };
+
+static const char *const k1IntroWSAStringsFMTowns[11] = {
+ "kallak.wsa",
+ "tree1.wsa",
+ "tree2.wsa",
+ "westwood.wsa",
+ "mal-kal.wsa",
+ "destruct.wsa",
+ "kyrandia.wsa",
+ "shore.wsa",
+ "reunion.wsa",
+ "reuniont.wsa",
+ "latern.wsa"
+};
+
+static const StringListProvider k1IntroWSAStringsFMTownsProvider = { ARRAYSIZE(k1IntroWSAStringsFMTowns), k1IntroWSAStringsFMTowns };
+
+static const Room k1RoomListFMTowns[246] = {
+ { 30, 0xFFFF, 0xFFFF, 0x0001, 0xFFFF },
+ { 71, 0xFFFF, 0xFFFF, 0x0005, 0xFFFF },
+ { 44, 0xFFFF, 0x0003, 0xFFFF, 0xFFFF },
+ { 72, 0xFFFF, 0xFFFF, 0x000E, 0xFFFF },
+ { 48, 0xFFFF, 0x0005, 0xFFFF, 0x000E },
+ { 74, 0xFFFF, 0x000A, 0xFFFF, 0x0004 },
+ { 46, 0xFFFF, 0x000F, 0xFFFF, 0x000B },
+ { 75, 0xFFFF, 0x0009, 0xFFFF, 0x0018 },
+ { 13, 0xFFFF, 0x000C, 0xFFFF, 0x000A },
+ { 5, 0x000D, 0xFFFF, 0xFFFF, 0x0007 },
+ { 84, 0xFFFF, 0x0008, 0xFFFF, 0x0005 },
+ { 37, 0xFFFF, 0x0006, 0x000C, 0x0010 },
+ { 51, 0x000B, 0xFFFF, 0x000D, 0x0008 },
+ { 23, 0x000C, 0xFFFF, 0x0009, 0xFFFF },
+ { 25, 0x0003, 0x0004, 0xFFFF, 0xFFFF },
+ { 11, 0xFFFF, 0xFFFF, 0xFFFF, 0x0006 },
+ { 86, 0xFFFF, 0x000B, 0xFFFF, 0xFFFF },
+ { 84, 0xFFFF, 0x0022, 0x0017, 0x0016 },
+ { 51, 0x0020, 0x0014, 0x0024, 0x0015 },
+ { 85, 0x0014, 0x0019, 0xFFFF, 0x0024 },
+ { 33, 0x001C, 0xFFFF, 0x0013, 0x0012 },
+ { 31, 0x0022, 0x0012, 0xFFFF, 0x0017 },
+ { 25, 0x001F, 0x0011, 0xFFFF, 0xFFFF },
+ { 25, 0x0011, 0x0015, 0xFFFF, 0xFFFF },
+ { 2, 0xFFFF, 0x0007, 0xFFFF, 0x001A },
+ { 82, 0xFFFF, 0x006D, 0xFFFF, 0x0013 },
+ { 77, 0xFFFF, 0x0018, 0x0021, 0xFFFF },
+ { 15, 0xFFFF, 0x001A, 0xFFFF, 0xFFFF },
+ { 16, 0xFFFF, 0xFFFF, 0x0014, 0x0020 },
+ { 19, 0xFFFF, 0x0021, 0xFFFF, 0x001F },
+ { 12, 0xFFFF, 0xFFFF, 0x0020, 0x0021 },
+ { 7, 0x0023, 0x001D, 0x0016, 0xFFFF },
+ { 20, 0x001E, 0x001C, 0x0012, 0x0022 },
+ { 17, 0x001A, 0x001E, 0x0022, 0x001D },
+ { 22, 0x0021, 0x0020, 0x0015, 0x0011 },
+ { 24, 0xFFFF, 0xFFFF, 0x001F, 0xFFFF },
+ { 32, 0x0012, 0x0013, 0xFFFF, 0xFFFF },
+ { 87, 0xFFFF, 0x0026, 0xFFFF, 0xFFFF },
+ { 8, 0xFFFF, 0x0027, 0xFFFF, 0x0025 },
+ { 88, 0xFFFF, 0x0035, 0x0037, 0x0026 },
+ { 35, 0xFFFF, 0x0036, 0x0038, 0xFFFF },
+ { 47, 0xFFFF, 0xFFFF, 0x003B, 0xFFFF },
+ { 28, 0x0035, 0x002B, 0x002F, 0x0037 },
+ { 36, 0xFFFF, 0x002C, 0xFFFF, 0x002A },
+ { 78, 0xFFFF, 0xFFFF, 0xFFFF, 0x002B },
+ { 10, 0xFFFF, 0xFFFF, 0xFFFF, 0x002C },
+ { 51, 0x0037, 0x002F, 0x0040, 0x003C },
+ { 38, 0x002A, 0x003D, 0x0041, 0x002E },
+ { 81, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 41, 0xFFFF, 0xFFFF, 0x0069, 0xFFFF },
+ { 50, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 18, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 49, 0xFFFF, 0xFFFF, 0x0054, 0xFFFF },
+ { 105, 0xFFFF, 0xFFFF, 0x002A, 0x0027 },
+ { 105, 0xFFFF, 0xFFFF, 0x0039, 0x0028 },
+ { 37, 0x0027, 0x002A, 0x002E, 0x0049 },
+ { 34, 0x0028, 0x0039, 0xFFFF, 0xFFFF },
+ { 51, 0x0036, 0x003A, 0xFFFF, 0x0038 },
+ { 84, 0xFFFF, 0x003B, 0xFFFF, 0x0039 },
+ { 1, 0x0029, 0xFFFF, 0x003E, 0x003A },
+ { 37, 0x0049, 0x002E, 0x003F, 0xFFFF },
+ { 33, 0xFFFF, 0xFFFF, 0xFFFF, 0x002F },
+ { 34, 0x003B, 0x003F, 0xFFFF, 0xFFFF },
+ { 85, 0x003C, 0x0040, 0xFFFF, 0x003E },
+ { 106, 0x002E, 0x0041, 0xFFFF, 0x003F },
+ { 33, 0x002F, 0xFFFF, 0xFFFF, 0x0040 },
+ { 60, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 11, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 33, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 26, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 0, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 25, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 23, 0xFFFF, 0x0037, 0x003C, 0xFFFF },
+ { 6, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 51, 0x0063, 0x0067, 0x006B, 0x0066 },
+ { 66, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 67, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 62, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 65, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 18, 0x0056, 0x005A, 0x005E, 0xFFFF },
+ { 6, 0xFFFF, 0x0052, 0x0056, 0xFFFF },
+ { 4, 0xFFFF, 0x0053, 0x0057, 0x0051 },
+ { 3, 0xFFFF, 0x0054, 0xFFFF, 0x0052 },
+ { 37, 0x0034, 0x0055, 0x0058, 0x0053 },
+ { 11, 0xFFFF, 0xFFFF, 0x0059, 0x0054 },
+ { 37, 0x0051, 0x0057, 0x0050, 0xFFFF },
+ { 51, 0x0052, 0xFFFF, 0x005A, 0x0056 },
+ { 51, 0x0054, 0x0059, 0x005C, 0xFFFF },
+ { 1, 0x0055, 0xFFFF, 0x005D, 0x0058 },
+ { 106, 0x0057, 0x005B, 0xFFFF, 0x0050 },
+ { 85, 0xFFFF, 0x005C, 0xFFFF, 0x005A },
+ { 37, 0x0058, 0x005D, 0x005F, 0x005B },
+ { 33, 0x0059, 0xFFFF, 0xFFFF, 0x005C },
+ { 51, 0x0050, 0xFFFF, 0x0061, 0xFFFF },
+ { 51, 0x005C, 0xFFFF, 0x0064, 0xFFFF },
+ { 37, 0xFFFF, 0x0061, 0x0065, 0xFFFF },
+ { 51, 0x005E, 0x0062, 0xFFFF, 0x0060 },
+ { 84, 0xFFFF, 0x0063, 0x0066, 0x0061 },
+ { 84, 0xFFFF, 0x0064, 0x004B, 0x0062 },
+ { 33, 0x005F, 0xFFFF, 0x0067, 0x0063 },
+ { 51, 0x0060, 0xFFFF, 0x0068, 0xFFFF },
+ { 37, 0x0062, 0x004B, 0x006A, 0xFFFF },
+ { 1, 0x0064, 0xFFFF, 0x006C, 0x004B },
+ { 34, 0x0065, 0x0069, 0xFFFF, 0xFFFF },
+ { 51, 0x0031, 0x006A, 0xFFFF, 0x0068 },
+ { 85, 0x0066, 0x006B, 0xFFFF, 0x0069 },
+ { 106, 0x004B, 0x006C, 0xFFFF, 0x006A },
+ { 33, 0x0067, 0xFFFF, 0xFFFF, 0x006B },
+ { 55, 0x00C4, 0x00C5, 0xFFFF, 0x0019 },
+ { 52, 0xFFFF, 0x00C1, 0xFFFF, 0x0096 },
+ { 64, 0xFFFF, 0x00BF, 0xFFFF, 0x008C },
+ { 57, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 54, 0x00AF, 0xFFFF, 0x00B7, 0x00AC },
+ { 53, 0x0078, 0xFFFF, 0x0079, 0xFFFF },
+ { 29, 0xFFFF, 0x00BB, 0xFFFF, 0x00C5 },
+ { 69, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 76, 0x00C6, 0xFFFF, 0xFFFF, 0x00B1 },
+ { 59, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 58, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 59, 0xFFFF, 0x0025, 0x0072, 0xFFFF },
+ { 58, 0x0072, 0x007B, 0x00BB, 0xFFFF },
+ { 58, 0xFFFF, 0x007F, 0x007B, 0xFFFF },
+ { 59, 0x007A, 0xFFFF, 0x007C, 0x0079 },
+ { 58, 0x007B, 0x0081, 0x00BC, 0xFFFF },
+ { 58, 0x00BC, 0x0083, 0xFFFF, 0xFFFF },
+ { 58, 0xFFFF, 0x0085, 0x007F, 0xFFFF },
+ { 59, 0x007E, 0x0086, 0x0080, 0x007A },
+ { 58, 0x007F, 0x00BD, 0x0081, 0xFFFF },
+ { 59, 0x0080, 0x0087, 0x0082, 0x007C },
+ { 58, 0x0081, 0xFFFF, 0x0083, 0x00BC },
+ { 59, 0x0082, 0x0089, 0x0084, 0x007D },
+ { 58, 0x0083, 0x008A, 0xFFFF, 0xFFFF },
+ { 59, 0xFFFF, 0x008B, 0x0086, 0x007E },
+ { 58, 0x0085, 0x008C, 0x00BD, 0x007F },
+ { 58, 0x00BD, 0x008E, 0x0088, 0x0081 },
+ { 59, 0x0087, 0xFFFF, 0x0089, 0xFFFF },
+ { 58, 0x0088, 0x0090, 0x008A, 0x0083 },
+ { 59, 0x0089, 0x0091, 0xFFFF, 0x0084 },
+ { 58, 0xFFFF, 0x0092, 0x008C, 0x0085 },
+ { 59, 0x008B, 0x006F, 0x008D, 0x0086 },
+ { 58, 0x008C, 0x0093, 0x008E, 0x00BD },
+ { 59, 0x008D, 0xFFFF, 0xFFFF, 0x0087 },
+ { 58, 0xFFFF, 0x00BE, 0x0090, 0xFFFF },
+ { 59, 0x008F, 0x0095, 0x0091, 0x0089 },
+ { 58, 0x0090, 0x0096, 0xFFFF, 0x008A },
+ { 59, 0xFFFF, 0x0098, 0xFFFF, 0x008B },
+ { 59, 0xFFFF, 0xFFFF, 0xFFFF, 0x008D },
+ { 58, 0xFFFF, 0x009A, 0x00BE, 0xFFFF },
+ { 58, 0x00BE, 0xFFFF, 0x0096, 0x0090 },
+ { 59, 0x0095, 0x006E, 0x0097, 0x0091 },
+ { 58, 0x0096, 0x009D, 0xFFFF, 0xFFFF },
+ { 58, 0xFFFF, 0x009E, 0x00BF, 0x0092 },
+ { 58, 0x00BF, 0x00A0, 0x009A, 0xFFFF },
+ { 59, 0x0099, 0xFFFF, 0x009B, 0x0094 },
+ { 58, 0x009A, 0xFFFF, 0x009C, 0xFFFF },
+ { 59, 0x009B, 0x00A2, 0xFFFF, 0xFFFF },
+ { 59, 0xFFFF, 0x00A3, 0xFFFF, 0x0097 },
+ { 59, 0xFFFF, 0xFFFF, 0x009F, 0x0098 },
+ { 58, 0x009E, 0x00A4, 0x00A0, 0x00BF },
+ { 59, 0x009F, 0x00A5, 0xFFFF, 0x0099 },
+ { 58, 0xFFFF, 0x00A6, 0x00C0, 0xFFFF },
+ { 58, 0x00C0, 0x00A8, 0xFFFF, 0x009C },
+ { 58, 0x00C1, 0xFFFF, 0xFFFF, 0x009D },
+ { 59, 0xFFFF, 0x00AA, 0x00A5, 0x009F },
+ { 58, 0x00A4, 0x00AB, 0x00A6, 0x00A0 },
+ { 59, 0x00A5, 0x00AC, 0x00A7, 0x00A1 },
+ { 58, 0x00A6, 0xFFFF, 0xFFFF, 0x00C0 },
+ { 59, 0xFFFF, 0x00AD, 0x00A9, 0x00A2 },
+ { 58, 0x00A8, 0x00AE, 0xFFFF, 0x00C1 },
+ { 58, 0xFFFF, 0xFFFF, 0x00AB, 0x00A4 },
+ { 59, 0x00AA, 0x00AF, 0x00AC, 0x00A5 },
+ { 58, 0x00AB, 0x0071, 0x00C2, 0x00A6 },
+ { 58, 0xFFFF, 0x00B0, 0x00AE, 0x00A8 },
+ { 59, 0x00AD, 0xFFFF, 0xFFFF, 0x00A9 },
+ { 58, 0xFFFF, 0x00C3, 0x0071, 0x00AB },
+ { 59, 0xFFFF, 0xFFFF, 0x00B1, 0x00AD },
+ { 58, 0x00B0, 0x0075, 0xFFFF, 0xFFFF },
+ { 59, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 59, 0x00C3, 0xFFFF, 0x00B4, 0xFFFF },
+ { 59, 0x00B3, 0x00BA, 0xFFFF, 0xFFFF },
+ { 58, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 59, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 58, 0x0071, 0xFFFF, 0xFFFF, 0x00C2 },
+ { 58, 0xFFFF, 0xFFFF, 0x00B9, 0xFFFF },
+ { 59, 0x00B8, 0xFFFF, 0xFFFF, 0x00C3 },
+ { 58, 0xFFFF, 0xFFFF, 0xFFFF, 0x00B4 },
+ { 59, 0x0079, 0xFFFF, 0xFFFF, 0x0073 },
+ { 59, 0x007C, 0x0082, 0x007D, 0xFFFF },
+ { 59, 0x0086, 0x008D, 0x0087, 0x0080 },
+ { 59, 0x0094, 0xFFFF, 0x0095, 0x008F },
+ { 59, 0x0098, 0x009F, 0x0099, 0x006F },
+ { 59, 0x00A1, 0x00A7, 0x00A2, 0xFFFF },
+ { 59, 0xFFFF, 0x00A9, 0x00A3, 0x006E },
+ { 59, 0x00AC, 0x00B7, 0xFFFF, 0xFFFF },
+ { 58, 0xFFFF, 0x00B9, 0x00B3, 0x00AF },
+ { 59, 0xFFFF, 0xFFFF, 0x006D, 0xFFFF },
+ { 58, 0xFFFF, 0x0073, 0xFFFF, 0x006D },
+ { 59, 0xFFFF, 0xFFFF, 0x0075, 0xFFFF },
+ { 94, 0xFFFF, 0x00C8, 0xFFFF, 0xFFFF },
+ { 43, 0x00C9, 0x00CB, 0x00CA, 0x00C7 },
+ { 51, 0xFFFF, 0xFFFF, 0x00C8, 0xFFFF },
+ { 37, 0x00C8, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 79, 0xFFFF, 0xFFFF, 0xFFFF, 0x00C8 },
+ { 80, 0xFFFF, 0xFFFF, 0x00CB, 0x00CD },
+ { 97, 0x00E3, 0x00D4, 0x00CC, 0x00D3 },
+ { 103, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 100, 0xFFFF, 0x00CE, 0x00D5, 0xFFFF },
+ { 98, 0xFFFF, 0xFFFF, 0xFFFF, 0x00D7 },
+ { 101, 0xFFFF, 0x00D2, 0x00CE, 0xFFFF },
+ { 99, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 93, 0x00D5, 0x00CD, 0xFFFF, 0xFFFF },
+ { 93, 0x00D6, 0xFFFF, 0xFFFF, 0x00CD },
+ { 93, 0x00CF, 0x00CE, 0x00D3, 0xFFFF },
+ { 93, 0x00D7, 0xFFFF, 0x00D4, 0x00CE },
+ { 93, 0xFFFF, 0x00D0, 0x00D6, 0x00CE },
+ { 93, 0x00DA, 0x00E3, 0xFFFF, 0xFFFF },
+ { 93, 0x00DB, 0xFFFF, 0xFFFF, 0x00E3 },
+ { 93, 0xFFFF, 0x00E4, 0x00D8, 0x00E2 },
+ { 93, 0xFFFF, 0x00E1, 0x00D9, 0x00E4 },
+ { 93, 0xFFFF, 0x00E4, 0xFFFF, 0x00DF },
+ { 93, 0xFFFF, 0x00E0, 0xFFFF, 0x00E4 },
+ { 93, 0xFFFF, 0xFFFF, 0x00E4, 0xFFFF },
+ { 91, 0xFFFF, 0x00DC, 0xFFFF, 0xFFFF },
+ { 90, 0xFFFF, 0xFFFF, 0xFFFF, 0x00DD },
+ { 92, 0xFFFF, 0xFFFF, 0xFFFF, 0x00DB },
+ { 95, 0xFFFF, 0x00DA, 0xFFFF, 0xFFFF },
+ { 96, 0xFFFF, 0x00D9, 0x00CD, 0x00D8 },
+ { 89, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 102, 0xFFFF, 0x00E6, 0xFFFF, 0xFFFF },
+ { 102, 0xFFFF, 0x00EA, 0x00E8, 0x00E5 },
+ { 102, 0xFFFF, 0x00E8, 0x00EB, 0xFFFF },
+ { 102, 0x00E6, 0xFFFF, 0xFFFF, 0x00E7 },
+ { 102, 0xFFFF, 0xFFFF, 0x00ED, 0xFFFF },
+ { 102, 0xFFFF, 0xFFFF, 0xFFFF, 0x00E6 },
+ { 102, 0x00E7, 0x00EC, 0x00EF, 0xFFFF },
+ { 102, 0xFFFF, 0x00ED, 0x00F0, 0x00EB },
+ { 102, 0x00E9, 0x00EE, 0x00F1, 0x00EC },
+ { 102, 0xFFFF, 0xFFFF, 0x00F2, 0x00ED },
+ { 102, 0x00EB, 0x00F0, 0xFFFF, 0xFFFF },
+ { 102, 0x00EC, 0x00F1, 0x00F3, 0x00EF },
+ { 102, 0x00ED, 0xFFFF, 0x00F4, 0x00F0 },
+ { 102, 0x00EE, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 102, 0x00F0, 0x00F4, 0xFFFF, 0xFFFF },
+ { 102, 0x00F1, 0x00F5, 0xFFFF, 0x00F3 },
+ { 102, 0xFFFF, 0xFFFF, 0x00CF, 0x00F4 }
+};
+
+static const RoomProvider k1RoomListFMTownsProvider = { ARRAYSIZE(k1RoomListFMTowns), k1RoomListFMTowns };
+
+static const char *const k1RoomFilenamesFMTowns[107] = {
+ "CLIFFB",
+ "XEDGEB",
+ "CAVEB",
+ "NCLIFF",
+ "NCLIFFB",
+ "CAVE",
+ "NWCLIFF",
+ "OAKS",
+ "PLATEAU",
+ "POTHUT",
+ "POTION",
+ "NWCLIFB",
+ "SONG",
+ "SORROW",
+ "SPELHUT",
+ "SPELL",
+ "SPRING",
+ "SQUARE",
+ "STUMP",
+ "TEMPLE",
+ "WELL",
+ "WILLOW",
+ "WISE",
+ "XEDGE",
+ "RUBY",
+ "ZROCK",
+ "ZROCKB",
+ "FORESTD",
+ "FOUNTN",
+ "GATECV",
+ "GEMCUT",
+ "CLIFF",
+ "DEAD",
+ "EDGE",
+ "EDGEB",
+ "FALLS",
+ "FORESTC",
+ "FORESTB",
+ "GLADE",
+ "GEMHUT",
+ "ALGAE",
+ "MIX",
+ "BRIDGE",
+ "GRAVE",
+ "HEALER",
+ "HEALHUT",
+ "ALTAR",
+ "BURN",
+ "SICKWIL",
+ "LAGOON",
+ "MAPLE",
+ "FORESTA",
+ "ARCH",
+ "CHASM",
+ "EMCAV",
+ "ENTER",
+ "FLOWERS",
+ "GEMSLOT",
+ "GEN_CAV",
+ "GENCAVB",
+ "GOLDEN",
+ "GOLDENB",
+ "ICE",
+ "MARKET",
+ "MOONCAV",
+ "MSHCAV",
+ "POOL",
+ "SEASONS",
+ "SHRINE",
+ "TREECAV",
+ "EXTGEM",
+ "GEM",
+ "EXTHEAL",
+ "BASE",
+ "TRUNK",
+ "BROKEN",
+ "LAVA",
+ "EXTSPEL",
+ "EXTPOT",
+ "CASTLE",
+ "CGATE",
+ "LEPHOLE",
+ "DRAGON",
+ "XEDGEC",
+ "FNORTH",
+ "FSOUTH",
+ "FGOWEST",
+ "PLTCAVE",
+ "BONKBG",
+ "BALCONY",
+ "DARMS",
+ "BRINS",
+ "ALCHEMY",
+ "GENHALL",
+ "LANDING",
+ "BELROOM",
+ "UPSTAIR",
+ "DNSTAIR",
+ "KITCHEN",
+ "KYRAGEM",
+ "LIBRARY",
+ "FOYER",
+ "CATACOM",
+ "GRTHALL",
+ "FESTSTH",
+ "FWSTSTH",
+ "FSOUTHB"
+};
+
+static const StringListProvider k1RoomFilenamesFMTownsProvider = { ARRAYSIZE(k1RoomFilenamesFMTowns), k1RoomFilenamesFMTowns };
+
+static const char *const k1CharacterImageFilenamesFMTowns[20] = {
+ "BRANDON.CPS",
+ "DAPHNE.CPS",
+ "MERITH.CPS",
+ "HERMAN.CPS",
+ "SMALL.CPS",
+ "MALCOM.CPS",
+ "DRINK.CPS",
+ "SHRINK.CPS",
+ "HEALBR1.CPS",
+ "HEALBR2.CPS",
+ "SNOW1A.CPS",
+ "SNOW2A.CPS",
+ "BRANWILL.CPS",
+ "FLUTE1.CPS",
+ "FLUTE2.CPS",
+ "POISON1.CPS",
+ "POISON2.CPS",
+ "TELEKIN.CPS",
+ "BRANSTON.CPS",
+ "POISON.CPS"
+};
+
+static const StringListProvider k1CharacterImageFilenamesFMTownsProvider = { ARRAYSIZE(k1CharacterImageFilenamesFMTowns), k1CharacterImageFilenamesFMTowns };
+
+static const Shape k1DefaultShapesFMTowns[166] = {
+ { 0, 0, 0, 3, 48, -12, -48 },
+ { 0, 3, 0, 3, 48, -12, -48 },
+ { 0, 6, 0, 3, 48, -12, -48 },
+ { 0, 9, 0, 3, 48, -12, -48 },
+ { 0, 12, 0, 3, 48, -12, -48 },
+ { 0, 15, 0, 3, 48, -12, -48 },
+ { 0, 18, 0, 3, 48, -12, -48 },
+ { 0, 21, 0, 3, 48, -12, -48 },
+ { 0, 24, 0, 3, 48, -12, -48 },
+ { 0, 27, 0, 3, 48, -12, -48 },
+ { 0, 0, 51, 2, 11, -2, -8 },
+ { 0, 2, 51, 2, 11, -2, -8 },
+ { 0, 4, 51, 2, 11, -2, -8 },
+ { 0, 6, 51, 2, 11, -2, -8 },
+ { 0, 8, 51, 2, 11, -2, -8 },
+ { 0, 10, 51, 2, 11, -2, -8 },
+ { 0, 12, 51, 2, 11, -2, -8 },
+ { 0, 14, 51, 2, 11, -2, -8 },
+ { 0, 16, 51, 2, 11, -2, -8 },
+ { 0, 18, 51, 2, 11, -2, -8 },
+ { 0, 20, 51, 2, 11, -2, -8 },
+ { 0, 22, 51, 2, 11, -2, -8 },
+ { 0, 0, 80, 3, 48, -12, -48 },
+ { 0, 3, 80, 3, 48, -12, -48 },
+ { 0, 6, 80, 3, 48, -12, -48 },
+ { 0, 9, 80, 3, 48, -12, -48 },
+ { 0, 12, 80, 3, 48, -12, -48 },
+ { 0, 15, 80, 3, 48, -12, -48 },
+ { 0, 0, 129, 3, 48, -12, -48 },
+ { 0, 3, 129, 3, 48, -12, -48 },
+ { 0, 6, 129, 3, 48, -12, -48 },
+ { 0, 9, 129, 3, 48, -12, -48 },
+ { 0, 12, 129, 3, 48, -12, -48 },
+ { 0, 15, 129, 3, 48, -12, -48 },
+ { 2, 0, 0, 3, 48, -12, -48 },
+ { 2, 3, 0, 3, 48, -12, -48 },
+ { 2, 6, 0, 3, 48, -12, -48 },
+ { 2, 9, 0, 3, 48, -12, -48 },
+ { 2, 12, 0, 3, 48, -12, -48 },
+ { 2, 15, 0, 3, 48, -12, -48 },
+ { 2, 18, 0, 3, 48, -12, -48 },
+ { 2, 21, 0, 3, 48, -12, -48 },
+ { 2, 24, 0, 3, 48, -12, -48 },
+ { 2, 27, 0, 3, 48, -12, -48 },
+ { 2, 30, 10, 3, 38, -16, -38 },
+ { 2, 27, 48, 4, 40, -8, -40 },
+ { 2, 0, 51, 2, 11, -4, 0 },
+ { 2, 2, 51, 2, 11, -4, 0 },
+ { 2, 4, 51, 2, 11, -4, 0 },
+ { 2, 6, 51, 2, 11, -4, 0 },
+ { 2, 8, 51, 2, 11, -4, 0 },
+ { 2, 10, 51, 2, 11, -4, 0 },
+ { 2, 12, 51, 2, 11, -4, 0 },
+ { 2, 14, 51, 2, 11, -4, 0 },
+ { 2, 16, 51, 2, 11, -4, 0 },
+ { 2, 18, 51, 2, 11, -4, 0 },
+ { 2, 20, 51, 2, 11, -4, 0 },
+ { 2, 22, 51, 2, 11, -4, 0 },
+ { 255, 0, 80, 3, 48, -12, -48 },
+ { 255, 3, 80, 3, 48, -12, -48 },
+ { 255, 6, 80, 3, 48, -12, -48 },
+ { 255, 9, 80, 3, 48, -12, -48 },
+ { 255, 12, 80, 3, 48, -12, -48 },
+ { 255, 15, 80, 3, 48, -12, -48 },
+ { 255, 0, 129, 3, 48, -12, -48 },
+ { 255, 3, 129, 3, 48, -12, -48 },
+ { 255, 6, 129, 3, 48, -12, -48 },
+ { 255, 9, 129, 3, 48, -12, -48 },
+ { 255, 12, 129, 3, 48, -12, -48 },
+ { 255, 15, 129, 3, 48, -12, -48 },
+ { 3, 0, 0, 3, 48, -12, -46 },
+ { 3, 3, 0, 3, 48, -12, -48 },
+ { 3, 6, 0, 3, 48, -12, -48 },
+ { 3, 9, 0, 3, 48, -12, -48 },
+ { 3, 12, 0, 3, 48, -12, -48 },
+ { 3, 15, 0, 3, 48, -12, -48 },
+ { 3, 18, 0, 3, 48, -12, -48 },
+ { 3, 21, 0, 3, 48, -12, -48 },
+ { 3, 24, 0, 3, 48, -12, -48 },
+ { 3, 27, 0, 3, 48, -12, -46 },
+ { 3, 30, 0, 3, 48, -14, -47 },
+ { 3, 39, 199, 1, 1, -12, -48 },
+ { 3, 0, 51, 2, 11, 0, -7 },
+ { 3, 2, 51, 2, 11, 0, -7 },
+ { 3, 4, 51, 2, 11, 0, -7 },
+ { 3, 6, 51, 2, 11, 0, -7 },
+ { 3, 8, 51, 2, 11, 0, -7 },
+ { 3, 10, 51, 2, 11, 0, -7 },
+ { 3, 12, 51, 2, 11, 0, -7 },
+ { 3, 14, 51, 2, 11, 0, -7 },
+ { 3, 16, 51, 2, 11, 0, -7 },
+ { 3, 18, 51, 2, 11, 0, -7 },
+ { 3, 20, 51, 2, 11, 0, -7 },
+ { 3, 22, 51, 2, 11, 0, -7 },
+ { 3, 0, 80, 3, 48, -12, -48 },
+ { 3, 3, 80, 3, 48, -12, -48 },
+ { 3, 6, 80, 3, 48, -12, -48 },
+ { 3, 9, 80, 3, 48, -12, -48 },
+ { 3, 12, 80, 3, 48, -12, -48 },
+ { 3, 15, 80, 3, 48, -12, -48 },
+ { 3, 0, 129, 3, 48, -12, -48 },
+ { 3, 3, 129, 3, 48, -12, -48 },
+ { 3, 6, 129, 3, 48, -12, -48 },
+ { 3, 9, 129, 3, 48, -12, -48 },
+ { 3, 12, 129, 3, 48, -12, -48 },
+ { 3, 15, 129, 3, 48, -12, -48 },
+ { 12, 0, 96, 5, 29, -20, -42 },
+ { 12, 5, 96, 5, 29, -20, -42 },
+ { 12, 10, 96, 5, 29, -20, -42 },
+ { 12, 15, 96, 5, 29, -20, -42 },
+ { 12, 20, 96, 5, 29, -20, -42 },
+ { 12, 25, 96, 5, 29, -20, -42 },
+ { 12, 30, 96, 5, 29, -20, -42 },
+ { 12, 35, 96, 5, 29, -20, -42 },
+ { 12, 0, 125, 5, 29, -20, -42 },
+ { 12, 5, 125, 5, 29, -20, -42 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 }
+};
+
+static const ShapeProvider k1DefaultShapesFMTownsProvider = { ARRAYSIZE(k1DefaultShapesFMTowns), k1DefaultShapesFMTowns };
+
+static const byte k1AmuleteAnimSeqFMTowns[42] = {
+ 0x00, 0x01, 0x02, 0x01, 0x03, 0x04, 0x03, 0x01,
+ 0x02, 0x03, 0x04, 0x05, 0x06, 0x05, 0x04, 0x05,
+ 0x07, 0x08, 0x07, 0x08, 0x09, 0x08, 0x09, 0x07,
+ 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
+ 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15,
+ 0x16, 0xFF
+};
+
+static const ByteProvider k1AmuleteAnimSeqFMTownsProvider = { ARRAYSIZE(k1AmuleteAnimSeqFMTowns), k1AmuleteAnimSeqFMTowns };
+
+static const byte k1SpecialPalette1FMTowns[21] = {
+ 0x36, 0x25, 0x1C, 0x31, 0x21, 0x19, 0x2C, 0x1D,
+ 0x16, 0x27, 0x19, 0x13, 0x22, 0x16, 0x11, 0x1D,
+ 0x12, 0x0D, 0x18, 0x0F, 0x0B
+};
+
+static const ByteProvider k1SpecialPalette1FMTownsProvider = { ARRAYSIZE(k1SpecialPalette1FMTowns), k1SpecialPalette1FMTowns };
+
+static const byte k1SpecialPalette2FMTowns[51] = {
+ 0x03, 0x03, 0x00, 0x37, 0x29, 0x1D, 0x33, 0x25,
+ 0x1A, 0x2D, 0x21, 0x17, 0x2A, 0x1D, 0x13, 0x26,
+ 0x19, 0x11, 0x22, 0x16, 0x0E, 0x1E, 0x12, 0x0C,
+ 0x1A, 0x0F, 0x0A, 0x16, 0x0C, 0x08, 0x12, 0x0A,
+ 0x05, 0x0E, 0x08, 0x05, 0x2D, 0x1E, 0x13, 0x27,
+ 0x19, 0x0F, 0x22, 0x14, 0x0C, 0x1C, 0x11, 0x0A,
+ 0x17, 0x0C, 0x08
+};
+
+static const ByteProvider k1SpecialPalette2FMTownsProvider = { ARRAYSIZE(k1SpecialPalette2FMTowns), k1SpecialPalette2FMTowns };
+
+static const byte k1SpecialPalette3FMTowns[51] = {
+ 0x03, 0x03, 0x00, 0x25, 0x30, 0x1B, 0x24, 0x2C,
+ 0x18, 0x23, 0x29, 0x15, 0x22, 0x25, 0x12, 0x21,
+ 0x22, 0x11, 0x1F, 0x1D, 0x0D, 0x1B, 0x18, 0x0B,
+ 0x18, 0x13, 0x0A, 0x14, 0x0E, 0x08, 0x11, 0x0A,
+ 0x05, 0x0E, 0x08, 0x05, 0x21, 0x22, 0x11, 0x1D,
+ 0x1C, 0x0C, 0x19, 0x15, 0x0A, 0x15, 0x0F, 0x08,
+ 0x11, 0x0A, 0x05
+};
+
+static const ByteProvider k1SpecialPalette3FMTownsProvider = { ARRAYSIZE(k1SpecialPalette3FMTowns), k1SpecialPalette3FMTowns };
+
+static const byte k1SpecialPalette4FMTowns[51] = {
+ 0x06, 0x03, 0x01, 0x33, 0x25, 0x0A, 0x2F, 0x21,
+ 0x0A, 0x2B, 0x1D, 0x08, 0x28, 0x1A, 0x08, 0x24,
+ 0x17, 0x06, 0x21, 0x22, 0x06, 0x1D, 0x11, 0x05,
+ 0x19, 0x0E, 0x05, 0x16, 0x0B, 0x03, 0x12, 0x0A,
+ 0x03, 0x0F, 0x08, 0x03, 0x28, 0x1A, 0x08, 0x22,
+ 0x15, 0x05, 0x1D, 0x11, 0x05, 0x17, 0x0C, 0x03,
+ 0x12, 0x0A, 0x03
+};
+
+static const ByteProvider k1SpecialPalette4FMTownsProvider = { ARRAYSIZE(k1SpecialPalette4FMTowns), k1SpecialPalette4FMTowns };
+
+static const byte k1SpecialPalette5FMTowns[51] = {
+ 0x03, 0x03, 0x00, 0x2A, 0x1D, 0x13, 0x27, 0x1A,
+ 0x11, 0x24, 0x18, 0x0F, 0x21, 0x15, 0x0D, 0x1E,
+ 0x13, 0x0C, 0x1C, 0x11, 0x0A, 0x19, 0x0F, 0x0A,
+ 0x16, 0x0C, 0x08, 0x13, 0x0A, 0x06, 0x11, 0x08,
+ 0x05, 0x0E, 0x08, 0x05, 0x1C, 0x11, 0x0A, 0x19,
+ 0x0E, 0x08, 0x16, 0x0C, 0x08, 0x13, 0x0A, 0x06,
+ 0x11, 0x08, 0x05
+};
+
+static const ByteProvider k1SpecialPalette5FMTownsProvider = { ARRAYSIZE(k1SpecialPalette5FMTowns), k1SpecialPalette5FMTowns };
+
+static const byte k1SpecialPalette6FMTowns[51] = {
+ 0x00, 0x08, 0x01, 0x00, 0x1E, 0x00, 0x00, 0x1B,
+ 0x00, 0x00, 0x19, 0x00, 0x00, 0x17, 0x00, 0x00,
+ 0x14, 0x00, 0x00, 0x12, 0x00, 0x00, 0x11, 0x00,
+ 0x00, 0x0E, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x0A,
+ 0x00, 0x00, 0x08, 0x00, 0x13, 0x21, 0x0F, 0x11,
+ 0x1F, 0x0D, 0x0E, 0x1D, 0x0C, 0x0C, 0x1B, 0x0B,
+ 0x0A, 0x19, 0x0A
+};
+
+static const ByteProvider k1SpecialPalette6FMTownsProvider = { ARRAYSIZE(k1SpecialPalette6FMTowns), k1SpecialPalette6FMTowns };
+
+static const byte k1SpecialPalette7FMTowns[54] = {
+ 0x05, 0x2B, 0x00, 0x00, 0x22, 0x00, 0x00, 0x1E,
+ 0x00, 0x00, 0x16, 0x01, 0x00, 0x12, 0x03, 0x00,
+ 0x0F, 0x01, 0x00, 0x0B, 0x03, 0x0A, 0x19, 0x0A,
+ 0x2D, 0x2D, 0x32, 0x29, 0x29, 0x2D, 0x25, 0x25,
+ 0x2B, 0x1F, 0x1F, 0x26, 0x1B, 0x1B, 0x22, 0x14,
+ 0x16, 0x1D, 0x11, 0x11, 0x18, 0x0D, 0x0D, 0x14,
+ 0x0A, 0x0A, 0x0F, 0x06, 0x06, 0x0B
+};
+
+static const ByteProvider k1SpecialPalette7FMTownsProvider = { ARRAYSIZE(k1SpecialPalette7FMTowns), k1SpecialPalette7FMTowns };
+
+static const byte k1SpecialPalette8FMTowns[54] = {
+ 0x12, 0x37, 0x3F, 0x14, 0x31, 0x3F, 0x14, 0x29,
+ 0x3F, 0x14, 0x22, 0x3F, 0x14, 0x1B, 0x3F, 0x14,
+ 0x14, 0x3F, 0x0E, 0x0F, 0x37, 0x14, 0x29, 0x3F,
+ 0x2F, 0x3F, 0x3D, 0x26, 0x3F, 0x3F, 0x15, 0x3F,
+ 0x3F, 0x14, 0x3B, 0x3F, 0x12, 0x37, 0x3F, 0x14,
+ 0x31, 0x3F, 0x14, 0x29, 0x3F, 0x14, 0x22, 0x3F,
+ 0x14, 0x1B, 0x3F, 0x14, 0x14, 0x3F
+};
+
+static const ByteProvider k1SpecialPalette8FMTownsProvider = { ARRAYSIZE(k1SpecialPalette8FMTowns), k1SpecialPalette8FMTowns };
+
+static const byte k1SpecialPalette9FMTowns[45] = {
+ 0x36, 0x00, 0x00, 0x32, 0x00, 0x00, 0x2F, 0x00,
+ 0x00, 0x2C, 0x00, 0x00, 0x29, 0x00, 0x00, 0x26,
+ 0x00, 0x00, 0x23, 0x00, 0x00, 0x20, 0x00, 0x00,
+ 0x1C, 0x00, 0x00, 0x19, 0x00, 0x00, 0x16, 0x00,
+ 0x00, 0x13, 0x00, 0x00, 0x11, 0x00, 0x00, 0x0D,
+ 0x00, 0x00, 0x0A, 0x00, 0x00
+};
+
+static const ByteProvider k1SpecialPalette9FMTownsProvider = { ARRAYSIZE(k1SpecialPalette9FMTowns), k1SpecialPalette9FMTowns };
+
+static const byte k1SpecialPalette10FMTowns[45] = {
+ 0x29, 0x00, 0x00, 0x26, 0x00, 0x00, 0x24, 0x00,
+ 0x00, 0x22, 0x00, 0x00, 0x20, 0x00, 0x00, 0x1E,
+ 0x00, 0x00, 0x1B, 0x00, 0x00, 0x19, 0x00, 0x00,
+ 0x17, 0x00, 0x00, 0x15, 0x00, 0x00, 0x12, 0x00,
+ 0x00, 0x11, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x0C,
+ 0x00, 0x00, 0x0A, 0x00, 0x00
+};
+
+static const ByteProvider k1SpecialPalette10FMTownsProvider = { ARRAYSIZE(k1SpecialPalette10FMTowns), k1SpecialPalette10FMTowns };
+
+static const byte k1SpecialPalette11FMTowns[45] = {
+ 0x20, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x1C, 0x00,
+ 0x00, 0x1B, 0x00, 0x00, 0x19, 0x00, 0x00, 0x18,
+ 0x00, 0x00, 0x16, 0x00, 0x00, 0x15, 0x00, 0x00,
+ 0x13, 0x00, 0x00, 0x11, 0x00, 0x00, 0x11, 0x00,
+ 0x00, 0x0E, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x0B,
+ 0x00, 0x00, 0x0A, 0x00, 0x00
+};
+
+static const ByteProvider k1SpecialPalette11FMTownsProvider = { ARRAYSIZE(k1SpecialPalette11FMTowns), k1SpecialPalette11FMTowns };
+
+static const byte k1SpecialPalette12FMTowns[45] = {
+ 0x19, 0x00, 0x00, 0x18, 0x00, 0x00, 0x16, 0x00,
+ 0x00, 0x15, 0x00, 0x00, 0x14, 0x00, 0x00, 0x13,
+ 0x00, 0x00, 0x12, 0x00, 0x00, 0x11, 0x00, 0x00,
+ 0x11, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x0E, 0x00,
+ 0x00, 0x0D, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0B,
+ 0x00, 0x00, 0x0A, 0x00, 0x00
+};
+
+static const ByteProvider k1SpecialPalette12FMTownsProvider = { ARRAYSIZE(k1SpecialPalette12FMTowns), k1SpecialPalette12FMTowns };
+
+static const byte k1SpecialPalette13FMTowns[45] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const ByteProvider k1SpecialPalette13FMTownsProvider = { ARRAYSIZE(k1SpecialPalette13FMTowns), k1SpecialPalette13FMTowns };
+
+static const byte k1SpecialPalette14FMTowns[60] = {
+ 0x0E, 0x28, 0x3F, 0x0C, 0x24, 0x3B, 0x0A, 0x20,
+ 0x38, 0x0A, 0x1C, 0x34, 0x08, 0x19, 0x31, 0x08,
+ 0x15, 0x2D, 0x05, 0x13, 0x2A, 0x05, 0x11, 0x27,
+ 0x03, 0x0D, 0x24, 0x03, 0x0A, 0x20, 0x03, 0x08,
+ 0x1D, 0x01, 0x06, 0x19, 0x01, 0x05, 0x16, 0x00,
+ 0x03, 0x13, 0x00, 0x01, 0x0F, 0x00, 0x01, 0x0C,
+ 0x00, 0x00, 0x08, 0x00, 0x00, 0x05, 0x00, 0x00,
+ 0x03, 0x00, 0x00, 0x00
+};
+
+static const ByteProvider k1SpecialPalette14FMTownsProvider = { ARRAYSIZE(k1SpecialPalette14FMTowns), k1SpecialPalette14FMTowns };
+
+static const byte k1SpecialPalette15FMTowns[45] = {
+ 0x24, 0x00, 0x39, 0x21, 0x00, 0x36, 0x1F, 0x00,
+ 0x32, 0x1C, 0x00, 0x2D, 0x1A, 0x00, 0x2A, 0x17,
+ 0x00, 0x26, 0x15, 0x00, 0x22, 0x12, 0x00, 0x1E,
+ 0x11, 0x00, 0x1A, 0x0E, 0x00, 0x16, 0x0B, 0x00,
+ 0x12, 0x0A, 0x00, 0x0F, 0x06, 0x00, 0x0B, 0x05,
+ 0x00, 0x08, 0x01, 0x00, 0x03
+};
+
+static const ByteProvider k1SpecialPalette15FMTownsProvider = { ARRAYSIZE(k1SpecialPalette15FMTowns), k1SpecialPalette15FMTowns };
+
+static const byte k1SpecialPalette16FMTowns[33] = {
+ 0x00, 0x3F, 0x3F, 0x00, 0x38, 0x38, 0x00, 0x34,
+ 0x34, 0x00, 0x30, 0x30, 0x00, 0x2D, 0x2D, 0x00,
+ 0x29, 0x29, 0x00, 0x25, 0x25, 0x00, 0x1F, 0x1F,
+ 0x00, 0x1B, 0x1B, 0x00, 0x16, 0x16, 0x00, 0x11,
+ 0x11
+};
+
+static const ByteProvider k1SpecialPalette16FMTownsProvider = { ARRAYSIZE(k1SpecialPalette16FMTowns), k1SpecialPalette16FMTowns };
+
+static const byte k1SpecialPalette17FMTowns[33] = {
+ 0x3B, 0x3B, 0x3B, 0x36, 0x36, 0x36, 0x32, 0x32,
+ 0x32, 0x2D, 0x2D, 0x2D, 0x2A, 0x2A, 0x2A, 0x26,
+ 0x26, 0x26, 0x21, 0x21, 0x21, 0x1D, 0x1D, 0x1D,
+ 0x19, 0x19, 0x19, 0x15, 0x15, 0x15, 0x11, 0x11,
+ 0x11
+};
+
+static const ByteProvider k1SpecialPalette17FMTownsProvider = { ARRAYSIZE(k1SpecialPalette17FMTowns), k1SpecialPalette17FMTowns };
+
+static const byte k1SpecialPalette18FMTowns[21] = {
+ 0x0F, 0x23, 0x1C, 0x2A, 0x36, 0x3F, 0x24, 0x2F,
+ 0x38, 0x1F, 0x2A, 0x32, 0x1A, 0x24, 0x2B, 0x15,
+ 0x1E, 0x25, 0x11, 0x19, 0x1F
+};
+
+static const ByteProvider k1SpecialPalette18FMTownsProvider = { ARRAYSIZE(k1SpecialPalette18FMTowns), k1SpecialPalette18FMTowns };
+
+static const byte k1SpecialPalette19FMTowns[21] = {
+ 0x00, 0x00, 0x1C, 0x00, 0x00, 0x3F, 0x00, 0x00,
+ 0x38, 0x00, 0x00, 0x32, 0x00, 0x00, 0x2B, 0x00,
+ 0x00, 0x25, 0x00, 0x00, 0x1F
+};
+
+static const ByteProvider k1SpecialPalette19FMTownsProvider = { ARRAYSIZE(k1SpecialPalette19FMTowns), k1SpecialPalette19FMTowns };
+
+static const byte k1SpecialPalette20FMTowns[21] = {
+ 0x26, 0x1B, 0x1B, 0x3F, 0x34, 0x34, 0x3B, 0x2F,
+ 0x2F, 0x39, 0x2B, 0x2B, 0x36, 0x26, 0x27, 0x33,
+ 0x22, 0x23, 0x31, 0x1F, 0x20
+};
+
+static const ByteProvider k1SpecialPalette20FMTownsProvider = { ARRAYSIZE(k1SpecialPalette20FMTowns), k1SpecialPalette20FMTowns };
+
+static const byte k1SpecialPalette21FMTowns[21] = {
+ 0x1C, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x38, 0x00,
+ 0x00, 0x32, 0x00, 0x00, 0x2B, 0x00, 0x00, 0x25,
+ 0x00, 0x00, 0x1F, 0x00, 0x00
+};
+
+static const ByteProvider k1SpecialPalette21FMTownsProvider = { ARRAYSIZE(k1SpecialPalette21FMTowns), k1SpecialPalette21FMTowns };
+
+static const byte k1SpecialPalette22FMTowns[21] = {
+ 0x1F, 0x1F, 0x0C, 0x3F, 0x3F, 0x21, 0x3B, 0x3B,
+ 0x1F, 0x37, 0x37, 0x1D, 0x34, 0x34, 0x1B, 0x30,
+ 0x30, 0x19, 0x2D, 0x2D, 0x17
+};
+
+static const ByteProvider k1SpecialPalette22FMTownsProvider = { ARRAYSIZE(k1SpecialPalette22FMTowns), k1SpecialPalette22FMTowns };
+
+static const byte k1SpecialPalette23FMTowns[21] = {
+ 0x1F, 0x1F, 0x00, 0x3F, 0x3F, 0x00, 0x3B, 0x3B,
+ 0x00, 0x37, 0x37, 0x00, 0x34, 0x34, 0x00, 0x30,
+ 0x30, 0x00, 0x2D, 0x2D, 0x00
+};
+
+static const ByteProvider k1SpecialPalette23FMTownsProvider = { ARRAYSIZE(k1SpecialPalette23FMTowns), k1SpecialPalette23FMTowns };
+
+static const byte k1SpecialPalette24FMTowns[48] = {
+ 0x36, 0x38, 0x2C, 0x31, 0x38, 0x23, 0x2A, 0x33,
+ 0x1E, 0x24, 0x2F, 0x1A, 0x1E, 0x2A, 0x16, 0x18,
+ 0x26, 0x13, 0x13, 0x21, 0x0F, 0x0E, 0x1D, 0x0D,
+ 0x0D, 0x1B, 0x0C, 0x0A, 0x19, 0x0A, 0x0A, 0x18,
+ 0x0A, 0x08, 0x17, 0x08, 0x08, 0x16, 0x08, 0x08,
+ 0x15, 0x06, 0x06, 0x14, 0x06, 0x06, 0x11, 0x06
+};
+
+static const ByteProvider k1SpecialPalette24FMTownsProvider = { ARRAYSIZE(k1SpecialPalette24FMTowns), k1SpecialPalette24FMTowns };
+
+static const byte k1SpecialPalette25FMTowns[48] = {
+ 0x36, 0x38, 0x2C, 0x31, 0x36, 0x23, 0x2A, 0x33,
+ 0x1E, 0x24, 0x2F, 0x1A, 0x1E, 0x2A, 0x16, 0x1E,
+ 0x2A, 0x16, 0x18, 0x26, 0x13, 0x13, 0x21, 0x0F,
+ 0x0E, 0x1D, 0x0D, 0x0D, 0x1B, 0x0C, 0x0D, 0x1B,
+ 0x0C, 0x0A, 0x19, 0x0A, 0x0A, 0x18, 0x0A, 0x0A,
+ 0x18, 0x0A, 0x0A, 0x18, 0x0A, 0x06, 0x14, 0x06
+};
+
+static const ByteProvider k1SpecialPalette25FMTownsProvider = { ARRAYSIZE(k1SpecialPalette25FMTowns), k1SpecialPalette25FMTowns };
+
+static const byte k1SpecialPalette26FMTowns[48] = {
+ 0x31, 0x38, 0x23, 0x31, 0x38, 0x23, 0x2A, 0x33,
+ 0x1E, 0x24, 0x2F, 0x1A, 0x19, 0x2A, 0x16, 0x18,
+ 0x26, 0x13, 0x13, 0x21, 0x0F, 0x13, 0x21, 0x11,
+ 0x13, 0x21, 0x0F, 0x0E, 0x1D, 0x0D, 0x0E, 0x1D,
+ 0x0D, 0x0E, 0x1D, 0x0D, 0x0D, 0x1B, 0x0C, 0x0A,
+ 0x19, 0x0A, 0x0A, 0x19, 0x0A, 0x06, 0x13, 0x06
+};
+
+static const ByteProvider k1SpecialPalette26FMTownsProvider = { ARRAYSIZE(k1SpecialPalette26FMTowns), k1SpecialPalette26FMTowns };
+
+static const byte k1SpecialPalette27FMTowns[48] = {
+ 0x31, 0x38, 0x23, 0x31, 0x38, 0x23, 0x2A, 0x33,
+ 0x1E, 0x24, 0x2F, 0x1A, 0x19, 0x2A, 0x16, 0x18,
+ 0x26, 0x13, 0x13, 0x21, 0x0F, 0x13, 0x21, 0x0F,
+ 0x13, 0x21, 0x0F, 0x0E, 0x1D, 0x0D, 0x0E, 0x1D,
+ 0x0D, 0x0E, 0x1D, 0x0D, 0x0D, 0x1B, 0x0C, 0x0D,
+ 0x19, 0x0C, 0x0D, 0x19, 0x0C, 0x08, 0x16, 0x08
+};
+
+static const ByteProvider k1SpecialPalette27FMTownsProvider = { ARRAYSIZE(k1SpecialPalette27FMTowns), k1SpecialPalette27FMTowns };
+
+static const byte k1SpecialPalette28FMTowns[48] = {
+ 0x36, 0x38, 0x2C, 0x31, 0x38, 0x23, 0x2A, 0x33,
+ 0x1E, 0x24, 0x2F, 0x1A, 0x19, 0x2A, 0x16, 0x1E,
+ 0x2A, 0x16, 0x18, 0x26, 0x13, 0x13, 0x21, 0x0F,
+ 0x13, 0x21, 0x0F, 0x13, 0x21, 0x0F, 0x13, 0x21,
+ 0x0F, 0x0E, 0x1D, 0x0D, 0x0D, 0x1B, 0x0C, 0x0D,
+ 0x1B, 0x0C, 0x0D, 0x1B, 0x0C, 0x08, 0x17, 0x08
+};
+
+static const ByteProvider k1SpecialPalette28FMTownsProvider = { ARRAYSIZE(k1SpecialPalette28FMTowns), k1SpecialPalette28FMTowns };
+
+static const byte k1SpecialPalette29FMTowns[48] = {
+ 0x36, 0x38, 0x2C, 0x31, 0x38, 0x23, 0x2A, 0x33,
+ 0x1E, 0x24, 0x2F, 0x1A, 0x19, 0x2A, 0x16, 0x1E,
+ 0x2A, 0x16, 0x18, 0x26, 0x13, 0x13, 0x21, 0x0F,
+ 0x13, 0x21, 0x0F, 0x13, 0x21, 0x0F, 0x13, 0x21,
+ 0x0F, 0x13, 0x21, 0x0F, 0x0E, 0x1D, 0x0D, 0x0E,
+ 0x1D, 0x0D, 0x0E, 0x1D, 0x0D, 0x08, 0x17, 0x08
+};
+
+static const ByteProvider k1SpecialPalette29FMTownsProvider = { ARRAYSIZE(k1SpecialPalette29FMTowns), k1SpecialPalette29FMTowns };
+
+static const byte k1SpecialPalette30FMTowns[60] = {
+ 0x1E, 0x1D, 0x3F, 0x1A, 0x19, 0x3F, 0x14, 0x12,
+ 0x3B, 0x12, 0x11, 0x37, 0x11, 0x11, 0x33, 0x0F,
+ 0x0E, 0x2F, 0x0E, 0x0D, 0x2C, 0x0D, 0x0C, 0x28,
+ 0x0B, 0x0B, 0x24, 0x0A, 0x0A, 0x20, 0x0A, 0x0A,
+ 0x1D, 0x05, 0x05, 0x18, 0x03, 0x03, 0x13, 0x01,
+ 0x01, 0x11, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x05,
+ 0x00, 0x0A, 0x1A, 0x00, 0x0F, 0x13, 0x00, 0x14,
+ 0x11, 0x0F, 0x0D, 0x00
+};
+
+static const ByteProvider k1SpecialPalette30FMTownsProvider = { ARRAYSIZE(k1SpecialPalette30FMTowns), k1SpecialPalette30FMTowns };
+
+static const byte k1SpecialPalette31FMTowns[39] = {
+ 0x2B, 0x19, 0x34, 0x27, 0x17, 0x30, 0x23, 0x14,
+ 0x2C, 0x20, 0x12, 0x27, 0x1C, 0x11, 0x23, 0x18,
+ 0x0E, 0x1E, 0x15, 0x0C, 0x1A, 0x11, 0x0A, 0x15,
+ 0x0E, 0x08, 0x11, 0x0A, 0x05, 0x0C, 0x06, 0x03,
+ 0x08, 0x03, 0x01, 0x03, 0x00, 0x00, 0x00
+};
+
+static const ByteProvider k1SpecialPalette31FMTownsProvider = { ARRAYSIZE(k1SpecialPalette31FMTowns), k1SpecialPalette31FMTowns };
+
+static const byte k1SpecialPalette32FMTowns[39] = {
+ 0x12, 0x12, 0x16, 0x11, 0x11, 0x14, 0x0F, 0x0F,
+ 0x12, 0x0D, 0x0D, 0x11, 0x0B, 0x0B, 0x0E, 0x0A,
+ 0x0A, 0x0C, 0x08, 0x08, 0x0A, 0x08, 0x08, 0x08,
+ 0x05, 0x05, 0x06, 0x05, 0x05, 0x05, 0x03, 0x03,
+ 0x03, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00
+};
+
+static const ByteProvider k1SpecialPalette32FMTownsProvider = { ARRAYSIZE(k1SpecialPalette32FMTowns), k1SpecialPalette32FMTowns };
+
+static const byte k1SpecialPalette33FMTowns[60] = {
+ 0x3F, 0x3D, 0x2F, 0x3F, 0x3D, 0x29, 0x3F, 0x3D,
+ 0x23, 0x3F, 0x3D, 0x1D, 0x3F, 0x3B, 0x17, 0x3F,
+ 0x3B, 0x11, 0x3F, 0x3B, 0x0B, 0x3F, 0x3B, 0x05,
+ 0x3F, 0x3B, 0x00, 0x3D, 0x38, 0x00, 0x3B, 0x34,
+ 0x00, 0x39, 0x33, 0x00, 0x39, 0x30, 0x00, 0x37,
+ 0x2D, 0x00, 0x36, 0x2B, 0x00, 0x34, 0x28, 0x00,
+ 0x33, 0x26, 0x00, 0x32, 0x24, 0x00, 0x30, 0x22,
+ 0x00, 0x2F, 0x20, 0x00
+};
+
+static const ByteProvider k1SpecialPalette33FMTownsProvider = { ARRAYSIZE(k1SpecialPalette33FMTowns), k1SpecialPalette33FMTowns };
+
+static const Shape k1Healing1ShapesFMTowns[22] = {
+ { 8, 0, 0, 3, 48, -12, -48 },
+ { 8, 3, 0, 3, 48, -12, -48 },
+ { 8, 6, 0, 3, 48, -12, -48 },
+ { 8, 9, 0, 3, 48, -12, -48 },
+ { 8, 12, 0, 3, 48, -12, -48 },
+ { 8, 15, 0, 3, 48, -12, -48 },
+ { 8, 18, 0, 3, 48, -12, -48 },
+ { 8, 21, 0, 3, 48, -12, -48 },
+ { 8, 24, 0, 3, 48, -12, -48 },
+ { 8, 27, 0, 3, 48, -12, -48 },
+ { 8, 30, 0, 3, 48, -12, -48 },
+ { 8, 33, 0, 3, 48, -12, -48 },
+ { 8, 0, 48, 3, 48, -12, -48 },
+ { 8, 3, 48, 3, 48, -12, -48 },
+ { 8, 6, 48, 3, 48, -12, -48 },
+ { 8, 9, 48, 3, 48, -12, -48 },
+ { 8, 12, 48, 3, 48, -12, -48 },
+ { 8, 15, 48, 3, 48, -12, -48 },
+ { 8, 18, 48, 3, 48, -12, -48 },
+ { 8, 21, 48, 3, 48, -12, -48 },
+ { 8, 24, 48, 3, 48, -12, -48 },
+ { 8, 27, 48, 3, 48, -12, -48 }
+};
+
+static const ShapeProvider k1Healing1ShapesFMTownsProvider = { ARRAYSIZE(k1Healing1ShapesFMTowns), k1Healing1ShapesFMTowns };
+
+static const Shape k1Healing2ShapesFMTowns[30] = {
+ { 9, 0, 0, 3, 48, -11, -48 },
+ { 9, 3, 0, 3, 48, -11, -48 },
+ { 9, 6, 0, 3, 48, -11, -48 },
+ { 9, 9, 0, 3, 48, -11, -48 },
+ { 9, 12, 0, 3, 48, -11, -48 },
+ { 9, 15, 0, 3, 48, -11, -48 },
+ { 9, 18, 0, 3, 48, -11, -48 },
+ { 9, 21, 0, 3, 48, -11, -48 },
+ { 9, 24, 0, 3, 48, -11, -48 },
+ { 9, 27, 0, 3, 48, -11, -48 },
+ { 9, 30, 0, 3, 48, -11, -48 },
+ { 9, 33, 0, 3, 48, -11, -48 },
+ { 9, 0, 48, 3, 48, -11, -48 },
+ { 9, 3, 48, 3, 48, -11, -48 },
+ { 9, 6, 48, 3, 48, -11, -48 },
+ { 9, 9, 48, 3, 48, -11, -48 },
+ { 9, 12, 48, 3, 48, -11, -48 },
+ { 9, 15, 48, 3, 48, -11, -48 },
+ { 9, 18, 48, 3, 48, -11, -48 },
+ { 9, 21, 48, 3, 48, -11, -48 },
+ { 9, 24, 48, 3, 48, -11, -48 },
+ { 9, 27, 48, 3, 48, -11, -48 },
+ { 9, 30, 48, 3, 48, -11, -48 },
+ { 9, 33, 48, 3, 48, -11, -48 },
+ { 9, 0, 96, 3, 48, -11, -48 },
+ { 9, 3, 96, 3, 48, -11, -48 },
+ { 9, 6, 96, 3, 48, -11, -48 },
+ { 9, 9, 96, 3, 48, -11, -48 },
+ { 9, 12, 96, 3, 48, -11, -48 },
+ { 9, 15, 96, 3, 48, -11, -48 }
+};
+
+static const ShapeProvider k1Healing2ShapesFMTownsProvider = { ARRAYSIZE(k1Healing2ShapesFMTowns), k1Healing2ShapesFMTowns };
+
+static const Shape k1PoisonDeathShapesFMTowns[20] = {
+ { 19, 0, 0, 8, 48, -31, -48 },
+ { 19, 8, 0, 8, 48, -31, -48 },
+ { 19, 16, 0, 8, 48, -31, -48 },
+ { 19, 24, 0, 8, 48, -31, -48 },
+ { 19, 32, 0, 8, 48, -31, -48 },
+ { 19, 0, 48, 8, 48, -31, -48 },
+ { 19, 8, 48, 8, 48, -31, -48 },
+ { 19, 16, 48, 8, 48, -31, -48 },
+ { 19, 24, 48, 8, 48, -31, -48 },
+ { 19, 32, 48, 8, 48, -31, -48 },
+ { 19, 0, 96, 8, 48, -31, -48 },
+ { 19, 8, 96, 8, 48, -31, -48 },
+ { 19, 16, 96, 8, 48, -31, -48 },
+ { 19, 24, 96, 8, 48, -31, -48 },
+ { 19, 32, 96, 8, 48, -31, -48 },
+ { 19, 0, 144, 8, 48, -31, -48 },
+ { 19, 8, 144, 8, 48, -31, -48 },
+ { 19, 16, 144, 8, 48, -31, -48 },
+ { 19, 24, 144, 8, 48, -31, -48 },
+ { 19, 32, 144, 8, 48, -31, -48 }
+};
+
+static const ShapeProvider k1PoisonDeathShapesFMTownsProvider = { ARRAYSIZE(k1PoisonDeathShapesFMTowns), k1PoisonDeathShapesFMTowns };
+
+static const Shape k1FluteShapesFMTowns[36] = {
+ { 13, 0, 0, 3, 75, -12, -75 },
+ { 13, 3, 0, 3, 75, -12, -75 },
+ { 13, 6, 0, 3, 75, -12, -75 },
+ { 13, 9, 0, 3, 75, -12, -75 },
+ { 13, 12, 0, 3, 75, -12, -75 },
+ { 13, 15, 0, 3, 75, -12, -75 },
+ { 13, 18, 0, 3, 75, -12, -75 },
+ { 13, 21, 0, 3, 75, -12, -75 },
+ { 13, 24, 0, 3, 75, -12, -75 },
+ { 13, 27, 0, 3, 75, -12, -75 },
+ { 13, 30, 0, 3, 75, -12, -75 },
+ { 13, 33, 0, 3, 75, -12, -75 },
+ { 13, 36, 75, 3, 75, -12, -75 },
+ { 13, 0, 75, 3, 75, -12, -75 },
+ { 13, 3, 75, 3, 75, -12, -75 },
+ { 13, 6, 75, 3, 75, -12, -75 },
+ { 13, 9, 75, 3, 75, -12, -75 },
+ { 13, 12, 75, 3, 75, -12, -75 },
+ { 13, 15, 75, 3, 75, -12, -75 },
+ { 13, 18, 75, 3, 75, -12, -75 },
+ { 13, 21, 75, 3, 75, -12, -75 },
+ { 13, 24, 75, 3, 75, -12, -75 },
+ { 13, 27, 75, 3, 75, -12, -75 },
+ { 13, 30, 75, 3, 75, -12, -75 },
+ { 13, 33, 75, 3, 75, -12, -75 },
+ { 13, 36, 75, 3, 75, -12, -75 },
+ { 14, 0, 0, 3, 75, -12, -75 },
+ { 14, 3, 0, 3, 75, -12, -75 },
+ { 14, 6, 0, 3, 75, -12, -75 },
+ { 14, 9, 0, 3, 75, -12, -75 },
+ { 14, 12, 0, 3, 75, -12, -75 },
+ { 14, 15, 0, 3, 75, -12, -75 },
+ { 14, 18, 0, 3, 75, -12, -75 },
+ { 14, 21, 0, 3, 75, -12, -75 },
+ { 14, 24, 0, 3, 75, -12, -75 },
+ { 14, 27, 0, 3, 75, -12, -75 }
+};
+
+static const ShapeProvider k1FluteShapesFMTownsProvider = { ARRAYSIZE(k1FluteShapesFMTowns), k1FluteShapesFMTowns };
+
+static const Shape k1Winter1ShapesFMTowns[7] = {
+ { 10, 5, 0, 5, 66, -20, -65 },
+ { 10, 10, 0, 5, 66, -20, -65 },
+ { 10, 15, 0, 5, 66, -20, -65 },
+ { 10, 20, 0, 5, 66, -20, -65 },
+ { 10, 25, 0, 5, 66, -20, -65 },
+ { 10, 30, 0, 5, 66, -20, -65 },
+ { 10, 35, 0, 5, 66, -20, -65 }
+};
+
+static const ShapeProvider k1Winter1ShapesFMTownsProvider = { ARRAYSIZE(k1Winter1ShapesFMTowns), k1Winter1ShapesFMTowns };
+
+static const Shape k1Winter2ShapesFMTowns[35] = {
+ { 10, 0, 66, 5, 66, -20, -65 },
+ { 10, 5, 66, 5, 66, -20, -65 },
+ { 10, 10, 66, 5, 66, -20, -65 },
+ { 10, 15, 66, 5, 66, -20, -65 },
+ { 10, 20, 66, 5, 66, -20, -65 },
+ { 10, 25, 66, 5, 66, -20, -65 },
+ { 10, 30, 66, 5, 66, -20, -65 },
+ { 10, 35, 66, 5, 66, -20, -65 },
+ { 10, 0, 132, 5, 66, -20, -65 },
+ { 10, 5, 132, 5, 66, -20, -65 },
+ { 10, 10, 132, 5, 66, -20, -65 },
+ { 10, 15, 132, 5, 66, -20, -65 },
+ { 10, 20, 132, 5, 66, -20, -65 },
+ { 10, 25, 132, 5, 66, -20, -65 },
+ { 10, 30, 132, 5, 66, -20, -65 },
+ { 10, 35, 132, 5, 66, -20, -65 },
+ { 11, 0, 0, 5, 66, -20, -65 },
+ { 11, 5, 0, 5, 66, -20, -65 },
+ { 11, 10, 0, 5, 66, -20, -65 },
+ { 11, 15, 0, 5, 66, -20, -65 },
+ { 11, 20, 0, 5, 66, -20, -65 },
+ { 11, 25, 0, 5, 66, -20, -65 },
+ { 11, 30, 0, 5, 66, -20, -65 },
+ { 11, 35, 0, 5, 66, -20, -65 },
+ { 11, 0, 66, 5, 66, -20, -65 },
+ { 11, 5, 66, 5, 66, -20, -65 },
+ { 11, 10, 66, 5, 66, -20, -65 },
+ { 11, 15, 66, 5, 66, -20, -65 },
+ { 11, 20, 66, 5, 66, -20, -65 },
+ { 11, 25, 66, 5, 66, -20, -65 },
+ { 11, 30, 66, 5, 66, -20, -65 },
+ { 11, 35, 66, 5, 66, -20, -65 },
+ { 11, 0, 132, 5, 66, -20, -65 },
+ { 11, 5, 132, 5, 66, -20, -65 },
+ { 11, 10, 132, 5, 66, -20, -65 }
+};
+
+static const ShapeProvider k1Winter2ShapesFMTownsProvider = { ARRAYSIZE(k1Winter2ShapesFMTowns), k1Winter2ShapesFMTowns };
+
+static const Shape k1Winter3ShapesFMTowns[4] = {
+ { 11, 15, 132, 5, 66, -20, -65 },
+ { 11, 20, 132, 5, 66, -20, -65 },
+ { 11, 25, 132, 5, 66, -20, -65 },
+ { 11, 30, 132, 5, 66, -20, -65 }
+};
+
+static const ShapeProvider k1Winter3ShapesFMTownsProvider = { ARRAYSIZE(k1Winter3ShapesFMTowns), k1Winter3ShapesFMTowns };
+
+static const Shape k1DrinkShapesFMTowns[15] = {
+ { 6, 0, 0, 4, 48, -20, -48 },
+ { 6, 4, 0, 4, 48, -20, -48 },
+ { 6, 8, 0, 4, 48, -20, -48 },
+ { 6, 12, 0, 4, 48, -20, -48 },
+ { 6, 16, 0, 4, 48, -20, -48 },
+ { 6, 20, 0, 5, 48, -20, -48 },
+ { 6, 0, 48, 5, 54, -20, -54 },
+ { 6, 5, 48, 5, 54, -20, -54 },
+ { 6, 10, 48, 5, 54, -20, -54 },
+ { 0, 7, 0, 0, 3, 43, -12 },
+ { 213, 7, 3, 3, 2, 40, -8 },
+ { 216, 7, 5, 7, 2, 36, -8 },
+ { 220, 7, 7, 10, 2, 33, -8 },
+ { 223, 7, 9, 12, 2, 31, -8 },
+ { 225, 7, 11, 15, 2, 28, -8 }
+};
+
+static const ShapeProvider k1DrinkShapesFMTownsProvider = { ARRAYSIZE(k1DrinkShapesFMTowns), k1DrinkShapesFMTowns };
+
+static const Shape k1WispShapesFMTowns[26] = {
+ { 12, 0, 0, 5, 48, -20, -48 },
+ { 12, 5, 0, 5, 48, -20, -48 },
+ { 12, 10, 0, 5, 48, -20, -48 },
+ { 12, 15, 0, 5, 48, -20, -48 },
+ { 12, 20, 0, 5, 48, -20, -48 },
+ { 12, 25, 0, 5, 48, -20, -48 },
+ { 12, 30, 0, 5, 48, -20, -48 },
+ { 12, 35, 0, 5, 48, -20, -48 },
+ { 12, 0, 48, 5, 48, -20, -48 },
+ { 12, 5, 48, 5, 48, -20, -48 },
+ { 12, 10, 48, 5, 48, -20, -48 },
+ { 12, 15, 48, 5, 48, -20, -48 },
+ { 12, 20, 48, 5, 48, -20, -48 },
+ { 12, 25, 48, 5, 48, -20, -48 },
+ { 12, 30, 48, 5, 48, -20, -48 },
+ { 12, 35, 48, 5, 48, -20, -48 },
+ { 12, 0, 96, 5, 29, -20, -42 },
+ { 12, 5, 96, 5, 29, -20, -42 },
+ { 12, 10, 96, 5, 29, -20, -42 },
+ { 12, 15, 96, 5, 29, -20, -42 },
+ { 12, 20, 96, 5, 29, -20, -42 },
+ { 12, 25, 96, 5, 29, -20, -42 },
+ { 12, 30, 96, 5, 29, -20, -42 },
+ { 12, 35, 96, 5, 29, -20, -42 },
+ { 12, 0, 125, 5, 29, -20, -42 },
+ { 12, 5, 125, 5, 29, -20, -42 }
+};
+
+static const ShapeProvider k1WispShapesFMTownsProvider = { ARRAYSIZE(k1WispShapesFMTowns), k1WispShapesFMTowns };
+
+static const Shape k1MagicAnimShapesFMTowns[5] = {
+ { 17, 0, 0, 8, 49, -32, -49 },
+ { 17, 8, 0, 8, 49, -32, -49 },
+ { 17, 16, 0, 8, 49, -32, -49 },
+ { 17, 24, 0, 8, 49, -32, -49 },
+ { 17, 32, 0, 8, 49, -32, -49 }
+};
+
+static const ShapeProvider k1MagicAnimShapesFMTownsProvider = { ARRAYSIZE(k1MagicAnimShapesFMTowns), k1MagicAnimShapesFMTowns };
+
+static const Shape k1BranStoneShapesFMTowns[14] = {
+ { 18, 0, 0, 5, 51, -20, -50 },
+ { 18, 5, 0, 5, 51, -20, -50 },
+ { 18, 10, 0, 5, 51, -20, -50 },
+ { 18, 15, 0, 5, 51, -20, -50 },
+ { 18, 20, 0, 5, 51, -20, -50 },
+ { 18, 25, 0, 5, 51, -20, -50 },
+ { 18, 30, 0, 5, 51, -20, -50 },
+ { 18, 35, 0, 5, 51, -20, -50 },
+ { 18, 0, 51, 5, 51, -20, -50 },
+ { 18, 5, 51, 5, 51, -20, -50 },
+ { 18, 10, 51, 5, 51, -20, -50 },
+ { 18, 15, 51, 5, 51, -20, -50 },
+ { 18, 20, 51, 5, 51, -20, -50 },
+ { 18, 25, 51, 5, 51, -20, -50 }
+};
+
+static const ShapeProvider k1BranStoneShapesFMTownsProvider = { ARRAYSIZE(k1BranStoneShapesFMTowns), k1BranStoneShapesFMTowns };
+
+static const byte k1OutroReunionSeqFMTowns[1351] = {
+ 0x1A, 0x00, 0x08, 0x01, 0x06, 0x01, 0x00, 0x02,
+ 0x08, 0x00, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00,
+ 0x14, 0x0A, 0x00, 0x03, 0x08, 0x07, 0x08, 0x00,
+ 0x0B, 0x00, 0x09, 0x00, 0x10, 0x20, 0x5A, 0x00,
+ 0x3A, 0x02, 0x02, 0x08, 0x0D, 0x50, 0x00, 0x22,
+ 0x07, 0x10, 0x00, 0x02, 0x08, 0x0E, 0x50, 0x00,
+ 0x22, 0x07, 0x10, 0x00, 0x02, 0x08, 0x0C, 0x50,
+ 0x00, 0x22, 0x07, 0x10, 0x00, 0x02, 0x08, 0x0B,
+ 0x50, 0x00, 0x22, 0x07, 0x10, 0x00, 0x02, 0x08,
+ 0x0C, 0x50, 0x00, 0x22, 0x07, 0x10, 0x00, 0x02,
+ 0x08, 0x0D, 0x50, 0x00, 0x22, 0x07, 0x10, 0x00,
+ 0x02, 0x08, 0x0E, 0x50, 0x00, 0x22, 0x07, 0x10,
+ 0x00, 0x0A, 0x01, 0x03, 0x08, 0x07, 0x08, 0x00,
+ 0x0B, 0x01, 0x04, 0x00, 0x10, 0x21, 0x5A, 0x00,
+ 0x3A, 0x02, 0x0A, 0x02, 0x02, 0x08, 0x14, 0x50,
+ 0x00, 0x22, 0x07, 0x08, 0x00, 0x03, 0x08, 0x07,
+ 0x08, 0x00, 0x03, 0x08, 0x07, 0x08, 0x00, 0x03,
+ 0x08, 0x07, 0x08, 0x00, 0x03, 0x08, 0x07, 0x08,
+ 0x00, 0x0B, 0x02, 0x01, 0x00, 0x03, 0x08, 0x07,
+ 0x08, 0x00, 0x03, 0x08, 0x07, 0x08, 0x00, 0x03,
+ 0x08, 0x07, 0x08, 0x00, 0x10, 0x22, 0x5A, 0x00,
+ 0x3A, 0x02, 0x0A, 0x03, 0x03, 0x08, 0x07, 0x08,
+ 0x00, 0x0B, 0x03, 0x0B, 0x00, 0x10, 0x23, 0x78,
+ 0x00, 0x3A, 0x0F, 0x0A, 0x03, 0x03, 0x08, 0x07,
+ 0x08, 0x00, 0x0B, 0x03, 0x05, 0x00, 0x06, 0x28,
+ 0x00, 0x02, 0x08, 0x2E, 0x50, 0x00, 0x22, 0x07,
+ 0x10, 0x00, 0x02, 0x08, 0x2D, 0x50, 0x00, 0x22,
+ 0x07, 0x10, 0x00, 0x02, 0x08, 0x2E, 0x50, 0x00,
+ 0x22, 0x07, 0x10, 0x00, 0x02, 0x08, 0x2D, 0x50,
+ 0x00, 0x22, 0x07, 0x10, 0x00, 0x02, 0x08, 0x2E,
+ 0x50, 0x00, 0x22, 0x07, 0x10, 0x00, 0x02, 0x08,
+ 0x2D, 0x50, 0x00, 0x22, 0x07, 0x10, 0x00, 0x02,
+ 0x08, 0x2F, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00,
+ 0x02, 0x08, 0x30, 0x50, 0x00, 0x22, 0x07, 0x08,
+ 0x00, 0x02, 0x08, 0x31, 0x50, 0x00, 0x22, 0x07,
+ 0x08, 0x00, 0x02, 0x08, 0x32, 0x50, 0x00, 0x22,
+ 0x07, 0x08, 0x00, 0x06, 0x0A, 0x00, 0x10, 0x24,
+ 0x5A, 0x00, 0x3A, 0x02, 0x02, 0x08, 0x33, 0x50,
+ 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08, 0x34,
+ 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08,
+ 0x35, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02,
+ 0x08, 0x36, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00,
+ 0x02, 0x08, 0x37, 0x50, 0x00, 0x22, 0x07, 0x08,
+ 0x00, 0x02, 0x08, 0x35, 0x50, 0x00, 0x22, 0x07,
+ 0x08, 0x00, 0x02, 0x08, 0x34, 0x50, 0x00, 0x22,
+ 0x07, 0x08, 0x00, 0x02, 0x08, 0x33, 0x50, 0x00,
+ 0x22, 0x07, 0x08, 0x00, 0x02, 0x08, 0x35, 0x50,
+ 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08, 0x36,
+ 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08,
+ 0x37, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x06,
+ 0x0A, 0x00, 0x10, 0x25, 0x5A, 0x00, 0x3A, 0x02,
+ 0x02, 0x08, 0x33, 0x50, 0x00, 0x22, 0x07, 0x08,
+ 0x00, 0x02, 0x08, 0x34, 0x50, 0x00, 0x22, 0x07,
+ 0x08, 0x00, 0x02, 0x08, 0x35, 0x50, 0x00, 0x22,
+ 0x07, 0x08, 0x00, 0x02, 0x08, 0x36, 0x50, 0x00,
+ 0x22, 0x07, 0x08, 0x00, 0x02, 0x08, 0x37, 0x50,
+ 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08, 0x35,
+ 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08,
+ 0x34, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02,
+ 0x08, 0x33, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00,
+ 0x02, 0x08, 0x35, 0x50, 0x00, 0x22, 0x07, 0x08,
+ 0x00, 0x02, 0x08, 0x36, 0x50, 0x00, 0x22, 0x07,
+ 0x08, 0x00, 0x02, 0x08, 0x37, 0x50, 0x00, 0x22,
+ 0x07, 0x08, 0x00, 0x06, 0x1E, 0x00, 0x10, 0x26,
+ 0x78, 0x00, 0x3A, 0x0F, 0x02, 0x08, 0x38, 0x50,
+ 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08, 0x39,
+ 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08,
+ 0x3A, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02,
+ 0x08, 0x38, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00,
+ 0x02, 0x08, 0x3B, 0x50, 0x00, 0x22, 0x07, 0x08,
+ 0x00, 0x06, 0x0A, 0x00, 0x02, 0x08, 0x39, 0x50,
+ 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08, 0x38,
+ 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08,
+ 0x39, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02,
+ 0x08, 0x3A, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00,
+ 0x06, 0x3C, 0x00, 0x11, 0x02, 0x08, 0x33, 0x50,
+ 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08, 0x32,
+ 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08,
+ 0x31, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02,
+ 0x08, 0x30, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00,
+ 0x02, 0x08, 0x2F, 0x50, 0x00, 0x22, 0x07, 0x08,
+ 0x00, 0x02, 0x08, 0x2E, 0x50, 0x00, 0x22, 0x07,
+ 0x08, 0x00, 0x02, 0x08, 0x2D, 0x50, 0x00, 0x22,
+ 0x07, 0x08, 0x00, 0x06, 0x1E, 0x00, 0x02, 0x08,
+ 0x2E, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02,
+ 0x08, 0x2F, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00,
+ 0x02, 0x08, 0x30, 0x50, 0x00, 0x22, 0x07, 0x08,
+ 0x00, 0x02, 0x08, 0x31, 0x50, 0x00, 0x22, 0x07,
+ 0x08, 0x00, 0x02, 0x08, 0x32, 0x50, 0x00, 0x22,
+ 0x07, 0x08, 0x00, 0x02, 0x08, 0x33, 0x50, 0x00,
+ 0x22, 0x07, 0x08, 0x00, 0x02, 0x08, 0x41, 0x50,
+ 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08, 0x42,
+ 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08,
+ 0x43, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02,
+ 0x08, 0x44, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00,
+ 0x02, 0x08, 0x45, 0x50, 0x00, 0x22, 0x07, 0x08,
+ 0x00, 0x02, 0x08, 0x46, 0x50, 0x00, 0x22, 0x07,
+ 0x08, 0x00, 0x06, 0x0A, 0x00, 0x10, 0x27, 0x5A,
+ 0x00, 0x3A, 0x02, 0x02, 0x08, 0x4E, 0x50, 0x00,
+ 0x22, 0x07, 0x08, 0x00, 0x02, 0x08, 0x4F, 0x50,
+ 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08, 0x50,
+ 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08,
+ 0x51, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02,
+ 0x08, 0x52, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00,
+ 0x02, 0x08, 0x53, 0x50, 0x00, 0x22, 0x07, 0x08,
+ 0x00, 0x02, 0x08, 0x54, 0x50, 0x00, 0x22, 0x07,
+ 0x08, 0x00, 0x02, 0x08, 0x55, 0x50, 0x00, 0x22,
+ 0x07, 0x08, 0x00, 0x06, 0x78, 0x00, 0x10, 0x28,
+ 0x78, 0x00, 0x3A, 0x0F, 0x0A, 0x05, 0x02, 0x08,
+ 0x59, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02,
+ 0x08, 0x5A, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00,
+ 0x02, 0x08, 0x5B, 0x50, 0x00, 0x22, 0x07, 0x08,
+ 0x00, 0x02, 0x08, 0x5C, 0x50, 0x00, 0x22, 0x07,
+ 0x08, 0x00, 0x02, 0x08, 0x5D, 0x50, 0x00, 0x22,
+ 0x07, 0x08, 0x00, 0x0B, 0x05, 0x01, 0x00, 0x06,
+ 0x28, 0x00, 0x10, 0x29, 0x78, 0x00, 0x3A, 0x0F,
+ 0x0A, 0x06, 0x02, 0x08, 0x59, 0x50, 0x00, 0x22,
+ 0x07, 0x08, 0x00, 0x02, 0x08, 0x5A, 0x50, 0x00,
+ 0x22, 0x07, 0x08, 0x00, 0x02, 0x08, 0x5B, 0x50,
+ 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08, 0x5C,
+ 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08,
+ 0x5D, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x0B,
+ 0x06, 0x01, 0x00, 0x06, 0x28, 0x00, 0x10, 0x2A,
+ 0x78, 0x00, 0x3A, 0x0F, 0x02, 0x08, 0x5E, 0x50,
+ 0x00, 0x22, 0x07, 0x10, 0x00, 0x02, 0x08, 0x63,
+ 0x50, 0x00, 0x22, 0x07, 0x10, 0x00, 0x06, 0xB4,
+ 0x00, 0x11, 0x18, 0x69, 0x02, 0x08, 0x64, 0x50,
+ 0x00, 0x22, 0x07, 0x10, 0x00, 0x02, 0x08, 0x65,
+ 0x50, 0x00, 0x22, 0x07, 0x10, 0x00, 0x18, 0x74,
+ 0x02, 0x08, 0x66, 0x50, 0x00, 0x22, 0x07, 0x10,
+ 0x00, 0x02, 0x08, 0x67, 0x50, 0x00, 0x22, 0x07,
+ 0x10, 0x00, 0x18, 0x75, 0x02, 0x08, 0x68, 0x50,
+ 0x00, 0x22, 0x07, 0x10, 0x00, 0x02, 0x08, 0x69,
+ 0x50, 0x00, 0x22, 0x07, 0x10, 0x00, 0x10, 0x2B,
+ 0x96, 0x00, 0x1C, 0x22, 0x0A, 0x06, 0x02, 0x08,
+ 0x6B, 0x50, 0x00, 0x22, 0x07, 0x10, 0x00, 0x02,
+ 0x08, 0x6C, 0x50, 0x00, 0x22, 0x07, 0x10, 0x00,
+ 0x02, 0x08, 0x6D, 0x50, 0x00, 0x22, 0x07, 0x10,
+ 0x00, 0x02, 0x08, 0x6E, 0x50, 0x00, 0x22, 0x07,
+ 0x10, 0x00, 0x02, 0x08, 0x6F, 0x50, 0x00, 0x22,
+ 0x07, 0x10, 0x00, 0x02, 0x08, 0x70, 0x50, 0x00,
+ 0x22, 0x07, 0x10, 0x00, 0x02, 0x08, 0x71, 0x50,
+ 0x00, 0x22, 0x07, 0x10, 0x00, 0x0B, 0x06, 0x01,
+ 0x00, 0x06, 0x1E, 0x00, 0x10, 0x2C, 0x96, 0x00,
+ 0x1C, 0x22, 0x0A, 0x06, 0x02, 0x08, 0x6B, 0x50,
+ 0x00, 0x22, 0x07, 0x10, 0x00, 0x02, 0x08, 0x6C,
+ 0x50, 0x00, 0x22, 0x07, 0x10, 0x00, 0x02, 0x08,
+ 0x6D, 0x50, 0x00, 0x22, 0x07, 0x10, 0x00, 0x02,
+ 0x08, 0x6E, 0x50, 0x00, 0x22, 0x07, 0x10, 0x00,
+ 0x02, 0x08, 0x6F, 0x50, 0x00, 0x22, 0x07, 0x10,
+ 0x00, 0x02, 0x08, 0x70, 0x50, 0x00, 0x22, 0x07,
+ 0x10, 0x00, 0x02, 0x08, 0x71, 0x50, 0x00, 0x22,
+ 0x07, 0x10, 0x00, 0x0B, 0x06, 0x01, 0x00, 0x06,
+ 0x1E, 0x00, 0x10, 0x2D, 0x96, 0x00, 0x1C, 0x22,
+ 0x0A, 0x06, 0x02, 0x08, 0x6B, 0x50, 0x00, 0x22,
+ 0x07, 0x10, 0x00, 0x02, 0x08, 0x6C, 0x50, 0x00,
+ 0x22, 0x07, 0x10, 0x00, 0x02, 0x08, 0x6D, 0x50,
+ 0x00, 0x22, 0x07, 0x10, 0x00, 0x02, 0x08, 0x6E,
+ 0x50, 0x00, 0x22, 0x07, 0x10, 0x00, 0x02, 0x08,
+ 0x6F, 0x50, 0x00, 0x22, 0x07, 0x10, 0x00, 0x02,
+ 0x08, 0x70, 0x50, 0x00, 0x22, 0x07, 0x10, 0x00,
+ 0x02, 0x08, 0x71, 0x50, 0x00, 0x22, 0x07, 0x10,
+ 0x00, 0x0B, 0x06, 0x01, 0x00, 0x06, 0x1E, 0x00,
+ 0x02, 0x08, 0x72, 0x50, 0x00, 0x22, 0x07, 0x10,
+ 0x00, 0x02, 0x08, 0x73, 0x50, 0x00, 0x22, 0x07,
+ 0x10, 0x00, 0x06, 0x14, 0x00, 0x02, 0x08, 0x74,
+ 0x50, 0x00, 0x22, 0x07, 0x10, 0x00, 0x02, 0x08,
+ 0x75, 0x50, 0x00, 0x22, 0x07, 0x10, 0x00, 0x06,
+ 0x78, 0x00, 0x13, 0x0E, 0x01, 0x08, 0x1D
+};
+
+static const ByteProvider k1OutroReunionSeqFMTownsProvider = { ARRAYSIZE(k1OutroReunionSeqFMTowns), k1OutroReunionSeqFMTowns };
+
+static const byte k1TownsMusicFadeTableFMTowns[1416] = {
+ 0x6E, 0x00, 0x6E, 0x00, 0x6E, 0x00, 0x6E, 0x00,
+ 0x6E, 0x00, 0x00, 0x00, 0x32, 0x00, 0x32, 0x00,
+ 0x24, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x6A, 0x00, 0x70, 0x00, 0x70, 0x00, 0x64, 0x00,
+ 0x64, 0x00, 0x00, 0x00, 0x32, 0x00, 0x30, 0x00,
+ 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x68, 0x00, 0x68, 0x00, 0x6C, 0x00, 0x6C, 0x00,
+ 0x6C, 0x00, 0x6E, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x6E, 0x00, 0x66, 0x00, 0x64, 0x00, 0x64, 0x00,
+ 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x6A, 0x00, 0x6A, 0x00, 0x66, 0x00, 0x66, 0x00,
+ 0x66, 0x00, 0x6A, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x6C, 0x00, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x6E, 0x00, 0x72, 0x00, 0x6A, 0x00, 0x6A, 0x00,
+ 0x6A, 0x00, 0x6A, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x6A, 0x00,
+ 0x6A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x68, 0x00, 0x68, 0x00, 0x68, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x6C, 0x00, 0x6C, 0x00, 0x6A, 0x00, 0x6C, 0x00,
+ 0x6C, 0x00, 0x6C, 0x00, 0x2E, 0x00, 0x2A, 0x00,
+ 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x70, 0x00, 0x6C, 0x00, 0x6C, 0x00, 0x70, 0x00,
+ 0x70, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x6C, 0x00, 0x6C, 0x00, 0x6C, 0x00, 0x6C, 0x00,
+ 0x66, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x6C, 0x00, 0x6A, 0x00, 0x72, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x62, 0x00, 0x62, 0x00, 0x62, 0x00, 0x64, 0x00,
+ 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x64, 0x00, 0x64, 0x00, 0x70, 0x00, 0x62, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00,
+ 0x70, 0x00, 0x70, 0x00, 0x30, 0x00, 0x28, 0x00,
+ 0x20, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x68, 0x00, 0x68, 0x00, 0x68, 0x00, 0x62, 0x00,
+ 0x62, 0x00, 0x00, 0x00, 0x28, 0x00, 0x28, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x74, 0x00, 0x74, 0x00, 0x74, 0x00, 0x74, 0x00,
+ 0x74, 0x00, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x68, 0x00, 0x68, 0x00, 0x68, 0x00, 0x68, 0x00,
+ 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x5A, 0x00,
+ 0x5C, 0x00, 0x00, 0x00, 0x28, 0x00, 0x24, 0x00,
+ 0x28, 0x00, 0x2C, 0x00, 0x14, 0x00, 0x00, 0x00,
+ 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x6A, 0x00,
+ 0x6A, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x50, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x68, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x66, 0x00, 0x66, 0x00, 0x62, 0x00, 0x6E, 0x00,
+ 0x6C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00,
+ 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x6C, 0x00, 0x6C, 0x00, 0x6C, 0x00, 0x6C, 0x00,
+ 0x6C, 0x00, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x6E, 0x00, 0x6E, 0x00, 0x6E, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x64, 0x00, 0x64, 0x00, 0x64, 0x00, 0x64, 0x00,
+ 0x64, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x68, 0x00, 0x70, 0x00, 0x66, 0x00, 0x66, 0x00,
+ 0x66, 0x00, 0x00, 0x00, 0x28, 0x00, 0x28, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x70, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x6A, 0x00, 0x6A, 0x00, 0x72, 0x00, 0x72, 0x00,
+ 0x72, 0x00, 0x00, 0x00, 0x32, 0x00, 0x2A, 0x00,
+ 0x1E, 0x00, 0x34, 0x00, 0x1E, 0x00, 0x28, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00,
+ 0x70, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x6C, 0x00, 0x62, 0x00, 0x6C, 0x00, 0x62, 0x00,
+ 0x62, 0x00, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x6E, 0x00, 0x6E, 0x00, 0x70, 0x00, 0x6C, 0x00,
+ 0x70, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x6C, 0x00, 0x6C, 0x00, 0x6C, 0x00, 0x6C, 0x00,
+ 0x6C, 0x00, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x6C, 0x00, 0x6C, 0x00, 0x6C, 0x00, 0x6C, 0x00,
+ 0x6C, 0x00, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x70, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00,
+ 0x70, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x46, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x76, 0x00, 0x76, 0x00, 0x76, 0x00, 0x76, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x69, 0x00, 0x64, 0x00, 0x69, 0x00, 0x64, 0x00,
+ 0x69, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x6C, 0x00, 0x6C, 0x00, 0x66, 0x00, 0x66, 0x00,
+ 0x66, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x6E, 0x00, 0x6E, 0x00, 0x6E, 0x00, 0x6E, 0x00,
+ 0x6E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x6E, 0x00, 0x6E, 0x00, 0x6E, 0x00, 0x6E, 0x00,
+ 0x6E, 0x00, 0x6E, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x6E, 0x00, 0x6E, 0x00, 0x6E, 0x00, 0x6E, 0x00,
+ 0x6E, 0x00, 0x6E, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x6C, 0x00, 0x6C, 0x00, 0x6C, 0x00, 0x6C, 0x00,
+ 0x6C, 0x00, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0x66, 0x00,
+ 0x66, 0x00, 0x66, 0x00, 0x38, 0x00, 0x24, 0x00,
+ 0x14, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x6C, 0x00, 0x6C, 0x00, 0x6C, 0x00, 0x6C, 0x00,
+ 0x6C, 0x00, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x76, 0x00, 0x64, 0x00, 0x6A, 0x00, 0x6A, 0x00,
+ 0x6A, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00,
+ 0x70, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00,
+ 0x70, 0x00, 0x70, 0x00, 0x4C, 0x00, 0x4C, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x66, 0x00, 0x66, 0x00, 0x68, 0x00, 0x5E, 0x00,
+ 0x78, 0x00, 0x6E, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x68, 0x00, 0x68, 0x00, 0x68, 0x00, 0x68, 0x00,
+ 0x68, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const ByteProvider k1TownsMusicFadeTableFMTownsProvider = { ARRAYSIZE(k1TownsMusicFadeTableFMTowns), k1TownsMusicFadeTableFMTowns };
+
+static const byte k1TownsSFXwdTableFMTowns[75266] = {
+ 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00,
+ 0x06, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0A, 0x00,
+ 0x02, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x02, 0x00,
+ 0x01, 0x00, 0x12, 0x00, 0x02, 0x00, 0x03, 0x00,
+ 0x16, 0x00, 0x02, 0x00, 0x05, 0x00, 0x1A, 0x00,
+ 0x03, 0x00, 0x07, 0x00, 0x1E, 0x00, 0x04, 0x00,
+ 0x00, 0x00, 0xFE, 0xFF, 0x02, 0x00, 0x00, 0x00,
+ 0xFA, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xF6, 0xFF,
+ 0x02, 0x00, 0x00, 0x00, 0xF2, 0xFF, 0x02, 0x00,
+ 0x01, 0x00, 0xEE, 0xFF, 0x02, 0x00, 0x03, 0x00,
+ 0xEA, 0xFF, 0x02, 0x00, 0x05, 0x00, 0xE6, 0xFF,
+ 0x03, 0x00, 0x07, 0x00, 0xE2, 0xFF, 0x04, 0x00,
+ 0x00, 0x00, 0x02, 0x00, 0x06, 0x00, 0x00, 0x00,
+ 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0A, 0x00,
+ 0x06, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x06, 0x00,
+ 0x01, 0x00, 0x12, 0x00, 0x06, 0x00, 0x03, 0x00,
+ 0x16, 0x00, 0x07, 0x00, 0x05, 0x00, 0x1A, 0x00,
+ 0x0A, 0x00, 0x07, 0x00, 0x1E, 0x00, 0x0C, 0x00,
+ 0x00, 0x00, 0xFE, 0xFF, 0x06, 0x00, 0x00, 0x00,
+ 0xFA, 0xFF, 0x06, 0x00, 0x00, 0x00, 0xF6, 0xFF,
+ 0x06, 0x00, 0x00, 0x00, 0xF2, 0xFF, 0x06, 0x00,
+ 0x01, 0x00, 0xEE, 0xFF, 0x06, 0x00, 0x03, 0x00,
+ 0xEA, 0xFF, 0x07, 0x00, 0x05, 0x00, 0xE6, 0xFF,
+ 0x0A, 0x00, 0x07, 0x00, 0xE2, 0xFF, 0x0C, 0x00,
+ 0x00, 0x00, 0x02, 0x00, 0x0A, 0x00, 0x00, 0x00,
+ 0x06, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0A, 0x00,
+ 0x0A, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x0A, 0x00,
+ 0x01, 0x00, 0x12, 0x00, 0x0B, 0x00, 0x03, 0x00,
+ 0x16, 0x00, 0x0D, 0x00, 0x05, 0x00, 0x1A, 0x00,
+ 0x11, 0x00, 0x07, 0x00, 0x1E, 0x00, 0x15, 0x00,
+ 0x00, 0x00, 0xFE, 0xFF, 0x0A, 0x00, 0x00, 0x00,
+ 0xFA, 0xFF, 0x0A, 0x00, 0x00, 0x00, 0xF6, 0xFF,
+ 0x0A, 0x00, 0x00, 0x00, 0xF2, 0xFF, 0x0A, 0x00,
+ 0x01, 0x00, 0xEE, 0xFF, 0x0B, 0x00, 0x03, 0x00,
+ 0xEA, 0xFF, 0x0D, 0x00, 0x05, 0x00, 0xE6, 0xFF,
+ 0x11, 0x00, 0x07, 0x00, 0xE2, 0xFF, 0x15, 0x00,
+ 0x00, 0x00, 0x02, 0x00, 0x0E, 0x00, 0x00, 0x00,
+ 0x06, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0A, 0x00,
+ 0x0E, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x0E, 0x00,
+ 0x01, 0x00, 0x12, 0x00, 0x0F, 0x00, 0x03, 0x00,
+ 0x16, 0x00, 0x12, 0x00, 0x05, 0x00, 0x1A, 0x00,
+ 0x18, 0x00, 0x07, 0x00, 0x1E, 0x00, 0x1D, 0x00,
+ 0x00, 0x00, 0xFE, 0xFF, 0x0E, 0x00, 0x00, 0x00,
+ 0xFA, 0xFF, 0x0E, 0x00, 0x00, 0x00, 0xF6, 0xFF,
+ 0x0E, 0x00, 0x00, 0x00, 0xF2, 0xFF, 0x0E, 0x00,
+ 0x01, 0x00, 0xEE, 0xFF, 0x0F, 0x00, 0x03, 0x00,
+ 0xEA, 0xFF, 0x12, 0x00, 0x05, 0x00, 0xE6, 0xFF,
+ 0x18, 0x00, 0x07, 0x00, 0xE2, 0xFF, 0x1D, 0x00,
+ 0x02, 0x00, 0x02, 0x00, 0x12, 0x00, 0x02, 0x00,
+ 0x06, 0x00, 0x12, 0x00, 0x02, 0x00, 0x0A, 0x00,
+ 0x12, 0x00, 0x02, 0x00, 0x0E, 0x00, 0x12, 0x00,
+ 0x04, 0x00, 0x12, 0x00, 0x15, 0x00, 0x06, 0x00,
+ 0x16, 0x00, 0x19, 0x00, 0x08, 0x00, 0x1A, 0x00,
+ 0x1F, 0x00, 0x0A, 0x00, 0x1E, 0x00, 0x26, 0x00,
+ 0x02, 0x00, 0xFE, 0xFF, 0x12, 0x00, 0x02, 0x00,
+ 0xFA, 0xFF, 0x12, 0x00, 0x02, 0x00, 0xF6, 0xFF,
+ 0x12, 0x00, 0x02, 0x00, 0xF2, 0xFF, 0x12, 0x00,
+ 0x04, 0x00, 0xEE, 0xFF, 0x15, 0x00, 0x06, 0x00,
+ 0xEA, 0xFF, 0x19, 0x00, 0x08, 0x00, 0xE6, 0xFF,
+ 0x1F, 0x00, 0x0A, 0x00, 0xE2, 0xFF, 0x26, 0x00,
+ 0x04, 0x00, 0x02, 0x00, 0x16, 0x00, 0x04, 0x00,
+ 0x06, 0x00, 0x16, 0x00, 0x04, 0x00, 0x0A, 0x00,
+ 0x16, 0x00, 0x04, 0x00, 0x0E, 0x00, 0x16, 0x00,
+ 0x06, 0x00, 0x12, 0x00, 0x19, 0x00, 0x08, 0x00,
+ 0x16, 0x00, 0x1E, 0x00, 0x0A, 0x00, 0x1A, 0x00,
+ 0x26, 0x00, 0x0C, 0x00, 0x1E, 0x00, 0x2E, 0x00,
+ 0x04, 0x00, 0xFE, 0xFF, 0x16, 0x00, 0x04, 0x00,
+ 0xFA, 0xFF, 0x16, 0x00, 0x04, 0x00, 0xF6, 0xFF,
+ 0x16, 0x00, 0x04, 0x00, 0xF2, 0xFF, 0x16, 0x00,
+ 0x06, 0x00, 0xEE, 0xFF, 0x19, 0x00, 0x08, 0x00,
+ 0xEA, 0xFF, 0x1E, 0x00, 0x0A, 0x00, 0xE6, 0xFF,
+ 0x26, 0x00, 0x0C, 0x00, 0xE2, 0xFF, 0x2E, 0x00,
+ 0x06, 0x00, 0x02, 0x00, 0x1A, 0x00, 0x06, 0x00,
+ 0x06, 0x00, 0x1A, 0x00, 0x06, 0x00, 0x0A, 0x00,
+ 0x1A, 0x00, 0x06, 0x00, 0x0E, 0x00, 0x1A, 0x00,
+ 0x08, 0x00, 0x12, 0x00, 0x1E, 0x00, 0x0A, 0x00,
+ 0x16, 0x00, 0x24, 0x00, 0x0C, 0x00, 0x1A, 0x00,
+ 0x2D, 0x00, 0x0E, 0x00, 0x1E, 0x00, 0x37, 0x00,
+ 0x06, 0x00, 0xFE, 0xFF, 0x1A, 0x00, 0x06, 0x00,
+ 0xFA, 0xFF, 0x1A, 0x00, 0x06, 0x00, 0xF6, 0xFF,
+ 0x1A, 0x00, 0x06, 0x00, 0xF2, 0xFF, 0x1A, 0x00,
+ 0x08, 0x00, 0xEE, 0xFF, 0x1E, 0x00, 0x0A, 0x00,
+ 0xEA, 0xFF, 0x24, 0x00, 0x0C, 0x00, 0xE6, 0xFF,
+ 0x2D, 0x00, 0x0E, 0x00, 0xE2, 0xFF, 0x37, 0x00,
+ 0x08, 0x00, 0x02, 0x00, 0x1E, 0x00, 0x08, 0x00,
+ 0x06, 0x00, 0x1E, 0x00, 0x08, 0x00, 0x0A, 0x00,
+ 0x1E, 0x00, 0x08, 0x00, 0x0E, 0x00, 0x1E, 0x00,
+ 0x0A, 0x00, 0x12, 0x00, 0x22, 0x00, 0x0C, 0x00,
+ 0x16, 0x00, 0x29, 0x00, 0x0E, 0x00, 0x1A, 0x00,
+ 0x34, 0x00, 0x10, 0x00, 0x1E, 0x00, 0x3F, 0x00,
+ 0x08, 0x00, 0xFE, 0xFF, 0x1E, 0x00, 0x08, 0x00,
+ 0xFA, 0xFF, 0x1E, 0x00, 0x08, 0x00, 0xF6, 0xFF,
+ 0x1E, 0x00, 0x08, 0x00, 0xF2, 0xFF, 0x1E, 0x00,
+ 0x0A, 0x00, 0xEE, 0xFF, 0x22, 0x00, 0x0C, 0x00,
+ 0xEA, 0xFF, 0x29, 0x00, 0x0E, 0x00, 0xE6, 0xFF,
+ 0x34, 0x00, 0x10, 0x00, 0xE2, 0xFF, 0x3F, 0x00,
+ 0x00, 0x00, 0x02, 0x00, 0xFE, 0xFF, 0x00, 0x00,
+ 0x06, 0x00, 0xFE, 0xFF, 0x00, 0x00, 0x0A, 0x00,
+ 0xFE, 0xFF, 0x00, 0x00, 0x0E, 0x00, 0xFE, 0xFF,
+ 0x01, 0x00, 0x12, 0x00, 0xFE, 0xFF, 0x03, 0x00,
+ 0x16, 0x00, 0xFE, 0xFF, 0x05, 0x00, 0x1A, 0x00,
+ 0xFD, 0xFF, 0x07, 0x00, 0x1E, 0x00, 0xFC, 0xFF,
+ 0x00, 0x00, 0xFE, 0xFF, 0xFE, 0xFF, 0x00, 0x00,
+ 0xFA, 0xFF, 0xFE, 0xFF, 0x00, 0x00, 0xF6, 0xFF,
+ 0xFE, 0xFF, 0x00, 0x00, 0xF2, 0xFF, 0xFE, 0xFF,
+ 0x01, 0x00, 0xEE, 0xFF, 0xFE, 0xFF, 0x03, 0x00,
+ 0xEA, 0xFF, 0xFE, 0xFF, 0x05, 0x00, 0xE6, 0xFF,
+ 0xFD, 0xFF, 0x07, 0x00, 0xE2, 0xFF, 0xFC, 0xFF,
+ 0x00, 0x00, 0x02, 0x00, 0xFA, 0xFF, 0x00, 0x00,
+ 0x06, 0x00, 0xFA, 0xFF, 0x00, 0x00, 0x0A, 0x00,
+ 0xFA, 0xFF, 0x00, 0x00, 0x0E, 0x00, 0xFA, 0xFF,
+ 0x01, 0x00, 0x12, 0x00, 0xFA, 0xFF, 0x03, 0x00,
+ 0x16, 0x00, 0xF9, 0xFF, 0x05, 0x00, 0x1A, 0x00,
+ 0xF6, 0xFF, 0x07, 0x00, 0x1E, 0x00, 0xF4, 0xFF,
+ 0x00, 0x00, 0xFE, 0xFF, 0xFA, 0xFF, 0x00, 0x00,
+ 0xFA, 0xFF, 0xFA, 0xFF, 0x00, 0x00, 0xF6, 0xFF,
+ 0xFA, 0xFF, 0x00, 0x00, 0xF2, 0xFF, 0xFA, 0xFF,
+ 0x01, 0x00, 0xEE, 0xFF, 0xFA, 0xFF, 0x03, 0x00,
+ 0xEA, 0xFF, 0xF9, 0xFF, 0x05, 0x00, 0xE6, 0xFF,
+ 0xF6, 0xFF, 0x07, 0x00, 0xE2, 0xFF, 0xF4, 0xFF,
+ 0x00, 0x00, 0x02, 0x00, 0xF6, 0xFF, 0x00, 0x00,
+ 0x06, 0x00, 0xF6, 0xFF, 0x00, 0x00, 0x0A, 0x00,
+ 0xF6, 0xFF, 0x00, 0x00, 0x0E, 0x00, 0xF6, 0xFF,
+ 0x01, 0x00, 0x12, 0x00, 0xF5, 0xFF, 0x03, 0x00,
+ 0x16, 0x00, 0xF3, 0xFF, 0x05, 0x00, 0x1A, 0x00,
+ 0xEF, 0xFF, 0x07, 0x00, 0x1E, 0x00, 0xEB, 0xFF,
+ 0x00, 0x00, 0xFE, 0xFF, 0xF6, 0xFF, 0x00, 0x00,
+ 0xFA, 0xFF, 0xF6, 0xFF, 0x00, 0x00, 0xF6, 0xFF,
+ 0xF6, 0xFF, 0x00, 0x00, 0xF2, 0xFF, 0xF6, 0xFF,
+ 0x01, 0x00, 0xEE, 0xFF, 0xF5, 0xFF, 0x03, 0x00,
+ 0xEA, 0xFF, 0xF3, 0xFF, 0x05, 0x00, 0xE6, 0xFF,
+ 0xEF, 0xFF, 0x07, 0x00, 0xE2, 0xFF, 0xEB, 0xFF,
+ 0x00, 0x00, 0x02, 0x00, 0xF2, 0xFF, 0x00, 0x00,
+ 0x06, 0x00, 0xF2, 0xFF, 0x00, 0x00, 0x0A, 0x00,
+ 0xF2, 0xFF, 0x00, 0x00, 0x0E, 0x00, 0xF2, 0xFF,
+ 0x01, 0x00, 0x12, 0x00, 0xF1, 0xFF, 0x03, 0x00,
+ 0x16, 0x00, 0xEE, 0xFF, 0x05, 0x00, 0x1A, 0x00,
+ 0xE8, 0xFF, 0x07, 0x00, 0x1E, 0x00, 0xE3, 0xFF,
+ 0x00, 0x00, 0xFE, 0xFF, 0xF2, 0xFF, 0x00, 0x00,
+ 0xFA, 0xFF, 0xF2, 0xFF, 0x00, 0x00, 0xF6, 0xFF,
+ 0xF2, 0xFF, 0x00, 0x00, 0xF2, 0xFF, 0xF2, 0xFF,
+ 0x01, 0x00, 0xEE, 0xFF, 0xF1, 0xFF, 0x03, 0x00,
+ 0xEA, 0xFF, 0xEE, 0xFF, 0x05, 0x00, 0xE6, 0xFF,
+ 0xE8, 0xFF, 0x07, 0x00, 0xE2, 0xFF, 0xE3, 0xFF,
+ 0x02, 0x00, 0x02, 0x00, 0xEE, 0xFF, 0x02, 0x00,
+ 0x06, 0x00, 0xEE, 0xFF, 0x02, 0x00, 0x0A, 0x00,
+ 0xEE, 0xFF, 0x02, 0x00, 0x0E, 0x00, 0xEE, 0xFF,
+ 0x04, 0x00, 0x12, 0x00, 0xEB, 0xFF, 0x06, 0x00,
+ 0x16, 0x00, 0xE7, 0xFF, 0x08, 0x00, 0x1A, 0x00,
+ 0xE1, 0xFF, 0x0A, 0x00, 0x1E, 0x00, 0xDA, 0xFF,
+ 0x02, 0x00, 0xFE, 0xFF, 0xEE, 0xFF, 0x02, 0x00,
+ 0xFA, 0xFF, 0xEE, 0xFF, 0x02, 0x00, 0xF6, 0xFF,
+ 0xEE, 0xFF, 0x02, 0x00, 0xF2, 0xFF, 0xEE, 0xFF,
+ 0x04, 0x00, 0xEE, 0xFF, 0xEB, 0xFF, 0x06, 0x00,
+ 0xEA, 0xFF, 0xE7, 0xFF, 0x08, 0x00, 0xE6, 0xFF,
+ 0xE1, 0xFF, 0x0A, 0x00, 0xE2, 0xFF, 0xDA, 0xFF,
+ 0x04, 0x00, 0x02, 0x00, 0xEA, 0xFF, 0x04, 0x00,
+ 0x06, 0x00, 0xEA, 0xFF, 0x04, 0x00, 0x0A, 0x00,
+ 0xEA, 0xFF, 0x04, 0x00, 0x0E, 0x00, 0xEA, 0xFF,
+ 0x06, 0x00, 0x12, 0x00, 0xE7, 0xFF, 0x08, 0x00,
+ 0x16, 0x00, 0xE2, 0xFF, 0x0A, 0x00, 0x1A, 0x00,
+ 0xDA, 0xFF, 0x0C, 0x00, 0x1E, 0x00, 0xD2, 0xFF,
+ 0x04, 0x00, 0xFE, 0xFF, 0xEA, 0xFF, 0x04, 0x00,
+ 0xFA, 0xFF, 0xEA, 0xFF, 0x04, 0x00, 0xF6, 0xFF,
+ 0xEA, 0xFF, 0x04, 0x00, 0xF2, 0xFF, 0xEA, 0xFF,
+ 0x06, 0x00, 0xEE, 0xFF, 0xE7, 0xFF, 0x08, 0x00,
+ 0xEA, 0xFF, 0xE2, 0xFF, 0x0A, 0x00, 0xE6, 0xFF,
+ 0xDA, 0xFF, 0x0C, 0x00, 0xE2, 0xFF, 0xD2, 0xFF,
+ 0x06, 0x00, 0x02, 0x00, 0xE6, 0xFF, 0x06, 0x00,
+ 0x06, 0x00, 0xE6, 0xFF, 0x06, 0x00, 0x0A, 0x00,
+ 0xE6, 0xFF, 0x06, 0x00, 0x0E, 0x00, 0xE6, 0xFF,
+ 0x08, 0x00, 0x12, 0x00, 0xE2, 0xFF, 0x0A, 0x00,
+ 0x16, 0x00, 0xDC, 0xFF, 0x0C, 0x00, 0x1A, 0x00,
+ 0xD3, 0xFF, 0x0E, 0x00, 0x1E, 0x00, 0xC9, 0xFF,
+ 0x06, 0x00, 0xFE, 0xFF, 0xE6, 0xFF, 0x06, 0x00,
+ 0xFA, 0xFF, 0xE6, 0xFF, 0x06, 0x00, 0xF6, 0xFF,
+ 0xE6, 0xFF, 0x06, 0x00, 0xF2, 0xFF, 0xE6, 0xFF,
+ 0x08, 0x00, 0xEE, 0xFF, 0xE2, 0xFF, 0x0A, 0x00,
+ 0xEA, 0xFF, 0xDC, 0xFF, 0x0C, 0x00, 0xE6, 0xFF,
+ 0xD3, 0xFF, 0x0E, 0x00, 0xE2, 0xFF, 0xC9, 0xFF,
+ 0x08, 0x00, 0x02, 0x00, 0xE2, 0xFF, 0x08, 0x00,
+ 0x06, 0x00, 0xE2, 0xFF, 0x08, 0x00, 0x0A, 0x00,
+ 0xE2, 0xFF, 0x08, 0x00, 0x0E, 0x00, 0xE2, 0xFF,
+ 0x0A, 0x00, 0x12, 0x00, 0xDE, 0xFF, 0x0C, 0x00,
+ 0x16, 0x00, 0xD7, 0xFF, 0x0E, 0x00, 0x1A, 0x00,
+ 0xCC, 0xFF, 0x10, 0x00, 0x1E, 0x00, 0xC1, 0xFF,
+ 0x08, 0x00, 0xFE, 0xFF, 0xE2, 0xFF, 0x08, 0x00,
+ 0xFA, 0xFF, 0xE2, 0xFF, 0x08, 0x00, 0xF6, 0xFF,
+ 0xE2, 0xFF, 0x08, 0x00, 0xF2, 0xFF, 0xE2, 0xFF,
+ 0x0A, 0x00, 0xEE, 0xFF, 0xDE, 0xFF, 0x0C, 0x00,
+ 0xEA, 0xFF, 0xD7, 0xFF, 0x0E, 0x00, 0xE6, 0xFF,
+ 0xCC, 0xFF, 0x10, 0x00, 0xE2, 0xFF, 0xC1, 0xFF,
+ 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00,
+ 0x06, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0A, 0x00,
+ 0x02, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x02, 0x00,
+ 0x02, 0x00, 0x13, 0x00, 0x02, 0x00, 0x04, 0x00,
+ 0x17, 0x00, 0x03, 0x00, 0x06, 0x00, 0x1B, 0x00,
+ 0x03, 0x00, 0x08, 0x00, 0x1F, 0x00, 0x04, 0x00,
+ 0x00, 0x00, 0xFE, 0xFF, 0x02, 0x00, 0x00, 0x00,
+ 0xFA, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xF6, 0xFF,
+ 0x02, 0x00, 0x00, 0x00, 0xF2, 0xFF, 0x02, 0x00,
+ 0x02, 0x00, 0xED, 0xFF, 0x02, 0x00, 0x04, 0x00,
+ 0xE9, 0xFF, 0x03, 0x00, 0x06, 0x00, 0xE5, 0xFF,
+ 0x03, 0x00, 0x08, 0x00, 0xE1, 0xFF, 0x04, 0x00,
+ 0x00, 0x00, 0x02, 0x00, 0x06, 0x00, 0x00, 0x00,
+ 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0A, 0x00,
+ 0x06, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x06, 0x00,
+ 0x02, 0x00, 0x13, 0x00, 0x07, 0x00, 0x04, 0x00,
+ 0x17, 0x00, 0x09, 0x00, 0x06, 0x00, 0x1B, 0x00,
+ 0x0A, 0x00, 0x08, 0x00, 0x1F, 0x00, 0x0D, 0x00,
+ 0x00, 0x00, 0xFE, 0xFF, 0x06, 0x00, 0x00, 0x00,
+ 0xFA, 0xFF, 0x06, 0x00, 0x00, 0x00, 0xF6, 0xFF,
+ 0x06, 0x00, 0x00, 0x00, 0xF2, 0xFF, 0x06, 0x00,
+ 0x02, 0x00, 0xED, 0xFF, 0x07, 0x00, 0x04, 0x00,
+ 0xE9, 0xFF, 0x09, 0x00, 0x06, 0x00, 0xE5, 0xFF,
+ 0x0A, 0x00, 0x08, 0x00, 0xE1, 0xFF, 0x0D, 0x00,
+ 0x00, 0x00, 0x02, 0x00, 0x0A, 0x00, 0x00, 0x00,
+ 0x06, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0A, 0x00,
+ 0x0A, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x0A, 0x00,
+ 0x02, 0x00, 0x13, 0x00, 0x0C, 0x00, 0x04, 0x00,
+ 0x17, 0x00, 0x0F, 0x00, 0x06, 0x00, 0x1B, 0x00,
+ 0x12, 0x00, 0x08, 0x00, 0x1F, 0x00, 0x16, 0x00,
+ 0x00, 0x00, 0xFE, 0xFF, 0x0A, 0x00, 0x00, 0x00,
+ 0xFA, 0xFF, 0x0A, 0x00, 0x00, 0x00, 0xF6, 0xFF,
+ 0x0A, 0x00, 0x00, 0x00, 0xF2, 0xFF, 0x0A, 0x00,
+ 0x02, 0x00, 0xED, 0xFF, 0x0C, 0x00, 0x04, 0x00,
+ 0xE9, 0xFF, 0x0F, 0x00, 0x06, 0x00, 0xE5, 0xFF,
+ 0x12, 0x00, 0x08, 0x00, 0xE1, 0xFF, 0x16, 0x00,
+ 0x00, 0x00, 0x02, 0x00, 0x0E, 0x00, 0x00, 0x00,
+ 0x06, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0A, 0x00,
+ 0x0E, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x0E, 0x00,
+ 0x02, 0x00, 0x13, 0x00, 0x11, 0x00, 0x04, 0x00,
+ 0x17, 0x00, 0x15, 0x00, 0x06, 0x00, 0x1B, 0x00,
+ 0x19, 0x00, 0x08, 0x00, 0x1F, 0x00, 0x1F, 0x00,
+ 0x00, 0x00, 0xFE, 0xFF, 0x0E, 0x00, 0x00, 0x00,
+ 0xFA, 0xFF, 0x0E, 0x00, 0x00, 0x00, 0xF6, 0xFF,
+ 0x0E, 0x00, 0x00, 0x00, 0xF2, 0xFF, 0x0E, 0x00,
+ 0x02, 0x00, 0xED, 0xFF, 0x11, 0x00, 0x04, 0x00,
+ 0xE9, 0xFF, 0x15, 0x00, 0x06, 0x00, 0xE5, 0xFF,
+ 0x19, 0x00, 0x08, 0x00, 0xE1, 0xFF, 0x1F, 0x00,
+ 0x02, 0x00, 0x02, 0x00, 0x12, 0x00, 0x02, 0x00,
+ 0x06, 0x00, 0x12, 0x00, 0x02, 0x00, 0x0A, 0x00,
+ 0x12, 0x00, 0x02, 0x00, 0x0E, 0x00, 0x12, 0x00,
+ 0x05, 0x00, 0x13, 0x00, 0x17, 0x00, 0x07, 0x00,
+ 0x17, 0x00, 0x1C, 0x00, 0x09, 0x00, 0x1B, 0x00,
+ 0x22, 0x00, 0x0B, 0x00, 0x1F, 0x00, 0x29, 0x00,
+ 0x02, 0x00, 0xFE, 0xFF, 0x12, 0x00, 0x02, 0x00,
+ 0xFA, 0xFF, 0x12, 0x00, 0x02, 0x00, 0xF6, 0xFF,
+ 0x12, 0x00, 0x02, 0x00, 0xF2, 0xFF, 0x12, 0x00,
+ 0x05, 0x00, 0xED, 0xFF, 0x17, 0x00, 0x07, 0x00,
+ 0xE9, 0xFF, 0x1C, 0x00, 0x09, 0x00, 0xE5, 0xFF,
+ 0x22, 0x00, 0x0B, 0x00, 0xE1, 0xFF, 0x29, 0x00,
+ 0x04, 0x00, 0x02, 0x00, 0x16, 0x00, 0x04, 0x00,
+ 0x06, 0x00, 0x16, 0x00, 0x04, 0x00, 0x0A, 0x00,
+ 0x16, 0x00, 0x04, 0x00, 0x0E, 0x00, 0x16, 0x00,
+ 0x07, 0x00, 0x13, 0x00, 0x1C, 0x00, 0x09, 0x00,
+ 0x17, 0x00, 0x22, 0x00, 0x0B, 0x00, 0x1B, 0x00,
+ 0x29, 0x00, 0x0D, 0x00, 0x1F, 0x00, 0x32, 0x00,
+ 0x04, 0x00, 0xFE, 0xFF, 0x16, 0x00, 0x04, 0x00,
+ 0xFA, 0xFF, 0x16, 0x00, 0x04, 0x00, 0xF6, 0xFF,
+ 0x16, 0x00, 0x04, 0x00, 0xF2, 0xFF, 0x16, 0x00,
+ 0x07, 0x00, 0xED, 0xFF, 0x1C, 0x00, 0x09, 0x00,
+ 0xE9, 0xFF, 0x22, 0x00, 0x0B, 0x00, 0xE5, 0xFF,
+ 0x29, 0x00, 0x0D, 0x00, 0xE1, 0xFF, 0x32, 0x00,
+ 0x06, 0x00, 0x02, 0x00, 0x1A, 0x00, 0x06, 0x00,
+ 0x06, 0x00, 0x1A, 0x00, 0x06, 0x00, 0x0A, 0x00,
+ 0x1A, 0x00, 0x06, 0x00, 0x0E, 0x00, 0x1A, 0x00,
+ 0x09, 0x00, 0x13, 0x00, 0x21, 0x00, 0x0B, 0x00,
+ 0x17, 0x00, 0x28, 0x00, 0x0D, 0x00, 0x1B, 0x00,
+ 0x31, 0x00, 0x0F, 0x00, 0x1F, 0x00, 0x3B, 0x00,
+ 0x06, 0x00, 0xFE, 0xFF, 0x1A, 0x00, 0x06, 0x00,
+ 0xFA, 0xFF, 0x1A, 0x00, 0x06, 0x00, 0xF6, 0xFF,
+ 0x1A, 0x00, 0x06, 0x00, 0xF2, 0xFF, 0x1A, 0x00,
+ 0x09, 0x00, 0xED, 0xFF, 0x21, 0x00, 0x0B, 0x00,
+ 0xE9, 0xFF, 0x28, 0x00, 0x0D, 0x00, 0xE5, 0xFF,
+ 0x31, 0x00, 0x0F, 0x00, 0xE1, 0xFF, 0x3B, 0x00,
+ 0x08, 0x00, 0x02, 0x00, 0x1E, 0x00, 0x08, 0x00,
+ 0x06, 0x00, 0x1E, 0x00, 0x08, 0x00, 0x0A, 0x00,
+ 0x1E, 0x00, 0x08, 0x00, 0x0E, 0x00, 0x1E, 0x00,
+ 0x0B, 0x00, 0x13, 0x00, 0x26, 0x00, 0x0D, 0x00,
+ 0x17, 0x00, 0x2E, 0x00, 0x0F, 0x00, 0x1B, 0x00,
+ 0x38, 0x00, 0x11, 0x00, 0x1F, 0x00, 0x44, 0x00,
+ 0x08, 0x00, 0xFE, 0xFF, 0x1E, 0x00, 0x08, 0x00,
+ 0xFA, 0xFF, 0x1E, 0x00, 0x08, 0x00, 0xF6, 0xFF,
+ 0x1E, 0x00, 0x08, 0x00, 0xF2, 0xFF, 0x1E, 0x00,
+ 0x0B, 0x00, 0xED, 0xFF, 0x26, 0x00, 0x0D, 0x00,
+ 0xE9, 0xFF, 0x2E, 0x00, 0x0F, 0x00, 0xE5, 0xFF,
+ 0x38, 0x00, 0x11, 0x00, 0xE1, 0xFF, 0x44, 0x00,
+ 0x00, 0x00, 0x02, 0x00, 0xFE, 0xFF, 0x00, 0x00,
+ 0x06, 0x00, 0xFE, 0xFF, 0x00, 0x00, 0x0A, 0x00,
+ 0xFE, 0xFF, 0x00, 0x00, 0x0E, 0x00, 0xFE, 0xFF,
+ 0x02, 0x00, 0x13, 0x00, 0xFE, 0xFF, 0x04, 0x00,
+ 0x17, 0x00, 0xFD, 0xFF, 0x06, 0x00, 0x1B, 0x00,
+ 0xFD, 0xFF, 0x08, 0x00, 0x1F, 0x00, 0xFC, 0xFF,
+ 0x00, 0x00, 0xFE, 0xFF, 0xFE, 0xFF, 0x00, 0x00,
+ 0xFA, 0xFF, 0xFE, 0xFF, 0x00, 0x00, 0xF6, 0xFF,
+ 0xFE, 0xFF, 0x00, 0x00, 0xF2, 0xFF, 0xFE, 0xFF,
+ 0x02, 0x00, 0xED, 0xFF, 0xFE, 0xFF, 0x04, 0x00,
+ 0xE9, 0xFF, 0xFD, 0xFF, 0x06, 0x00, 0xE5, 0xFF,
+ 0xFD, 0xFF, 0x08, 0x00, 0xE1, 0xFF, 0xFC, 0xFF,
+ 0x00, 0x00, 0x02, 0x00, 0xFA, 0xFF, 0x00, 0x00,
+ 0x06, 0x00, 0xFA, 0xFF, 0x00, 0x00, 0x0A, 0x00,
+ 0xFA, 0xFF, 0x00, 0x00, 0x0E, 0x00, 0xFA, 0xFF,
+ 0x02, 0x00, 0x13, 0x00, 0xF9, 0xFF, 0x04, 0x00,
+ 0x17, 0x00, 0xF7, 0xFF, 0x06, 0x00, 0x1B, 0x00,
+ 0xF6, 0xFF, 0x08, 0x00, 0x1F, 0x00, 0xF3, 0xFF,
+ 0x00, 0x00, 0xFE, 0xFF, 0xFA, 0xFF, 0x00, 0x00,
+ 0xFA, 0xFF, 0xFA, 0xFF, 0x00, 0x00, 0xF6, 0xFF,
+ 0xFA, 0xFF, 0x00, 0x00, 0xF2, 0xFF, 0xFA, 0xFF,
+ 0x02, 0x00, 0xED, 0xFF, 0xF9, 0xFF, 0x04, 0x00,
+ 0xE9, 0xFF, 0xF7, 0xFF, 0x06, 0x00, 0xE5, 0xFF,
+ 0xF6, 0xFF, 0x08, 0x00, 0xE1, 0xFF, 0xF3, 0xFF,
+ 0x00, 0x00, 0x02, 0x00, 0xF6, 0xFF, 0x00, 0x00,
+ 0x06, 0x00, 0xF6, 0xFF, 0x00, 0x00, 0x0A, 0x00,
+ 0xF6, 0xFF, 0x00, 0x00, 0x0E, 0x00, 0xF6, 0xFF,
+ 0x02, 0x00, 0x13, 0x00, 0xF4, 0xFF, 0x04, 0x00,
+ 0x17, 0x00, 0xF1, 0xFF, 0x06, 0x00, 0x1B, 0x00,
+ 0xEE, 0xFF, 0x08, 0x00, 0x1F, 0x00, 0xEA, 0xFF,
+ 0x00, 0x00, 0xFE, 0xFF, 0xF6, 0xFF, 0x00, 0x00,
+ 0xFA, 0xFF, 0xF6, 0xFF, 0x00, 0x00, 0xF6, 0xFF,
+ 0xF6, 0xFF, 0x00, 0x00, 0xF2, 0xFF, 0xF6, 0xFF,
+ 0x02, 0x00, 0xED, 0xFF, 0xF4, 0xFF, 0x04, 0x00,
+ 0xE9, 0xFF, 0xF1, 0xFF, 0x06, 0x00, 0xE5, 0xFF,
+ 0xEE, 0xFF, 0x08, 0x00, 0xE1, 0xFF, 0xEA, 0xFF,
+ 0x00, 0x00, 0x02, 0x00, 0xF2, 0xFF, 0x00, 0x00,
+ 0x06, 0x00, 0xF2, 0xFF, 0x00, 0x00, 0x0A, 0x00,
+ 0xF2, 0xFF, 0x00, 0x00, 0x0E, 0x00, 0xF2, 0xFF,
+ 0x02, 0x00, 0x13, 0x00, 0xEF, 0xFF, 0x04, 0x00,
+ 0x17, 0x00, 0xEB, 0xFF, 0x06, 0x00, 0x1B, 0x00,
+ 0xE7, 0xFF, 0x08, 0x00, 0x1F, 0x00, 0xE1, 0xFF,
+ 0x00, 0x00, 0xFE, 0xFF, 0xF2, 0xFF, 0x00, 0x00,
+ 0xFA, 0xFF, 0xF2, 0xFF, 0x00, 0x00, 0xF6, 0xFF,
+ 0xF2, 0xFF, 0x00, 0x00, 0xF2, 0xFF, 0xF2, 0xFF,
+ 0x02, 0x00, 0xED, 0xFF, 0xEF, 0xFF, 0x04, 0x00,
+ 0xE9, 0xFF, 0xEB, 0xFF, 0x06, 0x00, 0xE5, 0xFF,
+ 0xE7, 0xFF, 0x08, 0x00, 0xE1, 0xFF, 0xE1, 0xFF,
+ 0x02, 0x00, 0x02, 0x00, 0xEE, 0xFF, 0x02, 0x00,
+ 0x06, 0x00, 0xEE, 0xFF, 0x02, 0x00, 0x0A, 0x00,
+ 0xEE, 0xFF, 0x02, 0x00, 0x0E, 0x00, 0xEE, 0xFF,
+ 0x05, 0x00, 0x13, 0x00, 0xE9, 0xFF, 0x07, 0x00,
+ 0x17, 0x00, 0xE4, 0xFF, 0x09, 0x00, 0x1B, 0x00,
+ 0xDE, 0xFF, 0x0B, 0x00, 0x1F, 0x00, 0xD7, 0xFF,
+ 0x02, 0x00, 0xFE, 0xFF, 0xEE, 0xFF, 0x02, 0x00,
+ 0xFA, 0xFF, 0xEE, 0xFF, 0x02, 0x00, 0xF6, 0xFF,
+ 0xEE, 0xFF, 0x02, 0x00, 0xF2, 0xFF, 0xEE, 0xFF,
+ 0x05, 0x00, 0xED, 0xFF, 0xE9, 0xFF, 0x07, 0x00,
+ 0xE9, 0xFF, 0xE4, 0xFF, 0x09, 0x00, 0xE5, 0xFF,
+ 0xDE, 0xFF, 0x0B, 0x00, 0xE1, 0xFF, 0xD7, 0xFF,
+ 0x04, 0x00, 0x02, 0x00, 0xEA, 0xFF, 0x04, 0x00,
+ 0x06, 0x00, 0xEA, 0xFF, 0x04, 0x00, 0x0A, 0x00,
+ 0xEA, 0xFF, 0x04, 0x00, 0x0E, 0x00, 0xEA, 0xFF,
+ 0x07, 0x00, 0x13, 0x00, 0xE4, 0xFF, 0x09, 0x00,
+ 0x17, 0x00, 0xDE, 0xFF, 0x0B, 0x00, 0x1B, 0x00,
+ 0xD7, 0xFF, 0x0D, 0x00, 0x1F, 0x00, 0xCE, 0xFF,
+ 0x04, 0x00, 0xFE, 0xFF, 0xEA, 0xFF, 0x04, 0x00,
+ 0xFA, 0xFF, 0xEA, 0xFF, 0x04, 0x00, 0xF6, 0xFF,
+ 0xEA, 0xFF, 0x04, 0x00, 0xF2, 0xFF, 0xEA, 0xFF,
+ 0x07, 0x00, 0xED, 0xFF, 0xE4, 0xFF, 0x09, 0x00,
+ 0xE9, 0xFF, 0xDE, 0xFF, 0x0B, 0x00, 0xE5, 0xFF,
+ 0xD7, 0xFF, 0x0D, 0x00, 0xE1, 0xFF, 0xCE, 0xFF,
+ 0x06, 0x00, 0x02, 0x00, 0xE6, 0xFF, 0x06, 0x00,
+ 0x06, 0x00, 0xE6, 0xFF, 0x06, 0x00, 0x0A, 0x00,
+ 0xE6, 0xFF, 0x06, 0x00, 0x0E, 0x00, 0xE6, 0xFF,
+ 0x09, 0x00, 0x13, 0x00, 0xDF, 0xFF, 0x0B, 0x00,
+ 0x17, 0x00, 0xD8, 0xFF, 0x0D, 0x00, 0x1B, 0x00,
+ 0xCF, 0xFF, 0x0F, 0x00, 0x1F, 0x00, 0xC5, 0xFF,
+ 0x06, 0x00, 0xFE, 0xFF, 0xE6, 0xFF, 0x06, 0x00,
+ 0xFA, 0xFF, 0xE6, 0xFF, 0x06, 0x00, 0xF6, 0xFF,
+ 0xE6, 0xFF, 0x06, 0x00, 0xF2, 0xFF, 0xE6, 0xFF,
+ 0x09, 0x00, 0xED, 0xFF, 0xDF, 0xFF, 0x0B, 0x00,
+ 0xE9, 0xFF, 0xD8, 0xFF, 0x0D, 0x00, 0xE5, 0xFF,
+ 0xCF, 0xFF, 0x0F, 0x00, 0xE1, 0xFF, 0xC5, 0xFF,
+ 0x08, 0x00, 0x02, 0x00, 0xE2, 0xFF, 0x08, 0x00,
+ 0x06, 0x00, 0xE2, 0xFF, 0x08, 0x00, 0x0A, 0x00,
+ 0xE2, 0xFF, 0x08, 0x00, 0x0E, 0x00, 0xE2, 0xFF,
+ 0x0B, 0x00, 0x13, 0x00, 0xDA, 0xFF, 0x0D, 0x00,
+ 0x17, 0x00, 0xD2, 0xFF, 0x0F, 0x00, 0x1B, 0x00,
+ 0xC8, 0xFF, 0x11, 0x00, 0x1F, 0x00, 0xBC, 0xFF,
+ 0x08, 0x00, 0xFE, 0xFF, 0xE2, 0xFF, 0x08, 0x00,
+ 0xFA, 0xFF, 0xE2, 0xFF, 0x08, 0x00, 0xF6, 0xFF,
+ 0xE2, 0xFF, 0x08, 0x00, 0xF2, 0xFF, 0xE2, 0xFF,
+ 0x0B, 0x00, 0xED, 0xFF, 0xDA, 0xFF, 0x0D, 0x00,
+ 0xE9, 0xFF, 0xD2, 0xFF, 0x0F, 0x00, 0xE5, 0xFF,
+ 0xC8, 0xFF, 0x11, 0x00, 0xE1, 0xFF, 0xBC, 0xFF,
+ 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00,
+ 0x06, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0B, 0x00,
+ 0x02, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x02, 0x00,
+ 0x03, 0x00, 0x15, 0x00, 0x02, 0x00, 0x05, 0x00,
+ 0x19, 0x00, 0x03, 0x00, 0x07, 0x00, 0x1E, 0x00,
+ 0x04, 0x00, 0x09, 0x00, 0x22, 0x00, 0x05, 0x00,
+ 0x00, 0x00, 0xFE, 0xFF, 0x02, 0x00, 0x00, 0x00,
+ 0xFA, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xF5, 0xFF,
+ 0x02, 0x00, 0x00, 0x00, 0xF1, 0xFF, 0x02, 0x00,
+ 0x03, 0x00, 0xEB, 0xFF, 0x02, 0x00, 0x05, 0x00,
+ 0xE7, 0xFF, 0x03, 0x00, 0x07, 0x00, 0xE2, 0xFF,
+ 0x04, 0x00, 0x09, 0x00, 0xDE, 0xFF, 0x05, 0x00,
+ 0x00, 0x00, 0x02, 0x00, 0x06, 0x00, 0x00, 0x00,
+ 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0B, 0x00,
+ 0x06, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x06, 0x00,
+ 0x03, 0x00, 0x15, 0x00, 0x07, 0x00, 0x05, 0x00,
+ 0x19, 0x00, 0x0A, 0x00, 0x07, 0x00, 0x1E, 0x00,
+ 0x0C, 0x00, 0x09, 0x00, 0x22, 0x00, 0x0F, 0x00,
+ 0x00, 0x00, 0xFE, 0xFF, 0x06, 0x00, 0x00, 0x00,
+ 0xFA, 0xFF, 0x06, 0x00, 0x00, 0x00, 0xF5, 0xFF,
+ 0x06, 0x00, 0x00, 0x00, 0xF1, 0xFF, 0x06, 0x00,
+ 0x03, 0x00, 0xEB, 0xFF, 0x07, 0x00, 0x05, 0x00,
+ 0xE7, 0xFF, 0x0A, 0x00, 0x07, 0x00, 0xE2, 0xFF,
+ 0x0C, 0x00, 0x09, 0x00, 0xDE, 0xFF, 0x0F, 0x00,
+ 0x00, 0x00, 0x02, 0x00, 0x0A, 0x00, 0x00, 0x00,
+ 0x06, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0B, 0x00,
+ 0x0A, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x0A, 0x00,
+ 0x03, 0x00, 0x15, 0x00, 0x0D, 0x00, 0x05, 0x00,
+ 0x19, 0x00, 0x11, 0x00, 0x07, 0x00, 0x1E, 0x00,
+ 0x15, 0x00, 0x09, 0x00, 0x22, 0x00, 0x19, 0x00,
+ 0x00, 0x00, 0xFE, 0xFF, 0x0A, 0x00, 0x00, 0x00,
+ 0xFA, 0xFF, 0x0A, 0x00, 0x00, 0x00, 0xF5, 0xFF,
+ 0x0A, 0x00, 0x00, 0x00, 0xF1, 0xFF, 0x0A, 0x00,
+ 0x03, 0x00, 0xEB, 0xFF, 0x0D, 0x00, 0x05, 0x00,
+ 0xE7, 0xFF, 0x11, 0x00, 0x07, 0x00, 0xE2, 0xFF,
+ 0x15, 0x00, 0x09, 0x00, 0xDE, 0xFF, 0x19, 0x00,
+ 0x00, 0x00, 0x02, 0x00, 0x0E, 0x00, 0x00, 0x00,
+ 0x06, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0B, 0x00,
+ 0x0E, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x0E, 0x00,
+ 0x03, 0x00, 0x15, 0x00, 0x12, 0x00, 0x05, 0x00,
+ 0x19, 0x00, 0x18, 0x00, 0x07, 0x00, 0x1E, 0x00,
+ 0x1D, 0x00, 0x09, 0x00, 0x22, 0x00, 0x23, 0x00,
+ 0x00, 0x00, 0xFE, 0xFF, 0x0E, 0x00, 0x00, 0x00,
+ 0xFA, 0xFF, 0x0E, 0x00, 0x00, 0x00, 0xF5, 0xFF,
+ 0x0E, 0x00, 0x00, 0x00, 0xF1, 0xFF, 0x0E, 0x00,
+ 0x03, 0x00, 0xEB, 0xFF, 0x12, 0x00, 0x05, 0x00,
+ 0xE7, 0xFF, 0x18, 0x00, 0x07, 0x00, 0xE2, 0xFF,
+ 0x1D, 0x00, 0x09, 0x00, 0xDE, 0xFF, 0x23, 0x00,
+ 0x03, 0x00, 0x02, 0x00, 0x13, 0x00, 0x03, 0x00,
+ 0x06, 0x00, 0x13, 0x00, 0x03, 0x00, 0x0B, 0x00,
+ 0x13, 0x00, 0x03, 0x00, 0x0F, 0x00, 0x13, 0x00,
+ 0x06, 0x00, 0x15, 0x00, 0x19, 0x00, 0x08, 0x00,
+ 0x19, 0x00, 0x1F, 0x00, 0x0A, 0x00, 0x1E, 0x00,
+ 0x26, 0x00, 0x0C, 0x00, 0x22, 0x00, 0x2E, 0x00,
+ 0x03, 0x00, 0xFE, 0xFF, 0x13, 0x00, 0x03, 0x00,
+ 0xFA, 0xFF, 0x13, 0x00, 0x03, 0x00, 0xF5, 0xFF,
+ 0x13, 0x00, 0x03, 0x00, 0xF1, 0xFF, 0x13, 0x00,
+ 0x06, 0x00, 0xEB, 0xFF, 0x19, 0x00, 0x08, 0x00,
+ 0xE7, 0xFF, 0x1F, 0x00, 0x0A, 0x00, 0xE2, 0xFF,
+ 0x26, 0x00, 0x0C, 0x00, 0xDE, 0xFF, 0x2E, 0x00,
+ 0x05, 0x00, 0x02, 0x00, 0x17, 0x00, 0x05, 0x00,
+ 0x06, 0x00, 0x17, 0x00, 0x05, 0x00, 0x0B, 0x00,
+ 0x17, 0x00, 0x05, 0x00, 0x0F, 0x00, 0x17, 0x00,
+ 0x08, 0x00, 0x15, 0x00, 0x1E, 0x00, 0x0A, 0x00,
+ 0x19, 0x00, 0x26, 0x00, 0x0C, 0x00, 0x1E, 0x00,
+ 0x2E, 0x00, 0x0E, 0x00, 0x22, 0x00, 0x38, 0x00,
+ 0x05, 0x00, 0xFE, 0xFF, 0x17, 0x00, 0x05, 0x00,
+ 0xFA, 0xFF, 0x17, 0x00, 0x05, 0x00, 0xF5, 0xFF,
+ 0x17, 0x00, 0x05, 0x00, 0xF1, 0xFF, 0x17, 0x00,
+ 0x08, 0x00, 0xEB, 0xFF, 0x1E, 0x00, 0x0A, 0x00,
+ 0xE7, 0xFF, 0x26, 0x00, 0x0C, 0x00, 0xE2, 0xFF,
+ 0x2E, 0x00, 0x0E, 0x00, 0xDE, 0xFF, 0x38, 0x00,
+ 0x07, 0x00, 0x02, 0x00, 0x1B, 0x00, 0x07, 0x00,
+ 0x06, 0x00, 0x1B, 0x00, 0x07, 0x00, 0x0B, 0x00,
+ 0x1B, 0x00, 0x07, 0x00, 0x0F, 0x00, 0x1B, 0x00,
+ 0x0A, 0x00, 0x15, 0x00, 0x24, 0x00, 0x0C, 0x00,
+ 0x19, 0x00, 0x2D, 0x00, 0x0E, 0x00, 0x1E, 0x00,
+ 0x37, 0x00, 0x10, 0x00, 0x22, 0x00, 0x42, 0x00,
+ 0x07, 0x00, 0xFE, 0xFF, 0x1B, 0x00, 0x07, 0x00,
+ 0xFA, 0xFF, 0x1B, 0x00, 0x07, 0x00, 0xF5, 0xFF,
+ 0x1B, 0x00, 0x07, 0x00, 0xF1, 0xFF, 0x1B, 0x00,
+ 0x0A, 0x00, 0xEB, 0xFF, 0x24, 0x00, 0x0C, 0x00,
+ 0xE7, 0xFF, 0x2D, 0x00, 0x0E, 0x00, 0xE2, 0xFF,
+ 0x37, 0x00, 0x10, 0x00, 0xDE, 0xFF, 0x42, 0x00,
+ 0x09, 0x00, 0x02, 0x00, 0x1F, 0x00, 0x09, 0x00,
+ 0x06, 0x00, 0x1F, 0x00, 0x09, 0x00, 0x0B, 0x00,
+ 0x1F, 0x00, 0x09, 0x00, 0x0F, 0x00, 0x1F, 0x00,
+ 0x0C, 0x00, 0x15, 0x00, 0x29, 0x00, 0x0E, 0x00,
+ 0x19, 0x00, 0x34, 0x00, 0x10, 0x00, 0x1E, 0x00,
+ 0x3F, 0x00, 0x12, 0x00, 0x22, 0x00, 0x4C, 0x00,
+ 0x09, 0x00, 0xFE, 0xFF, 0x1F, 0x00, 0x09, 0x00,
+ 0xFA, 0xFF, 0x1F, 0x00, 0x09, 0x00, 0xF5, 0xFF,
+ 0x1F, 0x00, 0x09, 0x00, 0xF1, 0xFF, 0x1F, 0x00,
+ 0x0C, 0x00, 0xEB, 0xFF, 0x29, 0x00, 0x0E, 0x00,
+ 0xE7, 0xFF, 0x34, 0x00, 0x10, 0x00, 0xE2, 0xFF,
+ 0x3F, 0x00, 0x12, 0x00, 0xDE, 0xFF, 0x4C, 0x00,
+ 0x00, 0x00, 0x02, 0x00, 0xFE, 0xFF, 0x00, 0x00,
+ 0x06, 0x00, 0xFE, 0xFF, 0x00, 0x00, 0x0B, 0x00,
+ 0xFE, 0xFF, 0x00, 0x00, 0x0F, 0x00, 0xFE, 0xFF,
+ 0x03, 0x00, 0x15, 0x00, 0xFE, 0xFF, 0x05, 0x00,
+ 0x19, 0x00, 0xFD, 0xFF, 0x07, 0x00, 0x1E, 0x00,
+ 0xFC, 0xFF, 0x09, 0x00, 0x22, 0x00, 0xFB, 0xFF,
+ 0x00, 0x00, 0xFE, 0xFF, 0xFE, 0xFF, 0x00, 0x00,
+ 0xFA, 0xFF, 0xFE, 0xFF, 0x00, 0x00, 0xF5, 0xFF,
+ 0xFE, 0xFF, 0x00, 0x00, 0xF1, 0xFF, 0xFE, 0xFF,
+ 0x03, 0x00, 0xEB, 0xFF, 0xFE, 0xFF, 0x05, 0x00,
+ 0xE7, 0xFF, 0xFD, 0xFF, 0x07, 0x00, 0xE2, 0xFF,
+ 0xFC, 0xFF, 0x09, 0x00, 0xDE, 0xFF, 0xFB, 0xFF,
+ 0x00, 0x00, 0x02, 0x00, 0xFA, 0xFF, 0x00, 0x00,
+ 0x06, 0x00, 0xFA, 0xFF, 0x00, 0x00, 0x0B, 0x00,
+ 0xFA, 0xFF, 0x00, 0x00, 0x0F, 0x00, 0xFA, 0xFF,
+ 0x03, 0x00, 0x15, 0x00, 0xF9, 0xFF, 0x05, 0x00,
+ 0x19, 0x00, 0xF6, 0xFF, 0x07, 0x00, 0x1E, 0x00,
+ 0xF4, 0xFF, 0x09, 0x00, 0x22, 0x00, 0xF1, 0xFF,
+ 0x00, 0x00, 0xFE, 0xFF, 0xFA, 0xFF, 0x00, 0x00,
+ 0xFA, 0xFF, 0xFA, 0xFF, 0x00, 0x00, 0xF5, 0xFF,
+ 0xFA, 0xFF, 0x00, 0x00, 0xF1, 0xFF, 0xFA, 0xFF,
+ 0x03, 0x00, 0xEB, 0xFF, 0xF9, 0xFF, 0x05, 0x00,
+ 0xE7, 0xFF, 0xF6, 0xFF, 0x07, 0x00, 0xE2, 0xFF,
+ 0xF4, 0xFF, 0x09, 0x00, 0xDE, 0xFF, 0xF1, 0xFF,
+ 0x00, 0x00, 0x02, 0x00, 0xF6, 0xFF, 0x00, 0x00,
+ 0x06, 0x00, 0xF6, 0xFF, 0x00, 0x00, 0x0B, 0x00,
+ 0xF6, 0xFF, 0x00, 0x00, 0x0F, 0x00, 0xF6, 0xFF,
+ 0x03, 0x00, 0x15, 0x00, 0xF3, 0xFF, 0x05, 0x00,
+ 0x19, 0x00, 0xEF, 0xFF, 0x07, 0x00, 0x1E, 0x00,
+ 0xEB, 0xFF, 0x09, 0x00, 0x22, 0x00, 0xE7, 0xFF,
+ 0x00, 0x00, 0xFE, 0xFF, 0xF6, 0xFF, 0x00, 0x00,
+ 0xFA, 0xFF, 0xF6, 0xFF, 0x00, 0x00, 0xF5, 0xFF,
+ 0xF6, 0xFF, 0x00, 0x00, 0xF1, 0xFF, 0xF6, 0xFF,
+ 0x03, 0x00, 0xEB, 0xFF, 0xF3, 0xFF, 0x05, 0x00,
+ 0xE7, 0xFF, 0xEF, 0xFF, 0x07, 0x00, 0xE2, 0xFF,
+ 0xEB, 0xFF, 0x09, 0x00, 0xDE, 0xFF, 0xE7, 0xFF,
+ 0x00, 0x00, 0x02, 0x00, 0xF2, 0xFF, 0x00, 0x00,
+ 0x06, 0x00, 0xF2, 0xFF, 0x00, 0x00, 0x0B, 0x00,
+ 0xF2, 0xFF, 0x00, 0x00, 0x0F, 0x00, 0xF2, 0xFF,
+ 0x03, 0x00, 0x15, 0x00, 0xEE, 0xFF, 0x05, 0x00,
+ 0x19, 0x00, 0xE8, 0xFF, 0x07, 0x00, 0x1E, 0x00,
+ 0xE3, 0xFF, 0x09, 0x00, 0x22, 0x00, 0xDD, 0xFF,
+ 0x00, 0x00, 0xFE, 0xFF, 0xF2, 0xFF, 0x00, 0x00,
+ 0xFA, 0xFF, 0xF2, 0xFF, 0x00, 0x00, 0xF5, 0xFF,
+ 0xF2, 0xFF, 0x00, 0x00, 0xF1, 0xFF, 0xF2, 0xFF,
+ 0x03, 0x00, 0xEB, 0xFF, 0xEE, 0xFF, 0x05, 0x00,
+ 0xE7, 0xFF, 0xE8, 0xFF, 0x07, 0x00, 0xE2, 0xFF,
+ 0xE3, 0xFF, 0x09, 0x00, 0xDE, 0xFF, 0xDD, 0xFF,
+ 0x03, 0x00, 0x02, 0x00, 0xED, 0xFF, 0x03, 0x00,
+ 0x06, 0x00, 0xED, 0xFF, 0x03, 0x00, 0x0B, 0x00,
+ 0xED, 0xFF, 0x03, 0x00, 0x0F, 0x00, 0xED, 0xFF,
+ 0x06, 0x00, 0x15, 0x00, 0xE7, 0xFF, 0x08, 0x00,
+ 0x19, 0x00, 0xE1, 0xFF, 0x0A, 0x00, 0x1E, 0x00,
+ 0xDA, 0xFF, 0x0C, 0x00, 0x22, 0x00, 0xD2, 0xFF,
+ 0x03, 0x00, 0xFE, 0xFF, 0xED, 0xFF, 0x03, 0x00,
+ 0xFA, 0xFF, 0xED, 0xFF, 0x03, 0x00, 0xF5, 0xFF,
+ 0xED, 0xFF, 0x03, 0x00, 0xF1, 0xFF, 0xED, 0xFF,
+ 0x06, 0x00, 0xEB, 0xFF, 0xE7, 0xFF, 0x08, 0x00,
+ 0xE7, 0xFF, 0xE1, 0xFF, 0x0A, 0x00, 0xE2, 0xFF,
+ 0xDA, 0xFF, 0x0C, 0x00, 0xDE, 0xFF, 0xD2, 0xFF,
+ 0x05, 0x00, 0x02, 0x00, 0xE9, 0xFF, 0x05, 0x00,
+ 0x06, 0x00, 0xE9, 0xFF, 0x05, 0x00, 0x0B, 0x00,
+ 0xE9, 0xFF, 0x05, 0x00, 0x0F, 0x00, 0xE9, 0xFF,
+ 0x08, 0x00, 0x15, 0x00, 0xE2, 0xFF, 0x0A, 0x00,
+ 0x19, 0x00, 0xDA, 0xFF, 0x0C, 0x00, 0x1E, 0x00,
+ 0xD2, 0xFF, 0x0E, 0x00, 0x22, 0x00, 0xC8, 0xFF,
+ 0x05, 0x00, 0xFE, 0xFF, 0xE9, 0xFF, 0x05, 0x00,
+ 0xFA, 0xFF, 0xE9, 0xFF, 0x05, 0x00, 0xF5, 0xFF,
+ 0xE9, 0xFF, 0x05, 0x00, 0xF1, 0xFF, 0xE9, 0xFF,
+ 0x08, 0x00, 0xEB, 0xFF, 0xE2, 0xFF, 0x0A, 0x00,
+ 0xE7, 0xFF, 0xDA, 0xFF, 0x0C, 0x00, 0xE2, 0xFF,
+ 0xD2, 0xFF, 0x0E, 0x00, 0xDE, 0xFF, 0xC8, 0xFF,
+ 0x07, 0x00, 0x02, 0x00, 0xE5, 0xFF, 0x07, 0x00,
+ 0x06, 0x00, 0xE5, 0xFF, 0x07, 0x00, 0x0B, 0x00,
+ 0xE5, 0xFF, 0x07, 0x00, 0x0F, 0x00, 0xE5, 0xFF,
+ 0x0A, 0x00, 0x15, 0x00, 0xDC, 0xFF, 0x0C, 0x00,
+ 0x19, 0x00, 0xD3, 0xFF, 0x0E, 0x00, 0x1E, 0x00,
+ 0xC9, 0xFF, 0x10, 0x00, 0x22, 0x00, 0xBE, 0xFF,
+ 0x07, 0x00, 0xFE, 0xFF, 0xE5, 0xFF, 0x07, 0x00,
+ 0xFA, 0xFF, 0xE5, 0xFF, 0x07, 0x00, 0xF5, 0xFF,
+ 0xE5, 0xFF, 0x07, 0x00, 0xF1, 0xFF, 0xE5, 0xFF,
+ 0x0A, 0x00, 0xEB, 0xFF, 0xDC, 0xFF, 0x0C, 0x00,
+ 0xE7, 0xFF, 0xD3, 0xFF, 0x0E, 0x00, 0xE2, 0xFF,
+ 0xC9, 0xFF, 0x10, 0x00, 0xDE, 0xFF, 0xBE, 0xFF,
+ 0x09, 0x00, 0x02, 0x00, 0xE1, 0xFF, 0x09, 0x00,
+ 0x06, 0x00, 0xE1, 0xFF, 0x09, 0x00, 0x0B, 0x00,
+ 0xE1, 0xFF, 0x09, 0x00, 0x0F, 0x00, 0xE1, 0xFF,
+ 0x0C, 0x00, 0x15, 0x00, 0xD7, 0xFF, 0x0E, 0x00,
+ 0x19, 0x00, 0xCC, 0xFF, 0x10, 0x00, 0x1E, 0x00,
+ 0xC1, 0xFF, 0x12, 0x00, 0x22, 0x00, 0xB4, 0xFF,
+ 0x09, 0x00, 0xFE, 0xFF, 0xE1, 0xFF, 0x09, 0x00,
+ 0xFA, 0xFF, 0xE1, 0xFF, 0x09, 0x00, 0xF5, 0xFF,
+ 0xE1, 0xFF, 0x09, 0x00, 0xF1, 0xFF, 0xE1, 0xFF,
+ 0x0C, 0x00, 0xEB, 0xFF, 0xD7, 0xFF, 0x0E, 0x00,
+ 0xE7, 0xFF, 0xCC, 0xFF, 0x10, 0x00, 0xE2, 0xFF,
+ 0xC1, 0xFF, 0x12, 0x00, 0xDE, 0xFF, 0xB4, 0xFF,
+ 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00,
+ 0x07, 0x00, 0x02, 0x00, 0x01, 0x00, 0x0C, 0x00,
+ 0x02, 0x00, 0x01, 0x00, 0x11, 0x00, 0x02, 0x00,
+ 0x04, 0x00, 0x17, 0x00, 0x03, 0x00, 0x06, 0x00,
+ 0x1C, 0x00, 0x03, 0x00, 0x08, 0x00, 0x21, 0x00,
+ 0x04, 0x00, 0x0A, 0x00, 0x26, 0x00, 0x05, 0x00,
+ 0x01, 0x00, 0xFE, 0xFF, 0x02, 0x00, 0x01, 0x00,
+ 0xF9, 0xFF, 0x02, 0x00, 0x01, 0x00, 0xF4, 0xFF,
+ 0x02, 0x00, 0x01, 0x00, 0xEF, 0xFF, 0x02, 0x00,
+ 0x04, 0x00, 0xE9, 0xFF, 0x03, 0x00, 0x06, 0x00,
+ 0xE4, 0xFF, 0x03, 0x00, 0x08, 0x00, 0xDF, 0xFF,
+ 0x04, 0x00, 0x0A, 0x00, 0xDA, 0xFF, 0x05, 0x00,
+ 0x01, 0x00, 0x02, 0x00, 0x06, 0x00, 0x01, 0x00,
+ 0x07, 0x00, 0x06, 0x00, 0x01, 0x00, 0x0C, 0x00,
+ 0x06, 0x00, 0x01, 0x00, 0x11, 0x00, 0x06, 0x00,
+ 0x04, 0x00, 0x17, 0x00, 0x09, 0x00, 0x06, 0x00,
+ 0x1C, 0x00, 0x0A, 0x00, 0x08, 0x00, 0x21, 0x00,
+ 0x0D, 0x00, 0x0A, 0x00, 0x26, 0x00, 0x10, 0x00,
+ 0x01, 0x00, 0xFE, 0xFF, 0x06, 0x00, 0x01, 0x00,
+ 0xF9, 0xFF, 0x06, 0x00, 0x01, 0x00, 0xF4, 0xFF,
+ 0x06, 0x00, 0x01, 0x00, 0xEF, 0xFF, 0x06, 0x00,
+ 0x04, 0x00, 0xE9, 0xFF, 0x09, 0x00, 0x06, 0x00,
+ 0xE4, 0xFF, 0x0A, 0x00, 0x08, 0x00, 0xDF, 0xFF,
+ 0x0D, 0x00, 0x0A, 0x00, 0xDA, 0xFF, 0x10, 0x00,
+ 0x01, 0x00, 0x02, 0x00, 0x0B, 0x00, 0x01, 0x00,
+ 0x07, 0x00, 0x0B, 0x00, 0x01, 0x00, 0x0C, 0x00,
+ 0x0B, 0x00, 0x01, 0x00, 0x11, 0x00, 0x0B, 0x00,
+ 0x04, 0x00, 0x17, 0x00, 0x0F, 0x00, 0x06, 0x00,
+ 0x1C, 0x00, 0x12, 0x00, 0x08, 0x00, 0x21, 0x00,
+ 0x16, 0x00, 0x0A, 0x00, 0x26, 0x00, 0x1B, 0x00,
+ 0x01, 0x00, 0xFE, 0xFF, 0x0B, 0x00, 0x01, 0x00,
+ 0xF9, 0xFF, 0x0B, 0x00, 0x01, 0x00, 0xF4, 0xFF,
+ 0x0B, 0x00, 0x01, 0x00, 0xEF, 0xFF, 0x0B, 0x00,
+ 0x04, 0x00, 0xE9, 0xFF, 0x0F, 0x00, 0x06, 0x00,
+ 0xE4, 0xFF, 0x12, 0x00, 0x08, 0x00, 0xDF, 0xFF,
+ 0x16, 0x00, 0x0A, 0x00, 0xDA, 0xFF, 0x1B, 0x00,
+ 0x01, 0x00, 0x02, 0x00, 0x0F, 0x00, 0x01, 0x00,
+ 0x07, 0x00, 0x0F, 0x00, 0x01, 0x00, 0x0C, 0x00,
+ 0x0F, 0x00, 0x01, 0x00, 0x11, 0x00, 0x0F, 0x00,
+ 0x04, 0x00, 0x17, 0x00, 0x15, 0x00, 0x06, 0x00,
+ 0x1C, 0x00, 0x19, 0x00, 0x08, 0x00, 0x21, 0x00,
+ 0x1F, 0x00, 0x0A, 0x00, 0x26, 0x00, 0x26, 0x00,
+ 0x01, 0x00, 0xFE, 0xFF, 0x0F, 0x00, 0x01, 0x00,
+ 0xF9, 0xFF, 0x0F, 0x00, 0x01, 0x00, 0xF4, 0xFF,
+ 0x0F, 0x00, 0x01, 0x00, 0xEF, 0xFF, 0x0F, 0x00,
+ 0x04, 0x00, 0xE9, 0xFF, 0x15, 0x00, 0x06, 0x00,
+ 0xE4, 0xFF, 0x19, 0x00, 0x08, 0x00, 0xDF, 0xFF,
+ 0x1F, 0x00, 0x0A, 0x00, 0xDA, 0xFF, 0x26, 0x00,
+ 0x04, 0x00, 0x02, 0x00, 0x15, 0x00, 0x04, 0x00,
+ 0x07, 0x00, 0x15, 0x00, 0x04, 0x00, 0x0C, 0x00,
+ 0x15, 0x00, 0x04, 0x00, 0x11, 0x00, 0x15, 0x00,
+ 0x07, 0x00, 0x17, 0x00, 0x1C, 0x00, 0x09, 0x00,
+ 0x1C, 0x00, 0x22, 0x00, 0x0B, 0x00, 0x21, 0x00,
+ 0x29, 0x00, 0x0D, 0x00, 0x26, 0x00, 0x32, 0x00,
+ 0x04, 0x00, 0xFE, 0xFF, 0x15, 0x00, 0x04, 0x00,
+ 0xF9, 0xFF, 0x15, 0x00, 0x04, 0x00, 0xF4, 0xFF,
+ 0x15, 0x00, 0x04, 0x00, 0xEF, 0xFF, 0x15, 0x00,
+ 0x07, 0x00, 0xE9, 0xFF, 0x1C, 0x00, 0x09, 0x00,
+ 0xE4, 0xFF, 0x22, 0x00, 0x0B, 0x00, 0xDF, 0xFF,
+ 0x29, 0x00, 0x0D, 0x00, 0xDA, 0xFF, 0x32, 0x00,
+ 0x06, 0x00, 0x02, 0x00, 0x19, 0x00, 0x06, 0x00,
+ 0x07, 0x00, 0x19, 0x00, 0x06, 0x00, 0x0C, 0x00,
+ 0x19, 0x00, 0x06, 0x00, 0x11, 0x00, 0x19, 0x00,
+ 0x09, 0x00, 0x17, 0x00, 0x22, 0x00, 0x0B, 0x00,
+ 0x1C, 0x00, 0x29, 0x00, 0x0D, 0x00, 0x21, 0x00,
+ 0x32, 0x00, 0x0F, 0x00, 0x26, 0x00, 0x3D, 0x00,
+ 0x06, 0x00, 0xFE, 0xFF, 0x19, 0x00, 0x06, 0x00,
+ 0xF9, 0xFF, 0x19, 0x00, 0x06, 0x00, 0xF4, 0xFF,
+ 0x19, 0x00, 0x06, 0x00, 0xEF, 0xFF, 0x19, 0x00,
+ 0x09, 0x00, 0xE9, 0xFF, 0x22, 0x00, 0x0B, 0x00,
+ 0xE4, 0xFF, 0x29, 0x00, 0x0D, 0x00, 0xDF, 0xFF,
+ 0x32, 0x00, 0x0F, 0x00, 0xDA, 0xFF, 0x3D, 0x00,
+ 0x08, 0x00, 0x02, 0x00, 0x1E, 0x00, 0x08, 0x00,
+ 0x07, 0x00, 0x1E, 0x00, 0x08, 0x00, 0x0C, 0x00,
+ 0x1E, 0x00, 0x08, 0x00, 0x11, 0x00, 0x1E, 0x00,
+ 0x0B, 0x00, 0x17, 0x00, 0x28, 0x00, 0x0D, 0x00,
+ 0x1C, 0x00, 0x31, 0x00, 0x0F, 0x00, 0x21, 0x00,
+ 0x3B, 0x00, 0x11, 0x00, 0x26, 0x00, 0x48, 0x00,
+ 0x08, 0x00, 0xFE, 0xFF, 0x1E, 0x00, 0x08, 0x00,
+ 0xF9, 0xFF, 0x1E, 0x00, 0x08, 0x00, 0xF4, 0xFF,
+ 0x1E, 0x00, 0x08, 0x00, 0xEF, 0xFF, 0x1E, 0x00,
+ 0x0B, 0x00, 0xE9, 0xFF, 0x28, 0x00, 0x0D, 0x00,
+ 0xE4, 0xFF, 0x31, 0x00, 0x0F, 0x00, 0xDF, 0xFF,
+ 0x3B, 0x00, 0x11, 0x00, 0xDA, 0xFF, 0x48, 0x00,
+ 0x0A, 0x00, 0x02, 0x00, 0x22, 0x00, 0x0A, 0x00,
+ 0x07, 0x00, 0x22, 0x00, 0x0A, 0x00, 0x0C, 0x00,
+ 0x22, 0x00, 0x0A, 0x00, 0x11, 0x00, 0x22, 0x00,
+ 0x0D, 0x00, 0x17, 0x00, 0x2E, 0x00, 0x0F, 0x00,
+ 0x1C, 0x00, 0x38, 0x00, 0x11, 0x00, 0x21, 0x00,
+ 0x44, 0x00, 0x13, 0x00, 0x26, 0x00, 0x53, 0x00,
+ 0x0A, 0x00, 0xFE, 0xFF, 0x22, 0x00, 0x0A, 0x00,
+ 0xF9, 0xFF, 0x22, 0x00, 0x0A, 0x00, 0xF4, 0xFF,
+ 0x22, 0x00, 0x0A, 0x00, 0xEF, 0xFF, 0x22, 0x00,
+ 0x0D, 0x00, 0xE9, 0xFF, 0x2E, 0x00, 0x0F, 0x00,
+ 0xE4, 0xFF, 0x38, 0x00, 0x11, 0x00, 0xDF, 0xFF,
+ 0x44, 0x00, 0x13, 0x00, 0xDA, 0xFF, 0x53, 0x00,
+ 0x01, 0x00, 0x02, 0x00, 0xFE, 0xFF, 0x01, 0x00,
+ 0x07, 0x00, 0xFE, 0xFF, 0x01, 0x00, 0x0C, 0x00,
+ 0xFE, 0xFF, 0x01, 0x00, 0x11, 0x00, 0xFE, 0xFF,
+ 0x04, 0x00, 0x17, 0x00, 0xFD, 0xFF, 0x06, 0x00,
+ 0x1C, 0x00, 0xFD, 0xFF, 0x08, 0x00, 0x21, 0x00,
+ 0xFC, 0xFF, 0x0A, 0x00, 0x26, 0x00, 0xFB, 0xFF,
+ 0x01, 0x00, 0xFE, 0xFF, 0xFE, 0xFF, 0x01, 0x00,
+ 0xF9, 0xFF, 0xFE, 0xFF, 0x01, 0x00, 0xF4, 0xFF,
+ 0xFE, 0xFF, 0x01, 0x00, 0xEF, 0xFF, 0xFE, 0xFF,
+ 0x04, 0x00, 0xE9, 0xFF, 0xFD, 0xFF, 0x06, 0x00,
+ 0xE4, 0xFF, 0xFD, 0xFF, 0x08, 0x00, 0xDF, 0xFF,
+ 0xFC, 0xFF, 0x0A, 0x00, 0xDA, 0xFF, 0xFB, 0xFF,
+ 0x01, 0x00, 0x02, 0x00, 0xFA, 0xFF, 0x01, 0x00,
+ 0x07, 0x00, 0xFA, 0xFF, 0x01, 0x00, 0x0C, 0x00,
+ 0xFA, 0xFF, 0x01, 0x00, 0x11, 0x00, 0xFA, 0xFF,
+ 0x04, 0x00, 0x17, 0x00, 0xF7, 0xFF, 0x06, 0x00,
+ 0x1C, 0x00, 0xF6, 0xFF, 0x08, 0x00, 0x21, 0x00,
+ 0xF3, 0xFF, 0x0A, 0x00, 0x26, 0x00, 0xF0, 0xFF,
+ 0x01, 0x00, 0xFE, 0xFF, 0xFA, 0xFF, 0x01, 0x00,
+ 0xF9, 0xFF, 0xFA, 0xFF, 0x01, 0x00, 0xF4, 0xFF,
+ 0xFA, 0xFF, 0x01, 0x00, 0xEF, 0xFF, 0xFA, 0xFF,
+ 0x04, 0x00, 0xE9, 0xFF, 0xF7, 0xFF, 0x06, 0x00,
+ 0xE4, 0xFF, 0xF6, 0xFF, 0x08, 0x00, 0xDF, 0xFF,
+ 0xF3, 0xFF, 0x0A, 0x00, 0xDA, 0xFF, 0xF0, 0xFF,
+ 0x01, 0x00, 0x02, 0x00, 0xF5, 0xFF, 0x01, 0x00,
+ 0x07, 0x00, 0xF5, 0xFF, 0x01, 0x00, 0x0C, 0x00,
+ 0xF5, 0xFF, 0x01, 0x00, 0x11, 0x00, 0xF5, 0xFF,
+ 0x04, 0x00, 0x17, 0x00, 0xF1, 0xFF, 0x06, 0x00,
+ 0x1C, 0x00, 0xEE, 0xFF, 0x08, 0x00, 0x21, 0x00,
+ 0xEA, 0xFF, 0x0A, 0x00, 0x26, 0x00, 0xE5, 0xFF,
+ 0x01, 0x00, 0xFE, 0xFF, 0xF5, 0xFF, 0x01, 0x00,
+ 0xF9, 0xFF, 0xF5, 0xFF, 0x01, 0x00, 0xF4, 0xFF,
+ 0xF5, 0xFF, 0x01, 0x00, 0xEF, 0xFF, 0xF5, 0xFF,
+ 0x04, 0x00, 0xE9, 0xFF, 0xF1, 0xFF, 0x06, 0x00,
+ 0xE4, 0xFF, 0xEE, 0xFF, 0x08, 0x00, 0xDF, 0xFF,
+ 0xEA, 0xFF, 0x0A, 0x00, 0xDA, 0xFF, 0xE5, 0xFF,
+ 0x01, 0x00, 0x02, 0x00, 0xF1, 0xFF, 0x01, 0x00,
+ 0x07, 0x00, 0xF1, 0xFF, 0x01, 0x00, 0x0C, 0x00,
+ 0xF1, 0xFF, 0x01, 0x00, 0x11, 0x00, 0xF1, 0xFF,
+ 0x04, 0x00, 0x17, 0x00, 0xEB, 0xFF, 0x06, 0x00,
+ 0x1C, 0x00, 0xE7, 0xFF, 0x08, 0x00, 0x21, 0x00,
+ 0xE1, 0xFF, 0x0A, 0x00, 0x26, 0x00, 0xDA, 0xFF,
+ 0x01, 0x00, 0xFE, 0xFF, 0xF1, 0xFF, 0x01, 0x00,
+ 0xF9, 0xFF, 0xF1, 0xFF, 0x01, 0x00, 0xF4, 0xFF,
+ 0xF1, 0xFF, 0x01, 0x00, 0xEF, 0xFF, 0xF1, 0xFF,
+ 0x04, 0x00, 0xE9, 0xFF, 0xEB, 0xFF, 0x06, 0x00,
+ 0xE4, 0xFF, 0xE7, 0xFF, 0x08, 0x00, 0xDF, 0xFF,
+ 0xE1, 0xFF, 0x0A, 0x00, 0xDA, 0xFF, 0xDA, 0xFF,
+ 0x04, 0x00, 0x02, 0x00, 0xEB, 0xFF, 0x04, 0x00,
+ 0x07, 0x00, 0xEB, 0xFF, 0x04, 0x00, 0x0C, 0x00,
+ 0xEB, 0xFF, 0x04, 0x00, 0x11, 0x00, 0xEB, 0xFF,
+ 0x07, 0x00, 0x17, 0x00, 0xE4, 0xFF, 0x09, 0x00,
+ 0x1C, 0x00, 0xDE, 0xFF, 0x0B, 0x00, 0x21, 0x00,
+ 0xD7, 0xFF, 0x0D, 0x00, 0x26, 0x00, 0xCE, 0xFF,
+ 0x04, 0x00, 0xFE, 0xFF, 0xEB, 0xFF, 0x04, 0x00,
+ 0xF9, 0xFF, 0xEB, 0xFF, 0x04, 0x00, 0xF4, 0xFF,
+ 0xEB, 0xFF, 0x04, 0x00, 0xEF, 0xFF, 0xEB, 0xFF,
+ 0x07, 0x00, 0xE9, 0xFF, 0xE4, 0xFF, 0x09, 0x00,
+ 0xE4, 0xFF, 0xDE, 0xFF, 0x0B, 0x00, 0xDF, 0xFF,
+ 0xD7, 0xFF, 0x0D, 0x00, 0xDA, 0xFF, 0xCE, 0xFF,
+ 0x06, 0x00, 0x02, 0x00, 0xE7, 0xFF, 0x06, 0x00,
+ 0x07, 0x00, 0xE7, 0xFF, 0x06, 0x00, 0x0C, 0x00,
+ 0xE7, 0xFF, 0x06, 0x00, 0x11, 0x00, 0xE7, 0xFF,
+ 0x09, 0x00, 0x17, 0x00, 0xDE, 0xFF, 0x0B, 0x00,
+ 0x1C, 0x00, 0xD7, 0xFF, 0x0D, 0x00, 0x21, 0x00,
+ 0xCE, 0xFF, 0x0F, 0x00, 0x26, 0x00, 0xC3, 0xFF,
+ 0x06, 0x00, 0xFE, 0xFF, 0xE7, 0xFF, 0x06, 0x00,
+ 0xF9, 0xFF, 0xE7, 0xFF, 0x06, 0x00, 0xF4, 0xFF,
+ 0xE7, 0xFF, 0x06, 0x00, 0xEF, 0xFF, 0xE7, 0xFF,
+ 0x09, 0x00, 0xE9, 0xFF, 0xDE, 0xFF, 0x0B, 0x00,
+ 0xE4, 0xFF, 0xD7, 0xFF, 0x0D, 0x00, 0xDF, 0xFF,
+ 0xCE, 0xFF, 0x0F, 0x00, 0xDA, 0xFF, 0xC3, 0xFF,
+ 0x08, 0x00, 0x02, 0x00, 0xE2, 0xFF, 0x08, 0x00,
+ 0x07, 0x00, 0xE2, 0xFF, 0x08, 0x00, 0x0C, 0x00,
+ 0xE2, 0xFF, 0x08, 0x00, 0x11, 0x00, 0xE2, 0xFF,
+ 0x0B, 0x00, 0x17, 0x00, 0xD8, 0xFF, 0x0D, 0x00,
+ 0x1C, 0x00, 0xCF, 0xFF, 0x0F, 0x00, 0x21, 0x00,
+ 0xC5, 0xFF, 0x11, 0x00, 0x26, 0x00, 0xB8, 0xFF,
+ 0x08, 0x00, 0xFE, 0xFF, 0xE2, 0xFF, 0x08, 0x00,
+ 0xF9, 0xFF, 0xE2, 0xFF, 0x08, 0x00, 0xF4, 0xFF,
+ 0xE2, 0xFF, 0x08, 0x00, 0xEF, 0xFF, 0xE2, 0xFF,
+ 0x0B, 0x00, 0xE9, 0xFF, 0xD8, 0xFF, 0x0D, 0x00,
+ 0xE4, 0xFF, 0xCF, 0xFF, 0x0F, 0x00, 0xDF, 0xFF,
+ 0xC5, 0xFF, 0x11, 0x00, 0xDA, 0xFF, 0xB8, 0xFF,
+ 0x0A, 0x00, 0x02, 0x00, 0xDE, 0xFF, 0x0A, 0x00,
+ 0x07, 0x00, 0xDE, 0xFF, 0x0A, 0x00, 0x0C, 0x00,
+ 0xDE, 0xFF, 0x0A, 0x00, 0x11, 0x00, 0xDE, 0xFF,
+ 0x0D, 0x00, 0x17, 0x00, 0xD2, 0xFF, 0x0F, 0x00,
+ 0x1C, 0x00, 0xC8, 0xFF, 0x11, 0x00, 0x21, 0x00,
+ 0xBC, 0xFF, 0x13, 0x00, 0x26, 0x00, 0xAD, 0xFF,
+ 0x0A, 0x00, 0xFE, 0xFF, 0xDE, 0xFF, 0x0A, 0x00,
+ 0xF9, 0xFF, 0xDE, 0xFF, 0x0A, 0x00, 0xF4, 0xFF,
+ 0xDE, 0xFF, 0x0A, 0x00, 0xEF, 0xFF, 0xDE, 0xFF,
+ 0x0D, 0x00, 0xE9, 0xFF, 0xD2, 0xFF, 0x0F, 0x00,
+ 0xE4, 0xFF, 0xC8, 0xFF, 0x11, 0x00, 0xDF, 0xFF,
+ 0xBC, 0xFF, 0x13, 0x00, 0xDA, 0xFF, 0xAD, 0xFF,
+ 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00,
+ 0x07, 0x00, 0x02, 0x00, 0x02, 0x00, 0x0D, 0x00,
+ 0x02, 0x00, 0x02, 0x00, 0x12, 0x00, 0x02, 0x00,
+ 0x05, 0x00, 0x19, 0x00, 0x03, 0x00, 0x07, 0x00,
+ 0x1E, 0x00, 0x04, 0x00, 0x09, 0x00, 0x24, 0x00,
+ 0x05, 0x00, 0x0B, 0x00, 0x29, 0x00, 0x06, 0x00,
+ 0x02, 0x00, 0xFE, 0xFF, 0x02, 0x00, 0x02, 0x00,
+ 0xF9, 0xFF, 0x02, 0x00, 0x02, 0x00, 0xF3, 0xFF,
+ 0x02, 0x00, 0x02, 0x00, 0xEE, 0xFF, 0x02, 0x00,
+ 0x05, 0x00, 0xE7, 0xFF, 0x03, 0x00, 0x07, 0x00,
+ 0xE2, 0xFF, 0x04, 0x00, 0x09, 0x00, 0xDC, 0xFF,
+ 0x05, 0x00, 0x0B, 0x00, 0xD7, 0xFF, 0x06, 0x00,
+ 0x02, 0x00, 0x02, 0x00, 0x07, 0x00, 0x02, 0x00,
+ 0x07, 0x00, 0x07, 0x00, 0x02, 0x00, 0x0D, 0x00,
+ 0x07, 0x00, 0x02, 0x00, 0x12, 0x00, 0x07, 0x00,
+ 0x05, 0x00, 0x19, 0x00, 0x0A, 0x00, 0x07, 0x00,
+ 0x1E, 0x00, 0x0C, 0x00, 0x09, 0x00, 0x24, 0x00,
+ 0x0F, 0x00, 0x0B, 0x00, 0x29, 0x00, 0x12, 0x00,
+ 0x02, 0x00, 0xFE, 0xFF, 0x07, 0x00, 0x02, 0x00,
+ 0xF9, 0xFF, 0x07, 0x00, 0x02, 0x00, 0xF3, 0xFF,
+ 0x07, 0x00, 0x02, 0x00, 0xEE, 0xFF, 0x07, 0x00,
+ 0x05, 0x00, 0xE7, 0xFF, 0x0A, 0x00, 0x07, 0x00,
+ 0xE2, 0xFF, 0x0C, 0x00, 0x09, 0x00, 0xDC, 0xFF,
+ 0x0F, 0x00, 0x0B, 0x00, 0xD7, 0xFF, 0x12, 0x00,
+ 0x02, 0x00, 0x02, 0x00, 0x0C, 0x00, 0x02, 0x00,
+ 0x07, 0x00, 0x0C, 0x00, 0x02, 0x00, 0x0D, 0x00,
+ 0x0C, 0x00, 0x02, 0x00, 0x12, 0x00, 0x0C, 0x00,
+ 0x05, 0x00, 0x19, 0x00, 0x11, 0x00, 0x07, 0x00,
+ 0x1E, 0x00, 0x15, 0x00, 0x09, 0x00, 0x24, 0x00,
+ 0x19, 0x00, 0x0B, 0x00, 0x29, 0x00, 0x1F, 0x00,
+ 0x02, 0x00, 0xFE, 0xFF, 0x0C, 0x00, 0x02, 0x00,
+ 0xF9, 0xFF, 0x0C, 0x00, 0x02, 0x00, 0xF3, 0xFF,
+ 0x0C, 0x00, 0x02, 0x00, 0xEE, 0xFF, 0x0C, 0x00,
+ 0x05, 0x00, 0xE7, 0xFF, 0x11, 0x00, 0x07, 0x00,
+ 0xE2, 0xFF, 0x15, 0x00, 0x09, 0x00, 0xDC, 0xFF,
+ 0x19, 0x00, 0x0B, 0x00, 0xD7, 0xFF, 0x1F, 0x00,
+ 0x02, 0x00, 0x02, 0x00, 0x11, 0x00, 0x02, 0x00,
+ 0x07, 0x00, 0x11, 0x00, 0x02, 0x00, 0x0D, 0x00,
+ 0x11, 0x00, 0x02, 0x00, 0x12, 0x00, 0x11, 0x00,
+ 0x05, 0x00, 0x19, 0x00, 0x18, 0x00, 0x07, 0x00,
+ 0x1E, 0x00, 0x1D, 0x00, 0x09, 0x00, 0x24, 0x00,
+ 0x23, 0x00, 0x0B, 0x00, 0x29, 0x00, 0x2B, 0x00,
+ 0x02, 0x00, 0xFE, 0xFF, 0x11, 0x00, 0x02, 0x00,
+ 0xF9, 0xFF, 0x11, 0x00, 0x02, 0x00, 0xF3, 0xFF,
+ 0x11, 0x00, 0x02, 0x00, 0xEE, 0xFF, 0x11, 0x00,
+ 0x05, 0x00, 0xE7, 0xFF, 0x18, 0x00, 0x07, 0x00,
+ 0xE2, 0xFF, 0x1D, 0x00, 0x09, 0x00, 0xDC, 0xFF,
+ 0x23, 0x00, 0x0B, 0x00, 0xD7, 0xFF, 0x2B, 0x00,
+ 0x05, 0x00, 0x02, 0x00, 0x17, 0x00, 0x05, 0x00,
+ 0x07, 0x00, 0x17, 0x00, 0x05, 0x00, 0x0D, 0x00,
+ 0x17, 0x00, 0x05, 0x00, 0x12, 0x00, 0x17, 0x00,
+ 0x08, 0x00, 0x19, 0x00, 0x1F, 0x00, 0x0A, 0x00,
+ 0x1E, 0x00, 0x26, 0x00, 0x0C, 0x00, 0x24, 0x00,
+ 0x2E, 0x00, 0x0E, 0x00, 0x29, 0x00, 0x38, 0x00,
+ 0x05, 0x00, 0xFE, 0xFF, 0x17, 0x00, 0x05, 0x00,
+ 0xF9, 0xFF, 0x17, 0x00, 0x05, 0x00, 0xF3, 0xFF,
+ 0x17, 0x00, 0x05, 0x00, 0xEE, 0xFF, 0x17, 0x00,
+ 0x08, 0x00, 0xE7, 0xFF, 0x1F, 0x00, 0x0A, 0x00,
+ 0xE2, 0xFF, 0x26, 0x00, 0x0C, 0x00, 0xDC, 0xFF,
+ 0x2E, 0x00, 0x0E, 0x00, 0xD7, 0xFF, 0x38, 0x00,
+ 0x07, 0x00, 0x02, 0x00, 0x1C, 0x00, 0x07, 0x00,
+ 0x07, 0x00, 0x1C, 0x00, 0x07, 0x00, 0x0D, 0x00,
+ 0x1C, 0x00, 0x07, 0x00, 0x12, 0x00, 0x1C, 0x00,
+ 0x0A, 0x00, 0x19, 0x00, 0x26, 0x00, 0x0C, 0x00,
+ 0x1E, 0x00, 0x2E, 0x00, 0x0E, 0x00, 0x24, 0x00,
+ 0x38, 0x00, 0x10, 0x00, 0x29, 0x00, 0x44, 0x00,
+ 0x07, 0x00, 0xFE, 0xFF, 0x1C, 0x00, 0x07, 0x00,
+ 0xF9, 0xFF, 0x1C, 0x00, 0x07, 0x00, 0xF3, 0xFF,
+ 0x1C, 0x00, 0x07, 0x00, 0xEE, 0xFF, 0x1C, 0x00,
+ 0x0A, 0x00, 0xE7, 0xFF, 0x26, 0x00, 0x0C, 0x00,
+ 0xE2, 0xFF, 0x2E, 0x00, 0x0E, 0x00, 0xDC, 0xFF,
+ 0x38, 0x00, 0x10, 0x00, 0xD7, 0xFF, 0x44, 0x00,
+ 0x09, 0x00, 0x02, 0x00, 0x21, 0x00, 0x09, 0x00,
+ 0x07, 0x00, 0x21, 0x00, 0x09, 0x00, 0x0D, 0x00,
+ 0x21, 0x00, 0x09, 0x00, 0x12, 0x00, 0x21, 0x00,
+ 0x0C, 0x00, 0x19, 0x00, 0x2D, 0x00, 0x0E, 0x00,
+ 0x1E, 0x00, 0x37, 0x00, 0x10, 0x00, 0x24, 0x00,
+ 0x42, 0x00, 0x12, 0x00, 0x29, 0x00, 0x51, 0x00,
+ 0x09, 0x00, 0xFE, 0xFF, 0x21, 0x00, 0x09, 0x00,
+ 0xF9, 0xFF, 0x21, 0x00, 0x09, 0x00, 0xF3, 0xFF,
+ 0x21, 0x00, 0x09, 0x00, 0xEE, 0xFF, 0x21, 0x00,
+ 0x0C, 0x00, 0xE7, 0xFF, 0x2D, 0x00, 0x0E, 0x00,
+ 0xE2, 0xFF, 0x37, 0x00, 0x10, 0x00, 0xDC, 0xFF,
+ 0x42, 0x00, 0x12, 0x00, 0xD7, 0xFF, 0x51, 0x00,
+ 0x0B, 0x00, 0x02, 0x00, 0x26, 0x00, 0x0B, 0x00,
+ 0x07, 0x00, 0x26, 0x00, 0x0B, 0x00, 0x0D, 0x00,
+ 0x26, 0x00, 0x0B, 0x00, 0x12, 0x00, 0x26, 0x00,
+ 0x0E, 0x00, 0x19, 0x00, 0x34, 0x00, 0x10, 0x00,
+ 0x1E, 0x00, 0x3F, 0x00, 0x12, 0x00, 0x24, 0x00,
+ 0x4C, 0x00, 0x14, 0x00, 0x29, 0x00, 0x5D, 0x00,
+ 0x0B, 0x00, 0xFE, 0xFF, 0x26, 0x00, 0x0B, 0x00,
+ 0xF9, 0xFF, 0x26, 0x00, 0x0B, 0x00, 0xF3, 0xFF,
+ 0x26, 0x00, 0x0B, 0x00, 0xEE, 0xFF, 0x26, 0x00,
+ 0x0E, 0x00, 0xE7, 0xFF, 0x34, 0x00, 0x10, 0x00,
+ 0xE2, 0xFF, 0x3F, 0x00, 0x12, 0x00, 0xDC, 0xFF,
+ 0x4C, 0x00, 0x14, 0x00, 0xD7, 0xFF, 0x5D, 0x00,
+ 0x02, 0x00, 0x02, 0x00, 0xFE, 0xFF, 0x02, 0x00,
+ 0x07, 0x00, 0xFE, 0xFF, 0x02, 0x00, 0x0D, 0x00,
+ 0xFE, 0xFF, 0x02, 0x00, 0x12, 0x00, 0xFE, 0xFF,
+ 0x05, 0x00, 0x19, 0x00, 0xFD, 0xFF, 0x07, 0x00,
+ 0x1E, 0x00, 0xFC, 0xFF, 0x09, 0x00, 0x24, 0x00,
+ 0xFB, 0xFF, 0x0B, 0x00, 0x29, 0x00, 0xFA, 0xFF,
+ 0x02, 0x00, 0xFE, 0xFF, 0xFE, 0xFF, 0x02, 0x00,
+ 0xF9, 0xFF, 0xFE, 0xFF, 0x02, 0x00, 0xF3, 0xFF,
+ 0xFE, 0xFF, 0x02, 0x00, 0xEE, 0xFF, 0xFE, 0xFF,
+ 0x05, 0x00, 0xE7, 0xFF, 0xFD, 0xFF, 0x07, 0x00,
+ 0xE2, 0xFF, 0xFC, 0xFF, 0x09, 0x00, 0xDC, 0xFF,
+ 0xFB, 0xFF, 0x0B, 0x00, 0xD7, 0xFF, 0xFA, 0xFF,
+ 0x02, 0x00, 0x02, 0x00, 0xF9, 0xFF, 0x02, 0x00,
+ 0x07, 0x00, 0xF9, 0xFF, 0x02, 0x00, 0x0D, 0x00,
+ 0xF9, 0xFF, 0x02, 0x00, 0x12, 0x00, 0xF9, 0xFF,
+ 0x05, 0x00, 0x19, 0x00, 0xF6, 0xFF, 0x07, 0x00,
+ 0x1E, 0x00, 0xF4, 0xFF, 0x09, 0x00, 0x24, 0x00,
+ 0xF1, 0xFF, 0x0B, 0x00, 0x29, 0x00, 0xEE, 0xFF,
+ 0x02, 0x00, 0xFE, 0xFF, 0xF9, 0xFF, 0x02, 0x00,
+ 0xF9, 0xFF, 0xF9, 0xFF, 0x02, 0x00, 0xF3, 0xFF,
+ 0xF9, 0xFF, 0x02, 0x00, 0xEE, 0xFF, 0xF9, 0xFF,
+ 0x05, 0x00, 0xE7, 0xFF, 0xF6, 0xFF, 0x07, 0x00,
+ 0xE2, 0xFF, 0xF4, 0xFF, 0x09, 0x00, 0xDC, 0xFF,
+ 0xF1, 0xFF, 0x0B, 0x00, 0xD7, 0xFF, 0xEE, 0xFF,
+ 0x02, 0x00, 0x02, 0x00, 0xF4, 0xFF, 0x02, 0x00,
+ 0x07, 0x00, 0xF4, 0xFF, 0x02, 0x00, 0x0D, 0x00,
+ 0xF4, 0xFF, 0x02, 0x00, 0x12, 0x00, 0xF4, 0xFF,
+ 0x05, 0x00, 0x19, 0x00, 0xEF, 0xFF, 0x07, 0x00,
+ 0x1E, 0x00, 0xEB, 0xFF, 0x09, 0x00, 0x24, 0x00,
+ 0xE7, 0xFF, 0x0B, 0x00, 0x29, 0x00, 0xE1, 0xFF,
+ 0x02, 0x00, 0xFE, 0xFF, 0xF4, 0xFF, 0x02, 0x00,
+ 0xF9, 0xFF, 0xF4, 0xFF, 0x02, 0x00, 0xF3, 0xFF,
+ 0xF4, 0xFF, 0x02, 0x00, 0xEE, 0xFF, 0xF4, 0xFF,
+ 0x05, 0x00, 0xE7, 0xFF, 0xEF, 0xFF, 0x07, 0x00,
+ 0xE2, 0xFF, 0xEB, 0xFF, 0x09, 0x00, 0xDC, 0xFF,
+ 0xE7, 0xFF, 0x0B, 0x00, 0xD7, 0xFF, 0xE1, 0xFF,
+ 0x02, 0x00, 0x02, 0x00, 0xEF, 0xFF, 0x02, 0x00,
+ 0x07, 0x00, 0xEF, 0xFF, 0x02, 0x00, 0x0D, 0x00,
+ 0xEF, 0xFF, 0x02, 0x00, 0x12, 0x00, 0xEF, 0xFF,
+ 0x05, 0x00, 0x19, 0x00, 0xE8, 0xFF, 0x07, 0x00,
+ 0x1E, 0x00, 0xE3, 0xFF, 0x09, 0x00, 0x24, 0x00,
+ 0xDD, 0xFF, 0x0B, 0x00, 0x29, 0x00, 0xD5, 0xFF,
+ 0x02, 0x00, 0xFE, 0xFF, 0xEF, 0xFF, 0x02, 0x00,
+ 0xF9, 0xFF, 0xEF, 0xFF, 0x02, 0x00, 0xF3, 0xFF,
+ 0xEF, 0xFF, 0x02, 0x00, 0xEE, 0xFF, 0xEF, 0xFF,
+ 0x05, 0x00, 0xE7, 0xFF, 0xE8, 0xFF, 0x07, 0x00,
+ 0xE2, 0xFF, 0xE3, 0xFF, 0x09, 0x00, 0xDC, 0xFF,
+ 0xDD, 0xFF, 0x0B, 0x00, 0xD7, 0xFF, 0xD5, 0xFF,
+ 0x05, 0x00, 0x02, 0x00, 0xE9, 0xFF, 0x05, 0x00,
+ 0x07, 0x00, 0xE9, 0xFF, 0x05, 0x00, 0x0D, 0x00,
+ 0xE9, 0xFF, 0x05, 0x00, 0x12, 0x00, 0xE9, 0xFF,
+ 0x08, 0x00, 0x19, 0x00, 0xE1, 0xFF, 0x0A, 0x00,
+ 0x1E, 0x00, 0xDA, 0xFF, 0x0C, 0x00, 0x24, 0x00,
+ 0xD2, 0xFF, 0x0E, 0x00, 0x29, 0x00, 0xC8, 0xFF,
+ 0x05, 0x00, 0xFE, 0xFF, 0xE9, 0xFF, 0x05, 0x00,
+ 0xF9, 0xFF, 0xE9, 0xFF, 0x05, 0x00, 0xF3, 0xFF,
+ 0xE9, 0xFF, 0x05, 0x00, 0xEE, 0xFF, 0xE9, 0xFF,
+ 0x08, 0x00, 0xE7, 0xFF, 0xE1, 0xFF, 0x0A, 0x00,
+ 0xE2, 0xFF, 0xDA, 0xFF, 0x0C, 0x00, 0xDC, 0xFF,
+ 0xD2, 0xFF, 0x0E, 0x00, 0xD7, 0xFF, 0xC8, 0xFF,
+ 0x07, 0x00, 0x02, 0x00, 0xE4, 0xFF, 0x07, 0x00,
+ 0x07, 0x00, 0xE4, 0xFF, 0x07, 0x00, 0x0D, 0x00,
+ 0xE4, 0xFF, 0x07, 0x00, 0x12, 0x00, 0xE4, 0xFF,
+ 0x0A, 0x00, 0x19, 0x00, 0xDA, 0xFF, 0x0C, 0x00,
+ 0x1E, 0x00, 0xD2, 0xFF, 0x0E, 0x00, 0x24, 0x00,
+ 0xC8, 0xFF, 0x10, 0x00, 0x29, 0x00, 0xBC, 0xFF,
+ 0x07, 0x00, 0xFE, 0xFF, 0xE4, 0xFF, 0x07, 0x00,
+ 0xF9, 0xFF, 0xE4, 0xFF, 0x07, 0x00, 0xF3, 0xFF,
+ 0xE4, 0xFF, 0x07, 0x00, 0xEE, 0xFF, 0xE4, 0xFF,
+ 0x0A, 0x00, 0xE7, 0xFF, 0xDA, 0xFF, 0x0C, 0x00,
+ 0xE2, 0xFF, 0xD2, 0xFF, 0x0E, 0x00, 0xDC, 0xFF,
+ 0xC8, 0xFF, 0x10, 0x00, 0xD7, 0xFF, 0xBC, 0xFF,
+ 0x09, 0x00, 0x02, 0x00, 0xDF, 0xFF, 0x09, 0x00,
+ 0x07, 0x00, 0xDF, 0xFF, 0x09, 0x00, 0x0D, 0x00,
+ 0xDF, 0xFF, 0x09, 0x00, 0x12, 0x00, 0xDF, 0xFF,
+ 0x0C, 0x00, 0x19, 0x00, 0xD3, 0xFF, 0x0E, 0x00,
+ 0x1E, 0x00, 0xC9, 0xFF, 0x10, 0x00, 0x24, 0x00,
+ 0xBE, 0xFF, 0x12, 0x00, 0x29, 0x00, 0xAF, 0xFF,
+ 0x09, 0x00, 0xFE, 0xFF, 0xDF, 0xFF, 0x09, 0x00,
+ 0xF9, 0xFF, 0xDF, 0xFF, 0x09, 0x00, 0xF3, 0xFF,
+ 0xDF, 0xFF, 0x09, 0x00, 0xEE, 0xFF, 0xDF, 0xFF,
+ 0x0C, 0x00, 0xE7, 0xFF, 0xD3, 0xFF, 0x0E, 0x00,
+ 0xE2, 0xFF, 0xC9, 0xFF, 0x10, 0x00, 0xDC, 0xFF,
+ 0xBE, 0xFF, 0x12, 0x00, 0xD7, 0xFF, 0xAF, 0xFF,
+ 0x0B, 0x00, 0x02, 0x00, 0xDA, 0xFF, 0x0B, 0x00,
+ 0x07, 0x00, 0xDA, 0xFF, 0x0B, 0x00, 0x0D, 0x00,
+ 0xDA, 0xFF, 0x0B, 0x00, 0x12, 0x00, 0xDA, 0xFF,
+ 0x0E, 0x00, 0x19, 0x00, 0xCC, 0xFF, 0x10, 0x00,
+ 0x1E, 0x00, 0xC1, 0xFF, 0x12, 0x00, 0x24, 0x00,
+ 0xB4, 0xFF, 0x14, 0x00, 0x29, 0x00, 0xA3, 0xFF,
+ 0x0B, 0x00, 0xFE, 0xFF, 0xDA, 0xFF, 0x0B, 0x00,
+ 0xF9, 0xFF, 0xDA, 0xFF, 0x0B, 0x00, 0xF3, 0xFF,
+ 0xDA, 0xFF, 0x0B, 0x00, 0xEE, 0xFF, 0xDA, 0xFF,
+ 0x0E, 0x00, 0xE7, 0xFF, 0xCC, 0xFF, 0x10, 0x00,
+ 0xE2, 0xFF, 0xC1, 0xFF, 0x12, 0x00, 0xDC, 0xFF,
+ 0xB4, 0xFF, 0x14, 0x00, 0xD7, 0xFF, 0xA3, 0xFF,
+ 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00,
+ 0x09, 0x00, 0x02, 0x00, 0x03, 0x00, 0x0F, 0x00,
+ 0x02, 0x00, 0x03, 0x00, 0x15, 0x00, 0x02, 0x00,
+ 0x06, 0x00, 0x1C, 0x00, 0x03, 0x00, 0x08, 0x00,
+ 0x22, 0x00, 0x04, 0x00, 0x0A, 0x00, 0x28, 0x00,
+ 0x05, 0x00, 0x0C, 0x00, 0x2E, 0x00, 0x06, 0x00,
+ 0x03, 0x00, 0xFD, 0xFF, 0x02, 0x00, 0x03, 0x00,
+ 0xF7, 0xFF, 0x02, 0x00, 0x03, 0x00, 0xF1, 0xFF,
+ 0x02, 0x00, 0x03, 0x00, 0xEB, 0xFF, 0x02, 0x00,
+ 0x06, 0x00, 0xE4, 0xFF, 0x03, 0x00, 0x08, 0x00,
+ 0xDE, 0xFF, 0x04, 0x00, 0x0A, 0x00, 0xD8, 0xFF,
+ 0x05, 0x00, 0x0C, 0x00, 0xD2, 0xFF, 0x06, 0x00,
+ 0x03, 0x00, 0x03, 0x00, 0x07, 0x00, 0x03, 0x00,
+ 0x09, 0x00, 0x07, 0x00, 0x03, 0x00, 0x0F, 0x00,
+ 0x07, 0x00, 0x03, 0x00, 0x15, 0x00, 0x07, 0x00,
+ 0x06, 0x00, 0x1C, 0x00, 0x0A, 0x00, 0x08, 0x00,
+ 0x22, 0x00, 0x0D, 0x00, 0x0A, 0x00, 0x28, 0x00,
+ 0x10, 0x00, 0x0C, 0x00, 0x2E, 0x00, 0x13, 0x00,
+ 0x03, 0x00, 0xFD, 0xFF, 0x07, 0x00, 0x03, 0x00,
+ 0xF7, 0xFF, 0x07, 0x00, 0x03, 0x00, 0xF1, 0xFF,
+ 0x07, 0x00, 0x03, 0x00, 0xEB, 0xFF, 0x07, 0x00,
+ 0x06, 0x00, 0xE4, 0xFF, 0x0A, 0x00, 0x08, 0x00,
+ 0xDE, 0xFF, 0x0D, 0x00, 0x0A, 0x00, 0xD8, 0xFF,
+ 0x10, 0x00, 0x0C, 0x00, 0xD2, 0xFF, 0x13, 0x00,
+ 0x03, 0x00, 0x03, 0x00, 0x0D, 0x00, 0x03, 0x00,
+ 0x09, 0x00, 0x0D, 0x00, 0x03, 0x00, 0x0F, 0x00,
+ 0x0D, 0x00, 0x03, 0x00, 0x15, 0x00, 0x0D, 0x00,
+ 0x06, 0x00, 0x1C, 0x00, 0x12, 0x00, 0x08, 0x00,
+ 0x22, 0x00, 0x16, 0x00, 0x0A, 0x00, 0x28, 0x00,
+ 0x1B, 0x00, 0x0C, 0x00, 0x2E, 0x00, 0x21, 0x00,
+ 0x03, 0x00, 0xFD, 0xFF, 0x0D, 0x00, 0x03, 0x00,
+ 0xF7, 0xFF, 0x0D, 0x00, 0x03, 0x00, 0xF1, 0xFF,
+ 0x0D, 0x00, 0x03, 0x00, 0xEB, 0xFF, 0x0D, 0x00,
+ 0x06, 0x00, 0xE4, 0xFF, 0x12, 0x00, 0x08, 0x00,
+ 0xDE, 0xFF, 0x16, 0x00, 0x0A, 0x00, 0xD8, 0xFF,
+ 0x1B, 0x00, 0x0C, 0x00, 0xD2, 0xFF, 0x21, 0x00,
+ 0x03, 0x00, 0x03, 0x00, 0x12, 0x00, 0x03, 0x00,
+ 0x09, 0x00, 0x12, 0x00, 0x03, 0x00, 0x0F, 0x00,
+ 0x12, 0x00, 0x03, 0x00, 0x15, 0x00, 0x12, 0x00,
+ 0x06, 0x00, 0x1C, 0x00, 0x19, 0x00, 0x08, 0x00,
+ 0x22, 0x00, 0x1F, 0x00, 0x0A, 0x00, 0x28, 0x00,
+ 0x26, 0x00, 0x0C, 0x00, 0x2E, 0x00, 0x2E, 0x00,
+ 0x03, 0x00, 0xFD, 0xFF, 0x12, 0x00, 0x03, 0x00,
+ 0xF7, 0xFF, 0x12, 0x00, 0x03, 0x00, 0xF1, 0xFF,
+ 0x12, 0x00, 0x03, 0x00, 0xEB, 0xFF, 0x12, 0x00,
+ 0x06, 0x00, 0xE4, 0xFF, 0x19, 0x00, 0x08, 0x00,
+ 0xDE, 0xFF, 0x1F, 0x00, 0x0A, 0x00, 0xD8, 0xFF,
+ 0x26, 0x00, 0x0C, 0x00, 0xD2, 0xFF, 0x2E, 0x00,
+ 0x06, 0x00, 0x03, 0x00, 0x19, 0x00, 0x06, 0x00,
+ 0x09, 0x00, 0x19, 0x00, 0x06, 0x00, 0x0F, 0x00,
+ 0x19, 0x00, 0x06, 0x00, 0x15, 0x00, 0x19, 0x00,
+ 0x09, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x0B, 0x00,
+ 0x22, 0x00, 0x29, 0x00, 0x0D, 0x00, 0x28, 0x00,
+ 0x32, 0x00, 0x0F, 0x00, 0x2E, 0x00, 0x3D, 0x00,
+ 0x06, 0x00, 0xFD, 0xFF, 0x19, 0x00, 0x06, 0x00,
+ 0xF7, 0xFF, 0x19, 0x00, 0x06, 0x00, 0xF1, 0xFF,
+ 0x19, 0x00, 0x06, 0x00, 0xEB, 0xFF, 0x19, 0x00,
+ 0x09, 0x00, 0xE4, 0xFF, 0x22, 0x00, 0x0B, 0x00,
+ 0xDE, 0xFF, 0x29, 0x00, 0x0D, 0x00, 0xD8, 0xFF,
+ 0x32, 0x00, 0x0F, 0x00, 0xD2, 0xFF, 0x3D, 0x00,
+ 0x08, 0x00, 0x03, 0x00, 0x1E, 0x00, 0x08, 0x00,
+ 0x09, 0x00, 0x1E, 0x00, 0x08, 0x00, 0x0F, 0x00,
+ 0x1E, 0x00, 0x08, 0x00, 0x15, 0x00, 0x1E, 0x00,
+ 0x0B, 0x00, 0x1C, 0x00, 0x29, 0x00, 0x0D, 0x00,
+ 0x22, 0x00, 0x32, 0x00, 0x0F, 0x00, 0x28, 0x00,
+ 0x3D, 0x00, 0x11, 0x00, 0x2E, 0x00, 0x4A, 0x00,
+ 0x08, 0x00, 0xFD, 0xFF, 0x1E, 0x00, 0x08, 0x00,
+ 0xF7, 0xFF, 0x1E, 0x00, 0x08, 0x00, 0xF1, 0xFF,
+ 0x1E, 0x00, 0x08, 0x00, 0xEB, 0xFF, 0x1E, 0x00,
+ 0x0B, 0x00, 0xE4, 0xFF, 0x29, 0x00, 0x0D, 0x00,
+ 0xDE, 0xFF, 0x32, 0x00, 0x0F, 0x00, 0xD8, 0xFF,
+ 0x3D, 0x00, 0x11, 0x00, 0xD2, 0xFF, 0x4A, 0x00,
+ 0x0A, 0x00, 0x03, 0x00, 0x24, 0x00, 0x0A, 0x00,
+ 0x09, 0x00, 0x24, 0x00, 0x0A, 0x00, 0x0F, 0x00,
+ 0x24, 0x00, 0x0A, 0x00, 0x15, 0x00, 0x24, 0x00,
+ 0x0D, 0x00, 0x1C, 0x00, 0x31, 0x00, 0x0F, 0x00,
+ 0x22, 0x00, 0x3B, 0x00, 0x11, 0x00, 0x28, 0x00,
+ 0x48, 0x00, 0x13, 0x00, 0x2E, 0x00, 0x58, 0x00,
+ 0x0A, 0x00, 0xFD, 0xFF, 0x24, 0x00, 0x0A, 0x00,
+ 0xF7, 0xFF, 0x24, 0x00, 0x0A, 0x00, 0xF1, 0xFF,
+ 0x24, 0x00, 0x0A, 0x00, 0xEB, 0xFF, 0x24, 0x00,
+ 0x0D, 0x00, 0xE4, 0xFF, 0x31, 0x00, 0x0F, 0x00,
+ 0xDE, 0xFF, 0x3B, 0x00, 0x11, 0x00, 0xD8, 0xFF,
+ 0x48, 0x00, 0x13, 0x00, 0xD2, 0xFF, 0x58, 0x00,
+ 0x0C, 0x00, 0x03, 0x00, 0x29, 0x00, 0x0C, 0x00,
+ 0x09, 0x00, 0x29, 0x00, 0x0C, 0x00, 0x0F, 0x00,
+ 0x29, 0x00, 0x0C, 0x00, 0x15, 0x00, 0x29, 0x00,
+ 0x0F, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x11, 0x00,
+ 0x22, 0x00, 0x44, 0x00, 0x13, 0x00, 0x28, 0x00,
+ 0x53, 0x00, 0x15, 0x00, 0x2E, 0x00, 0x65, 0x00,
+ 0x0C, 0x00, 0xFD, 0xFF, 0x29, 0x00, 0x0C, 0x00,
+ 0xF7, 0xFF, 0x29, 0x00, 0x0C, 0x00, 0xF1, 0xFF,
+ 0x29, 0x00, 0x0C, 0x00, 0xEB, 0xFF, 0x29, 0x00,
+ 0x0F, 0x00, 0xE4, 0xFF, 0x38, 0x00, 0x11, 0x00,
+ 0xDE, 0xFF, 0x44, 0x00, 0x13, 0x00, 0xD8, 0xFF,
+ 0x53, 0x00, 0x15, 0x00, 0xD2, 0xFF, 0x65, 0x00,
+ 0x03, 0x00, 0x03, 0x00, 0xFE, 0xFF, 0x03, 0x00,
+ 0x09, 0x00, 0xFE, 0xFF, 0x03, 0x00, 0x0F, 0x00,
+ 0xFE, 0xFF, 0x03, 0x00, 0x15, 0x00, 0xFE, 0xFF,
+ 0x06, 0x00, 0x1C, 0x00, 0xFD, 0xFF, 0x08, 0x00,
+ 0x22, 0x00, 0xFC, 0xFF, 0x0A, 0x00, 0x28, 0x00,
+ 0xFB, 0xFF, 0x0C, 0x00, 0x2E, 0x00, 0xFA, 0xFF,
+ 0x03, 0x00, 0xFD, 0xFF, 0xFE, 0xFF, 0x03, 0x00,
+ 0xF7, 0xFF, 0xFE, 0xFF, 0x03, 0x00, 0xF1, 0xFF,
+ 0xFE, 0xFF, 0x03, 0x00, 0xEB, 0xFF, 0xFE, 0xFF,
+ 0x06, 0x00, 0xE4, 0xFF, 0xFD, 0xFF, 0x08, 0x00,
+ 0xDE, 0xFF, 0xFC, 0xFF, 0x0A, 0x00, 0xD8, 0xFF,
+ 0xFB, 0xFF, 0x0C, 0x00, 0xD2, 0xFF, 0xFA, 0xFF,
+ 0x03, 0x00, 0x03, 0x00, 0xF9, 0xFF, 0x03, 0x00,
+ 0x09, 0x00, 0xF9, 0xFF, 0x03, 0x00, 0x0F, 0x00,
+ 0xF9, 0xFF, 0x03, 0x00, 0x15, 0x00, 0xF9, 0xFF,
+ 0x06, 0x00, 0x1C, 0x00, 0xF6, 0xFF, 0x08, 0x00,
+ 0x22, 0x00, 0xF3, 0xFF, 0x0A, 0x00, 0x28, 0x00,
+ 0xF0, 0xFF, 0x0C, 0x00, 0x2E, 0x00, 0xED, 0xFF,
+ 0x03, 0x00, 0xFD, 0xFF, 0xF9, 0xFF, 0x03, 0x00,
+ 0xF7, 0xFF, 0xF9, 0xFF, 0x03, 0x00, 0xF1, 0xFF,
+ 0xF9, 0xFF, 0x03, 0x00, 0xEB, 0xFF, 0xF9, 0xFF,
+ 0x06, 0x00, 0xE4, 0xFF, 0xF6, 0xFF, 0x08, 0x00,
+ 0xDE, 0xFF, 0xF3, 0xFF, 0x0A, 0x00, 0xD8, 0xFF,
+ 0xF0, 0xFF, 0x0C, 0x00, 0xD2, 0xFF, 0xED, 0xFF,
+ 0x03, 0x00, 0x03, 0x00, 0xF3, 0xFF, 0x03, 0x00,
+ 0x09, 0x00, 0xF3, 0xFF, 0x03, 0x00, 0x0F, 0x00,
+ 0xF3, 0xFF, 0x03, 0x00, 0x15, 0x00, 0xF3, 0xFF,
+ 0x06, 0x00, 0x1C, 0x00, 0xEE, 0xFF, 0x08, 0x00,
+ 0x22, 0x00, 0xEA, 0xFF, 0x0A, 0x00, 0x28, 0x00,
+ 0xE5, 0xFF, 0x0C, 0x00, 0x2E, 0x00, 0xDF, 0xFF,
+ 0x03, 0x00, 0xFD, 0xFF, 0xF3, 0xFF, 0x03, 0x00,
+ 0xF7, 0xFF, 0xF3, 0xFF, 0x03, 0x00, 0xF1, 0xFF,
+ 0xF3, 0xFF, 0x03, 0x00, 0xEB, 0xFF, 0xF3, 0xFF,
+ 0x06, 0x00, 0xE4, 0xFF, 0xEE, 0xFF, 0x08, 0x00,
+ 0xDE, 0xFF, 0xEA, 0xFF, 0x0A, 0x00, 0xD8, 0xFF,
+ 0xE5, 0xFF, 0x0C, 0x00, 0xD2, 0xFF, 0xDF, 0xFF,
+ 0x03, 0x00, 0x03, 0x00, 0xEE, 0xFF, 0x03, 0x00,
+ 0x09, 0x00, 0xEE, 0xFF, 0x03, 0x00, 0x0F, 0x00,
+ 0xEE, 0xFF, 0x03, 0x00, 0x15, 0x00, 0xEE, 0xFF,
+ 0x06, 0x00, 0x1C, 0x00, 0xE7, 0xFF, 0x08, 0x00,
+ 0x22, 0x00, 0xE1, 0xFF, 0x0A, 0x00, 0x28, 0x00,
+ 0xDA, 0xFF, 0x0C, 0x00, 0x2E, 0x00, 0xD2, 0xFF,
+ 0x03, 0x00, 0xFD, 0xFF, 0xEE, 0xFF, 0x03, 0x00,
+ 0xF7, 0xFF, 0xEE, 0xFF, 0x03, 0x00, 0xF1, 0xFF,
+ 0xEE, 0xFF, 0x03, 0x00, 0xEB, 0xFF, 0xEE, 0xFF,
+ 0x06, 0x00, 0xE4, 0xFF, 0xE7, 0xFF, 0x08, 0x00,
+ 0xDE, 0xFF, 0xE1, 0xFF, 0x0A, 0x00, 0xD8, 0xFF,
+ 0xDA, 0xFF, 0x0C, 0x00, 0xD2, 0xFF, 0xD2, 0xFF,
+ 0x06, 0x00, 0x03, 0x00, 0xE7, 0xFF, 0x06, 0x00,
+ 0x09, 0x00, 0xE7, 0xFF, 0x06, 0x00, 0x0F, 0x00,
+ 0xE7, 0xFF, 0x06, 0x00, 0x15, 0x00, 0xE7, 0xFF,
+ 0x09, 0x00, 0x1C, 0x00, 0xDE, 0xFF, 0x0B, 0x00,
+ 0x22, 0x00, 0xD7, 0xFF, 0x0D, 0x00, 0x28, 0x00,
+ 0xCE, 0xFF, 0x0F, 0x00, 0x2E, 0x00, 0xC3, 0xFF,
+ 0x06, 0x00, 0xFD, 0xFF, 0xE7, 0xFF, 0x06, 0x00,
+ 0xF7, 0xFF, 0xE7, 0xFF, 0x06, 0x00, 0xF1, 0xFF,
+ 0xE7, 0xFF, 0x06, 0x00, 0xEB, 0xFF, 0xE7, 0xFF,
+ 0x09, 0x00, 0xE4, 0xFF, 0xDE, 0xFF, 0x0B, 0x00,
+ 0xDE, 0xFF, 0xD7, 0xFF, 0x0D, 0x00, 0xD8, 0xFF,
+ 0xCE, 0xFF, 0x0F, 0x00, 0xD2, 0xFF, 0xC3, 0xFF,
+ 0x08, 0x00, 0x03, 0x00, 0xE2, 0xFF, 0x08, 0x00,
+ 0x09, 0x00, 0xE2, 0xFF, 0x08, 0x00, 0x0F, 0x00,
+ 0xE2, 0xFF, 0x08, 0x00, 0x15, 0x00, 0xE2, 0xFF,
+ 0x0B, 0x00, 0x1C, 0x00, 0xD7, 0xFF, 0x0D, 0x00,
+ 0x22, 0x00, 0xCE, 0xFF, 0x0F, 0x00, 0x28, 0x00,
+ 0xC3, 0xFF, 0x11, 0x00, 0x2E, 0x00, 0xB6, 0xFF,
+ 0x08, 0x00, 0xFD, 0xFF, 0xE2, 0xFF, 0x08, 0x00,
+ 0xF7, 0xFF, 0xE2, 0xFF, 0x08, 0x00, 0xF1, 0xFF,
+ 0xE2, 0xFF, 0x08, 0x00, 0xEB, 0xFF, 0xE2, 0xFF,
+ 0x0B, 0x00, 0xE4, 0xFF, 0xD7, 0xFF, 0x0D, 0x00,
+ 0xDE, 0xFF, 0xCE, 0xFF, 0x0F, 0x00, 0xD8, 0xFF,
+ 0xC3, 0xFF, 0x11, 0x00, 0xD2, 0xFF, 0xB6, 0xFF,
+ 0x0A, 0x00, 0x03, 0x00, 0xDC, 0xFF, 0x0A, 0x00,
+ 0x09, 0x00, 0xDC, 0xFF, 0x0A, 0x00, 0x0F, 0x00,
+ 0xDC, 0xFF, 0x0A, 0x00, 0x15, 0x00, 0xDC, 0xFF,
+ 0x0D, 0x00, 0x1C, 0x00, 0xCF, 0xFF, 0x0F, 0x00,
+ 0x22, 0x00, 0xC5, 0xFF, 0x11, 0x00, 0x28, 0x00,
+ 0xB8, 0xFF, 0x13, 0x00, 0x2E, 0x00, 0xA8, 0xFF,
+ 0x0A, 0x00, 0xFD, 0xFF, 0xDC, 0xFF, 0x0A, 0x00,
+ 0xF7, 0xFF, 0xDC, 0xFF, 0x0A, 0x00, 0xF1, 0xFF,
+ 0xDC, 0xFF, 0x0A, 0x00, 0xEB, 0xFF, 0xDC, 0xFF,
+ 0x0D, 0x00, 0xE4, 0xFF, 0xCF, 0xFF, 0x0F, 0x00,
+ 0xDE, 0xFF, 0xC5, 0xFF, 0x11, 0x00, 0xD8, 0xFF,
+ 0xB8, 0xFF, 0x13, 0x00, 0xD2, 0xFF, 0xA8, 0xFF,
+ 0x0C, 0x00, 0x03, 0x00, 0xD7, 0xFF, 0x0C, 0x00,
+ 0x09, 0x00, 0xD7, 0xFF, 0x0C, 0x00, 0x0F, 0x00,
+ 0xD7, 0xFF, 0x0C, 0x00, 0x15, 0x00, 0xD7, 0xFF,
+ 0x0F, 0x00, 0x1C, 0x00, 0xC8, 0xFF, 0x11, 0x00,
+ 0x22, 0x00, 0xBC, 0xFF, 0x13, 0x00, 0x28, 0x00,
+ 0xAD, 0xFF, 0x15, 0x00, 0x2E, 0x00, 0x9B, 0xFF,
+ 0x0C, 0x00, 0xFD, 0xFF, 0xD7, 0xFF, 0x0C, 0x00,
+ 0xF7, 0xFF, 0xD7, 0xFF, 0x0C, 0x00, 0xF1, 0xFF,
+ 0xD7, 0xFF, 0x0C, 0x00, 0xEB, 0xFF, 0xD7, 0xFF,
+ 0x0F, 0x00, 0xE4, 0xFF, 0xC8, 0xFF, 0x11, 0x00,
+ 0xDE, 0xFF, 0xBC, 0xFF, 0x13, 0x00, 0xD8, 0xFF,
+ 0xAD, 0xFF, 0x15, 0x00, 0xD2, 0xFF, 0x9B, 0xFF,
+ 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00,
+ 0x0A, 0x00, 0x03, 0x00, 0x04, 0x00, 0x11, 0x00,
+ 0x03, 0x00, 0x04, 0x00, 0x18, 0x00, 0x03, 0x00,
+ 0x07, 0x00, 0x1F, 0x00, 0x04, 0x00, 0x09, 0x00,
+ 0x26, 0x00, 0x05, 0x00, 0x0B, 0x00, 0x2D, 0x00,
+ 0x06, 0x00, 0x0D, 0x00, 0x34, 0x00, 0x07, 0x00,
+ 0x04, 0x00, 0xFD, 0xFF, 0x03, 0x00, 0x04, 0x00,
+ 0xF6, 0xFF, 0x03, 0x00, 0x04, 0x00, 0xEF, 0xFF,
+ 0x03, 0x00, 0x04, 0x00, 0xE8, 0xFF, 0x03, 0x00,
+ 0x07, 0x00, 0xE1, 0xFF, 0x04, 0x00, 0x09, 0x00,
+ 0xDA, 0xFF, 0x05, 0x00, 0x0B, 0x00, 0xD3, 0xFF,
+ 0x06, 0x00, 0x0D, 0x00, 0xCC, 0xFF, 0x07, 0x00,
+ 0x04, 0x00, 0x03, 0x00, 0x09, 0x00, 0x04, 0x00,
+ 0x0A, 0x00, 0x09, 0x00, 0x04, 0x00, 0x11, 0x00,
+ 0x09, 0x00, 0x04, 0x00, 0x18, 0x00, 0x09, 0x00,
+ 0x07, 0x00, 0x1F, 0x00, 0x0C, 0x00, 0x09, 0x00,
+ 0x26, 0x00, 0x0F, 0x00, 0x0B, 0x00, 0x2D, 0x00,
+ 0x12, 0x00, 0x0D, 0x00, 0x34, 0x00, 0x16, 0x00,
+ 0x04, 0x00, 0xFD, 0xFF, 0x09, 0x00, 0x04, 0x00,
+ 0xF6, 0xFF, 0x09, 0x00, 0x04, 0x00, 0xEF, 0xFF,
+ 0x09, 0x00, 0x04, 0x00, 0xE8, 0xFF, 0x09, 0x00,
+ 0x07, 0x00, 0xE1, 0xFF, 0x0C, 0x00, 0x09, 0x00,
+ 0xDA, 0xFF, 0x0F, 0x00, 0x0B, 0x00, 0xD3, 0xFF,
+ 0x12, 0x00, 0x0D, 0x00, 0xCC, 0xFF, 0x16, 0x00,
+ 0x04, 0x00, 0x03, 0x00, 0x0F, 0x00, 0x04, 0x00,
+ 0x0A, 0x00, 0x0F, 0x00, 0x04, 0x00, 0x11, 0x00,
+ 0x0F, 0x00, 0x04, 0x00, 0x18, 0x00, 0x0F, 0x00,
+ 0x07, 0x00, 0x1F, 0x00, 0x15, 0x00, 0x09, 0x00,
+ 0x26, 0x00, 0x19, 0x00, 0x0B, 0x00, 0x2D, 0x00,
+ 0x1F, 0x00, 0x0D, 0x00, 0x34, 0x00, 0x25, 0x00,
+ 0x04, 0x00, 0xFD, 0xFF, 0x0F, 0x00, 0x04, 0x00,
+ 0xF6, 0xFF, 0x0F, 0x00, 0x04, 0x00, 0xEF, 0xFF,
+ 0x0F, 0x00, 0x04, 0x00, 0xE8, 0xFF, 0x0F, 0x00,
+ 0x07, 0x00, 0xE1, 0xFF, 0x15, 0x00, 0x09, 0x00,
+ 0xDA, 0xFF, 0x19, 0x00, 0x0B, 0x00, 0xD3, 0xFF,
+ 0x1F, 0x00, 0x0D, 0x00, 0xCC, 0xFF, 0x25, 0x00,
+ 0x04, 0x00, 0x03, 0x00, 0x15, 0x00, 0x04, 0x00,
+ 0x0A, 0x00, 0x15, 0x00, 0x04, 0x00, 0x11, 0x00,
+ 0x15, 0x00, 0x04, 0x00, 0x18, 0x00, 0x15, 0x00,
+ 0x07, 0x00, 0x1F, 0x00, 0x1D, 0x00, 0x09, 0x00,
+ 0x26, 0x00, 0x23, 0x00, 0x0B, 0x00, 0x2D, 0x00,
+ 0x2B, 0x00, 0x0D, 0x00, 0x34, 0x00, 0x34, 0x00,
+ 0x04, 0x00, 0xFD, 0xFF, 0x15, 0x00, 0x04, 0x00,
+ 0xF6, 0xFF, 0x15, 0x00, 0x04, 0x00, 0xEF, 0xFF,
+ 0x15, 0x00, 0x04, 0x00, 0xE8, 0xFF, 0x15, 0x00,
+ 0x07, 0x00, 0xE1, 0xFF, 0x1D, 0x00, 0x09, 0x00,
+ 0xDA, 0xFF, 0x23, 0x00, 0x0B, 0x00, 0xD3, 0xFF,
+ 0x2B, 0x00, 0x0D, 0x00, 0xCC, 0xFF, 0x34, 0x00,
+ 0x07, 0x00, 0x03, 0x00, 0x1C, 0x00, 0x07, 0x00,
+ 0x0A, 0x00, 0x1C, 0x00, 0x07, 0x00, 0x11, 0x00,
+ 0x1C, 0x00, 0x07, 0x00, 0x18, 0x00, 0x1C, 0x00,
+ 0x0A, 0x00, 0x1F, 0x00, 0x26, 0x00, 0x0C, 0x00,
+ 0x26, 0x00, 0x2E, 0x00, 0x0E, 0x00, 0x2D, 0x00,
+ 0x38, 0x00, 0x10, 0x00, 0x34, 0x00, 0x43, 0x00,
+ 0x07, 0x00, 0xFD, 0xFF, 0x1C, 0x00, 0x07, 0x00,
+ 0xF6, 0xFF, 0x1C, 0x00, 0x07, 0x00, 0xEF, 0xFF,
+ 0x1C, 0x00, 0x07, 0x00, 0xE8, 0xFF, 0x1C, 0x00,
+ 0x0A, 0x00, 0xE1, 0xFF, 0x26, 0x00, 0x0C, 0x00,
+ 0xDA, 0xFF, 0x2E, 0x00, 0x0E, 0x00, 0xD3, 0xFF,
+ 0x38, 0x00, 0x10, 0x00, 0xCC, 0xFF, 0x43, 0x00,
+ 0x09, 0x00, 0x03, 0x00, 0x22, 0x00, 0x09, 0x00,
+ 0x0A, 0x00, 0x22, 0x00, 0x09, 0x00, 0x11, 0x00,
+ 0x22, 0x00, 0x09, 0x00, 0x18, 0x00, 0x22, 0x00,
+ 0x0C, 0x00, 0x1F, 0x00, 0x2E, 0x00, 0x0E, 0x00,
+ 0x26, 0x00, 0x38, 0x00, 0x10, 0x00, 0x2D, 0x00,
+ 0x44, 0x00, 0x12, 0x00, 0x34, 0x00, 0x52, 0x00,
+ 0x09, 0x00, 0xFD, 0xFF, 0x22, 0x00, 0x09, 0x00,
+ 0xF6, 0xFF, 0x22, 0x00, 0x09, 0x00, 0xEF, 0xFF,
+ 0x22, 0x00, 0x09, 0x00, 0xE8, 0xFF, 0x22, 0x00,
+ 0x0C, 0x00, 0xE1, 0xFF, 0x2E, 0x00, 0x0E, 0x00,
+ 0xDA, 0xFF, 0x38, 0x00, 0x10, 0x00, 0xD3, 0xFF,
+ 0x44, 0x00, 0x12, 0x00, 0xCC, 0xFF, 0x52, 0x00,
+ 0x0B, 0x00, 0x03, 0x00, 0x28, 0x00, 0x0B, 0x00,
+ 0x0A, 0x00, 0x28, 0x00, 0x0B, 0x00, 0x11, 0x00,
+ 0x28, 0x00, 0x0B, 0x00, 0x18, 0x00, 0x28, 0x00,
+ 0x0E, 0x00, 0x1F, 0x00, 0x37, 0x00, 0x10, 0x00,
+ 0x26, 0x00, 0x42, 0x00, 0x12, 0x00, 0x2D, 0x00,
+ 0x51, 0x00, 0x14, 0x00, 0x34, 0x00, 0x61, 0x00,
+ 0x0B, 0x00, 0xFD, 0xFF, 0x28, 0x00, 0x0B, 0x00,
+ 0xF6, 0xFF, 0x28, 0x00, 0x0B, 0x00, 0xEF, 0xFF,
+ 0x28, 0x00, 0x0B, 0x00, 0xE8, 0xFF, 0x28, 0x00,
+ 0x0E, 0x00, 0xE1, 0xFF, 0x37, 0x00, 0x10, 0x00,
+ 0xDA, 0xFF, 0x42, 0x00, 0x12, 0x00, 0xD3, 0xFF,
+ 0x51, 0x00, 0x14, 0x00, 0xCC, 0xFF, 0x61, 0x00,
+ 0x0D, 0x00, 0x03, 0x00, 0x2E, 0x00, 0x0D, 0x00,
+ 0x0A, 0x00, 0x2E, 0x00, 0x0D, 0x00, 0x11, 0x00,
+ 0x2E, 0x00, 0x0D, 0x00, 0x18, 0x00, 0x2E, 0x00,
+ 0x10, 0x00, 0x1F, 0x00, 0x3F, 0x00, 0x12, 0x00,
+ 0x26, 0x00, 0x4C, 0x00, 0x14, 0x00, 0x2D, 0x00,
+ 0x5D, 0x00, 0x16, 0x00, 0x34, 0x00, 0x70, 0x00,
+ 0x0D, 0x00, 0xFD, 0xFF, 0x2E, 0x00, 0x0D, 0x00,
+ 0xF6, 0xFF, 0x2E, 0x00, 0x0D, 0x00, 0xEF, 0xFF,
+ 0x2E, 0x00, 0x0D, 0x00, 0xE8, 0xFF, 0x2E, 0x00,
+ 0x10, 0x00, 0xE1, 0xFF, 0x3F, 0x00, 0x12, 0x00,
+ 0xDA, 0xFF, 0x4C, 0x00, 0x14, 0x00, 0xD3, 0xFF,
+ 0x5D, 0x00, 0x16, 0x00, 0xCC, 0xFF, 0x70, 0x00,
+ 0x04, 0x00, 0x03, 0x00, 0xFD, 0xFF, 0x04, 0x00,
+ 0x0A, 0x00, 0xFD, 0xFF, 0x04, 0x00, 0x11, 0x00,
+ 0xFD, 0xFF, 0x04, 0x00, 0x18, 0x00, 0xFD, 0xFF,
+ 0x07, 0x00, 0x1F, 0x00, 0xFC, 0xFF, 0x09, 0x00,
+ 0x26, 0x00, 0xFB, 0xFF, 0x0B, 0x00, 0x2D, 0x00,
+ 0xFA, 0xFF, 0x0D, 0x00, 0x34, 0x00, 0xF9, 0xFF,
+ 0x04, 0x00, 0xFD, 0xFF, 0xFD, 0xFF, 0x04, 0x00,
+ 0xF6, 0xFF, 0xFD, 0xFF, 0x04, 0x00, 0xEF, 0xFF,
+ 0xFD, 0xFF, 0x04, 0x00, 0xE8, 0xFF, 0xFD, 0xFF,
+ 0x07, 0x00, 0xE1, 0xFF, 0xFC, 0xFF, 0x09, 0x00,
+ 0xDA, 0xFF, 0xFB, 0xFF, 0x0B, 0x00, 0xD3, 0xFF,
+ 0xFA, 0xFF, 0x0D, 0x00, 0xCC, 0xFF, 0xF9, 0xFF,
+ 0x04, 0x00, 0x03, 0x00, 0xF7, 0xFF, 0x04, 0x00,
+ 0x0A, 0x00, 0xF7, 0xFF, 0x04, 0x00, 0x11, 0x00,
+ 0xF7, 0xFF, 0x04, 0x00, 0x18, 0x00, 0xF7, 0xFF,
+ 0x07, 0x00, 0x1F, 0x00, 0xF4, 0xFF, 0x09, 0x00,
+ 0x26, 0x00, 0xF1, 0xFF, 0x0B, 0x00, 0x2D, 0x00,
+ 0xEE, 0xFF, 0x0D, 0x00, 0x34, 0x00, 0xEA, 0xFF,
+ 0x04, 0x00, 0xFD, 0xFF, 0xF7, 0xFF, 0x04, 0x00,
+ 0xF6, 0xFF, 0xF7, 0xFF, 0x04, 0x00, 0xEF, 0xFF,
+ 0xF7, 0xFF, 0x04, 0x00, 0xE8, 0xFF, 0xF7, 0xFF,
+ 0x07, 0x00, 0xE1, 0xFF, 0xF4, 0xFF, 0x09, 0x00,
+ 0xDA, 0xFF, 0xF1, 0xFF, 0x0B, 0x00, 0xD3, 0xFF,
+ 0xEE, 0xFF, 0x0D, 0x00, 0xCC, 0xFF, 0xEA, 0xFF,
+ 0x04, 0x00, 0x03, 0x00, 0xF1, 0xFF, 0x04, 0x00,
+ 0x0A, 0x00, 0xF1, 0xFF, 0x04, 0x00, 0x11, 0x00,
+ 0xF1, 0xFF, 0x04, 0x00, 0x18, 0x00, 0xF1, 0xFF,
+ 0x07, 0x00, 0x1F, 0x00, 0xEB, 0xFF, 0x09, 0x00,
+ 0x26, 0x00, 0xE7, 0xFF, 0x0B, 0x00, 0x2D, 0x00,
+ 0xE1, 0xFF, 0x0D, 0x00, 0x34, 0x00, 0xDB, 0xFF,
+ 0x04, 0x00, 0xFD, 0xFF, 0xF1, 0xFF, 0x04, 0x00,
+ 0xF6, 0xFF, 0xF1, 0xFF, 0x04, 0x00, 0xEF, 0xFF,
+ 0xF1, 0xFF, 0x04, 0x00, 0xE8, 0xFF, 0xF1, 0xFF,
+ 0x07, 0x00, 0xE1, 0xFF, 0xEB, 0xFF, 0x09, 0x00,
+ 0xDA, 0xFF, 0xE7, 0xFF, 0x0B, 0x00, 0xD3, 0xFF,
+ 0xE1, 0xFF, 0x0D, 0x00, 0xCC, 0xFF, 0xDB, 0xFF,
+ 0x04, 0x00, 0x03, 0x00, 0xEB, 0xFF, 0x04, 0x00,
+ 0x0A, 0x00, 0xEB, 0xFF, 0x04, 0x00, 0x11, 0x00,
+ 0xEB, 0xFF, 0x04, 0x00, 0x18, 0x00, 0xEB, 0xFF,
+ 0x07, 0x00, 0x1F, 0x00, 0xE3, 0xFF, 0x09, 0x00,
+ 0x26, 0x00, 0xDD, 0xFF, 0x0B, 0x00, 0x2D, 0x00,
+ 0xD5, 0xFF, 0x0D, 0x00, 0x34, 0x00, 0xCC, 0xFF,
+ 0x04, 0x00, 0xFD, 0xFF, 0xEB, 0xFF, 0x04, 0x00,
+ 0xF6, 0xFF, 0xEB, 0xFF, 0x04, 0x00, 0xEF, 0xFF,
+ 0xEB, 0xFF, 0x04, 0x00, 0xE8, 0xFF, 0xEB, 0xFF,
+ 0x07, 0x00, 0xE1, 0xFF, 0xE3, 0xFF, 0x09, 0x00,
+ 0xDA, 0xFF, 0xDD, 0xFF, 0x0B, 0x00, 0xD3, 0xFF,
+ 0xD5, 0xFF, 0x0D, 0x00, 0xCC, 0xFF, 0xCC, 0xFF,
+ 0x07, 0x00, 0x03, 0x00, 0xE4, 0xFF, 0x07, 0x00,
+ 0x0A, 0x00, 0xE4, 0xFF, 0x07, 0x00, 0x11, 0x00,
+ 0xE4, 0xFF, 0x07, 0x00, 0x18, 0x00, 0xE4, 0xFF,
+ 0x0A, 0x00, 0x1F, 0x00, 0xDA, 0xFF, 0x0C, 0x00,
+ 0x26, 0x00, 0xD2, 0xFF, 0x0E, 0x00, 0x2D, 0x00,
+ 0xC8, 0xFF, 0x10, 0x00, 0x34, 0x00, 0xBD, 0xFF,
+ 0x07, 0x00, 0xFD, 0xFF, 0xE4, 0xFF, 0x07, 0x00,
+ 0xF6, 0xFF, 0xE4, 0xFF, 0x07, 0x00, 0xEF, 0xFF,
+ 0xE4, 0xFF, 0x07, 0x00, 0xE8, 0xFF, 0xE4, 0xFF,
+ 0x0A, 0x00, 0xE1, 0xFF, 0xDA, 0xFF, 0x0C, 0x00,
+ 0xDA, 0xFF, 0xD2, 0xFF, 0x0E, 0x00, 0xD3, 0xFF,
+ 0xC8, 0xFF, 0x10, 0x00, 0xCC, 0xFF, 0xBD, 0xFF,
+ 0x09, 0x00, 0x03, 0x00, 0xDE, 0xFF, 0x09, 0x00,
+ 0x0A, 0x00, 0xDE, 0xFF, 0x09, 0x00, 0x11, 0x00,
+ 0xDE, 0xFF, 0x09, 0x00, 0x18, 0x00, 0xDE, 0xFF,
+ 0x0C, 0x00, 0x1F, 0x00, 0xD2, 0xFF, 0x0E, 0x00,
+ 0x26, 0x00, 0xC8, 0xFF, 0x10, 0x00, 0x2D, 0x00,
+ 0xBC, 0xFF, 0x12, 0x00, 0x34, 0x00, 0xAE, 0xFF,
+ 0x09, 0x00, 0xFD, 0xFF, 0xDE, 0xFF, 0x09, 0x00,
+ 0xF6, 0xFF, 0xDE, 0xFF, 0x09, 0x00, 0xEF, 0xFF,
+ 0xDE, 0xFF, 0x09, 0x00, 0xE8, 0xFF, 0xDE, 0xFF,
+ 0x0C, 0x00, 0xE1, 0xFF, 0xD2, 0xFF, 0x0E, 0x00,
+ 0xDA, 0xFF, 0xC8, 0xFF, 0x10, 0x00, 0xD3, 0xFF,
+ 0xBC, 0xFF, 0x12, 0x00, 0xCC, 0xFF, 0xAE, 0xFF,
+ 0x0B, 0x00, 0x03, 0x00, 0xD8, 0xFF, 0x0B, 0x00,
+ 0x0A, 0x00, 0xD8, 0xFF, 0x0B, 0x00, 0x11, 0x00,
+ 0xD8, 0xFF, 0x0B, 0x00, 0x18, 0x00, 0xD8, 0xFF,
+ 0x0E, 0x00, 0x1F, 0x00, 0xC9, 0xFF, 0x10, 0x00,
+ 0x26, 0x00, 0xBE, 0xFF, 0x12, 0x00, 0x2D, 0x00,
+ 0xAF, 0xFF, 0x14, 0x00, 0x34, 0x00, 0x9F, 0xFF,
+ 0x0B, 0x00, 0xFD, 0xFF, 0xD8, 0xFF, 0x0B, 0x00,
+ 0xF6, 0xFF, 0xD8, 0xFF, 0x0B, 0x00, 0xEF, 0xFF,
+ 0xD8, 0xFF, 0x0B, 0x00, 0xE8, 0xFF, 0xD8, 0xFF,
+ 0x0E, 0x00, 0xE1, 0xFF, 0xC9, 0xFF, 0x10, 0x00,
+ 0xDA, 0xFF, 0xBE, 0xFF, 0x12, 0x00, 0xD3, 0xFF,
+ 0xAF, 0xFF, 0x14, 0x00, 0xCC, 0xFF, 0x9F, 0xFF,
+ 0x0D, 0x00, 0x03, 0x00, 0xD2, 0xFF, 0x0D, 0x00,
+ 0x0A, 0x00, 0xD2, 0xFF, 0x0D, 0x00, 0x11, 0x00,
+ 0xD2, 0xFF, 0x0D, 0x00, 0x18, 0x00, 0xD2, 0xFF,
+ 0x10, 0x00, 0x1F, 0x00, 0xC1, 0xFF, 0x12, 0x00,
+ 0x26, 0x00, 0xB4, 0xFF, 0x14, 0x00, 0x2D, 0x00,
+ 0xA3, 0xFF, 0x16, 0x00, 0x34, 0x00, 0x90, 0xFF,
+ 0x0D, 0x00, 0xFD, 0xFF, 0xD2, 0xFF, 0x0D, 0x00,
+ 0xF6, 0xFF, 0xD2, 0xFF, 0x0D, 0x00, 0xEF, 0xFF,
+ 0xD2, 0xFF, 0x0D, 0x00, 0xE8, 0xFF, 0xD2, 0xFF,
+ 0x10, 0x00, 0xE1, 0xFF, 0xC1, 0xFF, 0x12, 0x00,
+ 0xDA, 0xFF, 0xB4, 0xFF, 0x14, 0x00, 0xD3, 0xFF,
+ 0xA3, 0xFF, 0x16, 0x00, 0xCC, 0xFF, 0x90, 0xFF,
+ 0x05, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00,
+ 0x0A, 0x00, 0x03, 0x00, 0x05, 0x00, 0x12, 0x00,
+ 0x03, 0x00, 0x05, 0x00, 0x19, 0x00, 0x03, 0x00,
+ 0x08, 0x00, 0x22, 0x00, 0x04, 0x00, 0x0A, 0x00,
+ 0x29, 0x00, 0x05, 0x00, 0x0C, 0x00, 0x31, 0x00,
+ 0x06, 0x00, 0x0E, 0x00, 0x38, 0x00, 0x08, 0x00,
+ 0x05, 0x00, 0xFD, 0xFF, 0x03, 0x00, 0x05, 0x00,
+ 0xF6, 0xFF, 0x03, 0x00, 0x05, 0x00, 0xEE, 0xFF,
+ 0x03, 0x00, 0x05, 0x00, 0xE7, 0xFF, 0x03, 0x00,
+ 0x08, 0x00, 0xDE, 0xFF, 0x04, 0x00, 0x0A, 0x00,
+ 0xD7, 0xFF, 0x05, 0x00, 0x0C, 0x00, 0xCF, 0xFF,
+ 0x06, 0x00, 0x0E, 0x00, 0xC8, 0xFF, 0x08, 0x00,
+ 0x05, 0x00, 0x03, 0x00, 0x0A, 0x00, 0x05, 0x00,
+ 0x0A, 0x00, 0x0A, 0x00, 0x05, 0x00, 0x12, 0x00,
+ 0x0A, 0x00, 0x05, 0x00, 0x19, 0x00, 0x0A, 0x00,
+ 0x08, 0x00, 0x22, 0x00, 0x0D, 0x00, 0x0A, 0x00,
+ 0x29, 0x00, 0x10, 0x00, 0x0C, 0x00, 0x31, 0x00,
+ 0x13, 0x00, 0x0E, 0x00, 0x38, 0x00, 0x18, 0x00,
+ 0x05, 0x00, 0xFD, 0xFF, 0x0A, 0x00, 0x05, 0x00,
+ 0xF6, 0xFF, 0x0A, 0x00, 0x05, 0x00, 0xEE, 0xFF,
+ 0x0A, 0x00, 0x05, 0x00, 0xE7, 0xFF, 0x0A, 0x00,
+ 0x08, 0x00, 0xDE, 0xFF, 0x0D, 0x00, 0x0A, 0x00,
+ 0xD7, 0xFF, 0x10, 0x00, 0x0C, 0x00, 0xCF, 0xFF,
+ 0x13, 0x00, 0x0E, 0x00, 0xC8, 0xFF, 0x18, 0x00,
+ 0x05, 0x00, 0x03, 0x00, 0x11, 0x00, 0x05, 0x00,
+ 0x0A, 0x00, 0x11, 0x00, 0x05, 0x00, 0x12, 0x00,
+ 0x11, 0x00, 0x05, 0x00, 0x19, 0x00, 0x11, 0x00,
+ 0x08, 0x00, 0x22, 0x00, 0x16, 0x00, 0x0A, 0x00,
+ 0x29, 0x00, 0x1B, 0x00, 0x0C, 0x00, 0x31, 0x00,
+ 0x21, 0x00, 0x0E, 0x00, 0x38, 0x00, 0x29, 0x00,
+ 0x05, 0x00, 0xFD, 0xFF, 0x11, 0x00, 0x05, 0x00,
+ 0xF6, 0xFF, 0x11, 0x00, 0x05, 0x00, 0xEE, 0xFF,
+ 0x11, 0x00, 0x05, 0x00, 0xE7, 0xFF, 0x11, 0x00,
+ 0x08, 0x00, 0xDE, 0xFF, 0x16, 0x00, 0x0A, 0x00,
+ 0xD7, 0xFF, 0x1B, 0x00, 0x0C, 0x00, 0xCF, 0xFF,
+ 0x21, 0x00, 0x0E, 0x00, 0xC8, 0xFF, 0x29, 0x00,
+ 0x05, 0x00, 0x03, 0x00, 0x18, 0x00, 0x05, 0x00,
+ 0x0A, 0x00, 0x18, 0x00, 0x05, 0x00, 0x12, 0x00,
+ 0x18, 0x00, 0x05, 0x00, 0x19, 0x00, 0x18, 0x00,
+ 0x08, 0x00, 0x22, 0x00, 0x1F, 0x00, 0x0A, 0x00,
+ 0x29, 0x00, 0x26, 0x00, 0x0C, 0x00, 0x31, 0x00,
+ 0x2E, 0x00, 0x0E, 0x00, 0x38, 0x00, 0x39, 0x00,
+ 0x05, 0x00, 0xFD, 0xFF, 0x18, 0x00, 0x05, 0x00,
+ 0xF6, 0xFF, 0x18, 0x00, 0x05, 0x00, 0xEE, 0xFF,
+ 0x18, 0x00, 0x05, 0x00, 0xE7, 0xFF, 0x18, 0x00,
+ 0x08, 0x00, 0xDE, 0xFF, 0x1F, 0x00, 0x0A, 0x00,
+ 0xD7, 0xFF, 0x26, 0x00, 0x0C, 0x00, 0xCF, 0xFF,
+ 0x2E, 0x00, 0x0E, 0x00, 0xC8, 0xFF, 0x39, 0x00,
+ 0x08, 0x00, 0x03, 0x00, 0x1F, 0x00, 0x08, 0x00,
+ 0x0A, 0x00, 0x1F, 0x00, 0x08, 0x00, 0x12, 0x00,
+ 0x1F, 0x00, 0x08, 0x00, 0x19, 0x00, 0x1F, 0x00,
+ 0x0B, 0x00, 0x22, 0x00, 0x29, 0x00, 0x0D, 0x00,
+ 0x29, 0x00, 0x32, 0x00, 0x0F, 0x00, 0x31, 0x00,
+ 0x3D, 0x00, 0x11, 0x00, 0x38, 0x00, 0x4A, 0x00,
+ 0x08, 0x00, 0xFD, 0xFF, 0x1F, 0x00, 0x08, 0x00,
+ 0xF6, 0xFF, 0x1F, 0x00, 0x08, 0x00, 0xEE, 0xFF,
+ 0x1F, 0x00, 0x08, 0x00, 0xE7, 0xFF, 0x1F, 0x00,
+ 0x0B, 0x00, 0xDE, 0xFF, 0x29, 0x00, 0x0D, 0x00,
+ 0xD7, 0xFF, 0x32, 0x00, 0x0F, 0x00, 0xCF, 0xFF,
+ 0x3D, 0x00, 0x11, 0x00, 0xC8, 0xFF, 0x4A, 0x00,
+ 0x0A, 0x00, 0x03, 0x00, 0x26, 0x00, 0x0A, 0x00,
+ 0x0A, 0x00, 0x26, 0x00, 0x0A, 0x00, 0x12, 0x00,
+ 0x26, 0x00, 0x0A, 0x00, 0x19, 0x00, 0x26, 0x00,
+ 0x0D, 0x00, 0x22, 0x00, 0x32, 0x00, 0x0F, 0x00,
+ 0x29, 0x00, 0x3D, 0x00, 0x11, 0x00, 0x31, 0x00,
+ 0x4A, 0x00, 0x13, 0x00, 0x38, 0x00, 0x5A, 0x00,
+ 0x0A, 0x00, 0xFD, 0xFF, 0x26, 0x00, 0x0A, 0x00,
+ 0xF6, 0xFF, 0x26, 0x00, 0x0A, 0x00, 0xEE, 0xFF,
+ 0x26, 0x00, 0x0A, 0x00, 0xE7, 0xFF, 0x26, 0x00,
+ 0x0D, 0x00, 0xDE, 0xFF, 0x32, 0x00, 0x0F, 0x00,
+ 0xD7, 0xFF, 0x3D, 0x00, 0x11, 0x00, 0xCF, 0xFF,
+ 0x4A, 0x00, 0x13, 0x00, 0xC8, 0xFF, 0x5A, 0x00,
+ 0x0C, 0x00, 0x03, 0x00, 0x2D, 0x00, 0x0C, 0x00,
+ 0x0A, 0x00, 0x2D, 0x00, 0x0C, 0x00, 0x12, 0x00,
+ 0x2D, 0x00, 0x0C, 0x00, 0x19, 0x00, 0x2D, 0x00,
+ 0x0F, 0x00, 0x22, 0x00, 0x3B, 0x00, 0x11, 0x00,
+ 0x29, 0x00, 0x48, 0x00, 0x13, 0x00, 0x31, 0x00,
+ 0x58, 0x00, 0x15, 0x00, 0x38, 0x00, 0x6B, 0x00,
+ 0x0C, 0x00, 0xFD, 0xFF, 0x2D, 0x00, 0x0C, 0x00,
+ 0xF6, 0xFF, 0x2D, 0x00, 0x0C, 0x00, 0xEE, 0xFF,
+ 0x2D, 0x00, 0x0C, 0x00, 0xE7, 0xFF, 0x2D, 0x00,
+ 0x0F, 0x00, 0xDE, 0xFF, 0x3B, 0x00, 0x11, 0x00,
+ 0xD7, 0xFF, 0x48, 0x00, 0x13, 0x00, 0xCF, 0xFF,
+ 0x58, 0x00, 0x15, 0x00, 0xC8, 0xFF, 0x6B, 0x00,
+ 0x0E, 0x00, 0x03, 0x00, 0x34, 0x00, 0x0E, 0x00,
+ 0x0A, 0x00, 0x34, 0x00, 0x0E, 0x00, 0x12, 0x00,
+ 0x34, 0x00, 0x0E, 0x00, 0x19, 0x00, 0x34, 0x00,
+ 0x11, 0x00, 0x22, 0x00, 0x44, 0x00, 0x13, 0x00,
+ 0x29, 0x00, 0x53, 0x00, 0x15, 0x00, 0x31, 0x00,
+ 0x65, 0x00, 0x17, 0x00, 0x38, 0x00, 0x7B, 0x00,
+ 0x0E, 0x00, 0xFD, 0xFF, 0x34, 0x00, 0x0E, 0x00,
+ 0xF6, 0xFF, 0x34, 0x00, 0x0E, 0x00, 0xEE, 0xFF,
+ 0x34, 0x00, 0x0E, 0x00, 0xE7, 0xFF, 0x34, 0x00,
+ 0x11, 0x00, 0xDE, 0xFF, 0x44, 0x00, 0x13, 0x00,
+ 0xD7, 0xFF, 0x53, 0x00, 0x15, 0x00, 0xCF, 0xFF,
+ 0x65, 0x00, 0x17, 0x00, 0xC8, 0xFF, 0x7B, 0x00,
+ 0x05, 0x00, 0x03, 0x00, 0xFD, 0xFF, 0x05, 0x00,
+ 0x0A, 0x00, 0xFD, 0xFF, 0x05, 0x00, 0x12, 0x00,
+ 0xFD, 0xFF, 0x05, 0x00, 0x19, 0x00, 0xFD, 0xFF,
+ 0x08, 0x00, 0x22, 0x00, 0xFC, 0xFF, 0x0A, 0x00,
+ 0x29, 0x00, 0xFB, 0xFF, 0x0C, 0x00, 0x31, 0x00,
+ 0xFA, 0xFF, 0x0E, 0x00, 0x38, 0x00, 0xF8, 0xFF,
+ 0x05, 0x00, 0xFD, 0xFF, 0xFD, 0xFF, 0x05, 0x00,
+ 0xF6, 0xFF, 0xFD, 0xFF, 0x05, 0x00, 0xEE, 0xFF,
+ 0xFD, 0xFF, 0x05, 0x00, 0xE7, 0xFF, 0xFD, 0xFF,
+ 0x08, 0x00, 0xDE, 0xFF, 0xFC, 0xFF, 0x0A, 0x00,
+ 0xD7, 0xFF, 0xFB, 0xFF, 0x0C, 0x00, 0xCF, 0xFF,
+ 0xFA, 0xFF, 0x0E, 0x00, 0xC8, 0xFF, 0xF8, 0xFF,
+ 0x05, 0x00, 0x03, 0x00, 0xF6, 0xFF, 0x05, 0x00,
+ 0x0A, 0x00, 0xF6, 0xFF, 0x05, 0x00, 0x12, 0x00,
+ 0xF6, 0xFF, 0x05, 0x00, 0x19, 0x00, 0xF6, 0xFF,
+ 0x08, 0x00, 0x22, 0x00, 0xF3, 0xFF, 0x0A, 0x00,
+ 0x29, 0x00, 0xF0, 0xFF, 0x0C, 0x00, 0x31, 0x00,
+ 0xED, 0xFF, 0x0E, 0x00, 0x38, 0x00, 0xE8, 0xFF,
+ 0x05, 0x00, 0xFD, 0xFF, 0xF6, 0xFF, 0x05, 0x00,
+ 0xF6, 0xFF, 0xF6, 0xFF, 0x05, 0x00, 0xEE, 0xFF,
+ 0xF6, 0xFF, 0x05, 0x00, 0xE7, 0xFF, 0xF6, 0xFF,
+ 0x08, 0x00, 0xDE, 0xFF, 0xF3, 0xFF, 0x0A, 0x00,
+ 0xD7, 0xFF, 0xF0, 0xFF, 0x0C, 0x00, 0xCF, 0xFF,
+ 0xED, 0xFF, 0x0E, 0x00, 0xC8, 0xFF, 0xE8, 0xFF,
+ 0x05, 0x00, 0x03, 0x00, 0xEF, 0xFF, 0x05, 0x00,
+ 0x0A, 0x00, 0xEF, 0xFF, 0x05, 0x00, 0x12, 0x00,
+ 0xEF, 0xFF, 0x05, 0x00, 0x19, 0x00, 0xEF, 0xFF,
+ 0x08, 0x00, 0x22, 0x00, 0xEA, 0xFF, 0x0A, 0x00,
+ 0x29, 0x00, 0xE5, 0xFF, 0x0C, 0x00, 0x31, 0x00,
+ 0xDF, 0xFF, 0x0E, 0x00, 0x38, 0x00, 0xD7, 0xFF,
+ 0x05, 0x00, 0xFD, 0xFF, 0xEF, 0xFF, 0x05, 0x00,
+ 0xF6, 0xFF, 0xEF, 0xFF, 0x05, 0x00, 0xEE, 0xFF,
+ 0xEF, 0xFF, 0x05, 0x00, 0xE7, 0xFF, 0xEF, 0xFF,
+ 0x08, 0x00, 0xDE, 0xFF, 0xEA, 0xFF, 0x0A, 0x00,
+ 0xD7, 0xFF, 0xE5, 0xFF, 0x0C, 0x00, 0xCF, 0xFF,
+ 0xDF, 0xFF, 0x0E, 0x00, 0xC8, 0xFF, 0xD7, 0xFF,
+ 0x05, 0x00, 0x03, 0x00, 0xE8, 0xFF, 0x05, 0x00,
+ 0x0A, 0x00, 0xE8, 0xFF, 0x05, 0x00, 0x12, 0x00,
+ 0xE8, 0xFF, 0x05, 0x00, 0x19, 0x00, 0xE8, 0xFF,
+ 0x08, 0x00, 0x22, 0x00, 0xE1, 0xFF, 0x0A, 0x00,
+ 0x29, 0x00, 0xDA, 0xFF, 0x0C, 0x00, 0x31, 0x00,
+ 0xD2, 0xFF, 0x0E, 0x00, 0x38, 0x00, 0xC7, 0xFF,
+ 0x05, 0x00, 0xFD, 0xFF, 0xE8, 0xFF, 0x05, 0x00,
+ 0xF6, 0xFF, 0xE8, 0xFF, 0x05, 0x00, 0xEE, 0xFF,
+ 0xE8, 0xFF, 0x05, 0x00, 0xE7, 0xFF, 0xE8, 0xFF,
+ 0x08, 0x00, 0xDE, 0xFF, 0xE1, 0xFF, 0x0A, 0x00,
+ 0xD7, 0xFF, 0xDA, 0xFF, 0x0C, 0x00, 0xCF, 0xFF,
+ 0xD2, 0xFF, 0x0E, 0x00, 0xC8, 0xFF, 0xC7, 0xFF,
+ 0x08, 0x00, 0x03, 0x00, 0xE1, 0xFF, 0x08, 0x00,
+ 0x0A, 0x00, 0xE1, 0xFF, 0x08, 0x00, 0x12, 0x00,
+ 0xE1, 0xFF, 0x08, 0x00, 0x19, 0x00, 0xE1, 0xFF,
+ 0x0B, 0x00, 0x22, 0x00, 0xD7, 0xFF, 0x0D, 0x00,
+ 0x29, 0x00, 0xCE, 0xFF, 0x0F, 0x00, 0x31, 0x00,
+ 0xC3, 0xFF, 0x11, 0x00, 0x38, 0x00, 0xB6, 0xFF,
+ 0x08, 0x00, 0xFD, 0xFF, 0xE1, 0xFF, 0x08, 0x00,
+ 0xF6, 0xFF, 0xE1, 0xFF, 0x08, 0x00, 0xEE, 0xFF,
+ 0xE1, 0xFF, 0x08, 0x00, 0xE7, 0xFF, 0xE1, 0xFF,
+ 0x0B, 0x00, 0xDE, 0xFF, 0xD7, 0xFF, 0x0D, 0x00,
+ 0xD7, 0xFF, 0xCE, 0xFF, 0x0F, 0x00, 0xCF, 0xFF,
+ 0xC3, 0xFF, 0x11, 0x00, 0xC8, 0xFF, 0xB6, 0xFF,
+ 0x0A, 0x00, 0x03, 0x00, 0xDA, 0xFF, 0x0A, 0x00,
+ 0x0A, 0x00, 0xDA, 0xFF, 0x0A, 0x00, 0x12, 0x00,
+ 0xDA, 0xFF, 0x0A, 0x00, 0x19, 0x00, 0xDA, 0xFF,
+ 0x0D, 0x00, 0x22, 0x00, 0xCE, 0xFF, 0x0F, 0x00,
+ 0x29, 0x00, 0xC3, 0xFF, 0x11, 0x00, 0x31, 0x00,
+ 0xB6, 0xFF, 0x13, 0x00, 0x38, 0x00, 0xA6, 0xFF,
+ 0x0A, 0x00, 0xFD, 0xFF, 0xDA, 0xFF, 0x0A, 0x00,
+ 0xF6, 0xFF, 0xDA, 0xFF, 0x0A, 0x00, 0xEE, 0xFF,
+ 0xDA, 0xFF, 0x0A, 0x00, 0xE7, 0xFF, 0xDA, 0xFF,
+ 0x0D, 0x00, 0xDE, 0xFF, 0xCE, 0xFF, 0x0F, 0x00,
+ 0xD7, 0xFF, 0xC3, 0xFF, 0x11, 0x00, 0xCF, 0xFF,
+ 0xB6, 0xFF, 0x13, 0x00, 0xC8, 0xFF, 0xA6, 0xFF,
+ 0x0C, 0x00, 0x03, 0x00, 0xD3, 0xFF, 0x0C, 0x00,
+ 0x0A, 0x00, 0xD3, 0xFF, 0x0C, 0x00, 0x12, 0x00,
+ 0xD3, 0xFF, 0x0C, 0x00, 0x19, 0x00, 0xD3, 0xFF,
+ 0x0F, 0x00, 0x22, 0x00, 0xC5, 0xFF, 0x11, 0x00,
+ 0x29, 0x00, 0xB8, 0xFF, 0x13, 0x00, 0x31, 0x00,
+ 0xA8, 0xFF, 0x15, 0x00, 0x38, 0x00, 0x95, 0xFF,
+ 0x0C, 0x00, 0xFD, 0xFF, 0xD3, 0xFF, 0x0C, 0x00,
+ 0xF6, 0xFF, 0xD3, 0xFF, 0x0C, 0x00, 0xEE, 0xFF,
+ 0xD3, 0xFF, 0x0C, 0x00, 0xE7, 0xFF, 0xD3, 0xFF,
+ 0x0F, 0x00, 0xDE, 0xFF, 0xC5, 0xFF, 0x11, 0x00,
+ 0xD7, 0xFF, 0xB8, 0xFF, 0x13, 0x00, 0xCF, 0xFF,
+ 0xA8, 0xFF, 0x15, 0x00, 0xC8, 0xFF, 0x95, 0xFF,
+ 0x0E, 0x00, 0x03, 0x00, 0xCC, 0xFF, 0x0E, 0x00,
+ 0x0A, 0x00, 0xCC, 0xFF, 0x0E, 0x00, 0x12, 0x00,
+ 0xCC, 0xFF, 0x0E, 0x00, 0x19, 0x00, 0xCC, 0xFF,
+ 0x11, 0x00, 0x22, 0x00, 0xBC, 0xFF, 0x13, 0x00,
+ 0x29, 0x00, 0xAD, 0xFF, 0x15, 0x00, 0x31, 0x00,
+ 0x9B, 0xFF, 0x17, 0x00, 0x38, 0x00, 0x85, 0xFF,
+ 0x0E, 0x00, 0xFD, 0xFF, 0xCC, 0xFF, 0x0E, 0x00,
+ 0xF6, 0xFF, 0xCC, 0xFF, 0x0E, 0x00, 0xEE, 0xFF,
+ 0xCC, 0xFF, 0x0E, 0x00, 0xE7, 0xFF, 0xCC, 0xFF,
+ 0x11, 0x00, 0xDE, 0xFF, 0xBC, 0xFF, 0x13, 0x00,
+ 0xD7, 0xFF, 0xAD, 0xFF, 0x15, 0x00, 0xCF, 0xFF,
+ 0x9B, 0xFF, 0x17, 0x00, 0xC8, 0xFF, 0x85, 0xFF,
+ 0x06, 0x00, 0x04, 0x00, 0x03, 0x00, 0x06, 0x00,
+ 0x0C, 0x00, 0x03, 0x00, 0x06, 0x00, 0x15, 0x00,
+ 0x03, 0x00, 0x06, 0x00, 0x1D, 0x00, 0x03, 0x00,
+ 0x09, 0x00, 0x26, 0x00, 0x05, 0x00, 0x0B, 0x00,
+ 0x2E, 0x00, 0x06, 0x00, 0x0D, 0x00, 0x37, 0x00,
+ 0x07, 0x00, 0x0F, 0x00, 0x3F, 0x00, 0x09, 0x00,
+ 0x06, 0x00, 0xFC, 0xFF, 0x03, 0x00, 0x06, 0x00,
+ 0xF4, 0xFF, 0x03, 0x00, 0x06, 0x00, 0xEB, 0xFF,
+ 0x03, 0x00, 0x06, 0x00, 0xE3, 0xFF, 0x03, 0x00,
+ 0x09, 0x00, 0xDA, 0xFF, 0x05, 0x00, 0x0B, 0x00,
+ 0xD2, 0xFF, 0x06, 0x00, 0x0D, 0x00, 0xC9, 0xFF,
+ 0x07, 0x00, 0x0F, 0x00, 0xC1, 0xFF, 0x09, 0x00,
+ 0x06, 0x00, 0x04, 0x00, 0x0A, 0x00, 0x06, 0x00,
+ 0x0C, 0x00, 0x0A, 0x00, 0x06, 0x00, 0x15, 0x00,
+ 0x0A, 0x00, 0x06, 0x00, 0x1D, 0x00, 0x0A, 0x00,
+ 0x09, 0x00, 0x26, 0x00, 0x0F, 0x00, 0x0B, 0x00,
+ 0x2E, 0x00, 0x12, 0x00, 0x0D, 0x00, 0x37, 0x00,
+ 0x16, 0x00, 0x0F, 0x00, 0x3F, 0x00, 0x1B, 0x00,
+ 0x06, 0x00, 0xFC, 0xFF, 0x0A, 0x00, 0x06, 0x00,
+ 0xF4, 0xFF, 0x0A, 0x00, 0x06, 0x00, 0xEB, 0xFF,
+ 0x0A, 0x00, 0x06, 0x00, 0xE3, 0xFF, 0x0A, 0x00,
+ 0x09, 0x00, 0xDA, 0xFF, 0x0F, 0x00, 0x0B, 0x00,
+ 0xD2, 0xFF, 0x12, 0x00, 0x0D, 0x00, 0xC9, 0xFF,
+ 0x16, 0x00, 0x0F, 0x00, 0xC1, 0xFF, 0x1B, 0x00,
+ 0x06, 0x00, 0x04, 0x00, 0x12, 0x00, 0x06, 0x00,
+ 0x0C, 0x00, 0x12, 0x00, 0x06, 0x00, 0x15, 0x00,
+ 0x12, 0x00, 0x06, 0x00, 0x1D, 0x00, 0x12, 0x00,
+ 0x09, 0x00, 0x26, 0x00, 0x19, 0x00, 0x0B, 0x00,
+ 0x2E, 0x00, 0x1F, 0x00, 0x0D, 0x00, 0x37, 0x00,
+ 0x25, 0x00, 0x0F, 0x00, 0x3F, 0x00, 0x2D, 0x00,
+ 0x06, 0x00, 0xFC, 0xFF, 0x12, 0x00, 0x06, 0x00,
+ 0xF4, 0xFF, 0x12, 0x00, 0x06, 0x00, 0xEB, 0xFF,
+ 0x12, 0x00, 0x06, 0x00, 0xE3, 0xFF, 0x12, 0x00,
+ 0x09, 0x00, 0xDA, 0xFF, 0x19, 0x00, 0x0B, 0x00,
+ 0xD2, 0xFF, 0x1F, 0x00, 0x0D, 0x00, 0xC9, 0xFF,
+ 0x25, 0x00, 0x0F, 0x00, 0xC1, 0xFF, 0x2D, 0x00,
+ 0x06, 0x00, 0x04, 0x00, 0x19, 0x00, 0x06, 0x00,
+ 0x0C, 0x00, 0x19, 0x00, 0x06, 0x00, 0x15, 0x00,
+ 0x19, 0x00, 0x06, 0x00, 0x1D, 0x00, 0x19, 0x00,
+ 0x09, 0x00, 0x26, 0x00, 0x23, 0x00, 0x0B, 0x00,
+ 0x2E, 0x00, 0x2B, 0x00, 0x0D, 0x00, 0x37, 0x00,
+ 0x34, 0x00, 0x0F, 0x00, 0x3F, 0x00, 0x3F, 0x00,
+ 0x06, 0x00, 0xFC, 0xFF, 0x19, 0x00, 0x06, 0x00,
+ 0xF4, 0xFF, 0x19, 0x00, 0x06, 0x00, 0xEB, 0xFF,
+ 0x19, 0x00, 0x06, 0x00, 0xE3, 0xFF, 0x19, 0x00,
+ 0x09, 0x00, 0xDA, 0xFF, 0x23, 0x00, 0x0B, 0x00,
+ 0xD2, 0xFF, 0x2B, 0x00, 0x0D, 0x00, 0xC9, 0xFF,
+ 0x34, 0x00, 0x0F, 0x00, 0xC1, 0xFF, 0x3F, 0x00,
+ 0x09, 0x00, 0x04, 0x00, 0x22, 0x00, 0x09, 0x00,
+ 0x0C, 0x00, 0x22, 0x00, 0x09, 0x00, 0x15, 0x00,
+ 0x22, 0x00, 0x09, 0x00, 0x1D, 0x00, 0x22, 0x00,
+ 0x0C, 0x00, 0x26, 0x00, 0x2E, 0x00, 0x0E, 0x00,
+ 0x2E, 0x00, 0x38, 0x00, 0x10, 0x00, 0x37, 0x00,
+ 0x43, 0x00, 0x12, 0x00, 0x3F, 0x00, 0x52, 0x00,
+ 0x09, 0x00, 0xFC, 0xFF, 0x22, 0x00, 0x09, 0x00,
+ 0xF4, 0xFF, 0x22, 0x00, 0x09, 0x00, 0xEB, 0xFF,
+ 0x22, 0x00, 0x09, 0x00, 0xE3, 0xFF, 0x22, 0x00,
+ 0x0C, 0x00, 0xDA, 0xFF, 0x2E, 0x00, 0x0E, 0x00,
+ 0xD2, 0xFF, 0x38, 0x00, 0x10, 0x00, 0xC9, 0xFF,
+ 0x43, 0x00, 0x12, 0x00, 0xC1, 0xFF, 0x52, 0x00,
+ 0x0B, 0x00, 0x04, 0x00, 0x29, 0x00, 0x0B, 0x00,
+ 0x0C, 0x00, 0x29, 0x00, 0x0B, 0x00, 0x15, 0x00,
+ 0x29, 0x00, 0x0B, 0x00, 0x1D, 0x00, 0x29, 0x00,
+ 0x0E, 0x00, 0x26, 0x00, 0x38, 0x00, 0x10, 0x00,
+ 0x2E, 0x00, 0x44, 0x00, 0x12, 0x00, 0x37, 0x00,
+ 0x52, 0x00, 0x14, 0x00, 0x3F, 0x00, 0x64, 0x00,
+ 0x0B, 0x00, 0xFC, 0xFF, 0x29, 0x00, 0x0B, 0x00,
+ 0xF4, 0xFF, 0x29, 0x00, 0x0B, 0x00, 0xEB, 0xFF,
+ 0x29, 0x00, 0x0B, 0x00, 0xE3, 0xFF, 0x29, 0x00,
+ 0x0E, 0x00, 0xDA, 0xFF, 0x38, 0x00, 0x10, 0x00,
+ 0xD2, 0xFF, 0x44, 0x00, 0x12, 0x00, 0xC9, 0xFF,
+ 0x52, 0x00, 0x14, 0x00, 0xC1, 0xFF, 0x64, 0x00,
+ 0x0D, 0x00, 0x04, 0x00, 0x31, 0x00, 0x0D, 0x00,
+ 0x0C, 0x00, 0x31, 0x00, 0x0D, 0x00, 0x15, 0x00,
+ 0x31, 0x00, 0x0D, 0x00, 0x1D, 0x00, 0x31, 0x00,
+ 0x10, 0x00, 0x26, 0x00, 0x42, 0x00, 0x12, 0x00,
+ 0x2E, 0x00, 0x51, 0x00, 0x14, 0x00, 0x37, 0x00,
+ 0x61, 0x00, 0x16, 0x00, 0x3F, 0x00, 0x76, 0x00,
+ 0x0D, 0x00, 0xFC, 0xFF, 0x31, 0x00, 0x0D, 0x00,
+ 0xF4, 0xFF, 0x31, 0x00, 0x0D, 0x00, 0xEB, 0xFF,
+ 0x31, 0x00, 0x0D, 0x00, 0xE3, 0xFF, 0x31, 0x00,
+ 0x10, 0x00, 0xDA, 0xFF, 0x42, 0x00, 0x12, 0x00,
+ 0xD2, 0xFF, 0x51, 0x00, 0x14, 0x00, 0xC9, 0xFF,
+ 0x61, 0x00, 0x16, 0x00, 0xC1, 0xFF, 0x76, 0x00,
+ 0x0F, 0x00, 0x04, 0x00, 0x38, 0x00, 0x0F, 0x00,
+ 0x0C, 0x00, 0x38, 0x00, 0x0F, 0x00, 0x15, 0x00,
+ 0x38, 0x00, 0x0F, 0x00, 0x1D, 0x00, 0x38, 0x00,
+ 0x12, 0x00, 0x26, 0x00, 0x4C, 0x00, 0x14, 0x00,
+ 0x2E, 0x00, 0x5D, 0x00, 0x16, 0x00, 0x37, 0x00,
+ 0x70, 0x00, 0x18, 0x00, 0x3F, 0x00, 0x88, 0x00,
+ 0x0F, 0x00, 0xFC, 0xFF, 0x38, 0x00, 0x0F, 0x00,
+ 0xF4, 0xFF, 0x38, 0x00, 0x0F, 0x00, 0xEB, 0xFF,
+ 0x38, 0x00, 0x0F, 0x00, 0xE3, 0xFF, 0x38, 0x00,
+ 0x12, 0x00, 0xDA, 0xFF, 0x4C, 0x00, 0x14, 0x00,
+ 0xD2, 0xFF, 0x5D, 0x00, 0x16, 0x00, 0xC9, 0xFF,
+ 0x70, 0x00, 0x18, 0x00, 0xC1, 0xFF, 0x88, 0x00,
+ 0x06, 0x00, 0x04, 0x00, 0xFD, 0xFF, 0x06, 0x00,
+ 0x0C, 0x00, 0xFD, 0xFF, 0x06, 0x00, 0x15, 0x00,
+ 0xFD, 0xFF, 0x06, 0x00, 0x1D, 0x00, 0xFD, 0xFF,
+ 0x09, 0x00, 0x26, 0x00, 0xFB, 0xFF, 0x0B, 0x00,
+ 0x2E, 0x00, 0xFA, 0xFF, 0x0D, 0x00, 0x37, 0x00,
+ 0xF9, 0xFF, 0x0F, 0x00, 0x3F, 0x00, 0xF7, 0xFF,
+ 0x06, 0x00, 0xFC, 0xFF, 0xFD, 0xFF, 0x06, 0x00,
+ 0xF4, 0xFF, 0xFD, 0xFF, 0x06, 0x00, 0xEB, 0xFF,
+ 0xFD, 0xFF, 0x06, 0x00, 0xE3, 0xFF, 0xFD, 0xFF,
+ 0x09, 0x00, 0xDA, 0xFF, 0xFB, 0xFF, 0x0B, 0x00,
+ 0xD2, 0xFF, 0xFA, 0xFF, 0x0D, 0x00, 0xC9, 0xFF,
+ 0xF9, 0xFF, 0x0F, 0x00, 0xC1, 0xFF, 0xF7, 0xFF,
+ 0x06, 0x00, 0x04, 0x00, 0xF6, 0xFF, 0x06, 0x00,
+ 0x0C, 0x00, 0xF6, 0xFF, 0x06, 0x00, 0x15, 0x00,
+ 0xF6, 0xFF, 0x06, 0x00, 0x1D, 0x00, 0xF6, 0xFF,
+ 0x09, 0x00, 0x26, 0x00, 0xF1, 0xFF, 0x0B, 0x00,
+ 0x2E, 0x00, 0xEE, 0xFF, 0x0D, 0x00, 0x37, 0x00,
+ 0xEA, 0xFF, 0x0F, 0x00, 0x3F, 0x00, 0xE5, 0xFF,
+ 0x06, 0x00, 0xFC, 0xFF, 0xF6, 0xFF, 0x06, 0x00,
+ 0xF4, 0xFF, 0xF6, 0xFF, 0x06, 0x00, 0xEB, 0xFF,
+ 0xF6, 0xFF, 0x06, 0x00, 0xE3, 0xFF, 0xF6, 0xFF,
+ 0x09, 0x00, 0xDA, 0xFF, 0xF1, 0xFF, 0x0B, 0x00,
+ 0xD2, 0xFF, 0xEE, 0xFF, 0x0D, 0x00, 0xC9, 0xFF,
+ 0xEA, 0xFF, 0x0F, 0x00, 0xC1, 0xFF, 0xE5, 0xFF,
+ 0x06, 0x00, 0x04, 0x00, 0xEE, 0xFF, 0x06, 0x00,
+ 0x0C, 0x00, 0xEE, 0xFF, 0x06, 0x00, 0x15, 0x00,
+ 0xEE, 0xFF, 0x06, 0x00, 0x1D, 0x00, 0xEE, 0xFF,
+ 0x09, 0x00, 0x26, 0x00, 0xE7, 0xFF, 0x0B, 0x00,
+ 0x2E, 0x00, 0xE1, 0xFF, 0x0D, 0x00, 0x37, 0x00,
+ 0xDB, 0xFF, 0x0F, 0x00, 0x3F, 0x00, 0xD3, 0xFF,
+ 0x06, 0x00, 0xFC, 0xFF, 0xEE, 0xFF, 0x06, 0x00,
+ 0xF4, 0xFF, 0xEE, 0xFF, 0x06, 0x00, 0xEB, 0xFF,
+ 0xEE, 0xFF, 0x06, 0x00, 0xE3, 0xFF, 0xEE, 0xFF,
+ 0x09, 0x00, 0xDA, 0xFF, 0xE7, 0xFF, 0x0B, 0x00,
+ 0xD2, 0xFF, 0xE1, 0xFF, 0x0D, 0x00, 0xC9, 0xFF,
+ 0xDB, 0xFF, 0x0F, 0x00, 0xC1, 0xFF, 0xD3, 0xFF,
+ 0x06, 0x00, 0x04, 0x00, 0xE7, 0xFF, 0x06, 0x00,
+ 0x0C, 0x00, 0xE7, 0xFF, 0x06, 0x00, 0x15, 0x00,
+ 0xE7, 0xFF, 0x06, 0x00, 0x1D, 0x00, 0xE7, 0xFF,
+ 0x09, 0x00, 0x26, 0x00, 0xDD, 0xFF, 0x0B, 0x00,
+ 0x2E, 0x00, 0xD5, 0xFF, 0x0D, 0x00, 0x37, 0x00,
+ 0xCC, 0xFF, 0x0F, 0x00, 0x3F, 0x00, 0xC1, 0xFF,
+ 0x06, 0x00, 0xFC, 0xFF, 0xE7, 0xFF, 0x06, 0x00,
+ 0xF4, 0xFF, 0xE7, 0xFF, 0x06, 0x00, 0xEB, 0xFF,
+ 0xE7, 0xFF, 0x06, 0x00, 0xE3, 0xFF, 0xE7, 0xFF,
+ 0x09, 0x00, 0xDA, 0xFF, 0xDD, 0xFF, 0x0B, 0x00,
+ 0xD2, 0xFF, 0xD5, 0xFF, 0x0D, 0x00, 0xC9, 0xFF,
+ 0xCC, 0xFF, 0x0F, 0x00, 0xC1, 0xFF, 0xC1, 0xFF,
+ 0x09, 0x00, 0x04, 0x00, 0xDE, 0xFF, 0x09, 0x00,
+ 0x0C, 0x00, 0xDE, 0xFF, 0x09, 0x00, 0x15, 0x00,
+ 0xDE, 0xFF, 0x09, 0x00, 0x1D, 0x00, 0xDE, 0xFF,
+ 0x0C, 0x00, 0x26, 0x00, 0xD2, 0xFF, 0x0E, 0x00,
+ 0x2E, 0x00, 0xC8, 0xFF, 0x10, 0x00, 0x37, 0x00,
+ 0xBD, 0xFF, 0x12, 0x00, 0x3F, 0x00, 0xAE, 0xFF,
+ 0x09, 0x00, 0xFC, 0xFF, 0xDE, 0xFF, 0x09, 0x00,
+ 0xF4, 0xFF, 0xDE, 0xFF, 0x09, 0x00, 0xEB, 0xFF,
+ 0xDE, 0xFF, 0x09, 0x00, 0xE3, 0xFF, 0xDE, 0xFF,
+ 0x0C, 0x00, 0xDA, 0xFF, 0xD2, 0xFF, 0x0E, 0x00,
+ 0xD2, 0xFF, 0xC8, 0xFF, 0x10, 0x00, 0xC9, 0xFF,
+ 0xBD, 0xFF, 0x12, 0x00, 0xC1, 0xFF, 0xAE, 0xFF,
+ 0x0B, 0x00, 0x04, 0x00, 0xD7, 0xFF, 0x0B, 0x00,
+ 0x0C, 0x00, 0xD7, 0xFF, 0x0B, 0x00, 0x15, 0x00,
+ 0xD7, 0xFF, 0x0B, 0x00, 0x1D, 0x00, 0xD7, 0xFF,
+ 0x0E, 0x00, 0x26, 0x00, 0xC8, 0xFF, 0x10, 0x00,
+ 0x2E, 0x00, 0xBC, 0xFF, 0x12, 0x00, 0x37, 0x00,
+ 0xAE, 0xFF, 0x14, 0x00, 0x3F, 0x00, 0x9C, 0xFF,
+ 0x0B, 0x00, 0xFC, 0xFF, 0xD7, 0xFF, 0x0B, 0x00,
+ 0xF4, 0xFF, 0xD7, 0xFF, 0x0B, 0x00, 0xEB, 0xFF,
+ 0xD7, 0xFF, 0x0B, 0x00, 0xE3, 0xFF, 0xD7, 0xFF,
+ 0x0E, 0x00, 0xDA, 0xFF, 0xC8, 0xFF, 0x10, 0x00,
+ 0xD2, 0xFF, 0xBC, 0xFF, 0x12, 0x00, 0xC9, 0xFF,
+ 0xAE, 0xFF, 0x14, 0x00, 0xC1, 0xFF, 0x9C, 0xFF,
+ 0x0D, 0x00, 0x04, 0x00, 0xCF, 0xFF, 0x0D, 0x00,
+ 0x0C, 0x00, 0xCF, 0xFF, 0x0D, 0x00, 0x15, 0x00,
+ 0xCF, 0xFF, 0x0D, 0x00, 0x1D, 0x00, 0xCF, 0xFF,
+ 0x10, 0x00, 0x26, 0x00, 0xBE, 0xFF, 0x12, 0x00,
+ 0x2E, 0x00, 0xAF, 0xFF, 0x14, 0x00, 0x37, 0x00,
+ 0x9F, 0xFF, 0x16, 0x00, 0x3F, 0x00, 0x8A, 0xFF,
+ 0x0D, 0x00, 0xFC, 0xFF, 0xCF, 0xFF, 0x0D, 0x00,
+ 0xF4, 0xFF, 0xCF, 0xFF, 0x0D, 0x00, 0xEB, 0xFF,
+ 0xCF, 0xFF, 0x0D, 0x00, 0xE3, 0xFF, 0xCF, 0xFF,
+ 0x10, 0x00, 0xDA, 0xFF, 0xBE, 0xFF, 0x12, 0x00,
+ 0xD2, 0xFF, 0xAF, 0xFF, 0x14, 0x00, 0xC9, 0xFF,
+ 0x9F, 0xFF, 0x16, 0x00, 0xC1, 0xFF, 0x8A, 0xFF,
+ 0x0F, 0x00, 0x04, 0x00, 0xC8, 0xFF, 0x0F, 0x00,
+ 0x0C, 0x00, 0xC8, 0xFF, 0x0F, 0x00, 0x15, 0x00,
+ 0xC8, 0xFF, 0x0F, 0x00, 0x1D, 0x00, 0xC8, 0xFF,
+ 0x12, 0x00, 0x26, 0x00, 0xB4, 0xFF, 0x14, 0x00,
+ 0x2E, 0x00, 0xA3, 0xFF, 0x16, 0x00, 0x37, 0x00,
+ 0x90, 0xFF, 0x18, 0x00, 0x3F, 0x00, 0x78, 0xFF,
+ 0x0F, 0x00, 0xFC, 0xFF, 0xC8, 0xFF, 0x0F, 0x00,
+ 0xF4, 0xFF, 0xC8, 0xFF, 0x0F, 0x00, 0xEB, 0xFF,
+ 0xC8, 0xFF, 0x0F, 0x00, 0xE3, 0xFF, 0xC8, 0xFF,
+ 0x12, 0x00, 0xDA, 0xFF, 0xB4, 0xFF, 0x14, 0x00,
+ 0xD2, 0xFF, 0xA3, 0xFF, 0x16, 0x00, 0xC9, 0xFF,
+ 0x90, 0xFF, 0x18, 0x00, 0xC1, 0xFF, 0x78, 0xFF,
+ 0x07, 0x00, 0x04, 0x00, 0x04, 0x00, 0x07, 0x00,
+ 0x0D, 0x00, 0x04, 0x00, 0x07, 0x00, 0x16, 0x00,
+ 0x04, 0x00, 0x07, 0x00, 0x1F, 0x00, 0x04, 0x00,
+ 0x0A, 0x00, 0x29, 0x00, 0x05, 0x00, 0x0C, 0x00,
+ 0x32, 0x00, 0x06, 0x00, 0x0E, 0x00, 0x3B, 0x00,
+ 0x08, 0x00, 0x10, 0x00, 0x44, 0x00, 0x0A, 0x00,
+ 0x07, 0x00, 0xFC, 0xFF, 0x04, 0x00, 0x07, 0x00,
+ 0xF3, 0xFF, 0x04, 0x00, 0x07, 0x00, 0xEA, 0xFF,
+ 0x04, 0x00, 0x07, 0x00, 0xE1, 0xFF, 0x04, 0x00,
+ 0x0A, 0x00, 0xD7, 0xFF, 0x05, 0x00, 0x0C, 0x00,
+ 0xCE, 0xFF, 0x06, 0x00, 0x0E, 0x00, 0xC5, 0xFF,
+ 0x08, 0x00, 0x10, 0x00, 0xBC, 0xFF, 0x0A, 0x00,
+ 0x07, 0x00, 0x04, 0x00, 0x0C, 0x00, 0x07, 0x00,
+ 0x0D, 0x00, 0x0C, 0x00, 0x07, 0x00, 0x16, 0x00,
+ 0x0C, 0x00, 0x07, 0x00, 0x1F, 0x00, 0x0C, 0x00,
+ 0x0A, 0x00, 0x29, 0x00, 0x10, 0x00, 0x0C, 0x00,
+ 0x32, 0x00, 0x13, 0x00, 0x0E, 0x00, 0x3B, 0x00,
+ 0x18, 0x00, 0x10, 0x00, 0x44, 0x00, 0x1E, 0x00,
+ 0x07, 0x00, 0xFC, 0xFF, 0x0C, 0x00, 0x07, 0x00,
+ 0xF3, 0xFF, 0x0C, 0x00, 0x07, 0x00, 0xEA, 0xFF,
+ 0x0C, 0x00, 0x07, 0x00, 0xE1, 0xFF, 0x0C, 0x00,
+ 0x0A, 0x00, 0xD7, 0xFF, 0x10, 0x00, 0x0C, 0x00,
+ 0xCE, 0xFF, 0x13, 0x00, 0x0E, 0x00, 0xC5, 0xFF,
+ 0x18, 0x00, 0x10, 0x00, 0xBC, 0xFF, 0x1E, 0x00,
+ 0x07, 0x00, 0x04, 0x00, 0x15, 0x00, 0x07, 0x00,
+ 0x0D, 0x00, 0x15, 0x00, 0x07, 0x00, 0x16, 0x00,
+ 0x15, 0x00, 0x07, 0x00, 0x1F, 0x00, 0x15, 0x00,
+ 0x0A, 0x00, 0x29, 0x00, 0x1B, 0x00, 0x0C, 0x00,
+ 0x32, 0x00, 0x21, 0x00, 0x0E, 0x00, 0x3B, 0x00,
+ 0x29, 0x00, 0x10, 0x00, 0x44, 0x00, 0x32, 0x00,
+ 0x07, 0x00, 0xFC, 0xFF, 0x15, 0x00, 0x07, 0x00,
+ 0xF3, 0xFF, 0x15, 0x00, 0x07, 0x00, 0xEA, 0xFF,
+ 0x15, 0x00, 0x07, 0x00, 0xE1, 0xFF, 0x15, 0x00,
+ 0x0A, 0x00, 0xD7, 0xFF, 0x1B, 0x00, 0x0C, 0x00,
+ 0xCE, 0xFF, 0x21, 0x00, 0x0E, 0x00, 0xC5, 0xFF,
+ 0x29, 0x00, 0x10, 0x00, 0xBC, 0xFF, 0x32, 0x00,
+ 0x07, 0x00, 0x04, 0x00, 0x1D, 0x00, 0x07, 0x00,
+ 0x0D, 0x00, 0x1D, 0x00, 0x07, 0x00, 0x16, 0x00,
+ 0x1D, 0x00, 0x07, 0x00, 0x1F, 0x00, 0x1D, 0x00,
+ 0x0A, 0x00, 0x29, 0x00, 0x26, 0x00, 0x0C, 0x00,
+ 0x32, 0x00, 0x2E, 0x00, 0x0E, 0x00, 0x3B, 0x00,
+ 0x39, 0x00, 0x10, 0x00, 0x44, 0x00, 0x46, 0x00,
+ 0x07, 0x00, 0xFC, 0xFF, 0x1D, 0x00, 0x07, 0x00,
+ 0xF3, 0xFF, 0x1D, 0x00, 0x07, 0x00, 0xEA, 0xFF,
+ 0x1D, 0x00, 0x07, 0x00, 0xE1, 0xFF, 0x1D, 0x00,
+ 0x0A, 0x00, 0xD7, 0xFF, 0x26, 0x00, 0x0C, 0x00,
+ 0xCE, 0xFF, 0x2E, 0x00, 0x0E, 0x00, 0xC5, 0xFF,
+ 0x39, 0x00, 0x10, 0x00, 0xBC, 0xFF, 0x46, 0x00,
+ 0x0A, 0x00, 0x04, 0x00, 0x26, 0x00, 0x0A, 0x00,
+ 0x0D, 0x00, 0x26, 0x00, 0x0A, 0x00, 0x16, 0x00,
+ 0x26, 0x00, 0x0A, 0x00, 0x1F, 0x00, 0x26, 0x00,
+ 0x0D, 0x00, 0x29, 0x00, 0x32, 0x00, 0x0F, 0x00,
+ 0x32, 0x00, 0x3D, 0x00, 0x11, 0x00, 0x3B, 0x00,
+ 0x4A, 0x00, 0x13, 0x00, 0x44, 0x00, 0x5A, 0x00,
+ 0x0A, 0x00, 0xFC, 0xFF, 0x26, 0x00, 0x0A, 0x00,
+ 0xF3, 0xFF, 0x26, 0x00, 0x0A, 0x00, 0xEA, 0xFF,
+ 0x26, 0x00, 0x0A, 0x00, 0xE1, 0xFF, 0x26, 0x00,
+ 0x0D, 0x00, 0xD7, 0xFF, 0x32, 0x00, 0x0F, 0x00,
+ 0xCE, 0xFF, 0x3D, 0x00, 0x11, 0x00, 0xC5, 0xFF,
+ 0x4A, 0x00, 0x13, 0x00, 0xBC, 0xFF, 0x5A, 0x00,
+ 0x0C, 0x00, 0x04, 0x00, 0x2E, 0x00, 0x0C, 0x00,
+ 0x0D, 0x00, 0x2E, 0x00, 0x0C, 0x00, 0x16, 0x00,
+ 0x2E, 0x00, 0x0C, 0x00, 0x1F, 0x00, 0x2E, 0x00,
+ 0x0F, 0x00, 0x29, 0x00, 0x3D, 0x00, 0x11, 0x00,
+ 0x32, 0x00, 0x4A, 0x00, 0x13, 0x00, 0x3B, 0x00,
+ 0x5A, 0x00, 0x15, 0x00, 0x44, 0x00, 0x6E, 0x00,
+ 0x0C, 0x00, 0xFC, 0xFF, 0x2E, 0x00, 0x0C, 0x00,
+ 0xF3, 0xFF, 0x2E, 0x00, 0x0C, 0x00, 0xEA, 0xFF,
+ 0x2E, 0x00, 0x0C, 0x00, 0xE1, 0xFF, 0x2E, 0x00,
+ 0x0F, 0x00, 0xD7, 0xFF, 0x3D, 0x00, 0x11, 0x00,
+ 0xCE, 0xFF, 0x4A, 0x00, 0x13, 0x00, 0xC5, 0xFF,
+ 0x5A, 0x00, 0x15, 0x00, 0xBC, 0xFF, 0x6E, 0x00,
+ 0x0E, 0x00, 0x04, 0x00, 0x37, 0x00, 0x0E, 0x00,
+ 0x0D, 0x00, 0x37, 0x00, 0x0E, 0x00, 0x16, 0x00,
+ 0x37, 0x00, 0x0E, 0x00, 0x1F, 0x00, 0x37, 0x00,
+ 0x11, 0x00, 0x29, 0x00, 0x48, 0x00, 0x13, 0x00,
+ 0x32, 0x00, 0x58, 0x00, 0x15, 0x00, 0x3B, 0x00,
+ 0x6B, 0x00, 0x17, 0x00, 0x44, 0x00, 0x82, 0x00,
+ 0x0E, 0x00, 0xFC, 0xFF, 0x37, 0x00, 0x0E, 0x00,
+ 0xF3, 0xFF, 0x37, 0x00, 0x0E, 0x00, 0xEA, 0xFF,
+ 0x37, 0x00, 0x0E, 0x00, 0xE1, 0xFF, 0x37, 0x00,
+ 0x11, 0x00, 0xD7, 0xFF, 0x48, 0x00, 0x13, 0x00,
+ 0xCE, 0xFF, 0x58, 0x00, 0x15, 0x00, 0xC5, 0xFF,
+ 0x6B, 0x00, 0x17, 0x00, 0xBC, 0xFF, 0x82, 0x00,
+ 0x10, 0x00, 0x04, 0x00, 0x3F, 0x00, 0x10, 0x00,
+ 0x0D, 0x00, 0x3F, 0x00, 0x10, 0x00, 0x16, 0x00,
+ 0x3F, 0x00, 0x10, 0x00, 0x1F, 0x00, 0x3F, 0x00,
+ 0x13, 0x00, 0x29, 0x00, 0x53, 0x00, 0x15, 0x00,
+ 0x32, 0x00, 0x65, 0x00, 0x17, 0x00, 0x3B, 0x00,
+ 0x7B, 0x00, 0x19, 0x00, 0x44, 0x00, 0x96, 0x00,
+ 0x10, 0x00, 0xFC, 0xFF, 0x3F, 0x00, 0x10, 0x00,
+ 0xF3, 0xFF, 0x3F, 0x00, 0x10, 0x00, 0xEA, 0xFF,
+ 0x3F, 0x00, 0x10, 0x00, 0xE1, 0xFF, 0x3F, 0x00,
+ 0x13, 0x00, 0xD7, 0xFF, 0x53, 0x00, 0x15, 0x00,
+ 0xCE, 0xFF, 0x65, 0x00, 0x17, 0x00, 0xC5, 0xFF,
+ 0x7B, 0x00, 0x19, 0x00, 0xBC, 0xFF, 0x96, 0x00,
+ 0x07, 0x00, 0x04, 0x00, 0xFC, 0xFF, 0x07, 0x00,
+ 0x0D, 0x00, 0xFC, 0xFF, 0x07, 0x00, 0x16, 0x00,
+ 0xFC, 0xFF, 0x07, 0x00, 0x1F, 0x00, 0xFC, 0xFF,
+ 0x0A, 0x00, 0x29, 0x00, 0xFB, 0xFF, 0x0C, 0x00,
+ 0x32, 0x00, 0xFA, 0xFF, 0x0E, 0x00, 0x3B, 0x00,
+ 0xF8, 0xFF, 0x10, 0x00, 0x44, 0x00, 0xF6, 0xFF,
+ 0x07, 0x00, 0xFC, 0xFF, 0xFC, 0xFF, 0x07, 0x00,
+ 0xF3, 0xFF, 0xFC, 0xFF, 0x07, 0x00, 0xEA, 0xFF,
+ 0xFC, 0xFF, 0x07, 0x00, 0xE1, 0xFF, 0xFC, 0xFF,
+ 0x0A, 0x00, 0xD7, 0xFF, 0xFB, 0xFF, 0x0C, 0x00,
+ 0xCE, 0xFF, 0xFA, 0xFF, 0x0E, 0x00, 0xC5, 0xFF,
+ 0xF8, 0xFF, 0x10, 0x00, 0xBC, 0xFF, 0xF6, 0xFF,
+ 0x07, 0x00, 0x04, 0x00, 0xF4, 0xFF, 0x07, 0x00,
+ 0x0D, 0x00, 0xF4, 0xFF, 0x07, 0x00, 0x16, 0x00,
+ 0xF4, 0xFF, 0x07, 0x00, 0x1F, 0x00, 0xF4, 0xFF,
+ 0x0A, 0x00, 0x29, 0x00, 0xF0, 0xFF, 0x0C, 0x00,
+ 0x32, 0x00, 0xED, 0xFF, 0x0E, 0x00, 0x3B, 0x00,
+ 0xE8, 0xFF, 0x10, 0x00, 0x44, 0x00, 0xE2, 0xFF,
+ 0x07, 0x00, 0xFC, 0xFF, 0xF4, 0xFF, 0x07, 0x00,
+ 0xF3, 0xFF, 0xF4, 0xFF, 0x07, 0x00, 0xEA, 0xFF,
+ 0xF4, 0xFF, 0x07, 0x00, 0xE1, 0xFF, 0xF4, 0xFF,
+ 0x0A, 0x00, 0xD7, 0xFF, 0xF0, 0xFF, 0x0C, 0x00,
+ 0xCE, 0xFF, 0xED, 0xFF, 0x0E, 0x00, 0xC5, 0xFF,
+ 0xE8, 0xFF, 0x10, 0x00, 0xBC, 0xFF, 0xE2, 0xFF,
+ 0x07, 0x00, 0x04, 0x00, 0xEB, 0xFF, 0x07, 0x00,
+ 0x0D, 0x00, 0xEB, 0xFF, 0x07, 0x00, 0x16, 0x00,
+ 0xEB, 0xFF, 0x07, 0x00, 0x1F, 0x00, 0xEB, 0xFF,
+ 0x0A, 0x00, 0x29, 0x00, 0xE5, 0xFF, 0x0C, 0x00,
+ 0x32, 0x00, 0xDF, 0xFF, 0x0E, 0x00, 0x3B, 0x00,
+ 0xD7, 0xFF, 0x10, 0x00, 0x44, 0x00, 0xCE, 0xFF,
+ 0x07, 0x00, 0xFC, 0xFF, 0xEB, 0xFF, 0x07, 0x00,
+ 0xF3, 0xFF, 0xEB, 0xFF, 0x07, 0x00, 0xEA, 0xFF,
+ 0xEB, 0xFF, 0x07, 0x00, 0xE1, 0xFF, 0xEB, 0xFF,
+ 0x0A, 0x00, 0xD7, 0xFF, 0xE5, 0xFF, 0x0C, 0x00,
+ 0xCE, 0xFF, 0xDF, 0xFF, 0x0E, 0x00, 0xC5, 0xFF,
+ 0xD7, 0xFF, 0x10, 0x00, 0xBC, 0xFF, 0xCE, 0xFF,
+ 0x07, 0x00, 0x04, 0x00, 0xE3, 0xFF, 0x07, 0x00,
+ 0x0D, 0x00, 0xE3, 0xFF, 0x07, 0x00, 0x16, 0x00,
+ 0xE3, 0xFF, 0x07, 0x00, 0x1F, 0x00, 0xE3, 0xFF,
+ 0x0A, 0x00, 0x29, 0x00, 0xDA, 0xFF, 0x0C, 0x00,
+ 0x32, 0x00, 0xD2, 0xFF, 0x0E, 0x00, 0x3B, 0x00,
+ 0xC7, 0xFF, 0x10, 0x00, 0x44, 0x00, 0xBA, 0xFF,
+ 0x07, 0x00, 0xFC, 0xFF, 0xE3, 0xFF, 0x07, 0x00,
+ 0xF3, 0xFF, 0xE3, 0xFF, 0x07, 0x00, 0xEA, 0xFF,
+ 0xE3, 0xFF, 0x07, 0x00, 0xE1, 0xFF, 0xE3, 0xFF,
+ 0x0A, 0x00, 0xD7, 0xFF, 0xDA, 0xFF, 0x0C, 0x00,
+ 0xCE, 0xFF, 0xD2, 0xFF, 0x0E, 0x00, 0xC5, 0xFF,
+ 0xC7, 0xFF, 0x10, 0x00, 0xBC, 0xFF, 0xBA, 0xFF,
+ 0x0A, 0x00, 0x04, 0x00, 0xDA, 0xFF, 0x0A, 0x00,
+ 0x0D, 0x00, 0xDA, 0xFF, 0x0A, 0x00, 0x16, 0x00,
+ 0xDA, 0xFF, 0x0A, 0x00, 0x1F, 0x00, 0xDA, 0xFF,
+ 0x0D, 0x00, 0x29, 0x00, 0xCE, 0xFF, 0x0F, 0x00,
+ 0x32, 0x00, 0xC3, 0xFF, 0x11, 0x00, 0x3B, 0x00,
+ 0xB6, 0xFF, 0x13, 0x00, 0x44, 0x00, 0xA6, 0xFF,
+ 0x0A, 0x00, 0xFC, 0xFF, 0xDA, 0xFF, 0x0A, 0x00,
+ 0xF3, 0xFF, 0xDA, 0xFF, 0x0A, 0x00, 0xEA, 0xFF,
+ 0xDA, 0xFF, 0x0A, 0x00, 0xE1, 0xFF, 0xDA, 0xFF,
+ 0x0D, 0x00, 0xD7, 0xFF, 0xCE, 0xFF, 0x0F, 0x00,
+ 0xCE, 0xFF, 0xC3, 0xFF, 0x11, 0x00, 0xC5, 0xFF,
+ 0xB6, 0xFF, 0x13, 0x00, 0xBC, 0xFF, 0xA6, 0xFF,
+ 0x0C, 0x00, 0x04, 0x00, 0xD2, 0xFF, 0x0C, 0x00,
+ 0x0D, 0x00, 0xD2, 0xFF, 0x0C, 0x00, 0x16, 0x00,
+ 0xD2, 0xFF, 0x0C, 0x00, 0x1F, 0x00, 0xD2, 0xFF,
+ 0x0F, 0x00, 0x29, 0x00, 0xC3, 0xFF, 0x11, 0x00,
+ 0x32, 0x00, 0xB6, 0xFF, 0x13, 0x00, 0x3B, 0x00,
+ 0xA6, 0xFF, 0x15, 0x00, 0x44, 0x00, 0x92, 0xFF,
+ 0x0C, 0x00, 0xFC, 0xFF, 0xD2, 0xFF, 0x0C, 0x00,
+ 0xF3, 0xFF, 0xD2, 0xFF, 0x0C, 0x00, 0xEA, 0xFF,
+ 0xD2, 0xFF, 0x0C, 0x00, 0xE1, 0xFF, 0xD2, 0xFF,
+ 0x0F, 0x00, 0xD7, 0xFF, 0xC3, 0xFF, 0x11, 0x00,
+ 0xCE, 0xFF, 0xB6, 0xFF, 0x13, 0x00, 0xC5, 0xFF,
+ 0xA6, 0xFF, 0x15, 0x00, 0xBC, 0xFF, 0x92, 0xFF,
+ 0x0E, 0x00, 0x04, 0x00, 0xC9, 0xFF, 0x0E, 0x00,
+ 0x0D, 0x00, 0xC9, 0xFF, 0x0E, 0x00, 0x16, 0x00,
+ 0xC9, 0xFF, 0x0E, 0x00, 0x1F, 0x00, 0xC9, 0xFF,
+ 0x11, 0x00, 0x29, 0x00, 0xB8, 0xFF, 0x13, 0x00,
+ 0x32, 0x00, 0xA8, 0xFF, 0x15, 0x00, 0x3B, 0x00,
+ 0x95, 0xFF, 0x17, 0x00, 0x44, 0x00, 0x7E, 0xFF,
+ 0x0E, 0x00, 0xFC, 0xFF, 0xC9, 0xFF, 0x0E, 0x00,
+ 0xF3, 0xFF, 0xC9, 0xFF, 0x0E, 0x00, 0xEA, 0xFF,
+ 0xC9, 0xFF, 0x0E, 0x00, 0xE1, 0xFF, 0xC9, 0xFF,
+ 0x11, 0x00, 0xD7, 0xFF, 0xB8, 0xFF, 0x13, 0x00,
+ 0xCE, 0xFF, 0xA8, 0xFF, 0x15, 0x00, 0xC5, 0xFF,
+ 0x95, 0xFF, 0x17, 0x00, 0xBC, 0xFF, 0x7E, 0xFF,
+ 0x10, 0x00, 0x04, 0x00, 0xC1, 0xFF, 0x10, 0x00,
+ 0x0D, 0x00, 0xC1, 0xFF, 0x10, 0x00, 0x16, 0x00,
+ 0xC1, 0xFF, 0x10, 0x00, 0x1F, 0x00, 0xC1, 0xFF,
+ 0x13, 0x00, 0x29, 0x00, 0xAD, 0xFF, 0x15, 0x00,
+ 0x32, 0x00, 0x9B, 0xFF, 0x17, 0x00, 0x3B, 0x00,
+ 0x85, 0xFF, 0x19, 0x00, 0x44, 0x00, 0x6A, 0xFF,
+ 0x10, 0x00, 0xFC, 0xFF, 0xC1, 0xFF, 0x10, 0x00,
+ 0xF3, 0xFF, 0xC1, 0xFF, 0x10, 0x00, 0xEA, 0xFF,
+ 0xC1, 0xFF, 0x10, 0x00, 0xE1, 0xFF, 0xC1, 0xFF,
+ 0x13, 0x00, 0xD7, 0xFF, 0xAD, 0xFF, 0x15, 0x00,
+ 0xCE, 0xFF, 0x9B, 0xFF, 0x17, 0x00, 0xC5, 0xFF,
+ 0x85, 0xFF, 0x19, 0x00, 0xBC, 0xFF, 0x6A, 0xFF,
+ 0x08, 0x00, 0x05, 0x00, 0x04, 0x00, 0x08, 0x00,
+ 0x0F, 0x00, 0x04, 0x00, 0x08, 0x00, 0x19, 0x00,
+ 0x04, 0x00, 0x08, 0x00, 0x23, 0x00, 0x04, 0x00,
+ 0x0B, 0x00, 0x2E, 0x00, 0x06, 0x00, 0x0D, 0x00,
+ 0x38, 0x00, 0x07, 0x00, 0x0F, 0x00, 0x42, 0x00,
+ 0x09, 0x00, 0x11, 0x00, 0x4C, 0x00, 0x0B, 0x00,
+ 0x08, 0x00, 0xFB, 0xFF, 0x04, 0x00, 0x08, 0x00,
+ 0xF1, 0xFF, 0x04, 0x00, 0x08, 0x00, 0xE7, 0xFF,
+ 0x04, 0x00, 0x08, 0x00, 0xDD, 0xFF, 0x04, 0x00,
+ 0x0B, 0x00, 0xD2, 0xFF, 0x06, 0x00, 0x0D, 0x00,
+ 0xC8, 0xFF, 0x07, 0x00, 0x0F, 0x00, 0xBE, 0xFF,
+ 0x09, 0x00, 0x11, 0x00, 0xB4, 0xFF, 0x0B, 0x00,
+ 0x08, 0x00, 0x05, 0x00, 0x0D, 0x00, 0x08, 0x00,
+ 0x0F, 0x00, 0x0D, 0x00, 0x08, 0x00, 0x19, 0x00,
+ 0x0D, 0x00, 0x08, 0x00, 0x23, 0x00, 0x0D, 0x00,
+ 0x0B, 0x00, 0x2E, 0x00, 0x12, 0x00, 0x0D, 0x00,
+ 0x38, 0x00, 0x16, 0x00, 0x0F, 0x00, 0x42, 0x00,
+ 0x1B, 0x00, 0x11, 0x00, 0x4C, 0x00, 0x21, 0x00,
+ 0x08, 0x00, 0xFB, 0xFF, 0x0D, 0x00, 0x08, 0x00,
+ 0xF1, 0xFF, 0x0D, 0x00, 0x08, 0x00, 0xE7, 0xFF,
+ 0x0D, 0x00, 0x08, 0x00, 0xDD, 0xFF, 0x0D, 0x00,
+ 0x0B, 0x00, 0xD2, 0xFF, 0x12, 0x00, 0x0D, 0x00,
+ 0xC8, 0xFF, 0x16, 0x00, 0x0F, 0x00, 0xBE, 0xFF,
+ 0x1B, 0x00, 0x11, 0x00, 0xB4, 0xFF, 0x21, 0x00,
+ 0x08, 0x00, 0x05, 0x00, 0x16, 0x00, 0x08, 0x00,
+ 0x0F, 0x00, 0x16, 0x00, 0x08, 0x00, 0x19, 0x00,
+ 0x16, 0x00, 0x08, 0x00, 0x23, 0x00, 0x16, 0x00,
+ 0x0B, 0x00, 0x2E, 0x00, 0x1F, 0x00, 0x0D, 0x00,
+ 0x38, 0x00, 0x25, 0x00, 0x0F, 0x00, 0x42, 0x00,
+ 0x2D, 0x00, 0x11, 0x00, 0x4C, 0x00, 0x37, 0x00,
+ 0x08, 0x00, 0xFB, 0xFF, 0x16, 0x00, 0x08, 0x00,
+ 0xF1, 0xFF, 0x16, 0x00, 0x08, 0x00, 0xE7, 0xFF,
+ 0x16, 0x00, 0x08, 0x00, 0xDD, 0xFF, 0x16, 0x00,
+ 0x0B, 0x00, 0xD2, 0xFF, 0x1F, 0x00, 0x0D, 0x00,
+ 0xC8, 0xFF, 0x25, 0x00, 0x0F, 0x00, 0xBE, 0xFF,
+ 0x2D, 0x00, 0x11, 0x00, 0xB4, 0xFF, 0x37, 0x00,
+ 0x08, 0x00, 0x05, 0x00, 0x1F, 0x00, 0x08, 0x00,
+ 0x0F, 0x00, 0x1F, 0x00, 0x08, 0x00, 0x19, 0x00,
+ 0x1F, 0x00, 0x08, 0x00, 0x23, 0x00, 0x1F, 0x00,
+ 0x0B, 0x00, 0x2E, 0x00, 0x2B, 0x00, 0x0D, 0x00,
+ 0x38, 0x00, 0x34, 0x00, 0x0F, 0x00, 0x42, 0x00,
+ 0x3F, 0x00, 0x11, 0x00, 0x4C, 0x00, 0x4D, 0x00,
+ 0x08, 0x00, 0xFB, 0xFF, 0x1F, 0x00, 0x08, 0x00,
+ 0xF1, 0xFF, 0x1F, 0x00, 0x08, 0x00, 0xE7, 0xFF,
+ 0x1F, 0x00, 0x08, 0x00, 0xDD, 0xFF, 0x1F, 0x00,
+ 0x0B, 0x00, 0xD2, 0xFF, 0x2B, 0x00, 0x0D, 0x00,
+ 0xC8, 0xFF, 0x34, 0x00, 0x0F, 0x00, 0xBE, 0xFF,
+ 0x3F, 0x00, 0x11, 0x00, 0xB4, 0xFF, 0x4D, 0x00,
+ 0x0B, 0x00, 0x05, 0x00, 0x29, 0x00, 0x0B, 0x00,
+ 0x0F, 0x00, 0x29, 0x00, 0x0B, 0x00, 0x19, 0x00,
+ 0x29, 0x00, 0x0B, 0x00, 0x23, 0x00, 0x29, 0x00,
+ 0x0E, 0x00, 0x2E, 0x00, 0x38, 0x00, 0x10, 0x00,
+ 0x38, 0x00, 0x43, 0x00, 0x12, 0x00, 0x42, 0x00,
+ 0x52, 0x00, 0x14, 0x00, 0x4C, 0x00, 0x63, 0x00,
+ 0x0B, 0x00, 0xFB, 0xFF, 0x29, 0x00, 0x0B, 0x00,
+ 0xF1, 0xFF, 0x29, 0x00, 0x0B, 0x00, 0xE7, 0xFF,
+ 0x29, 0x00, 0x0B, 0x00, 0xDD, 0xFF, 0x29, 0x00,
+ 0x0E, 0x00, 0xD2, 0xFF, 0x38, 0x00, 0x10, 0x00,
+ 0xC8, 0xFF, 0x43, 0x00, 0x12, 0x00, 0xBE, 0xFF,
+ 0x52, 0x00, 0x14, 0x00, 0xB4, 0xFF, 0x63, 0x00,
+ 0x0D, 0x00, 0x05, 0x00, 0x32, 0x00, 0x0D, 0x00,
+ 0x0F, 0x00, 0x32, 0x00, 0x0D, 0x00, 0x19, 0x00,
+ 0x32, 0x00, 0x0D, 0x00, 0x23, 0x00, 0x32, 0x00,
+ 0x10, 0x00, 0x2E, 0x00, 0x44, 0x00, 0x12, 0x00,
+ 0x38, 0x00, 0x52, 0x00, 0x14, 0x00, 0x42, 0x00,
+ 0x64, 0x00, 0x16, 0x00, 0x4C, 0x00, 0x79, 0x00,
+ 0x0D, 0x00, 0xFB, 0xFF, 0x32, 0x00, 0x0D, 0x00,
+ 0xF1, 0xFF, 0x32, 0x00, 0x0D, 0x00, 0xE7, 0xFF,
+ 0x32, 0x00, 0x0D, 0x00, 0xDD, 0xFF, 0x32, 0x00,
+ 0x10, 0x00, 0xD2, 0xFF, 0x44, 0x00, 0x12, 0x00,
+ 0xC8, 0xFF, 0x52, 0x00, 0x14, 0x00, 0xBE, 0xFF,
+ 0x64, 0x00, 0x16, 0x00, 0xB4, 0xFF, 0x79, 0x00,
+ 0x0F, 0x00, 0x05, 0x00, 0x3B, 0x00, 0x0F, 0x00,
+ 0x0F, 0x00, 0x3B, 0x00, 0x0F, 0x00, 0x19, 0x00,
+ 0x3B, 0x00, 0x0F, 0x00, 0x23, 0x00, 0x3B, 0x00,
+ 0x12, 0x00, 0x2E, 0x00, 0x51, 0x00, 0x14, 0x00,
+ 0x38, 0x00, 0x61, 0x00, 0x16, 0x00, 0x42, 0x00,
+ 0x76, 0x00, 0x18, 0x00, 0x4C, 0x00, 0x8F, 0x00,
+ 0x0F, 0x00, 0xFB, 0xFF, 0x3B, 0x00, 0x0F, 0x00,
+ 0xF1, 0xFF, 0x3B, 0x00, 0x0F, 0x00, 0xE7, 0xFF,
+ 0x3B, 0x00, 0x0F, 0x00, 0xDD, 0xFF, 0x3B, 0x00,
+ 0x12, 0x00, 0xD2, 0xFF, 0x51, 0x00, 0x14, 0x00,
+ 0xC8, 0xFF, 0x61, 0x00, 0x16, 0x00, 0xBE, 0xFF,
+ 0x76, 0x00, 0x18, 0x00, 0xB4, 0xFF, 0x8F, 0x00,
+ 0x11, 0x00, 0x05, 0x00, 0x44, 0x00, 0x11, 0x00,
+ 0x0F, 0x00, 0x44, 0x00, 0x11, 0x00, 0x19, 0x00,
+ 0x44, 0x00, 0x11, 0x00, 0x23, 0x00, 0x44, 0x00,
+ 0x14, 0x00, 0x2E, 0x00, 0x5D, 0x00, 0x16, 0x00,
+ 0x38, 0x00, 0x70, 0x00, 0x18, 0x00, 0x42, 0x00,
+ 0x88, 0x00, 0x1A, 0x00, 0x4C, 0x00, 0xA5, 0x00,
+ 0x11, 0x00, 0xFB, 0xFF, 0x44, 0x00, 0x11, 0x00,
+ 0xF1, 0xFF, 0x44, 0x00, 0x11, 0x00, 0xE7, 0xFF,
+ 0x44, 0x00, 0x11, 0x00, 0xDD, 0xFF, 0x44, 0x00,
+ 0x14, 0x00, 0xD2, 0xFF, 0x5D, 0x00, 0x16, 0x00,
+ 0xC8, 0xFF, 0x70, 0x00, 0x18, 0x00, 0xBE, 0xFF,
+ 0x88, 0x00, 0x1A, 0x00, 0xB4, 0xFF, 0xA5, 0x00,
+ 0x08, 0x00, 0x05, 0x00, 0xFC, 0xFF, 0x08, 0x00,
+ 0x0F, 0x00, 0xFC, 0xFF, 0x08, 0x00, 0x19, 0x00,
+ 0xFC, 0xFF, 0x08, 0x00, 0x23, 0x00, 0xFC, 0xFF,
+ 0x0B, 0x00, 0x2E, 0x00, 0xFA, 0xFF, 0x0D, 0x00,
+ 0x38, 0x00, 0xF9, 0xFF, 0x0F, 0x00, 0x42, 0x00,
+ 0xF7, 0xFF, 0x11, 0x00, 0x4C, 0x00, 0xF5, 0xFF,
+ 0x08, 0x00, 0xFB, 0xFF, 0xFC, 0xFF, 0x08, 0x00,
+ 0xF1, 0xFF, 0xFC, 0xFF, 0x08, 0x00, 0xE7, 0xFF,
+ 0xFC, 0xFF, 0x08, 0x00, 0xDD, 0xFF, 0xFC, 0xFF,
+ 0x0B, 0x00, 0xD2, 0xFF, 0xFA, 0xFF, 0x0D, 0x00,
+ 0xC8, 0xFF, 0xF9, 0xFF, 0x0F, 0x00, 0xBE, 0xFF,
+ 0xF7, 0xFF, 0x11, 0x00, 0xB4, 0xFF, 0xF5, 0xFF,
+ 0x08, 0x00, 0x05, 0x00, 0xF3, 0xFF, 0x08, 0x00,
+ 0x0F, 0x00, 0xF3, 0xFF, 0x08, 0x00, 0x19, 0x00,
+ 0xF3, 0xFF, 0x08, 0x00, 0x23, 0x00, 0xF3, 0xFF,
+ 0x0B, 0x00, 0x2E, 0x00, 0xEE, 0xFF, 0x0D, 0x00,
+ 0x38, 0x00, 0xEA, 0xFF, 0x0F, 0x00, 0x42, 0x00,
+ 0xE5, 0xFF, 0x11, 0x00, 0x4C, 0x00, 0xDF, 0xFF,
+ 0x08, 0x00, 0xFB, 0xFF, 0xF3, 0xFF, 0x08, 0x00,
+ 0xF1, 0xFF, 0xF3, 0xFF, 0x08, 0x00, 0xE7, 0xFF,
+ 0xF3, 0xFF, 0x08, 0x00, 0xDD, 0xFF, 0xF3, 0xFF,
+ 0x0B, 0x00, 0xD2, 0xFF, 0xEE, 0xFF, 0x0D, 0x00,
+ 0xC8, 0xFF, 0xEA, 0xFF, 0x0F, 0x00, 0xBE, 0xFF,
+ 0xE5, 0xFF, 0x11, 0x00, 0xB4, 0xFF, 0xDF, 0xFF,
+ 0x08, 0x00, 0x05, 0x00, 0xEA, 0xFF, 0x08, 0x00,
+ 0x0F, 0x00, 0xEA, 0xFF, 0x08, 0x00, 0x19, 0x00,
+ 0xEA, 0xFF, 0x08, 0x00, 0x23, 0x00, 0xEA, 0xFF,
+ 0x0B, 0x00, 0x2E, 0x00, 0xE1, 0xFF, 0x0D, 0x00,
+ 0x38, 0x00, 0xDB, 0xFF, 0x0F, 0x00, 0x42, 0x00,
+ 0xD3, 0xFF, 0x11, 0x00, 0x4C, 0x00, 0xC9, 0xFF,
+ 0x08, 0x00, 0xFB, 0xFF, 0xEA, 0xFF, 0x08, 0x00,
+ 0xF1, 0xFF, 0xEA, 0xFF, 0x08, 0x00, 0xE7, 0xFF,
+ 0xEA, 0xFF, 0x08, 0x00, 0xDD, 0xFF, 0xEA, 0xFF,
+ 0x0B, 0x00, 0xD2, 0xFF, 0xE1, 0xFF, 0x0D, 0x00,
+ 0xC8, 0xFF, 0xDB, 0xFF, 0x0F, 0x00, 0xBE, 0xFF,
+ 0xD3, 0xFF, 0x11, 0x00, 0xB4, 0xFF, 0xC9, 0xFF,
+ 0x08, 0x00, 0x05, 0x00, 0xE1, 0xFF, 0x08, 0x00,
+ 0x0F, 0x00, 0xE1, 0xFF, 0x08, 0x00, 0x19, 0x00,
+ 0xE1, 0xFF, 0x08, 0x00, 0x23, 0x00, 0xE1, 0xFF,
+ 0x0B, 0x00, 0x2E, 0x00, 0xD5, 0xFF, 0x0D, 0x00,
+ 0x38, 0x00, 0xCC, 0xFF, 0x0F, 0x00, 0x42, 0x00,
+ 0xC1, 0xFF, 0x11, 0x00, 0x4C, 0x00, 0xB3, 0xFF,
+ 0x08, 0x00, 0xFB, 0xFF, 0xE1, 0xFF, 0x08, 0x00,
+ 0xF1, 0xFF, 0xE1, 0xFF, 0x08, 0x00, 0xE7, 0xFF,
+ 0xE1, 0xFF, 0x08, 0x00, 0xDD, 0xFF, 0xE1, 0xFF,
+ 0x0B, 0x00, 0xD2, 0xFF, 0xD5, 0xFF, 0x0D, 0x00,
+ 0xC8, 0xFF, 0xCC, 0xFF, 0x0F, 0x00, 0xBE, 0xFF,
+ 0xC1, 0xFF, 0x11, 0x00, 0xB4, 0xFF, 0xB3, 0xFF,
+ 0x0B, 0x00, 0x05, 0x00, 0xD7, 0xFF, 0x0B, 0x00,
+ 0x0F, 0x00, 0xD7, 0xFF, 0x0B, 0x00, 0x19, 0x00,
+ 0xD7, 0xFF, 0x0B, 0x00, 0x23, 0x00, 0xD7, 0xFF,
+ 0x0E, 0x00, 0x2E, 0x00, 0xC8, 0xFF, 0x10, 0x00,
+ 0x38, 0x00, 0xBD, 0xFF, 0x12, 0x00, 0x42, 0x00,
+ 0xAE, 0xFF, 0x14, 0x00, 0x4C, 0x00, 0x9D, 0xFF,
+ 0x0B, 0x00, 0xFB, 0xFF, 0xD7, 0xFF, 0x0B, 0x00,
+ 0xF1, 0xFF, 0xD7, 0xFF, 0x0B, 0x00, 0xE7, 0xFF,
+ 0xD7, 0xFF, 0x0B, 0x00, 0xDD, 0xFF, 0xD7, 0xFF,
+ 0x0E, 0x00, 0xD2, 0xFF, 0xC8, 0xFF, 0x10, 0x00,
+ 0xC8, 0xFF, 0xBD, 0xFF, 0x12, 0x00, 0xBE, 0xFF,
+ 0xAE, 0xFF, 0x14, 0x00, 0xB4, 0xFF, 0x9D, 0xFF,
+ 0x0D, 0x00, 0x05, 0x00, 0xCE, 0xFF, 0x0D, 0x00,
+ 0x0F, 0x00, 0xCE, 0xFF, 0x0D, 0x00, 0x19, 0x00,
+ 0xCE, 0xFF, 0x0D, 0x00, 0x23, 0x00, 0xCE, 0xFF,
+ 0x10, 0x00, 0x2E, 0x00, 0xBC, 0xFF, 0x12, 0x00,
+ 0x38, 0x00, 0xAE, 0xFF, 0x14, 0x00, 0x42, 0x00,
+ 0x9C, 0xFF, 0x16, 0x00, 0x4C, 0x00, 0x87, 0xFF,
+ 0x0D, 0x00, 0xFB, 0xFF, 0xCE, 0xFF, 0x0D, 0x00,
+ 0xF1, 0xFF, 0xCE, 0xFF, 0x0D, 0x00, 0xE7, 0xFF,
+ 0xCE, 0xFF, 0x0D, 0x00, 0xDD, 0xFF, 0xCE, 0xFF,
+ 0x10, 0x00, 0xD2, 0xFF, 0xBC, 0xFF, 0x12, 0x00,
+ 0xC8, 0xFF, 0xAE, 0xFF, 0x14, 0x00, 0xBE, 0xFF,
+ 0x9C, 0xFF, 0x16, 0x00, 0xB4, 0xFF, 0x87, 0xFF,
+ 0x0F, 0x00, 0x05, 0x00, 0xC5, 0xFF, 0x0F, 0x00,
+ 0x0F, 0x00, 0xC5, 0xFF, 0x0F, 0x00, 0x19, 0x00,
+ 0xC5, 0xFF, 0x0F, 0x00, 0x23, 0x00, 0xC5, 0xFF,
+ 0x12, 0x00, 0x2E, 0x00, 0xAF, 0xFF, 0x14, 0x00,
+ 0x38, 0x00, 0x9F, 0xFF, 0x16, 0x00, 0x42, 0x00,
+ 0x8A, 0xFF, 0x18, 0x00, 0x4C, 0x00, 0x71, 0xFF,
+ 0x0F, 0x00, 0xFB, 0xFF, 0xC5, 0xFF, 0x0F, 0x00,
+ 0xF1, 0xFF, 0xC5, 0xFF, 0x0F, 0x00, 0xE7, 0xFF,
+ 0xC5, 0xFF, 0x0F, 0x00, 0xDD, 0xFF, 0xC5, 0xFF,
+ 0x12, 0x00, 0xD2, 0xFF, 0xAF, 0xFF, 0x14, 0x00,
+ 0xC8, 0xFF, 0x9F, 0xFF, 0x16, 0x00, 0xBE, 0xFF,
+ 0x8A, 0xFF, 0x18, 0x00, 0xB4, 0xFF, 0x71, 0xFF,
+ 0x11, 0x00, 0x05, 0x00, 0xBC, 0xFF, 0x11, 0x00,
+ 0x0F, 0x00, 0xBC, 0xFF, 0x11, 0x00, 0x19, 0x00,
+ 0xBC, 0xFF, 0x11, 0x00, 0x23, 0x00, 0xBC, 0xFF,
+ 0x14, 0x00, 0x2E, 0x00, 0xA3, 0xFF, 0x16, 0x00,
+ 0x38, 0x00, 0x90, 0xFF, 0x18, 0x00, 0x42, 0x00,
+ 0x78, 0xFF, 0x1A, 0x00, 0x4C, 0x00, 0x5B, 0xFF,
+ 0x11, 0x00, 0xFB, 0xFF, 0xBC, 0xFF, 0x11, 0x00,
+ 0xF1, 0xFF, 0xBC, 0xFF, 0x11, 0x00, 0xE7, 0xFF,
+ 0xBC, 0xFF, 0x11, 0x00, 0xDD, 0xFF, 0xBC, 0xFF,
+ 0x14, 0x00, 0xD2, 0xFF, 0xA3, 0xFF, 0x16, 0x00,
+ 0xC8, 0xFF, 0x90, 0xFF, 0x18, 0x00, 0xBE, 0xFF,
+ 0x78, 0xFF, 0x1A, 0x00, 0xB4, 0xFF, 0x5B, 0xFF,
+ 0x09, 0x00, 0x05, 0x00, 0x05, 0x00, 0x09, 0x00,
+ 0x10, 0x00, 0x05, 0x00, 0x09, 0x00, 0x1B, 0x00,
+ 0x05, 0x00, 0x09, 0x00, 0x26, 0x00, 0x05, 0x00,
+ 0x0C, 0x00, 0x32, 0x00, 0x06, 0x00, 0x0E, 0x00,
+ 0x3D, 0x00, 0x08, 0x00, 0x10, 0x00, 0x48, 0x00,
+ 0x0A, 0x00, 0x12, 0x00, 0x53, 0x00, 0x0C, 0x00,
+ 0x09, 0x00, 0xFB, 0xFF, 0x05, 0x00, 0x09, 0x00,
+ 0xF0, 0xFF, 0x05, 0x00, 0x09, 0x00, 0xE5, 0xFF,
+ 0x05, 0x00, 0x09, 0x00, 0xDA, 0xFF, 0x05, 0x00,
+ 0x0C, 0x00, 0xCE, 0xFF, 0x06, 0x00, 0x0E, 0x00,
+ 0xC3, 0xFF, 0x08, 0x00, 0x10, 0x00, 0xB8, 0xFF,
+ 0x0A, 0x00, 0x12, 0x00, 0xAD, 0xFF, 0x0C, 0x00,
+ 0x09, 0x00, 0x05, 0x00, 0x0F, 0x00, 0x09, 0x00,
+ 0x10, 0x00, 0x0F, 0x00, 0x09, 0x00, 0x1B, 0x00,
+ 0x0F, 0x00, 0x09, 0x00, 0x26, 0x00, 0x0F, 0x00,
+ 0x0C, 0x00, 0x32, 0x00, 0x13, 0x00, 0x0E, 0x00,
+ 0x3D, 0x00, 0x18, 0x00, 0x10, 0x00, 0x48, 0x00,
+ 0x1E, 0x00, 0x12, 0x00, 0x53, 0x00, 0x24, 0x00,
+ 0x09, 0x00, 0xFB, 0xFF, 0x0F, 0x00, 0x09, 0x00,
+ 0xF0, 0xFF, 0x0F, 0x00, 0x09, 0x00, 0xE5, 0xFF,
+ 0x0F, 0x00, 0x09, 0x00, 0xDA, 0xFF, 0x0F, 0x00,
+ 0x0C, 0x00, 0xCE, 0xFF, 0x13, 0x00, 0x0E, 0x00,
+ 0xC3, 0xFF, 0x18, 0x00, 0x10, 0x00, 0xB8, 0xFF,
+ 0x1E, 0x00, 0x12, 0x00, 0xAD, 0xFF, 0x24, 0x00,
+ 0x09, 0x00, 0x05, 0x00, 0x19, 0x00, 0x09, 0x00,
+ 0x10, 0x00, 0x19, 0x00, 0x09, 0x00, 0x1B, 0x00,
+ 0x19, 0x00, 0x09, 0x00, 0x26, 0x00, 0x19, 0x00,
+ 0x0C, 0x00, 0x32, 0x00, 0x21, 0x00, 0x0E, 0x00,
+ 0x3D, 0x00, 0x29, 0x00, 0x10, 0x00, 0x48, 0x00,
+ 0x32, 0x00, 0x12, 0x00, 0x53, 0x00, 0x3C, 0x00,
+ 0x09, 0x00, 0xFB, 0xFF, 0x19, 0x00, 0x09, 0x00,
+ 0xF0, 0xFF, 0x19, 0x00, 0x09, 0x00, 0xE5, 0xFF,
+ 0x19, 0x00, 0x09, 0x00, 0xDA, 0xFF, 0x19, 0x00,
+ 0x0C, 0x00, 0xCE, 0xFF, 0x21, 0x00, 0x0E, 0x00,
+ 0xC3, 0xFF, 0x29, 0x00, 0x10, 0x00, 0xB8, 0xFF,
+ 0x32, 0x00, 0x12, 0x00, 0xAD, 0xFF, 0x3C, 0x00,
+ 0x09, 0x00, 0x05, 0x00, 0x23, 0x00, 0x09, 0x00,
+ 0x10, 0x00, 0x23, 0x00, 0x09, 0x00, 0x1B, 0x00,
+ 0x23, 0x00, 0x09, 0x00, 0x26, 0x00, 0x23, 0x00,
+ 0x0C, 0x00, 0x32, 0x00, 0x2E, 0x00, 0x0E, 0x00,
+ 0x3D, 0x00, 0x39, 0x00, 0x10, 0x00, 0x48, 0x00,
+ 0x46, 0x00, 0x12, 0x00, 0x53, 0x00, 0x54, 0x00,
+ 0x09, 0x00, 0xFB, 0xFF, 0x23, 0x00, 0x09, 0x00,
+ 0xF0, 0xFF, 0x23, 0x00, 0x09, 0x00, 0xE5, 0xFF,
+ 0x23, 0x00, 0x09, 0x00, 0xDA, 0xFF, 0x23, 0x00,
+ 0x0C, 0x00, 0xCE, 0xFF, 0x2E, 0x00, 0x0E, 0x00,
+ 0xC3, 0xFF, 0x39, 0x00, 0x10, 0x00, 0xB8, 0xFF,
+ 0x46, 0x00, 0x12, 0x00, 0xAD, 0xFF, 0x54, 0x00,
+ 0x0C, 0x00, 0x05, 0x00, 0x2E, 0x00, 0x0C, 0x00,
+ 0x10, 0x00, 0x2E, 0x00, 0x0C, 0x00, 0x1B, 0x00,
+ 0x2E, 0x00, 0x0C, 0x00, 0x26, 0x00, 0x2E, 0x00,
+ 0x0F, 0x00, 0x32, 0x00, 0x3D, 0x00, 0x11, 0x00,
+ 0x3D, 0x00, 0x4A, 0x00, 0x13, 0x00, 0x48, 0x00,
+ 0x5A, 0x00, 0x15, 0x00, 0x53, 0x00, 0x6D, 0x00,
+ 0x0C, 0x00, 0xFB, 0xFF, 0x2E, 0x00, 0x0C, 0x00,
+ 0xF0, 0xFF, 0x2E, 0x00, 0x0C, 0x00, 0xE5, 0xFF,
+ 0x2E, 0x00, 0x0C, 0x00, 0xDA, 0xFF, 0x2E, 0x00,
+ 0x0F, 0x00, 0xCE, 0xFF, 0x3D, 0x00, 0x11, 0x00,
+ 0xC3, 0xFF, 0x4A, 0x00, 0x13, 0x00, 0xB8, 0xFF,
+ 0x5A, 0x00, 0x15, 0x00, 0xAD, 0xFF, 0x6D, 0x00,
+ 0x0E, 0x00, 0x05, 0x00, 0x38, 0x00, 0x0E, 0x00,
+ 0x10, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x1B, 0x00,
+ 0x38, 0x00, 0x0E, 0x00, 0x26, 0x00, 0x38, 0x00,
+ 0x11, 0x00, 0x32, 0x00, 0x4A, 0x00, 0x13, 0x00,
+ 0x3D, 0x00, 0x5A, 0x00, 0x15, 0x00, 0x48, 0x00,
+ 0x6E, 0x00, 0x17, 0x00, 0x53, 0x00, 0x85, 0x00,
+ 0x0E, 0x00, 0xFB, 0xFF, 0x38, 0x00, 0x0E, 0x00,
+ 0xF0, 0xFF, 0x38, 0x00, 0x0E, 0x00, 0xE5, 0xFF,
+ 0x38, 0x00, 0x0E, 0x00, 0xDA, 0xFF, 0x38, 0x00,
+ 0x11, 0x00, 0xCE, 0xFF, 0x4A, 0x00, 0x13, 0x00,
+ 0xC3, 0xFF, 0x5A, 0x00, 0x15, 0x00, 0xB8, 0xFF,
+ 0x6E, 0x00, 0x17, 0x00, 0xAD, 0xFF, 0x85, 0x00,
+ 0x10, 0x00, 0x05, 0x00, 0x42, 0x00, 0x10, 0x00,
+ 0x10, 0x00, 0x42, 0x00, 0x10, 0x00, 0x1B, 0x00,
+ 0x42, 0x00, 0x10, 0x00, 0x26, 0x00, 0x42, 0x00,
+ 0x13, 0x00, 0x32, 0x00, 0x58, 0x00, 0x15, 0x00,
+ 0x3D, 0x00, 0x6B, 0x00, 0x17, 0x00, 0x48, 0x00,
+ 0x82, 0x00, 0x19, 0x00, 0x53, 0x00, 0x9D, 0x00,
+ 0x10, 0x00, 0xFB, 0xFF, 0x42, 0x00, 0x10, 0x00,
+ 0xF0, 0xFF, 0x42, 0x00, 0x10, 0x00, 0xE5, 0xFF,
+ 0x42, 0x00, 0x10, 0x00, 0xDA, 0xFF, 0x42, 0x00,
+ 0x13, 0x00, 0xCE, 0xFF, 0x58, 0x00, 0x15, 0x00,
+ 0xC3, 0xFF, 0x6B, 0x00, 0x17, 0x00, 0xB8, 0xFF,
+ 0x82, 0x00, 0x19, 0x00, 0xAD, 0xFF, 0x9D, 0x00,
+ 0x12, 0x00, 0x05, 0x00, 0x4C, 0x00, 0x12, 0x00,
+ 0x10, 0x00, 0x4C, 0x00, 0x12, 0x00, 0x1B, 0x00,
+ 0x4C, 0x00, 0x12, 0x00, 0x26, 0x00, 0x4C, 0x00,
+ 0x15, 0x00, 0x32, 0x00, 0x65, 0x00, 0x17, 0x00,
+ 0x3D, 0x00, 0x7B, 0x00, 0x19, 0x00, 0x48, 0x00,
+ 0x96, 0x00, 0x1B, 0x00, 0x53, 0x00, 0xB5, 0x00,
+ 0x12, 0x00, 0xFB, 0xFF, 0x4C, 0x00, 0x12, 0x00,
+ 0xF0, 0xFF, 0x4C, 0x00, 0x12, 0x00, 0xE5, 0xFF,
+ 0x4C, 0x00, 0x12, 0x00, 0xDA, 0xFF, 0x4C, 0x00,
+ 0x15, 0x00, 0xCE, 0xFF, 0x65, 0x00, 0x17, 0x00,
+ 0xC3, 0xFF, 0x7B, 0x00, 0x19, 0x00, 0xB8, 0xFF,
+ 0x96, 0x00, 0x1B, 0x00, 0xAD, 0xFF, 0xB5, 0x00,
+ 0x09, 0x00, 0x05, 0x00, 0xFB, 0xFF, 0x09, 0x00,
+ 0x10, 0x00, 0xFB, 0xFF, 0x09, 0x00, 0x1B, 0x00,
+ 0xFB, 0xFF, 0x09, 0x00, 0x26, 0x00, 0xFB, 0xFF,
+ 0x0C, 0x00, 0x32, 0x00, 0xFA, 0xFF, 0x0E, 0x00,
+ 0x3D, 0x00, 0xF8, 0xFF, 0x10, 0x00, 0x48, 0x00,
+ 0xF6, 0xFF, 0x12, 0x00, 0x53, 0x00, 0xF4, 0xFF,
+ 0x09, 0x00, 0xFB, 0xFF, 0xFB, 0xFF, 0x09, 0x00,
+ 0xF0, 0xFF, 0xFB, 0xFF, 0x09, 0x00, 0xE5, 0xFF,
+ 0xFB, 0xFF, 0x09, 0x00, 0xDA, 0xFF, 0xFB, 0xFF,
+ 0x0C, 0x00, 0xCE, 0xFF, 0xFA, 0xFF, 0x0E, 0x00,
+ 0xC3, 0xFF, 0xF8, 0xFF, 0x10, 0x00, 0xB8, 0xFF,
+ 0xF6, 0xFF, 0x12, 0x00, 0xAD, 0xFF, 0xF4, 0xFF,
+ 0x09, 0x00, 0x05, 0x00, 0xF1, 0xFF, 0x09, 0x00,
+ 0x10, 0x00, 0xF1, 0xFF, 0x09, 0x00, 0x1B, 0x00,
+ 0xF1, 0xFF, 0x09, 0x00, 0x26, 0x00, 0xF1, 0xFF,
+ 0x0C, 0x00, 0x32, 0x00, 0xED, 0xFF, 0x0E, 0x00,
+ 0x3D, 0x00, 0xE8, 0xFF, 0x10, 0x00, 0x48, 0x00,
+ 0xE2, 0xFF, 0x12, 0x00, 0x53, 0x00, 0xDC, 0xFF,
+ 0x09, 0x00, 0xFB, 0xFF, 0xF1, 0xFF, 0x09, 0x00,
+ 0xF0, 0xFF, 0xF1, 0xFF, 0x09, 0x00, 0xE5, 0xFF,
+ 0xF1, 0xFF, 0x09, 0x00, 0xDA, 0xFF, 0xF1, 0xFF,
+ 0x0C, 0x00, 0xCE, 0xFF, 0xED, 0xFF, 0x0E, 0x00,
+ 0xC3, 0xFF, 0xE8, 0xFF, 0x10, 0x00, 0xB8, 0xFF,
+ 0xE2, 0xFF, 0x12, 0x00, 0xAD, 0xFF, 0xDC, 0xFF,
+ 0x09, 0x00, 0x05, 0x00, 0xE7, 0xFF, 0x09, 0x00,
+ 0x10, 0x00, 0xE7, 0xFF, 0x09, 0x00, 0x1B, 0x00,
+ 0xE7, 0xFF, 0x09, 0x00, 0x26, 0x00, 0xE7, 0xFF,
+ 0x0C, 0x00, 0x32, 0x00, 0xDF, 0xFF, 0x0E, 0x00,
+ 0x3D, 0x00, 0xD7, 0xFF, 0x10, 0x00, 0x48, 0x00,
+ 0xCE, 0xFF, 0x12, 0x00, 0x53, 0x00, 0xC4, 0xFF,
+ 0x09, 0x00, 0xFB, 0xFF, 0xE7, 0xFF, 0x09, 0x00,
+ 0xF0, 0xFF, 0xE7, 0xFF, 0x09, 0x00, 0xE5, 0xFF,
+ 0xE7, 0xFF, 0x09, 0x00, 0xDA, 0xFF, 0xE7, 0xFF,
+ 0x0C, 0x00, 0xCE, 0xFF, 0xDF, 0xFF, 0x0E, 0x00,
+ 0xC3, 0xFF, 0xD7, 0xFF, 0x10, 0x00, 0xB8, 0xFF,
+ 0xCE, 0xFF, 0x12, 0x00, 0xAD, 0xFF, 0xC4, 0xFF,
+ 0x09, 0x00, 0x05, 0x00, 0xDD, 0xFF, 0x09, 0x00,
+ 0x10, 0x00, 0xDD, 0xFF, 0x09, 0x00, 0x1B, 0x00,
+ 0xDD, 0xFF, 0x09, 0x00, 0x26, 0x00, 0xDD, 0xFF,
+ 0x0C, 0x00, 0x32, 0x00, 0xD2, 0xFF, 0x0E, 0x00,
+ 0x3D, 0x00, 0xC7, 0xFF, 0x10, 0x00, 0x48, 0x00,
+ 0xBA, 0xFF, 0x12, 0x00, 0x53, 0x00, 0xAC, 0xFF,
+ 0x09, 0x00, 0xFB, 0xFF, 0xDD, 0xFF, 0x09, 0x00,
+ 0xF0, 0xFF, 0xDD, 0xFF, 0x09, 0x00, 0xE5, 0xFF,
+ 0xDD, 0xFF, 0x09, 0x00, 0xDA, 0xFF, 0xDD, 0xFF,
+ 0x0C, 0x00, 0xCE, 0xFF, 0xD2, 0xFF, 0x0E, 0x00,
+ 0xC3, 0xFF, 0xC7, 0xFF, 0x10, 0x00, 0xB8, 0xFF,
+ 0xBA, 0xFF, 0x12, 0x00, 0xAD, 0xFF, 0xAC, 0xFF,
+ 0x0C, 0x00, 0x05, 0x00, 0xD2, 0xFF, 0x0C, 0x00,
+ 0x10, 0x00, 0xD2, 0xFF, 0x0C, 0x00, 0x1B, 0x00,
+ 0xD2, 0xFF, 0x0C, 0x00, 0x26, 0x00, 0xD2, 0xFF,
+ 0x0F, 0x00, 0x32, 0x00, 0xC3, 0xFF, 0x11, 0x00,
+ 0x3D, 0x00, 0xB6, 0xFF, 0x13, 0x00, 0x48, 0x00,
+ 0xA6, 0xFF, 0x15, 0x00, 0x53, 0x00, 0x93, 0xFF,
+ 0x0C, 0x00, 0xFB, 0xFF, 0xD2, 0xFF, 0x0C, 0x00,
+ 0xF0, 0xFF, 0xD2, 0xFF, 0x0C, 0x00, 0xE5, 0xFF,
+ 0xD2, 0xFF, 0x0C, 0x00, 0xDA, 0xFF, 0xD2, 0xFF,
+ 0x0F, 0x00, 0xCE, 0xFF, 0xC3, 0xFF, 0x11, 0x00,
+ 0xC3, 0xFF, 0xB6, 0xFF, 0x13, 0x00, 0xB8, 0xFF,
+ 0xA6, 0xFF, 0x15, 0x00, 0xAD, 0xFF, 0x93, 0xFF,
+ 0x0E, 0x00, 0x05, 0x00, 0xC8, 0xFF, 0x0E, 0x00,
+ 0x10, 0x00, 0xC8, 0xFF, 0x0E, 0x00, 0x1B, 0x00,
+ 0xC8, 0xFF, 0x0E, 0x00, 0x26, 0x00, 0xC8, 0xFF,
+ 0x11, 0x00, 0x32, 0x00, 0xB6, 0xFF, 0x13, 0x00,
+ 0x3D, 0x00, 0xA6, 0xFF, 0x15, 0x00, 0x48, 0x00,
+ 0x92, 0xFF, 0x17, 0x00, 0x53, 0x00, 0x7B, 0xFF,
+ 0x0E, 0x00, 0xFB, 0xFF, 0xC8, 0xFF, 0x0E, 0x00,
+ 0xF0, 0xFF, 0xC8, 0xFF, 0x0E, 0x00, 0xE5, 0xFF,
+ 0xC8, 0xFF, 0x0E, 0x00, 0xDA, 0xFF, 0xC8, 0xFF,
+ 0x11, 0x00, 0xCE, 0xFF, 0xB6, 0xFF, 0x13, 0x00,
+ 0xC3, 0xFF, 0xA6, 0xFF, 0x15, 0x00, 0xB8, 0xFF,
+ 0x92, 0xFF, 0x17, 0x00, 0xAD, 0xFF, 0x7B, 0xFF,
+ 0x10, 0x00, 0x05, 0x00, 0xBE, 0xFF, 0x10, 0x00,
+ 0x10, 0x00, 0xBE, 0xFF, 0x10, 0x00, 0x1B, 0x00,
+ 0xBE, 0xFF, 0x10, 0x00, 0x26, 0x00, 0xBE, 0xFF,
+ 0x13, 0x00, 0x32, 0x00, 0xA8, 0xFF, 0x15, 0x00,
+ 0x3D, 0x00, 0x95, 0xFF, 0x17, 0x00, 0x48, 0x00,
+ 0x7E, 0xFF, 0x19, 0x00, 0x53, 0x00, 0x63, 0xFF,
+ 0x10, 0x00, 0xFB, 0xFF, 0xBE, 0xFF, 0x10, 0x00,
+ 0xF0, 0xFF, 0xBE, 0xFF, 0x10, 0x00, 0xE5, 0xFF,
+ 0xBE, 0xFF, 0x10, 0x00, 0xDA, 0xFF, 0xBE, 0xFF,
+ 0x13, 0x00, 0xCE, 0xFF, 0xA8, 0xFF, 0x15, 0x00,
+ 0xC3, 0xFF, 0x95, 0xFF, 0x17, 0x00, 0xB8, 0xFF,
+ 0x7E, 0xFF, 0x19, 0x00, 0xAD, 0xFF, 0x63, 0xFF,
+ 0x12, 0x00, 0x05, 0x00, 0xB4, 0xFF, 0x12, 0x00,
+ 0x10, 0x00, 0xB4, 0xFF, 0x12, 0x00, 0x1B, 0x00,
+ 0xB4, 0xFF, 0x12, 0x00, 0x26, 0x00, 0xB4, 0xFF,
+ 0x15, 0x00, 0x32, 0x00, 0x9B, 0xFF, 0x17, 0x00,
+ 0x3D, 0x00, 0x85, 0xFF, 0x19, 0x00, 0x48, 0x00,
+ 0x6A, 0xFF, 0x1B, 0x00, 0x53, 0x00, 0x4B, 0xFF,
+ 0x12, 0x00, 0xFB, 0xFF, 0xB4, 0xFF, 0x12, 0x00,
+ 0xF0, 0xFF, 0xB4, 0xFF, 0x12, 0x00, 0xE5, 0xFF,
+ 0xB4, 0xFF, 0x12, 0x00, 0xDA, 0xFF, 0xB4, 0xFF,
+ 0x15, 0x00, 0xCE, 0xFF, 0x9B, 0xFF, 0x17, 0x00,
+ 0xC3, 0xFF, 0x85, 0xFF, 0x19, 0x00, 0xB8, 0xFF,
+ 0x6A, 0xFF, 0x1B, 0x00, 0xAD, 0xFF, 0x4B, 0xFF,
+ 0x0A, 0x00, 0x06, 0x00, 0x05, 0x00, 0x0A, 0x00,
+ 0x12, 0x00, 0x05, 0x00, 0x0A, 0x00, 0x1F, 0x00,
+ 0x05, 0x00, 0x0A, 0x00, 0x2B, 0x00, 0x05, 0x00,
+ 0x0D, 0x00, 0x38, 0x00, 0x07, 0x00, 0x0F, 0x00,
+ 0x44, 0x00, 0x09, 0x00, 0x11, 0x00, 0x51, 0x00,
+ 0x0B, 0x00, 0x13, 0x00, 0x5D, 0x00, 0x0D, 0x00,
+ 0x0A, 0x00, 0xFA, 0xFF, 0x05, 0x00, 0x0A, 0x00,
+ 0xEE, 0xFF, 0x05, 0x00, 0x0A, 0x00, 0xE1, 0xFF,
+ 0x05, 0x00, 0x0A, 0x00, 0xD5, 0xFF, 0x05, 0x00,
+ 0x0D, 0x00, 0xC8, 0xFF, 0x07, 0x00, 0x0F, 0x00,
+ 0xBC, 0xFF, 0x09, 0x00, 0x11, 0x00, 0xAF, 0xFF,
+ 0x0B, 0x00, 0x13, 0x00, 0xA3, 0xFF, 0x0D, 0x00,
+ 0x0A, 0x00, 0x06, 0x00, 0x10, 0x00, 0x0A, 0x00,
+ 0x12, 0x00, 0x10, 0x00, 0x0A, 0x00, 0x1F, 0x00,
+ 0x10, 0x00, 0x0A, 0x00, 0x2B, 0x00, 0x10, 0x00,
+ 0x0D, 0x00, 0x38, 0x00, 0x16, 0x00, 0x0F, 0x00,
+ 0x44, 0x00, 0x1B, 0x00, 0x11, 0x00, 0x51, 0x00,
+ 0x21, 0x00, 0x13, 0x00, 0x5D, 0x00, 0x27, 0x00,
+ 0x0A, 0x00, 0xFA, 0xFF, 0x10, 0x00, 0x0A, 0x00,
+ 0xEE, 0xFF, 0x10, 0x00, 0x0A, 0x00, 0xE1, 0xFF,
+ 0x10, 0x00, 0x0A, 0x00, 0xD5, 0xFF, 0x10, 0x00,
+ 0x0D, 0x00, 0xC8, 0xFF, 0x16, 0x00, 0x0F, 0x00,
+ 0xBC, 0xFF, 0x1B, 0x00, 0x11, 0x00, 0xAF, 0xFF,
+ 0x21, 0x00, 0x13, 0x00, 0xA3, 0xFF, 0x27, 0x00,
+ 0x0A, 0x00, 0x06, 0x00, 0x1B, 0x00, 0x0A, 0x00,
+ 0x12, 0x00, 0x1B, 0x00, 0x0A, 0x00, 0x1F, 0x00,
+ 0x1B, 0x00, 0x0A, 0x00, 0x2B, 0x00, 0x1B, 0x00,
+ 0x0D, 0x00, 0x38, 0x00, 0x25, 0x00, 0x0F, 0x00,
+ 0x44, 0x00, 0x2D, 0x00, 0x11, 0x00, 0x51, 0x00,
+ 0x37, 0x00, 0x13, 0x00, 0x5D, 0x00, 0x42, 0x00,
+ 0x0A, 0x00, 0xFA, 0xFF, 0x1B, 0x00, 0x0A, 0x00,
+ 0xEE, 0xFF, 0x1B, 0x00, 0x0A, 0x00, 0xE1, 0xFF,
+ 0x1B, 0x00, 0x0A, 0x00, 0xD5, 0xFF, 0x1B, 0x00,
+ 0x0D, 0x00, 0xC8, 0xFF, 0x25, 0x00, 0x0F, 0x00,
+ 0xBC, 0xFF, 0x2D, 0x00, 0x11, 0x00, 0xAF, 0xFF,
+ 0x37, 0x00, 0x13, 0x00, 0xA3, 0xFF, 0x42, 0x00,
+ 0x0A, 0x00, 0x06, 0x00, 0x26, 0x00, 0x0A, 0x00,
+ 0x12, 0x00, 0x26, 0x00, 0x0A, 0x00, 0x1F, 0x00,
+ 0x26, 0x00, 0x0A, 0x00, 0x2B, 0x00, 0x26, 0x00,
+ 0x0D, 0x00, 0x38, 0x00, 0x34, 0x00, 0x0F, 0x00,
+ 0x44, 0x00, 0x3F, 0x00, 0x11, 0x00, 0x51, 0x00,
+ 0x4D, 0x00, 0x13, 0x00, 0x5D, 0x00, 0x5C, 0x00,
+ 0x0A, 0x00, 0xFA, 0xFF, 0x26, 0x00, 0x0A, 0x00,
+ 0xEE, 0xFF, 0x26, 0x00, 0x0A, 0x00, 0xE1, 0xFF,
+ 0x26, 0x00, 0x0A, 0x00, 0xD5, 0xFF, 0x26, 0x00,
+ 0x0D, 0x00, 0xC8, 0xFF, 0x34, 0x00, 0x0F, 0x00,
+ 0xBC, 0xFF, 0x3F, 0x00, 0x11, 0x00, 0xAF, 0xFF,
+ 0x4D, 0x00, 0x13, 0x00, 0xA3, 0xFF, 0x5C, 0x00,
+ 0x0D, 0x00, 0x06, 0x00, 0x32, 0x00, 0x0D, 0x00,
+ 0x12, 0x00, 0x32, 0x00, 0x0D, 0x00, 0x1F, 0x00,
+ 0x32, 0x00, 0x0D, 0x00, 0x2B, 0x00, 0x32, 0x00,
+ 0x10, 0x00, 0x38, 0x00, 0x43, 0x00, 0x12, 0x00,
+ 0x44, 0x00, 0x52, 0x00, 0x14, 0x00, 0x51, 0x00,
+ 0x63, 0x00, 0x16, 0x00, 0x5D, 0x00, 0x78, 0x00,
+ 0x0D, 0x00, 0xFA, 0xFF, 0x32, 0x00, 0x0D, 0x00,
+ 0xEE, 0xFF, 0x32, 0x00, 0x0D, 0x00, 0xE1, 0xFF,
+ 0x32, 0x00, 0x0D, 0x00, 0xD5, 0xFF, 0x32, 0x00,
+ 0x10, 0x00, 0xC8, 0xFF, 0x43, 0x00, 0x12, 0x00,
+ 0xBC, 0xFF, 0x52, 0x00, 0x14, 0x00, 0xAF, 0xFF,
+ 0x63, 0x00, 0x16, 0x00, 0xA3, 0xFF, 0x78, 0x00,
+ 0x0F, 0x00, 0x06, 0x00, 0x3D, 0x00, 0x0F, 0x00,
+ 0x12, 0x00, 0x3D, 0x00, 0x0F, 0x00, 0x1F, 0x00,
+ 0x3D, 0x00, 0x0F, 0x00, 0x2B, 0x00, 0x3D, 0x00,
+ 0x12, 0x00, 0x38, 0x00, 0x52, 0x00, 0x14, 0x00,
+ 0x44, 0x00, 0x64, 0x00, 0x16, 0x00, 0x51, 0x00,
+ 0x79, 0x00, 0x18, 0x00, 0x5D, 0x00, 0x92, 0x00,
+ 0x0F, 0x00, 0xFA, 0xFF, 0x3D, 0x00, 0x0F, 0x00,
+ 0xEE, 0xFF, 0x3D, 0x00, 0x0F, 0x00, 0xE1, 0xFF,
+ 0x3D, 0x00, 0x0F, 0x00, 0xD5, 0xFF, 0x3D, 0x00,
+ 0x12, 0x00, 0xC8, 0xFF, 0x52, 0x00, 0x14, 0x00,
+ 0xBC, 0xFF, 0x64, 0x00, 0x16, 0x00, 0xAF, 0xFF,
+ 0x79, 0x00, 0x18, 0x00, 0xA3, 0xFF, 0x92, 0x00,
+ 0x11, 0x00, 0x06, 0x00, 0x48, 0x00, 0x11, 0x00,
+ 0x12, 0x00, 0x48, 0x00, 0x11, 0x00, 0x1F, 0x00,
+ 0x48, 0x00, 0x11, 0x00, 0x2B, 0x00, 0x48, 0x00,
+ 0x14, 0x00, 0x38, 0x00, 0x61, 0x00, 0x16, 0x00,
+ 0x44, 0x00, 0x76, 0x00, 0x18, 0x00, 0x51, 0x00,
+ 0x8F, 0x00, 0x1A, 0x00, 0x5D, 0x00, 0xAD, 0x00,
+ 0x11, 0x00, 0xFA, 0xFF, 0x48, 0x00, 0x11, 0x00,
+ 0xEE, 0xFF, 0x48, 0x00, 0x11, 0x00, 0xE1, 0xFF,
+ 0x48, 0x00, 0x11, 0x00, 0xD5, 0xFF, 0x48, 0x00,
+ 0x14, 0x00, 0xC8, 0xFF, 0x61, 0x00, 0x16, 0x00,
+ 0xBC, 0xFF, 0x76, 0x00, 0x18, 0x00, 0xAF, 0xFF,
+ 0x8F, 0x00, 0x1A, 0x00, 0xA3, 0xFF, 0xAD, 0x00,
+ 0x13, 0x00, 0x06, 0x00, 0x53, 0x00, 0x13, 0x00,
+ 0x12, 0x00, 0x53, 0x00, 0x13, 0x00, 0x1F, 0x00,
+ 0x53, 0x00, 0x13, 0x00, 0x2B, 0x00, 0x53, 0x00,
+ 0x16, 0x00, 0x38, 0x00, 0x70, 0x00, 0x18, 0x00,
+ 0x44, 0x00, 0x88, 0x00, 0x1A, 0x00, 0x51, 0x00,
+ 0xA5, 0x00, 0x1C, 0x00, 0x5D, 0x00, 0xC7, 0x00,
+ 0x13, 0x00, 0xFA, 0xFF, 0x53, 0x00, 0x13, 0x00,
+ 0xEE, 0xFF, 0x53, 0x00, 0x13, 0x00, 0xE1, 0xFF,
+ 0x53, 0x00, 0x13, 0x00, 0xD5, 0xFF, 0x53, 0x00,
+ 0x16, 0x00, 0xC8, 0xFF, 0x70, 0x00, 0x18, 0x00,
+ 0xBC, 0xFF, 0x88, 0x00, 0x1A, 0x00, 0xAF, 0xFF,
+ 0xA5, 0x00, 0x1C, 0x00, 0xA3, 0xFF, 0xC7, 0x00,
+ 0x0A, 0x00, 0x06, 0x00, 0xFB, 0xFF, 0x0A, 0x00,
+ 0x12, 0x00, 0xFB, 0xFF, 0x0A, 0x00, 0x1F, 0x00,
+ 0xFB, 0xFF, 0x0A, 0x00, 0x2B, 0x00, 0xFB, 0xFF,
+ 0x0D, 0x00, 0x38, 0x00, 0xF9, 0xFF, 0x0F, 0x00,
+ 0x44, 0x00, 0xF7, 0xFF, 0x11, 0x00, 0x51, 0x00,
+ 0xF5, 0xFF, 0x13, 0x00, 0x5D, 0x00, 0xF3, 0xFF,
+ 0x0A, 0x00, 0xFA, 0xFF, 0xFB, 0xFF, 0x0A, 0x00,
+ 0xEE, 0xFF, 0xFB, 0xFF, 0x0A, 0x00, 0xE1, 0xFF,
+ 0xFB, 0xFF, 0x0A, 0x00, 0xD5, 0xFF, 0xFB, 0xFF,
+ 0x0D, 0x00, 0xC8, 0xFF, 0xF9, 0xFF, 0x0F, 0x00,
+ 0xBC, 0xFF, 0xF7, 0xFF, 0x11, 0x00, 0xAF, 0xFF,
+ 0xF5, 0xFF, 0x13, 0x00, 0xA3, 0xFF, 0xF3, 0xFF,
+ 0x0A, 0x00, 0x06, 0x00, 0xF0, 0xFF, 0x0A, 0x00,
+ 0x12, 0x00, 0xF0, 0xFF, 0x0A, 0x00, 0x1F, 0x00,
+ 0xF0, 0xFF, 0x0A, 0x00, 0x2B, 0x00, 0xF0, 0xFF,
+ 0x0D, 0x00, 0x38, 0x00, 0xEA, 0xFF, 0x0F, 0x00,
+ 0x44, 0x00, 0xE5, 0xFF, 0x11, 0x00, 0x51, 0x00,
+ 0xDF, 0xFF, 0x13, 0x00, 0x5D, 0x00, 0xD9, 0xFF,
+ 0x0A, 0x00, 0xFA, 0xFF, 0xF0, 0xFF, 0x0A, 0x00,
+ 0xEE, 0xFF, 0xF0, 0xFF, 0x0A, 0x00, 0xE1, 0xFF,
+ 0xF0, 0xFF, 0x0A, 0x00, 0xD5, 0xFF, 0xF0, 0xFF,
+ 0x0D, 0x00, 0xC8, 0xFF, 0xEA, 0xFF, 0x0F, 0x00,
+ 0xBC, 0xFF, 0xE5, 0xFF, 0x11, 0x00, 0xAF, 0xFF,
+ 0xDF, 0xFF, 0x13, 0x00, 0xA3, 0xFF, 0xD9, 0xFF,
+ 0x0A, 0x00, 0x06, 0x00, 0xE5, 0xFF, 0x0A, 0x00,
+ 0x12, 0x00, 0xE5, 0xFF, 0x0A, 0x00, 0x1F, 0x00,
+ 0xE5, 0xFF, 0x0A, 0x00, 0x2B, 0x00, 0xE5, 0xFF,
+ 0x0D, 0x00, 0x38, 0x00, 0xDB, 0xFF, 0x0F, 0x00,
+ 0x44, 0x00, 0xD3, 0xFF, 0x11, 0x00, 0x51, 0x00,
+ 0xC9, 0xFF, 0x13, 0x00, 0x5D, 0x00, 0xBE, 0xFF,
+ 0x0A, 0x00, 0xFA, 0xFF, 0xE5, 0xFF, 0x0A, 0x00,
+ 0xEE, 0xFF, 0xE5, 0xFF, 0x0A, 0x00, 0xE1, 0xFF,
+ 0xE5, 0xFF, 0x0A, 0x00, 0xD5, 0xFF, 0xE5, 0xFF,
+ 0x0D, 0x00, 0xC8, 0xFF, 0xDB, 0xFF, 0x0F, 0x00,
+ 0xBC, 0xFF, 0xD3, 0xFF, 0x11, 0x00, 0xAF, 0xFF,
+ 0xC9, 0xFF, 0x13, 0x00, 0xA3, 0xFF, 0xBE, 0xFF,
+ 0x0A, 0x00, 0x06, 0x00, 0xDA, 0xFF, 0x0A, 0x00,
+ 0x12, 0x00, 0xDA, 0xFF, 0x0A, 0x00, 0x1F, 0x00,
+ 0xDA, 0xFF, 0x0A, 0x00, 0x2B, 0x00, 0xDA, 0xFF,
+ 0x0D, 0x00, 0x38, 0x00, 0xCC, 0xFF, 0x0F, 0x00,
+ 0x44, 0x00, 0xC1, 0xFF, 0x11, 0x00, 0x51, 0x00,
+ 0xB3, 0xFF, 0x13, 0x00, 0x5D, 0x00, 0xA4, 0xFF,
+ 0x0A, 0x00, 0xFA, 0xFF, 0xDA, 0xFF, 0x0A, 0x00,
+ 0xEE, 0xFF, 0xDA, 0xFF, 0x0A, 0x00, 0xE1, 0xFF,
+ 0xDA, 0xFF, 0x0A, 0x00, 0xD5, 0xFF, 0xDA, 0xFF,
+ 0x0D, 0x00, 0xC8, 0xFF, 0xCC, 0xFF, 0x0F, 0x00,
+ 0xBC, 0xFF, 0xC1, 0xFF, 0x11, 0x00, 0xAF, 0xFF,
+ 0xB3, 0xFF, 0x13, 0x00, 0xA3, 0xFF, 0xA4, 0xFF,
+ 0x0D, 0x00, 0x06, 0x00, 0xCE, 0xFF, 0x0D, 0x00,
+ 0x12, 0x00, 0xCE, 0xFF, 0x0D, 0x00, 0x1F, 0x00,
+ 0xCE, 0xFF, 0x0D, 0x00, 0x2B, 0x00, 0xCE, 0xFF,
+ 0x10, 0x00, 0x38, 0x00, 0xBD, 0xFF, 0x12, 0x00,
+ 0x44, 0x00, 0xAE, 0xFF, 0x14, 0x00, 0x51, 0x00,
+ 0x9D, 0xFF, 0x16, 0x00, 0x5D, 0x00, 0x88, 0xFF,
+ 0x0D, 0x00, 0xFA, 0xFF, 0xCE, 0xFF, 0x0D, 0x00,
+ 0xEE, 0xFF, 0xCE, 0xFF, 0x0D, 0x00, 0xE1, 0xFF,
+ 0xCE, 0xFF, 0x0D, 0x00, 0xD5, 0xFF, 0xCE, 0xFF,
+ 0x10, 0x00, 0xC8, 0xFF, 0xBD, 0xFF, 0x12, 0x00,
+ 0xBC, 0xFF, 0xAE, 0xFF, 0x14, 0x00, 0xAF, 0xFF,
+ 0x9D, 0xFF, 0x16, 0x00, 0xA3, 0xFF, 0x88, 0xFF,
+ 0x0F, 0x00, 0x06, 0x00, 0xC3, 0xFF, 0x0F, 0x00,
+ 0x12, 0x00, 0xC3, 0xFF, 0x0F, 0x00, 0x1F, 0x00,
+ 0xC3, 0xFF, 0x0F, 0x00, 0x2B, 0x00, 0xC3, 0xFF,
+ 0x12, 0x00, 0x38, 0x00, 0xAE, 0xFF, 0x14, 0x00,
+ 0x44, 0x00, 0x9C, 0xFF, 0x16, 0x00, 0x51, 0x00,
+ 0x87, 0xFF, 0x18, 0x00, 0x5D, 0x00, 0x6E, 0xFF,
+ 0x0F, 0x00, 0xFA, 0xFF, 0xC3, 0xFF, 0x0F, 0x00,
+ 0xEE, 0xFF, 0xC3, 0xFF, 0x0F, 0x00, 0xE1, 0xFF,
+ 0xC3, 0xFF, 0x0F, 0x00, 0xD5, 0xFF, 0xC3, 0xFF,
+ 0x12, 0x00, 0xC8, 0xFF, 0xAE, 0xFF, 0x14, 0x00,
+ 0xBC, 0xFF, 0x9C, 0xFF, 0x16, 0x00, 0xAF, 0xFF,
+ 0x87, 0xFF, 0x18, 0x00, 0xA3, 0xFF, 0x6E, 0xFF,
+ 0x11, 0x00, 0x06, 0x00, 0xB8, 0xFF, 0x11, 0x00,
+ 0x12, 0x00, 0xB8, 0xFF, 0x11, 0x00, 0x1F, 0x00,
+ 0xB8, 0xFF, 0x11, 0x00, 0x2B, 0x00, 0xB8, 0xFF,
+ 0x14, 0x00, 0x38, 0x00, 0x9F, 0xFF, 0x16, 0x00,
+ 0x44, 0x00, 0x8A, 0xFF, 0x18, 0x00, 0x51, 0x00,
+ 0x71, 0xFF, 0x1A, 0x00, 0x5D, 0x00, 0x53, 0xFF,
+ 0x11, 0x00, 0xFA, 0xFF, 0xB8, 0xFF, 0x11, 0x00,
+ 0xEE, 0xFF, 0xB8, 0xFF, 0x11, 0x00, 0xE1, 0xFF,
+ 0xB8, 0xFF, 0x11, 0x00, 0xD5, 0xFF, 0xB8, 0xFF,
+ 0x14, 0x00, 0xC8, 0xFF, 0x9F, 0xFF, 0x16, 0x00,
+ 0xBC, 0xFF, 0x8A, 0xFF, 0x18, 0x00, 0xAF, 0xFF,
+ 0x71, 0xFF, 0x1A, 0x00, 0xA3, 0xFF, 0x53, 0xFF,
+ 0x13, 0x00, 0x06, 0x00, 0xAD, 0xFF, 0x13, 0x00,
+ 0x12, 0x00, 0xAD, 0xFF, 0x13, 0x00, 0x1F, 0x00,
+ 0xAD, 0xFF, 0x13, 0x00, 0x2B, 0x00, 0xAD, 0xFF,
+ 0x16, 0x00, 0x38, 0x00, 0x90, 0xFF, 0x18, 0x00,
+ 0x44, 0x00, 0x78, 0xFF, 0x1A, 0x00, 0x51, 0x00,
+ 0x5B, 0xFF, 0x1C, 0x00, 0x5D, 0x00, 0x39, 0xFF,
+ 0x13, 0x00, 0xFA, 0xFF, 0xAD, 0xFF, 0x13, 0x00,
+ 0xEE, 0xFF, 0xAD, 0xFF, 0x13, 0x00, 0xE1, 0xFF,
+ 0xAD, 0xFF, 0x13, 0x00, 0xD5, 0xFF, 0xAD, 0xFF,
+ 0x16, 0x00, 0xC8, 0xFF, 0x90, 0xFF, 0x18, 0x00,
+ 0xBC, 0xFF, 0x78, 0xFF, 0x1A, 0x00, 0xAF, 0xFF,
+ 0x5B, 0xFF, 0x1C, 0x00, 0xA3, 0xFF, 0x39, 0xFF,
+ 0x0B, 0x00, 0x06, 0x00, 0x06, 0x00, 0x0B, 0x00,
+ 0x13, 0x00, 0x06, 0x00, 0x0B, 0x00, 0x21, 0x00,
+ 0x06, 0x00, 0x0B, 0x00, 0x2E, 0x00, 0x06, 0x00,
+ 0x0E, 0x00, 0x3D, 0x00, 0x08, 0x00, 0x10, 0x00,
+ 0x4A, 0x00, 0x0A, 0x00, 0x12, 0x00, 0x58, 0x00,
+ 0x0C, 0x00, 0x14, 0x00, 0x65, 0x00, 0x0E, 0x00,
+ 0x0B, 0x00, 0xFA, 0xFF, 0x06, 0x00, 0x0B, 0x00,
+ 0xED, 0xFF, 0x06, 0x00, 0x0B, 0x00, 0xDF, 0xFF,
+ 0x06, 0x00, 0x0B, 0x00, 0xD2, 0xFF, 0x06, 0x00,
+ 0x0E, 0x00, 0xC3, 0xFF, 0x08, 0x00, 0x10, 0x00,
+ 0xB6, 0xFF, 0x0A, 0x00, 0x12, 0x00, 0xA8, 0xFF,
+ 0x0C, 0x00, 0x14, 0x00, 0x9B, 0xFF, 0x0E, 0x00,
+ 0x0B, 0x00, 0x06, 0x00, 0x12, 0x00, 0x0B, 0x00,
+ 0x13, 0x00, 0x12, 0x00, 0x0B, 0x00, 0x21, 0x00,
+ 0x12, 0x00, 0x0B, 0x00, 0x2E, 0x00, 0x12, 0x00,
+ 0x0E, 0x00, 0x3D, 0x00, 0x18, 0x00, 0x10, 0x00,
+ 0x4A, 0x00, 0x1E, 0x00, 0x12, 0x00, 0x58, 0x00,
+ 0x24, 0x00, 0x14, 0x00, 0x65, 0x00, 0x2B, 0x00,
+ 0x0B, 0x00, 0xFA, 0xFF, 0x12, 0x00, 0x0B, 0x00,
+ 0xED, 0xFF, 0x12, 0x00, 0x0B, 0x00, 0xDF, 0xFF,
+ 0x12, 0x00, 0x0B, 0x00, 0xD2, 0xFF, 0x12, 0x00,
+ 0x0E, 0x00, 0xC3, 0xFF, 0x18, 0x00, 0x10, 0x00,
+ 0xB6, 0xFF, 0x1E, 0x00, 0x12, 0x00, 0xA8, 0xFF,
+ 0x24, 0x00, 0x14, 0x00, 0x9B, 0xFF, 0x2B, 0x00,
+ 0x0B, 0x00, 0x06, 0x00, 0x1F, 0x00, 0x0B, 0x00,
+ 0x13, 0x00, 0x1F, 0x00, 0x0B, 0x00, 0x21, 0x00,
+ 0x1F, 0x00, 0x0B, 0x00, 0x2E, 0x00, 0x1F, 0x00,
+ 0x0E, 0x00, 0x3D, 0x00, 0x29, 0x00, 0x10, 0x00,
+ 0x4A, 0x00, 0x32, 0x00, 0x12, 0x00, 0x58, 0x00,
+ 0x3C, 0x00, 0x14, 0x00, 0x65, 0x00, 0x49, 0x00,
+ 0x0B, 0x00, 0xFA, 0xFF, 0x1F, 0x00, 0x0B, 0x00,
+ 0xED, 0xFF, 0x1F, 0x00, 0x0B, 0x00, 0xDF, 0xFF,
+ 0x1F, 0x00, 0x0B, 0x00, 0xD2, 0xFF, 0x1F, 0x00,
+ 0x0E, 0x00, 0xC3, 0xFF, 0x29, 0x00, 0x10, 0x00,
+ 0xB6, 0xFF, 0x32, 0x00, 0x12, 0x00, 0xA8, 0xFF,
+ 0x3C, 0x00, 0x14, 0x00, 0x9B, 0xFF, 0x49, 0x00,
+ 0x0B, 0x00, 0x06, 0x00, 0x2B, 0x00, 0x0B, 0x00,
+ 0x13, 0x00, 0x2B, 0x00, 0x0B, 0x00, 0x21, 0x00,
+ 0x2B, 0x00, 0x0B, 0x00, 0x2E, 0x00, 0x2B, 0x00,
+ 0x0E, 0x00, 0x3D, 0x00, 0x39, 0x00, 0x10, 0x00,
+ 0x4A, 0x00, 0x46, 0x00, 0x12, 0x00, 0x58, 0x00,
+ 0x54, 0x00, 0x14, 0x00, 0x65, 0x00, 0x66, 0x00,
+ 0x0B, 0x00, 0xFA, 0xFF, 0x2B, 0x00, 0x0B, 0x00,
+ 0xED, 0xFF, 0x2B, 0x00, 0x0B, 0x00, 0xDF, 0xFF,
+ 0x2B, 0x00, 0x0B, 0x00, 0xD2, 0xFF, 0x2B, 0x00,
+ 0x0E, 0x00, 0xC3, 0xFF, 0x39, 0x00, 0x10, 0x00,
+ 0xB6, 0xFF, 0x46, 0x00, 0x12, 0x00, 0xA8, 0xFF,
+ 0x54, 0x00, 0x14, 0x00, 0x9B, 0xFF, 0x66, 0x00,
+ 0x0E, 0x00, 0x06, 0x00, 0x38, 0x00, 0x0E, 0x00,
+ 0x13, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x21, 0x00,
+ 0x38, 0x00, 0x0E, 0x00, 0x2E, 0x00, 0x38, 0x00,
+ 0x11, 0x00, 0x3D, 0x00, 0x4A, 0x00, 0x13, 0x00,
+ 0x4A, 0x00, 0x5A, 0x00, 0x15, 0x00, 0x58, 0x00,
+ 0x6D, 0x00, 0x17, 0x00, 0x65, 0x00, 0x84, 0x00,
+ 0x0E, 0x00, 0xFA, 0xFF, 0x38, 0x00, 0x0E, 0x00,
+ 0xED, 0xFF, 0x38, 0x00, 0x0E, 0x00, 0xDF, 0xFF,
+ 0x38, 0x00, 0x0E, 0x00, 0xD2, 0xFF, 0x38, 0x00,
+ 0x11, 0x00, 0xC3, 0xFF, 0x4A, 0x00, 0x13, 0x00,
+ 0xB6, 0xFF, 0x5A, 0x00, 0x15, 0x00, 0xA8, 0xFF,
+ 0x6D, 0x00, 0x17, 0x00, 0x9B, 0xFF, 0x84, 0x00,
+ 0x10, 0x00, 0x06, 0x00, 0x44, 0x00, 0x10, 0x00,
+ 0x13, 0x00, 0x44, 0x00, 0x10, 0x00, 0x21, 0x00,
+ 0x44, 0x00, 0x10, 0x00, 0x2E, 0x00, 0x44, 0x00,
+ 0x13, 0x00, 0x3D, 0x00, 0x5A, 0x00, 0x15, 0x00,
+ 0x4A, 0x00, 0x6E, 0x00, 0x17, 0x00, 0x58, 0x00,
+ 0x85, 0x00, 0x19, 0x00, 0x65, 0x00, 0xA1, 0x00,
+ 0x10, 0x00, 0xFA, 0xFF, 0x44, 0x00, 0x10, 0x00,
+ 0xED, 0xFF, 0x44, 0x00, 0x10, 0x00, 0xDF, 0xFF,
+ 0x44, 0x00, 0x10, 0x00, 0xD2, 0xFF, 0x44, 0x00,
+ 0x13, 0x00, 0xC3, 0xFF, 0x5A, 0x00, 0x15, 0x00,
+ 0xB6, 0xFF, 0x6E, 0x00, 0x17, 0x00, 0xA8, 0xFF,
+ 0x85, 0x00, 0x19, 0x00, 0x9B, 0xFF, 0xA1, 0x00,
+ 0x12, 0x00, 0x06, 0x00, 0x51, 0x00, 0x12, 0x00,
+ 0x13, 0x00, 0x51, 0x00, 0x12, 0x00, 0x21, 0x00,
+ 0x51, 0x00, 0x12, 0x00, 0x2E, 0x00, 0x51, 0x00,
+ 0x15, 0x00, 0x3D, 0x00, 0x6B, 0x00, 0x17, 0x00,
+ 0x4A, 0x00, 0x82, 0x00, 0x19, 0x00, 0x58, 0x00,
+ 0x9D, 0x00, 0x1B, 0x00, 0x65, 0x00, 0xBF, 0x00,
+ 0x12, 0x00, 0xFA, 0xFF, 0x51, 0x00, 0x12, 0x00,
+ 0xED, 0xFF, 0x51, 0x00, 0x12, 0x00, 0xDF, 0xFF,
+ 0x51, 0x00, 0x12, 0x00, 0xD2, 0xFF, 0x51, 0x00,
+ 0x15, 0x00, 0xC3, 0xFF, 0x6B, 0x00, 0x17, 0x00,
+ 0xB6, 0xFF, 0x82, 0x00, 0x19, 0x00, 0xA8, 0xFF,
+ 0x9D, 0x00, 0x1B, 0x00, 0x9B, 0xFF, 0xBF, 0x00,
+ 0x14, 0x00, 0x06, 0x00, 0x5D, 0x00, 0x14, 0x00,
+ 0x13, 0x00, 0x5D, 0x00, 0x14, 0x00, 0x21, 0x00,
+ 0x5D, 0x00, 0x14, 0x00, 0x2E, 0x00, 0x5D, 0x00,
+ 0x17, 0x00, 0x3D, 0x00, 0x7B, 0x00, 0x19, 0x00,
+ 0x4A, 0x00, 0x96, 0x00, 0x1B, 0x00, 0x58, 0x00,
+ 0xB5, 0x00, 0x1D, 0x00, 0x65, 0x00, 0xDC, 0x00,
+ 0x14, 0x00, 0xFA, 0xFF, 0x5D, 0x00, 0x14, 0x00,
+ 0xED, 0xFF, 0x5D, 0x00, 0x14, 0x00, 0xDF, 0xFF,
+ 0x5D, 0x00, 0x14, 0x00, 0xD2, 0xFF, 0x5D, 0x00,
+ 0x17, 0x00, 0xC3, 0xFF, 0x7B, 0x00, 0x19, 0x00,
+ 0xB6, 0xFF, 0x96, 0x00, 0x1B, 0x00, 0xA8, 0xFF,
+ 0xB5, 0x00, 0x1D, 0x00, 0x9B, 0xFF, 0xDC, 0x00,
+ 0x0B, 0x00, 0x06, 0x00, 0xFA, 0xFF, 0x0B, 0x00,
+ 0x13, 0x00, 0xFA, 0xFF, 0x0B, 0x00, 0x21, 0x00,
+ 0xFA, 0xFF, 0x0B, 0x00, 0x2E, 0x00, 0xFA, 0xFF,
+ 0x0E, 0x00, 0x3D, 0x00, 0xF8, 0xFF, 0x10, 0x00,
+ 0x4A, 0x00, 0xF6, 0xFF, 0x12, 0x00, 0x58, 0x00,
+ 0xF4, 0xFF, 0x14, 0x00, 0x65, 0x00, 0xF2, 0xFF,
+ 0x0B, 0x00, 0xFA, 0xFF, 0xFA, 0xFF, 0x0B, 0x00,
+ 0xED, 0xFF, 0xFA, 0xFF, 0x0B, 0x00, 0xDF, 0xFF,
+ 0xFA, 0xFF, 0x0B, 0x00, 0xD2, 0xFF, 0xFA, 0xFF,
+ 0x0E, 0x00, 0xC3, 0xFF, 0xF8, 0xFF, 0x10, 0x00,
+ 0xB6, 0xFF, 0xF6, 0xFF, 0x12, 0x00, 0xA8, 0xFF,
+ 0xF4, 0xFF, 0x14, 0x00, 0x9B, 0xFF, 0xF2, 0xFF,
+ 0x0B, 0x00, 0x06, 0x00, 0xEE, 0xFF, 0x0B, 0x00,
+ 0x13, 0x00, 0xEE, 0xFF, 0x0B, 0x00, 0x21, 0x00,
+ 0xEE, 0xFF, 0x0B, 0x00, 0x2E, 0x00, 0xEE, 0xFF,
+ 0x0E, 0x00, 0x3D, 0x00, 0xE8, 0xFF, 0x10, 0x00,
+ 0x4A, 0x00, 0xE2, 0xFF, 0x12, 0x00, 0x58, 0x00,
+ 0xDC, 0xFF, 0x14, 0x00, 0x65, 0x00, 0xD5, 0xFF,
+ 0x0B, 0x00, 0xFA, 0xFF, 0xEE, 0xFF, 0x0B, 0x00,
+ 0xED, 0xFF, 0xEE, 0xFF, 0x0B, 0x00, 0xDF, 0xFF,
+ 0xEE, 0xFF, 0x0B, 0x00, 0xD2, 0xFF, 0xEE, 0xFF,
+ 0x0E, 0x00, 0xC3, 0xFF, 0xE8, 0xFF, 0x10, 0x00,
+ 0xB6, 0xFF, 0xE2, 0xFF, 0x12, 0x00, 0xA8, 0xFF,
+ 0xDC, 0xFF, 0x14, 0x00, 0x9B, 0xFF, 0xD5, 0xFF,
+ 0x0B, 0x00, 0x06, 0x00, 0xE1, 0xFF, 0x0B, 0x00,
+ 0x13, 0x00, 0xE1, 0xFF, 0x0B, 0x00, 0x21, 0x00,
+ 0xE1, 0xFF, 0x0B, 0x00, 0x2E, 0x00, 0xE1, 0xFF,
+ 0x0E, 0x00, 0x3D, 0x00, 0xD7, 0xFF, 0x10, 0x00,
+ 0x4A, 0x00, 0xCE, 0xFF, 0x12, 0x00, 0x58, 0x00,
+ 0xC4, 0xFF, 0x14, 0x00, 0x65, 0x00, 0xB7, 0xFF,
+ 0x0B, 0x00, 0xFA, 0xFF, 0xE1, 0xFF, 0x0B, 0x00,
+ 0xED, 0xFF, 0xE1, 0xFF, 0x0B, 0x00, 0xDF, 0xFF,
+ 0xE1, 0xFF, 0x0B, 0x00, 0xD2, 0xFF, 0xE1, 0xFF,
+ 0x0E, 0x00, 0xC3, 0xFF, 0xD7, 0xFF, 0x10, 0x00,
+ 0xB6, 0xFF, 0xCE, 0xFF, 0x12, 0x00, 0xA8, 0xFF,
+ 0xC4, 0xFF, 0x14, 0x00, 0x9B, 0xFF, 0xB7, 0xFF,
+ 0x0B, 0x00, 0x06, 0x00, 0xD5, 0xFF, 0x0B, 0x00,
+ 0x13, 0x00, 0xD5, 0xFF, 0x0B, 0x00, 0x21, 0x00,
+ 0xD5, 0xFF, 0x0B, 0x00, 0x2E, 0x00, 0xD5, 0xFF,
+ 0x0E, 0x00, 0x3D, 0x00, 0xC7, 0xFF, 0x10, 0x00,
+ 0x4A, 0x00, 0xBA, 0xFF, 0x12, 0x00, 0x58, 0x00,
+ 0xAC, 0xFF, 0x14, 0x00, 0x65, 0x00, 0x9A, 0xFF,
+ 0x0B, 0x00, 0xFA, 0xFF, 0xD5, 0xFF, 0x0B, 0x00,
+ 0xED, 0xFF, 0xD5, 0xFF, 0x0B, 0x00, 0xDF, 0xFF,
+ 0xD5, 0xFF, 0x0B, 0x00, 0xD2, 0xFF, 0xD5, 0xFF,
+ 0x0E, 0x00, 0xC3, 0xFF, 0xC7, 0xFF, 0x10, 0x00,
+ 0xB6, 0xFF, 0xBA, 0xFF, 0x12, 0x00, 0xA8, 0xFF,
+ 0xAC, 0xFF, 0x14, 0x00, 0x9B, 0xFF, 0x9A, 0xFF,
+ 0x0E, 0x00, 0x06, 0x00, 0xC8, 0xFF, 0x0E, 0x00,
+ 0x13, 0x00, 0xC8, 0xFF, 0x0E, 0x00, 0x21, 0x00,
+ 0xC8, 0xFF, 0x0E, 0x00, 0x2E, 0x00, 0xC8, 0xFF,
+ 0x11, 0x00, 0x3D, 0x00, 0xB6, 0xFF, 0x13, 0x00,
+ 0x4A, 0x00, 0xA6, 0xFF, 0x15, 0x00, 0x58, 0x00,
+ 0x93, 0xFF, 0x17, 0x00, 0x65, 0x00, 0x7C, 0xFF,
+ 0x0E, 0x00, 0xFA, 0xFF, 0xC8, 0xFF, 0x0E, 0x00,
+ 0xED, 0xFF, 0xC8, 0xFF, 0x0E, 0x00, 0xDF, 0xFF,
+ 0xC8, 0xFF, 0x0E, 0x00, 0xD2, 0xFF, 0xC8, 0xFF,
+ 0x11, 0x00, 0xC3, 0xFF, 0xB6, 0xFF, 0x13, 0x00,
+ 0xB6, 0xFF, 0xA6, 0xFF, 0x15, 0x00, 0xA8, 0xFF,
+ 0x93, 0xFF, 0x17, 0x00, 0x9B, 0xFF, 0x7C, 0xFF,
+ 0x10, 0x00, 0x06, 0x00, 0xBC, 0xFF, 0x10, 0x00,
+ 0x13, 0x00, 0xBC, 0xFF, 0x10, 0x00, 0x21, 0x00,
+ 0xBC, 0xFF, 0x10, 0x00, 0x2E, 0x00, 0xBC, 0xFF,
+ 0x13, 0x00, 0x3D, 0x00, 0xA6, 0xFF, 0x15, 0x00,
+ 0x4A, 0x00, 0x92, 0xFF, 0x17, 0x00, 0x58, 0x00,
+ 0x7B, 0xFF, 0x19, 0x00, 0x65, 0x00, 0x5F, 0xFF,
+ 0x10, 0x00, 0xFA, 0xFF, 0xBC, 0xFF, 0x10, 0x00,
+ 0xED, 0xFF, 0xBC, 0xFF, 0x10, 0x00, 0xDF, 0xFF,
+ 0xBC, 0xFF, 0x10, 0x00, 0xD2, 0xFF, 0xBC, 0xFF,
+ 0x13, 0x00, 0xC3, 0xFF, 0xA6, 0xFF, 0x15, 0x00,
+ 0xB6, 0xFF, 0x92, 0xFF, 0x17, 0x00, 0xA8, 0xFF,
+ 0x7B, 0xFF, 0x19, 0x00, 0x9B, 0xFF, 0x5F, 0xFF,
+ 0x12, 0x00, 0x06, 0x00, 0xAF, 0xFF, 0x12, 0x00,
+ 0x13, 0x00, 0xAF, 0xFF, 0x12, 0x00, 0x21, 0x00,
+ 0xAF, 0xFF, 0x12, 0x00, 0x2E, 0x00, 0xAF, 0xFF,
+ 0x15, 0x00, 0x3D, 0x00, 0x95, 0xFF, 0x17, 0x00,
+ 0x4A, 0x00, 0x7E, 0xFF, 0x19, 0x00, 0x58, 0x00,
+ 0x63, 0xFF, 0x1B, 0x00, 0x65, 0x00, 0x41, 0xFF,
+ 0x12, 0x00, 0xFA, 0xFF, 0xAF, 0xFF, 0x12, 0x00,
+ 0xED, 0xFF, 0xAF, 0xFF, 0x12, 0x00, 0xDF, 0xFF,
+ 0xAF, 0xFF, 0x12, 0x00, 0xD2, 0xFF, 0xAF, 0xFF,
+ 0x15, 0x00, 0xC3, 0xFF, 0x95, 0xFF, 0x17, 0x00,
+ 0xB6, 0xFF, 0x7E, 0xFF, 0x19, 0x00, 0xA8, 0xFF,
+ 0x63, 0xFF, 0x1B, 0x00, 0x9B, 0xFF, 0x41, 0xFF,
+ 0x14, 0x00, 0x06, 0x00, 0xA3, 0xFF, 0x14, 0x00,
+ 0x13, 0x00, 0xA3, 0xFF, 0x14, 0x00, 0x21, 0x00,
+ 0xA3, 0xFF, 0x14, 0x00, 0x2E, 0x00, 0xA3, 0xFF,
+ 0x17, 0x00, 0x3D, 0x00, 0x85, 0xFF, 0x19, 0x00,
+ 0x4A, 0x00, 0x6A, 0xFF, 0x1B, 0x00, 0x58, 0x00,
+ 0x4B, 0xFF, 0x1D, 0x00, 0x65, 0x00, 0x24, 0xFF,
+ 0x14, 0x00, 0xFA, 0xFF, 0xA3, 0xFF, 0x14, 0x00,
+ 0xED, 0xFF, 0xA3, 0xFF, 0x14, 0x00, 0xDF, 0xFF,
+ 0xA3, 0xFF, 0x14, 0x00, 0xD2, 0xFF, 0xA3, 0xFF,
+ 0x17, 0x00, 0xC3, 0xFF, 0x85, 0xFF, 0x19, 0x00,
+ 0xB6, 0xFF, 0x6A, 0xFF, 0x1B, 0x00, 0xA8, 0xFF,
+ 0x4B, 0xFF, 0x1D, 0x00, 0x9B, 0xFF, 0x24, 0xFF,
+ 0x0C, 0x00, 0x07, 0x00, 0x06, 0x00, 0x0C, 0x00,
+ 0x16, 0x00, 0x06, 0x00, 0x0C, 0x00, 0x25, 0x00,
+ 0x06, 0x00, 0x0C, 0x00, 0x34, 0x00, 0x06, 0x00,
+ 0x0F, 0x00, 0x43, 0x00, 0x09, 0x00, 0x11, 0x00,
+ 0x52, 0x00, 0x0B, 0x00, 0x13, 0x00, 0x61, 0x00,
+ 0x0D, 0x00, 0x15, 0x00, 0x70, 0x00, 0x10, 0x00,
+ 0x0C, 0x00, 0xF9, 0xFF, 0x06, 0x00, 0x0C, 0x00,
+ 0xEA, 0xFF, 0x06, 0x00, 0x0C, 0x00, 0xDB, 0xFF,
+ 0x06, 0x00, 0x0C, 0x00, 0xCC, 0xFF, 0x06, 0x00,
+ 0x0F, 0x00, 0xBD, 0xFF, 0x09, 0x00, 0x11, 0x00,
+ 0xAE, 0xFF, 0x0B, 0x00, 0x13, 0x00, 0x9F, 0xFF,
+ 0x0D, 0x00, 0x15, 0x00, 0x90, 0xFF, 0x10, 0x00,
+ 0x0C, 0x00, 0x07, 0x00, 0x13, 0x00, 0x0C, 0x00,
+ 0x16, 0x00, 0x13, 0x00, 0x0C, 0x00, 0x25, 0x00,
+ 0x13, 0x00, 0x0C, 0x00, 0x34, 0x00, 0x13, 0x00,
+ 0x0F, 0x00, 0x43, 0x00, 0x1B, 0x00, 0x11, 0x00,
+ 0x52, 0x00, 0x21, 0x00, 0x13, 0x00, 0x61, 0x00,
+ 0x27, 0x00, 0x15, 0x00, 0x70, 0x00, 0x30, 0x00,
+ 0x0C, 0x00, 0xF9, 0xFF, 0x13, 0x00, 0x0C, 0x00,
+ 0xEA, 0xFF, 0x13, 0x00, 0x0C, 0x00, 0xDB, 0xFF,
+ 0x13, 0x00, 0x0C, 0x00, 0xCC, 0xFF, 0x13, 0x00,
+ 0x0F, 0x00, 0xBD, 0xFF, 0x1B, 0x00, 0x11, 0x00,
+ 0xAE, 0xFF, 0x21, 0x00, 0x13, 0x00, 0x9F, 0xFF,
+ 0x27, 0x00, 0x15, 0x00, 0x90, 0xFF, 0x30, 0x00,
+ 0x0C, 0x00, 0x07, 0x00, 0x21, 0x00, 0x0C, 0x00,
+ 0x16, 0x00, 0x21, 0x00, 0x0C, 0x00, 0x25, 0x00,
+ 0x21, 0x00, 0x0C, 0x00, 0x34, 0x00, 0x21, 0x00,
+ 0x0F, 0x00, 0x43, 0x00, 0x2D, 0x00, 0x11, 0x00,
+ 0x52, 0x00, 0x37, 0x00, 0x13, 0x00, 0x61, 0x00,
+ 0x42, 0x00, 0x15, 0x00, 0x70, 0x00, 0x51, 0x00,
+ 0x0C, 0x00, 0xF9, 0xFF, 0x21, 0x00, 0x0C, 0x00,
+ 0xEA, 0xFF, 0x21, 0x00, 0x0C, 0x00, 0xDB, 0xFF,
+ 0x21, 0x00, 0x0C, 0x00, 0xCC, 0xFF, 0x21, 0x00,
+ 0x0F, 0x00, 0xBD, 0xFF, 0x2D, 0x00, 0x11, 0x00,
+ 0xAE, 0xFF, 0x37, 0x00, 0x13, 0x00, 0x9F, 0xFF,
+ 0x42, 0x00, 0x15, 0x00, 0x90, 0xFF, 0x51, 0x00,
+ 0x0C, 0x00, 0x07, 0x00, 0x2E, 0x00, 0x0C, 0x00,
+ 0x16, 0x00, 0x2E, 0x00, 0x0C, 0x00, 0x25, 0x00,
+ 0x2E, 0x00, 0x0C, 0x00, 0x34, 0x00, 0x2E, 0x00,
+ 0x0F, 0x00, 0x43, 0x00, 0x3F, 0x00, 0x11, 0x00,
+ 0x52, 0x00, 0x4D, 0x00, 0x13, 0x00, 0x61, 0x00,
+ 0x5C, 0x00, 0x15, 0x00, 0x70, 0x00, 0x71, 0x00,
+ 0x0C, 0x00, 0xF9, 0xFF, 0x2E, 0x00, 0x0C, 0x00,
+ 0xEA, 0xFF, 0x2E, 0x00, 0x0C, 0x00, 0xDB, 0xFF,
+ 0x2E, 0x00, 0x0C, 0x00, 0xCC, 0xFF, 0x2E, 0x00,
+ 0x0F, 0x00, 0xBD, 0xFF, 0x3F, 0x00, 0x11, 0x00,
+ 0xAE, 0xFF, 0x4D, 0x00, 0x13, 0x00, 0x9F, 0xFF,
+ 0x5C, 0x00, 0x15, 0x00, 0x90, 0xFF, 0x71, 0x00,
+ 0x0F, 0x00, 0x07, 0x00, 0x3D, 0x00, 0x0F, 0x00,
+ 0x16, 0x00, 0x3D, 0x00, 0x0F, 0x00, 0x25, 0x00,
+ 0x3D, 0x00, 0x0F, 0x00, 0x34, 0x00, 0x3D, 0x00,
+ 0x12, 0x00, 0x43, 0x00, 0x52, 0x00, 0x14, 0x00,
+ 0x52, 0x00, 0x63, 0x00, 0x16, 0x00, 0x61, 0x00,
+ 0x78, 0x00, 0x18, 0x00, 0x70, 0x00, 0x92, 0x00,
+ 0x0F, 0x00, 0xF9, 0xFF, 0x3D, 0x00, 0x0F, 0x00,
+ 0xEA, 0xFF, 0x3D, 0x00, 0x0F, 0x00, 0xDB, 0xFF,
+ 0x3D, 0x00, 0x0F, 0x00, 0xCC, 0xFF, 0x3D, 0x00,
+ 0x12, 0x00, 0xBD, 0xFF, 0x52, 0x00, 0x14, 0x00,
+ 0xAE, 0xFF, 0x63, 0x00, 0x16, 0x00, 0x9F, 0xFF,
+ 0x78, 0x00, 0x18, 0x00, 0x90, 0xFF, 0x92, 0x00,
+ 0x11, 0x00, 0x07, 0x00, 0x4A, 0x00, 0x11, 0x00,
+ 0x16, 0x00, 0x4A, 0x00, 0x11, 0x00, 0x25, 0x00,
+ 0x4A, 0x00, 0x11, 0x00, 0x34, 0x00, 0x4A, 0x00,
+ 0x14, 0x00, 0x43, 0x00, 0x64, 0x00, 0x16, 0x00,
+ 0x52, 0x00, 0x79, 0x00, 0x18, 0x00, 0x61, 0x00,
+ 0x92, 0x00, 0x1A, 0x00, 0x70, 0x00, 0xB2, 0x00,
+ 0x11, 0x00, 0xF9, 0xFF, 0x4A, 0x00, 0x11, 0x00,
+ 0xEA, 0xFF, 0x4A, 0x00, 0x11, 0x00, 0xDB, 0xFF,
+ 0x4A, 0x00, 0x11, 0x00, 0xCC, 0xFF, 0x4A, 0x00,
+ 0x14, 0x00, 0xBD, 0xFF, 0x64, 0x00, 0x16, 0x00,
+ 0xAE, 0xFF, 0x79, 0x00, 0x18, 0x00, 0x9F, 0xFF,
+ 0x92, 0x00, 0x1A, 0x00, 0x90, 0xFF, 0xB2, 0x00,
+ 0x13, 0x00, 0x07, 0x00, 0x58, 0x00, 0x13, 0x00,
+ 0x16, 0x00, 0x58, 0x00, 0x13, 0x00, 0x25, 0x00,
+ 0x58, 0x00, 0x13, 0x00, 0x34, 0x00, 0x58, 0x00,
+ 0x16, 0x00, 0x43, 0x00, 0x76, 0x00, 0x18, 0x00,
+ 0x52, 0x00, 0x8F, 0x00, 0x1A, 0x00, 0x61, 0x00,
+ 0xAD, 0x00, 0x1C, 0x00, 0x70, 0x00, 0xD3, 0x00,
+ 0x13, 0x00, 0xF9, 0xFF, 0x58, 0x00, 0x13, 0x00,
+ 0xEA, 0xFF, 0x58, 0x00, 0x13, 0x00, 0xDB, 0xFF,
+ 0x58, 0x00, 0x13, 0x00, 0xCC, 0xFF, 0x58, 0x00,
+ 0x16, 0x00, 0xBD, 0xFF, 0x76, 0x00, 0x18, 0x00,
+ 0xAE, 0xFF, 0x8F, 0x00, 0x1A, 0x00, 0x9F, 0xFF,
+ 0xAD, 0x00, 0x1C, 0x00, 0x90, 0xFF, 0xD3, 0x00,
+ 0x15, 0x00, 0x07, 0x00, 0x65, 0x00, 0x15, 0x00,
+ 0x16, 0x00, 0x65, 0x00, 0x15, 0x00, 0x25, 0x00,
+ 0x65, 0x00, 0x15, 0x00, 0x34, 0x00, 0x65, 0x00,
+ 0x18, 0x00, 0x43, 0x00, 0x88, 0x00, 0x1A, 0x00,
+ 0x52, 0x00, 0xA5, 0x00, 0x1C, 0x00, 0x61, 0x00,
+ 0xC7, 0x00, 0x1E, 0x00, 0x70, 0x00, 0xF3, 0x00,
+ 0x15, 0x00, 0xF9, 0xFF, 0x65, 0x00, 0x15, 0x00,
+ 0xEA, 0xFF, 0x65, 0x00, 0x15, 0x00, 0xDB, 0xFF,
+ 0x65, 0x00, 0x15, 0x00, 0xCC, 0xFF, 0x65, 0x00,
+ 0x18, 0x00, 0xBD, 0xFF, 0x88, 0x00, 0x1A, 0x00,
+ 0xAE, 0xFF, 0xA5, 0x00, 0x1C, 0x00, 0x9F, 0xFF,
+ 0xC7, 0x00, 0x1E, 0x00, 0x90, 0xFF, 0xF3, 0x00,
+ 0x0C, 0x00, 0x07, 0x00, 0xFA, 0xFF, 0x0C, 0x00,
+ 0x16, 0x00, 0xFA, 0xFF, 0x0C, 0x00, 0x25, 0x00,
+ 0xFA, 0xFF, 0x0C, 0x00, 0x34, 0x00, 0xFA, 0xFF,
+ 0x0F, 0x00, 0x43, 0x00, 0xF7, 0xFF, 0x11, 0x00,
+ 0x52, 0x00, 0xF5, 0xFF, 0x13, 0x00, 0x61, 0x00,
+ 0xF3, 0xFF, 0x15, 0x00, 0x70, 0x00, 0xF0, 0xFF,
+ 0x0C, 0x00, 0xF9, 0xFF, 0xFA, 0xFF, 0x0C, 0x00,
+ 0xEA, 0xFF, 0xFA, 0xFF, 0x0C, 0x00, 0xDB, 0xFF,
+ 0xFA, 0xFF, 0x0C, 0x00, 0xCC, 0xFF, 0xFA, 0xFF,
+ 0x0F, 0x00, 0xBD, 0xFF, 0xF7, 0xFF, 0x11, 0x00,
+ 0xAE, 0xFF, 0xF5, 0xFF, 0x13, 0x00, 0x9F, 0xFF,
+ 0xF3, 0xFF, 0x15, 0x00, 0x90, 0xFF, 0xF0, 0xFF,
+ 0x0C, 0x00, 0x07, 0x00, 0xED, 0xFF, 0x0C, 0x00,
+ 0x16, 0x00, 0xED, 0xFF, 0x0C, 0x00, 0x25, 0x00,
+ 0xED, 0xFF, 0x0C, 0x00, 0x34, 0x00, 0xED, 0xFF,
+ 0x0F, 0x00, 0x43, 0x00, 0xE5, 0xFF, 0x11, 0x00,
+ 0x52, 0x00, 0xDF, 0xFF, 0x13, 0x00, 0x61, 0x00,
+ 0xD9, 0xFF, 0x15, 0x00, 0x70, 0x00, 0xD0, 0xFF,
+ 0x0C, 0x00, 0xF9, 0xFF, 0xED, 0xFF, 0x0C, 0x00,
+ 0xEA, 0xFF, 0xED, 0xFF, 0x0C, 0x00, 0xDB, 0xFF,
+ 0xED, 0xFF, 0x0C, 0x00, 0xCC, 0xFF, 0xED, 0xFF,
+ 0x0F, 0x00, 0xBD, 0xFF, 0xE5, 0xFF, 0x11, 0x00,
+ 0xAE, 0xFF, 0xDF, 0xFF, 0x13, 0x00, 0x9F, 0xFF,
+ 0xD9, 0xFF, 0x15, 0x00, 0x90, 0xFF, 0xD0, 0xFF,
+ 0x0C, 0x00, 0x07, 0x00, 0xDF, 0xFF, 0x0C, 0x00,
+ 0x16, 0x00, 0xDF, 0xFF, 0x0C, 0x00, 0x25, 0x00,
+ 0xDF, 0xFF, 0x0C, 0x00, 0x34, 0x00, 0xDF, 0xFF,
+ 0x0F, 0x00, 0x43, 0x00, 0xD3, 0xFF, 0x11, 0x00,
+ 0x52, 0x00, 0xC9, 0xFF, 0x13, 0x00, 0x61, 0x00,
+ 0xBE, 0xFF, 0x15, 0x00, 0x70, 0x00, 0xAF, 0xFF,
+ 0x0C, 0x00, 0xF9, 0xFF, 0xDF, 0xFF, 0x0C, 0x00,
+ 0xEA, 0xFF, 0xDF, 0xFF, 0x0C, 0x00, 0xDB, 0xFF,
+ 0xDF, 0xFF, 0x0C, 0x00, 0xCC, 0xFF, 0xDF, 0xFF,
+ 0x0F, 0x00, 0xBD, 0xFF, 0xD3, 0xFF, 0x11, 0x00,
+ 0xAE, 0xFF, 0xC9, 0xFF, 0x13, 0x00, 0x9F, 0xFF,
+ 0xBE, 0xFF, 0x15, 0x00, 0x90, 0xFF, 0xAF, 0xFF,
+ 0x0C, 0x00, 0x07, 0x00, 0xD2, 0xFF, 0x0C, 0x00,
+ 0x16, 0x00, 0xD2, 0xFF, 0x0C, 0x00, 0x25, 0x00,
+ 0xD2, 0xFF, 0x0C, 0x00, 0x34, 0x00, 0xD2, 0xFF,
+ 0x0F, 0x00, 0x43, 0x00, 0xC1, 0xFF, 0x11, 0x00,
+ 0x52, 0x00, 0xB3, 0xFF, 0x13, 0x00, 0x61, 0x00,
+ 0xA4, 0xFF, 0x15, 0x00, 0x70, 0x00, 0x8F, 0xFF,
+ 0x0C, 0x00, 0xF9, 0xFF, 0xD2, 0xFF, 0x0C, 0x00,
+ 0xEA, 0xFF, 0xD2, 0xFF, 0x0C, 0x00, 0xDB, 0xFF,
+ 0xD2, 0xFF, 0x0C, 0x00, 0xCC, 0xFF, 0xD2, 0xFF,
+ 0x0F, 0x00, 0xBD, 0xFF, 0xC1, 0xFF, 0x11, 0x00,
+ 0xAE, 0xFF, 0xB3, 0xFF, 0x13, 0x00, 0x9F, 0xFF,
+ 0xA4, 0xFF, 0x15, 0x00, 0x90, 0xFF, 0x8F, 0xFF,
+ 0x0F, 0x00, 0x07, 0x00, 0xC3, 0xFF, 0x0F, 0x00,
+ 0x16, 0x00, 0xC3, 0xFF, 0x0F, 0x00, 0x25, 0x00,
+ 0xC3, 0xFF, 0x0F, 0x00, 0x34, 0x00, 0xC3, 0xFF,
+ 0x12, 0x00, 0x43, 0x00, 0xAE, 0xFF, 0x14, 0x00,
+ 0x52, 0x00, 0x9D, 0xFF, 0x16, 0x00, 0x61, 0x00,
+ 0x88, 0xFF, 0x18, 0x00, 0x70, 0x00, 0x6E, 0xFF,
+ 0x0F, 0x00, 0xF9, 0xFF, 0xC3, 0xFF, 0x0F, 0x00,
+ 0xEA, 0xFF, 0xC3, 0xFF, 0x0F, 0x00, 0xDB, 0xFF,
+ 0xC3, 0xFF, 0x0F, 0x00, 0xCC, 0xFF, 0xC3, 0xFF,
+ 0x12, 0x00, 0xBD, 0xFF, 0xAE, 0xFF, 0x14, 0x00,
+ 0xAE, 0xFF, 0x9D, 0xFF, 0x16, 0x00, 0x9F, 0xFF,
+ 0x88, 0xFF, 0x18, 0x00, 0x90, 0xFF, 0x6E, 0xFF,
+ 0x11, 0x00, 0x07, 0x00, 0xB6, 0xFF, 0x11, 0x00,
+ 0x16, 0x00, 0xB6, 0xFF, 0x11, 0x00, 0x25, 0x00,
+ 0xB6, 0xFF, 0x11, 0x00, 0x34, 0x00, 0xB6, 0xFF,
+ 0x14, 0x00, 0x43, 0x00, 0x9C, 0xFF, 0x16, 0x00,
+ 0x52, 0x00, 0x87, 0xFF, 0x18, 0x00, 0x61, 0x00,
+ 0x6E, 0xFF, 0x1A, 0x00, 0x70, 0x00, 0x4E, 0xFF,
+ 0x11, 0x00, 0xF9, 0xFF, 0xB6, 0xFF, 0x11, 0x00,
+ 0xEA, 0xFF, 0xB6, 0xFF, 0x11, 0x00, 0xDB, 0xFF,
+ 0xB6, 0xFF, 0x11, 0x00, 0xCC, 0xFF, 0xB6, 0xFF,
+ 0x14, 0x00, 0xBD, 0xFF, 0x9C, 0xFF, 0x16, 0x00,
+ 0xAE, 0xFF, 0x87, 0xFF, 0x18, 0x00, 0x9F, 0xFF,
+ 0x6E, 0xFF, 0x1A, 0x00, 0x90, 0xFF, 0x4E, 0xFF,
+ 0x13, 0x00, 0x07, 0x00, 0xA8, 0xFF, 0x13, 0x00,
+ 0x16, 0x00, 0xA8, 0xFF, 0x13, 0x00, 0x25, 0x00,
+ 0xA8, 0xFF, 0x13, 0x00, 0x34, 0x00, 0xA8, 0xFF,
+ 0x16, 0x00, 0x43, 0x00, 0x8A, 0xFF, 0x18, 0x00,
+ 0x52, 0x00, 0x71, 0xFF, 0x1A, 0x00, 0x61, 0x00,
+ 0x53, 0xFF, 0x1C, 0x00, 0x70, 0x00, 0x2D, 0xFF,
+ 0x13, 0x00, 0xF9, 0xFF, 0xA8, 0xFF, 0x13, 0x00,
+ 0xEA, 0xFF, 0xA8, 0xFF, 0x13, 0x00, 0xDB, 0xFF,
+ 0xA8, 0xFF, 0x13, 0x00, 0xCC, 0xFF, 0xA8, 0xFF,
+ 0x16, 0x00, 0xBD, 0xFF, 0x8A, 0xFF, 0x18, 0x00,
+ 0xAE, 0xFF, 0x71, 0xFF, 0x1A, 0x00, 0x9F, 0xFF,
+ 0x53, 0xFF, 0x1C, 0x00, 0x90, 0xFF, 0x2D, 0xFF,
+ 0x15, 0x00, 0x07, 0x00, 0x9B, 0xFF, 0x15, 0x00,
+ 0x16, 0x00, 0x9B, 0xFF, 0x15, 0x00, 0x25, 0x00,
+ 0x9B, 0xFF, 0x15, 0x00, 0x34, 0x00, 0x9B, 0xFF,
+ 0x18, 0x00, 0x43, 0x00, 0x78, 0xFF, 0x1A, 0x00,
+ 0x52, 0x00, 0x5B, 0xFF, 0x1C, 0x00, 0x61, 0x00,
+ 0x39, 0xFF, 0x1E, 0x00, 0x70, 0x00, 0x0D, 0xFF,
+ 0x15, 0x00, 0xF9, 0xFF, 0x9B, 0xFF, 0x15, 0x00,
+ 0xEA, 0xFF, 0x9B, 0xFF, 0x15, 0x00, 0xDB, 0xFF,
+ 0x9B, 0xFF, 0x15, 0x00, 0xCC, 0xFF, 0x9B, 0xFF,
+ 0x18, 0x00, 0xBD, 0xFF, 0x78, 0xFF, 0x1A, 0x00,
+ 0xAE, 0xFF, 0x5B, 0xFF, 0x1C, 0x00, 0x9F, 0xFF,
+ 0x39, 0xFF, 0x1E, 0x00, 0x90, 0xFF, 0x0D, 0xFF,
+ 0x0D, 0x00, 0x08, 0x00, 0x07, 0x00, 0x0D, 0x00,
+ 0x18, 0x00, 0x07, 0x00, 0x0D, 0x00, 0x29, 0x00,
+ 0x07, 0x00, 0x0D, 0x00, 0x39, 0x00, 0x07, 0x00,
+ 0x10, 0x00, 0x4A, 0x00, 0x0A, 0x00, 0x12, 0x00,
+ 0x5A, 0x00, 0x0C, 0x00, 0x14, 0x00, 0x6B, 0x00,
+ 0x0E, 0x00, 0x16, 0x00, 0x7B, 0x00, 0x11, 0x00,
+ 0x0D, 0x00, 0xF8, 0xFF, 0x07, 0x00, 0x0D, 0x00,
+ 0xE8, 0xFF, 0x07, 0x00, 0x0D, 0x00, 0xD7, 0xFF,
+ 0x07, 0x00, 0x0D, 0x00, 0xC7, 0xFF, 0x07, 0x00,
+ 0x10, 0x00, 0xB6, 0xFF, 0x0A, 0x00, 0x12, 0x00,
+ 0xA6, 0xFF, 0x0C, 0x00, 0x14, 0x00, 0x95, 0xFF,
+ 0x0E, 0x00, 0x16, 0x00, 0x85, 0xFF, 0x11, 0x00,
+ 0x0D, 0x00, 0x08, 0x00, 0x16, 0x00, 0x0D, 0x00,
+ 0x18, 0x00, 0x16, 0x00, 0x0D, 0x00, 0x29, 0x00,
+ 0x16, 0x00, 0x0D, 0x00, 0x39, 0x00, 0x16, 0x00,
+ 0x10, 0x00, 0x4A, 0x00, 0x1E, 0x00, 0x12, 0x00,
+ 0x5A, 0x00, 0x24, 0x00, 0x14, 0x00, 0x6B, 0x00,
+ 0x2B, 0x00, 0x16, 0x00, 0x7B, 0x00, 0x34, 0x00,
+ 0x0D, 0x00, 0xF8, 0xFF, 0x16, 0x00, 0x0D, 0x00,
+ 0xE8, 0xFF, 0x16, 0x00, 0x0D, 0x00, 0xD7, 0xFF,
+ 0x16, 0x00, 0x0D, 0x00, 0xC7, 0xFF, 0x16, 0x00,
+ 0x10, 0x00, 0xB6, 0xFF, 0x1E, 0x00, 0x12, 0x00,
+ 0xA6, 0xFF, 0x24, 0x00, 0x14, 0x00, 0x95, 0xFF,
+ 0x2B, 0x00, 0x16, 0x00, 0x85, 0xFF, 0x34, 0x00,
+ 0x0D, 0x00, 0x08, 0x00, 0x25, 0x00, 0x0D, 0x00,
+ 0x18, 0x00, 0x25, 0x00, 0x0D, 0x00, 0x29, 0x00,
+ 0x25, 0x00, 0x0D, 0x00, 0x39, 0x00, 0x25, 0x00,
+ 0x10, 0x00, 0x4A, 0x00, 0x32, 0x00, 0x12, 0x00,
+ 0x5A, 0x00, 0x3C, 0x00, 0x14, 0x00, 0x6B, 0x00,
+ 0x49, 0x00, 0x16, 0x00, 0x7B, 0x00, 0x58, 0x00,
+ 0x0D, 0x00, 0xF8, 0xFF, 0x25, 0x00, 0x0D, 0x00,
+ 0xE8, 0xFF, 0x25, 0x00, 0x0D, 0x00, 0xD7, 0xFF,
+ 0x25, 0x00, 0x0D, 0x00, 0xC7, 0xFF, 0x25, 0x00,
+ 0x10, 0x00, 0xB6, 0xFF, 0x32, 0x00, 0x12, 0x00,
+ 0xA6, 0xFF, 0x3C, 0x00, 0x14, 0x00, 0x95, 0xFF,
+ 0x49, 0x00, 0x16, 0x00, 0x85, 0xFF, 0x58, 0x00,
+ 0x0D, 0x00, 0x08, 0x00, 0x34, 0x00, 0x0D, 0x00,
+ 0x18, 0x00, 0x34, 0x00, 0x0D, 0x00, 0x29, 0x00,
+ 0x34, 0x00, 0x0D, 0x00, 0x39, 0x00, 0x34, 0x00,
+ 0x10, 0x00, 0x4A, 0x00, 0x46, 0x00, 0x12, 0x00,
+ 0x5A, 0x00, 0x54, 0x00, 0x14, 0x00, 0x6B, 0x00,
+ 0x66, 0x00, 0x16, 0x00, 0x7B, 0x00, 0x7B, 0x00,
+ 0x0D, 0x00, 0xF8, 0xFF, 0x34, 0x00, 0x0D, 0x00,
+ 0xE8, 0xFF, 0x34, 0x00, 0x0D, 0x00, 0xD7, 0xFF,
+ 0x34, 0x00, 0x0D, 0x00, 0xC7, 0xFF, 0x34, 0x00,
+ 0x10, 0x00, 0xB6, 0xFF, 0x46, 0x00, 0x12, 0x00,
+ 0xA6, 0xFF, 0x54, 0x00, 0x14, 0x00, 0x95, 0xFF,
+ 0x66, 0x00, 0x16, 0x00, 0x85, 0xFF, 0x7B, 0x00,
+ 0x10, 0x00, 0x08, 0x00, 0x43, 0x00, 0x10, 0x00,
+ 0x18, 0x00, 0x43, 0x00, 0x10, 0x00, 0x29, 0x00,
+ 0x43, 0x00, 0x10, 0x00, 0x39, 0x00, 0x43, 0x00,
+ 0x13, 0x00, 0x4A, 0x00, 0x5A, 0x00, 0x15, 0x00,
+ 0x5A, 0x00, 0x6D, 0x00, 0x17, 0x00, 0x6B, 0x00,
+ 0x84, 0x00, 0x19, 0x00, 0x7B, 0x00, 0xA0, 0x00,
+ 0x10, 0x00, 0xF8, 0xFF, 0x43, 0x00, 0x10, 0x00,
+ 0xE8, 0xFF, 0x43, 0x00, 0x10, 0x00, 0xD7, 0xFF,
+ 0x43, 0x00, 0x10, 0x00, 0xC7, 0xFF, 0x43, 0x00,
+ 0x13, 0x00, 0xB6, 0xFF, 0x5A, 0x00, 0x15, 0x00,
+ 0xA6, 0xFF, 0x6D, 0x00, 0x17, 0x00, 0x95, 0xFF,
+ 0x84, 0x00, 0x19, 0x00, 0x85, 0xFF, 0xA0, 0x00,
+ 0x12, 0x00, 0x08, 0x00, 0x52, 0x00, 0x12, 0x00,
+ 0x18, 0x00, 0x52, 0x00, 0x12, 0x00, 0x29, 0x00,
+ 0x52, 0x00, 0x12, 0x00, 0x39, 0x00, 0x52, 0x00,
+ 0x15, 0x00, 0x4A, 0x00, 0x6E, 0x00, 0x17, 0x00,
+ 0x5A, 0x00, 0x85, 0x00, 0x19, 0x00, 0x6B, 0x00,
+ 0xA1, 0x00, 0x1B, 0x00, 0x7B, 0x00, 0xC3, 0x00,
+ 0x12, 0x00, 0xF8, 0xFF, 0x52, 0x00, 0x12, 0x00,
+ 0xE8, 0xFF, 0x52, 0x00, 0x12, 0x00, 0xD7, 0xFF,
+ 0x52, 0x00, 0x12, 0x00, 0xC7, 0xFF, 0x52, 0x00,
+ 0x15, 0x00, 0xB6, 0xFF, 0x6E, 0x00, 0x17, 0x00,
+ 0xA6, 0xFF, 0x85, 0x00, 0x19, 0x00, 0x95, 0xFF,
+ 0xA1, 0x00, 0x1B, 0x00, 0x85, 0xFF, 0xC3, 0x00,
+ 0x14, 0x00, 0x08, 0x00, 0x61, 0x00, 0x14, 0x00,
+ 0x18, 0x00, 0x61, 0x00, 0x14, 0x00, 0x29, 0x00,
+ 0x61, 0x00, 0x14, 0x00, 0x39, 0x00, 0x61, 0x00,
+ 0x17, 0x00, 0x4A, 0x00, 0x82, 0x00, 0x19, 0x00,
+ 0x5A, 0x00, 0x9D, 0x00, 0x1B, 0x00, 0x6B, 0x00,
+ 0xBF, 0x00, 0x1D, 0x00, 0x7B, 0x00, 0xE7, 0x00,
+ 0x14, 0x00, 0xF8, 0xFF, 0x61, 0x00, 0x14, 0x00,
+ 0xE8, 0xFF, 0x61, 0x00, 0x14, 0x00, 0xD7, 0xFF,
+ 0x61, 0x00, 0x14, 0x00, 0xC7, 0xFF, 0x61, 0x00,
+ 0x17, 0x00, 0xB6, 0xFF, 0x82, 0x00, 0x19, 0x00,
+ 0xA6, 0xFF, 0x9D, 0x00, 0x1B, 0x00, 0x95, 0xFF,
+ 0xBF, 0x00, 0x1D, 0x00, 0x85, 0xFF, 0xE7, 0x00,
+ 0x16, 0x00, 0x08, 0x00, 0x70, 0x00, 0x16, 0x00,
+ 0x18, 0x00, 0x70, 0x00, 0x16, 0x00, 0x29, 0x00,
+ 0x70, 0x00, 0x16, 0x00, 0x39, 0x00, 0x70, 0x00,
+ 0x19, 0x00, 0x4A, 0x00, 0x96, 0x00, 0x1B, 0x00,
+ 0x5A, 0x00, 0xB5, 0x00, 0x1D, 0x00, 0x6B, 0x00,
+ 0xDC, 0x00, 0x1F, 0x00, 0x7B, 0x00, 0x0A, 0x01,
+ 0x16, 0x00, 0xF8, 0xFF, 0x70, 0x00, 0x16, 0x00,
+ 0xE8, 0xFF, 0x70, 0x00, 0x16, 0x00, 0xD7, 0xFF,
+ 0x70, 0x00, 0x16, 0x00, 0xC7, 0xFF, 0x70, 0x00,
+ 0x19, 0x00, 0xB6, 0xFF, 0x96, 0x00, 0x1B, 0x00,
+ 0xA6, 0xFF, 0xB5, 0x00, 0x1D, 0x00, 0x95, 0xFF,
+ 0xDC, 0x00, 0x1F, 0x00, 0x85, 0xFF, 0x0A, 0x01,
+ 0x0D, 0x00, 0x08, 0x00, 0xF9, 0xFF, 0x0D, 0x00,
+ 0x18, 0x00, 0xF9, 0xFF, 0x0D, 0x00, 0x29, 0x00,
+ 0xF9, 0xFF, 0x0D, 0x00, 0x39, 0x00, 0xF9, 0xFF,
+ 0x10, 0x00, 0x4A, 0x00, 0xF6, 0xFF, 0x12, 0x00,
+ 0x5A, 0x00, 0xF4, 0xFF, 0x14, 0x00, 0x6B, 0x00,
+ 0xF2, 0xFF, 0x16, 0x00, 0x7B, 0x00, 0xEF, 0xFF,
+ 0x0D, 0x00, 0xF8, 0xFF, 0xF9, 0xFF, 0x0D, 0x00,
+ 0xE8, 0xFF, 0xF9, 0xFF, 0x0D, 0x00, 0xD7, 0xFF,
+ 0xF9, 0xFF, 0x0D, 0x00, 0xC7, 0xFF, 0xF9, 0xFF,
+ 0x10, 0x00, 0xB6, 0xFF, 0xF6, 0xFF, 0x12, 0x00,
+ 0xA6, 0xFF, 0xF4, 0xFF, 0x14, 0x00, 0x95, 0xFF,
+ 0xF2, 0xFF, 0x16, 0x00, 0x85, 0xFF, 0xEF, 0xFF,
+ 0x0D, 0x00, 0x08, 0x00, 0xEA, 0xFF, 0x0D, 0x00,
+ 0x18, 0x00, 0xEA, 0xFF, 0x0D, 0x00, 0x29, 0x00,
+ 0xEA, 0xFF, 0x0D, 0x00, 0x39, 0x00, 0xEA, 0xFF,
+ 0x10, 0x00, 0x4A, 0x00, 0xE2, 0xFF, 0x12, 0x00,
+ 0x5A, 0x00, 0xDC, 0xFF, 0x14, 0x00, 0x6B, 0x00,
+ 0xD5, 0xFF, 0x16, 0x00, 0x7B, 0x00, 0xCC, 0xFF,
+ 0x0D, 0x00, 0xF8, 0xFF, 0xEA, 0xFF, 0x0D, 0x00,
+ 0xE8, 0xFF, 0xEA, 0xFF, 0x0D, 0x00, 0xD7, 0xFF,
+ 0xEA, 0xFF, 0x0D, 0x00, 0xC7, 0xFF, 0xEA, 0xFF,
+ 0x10, 0x00, 0xB6, 0xFF, 0xE2, 0xFF, 0x12, 0x00,
+ 0xA6, 0xFF, 0xDC, 0xFF, 0x14, 0x00, 0x95, 0xFF,
+ 0xD5, 0xFF, 0x16, 0x00, 0x85, 0xFF, 0xCC, 0xFF,
+ 0x0D, 0x00, 0x08, 0x00, 0xDB, 0xFF, 0x0D, 0x00,
+ 0x18, 0x00, 0xDB, 0xFF, 0x0D, 0x00, 0x29, 0x00,
+ 0xDB, 0xFF, 0x0D, 0x00, 0x39, 0x00, 0xDB, 0xFF,
+ 0x10, 0x00, 0x4A, 0x00, 0xCE, 0xFF, 0x12, 0x00,
+ 0x5A, 0x00, 0xC4, 0xFF, 0x14, 0x00, 0x6B, 0x00,
+ 0xB7, 0xFF, 0x16, 0x00, 0x7B, 0x00, 0xA8, 0xFF,
+ 0x0D, 0x00, 0xF8, 0xFF, 0xDB, 0xFF, 0x0D, 0x00,
+ 0xE8, 0xFF, 0xDB, 0xFF, 0x0D, 0x00, 0xD7, 0xFF,
+ 0xDB, 0xFF, 0x0D, 0x00, 0xC7, 0xFF, 0xDB, 0xFF,
+ 0x10, 0x00, 0xB6, 0xFF, 0xCE, 0xFF, 0x12, 0x00,
+ 0xA6, 0xFF, 0xC4, 0xFF, 0x14, 0x00, 0x95, 0xFF,
+ 0xB7, 0xFF, 0x16, 0x00, 0x85, 0xFF, 0xA8, 0xFF,
+ 0x0D, 0x00, 0x08, 0x00, 0xCC, 0xFF, 0x0D, 0x00,
+ 0x18, 0x00, 0xCC, 0xFF, 0x0D, 0x00, 0x29, 0x00,
+ 0xCC, 0xFF, 0x0D, 0x00, 0x39, 0x00, 0xCC, 0xFF,
+ 0x10, 0x00, 0x4A, 0x00, 0xBA, 0xFF, 0x12, 0x00,
+ 0x5A, 0x00, 0xAC, 0xFF, 0x14, 0x00, 0x6B, 0x00,
+ 0x9A, 0xFF, 0x16, 0x00, 0x7B, 0x00, 0x85, 0xFF,
+ 0x0D, 0x00, 0xF8, 0xFF, 0xCC, 0xFF, 0x0D, 0x00,
+ 0xE8, 0xFF, 0xCC, 0xFF, 0x0D, 0x00, 0xD7, 0xFF,
+ 0xCC, 0xFF, 0x0D, 0x00, 0xC7, 0xFF, 0xCC, 0xFF,
+ 0x10, 0x00, 0xB6, 0xFF, 0xBA, 0xFF, 0x12, 0x00,
+ 0xA6, 0xFF, 0xAC, 0xFF, 0x14, 0x00, 0x95, 0xFF,
+ 0x9A, 0xFF, 0x16, 0x00, 0x85, 0xFF, 0x85, 0xFF,
+ 0x10, 0x00, 0x08, 0x00, 0xBD, 0xFF, 0x10, 0x00,
+ 0x18, 0x00, 0xBD, 0xFF, 0x10, 0x00, 0x29, 0x00,
+ 0xBD, 0xFF, 0x10, 0x00, 0x39, 0x00, 0xBD, 0xFF,
+ 0x13, 0x00, 0x4A, 0x00, 0xA6, 0xFF, 0x15, 0x00,
+ 0x5A, 0x00, 0x93, 0xFF, 0x17, 0x00, 0x6B, 0x00,
+ 0x7C, 0xFF, 0x19, 0x00, 0x7B, 0x00, 0x60, 0xFF,
+ 0x10, 0x00, 0xF8, 0xFF, 0xBD, 0xFF, 0x10, 0x00,
+ 0xE8, 0xFF, 0xBD, 0xFF, 0x10, 0x00, 0xD7, 0xFF,
+ 0xBD, 0xFF, 0x10, 0x00, 0xC7, 0xFF, 0xBD, 0xFF,
+ 0x13, 0x00, 0xB6, 0xFF, 0xA6, 0xFF, 0x15, 0x00,
+ 0xA6, 0xFF, 0x93, 0xFF, 0x17, 0x00, 0x95, 0xFF,
+ 0x7C, 0xFF, 0x19, 0x00, 0x85, 0xFF, 0x60, 0xFF,
+ 0x12, 0x00, 0x08, 0x00, 0xAE, 0xFF, 0x12, 0x00,
+ 0x18, 0x00, 0xAE, 0xFF, 0x12, 0x00, 0x29, 0x00,
+ 0xAE, 0xFF, 0x12, 0x00, 0x39, 0x00, 0xAE, 0xFF,
+ 0x15, 0x00, 0x4A, 0x00, 0x92, 0xFF, 0x17, 0x00,
+ 0x5A, 0x00, 0x7B, 0xFF, 0x19, 0x00, 0x6B, 0x00,
+ 0x5F, 0xFF, 0x1B, 0x00, 0x7B, 0x00, 0x3D, 0xFF,
+ 0x12, 0x00, 0xF8, 0xFF, 0xAE, 0xFF, 0x12, 0x00,
+ 0xE8, 0xFF, 0xAE, 0xFF, 0x12, 0x00, 0xD7, 0xFF,
+ 0xAE, 0xFF, 0x12, 0x00, 0xC7, 0xFF, 0xAE, 0xFF,
+ 0x15, 0x00, 0xB6, 0xFF, 0x92, 0xFF, 0x17, 0x00,
+ 0xA6, 0xFF, 0x7B, 0xFF, 0x19, 0x00, 0x95, 0xFF,
+ 0x5F, 0xFF, 0x1B, 0x00, 0x85, 0xFF, 0x3D, 0xFF,
+ 0x14, 0x00, 0x08, 0x00, 0x9F, 0xFF, 0x14, 0x00,
+ 0x18, 0x00, 0x9F, 0xFF, 0x14, 0x00, 0x29, 0x00,
+ 0x9F, 0xFF, 0x14, 0x00, 0x39, 0x00, 0x9F, 0xFF,
+ 0x17, 0x00, 0x4A, 0x00, 0x7E, 0xFF, 0x19, 0x00,
+ 0x5A, 0x00, 0x63, 0xFF, 0x1B, 0x00, 0x6B, 0x00,
+ 0x41, 0xFF, 0x1D, 0x00, 0x7B, 0x00, 0x19, 0xFF,
+ 0x14, 0x00, 0xF8, 0xFF, 0x9F, 0xFF, 0x14, 0x00,
+ 0xE8, 0xFF, 0x9F, 0xFF, 0x14, 0x00, 0xD7, 0xFF,
+ 0x9F, 0xFF, 0x14, 0x00, 0xC7, 0xFF, 0x9F, 0xFF,
+ 0x17, 0x00, 0xB6, 0xFF, 0x7E, 0xFF, 0x19, 0x00,
+ 0xA6, 0xFF, 0x63, 0xFF, 0x1B, 0x00, 0x95, 0xFF,
+ 0x41, 0xFF, 0x1D, 0x00, 0x85, 0xFF, 0x19, 0xFF,
+ 0x16, 0x00, 0x08, 0x00, 0x90, 0xFF, 0x16, 0x00,
+ 0x18, 0x00, 0x90, 0xFF, 0x16, 0x00, 0x29, 0x00,
+ 0x90, 0xFF, 0x16, 0x00, 0x39, 0x00, 0x90, 0xFF,
+ 0x19, 0x00, 0x4A, 0x00, 0x6A, 0xFF, 0x1B, 0x00,
+ 0x5A, 0x00, 0x4B, 0xFF, 0x1D, 0x00, 0x6B, 0x00,
+ 0x24, 0xFF, 0x1F, 0x00, 0x7B, 0x00, 0xF6, 0xFE,
+ 0x16, 0x00, 0xF8, 0xFF, 0x90, 0xFF, 0x16, 0x00,
+ 0xE8, 0xFF, 0x90, 0xFF, 0x16, 0x00, 0xD7, 0xFF,
+ 0x90, 0xFF, 0x16, 0x00, 0xC7, 0xFF, 0x90, 0xFF,
+ 0x19, 0x00, 0xB6, 0xFF, 0x6A, 0xFF, 0x1B, 0x00,
+ 0xA6, 0xFF, 0x4B, 0xFF, 0x1D, 0x00, 0x95, 0xFF,
+ 0x24, 0xFF, 0x1F, 0x00, 0x85, 0xFF, 0xF6, 0xFE,
+ 0x0E, 0x00, 0x09, 0x00, 0x08, 0x00, 0x0E, 0x00,
+ 0x1B, 0x00, 0x08, 0x00, 0x0E, 0x00, 0x2D, 0x00,
+ 0x08, 0x00, 0x0E, 0x00, 0x3F, 0x00, 0x08, 0x00,
+ 0x11, 0x00, 0x52, 0x00, 0x0B, 0x00, 0x13, 0x00,
+ 0x64, 0x00, 0x0D, 0x00, 0x15, 0x00, 0x76, 0x00,
+ 0x10, 0x00, 0x17, 0x00, 0x88, 0x00, 0x13, 0x00,
+ 0x0E, 0x00, 0xF7, 0xFF, 0x08, 0x00, 0x0E, 0x00,
+ 0xE5, 0xFF, 0x08, 0x00, 0x0E, 0x00, 0xD3, 0xFF,
+ 0x08, 0x00, 0x0E, 0x00, 0xC1, 0xFF, 0x08, 0x00,
+ 0x11, 0x00, 0xAE, 0xFF, 0x0B, 0x00, 0x13, 0x00,
+ 0x9C, 0xFF, 0x0D, 0x00, 0x15, 0x00, 0x8A, 0xFF,
+ 0x10, 0x00, 0x17, 0x00, 0x78, 0xFF, 0x13, 0x00,
+ 0x0E, 0x00, 0x09, 0x00, 0x18, 0x00, 0x0E, 0x00,
+ 0x1B, 0x00, 0x18, 0x00, 0x0E, 0x00, 0x2D, 0x00,
+ 0x18, 0x00, 0x0E, 0x00, 0x3F, 0x00, 0x18, 0x00,
+ 0x11, 0x00, 0x52, 0x00, 0x21, 0x00, 0x13, 0x00,
+ 0x64, 0x00, 0x27, 0x00, 0x15, 0x00, 0x76, 0x00,
+ 0x30, 0x00, 0x17, 0x00, 0x88, 0x00, 0x3A, 0x00,
+ 0x0E, 0x00, 0xF7, 0xFF, 0x18, 0x00, 0x0E, 0x00,
+ 0xE5, 0xFF, 0x18, 0x00, 0x0E, 0x00, 0xD3, 0xFF,
+ 0x18, 0x00, 0x0E, 0x00, 0xC1, 0xFF, 0x18, 0x00,
+ 0x11, 0x00, 0xAE, 0xFF, 0x21, 0x00, 0x13, 0x00,
+ 0x9C, 0xFF, 0x27, 0x00, 0x15, 0x00, 0x8A, 0xFF,
+ 0x30, 0x00, 0x17, 0x00, 0x78, 0xFF, 0x3A, 0x00,
+ 0x0E, 0x00, 0x09, 0x00, 0x29, 0x00, 0x0E, 0x00,
+ 0x1B, 0x00, 0x29, 0x00, 0x0E, 0x00, 0x2D, 0x00,
+ 0x29, 0x00, 0x0E, 0x00, 0x3F, 0x00, 0x29, 0x00,
+ 0x11, 0x00, 0x52, 0x00, 0x37, 0x00, 0x13, 0x00,
+ 0x64, 0x00, 0x42, 0x00, 0x15, 0x00, 0x76, 0x00,
+ 0x51, 0x00, 0x17, 0x00, 0x88, 0x00, 0x61, 0x00,
+ 0x0E, 0x00, 0xF7, 0xFF, 0x29, 0x00, 0x0E, 0x00,
+ 0xE5, 0xFF, 0x29, 0x00, 0x0E, 0x00, 0xD3, 0xFF,
+ 0x29, 0x00, 0x0E, 0x00, 0xC1, 0xFF, 0x29, 0x00,
+ 0x11, 0x00, 0xAE, 0xFF, 0x37, 0x00, 0x13, 0x00,
+ 0x9C, 0xFF, 0x42, 0x00, 0x15, 0x00, 0x8A, 0xFF,
+ 0x51, 0x00, 0x17, 0x00, 0x78, 0xFF, 0x61, 0x00,
+ 0x0E, 0x00, 0x09, 0x00, 0x39, 0x00, 0x0E, 0x00,
+ 0x1B, 0x00, 0x39, 0x00, 0x0E, 0x00, 0x2D, 0x00,
+ 0x39, 0x00, 0x0E, 0x00, 0x3F, 0x00, 0x39, 0x00,
+ 0x11, 0x00, 0x52, 0x00, 0x4D, 0x00, 0x13, 0x00,
+ 0x64, 0x00, 0x5C, 0x00, 0x15, 0x00, 0x76, 0x00,
+ 0x71, 0x00, 0x17, 0x00, 0x88, 0x00, 0x88, 0x00,
+ 0x0E, 0x00, 0xF7, 0xFF, 0x39, 0x00, 0x0E, 0x00,
+ 0xE5, 0xFF, 0x39, 0x00, 0x0E, 0x00, 0xD3, 0xFF,
+ 0x39, 0x00, 0x0E, 0x00, 0xC1, 0xFF, 0x39, 0x00,
+ 0x11, 0x00, 0xAE, 0xFF, 0x4D, 0x00, 0x13, 0x00,
+ 0x9C, 0xFF, 0x5C, 0x00, 0x15, 0x00, 0x8A, 0xFF,
+ 0x71, 0x00, 0x17, 0x00, 0x78, 0xFF, 0x88, 0x00,
+ 0x11, 0x00, 0x09, 0x00, 0x4A, 0x00, 0x11, 0x00,
+ 0x1B, 0x00, 0x4A, 0x00, 0x11, 0x00, 0x2D, 0x00,
+ 0x4A, 0x00, 0x11, 0x00, 0x3F, 0x00, 0x4A, 0x00,
+ 0x14, 0x00, 0x52, 0x00, 0x63, 0x00, 0x16, 0x00,
+ 0x64, 0x00, 0x78, 0x00, 0x18, 0x00, 0x76, 0x00,
+ 0x92, 0x00, 0x1A, 0x00, 0x88, 0x00, 0xB0, 0x00,
+ 0x11, 0x00, 0xF7, 0xFF, 0x4A, 0x00, 0x11, 0x00,
+ 0xE5, 0xFF, 0x4A, 0x00, 0x11, 0x00, 0xD3, 0xFF,
+ 0x4A, 0x00, 0x11, 0x00, 0xC1, 0xFF, 0x4A, 0x00,
+ 0x14, 0x00, 0xAE, 0xFF, 0x63, 0x00, 0x16, 0x00,
+ 0x9C, 0xFF, 0x78, 0x00, 0x18, 0x00, 0x8A, 0xFF,
+ 0x92, 0x00, 0x1A, 0x00, 0x78, 0xFF, 0xB0, 0x00,
+ 0x13, 0x00, 0x09, 0x00, 0x5A, 0x00, 0x13, 0x00,
+ 0x1B, 0x00, 0x5A, 0x00, 0x13, 0x00, 0x2D, 0x00,
+ 0x5A, 0x00, 0x13, 0x00, 0x3F, 0x00, 0x5A, 0x00,
+ 0x16, 0x00, 0x52, 0x00, 0x79, 0x00, 0x18, 0x00,
+ 0x64, 0x00, 0x92, 0x00, 0x1A, 0x00, 0x76, 0x00,
+ 0xB2, 0x00, 0x1C, 0x00, 0x88, 0x00, 0xD7, 0x00,
+ 0x13, 0x00, 0xF7, 0xFF, 0x5A, 0x00, 0x13, 0x00,
+ 0xE5, 0xFF, 0x5A, 0x00, 0x13, 0x00, 0xD3, 0xFF,
+ 0x5A, 0x00, 0x13, 0x00, 0xC1, 0xFF, 0x5A, 0x00,
+ 0x16, 0x00, 0xAE, 0xFF, 0x79, 0x00, 0x18, 0x00,
+ 0x9C, 0xFF, 0x92, 0x00, 0x1A, 0x00, 0x8A, 0xFF,
+ 0xB2, 0x00, 0x1C, 0x00, 0x78, 0xFF, 0xD7, 0x00,
+ 0x15, 0x00, 0x09, 0x00, 0x6B, 0x00, 0x15, 0x00,
+ 0x1B, 0x00, 0x6B, 0x00, 0x15, 0x00, 0x2D, 0x00,
+ 0x6B, 0x00, 0x15, 0x00, 0x3F, 0x00, 0x6B, 0x00,
+ 0x18, 0x00, 0x52, 0x00, 0x8F, 0x00, 0x1A, 0x00,
+ 0x64, 0x00, 0xAD, 0x00, 0x1C, 0x00, 0x76, 0x00,
+ 0xD3, 0x00, 0x1E, 0x00, 0x88, 0x00, 0xFE, 0x00,
+ 0x15, 0x00, 0xF7, 0xFF, 0x6B, 0x00, 0x15, 0x00,
+ 0xE5, 0xFF, 0x6B, 0x00, 0x15, 0x00, 0xD3, 0xFF,
+ 0x6B, 0x00, 0x15, 0x00, 0xC1, 0xFF, 0x6B, 0x00,
+ 0x18, 0x00, 0xAE, 0xFF, 0x8F, 0x00, 0x1A, 0x00,
+ 0x9C, 0xFF, 0xAD, 0x00, 0x1C, 0x00, 0x8A, 0xFF,
+ 0xD3, 0x00, 0x1E, 0x00, 0x78, 0xFF, 0xFE, 0x00,
+ 0x17, 0x00, 0x09, 0x00, 0x7B, 0x00, 0x17, 0x00,
+ 0x1B, 0x00, 0x7B, 0x00, 0x17, 0x00, 0x2D, 0x00,
+ 0x7B, 0x00, 0x17, 0x00, 0x3F, 0x00, 0x7B, 0x00,
+ 0x1A, 0x00, 0x52, 0x00, 0xA5, 0x00, 0x1C, 0x00,
+ 0x64, 0x00, 0xC7, 0x00, 0x1E, 0x00, 0x76, 0x00,
+ 0xF3, 0x00, 0x20, 0x00, 0x88, 0x00, 0x25, 0x01,
+ 0x17, 0x00, 0xF7, 0xFF, 0x7B, 0x00, 0x17, 0x00,
+ 0xE5, 0xFF, 0x7B, 0x00, 0x17, 0x00, 0xD3, 0xFF,
+ 0x7B, 0x00, 0x17, 0x00, 0xC1, 0xFF, 0x7B, 0x00,
+ 0x1A, 0x00, 0xAE, 0xFF, 0xA5, 0x00, 0x1C, 0x00,
+ 0x9C, 0xFF, 0xC7, 0x00, 0x1E, 0x00, 0x8A, 0xFF,
+ 0xF3, 0x00, 0x20, 0x00, 0x78, 0xFF, 0x25, 0x01,
+ 0x0E, 0x00, 0x09, 0x00, 0xF8, 0xFF, 0x0E, 0x00,
+ 0x1B, 0x00, 0xF8, 0xFF, 0x0E, 0x00, 0x2D, 0x00,
+ 0xF8, 0xFF, 0x0E, 0x00, 0x3F, 0x00, 0xF8, 0xFF,
+ 0x11, 0x00, 0x52, 0x00, 0xF5, 0xFF, 0x13, 0x00,
+ 0x64, 0x00, 0xF3, 0xFF, 0x15, 0x00, 0x76, 0x00,
+ 0xF0, 0xFF, 0x17, 0x00, 0x88, 0x00, 0xED, 0xFF,
+ 0x0E, 0x00, 0xF7, 0xFF, 0xF8, 0xFF, 0x0E, 0x00,
+ 0xE5, 0xFF, 0xF8, 0xFF, 0x0E, 0x00, 0xD3, 0xFF,
+ 0xF8, 0xFF, 0x0E, 0x00, 0xC1, 0xFF, 0xF8, 0xFF,
+ 0x11, 0x00, 0xAE, 0xFF, 0xF5, 0xFF, 0x13, 0x00,
+ 0x9C, 0xFF, 0xF3, 0xFF, 0x15, 0x00, 0x8A, 0xFF,
+ 0xF0, 0xFF, 0x17, 0x00, 0x78, 0xFF, 0xED, 0xFF,
+ 0x0E, 0x00, 0x09, 0x00, 0xE8, 0xFF, 0x0E, 0x00,
+ 0x1B, 0x00, 0xE8, 0xFF, 0x0E, 0x00, 0x2D, 0x00,
+ 0xE8, 0xFF, 0x0E, 0x00, 0x3F, 0x00, 0xE8, 0xFF,
+ 0x11, 0x00, 0x52, 0x00, 0xDF, 0xFF, 0x13, 0x00,
+ 0x64, 0x00, 0xD9, 0xFF, 0x15, 0x00, 0x76, 0x00,
+ 0xD0, 0xFF, 0x17, 0x00, 0x88, 0x00, 0xC6, 0xFF,
+ 0x0E, 0x00, 0xF7, 0xFF, 0xE8, 0xFF, 0x0E, 0x00,
+ 0xE5, 0xFF, 0xE8, 0xFF, 0x0E, 0x00, 0xD3, 0xFF,
+ 0xE8, 0xFF, 0x0E, 0x00, 0xC1, 0xFF, 0xE8, 0xFF,
+ 0x11, 0x00, 0xAE, 0xFF, 0xDF, 0xFF, 0x13, 0x00,
+ 0x9C, 0xFF, 0xD9, 0xFF, 0x15, 0x00, 0x8A, 0xFF,
+ 0xD0, 0xFF, 0x17, 0x00, 0x78, 0xFF, 0xC6, 0xFF,
+ 0x0E, 0x00, 0x09, 0x00, 0xD7, 0xFF, 0x0E, 0x00,
+ 0x1B, 0x00, 0xD7, 0xFF, 0x0E, 0x00, 0x2D, 0x00,
+ 0xD7, 0xFF, 0x0E, 0x00, 0x3F, 0x00, 0xD7, 0xFF,
+ 0x11, 0x00, 0x52, 0x00, 0xC9, 0xFF, 0x13, 0x00,
+ 0x64, 0x00, 0xBE, 0xFF, 0x15, 0x00, 0x76, 0x00,
+ 0xAF, 0xFF, 0x17, 0x00, 0x88, 0x00, 0x9F, 0xFF,
+ 0x0E, 0x00, 0xF7, 0xFF, 0xD7, 0xFF, 0x0E, 0x00,
+ 0xE5, 0xFF, 0xD7, 0xFF, 0x0E, 0x00, 0xD3, 0xFF,
+ 0xD7, 0xFF, 0x0E, 0x00, 0xC1, 0xFF, 0xD7, 0xFF,
+ 0x11, 0x00, 0xAE, 0xFF, 0xC9, 0xFF, 0x13, 0x00,
+ 0x9C, 0xFF, 0xBE, 0xFF, 0x15, 0x00, 0x8A, 0xFF,
+ 0xAF, 0xFF, 0x17, 0x00, 0x78, 0xFF, 0x9F, 0xFF,
+ 0x0E, 0x00, 0x09, 0x00, 0xC7, 0xFF, 0x0E, 0x00,
+ 0x1B, 0x00, 0xC7, 0xFF, 0x0E, 0x00, 0x2D, 0x00,
+ 0xC7, 0xFF, 0x0E, 0x00, 0x3F, 0x00, 0xC7, 0xFF,
+ 0x11, 0x00, 0x52, 0x00, 0xB3, 0xFF, 0x13, 0x00,
+ 0x64, 0x00, 0xA4, 0xFF, 0x15, 0x00, 0x76, 0x00,
+ 0x8F, 0xFF, 0x17, 0x00, 0x88, 0x00, 0x78, 0xFF,
+ 0x0E, 0x00, 0xF7, 0xFF, 0xC7, 0xFF, 0x0E, 0x00,
+ 0xE5, 0xFF, 0xC7, 0xFF, 0x0E, 0x00, 0xD3, 0xFF,
+ 0xC7, 0xFF, 0x0E, 0x00, 0xC1, 0xFF, 0xC7, 0xFF,
+ 0x11, 0x00, 0xAE, 0xFF, 0xB3, 0xFF, 0x13, 0x00,
+ 0x9C, 0xFF, 0xA4, 0xFF, 0x15, 0x00, 0x8A, 0xFF,
+ 0x8F, 0xFF, 0x17, 0x00, 0x78, 0xFF, 0x78, 0xFF,
+ 0x11, 0x00, 0x09, 0x00, 0xB6, 0xFF, 0x11, 0x00,
+ 0x1B, 0x00, 0xB6, 0xFF, 0x11, 0x00, 0x2D, 0x00,
+ 0xB6, 0xFF, 0x11, 0x00, 0x3F, 0x00, 0xB6, 0xFF,
+ 0x14, 0x00, 0x52, 0x00, 0x9D, 0xFF, 0x16, 0x00,
+ 0x64, 0x00, 0x88, 0xFF, 0x18, 0x00, 0x76, 0x00,
+ 0x6E, 0xFF, 0x1A, 0x00, 0x88, 0x00, 0x50, 0xFF,
+ 0x11, 0x00, 0xF7, 0xFF, 0xB6, 0xFF, 0x11, 0x00,
+ 0xE5, 0xFF, 0xB6, 0xFF, 0x11, 0x00, 0xD3, 0xFF,
+ 0xB6, 0xFF, 0x11, 0x00, 0xC1, 0xFF, 0xB6, 0xFF,
+ 0x14, 0x00, 0xAE, 0xFF, 0x9D, 0xFF, 0x16, 0x00,
+ 0x9C, 0xFF, 0x88, 0xFF, 0x18, 0x00, 0x8A, 0xFF,
+ 0x6E, 0xFF, 0x1A, 0x00, 0x78, 0xFF, 0x50, 0xFF,
+ 0x13, 0x00, 0x09, 0x00, 0xA6, 0xFF, 0x13, 0x00,
+ 0x1B, 0x00, 0xA6, 0xFF, 0x13, 0x00, 0x2D, 0x00,
+ 0xA6, 0xFF, 0x13, 0x00, 0x3F, 0x00, 0xA6, 0xFF,
+ 0x16, 0x00, 0x52, 0x00, 0x87, 0xFF, 0x18, 0x00,
+ 0x64, 0x00, 0x6E, 0xFF, 0x1A, 0x00, 0x76, 0x00,
+ 0x4E, 0xFF, 0x1C, 0x00, 0x88, 0x00, 0x29, 0xFF,
+ 0x13, 0x00, 0xF7, 0xFF, 0xA6, 0xFF, 0x13, 0x00,
+ 0xE5, 0xFF, 0xA6, 0xFF, 0x13, 0x00, 0xD3, 0xFF,
+ 0xA6, 0xFF, 0x13, 0x00, 0xC1, 0xFF, 0xA6, 0xFF,
+ 0x16, 0x00, 0xAE, 0xFF, 0x87, 0xFF, 0x18, 0x00,
+ 0x9C, 0xFF, 0x6E, 0xFF, 0x1A, 0x00, 0x8A, 0xFF,
+ 0x4E, 0xFF, 0x1C, 0x00, 0x78, 0xFF, 0x29, 0xFF,
+ 0x15, 0x00, 0x09, 0x00, 0x95, 0xFF, 0x15, 0x00,
+ 0x1B, 0x00, 0x95, 0xFF, 0x15, 0x00, 0x2D, 0x00,
+ 0x95, 0xFF, 0x15, 0x00, 0x3F, 0x00, 0x95, 0xFF,
+ 0x18, 0x00, 0x52, 0x00, 0x71, 0xFF, 0x1A, 0x00,
+ 0x64, 0x00, 0x53, 0xFF, 0x1C, 0x00, 0x76, 0x00,
+ 0x2D, 0xFF, 0x1E, 0x00, 0x88, 0x00, 0x02, 0xFF,
+ 0x15, 0x00, 0xF7, 0xFF, 0x95, 0xFF, 0x15, 0x00,
+ 0xE5, 0xFF, 0x95, 0xFF, 0x15, 0x00, 0xD3, 0xFF,
+ 0x95, 0xFF, 0x15, 0x00, 0xC1, 0xFF, 0x95, 0xFF,
+ 0x18, 0x00, 0xAE, 0xFF, 0x71, 0xFF, 0x1A, 0x00,
+ 0x9C, 0xFF, 0x53, 0xFF, 0x1C, 0x00, 0x8A, 0xFF,
+ 0x2D, 0xFF, 0x1E, 0x00, 0x78, 0xFF, 0x02, 0xFF,
+ 0x17, 0x00, 0x09, 0x00, 0x85, 0xFF, 0x17, 0x00,
+ 0x1B, 0x00, 0x85, 0xFF, 0x17, 0x00, 0x2D, 0x00,
+ 0x85, 0xFF, 0x17, 0x00, 0x3F, 0x00, 0x85, 0xFF,
+ 0x1A, 0x00, 0x52, 0x00, 0x5B, 0xFF, 0x1C, 0x00,
+ 0x64, 0x00, 0x39, 0xFF, 0x1E, 0x00, 0x76, 0x00,
+ 0x0D, 0xFF, 0x20, 0x00, 0x88, 0x00, 0xDB, 0xFE,
+ 0x17, 0x00, 0xF7, 0xFF, 0x85, 0xFF, 0x17, 0x00,
+ 0xE5, 0xFF, 0x85, 0xFF, 0x17, 0x00, 0xD3, 0xFF,
+ 0x85, 0xFF, 0x17, 0x00, 0xC1, 0xFF, 0x85, 0xFF,
+ 0x1A, 0x00, 0xAE, 0xFF, 0x5B, 0xFF, 0x1C, 0x00,
+ 0x9C, 0xFF, 0x39, 0xFF, 0x1E, 0x00, 0x8A, 0xFF,
+ 0x0D, 0xFF, 0x20, 0x00, 0x78, 0xFF, 0xDB, 0xFE,
+ 0x0F, 0x00, 0x0A, 0x00, 0x09, 0x00, 0x0F, 0x00,
+ 0x1E, 0x00, 0x09, 0x00, 0x0F, 0x00, 0x32, 0x00,
+ 0x09, 0x00, 0x0F, 0x00, 0x46, 0x00, 0x09, 0x00,
+ 0x12, 0x00, 0x5A, 0x00, 0x0C, 0x00, 0x14, 0x00,
+ 0x6E, 0x00, 0x0E, 0x00, 0x16, 0x00, 0x82, 0x00,
+ 0x11, 0x00, 0x18, 0x00, 0x96, 0x00, 0x15, 0x00,
+ 0x0F, 0x00, 0xF6, 0xFF, 0x09, 0x00, 0x0F, 0x00,
+ 0xE2, 0xFF, 0x09, 0x00, 0x0F, 0x00, 0xCE, 0xFF,
+ 0x09, 0x00, 0x0F, 0x00, 0xBA, 0xFF, 0x09, 0x00,
+ 0x12, 0x00, 0xA6, 0xFF, 0x0C, 0x00, 0x14, 0x00,
+ 0x92, 0xFF, 0x0E, 0x00, 0x16, 0x00, 0x7E, 0xFF,
+ 0x11, 0x00, 0x18, 0x00, 0x6A, 0xFF, 0x15, 0x00,
+ 0x0F, 0x00, 0x0A, 0x00, 0x1B, 0x00, 0x0F, 0x00,
+ 0x1E, 0x00, 0x1B, 0x00, 0x0F, 0x00, 0x32, 0x00,
+ 0x1B, 0x00, 0x0F, 0x00, 0x46, 0x00, 0x1B, 0x00,
+ 0x12, 0x00, 0x5A, 0x00, 0x24, 0x00, 0x14, 0x00,
+ 0x6E, 0x00, 0x2B, 0x00, 0x16, 0x00, 0x82, 0x00,
+ 0x34, 0x00, 0x18, 0x00, 0x96, 0x00, 0x40, 0x00,
+ 0x0F, 0x00, 0xF6, 0xFF, 0x1B, 0x00, 0x0F, 0x00,
+ 0xE2, 0xFF, 0x1B, 0x00, 0x0F, 0x00, 0xCE, 0xFF,
+ 0x1B, 0x00, 0x0F, 0x00, 0xBA, 0xFF, 0x1B, 0x00,
+ 0x12, 0x00, 0xA6, 0xFF, 0x24, 0x00, 0x14, 0x00,
+ 0x92, 0xFF, 0x2B, 0x00, 0x16, 0x00, 0x7E, 0xFF,
+ 0x34, 0x00, 0x18, 0x00, 0x6A, 0xFF, 0x40, 0x00,
+ 0x0F, 0x00, 0x0A, 0x00, 0x2D, 0x00, 0x0F, 0x00,
+ 0x1E, 0x00, 0x2D, 0x00, 0x0F, 0x00, 0x32, 0x00,
+ 0x2D, 0x00, 0x0F, 0x00, 0x46, 0x00, 0x2D, 0x00,
+ 0x12, 0x00, 0x5A, 0x00, 0x3C, 0x00, 0x14, 0x00,
+ 0x6E, 0x00, 0x49, 0x00, 0x16, 0x00, 0x82, 0x00,
+ 0x58, 0x00, 0x18, 0x00, 0x96, 0x00, 0x6B, 0x00,
+ 0x0F, 0x00, 0xF6, 0xFF, 0x2D, 0x00, 0x0F, 0x00,
+ 0xE2, 0xFF, 0x2D, 0x00, 0x0F, 0x00, 0xCE, 0xFF,
+ 0x2D, 0x00, 0x0F, 0x00, 0xBA, 0xFF, 0x2D, 0x00,
+ 0x12, 0x00, 0xA6, 0xFF, 0x3C, 0x00, 0x14, 0x00,
+ 0x92, 0xFF, 0x49, 0x00, 0x16, 0x00, 0x7E, 0xFF,
+ 0x58, 0x00, 0x18, 0x00, 0x6A, 0xFF, 0x6B, 0x00,
+ 0x0F, 0x00, 0x0A, 0x00, 0x3F, 0x00, 0x0F, 0x00,
+ 0x1E, 0x00, 0x3F, 0x00, 0x0F, 0x00, 0x32, 0x00,
+ 0x3F, 0x00, 0x0F, 0x00, 0x46, 0x00, 0x3F, 0x00,
+ 0x12, 0x00, 0x5A, 0x00, 0x54, 0x00, 0x14, 0x00,
+ 0x6E, 0x00, 0x66, 0x00, 0x16, 0x00, 0x82, 0x00,
+ 0x7B, 0x00, 0x18, 0x00, 0x96, 0x00, 0x96, 0x00,
+ 0x0F, 0x00, 0xF6, 0xFF, 0x3F, 0x00, 0x0F, 0x00,
+ 0xE2, 0xFF, 0x3F, 0x00, 0x0F, 0x00, 0xCE, 0xFF,
+ 0x3F, 0x00, 0x0F, 0x00, 0xBA, 0xFF, 0x3F, 0x00,
+ 0x12, 0x00, 0xA6, 0xFF, 0x54, 0x00, 0x14, 0x00,
+ 0x92, 0xFF, 0x66, 0x00, 0x16, 0x00, 0x7E, 0xFF,
+ 0x7B, 0x00, 0x18, 0x00, 0x6A, 0xFF, 0x96, 0x00,
+ 0x12, 0x00, 0x0A, 0x00, 0x52, 0x00, 0x12, 0x00,
+ 0x1E, 0x00, 0x52, 0x00, 0x12, 0x00, 0x32, 0x00,
+ 0x52, 0x00, 0x12, 0x00, 0x46, 0x00, 0x52, 0x00,
+ 0x15, 0x00, 0x5A, 0x00, 0x6D, 0x00, 0x17, 0x00,
+ 0x6E, 0x00, 0x84, 0x00, 0x19, 0x00, 0x82, 0x00,
+ 0xA0, 0x00, 0x1B, 0x00, 0x96, 0x00, 0xC2, 0x00,
+ 0x12, 0x00, 0xF6, 0xFF, 0x52, 0x00, 0x12, 0x00,
+ 0xE2, 0xFF, 0x52, 0x00, 0x12, 0x00, 0xCE, 0xFF,
+ 0x52, 0x00, 0x12, 0x00, 0xBA, 0xFF, 0x52, 0x00,
+ 0x15, 0x00, 0xA6, 0xFF, 0x6D, 0x00, 0x17, 0x00,
+ 0x92, 0xFF, 0x84, 0x00, 0x19, 0x00, 0x7E, 0xFF,
+ 0xA0, 0x00, 0x1B, 0x00, 0x6A, 0xFF, 0xC2, 0x00,
+ 0x14, 0x00, 0x0A, 0x00, 0x64, 0x00, 0x14, 0x00,
+ 0x1E, 0x00, 0x64, 0x00, 0x14, 0x00, 0x32, 0x00,
+ 0x64, 0x00, 0x14, 0x00, 0x46, 0x00, 0x64, 0x00,
+ 0x17, 0x00, 0x5A, 0x00, 0x85, 0x00, 0x19, 0x00,
+ 0x6E, 0x00, 0xA1, 0x00, 0x1B, 0x00, 0x82, 0x00,
+ 0xC3, 0x00, 0x1D, 0x00, 0x96, 0x00, 0xED, 0x00,
+ 0x14, 0x00, 0xF6, 0xFF, 0x64, 0x00, 0x14, 0x00,
+ 0xE2, 0xFF, 0x64, 0x00, 0x14, 0x00, 0xCE, 0xFF,
+ 0x64, 0x00, 0x14, 0x00, 0xBA, 0xFF, 0x64, 0x00,
+ 0x17, 0x00, 0xA6, 0xFF, 0x85, 0x00, 0x19, 0x00,
+ 0x92, 0xFF, 0xA1, 0x00, 0x1B, 0x00, 0x7E, 0xFF,
+ 0xC3, 0x00, 0x1D, 0x00, 0x6A, 0xFF, 0xED, 0x00,
+ 0x16, 0x00, 0x0A, 0x00, 0x76, 0x00, 0x16, 0x00,
+ 0x1E, 0x00, 0x76, 0x00, 0x16, 0x00, 0x32, 0x00,
+ 0x76, 0x00, 0x16, 0x00, 0x46, 0x00, 0x76, 0x00,
+ 0x19, 0x00, 0x5A, 0x00, 0x9D, 0x00, 0x1B, 0x00,
+ 0x6E, 0x00, 0xBF, 0x00, 0x1D, 0x00, 0x82, 0x00,
+ 0xE7, 0x00, 0x1F, 0x00, 0x96, 0x00, 0x18, 0x01,
+ 0x16, 0x00, 0xF6, 0xFF, 0x76, 0x00, 0x16, 0x00,
+ 0xE2, 0xFF, 0x76, 0x00, 0x16, 0x00, 0xCE, 0xFF,
+ 0x76, 0x00, 0x16, 0x00, 0xBA, 0xFF, 0x76, 0x00,
+ 0x19, 0x00, 0xA6, 0xFF, 0x9D, 0x00, 0x1B, 0x00,
+ 0x92, 0xFF, 0xBF, 0x00, 0x1D, 0x00, 0x7E, 0xFF,
+ 0xE7, 0x00, 0x1F, 0x00, 0x6A, 0xFF, 0x18, 0x01,
+ 0x18, 0x00, 0x0A, 0x00, 0x88, 0x00, 0x18, 0x00,
+ 0x1E, 0x00, 0x88, 0x00, 0x18, 0x00, 0x32, 0x00,
+ 0x88, 0x00, 0x18, 0x00, 0x46, 0x00, 0x88, 0x00,
+ 0x1B, 0x00, 0x5A, 0x00, 0xB5, 0x00, 0x1D, 0x00,
+ 0x6E, 0x00, 0xDC, 0x00, 0x1F, 0x00, 0x82, 0x00,
+ 0x0A, 0x01, 0x21, 0x00, 0x96, 0x00, 0x43, 0x01,
+ 0x18, 0x00, 0xF6, 0xFF, 0x88, 0x00, 0x18, 0x00,
+ 0xE2, 0xFF, 0x88, 0x00, 0x18, 0x00, 0xCE, 0xFF,
+ 0x88, 0x00, 0x18, 0x00, 0xBA, 0xFF, 0x88, 0x00,
+ 0x1B, 0x00, 0xA6, 0xFF, 0xB5, 0x00, 0x1D, 0x00,
+ 0x92, 0xFF, 0xDC, 0x00, 0x1F, 0x00, 0x7E, 0xFF,
+ 0x0A, 0x01, 0x21, 0x00, 0x6A, 0xFF, 0x43, 0x01,
+ 0x0F, 0x00, 0x0A, 0x00, 0xF7, 0xFF, 0x0F, 0x00,
+ 0x1E, 0x00, 0xF7, 0xFF, 0x0F, 0x00, 0x32, 0x00,
+ 0xF7, 0xFF, 0x0F, 0x00, 0x46, 0x00, 0xF7, 0xFF,
+ 0x12, 0x00, 0x5A, 0x00, 0xF4, 0xFF, 0x14, 0x00,
+ 0x6E, 0x00, 0xF2, 0xFF, 0x16, 0x00, 0x82, 0x00,
+ 0xEF, 0xFF, 0x18, 0x00, 0x96, 0x00, 0xEB, 0xFF,
+ 0x0F, 0x00, 0xF6, 0xFF, 0xF7, 0xFF, 0x0F, 0x00,
+ 0xE2, 0xFF, 0xF7, 0xFF, 0x0F, 0x00, 0xCE, 0xFF,
+ 0xF7, 0xFF, 0x0F, 0x00, 0xBA, 0xFF, 0xF7, 0xFF,
+ 0x12, 0x00, 0xA6, 0xFF, 0xF4, 0xFF, 0x14, 0x00,
+ 0x92, 0xFF, 0xF2, 0xFF, 0x16, 0x00, 0x7E, 0xFF,
+ 0xEF, 0xFF, 0x18, 0x00, 0x6A, 0xFF, 0xEB, 0xFF,
+ 0x0F, 0x00, 0x0A, 0x00, 0xE5, 0xFF, 0x0F, 0x00,
+ 0x1E, 0x00, 0xE5, 0xFF, 0x0F, 0x00, 0x32, 0x00,
+ 0xE5, 0xFF, 0x0F, 0x00, 0x46, 0x00, 0xE5, 0xFF,
+ 0x12, 0x00, 0x5A, 0x00, 0xDC, 0xFF, 0x14, 0x00,
+ 0x6E, 0x00, 0xD5, 0xFF, 0x16, 0x00, 0x82, 0x00,
+ 0xCC, 0xFF, 0x18, 0x00, 0x96, 0x00, 0xC0, 0xFF,
+ 0x0F, 0x00, 0xF6, 0xFF, 0xE5, 0xFF, 0x0F, 0x00,
+ 0xE2, 0xFF, 0xE5, 0xFF, 0x0F, 0x00, 0xCE, 0xFF,
+ 0xE5, 0xFF, 0x0F, 0x00, 0xBA, 0xFF, 0xE5, 0xFF,
+ 0x12, 0x00, 0xA6, 0xFF, 0xDC, 0xFF, 0x14, 0x00,
+ 0x92, 0xFF, 0xD5, 0xFF, 0x16, 0x00, 0x7E, 0xFF,
+ 0xCC, 0xFF, 0x18, 0x00, 0x6A, 0xFF, 0xC0, 0xFF,
+ 0x0F, 0x00, 0x0A, 0x00, 0xD3, 0xFF, 0x0F, 0x00,
+ 0x1E, 0x00, 0xD3, 0xFF, 0x0F, 0x00, 0x32, 0x00,
+ 0xD3, 0xFF, 0x0F, 0x00, 0x46, 0x00, 0xD3, 0xFF,
+ 0x12, 0x00, 0x5A, 0x00, 0xC4, 0xFF, 0x14, 0x00,
+ 0x6E, 0x00, 0xB7, 0xFF, 0x16, 0x00, 0x82, 0x00,
+ 0xA8, 0xFF, 0x18, 0x00, 0x96, 0x00, 0x95, 0xFF,
+ 0x0F, 0x00, 0xF6, 0xFF, 0xD3, 0xFF, 0x0F, 0x00,
+ 0xE2, 0xFF, 0xD3, 0xFF, 0x0F, 0x00, 0xCE, 0xFF,
+ 0xD3, 0xFF, 0x0F, 0x00, 0xBA, 0xFF, 0xD3, 0xFF,
+ 0x12, 0x00, 0xA6, 0xFF, 0xC4, 0xFF, 0x14, 0x00,
+ 0x92, 0xFF, 0xB7, 0xFF, 0x16, 0x00, 0x7E, 0xFF,
+ 0xA8, 0xFF, 0x18, 0x00, 0x6A, 0xFF, 0x95, 0xFF,
+ 0x0F, 0x00, 0x0A, 0x00, 0xC1, 0xFF, 0x0F, 0x00,
+ 0x1E, 0x00, 0xC1, 0xFF, 0x0F, 0x00, 0x32, 0x00,
+ 0xC1, 0xFF, 0x0F, 0x00, 0x46, 0x00, 0xC1, 0xFF,
+ 0x12, 0x00, 0x5A, 0x00, 0xAC, 0xFF, 0x14, 0x00,
+ 0x6E, 0x00, 0x9A, 0xFF, 0x16, 0x00, 0x82, 0x00,
+ 0x85, 0xFF, 0x18, 0x00, 0x96, 0x00, 0x6A, 0xFF,
+ 0x0F, 0x00, 0xF6, 0xFF, 0xC1, 0xFF, 0x0F, 0x00,
+ 0xE2, 0xFF, 0xC1, 0xFF, 0x0F, 0x00, 0xCE, 0xFF,
+ 0xC1, 0xFF, 0x0F, 0x00, 0xBA, 0xFF, 0xC1, 0xFF,
+ 0x12, 0x00, 0xA6, 0xFF, 0xAC, 0xFF, 0x14, 0x00,
+ 0x92, 0xFF, 0x9A, 0xFF, 0x16, 0x00, 0x7E, 0xFF,
+ 0x85, 0xFF, 0x18, 0x00, 0x6A, 0xFF, 0x6A, 0xFF,
+ 0x12, 0x00, 0x0A, 0x00, 0xAE, 0xFF, 0x12, 0x00,
+ 0x1E, 0x00, 0xAE, 0xFF, 0x12, 0x00, 0x32, 0x00,
+ 0xAE, 0xFF, 0x12, 0x00, 0x46, 0x00, 0xAE, 0xFF,
+ 0x15, 0x00, 0x5A, 0x00, 0x93, 0xFF, 0x17, 0x00,
+ 0x6E, 0x00, 0x7C, 0xFF, 0x19, 0x00, 0x82, 0x00,
+ 0x60, 0xFF, 0x1B, 0x00, 0x96, 0x00, 0x3E, 0xFF,
+ 0x12, 0x00, 0xF6, 0xFF, 0xAE, 0xFF, 0x12, 0x00,
+ 0xE2, 0xFF, 0xAE, 0xFF, 0x12, 0x00, 0xCE, 0xFF,
+ 0xAE, 0xFF, 0x12, 0x00, 0xBA, 0xFF, 0xAE, 0xFF,
+ 0x15, 0x00, 0xA6, 0xFF, 0x93, 0xFF, 0x17, 0x00,
+ 0x92, 0xFF, 0x7C, 0xFF, 0x19, 0x00, 0x7E, 0xFF,
+ 0x60, 0xFF, 0x1B, 0x00, 0x6A, 0xFF, 0x3E, 0xFF,
+ 0x14, 0x00, 0x0A, 0x00, 0x9C, 0xFF, 0x14, 0x00,
+ 0x1E, 0x00, 0x9C, 0xFF, 0x14, 0x00, 0x32, 0x00,
+ 0x9C, 0xFF, 0x14, 0x00, 0x46, 0x00, 0x9C, 0xFF,
+ 0x17, 0x00, 0x5A, 0x00, 0x7B, 0xFF, 0x19, 0x00,
+ 0x6E, 0x00, 0x5F, 0xFF, 0x1B, 0x00, 0x82, 0x00,
+ 0x3D, 0xFF, 0x1D, 0x00, 0x96, 0x00, 0x13, 0xFF,
+ 0x14, 0x00, 0xF6, 0xFF, 0x9C, 0xFF, 0x14, 0x00,
+ 0xE2, 0xFF, 0x9C, 0xFF, 0x14, 0x00, 0xCE, 0xFF,
+ 0x9C, 0xFF, 0x14, 0x00, 0xBA, 0xFF, 0x9C, 0xFF,
+ 0x17, 0x00, 0xA6, 0xFF, 0x7B, 0xFF, 0x19, 0x00,
+ 0x92, 0xFF, 0x5F, 0xFF, 0x1B, 0x00, 0x7E, 0xFF,
+ 0x3D, 0xFF, 0x1D, 0x00, 0x6A, 0xFF, 0x13, 0xFF,
+ 0x16, 0x00, 0x0A, 0x00, 0x8A, 0xFF, 0x16, 0x00,
+ 0x1E, 0x00, 0x8A, 0xFF, 0x16, 0x00, 0x32, 0x00,
+ 0x8A, 0xFF, 0x16, 0x00, 0x46, 0x00, 0x8A, 0xFF,
+ 0x19, 0x00, 0x5A, 0x00, 0x63, 0xFF, 0x1B, 0x00,
+ 0x6E, 0x00, 0x41, 0xFF, 0x1D, 0x00, 0x82, 0x00,
+ 0x19, 0xFF, 0x1F, 0x00, 0x96, 0x00, 0xE8, 0xFE,
+ 0x16, 0x00, 0xF6, 0xFF, 0x8A, 0xFF, 0x16, 0x00,
+ 0xE2, 0xFF, 0x8A, 0xFF, 0x16, 0x00, 0xCE, 0xFF,
+ 0x8A, 0xFF, 0x16, 0x00, 0xBA, 0xFF, 0x8A, 0xFF,
+ 0x19, 0x00, 0xA6, 0xFF, 0x63, 0xFF, 0x1B, 0x00,
+ 0x92, 0xFF, 0x41, 0xFF, 0x1D, 0x00, 0x7E, 0xFF,
+ 0x19, 0xFF, 0x1F, 0x00, 0x6A, 0xFF, 0xE8, 0xFE,
+ 0x18, 0x00, 0x0A, 0x00, 0x78, 0xFF, 0x18, 0x00,
+ 0x1E, 0x00, 0x78, 0xFF, 0x18, 0x00, 0x32, 0x00,
+ 0x78, 0xFF, 0x18, 0x00, 0x46, 0x00, 0x78, 0xFF,
+ 0x1B, 0x00, 0x5A, 0x00, 0x4B, 0xFF, 0x1D, 0x00,
+ 0x6E, 0x00, 0x24, 0xFF, 0x1F, 0x00, 0x82, 0x00,
+ 0xF6, 0xFE, 0x21, 0x00, 0x96, 0x00, 0xBD, 0xFE,
+ 0x18, 0x00, 0xF6, 0xFF, 0x78, 0xFF, 0x18, 0x00,
+ 0xE2, 0xFF, 0x78, 0xFF, 0x18, 0x00, 0xCE, 0xFF,
+ 0x78, 0xFF, 0x18, 0x00, 0xBA, 0xFF, 0x78, 0xFF,
+ 0x1B, 0x00, 0xA6, 0xFF, 0x4B, 0xFF, 0x1D, 0x00,
+ 0x92, 0xFF, 0x24, 0xFF, 0x1F, 0x00, 0x7E, 0xFF,
+ 0xF6, 0xFE, 0x21, 0x00, 0x6A, 0xFF, 0xBD, 0xFE,
+ 0x10, 0x00, 0x0B, 0x00, 0x0A, 0x00, 0x10, 0x00,
+ 0x21, 0x00, 0x0A, 0x00, 0x10, 0x00, 0x37, 0x00,
+ 0x0A, 0x00, 0x10, 0x00, 0x4D, 0x00, 0x0A, 0x00,
+ 0x13, 0x00, 0x63, 0x00, 0x0D, 0x00, 0x15, 0x00,
+ 0x79, 0x00, 0x10, 0x00, 0x17, 0x00, 0x8F, 0x00,
+ 0x13, 0x00, 0x19, 0x00, 0xA5, 0x00, 0x17, 0x00,
+ 0x10, 0x00, 0xF5, 0xFF, 0x0A, 0x00, 0x10, 0x00,
+ 0xDF, 0xFF, 0x0A, 0x00, 0x10, 0x00, 0xC9, 0xFF,
+ 0x0A, 0x00, 0x10, 0x00, 0xB3, 0xFF, 0x0A, 0x00,
+ 0x13, 0x00, 0x9D, 0xFF, 0x0D, 0x00, 0x15, 0x00,
+ 0x87, 0xFF, 0x10, 0x00, 0x17, 0x00, 0x71, 0xFF,
+ 0x13, 0x00, 0x19, 0x00, 0x5B, 0xFF, 0x17, 0x00,
+ 0x10, 0x00, 0x0B, 0x00, 0x1E, 0x00, 0x10, 0x00,
+ 0x21, 0x00, 0x1E, 0x00, 0x10, 0x00, 0x37, 0x00,
+ 0x1E, 0x00, 0x10, 0x00, 0x4D, 0x00, 0x1E, 0x00,
+ 0x13, 0x00, 0x63, 0x00, 0x27, 0x00, 0x15, 0x00,
+ 0x79, 0x00, 0x30, 0x00, 0x17, 0x00, 0x8F, 0x00,
+ 0x3A, 0x00, 0x19, 0x00, 0xA5, 0x00, 0x46, 0x00,
+ 0x10, 0x00, 0xF5, 0xFF, 0x1E, 0x00, 0x10, 0x00,
+ 0xDF, 0xFF, 0x1E, 0x00, 0x10, 0x00, 0xC9, 0xFF,
+ 0x1E, 0x00, 0x10, 0x00, 0xB3, 0xFF, 0x1E, 0x00,
+ 0x13, 0x00, 0x9D, 0xFF, 0x27, 0x00, 0x15, 0x00,
+ 0x87, 0xFF, 0x30, 0x00, 0x17, 0x00, 0x71, 0xFF,
+ 0x3A, 0x00, 0x19, 0x00, 0x5B, 0xFF, 0x46, 0x00,
+ 0x10, 0x00, 0x0B, 0x00, 0x32, 0x00, 0x10, 0x00,
+ 0x21, 0x00, 0x32, 0x00, 0x10, 0x00, 0x37, 0x00,
+ 0x32, 0x00, 0x10, 0x00, 0x4D, 0x00, 0x32, 0x00,
+ 0x13, 0x00, 0x63, 0x00, 0x42, 0x00, 0x15, 0x00,
+ 0x79, 0x00, 0x51, 0x00, 0x17, 0x00, 0x8F, 0x00,
+ 0x61, 0x00, 0x19, 0x00, 0xA5, 0x00, 0x76, 0x00,
+ 0x10, 0x00, 0xF5, 0xFF, 0x32, 0x00, 0x10, 0x00,
+ 0xDF, 0xFF, 0x32, 0x00, 0x10, 0x00, 0xC9, 0xFF,
+ 0x32, 0x00, 0x10, 0x00, 0xB3, 0xFF, 0x32, 0x00,
+ 0x13, 0x00, 0x9D, 0xFF, 0x42, 0x00, 0x15, 0x00,
+ 0x87, 0xFF, 0x51, 0x00, 0x17, 0x00, 0x71, 0xFF,
+ 0x61, 0x00, 0x19, 0x00, 0x5B, 0xFF, 0x76, 0x00,
+ 0x10, 0x00, 0x0B, 0x00, 0x46, 0x00, 0x10, 0x00,
+ 0x21, 0x00, 0x46, 0x00, 0x10, 0x00, 0x37, 0x00,
+ 0x46, 0x00, 0x10, 0x00, 0x4D, 0x00, 0x46, 0x00,
+ 0x13, 0x00, 0x63, 0x00, 0x5C, 0x00, 0x15, 0x00,
+ 0x79, 0x00, 0x71, 0x00, 0x17, 0x00, 0x8F, 0x00,
+ 0x88, 0x00, 0x19, 0x00, 0xA5, 0x00, 0xA5, 0x00,
+ 0x10, 0x00, 0xF5, 0xFF, 0x46, 0x00, 0x10, 0x00,
+ 0xDF, 0xFF, 0x46, 0x00, 0x10, 0x00, 0xC9, 0xFF,
+ 0x46, 0x00, 0x10, 0x00, 0xB3, 0xFF, 0x46, 0x00,
+ 0x13, 0x00, 0x9D, 0xFF, 0x5C, 0x00, 0x15, 0x00,
+ 0x87, 0xFF, 0x71, 0x00, 0x17, 0x00, 0x71, 0xFF,
+ 0x88, 0x00, 0x19, 0x00, 0x5B, 0xFF, 0xA5, 0x00,
+ 0x13, 0x00, 0x0B, 0x00, 0x5A, 0x00, 0x13, 0x00,
+ 0x21, 0x00, 0x5A, 0x00, 0x13, 0x00, 0x37, 0x00,
+ 0x5A, 0x00, 0x13, 0x00, 0x4D, 0x00, 0x5A, 0x00,
+ 0x16, 0x00, 0x63, 0x00, 0x78, 0x00, 0x18, 0x00,
+ 0x79, 0x00, 0x92, 0x00, 0x1A, 0x00, 0x8F, 0x00,
+ 0xB0, 0x00, 0x1C, 0x00, 0xA5, 0x00, 0xD5, 0x00,
+ 0x13, 0x00, 0xF5, 0xFF, 0x5A, 0x00, 0x13, 0x00,
+ 0xDF, 0xFF, 0x5A, 0x00, 0x13, 0x00, 0xC9, 0xFF,
+ 0x5A, 0x00, 0x13, 0x00, 0xB3, 0xFF, 0x5A, 0x00,
+ 0x16, 0x00, 0x9D, 0xFF, 0x78, 0x00, 0x18, 0x00,
+ 0x87, 0xFF, 0x92, 0x00, 0x1A, 0x00, 0x71, 0xFF,
+ 0xB0, 0x00, 0x1C, 0x00, 0x5B, 0xFF, 0xD5, 0x00,
+ 0x15, 0x00, 0x0B, 0x00, 0x6E, 0x00, 0x15, 0x00,
+ 0x21, 0x00, 0x6E, 0x00, 0x15, 0x00, 0x37, 0x00,
+ 0x6E, 0x00, 0x15, 0x00, 0x4D, 0x00, 0x6E, 0x00,
+ 0x18, 0x00, 0x63, 0x00, 0x92, 0x00, 0x1A, 0x00,
+ 0x79, 0x00, 0xB2, 0x00, 0x1C, 0x00, 0x8F, 0x00,
+ 0xD7, 0x00, 0x1E, 0x00, 0xA5, 0x00, 0x04, 0x01,
+ 0x15, 0x00, 0xF5, 0xFF, 0x6E, 0x00, 0x15, 0x00,
+ 0xDF, 0xFF, 0x6E, 0x00, 0x15, 0x00, 0xC9, 0xFF,
+ 0x6E, 0x00, 0x15, 0x00, 0xB3, 0xFF, 0x6E, 0x00,
+ 0x18, 0x00, 0x9D, 0xFF, 0x92, 0x00, 0x1A, 0x00,
+ 0x87, 0xFF, 0xB2, 0x00, 0x1C, 0x00, 0x71, 0xFF,
+ 0xD7, 0x00, 0x1E, 0x00, 0x5B, 0xFF, 0x04, 0x01,
+ 0x17, 0x00, 0x0B, 0x00, 0x82, 0x00, 0x17, 0x00,
+ 0x21, 0x00, 0x82, 0x00, 0x17, 0x00, 0x37, 0x00,
+ 0x82, 0x00, 0x17, 0x00, 0x4D, 0x00, 0x82, 0x00,
+ 0x1A, 0x00, 0x63, 0x00, 0xAD, 0x00, 0x1C, 0x00,
+ 0x79, 0x00, 0xD3, 0x00, 0x1E, 0x00, 0x8F, 0x00,
+ 0xFE, 0x00, 0x20, 0x00, 0xA5, 0x00, 0x34, 0x01,
+ 0x17, 0x00, 0xF5, 0xFF, 0x82, 0x00, 0x17, 0x00,
+ 0xDF, 0xFF, 0x82, 0x00, 0x17, 0x00, 0xC9, 0xFF,
+ 0x82, 0x00, 0x17, 0x00, 0xB3, 0xFF, 0x82, 0x00,
+ 0x1A, 0x00, 0x9D, 0xFF, 0xAD, 0x00, 0x1C, 0x00,
+ 0x87, 0xFF, 0xD3, 0x00, 0x1E, 0x00, 0x71, 0xFF,
+ 0xFE, 0x00, 0x20, 0x00, 0x5B, 0xFF, 0x34, 0x01,
+ 0x19, 0x00, 0x0B, 0x00, 0x96, 0x00, 0x19, 0x00,
+ 0x21, 0x00, 0x96, 0x00, 0x19, 0x00, 0x37, 0x00,
+ 0x96, 0x00, 0x19, 0x00, 0x4D, 0x00, 0x96, 0x00,
+ 0x1C, 0x00, 0x63, 0x00, 0xC7, 0x00, 0x1E, 0x00,
+ 0x79, 0x00, 0xF3, 0x00, 0x20, 0x00, 0x8F, 0x00,
+ 0x25, 0x01, 0x22, 0x00, 0xA5, 0x00, 0x63, 0x01,
+ 0x19, 0x00, 0xF5, 0xFF, 0x96, 0x00, 0x19, 0x00,
+ 0xDF, 0xFF, 0x96, 0x00, 0x19, 0x00, 0xC9, 0xFF,
+ 0x96, 0x00, 0x19, 0x00, 0xB3, 0xFF, 0x96, 0x00,
+ 0x1C, 0x00, 0x9D, 0xFF, 0xC7, 0x00, 0x1E, 0x00,
+ 0x87, 0xFF, 0xF3, 0x00, 0x20, 0x00, 0x71, 0xFF,
+ 0x25, 0x01, 0x22, 0x00, 0x5B, 0xFF, 0x63, 0x01,
+ 0x10, 0x00, 0x0B, 0x00, 0xF6, 0xFF, 0x10, 0x00,
+ 0x21, 0x00, 0xF6, 0xFF, 0x10, 0x00, 0x37, 0x00,
+ 0xF6, 0xFF, 0x10, 0x00, 0x4D, 0x00, 0xF6, 0xFF,
+ 0x13, 0x00, 0x63, 0x00, 0xF3, 0xFF, 0x15, 0x00,
+ 0x79, 0x00, 0xF0, 0xFF, 0x17, 0x00, 0x8F, 0x00,
+ 0xED, 0xFF, 0x19, 0x00, 0xA5, 0x00, 0xE9, 0xFF,
+ 0x10, 0x00, 0xF5, 0xFF, 0xF6, 0xFF, 0x10, 0x00,
+ 0xDF, 0xFF, 0xF6, 0xFF, 0x10, 0x00, 0xC9, 0xFF,
+ 0xF6, 0xFF, 0x10, 0x00, 0xB3, 0xFF, 0xF6, 0xFF,
+ 0x13, 0x00, 0x9D, 0xFF, 0xF3, 0xFF, 0x15, 0x00,
+ 0x87, 0xFF, 0xF0, 0xFF, 0x17, 0x00, 0x71, 0xFF,
+ 0xED, 0xFF, 0x19, 0x00, 0x5B, 0xFF, 0xE9, 0xFF,
+ 0x10, 0x00, 0x0B, 0x00, 0xE2, 0xFF, 0x10, 0x00,
+ 0x21, 0x00, 0xE2, 0xFF, 0x10, 0x00, 0x37, 0x00,
+ 0xE2, 0xFF, 0x10, 0x00, 0x4D, 0x00, 0xE2, 0xFF,
+ 0x13, 0x00, 0x63, 0x00, 0xD9, 0xFF, 0x15, 0x00,
+ 0x79, 0x00, 0xD0, 0xFF, 0x17, 0x00, 0x8F, 0x00,
+ 0xC6, 0xFF, 0x19, 0x00, 0xA5, 0x00, 0xBA, 0xFF,
+ 0x10, 0x00, 0xF5, 0xFF, 0xE2, 0xFF, 0x10, 0x00,
+ 0xDF, 0xFF, 0xE2, 0xFF, 0x10, 0x00, 0xC9, 0xFF,
+ 0xE2, 0xFF, 0x10, 0x00, 0xB3, 0xFF, 0xE2, 0xFF,
+ 0x13, 0x00, 0x9D, 0xFF, 0xD9, 0xFF, 0x15, 0x00,
+ 0x87, 0xFF, 0xD0, 0xFF, 0x17, 0x00, 0x71, 0xFF,
+ 0xC6, 0xFF, 0x19, 0x00, 0x5B, 0xFF, 0xBA, 0xFF,
+ 0x10, 0x00, 0x0B, 0x00, 0xCE, 0xFF, 0x10, 0x00,
+ 0x21, 0x00, 0xCE, 0xFF, 0x10, 0x00, 0x37, 0x00,
+ 0xCE, 0xFF, 0x10, 0x00, 0x4D, 0x00, 0xCE, 0xFF,
+ 0x13, 0x00, 0x63, 0x00, 0xBE, 0xFF, 0x15, 0x00,
+ 0x79, 0x00, 0xAF, 0xFF, 0x17, 0x00, 0x8F, 0x00,
+ 0x9F, 0xFF, 0x19, 0x00, 0xA5, 0x00, 0x8A, 0xFF,
+ 0x10, 0x00, 0xF5, 0xFF, 0xCE, 0xFF, 0x10, 0x00,
+ 0xDF, 0xFF, 0xCE, 0xFF, 0x10, 0x00, 0xC9, 0xFF,
+ 0xCE, 0xFF, 0x10, 0x00, 0xB3, 0xFF, 0xCE, 0xFF,
+ 0x13, 0x00, 0x9D, 0xFF, 0xBE, 0xFF, 0x15, 0x00,
+ 0x87, 0xFF, 0xAF, 0xFF, 0x17, 0x00, 0x71, 0xFF,
+ 0x9F, 0xFF, 0x19, 0x00, 0x5B, 0xFF, 0x8A, 0xFF,
+ 0x10, 0x00, 0x0B, 0x00, 0xBA, 0xFF, 0x10, 0x00,
+ 0x21, 0x00, 0xBA, 0xFF, 0x10, 0x00, 0x37, 0x00,
+ 0xBA, 0xFF, 0x10, 0x00, 0x4D, 0x00, 0xBA, 0xFF,
+ 0x13, 0x00, 0x63, 0x00, 0xA4, 0xFF, 0x15, 0x00,
+ 0x79, 0x00, 0x8F, 0xFF, 0x17, 0x00, 0x8F, 0x00,
+ 0x78, 0xFF, 0x19, 0x00, 0xA5, 0x00, 0x5B, 0xFF,
+ 0x10, 0x00, 0xF5, 0xFF, 0xBA, 0xFF, 0x10, 0x00,
+ 0xDF, 0xFF, 0xBA, 0xFF, 0x10, 0x00, 0xC9, 0xFF,
+ 0xBA, 0xFF, 0x10, 0x00, 0xB3, 0xFF, 0xBA, 0xFF,
+ 0x13, 0x00, 0x9D, 0xFF, 0xA4, 0xFF, 0x15, 0x00,
+ 0x87, 0xFF, 0x8F, 0xFF, 0x17, 0x00, 0x71, 0xFF,
+ 0x78, 0xFF, 0x19, 0x00, 0x5B, 0xFF, 0x5B, 0xFF,
+ 0x13, 0x00, 0x0B, 0x00, 0xA6, 0xFF, 0x13, 0x00,
+ 0x21, 0x00, 0xA6, 0xFF, 0x13, 0x00, 0x37, 0x00,
+ 0xA6, 0xFF, 0x13, 0x00, 0x4D, 0x00, 0xA6, 0xFF,
+ 0x16, 0x00, 0x63, 0x00, 0x88, 0xFF, 0x18, 0x00,
+ 0x79, 0x00, 0x6E, 0xFF, 0x1A, 0x00, 0x8F, 0x00,
+ 0x50, 0xFF, 0x1C, 0x00, 0xA5, 0x00, 0x2B, 0xFF,
+ 0x13, 0x00, 0xF5, 0xFF, 0xA6, 0xFF, 0x13, 0x00,
+ 0xDF, 0xFF, 0xA6, 0xFF, 0x13, 0x00, 0xC9, 0xFF,
+ 0xA6, 0xFF, 0x13, 0x00, 0xB3, 0xFF, 0xA6, 0xFF,
+ 0x16, 0x00, 0x9D, 0xFF, 0x88, 0xFF, 0x18, 0x00,
+ 0x87, 0xFF, 0x6E, 0xFF, 0x1A, 0x00, 0x71, 0xFF,
+ 0x50, 0xFF, 0x1C, 0x00, 0x5B, 0xFF, 0x2B, 0xFF,
+ 0x15, 0x00, 0x0B, 0x00, 0x92, 0xFF, 0x15, 0x00,
+ 0x21, 0x00, 0x92, 0xFF, 0x15, 0x00, 0x37, 0x00,
+ 0x92, 0xFF, 0x15, 0x00, 0x4D, 0x00, 0x92, 0xFF,
+ 0x18, 0x00, 0x63, 0x00, 0x6E, 0xFF, 0x1A, 0x00,
+ 0x79, 0x00, 0x4E, 0xFF, 0x1C, 0x00, 0x8F, 0x00,
+ 0x29, 0xFF, 0x1E, 0x00, 0xA5, 0x00, 0xFC, 0xFE,
+ 0x15, 0x00, 0xF5, 0xFF, 0x92, 0xFF, 0x15, 0x00,
+ 0xDF, 0xFF, 0x92, 0xFF, 0x15, 0x00, 0xC9, 0xFF,
+ 0x92, 0xFF, 0x15, 0x00, 0xB3, 0xFF, 0x92, 0xFF,
+ 0x18, 0x00, 0x9D, 0xFF, 0x6E, 0xFF, 0x1A, 0x00,
+ 0x87, 0xFF, 0x4E, 0xFF, 0x1C, 0x00, 0x71, 0xFF,
+ 0x29, 0xFF, 0x1E, 0x00, 0x5B, 0xFF, 0xFC, 0xFE,
+ 0x17, 0x00, 0x0B, 0x00, 0x7E, 0xFF, 0x17, 0x00,
+ 0x21, 0x00, 0x7E, 0xFF, 0x17, 0x00, 0x37, 0x00,
+ 0x7E, 0xFF, 0x17, 0x00, 0x4D, 0x00, 0x7E, 0xFF,
+ 0x1A, 0x00, 0x63, 0x00, 0x53, 0xFF, 0x1C, 0x00,
+ 0x79, 0x00, 0x2D, 0xFF, 0x1E, 0x00, 0x8F, 0x00,
+ 0x02, 0xFF, 0x20, 0x00, 0xA5, 0x00, 0xCC, 0xFE,
+ 0x17, 0x00, 0xF5, 0xFF, 0x7E, 0xFF, 0x17, 0x00,
+ 0xDF, 0xFF, 0x7E, 0xFF, 0x17, 0x00, 0xC9, 0xFF,
+ 0x7E, 0xFF, 0x17, 0x00, 0xB3, 0xFF, 0x7E, 0xFF,
+ 0x1A, 0x00, 0x9D, 0xFF, 0x53, 0xFF, 0x1C, 0x00,
+ 0x87, 0xFF, 0x2D, 0xFF, 0x1E, 0x00, 0x71, 0xFF,
+ 0x02, 0xFF, 0x20, 0x00, 0x5B, 0xFF, 0xCC, 0xFE,
+ 0x19, 0x00, 0x0B, 0x00, 0x6A, 0xFF, 0x19, 0x00,
+ 0x21, 0x00, 0x6A, 0xFF, 0x19, 0x00, 0x37, 0x00,
+ 0x6A, 0xFF, 0x19, 0x00, 0x4D, 0x00, 0x6A, 0xFF,
+ 0x1C, 0x00, 0x63, 0x00, 0x39, 0xFF, 0x1E, 0x00,
+ 0x79, 0x00, 0x0D, 0xFF, 0x20, 0x00, 0x8F, 0x00,
+ 0xDB, 0xFE, 0x22, 0x00, 0xA5, 0x00, 0x9D, 0xFE,
+ 0x19, 0x00, 0xF5, 0xFF, 0x6A, 0xFF, 0x19, 0x00,
+ 0xDF, 0xFF, 0x6A, 0xFF, 0x19, 0x00, 0xC9, 0xFF,
+ 0x6A, 0xFF, 0x19, 0x00, 0xB3, 0xFF, 0x6A, 0xFF,
+ 0x1C, 0x00, 0x9D, 0xFF, 0x39, 0xFF, 0x1E, 0x00,
+ 0x87, 0xFF, 0x0D, 0xFF, 0x20, 0x00, 0x71, 0xFF,
+ 0xDB, 0xFE, 0x22, 0x00, 0x5B, 0xFF, 0x9D, 0xFE,
+ 0x11, 0x00, 0x0C, 0x00, 0x0B, 0x00, 0x11, 0x00,
+ 0x24, 0x00, 0x0B, 0x00, 0x11, 0x00, 0x3C, 0x00,
+ 0x0B, 0x00, 0x11, 0x00, 0x54, 0x00, 0x0B, 0x00,
+ 0x14, 0x00, 0x6D, 0x00, 0x0E, 0x00, 0x16, 0x00,
+ 0x85, 0x00, 0x11, 0x00, 0x18, 0x00, 0x9D, 0x00,
+ 0x15, 0x00, 0x1A, 0x00, 0xB5, 0x00, 0x1A, 0x00,
+ 0x11, 0x00, 0xF4, 0xFF, 0x0B, 0x00, 0x11, 0x00,
+ 0xDC, 0xFF, 0x0B, 0x00, 0x11, 0x00, 0xC4, 0xFF,
+ 0x0B, 0x00, 0x11, 0x00, 0xAC, 0xFF, 0x0B, 0x00,
+ 0x14, 0x00, 0x93, 0xFF, 0x0E, 0x00, 0x16, 0x00,
+ 0x7B, 0xFF, 0x11, 0x00, 0x18, 0x00, 0x63, 0xFF,
+ 0x15, 0x00, 0x1A, 0x00, 0x4B, 0xFF, 0x1A, 0x00,
+ 0x11, 0x00, 0x0C, 0x00, 0x21, 0x00, 0x11, 0x00,
+ 0x24, 0x00, 0x21, 0x00, 0x11, 0x00, 0x3C, 0x00,
+ 0x21, 0x00, 0x11, 0x00, 0x54, 0x00, 0x21, 0x00,
+ 0x14, 0x00, 0x6D, 0x00, 0x2B, 0x00, 0x16, 0x00,
+ 0x85, 0x00, 0x34, 0x00, 0x18, 0x00, 0x9D, 0x00,
+ 0x40, 0x00, 0x1A, 0x00, 0xB5, 0x00, 0x4E, 0x00,
+ 0x11, 0x00, 0xF4, 0xFF, 0x21, 0x00, 0x11, 0x00,
+ 0xDC, 0xFF, 0x21, 0x00, 0x11, 0x00, 0xC4, 0xFF,
+ 0x21, 0x00, 0x11, 0x00, 0xAC, 0xFF, 0x21, 0x00,
+ 0x14, 0x00, 0x93, 0xFF, 0x2B, 0x00, 0x16, 0x00,
+ 0x7B, 0xFF, 0x34, 0x00, 0x18, 0x00, 0x63, 0xFF,
+ 0x40, 0x00, 0x1A, 0x00, 0x4B, 0xFF, 0x4E, 0x00,
+ 0x11, 0x00, 0x0C, 0x00, 0x37, 0x00, 0x11, 0x00,
+ 0x24, 0x00, 0x37, 0x00, 0x11, 0x00, 0x3C, 0x00,
+ 0x37, 0x00, 0x11, 0x00, 0x54, 0x00, 0x37, 0x00,
+ 0x14, 0x00, 0x6D, 0x00, 0x49, 0x00, 0x16, 0x00,
+ 0x85, 0x00, 0x58, 0x00, 0x18, 0x00, 0x9D, 0x00,
+ 0x6B, 0x00, 0x1A, 0x00, 0xB5, 0x00, 0x82, 0x00,
+ 0x11, 0x00, 0xF4, 0xFF, 0x37, 0x00, 0x11, 0x00,
+ 0xDC, 0xFF, 0x37, 0x00, 0x11, 0x00, 0xC4, 0xFF,
+ 0x37, 0x00, 0x11, 0x00, 0xAC, 0xFF, 0x37, 0x00,
+ 0x14, 0x00, 0x93, 0xFF, 0x49, 0x00, 0x16, 0x00,
+ 0x7B, 0xFF, 0x58, 0x00, 0x18, 0x00, 0x63, 0xFF,
+ 0x6B, 0x00, 0x1A, 0x00, 0x4B, 0xFF, 0x82, 0x00,
+ 0x11, 0x00, 0x0C, 0x00, 0x4D, 0x00, 0x11, 0x00,
+ 0x24, 0x00, 0x4D, 0x00, 0x11, 0x00, 0x3C, 0x00,
+ 0x4D, 0x00, 0x11, 0x00, 0x54, 0x00, 0x4D, 0x00,
+ 0x14, 0x00, 0x6D, 0x00, 0x66, 0x00, 0x16, 0x00,
+ 0x85, 0x00, 0x7B, 0x00, 0x18, 0x00, 0x9D, 0x00,
+ 0x96, 0x00, 0x1A, 0x00, 0xB5, 0x00, 0xB6, 0x00,
+ 0x11, 0x00, 0xF4, 0xFF, 0x4D, 0x00, 0x11, 0x00,
+ 0xDC, 0xFF, 0x4D, 0x00, 0x11, 0x00, 0xC4, 0xFF,
+ 0x4D, 0x00, 0x11, 0x00, 0xAC, 0xFF, 0x4D, 0x00,
+ 0x14, 0x00, 0x93, 0xFF, 0x66, 0x00, 0x16, 0x00,
+ 0x7B, 0xFF, 0x7B, 0x00, 0x18, 0x00, 0x63, 0xFF,
+ 0x96, 0x00, 0x1A, 0x00, 0x4B, 0xFF, 0xB6, 0x00,
+ 0x14, 0x00, 0x0C, 0x00, 0x63, 0x00, 0x14, 0x00,
+ 0x24, 0x00, 0x63, 0x00, 0x14, 0x00, 0x3C, 0x00,
+ 0x63, 0x00, 0x14, 0x00, 0x54, 0x00, 0x63, 0x00,
+ 0x17, 0x00, 0x6D, 0x00, 0x84, 0x00, 0x19, 0x00,
+ 0x85, 0x00, 0xA0, 0x00, 0x1B, 0x00, 0x9D, 0x00,
+ 0xC2, 0x00, 0x1D, 0x00, 0xB5, 0x00, 0xEB, 0x00,
+ 0x14, 0x00, 0xF4, 0xFF, 0x63, 0x00, 0x14, 0x00,
+ 0xDC, 0xFF, 0x63, 0x00, 0x14, 0x00, 0xC4, 0xFF,
+ 0x63, 0x00, 0x14, 0x00, 0xAC, 0xFF, 0x63, 0x00,
+ 0x17, 0x00, 0x93, 0xFF, 0x84, 0x00, 0x19, 0x00,
+ 0x7B, 0xFF, 0xA0, 0x00, 0x1B, 0x00, 0x63, 0xFF,
+ 0xC2, 0x00, 0x1D, 0x00, 0x4B, 0xFF, 0xEB, 0x00,
+ 0x16, 0x00, 0x0C, 0x00, 0x79, 0x00, 0x16, 0x00,
+ 0x24, 0x00, 0x79, 0x00, 0x16, 0x00, 0x3C, 0x00,
+ 0x79, 0x00, 0x16, 0x00, 0x54, 0x00, 0x79, 0x00,
+ 0x19, 0x00, 0x6D, 0x00, 0xA1, 0x00, 0x1B, 0x00,
+ 0x85, 0x00, 0xC3, 0x00, 0x1D, 0x00, 0x9D, 0x00,
+ 0xED, 0x00, 0x1F, 0x00, 0xB5, 0x00, 0x1F, 0x01,
+ 0x16, 0x00, 0xF4, 0xFF, 0x79, 0x00, 0x16, 0x00,
+ 0xDC, 0xFF, 0x79, 0x00, 0x16, 0x00, 0xC4, 0xFF,
+ 0x79, 0x00, 0x16, 0x00, 0xAC, 0xFF, 0x79, 0x00,
+ 0x19, 0x00, 0x93, 0xFF, 0xA1, 0x00, 0x1B, 0x00,
+ 0x7B, 0xFF, 0xC3, 0x00, 0x1D, 0x00, 0x63, 0xFF,
+ 0xED, 0x00, 0x1F, 0x00, 0x4B, 0xFF, 0x1F, 0x01,
+ 0x18, 0x00, 0x0C, 0x00, 0x8F, 0x00, 0x18, 0x00,
+ 0x24, 0x00, 0x8F, 0x00, 0x18, 0x00, 0x3C, 0x00,
+ 0x8F, 0x00, 0x18, 0x00, 0x54, 0x00, 0x8F, 0x00,
+ 0x1B, 0x00, 0x6D, 0x00, 0xBF, 0x00, 0x1D, 0x00,
+ 0x85, 0x00, 0xE7, 0x00, 0x1F, 0x00, 0x9D, 0x00,
+ 0x18, 0x01, 0x21, 0x00, 0xB5, 0x00, 0x53, 0x01,
+ 0x18, 0x00, 0xF4, 0xFF, 0x8F, 0x00, 0x18, 0x00,
+ 0xDC, 0xFF, 0x8F, 0x00, 0x18, 0x00, 0xC4, 0xFF,
+ 0x8F, 0x00, 0x18, 0x00, 0xAC, 0xFF, 0x8F, 0x00,
+ 0x1B, 0x00, 0x93, 0xFF, 0xBF, 0x00, 0x1D, 0x00,
+ 0x7B, 0xFF, 0xE7, 0x00, 0x1F, 0x00, 0x63, 0xFF,
+ 0x18, 0x01, 0x21, 0x00, 0x4B, 0xFF, 0x53, 0x01,
+ 0x1A, 0x00, 0x0C, 0x00, 0xA5, 0x00, 0x1A, 0x00,
+ 0x24, 0x00, 0xA5, 0x00, 0x1A, 0x00, 0x3C, 0x00,
+ 0xA5, 0x00, 0x1A, 0x00, 0x54, 0x00, 0xA5, 0x00,
+ 0x1D, 0x00, 0x6D, 0x00, 0xDC, 0x00, 0x1F, 0x00,
+ 0x85, 0x00, 0x0A, 0x01, 0x21, 0x00, 0x9D, 0x00,
+ 0x43, 0x01, 0x23, 0x00, 0xB5, 0x00, 0x87, 0x01,
+ 0x1A, 0x00, 0xF4, 0xFF, 0xA5, 0x00, 0x1A, 0x00,
+ 0xDC, 0xFF, 0xA5, 0x00, 0x1A, 0x00, 0xC4, 0xFF,
+ 0xA5, 0x00, 0x1A, 0x00, 0xAC, 0xFF, 0xA5, 0x00,
+ 0x1D, 0x00, 0x93, 0xFF, 0xDC, 0x00, 0x1F, 0x00,
+ 0x7B, 0xFF, 0x0A, 0x01, 0x21, 0x00, 0x63, 0xFF,
+ 0x43, 0x01, 0x23, 0x00, 0x4B, 0xFF, 0x87, 0x01,
+ 0x11, 0x00, 0x0C, 0x00, 0xF5, 0xFF, 0x11, 0x00,
+ 0x24, 0x00, 0xF5, 0xFF, 0x11, 0x00, 0x3C, 0x00,
+ 0xF5, 0xFF, 0x11, 0x00, 0x54, 0x00, 0xF5, 0xFF,
+ 0x14, 0x00, 0x6D, 0x00, 0xF2, 0xFF, 0x16, 0x00,
+ 0x85, 0x00, 0xEF, 0xFF, 0x18, 0x00, 0x9D, 0x00,
+ 0xEB, 0xFF, 0x1A, 0x00, 0xB5, 0x00, 0xE6, 0xFF,
+ 0x11, 0x00, 0xF4, 0xFF, 0xF5, 0xFF, 0x11, 0x00,
+ 0xDC, 0xFF, 0xF5, 0xFF, 0x11, 0x00, 0xC4, 0xFF,
+ 0xF5, 0xFF, 0x11, 0x00, 0xAC, 0xFF, 0xF5, 0xFF,
+ 0x14, 0x00, 0x93, 0xFF, 0xF2, 0xFF, 0x16, 0x00,
+ 0x7B, 0xFF, 0xEF, 0xFF, 0x18, 0x00, 0x63, 0xFF,
+ 0xEB, 0xFF, 0x1A, 0x00, 0x4B, 0xFF, 0xE6, 0xFF,
+ 0x11, 0x00, 0x0C, 0x00, 0xDF, 0xFF, 0x11, 0x00,
+ 0x24, 0x00, 0xDF, 0xFF, 0x11, 0x00, 0x3C, 0x00,
+ 0xDF, 0xFF, 0x11, 0x00, 0x54, 0x00, 0xDF, 0xFF,
+ 0x14, 0x00, 0x6D, 0x00, 0xD5, 0xFF, 0x16, 0x00,
+ 0x85, 0x00, 0xCC, 0xFF, 0x18, 0x00, 0x9D, 0x00,
+ 0xC0, 0xFF, 0x1A, 0x00, 0xB5, 0x00, 0xB2, 0xFF,
+ 0x11, 0x00, 0xF4, 0xFF, 0xDF, 0xFF, 0x11, 0x00,
+ 0xDC, 0xFF, 0xDF, 0xFF, 0x11, 0x00, 0xC4, 0xFF,
+ 0xDF, 0xFF, 0x11, 0x00, 0xAC, 0xFF, 0xDF, 0xFF,
+ 0x14, 0x00, 0x93, 0xFF, 0xD5, 0xFF, 0x16, 0x00,
+ 0x7B, 0xFF, 0xCC, 0xFF, 0x18, 0x00, 0x63, 0xFF,
+ 0xC0, 0xFF, 0x1A, 0x00, 0x4B, 0xFF, 0xB2, 0xFF,
+ 0x11, 0x00, 0x0C, 0x00, 0xC9, 0xFF, 0x11, 0x00,
+ 0x24, 0x00, 0xC9, 0xFF, 0x11, 0x00, 0x3C, 0x00,
+ 0xC9, 0xFF, 0x11, 0x00, 0x54, 0x00, 0xC9, 0xFF,
+ 0x14, 0x00, 0x6D, 0x00, 0xB7, 0xFF, 0x16, 0x00,
+ 0x85, 0x00, 0xA8, 0xFF, 0x18, 0x00, 0x9D, 0x00,
+ 0x95, 0xFF, 0x1A, 0x00, 0xB5, 0x00, 0x7E, 0xFF,
+ 0x11, 0x00, 0xF4, 0xFF, 0xC9, 0xFF, 0x11, 0x00,
+ 0xDC, 0xFF, 0xC9, 0xFF, 0x11, 0x00, 0xC4, 0xFF,
+ 0xC9, 0xFF, 0x11, 0x00, 0xAC, 0xFF, 0xC9, 0xFF,
+ 0x14, 0x00, 0x93, 0xFF, 0xB7, 0xFF, 0x16, 0x00,
+ 0x7B, 0xFF, 0xA8, 0xFF, 0x18, 0x00, 0x63, 0xFF,
+ 0x95, 0xFF, 0x1A, 0x00, 0x4B, 0xFF, 0x7E, 0xFF,
+ 0x11, 0x00, 0x0C, 0x00, 0xB3, 0xFF, 0x11, 0x00,
+ 0x24, 0x00, 0xB3, 0xFF, 0x11, 0x00, 0x3C, 0x00,
+ 0xB3, 0xFF, 0x11, 0x00, 0x54, 0x00, 0xB3, 0xFF,
+ 0x14, 0x00, 0x6D, 0x00, 0x9A, 0xFF, 0x16, 0x00,
+ 0x85, 0x00, 0x85, 0xFF, 0x18, 0x00, 0x9D, 0x00,
+ 0x6A, 0xFF, 0x1A, 0x00, 0xB5, 0x00, 0x4A, 0xFF,
+ 0x11, 0x00, 0xF4, 0xFF, 0xB3, 0xFF, 0x11, 0x00,
+ 0xDC, 0xFF, 0xB3, 0xFF, 0x11, 0x00, 0xC4, 0xFF,
+ 0xB3, 0xFF, 0x11, 0x00, 0xAC, 0xFF, 0xB3, 0xFF,
+ 0x14, 0x00, 0x93, 0xFF, 0x9A, 0xFF, 0x16, 0x00,
+ 0x7B, 0xFF, 0x85, 0xFF, 0x18, 0x00, 0x63, 0xFF,
+ 0x6A, 0xFF, 0x1A, 0x00, 0x4B, 0xFF, 0x4A, 0xFF,
+ 0x14, 0x00, 0x0C, 0x00, 0x9D, 0xFF, 0x14, 0x00,
+ 0x24, 0x00, 0x9D, 0xFF, 0x14, 0x00, 0x3C, 0x00,
+ 0x9D, 0xFF, 0x14, 0x00, 0x54, 0x00, 0x9D, 0xFF,
+ 0x17, 0x00, 0x6D, 0x00, 0x7C, 0xFF, 0x19, 0x00,
+ 0x85, 0x00, 0x60, 0xFF, 0x1B, 0x00, 0x9D, 0x00,
+ 0x3E, 0xFF, 0x1D, 0x00, 0xB5, 0x00, 0x15, 0xFF,
+ 0x14, 0x00, 0xF4, 0xFF, 0x9D, 0xFF, 0x14, 0x00,
+ 0xDC, 0xFF, 0x9D, 0xFF, 0x14, 0x00, 0xC4, 0xFF,
+ 0x9D, 0xFF, 0x14, 0x00, 0xAC, 0xFF, 0x9D, 0xFF,
+ 0x17, 0x00, 0x93, 0xFF, 0x7C, 0xFF, 0x19, 0x00,
+ 0x7B, 0xFF, 0x60, 0xFF, 0x1B, 0x00, 0x63, 0xFF,
+ 0x3E, 0xFF, 0x1D, 0x00, 0x4B, 0xFF, 0x15, 0xFF,
+ 0x16, 0x00, 0x0C, 0x00, 0x87, 0xFF, 0x16, 0x00,
+ 0x24, 0x00, 0x87, 0xFF, 0x16, 0x00, 0x3C, 0x00,
+ 0x87, 0xFF, 0x16, 0x00, 0x54, 0x00, 0x87, 0xFF,
+ 0x19, 0x00, 0x6D, 0x00, 0x5F, 0xFF, 0x1B, 0x00,
+ 0x85, 0x00, 0x3D, 0xFF, 0x1D, 0x00, 0x9D, 0x00,
+ 0x13, 0xFF, 0x1F, 0x00, 0xB5, 0x00, 0xE1, 0xFE,
+ 0x16, 0x00, 0xF4, 0xFF, 0x87, 0xFF, 0x16, 0x00,
+ 0xDC, 0xFF, 0x87, 0xFF, 0x16, 0x00, 0xC4, 0xFF,
+ 0x87, 0xFF, 0x16, 0x00, 0xAC, 0xFF, 0x87, 0xFF,
+ 0x19, 0x00, 0x93, 0xFF, 0x5F, 0xFF, 0x1B, 0x00,
+ 0x7B, 0xFF, 0x3D, 0xFF, 0x1D, 0x00, 0x63, 0xFF,
+ 0x13, 0xFF, 0x1F, 0x00, 0x4B, 0xFF, 0xE1, 0xFE,
+ 0x18, 0x00, 0x0C, 0x00, 0x71, 0xFF, 0x18, 0x00,
+ 0x24, 0x00, 0x71, 0xFF, 0x18, 0x00, 0x3C, 0x00,
+ 0x71, 0xFF, 0x18, 0x00, 0x54, 0x00, 0x71, 0xFF,
+ 0x1B, 0x00, 0x6D, 0x00, 0x41, 0xFF, 0x1D, 0x00,
+ 0x85, 0x00, 0x19, 0xFF, 0x1F, 0x00, 0x9D, 0x00,
+ 0xE8, 0xFE, 0x21, 0x00, 0xB5, 0x00, 0xAD, 0xFE,
+ 0x18, 0x00, 0xF4, 0xFF, 0x71, 0xFF, 0x18, 0x00,
+ 0xDC, 0xFF, 0x71, 0xFF, 0x18, 0x00, 0xC4, 0xFF,
+ 0x71, 0xFF, 0x18, 0x00, 0xAC, 0xFF, 0x71, 0xFF,
+ 0x1B, 0x00, 0x93, 0xFF, 0x41, 0xFF, 0x1D, 0x00,
+ 0x7B, 0xFF, 0x19, 0xFF, 0x1F, 0x00, 0x63, 0xFF,
+ 0xE8, 0xFE, 0x21, 0x00, 0x4B, 0xFF, 0xAD, 0xFE,
+ 0x1A, 0x00, 0x0C, 0x00, 0x5B, 0xFF, 0x1A, 0x00,
+ 0x24, 0x00, 0x5B, 0xFF, 0x1A, 0x00, 0x3C, 0x00,
+ 0x5B, 0xFF, 0x1A, 0x00, 0x54, 0x00, 0x5B, 0xFF,
+ 0x1D, 0x00, 0x6D, 0x00, 0x24, 0xFF, 0x1F, 0x00,
+ 0x85, 0x00, 0xF6, 0xFE, 0x21, 0x00, 0x9D, 0x00,
+ 0xBD, 0xFE, 0x23, 0x00, 0xB5, 0x00, 0x79, 0xFE,
+ 0x1A, 0x00, 0xF4, 0xFF, 0x5B, 0xFF, 0x1A, 0x00,
+ 0xDC, 0xFF, 0x5B, 0xFF, 0x1A, 0x00, 0xC4, 0xFF,
+ 0x5B, 0xFF, 0x1A, 0x00, 0xAC, 0xFF, 0x5B, 0xFF,
+ 0x1D, 0x00, 0x93, 0xFF, 0x24, 0xFF, 0x1F, 0x00,
+ 0x7B, 0xFF, 0xF6, 0xFE, 0x21, 0x00, 0x63, 0xFF,
+ 0xBD, 0xFE, 0x23, 0x00, 0x4B, 0xFF, 0x79, 0xFE,
+ 0x12, 0x00, 0x0D, 0x00, 0x0C, 0x00, 0x12, 0x00,
+ 0x27, 0x00, 0x0C, 0x00, 0x12, 0x00, 0x42, 0x00,
+ 0x0C, 0x00, 0x12, 0x00, 0x5C, 0x00, 0x0C, 0x00,
+ 0x15, 0x00, 0x78, 0x00, 0x10, 0x00, 0x17, 0x00,
+ 0x92, 0x00, 0x13, 0x00, 0x19, 0x00, 0xAD, 0x00,
+ 0x17, 0x00, 0x1B, 0x00, 0xC7, 0x00, 0x1C, 0x00,
+ 0x12, 0x00, 0xF3, 0xFF, 0x0C, 0x00, 0x12, 0x00,
+ 0xD9, 0xFF, 0x0C, 0x00, 0x12, 0x00, 0xBE, 0xFF,
+ 0x0C, 0x00, 0x12, 0x00, 0xA4, 0xFF, 0x0C, 0x00,
+ 0x15, 0x00, 0x88, 0xFF, 0x10, 0x00, 0x17, 0x00,
+ 0x6E, 0xFF, 0x13, 0x00, 0x19, 0x00, 0x53, 0xFF,
+ 0x17, 0x00, 0x1B, 0x00, 0x39, 0xFF, 0x1C, 0x00,
+ 0x12, 0x00, 0x0D, 0x00, 0x24, 0x00, 0x12, 0x00,
+ 0x27, 0x00, 0x24, 0x00, 0x12, 0x00, 0x42, 0x00,
+ 0x24, 0x00, 0x12, 0x00, 0x5C, 0x00, 0x24, 0x00,
+ 0x15, 0x00, 0x78, 0x00, 0x30, 0x00, 0x17, 0x00,
+ 0x92, 0x00, 0x3A, 0x00, 0x19, 0x00, 0xAD, 0x00,
+ 0x46, 0x00, 0x1B, 0x00, 0xC7, 0x00, 0x55, 0x00,
+ 0x12, 0x00, 0xF3, 0xFF, 0x24, 0x00, 0x12, 0x00,
+ 0xD9, 0xFF, 0x24, 0x00, 0x12, 0x00, 0xBE, 0xFF,
+ 0x24, 0x00, 0x12, 0x00, 0xA4, 0xFF, 0x24, 0x00,
+ 0x15, 0x00, 0x88, 0xFF, 0x30, 0x00, 0x17, 0x00,
+ 0x6E, 0xFF, 0x3A, 0x00, 0x19, 0x00, 0x53, 0xFF,
+ 0x46, 0x00, 0x1B, 0x00, 0x39, 0xFF, 0x55, 0x00,
+ 0x12, 0x00, 0x0D, 0x00, 0x3C, 0x00, 0x12, 0x00,
+ 0x27, 0x00, 0x3C, 0x00, 0x12, 0x00, 0x42, 0x00,
+ 0x3C, 0x00, 0x12, 0x00, 0x5C, 0x00, 0x3C, 0x00,
+ 0x15, 0x00, 0x78, 0x00, 0x51, 0x00, 0x17, 0x00,
+ 0x92, 0x00, 0x61, 0x00, 0x19, 0x00, 0xAD, 0x00,
+ 0x76, 0x00, 0x1B, 0x00, 0xC7, 0x00, 0x8F, 0x00,
+ 0x12, 0x00, 0xF3, 0xFF, 0x3C, 0x00, 0x12, 0x00,
+ 0xD9, 0xFF, 0x3C, 0x00, 0x12, 0x00, 0xBE, 0xFF,
+ 0x3C, 0x00, 0x12, 0x00, 0xA4, 0xFF, 0x3C, 0x00,
+ 0x15, 0x00, 0x88, 0xFF, 0x51, 0x00, 0x17, 0x00,
+ 0x6E, 0xFF, 0x61, 0x00, 0x19, 0x00, 0x53, 0xFF,
+ 0x76, 0x00, 0x1B, 0x00, 0x39, 0xFF, 0x8F, 0x00,
+ 0x12, 0x00, 0x0D, 0x00, 0x54, 0x00, 0x12, 0x00,
+ 0x27, 0x00, 0x54, 0x00, 0x12, 0x00, 0x42, 0x00,
+ 0x54, 0x00, 0x12, 0x00, 0x5C, 0x00, 0x54, 0x00,
+ 0x15, 0x00, 0x78, 0x00, 0x71, 0x00, 0x17, 0x00,
+ 0x92, 0x00, 0x88, 0x00, 0x19, 0x00, 0xAD, 0x00,
+ 0xA5, 0x00, 0x1B, 0x00, 0xC7, 0x00, 0xC8, 0x00,
+ 0x12, 0x00, 0xF3, 0xFF, 0x54, 0x00, 0x12, 0x00,
+ 0xD9, 0xFF, 0x54, 0x00, 0x12, 0x00, 0xBE, 0xFF,
+ 0x54, 0x00, 0x12, 0x00, 0xA4, 0xFF, 0x54, 0x00,
+ 0x15, 0x00, 0x88, 0xFF, 0x71, 0x00, 0x17, 0x00,
+ 0x6E, 0xFF, 0x88, 0x00, 0x19, 0x00, 0x53, 0xFF,
+ 0xA5, 0x00, 0x1B, 0x00, 0x39, 0xFF, 0xC8, 0x00,
+ 0x15, 0x00, 0x0D, 0x00, 0x6D, 0x00, 0x15, 0x00,
+ 0x27, 0x00, 0x6D, 0x00, 0x15, 0x00, 0x42, 0x00,
+ 0x6D, 0x00, 0x15, 0x00, 0x5C, 0x00, 0x6D, 0x00,
+ 0x18, 0x00, 0x78, 0x00, 0x92, 0x00, 0x1A, 0x00,
+ 0x92, 0x00, 0xB0, 0x00, 0x1C, 0x00, 0xAD, 0x00,
+ 0xD5, 0x00, 0x1E, 0x00, 0xC7, 0x00, 0x02, 0x01,
+ 0x15, 0x00, 0xF3, 0xFF, 0x6D, 0x00, 0x15, 0x00,
+ 0xD9, 0xFF, 0x6D, 0x00, 0x15, 0x00, 0xBE, 0xFF,
+ 0x6D, 0x00, 0x15, 0x00, 0xA4, 0xFF, 0x6D, 0x00,
+ 0x18, 0x00, 0x88, 0xFF, 0x92, 0x00, 0x1A, 0x00,
+ 0x6E, 0xFF, 0xB0, 0x00, 0x1C, 0x00, 0x53, 0xFF,
+ 0xD5, 0x00, 0x1E, 0x00, 0x39, 0xFF, 0x02, 0x01,
+ 0x17, 0x00, 0x0D, 0x00, 0x85, 0x00, 0x17, 0x00,
+ 0x27, 0x00, 0x85, 0x00, 0x17, 0x00, 0x42, 0x00,
+ 0x85, 0x00, 0x17, 0x00, 0x5C, 0x00, 0x85, 0x00,
+ 0x1A, 0x00, 0x78, 0x00, 0xB2, 0x00, 0x1C, 0x00,
+ 0x92, 0x00, 0xD7, 0x00, 0x1E, 0x00, 0xAD, 0x00,
+ 0x04, 0x01, 0x20, 0x00, 0xC7, 0x00, 0x3B, 0x01,
+ 0x17, 0x00, 0xF3, 0xFF, 0x85, 0x00, 0x17, 0x00,
+ 0xD9, 0xFF, 0x85, 0x00, 0x17, 0x00, 0xBE, 0xFF,
+ 0x85, 0x00, 0x17, 0x00, 0xA4, 0xFF, 0x85, 0x00,
+ 0x1A, 0x00, 0x88, 0xFF, 0xB2, 0x00, 0x1C, 0x00,
+ 0x6E, 0xFF, 0xD7, 0x00, 0x1E, 0x00, 0x53, 0xFF,
+ 0x04, 0x01, 0x20, 0x00, 0x39, 0xFF, 0x3B, 0x01,
+ 0x19, 0x00, 0x0D, 0x00, 0x9D, 0x00, 0x19, 0x00,
+ 0x27, 0x00, 0x9D, 0x00, 0x19, 0x00, 0x42, 0x00,
+ 0x9D, 0x00, 0x19, 0x00, 0x5C, 0x00, 0x9D, 0x00,
+ 0x1C, 0x00, 0x78, 0x00, 0xD3, 0x00, 0x1E, 0x00,
+ 0x92, 0x00, 0xFE, 0x00, 0x20, 0x00, 0xAD, 0x00,
+ 0x34, 0x01, 0x22, 0x00, 0xC7, 0x00, 0x75, 0x01,
+ 0x19, 0x00, 0xF3, 0xFF, 0x9D, 0x00, 0x19, 0x00,
+ 0xD9, 0xFF, 0x9D, 0x00, 0x19, 0x00, 0xBE, 0xFF,
+ 0x9D, 0x00, 0x19, 0x00, 0xA4, 0xFF, 0x9D, 0x00,
+ 0x1C, 0x00, 0x88, 0xFF, 0xD3, 0x00, 0x1E, 0x00,
+ 0x6E, 0xFF, 0xFE, 0x00, 0x20, 0x00, 0x53, 0xFF,
+ 0x34, 0x01, 0x22, 0x00, 0x39, 0xFF, 0x75, 0x01,
+ 0x1B, 0x00, 0x0D, 0x00, 0xB5, 0x00, 0x1B, 0x00,
+ 0x27, 0x00, 0xB5, 0x00, 0x1B, 0x00, 0x42, 0x00,
+ 0xB5, 0x00, 0x1B, 0x00, 0x5C, 0x00, 0xB5, 0x00,
+ 0x1E, 0x00, 0x78, 0x00, 0xF3, 0x00, 0x20, 0x00,
+ 0x92, 0x00, 0x25, 0x01, 0x22, 0x00, 0xAD, 0x00,
+ 0x63, 0x01, 0x24, 0x00, 0xC7, 0x00, 0xAE, 0x01,
+ 0x1B, 0x00, 0xF3, 0xFF, 0xB5, 0x00, 0x1B, 0x00,
+ 0xD9, 0xFF, 0xB5, 0x00, 0x1B, 0x00, 0xBE, 0xFF,
+ 0xB5, 0x00, 0x1B, 0x00, 0xA4, 0xFF, 0xB5, 0x00,
+ 0x1E, 0x00, 0x88, 0xFF, 0xF3, 0x00, 0x20, 0x00,
+ 0x6E, 0xFF, 0x25, 0x01, 0x22, 0x00, 0x53, 0xFF,
+ 0x63, 0x01, 0x24, 0x00, 0x39, 0xFF, 0xAE, 0x01,
+ 0x12, 0x00, 0x0D, 0x00, 0xF4, 0xFF, 0x12, 0x00,
+ 0x27, 0x00, 0xF4, 0xFF, 0x12, 0x00, 0x42, 0x00,
+ 0xF4, 0xFF, 0x12, 0x00, 0x5C, 0x00, 0xF4, 0xFF,
+ 0x15, 0x00, 0x78, 0x00, 0xF0, 0xFF, 0x17, 0x00,
+ 0x92, 0x00, 0xED, 0xFF, 0x19, 0x00, 0xAD, 0x00,
+ 0xE9, 0xFF, 0x1B, 0x00, 0xC7, 0x00, 0xE4, 0xFF,
+ 0x12, 0x00, 0xF3, 0xFF, 0xF4, 0xFF, 0x12, 0x00,
+ 0xD9, 0xFF, 0xF4, 0xFF, 0x12, 0x00, 0xBE, 0xFF,
+ 0xF4, 0xFF, 0x12, 0x00, 0xA4, 0xFF, 0xF4, 0xFF,
+ 0x15, 0x00, 0x88, 0xFF, 0xF0, 0xFF, 0x17, 0x00,
+ 0x6E, 0xFF, 0xED, 0xFF, 0x19, 0x00, 0x53, 0xFF,
+ 0xE9, 0xFF, 0x1B, 0x00, 0x39, 0xFF, 0xE4, 0xFF,
+ 0x12, 0x00, 0x0D, 0x00, 0xDC, 0xFF, 0x12, 0x00,
+ 0x27, 0x00, 0xDC, 0xFF, 0x12, 0x00, 0x42, 0x00,
+ 0xDC, 0xFF, 0x12, 0x00, 0x5C, 0x00, 0xDC, 0xFF,
+ 0x15, 0x00, 0x78, 0x00, 0xD0, 0xFF, 0x17, 0x00,
+ 0x92, 0x00, 0xC6, 0xFF, 0x19, 0x00, 0xAD, 0x00,
+ 0xBA, 0xFF, 0x1B, 0x00, 0xC7, 0x00, 0xAB, 0xFF,
+ 0x12, 0x00, 0xF3, 0xFF, 0xDC, 0xFF, 0x12, 0x00,
+ 0xD9, 0xFF, 0xDC, 0xFF, 0x12, 0x00, 0xBE, 0xFF,
+ 0xDC, 0xFF, 0x12, 0x00, 0xA4, 0xFF, 0xDC, 0xFF,
+ 0x15, 0x00, 0x88, 0xFF, 0xD0, 0xFF, 0x17, 0x00,
+ 0x6E, 0xFF, 0xC6, 0xFF, 0x19, 0x00, 0x53, 0xFF,
+ 0xBA, 0xFF, 0x1B, 0x00, 0x39, 0xFF, 0xAB, 0xFF,
+ 0x12, 0x00, 0x0D, 0x00, 0xC4, 0xFF, 0x12, 0x00,
+ 0x27, 0x00, 0xC4, 0xFF, 0x12, 0x00, 0x42, 0x00,
+ 0xC4, 0xFF, 0x12, 0x00, 0x5C, 0x00, 0xC4, 0xFF,
+ 0x15, 0x00, 0x78, 0x00, 0xAF, 0xFF, 0x17, 0x00,
+ 0x92, 0x00, 0x9F, 0xFF, 0x19, 0x00, 0xAD, 0x00,
+ 0x8A, 0xFF, 0x1B, 0x00, 0xC7, 0x00, 0x71, 0xFF,
+ 0x12, 0x00, 0xF3, 0xFF, 0xC4, 0xFF, 0x12, 0x00,
+ 0xD9, 0xFF, 0xC4, 0xFF, 0x12, 0x00, 0xBE, 0xFF,
+ 0xC4, 0xFF, 0x12, 0x00, 0xA4, 0xFF, 0xC4, 0xFF,
+ 0x15, 0x00, 0x88, 0xFF, 0xAF, 0xFF, 0x17, 0x00,
+ 0x6E, 0xFF, 0x9F, 0xFF, 0x19, 0x00, 0x53, 0xFF,
+ 0x8A, 0xFF, 0x1B, 0x00, 0x39, 0xFF, 0x71, 0xFF,
+ 0x12, 0x00, 0x0D, 0x00, 0xAC, 0xFF, 0x12, 0x00,
+ 0x27, 0x00, 0xAC, 0xFF, 0x12, 0x00, 0x42, 0x00,
+ 0xAC, 0xFF, 0x12, 0x00, 0x5C, 0x00, 0xAC, 0xFF,
+ 0x15, 0x00, 0x78, 0x00, 0x8F, 0xFF, 0x17, 0x00,
+ 0x92, 0x00, 0x78, 0xFF, 0x19, 0x00, 0xAD, 0x00,
+ 0x5B, 0xFF, 0x1B, 0x00, 0xC7, 0x00, 0x38, 0xFF,
+ 0x12, 0x00, 0xF3, 0xFF, 0xAC, 0xFF, 0x12, 0x00,
+ 0xD9, 0xFF, 0xAC, 0xFF, 0x12, 0x00, 0xBE, 0xFF,
+ 0xAC, 0xFF, 0x12, 0x00, 0xA4, 0xFF, 0xAC, 0xFF,
+ 0x15, 0x00, 0x88, 0xFF, 0x8F, 0xFF, 0x17, 0x00,
+ 0x6E, 0xFF, 0x78, 0xFF, 0x19, 0x00, 0x53, 0xFF,
+ 0x5B, 0xFF, 0x1B, 0x00, 0x39, 0xFF, 0x38, 0xFF,
+ 0x15, 0x00, 0x0D, 0x00, 0x93, 0xFF, 0x15, 0x00,
+ 0x27, 0x00, 0x93, 0xFF, 0x15, 0x00, 0x42, 0x00,
+ 0x93, 0xFF, 0x15, 0x00, 0x5C, 0x00, 0x93, 0xFF,
+ 0x18, 0x00, 0x78, 0x00, 0x6E, 0xFF, 0x1A, 0x00,
+ 0x92, 0x00, 0x50, 0xFF, 0x1C, 0x00, 0xAD, 0x00,
+ 0x2B, 0xFF, 0x1E, 0x00, 0xC7, 0x00, 0xFE, 0xFE,
+ 0x15, 0x00, 0xF3, 0xFF, 0x93, 0xFF, 0x15, 0x00,
+ 0xD9, 0xFF, 0x93, 0xFF, 0x15, 0x00, 0xBE, 0xFF,
+ 0x93, 0xFF, 0x15, 0x00, 0xA4, 0xFF, 0x93, 0xFF,
+ 0x18, 0x00, 0x88, 0xFF, 0x6E, 0xFF, 0x1A, 0x00,
+ 0x6E, 0xFF, 0x50, 0xFF, 0x1C, 0x00, 0x53, 0xFF,
+ 0x2B, 0xFF, 0x1E, 0x00, 0x39, 0xFF, 0xFE, 0xFE,
+ 0x17, 0x00, 0x0D, 0x00, 0x7B, 0xFF, 0x17, 0x00,
+ 0x27, 0x00, 0x7B, 0xFF, 0x17, 0x00, 0x42, 0x00,
+ 0x7B, 0xFF, 0x17, 0x00, 0x5C, 0x00, 0x7B, 0xFF,
+ 0x1A, 0x00, 0x78, 0x00, 0x4E, 0xFF, 0x1C, 0x00,
+ 0x92, 0x00, 0x29, 0xFF, 0x1E, 0x00, 0xAD, 0x00,
+ 0xFC, 0xFE, 0x20, 0x00, 0xC7, 0x00, 0xC5, 0xFE,
+ 0x17, 0x00, 0xF3, 0xFF, 0x7B, 0xFF, 0x17, 0x00,
+ 0xD9, 0xFF, 0x7B, 0xFF, 0x17, 0x00, 0xBE, 0xFF,
+ 0x7B, 0xFF, 0x17, 0x00, 0xA4, 0xFF, 0x7B, 0xFF,
+ 0x1A, 0x00, 0x88, 0xFF, 0x4E, 0xFF, 0x1C, 0x00,
+ 0x6E, 0xFF, 0x29, 0xFF, 0x1E, 0x00, 0x53, 0xFF,
+ 0xFC, 0xFE, 0x20, 0x00, 0x39, 0xFF, 0xC5, 0xFE,
+ 0x19, 0x00, 0x0D, 0x00, 0x63, 0xFF, 0x19, 0x00,
+ 0x27, 0x00, 0x63, 0xFF, 0x19, 0x00, 0x42, 0x00,
+ 0x63, 0xFF, 0x19, 0x00, 0x5C, 0x00, 0x63, 0xFF,
+ 0x1C, 0x00, 0x78, 0x00, 0x2D, 0xFF, 0x1E, 0x00,
+ 0x92, 0x00, 0x02, 0xFF, 0x20, 0x00, 0xAD, 0x00,
+ 0xCC, 0xFE, 0x22, 0x00, 0xC7, 0x00, 0x8B, 0xFE,
+ 0x19, 0x00, 0xF3, 0xFF, 0x63, 0xFF, 0x19, 0x00,
+ 0xD9, 0xFF, 0x63, 0xFF, 0x19, 0x00, 0xBE, 0xFF,
+ 0x63, 0xFF, 0x19, 0x00, 0xA4, 0xFF, 0x63, 0xFF,
+ 0x1C, 0x00, 0x88, 0xFF, 0x2D, 0xFF, 0x1E, 0x00,
+ 0x6E, 0xFF, 0x02, 0xFF, 0x20, 0x00, 0x53, 0xFF,
+ 0xCC, 0xFE, 0x22, 0x00, 0x39, 0xFF, 0x8B, 0xFE,
+ 0x1B, 0x00, 0x0D, 0x00, 0x4B, 0xFF, 0x1B, 0x00,
+ 0x27, 0x00, 0x4B, 0xFF, 0x1B, 0x00, 0x42, 0x00,
+ 0x4B, 0xFF, 0x1B, 0x00, 0x5C, 0x00, 0x4B, 0xFF,
+ 0x1E, 0x00, 0x78, 0x00, 0x0D, 0xFF, 0x20, 0x00,
+ 0x92, 0x00, 0xDB, 0xFE, 0x22, 0x00, 0xAD, 0x00,
+ 0x9D, 0xFE, 0x24, 0x00, 0xC7, 0x00, 0x52, 0xFE,
+ 0x1B, 0x00, 0xF3, 0xFF, 0x4B, 0xFF, 0x1B, 0x00,
+ 0xD9, 0xFF, 0x4B, 0xFF, 0x1B, 0x00, 0xBE, 0xFF,
+ 0x4B, 0xFF, 0x1B, 0x00, 0xA4, 0xFF, 0x4B, 0xFF,
+ 0x1E, 0x00, 0x88, 0xFF, 0x0D, 0xFF, 0x20, 0x00,
+ 0x6E, 0xFF, 0xDB, 0xFE, 0x22, 0x00, 0x53, 0xFF,
+ 0x9D, 0xFE, 0x24, 0x00, 0x39, 0xFF, 0x52, 0xFE,
+ 0x13, 0x00, 0x0E, 0x00, 0x0D, 0x00, 0x13, 0x00,
+ 0x2B, 0x00, 0x0D, 0x00, 0x13, 0x00, 0x49, 0x00,
+ 0x0D, 0x00, 0x13, 0x00, 0x66, 0x00, 0x0D, 0x00,
+ 0x16, 0x00, 0x84, 0x00, 0x11, 0x00, 0x18, 0x00,
+ 0xA1, 0x00, 0x15, 0x00, 0x1A, 0x00, 0xBF, 0x00,
+ 0x1A, 0x00, 0x1C, 0x00, 0xDC, 0x00, 0x1F, 0x00,
+ 0x13, 0x00, 0xF2, 0xFF, 0x0D, 0x00, 0x13, 0x00,
+ 0xD5, 0xFF, 0x0D, 0x00, 0x13, 0x00, 0xB7, 0xFF,
+ 0x0D, 0x00, 0x13, 0x00, 0x9A, 0xFF, 0x0D, 0x00,
+ 0x16, 0x00, 0x7C, 0xFF, 0x11, 0x00, 0x18, 0x00,
+ 0x5F, 0xFF, 0x15, 0x00, 0x1A, 0x00, 0x41, 0xFF,
+ 0x1A, 0x00, 0x1C, 0x00, 0x24, 0xFF, 0x1F, 0x00,
+ 0x13, 0x00, 0x0E, 0x00, 0x27, 0x00, 0x13, 0x00,
+ 0x2B, 0x00, 0x27, 0x00, 0x13, 0x00, 0x49, 0x00,
+ 0x27, 0x00, 0x13, 0x00, 0x66, 0x00, 0x27, 0x00,
+ 0x16, 0x00, 0x84, 0x00, 0x34, 0x00, 0x18, 0x00,
+ 0xA1, 0x00, 0x40, 0x00, 0x1A, 0x00, 0xBF, 0x00,
+ 0x4E, 0x00, 0x1C, 0x00, 0xDC, 0x00, 0x5E, 0x00,
+ 0x13, 0x00, 0xF2, 0xFF, 0x27, 0x00, 0x13, 0x00,
+ 0xD5, 0xFF, 0x27, 0x00, 0x13, 0x00, 0xB7, 0xFF,
+ 0x27, 0x00, 0x13, 0x00, 0x9A, 0xFF, 0x27, 0x00,
+ 0x16, 0x00, 0x7C, 0xFF, 0x34, 0x00, 0x18, 0x00,
+ 0x5F, 0xFF, 0x40, 0x00, 0x1A, 0x00, 0x41, 0xFF,
+ 0x4E, 0x00, 0x1C, 0x00, 0x24, 0xFF, 0x5E, 0x00,
+ 0x13, 0x00, 0x0E, 0x00, 0x42, 0x00, 0x13, 0x00,
+ 0x2B, 0x00, 0x42, 0x00, 0x13, 0x00, 0x49, 0x00,
+ 0x42, 0x00, 0x13, 0x00, 0x66, 0x00, 0x42, 0x00,
+ 0x16, 0x00, 0x84, 0x00, 0x58, 0x00, 0x18, 0x00,
+ 0xA1, 0x00, 0x6B, 0x00, 0x1A, 0x00, 0xBF, 0x00,
+ 0x82, 0x00, 0x1C, 0x00, 0xDC, 0x00, 0x9D, 0x00,
+ 0x13, 0x00, 0xF2, 0xFF, 0x42, 0x00, 0x13, 0x00,
+ 0xD5, 0xFF, 0x42, 0x00, 0x13, 0x00, 0xB7, 0xFF,
+ 0x42, 0x00, 0x13, 0x00, 0x9A, 0xFF, 0x42, 0x00,
+ 0x16, 0x00, 0x7C, 0xFF, 0x58, 0x00, 0x18, 0x00,
+ 0x5F, 0xFF, 0x6B, 0x00, 0x1A, 0x00, 0x41, 0xFF,
+ 0x82, 0x00, 0x1C, 0x00, 0x24, 0xFF, 0x9D, 0x00,
+ 0x13, 0x00, 0x0E, 0x00, 0x5C, 0x00, 0x13, 0x00,
+ 0x2B, 0x00, 0x5C, 0x00, 0x13, 0x00, 0x49, 0x00,
+ 0x5C, 0x00, 0x13, 0x00, 0x66, 0x00, 0x5C, 0x00,
+ 0x16, 0x00, 0x84, 0x00, 0x7B, 0x00, 0x18, 0x00,
+ 0xA1, 0x00, 0x96, 0x00, 0x1A, 0x00, 0xBF, 0x00,
+ 0xB6, 0x00, 0x1C, 0x00, 0xDC, 0x00, 0xDC, 0x00,
+ 0x13, 0x00, 0xF2, 0xFF, 0x5C, 0x00, 0x13, 0x00,
+ 0xD5, 0xFF, 0x5C, 0x00, 0x13, 0x00, 0xB7, 0xFF,
+ 0x5C, 0x00, 0x13, 0x00, 0x9A, 0xFF, 0x5C, 0x00,
+ 0x16, 0x00, 0x7C, 0xFF, 0x7B, 0x00, 0x18, 0x00,
+ 0x5F, 0xFF, 0x96, 0x00, 0x1A, 0x00, 0x41, 0xFF,
+ 0xB6, 0x00, 0x1C, 0x00, 0x24, 0xFF, 0xDC, 0x00,
+ 0x16, 0x00, 0x0E, 0x00, 0x78, 0x00, 0x16, 0x00,
+ 0x2B, 0x00, 0x78, 0x00, 0x16, 0x00, 0x49, 0x00,
+ 0x78, 0x00, 0x16, 0x00, 0x66, 0x00, 0x78, 0x00,
+ 0x19, 0x00, 0x84, 0x00, 0xA0, 0x00, 0x1B, 0x00,
+ 0xA1, 0x00, 0xC2, 0x00, 0x1D, 0x00, 0xBF, 0x00,
+ 0xEB, 0x00, 0x1F, 0x00, 0xDC, 0x00, 0x1C, 0x01,
+ 0x16, 0x00, 0xF2, 0xFF, 0x78, 0x00, 0x16, 0x00,
+ 0xD5, 0xFF, 0x78, 0x00, 0x16, 0x00, 0xB7, 0xFF,
+ 0x78, 0x00, 0x16, 0x00, 0x9A, 0xFF, 0x78, 0x00,
+ 0x19, 0x00, 0x7C, 0xFF, 0xA0, 0x00, 0x1B, 0x00,
+ 0x5F, 0xFF, 0xC2, 0x00, 0x1D, 0x00, 0x41, 0xFF,
+ 0xEB, 0x00, 0x1F, 0x00, 0x24, 0xFF, 0x1C, 0x01,
+ 0x18, 0x00, 0x0E, 0x00, 0x92, 0x00, 0x18, 0x00,
+ 0x2B, 0x00, 0x92, 0x00, 0x18, 0x00, 0x49, 0x00,
+ 0x92, 0x00, 0x18, 0x00, 0x66, 0x00, 0x92, 0x00,
+ 0x1B, 0x00, 0x84, 0x00, 0xC3, 0x00, 0x1D, 0x00,
+ 0xA1, 0x00, 0xED, 0x00, 0x1F, 0x00, 0xBF, 0x00,
+ 0x1F, 0x01, 0x21, 0x00, 0xDC, 0x00, 0x5B, 0x01,
+ 0x18, 0x00, 0xF2, 0xFF, 0x92, 0x00, 0x18, 0x00,
+ 0xD5, 0xFF, 0x92, 0x00, 0x18, 0x00, 0xB7, 0xFF,
+ 0x92, 0x00, 0x18, 0x00, 0x9A, 0xFF, 0x92, 0x00,
+ 0x1B, 0x00, 0x7C, 0xFF, 0xC3, 0x00, 0x1D, 0x00,
+ 0x5F, 0xFF, 0xED, 0x00, 0x1F, 0x00, 0x41, 0xFF,
+ 0x1F, 0x01, 0x21, 0x00, 0x24, 0xFF, 0x5B, 0x01,
+ 0x1A, 0x00, 0x0E, 0x00, 0xAD, 0x00, 0x1A, 0x00,
+ 0x2B, 0x00, 0xAD, 0x00, 0x1A, 0x00, 0x49, 0x00,
+ 0xAD, 0x00, 0x1A, 0x00, 0x66, 0x00, 0xAD, 0x00,
+ 0x1D, 0x00, 0x84, 0x00, 0xE7, 0x00, 0x1F, 0x00,
+ 0xA1, 0x00, 0x18, 0x01, 0x21, 0x00, 0xBF, 0x00,
+ 0x53, 0x01, 0x23, 0x00, 0xDC, 0x00, 0x9A, 0x01,
+ 0x1A, 0x00, 0xF2, 0xFF, 0xAD, 0x00, 0x1A, 0x00,
+ 0xD5, 0xFF, 0xAD, 0x00, 0x1A, 0x00, 0xB7, 0xFF,
+ 0xAD, 0x00, 0x1A, 0x00, 0x9A, 0xFF, 0xAD, 0x00,
+ 0x1D, 0x00, 0x7C, 0xFF, 0xE7, 0x00, 0x1F, 0x00,
+ 0x5F, 0xFF, 0x18, 0x01, 0x21, 0x00, 0x41, 0xFF,
+ 0x53, 0x01, 0x23, 0x00, 0x24, 0xFF, 0x9A, 0x01,
+ 0x1C, 0x00, 0x0E, 0x00, 0xC7, 0x00, 0x1C, 0x00,
+ 0x2B, 0x00, 0xC7, 0x00, 0x1C, 0x00, 0x49, 0x00,
+ 0xC7, 0x00, 0x1C, 0x00, 0x66, 0x00, 0xC7, 0x00,
+ 0x1F, 0x00, 0x84, 0x00, 0x0A, 0x01, 0x21, 0x00,
+ 0xA1, 0x00, 0x43, 0x01, 0x23, 0x00, 0xBF, 0x00,
+ 0x87, 0x01, 0x25, 0x00, 0xDC, 0x00, 0xD9, 0x01,
+ 0x1C, 0x00, 0xF2, 0xFF, 0xC7, 0x00, 0x1C, 0x00,
+ 0xD5, 0xFF, 0xC7, 0x00, 0x1C, 0x00, 0xB7, 0xFF,
+ 0xC7, 0x00, 0x1C, 0x00, 0x9A, 0xFF, 0xC7, 0x00,
+ 0x1F, 0x00, 0x7C, 0xFF, 0x0A, 0x01, 0x21, 0x00,
+ 0x5F, 0xFF, 0x43, 0x01, 0x23, 0x00, 0x41, 0xFF,
+ 0x87, 0x01, 0x25, 0x00, 0x24, 0xFF, 0xD9, 0x01,
+ 0x13, 0x00, 0x0E, 0x00, 0xF3, 0xFF, 0x13, 0x00,
+ 0x2B, 0x00, 0xF3, 0xFF, 0x13, 0x00, 0x49, 0x00,
+ 0xF3, 0xFF, 0x13, 0x00, 0x66, 0x00, 0xF3, 0xFF,
+ 0x16, 0x00, 0x84, 0x00, 0xEF, 0xFF, 0x18, 0x00,
+ 0xA1, 0x00, 0xEB, 0xFF, 0x1A, 0x00, 0xBF, 0x00,
+ 0xE6, 0xFF, 0x1C, 0x00, 0xDC, 0x00, 0xE1, 0xFF,
+ 0x13, 0x00, 0xF2, 0xFF, 0xF3, 0xFF, 0x13, 0x00,
+ 0xD5, 0xFF, 0xF3, 0xFF, 0x13, 0x00, 0xB7, 0xFF,
+ 0xF3, 0xFF, 0x13, 0x00, 0x9A, 0xFF, 0xF3, 0xFF,
+ 0x16, 0x00, 0x7C, 0xFF, 0xEF, 0xFF, 0x18, 0x00,
+ 0x5F, 0xFF, 0xEB, 0xFF, 0x1A, 0x00, 0x41, 0xFF,
+ 0xE6, 0xFF, 0x1C, 0x00, 0x24, 0xFF, 0xE1, 0xFF,
+ 0x13, 0x00, 0x0E, 0x00, 0xD9, 0xFF, 0x13, 0x00,
+ 0x2B, 0x00, 0xD9, 0xFF, 0x13, 0x00, 0x49, 0x00,
+ 0xD9, 0xFF, 0x13, 0x00, 0x66, 0x00, 0xD9, 0xFF,
+ 0x16, 0x00, 0x84, 0x00, 0xCC, 0xFF, 0x18, 0x00,
+ 0xA1, 0x00, 0xC0, 0xFF, 0x1A, 0x00, 0xBF, 0x00,
+ 0xB2, 0xFF, 0x1C, 0x00, 0xDC, 0x00, 0xA2, 0xFF,
+ 0x13, 0x00, 0xF2, 0xFF, 0xD9, 0xFF, 0x13, 0x00,
+ 0xD5, 0xFF, 0xD9, 0xFF, 0x13, 0x00, 0xB7, 0xFF,
+ 0xD9, 0xFF, 0x13, 0x00, 0x9A, 0xFF, 0xD9, 0xFF,
+ 0x16, 0x00, 0x7C, 0xFF, 0xCC, 0xFF, 0x18, 0x00,
+ 0x5F, 0xFF, 0xC0, 0xFF, 0x1A, 0x00, 0x41, 0xFF,
+ 0xB2, 0xFF, 0x1C, 0x00, 0x24, 0xFF, 0xA2, 0xFF,
+ 0x13, 0x00, 0x0E, 0x00, 0xBE, 0xFF, 0x13, 0x00,
+ 0x2B, 0x00, 0xBE, 0xFF, 0x13, 0x00, 0x49, 0x00,
+ 0xBE, 0xFF, 0x13, 0x00, 0x66, 0x00, 0xBE, 0xFF,
+ 0x16, 0x00, 0x84, 0x00, 0xA8, 0xFF, 0x18, 0x00,
+ 0xA1, 0x00, 0x95, 0xFF, 0x1A, 0x00, 0xBF, 0x00,
+ 0x7E, 0xFF, 0x1C, 0x00, 0xDC, 0x00, 0x63, 0xFF,
+ 0x13, 0x00, 0xF2, 0xFF, 0xBE, 0xFF, 0x13, 0x00,
+ 0xD5, 0xFF, 0xBE, 0xFF, 0x13, 0x00, 0xB7, 0xFF,
+ 0xBE, 0xFF, 0x13, 0x00, 0x9A, 0xFF, 0xBE, 0xFF,
+ 0x16, 0x00, 0x7C, 0xFF, 0xA8, 0xFF, 0x18, 0x00,
+ 0x5F, 0xFF, 0x95, 0xFF, 0x1A, 0x00, 0x41, 0xFF,
+ 0x7E, 0xFF, 0x1C, 0x00, 0x24, 0xFF, 0x63, 0xFF,
+ 0x13, 0x00, 0x0E, 0x00, 0xA4, 0xFF, 0x13, 0x00,
+ 0x2B, 0x00, 0xA4, 0xFF, 0x13, 0x00, 0x49, 0x00,
+ 0xA4, 0xFF, 0x13, 0x00, 0x66, 0x00, 0xA4, 0xFF,
+ 0x16, 0x00, 0x84, 0x00, 0x85, 0xFF, 0x18, 0x00,
+ 0xA1, 0x00, 0x6A, 0xFF, 0x1A, 0x00, 0xBF, 0x00,
+ 0x4A, 0xFF, 0x1C, 0x00, 0xDC, 0x00, 0x24, 0xFF,
+ 0x13, 0x00, 0xF2, 0xFF, 0xA4, 0xFF, 0x13, 0x00,
+ 0xD5, 0xFF, 0xA4, 0xFF, 0x13, 0x00, 0xB7, 0xFF,
+ 0xA4, 0xFF, 0x13, 0x00, 0x9A, 0xFF, 0xA4, 0xFF,
+ 0x16, 0x00, 0x7C, 0xFF, 0x85, 0xFF, 0x18, 0x00,
+ 0x5F, 0xFF, 0x6A, 0xFF, 0x1A, 0x00, 0x41, 0xFF,
+ 0x4A, 0xFF, 0x1C, 0x00, 0x24, 0xFF, 0x24, 0xFF,
+ 0x16, 0x00, 0x0E, 0x00, 0x88, 0xFF, 0x16, 0x00,
+ 0x2B, 0x00, 0x88, 0xFF, 0x16, 0x00, 0x49, 0x00,
+ 0x88, 0xFF, 0x16, 0x00, 0x66, 0x00, 0x88, 0xFF,
+ 0x19, 0x00, 0x84, 0x00, 0x60, 0xFF, 0x1B, 0x00,
+ 0xA1, 0x00, 0x3E, 0xFF, 0x1D, 0x00, 0xBF, 0x00,
+ 0x15, 0xFF, 0x1F, 0x00, 0xDC, 0x00, 0xE4, 0xFE,
+ 0x16, 0x00, 0xF2, 0xFF, 0x88, 0xFF, 0x16, 0x00,
+ 0xD5, 0xFF, 0x88, 0xFF, 0x16, 0x00, 0xB7, 0xFF,
+ 0x88, 0xFF, 0x16, 0x00, 0x9A, 0xFF, 0x88, 0xFF,
+ 0x19, 0x00, 0x7C, 0xFF, 0x60, 0xFF, 0x1B, 0x00,
+ 0x5F, 0xFF, 0x3E, 0xFF, 0x1D, 0x00, 0x41, 0xFF,
+ 0x15, 0xFF, 0x1F, 0x00, 0x24, 0xFF, 0xE4, 0xFE,
+ 0x18, 0x00, 0x0E, 0x00, 0x6E, 0xFF, 0x18, 0x00,
+ 0x2B, 0x00, 0x6E, 0xFF, 0x18, 0x00, 0x49, 0x00,
+ 0x6E, 0xFF, 0x18, 0x00, 0x66, 0x00, 0x6E, 0xFF,
+ 0x1B, 0x00, 0x84, 0x00, 0x3D, 0xFF, 0x1D, 0x00,
+ 0xA1, 0x00, 0x13, 0xFF, 0x1F, 0x00, 0xBF, 0x00,
+ 0xE1, 0xFE, 0x21, 0x00, 0xDC, 0x00, 0xA5, 0xFE,
+ 0x18, 0x00, 0xF2, 0xFF, 0x6E, 0xFF, 0x18, 0x00,
+ 0xD5, 0xFF, 0x6E, 0xFF, 0x18, 0x00, 0xB7, 0xFF,
+ 0x6E, 0xFF, 0x18, 0x00, 0x9A, 0xFF, 0x6E, 0xFF,
+ 0x1B, 0x00, 0x7C, 0xFF, 0x3D, 0xFF, 0x1D, 0x00,
+ 0x5F, 0xFF, 0x13, 0xFF, 0x1F, 0x00, 0x41, 0xFF,
+ 0xE1, 0xFE, 0x21, 0x00, 0x24, 0xFF, 0xA5, 0xFE,
+ 0x1A, 0x00, 0x0E, 0x00, 0x53, 0xFF, 0x1A, 0x00,
+ 0x2B, 0x00, 0x53, 0xFF, 0x1A, 0x00, 0x49, 0x00,
+ 0x53, 0xFF, 0x1A, 0x00, 0x66, 0x00, 0x53, 0xFF,
+ 0x1D, 0x00, 0x84, 0x00, 0x19, 0xFF, 0x1F, 0x00,
+ 0xA1, 0x00, 0xE8, 0xFE, 0x21, 0x00, 0xBF, 0x00,
+ 0xAD, 0xFE, 0x23, 0x00, 0xDC, 0x00, 0x66, 0xFE,
+ 0x1A, 0x00, 0xF2, 0xFF, 0x53, 0xFF, 0x1A, 0x00,
+ 0xD5, 0xFF, 0x53, 0xFF, 0x1A, 0x00, 0xB7, 0xFF,
+ 0x53, 0xFF, 0x1A, 0x00, 0x9A, 0xFF, 0x53, 0xFF,
+ 0x1D, 0x00, 0x7C, 0xFF, 0x19, 0xFF, 0x1F, 0x00,
+ 0x5F, 0xFF, 0xE8, 0xFE, 0x21, 0x00, 0x41, 0xFF,
+ 0xAD, 0xFE, 0x23, 0x00, 0x24, 0xFF, 0x66, 0xFE,
+ 0x1C, 0x00, 0x0E, 0x00, 0x39, 0xFF, 0x1C, 0x00,
+ 0x2B, 0x00, 0x39, 0xFF, 0x1C, 0x00, 0x49, 0x00,
+ 0x39, 0xFF, 0x1C, 0x00, 0x66, 0x00, 0x39, 0xFF,
+ 0x1F, 0x00, 0x84, 0x00, 0xF6, 0xFE, 0x21, 0x00,
+ 0xA1, 0x00, 0xBD, 0xFE, 0x23, 0x00, 0xBF, 0x00,
+ 0x79, 0xFE, 0x25, 0x00, 0xDC, 0x00, 0x27, 0xFE,
+ 0x1C, 0x00, 0xF2, 0xFF, 0x39, 0xFF, 0x1C, 0x00,
+ 0xD5, 0xFF, 0x39, 0xFF, 0x1C, 0x00, 0xB7, 0xFF,
+ 0x39, 0xFF, 0x1C, 0x00, 0x9A, 0xFF, 0x39, 0xFF,
+ 0x1F, 0x00, 0x7C, 0xFF, 0xF6, 0xFE, 0x21, 0x00,
+ 0x5F, 0xFF, 0xBD, 0xFE, 0x23, 0x00, 0x41, 0xFF,
+ 0x79, 0xFE, 0x25, 0x00, 0x24, 0xFF, 0x27, 0xFE,
+ 0x14, 0x00, 0x10, 0x00, 0x0E, 0x00, 0x14, 0x00,
+ 0x30, 0x00, 0x0E, 0x00, 0x14, 0x00, 0x51, 0x00,
+ 0x0E, 0x00, 0x14, 0x00, 0x71, 0x00, 0x0E, 0x00,
+ 0x17, 0x00, 0x92, 0x00, 0x13, 0x00, 0x19, 0x00,
+ 0xB2, 0x00, 0x17, 0x00, 0x1B, 0x00, 0xD3, 0x00,
+ 0x1C, 0x00, 0x1D, 0x00, 0xF3, 0x00, 0x22, 0x00,
+ 0x14, 0x00, 0xF0, 0xFF, 0x0E, 0x00, 0x14, 0x00,
+ 0xD0, 0xFF, 0x0E, 0x00, 0x14, 0x00, 0xAF, 0xFF,
+ 0x0E, 0x00, 0x14, 0x00, 0x8F, 0xFF, 0x0E, 0x00,
+ 0x17, 0x00, 0x6E, 0xFF, 0x13, 0x00, 0x19, 0x00,
+ 0x4E, 0xFF, 0x17, 0x00, 0x1B, 0x00, 0x2D, 0xFF,
+ 0x1C, 0x00, 0x1D, 0x00, 0x0D, 0xFF, 0x22, 0x00,
+ 0x14, 0x00, 0x10, 0x00, 0x2B, 0x00, 0x14, 0x00,
+ 0x30, 0x00, 0x2B, 0x00, 0x14, 0x00, 0x51, 0x00,
+ 0x2B, 0x00, 0x14, 0x00, 0x71, 0x00, 0x2B, 0x00,
+ 0x17, 0x00, 0x92, 0x00, 0x3A, 0x00, 0x19, 0x00,
+ 0xB2, 0x00, 0x46, 0x00, 0x1B, 0x00, 0xD3, 0x00,
+ 0x55, 0x00, 0x1D, 0x00, 0xF3, 0x00, 0x67, 0x00,
+ 0x14, 0x00, 0xF0, 0xFF, 0x2B, 0x00, 0x14, 0x00,
+ 0xD0, 0xFF, 0x2B, 0x00, 0x14, 0x00, 0xAF, 0xFF,
+ 0x2B, 0x00, 0x14, 0x00, 0x8F, 0xFF, 0x2B, 0x00,
+ 0x17, 0x00, 0x6E, 0xFF, 0x3A, 0x00, 0x19, 0x00,
+ 0x4E, 0xFF, 0x46, 0x00, 0x1B, 0x00, 0x2D, 0xFF,
+ 0x55, 0x00, 0x1D, 0x00, 0x0D, 0xFF, 0x67, 0x00,
+ 0x14, 0x00, 0x10, 0x00, 0x49, 0x00, 0x14, 0x00,
+ 0x30, 0x00, 0x49, 0x00, 0x14, 0x00, 0x51, 0x00,
+ 0x49, 0x00, 0x14, 0x00, 0x71, 0x00, 0x49, 0x00,
+ 0x17, 0x00, 0x92, 0x00, 0x61, 0x00, 0x19, 0x00,
+ 0xB2, 0x00, 0x76, 0x00, 0x1B, 0x00, 0xD3, 0x00,
+ 0x8F, 0x00, 0x1D, 0x00, 0xF3, 0x00, 0xAD, 0x00,
+ 0x14, 0x00, 0xF0, 0xFF, 0x49, 0x00, 0x14, 0x00,
+ 0xD0, 0xFF, 0x49, 0x00, 0x14, 0x00, 0xAF, 0xFF,
+ 0x49, 0x00, 0x14, 0x00, 0x8F, 0xFF, 0x49, 0x00,
+ 0x17, 0x00, 0x6E, 0xFF, 0x61, 0x00, 0x19, 0x00,
+ 0x4E, 0xFF, 0x76, 0x00, 0x1B, 0x00, 0x2D, 0xFF,
+ 0x8F, 0x00, 0x1D, 0x00, 0x0D, 0xFF, 0xAD, 0x00,
+ 0x14, 0x00, 0x10, 0x00, 0x66, 0x00, 0x14, 0x00,
+ 0x30, 0x00, 0x66, 0x00, 0x14, 0x00, 0x51, 0x00,
+ 0x66, 0x00, 0x14, 0x00, 0x71, 0x00, 0x66, 0x00,
+ 0x17, 0x00, 0x92, 0x00, 0x88, 0x00, 0x19, 0x00,
+ 0xB2, 0x00, 0xA5, 0x00, 0x1B, 0x00, 0xD3, 0x00,
+ 0xC8, 0x00, 0x1D, 0x00, 0xF3, 0x00, 0xF2, 0x00,
+ 0x14, 0x00, 0xF0, 0xFF, 0x66, 0x00, 0x14, 0x00,
+ 0xD0, 0xFF, 0x66, 0x00, 0x14, 0x00, 0xAF, 0xFF,
+ 0x66, 0x00, 0x14, 0x00, 0x8F, 0xFF, 0x66, 0x00,
+ 0x17, 0x00, 0x6E, 0xFF, 0x88, 0x00, 0x19, 0x00,
+ 0x4E, 0xFF, 0xA5, 0x00, 0x1B, 0x00, 0x2D, 0xFF,
+ 0xC8, 0x00, 0x1D, 0x00, 0x0D, 0xFF, 0xF2, 0x00,
+ 0x17, 0x00, 0x10, 0x00, 0x84, 0x00, 0x17, 0x00,
+ 0x30, 0x00, 0x84, 0x00, 0x17, 0x00, 0x51, 0x00,
+ 0x84, 0x00, 0x17, 0x00, 0x71, 0x00, 0x84, 0x00,
+ 0x1A, 0x00, 0x92, 0x00, 0xB0, 0x00, 0x1C, 0x00,
+ 0xB2, 0x00, 0xD5, 0x00, 0x1E, 0x00, 0xD3, 0x00,
+ 0x02, 0x01, 0x20, 0x00, 0xF3, 0x00, 0x39, 0x01,
+ 0x17, 0x00, 0xF0, 0xFF, 0x84, 0x00, 0x17, 0x00,
+ 0xD0, 0xFF, 0x84, 0x00, 0x17, 0x00, 0xAF, 0xFF,
+ 0x84, 0x00, 0x17, 0x00, 0x8F, 0xFF, 0x84, 0x00,
+ 0x1A, 0x00, 0x6E, 0xFF, 0xB0, 0x00, 0x1C, 0x00,
+ 0x4E, 0xFF, 0xD5, 0x00, 0x1E, 0x00, 0x2D, 0xFF,
+ 0x02, 0x01, 0x20, 0x00, 0x0D, 0xFF, 0x39, 0x01,
+ 0x19, 0x00, 0x10, 0x00, 0xA1, 0x00, 0x19, 0x00,
+ 0x30, 0x00, 0xA1, 0x00, 0x19, 0x00, 0x51, 0x00,
+ 0xA1, 0x00, 0x19, 0x00, 0x71, 0x00, 0xA1, 0x00,
+ 0x1C, 0x00, 0x92, 0x00, 0xD7, 0x00, 0x1E, 0x00,
+ 0xB2, 0x00, 0x04, 0x01, 0x20, 0x00, 0xD3, 0x00,
+ 0x3B, 0x01, 0x22, 0x00, 0xF3, 0x00, 0x7E, 0x01,
+ 0x19, 0x00, 0xF0, 0xFF, 0xA1, 0x00, 0x19, 0x00,
+ 0xD0, 0xFF, 0xA1, 0x00, 0x19, 0x00, 0xAF, 0xFF,
+ 0xA1, 0x00, 0x19, 0x00, 0x8F, 0xFF, 0xA1, 0x00,
+ 0x1C, 0x00, 0x6E, 0xFF, 0xD7, 0x00, 0x1E, 0x00,
+ 0x4E, 0xFF, 0x04, 0x01, 0x20, 0x00, 0x2D, 0xFF,
+ 0x3B, 0x01, 0x22, 0x00, 0x0D, 0xFF, 0x7E, 0x01,
+ 0x1B, 0x00, 0x10, 0x00, 0xBF, 0x00, 0x1B, 0x00,
+ 0x30, 0x00, 0xBF, 0x00, 0x1B, 0x00, 0x51, 0x00,
+ 0xBF, 0x00, 0x1B, 0x00, 0x71, 0x00, 0xBF, 0x00,
+ 0x1E, 0x00, 0x92, 0x00, 0xFE, 0x00, 0x20, 0x00,
+ 0xB2, 0x00, 0x34, 0x01, 0x22, 0x00, 0xD3, 0x00,
+ 0x75, 0x01, 0x24, 0x00, 0xF3, 0x00, 0xC4, 0x01,
+ 0x1B, 0x00, 0xF0, 0xFF, 0xBF, 0x00, 0x1B, 0x00,
+ 0xD0, 0xFF, 0xBF, 0x00, 0x1B, 0x00, 0xAF, 0xFF,
+ 0xBF, 0x00, 0x1B, 0x00, 0x8F, 0xFF, 0xBF, 0x00,
+ 0x1E, 0x00, 0x6E, 0xFF, 0xFE, 0x00, 0x20, 0x00,
+ 0x4E, 0xFF, 0x34, 0x01, 0x22, 0x00, 0x2D, 0xFF,
+ 0x75, 0x01, 0x24, 0x00, 0x0D, 0xFF, 0xC4, 0x01,
+ 0x1D, 0x00, 0x10, 0x00, 0xDC, 0x00, 0x1D, 0x00,
+ 0x30, 0x00, 0xDC, 0x00, 0x1D, 0x00, 0x51, 0x00,
+ 0xDC, 0x00, 0x1D, 0x00, 0x71, 0x00, 0xDC, 0x00,
+ 0x20, 0x00, 0x92, 0x00, 0x25, 0x01, 0x22, 0x00,
+ 0xB2, 0x00, 0x63, 0x01, 0x24, 0x00, 0xD3, 0x00,
+ 0xAE, 0x01, 0x26, 0x00, 0xF3, 0x00, 0x09, 0x02,
+ 0x1D, 0x00, 0xF0, 0xFF, 0xDC, 0x00, 0x1D, 0x00,
+ 0xD0, 0xFF, 0xDC, 0x00, 0x1D, 0x00, 0xAF, 0xFF,
+ 0xDC, 0x00, 0x1D, 0x00, 0x8F, 0xFF, 0xDC, 0x00,
+ 0x20, 0x00, 0x6E, 0xFF, 0x25, 0x01, 0x22, 0x00,
+ 0x4E, 0xFF, 0x63, 0x01, 0x24, 0x00, 0x2D, 0xFF,
+ 0xAE, 0x01, 0x26, 0x00, 0x0D, 0xFF, 0x09, 0x02,
+ 0x14, 0x00, 0x10, 0x00, 0xF2, 0xFF, 0x14, 0x00,
+ 0x30, 0x00, 0xF2, 0xFF, 0x14, 0x00, 0x51, 0x00,
+ 0xF2, 0xFF, 0x14, 0x00, 0x71, 0x00, 0xF2, 0xFF,
+ 0x17, 0x00, 0x92, 0x00, 0xED, 0xFF, 0x19, 0x00,
+ 0xB2, 0x00, 0xE9, 0xFF, 0x1B, 0x00, 0xD3, 0x00,
+ 0xE4, 0xFF, 0x1D, 0x00, 0xF3, 0x00, 0xDE, 0xFF,
+ 0x14, 0x00, 0xF0, 0xFF, 0xF2, 0xFF, 0x14, 0x00,
+ 0xD0, 0xFF, 0xF2, 0xFF, 0x14, 0x00, 0xAF, 0xFF,
+ 0xF2, 0xFF, 0x14, 0x00, 0x8F, 0xFF, 0xF2, 0xFF,
+ 0x17, 0x00, 0x6E, 0xFF, 0xED, 0xFF, 0x19, 0x00,
+ 0x4E, 0xFF, 0xE9, 0xFF, 0x1B, 0x00, 0x2D, 0xFF,
+ 0xE4, 0xFF, 0x1D, 0x00, 0x0D, 0xFF, 0xDE, 0xFF,
+ 0x14, 0x00, 0x10, 0x00, 0xD5, 0xFF, 0x14, 0x00,
+ 0x30, 0x00, 0xD5, 0xFF, 0x14, 0x00, 0x51, 0x00,
+ 0xD5, 0xFF, 0x14, 0x00, 0x71, 0x00, 0xD5, 0xFF,
+ 0x17, 0x00, 0x92, 0x00, 0xC6, 0xFF, 0x19, 0x00,
+ 0xB2, 0x00, 0xBA, 0xFF, 0x1B, 0x00, 0xD3, 0x00,
+ 0xAB, 0xFF, 0x1D, 0x00, 0xF3, 0x00, 0x99, 0xFF,
+ 0x14, 0x00, 0xF0, 0xFF, 0xD5, 0xFF, 0x14, 0x00,
+ 0xD0, 0xFF, 0xD5, 0xFF, 0x14, 0x00, 0xAF, 0xFF,
+ 0xD5, 0xFF, 0x14, 0x00, 0x8F, 0xFF, 0xD5, 0xFF,
+ 0x17, 0x00, 0x6E, 0xFF, 0xC6, 0xFF, 0x19, 0x00,
+ 0x4E, 0xFF, 0xBA, 0xFF, 0x1B, 0x00, 0x2D, 0xFF,
+ 0xAB, 0xFF, 0x1D, 0x00, 0x0D, 0xFF, 0x99, 0xFF,
+ 0x14, 0x00, 0x10, 0x00, 0xB7, 0xFF, 0x14, 0x00,
+ 0x30, 0x00, 0xB7, 0xFF, 0x14, 0x00, 0x51, 0x00,
+ 0xB7, 0xFF, 0x14, 0x00, 0x71, 0x00, 0xB7, 0xFF,
+ 0x17, 0x00, 0x92, 0x00, 0x9F, 0xFF, 0x19, 0x00,
+ 0xB2, 0x00, 0x8A, 0xFF, 0x1B, 0x00, 0xD3, 0x00,
+ 0x71, 0xFF, 0x1D, 0x00, 0xF3, 0x00, 0x53, 0xFF,
+ 0x14, 0x00, 0xF0, 0xFF, 0xB7, 0xFF, 0x14, 0x00,
+ 0xD0, 0xFF, 0xB7, 0xFF, 0x14, 0x00, 0xAF, 0xFF,
+ 0xB7, 0xFF, 0x14, 0x00, 0x8F, 0xFF, 0xB7, 0xFF,
+ 0x17, 0x00, 0x6E, 0xFF, 0x9F, 0xFF, 0x19, 0x00,
+ 0x4E, 0xFF, 0x8A, 0xFF, 0x1B, 0x00, 0x2D, 0xFF,
+ 0x71, 0xFF, 0x1D, 0x00, 0x0D, 0xFF, 0x53, 0xFF,
+ 0x14, 0x00, 0x10, 0x00, 0x9A, 0xFF, 0x14, 0x00,
+ 0x30, 0x00, 0x9A, 0xFF, 0x14, 0x00, 0x51, 0x00,
+ 0x9A, 0xFF, 0x14, 0x00, 0x71, 0x00, 0x9A, 0xFF,
+ 0x17, 0x00, 0x92, 0x00, 0x78, 0xFF, 0x19, 0x00,
+ 0xB2, 0x00, 0x5B, 0xFF, 0x1B, 0x00, 0xD3, 0x00,
+ 0x38, 0xFF, 0x1D, 0x00, 0xF3, 0x00, 0x0E, 0xFF,
+ 0x14, 0x00, 0xF0, 0xFF, 0x9A, 0xFF, 0x14, 0x00,
+ 0xD0, 0xFF, 0x9A, 0xFF, 0x14, 0x00, 0xAF, 0xFF,
+ 0x9A, 0xFF, 0x14, 0x00, 0x8F, 0xFF, 0x9A, 0xFF,
+ 0x17, 0x00, 0x6E, 0xFF, 0x78, 0xFF, 0x19, 0x00,
+ 0x4E, 0xFF, 0x5B, 0xFF, 0x1B, 0x00, 0x2D, 0xFF,
+ 0x38, 0xFF, 0x1D, 0x00, 0x0D, 0xFF, 0x0E, 0xFF,
+ 0x17, 0x00, 0x10, 0x00, 0x7C, 0xFF, 0x17, 0x00,
+ 0x30, 0x00, 0x7C, 0xFF, 0x17, 0x00, 0x51, 0x00,
+ 0x7C, 0xFF, 0x17, 0x00, 0x71, 0x00, 0x7C, 0xFF,
+ 0x1A, 0x00, 0x92, 0x00, 0x50, 0xFF, 0x1C, 0x00,
+ 0xB2, 0x00, 0x2B, 0xFF, 0x1E, 0x00, 0xD3, 0x00,
+ 0xFE, 0xFE, 0x20, 0x00, 0xF3, 0x00, 0xC7, 0xFE,
+ 0x17, 0x00, 0xF0, 0xFF, 0x7C, 0xFF, 0x17, 0x00,
+ 0xD0, 0xFF, 0x7C, 0xFF, 0x17, 0x00, 0xAF, 0xFF,
+ 0x7C, 0xFF, 0x17, 0x00, 0x8F, 0xFF, 0x7C, 0xFF,
+ 0x1A, 0x00, 0x6E, 0xFF, 0x50, 0xFF, 0x1C, 0x00,
+ 0x4E, 0xFF, 0x2B, 0xFF, 0x1E, 0x00, 0x2D, 0xFF,
+ 0xFE, 0xFE, 0x20, 0x00, 0x0D, 0xFF, 0xC7, 0xFE,
+ 0x19, 0x00, 0x10, 0x00, 0x5F, 0xFF, 0x19, 0x00,
+ 0x30, 0x00, 0x5F, 0xFF, 0x19, 0x00, 0x51, 0x00,
+ 0x5F, 0xFF, 0x19, 0x00, 0x71, 0x00, 0x5F, 0xFF,
+ 0x1C, 0x00, 0x92, 0x00, 0x29, 0xFF, 0x1E, 0x00,
+ 0xB2, 0x00, 0xFC, 0xFE, 0x20, 0x00, 0xD3, 0x00,
+ 0xC5, 0xFE, 0x22, 0x00, 0xF3, 0x00, 0x82, 0xFE,
+ 0x19, 0x00, 0xF0, 0xFF, 0x5F, 0xFF, 0x19, 0x00,
+ 0xD0, 0xFF, 0x5F, 0xFF, 0x19, 0x00, 0xAF, 0xFF,
+ 0x5F, 0xFF, 0x19, 0x00, 0x8F, 0xFF, 0x5F, 0xFF,
+ 0x1C, 0x00, 0x6E, 0xFF, 0x29, 0xFF, 0x1E, 0x00,
+ 0x4E, 0xFF, 0xFC, 0xFE, 0x20, 0x00, 0x2D, 0xFF,
+ 0xC5, 0xFE, 0x22, 0x00, 0x0D, 0xFF, 0x82, 0xFE,
+ 0x1B, 0x00, 0x10, 0x00, 0x41, 0xFF, 0x1B, 0x00,
+ 0x30, 0x00, 0x41, 0xFF, 0x1B, 0x00, 0x51, 0x00,
+ 0x41, 0xFF, 0x1B, 0x00, 0x71, 0x00, 0x41, 0xFF,
+ 0x1E, 0x00, 0x92, 0x00, 0x02, 0xFF, 0x20, 0x00,
+ 0xB2, 0x00, 0xCC, 0xFE, 0x22, 0x00, 0xD3, 0x00,
+ 0x8B, 0xFE, 0x24, 0x00, 0xF3, 0x00, 0x3C, 0xFE,
+ 0x1B, 0x00, 0xF0, 0xFF, 0x41, 0xFF, 0x1B, 0x00,
+ 0xD0, 0xFF, 0x41, 0xFF, 0x1B, 0x00, 0xAF, 0xFF,
+ 0x41, 0xFF, 0x1B, 0x00, 0x8F, 0xFF, 0x41, 0xFF,
+ 0x1E, 0x00, 0x6E, 0xFF, 0x02, 0xFF, 0x20, 0x00,
+ 0x4E, 0xFF, 0xCC, 0xFE, 0x22, 0x00, 0x2D, 0xFF,
+ 0x8B, 0xFE, 0x24, 0x00, 0x0D, 0xFF, 0x3C, 0xFE,
+ 0x1D, 0x00, 0x10, 0x00, 0x24, 0xFF, 0x1D, 0x00,
+ 0x30, 0x00, 0x24, 0xFF, 0x1D, 0x00, 0x51, 0x00,
+ 0x24, 0xFF, 0x1D, 0x00, 0x71, 0x00, 0x24, 0xFF,
+ 0x20, 0x00, 0x92, 0x00, 0xDB, 0xFE, 0x22, 0x00,
+ 0xB2, 0x00, 0x9D, 0xFE, 0x24, 0x00, 0xD3, 0x00,
+ 0x52, 0xFE, 0x26, 0x00, 0xF3, 0x00, 0xF7, 0xFD,
+ 0x1D, 0x00, 0xF0, 0xFF, 0x24, 0xFF, 0x1D, 0x00,
+ 0xD0, 0xFF, 0x24, 0xFF, 0x1D, 0x00, 0xAF, 0xFF,
+ 0x24, 0xFF, 0x1D, 0x00, 0x8F, 0xFF, 0x24, 0xFF,
+ 0x20, 0x00, 0x6E, 0xFF, 0xDB, 0xFE, 0x22, 0x00,
+ 0x4E, 0xFF, 0x9D, 0xFE, 0x24, 0x00, 0x2D, 0xFF,
+ 0x52, 0xFE, 0x26, 0x00, 0x0D, 0xFF, 0xF7, 0xFD,
+ 0x15, 0x00, 0x11, 0x00, 0x10, 0x00, 0x15, 0x00,
+ 0x34, 0x00, 0x10, 0x00, 0x15, 0x00, 0x58, 0x00,
+ 0x10, 0x00, 0x15, 0x00, 0x7B, 0x00, 0x10, 0x00,
+ 0x18, 0x00, 0xA0, 0x00, 0x15, 0x00, 0x1A, 0x00,
+ 0xC3, 0x00, 0x1A, 0x00, 0x1C, 0x00, 0xE7, 0x00,
+ 0x1F, 0x00, 0x1E, 0x00, 0x0A, 0x01, 0x26, 0x00,
+ 0x15, 0x00, 0xEF, 0xFF, 0x10, 0x00, 0x15, 0x00,
+ 0xCC, 0xFF, 0x10, 0x00, 0x15, 0x00, 0xA8, 0xFF,
+ 0x10, 0x00, 0x15, 0x00, 0x85, 0xFF, 0x10, 0x00,
+ 0x18, 0x00, 0x60, 0xFF, 0x15, 0x00, 0x1A, 0x00,
+ 0x3D, 0xFF, 0x1A, 0x00, 0x1C, 0x00, 0x19, 0xFF,
+ 0x1F, 0x00, 0x1E, 0x00, 0xF6, 0xFE, 0x26, 0x00,
+ 0x15, 0x00, 0x11, 0x00, 0x30, 0x00, 0x15, 0x00,
+ 0x34, 0x00, 0x30, 0x00, 0x15, 0x00, 0x58, 0x00,
+ 0x30, 0x00, 0x15, 0x00, 0x7B, 0x00, 0x30, 0x00,
+ 0x18, 0x00, 0xA0, 0x00, 0x40, 0x00, 0x1A, 0x00,
+ 0xC3, 0x00, 0x4E, 0x00, 0x1C, 0x00, 0xE7, 0x00,
+ 0x5E, 0x00, 0x1E, 0x00, 0x0A, 0x01, 0x72, 0x00,
+ 0x15, 0x00, 0xEF, 0xFF, 0x30, 0x00, 0x15, 0x00,
+ 0xCC, 0xFF, 0x30, 0x00, 0x15, 0x00, 0xA8, 0xFF,
+ 0x30, 0x00, 0x15, 0x00, 0x85, 0xFF, 0x30, 0x00,
+ 0x18, 0x00, 0x60, 0xFF, 0x40, 0x00, 0x1A, 0x00,
+ 0x3D, 0xFF, 0x4E, 0x00, 0x1C, 0x00, 0x19, 0xFF,
+ 0x5E, 0x00, 0x1E, 0x00, 0xF6, 0xFE, 0x72, 0x00,
+ 0x15, 0x00, 0x11, 0x00, 0x51, 0x00, 0x15, 0x00,
+ 0x34, 0x00, 0x51, 0x00, 0x15, 0x00, 0x58, 0x00,
+ 0x51, 0x00, 0x15, 0x00, 0x7B, 0x00, 0x51, 0x00,
+ 0x18, 0x00, 0xA0, 0x00, 0x6B, 0x00, 0x1A, 0x00,
+ 0xC3, 0x00, 0x82, 0x00, 0x1C, 0x00, 0xE7, 0x00,
+ 0x9D, 0x00, 0x1E, 0x00, 0x0A, 0x01, 0xBF, 0x00,
+ 0x15, 0x00, 0xEF, 0xFF, 0x51, 0x00, 0x15, 0x00,
+ 0xCC, 0xFF, 0x51, 0x00, 0x15, 0x00, 0xA8, 0xFF,
+ 0x51, 0x00, 0x15, 0x00, 0x85, 0xFF, 0x51, 0x00,
+ 0x18, 0x00, 0x60, 0xFF, 0x6B, 0x00, 0x1A, 0x00,
+ 0x3D, 0xFF, 0x82, 0x00, 0x1C, 0x00, 0x19, 0xFF,
+ 0x9D, 0x00, 0x1E, 0x00, 0xF6, 0xFE, 0xBF, 0x00,
+ 0x15, 0x00, 0x11, 0x00, 0x71, 0x00, 0x15, 0x00,
+ 0x34, 0x00, 0x71, 0x00, 0x15, 0x00, 0x58, 0x00,
+ 0x71, 0x00, 0x15, 0x00, 0x7B, 0x00, 0x71, 0x00,
+ 0x18, 0x00, 0xA0, 0x00, 0x96, 0x00, 0x1A, 0x00,
+ 0xC3, 0x00, 0xB6, 0x00, 0x1C, 0x00, 0xE7, 0x00,
+ 0xDC, 0x00, 0x1E, 0x00, 0x0A, 0x01, 0x0B, 0x01,
+ 0x15, 0x00, 0xEF, 0xFF, 0x71, 0x00, 0x15, 0x00,
+ 0xCC, 0xFF, 0x71, 0x00, 0x15, 0x00, 0xA8, 0xFF,
+ 0x71, 0x00, 0x15, 0x00, 0x85, 0xFF, 0x71, 0x00,
+ 0x18, 0x00, 0x60, 0xFF, 0x96, 0x00, 0x1A, 0x00,
+ 0x3D, 0xFF, 0xB6, 0x00, 0x1C, 0x00, 0x19, 0xFF,
+ 0xDC, 0x00, 0x1E, 0x00, 0xF6, 0xFE, 0x0B, 0x01,
+ 0x18, 0x00, 0x11, 0x00, 0x92, 0x00, 0x18, 0x00,
+ 0x34, 0x00, 0x92, 0x00, 0x18, 0x00, 0x58, 0x00,
+ 0x92, 0x00, 0x18, 0x00, 0x7B, 0x00, 0x92, 0x00,
+ 0x1B, 0x00, 0xA0, 0x00, 0xC2, 0x00, 0x1D, 0x00,
+ 0xC3, 0x00, 0xEB, 0x00, 0x1F, 0x00, 0xE7, 0x00,
+ 0x1C, 0x01, 0x21, 0x00, 0x0A, 0x01, 0x59, 0x01,
+ 0x18, 0x00, 0xEF, 0xFF, 0x92, 0x00, 0x18, 0x00,
+ 0xCC, 0xFF, 0x92, 0x00, 0x18, 0x00, 0xA8, 0xFF,
+ 0x92, 0x00, 0x18, 0x00, 0x85, 0xFF, 0x92, 0x00,
+ 0x1B, 0x00, 0x60, 0xFF, 0xC2, 0x00, 0x1D, 0x00,
+ 0x3D, 0xFF, 0xEB, 0x00, 0x1F, 0x00, 0x19, 0xFF,
+ 0x1C, 0x01, 0x21, 0x00, 0xF6, 0xFE, 0x59, 0x01,
+ 0x1A, 0x00, 0x11, 0x00, 0xB2, 0x00, 0x1A, 0x00,
+ 0x34, 0x00, 0xB2, 0x00, 0x1A, 0x00, 0x58, 0x00,
+ 0xB2, 0x00, 0x1A, 0x00, 0x7B, 0x00, 0xB2, 0x00,
+ 0x1D, 0x00, 0xA0, 0x00, 0xED, 0x00, 0x1F, 0x00,
+ 0xC3, 0x00, 0x1F, 0x01, 0x21, 0x00, 0xE7, 0x00,
+ 0x5B, 0x01, 0x23, 0x00, 0x0A, 0x01, 0xA5, 0x01,
+ 0x1A, 0x00, 0xEF, 0xFF, 0xB2, 0x00, 0x1A, 0x00,
+ 0xCC, 0xFF, 0xB2, 0x00, 0x1A, 0x00, 0xA8, 0xFF,
+ 0xB2, 0x00, 0x1A, 0x00, 0x85, 0xFF, 0xB2, 0x00,
+ 0x1D, 0x00, 0x60, 0xFF, 0xED, 0x00, 0x1F, 0x00,
+ 0x3D, 0xFF, 0x1F, 0x01, 0x21, 0x00, 0x19, 0xFF,
+ 0x5B, 0x01, 0x23, 0x00, 0xF6, 0xFE, 0xA5, 0x01,
+ 0x1C, 0x00, 0x11, 0x00, 0xD3, 0x00, 0x1C, 0x00,
+ 0x34, 0x00, 0xD3, 0x00, 0x1C, 0x00, 0x58, 0x00,
+ 0xD3, 0x00, 0x1C, 0x00, 0x7B, 0x00, 0xD3, 0x00,
+ 0x1F, 0x00, 0xA0, 0x00, 0x18, 0x01, 0x21, 0x00,
+ 0xC3, 0x00, 0x53, 0x01, 0x23, 0x00, 0xE7, 0x00,
+ 0x9A, 0x01, 0x25, 0x00, 0x0A, 0x01, 0xF2, 0x01,
+ 0x1C, 0x00, 0xEF, 0xFF, 0xD3, 0x00, 0x1C, 0x00,
+ 0xCC, 0xFF, 0xD3, 0x00, 0x1C, 0x00, 0xA8, 0xFF,
+ 0xD3, 0x00, 0x1C, 0x00, 0x85, 0xFF, 0xD3, 0x00,
+ 0x1F, 0x00, 0x60, 0xFF, 0x18, 0x01, 0x21, 0x00,
+ 0x3D, 0xFF, 0x53, 0x01, 0x23, 0x00, 0x19, 0xFF,
+ 0x9A, 0x01, 0x25, 0x00, 0xF6, 0xFE, 0xF2, 0x01,
+ 0x1E, 0x00, 0x11, 0x00, 0xF3, 0x00, 0x1E, 0x00,
+ 0x34, 0x00, 0xF3, 0x00, 0x1E, 0x00, 0x58, 0x00,
+ 0xF3, 0x00, 0x1E, 0x00, 0x7B, 0x00, 0xF3, 0x00,
+ 0x21, 0x00, 0xA0, 0x00, 0x43, 0x01, 0x23, 0x00,
+ 0xC3, 0x00, 0x87, 0x01, 0x25, 0x00, 0xE7, 0x00,
+ 0xD9, 0x01, 0x27, 0x00, 0x0A, 0x01, 0x3E, 0x02,
+ 0x1E, 0x00, 0xEF, 0xFF, 0xF3, 0x00, 0x1E, 0x00,
+ 0xCC, 0xFF, 0xF3, 0x00, 0x1E, 0x00, 0xA8, 0xFF,
+ 0xF3, 0x00, 0x1E, 0x00, 0x85, 0xFF, 0xF3, 0x00,
+ 0x21, 0x00, 0x60, 0xFF, 0x43, 0x01, 0x23, 0x00,
+ 0x3D, 0xFF, 0x87, 0x01, 0x25, 0x00, 0x19, 0xFF,
+ 0xD9, 0x01, 0x27, 0x00, 0xF6, 0xFE, 0x3E, 0x02,
+ 0x15, 0x00, 0x11, 0x00, 0xF0, 0xFF, 0x15, 0x00,
+ 0x34, 0x00, 0xF0, 0xFF, 0x15, 0x00, 0x58, 0x00,
+ 0xF0, 0xFF, 0x15, 0x00, 0x7B, 0x00, 0xF0, 0xFF,
+ 0x18, 0x00, 0xA0, 0x00, 0xEB, 0xFF, 0x1A, 0x00,
+ 0xC3, 0x00, 0xE6, 0xFF, 0x1C, 0x00, 0xE7, 0x00,
+ 0xE1, 0xFF, 0x1E, 0x00, 0x0A, 0x01, 0xDA, 0xFF,
+ 0x15, 0x00, 0xEF, 0xFF, 0xF0, 0xFF, 0x15, 0x00,
+ 0xCC, 0xFF, 0xF0, 0xFF, 0x15, 0x00, 0xA8, 0xFF,
+ 0xF0, 0xFF, 0x15, 0x00, 0x85, 0xFF, 0xF0, 0xFF,
+ 0x18, 0x00, 0x60, 0xFF, 0xEB, 0xFF, 0x1A, 0x00,
+ 0x3D, 0xFF, 0xE6, 0xFF, 0x1C, 0x00, 0x19, 0xFF,
+ 0xE1, 0xFF, 0x1E, 0x00, 0xF6, 0xFE, 0xDA, 0xFF,
+ 0x15, 0x00, 0x11, 0x00, 0xD0, 0xFF, 0x15, 0x00,
+ 0x34, 0x00, 0xD0, 0xFF, 0x15, 0x00, 0x58, 0x00,
+ 0xD0, 0xFF, 0x15, 0x00, 0x7B, 0x00, 0xD0, 0xFF,
+ 0x18, 0x00, 0xA0, 0x00, 0xC0, 0xFF, 0x1A, 0x00,
+ 0xC3, 0x00, 0xB2, 0xFF, 0x1C, 0x00, 0xE7, 0x00,
+ 0xA2, 0xFF, 0x1E, 0x00, 0x0A, 0x01, 0x8E, 0xFF,
+ 0x15, 0x00, 0xEF, 0xFF, 0xD0, 0xFF, 0x15, 0x00,
+ 0xCC, 0xFF, 0xD0, 0xFF, 0x15, 0x00, 0xA8, 0xFF,
+ 0xD0, 0xFF, 0x15, 0x00, 0x85, 0xFF, 0xD0, 0xFF,
+ 0x18, 0x00, 0x60, 0xFF, 0xC0, 0xFF, 0x1A, 0x00,
+ 0x3D, 0xFF, 0xB2, 0xFF, 0x1C, 0x00, 0x19, 0xFF,
+ 0xA2, 0xFF, 0x1E, 0x00, 0xF6, 0xFE, 0x8E, 0xFF,
+ 0x15, 0x00, 0x11, 0x00, 0xAF, 0xFF, 0x15, 0x00,
+ 0x34, 0x00, 0xAF, 0xFF, 0x15, 0x00, 0x58, 0x00,
+ 0xAF, 0xFF, 0x15, 0x00, 0x7B, 0x00, 0xAF, 0xFF,
+ 0x18, 0x00, 0xA0, 0x00, 0x95, 0xFF, 0x1A, 0x00,
+ 0xC3, 0x00, 0x7E, 0xFF, 0x1C, 0x00, 0xE7, 0x00,
+ 0x63, 0xFF, 0x1E, 0x00, 0x0A, 0x01, 0x41, 0xFF,
+ 0x15, 0x00, 0xEF, 0xFF, 0xAF, 0xFF, 0x15, 0x00,
+ 0xCC, 0xFF, 0xAF, 0xFF, 0x15, 0x00, 0xA8, 0xFF,
+ 0xAF, 0xFF, 0x15, 0x00, 0x85, 0xFF, 0xAF, 0xFF,
+ 0x18, 0x00, 0x60, 0xFF, 0x95, 0xFF, 0x1A, 0x00,
+ 0x3D, 0xFF, 0x7E, 0xFF, 0x1C, 0x00, 0x19, 0xFF,
+ 0x63, 0xFF, 0x1E, 0x00, 0xF6, 0xFE, 0x41, 0xFF,
+ 0x15, 0x00, 0x11, 0x00, 0x8F, 0xFF, 0x15, 0x00,
+ 0x34, 0x00, 0x8F, 0xFF, 0x15, 0x00, 0x58, 0x00,
+ 0x8F, 0xFF, 0x15, 0x00, 0x7B, 0x00, 0x8F, 0xFF,
+ 0x18, 0x00, 0xA0, 0x00, 0x6A, 0xFF, 0x1A, 0x00,
+ 0xC3, 0x00, 0x4A, 0xFF, 0x1C, 0x00, 0xE7, 0x00,
+ 0x24, 0xFF, 0x1E, 0x00, 0x0A, 0x01, 0xF5, 0xFE,
+ 0x15, 0x00, 0xEF, 0xFF, 0x8F, 0xFF, 0x15, 0x00,
+ 0xCC, 0xFF, 0x8F, 0xFF, 0x15, 0x00, 0xA8, 0xFF,
+ 0x8F, 0xFF, 0x15, 0x00, 0x85, 0xFF, 0x8F, 0xFF,
+ 0x18, 0x00, 0x60, 0xFF, 0x6A, 0xFF, 0x1A, 0x00,
+ 0x3D, 0xFF, 0x4A, 0xFF, 0x1C, 0x00, 0x19, 0xFF,
+ 0x24, 0xFF, 0x1E, 0x00, 0xF6, 0xFE, 0xF5, 0xFE,
+ 0x18, 0x00, 0x11, 0x00, 0x6E, 0xFF, 0x18, 0x00,
+ 0x34, 0x00, 0x6E, 0xFF, 0x18, 0x00, 0x58, 0x00,
+ 0x6E, 0xFF, 0x18, 0x00, 0x7B, 0x00, 0x6E, 0xFF,
+ 0x1B, 0x00, 0xA0, 0x00, 0x3E, 0xFF, 0x1D, 0x00,
+ 0xC3, 0x00, 0x15, 0xFF, 0x1F, 0x00, 0xE7, 0x00,
+ 0xE4, 0xFE, 0x21, 0x00, 0x0A, 0x01, 0xA7, 0xFE,
+ 0x18, 0x00, 0xEF, 0xFF, 0x6E, 0xFF, 0x18, 0x00,
+ 0xCC, 0xFF, 0x6E, 0xFF, 0x18, 0x00, 0xA8, 0xFF,
+ 0x6E, 0xFF, 0x18, 0x00, 0x85, 0xFF, 0x6E, 0xFF,
+ 0x1B, 0x00, 0x60, 0xFF, 0x3E, 0xFF, 0x1D, 0x00,
+ 0x3D, 0xFF, 0x15, 0xFF, 0x1F, 0x00, 0x19, 0xFF,
+ 0xE4, 0xFE, 0x21, 0x00, 0xF6, 0xFE, 0xA7, 0xFE,
+ 0x1A, 0x00, 0x11, 0x00, 0x4E, 0xFF, 0x1A, 0x00,
+ 0x34, 0x00, 0x4E, 0xFF, 0x1A, 0x00, 0x58, 0x00,
+ 0x4E, 0xFF, 0x1A, 0x00, 0x7B, 0x00, 0x4E, 0xFF,
+ 0x1D, 0x00, 0xA0, 0x00, 0x13, 0xFF, 0x1F, 0x00,
+ 0xC3, 0x00, 0xE1, 0xFE, 0x21, 0x00, 0xE7, 0x00,
+ 0xA5, 0xFE, 0x23, 0x00, 0x0A, 0x01, 0x5B, 0xFE,
+ 0x1A, 0x00, 0xEF, 0xFF, 0x4E, 0xFF, 0x1A, 0x00,
+ 0xCC, 0xFF, 0x4E, 0xFF, 0x1A, 0x00, 0xA8, 0xFF,
+ 0x4E, 0xFF, 0x1A, 0x00, 0x85, 0xFF, 0x4E, 0xFF,
+ 0x1D, 0x00, 0x60, 0xFF, 0x13, 0xFF, 0x1F, 0x00,
+ 0x3D, 0xFF, 0xE1, 0xFE, 0x21, 0x00, 0x19, 0xFF,
+ 0xA5, 0xFE, 0x23, 0x00, 0xF6, 0xFE, 0x5B, 0xFE,
+ 0x1C, 0x00, 0x11, 0x00, 0x2D, 0xFF, 0x1C, 0x00,
+ 0x34, 0x00, 0x2D, 0xFF, 0x1C, 0x00, 0x58, 0x00,
+ 0x2D, 0xFF, 0x1C, 0x00, 0x7B, 0x00, 0x2D, 0xFF,
+ 0x1F, 0x00, 0xA0, 0x00, 0xE8, 0xFE, 0x21, 0x00,
+ 0xC3, 0x00, 0xAD, 0xFE, 0x23, 0x00, 0xE7, 0x00,
+ 0x66, 0xFE, 0x25, 0x00, 0x0A, 0x01, 0x0E, 0xFE,
+ 0x1C, 0x00, 0xEF, 0xFF, 0x2D, 0xFF, 0x1C, 0x00,
+ 0xCC, 0xFF, 0x2D, 0xFF, 0x1C, 0x00, 0xA8, 0xFF,
+ 0x2D, 0xFF, 0x1C, 0x00, 0x85, 0xFF, 0x2D, 0xFF,
+ 0x1F, 0x00, 0x60, 0xFF, 0xE8, 0xFE, 0x21, 0x00,
+ 0x3D, 0xFF, 0xAD, 0xFE, 0x23, 0x00, 0x19, 0xFF,
+ 0x66, 0xFE, 0x25, 0x00, 0xF6, 0xFE, 0x0E, 0xFE,
+ 0x1E, 0x00, 0x11, 0x00, 0x0D, 0xFF, 0x1E, 0x00,
+ 0x34, 0x00, 0x0D, 0xFF, 0x1E, 0x00, 0x58, 0x00,
+ 0x0D, 0xFF, 0x1E, 0x00, 0x7B, 0x00, 0x0D, 0xFF,
+ 0x21, 0x00, 0xA0, 0x00, 0xBD, 0xFE, 0x23, 0x00,
+ 0xC3, 0x00, 0x79, 0xFE, 0x25, 0x00, 0xE7, 0x00,
+ 0x27, 0xFE, 0x27, 0x00, 0x0A, 0x01, 0xC2, 0xFD,
+ 0x1E, 0x00, 0xEF, 0xFF, 0x0D, 0xFF, 0x1E, 0x00,
+ 0xCC, 0xFF, 0x0D, 0xFF, 0x1E, 0x00, 0xA8, 0xFF,
+ 0x0D, 0xFF, 0x1E, 0x00, 0x85, 0xFF, 0x0D, 0xFF,
+ 0x21, 0x00, 0x60, 0xFF, 0xBD, 0xFE, 0x23, 0x00,
+ 0x3D, 0xFF, 0x79, 0xFE, 0x25, 0x00, 0x19, 0xFF,
+ 0x27, 0xFE, 0x27, 0x00, 0xF6, 0xFE, 0xC2, 0xFD,
+ 0x16, 0x00, 0x13, 0x00, 0x11, 0x00, 0x16, 0x00,
+ 0x3A, 0x00, 0x11, 0x00, 0x16, 0x00, 0x61, 0x00,
+ 0x11, 0x00, 0x16, 0x00, 0x88, 0x00, 0x11, 0x00,
+ 0x19, 0x00, 0xB0, 0x00, 0x17, 0x00, 0x1B, 0x00,
+ 0xD7, 0x00, 0x1C, 0x00, 0x1D, 0x00, 0xFE, 0x00,
+ 0x22, 0x00, 0x1F, 0x00, 0x25, 0x01, 0x2A, 0x00,
+ 0x16, 0x00, 0xED, 0xFF, 0x11, 0x00, 0x16, 0x00,
+ 0xC6, 0xFF, 0x11, 0x00, 0x16, 0x00, 0x9F, 0xFF,
+ 0x11, 0x00, 0x16, 0x00, 0x78, 0xFF, 0x11, 0x00,
+ 0x19, 0x00, 0x50, 0xFF, 0x17, 0x00, 0x1B, 0x00,
+ 0x29, 0xFF, 0x1C, 0x00, 0x1D, 0x00, 0x02, 0xFF,
+ 0x22, 0x00, 0x1F, 0x00, 0xDB, 0xFE, 0x2A, 0x00,
+ 0x16, 0x00, 0x13, 0x00, 0x34, 0x00, 0x16, 0x00,
+ 0x3A, 0x00, 0x34, 0x00, 0x16, 0x00, 0x61, 0x00,
+ 0x34, 0x00, 0x16, 0x00, 0x88, 0x00, 0x34, 0x00,
+ 0x19, 0x00, 0xB0, 0x00, 0x46, 0x00, 0x1B, 0x00,
+ 0xD7, 0x00, 0x55, 0x00, 0x1D, 0x00, 0xFE, 0x00,
+ 0x67, 0x00, 0x1F, 0x00, 0x25, 0x01, 0x7E, 0x00,
+ 0x16, 0x00, 0xED, 0xFF, 0x34, 0x00, 0x16, 0x00,
+ 0xC6, 0xFF, 0x34, 0x00, 0x16, 0x00, 0x9F, 0xFF,
+ 0x34, 0x00, 0x16, 0x00, 0x78, 0xFF, 0x34, 0x00,
+ 0x19, 0x00, 0x50, 0xFF, 0x46, 0x00, 0x1B, 0x00,
+ 0x29, 0xFF, 0x55, 0x00, 0x1D, 0x00, 0x02, 0xFF,
+ 0x67, 0x00, 0x1F, 0x00, 0xDB, 0xFE, 0x7E, 0x00,
+ 0x16, 0x00, 0x13, 0x00, 0x58, 0x00, 0x16, 0x00,
+ 0x3A, 0x00, 0x58, 0x00, 0x16, 0x00, 0x61, 0x00,
+ 0x58, 0x00, 0x16, 0x00, 0x88, 0x00, 0x58, 0x00,
+ 0x19, 0x00, 0xB0, 0x00, 0x76, 0x00, 0x1B, 0x00,
+ 0xD7, 0x00, 0x8F, 0x00, 0x1D, 0x00, 0xFE, 0x00,
+ 0xAD, 0x00, 0x1F, 0x00, 0x25, 0x01, 0xD2, 0x00,
+ 0x16, 0x00, 0xED, 0xFF, 0x58, 0x00, 0x16, 0x00,
+ 0xC6, 0xFF, 0x58, 0x00, 0x16, 0x00, 0x9F, 0xFF,
+ 0x58, 0x00, 0x16, 0x00, 0x78, 0xFF, 0x58, 0x00,
+ 0x19, 0x00, 0x50, 0xFF, 0x76, 0x00, 0x1B, 0x00,
+ 0x29, 0xFF, 0x8F, 0x00, 0x1D, 0x00, 0x02, 0xFF,
+ 0xAD, 0x00, 0x1F, 0x00, 0xDB, 0xFE, 0xD2, 0x00,
+ 0x16, 0x00, 0x13, 0x00, 0x7B, 0x00, 0x16, 0x00,
+ 0x3A, 0x00, 0x7B, 0x00, 0x16, 0x00, 0x61, 0x00,
+ 0x7B, 0x00, 0x16, 0x00, 0x88, 0x00, 0x7B, 0x00,
+ 0x19, 0x00, 0xB0, 0x00, 0xA5, 0x00, 0x1B, 0x00,
+ 0xD7, 0x00, 0xC8, 0x00, 0x1D, 0x00, 0xFE, 0x00,
+ 0xF2, 0x00, 0x1F, 0x00, 0x25, 0x01, 0x26, 0x01,
+ 0x16, 0x00, 0xED, 0xFF, 0x7B, 0x00, 0x16, 0x00,
+ 0xC6, 0xFF, 0x7B, 0x00, 0x16, 0x00, 0x9F, 0xFF,
+ 0x7B, 0x00, 0x16, 0x00, 0x78, 0xFF, 0x7B, 0x00,
+ 0x19, 0x00, 0x50, 0xFF, 0xA5, 0x00, 0x1B, 0x00,
+ 0x29, 0xFF, 0xC8, 0x00, 0x1D, 0x00, 0x02, 0xFF,
+ 0xF2, 0x00, 0x1F, 0x00, 0xDB, 0xFE, 0x26, 0x01,
+ 0x19, 0x00, 0x13, 0x00, 0xA0, 0x00, 0x19, 0x00,
+ 0x3A, 0x00, 0xA0, 0x00, 0x19, 0x00, 0x61, 0x00,
+ 0xA0, 0x00, 0x19, 0x00, 0x88, 0x00, 0xA0, 0x00,
+ 0x1C, 0x00, 0xB0, 0x00, 0xD5, 0x00, 0x1E, 0x00,
+ 0xD7, 0x00, 0x02, 0x01, 0x20, 0x00, 0xFE, 0x00,
+ 0x39, 0x01, 0x22, 0x00, 0x25, 0x01, 0x7B, 0x01,
+ 0x19, 0x00, 0xED, 0xFF, 0xA0, 0x00, 0x19, 0x00,
+ 0xC6, 0xFF, 0xA0, 0x00, 0x19, 0x00, 0x9F, 0xFF,
+ 0xA0, 0x00, 0x19, 0x00, 0x78, 0xFF, 0xA0, 0x00,
+ 0x1C, 0x00, 0x50, 0xFF, 0xD5, 0x00, 0x1E, 0x00,
+ 0x29, 0xFF, 0x02, 0x01, 0x20, 0x00, 0x02, 0xFF,
+ 0x39, 0x01, 0x22, 0x00, 0xDB, 0xFE, 0x7B, 0x01,
+ 0x1B, 0x00, 0x13, 0x00, 0xC3, 0x00, 0x1B, 0x00,
+ 0x3A, 0x00, 0xC3, 0x00, 0x1B, 0x00, 0x61, 0x00,
+ 0xC3, 0x00, 0x1B, 0x00, 0x88, 0x00, 0xC3, 0x00,
+ 0x1E, 0x00, 0xB0, 0x00, 0x04, 0x01, 0x20, 0x00,
+ 0xD7, 0x00, 0x3B, 0x01, 0x22, 0x00, 0xFE, 0x00,
+ 0x7E, 0x01, 0x24, 0x00, 0x25, 0x01, 0xCF, 0x01,
+ 0x1B, 0x00, 0xED, 0xFF, 0xC3, 0x00, 0x1B, 0x00,
+ 0xC6, 0xFF, 0xC3, 0x00, 0x1B, 0x00, 0x9F, 0xFF,
+ 0xC3, 0x00, 0x1B, 0x00, 0x78, 0xFF, 0xC3, 0x00,
+ 0x1E, 0x00, 0x50, 0xFF, 0x04, 0x01, 0x20, 0x00,
+ 0x29, 0xFF, 0x3B, 0x01, 0x22, 0x00, 0x02, 0xFF,
+ 0x7E, 0x01, 0x24, 0x00, 0xDB, 0xFE, 0xCF, 0x01,
+ 0x1D, 0x00, 0x13, 0x00, 0xE7, 0x00, 0x1D, 0x00,
+ 0x3A, 0x00, 0xE7, 0x00, 0x1D, 0x00, 0x61, 0x00,
+ 0xE7, 0x00, 0x1D, 0x00, 0x88, 0x00, 0xE7, 0x00,
+ 0x20, 0x00, 0xB0, 0x00, 0x34, 0x01, 0x22, 0x00,
+ 0xD7, 0x00, 0x75, 0x01, 0x24, 0x00, 0xFE, 0x00,
+ 0xC4, 0x01, 0x26, 0x00, 0x25, 0x01, 0x23, 0x02,
+ 0x1D, 0x00, 0xED, 0xFF, 0xE7, 0x00, 0x1D, 0x00,
+ 0xC6, 0xFF, 0xE7, 0x00, 0x1D, 0x00, 0x9F, 0xFF,
+ 0xE7, 0x00, 0x1D, 0x00, 0x78, 0xFF, 0xE7, 0x00,
+ 0x20, 0x00, 0x50, 0xFF, 0x34, 0x01, 0x22, 0x00,
+ 0x29, 0xFF, 0x75, 0x01, 0x24, 0x00, 0x02, 0xFF,
+ 0xC4, 0x01, 0x26, 0x00, 0xDB, 0xFE, 0x23, 0x02,
+ 0x1F, 0x00, 0x13, 0x00, 0x0A, 0x01, 0x1F, 0x00,
+ 0x3A, 0x00, 0x0A, 0x01, 0x1F, 0x00, 0x61, 0x00,
+ 0x0A, 0x01, 0x1F, 0x00, 0x88, 0x00, 0x0A, 0x01,
+ 0x22, 0x00, 0xB0, 0x00, 0x63, 0x01, 0x24, 0x00,
+ 0xD7, 0x00, 0xAE, 0x01, 0x26, 0x00, 0xFE, 0x00,
+ 0x09, 0x02, 0x28, 0x00, 0x25, 0x01, 0x77, 0x02,
+ 0x1F, 0x00, 0xED, 0xFF, 0x0A, 0x01, 0x1F, 0x00,
+ 0xC6, 0xFF, 0x0A, 0x01, 0x1F, 0x00, 0x9F, 0xFF,
+ 0x0A, 0x01, 0x1F, 0x00, 0x78, 0xFF, 0x0A, 0x01,
+ 0x22, 0x00, 0x50, 0xFF, 0x63, 0x01, 0x24, 0x00,
+ 0x29, 0xFF, 0xAE, 0x01, 0x26, 0x00, 0x02, 0xFF,
+ 0x09, 0x02, 0x28, 0x00, 0xDB, 0xFE, 0x77, 0x02,
+ 0x16, 0x00, 0x13, 0x00, 0xEF, 0xFF, 0x16, 0x00,
+ 0x3A, 0x00, 0xEF, 0xFF, 0x16, 0x00, 0x61, 0x00,
+ 0xEF, 0xFF, 0x16, 0x00, 0x88, 0x00, 0xEF, 0xFF,
+ 0x19, 0x00, 0xB0, 0x00, 0xE9, 0xFF, 0x1B, 0x00,
+ 0xD7, 0x00, 0xE4, 0xFF, 0x1D, 0x00, 0xFE, 0x00,
+ 0xDE, 0xFF, 0x1F, 0x00, 0x25, 0x01, 0xD6, 0xFF,
+ 0x16, 0x00, 0xED, 0xFF, 0xEF, 0xFF, 0x16, 0x00,
+ 0xC6, 0xFF, 0xEF, 0xFF, 0x16, 0x00, 0x9F, 0xFF,
+ 0xEF, 0xFF, 0x16, 0x00, 0x78, 0xFF, 0xEF, 0xFF,
+ 0x19, 0x00, 0x50, 0xFF, 0xE9, 0xFF, 0x1B, 0x00,
+ 0x29, 0xFF, 0xE4, 0xFF, 0x1D, 0x00, 0x02, 0xFF,
+ 0xDE, 0xFF, 0x1F, 0x00, 0xDB, 0xFE, 0xD6, 0xFF,
+ 0x16, 0x00, 0x13, 0x00, 0xCC, 0xFF, 0x16, 0x00,
+ 0x3A, 0x00, 0xCC, 0xFF, 0x16, 0x00, 0x61, 0x00,
+ 0xCC, 0xFF, 0x16, 0x00, 0x88, 0x00, 0xCC, 0xFF,
+ 0x19, 0x00, 0xB0, 0x00, 0xBA, 0xFF, 0x1B, 0x00,
+ 0xD7, 0x00, 0xAB, 0xFF, 0x1D, 0x00, 0xFE, 0x00,
+ 0x99, 0xFF, 0x1F, 0x00, 0x25, 0x01, 0x82, 0xFF,
+ 0x16, 0x00, 0xED, 0xFF, 0xCC, 0xFF, 0x16, 0x00,
+ 0xC6, 0xFF, 0xCC, 0xFF, 0x16, 0x00, 0x9F, 0xFF,
+ 0xCC, 0xFF, 0x16, 0x00, 0x78, 0xFF, 0xCC, 0xFF,
+ 0x19, 0x00, 0x50, 0xFF, 0xBA, 0xFF, 0x1B, 0x00,
+ 0x29, 0xFF, 0xAB, 0xFF, 0x1D, 0x00, 0x02, 0xFF,
+ 0x99, 0xFF, 0x1F, 0x00, 0xDB, 0xFE, 0x82, 0xFF,
+ 0x16, 0x00, 0x13, 0x00, 0xA8, 0xFF, 0x16, 0x00,
+ 0x3A, 0x00, 0xA8, 0xFF, 0x16, 0x00, 0x61, 0x00,
+ 0xA8, 0xFF, 0x16, 0x00, 0x88, 0x00, 0xA8, 0xFF,
+ 0x19, 0x00, 0xB0, 0x00, 0x8A, 0xFF, 0x1B, 0x00,
+ 0xD7, 0x00, 0x71, 0xFF, 0x1D, 0x00, 0xFE, 0x00,
+ 0x53, 0xFF, 0x1F, 0x00, 0x25, 0x01, 0x2E, 0xFF,
+ 0x16, 0x00, 0xED, 0xFF, 0xA8, 0xFF, 0x16, 0x00,
+ 0xC6, 0xFF, 0xA8, 0xFF, 0x16, 0x00, 0x9F, 0xFF,
+ 0xA8, 0xFF, 0x16, 0x00, 0x78, 0xFF, 0xA8, 0xFF,
+ 0x19, 0x00, 0x50, 0xFF, 0x8A, 0xFF, 0x1B, 0x00,
+ 0x29, 0xFF, 0x71, 0xFF, 0x1D, 0x00, 0x02, 0xFF,
+ 0x53, 0xFF, 0x1F, 0x00, 0xDB, 0xFE, 0x2E, 0xFF,
+ 0x16, 0x00, 0x13, 0x00, 0x85, 0xFF, 0x16, 0x00,
+ 0x3A, 0x00, 0x85, 0xFF, 0x16, 0x00, 0x61, 0x00,
+ 0x85, 0xFF, 0x16, 0x00, 0x88, 0x00, 0x85, 0xFF,
+ 0x19, 0x00, 0xB0, 0x00, 0x5B, 0xFF, 0x1B, 0x00,
+ 0xD7, 0x00, 0x38, 0xFF, 0x1D, 0x00, 0xFE, 0x00,
+ 0x0E, 0xFF, 0x1F, 0x00, 0x25, 0x01, 0xDA, 0xFE,
+ 0x16, 0x00, 0xED, 0xFF, 0x85, 0xFF, 0x16, 0x00,
+ 0xC6, 0xFF, 0x85, 0xFF, 0x16, 0x00, 0x9F, 0xFF,
+ 0x85, 0xFF, 0x16, 0x00, 0x78, 0xFF, 0x85, 0xFF,
+ 0x19, 0x00, 0x50, 0xFF, 0x5B, 0xFF, 0x1B, 0x00,
+ 0x29, 0xFF, 0x38, 0xFF, 0x1D, 0x00, 0x02, 0xFF,
+ 0x0E, 0xFF, 0x1F, 0x00, 0xDB, 0xFE, 0xDA, 0xFE,
+ 0x19, 0x00, 0x13, 0x00, 0x60, 0xFF, 0x19, 0x00,
+ 0x3A, 0x00, 0x60, 0xFF, 0x19, 0x00, 0x61, 0x00,
+ 0x60, 0xFF, 0x19, 0x00, 0x88, 0x00, 0x60, 0xFF,
+ 0x1C, 0x00, 0xB0, 0x00, 0x2B, 0xFF, 0x1E, 0x00,
+ 0xD7, 0x00, 0xFE, 0xFE, 0x20, 0x00, 0xFE, 0x00,
+ 0xC7, 0xFE, 0x22, 0x00, 0x25, 0x01, 0x85, 0xFE,
+ 0x19, 0x00, 0xED, 0xFF, 0x60, 0xFF, 0x19, 0x00,
+ 0xC6, 0xFF, 0x60, 0xFF, 0x19, 0x00, 0x9F, 0xFF,
+ 0x60, 0xFF, 0x19, 0x00, 0x78, 0xFF, 0x60, 0xFF,
+ 0x1C, 0x00, 0x50, 0xFF, 0x2B, 0xFF, 0x1E, 0x00,
+ 0x29, 0xFF, 0xFE, 0xFE, 0x20, 0x00, 0x02, 0xFF,
+ 0xC7, 0xFE, 0x22, 0x00, 0xDB, 0xFE, 0x85, 0xFE,
+ 0x1B, 0x00, 0x13, 0x00, 0x3D, 0xFF, 0x1B, 0x00,
+ 0x3A, 0x00, 0x3D, 0xFF, 0x1B, 0x00, 0x61, 0x00,
+ 0x3D, 0xFF, 0x1B, 0x00, 0x88, 0x00, 0x3D, 0xFF,
+ 0x1E, 0x00, 0xB0, 0x00, 0xFC, 0xFE, 0x20, 0x00,
+ 0xD7, 0x00, 0xC5, 0xFE, 0x22, 0x00, 0xFE, 0x00,
+ 0x82, 0xFE, 0x24, 0x00, 0x25, 0x01, 0x31, 0xFE,
+ 0x1B, 0x00, 0xED, 0xFF, 0x3D, 0xFF, 0x1B, 0x00,
+ 0xC6, 0xFF, 0x3D, 0xFF, 0x1B, 0x00, 0x9F, 0xFF,
+ 0x3D, 0xFF, 0x1B, 0x00, 0x78, 0xFF, 0x3D, 0xFF,
+ 0x1E, 0x00, 0x50, 0xFF, 0xFC, 0xFE, 0x20, 0x00,
+ 0x29, 0xFF, 0xC5, 0xFE, 0x22, 0x00, 0x02, 0xFF,
+ 0x82, 0xFE, 0x24, 0x00, 0xDB, 0xFE, 0x31, 0xFE,
+ 0x1D, 0x00, 0x13, 0x00, 0x19, 0xFF, 0x1D, 0x00,
+ 0x3A, 0x00, 0x19, 0xFF, 0x1D, 0x00, 0x61, 0x00,
+ 0x19, 0xFF, 0x1D, 0x00, 0x88, 0x00, 0x19, 0xFF,
+ 0x20, 0x00, 0xB0, 0x00, 0xCC, 0xFE, 0x22, 0x00,
+ 0xD7, 0x00, 0x8B, 0xFE, 0x24, 0x00, 0xFE, 0x00,
+ 0x3C, 0xFE, 0x26, 0x00, 0x25, 0x01, 0xDD, 0xFD,
+ 0x1D, 0x00, 0xED, 0xFF, 0x19, 0xFF, 0x1D, 0x00,
+ 0xC6, 0xFF, 0x19, 0xFF, 0x1D, 0x00, 0x9F, 0xFF,
+ 0x19, 0xFF, 0x1D, 0x00, 0x78, 0xFF, 0x19, 0xFF,
+ 0x20, 0x00, 0x50, 0xFF, 0xCC, 0xFE, 0x22, 0x00,
+ 0x29, 0xFF, 0x8B, 0xFE, 0x24, 0x00, 0x02, 0xFF,
+ 0x3C, 0xFE, 0x26, 0x00, 0xDB, 0xFE, 0xDD, 0xFD,
+ 0x1F, 0x00, 0x13, 0x00, 0xF6, 0xFE, 0x1F, 0x00,
+ 0x3A, 0x00, 0xF6, 0xFE, 0x1F, 0x00, 0x61, 0x00,
+ 0xF6, 0xFE, 0x1F, 0x00, 0x88, 0x00, 0xF6, 0xFE,
+ 0x22, 0x00, 0xB0, 0x00, 0x9D, 0xFE, 0x24, 0x00,
+ 0xD7, 0x00, 0x52, 0xFE, 0x26, 0x00, 0xFE, 0x00,
+ 0xF7, 0xFD, 0x28, 0x00, 0x25, 0x01, 0x89, 0xFD,
+ 0x1F, 0x00, 0xED, 0xFF, 0xF6, 0xFE, 0x1F, 0x00,
+ 0xC6, 0xFF, 0xF6, 0xFE, 0x1F, 0x00, 0x9F, 0xFF,
+ 0xF6, 0xFE, 0x1F, 0x00, 0x78, 0xFF, 0xF6, 0xFE,
+ 0x22, 0x00, 0x50, 0xFF, 0x9D, 0xFE, 0x24, 0x00,
+ 0x29, 0xFF, 0x52, 0xFE, 0x26, 0x00, 0x02, 0xFF,
+ 0xF7, 0xFD, 0x28, 0x00, 0xDB, 0xFE, 0x89, 0xFD,
+ 0x17, 0x00, 0x15, 0x00, 0x13, 0x00, 0x17, 0x00,
+ 0x40, 0x00, 0x13, 0x00, 0x17, 0x00, 0x6B, 0x00,
+ 0x13, 0x00, 0x17, 0x00, 0x96, 0x00, 0x13, 0x00,
+ 0x1A, 0x00, 0xC2, 0x00, 0x1A, 0x00, 0x1C, 0x00,
+ 0xED, 0x00, 0x1F, 0x00, 0x1E, 0x00, 0x18, 0x01,
+ 0x26, 0x00, 0x20, 0x00, 0x43, 0x01, 0x2E, 0x00,
+ 0x17, 0x00, 0xEB, 0xFF, 0x13, 0x00, 0x17, 0x00,
+ 0xC0, 0xFF, 0x13, 0x00, 0x17, 0x00, 0x95, 0xFF,
+ 0x13, 0x00, 0x17, 0x00, 0x6A, 0xFF, 0x13, 0x00,
+ 0x1A, 0x00, 0x3E, 0xFF, 0x1A, 0x00, 0x1C, 0x00,
+ 0x13, 0xFF, 0x1F, 0x00, 0x1E, 0x00, 0xE8, 0xFE,
+ 0x26, 0x00, 0x20, 0x00, 0xBD, 0xFE, 0x2E, 0x00,
+ 0x17, 0x00, 0x15, 0x00, 0x3A, 0x00, 0x17, 0x00,
+ 0x40, 0x00, 0x3A, 0x00, 0x17, 0x00, 0x6B, 0x00,
+ 0x3A, 0x00, 0x17, 0x00, 0x96, 0x00, 0x3A, 0x00,
+ 0x1A, 0x00, 0xC2, 0x00, 0x4E, 0x00, 0x1C, 0x00,
+ 0xED, 0x00, 0x5E, 0x00, 0x1E, 0x00, 0x18, 0x01,
+ 0x72, 0x00, 0x20, 0x00, 0x43, 0x01, 0x8A, 0x00,
+ 0x17, 0x00, 0xEB, 0xFF, 0x3A, 0x00, 0x17, 0x00,
+ 0xC0, 0xFF, 0x3A, 0x00, 0x17, 0x00, 0x95, 0xFF,
+ 0x3A, 0x00, 0x17, 0x00, 0x6A, 0xFF, 0x3A, 0x00,
+ 0x1A, 0x00, 0x3E, 0xFF, 0x4E, 0x00, 0x1C, 0x00,
+ 0x13, 0xFF, 0x5E, 0x00, 0x1E, 0x00, 0xE8, 0xFE,
+ 0x72, 0x00, 0x20, 0x00, 0xBD, 0xFE, 0x8A, 0x00,
+ 0x17, 0x00, 0x15, 0x00, 0x61, 0x00, 0x17, 0x00,
+ 0x40, 0x00, 0x61, 0x00, 0x17, 0x00, 0x6B, 0x00,
+ 0x61, 0x00, 0x17, 0x00, 0x96, 0x00, 0x61, 0x00,
+ 0x1A, 0x00, 0xC2, 0x00, 0x82, 0x00, 0x1C, 0x00,
+ 0xED, 0x00, 0x9D, 0x00, 0x1E, 0x00, 0x18, 0x01,
+ 0xBF, 0x00, 0x20, 0x00, 0x43, 0x01, 0xE7, 0x00,
+ 0x17, 0x00, 0xEB, 0xFF, 0x61, 0x00, 0x17, 0x00,
+ 0xC0, 0xFF, 0x61, 0x00, 0x17, 0x00, 0x95, 0xFF,
+ 0x61, 0x00, 0x17, 0x00, 0x6A, 0xFF, 0x61, 0x00,
+ 0x1A, 0x00, 0x3E, 0xFF, 0x82, 0x00, 0x1C, 0x00,
+ 0x13, 0xFF, 0x9D, 0x00, 0x1E, 0x00, 0xE8, 0xFE,
+ 0xBF, 0x00, 0x20, 0x00, 0xBD, 0xFE, 0xE7, 0x00,
+ 0x17, 0x00, 0x15, 0x00, 0x88, 0x00, 0x17, 0x00,
+ 0x40, 0x00, 0x88, 0x00, 0x17, 0x00, 0x6B, 0x00,
+ 0x88, 0x00, 0x17, 0x00, 0x96, 0x00, 0x88, 0x00,
+ 0x1A, 0x00, 0xC2, 0x00, 0xB6, 0x00, 0x1C, 0x00,
+ 0xED, 0x00, 0xDC, 0x00, 0x1E, 0x00, 0x18, 0x01,
+ 0x0B, 0x01, 0x20, 0x00, 0x43, 0x01, 0x43, 0x01,
+ 0x17, 0x00, 0xEB, 0xFF, 0x88, 0x00, 0x17, 0x00,
+ 0xC0, 0xFF, 0x88, 0x00, 0x17, 0x00, 0x95, 0xFF,
+ 0x88, 0x00, 0x17, 0x00, 0x6A, 0xFF, 0x88, 0x00,
+ 0x1A, 0x00, 0x3E, 0xFF, 0xB6, 0x00, 0x1C, 0x00,
+ 0x13, 0xFF, 0xDC, 0x00, 0x1E, 0x00, 0xE8, 0xFE,
+ 0x0B, 0x01, 0x20, 0x00, 0xBD, 0xFE, 0x43, 0x01,
+ 0x1A, 0x00, 0x15, 0x00, 0xB0, 0x00, 0x1A, 0x00,
+ 0x40, 0x00, 0xB0, 0x00, 0x1A, 0x00, 0x6B, 0x00,
+ 0xB0, 0x00, 0x1A, 0x00, 0x96, 0x00, 0xB0, 0x00,
+ 0x1D, 0x00, 0xC2, 0x00, 0xEB, 0x00, 0x1F, 0x00,
+ 0xED, 0x00, 0x1C, 0x01, 0x21, 0x00, 0x18, 0x01,
+ 0x59, 0x01, 0x23, 0x00, 0x43, 0x01, 0xA1, 0x01,
+ 0x1A, 0x00, 0xEB, 0xFF, 0xB0, 0x00, 0x1A, 0x00,
+ 0xC0, 0xFF, 0xB0, 0x00, 0x1A, 0x00, 0x95, 0xFF,
+ 0xB0, 0x00, 0x1A, 0x00, 0x6A, 0xFF, 0xB0, 0x00,
+ 0x1D, 0x00, 0x3E, 0xFF, 0xEB, 0x00, 0x1F, 0x00,
+ 0x13, 0xFF, 0x1C, 0x01, 0x21, 0x00, 0xE8, 0xFE,
+ 0x59, 0x01, 0x23, 0x00, 0xBD, 0xFE, 0xA1, 0x01,
+ 0x1C, 0x00, 0x15, 0x00, 0xD7, 0x00, 0x1C, 0x00,
+ 0x40, 0x00, 0xD7, 0x00, 0x1C, 0x00, 0x6B, 0x00,
+ 0xD7, 0x00, 0x1C, 0x00, 0x96, 0x00, 0xD7, 0x00,
+ 0x1F, 0x00, 0xC2, 0x00, 0x1F, 0x01, 0x21, 0x00,
+ 0xED, 0x00, 0x5B, 0x01, 0x23, 0x00, 0x18, 0x01,
+ 0xA5, 0x01, 0x25, 0x00, 0x43, 0x01, 0xFD, 0x01,
+ 0x1C, 0x00, 0xEB, 0xFF, 0xD7, 0x00, 0x1C, 0x00,
+ 0xC0, 0xFF, 0xD7, 0x00, 0x1C, 0x00, 0x95, 0xFF,
+ 0xD7, 0x00, 0x1C, 0x00, 0x6A, 0xFF, 0xD7, 0x00,
+ 0x1F, 0x00, 0x3E, 0xFF, 0x1F, 0x01, 0x21, 0x00,
+ 0x13, 0xFF, 0x5B, 0x01, 0x23, 0x00, 0xE8, 0xFE,
+ 0xA5, 0x01, 0x25, 0x00, 0xBD, 0xFE, 0xFD, 0x01,
+ 0x1E, 0x00, 0x15, 0x00, 0xFE, 0x00, 0x1E, 0x00,
+ 0x40, 0x00, 0xFE, 0x00, 0x1E, 0x00, 0x6B, 0x00,
+ 0xFE, 0x00, 0x1E, 0x00, 0x96, 0x00, 0xFE, 0x00,
+ 0x21, 0x00, 0xC2, 0x00, 0x53, 0x01, 0x23, 0x00,
+ 0xED, 0x00, 0x9A, 0x01, 0x25, 0x00, 0x18, 0x01,
+ 0xF2, 0x01, 0x27, 0x00, 0x43, 0x01, 0x5A, 0x02,
+ 0x1E, 0x00, 0xEB, 0xFF, 0xFE, 0x00, 0x1E, 0x00,
+ 0xC0, 0xFF, 0xFE, 0x00, 0x1E, 0x00, 0x95, 0xFF,
+ 0xFE, 0x00, 0x1E, 0x00, 0x6A, 0xFF, 0xFE, 0x00,
+ 0x21, 0x00, 0x3E, 0xFF, 0x53, 0x01, 0x23, 0x00,
+ 0x13, 0xFF, 0x9A, 0x01, 0x25, 0x00, 0xE8, 0xFE,
+ 0xF2, 0x01, 0x27, 0x00, 0xBD, 0xFE, 0x5A, 0x02,
+ 0x20, 0x00, 0x15, 0x00, 0x25, 0x01, 0x20, 0x00,
+ 0x40, 0x00, 0x25, 0x01, 0x20, 0x00, 0x6B, 0x00,
+ 0x25, 0x01, 0x20, 0x00, 0x96, 0x00, 0x25, 0x01,
+ 0x23, 0x00, 0xC2, 0x00, 0x87, 0x01, 0x25, 0x00,
+ 0xED, 0x00, 0xD9, 0x01, 0x27, 0x00, 0x18, 0x01,
+ 0x3E, 0x02, 0x29, 0x00, 0x43, 0x01, 0xB6, 0x02,
+ 0x20, 0x00, 0xEB, 0xFF, 0x25, 0x01, 0x20, 0x00,
+ 0xC0, 0xFF, 0x25, 0x01, 0x20, 0x00, 0x95, 0xFF,
+ 0x25, 0x01, 0x20, 0x00, 0x6A, 0xFF, 0x25, 0x01,
+ 0x23, 0x00, 0x3E, 0xFF, 0x87, 0x01, 0x25, 0x00,
+ 0x13, 0xFF, 0xD9, 0x01, 0x27, 0x00, 0xE8, 0xFE,
+ 0x3E, 0x02, 0x29, 0x00, 0xBD, 0xFE, 0xB6, 0x02,
+ 0x17, 0x00, 0x15, 0x00, 0xED, 0xFF, 0x17, 0x00,
+ 0x40, 0x00, 0xED, 0xFF, 0x17, 0x00, 0x6B, 0x00,
+ 0xED, 0xFF, 0x17, 0x00, 0x96, 0x00, 0xED, 0xFF,
+ 0x1A, 0x00, 0xC2, 0x00, 0xE6, 0xFF, 0x1C, 0x00,
+ 0xED, 0x00, 0xE1, 0xFF, 0x1E, 0x00, 0x18, 0x01,
+ 0xDA, 0xFF, 0x20, 0x00, 0x43, 0x01, 0xD2, 0xFF,
+ 0x17, 0x00, 0xEB, 0xFF, 0xED, 0xFF, 0x17, 0x00,
+ 0xC0, 0xFF, 0xED, 0xFF, 0x17, 0x00, 0x95, 0xFF,
+ 0xED, 0xFF, 0x17, 0x00, 0x6A, 0xFF, 0xED, 0xFF,
+ 0x1A, 0x00, 0x3E, 0xFF, 0xE6, 0xFF, 0x1C, 0x00,
+ 0x13, 0xFF, 0xE1, 0xFF, 0x1E, 0x00, 0xE8, 0xFE,
+ 0xDA, 0xFF, 0x20, 0x00, 0xBD, 0xFE, 0xD2, 0xFF,
+ 0x17, 0x00, 0x15, 0x00, 0xC6, 0xFF, 0x17, 0x00,
+ 0x40, 0x00, 0xC6, 0xFF, 0x17, 0x00, 0x6B, 0x00,
+ 0xC6, 0xFF, 0x17, 0x00, 0x96, 0x00, 0xC6, 0xFF,
+ 0x1A, 0x00, 0xC2, 0x00, 0xB2, 0xFF, 0x1C, 0x00,
+ 0xED, 0x00, 0xA2, 0xFF, 0x1E, 0x00, 0x18, 0x01,
+ 0x8E, 0xFF, 0x20, 0x00, 0x43, 0x01, 0x76, 0xFF,
+ 0x17, 0x00, 0xEB, 0xFF, 0xC6, 0xFF, 0x17, 0x00,
+ 0xC0, 0xFF, 0xC6, 0xFF, 0x17, 0x00, 0x95, 0xFF,
+ 0xC6, 0xFF, 0x17, 0x00, 0x6A, 0xFF, 0xC6, 0xFF,
+ 0x1A, 0x00, 0x3E, 0xFF, 0xB2, 0xFF, 0x1C, 0x00,
+ 0x13, 0xFF, 0xA2, 0xFF, 0x1E, 0x00, 0xE8, 0xFE,
+ 0x8E, 0xFF, 0x20, 0x00, 0xBD, 0xFE, 0x76, 0xFF,
+ 0x17, 0x00, 0x15, 0x00, 0x9F, 0xFF, 0x17, 0x00,
+ 0x40, 0x00, 0x9F, 0xFF, 0x17, 0x00, 0x6B, 0x00,
+ 0x9F, 0xFF, 0x17, 0x00, 0x96, 0x00, 0x9F, 0xFF,
+ 0x1A, 0x00, 0xC2, 0x00, 0x7E, 0xFF, 0x1C, 0x00,
+ 0xED, 0x00, 0x63, 0xFF, 0x1E, 0x00, 0x18, 0x01,
+ 0x41, 0xFF, 0x20, 0x00, 0x43, 0x01, 0x19, 0xFF,
+ 0x17, 0x00, 0xEB, 0xFF, 0x9F, 0xFF, 0x17, 0x00,
+ 0xC0, 0xFF, 0x9F, 0xFF, 0x17, 0x00, 0x95, 0xFF,
+ 0x9F, 0xFF, 0x17, 0x00, 0x6A, 0xFF, 0x9F, 0xFF,
+ 0x1A, 0x00, 0x3E, 0xFF, 0x7E, 0xFF, 0x1C, 0x00,
+ 0x13, 0xFF, 0x63, 0xFF, 0x1E, 0x00, 0xE8, 0xFE,
+ 0x41, 0xFF, 0x20, 0x00, 0xBD, 0xFE, 0x19, 0xFF,
+ 0x17, 0x00, 0x15, 0x00, 0x78, 0xFF, 0x17, 0x00,
+ 0x40, 0x00, 0x78, 0xFF, 0x17, 0x00, 0x6B, 0x00,
+ 0x78, 0xFF, 0x17, 0x00, 0x96, 0x00, 0x78, 0xFF,
+ 0x1A, 0x00, 0xC2, 0x00, 0x4A, 0xFF, 0x1C, 0x00,
+ 0xED, 0x00, 0x24, 0xFF, 0x1E, 0x00, 0x18, 0x01,
+ 0xF5, 0xFE, 0x20, 0x00, 0x43, 0x01, 0xBD, 0xFE,
+ 0x17, 0x00, 0xEB, 0xFF, 0x78, 0xFF, 0x17, 0x00,
+ 0xC0, 0xFF, 0x78, 0xFF, 0x17, 0x00, 0x95, 0xFF,
+ 0x78, 0xFF, 0x17, 0x00, 0x6A, 0xFF, 0x78, 0xFF,
+ 0x1A, 0x00, 0x3E, 0xFF, 0x4A, 0xFF, 0x1C, 0x00,
+ 0x13, 0xFF, 0x24, 0xFF, 0x1E, 0x00, 0xE8, 0xFE,
+ 0xF5, 0xFE, 0x20, 0x00, 0xBD, 0xFE, 0xBD, 0xFE,
+ 0x1A, 0x00, 0x15, 0x00, 0x50, 0xFF, 0x1A, 0x00,
+ 0x40, 0x00, 0x50, 0xFF, 0x1A, 0x00, 0x6B, 0x00,
+ 0x50, 0xFF, 0x1A, 0x00, 0x96, 0x00, 0x50, 0xFF,
+ 0x1D, 0x00, 0xC2, 0x00, 0x15, 0xFF, 0x1F, 0x00,
+ 0xED, 0x00, 0xE4, 0xFE, 0x21, 0x00, 0x18, 0x01,
+ 0xA7, 0xFE, 0x23, 0x00, 0x43, 0x01, 0x5F, 0xFE,
+ 0x1A, 0x00, 0xEB, 0xFF, 0x50, 0xFF, 0x1A, 0x00,
+ 0xC0, 0xFF, 0x50, 0xFF, 0x1A, 0x00, 0x95, 0xFF,
+ 0x50, 0xFF, 0x1A, 0x00, 0x6A, 0xFF, 0x50, 0xFF,
+ 0x1D, 0x00, 0x3E, 0xFF, 0x15, 0xFF, 0x1F, 0x00,
+ 0x13, 0xFF, 0xE4, 0xFE, 0x21, 0x00, 0xE8, 0xFE,
+ 0xA7, 0xFE, 0x23, 0x00, 0xBD, 0xFE, 0x5F, 0xFE,
+ 0x1C, 0x00, 0x15, 0x00, 0x29, 0xFF, 0x1C, 0x00,
+ 0x40, 0x00, 0x29, 0xFF, 0x1C, 0x00, 0x6B, 0x00,
+ 0x29, 0xFF, 0x1C, 0x00, 0x96, 0x00, 0x29, 0xFF,
+ 0x1F, 0x00, 0xC2, 0x00, 0xE1, 0xFE, 0x21, 0x00,
+ 0xED, 0x00, 0xA5, 0xFE, 0x23, 0x00, 0x18, 0x01,
+ 0x5B, 0xFE, 0x25, 0x00, 0x43, 0x01, 0x03, 0xFE,
+ 0x1C, 0x00, 0xEB, 0xFF, 0x29, 0xFF, 0x1C, 0x00,
+ 0xC0, 0xFF, 0x29, 0xFF, 0x1C, 0x00, 0x95, 0xFF,
+ 0x29, 0xFF, 0x1C, 0x00, 0x6A, 0xFF, 0x29, 0xFF,
+ 0x1F, 0x00, 0x3E, 0xFF, 0xE1, 0xFE, 0x21, 0x00,
+ 0x13, 0xFF, 0xA5, 0xFE, 0x23, 0x00, 0xE8, 0xFE,
+ 0x5B, 0xFE, 0x25, 0x00, 0xBD, 0xFE, 0x03, 0xFE,
+ 0x1E, 0x00, 0x15, 0x00, 0x02, 0xFF, 0x1E, 0x00,
+ 0x40, 0x00, 0x02, 0xFF, 0x1E, 0x00, 0x6B, 0x00,
+ 0x02, 0xFF, 0x1E, 0x00, 0x96, 0x00, 0x02, 0xFF,
+ 0x21, 0x00, 0xC2, 0x00, 0xAD, 0xFE, 0x23, 0x00,
+ 0xED, 0x00, 0x66, 0xFE, 0x25, 0x00, 0x18, 0x01,
+ 0x0E, 0xFE, 0x27, 0x00, 0x43, 0x01, 0xA6, 0xFD,
+ 0x1E, 0x00, 0xEB, 0xFF, 0x02, 0xFF, 0x1E, 0x00,
+ 0xC0, 0xFF, 0x02, 0xFF, 0x1E, 0x00, 0x95, 0xFF,
+ 0x02, 0xFF, 0x1E, 0x00, 0x6A, 0xFF, 0x02, 0xFF,
+ 0x21, 0x00, 0x3E, 0xFF, 0xAD, 0xFE, 0x23, 0x00,
+ 0x13, 0xFF, 0x66, 0xFE, 0x25, 0x00, 0xE8, 0xFE,
+ 0x0E, 0xFE, 0x27, 0x00, 0xBD, 0xFE, 0xA6, 0xFD,
+ 0x20, 0x00, 0x15, 0x00, 0xDB, 0xFE, 0x20, 0x00,
+ 0x40, 0x00, 0xDB, 0xFE, 0x20, 0x00, 0x6B, 0x00,
+ 0xDB, 0xFE, 0x20, 0x00, 0x96, 0x00, 0xDB, 0xFE,
+ 0x23, 0x00, 0xC2, 0x00, 0x79, 0xFE, 0x25, 0x00,
+ 0xED, 0x00, 0x27, 0xFE, 0x27, 0x00, 0x18, 0x01,
+ 0xC2, 0xFD, 0x29, 0x00, 0x43, 0x01, 0x4A, 0xFD,
+ 0x20, 0x00, 0xEB, 0xFF, 0xDB, 0xFE, 0x20, 0x00,
+ 0xC0, 0xFF, 0xDB, 0xFE, 0x20, 0x00, 0x95, 0xFF,
+ 0xDB, 0xFE, 0x20, 0x00, 0x6A, 0xFF, 0xDB, 0xFE,
+ 0x23, 0x00, 0x3E, 0xFF, 0x79, 0xFE, 0x25, 0x00,
+ 0x13, 0xFF, 0x27, 0xFE, 0x27, 0x00, 0xE8, 0xFE,
+ 0xC2, 0xFD, 0x29, 0x00, 0xBD, 0xFE, 0x4A, 0xFD,
+ 0x18, 0x00, 0x17, 0x00, 0x15, 0x00, 0x18, 0x00,
+ 0x46, 0x00, 0x15, 0x00, 0x18, 0x00, 0x76, 0x00,
+ 0x15, 0x00, 0x18, 0x00, 0xA5, 0x00, 0x15, 0x00,
+ 0x1B, 0x00, 0xD5, 0x00, 0x1C, 0x00, 0x1D, 0x00,
+ 0x04, 0x01, 0x22, 0x00, 0x1F, 0x00, 0x34, 0x01,
+ 0x2A, 0x00, 0x21, 0x00, 0x63, 0x01, 0x33, 0x00,
+ 0x18, 0x00, 0xE9, 0xFF, 0x15, 0x00, 0x18, 0x00,
+ 0xBA, 0xFF, 0x15, 0x00, 0x18, 0x00, 0x8A, 0xFF,
+ 0x15, 0x00, 0x18, 0x00, 0x5B, 0xFF, 0x15, 0x00,
+ 0x1B, 0x00, 0x2B, 0xFF, 0x1C, 0x00, 0x1D, 0x00,
+ 0xFC, 0xFE, 0x22, 0x00, 0x1F, 0x00, 0xCC, 0xFE,
+ 0x2A, 0x00, 0x21, 0x00, 0x9D, 0xFE, 0x33, 0x00,
+ 0x18, 0x00, 0x17, 0x00, 0x40, 0x00, 0x18, 0x00,
+ 0x46, 0x00, 0x40, 0x00, 0x18, 0x00, 0x76, 0x00,
+ 0x40, 0x00, 0x18, 0x00, 0xA5, 0x00, 0x40, 0x00,
+ 0x1B, 0x00, 0xD5, 0x00, 0x55, 0x00, 0x1D, 0x00,
+ 0x04, 0x01, 0x67, 0x00, 0x1F, 0x00, 0x34, 0x01,
+ 0x7E, 0x00, 0x21, 0x00, 0x63, 0x01, 0x99, 0x00,
+ 0x18, 0x00, 0xE9, 0xFF, 0x40, 0x00, 0x18, 0x00,
+ 0xBA, 0xFF, 0x40, 0x00, 0x18, 0x00, 0x8A, 0xFF,
+ 0x40, 0x00, 0x18, 0x00, 0x5B, 0xFF, 0x40, 0x00,
+ 0x1B, 0x00, 0x2B, 0xFF, 0x55, 0x00, 0x1D, 0x00,
+ 0xFC, 0xFE, 0x67, 0x00, 0x1F, 0x00, 0xCC, 0xFE,
+ 0x7E, 0x00, 0x21, 0x00, 0x9D, 0xFE, 0x99, 0x00,
+ 0x18, 0x00, 0x17, 0x00, 0x6B, 0x00, 0x18, 0x00,
+ 0x46, 0x00, 0x6B, 0x00, 0x18, 0x00, 0x76, 0x00,
+ 0x6B, 0x00, 0x18, 0x00, 0xA5, 0x00, 0x6B, 0x00,
+ 0x1B, 0x00, 0xD5, 0x00, 0x8F, 0x00, 0x1D, 0x00,
+ 0x04, 0x01, 0xAD, 0x00, 0x1F, 0x00, 0x34, 0x01,
+ 0xD2, 0x00, 0x21, 0x00, 0x63, 0x01, 0xFF, 0x00,
+ 0x18, 0x00, 0xE9, 0xFF, 0x6B, 0x00, 0x18, 0x00,
+ 0xBA, 0xFF, 0x6B, 0x00, 0x18, 0x00, 0x8A, 0xFF,
+ 0x6B, 0x00, 0x18, 0x00, 0x5B, 0xFF, 0x6B, 0x00,
+ 0x1B, 0x00, 0x2B, 0xFF, 0x8F, 0x00, 0x1D, 0x00,
+ 0xFC, 0xFE, 0xAD, 0x00, 0x1F, 0x00, 0xCC, 0xFE,
+ 0xD2, 0x00, 0x21, 0x00, 0x9D, 0xFE, 0xFF, 0x00,
+ 0x18, 0x00, 0x17, 0x00, 0x96, 0x00, 0x18, 0x00,
+ 0x46, 0x00, 0x96, 0x00, 0x18, 0x00, 0x76, 0x00,
+ 0x96, 0x00, 0x18, 0x00, 0xA5, 0x00, 0x96, 0x00,
+ 0x1B, 0x00, 0xD5, 0x00, 0xC8, 0x00, 0x1D, 0x00,
+ 0x04, 0x01, 0xF2, 0x00, 0x1F, 0x00, 0x34, 0x01,
+ 0x26, 0x01, 0x21, 0x00, 0x63, 0x01, 0x65, 0x01,
+ 0x18, 0x00, 0xE9, 0xFF, 0x96, 0x00, 0x18, 0x00,
+ 0xBA, 0xFF, 0x96, 0x00, 0x18, 0x00, 0x8A, 0xFF,
+ 0x96, 0x00, 0x18, 0x00, 0x5B, 0xFF, 0x96, 0x00,
+ 0x1B, 0x00, 0x2B, 0xFF, 0xC8, 0x00, 0x1D, 0x00,
+ 0xFC, 0xFE, 0xF2, 0x00, 0x1F, 0x00, 0xCC, 0xFE,
+ 0x26, 0x01, 0x21, 0x00, 0x9D, 0xFE, 0x65, 0x01,
+ 0x1B, 0x00, 0x17, 0x00, 0xC2, 0x00, 0x1B, 0x00,
+ 0x46, 0x00, 0xC2, 0x00, 0x1B, 0x00, 0x76, 0x00,
+ 0xC2, 0x00, 0x1B, 0x00, 0xA5, 0x00, 0xC2, 0x00,
+ 0x1E, 0x00, 0xD5, 0x00, 0x02, 0x01, 0x20, 0x00,
+ 0x04, 0x01, 0x39, 0x01, 0x22, 0x00, 0x34, 0x01,
+ 0x7B, 0x01, 0x24, 0x00, 0x63, 0x01, 0xCB, 0x01,
+ 0x1B, 0x00, 0xE9, 0xFF, 0xC2, 0x00, 0x1B, 0x00,
+ 0xBA, 0xFF, 0xC2, 0x00, 0x1B, 0x00, 0x8A, 0xFF,
+ 0xC2, 0x00, 0x1B, 0x00, 0x5B, 0xFF, 0xC2, 0x00,
+ 0x1E, 0x00, 0x2B, 0xFF, 0x02, 0x01, 0x20, 0x00,
+ 0xFC, 0xFE, 0x39, 0x01, 0x22, 0x00, 0xCC, 0xFE,
+ 0x7B, 0x01, 0x24, 0x00, 0x9D, 0xFE, 0xCB, 0x01,
+ 0x1D, 0x00, 0x17, 0x00, 0xED, 0x00, 0x1D, 0x00,
+ 0x46, 0x00, 0xED, 0x00, 0x1D, 0x00, 0x76, 0x00,
+ 0xED, 0x00, 0x1D, 0x00, 0xA5, 0x00, 0xED, 0x00,
+ 0x20, 0x00, 0xD5, 0x00, 0x3B, 0x01, 0x22, 0x00,
+ 0x04, 0x01, 0x7E, 0x01, 0x24, 0x00, 0x34, 0x01,
+ 0xCF, 0x01, 0x26, 0x00, 0x63, 0x01, 0x31, 0x02,
+ 0x1D, 0x00, 0xE9, 0xFF, 0xED, 0x00, 0x1D, 0x00,
+ 0xBA, 0xFF, 0xED, 0x00, 0x1D, 0x00, 0x8A, 0xFF,
+ 0xED, 0x00, 0x1D, 0x00, 0x5B, 0xFF, 0xED, 0x00,
+ 0x20, 0x00, 0x2B, 0xFF, 0x3B, 0x01, 0x22, 0x00,
+ 0xFC, 0xFE, 0x7E, 0x01, 0x24, 0x00, 0xCC, 0xFE,
+ 0xCF, 0x01, 0x26, 0x00, 0x9D, 0xFE, 0x31, 0x02,
+ 0x1F, 0x00, 0x17, 0x00, 0x18, 0x01, 0x1F, 0x00,
+ 0x46, 0x00, 0x18, 0x01, 0x1F, 0x00, 0x76, 0x00,
+ 0x18, 0x01, 0x1F, 0x00, 0xA5, 0x00, 0x18, 0x01,
+ 0x22, 0x00, 0xD5, 0x00, 0x75, 0x01, 0x24, 0x00,
+ 0x04, 0x01, 0xC4, 0x01, 0x26, 0x00, 0x34, 0x01,
+ 0x23, 0x02, 0x28, 0x00, 0x63, 0x01, 0x97, 0x02,
+ 0x1F, 0x00, 0xE9, 0xFF, 0x18, 0x01, 0x1F, 0x00,
+ 0xBA, 0xFF, 0x18, 0x01, 0x1F, 0x00, 0x8A, 0xFF,
+ 0x18, 0x01, 0x1F, 0x00, 0x5B, 0xFF, 0x18, 0x01,
+ 0x22, 0x00, 0x2B, 0xFF, 0x75, 0x01, 0x24, 0x00,
+ 0xFC, 0xFE, 0xC4, 0x01, 0x26, 0x00, 0xCC, 0xFE,
+ 0x23, 0x02, 0x28, 0x00, 0x9D, 0xFE, 0x97, 0x02,
+ 0x21, 0x00, 0x17, 0x00, 0x43, 0x01, 0x21, 0x00,
+ 0x46, 0x00, 0x43, 0x01, 0x21, 0x00, 0x76, 0x00,
+ 0x43, 0x01, 0x21, 0x00, 0xA5, 0x00, 0x43, 0x01,
+ 0x24, 0x00, 0xD5, 0x00, 0xAE, 0x01, 0x26, 0x00,
+ 0x04, 0x01, 0x09, 0x02, 0x28, 0x00, 0x34, 0x01,
+ 0x77, 0x02, 0x2A, 0x00, 0x63, 0x01, 0xFD, 0x02,
+ 0x21, 0x00, 0xE9, 0xFF, 0x43, 0x01, 0x21, 0x00,
+ 0xBA, 0xFF, 0x43, 0x01, 0x21, 0x00, 0x8A, 0xFF,
+ 0x43, 0x01, 0x21, 0x00, 0x5B, 0xFF, 0x43, 0x01,
+ 0x24, 0x00, 0x2B, 0xFF, 0xAE, 0x01, 0x26, 0x00,
+ 0xFC, 0xFE, 0x09, 0x02, 0x28, 0x00, 0xCC, 0xFE,
+ 0x77, 0x02, 0x2A, 0x00, 0x9D, 0xFE, 0xFD, 0x02,
+ 0x18, 0x00, 0x17, 0x00, 0xEB, 0xFF, 0x18, 0x00,
+ 0x46, 0x00, 0xEB, 0xFF, 0x18, 0x00, 0x76, 0x00,
+ 0xEB, 0xFF, 0x18, 0x00, 0xA5, 0x00, 0xEB, 0xFF,
+ 0x1B, 0x00, 0xD5, 0x00, 0xE4, 0xFF, 0x1D, 0x00,
+ 0x04, 0x01, 0xDE, 0xFF, 0x1F, 0x00, 0x34, 0x01,
+ 0xD6, 0xFF, 0x21, 0x00, 0x63, 0x01, 0xCD, 0xFF,
+ 0x18, 0x00, 0xE9, 0xFF, 0xEB, 0xFF, 0x18, 0x00,
+ 0xBA, 0xFF, 0xEB, 0xFF, 0x18, 0x00, 0x8A, 0xFF,
+ 0xEB, 0xFF, 0x18, 0x00, 0x5B, 0xFF, 0xEB, 0xFF,
+ 0x1B, 0x00, 0x2B, 0xFF, 0xE4, 0xFF, 0x1D, 0x00,
+ 0xFC, 0xFE, 0xDE, 0xFF, 0x1F, 0x00, 0xCC, 0xFE,
+ 0xD6, 0xFF, 0x21, 0x00, 0x9D, 0xFE, 0xCD, 0xFF,
+ 0x18, 0x00, 0x17, 0x00, 0xC0, 0xFF, 0x18, 0x00,
+ 0x46, 0x00, 0xC0, 0xFF, 0x18, 0x00, 0x76, 0x00,
+ 0xC0, 0xFF, 0x18, 0x00, 0xA5, 0x00, 0xC0, 0xFF,
+ 0x1B, 0x00, 0xD5, 0x00, 0xAB, 0xFF, 0x1D, 0x00,
+ 0x04, 0x01, 0x99, 0xFF, 0x1F, 0x00, 0x34, 0x01,
+ 0x82, 0xFF, 0x21, 0x00, 0x63, 0x01, 0x67, 0xFF,
+ 0x18, 0x00, 0xE9, 0xFF, 0xC0, 0xFF, 0x18, 0x00,
+ 0xBA, 0xFF, 0xC0, 0xFF, 0x18, 0x00, 0x8A, 0xFF,
+ 0xC0, 0xFF, 0x18, 0x00, 0x5B, 0xFF, 0xC0, 0xFF,
+ 0x1B, 0x00, 0x2B, 0xFF, 0xAB, 0xFF, 0x1D, 0x00,
+ 0xFC, 0xFE, 0x99, 0xFF, 0x1F, 0x00, 0xCC, 0xFE,
+ 0x82, 0xFF, 0x21, 0x00, 0x9D, 0xFE, 0x67, 0xFF,
+ 0x18, 0x00, 0x17, 0x00, 0x95, 0xFF, 0x18, 0x00,
+ 0x46, 0x00, 0x95, 0xFF, 0x18, 0x00, 0x76, 0x00,
+ 0x95, 0xFF, 0x18, 0x00, 0xA5, 0x00, 0x95, 0xFF,
+ 0x1B, 0x00, 0xD5, 0x00, 0x71, 0xFF, 0x1D, 0x00,
+ 0x04, 0x01, 0x53, 0xFF, 0x1F, 0x00, 0x34, 0x01,
+ 0x2E, 0xFF, 0x21, 0x00, 0x63, 0x01, 0x01, 0xFF,
+ 0x18, 0x00, 0xE9, 0xFF, 0x95, 0xFF, 0x18, 0x00,
+ 0xBA, 0xFF, 0x95, 0xFF, 0x18, 0x00, 0x8A, 0xFF,
+ 0x95, 0xFF, 0x18, 0x00, 0x5B, 0xFF, 0x95, 0xFF,
+ 0x1B, 0x00, 0x2B, 0xFF, 0x71, 0xFF, 0x1D, 0x00,
+ 0xFC, 0xFE, 0x53, 0xFF, 0x1F, 0x00, 0xCC, 0xFE,
+ 0x2E, 0xFF, 0x21, 0x00, 0x9D, 0xFE, 0x01, 0xFF,
+ 0x18, 0x00, 0x17, 0x00, 0x6A, 0xFF, 0x18, 0x00,
+ 0x46, 0x00, 0x6A, 0xFF, 0x18, 0x00, 0x76, 0x00,
+ 0x6A, 0xFF, 0x18, 0x00, 0xA5, 0x00, 0x6A, 0xFF,
+ 0x1B, 0x00, 0xD5, 0x00, 0x38, 0xFF, 0x1D, 0x00,
+ 0x04, 0x01, 0x0E, 0xFF, 0x1F, 0x00, 0x34, 0x01,
+ 0xDA, 0xFE, 0x21, 0x00, 0x63, 0x01, 0x9B, 0xFE,
+ 0x18, 0x00, 0xE9, 0xFF, 0x6A, 0xFF, 0x18, 0x00,
+ 0xBA, 0xFF, 0x6A, 0xFF, 0x18, 0x00, 0x8A, 0xFF,
+ 0x6A, 0xFF, 0x18, 0x00, 0x5B, 0xFF, 0x6A, 0xFF,
+ 0x1B, 0x00, 0x2B, 0xFF, 0x38, 0xFF, 0x1D, 0x00,
+ 0xFC, 0xFE, 0x0E, 0xFF, 0x1F, 0x00, 0xCC, 0xFE,
+ 0xDA, 0xFE, 0x21, 0x00, 0x9D, 0xFE, 0x9B, 0xFE,
+ 0x1B, 0x00, 0x17, 0x00, 0x3E, 0xFF, 0x1B, 0x00,
+ 0x46, 0x00, 0x3E, 0xFF, 0x1B, 0x00, 0x76, 0x00,
+ 0x3E, 0xFF, 0x1B, 0x00, 0xA5, 0x00, 0x3E, 0xFF,
+ 0x1E, 0x00, 0xD5, 0x00, 0xFE, 0xFE, 0x20, 0x00,
+ 0x04, 0x01, 0xC7, 0xFE, 0x22, 0x00, 0x34, 0x01,
+ 0x85, 0xFE, 0x24, 0x00, 0x63, 0x01, 0x35, 0xFE,
+ 0x1B, 0x00, 0xE9, 0xFF, 0x3E, 0xFF, 0x1B, 0x00,
+ 0xBA, 0xFF, 0x3E, 0xFF, 0x1B, 0x00, 0x8A, 0xFF,
+ 0x3E, 0xFF, 0x1B, 0x00, 0x5B, 0xFF, 0x3E, 0xFF,
+ 0x1E, 0x00, 0x2B, 0xFF, 0xFE, 0xFE, 0x20, 0x00,
+ 0xFC, 0xFE, 0xC7, 0xFE, 0x22, 0x00, 0xCC, 0xFE,
+ 0x85, 0xFE, 0x24, 0x00, 0x9D, 0xFE, 0x35, 0xFE,
+ 0x1D, 0x00, 0x17, 0x00, 0x13, 0xFF, 0x1D, 0x00,
+ 0x46, 0x00, 0x13, 0xFF, 0x1D, 0x00, 0x76, 0x00,
+ 0x13, 0xFF, 0x1D, 0x00, 0xA5, 0x00, 0x13, 0xFF,
+ 0x20, 0x00, 0xD5, 0x00, 0xC5, 0xFE, 0x22, 0x00,
+ 0x04, 0x01, 0x82, 0xFE, 0x24, 0x00, 0x34, 0x01,
+ 0x31, 0xFE, 0x26, 0x00, 0x63, 0x01, 0xCF, 0xFD,
+ 0x1D, 0x00, 0xE9, 0xFF, 0x13, 0xFF, 0x1D, 0x00,
+ 0xBA, 0xFF, 0x13, 0xFF, 0x1D, 0x00, 0x8A, 0xFF,
+ 0x13, 0xFF, 0x1D, 0x00, 0x5B, 0xFF, 0x13, 0xFF,
+ 0x20, 0x00, 0x2B, 0xFF, 0xC5, 0xFE, 0x22, 0x00,
+ 0xFC, 0xFE, 0x82, 0xFE, 0x24, 0x00, 0xCC, 0xFE,
+ 0x31, 0xFE, 0x26, 0x00, 0x9D, 0xFE, 0xCF, 0xFD,
+ 0x1F, 0x00, 0x17, 0x00, 0xE8, 0xFE, 0x1F, 0x00,
+ 0x46, 0x00, 0xE8, 0xFE, 0x1F, 0x00, 0x76, 0x00,
+ 0xE8, 0xFE, 0x1F, 0x00, 0xA5, 0x00, 0xE8, 0xFE,
+ 0x22, 0x00, 0xD5, 0x00, 0x8B, 0xFE, 0x24, 0x00,
+ 0x04, 0x01, 0x3C, 0xFE, 0x26, 0x00, 0x34, 0x01,
+ 0xDD, 0xFD, 0x28, 0x00, 0x63, 0x01, 0x69, 0xFD,
+ 0x1F, 0x00, 0xE9, 0xFF, 0xE8, 0xFE, 0x1F, 0x00,
+ 0xBA, 0xFF, 0xE8, 0xFE, 0x1F, 0x00, 0x8A, 0xFF,
+ 0xE8, 0xFE, 0x1F, 0x00, 0x5B, 0xFF, 0xE8, 0xFE,
+ 0x22, 0x00, 0x2B, 0xFF, 0x8B, 0xFE, 0x24, 0x00,
+ 0xFC, 0xFE, 0x3C, 0xFE, 0x26, 0x00, 0xCC, 0xFE,
+ 0xDD, 0xFD, 0x28, 0x00, 0x9D, 0xFE, 0x69, 0xFD,
+ 0x21, 0x00, 0x17, 0x00, 0xBD, 0xFE, 0x21, 0x00,
+ 0x46, 0x00, 0xBD, 0xFE, 0x21, 0x00, 0x76, 0x00,
+ 0xBD, 0xFE, 0x21, 0x00, 0xA5, 0x00, 0xBD, 0xFE,
+ 0x24, 0x00, 0xD5, 0x00, 0x52, 0xFE, 0x26, 0x00,
+ 0x04, 0x01, 0xF7, 0xFD, 0x28, 0x00, 0x34, 0x01,
+ 0x89, 0xFD, 0x2A, 0x00, 0x63, 0x01, 0x03, 0xFD,
+ 0x21, 0x00, 0xE9, 0xFF, 0xBD, 0xFE, 0x21, 0x00,
+ 0xBA, 0xFF, 0xBD, 0xFE, 0x21, 0x00, 0x8A, 0xFF,
+ 0xBD, 0xFE, 0x21, 0x00, 0x5B, 0xFF, 0xBD, 0xFE,
+ 0x24, 0x00, 0x2B, 0xFF, 0x52, 0xFE, 0x26, 0x00,
+ 0xFC, 0xFE, 0xF7, 0xFD, 0x28, 0x00, 0xCC, 0xFE,
+ 0x89, 0xFD, 0x2A, 0x00, 0x9D, 0xFE, 0x03, 0xFD,
+ 0x19, 0x00, 0x1A, 0x00, 0x17, 0x00, 0x19, 0x00,
+ 0x4E, 0x00, 0x17, 0x00, 0x19, 0x00, 0x82, 0x00,
+ 0x17, 0x00, 0x19, 0x00, 0xB6, 0x00, 0x17, 0x00,
+ 0x1C, 0x00, 0xEB, 0x00, 0x1F, 0x00, 0x1E, 0x00,
+ 0x1F, 0x01, 0x26, 0x00, 0x20, 0x00, 0x53, 0x01,
+ 0x2E, 0x00, 0x22, 0x00, 0x87, 0x01, 0x38, 0x00,
+ 0x19, 0x00, 0xE6, 0xFF, 0x17, 0x00, 0x19, 0x00,
+ 0xB2, 0xFF, 0x17, 0x00, 0x19, 0x00, 0x7E, 0xFF,
+ 0x17, 0x00, 0x19, 0x00, 0x4A, 0xFF, 0x17, 0x00,
+ 0x1C, 0x00, 0x15, 0xFF, 0x1F, 0x00, 0x1E, 0x00,
+ 0xE1, 0xFE, 0x26, 0x00, 0x20, 0x00, 0xAD, 0xFE,
+ 0x2E, 0x00, 0x22, 0x00, 0x79, 0xFE, 0x38, 0x00,
+ 0x19, 0x00, 0x1A, 0x00, 0x46, 0x00, 0x19, 0x00,
+ 0x4E, 0x00, 0x46, 0x00, 0x19, 0x00, 0x82, 0x00,
+ 0x46, 0x00, 0x19, 0x00, 0xB6, 0x00, 0x46, 0x00,
+ 0x1C, 0x00, 0xEB, 0x00, 0x5E, 0x00, 0x1E, 0x00,
+ 0x1F, 0x01, 0x72, 0x00, 0x20, 0x00, 0x53, 0x01,
+ 0x8A, 0x00, 0x22, 0x00, 0x87, 0x01, 0xA8, 0x00,
+ 0x19, 0x00, 0xE6, 0xFF, 0x46, 0x00, 0x19, 0x00,
+ 0xB2, 0xFF, 0x46, 0x00, 0x19, 0x00, 0x7E, 0xFF,
+ 0x46, 0x00, 0x19, 0x00, 0x4A, 0xFF, 0x46, 0x00,
+ 0x1C, 0x00, 0x15, 0xFF, 0x5E, 0x00, 0x1E, 0x00,
+ 0xE1, 0xFE, 0x72, 0x00, 0x20, 0x00, 0xAD, 0xFE,
+ 0x8A, 0x00, 0x22, 0x00, 0x79, 0xFE, 0xA8, 0x00,
+ 0x19, 0x00, 0x1A, 0x00, 0x76, 0x00, 0x19, 0x00,
+ 0x4E, 0x00, 0x76, 0x00, 0x19, 0x00, 0x82, 0x00,
+ 0x76, 0x00, 0x19, 0x00, 0xB6, 0x00, 0x76, 0x00,
+ 0x1C, 0x00, 0xEB, 0x00, 0x9D, 0x00, 0x1E, 0x00,
+ 0x1F, 0x01, 0xBF, 0x00, 0x20, 0x00, 0x53, 0x01,
+ 0xE7, 0x00, 0x22, 0x00, 0x87, 0x01, 0x18, 0x01,
+ 0x19, 0x00, 0xE6, 0xFF, 0x76, 0x00, 0x19, 0x00,
+ 0xB2, 0xFF, 0x76, 0x00, 0x19, 0x00, 0x7E, 0xFF,
+ 0x76, 0x00, 0x19, 0x00, 0x4A, 0xFF, 0x76, 0x00,
+ 0x1C, 0x00, 0x15, 0xFF, 0x9D, 0x00, 0x1E, 0x00,
+ 0xE1, 0xFE, 0xBF, 0x00, 0x20, 0x00, 0xAD, 0xFE,
+ 0xE7, 0x00, 0x22, 0x00, 0x79, 0xFE, 0x18, 0x01,
+ 0x19, 0x00, 0x1A, 0x00, 0xA5, 0x00, 0x19, 0x00,
+ 0x4E, 0x00, 0xA5, 0x00, 0x19, 0x00, 0x82, 0x00,
+ 0xA5, 0x00, 0x19, 0x00, 0xB6, 0x00, 0xA5, 0x00,
+ 0x1C, 0x00, 0xEB, 0x00, 0xDC, 0x00, 0x1E, 0x00,
+ 0x1F, 0x01, 0x0B, 0x01, 0x20, 0x00, 0x53, 0x01,
+ 0x43, 0x01, 0x22, 0x00, 0x87, 0x01, 0x88, 0x01,
+ 0x19, 0x00, 0xE6, 0xFF, 0xA5, 0x00, 0x19, 0x00,
+ 0xB2, 0xFF, 0xA5, 0x00, 0x19, 0x00, 0x7E, 0xFF,
+ 0xA5, 0x00, 0x19, 0x00, 0x4A, 0xFF, 0xA5, 0x00,
+ 0x1C, 0x00, 0x15, 0xFF, 0xDC, 0x00, 0x1E, 0x00,
+ 0xE1, 0xFE, 0x0B, 0x01, 0x20, 0x00, 0xAD, 0xFE,
+ 0x43, 0x01, 0x22, 0x00, 0x79, 0xFE, 0x88, 0x01,
+ 0x1C, 0x00, 0x1A, 0x00, 0xD5, 0x00, 0x1C, 0x00,
+ 0x4E, 0x00, 0xD5, 0x00, 0x1C, 0x00, 0x82, 0x00,
+ 0xD5, 0x00, 0x1C, 0x00, 0xB6, 0x00, 0xD5, 0x00,
+ 0x1F, 0x00, 0xEB, 0x00, 0x1C, 0x01, 0x21, 0x00,
+ 0x1F, 0x01, 0x59, 0x01, 0x23, 0x00, 0x53, 0x01,
+ 0xA1, 0x01, 0x25, 0x00, 0x87, 0x01, 0xF9, 0x01,
+ 0x1C, 0x00, 0xE6, 0xFF, 0xD5, 0x00, 0x1C, 0x00,
+ 0xB2, 0xFF, 0xD5, 0x00, 0x1C, 0x00, 0x7E, 0xFF,
+ 0xD5, 0x00, 0x1C, 0x00, 0x4A, 0xFF, 0xD5, 0x00,
+ 0x1F, 0x00, 0x15, 0xFF, 0x1C, 0x01, 0x21, 0x00,
+ 0xE1, 0xFE, 0x59, 0x01, 0x23, 0x00, 0xAD, 0xFE,
+ 0xA1, 0x01, 0x25, 0x00, 0x79, 0xFE, 0xF9, 0x01,
+ 0x1E, 0x00, 0x1A, 0x00, 0x04, 0x01, 0x1E, 0x00,
+ 0x4E, 0x00, 0x04, 0x01, 0x1E, 0x00, 0x82, 0x00,
+ 0x04, 0x01, 0x1E, 0x00, 0xB6, 0x00, 0x04, 0x01,
+ 0x21, 0x00, 0xEB, 0x00, 0x5B, 0x01, 0x23, 0x00,
+ 0x1F, 0x01, 0xA5, 0x01, 0x25, 0x00, 0x53, 0x01,
+ 0xFD, 0x01, 0x27, 0x00, 0x87, 0x01, 0x69, 0x02,
+ 0x1E, 0x00, 0xE6, 0xFF, 0x04, 0x01, 0x1E, 0x00,
+ 0xB2, 0xFF, 0x04, 0x01, 0x1E, 0x00, 0x7E, 0xFF,
+ 0x04, 0x01, 0x1E, 0x00, 0x4A, 0xFF, 0x04, 0x01,
+ 0x21, 0x00, 0x15, 0xFF, 0x5B, 0x01, 0x23, 0x00,
+ 0xE1, 0xFE, 0xA5, 0x01, 0x25, 0x00, 0xAD, 0xFE,
+ 0xFD, 0x01, 0x27, 0x00, 0x79, 0xFE, 0x69, 0x02,
+ 0x20, 0x00, 0x1A, 0x00, 0x34, 0x01, 0x20, 0x00,
+ 0x4E, 0x00, 0x34, 0x01, 0x20, 0x00, 0x82, 0x00,
+ 0x34, 0x01, 0x20, 0x00, 0xB6, 0x00, 0x34, 0x01,
+ 0x23, 0x00, 0xEB, 0x00, 0x9A, 0x01, 0x25, 0x00,
+ 0x1F, 0x01, 0xF2, 0x01, 0x27, 0x00, 0x53, 0x01,
+ 0x5A, 0x02, 0x29, 0x00, 0x87, 0x01, 0xD9, 0x02,
+ 0x20, 0x00, 0xE6, 0xFF, 0x34, 0x01, 0x20, 0x00,
+ 0xB2, 0xFF, 0x34, 0x01, 0x20, 0x00, 0x7E, 0xFF,
+ 0x34, 0x01, 0x20, 0x00, 0x4A, 0xFF, 0x34, 0x01,
+ 0x23, 0x00, 0x15, 0xFF, 0x9A, 0x01, 0x25, 0x00,
+ 0xE1, 0xFE, 0xF2, 0x01, 0x27, 0x00, 0xAD, 0xFE,
+ 0x5A, 0x02, 0x29, 0x00, 0x79, 0xFE, 0xD9, 0x02,
+ 0x22, 0x00, 0x1A, 0x00, 0x63, 0x01, 0x22, 0x00,
+ 0x4E, 0x00, 0x63, 0x01, 0x22, 0x00, 0x82, 0x00,
+ 0x63, 0x01, 0x22, 0x00, 0xB6, 0x00, 0x63, 0x01,
+ 0x25, 0x00, 0xEB, 0x00, 0xD9, 0x01, 0x27, 0x00,
+ 0x1F, 0x01, 0x3E, 0x02, 0x29, 0x00, 0x53, 0x01,
+ 0xB6, 0x02, 0x2B, 0x00, 0x87, 0x01, 0x49, 0x03,
+ 0x22, 0x00, 0xE6, 0xFF, 0x63, 0x01, 0x22, 0x00,
+ 0xB2, 0xFF, 0x63, 0x01, 0x22, 0x00, 0x7E, 0xFF,
+ 0x63, 0x01, 0x22, 0x00, 0x4A, 0xFF, 0x63, 0x01,
+ 0x25, 0x00, 0x15, 0xFF, 0xD9, 0x01, 0x27, 0x00,
+ 0xE1, 0xFE, 0x3E, 0x02, 0x29, 0x00, 0xAD, 0xFE,
+ 0xB6, 0x02, 0x2B, 0x00, 0x79, 0xFE, 0x49, 0x03,
+ 0x19, 0x00, 0x1A, 0x00, 0xE9, 0xFF, 0x19, 0x00,
+ 0x4E, 0x00, 0xE9, 0xFF, 0x19, 0x00, 0x82, 0x00,
+ 0xE9, 0xFF, 0x19, 0x00, 0xB6, 0x00, 0xE9, 0xFF,
+ 0x1C, 0x00, 0xEB, 0x00, 0xE1, 0xFF, 0x1E, 0x00,
+ 0x1F, 0x01, 0xDA, 0xFF, 0x20, 0x00, 0x53, 0x01,
+ 0xD2, 0xFF, 0x22, 0x00, 0x87, 0x01, 0xC8, 0xFF,
+ 0x19, 0x00, 0xE6, 0xFF, 0xE9, 0xFF, 0x19, 0x00,
+ 0xB2, 0xFF, 0xE9, 0xFF, 0x19, 0x00, 0x7E, 0xFF,
+ 0xE9, 0xFF, 0x19, 0x00, 0x4A, 0xFF, 0xE9, 0xFF,
+ 0x1C, 0x00, 0x15, 0xFF, 0xE1, 0xFF, 0x1E, 0x00,
+ 0xE1, 0xFE, 0xDA, 0xFF, 0x20, 0x00, 0xAD, 0xFE,
+ 0xD2, 0xFF, 0x22, 0x00, 0x79, 0xFE, 0xC8, 0xFF,
+ 0x19, 0x00, 0x1A, 0x00, 0xBA, 0xFF, 0x19, 0x00,
+ 0x4E, 0x00, 0xBA, 0xFF, 0x19, 0x00, 0x82, 0x00,
+ 0xBA, 0xFF, 0x19, 0x00, 0xB6, 0x00, 0xBA, 0xFF,
+ 0x1C, 0x00, 0xEB, 0x00, 0xA2, 0xFF, 0x1E, 0x00,
+ 0x1F, 0x01, 0x8E, 0xFF, 0x20, 0x00, 0x53, 0x01,
+ 0x76, 0xFF, 0x22, 0x00, 0x87, 0x01, 0x58, 0xFF,
+ 0x19, 0x00, 0xE6, 0xFF, 0xBA, 0xFF, 0x19, 0x00,
+ 0xB2, 0xFF, 0xBA, 0xFF, 0x19, 0x00, 0x7E, 0xFF,
+ 0xBA, 0xFF, 0x19, 0x00, 0x4A, 0xFF, 0xBA, 0xFF,
+ 0x1C, 0x00, 0x15, 0xFF, 0xA2, 0xFF, 0x1E, 0x00,
+ 0xE1, 0xFE, 0x8E, 0xFF, 0x20, 0x00, 0xAD, 0xFE,
+ 0x76, 0xFF, 0x22, 0x00, 0x79, 0xFE, 0x58, 0xFF,
+ 0x19, 0x00, 0x1A, 0x00, 0x8A, 0xFF, 0x19, 0x00,
+ 0x4E, 0x00, 0x8A, 0xFF, 0x19, 0x00, 0x82, 0x00,
+ 0x8A, 0xFF, 0x19, 0x00, 0xB6, 0x00, 0x8A, 0xFF,
+ 0x1C, 0x00, 0xEB, 0x00, 0x63, 0xFF, 0x1E, 0x00,
+ 0x1F, 0x01, 0x41, 0xFF, 0x20, 0x00, 0x53, 0x01,
+ 0x19, 0xFF, 0x22, 0x00, 0x87, 0x01, 0xE8, 0xFE,
+ 0x19, 0x00, 0xE6, 0xFF, 0x8A, 0xFF, 0x19, 0x00,
+ 0xB2, 0xFF, 0x8A, 0xFF, 0x19, 0x00, 0x7E, 0xFF,
+ 0x8A, 0xFF, 0x19, 0x00, 0x4A, 0xFF, 0x8A, 0xFF,
+ 0x1C, 0x00, 0x15, 0xFF, 0x63, 0xFF, 0x1E, 0x00,
+ 0xE1, 0xFE, 0x41, 0xFF, 0x20, 0x00, 0xAD, 0xFE,
+ 0x19, 0xFF, 0x22, 0x00, 0x79, 0xFE, 0xE8, 0xFE,
+ 0x19, 0x00, 0x1A, 0x00, 0x5B, 0xFF, 0x19, 0x00,
+ 0x4E, 0x00, 0x5B, 0xFF, 0x19, 0x00, 0x82, 0x00,
+ 0x5B, 0xFF, 0x19, 0x00, 0xB6, 0x00, 0x5B, 0xFF,
+ 0x1C, 0x00, 0xEB, 0x00, 0x24, 0xFF, 0x1E, 0x00,
+ 0x1F, 0x01, 0xF5, 0xFE, 0x20, 0x00, 0x53, 0x01,
+ 0xBD, 0xFE, 0x22, 0x00, 0x87, 0x01, 0x78, 0xFE,
+ 0x19, 0x00, 0xE6, 0xFF, 0x5B, 0xFF, 0x19, 0x00,
+ 0xB2, 0xFF, 0x5B, 0xFF, 0x19, 0x00, 0x7E, 0xFF,
+ 0x5B, 0xFF, 0x19, 0x00, 0x4A, 0xFF, 0x5B, 0xFF,
+ 0x1C, 0x00, 0x15, 0xFF, 0x24, 0xFF, 0x1E, 0x00,
+ 0xE1, 0xFE, 0xF5, 0xFE, 0x20, 0x00, 0xAD, 0xFE,
+ 0xBD, 0xFE, 0x22, 0x00, 0x79, 0xFE, 0x78, 0xFE,
+ 0x1C, 0x00, 0x1A, 0x00, 0x2B, 0xFF, 0x1C, 0x00,
+ 0x4E, 0x00, 0x2B, 0xFF, 0x1C, 0x00, 0x82, 0x00,
+ 0x2B, 0xFF, 0x1C, 0x00, 0xB6, 0x00, 0x2B, 0xFF,
+ 0x1F, 0x00, 0xEB, 0x00, 0xE4, 0xFE, 0x21, 0x00,
+ 0x1F, 0x01, 0xA7, 0xFE, 0x23, 0x00, 0x53, 0x01,
+ 0x5F, 0xFE, 0x25, 0x00, 0x87, 0x01, 0x07, 0xFE,
+ 0x1C, 0x00, 0xE6, 0xFF, 0x2B, 0xFF, 0x1C, 0x00,
+ 0xB2, 0xFF, 0x2B, 0xFF, 0x1C, 0x00, 0x7E, 0xFF,
+ 0x2B, 0xFF, 0x1C, 0x00, 0x4A, 0xFF, 0x2B, 0xFF,
+ 0x1F, 0x00, 0x15, 0xFF, 0xE4, 0xFE, 0x21, 0x00,
+ 0xE1, 0xFE, 0xA7, 0xFE, 0x23, 0x00, 0xAD, 0xFE,
+ 0x5F, 0xFE, 0x25, 0x00, 0x79, 0xFE, 0x07, 0xFE,
+ 0x1E, 0x00, 0x1A, 0x00, 0xFC, 0xFE, 0x1E, 0x00,
+ 0x4E, 0x00, 0xFC, 0xFE, 0x1E, 0x00, 0x82, 0x00,
+ 0xFC, 0xFE, 0x1E, 0x00, 0xB6, 0x00, 0xFC, 0xFE,
+ 0x21, 0x00, 0xEB, 0x00, 0xA5, 0xFE, 0x23, 0x00,
+ 0x1F, 0x01, 0x5B, 0xFE, 0x25, 0x00, 0x53, 0x01,
+ 0x03, 0xFE, 0x27, 0x00, 0x87, 0x01, 0x97, 0xFD,
+ 0x1E, 0x00, 0xE6, 0xFF, 0xFC, 0xFE, 0x1E, 0x00,
+ 0xB2, 0xFF, 0xFC, 0xFE, 0x1E, 0x00, 0x7E, 0xFF,
+ 0xFC, 0xFE, 0x1E, 0x00, 0x4A, 0xFF, 0xFC, 0xFE,
+ 0x21, 0x00, 0x15, 0xFF, 0xA5, 0xFE, 0x23, 0x00,
+ 0xE1, 0xFE, 0x5B, 0xFE, 0x25, 0x00, 0xAD, 0xFE,
+ 0x03, 0xFE, 0x27, 0x00, 0x79, 0xFE, 0x97, 0xFD,
+ 0x20, 0x00, 0x1A, 0x00, 0xCC, 0xFE, 0x20, 0x00,
+ 0x4E, 0x00, 0xCC, 0xFE, 0x20, 0x00, 0x82, 0x00,
+ 0xCC, 0xFE, 0x20, 0x00, 0xB6, 0x00, 0xCC, 0xFE,
+ 0x23, 0x00, 0xEB, 0x00, 0x66, 0xFE, 0x25, 0x00,
+ 0x1F, 0x01, 0x0E, 0xFE, 0x27, 0x00, 0x53, 0x01,
+ 0xA6, 0xFD, 0x29, 0x00, 0x87, 0x01, 0x27, 0xFD,
+ 0x20, 0x00, 0xE6, 0xFF, 0xCC, 0xFE, 0x20, 0x00,
+ 0xB2, 0xFF, 0xCC, 0xFE, 0x20, 0x00, 0x7E, 0xFF,
+ 0xCC, 0xFE, 0x20, 0x00, 0x4A, 0xFF, 0xCC, 0xFE,
+ 0x23, 0x00, 0x15, 0xFF, 0x66, 0xFE, 0x25, 0x00,
+ 0xE1, 0xFE, 0x0E, 0xFE, 0x27, 0x00, 0xAD, 0xFE,
+ 0xA6, 0xFD, 0x29, 0x00, 0x79, 0xFE, 0x27, 0xFD,
+ 0x22, 0x00, 0x1A, 0x00, 0x9D, 0xFE, 0x22, 0x00,
+ 0x4E, 0x00, 0x9D, 0xFE, 0x22, 0x00, 0x82, 0x00,
+ 0x9D, 0xFE, 0x22, 0x00, 0xB6, 0x00, 0x9D, 0xFE,
+ 0x25, 0x00, 0xEB, 0x00, 0x27, 0xFE, 0x27, 0x00,
+ 0x1F, 0x01, 0xC2, 0xFD, 0x29, 0x00, 0x53, 0x01,
+ 0x4A, 0xFD, 0x2B, 0x00, 0x87, 0x01, 0xB7, 0xFC,
+ 0x22, 0x00, 0xE6, 0xFF, 0x9D, 0xFE, 0x22, 0x00,
+ 0xB2, 0xFF, 0x9D, 0xFE, 0x22, 0x00, 0x7E, 0xFF,
+ 0x9D, 0xFE, 0x22, 0x00, 0x4A, 0xFF, 0x9D, 0xFE,
+ 0x25, 0x00, 0x15, 0xFF, 0x27, 0xFE, 0x27, 0x00,
+ 0xE1, 0xFE, 0xC2, 0xFD, 0x29, 0x00, 0xAD, 0xFE,
+ 0x4A, 0xFD, 0x2B, 0x00, 0x79, 0xFE, 0xB7, 0xFC,
+ 0x1A, 0x00, 0x1C, 0x00, 0x1A, 0x00, 0x1A, 0x00,
+ 0x55, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x8F, 0x00,
+ 0x1A, 0x00, 0x1A, 0x00, 0xC8, 0x00, 0x1A, 0x00,
+ 0x1D, 0x00, 0x02, 0x01, 0x22, 0x00, 0x1F, 0x00,
+ 0x3B, 0x01, 0x2A, 0x00, 0x21, 0x00, 0x75, 0x01,
+ 0x33, 0x00, 0x23, 0x00, 0xAE, 0x01, 0x3D, 0x00,
+ 0x1A, 0x00, 0xE4, 0xFF, 0x1A, 0x00, 0x1A, 0x00,
+ 0xAB, 0xFF, 0x1A, 0x00, 0x1A, 0x00, 0x71, 0xFF,
+ 0x1A, 0x00, 0x1A, 0x00, 0x38, 0xFF, 0x1A, 0x00,
+ 0x1D, 0x00, 0xFE, 0xFE, 0x22, 0x00, 0x1F, 0x00,
+ 0xC5, 0xFE, 0x2A, 0x00, 0x21, 0x00, 0x8B, 0xFE,
+ 0x33, 0x00, 0x23, 0x00, 0x52, 0xFE, 0x3D, 0x00,
+ 0x1A, 0x00, 0x1C, 0x00, 0x4E, 0x00, 0x1A, 0x00,
+ 0x55, 0x00, 0x4E, 0x00, 0x1A, 0x00, 0x8F, 0x00,
+ 0x4E, 0x00, 0x1A, 0x00, 0xC8, 0x00, 0x4E, 0x00,
+ 0x1D, 0x00, 0x02, 0x01, 0x67, 0x00, 0x1F, 0x00,
+ 0x3B, 0x01, 0x7E, 0x00, 0x21, 0x00, 0x75, 0x01,
+ 0x99, 0x00, 0x23, 0x00, 0xAE, 0x01, 0xB8, 0x00,
+ 0x1A, 0x00, 0xE4, 0xFF, 0x4E, 0x00, 0x1A, 0x00,
+ 0xAB, 0xFF, 0x4E, 0x00, 0x1A, 0x00, 0x71, 0xFF,
+ 0x4E, 0x00, 0x1A, 0x00, 0x38, 0xFF, 0x4E, 0x00,
+ 0x1D, 0x00, 0xFE, 0xFE, 0x67, 0x00, 0x1F, 0x00,
+ 0xC5, 0xFE, 0x7E, 0x00, 0x21, 0x00, 0x8B, 0xFE,
+ 0x99, 0x00, 0x23, 0x00, 0x52, 0xFE, 0xB8, 0x00,
+ 0x1A, 0x00, 0x1C, 0x00, 0x82, 0x00, 0x1A, 0x00,
+ 0x55, 0x00, 0x82, 0x00, 0x1A, 0x00, 0x8F, 0x00,
+ 0x82, 0x00, 0x1A, 0x00, 0xC8, 0x00, 0x82, 0x00,
+ 0x1D, 0x00, 0x02, 0x01, 0xAD, 0x00, 0x1F, 0x00,
+ 0x3B, 0x01, 0xD2, 0x00, 0x21, 0x00, 0x75, 0x01,
+ 0xFF, 0x00, 0x23, 0x00, 0xAE, 0x01, 0x34, 0x01,
+ 0x1A, 0x00, 0xE4, 0xFF, 0x82, 0x00, 0x1A, 0x00,
+ 0xAB, 0xFF, 0x82, 0x00, 0x1A, 0x00, 0x71, 0xFF,
+ 0x82, 0x00, 0x1A, 0x00, 0x38, 0xFF, 0x82, 0x00,
+ 0x1D, 0x00, 0xFE, 0xFE, 0xAD, 0x00, 0x1F, 0x00,
+ 0xC5, 0xFE, 0xD2, 0x00, 0x21, 0x00, 0x8B, 0xFE,
+ 0xFF, 0x00, 0x23, 0x00, 0x52, 0xFE, 0x34, 0x01,
+ 0x1A, 0x00, 0x1C, 0x00, 0xB6, 0x00, 0x1A, 0x00,
+ 0x55, 0x00, 0xB6, 0x00, 0x1A, 0x00, 0x8F, 0x00,
+ 0xB6, 0x00, 0x1A, 0x00, 0xC8, 0x00, 0xB6, 0x00,
+ 0x1D, 0x00, 0x02, 0x01, 0xF2, 0x00, 0x1F, 0x00,
+ 0x3B, 0x01, 0x26, 0x01, 0x21, 0x00, 0x75, 0x01,
+ 0x65, 0x01, 0x23, 0x00, 0xAE, 0x01, 0xAF, 0x01,
+ 0x1A, 0x00, 0xE4, 0xFF, 0xB6, 0x00, 0x1A, 0x00,
+ 0xAB, 0xFF, 0xB6, 0x00, 0x1A, 0x00, 0x71, 0xFF,
+ 0xB6, 0x00, 0x1A, 0x00, 0x38, 0xFF, 0xB6, 0x00,
+ 0x1D, 0x00, 0xFE, 0xFE, 0xF2, 0x00, 0x1F, 0x00,
+ 0xC5, 0xFE, 0x26, 0x01, 0x21, 0x00, 0x8B, 0xFE,
+ 0x65, 0x01, 0x23, 0x00, 0x52, 0xFE, 0xAF, 0x01,
+ 0x1D, 0x00, 0x1C, 0x00, 0xEB, 0x00, 0x1D, 0x00,
+ 0x55, 0x00, 0xEB, 0x00, 0x1D, 0x00, 0x8F, 0x00,
+ 0xEB, 0x00, 0x1D, 0x00, 0xC8, 0x00, 0xEB, 0x00,
+ 0x20, 0x00, 0x02, 0x01, 0x39, 0x01, 0x22, 0x00,
+ 0x3B, 0x01, 0x7B, 0x01, 0x24, 0x00, 0x75, 0x01,
+ 0xCB, 0x01, 0x26, 0x00, 0xAE, 0x01, 0x2B, 0x02,
+ 0x1D, 0x00, 0xE4, 0xFF, 0xEB, 0x00, 0x1D, 0x00,
+ 0xAB, 0xFF, 0xEB, 0x00, 0x1D, 0x00, 0x71, 0xFF,
+ 0xEB, 0x00, 0x1D, 0x00, 0x38, 0xFF, 0xEB, 0x00,
+ 0x20, 0x00, 0xFE, 0xFE, 0x39, 0x01, 0x22, 0x00,
+ 0xC5, 0xFE, 0x7B, 0x01, 0x24, 0x00, 0x8B, 0xFE,
+ 0xCB, 0x01, 0x26, 0x00, 0x52, 0xFE, 0x2B, 0x02,
+ 0x1F, 0x00, 0x1C, 0x00, 0x1F, 0x01, 0x1F, 0x00,
+ 0x55, 0x00, 0x1F, 0x01, 0x1F, 0x00, 0x8F, 0x00,
+ 0x1F, 0x01, 0x1F, 0x00, 0xC8, 0x00, 0x1F, 0x01,
+ 0x22, 0x00, 0x02, 0x01, 0x7E, 0x01, 0x24, 0x00,
+ 0x3B, 0x01, 0xCF, 0x01, 0x26, 0x00, 0x75, 0x01,
+ 0x31, 0x02, 0x28, 0x00, 0xAE, 0x01, 0xA6, 0x02,
+ 0x1F, 0x00, 0xE4, 0xFF, 0x1F, 0x01, 0x1F, 0x00,
+ 0xAB, 0xFF, 0x1F, 0x01, 0x1F, 0x00, 0x71, 0xFF,
+ 0x1F, 0x01, 0x1F, 0x00, 0x38, 0xFF, 0x1F, 0x01,
+ 0x22, 0x00, 0xFE, 0xFE, 0x7E, 0x01, 0x24, 0x00,
+ 0xC5, 0xFE, 0xCF, 0x01, 0x26, 0x00, 0x8B, 0xFE,
+ 0x31, 0x02, 0x28, 0x00, 0x52, 0xFE, 0xA6, 0x02,
+ 0x21, 0x00, 0x1C, 0x00, 0x53, 0x01, 0x21, 0x00,
+ 0x55, 0x00, 0x53, 0x01, 0x21, 0x00, 0x8F, 0x00,
+ 0x53, 0x01, 0x21, 0x00, 0xC8, 0x00, 0x53, 0x01,
+ 0x24, 0x00, 0x02, 0x01, 0xC4, 0x01, 0x26, 0x00,
+ 0x3B, 0x01, 0x23, 0x02, 0x28, 0x00, 0x75, 0x01,
+ 0x97, 0x02, 0x2A, 0x00, 0xAE, 0x01, 0x22, 0x03,
+ 0x21, 0x00, 0xE4, 0xFF, 0x53, 0x01, 0x21, 0x00,
+ 0xAB, 0xFF, 0x53, 0x01, 0x21, 0x00, 0x71, 0xFF,
+ 0x53, 0x01, 0x21, 0x00, 0x38, 0xFF, 0x53, 0x01,
+ 0x24, 0x00, 0xFE, 0xFE, 0xC4, 0x01, 0x26, 0x00,
+ 0xC5, 0xFE, 0x23, 0x02, 0x28, 0x00, 0x8B, 0xFE,
+ 0x97, 0x02, 0x2A, 0x00, 0x52, 0xFE, 0x22, 0x03,
+ 0x23, 0x00, 0x1C, 0x00, 0x87, 0x01, 0x23, 0x00,
+ 0x55, 0x00, 0x87, 0x01, 0x23, 0x00, 0x8F, 0x00,
+ 0x87, 0x01, 0x23, 0x00, 0xC8, 0x00, 0x87, 0x01,
+ 0x26, 0x00, 0x02, 0x01, 0x09, 0x02, 0x28, 0x00,
+ 0x3B, 0x01, 0x77, 0x02, 0x2A, 0x00, 0x75, 0x01,
+ 0xFD, 0x02, 0x2C, 0x00, 0xAE, 0x01, 0x9D, 0x03,
+ 0x23, 0x00, 0xE4, 0xFF, 0x87, 0x01, 0x23, 0x00,
+ 0xAB, 0xFF, 0x87, 0x01, 0x23, 0x00, 0x71, 0xFF,
+ 0x87, 0x01, 0x23, 0x00, 0x38, 0xFF, 0x87, 0x01,
+ 0x26, 0x00, 0xFE, 0xFE, 0x09, 0x02, 0x28, 0x00,
+ 0xC5, 0xFE, 0x77, 0x02, 0x2A, 0x00, 0x8B, 0xFE,
+ 0xFD, 0x02, 0x2C, 0x00, 0x52, 0xFE, 0x9D, 0x03,
+ 0x1A, 0x00, 0x1C, 0x00, 0xE6, 0xFF, 0x1A, 0x00,
+ 0x55, 0x00, 0xE6, 0xFF, 0x1A, 0x00, 0x8F, 0x00,
+ 0xE6, 0xFF, 0x1A, 0x00, 0xC8, 0x00, 0xE6, 0xFF,
+ 0x1D, 0x00, 0x02, 0x01, 0xDE, 0xFF, 0x1F, 0x00,
+ 0x3B, 0x01, 0xD6, 0xFF, 0x21, 0x00, 0x75, 0x01,
+ 0xCD, 0xFF, 0x23, 0x00, 0xAE, 0x01, 0xC3, 0xFF,
+ 0x1A, 0x00, 0xE4, 0xFF, 0xE6, 0xFF, 0x1A, 0x00,
+ 0xAB, 0xFF, 0xE6, 0xFF, 0x1A, 0x00, 0x71, 0xFF,
+ 0xE6, 0xFF, 0x1A, 0x00, 0x38, 0xFF, 0xE6, 0xFF,
+ 0x1D, 0x00, 0xFE, 0xFE, 0xDE, 0xFF, 0x1F, 0x00,
+ 0xC5, 0xFE, 0xD6, 0xFF, 0x21, 0x00, 0x8B, 0xFE,
+ 0xCD, 0xFF, 0x23, 0x00, 0x52, 0xFE, 0xC3, 0xFF,
+ 0x1A, 0x00, 0x1C, 0x00, 0xB2, 0xFF, 0x1A, 0x00,
+ 0x55, 0x00, 0xB2, 0xFF, 0x1A, 0x00, 0x8F, 0x00,
+ 0xB2, 0xFF, 0x1A, 0x00, 0xC8, 0x00, 0xB2, 0xFF,
+ 0x1D, 0x00, 0x02, 0x01, 0x99, 0xFF, 0x1F, 0x00,
+ 0x3B, 0x01, 0x82, 0xFF, 0x21, 0x00, 0x75, 0x01,
+ 0x67, 0xFF, 0x23, 0x00, 0xAE, 0x01, 0x48, 0xFF,
+ 0x1A, 0x00, 0xE4, 0xFF, 0xB2, 0xFF, 0x1A, 0x00,
+ 0xAB, 0xFF, 0xB2, 0xFF, 0x1A, 0x00, 0x71, 0xFF,
+ 0xB2, 0xFF, 0x1A, 0x00, 0x38, 0xFF, 0xB2, 0xFF,
+ 0x1D, 0x00, 0xFE, 0xFE, 0x99, 0xFF, 0x1F, 0x00,
+ 0xC5, 0xFE, 0x82, 0xFF, 0x21, 0x00, 0x8B, 0xFE,
+ 0x67, 0xFF, 0x23, 0x00, 0x52, 0xFE, 0x48, 0xFF,
+ 0x1A, 0x00, 0x1C, 0x00, 0x7E, 0xFF, 0x1A, 0x00,
+ 0x55, 0x00, 0x7E, 0xFF, 0x1A, 0x00, 0x8F, 0x00,
+ 0x7E, 0xFF, 0x1A, 0x00, 0xC8, 0x00, 0x7E, 0xFF,
+ 0x1D, 0x00, 0x02, 0x01, 0x53, 0xFF, 0x1F, 0x00,
+ 0x3B, 0x01, 0x2E, 0xFF, 0x21, 0x00, 0x75, 0x01,
+ 0x01, 0xFF, 0x23, 0x00, 0xAE, 0x01, 0xCC, 0xFE,
+ 0x1A, 0x00, 0xE4, 0xFF, 0x7E, 0xFF, 0x1A, 0x00,
+ 0xAB, 0xFF, 0x7E, 0xFF, 0x1A, 0x00, 0x71, 0xFF,
+ 0x7E, 0xFF, 0x1A, 0x00, 0x38, 0xFF, 0x7E, 0xFF,
+ 0x1D, 0x00, 0xFE, 0xFE, 0x53, 0xFF, 0x1F, 0x00,
+ 0xC5, 0xFE, 0x2E, 0xFF, 0x21, 0x00, 0x8B, 0xFE,
+ 0x01, 0xFF, 0x23, 0x00, 0x52, 0xFE, 0xCC, 0xFE,
+ 0x1A, 0x00, 0x1C, 0x00, 0x4A, 0xFF, 0x1A, 0x00,
+ 0x55, 0x00, 0x4A, 0xFF, 0x1A, 0x00, 0x8F, 0x00,
+ 0x4A, 0xFF, 0x1A, 0x00, 0xC8, 0x00, 0x4A, 0xFF,
+ 0x1D, 0x00, 0x02, 0x01, 0x0E, 0xFF, 0x1F, 0x00,
+ 0x3B, 0x01, 0xDA, 0xFE, 0x21, 0x00, 0x75, 0x01,
+ 0x9B, 0xFE, 0x23, 0x00, 0xAE, 0x01, 0x51, 0xFE,
+ 0x1A, 0x00, 0xE4, 0xFF, 0x4A, 0xFF, 0x1A, 0x00,
+ 0xAB, 0xFF, 0x4A, 0xFF, 0x1A, 0x00, 0x71, 0xFF,
+ 0x4A, 0xFF, 0x1A, 0x00, 0x38, 0xFF, 0x4A, 0xFF,
+ 0x1D, 0x00, 0xFE, 0xFE, 0x0E, 0xFF, 0x1F, 0x00,
+ 0xC5, 0xFE, 0xDA, 0xFE, 0x21, 0x00, 0x8B, 0xFE,
+ 0x9B, 0xFE, 0x23, 0x00, 0x52, 0xFE, 0x51, 0xFE,
+ 0x1D, 0x00, 0x1C, 0x00, 0x15, 0xFF, 0x1D, 0x00,
+ 0x55, 0x00, 0x15, 0xFF, 0x1D, 0x00, 0x8F, 0x00,
+ 0x15, 0xFF, 0x1D, 0x00, 0xC8, 0x00, 0x15, 0xFF,
+ 0x20, 0x00, 0x02, 0x01, 0xC7, 0xFE, 0x22, 0x00,
+ 0x3B, 0x01, 0x85, 0xFE, 0x24, 0x00, 0x75, 0x01,
+ 0x35, 0xFE, 0x26, 0x00, 0xAE, 0x01, 0xD5, 0xFD,
+ 0x1D, 0x00, 0xE4, 0xFF, 0x15, 0xFF, 0x1D, 0x00,
+ 0xAB, 0xFF, 0x15, 0xFF, 0x1D, 0x00, 0x71, 0xFF,
+ 0x15, 0xFF, 0x1D, 0x00, 0x38, 0xFF, 0x15, 0xFF,
+ 0x20, 0x00, 0xFE, 0xFE, 0xC7, 0xFE, 0x22, 0x00,
+ 0xC5, 0xFE, 0x85, 0xFE, 0x24, 0x00, 0x8B, 0xFE,
+ 0x35, 0xFE, 0x26, 0x00, 0x52, 0xFE, 0xD5, 0xFD,
+ 0x1F, 0x00, 0x1C, 0x00, 0xE1, 0xFE, 0x1F, 0x00,
+ 0x55, 0x00, 0xE1, 0xFE, 0x1F, 0x00, 0x8F, 0x00,
+ 0xE1, 0xFE, 0x1F, 0x00, 0xC8, 0x00, 0xE1, 0xFE,
+ 0x22, 0x00, 0x02, 0x01, 0x82, 0xFE, 0x24, 0x00,
+ 0x3B, 0x01, 0x31, 0xFE, 0x26, 0x00, 0x75, 0x01,
+ 0xCF, 0xFD, 0x28, 0x00, 0xAE, 0x01, 0x5A, 0xFD,
+ 0x1F, 0x00, 0xE4, 0xFF, 0xE1, 0xFE, 0x1F, 0x00,
+ 0xAB, 0xFF, 0xE1, 0xFE, 0x1F, 0x00, 0x71, 0xFF,
+ 0xE1, 0xFE, 0x1F, 0x00, 0x38, 0xFF, 0xE1, 0xFE,
+ 0x22, 0x00, 0xFE, 0xFE, 0x82, 0xFE, 0x24, 0x00,
+ 0xC5, 0xFE, 0x31, 0xFE, 0x26, 0x00, 0x8B, 0xFE,
+ 0xCF, 0xFD, 0x28, 0x00, 0x52, 0xFE, 0x5A, 0xFD,
+ 0x21, 0x00, 0x1C, 0x00, 0xAD, 0xFE, 0x21, 0x00,
+ 0x55, 0x00, 0xAD, 0xFE, 0x21, 0x00, 0x8F, 0x00,
+ 0xAD, 0xFE, 0x21, 0x00, 0xC8, 0x00, 0xAD, 0xFE,
+ 0x24, 0x00, 0x02, 0x01, 0x3C, 0xFE, 0x26, 0x00,
+ 0x3B, 0x01, 0xDD, 0xFD, 0x28, 0x00, 0x75, 0x01,
+ 0x69, 0xFD, 0x2A, 0x00, 0xAE, 0x01, 0xDE, 0xFC,
+ 0x21, 0x00, 0xE4, 0xFF, 0xAD, 0xFE, 0x21, 0x00,
+ 0xAB, 0xFF, 0xAD, 0xFE, 0x21, 0x00, 0x71, 0xFF,
+ 0xAD, 0xFE, 0x21, 0x00, 0x38, 0xFF, 0xAD, 0xFE,
+ 0x24, 0x00, 0xFE, 0xFE, 0x3C, 0xFE, 0x26, 0x00,
+ 0xC5, 0xFE, 0xDD, 0xFD, 0x28, 0x00, 0x8B, 0xFE,
+ 0x69, 0xFD, 0x2A, 0x00, 0x52, 0xFE, 0xDE, 0xFC,
+ 0x23, 0x00, 0x1C, 0x00, 0x79, 0xFE, 0x23, 0x00,
+ 0x55, 0x00, 0x79, 0xFE, 0x23, 0x00, 0x8F, 0x00,
+ 0x79, 0xFE, 0x23, 0x00, 0xC8, 0x00, 0x79, 0xFE,
+ 0x26, 0x00, 0x02, 0x01, 0xF7, 0xFD, 0x28, 0x00,
+ 0x3B, 0x01, 0x89, 0xFD, 0x2A, 0x00, 0x75, 0x01,
+ 0x03, 0xFD, 0x2C, 0x00, 0xAE, 0x01, 0x63, 0xFC,
+ 0x23, 0x00, 0xE4, 0xFF, 0x79, 0xFE, 0x23, 0x00,
+ 0xAB, 0xFF, 0x79, 0xFE, 0x23, 0x00, 0x71, 0xFF,
+ 0x79, 0xFE, 0x23, 0x00, 0x38, 0xFF, 0x79, 0xFE,
+ 0x26, 0x00, 0xFE, 0xFE, 0xF7, 0xFD, 0x28, 0x00,
+ 0xC5, 0xFE, 0x89, 0xFD, 0x2A, 0x00, 0x8B, 0xFE,
+ 0x03, 0xFD, 0x2C, 0x00, 0x52, 0xFE, 0x63, 0xFC,
+ 0x1B, 0x00, 0x1F, 0x00, 0x1C, 0x00, 0x1B, 0x00,
+ 0x5E, 0x00, 0x1C, 0x00, 0x1B, 0x00, 0x9D, 0x00,
+ 0x1C, 0x00, 0x1B, 0x00, 0xDC, 0x00, 0x1C, 0x00,
+ 0x1E, 0x00, 0x1C, 0x01, 0x26, 0x00, 0x20, 0x00,
+ 0x5B, 0x01, 0x2E, 0x00, 0x22, 0x00, 0x9A, 0x01,
+ 0x38, 0x00, 0x24, 0x00, 0xD9, 0x01, 0x44, 0x00,
+ 0x1B, 0x00, 0xE1, 0xFF, 0x1C, 0x00, 0x1B, 0x00,
+ 0xA2, 0xFF, 0x1C, 0x00, 0x1B, 0x00, 0x63, 0xFF,
+ 0x1C, 0x00, 0x1B, 0x00, 0x24, 0xFF, 0x1C, 0x00,
+ 0x1E, 0x00, 0xE4, 0xFE, 0x26, 0x00, 0x20, 0x00,
+ 0xA5, 0xFE, 0x2E, 0x00, 0x22, 0x00, 0x66, 0xFE,
+ 0x38, 0x00, 0x24, 0x00, 0x27, 0xFE, 0x44, 0x00,
+ 0x1B, 0x00, 0x1F, 0x00, 0x55, 0x00, 0x1B, 0x00,
+ 0x5E, 0x00, 0x55, 0x00, 0x1B, 0x00, 0x9D, 0x00,
+ 0x55, 0x00, 0x1B, 0x00, 0xDC, 0x00, 0x55, 0x00,
+ 0x1E, 0x00, 0x1C, 0x01, 0x72, 0x00, 0x20, 0x00,
+ 0x5B, 0x01, 0x8A, 0x00, 0x22, 0x00, 0x9A, 0x01,
+ 0xA8, 0x00, 0x24, 0x00, 0xD9, 0x01, 0xCC, 0x00,
+ 0x1B, 0x00, 0xE1, 0xFF, 0x55, 0x00, 0x1B, 0x00,
+ 0xA2, 0xFF, 0x55, 0x00, 0x1B, 0x00, 0x63, 0xFF,
+ 0x55, 0x00, 0x1B, 0x00, 0x24, 0xFF, 0x55, 0x00,
+ 0x1E, 0x00, 0xE4, 0xFE, 0x72, 0x00, 0x20, 0x00,
+ 0xA5, 0xFE, 0x8A, 0x00, 0x22, 0x00, 0x66, 0xFE,
+ 0xA8, 0x00, 0x24, 0x00, 0x27, 0xFE, 0xCC, 0x00,
+ 0x1B, 0x00, 0x1F, 0x00, 0x8F, 0x00, 0x1B, 0x00,
+ 0x5E, 0x00, 0x8F, 0x00, 0x1B, 0x00, 0x9D, 0x00,
+ 0x8F, 0x00, 0x1B, 0x00, 0xDC, 0x00, 0x8F, 0x00,
+ 0x1E, 0x00, 0x1C, 0x01, 0xBF, 0x00, 0x20, 0x00,
+ 0x5B, 0x01, 0xE7, 0x00, 0x22, 0x00, 0x9A, 0x01,
+ 0x18, 0x01, 0x24, 0x00, 0xD9, 0x01, 0x54, 0x01,
+ 0x1B, 0x00, 0xE1, 0xFF, 0x8F, 0x00, 0x1B, 0x00,
+ 0xA2, 0xFF, 0x8F, 0x00, 0x1B, 0x00, 0x63, 0xFF,
+ 0x8F, 0x00, 0x1B, 0x00, 0x24, 0xFF, 0x8F, 0x00,
+ 0x1E, 0x00, 0xE4, 0xFE, 0xBF, 0x00, 0x20, 0x00,
+ 0xA5, 0xFE, 0xE7, 0x00, 0x22, 0x00, 0x66, 0xFE,
+ 0x18, 0x01, 0x24, 0x00, 0x27, 0xFE, 0x54, 0x01,
+ 0x1B, 0x00, 0x1F, 0x00, 0xC8, 0x00, 0x1B, 0x00,
+ 0x5E, 0x00, 0xC8, 0x00, 0x1B, 0x00, 0x9D, 0x00,
+ 0xC8, 0x00, 0x1B, 0x00, 0xDC, 0x00, 0xC8, 0x00,
+ 0x1E, 0x00, 0x1C, 0x01, 0x0B, 0x01, 0x20, 0x00,
+ 0x5B, 0x01, 0x43, 0x01, 0x22, 0x00, 0x9A, 0x01,
+ 0x88, 0x01, 0x24, 0x00, 0xD9, 0x01, 0xDC, 0x01,
+ 0x1B, 0x00, 0xE1, 0xFF, 0xC8, 0x00, 0x1B, 0x00,
+ 0xA2, 0xFF, 0xC8, 0x00, 0x1B, 0x00, 0x63, 0xFF,
+ 0xC8, 0x00, 0x1B, 0x00, 0x24, 0xFF, 0xC8, 0x00,
+ 0x1E, 0x00, 0xE4, 0xFE, 0x0B, 0x01, 0x20, 0x00,
+ 0xA5, 0xFE, 0x43, 0x01, 0x22, 0x00, 0x66, 0xFE,
+ 0x88, 0x01, 0x24, 0x00, 0x27, 0xFE, 0xDC, 0x01,
+ 0x1E, 0x00, 0x1F, 0x00, 0x02, 0x01, 0x1E, 0x00,
+ 0x5E, 0x00, 0x02, 0x01, 0x1E, 0x00, 0x9D, 0x00,
+ 0x02, 0x01, 0x1E, 0x00, 0xDC, 0x00, 0x02, 0x01,
+ 0x21, 0x00, 0x1C, 0x01, 0x59, 0x01, 0x23, 0x00,
+ 0x5B, 0x01, 0xA1, 0x01, 0x25, 0x00, 0x9A, 0x01,
+ 0xF9, 0x01, 0x27, 0x00, 0xD9, 0x01, 0x64, 0x02,
+ 0x1E, 0x00, 0xE1, 0xFF, 0x02, 0x01, 0x1E, 0x00,
+ 0xA2, 0xFF, 0x02, 0x01, 0x1E, 0x00, 0x63, 0xFF,
+ 0x02, 0x01, 0x1E, 0x00, 0x24, 0xFF, 0x02, 0x01,
+ 0x21, 0x00, 0xE4, 0xFE, 0x59, 0x01, 0x23, 0x00,
+ 0xA5, 0xFE, 0xA1, 0x01, 0x25, 0x00, 0x66, 0xFE,
+ 0xF9, 0x01, 0x27, 0x00, 0x27, 0xFE, 0x64, 0x02,
+ 0x20, 0x00, 0x1F, 0x00, 0x3B, 0x01, 0x20, 0x00,
+ 0x5E, 0x00, 0x3B, 0x01, 0x20, 0x00, 0x9D, 0x00,
+ 0x3B, 0x01, 0x20, 0x00, 0xDC, 0x00, 0x3B, 0x01,
+ 0x23, 0x00, 0x1C, 0x01, 0xA5, 0x01, 0x25, 0x00,
+ 0x5B, 0x01, 0xFD, 0x01, 0x27, 0x00, 0x9A, 0x01,
+ 0x69, 0x02, 0x29, 0x00, 0xD9, 0x01, 0xEC, 0x02,
+ 0x20, 0x00, 0xE1, 0xFF, 0x3B, 0x01, 0x20, 0x00,
+ 0xA2, 0xFF, 0x3B, 0x01, 0x20, 0x00, 0x63, 0xFF,
+ 0x3B, 0x01, 0x20, 0x00, 0x24, 0xFF, 0x3B, 0x01,
+ 0x23, 0x00, 0xE4, 0xFE, 0xA5, 0x01, 0x25, 0x00,
+ 0xA5, 0xFE, 0xFD, 0x01, 0x27, 0x00, 0x66, 0xFE,
+ 0x69, 0x02, 0x29, 0x00, 0x27, 0xFE, 0xEC, 0x02,
+ 0x22, 0x00, 0x1F, 0x00, 0x75, 0x01, 0x22, 0x00,
+ 0x5E, 0x00, 0x75, 0x01, 0x22, 0x00, 0x9D, 0x00,
+ 0x75, 0x01, 0x22, 0x00, 0xDC, 0x00, 0x75, 0x01,
+ 0x25, 0x00, 0x1C, 0x01, 0xF2, 0x01, 0x27, 0x00,
+ 0x5B, 0x01, 0x5A, 0x02, 0x29, 0x00, 0x9A, 0x01,
+ 0xD9, 0x02, 0x2B, 0x00, 0xD9, 0x01, 0x74, 0x03,
+ 0x22, 0x00, 0xE1, 0xFF, 0x75, 0x01, 0x22, 0x00,
+ 0xA2, 0xFF, 0x75, 0x01, 0x22, 0x00, 0x63, 0xFF,
+ 0x75, 0x01, 0x22, 0x00, 0x24, 0xFF, 0x75, 0x01,
+ 0x25, 0x00, 0xE4, 0xFE, 0xF2, 0x01, 0x27, 0x00,
+ 0xA5, 0xFE, 0x5A, 0x02, 0x29, 0x00, 0x66, 0xFE,
+ 0xD9, 0x02, 0x2B, 0x00, 0x27, 0xFE, 0x74, 0x03,
+ 0x24, 0x00, 0x1F, 0x00, 0xAE, 0x01, 0x24, 0x00,
+ 0x5E, 0x00, 0xAE, 0x01, 0x24, 0x00, 0x9D, 0x00,
+ 0xAE, 0x01, 0x24, 0x00, 0xDC, 0x00, 0xAE, 0x01,
+ 0x27, 0x00, 0x1C, 0x01, 0x3E, 0x02, 0x29, 0x00,
+ 0x5B, 0x01, 0xB6, 0x02, 0x2B, 0x00, 0x9A, 0x01,
+ 0x49, 0x03, 0x2D, 0x00, 0xD9, 0x01, 0xFC, 0x03,
+ 0x24, 0x00, 0xE1, 0xFF, 0xAE, 0x01, 0x24, 0x00,
+ 0xA2, 0xFF, 0xAE, 0x01, 0x24, 0x00, 0x63, 0xFF,
+ 0xAE, 0x01, 0x24, 0x00, 0x24, 0xFF, 0xAE, 0x01,
+ 0x27, 0x00, 0xE4, 0xFE, 0x3E, 0x02, 0x29, 0x00,
+ 0xA5, 0xFE, 0xB6, 0x02, 0x2B, 0x00, 0x66, 0xFE,
+ 0x49, 0x03, 0x2D, 0x00, 0x27, 0xFE, 0xFC, 0x03,
+ 0x1B, 0x00, 0x1F, 0x00, 0xE4, 0xFF, 0x1B, 0x00,
+ 0x5E, 0x00, 0xE4, 0xFF, 0x1B, 0x00, 0x9D, 0x00,
+ 0xE4, 0xFF, 0x1B, 0x00, 0xDC, 0x00, 0xE4, 0xFF,
+ 0x1E, 0x00, 0x1C, 0x01, 0xDA, 0xFF, 0x20, 0x00,
+ 0x5B, 0x01, 0xD2, 0xFF, 0x22, 0x00, 0x9A, 0x01,
+ 0xC8, 0xFF, 0x24, 0x00, 0xD9, 0x01, 0xBC, 0xFF,
+ 0x1B, 0x00, 0xE1, 0xFF, 0xE4, 0xFF, 0x1B, 0x00,
+ 0xA2, 0xFF, 0xE4, 0xFF, 0x1B, 0x00, 0x63, 0xFF,
+ 0xE4, 0xFF, 0x1B, 0x00, 0x24, 0xFF, 0xE4, 0xFF,
+ 0x1E, 0x00, 0xE4, 0xFE, 0xDA, 0xFF, 0x20, 0x00,
+ 0xA5, 0xFE, 0xD2, 0xFF, 0x22, 0x00, 0x66, 0xFE,
+ 0xC8, 0xFF, 0x24, 0x00, 0x27, 0xFE, 0xBC, 0xFF,
+ 0x1B, 0x00, 0x1F, 0x00, 0xAB, 0xFF, 0x1B, 0x00,
+ 0x5E, 0x00, 0xAB, 0xFF, 0x1B, 0x00, 0x9D, 0x00,
+ 0xAB, 0xFF, 0x1B, 0x00, 0xDC, 0x00, 0xAB, 0xFF,
+ 0x1E, 0x00, 0x1C, 0x01, 0x8E, 0xFF, 0x20, 0x00,
+ 0x5B, 0x01, 0x76, 0xFF, 0x22, 0x00, 0x9A, 0x01,
+ 0x58, 0xFF, 0x24, 0x00, 0xD9, 0x01, 0x34, 0xFF,
+ 0x1B, 0x00, 0xE1, 0xFF, 0xAB, 0xFF, 0x1B, 0x00,
+ 0xA2, 0xFF, 0xAB, 0xFF, 0x1B, 0x00, 0x63, 0xFF,
+ 0xAB, 0xFF, 0x1B, 0x00, 0x24, 0xFF, 0xAB, 0xFF,
+ 0x1E, 0x00, 0xE4, 0xFE, 0x8E, 0xFF, 0x20, 0x00,
+ 0xA5, 0xFE, 0x76, 0xFF, 0x22, 0x00, 0x66, 0xFE,
+ 0x58, 0xFF, 0x24, 0x00, 0x27, 0xFE, 0x34, 0xFF,
+ 0x1B, 0x00, 0x1F, 0x00, 0x71, 0xFF, 0x1B, 0x00,
+ 0x5E, 0x00, 0x71, 0xFF, 0x1B, 0x00, 0x9D, 0x00,
+ 0x71, 0xFF, 0x1B, 0x00, 0xDC, 0x00, 0x71, 0xFF,
+ 0x1E, 0x00, 0x1C, 0x01, 0x41, 0xFF, 0x20, 0x00,
+ 0x5B, 0x01, 0x19, 0xFF, 0x22, 0x00, 0x9A, 0x01,
+ 0xE8, 0xFE, 0x24, 0x00, 0xD9, 0x01, 0xAC, 0xFE,
+ 0x1B, 0x00, 0xE1, 0xFF, 0x71, 0xFF, 0x1B, 0x00,
+ 0xA2, 0xFF, 0x71, 0xFF, 0x1B, 0x00, 0x63, 0xFF,
+ 0x71, 0xFF, 0x1B, 0x00, 0x24, 0xFF, 0x71, 0xFF,
+ 0x1E, 0x00, 0xE4, 0xFE, 0x41, 0xFF, 0x20, 0x00,
+ 0xA5, 0xFE, 0x19, 0xFF, 0x22, 0x00, 0x66, 0xFE,
+ 0xE8, 0xFE, 0x24, 0x00, 0x27, 0xFE, 0xAC, 0xFE,
+ 0x1B, 0x00, 0x1F, 0x00, 0x38, 0xFF, 0x1B, 0x00,
+ 0x5E, 0x00, 0x38, 0xFF, 0x1B, 0x00, 0x9D, 0x00,
+ 0x38, 0xFF, 0x1B, 0x00, 0xDC, 0x00, 0x38, 0xFF,
+ 0x1E, 0x00, 0x1C, 0x01, 0xF5, 0xFE, 0x20, 0x00,
+ 0x5B, 0x01, 0xBD, 0xFE, 0x22, 0x00, 0x9A, 0x01,
+ 0x78, 0xFE, 0x24, 0x00, 0xD9, 0x01, 0x24, 0xFE,
+ 0x1B, 0x00, 0xE1, 0xFF, 0x38, 0xFF, 0x1B, 0x00,
+ 0xA2, 0xFF, 0x38, 0xFF, 0x1B, 0x00, 0x63, 0xFF,
+ 0x38, 0xFF, 0x1B, 0x00, 0x24, 0xFF, 0x38, 0xFF,
+ 0x1E, 0x00, 0xE4, 0xFE, 0xF5, 0xFE, 0x20, 0x00,
+ 0xA5, 0xFE, 0xBD, 0xFE, 0x22, 0x00, 0x66, 0xFE,
+ 0x78, 0xFE, 0x24, 0x00, 0x27, 0xFE, 0x24, 0xFE,
+ 0x1E, 0x00, 0x1F, 0x00, 0xFE, 0xFE, 0x1E, 0x00,
+ 0x5E, 0x00, 0xFE, 0xFE, 0x1E, 0x00, 0x9D, 0x00,
+ 0xFE, 0xFE, 0x1E, 0x00, 0xDC, 0x00, 0xFE, 0xFE,
+ 0x21, 0x00, 0x1C, 0x01, 0xA7, 0xFE, 0x23, 0x00,
+ 0x5B, 0x01, 0x5F, 0xFE, 0x25, 0x00, 0x9A, 0x01,
+ 0x07, 0xFE, 0x27, 0x00, 0xD9, 0x01, 0x9C, 0xFD,
+ 0x1E, 0x00, 0xE1, 0xFF, 0xFE, 0xFE, 0x1E, 0x00,
+ 0xA2, 0xFF, 0xFE, 0xFE, 0x1E, 0x00, 0x63, 0xFF,
+ 0xFE, 0xFE, 0x1E, 0x00, 0x24, 0xFF, 0xFE, 0xFE,
+ 0x21, 0x00, 0xE4, 0xFE, 0xA7, 0xFE, 0x23, 0x00,
+ 0xA5, 0xFE, 0x5F, 0xFE, 0x25, 0x00, 0x66, 0xFE,
+ 0x07, 0xFE, 0x27, 0x00, 0x27, 0xFE, 0x9C, 0xFD,
+ 0x20, 0x00, 0x1F, 0x00, 0xC5, 0xFE, 0x20, 0x00,
+ 0x5E, 0x00, 0xC5, 0xFE, 0x20, 0x00, 0x9D, 0x00,
+ 0xC5, 0xFE, 0x20, 0x00, 0xDC, 0x00, 0xC5, 0xFE,
+ 0x23, 0x00, 0x1C, 0x01, 0x5B, 0xFE, 0x25, 0x00,
+ 0x5B, 0x01, 0x03, 0xFE, 0x27, 0x00, 0x9A, 0x01,
+ 0x97, 0xFD, 0x29, 0x00, 0xD9, 0x01, 0x14, 0xFD,
+ 0x20, 0x00, 0xE1, 0xFF, 0xC5, 0xFE, 0x20, 0x00,
+ 0xA2, 0xFF, 0xC5, 0xFE, 0x20, 0x00, 0x63, 0xFF,
+ 0xC5, 0xFE, 0x20, 0x00, 0x24, 0xFF, 0xC5, 0xFE,
+ 0x23, 0x00, 0xE4, 0xFE, 0x5B, 0xFE, 0x25, 0x00,
+ 0xA5, 0xFE, 0x03, 0xFE, 0x27, 0x00, 0x66, 0xFE,
+ 0x97, 0xFD, 0x29, 0x00, 0x27, 0xFE, 0x14, 0xFD,
+ 0x22, 0x00, 0x1F, 0x00, 0x8B, 0xFE, 0x22, 0x00,
+ 0x5E, 0x00, 0x8B, 0xFE, 0x22, 0x00, 0x9D, 0x00,
+ 0x8B, 0xFE, 0x22, 0x00, 0xDC, 0x00, 0x8B, 0xFE,
+ 0x25, 0x00, 0x1C, 0x01, 0x0E, 0xFE, 0x27, 0x00,
+ 0x5B, 0x01, 0xA6, 0xFD, 0x29, 0x00, 0x9A, 0x01,
+ 0x27, 0xFD, 0x2B, 0x00, 0xD9, 0x01, 0x8C, 0xFC,
+ 0x22, 0x00, 0xE1, 0xFF, 0x8B, 0xFE, 0x22, 0x00,
+ 0xA2, 0xFF, 0x8B, 0xFE, 0x22, 0x00, 0x63, 0xFF,
+ 0x8B, 0xFE, 0x22, 0x00, 0x24, 0xFF, 0x8B, 0xFE,
+ 0x25, 0x00, 0xE4, 0xFE, 0x0E, 0xFE, 0x27, 0x00,
+ 0xA5, 0xFE, 0xA6, 0xFD, 0x29, 0x00, 0x66, 0xFE,
+ 0x27, 0xFD, 0x2B, 0x00, 0x27, 0xFE, 0x8C, 0xFC,
+ 0x24, 0x00, 0x1F, 0x00, 0x52, 0xFE, 0x24, 0x00,
+ 0x5E, 0x00, 0x52, 0xFE, 0x24, 0x00, 0x9D, 0x00,
+ 0x52, 0xFE, 0x24, 0x00, 0xDC, 0x00, 0x52, 0xFE,
+ 0x27, 0x00, 0x1C, 0x01, 0xC2, 0xFD, 0x29, 0x00,
+ 0x5B, 0x01, 0x4A, 0xFD, 0x2B, 0x00, 0x9A, 0x01,
+ 0xB7, 0xFC, 0x2D, 0x00, 0xD9, 0x01, 0x04, 0xFC,
+ 0x24, 0x00, 0xE1, 0xFF, 0x52, 0xFE, 0x24, 0x00,
+ 0xA2, 0xFF, 0x52, 0xFE, 0x24, 0x00, 0x63, 0xFF,
+ 0x52, 0xFE, 0x24, 0x00, 0x24, 0xFF, 0x52, 0xFE,
+ 0x27, 0x00, 0xE4, 0xFE, 0xC2, 0xFD, 0x29, 0x00,
+ 0xA5, 0xFE, 0x4A, 0xFD, 0x2B, 0x00, 0x66, 0xFE,
+ 0xB7, 0xFC, 0x2D, 0x00, 0x27, 0xFE, 0x04, 0xFC,
+ 0x1C, 0x00, 0x22, 0x00, 0x1F, 0x00, 0x1C, 0x00,
+ 0x67, 0x00, 0x1F, 0x00, 0x1C, 0x00, 0xAD, 0x00,
+ 0x1F, 0x00, 0x1C, 0x00, 0xF2, 0x00, 0x1F, 0x00,
+ 0x1F, 0x00, 0x39, 0x01, 0x2A, 0x00, 0x21, 0x00,
+ 0x7E, 0x01, 0x33, 0x00, 0x23, 0x00, 0xC4, 0x01,
+ 0x3D, 0x00, 0x25, 0x00, 0x09, 0x02, 0x4A, 0x00,
+ 0x1C, 0x00, 0xDE, 0xFF, 0x1F, 0x00, 0x1C, 0x00,
+ 0x99, 0xFF, 0x1F, 0x00, 0x1C, 0x00, 0x53, 0xFF,
+ 0x1F, 0x00, 0x1C, 0x00, 0x0E, 0xFF, 0x1F, 0x00,
+ 0x1F, 0x00, 0xC7, 0xFE, 0x2A, 0x00, 0x21, 0x00,
+ 0x82, 0xFE, 0x33, 0x00, 0x23, 0x00, 0x3C, 0xFE,
+ 0x3D, 0x00, 0x25, 0x00, 0xF7, 0xFD, 0x4A, 0x00,
+ 0x1C, 0x00, 0x22, 0x00, 0x5E, 0x00, 0x1C, 0x00,
+ 0x67, 0x00, 0x5E, 0x00, 0x1C, 0x00, 0xAD, 0x00,
+ 0x5E, 0x00, 0x1C, 0x00, 0xF2, 0x00, 0x5E, 0x00,
+ 0x1F, 0x00, 0x39, 0x01, 0x7E, 0x00, 0x21, 0x00,
+ 0x7E, 0x01, 0x99, 0x00, 0x23, 0x00, 0xC4, 0x01,
+ 0xB8, 0x00, 0x25, 0x00, 0x09, 0x02, 0xDF, 0x00,
+ 0x1C, 0x00, 0xDE, 0xFF, 0x5E, 0x00, 0x1C, 0x00,
+ 0x99, 0xFF, 0x5E, 0x00, 0x1C, 0x00, 0x53, 0xFF,
+ 0x5E, 0x00, 0x1C, 0x00, 0x0E, 0xFF, 0x5E, 0x00,
+ 0x1F, 0x00, 0xC7, 0xFE, 0x7E, 0x00, 0x21, 0x00,
+ 0x82, 0xFE, 0x99, 0x00, 0x23, 0x00, 0x3C, 0xFE,
+ 0xB8, 0x00, 0x25, 0x00, 0xF7, 0xFD, 0xDF, 0x00,
+ 0x1C, 0x00, 0x22, 0x00, 0x9D, 0x00, 0x1C, 0x00,
+ 0x67, 0x00, 0x9D, 0x00, 0x1C, 0x00, 0xAD, 0x00,
+ 0x9D, 0x00, 0x1C, 0x00, 0xF2, 0x00, 0x9D, 0x00,
+ 0x1F, 0x00, 0x39, 0x01, 0xD2, 0x00, 0x21, 0x00,
+ 0x7E, 0x01, 0xFF, 0x00, 0x23, 0x00, 0xC4, 0x01,
+ 0x34, 0x01, 0x25, 0x00, 0x09, 0x02, 0x75, 0x01,
+ 0x1C, 0x00, 0xDE, 0xFF, 0x9D, 0x00, 0x1C, 0x00,
+ 0x99, 0xFF, 0x9D, 0x00, 0x1C, 0x00, 0x53, 0xFF,
+ 0x9D, 0x00, 0x1C, 0x00, 0x0E, 0xFF, 0x9D, 0x00,
+ 0x1F, 0x00, 0xC7, 0xFE, 0xD2, 0x00, 0x21, 0x00,
+ 0x82, 0xFE, 0xFF, 0x00, 0x23, 0x00, 0x3C, 0xFE,
+ 0x34, 0x01, 0x25, 0x00, 0xF7, 0xFD, 0x75, 0x01,
+ 0x1C, 0x00, 0x22, 0x00, 0xDC, 0x00, 0x1C, 0x00,
+ 0x67, 0x00, 0xDC, 0x00, 0x1C, 0x00, 0xAD, 0x00,
+ 0xDC, 0x00, 0x1C, 0x00, 0xF2, 0x00, 0xDC, 0x00,
+ 0x1F, 0x00, 0x39, 0x01, 0x26, 0x01, 0x21, 0x00,
+ 0x7E, 0x01, 0x65, 0x01, 0x23, 0x00, 0xC4, 0x01,
+ 0xAF, 0x01, 0x25, 0x00, 0x09, 0x02, 0x0A, 0x02,
+ 0x1C, 0x00, 0xDE, 0xFF, 0xDC, 0x00, 0x1C, 0x00,
+ 0x99, 0xFF, 0xDC, 0x00, 0x1C, 0x00, 0x53, 0xFF,
+ 0xDC, 0x00, 0x1C, 0x00, 0x0E, 0xFF, 0xDC, 0x00,
+ 0x1F, 0x00, 0xC7, 0xFE, 0x26, 0x01, 0x21, 0x00,
+ 0x82, 0xFE, 0x65, 0x01, 0x23, 0x00, 0x3C, 0xFE,
+ 0xAF, 0x01, 0x25, 0x00, 0xF7, 0xFD, 0x0A, 0x02,
+ 0x1F, 0x00, 0x22, 0x00, 0x1C, 0x01, 0x1F, 0x00,
+ 0x67, 0x00, 0x1C, 0x01, 0x1F, 0x00, 0xAD, 0x00,
+ 0x1C, 0x01, 0x1F, 0x00, 0xF2, 0x00, 0x1C, 0x01,
+ 0x22, 0x00, 0x39, 0x01, 0x7B, 0x01, 0x24, 0x00,
+ 0x7E, 0x01, 0xCB, 0x01, 0x26, 0x00, 0xC4, 0x01,
+ 0x2B, 0x02, 0x28, 0x00, 0x09, 0x02, 0xA0, 0x02,
+ 0x1F, 0x00, 0xDE, 0xFF, 0x1C, 0x01, 0x1F, 0x00,
+ 0x99, 0xFF, 0x1C, 0x01, 0x1F, 0x00, 0x53, 0xFF,
+ 0x1C, 0x01, 0x1F, 0x00, 0x0E, 0xFF, 0x1C, 0x01,
+ 0x22, 0x00, 0xC7, 0xFE, 0x7B, 0x01, 0x24, 0x00,
+ 0x82, 0xFE, 0xCB, 0x01, 0x26, 0x00, 0x3C, 0xFE,
+ 0x2B, 0x02, 0x28, 0x00, 0xF7, 0xFD, 0xA0, 0x02,
+ 0x21, 0x00, 0x22, 0x00, 0x5B, 0x01, 0x21, 0x00,
+ 0x67, 0x00, 0x5B, 0x01, 0x21, 0x00, 0xAD, 0x00,
+ 0x5B, 0x01, 0x21, 0x00, 0xF2, 0x00, 0x5B, 0x01,
+ 0x24, 0x00, 0x39, 0x01, 0xCF, 0x01, 0x26, 0x00,
+ 0x7E, 0x01, 0x31, 0x02, 0x28, 0x00, 0xC4, 0x01,
+ 0xA6, 0x02, 0x2A, 0x00, 0x09, 0x02, 0x35, 0x03,
+ 0x21, 0x00, 0xDE, 0xFF, 0x5B, 0x01, 0x21, 0x00,
+ 0x99, 0xFF, 0x5B, 0x01, 0x21, 0x00, 0x53, 0xFF,
+ 0x5B, 0x01, 0x21, 0x00, 0x0E, 0xFF, 0x5B, 0x01,
+ 0x24, 0x00, 0xC7, 0xFE, 0xCF, 0x01, 0x26, 0x00,
+ 0x82, 0xFE, 0x31, 0x02, 0x28, 0x00, 0x3C, 0xFE,
+ 0xA6, 0x02, 0x2A, 0x00, 0xF7, 0xFD, 0x35, 0x03,
+ 0x23, 0x00, 0x22, 0x00, 0x9A, 0x01, 0x23, 0x00,
+ 0x67, 0x00, 0x9A, 0x01, 0x23, 0x00, 0xAD, 0x00,
+ 0x9A, 0x01, 0x23, 0x00, 0xF2, 0x00, 0x9A, 0x01,
+ 0x26, 0x00, 0x39, 0x01, 0x23, 0x02, 0x28, 0x00,
+ 0x7E, 0x01, 0x97, 0x02, 0x2A, 0x00, 0xC4, 0x01,
+ 0x22, 0x03, 0x2C, 0x00, 0x09, 0x02, 0xCB, 0x03,
+ 0x23, 0x00, 0xDE, 0xFF, 0x9A, 0x01, 0x23, 0x00,
+ 0x99, 0xFF, 0x9A, 0x01, 0x23, 0x00, 0x53, 0xFF,
+ 0x9A, 0x01, 0x23, 0x00, 0x0E, 0xFF, 0x9A, 0x01,
+ 0x26, 0x00, 0xC7, 0xFE, 0x23, 0x02, 0x28, 0x00,
+ 0x82, 0xFE, 0x97, 0x02, 0x2A, 0x00, 0x3C, 0xFE,
+ 0x22, 0x03, 0x2C, 0x00, 0xF7, 0xFD, 0xCB, 0x03,
+ 0x25, 0x00, 0x22, 0x00, 0xD9, 0x01, 0x25, 0x00,
+ 0x67, 0x00, 0xD9, 0x01, 0x25, 0x00, 0xAD, 0x00,
+ 0xD9, 0x01, 0x25, 0x00, 0xF2, 0x00, 0xD9, 0x01,
+ 0x28, 0x00, 0x39, 0x01, 0x77, 0x02, 0x2A, 0x00,
+ 0x7E, 0x01, 0xFD, 0x02, 0x2C, 0x00, 0xC4, 0x01,
+ 0x9D, 0x03, 0x2E, 0x00, 0x09, 0x02, 0x60, 0x04,
+ 0x25, 0x00, 0xDE, 0xFF, 0xD9, 0x01, 0x25, 0x00,
+ 0x99, 0xFF, 0xD9, 0x01, 0x25, 0x00, 0x53, 0xFF,
+ 0xD9, 0x01, 0x25, 0x00, 0x0E, 0xFF, 0xD9, 0x01,
+ 0x28, 0x00, 0xC7, 0xFE, 0x77, 0x02, 0x2A, 0x00,
+ 0x82, 0xFE, 0xFD, 0x02, 0x2C, 0x00, 0x3C, 0xFE,
+ 0x9D, 0x03, 0x2E, 0x00, 0xF7, 0xFD, 0x60, 0x04,
+ 0x1C, 0x00, 0x22, 0x00, 0xE1, 0xFF, 0x1C, 0x00,
+ 0x67, 0x00, 0xE1, 0xFF, 0x1C, 0x00, 0xAD, 0x00,
+ 0xE1, 0xFF, 0x1C, 0x00, 0xF2, 0x00, 0xE1, 0xFF,
+ 0x1F, 0x00, 0x39, 0x01, 0xD6, 0xFF, 0x21, 0x00,
+ 0x7E, 0x01, 0xCD, 0xFF, 0x23, 0x00, 0xC4, 0x01,
+ 0xC3, 0xFF, 0x25, 0x00, 0x09, 0x02, 0xB6, 0xFF,
+ 0x1C, 0x00, 0xDE, 0xFF, 0xE1, 0xFF, 0x1C, 0x00,
+ 0x99, 0xFF, 0xE1, 0xFF, 0x1C, 0x00, 0x53, 0xFF,
+ 0xE1, 0xFF, 0x1C, 0x00, 0x0E, 0xFF, 0xE1, 0xFF,
+ 0x1F, 0x00, 0xC7, 0xFE, 0xD6, 0xFF, 0x21, 0x00,
+ 0x82, 0xFE, 0xCD, 0xFF, 0x23, 0x00, 0x3C, 0xFE,
+ 0xC3, 0xFF, 0x25, 0x00, 0xF7, 0xFD, 0xB6, 0xFF,
+ 0x1C, 0x00, 0x22, 0x00, 0xA2, 0xFF, 0x1C, 0x00,
+ 0x67, 0x00, 0xA2, 0xFF, 0x1C, 0x00, 0xAD, 0x00,
+ 0xA2, 0xFF, 0x1C, 0x00, 0xF2, 0x00, 0xA2, 0xFF,
+ 0x1F, 0x00, 0x39, 0x01, 0x82, 0xFF, 0x21, 0x00,
+ 0x7E, 0x01, 0x67, 0xFF, 0x23, 0x00, 0xC4, 0x01,
+ 0x48, 0xFF, 0x25, 0x00, 0x09, 0x02, 0x21, 0xFF,
+ 0x1C, 0x00, 0xDE, 0xFF, 0xA2, 0xFF, 0x1C, 0x00,
+ 0x99, 0xFF, 0xA2, 0xFF, 0x1C, 0x00, 0x53, 0xFF,
+ 0xA2, 0xFF, 0x1C, 0x00, 0x0E, 0xFF, 0xA2, 0xFF,
+ 0x1F, 0x00, 0xC7, 0xFE, 0x82, 0xFF, 0x21, 0x00,
+ 0x82, 0xFE, 0x67, 0xFF, 0x23, 0x00, 0x3C, 0xFE,
+ 0x48, 0xFF, 0x25, 0x00, 0xF7, 0xFD, 0x21, 0xFF,
+ 0x1C, 0x00, 0x22, 0x00, 0x63, 0xFF, 0x1C, 0x00,
+ 0x67, 0x00, 0x63, 0xFF, 0x1C, 0x00, 0xAD, 0x00,
+ 0x63, 0xFF, 0x1C, 0x00, 0xF2, 0x00, 0x63, 0xFF,
+ 0x1F, 0x00, 0x39, 0x01, 0x2E, 0xFF, 0x21, 0x00,
+ 0x7E, 0x01, 0x01, 0xFF, 0x23, 0x00, 0xC4, 0x01,
+ 0xCC, 0xFE, 0x25, 0x00, 0x09, 0x02, 0x8B, 0xFE,
+ 0x1C, 0x00, 0xDE, 0xFF, 0x63, 0xFF, 0x1C, 0x00,
+ 0x99, 0xFF, 0x63, 0xFF, 0x1C, 0x00, 0x53, 0xFF,
+ 0x63, 0xFF, 0x1C, 0x00, 0x0E, 0xFF, 0x63, 0xFF,
+ 0x1F, 0x00, 0xC7, 0xFE, 0x2E, 0xFF, 0x21, 0x00,
+ 0x82, 0xFE, 0x01, 0xFF, 0x23, 0x00, 0x3C, 0xFE,
+ 0xCC, 0xFE, 0x25, 0x00, 0xF7, 0xFD, 0x8B, 0xFE,
+ 0x1C, 0x00, 0x22, 0x00, 0x24, 0xFF, 0x1C, 0x00,
+ 0x67, 0x00, 0x24, 0xFF, 0x1C, 0x00, 0xAD, 0x00,
+ 0x24, 0xFF, 0x1C, 0x00, 0xF2, 0x00, 0x24, 0xFF,
+ 0x1F, 0x00, 0x39, 0x01, 0xDA, 0xFE, 0x21, 0x00,
+ 0x7E, 0x01, 0x9B, 0xFE, 0x23, 0x00, 0xC4, 0x01,
+ 0x51, 0xFE, 0x25, 0x00, 0x09, 0x02, 0xF6, 0xFD,
+ 0x1C, 0x00, 0xDE, 0xFF, 0x24, 0xFF, 0x1C, 0x00,
+ 0x99, 0xFF, 0x24, 0xFF, 0x1C, 0x00, 0x53, 0xFF,
+ 0x24, 0xFF, 0x1C, 0x00, 0x0E, 0xFF, 0x24, 0xFF,
+ 0x1F, 0x00, 0xC7, 0xFE, 0xDA, 0xFE, 0x21, 0x00,
+ 0x82, 0xFE, 0x9B, 0xFE, 0x23, 0x00, 0x3C, 0xFE,
+ 0x51, 0xFE, 0x25, 0x00, 0xF7, 0xFD, 0xF6, 0xFD,
+ 0x1F, 0x00, 0x22, 0x00, 0xE4, 0xFE, 0x1F, 0x00,
+ 0x67, 0x00, 0xE4, 0xFE, 0x1F, 0x00, 0xAD, 0x00,
+ 0xE4, 0xFE, 0x1F, 0x00, 0xF2, 0x00, 0xE4, 0xFE,
+ 0x22, 0x00, 0x39, 0x01, 0x85, 0xFE, 0x24, 0x00,
+ 0x7E, 0x01, 0x35, 0xFE, 0x26, 0x00, 0xC4, 0x01,
+ 0xD5, 0xFD, 0x28, 0x00, 0x09, 0x02, 0x60, 0xFD,
+ 0x1F, 0x00, 0xDE, 0xFF, 0xE4, 0xFE, 0x1F, 0x00,
+ 0x99, 0xFF, 0xE4, 0xFE, 0x1F, 0x00, 0x53, 0xFF,
+ 0xE4, 0xFE, 0x1F, 0x00, 0x0E, 0xFF, 0xE4, 0xFE,
+ 0x22, 0x00, 0xC7, 0xFE, 0x85, 0xFE, 0x24, 0x00,
+ 0x82, 0xFE, 0x35, 0xFE, 0x26, 0x00, 0x3C, 0xFE,
+ 0xD5, 0xFD, 0x28, 0x00, 0xF7, 0xFD, 0x60, 0xFD,
+ 0x21, 0x00, 0x22, 0x00, 0xA5, 0xFE, 0x21, 0x00,
+ 0x67, 0x00, 0xA5, 0xFE, 0x21, 0x00, 0xAD, 0x00,
+ 0xA5, 0xFE, 0x21, 0x00, 0xF2, 0x00, 0xA5, 0xFE,
+ 0x24, 0x00, 0x39, 0x01, 0x31, 0xFE, 0x26, 0x00,
+ 0x7E, 0x01, 0xCF, 0xFD, 0x28, 0x00, 0xC4, 0x01,
+ 0x5A, 0xFD, 0x2A, 0x00, 0x09, 0x02, 0xCB, 0xFC,
+ 0x21, 0x00, 0xDE, 0xFF, 0xA5, 0xFE, 0x21, 0x00,
+ 0x99, 0xFF, 0xA5, 0xFE, 0x21, 0x00, 0x53, 0xFF,
+ 0xA5, 0xFE, 0x21, 0x00, 0x0E, 0xFF, 0xA5, 0xFE,
+ 0x24, 0x00, 0xC7, 0xFE, 0x31, 0xFE, 0x26, 0x00,
+ 0x82, 0xFE, 0xCF, 0xFD, 0x28, 0x00, 0x3C, 0xFE,
+ 0x5A, 0xFD, 0x2A, 0x00, 0xF7, 0xFD, 0xCB, 0xFC,
+ 0x23, 0x00, 0x22, 0x00, 0x66, 0xFE, 0x23, 0x00,
+ 0x67, 0x00, 0x66, 0xFE, 0x23, 0x00, 0xAD, 0x00,
+ 0x66, 0xFE, 0x23, 0x00, 0xF2, 0x00, 0x66, 0xFE,
+ 0x26, 0x00, 0x39, 0x01, 0xDD, 0xFD, 0x28, 0x00,
+ 0x7E, 0x01, 0x69, 0xFD, 0x2A, 0x00, 0xC4, 0x01,
+ 0xDE, 0xFC, 0x2C, 0x00, 0x09, 0x02, 0x35, 0xFC,
+ 0x23, 0x00, 0xDE, 0xFF, 0x66, 0xFE, 0x23, 0x00,
+ 0x99, 0xFF, 0x66, 0xFE, 0x23, 0x00, 0x53, 0xFF,
+ 0x66, 0xFE, 0x23, 0x00, 0x0E, 0xFF, 0x66, 0xFE,
+ 0x26, 0x00, 0xC7, 0xFE, 0xDD, 0xFD, 0x28, 0x00,
+ 0x82, 0xFE, 0x69, 0xFD, 0x2A, 0x00, 0x3C, 0xFE,
+ 0xDE, 0xFC, 0x2C, 0x00, 0xF7, 0xFD, 0x35, 0xFC,
+ 0x25, 0x00, 0x22, 0x00, 0x27, 0xFE, 0x25, 0x00,
+ 0x67, 0x00, 0x27, 0xFE, 0x25, 0x00, 0xAD, 0x00,
+ 0x27, 0xFE, 0x25, 0x00, 0xF2, 0x00, 0x27, 0xFE,
+ 0x28, 0x00, 0x39, 0x01, 0x89, 0xFD, 0x2A, 0x00,
+ 0x7E, 0x01, 0x03, 0xFD, 0x2C, 0x00, 0xC4, 0x01,
+ 0x63, 0xFC, 0x2E, 0x00, 0x09, 0x02, 0xA0, 0xFB,
+ 0x25, 0x00, 0xDE, 0xFF, 0x27, 0xFE, 0x25, 0x00,
+ 0x99, 0xFF, 0x27, 0xFE, 0x25, 0x00, 0x53, 0xFF,
+ 0x27, 0xFE, 0x25, 0x00, 0x0E, 0xFF, 0x27, 0xFE,
+ 0x28, 0x00, 0xC7, 0xFE, 0x89, 0xFD, 0x2A, 0x00,
+ 0x82, 0xFE, 0x03, 0xFD, 0x2C, 0x00, 0x3C, 0xFE,
+ 0x63, 0xFC, 0x2E, 0x00, 0xF7, 0xFD, 0xA0, 0xFB,
+ 0x1D, 0x00, 0x26, 0x00, 0x22, 0x00, 0x1D, 0x00,
+ 0x72, 0x00, 0x22, 0x00, 0x1D, 0x00, 0xBF, 0x00,
+ 0x22, 0x00, 0x1D, 0x00, 0x0B, 0x01, 0x22, 0x00,
+ 0x20, 0x00, 0x59, 0x01, 0x2E, 0x00, 0x22, 0x00,
+ 0xA5, 0x01, 0x38, 0x00, 0x24, 0x00, 0xF2, 0x01,
+ 0x44, 0x00, 0x26, 0x00, 0x3E, 0x02, 0x52, 0x00,
+ 0x1D, 0x00, 0xDA, 0xFF, 0x22, 0x00, 0x1D, 0x00,
+ 0x8E, 0xFF, 0x22, 0x00, 0x1D, 0x00, 0x41, 0xFF,
+ 0x22, 0x00, 0x1D, 0x00, 0xF5, 0xFE, 0x22, 0x00,
+ 0x20, 0x00, 0xA7, 0xFE, 0x2E, 0x00, 0x22, 0x00,
+ 0x5B, 0xFE, 0x38, 0x00, 0x24, 0x00, 0x0E, 0xFE,
+ 0x44, 0x00, 0x26, 0x00, 0xC2, 0xFD, 0x52, 0x00,
+ 0x1D, 0x00, 0x26, 0x00, 0x67, 0x00, 0x1D, 0x00,
+ 0x72, 0x00, 0x67, 0x00, 0x1D, 0x00, 0xBF, 0x00,
+ 0x67, 0x00, 0x1D, 0x00, 0x0B, 0x01, 0x67, 0x00,
+ 0x20, 0x00, 0x59, 0x01, 0x8A, 0x00, 0x22, 0x00,
+ 0xA5, 0x01, 0xA8, 0x00, 0x24, 0x00, 0xF2, 0x01,
+ 0xCC, 0x00, 0x26, 0x00, 0x3E, 0x02, 0xF6, 0x00,
+ 0x1D, 0x00, 0xDA, 0xFF, 0x67, 0x00, 0x1D, 0x00,
+ 0x8E, 0xFF, 0x67, 0x00, 0x1D, 0x00, 0x41, 0xFF,
+ 0x67, 0x00, 0x1D, 0x00, 0xF5, 0xFE, 0x67, 0x00,
+ 0x20, 0x00, 0xA7, 0xFE, 0x8A, 0x00, 0x22, 0x00,
+ 0x5B, 0xFE, 0xA8, 0x00, 0x24, 0x00, 0x0E, 0xFE,
+ 0xCC, 0x00, 0x26, 0x00, 0xC2, 0xFD, 0xF6, 0x00,
+ 0x1D, 0x00, 0x26, 0x00, 0xAD, 0x00, 0x1D, 0x00,
+ 0x72, 0x00, 0xAD, 0x00, 0x1D, 0x00, 0xBF, 0x00,
+ 0xAD, 0x00, 0x1D, 0x00, 0x0B, 0x01, 0xAD, 0x00,
+ 0x20, 0x00, 0x59, 0x01, 0xE7, 0x00, 0x22, 0x00,
+ 0xA5, 0x01, 0x18, 0x01, 0x24, 0x00, 0xF2, 0x01,
+ 0x54, 0x01, 0x26, 0x00, 0x3E, 0x02, 0x9B, 0x01,
+ 0x1D, 0x00, 0xDA, 0xFF, 0xAD, 0x00, 0x1D, 0x00,
+ 0x8E, 0xFF, 0xAD, 0x00, 0x1D, 0x00, 0x41, 0xFF,
+ 0xAD, 0x00, 0x1D, 0x00, 0xF5, 0xFE, 0xAD, 0x00,
+ 0x20, 0x00, 0xA7, 0xFE, 0xE7, 0x00, 0x22, 0x00,
+ 0x5B, 0xFE, 0x18, 0x01, 0x24, 0x00, 0x0E, 0xFE,
+ 0x54, 0x01, 0x26, 0x00, 0xC2, 0xFD, 0x9B, 0x01,
+ 0x1D, 0x00, 0x26, 0x00, 0xF2, 0x00, 0x1D, 0x00,
+ 0x72, 0x00, 0xF2, 0x00, 0x1D, 0x00, 0xBF, 0x00,
+ 0xF2, 0x00, 0x1D, 0x00, 0x0B, 0x01, 0xF2, 0x00,
+ 0x20, 0x00, 0x59, 0x01, 0x43, 0x01, 0x22, 0x00,
+ 0xA5, 0x01, 0x88, 0x01, 0x24, 0x00, 0xF2, 0x01,
+ 0xDC, 0x01, 0x26, 0x00, 0x3E, 0x02, 0x3F, 0x02,
+ 0x1D, 0x00, 0xDA, 0xFF, 0xF2, 0x00, 0x1D, 0x00,
+ 0x8E, 0xFF, 0xF2, 0x00, 0x1D, 0x00, 0x41, 0xFF,
+ 0xF2, 0x00, 0x1D, 0x00, 0xF5, 0xFE, 0xF2, 0x00,
+ 0x20, 0x00, 0xA7, 0xFE, 0x43, 0x01, 0x22, 0x00,
+ 0x5B, 0xFE, 0x88, 0x01, 0x24, 0x00, 0x0E, 0xFE,
+ 0xDC, 0x01, 0x26, 0x00, 0xC2, 0xFD, 0x3F, 0x02,
+ 0x20, 0x00, 0x26, 0x00, 0x39, 0x01, 0x20, 0x00,
+ 0x72, 0x00, 0x39, 0x01, 0x20, 0x00, 0xBF, 0x00,
+ 0x39, 0x01, 0x20, 0x00, 0x0B, 0x01, 0x39, 0x01,
+ 0x23, 0x00, 0x59, 0x01, 0xA1, 0x01, 0x25, 0x00,
+ 0xA5, 0x01, 0xF9, 0x01, 0x27, 0x00, 0xF2, 0x01,
+ 0x64, 0x02, 0x29, 0x00, 0x3E, 0x02, 0xE4, 0x02,
+ 0x20, 0x00, 0xDA, 0xFF, 0x39, 0x01, 0x20, 0x00,
+ 0x8E, 0xFF, 0x39, 0x01, 0x20, 0x00, 0x41, 0xFF,
+ 0x39, 0x01, 0x20, 0x00, 0xF5, 0xFE, 0x39, 0x01,
+ 0x23, 0x00, 0xA7, 0xFE, 0xA1, 0x01, 0x25, 0x00,
+ 0x5B, 0xFE, 0xF9, 0x01, 0x27, 0x00, 0x0E, 0xFE,
+ 0x64, 0x02, 0x29, 0x00, 0xC2, 0xFD, 0xE4, 0x02,
+ 0x22, 0x00, 0x26, 0x00, 0x7E, 0x01, 0x22, 0x00,
+ 0x72, 0x00, 0x7E, 0x01, 0x22, 0x00, 0xBF, 0x00,
+ 0x7E, 0x01, 0x22, 0x00, 0x0B, 0x01, 0x7E, 0x01,
+ 0x25, 0x00, 0x59, 0x01, 0xFD, 0x01, 0x27, 0x00,
+ 0xA5, 0x01, 0x69, 0x02, 0x29, 0x00, 0xF2, 0x01,
+ 0xEC, 0x02, 0x2B, 0x00, 0x3E, 0x02, 0x88, 0x03,
+ 0x22, 0x00, 0xDA, 0xFF, 0x7E, 0x01, 0x22, 0x00,
+ 0x8E, 0xFF, 0x7E, 0x01, 0x22, 0x00, 0x41, 0xFF,
+ 0x7E, 0x01, 0x22, 0x00, 0xF5, 0xFE, 0x7E, 0x01,
+ 0x25, 0x00, 0xA7, 0xFE, 0xFD, 0x01, 0x27, 0x00,
+ 0x5B, 0xFE, 0x69, 0x02, 0x29, 0x00, 0x0E, 0xFE,
+ 0xEC, 0x02, 0x2B, 0x00, 0xC2, 0xFD, 0x88, 0x03,
+ 0x24, 0x00, 0x26, 0x00, 0xC4, 0x01, 0x24, 0x00,
+ 0x72, 0x00, 0xC4, 0x01, 0x24, 0x00, 0xBF, 0x00,
+ 0xC4, 0x01, 0x24, 0x00, 0x0B, 0x01, 0xC4, 0x01,
+ 0x27, 0x00, 0x59, 0x01, 0x5A, 0x02, 0x29, 0x00,
+ 0xA5, 0x01, 0xD9, 0x02, 0x2B, 0x00, 0xF2, 0x01,
+ 0x74, 0x03, 0x2D, 0x00, 0x3E, 0x02, 0x2D, 0x04,
+ 0x24, 0x00, 0xDA, 0xFF, 0xC4, 0x01, 0x24, 0x00,
+ 0x8E, 0xFF, 0xC4, 0x01, 0x24, 0x00, 0x41, 0xFF,
+ 0xC4, 0x01, 0x24, 0x00, 0xF5, 0xFE, 0xC4, 0x01,
+ 0x27, 0x00, 0xA7, 0xFE, 0x5A, 0x02, 0x29, 0x00,
+ 0x5B, 0xFE, 0xD9, 0x02, 0x2B, 0x00, 0x0E, 0xFE,
+ 0x74, 0x03, 0x2D, 0x00, 0xC2, 0xFD, 0x2D, 0x04,
+ 0x26, 0x00, 0x26, 0x00, 0x09, 0x02, 0x26, 0x00,
+ 0x72, 0x00, 0x09, 0x02, 0x26, 0x00, 0xBF, 0x00,
+ 0x09, 0x02, 0x26, 0x00, 0x0B, 0x01, 0x09, 0x02,
+ 0x29, 0x00, 0x59, 0x01, 0xB6, 0x02, 0x2B, 0x00,
+ 0xA5, 0x01, 0x49, 0x03, 0x2D, 0x00, 0xF2, 0x01,
+ 0xFC, 0x03, 0x2F, 0x00, 0x3E, 0x02, 0xD1, 0x04,
+ 0x26, 0x00, 0xDA, 0xFF, 0x09, 0x02, 0x26, 0x00,
+ 0x8E, 0xFF, 0x09, 0x02, 0x26, 0x00, 0x41, 0xFF,
+ 0x09, 0x02, 0x26, 0x00, 0xF5, 0xFE, 0x09, 0x02,
+ 0x29, 0x00, 0xA7, 0xFE, 0xB6, 0x02, 0x2B, 0x00,
+ 0x5B, 0xFE, 0x49, 0x03, 0x2D, 0x00, 0x0E, 0xFE,
+ 0xFC, 0x03, 0x2F, 0x00, 0xC2, 0xFD, 0xD1, 0x04,
+ 0x1D, 0x00, 0x26, 0x00, 0xDE, 0xFF, 0x1D, 0x00,
+ 0x72, 0x00, 0xDE, 0xFF, 0x1D, 0x00, 0xBF, 0x00,
+ 0xDE, 0xFF, 0x1D, 0x00, 0x0B, 0x01, 0xDE, 0xFF,
+ 0x20, 0x00, 0x59, 0x01, 0xD2, 0xFF, 0x22, 0x00,
+ 0xA5, 0x01, 0xC8, 0xFF, 0x24, 0x00, 0xF2, 0x01,
+ 0xBC, 0xFF, 0x26, 0x00, 0x3E, 0x02, 0xAE, 0xFF,
+ 0x1D, 0x00, 0xDA, 0xFF, 0xDE, 0xFF, 0x1D, 0x00,
+ 0x8E, 0xFF, 0xDE, 0xFF, 0x1D, 0x00, 0x41, 0xFF,
+ 0xDE, 0xFF, 0x1D, 0x00, 0xF5, 0xFE, 0xDE, 0xFF,
+ 0x20, 0x00, 0xA7, 0xFE, 0xD2, 0xFF, 0x22, 0x00,
+ 0x5B, 0xFE, 0xC8, 0xFF, 0x24, 0x00, 0x0E, 0xFE,
+ 0xBC, 0xFF, 0x26, 0x00, 0xC2, 0xFD, 0xAE, 0xFF,
+ 0x1D, 0x00, 0x26, 0x00, 0x99, 0xFF, 0x1D, 0x00,
+ 0x72, 0x00, 0x99, 0xFF, 0x1D, 0x00, 0xBF, 0x00,
+ 0x99, 0xFF, 0x1D, 0x00, 0x0B, 0x01, 0x99, 0xFF,
+ 0x20, 0x00, 0x59, 0x01, 0x76, 0xFF, 0x22, 0x00,
+ 0xA5, 0x01, 0x58, 0xFF, 0x24, 0x00, 0xF2, 0x01,
+ 0x34, 0xFF, 0x26, 0x00, 0x3E, 0x02, 0x0A, 0xFF,
+ 0x1D, 0x00, 0xDA, 0xFF, 0x99, 0xFF, 0x1D, 0x00,
+ 0x8E, 0xFF, 0x99, 0xFF, 0x1D, 0x00, 0x41, 0xFF,
+ 0x99, 0xFF, 0x1D, 0x00, 0xF5, 0xFE, 0x99, 0xFF,
+ 0x20, 0x00, 0xA7, 0xFE, 0x76, 0xFF, 0x22, 0x00,
+ 0x5B, 0xFE, 0x58, 0xFF, 0x24, 0x00, 0x0E, 0xFE,
+ 0x34, 0xFF, 0x26, 0x00, 0xC2, 0xFD, 0x0A, 0xFF,
+ 0x1D, 0x00, 0x26, 0x00, 0x53, 0xFF, 0x1D, 0x00,
+ 0x72, 0x00, 0x53, 0xFF, 0x1D, 0x00, 0xBF, 0x00,
+ 0x53, 0xFF, 0x1D, 0x00, 0x0B, 0x01, 0x53, 0xFF,
+ 0x20, 0x00, 0x59, 0x01, 0x19, 0xFF, 0x22, 0x00,
+ 0xA5, 0x01, 0xE8, 0xFE, 0x24, 0x00, 0xF2, 0x01,
+ 0xAC, 0xFE, 0x26, 0x00, 0x3E, 0x02, 0x65, 0xFE,
+ 0x1D, 0x00, 0xDA, 0xFF, 0x53, 0xFF, 0x1D, 0x00,
+ 0x8E, 0xFF, 0x53, 0xFF, 0x1D, 0x00, 0x41, 0xFF,
+ 0x53, 0xFF, 0x1D, 0x00, 0xF5, 0xFE, 0x53, 0xFF,
+ 0x20, 0x00, 0xA7, 0xFE, 0x19, 0xFF, 0x22, 0x00,
+ 0x5B, 0xFE, 0xE8, 0xFE, 0x24, 0x00, 0x0E, 0xFE,
+ 0xAC, 0xFE, 0x26, 0x00, 0xC2, 0xFD, 0x65, 0xFE,
+ 0x1D, 0x00, 0x26, 0x00, 0x0E, 0xFF, 0x1D, 0x00,
+ 0x72, 0x00, 0x0E, 0xFF, 0x1D, 0x00, 0xBF, 0x00,
+ 0x0E, 0xFF, 0x1D, 0x00, 0x0B, 0x01, 0x0E, 0xFF,
+ 0x20, 0x00, 0x59, 0x01, 0xBD, 0xFE, 0x22, 0x00,
+ 0xA5, 0x01, 0x78, 0xFE, 0x24, 0x00, 0xF2, 0x01,
+ 0x24, 0xFE, 0x26, 0x00, 0x3E, 0x02, 0xC1, 0xFD,
+ 0x1D, 0x00, 0xDA, 0xFF, 0x0E, 0xFF, 0x1D, 0x00,
+ 0x8E, 0xFF, 0x0E, 0xFF, 0x1D, 0x00, 0x41, 0xFF,
+ 0x0E, 0xFF, 0x1D, 0x00, 0xF5, 0xFE, 0x0E, 0xFF,
+ 0x20, 0x00, 0xA7, 0xFE, 0xBD, 0xFE, 0x22, 0x00,
+ 0x5B, 0xFE, 0x78, 0xFE, 0x24, 0x00, 0x0E, 0xFE,
+ 0x24, 0xFE, 0x26, 0x00, 0xC2, 0xFD, 0xC1, 0xFD,
+ 0x20, 0x00, 0x26, 0x00, 0xC7, 0xFE, 0x20, 0x00,
+ 0x72, 0x00, 0xC7, 0xFE, 0x20, 0x00, 0xBF, 0x00,
+ 0xC7, 0xFE, 0x20, 0x00, 0x0B, 0x01, 0xC7, 0xFE,
+ 0x23, 0x00, 0x59, 0x01, 0x5F, 0xFE, 0x25, 0x00,
+ 0xA5, 0x01, 0x07, 0xFE, 0x27, 0x00, 0xF2, 0x01,
+ 0x9C, 0xFD, 0x29, 0x00, 0x3E, 0x02, 0x1C, 0xFD,
+ 0x20, 0x00, 0xDA, 0xFF, 0xC7, 0xFE, 0x20, 0x00,
+ 0x8E, 0xFF, 0xC7, 0xFE, 0x20, 0x00, 0x41, 0xFF,
+ 0xC7, 0xFE, 0x20, 0x00, 0xF5, 0xFE, 0xC7, 0xFE,
+ 0x23, 0x00, 0xA7, 0xFE, 0x5F, 0xFE, 0x25, 0x00,
+ 0x5B, 0xFE, 0x07, 0xFE, 0x27, 0x00, 0x0E, 0xFE,
+ 0x9C, 0xFD, 0x29, 0x00, 0xC2, 0xFD, 0x1C, 0xFD,
+ 0x22, 0x00, 0x26, 0x00, 0x82, 0xFE, 0x22, 0x00,
+ 0x72, 0x00, 0x82, 0xFE, 0x22, 0x00, 0xBF, 0x00,
+ 0x82, 0xFE, 0x22, 0x00, 0x0B, 0x01, 0x82, 0xFE,
+ 0x25, 0x00, 0x59, 0x01, 0x03, 0xFE, 0x27, 0x00,
+ 0xA5, 0x01, 0x97, 0xFD, 0x29, 0x00, 0xF2, 0x01,
+ 0x14, 0xFD, 0x2B, 0x00, 0x3E, 0x02, 0x78, 0xFC,
+ 0x22, 0x00, 0xDA, 0xFF, 0x82, 0xFE, 0x22, 0x00,
+ 0x8E, 0xFF, 0x82, 0xFE, 0x22, 0x00, 0x41, 0xFF,
+ 0x82, 0xFE, 0x22, 0x00, 0xF5, 0xFE, 0x82, 0xFE,
+ 0x25, 0x00, 0xA7, 0xFE, 0x03, 0xFE, 0x27, 0x00,
+ 0x5B, 0xFE, 0x97, 0xFD, 0x29, 0x00, 0x0E, 0xFE,
+ 0x14, 0xFD, 0x2B, 0x00, 0xC2, 0xFD, 0x78, 0xFC,
+ 0x24, 0x00, 0x26, 0x00, 0x3C, 0xFE, 0x24, 0x00,
+ 0x72, 0x00, 0x3C, 0xFE, 0x24, 0x00, 0xBF, 0x00,
+ 0x3C, 0xFE, 0x24, 0x00, 0x0B, 0x01, 0x3C, 0xFE,
+ 0x27, 0x00, 0x59, 0x01, 0xA6, 0xFD, 0x29, 0x00,
+ 0xA5, 0x01, 0x27, 0xFD, 0x2B, 0x00, 0xF2, 0x01,
+ 0x8C, 0xFC, 0x2D, 0x00, 0x3E, 0x02, 0xD3, 0xFB,
+ 0x24, 0x00, 0xDA, 0xFF, 0x3C, 0xFE, 0x24, 0x00,
+ 0x8E, 0xFF, 0x3C, 0xFE, 0x24, 0x00, 0x41, 0xFF,
+ 0x3C, 0xFE, 0x24, 0x00, 0xF5, 0xFE, 0x3C, 0xFE,
+ 0x27, 0x00, 0xA7, 0xFE, 0xA6, 0xFD, 0x29, 0x00,
+ 0x5B, 0xFE, 0x27, 0xFD, 0x2B, 0x00, 0x0E, 0xFE,
+ 0x8C, 0xFC, 0x2D, 0x00, 0xC2, 0xFD, 0xD3, 0xFB,
+ 0x26, 0x00, 0x26, 0x00, 0xF7, 0xFD, 0x26, 0x00,
+ 0x72, 0x00, 0xF7, 0xFD, 0x26, 0x00, 0xBF, 0x00,
+ 0xF7, 0xFD, 0x26, 0x00, 0x0B, 0x01, 0xF7, 0xFD,
+ 0x29, 0x00, 0x59, 0x01, 0x4A, 0xFD, 0x2B, 0x00,
+ 0xA5, 0x01, 0xB7, 0xFC, 0x2D, 0x00, 0xF2, 0x01,
+ 0x04, 0xFC, 0x2F, 0x00, 0x3E, 0x02, 0x2F, 0xFB,
+ 0x26, 0x00, 0xDA, 0xFF, 0xF7, 0xFD, 0x26, 0x00,
+ 0x8E, 0xFF, 0xF7, 0xFD, 0x26, 0x00, 0x41, 0xFF,
+ 0xF7, 0xFD, 0x26, 0x00, 0xF5, 0xFE, 0xF7, 0xFD,
+ 0x29, 0x00, 0xA7, 0xFE, 0x4A, 0xFD, 0x2B, 0x00,
+ 0x5B, 0xFE, 0xB7, 0xFC, 0x2D, 0x00, 0x0E, 0xFE,
+ 0x04, 0xFC, 0x2F, 0x00, 0xC2, 0xFD, 0x2F, 0xFB,
+ 0x1E, 0x00, 0x2A, 0x00, 0x26, 0x00, 0x1E, 0x00,
+ 0x7E, 0x00, 0x26, 0x00, 0x1E, 0x00, 0xD2, 0x00,
+ 0x26, 0x00, 0x1E, 0x00, 0x26, 0x01, 0x26, 0x00,
+ 0x21, 0x00, 0x7B, 0x01, 0x33, 0x00, 0x23, 0x00,
+ 0xCF, 0x01, 0x3D, 0x00, 0x25, 0x00, 0x23, 0x02,
+ 0x4A, 0x00, 0x27, 0x00, 0x77, 0x02, 0x5A, 0x00,
+ 0x1E, 0x00, 0xD6, 0xFF, 0x26, 0x00, 0x1E, 0x00,
+ 0x82, 0xFF, 0x26, 0x00, 0x1E, 0x00, 0x2E, 0xFF,
+ 0x26, 0x00, 0x1E, 0x00, 0xDA, 0xFE, 0x26, 0x00,
+ 0x21, 0x00, 0x85, 0xFE, 0x33, 0x00, 0x23, 0x00,
+ 0x31, 0xFE, 0x3D, 0x00, 0x25, 0x00, 0xDD, 0xFD,
+ 0x4A, 0x00, 0x27, 0x00, 0x89, 0xFD, 0x5A, 0x00,
+ 0x1E, 0x00, 0x2A, 0x00, 0x72, 0x00, 0x1E, 0x00,
+ 0x7E, 0x00, 0x72, 0x00, 0x1E, 0x00, 0xD2, 0x00,
+ 0x72, 0x00, 0x1E, 0x00, 0x26, 0x01, 0x72, 0x00,
+ 0x21, 0x00, 0x7B, 0x01, 0x99, 0x00, 0x23, 0x00,
+ 0xCF, 0x01, 0xB8, 0x00, 0x25, 0x00, 0x23, 0x02,
+ 0xDF, 0x00, 0x27, 0x00, 0x77, 0x02, 0x0F, 0x01,
+ 0x1E, 0x00, 0xD6, 0xFF, 0x72, 0x00, 0x1E, 0x00,
+ 0x82, 0xFF, 0x72, 0x00, 0x1E, 0x00, 0x2E, 0xFF,
+ 0x72, 0x00, 0x1E, 0x00, 0xDA, 0xFE, 0x72, 0x00,
+ 0x21, 0x00, 0x85, 0xFE, 0x99, 0x00, 0x23, 0x00,
+ 0x31, 0xFE, 0xB8, 0x00, 0x25, 0x00, 0xDD, 0xFD,
+ 0xDF, 0x00, 0x27, 0x00, 0x89, 0xFD, 0x0F, 0x01,
+ 0x1E, 0x00, 0x2A, 0x00, 0xBF, 0x00, 0x1E, 0x00,
+ 0x7E, 0x00, 0xBF, 0x00, 0x1E, 0x00, 0xD2, 0x00,
+ 0xBF, 0x00, 0x1E, 0x00, 0x26, 0x01, 0xBF, 0x00,
+ 0x21, 0x00, 0x7B, 0x01, 0xFF, 0x00, 0x23, 0x00,
+ 0xCF, 0x01, 0x34, 0x01, 0x25, 0x00, 0x23, 0x02,
+ 0x75, 0x01, 0x27, 0x00, 0x77, 0x02, 0xC4, 0x01,
+ 0x1E, 0x00, 0xD6, 0xFF, 0xBF, 0x00, 0x1E, 0x00,
+ 0x82, 0xFF, 0xBF, 0x00, 0x1E, 0x00, 0x2E, 0xFF,
+ 0xBF, 0x00, 0x1E, 0x00, 0xDA, 0xFE, 0xBF, 0x00,
+ 0x21, 0x00, 0x85, 0xFE, 0xFF, 0x00, 0x23, 0x00,
+ 0x31, 0xFE, 0x34, 0x01, 0x25, 0x00, 0xDD, 0xFD,
+ 0x75, 0x01, 0x27, 0x00, 0x89, 0xFD, 0xC4, 0x01,
+ 0x1E, 0x00, 0x2A, 0x00, 0x0B, 0x01, 0x1E, 0x00,
+ 0x7E, 0x00, 0x0B, 0x01, 0x1E, 0x00, 0xD2, 0x00,
+ 0x0B, 0x01, 0x1E, 0x00, 0x26, 0x01, 0x0B, 0x01,
+ 0x21, 0x00, 0x7B, 0x01, 0x65, 0x01, 0x23, 0x00,
+ 0xCF, 0x01, 0xAF, 0x01, 0x25, 0x00, 0x23, 0x02,
+ 0x0A, 0x02, 0x27, 0x00, 0x77, 0x02, 0x79, 0x02,
+ 0x1E, 0x00, 0xD6, 0xFF, 0x0B, 0x01, 0x1E, 0x00,
+ 0x82, 0xFF, 0x0B, 0x01, 0x1E, 0x00, 0x2E, 0xFF,
+ 0x0B, 0x01, 0x1E, 0x00, 0xDA, 0xFE, 0x0B, 0x01,
+ 0x21, 0x00, 0x85, 0xFE, 0x65, 0x01, 0x23, 0x00,
+ 0x31, 0xFE, 0xAF, 0x01, 0x25, 0x00, 0xDD, 0xFD,
+ 0x0A, 0x02, 0x27, 0x00, 0x89, 0xFD, 0x79, 0x02,
+ 0x21, 0x00, 0x2A, 0x00, 0x59, 0x01, 0x21, 0x00,
+ 0x7E, 0x00, 0x59, 0x01, 0x21, 0x00, 0xD2, 0x00,
+ 0x59, 0x01, 0x21, 0x00, 0x26, 0x01, 0x59, 0x01,
+ 0x24, 0x00, 0x7B, 0x01, 0xCB, 0x01, 0x26, 0x00,
+ 0xCF, 0x01, 0x2B, 0x02, 0x28, 0x00, 0x23, 0x02,
+ 0xA0, 0x02, 0x2A, 0x00, 0x77, 0x02, 0x2E, 0x03,
+ 0x21, 0x00, 0xD6, 0xFF, 0x59, 0x01, 0x21, 0x00,
+ 0x82, 0xFF, 0x59, 0x01, 0x21, 0x00, 0x2E, 0xFF,
+ 0x59, 0x01, 0x21, 0x00, 0xDA, 0xFE, 0x59, 0x01,
+ 0x24, 0x00, 0x85, 0xFE, 0xCB, 0x01, 0x26, 0x00,
+ 0x31, 0xFE, 0x2B, 0x02, 0x28, 0x00, 0xDD, 0xFD,
+ 0xA0, 0x02, 0x2A, 0x00, 0x89, 0xFD, 0x2E, 0x03,
+ 0x23, 0x00, 0x2A, 0x00, 0xA5, 0x01, 0x23, 0x00,
+ 0x7E, 0x00, 0xA5, 0x01, 0x23, 0x00, 0xD2, 0x00,
+ 0xA5, 0x01, 0x23, 0x00, 0x26, 0x01, 0xA5, 0x01,
+ 0x26, 0x00, 0x7B, 0x01, 0x31, 0x02, 0x28, 0x00,
+ 0xCF, 0x01, 0xA6, 0x02, 0x2A, 0x00, 0x23, 0x02,
+ 0x35, 0x03, 0x2C, 0x00, 0x77, 0x02, 0xE3, 0x03,
+ 0x23, 0x00, 0xD6, 0xFF, 0xA5, 0x01, 0x23, 0x00,
+ 0x82, 0xFF, 0xA5, 0x01, 0x23, 0x00, 0x2E, 0xFF,
+ 0xA5, 0x01, 0x23, 0x00, 0xDA, 0xFE, 0xA5, 0x01,
+ 0x26, 0x00, 0x85, 0xFE, 0x31, 0x02, 0x28, 0x00,
+ 0x31, 0xFE, 0xA6, 0x02, 0x2A, 0x00, 0xDD, 0xFD,
+ 0x35, 0x03, 0x2C, 0x00, 0x89, 0xFD, 0xE3, 0x03,
+ 0x25, 0x00, 0x2A, 0x00, 0xF2, 0x01, 0x25, 0x00,
+ 0x7E, 0x00, 0xF2, 0x01, 0x25, 0x00, 0xD2, 0x00,
+ 0xF2, 0x01, 0x25, 0x00, 0x26, 0x01, 0xF2, 0x01,
+ 0x28, 0x00, 0x7B, 0x01, 0x97, 0x02, 0x2A, 0x00,
+ 0xCF, 0x01, 0x22, 0x03, 0x2C, 0x00, 0x23, 0x02,
+ 0xCB, 0x03, 0x2E, 0x00, 0x77, 0x02, 0x98, 0x04,
+ 0x25, 0x00, 0xD6, 0xFF, 0xF2, 0x01, 0x25, 0x00,
+ 0x82, 0xFF, 0xF2, 0x01, 0x25, 0x00, 0x2E, 0xFF,
+ 0xF2, 0x01, 0x25, 0x00, 0xDA, 0xFE, 0xF2, 0x01,
+ 0x28, 0x00, 0x85, 0xFE, 0x97, 0x02, 0x2A, 0x00,
+ 0x31, 0xFE, 0x22, 0x03, 0x2C, 0x00, 0xDD, 0xFD,
+ 0xCB, 0x03, 0x2E, 0x00, 0x89, 0xFD, 0x98, 0x04,
+ 0x27, 0x00, 0x2A, 0x00, 0x3E, 0x02, 0x27, 0x00,
+ 0x7E, 0x00, 0x3E, 0x02, 0x27, 0x00, 0xD2, 0x00,
+ 0x3E, 0x02, 0x27, 0x00, 0x26, 0x01, 0x3E, 0x02,
+ 0x2A, 0x00, 0x7B, 0x01, 0xFD, 0x02, 0x2C, 0x00,
+ 0xCF, 0x01, 0x9D, 0x03, 0x2E, 0x00, 0x23, 0x02,
+ 0x60, 0x04, 0x30, 0x00, 0x77, 0x02, 0x4D, 0x05,
+ 0x27, 0x00, 0xD6, 0xFF, 0x3E, 0x02, 0x27, 0x00,
+ 0x82, 0xFF, 0x3E, 0x02, 0x27, 0x00, 0x2E, 0xFF,
+ 0x3E, 0x02, 0x27, 0x00, 0xDA, 0xFE, 0x3E, 0x02,
+ 0x2A, 0x00, 0x85, 0xFE, 0xFD, 0x02, 0x2C, 0x00,
+ 0x31, 0xFE, 0x9D, 0x03, 0x2E, 0x00, 0xDD, 0xFD,
+ 0x60, 0x04, 0x30, 0x00, 0x89, 0xFD, 0x4D, 0x05,
+ 0x1E, 0x00, 0x2A, 0x00, 0xDA, 0xFF, 0x1E, 0x00,
+ 0x7E, 0x00, 0xDA, 0xFF, 0x1E, 0x00, 0xD2, 0x00,
+ 0xDA, 0xFF, 0x1E, 0x00, 0x26, 0x01, 0xDA, 0xFF,
+ 0x21, 0x00, 0x7B, 0x01, 0xCD, 0xFF, 0x23, 0x00,
+ 0xCF, 0x01, 0xC3, 0xFF, 0x25, 0x00, 0x23, 0x02,
+ 0xB6, 0xFF, 0x27, 0x00, 0x77, 0x02, 0xA6, 0xFF,
+ 0x1E, 0x00, 0xD6, 0xFF, 0xDA, 0xFF, 0x1E, 0x00,
+ 0x82, 0xFF, 0xDA, 0xFF, 0x1E, 0x00, 0x2E, 0xFF,
+ 0xDA, 0xFF, 0x1E, 0x00, 0xDA, 0xFE, 0xDA, 0xFF,
+ 0x21, 0x00, 0x85, 0xFE, 0xCD, 0xFF, 0x23, 0x00,
+ 0x31, 0xFE, 0xC3, 0xFF, 0x25, 0x00, 0xDD, 0xFD,
+ 0xB6, 0xFF, 0x27, 0x00, 0x89, 0xFD, 0xA6, 0xFF,
+ 0x1E, 0x00, 0x2A, 0x00, 0x8E, 0xFF, 0x1E, 0x00,
+ 0x7E, 0x00, 0x8E, 0xFF, 0x1E, 0x00, 0xD2, 0x00,
+ 0x8E, 0xFF, 0x1E, 0x00, 0x26, 0x01, 0x8E, 0xFF,
+ 0x21, 0x00, 0x7B, 0x01, 0x67, 0xFF, 0x23, 0x00,
+ 0xCF, 0x01, 0x48, 0xFF, 0x25, 0x00, 0x23, 0x02,
+ 0x21, 0xFF, 0x27, 0x00, 0x77, 0x02, 0xF1, 0xFE,
+ 0x1E, 0x00, 0xD6, 0xFF, 0x8E, 0xFF, 0x1E, 0x00,
+ 0x82, 0xFF, 0x8E, 0xFF, 0x1E, 0x00, 0x2E, 0xFF,
+ 0x8E, 0xFF, 0x1E, 0x00, 0xDA, 0xFE, 0x8E, 0xFF,
+ 0x21, 0x00, 0x85, 0xFE, 0x67, 0xFF, 0x23, 0x00,
+ 0x31, 0xFE, 0x48, 0xFF, 0x25, 0x00, 0xDD, 0xFD,
+ 0x21, 0xFF, 0x27, 0x00, 0x89, 0xFD, 0xF1, 0xFE,
+ 0x1E, 0x00, 0x2A, 0x00, 0x41, 0xFF, 0x1E, 0x00,
+ 0x7E, 0x00, 0x41, 0xFF, 0x1E, 0x00, 0xD2, 0x00,
+ 0x41, 0xFF, 0x1E, 0x00, 0x26, 0x01, 0x41, 0xFF,
+ 0x21, 0x00, 0x7B, 0x01, 0x01, 0xFF, 0x23, 0x00,
+ 0xCF, 0x01, 0xCC, 0xFE, 0x25, 0x00, 0x23, 0x02,
+ 0x8B, 0xFE, 0x27, 0x00, 0x77, 0x02, 0x3C, 0xFE,
+ 0x1E, 0x00, 0xD6, 0xFF, 0x41, 0xFF, 0x1E, 0x00,
+ 0x82, 0xFF, 0x41, 0xFF, 0x1E, 0x00, 0x2E, 0xFF,
+ 0x41, 0xFF, 0x1E, 0x00, 0xDA, 0xFE, 0x41, 0xFF,
+ 0x21, 0x00, 0x85, 0xFE, 0x01, 0xFF, 0x23, 0x00,
+ 0x31, 0xFE, 0xCC, 0xFE, 0x25, 0x00, 0xDD, 0xFD,
+ 0x8B, 0xFE, 0x27, 0x00, 0x89, 0xFD, 0x3C, 0xFE,
+ 0x1E, 0x00, 0x2A, 0x00, 0xF5, 0xFE, 0x1E, 0x00,
+ 0x7E, 0x00, 0xF5, 0xFE, 0x1E, 0x00, 0xD2, 0x00,
+ 0xF5, 0xFE, 0x1E, 0x00, 0x26, 0x01, 0xF5, 0xFE,
+ 0x21, 0x00, 0x7B, 0x01, 0x9B, 0xFE, 0x23, 0x00,
+ 0xCF, 0x01, 0x51, 0xFE, 0x25, 0x00, 0x23, 0x02,
+ 0xF6, 0xFD, 0x27, 0x00, 0x77, 0x02, 0x87, 0xFD,
+ 0x1E, 0x00, 0xD6, 0xFF, 0xF5, 0xFE, 0x1E, 0x00,
+ 0x82, 0xFF, 0xF5, 0xFE, 0x1E, 0x00, 0x2E, 0xFF,
+ 0xF5, 0xFE, 0x1E, 0x00, 0xDA, 0xFE, 0xF5, 0xFE,
+ 0x21, 0x00, 0x85, 0xFE, 0x9B, 0xFE, 0x23, 0x00,
+ 0x31, 0xFE, 0x51, 0xFE, 0x25, 0x00, 0xDD, 0xFD,
+ 0xF6, 0xFD, 0x27, 0x00, 0x89, 0xFD, 0x87, 0xFD,
+ 0x21, 0x00, 0x2A, 0x00, 0xA7, 0xFE, 0x21, 0x00,
+ 0x7E, 0x00, 0xA7, 0xFE, 0x21, 0x00, 0xD2, 0x00,
+ 0xA7, 0xFE, 0x21, 0x00, 0x26, 0x01, 0xA7, 0xFE,
+ 0x24, 0x00, 0x7B, 0x01, 0x35, 0xFE, 0x26, 0x00,
+ 0xCF, 0x01, 0xD5, 0xFD, 0x28, 0x00, 0x23, 0x02,
+ 0x60, 0xFD, 0x2A, 0x00, 0x77, 0x02, 0xD2, 0xFC,
+ 0x21, 0x00, 0xD6, 0xFF, 0xA7, 0xFE, 0x21, 0x00,
+ 0x82, 0xFF, 0xA7, 0xFE, 0x21, 0x00, 0x2E, 0xFF,
+ 0xA7, 0xFE, 0x21, 0x00, 0xDA, 0xFE, 0xA7, 0xFE,
+ 0x24, 0x00, 0x85, 0xFE, 0x35, 0xFE, 0x26, 0x00,
+ 0x31, 0xFE, 0xD5, 0xFD, 0x28, 0x00, 0xDD, 0xFD,
+ 0x60, 0xFD, 0x2A, 0x00, 0x89, 0xFD, 0xD2, 0xFC,
+ 0x23, 0x00, 0x2A, 0x00, 0x5B, 0xFE, 0x23, 0x00,
+ 0x7E, 0x00, 0x5B, 0xFE, 0x23, 0x00, 0xD2, 0x00,
+ 0x5B, 0xFE, 0x23, 0x00, 0x26, 0x01, 0x5B, 0xFE,
+ 0x26, 0x00, 0x7B, 0x01, 0xCF, 0xFD, 0x28, 0x00,
+ 0xCF, 0x01, 0x5A, 0xFD, 0x2A, 0x00, 0x23, 0x02,
+ 0xCB, 0xFC, 0x2C, 0x00, 0x77, 0x02, 0x1D, 0xFC,
+ 0x23, 0x00, 0xD6, 0xFF, 0x5B, 0xFE, 0x23, 0x00,
+ 0x82, 0xFF, 0x5B, 0xFE, 0x23, 0x00, 0x2E, 0xFF,
+ 0x5B, 0xFE, 0x23, 0x00, 0xDA, 0xFE, 0x5B, 0xFE,
+ 0x26, 0x00, 0x85, 0xFE, 0xCF, 0xFD, 0x28, 0x00,
+ 0x31, 0xFE, 0x5A, 0xFD, 0x2A, 0x00, 0xDD, 0xFD,
+ 0xCB, 0xFC, 0x2C, 0x00, 0x89, 0xFD, 0x1D, 0xFC,
+ 0x25, 0x00, 0x2A, 0x00, 0x0E, 0xFE, 0x25, 0x00,
+ 0x7E, 0x00, 0x0E, 0xFE, 0x25, 0x00, 0xD2, 0x00,
+ 0x0E, 0xFE, 0x25, 0x00, 0x26, 0x01, 0x0E, 0xFE,
+ 0x28, 0x00, 0x7B, 0x01, 0x69, 0xFD, 0x2A, 0x00,
+ 0xCF, 0x01, 0xDE, 0xFC, 0x2C, 0x00, 0x23, 0x02,
+ 0x35, 0xFC, 0x2E, 0x00, 0x77, 0x02, 0x68, 0xFB,
+ 0x25, 0x00, 0xD6, 0xFF, 0x0E, 0xFE, 0x25, 0x00,
+ 0x82, 0xFF, 0x0E, 0xFE, 0x25, 0x00, 0x2E, 0xFF,
+ 0x0E, 0xFE, 0x25, 0x00, 0xDA, 0xFE, 0x0E, 0xFE,
+ 0x28, 0x00, 0x85, 0xFE, 0x69, 0xFD, 0x2A, 0x00,
+ 0x31, 0xFE, 0xDE, 0xFC, 0x2C, 0x00, 0xDD, 0xFD,
+ 0x35, 0xFC, 0x2E, 0x00, 0x89, 0xFD, 0x68, 0xFB,
+ 0x27, 0x00, 0x2A, 0x00, 0xC2, 0xFD, 0x27, 0x00,
+ 0x7E, 0x00, 0xC2, 0xFD, 0x27, 0x00, 0xD2, 0x00,
+ 0xC2, 0xFD, 0x27, 0x00, 0x26, 0x01, 0xC2, 0xFD,
+ 0x2A, 0x00, 0x7B, 0x01, 0x03, 0xFD, 0x2C, 0x00,
+ 0xCF, 0x01, 0x63, 0xFC, 0x2E, 0x00, 0x23, 0x02,
+ 0xA0, 0xFB, 0x30, 0x00, 0x77, 0x02, 0xB3, 0xFA,
+ 0x27, 0x00, 0xD6, 0xFF, 0xC2, 0xFD, 0x27, 0x00,
+ 0x82, 0xFF, 0xC2, 0xFD, 0x27, 0x00, 0x2E, 0xFF,
+ 0xC2, 0xFD, 0x27, 0x00, 0xDA, 0xFE, 0xC2, 0xFD,
+ 0x2A, 0x00, 0x85, 0xFE, 0x03, 0xFD, 0x2C, 0x00,
+ 0x31, 0xFE, 0x63, 0xFC, 0x2E, 0x00, 0xDD, 0xFD,
+ 0xA0, 0xFB, 0x30, 0x00, 0x89, 0xFD, 0xB3, 0xFA,
+ 0x1F, 0x00, 0x2E, 0x00, 0x2A, 0x00, 0x1F, 0x00,
+ 0x8A, 0x00, 0x2A, 0x00, 0x1F, 0x00, 0xE7, 0x00,
+ 0x2A, 0x00, 0x1F, 0x00, 0x43, 0x01, 0x2A, 0x00,
+ 0x22, 0x00, 0xA1, 0x01, 0x38, 0x00, 0x24, 0x00,
+ 0xFD, 0x01, 0x44, 0x00, 0x26, 0x00, 0x5A, 0x02,
+ 0x52, 0x00, 0x28, 0x00, 0xB6, 0x02, 0x63, 0x00,
+ 0x1F, 0x00, 0xD2, 0xFF, 0x2A, 0x00, 0x1F, 0x00,
+ 0x76, 0xFF, 0x2A, 0x00, 0x1F, 0x00, 0x19, 0xFF,
+ 0x2A, 0x00, 0x1F, 0x00, 0xBD, 0xFE, 0x2A, 0x00,
+ 0x22, 0x00, 0x5F, 0xFE, 0x38, 0x00, 0x24, 0x00,
+ 0x03, 0xFE, 0x44, 0x00, 0x26, 0x00, 0xA6, 0xFD,
+ 0x52, 0x00, 0x28, 0x00, 0x4A, 0xFD, 0x63, 0x00,
+ 0x1F, 0x00, 0x2E, 0x00, 0x7E, 0x00, 0x1F, 0x00,
+ 0x8A, 0x00, 0x7E, 0x00, 0x1F, 0x00, 0xE7, 0x00,
+ 0x7E, 0x00, 0x1F, 0x00, 0x43, 0x01, 0x7E, 0x00,
+ 0x22, 0x00, 0xA1, 0x01, 0xA8, 0x00, 0x24, 0x00,
+ 0xFD, 0x01, 0xCC, 0x00, 0x26, 0x00, 0x5A, 0x02,
+ 0xF6, 0x00, 0x28, 0x00, 0xB6, 0x02, 0x2A, 0x01,
+ 0x1F, 0x00, 0xD2, 0xFF, 0x7E, 0x00, 0x1F, 0x00,
+ 0x76, 0xFF, 0x7E, 0x00, 0x1F, 0x00, 0x19, 0xFF,
+ 0x7E, 0x00, 0x1F, 0x00, 0xBD, 0xFE, 0x7E, 0x00,
+ 0x22, 0x00, 0x5F, 0xFE, 0xA8, 0x00, 0x24, 0x00,
+ 0x03, 0xFE, 0xCC, 0x00, 0x26, 0x00, 0xA6, 0xFD,
+ 0xF6, 0x00, 0x28, 0x00, 0x4A, 0xFD, 0x2A, 0x01,
+ 0x1F, 0x00, 0x2E, 0x00, 0xD2, 0x00, 0x1F, 0x00,
+ 0x8A, 0x00, 0xD2, 0x00, 0x1F, 0x00, 0xE7, 0x00,
+ 0xD2, 0x00, 0x1F, 0x00, 0x43, 0x01, 0xD2, 0x00,
+ 0x22, 0x00, 0xA1, 0x01, 0x18, 0x01, 0x24, 0x00,
+ 0xFD, 0x01, 0x54, 0x01, 0x26, 0x00, 0x5A, 0x02,
+ 0x9B, 0x01, 0x28, 0x00, 0xB6, 0x02, 0xF1, 0x01,
+ 0x1F, 0x00, 0xD2, 0xFF, 0xD2, 0x00, 0x1F, 0x00,
+ 0x76, 0xFF, 0xD2, 0x00, 0x1F, 0x00, 0x19, 0xFF,
+ 0xD2, 0x00, 0x1F, 0x00, 0xBD, 0xFE, 0xD2, 0x00,
+ 0x22, 0x00, 0x5F, 0xFE, 0x18, 0x01, 0x24, 0x00,
+ 0x03, 0xFE, 0x54, 0x01, 0x26, 0x00, 0xA6, 0xFD,
+ 0x9B, 0x01, 0x28, 0x00, 0x4A, 0xFD, 0xF1, 0x01,
+ 0x1F, 0x00, 0x2E, 0x00, 0x26, 0x01, 0x1F, 0x00,
+ 0x8A, 0x00, 0x26, 0x01, 0x1F, 0x00, 0xE7, 0x00,
+ 0x26, 0x01, 0x1F, 0x00, 0x43, 0x01, 0x26, 0x01,
+ 0x22, 0x00, 0xA1, 0x01, 0x88, 0x01, 0x24, 0x00,
+ 0xFD, 0x01, 0xDC, 0x01, 0x26, 0x00, 0x5A, 0x02,
+ 0x3F, 0x02, 0x28, 0x00, 0xB6, 0x02, 0xB8, 0x02,
+ 0x1F, 0x00, 0xD2, 0xFF, 0x26, 0x01, 0x1F, 0x00,
+ 0x76, 0xFF, 0x26, 0x01, 0x1F, 0x00, 0x19, 0xFF,
+ 0x26, 0x01, 0x1F, 0x00, 0xBD, 0xFE, 0x26, 0x01,
+ 0x22, 0x00, 0x5F, 0xFE, 0x88, 0x01, 0x24, 0x00,
+ 0x03, 0xFE, 0xDC, 0x01, 0x26, 0x00, 0xA6, 0xFD,
+ 0x3F, 0x02, 0x28, 0x00, 0x4A, 0xFD, 0xB8, 0x02,
+ 0x22, 0x00, 0x2E, 0x00, 0x7B, 0x01, 0x22, 0x00,
+ 0x8A, 0x00, 0x7B, 0x01, 0x22, 0x00, 0xE7, 0x00,
+ 0x7B, 0x01, 0x22, 0x00, 0x43, 0x01, 0x7B, 0x01,
+ 0x25, 0x00, 0xA1, 0x01, 0xF9, 0x01, 0x27, 0x00,
+ 0xFD, 0x01, 0x64, 0x02, 0x29, 0x00, 0x5A, 0x02,
+ 0xE4, 0x02, 0x2B, 0x00, 0xB6, 0x02, 0x7F, 0x03,
+ 0x22, 0x00, 0xD2, 0xFF, 0x7B, 0x01, 0x22, 0x00,
+ 0x76, 0xFF, 0x7B, 0x01, 0x22, 0x00, 0x19, 0xFF,
+ 0x7B, 0x01, 0x22, 0x00, 0xBD, 0xFE, 0x7B, 0x01,
+ 0x25, 0x00, 0x5F, 0xFE, 0xF9, 0x01, 0x27, 0x00,
+ 0x03, 0xFE, 0x64, 0x02, 0x29, 0x00, 0xA6, 0xFD,
+ 0xE4, 0x02, 0x2B, 0x00, 0x4A, 0xFD, 0x7F, 0x03,
+ 0x24, 0x00, 0x2E, 0x00, 0xCF, 0x01, 0x24, 0x00,
+ 0x8A, 0x00, 0xCF, 0x01, 0x24, 0x00, 0xE7, 0x00,
+ 0xCF, 0x01, 0x24, 0x00, 0x43, 0x01, 0xCF, 0x01,
+ 0x27, 0x00, 0xA1, 0x01, 0x69, 0x02, 0x29, 0x00,
+ 0xFD, 0x01, 0xEC, 0x02, 0x2B, 0x00, 0x5A, 0x02,
+ 0x88, 0x03, 0x2D, 0x00, 0xB6, 0x02, 0x46, 0x04,
+ 0x24, 0x00, 0xD2, 0xFF, 0xCF, 0x01, 0x24, 0x00,
+ 0x76, 0xFF, 0xCF, 0x01, 0x24, 0x00, 0x19, 0xFF,
+ 0xCF, 0x01, 0x24, 0x00, 0xBD, 0xFE, 0xCF, 0x01,
+ 0x27, 0x00, 0x5F, 0xFE, 0x69, 0x02, 0x29, 0x00,
+ 0x03, 0xFE, 0xEC, 0x02, 0x2B, 0x00, 0xA6, 0xFD,
+ 0x88, 0x03, 0x2D, 0x00, 0x4A, 0xFD, 0x46, 0x04,
+ 0x26, 0x00, 0x2E, 0x00, 0x23, 0x02, 0x26, 0x00,
+ 0x8A, 0x00, 0x23, 0x02, 0x26, 0x00, 0xE7, 0x00,
+ 0x23, 0x02, 0x26, 0x00, 0x43, 0x01, 0x23, 0x02,
+ 0x29, 0x00, 0xA1, 0x01, 0xD9, 0x02, 0x2B, 0x00,
+ 0xFD, 0x01, 0x74, 0x03, 0x2D, 0x00, 0x5A, 0x02,
+ 0x2D, 0x04, 0x2F, 0x00, 0xB6, 0x02, 0x0D, 0x05,
+ 0x26, 0x00, 0xD2, 0xFF, 0x23, 0x02, 0x26, 0x00,
+ 0x76, 0xFF, 0x23, 0x02, 0x26, 0x00, 0x19, 0xFF,
+ 0x23, 0x02, 0x26, 0x00, 0xBD, 0xFE, 0x23, 0x02,
+ 0x29, 0x00, 0x5F, 0xFE, 0xD9, 0x02, 0x2B, 0x00,
+ 0x03, 0xFE, 0x74, 0x03, 0x2D, 0x00, 0xA6, 0xFD,
+ 0x2D, 0x04, 0x2F, 0x00, 0x4A, 0xFD, 0x0D, 0x05,
+ 0x28, 0x00, 0x2E, 0x00, 0x77, 0x02, 0x28, 0x00,
+ 0x8A, 0x00, 0x77, 0x02, 0x28, 0x00, 0xE7, 0x00,
+ 0x77, 0x02, 0x28, 0x00, 0x43, 0x01, 0x77, 0x02,
+ 0x2B, 0x00, 0xA1, 0x01, 0x49, 0x03, 0x2D, 0x00,
+ 0xFD, 0x01, 0xFC, 0x03, 0x2F, 0x00, 0x5A, 0x02,
+ 0xD1, 0x04, 0x30, 0x00, 0xB6, 0x02, 0xD4, 0x05,
+ 0x28, 0x00, 0xD2, 0xFF, 0x77, 0x02, 0x28, 0x00,
+ 0x76, 0xFF, 0x77, 0x02, 0x28, 0x00, 0x19, 0xFF,
+ 0x77, 0x02, 0x28, 0x00, 0xBD, 0xFE, 0x77, 0x02,
+ 0x2B, 0x00, 0x5F, 0xFE, 0x49, 0x03, 0x2D, 0x00,
+ 0x03, 0xFE, 0xFC, 0x03, 0x2F, 0x00, 0xA6, 0xFD,
+ 0xD1, 0x04, 0x30, 0x00, 0x4A, 0xFD, 0xD4, 0x05,
+ 0x1F, 0x00, 0x2E, 0x00, 0xD6, 0xFF, 0x1F, 0x00,
+ 0x8A, 0x00, 0xD6, 0xFF, 0x1F, 0x00, 0xE7, 0x00,
+ 0xD6, 0xFF, 0x1F, 0x00, 0x43, 0x01, 0xD6, 0xFF,
+ 0x22, 0x00, 0xA1, 0x01, 0xC8, 0xFF, 0x24, 0x00,
+ 0xFD, 0x01, 0xBC, 0xFF, 0x26, 0x00, 0x5A, 0x02,
+ 0xAE, 0xFF, 0x28, 0x00, 0xB6, 0x02, 0x9D, 0xFF,
+ 0x1F, 0x00, 0xD2, 0xFF, 0xD6, 0xFF, 0x1F, 0x00,
+ 0x76, 0xFF, 0xD6, 0xFF, 0x1F, 0x00, 0x19, 0xFF,
+ 0xD6, 0xFF, 0x1F, 0x00, 0xBD, 0xFE, 0xD6, 0xFF,
+ 0x22, 0x00, 0x5F, 0xFE, 0xC8, 0xFF, 0x24, 0x00,
+ 0x03, 0xFE, 0xBC, 0xFF, 0x26, 0x00, 0xA6, 0xFD,
+ 0xAE, 0xFF, 0x28, 0x00, 0x4A, 0xFD, 0x9D, 0xFF,
+ 0x1F, 0x00, 0x2E, 0x00, 0x82, 0xFF, 0x1F, 0x00,
+ 0x8A, 0x00, 0x82, 0xFF, 0x1F, 0x00, 0xE7, 0x00,
+ 0x82, 0xFF, 0x1F, 0x00, 0x43, 0x01, 0x82, 0xFF,
+ 0x22, 0x00, 0xA1, 0x01, 0x58, 0xFF, 0x24, 0x00,
+ 0xFD, 0x01, 0x34, 0xFF, 0x26, 0x00, 0x5A, 0x02,
+ 0x0A, 0xFF, 0x28, 0x00, 0xB6, 0x02, 0xD6, 0xFE,
+ 0x1F, 0x00, 0xD2, 0xFF, 0x82, 0xFF, 0x1F, 0x00,
+ 0x76, 0xFF, 0x82, 0xFF, 0x1F, 0x00, 0x19, 0xFF,
+ 0x82, 0xFF, 0x1F, 0x00, 0xBD, 0xFE, 0x82, 0xFF,
+ 0x22, 0x00, 0x5F, 0xFE, 0x58, 0xFF, 0x24, 0x00,
+ 0x03, 0xFE, 0x34, 0xFF, 0x26, 0x00, 0xA6, 0xFD,
+ 0x0A, 0xFF, 0x28, 0x00, 0x4A, 0xFD, 0xD6, 0xFE,
+ 0x1F, 0x00, 0x2E, 0x00, 0x2E, 0xFF, 0x1F, 0x00,
+ 0x8A, 0x00, 0x2E, 0xFF, 0x1F, 0x00, 0xE7, 0x00,
+ 0x2E, 0xFF, 0x1F, 0x00, 0x43, 0x01, 0x2E, 0xFF,
+ 0x22, 0x00, 0xA1, 0x01, 0xE8, 0xFE, 0x24, 0x00,
+ 0xFD, 0x01, 0xAC, 0xFE, 0x26, 0x00, 0x5A, 0x02,
+ 0x65, 0xFE, 0x28, 0x00, 0xB6, 0x02, 0x0F, 0xFE,
+ 0x1F, 0x00, 0xD2, 0xFF, 0x2E, 0xFF, 0x1F, 0x00,
+ 0x76, 0xFF, 0x2E, 0xFF, 0x1F, 0x00, 0x19, 0xFF,
+ 0x2E, 0xFF, 0x1F, 0x00, 0xBD, 0xFE, 0x2E, 0xFF,
+ 0x22, 0x00, 0x5F, 0xFE, 0xE8, 0xFE, 0x24, 0x00,
+ 0x03, 0xFE, 0xAC, 0xFE, 0x26, 0x00, 0xA6, 0xFD,
+ 0x65, 0xFE, 0x28, 0x00, 0x4A, 0xFD, 0x0F, 0xFE,
+ 0x1F, 0x00, 0x2E, 0x00, 0xDA, 0xFE, 0x1F, 0x00,
+ 0x8A, 0x00, 0xDA, 0xFE, 0x1F, 0x00, 0xE7, 0x00,
+ 0xDA, 0xFE, 0x1F, 0x00, 0x43, 0x01, 0xDA, 0xFE,
+ 0x22, 0x00, 0xA1, 0x01, 0x78, 0xFE, 0x24, 0x00,
+ 0xFD, 0x01, 0x24, 0xFE, 0x26, 0x00, 0x5A, 0x02,
+ 0xC1, 0xFD, 0x28, 0x00, 0xB6, 0x02, 0x48, 0xFD,
+ 0x1F, 0x00, 0xD2, 0xFF, 0xDA, 0xFE, 0x1F, 0x00,
+ 0x76, 0xFF, 0xDA, 0xFE, 0x1F, 0x00, 0x19, 0xFF,
+ 0xDA, 0xFE, 0x1F, 0x00, 0xBD, 0xFE, 0xDA, 0xFE,
+ 0x22, 0x00, 0x5F, 0xFE, 0x78, 0xFE, 0x24, 0x00,
+ 0x03, 0xFE, 0x24, 0xFE, 0x26, 0x00, 0xA6, 0xFD,
+ 0xC1, 0xFD, 0x28, 0x00, 0x4A, 0xFD, 0x48, 0xFD,
+ 0x22, 0x00, 0x2E, 0x00, 0x85, 0xFE, 0x22, 0x00,
+ 0x8A, 0x00, 0x85, 0xFE, 0x22, 0x00, 0xE7, 0x00,
+ 0x85, 0xFE, 0x22, 0x00, 0x43, 0x01, 0x85, 0xFE,
+ 0x25, 0x00, 0xA1, 0x01, 0x07, 0xFE, 0x27, 0x00,
+ 0xFD, 0x01, 0x9C, 0xFD, 0x29, 0x00, 0x5A, 0x02,
+ 0x1C, 0xFD, 0x2B, 0x00, 0xB6, 0x02, 0x81, 0xFC,
+ 0x22, 0x00, 0xD2, 0xFF, 0x85, 0xFE, 0x22, 0x00,
+ 0x76, 0xFF, 0x85, 0xFE, 0x22, 0x00, 0x19, 0xFF,
+ 0x85, 0xFE, 0x22, 0x00, 0xBD, 0xFE, 0x85, 0xFE,
+ 0x25, 0x00, 0x5F, 0xFE, 0x07, 0xFE, 0x27, 0x00,
+ 0x03, 0xFE, 0x9C, 0xFD, 0x29, 0x00, 0xA6, 0xFD,
+ 0x1C, 0xFD, 0x2B, 0x00, 0x4A, 0xFD, 0x81, 0xFC,
+ 0x24, 0x00, 0x2E, 0x00, 0x31, 0xFE, 0x24, 0x00,
+ 0x8A, 0x00, 0x31, 0xFE, 0x24, 0x00, 0xE7, 0x00,
+ 0x31, 0xFE, 0x24, 0x00, 0x43, 0x01, 0x31, 0xFE,
+ 0x27, 0x00, 0xA1, 0x01, 0x97, 0xFD, 0x29, 0x00,
+ 0xFD, 0x01, 0x14, 0xFD, 0x2B, 0x00, 0x5A, 0x02,
+ 0x78, 0xFC, 0x2D, 0x00, 0xB6, 0x02, 0xBA, 0xFB,
+ 0x24, 0x00, 0xD2, 0xFF, 0x31, 0xFE, 0x24, 0x00,
+ 0x76, 0xFF, 0x31, 0xFE, 0x24, 0x00, 0x19, 0xFF,
+ 0x31, 0xFE, 0x24, 0x00, 0xBD, 0xFE, 0x31, 0xFE,
+ 0x27, 0x00, 0x5F, 0xFE, 0x97, 0xFD, 0x29, 0x00,
+ 0x03, 0xFE, 0x14, 0xFD, 0x2B, 0x00, 0xA6, 0xFD,
+ 0x78, 0xFC, 0x2D, 0x00, 0x4A, 0xFD, 0xBA, 0xFB,
+ 0x26, 0x00, 0x2E, 0x00, 0xDD, 0xFD, 0x26, 0x00,
+ 0x8A, 0x00, 0xDD, 0xFD, 0x26, 0x00, 0xE7, 0x00,
+ 0xDD, 0xFD, 0x26, 0x00, 0x43, 0x01, 0xDD, 0xFD,
+ 0x29, 0x00, 0xA1, 0x01, 0x27, 0xFD, 0x2B, 0x00,
+ 0xFD, 0x01, 0x8C, 0xFC, 0x2D, 0x00, 0x5A, 0x02,
+ 0xD3, 0xFB, 0x2F, 0x00, 0xB6, 0x02, 0xF3, 0xFA,
+ 0x26, 0x00, 0xD2, 0xFF, 0xDD, 0xFD, 0x26, 0x00,
+ 0x76, 0xFF, 0xDD, 0xFD, 0x26, 0x00, 0x19, 0xFF,
+ 0xDD, 0xFD, 0x26, 0x00, 0xBD, 0xFE, 0xDD, 0xFD,
+ 0x29, 0x00, 0x5F, 0xFE, 0x27, 0xFD, 0x2B, 0x00,
+ 0x03, 0xFE, 0x8C, 0xFC, 0x2D, 0x00, 0xA6, 0xFD,
+ 0xD3, 0xFB, 0x2F, 0x00, 0x4A, 0xFD, 0xF3, 0xFA,
+ 0x28, 0x00, 0x2E, 0x00, 0x89, 0xFD, 0x28, 0x00,
+ 0x8A, 0x00, 0x89, 0xFD, 0x28, 0x00, 0xE7, 0x00,
+ 0x89, 0xFD, 0x28, 0x00, 0x43, 0x01, 0x89, 0xFD,
+ 0x2B, 0x00, 0xA1, 0x01, 0xB7, 0xFC, 0x2D, 0x00,
+ 0xFD, 0x01, 0x04, 0xFC, 0x2F, 0x00, 0x5A, 0x02,
+ 0x2F, 0xFB, 0x30, 0x00, 0xB6, 0x02, 0x2C, 0xFA,
+ 0x28, 0x00, 0xD2, 0xFF, 0x89, 0xFD, 0x28, 0x00,
+ 0x76, 0xFF, 0x89, 0xFD, 0x28, 0x00, 0x19, 0xFF,
+ 0x89, 0xFD, 0x28, 0x00, 0xBD, 0xFE, 0x89, 0xFD,
+ 0x2B, 0x00, 0x5F, 0xFE, 0xB7, 0xFC, 0x2D, 0x00,
+ 0x03, 0xFE, 0x04, 0xFC, 0x2F, 0x00, 0xA6, 0xFD,
+ 0x2F, 0xFB, 0x30, 0x00, 0x4A, 0xFD, 0x2C, 0xFA,
+ 0x20, 0x00, 0x33, 0x00, 0x2E, 0x00, 0x20, 0x00,
+ 0x99, 0x00, 0x2E, 0x00, 0x20, 0x00, 0xFF, 0x00,
+ 0x2E, 0x00, 0x20, 0x00, 0x65, 0x01, 0x2E, 0x00,
+ 0x23, 0x00, 0xCB, 0x01, 0x3D, 0x00, 0x25, 0x00,
+ 0x31, 0x02, 0x4A, 0x00, 0x27, 0x00, 0x97, 0x02,
+ 0x5A, 0x00, 0x29, 0x00, 0xFD, 0x02, 0x6D, 0x00,
+ 0x20, 0x00, 0xCD, 0xFF, 0x2E, 0x00, 0x20, 0x00,
+ 0x67, 0xFF, 0x2E, 0x00, 0x20, 0x00, 0x01, 0xFF,
+ 0x2E, 0x00, 0x20, 0x00, 0x9B, 0xFE, 0x2E, 0x00,
+ 0x23, 0x00, 0x35, 0xFE, 0x3D, 0x00, 0x25, 0x00,
+ 0xCF, 0xFD, 0x4A, 0x00, 0x27, 0x00, 0x69, 0xFD,
+ 0x5A, 0x00, 0x29, 0x00, 0x03, 0xFD, 0x6D, 0x00,
+ 0x20, 0x00, 0x33, 0x00, 0x8A, 0x00, 0x20, 0x00,
+ 0x99, 0x00, 0x8A, 0x00, 0x20, 0x00, 0xFF, 0x00,
+ 0x8A, 0x00, 0x20, 0x00, 0x65, 0x01, 0x8A, 0x00,
+ 0x23, 0x00, 0xCB, 0x01, 0xB8, 0x00, 0x25, 0x00,
+ 0x31, 0x02, 0xDF, 0x00, 0x27, 0x00, 0x97, 0x02,
+ 0x0F, 0x01, 0x29, 0x00, 0xFD, 0x02, 0x48, 0x01,
+ 0x20, 0x00, 0xCD, 0xFF, 0x8A, 0x00, 0x20, 0x00,
+ 0x67, 0xFF, 0x8A, 0x00, 0x20, 0x00, 0x01, 0xFF,
+ 0x8A, 0x00, 0x20, 0x00, 0x9B, 0xFE, 0x8A, 0x00,
+ 0x23, 0x00, 0x35, 0xFE, 0xB8, 0x00, 0x25, 0x00,
+ 0xCF, 0xFD, 0xDF, 0x00, 0x27, 0x00, 0x69, 0xFD,
+ 0x0F, 0x01, 0x29, 0x00, 0x03, 0xFD, 0x48, 0x01,
+ 0x20, 0x00, 0x33, 0x00, 0xE7, 0x00, 0x20, 0x00,
+ 0x99, 0x00, 0xE7, 0x00, 0x20, 0x00, 0xFF, 0x00,
+ 0xE7, 0x00, 0x20, 0x00, 0x65, 0x01, 0xE7, 0x00,
+ 0x23, 0x00, 0xCB, 0x01, 0x34, 0x01, 0x25, 0x00,
+ 0x31, 0x02, 0x75, 0x01, 0x27, 0x00, 0x97, 0x02,
+ 0xC4, 0x01, 0x29, 0x00, 0xFD, 0x02, 0x23, 0x02,
+ 0x20, 0x00, 0xCD, 0xFF, 0xE7, 0x00, 0x20, 0x00,
+ 0x67, 0xFF, 0xE7, 0x00, 0x20, 0x00, 0x01, 0xFF,
+ 0xE7, 0x00, 0x20, 0x00, 0x9B, 0xFE, 0xE7, 0x00,
+ 0x23, 0x00, 0x35, 0xFE, 0x34, 0x01, 0x25, 0x00,
+ 0xCF, 0xFD, 0x75, 0x01, 0x27, 0x00, 0x69, 0xFD,
+ 0xC4, 0x01, 0x29, 0x00, 0x03, 0xFD, 0x23, 0x02,
+ 0x20, 0x00, 0x33, 0x00, 0x43, 0x01, 0x20, 0x00,
+ 0x99, 0x00, 0x43, 0x01, 0x20, 0x00, 0xFF, 0x00,
+ 0x43, 0x01, 0x20, 0x00, 0x65, 0x01, 0x43, 0x01,
+ 0x23, 0x00, 0xCB, 0x01, 0xAF, 0x01, 0x25, 0x00,
+ 0x31, 0x02, 0x0A, 0x02, 0x27, 0x00, 0x97, 0x02,
+ 0x79, 0x02, 0x29, 0x00, 0xFD, 0x02, 0xFE, 0x02,
+ 0x20, 0x00, 0xCD, 0xFF, 0x43, 0x01, 0x20, 0x00,
+ 0x67, 0xFF, 0x43, 0x01, 0x20, 0x00, 0x01, 0xFF,
+ 0x43, 0x01, 0x20, 0x00, 0x9B, 0xFE, 0x43, 0x01,
+ 0x23, 0x00, 0x35, 0xFE, 0xAF, 0x01, 0x25, 0x00,
+ 0xCF, 0xFD, 0x0A, 0x02, 0x27, 0x00, 0x69, 0xFD,
+ 0x79, 0x02, 0x29, 0x00, 0x03, 0xFD, 0xFE, 0x02,
+ 0x23, 0x00, 0x33, 0x00, 0xA1, 0x01, 0x23, 0x00,
+ 0x99, 0x00, 0xA1, 0x01, 0x23, 0x00, 0xFF, 0x00,
+ 0xA1, 0x01, 0x23, 0x00, 0x65, 0x01, 0xA1, 0x01,
+ 0x26, 0x00, 0xCB, 0x01, 0x2B, 0x02, 0x28, 0x00,
+ 0x31, 0x02, 0xA0, 0x02, 0x2A, 0x00, 0x97, 0x02,
+ 0x2E, 0x03, 0x2C, 0x00, 0xFD, 0x02, 0xD9, 0x03,
+ 0x23, 0x00, 0xCD, 0xFF, 0xA1, 0x01, 0x23, 0x00,
+ 0x67, 0xFF, 0xA1, 0x01, 0x23, 0x00, 0x01, 0xFF,
+ 0xA1, 0x01, 0x23, 0x00, 0x9B, 0xFE, 0xA1, 0x01,
+ 0x26, 0x00, 0x35, 0xFE, 0x2B, 0x02, 0x28, 0x00,
+ 0xCF, 0xFD, 0xA0, 0x02, 0x2A, 0x00, 0x69, 0xFD,
+ 0x2E, 0x03, 0x2C, 0x00, 0x03, 0xFD, 0xD9, 0x03,
+ 0x25, 0x00, 0x33, 0x00, 0xFD, 0x01, 0x25, 0x00,
+ 0x99, 0x00, 0xFD, 0x01, 0x25, 0x00, 0xFF, 0x00,
+ 0xFD, 0x01, 0x25, 0x00, 0x65, 0x01, 0xFD, 0x01,
+ 0x28, 0x00, 0xCB, 0x01, 0xA6, 0x02, 0x2A, 0x00,
+ 0x31, 0x02, 0x35, 0x03, 0x2C, 0x00, 0x97, 0x02,
+ 0xE3, 0x03, 0x2E, 0x00, 0xFD, 0x02, 0xB4, 0x04,
+ 0x25, 0x00, 0xCD, 0xFF, 0xFD, 0x01, 0x25, 0x00,
+ 0x67, 0xFF, 0xFD, 0x01, 0x25, 0x00, 0x01, 0xFF,
+ 0xFD, 0x01, 0x25, 0x00, 0x9B, 0xFE, 0xFD, 0x01,
+ 0x28, 0x00, 0x35, 0xFE, 0xA6, 0x02, 0x2A, 0x00,
+ 0xCF, 0xFD, 0x35, 0x03, 0x2C, 0x00, 0x69, 0xFD,
+ 0xE3, 0x03, 0x2E, 0x00, 0x03, 0xFD, 0xB4, 0x04,
+ 0x27, 0x00, 0x33, 0x00, 0x5A, 0x02, 0x27, 0x00,
+ 0x99, 0x00, 0x5A, 0x02, 0x27, 0x00, 0xFF, 0x00,
+ 0x5A, 0x02, 0x27, 0x00, 0x65, 0x01, 0x5A, 0x02,
+ 0x2A, 0x00, 0xCB, 0x01, 0x22, 0x03, 0x2C, 0x00,
+ 0x31, 0x02, 0xCB, 0x03, 0x2E, 0x00, 0x97, 0x02,
+ 0x98, 0x04, 0x30, 0x00, 0xFD, 0x02, 0x8F, 0x05,
+ 0x27, 0x00, 0xCD, 0xFF, 0x5A, 0x02, 0x27, 0x00,
+ 0x67, 0xFF, 0x5A, 0x02, 0x27, 0x00, 0x01, 0xFF,
+ 0x5A, 0x02, 0x27, 0x00, 0x9B, 0xFE, 0x5A, 0x02,
+ 0x2A, 0x00, 0x35, 0xFE, 0x22, 0x03, 0x2C, 0x00,
+ 0xCF, 0xFD, 0xCB, 0x03, 0x2E, 0x00, 0x69, 0xFD,
+ 0x98, 0x04, 0x30, 0x00, 0x03, 0xFD, 0x8F, 0x05,
+ 0x29, 0x00, 0x33, 0x00, 0xB6, 0x02, 0x29, 0x00,
+ 0x99, 0x00, 0xB6, 0x02, 0x29, 0x00, 0xFF, 0x00,
+ 0xB6, 0x02, 0x29, 0x00, 0x65, 0x01, 0xB6, 0x02,
+ 0x2C, 0x00, 0xCB, 0x01, 0x9D, 0x03, 0x2E, 0x00,
+ 0x31, 0x02, 0x60, 0x04, 0x30, 0x00, 0x97, 0x02,
+ 0x4D, 0x05, 0x30, 0x00, 0xFD, 0x02, 0x6A, 0x06,
+ 0x29, 0x00, 0xCD, 0xFF, 0xB6, 0x02, 0x29, 0x00,
+ 0x67, 0xFF, 0xB6, 0x02, 0x29, 0x00, 0x01, 0xFF,
+ 0xB6, 0x02, 0x29, 0x00, 0x9B, 0xFE, 0xB6, 0x02,
+ 0x2C, 0x00, 0x35, 0xFE, 0x9D, 0x03, 0x2E, 0x00,
+ 0xCF, 0xFD, 0x60, 0x04, 0x30, 0x00, 0x69, 0xFD,
+ 0x4D, 0x05, 0x30, 0x00, 0x03, 0xFD, 0x6A, 0x06,
+ 0x20, 0x00, 0x33, 0x00, 0xD2, 0xFF, 0x20, 0x00,
+ 0x99, 0x00, 0xD2, 0xFF, 0x20, 0x00, 0xFF, 0x00,
+ 0xD2, 0xFF, 0x20, 0x00, 0x65, 0x01, 0xD2, 0xFF,
+ 0x23, 0x00, 0xCB, 0x01, 0xC3, 0xFF, 0x25, 0x00,
+ 0x31, 0x02, 0xB6, 0xFF, 0x27, 0x00, 0x97, 0x02,
+ 0xA6, 0xFF, 0x29, 0x00, 0xFD, 0x02, 0x93, 0xFF,
+ 0x20, 0x00, 0xCD, 0xFF, 0xD2, 0xFF, 0x20, 0x00,
+ 0x67, 0xFF, 0xD2, 0xFF, 0x20, 0x00, 0x01, 0xFF,
+ 0xD2, 0xFF, 0x20, 0x00, 0x9B, 0xFE, 0xD2, 0xFF,
+ 0x23, 0x00, 0x35, 0xFE, 0xC3, 0xFF, 0x25, 0x00,
+ 0xCF, 0xFD, 0xB6, 0xFF, 0x27, 0x00, 0x69, 0xFD,
+ 0xA6, 0xFF, 0x29, 0x00, 0x03, 0xFD, 0x93, 0xFF,
+ 0x20, 0x00, 0x33, 0x00, 0x76, 0xFF, 0x20, 0x00,
+ 0x99, 0x00, 0x76, 0xFF, 0x20, 0x00, 0xFF, 0x00,
+ 0x76, 0xFF, 0x20, 0x00, 0x65, 0x01, 0x76, 0xFF,
+ 0x23, 0x00, 0xCB, 0x01, 0x48, 0xFF, 0x25, 0x00,
+ 0x31, 0x02, 0x21, 0xFF, 0x27, 0x00, 0x97, 0x02,
+ 0xF1, 0xFE, 0x29, 0x00, 0xFD, 0x02, 0xB8, 0xFE,
+ 0x20, 0x00, 0xCD, 0xFF, 0x76, 0xFF, 0x20, 0x00,
+ 0x67, 0xFF, 0x76, 0xFF, 0x20, 0x00, 0x01, 0xFF,
+ 0x76, 0xFF, 0x20, 0x00, 0x9B, 0xFE, 0x76, 0xFF,
+ 0x23, 0x00, 0x35, 0xFE, 0x48, 0xFF, 0x25, 0x00,
+ 0xCF, 0xFD, 0x21, 0xFF, 0x27, 0x00, 0x69, 0xFD,
+ 0xF1, 0xFE, 0x29, 0x00, 0x03, 0xFD, 0xB8, 0xFE,
+ 0x20, 0x00, 0x33, 0x00, 0x19, 0xFF, 0x20, 0x00,
+ 0x99, 0x00, 0x19, 0xFF, 0x20, 0x00, 0xFF, 0x00,
+ 0x19, 0xFF, 0x20, 0x00, 0x65, 0x01, 0x19, 0xFF,
+ 0x23, 0x00, 0xCB, 0x01, 0xCC, 0xFE, 0x25, 0x00,
+ 0x31, 0x02, 0x8B, 0xFE, 0x27, 0x00, 0x97, 0x02,
+ 0x3C, 0xFE, 0x29, 0x00, 0xFD, 0x02, 0xDD, 0xFD,
+ 0x20, 0x00, 0xCD, 0xFF, 0x19, 0xFF, 0x20, 0x00,
+ 0x67, 0xFF, 0x19, 0xFF, 0x20, 0x00, 0x01, 0xFF,
+ 0x19, 0xFF, 0x20, 0x00, 0x9B, 0xFE, 0x19, 0xFF,
+ 0x23, 0x00, 0x35, 0xFE, 0xCC, 0xFE, 0x25, 0x00,
+ 0xCF, 0xFD, 0x8B, 0xFE, 0x27, 0x00, 0x69, 0xFD,
+ 0x3C, 0xFE, 0x29, 0x00, 0x03, 0xFD, 0xDD, 0xFD,
+ 0x20, 0x00, 0x33, 0x00, 0xBD, 0xFE, 0x20, 0x00,
+ 0x99, 0x00, 0xBD, 0xFE, 0x20, 0x00, 0xFF, 0x00,
+ 0xBD, 0xFE, 0x20, 0x00, 0x65, 0x01, 0xBD, 0xFE,
+ 0x23, 0x00, 0xCB, 0x01, 0x51, 0xFE, 0x25, 0x00,
+ 0x31, 0x02, 0xF6, 0xFD, 0x27, 0x00, 0x97, 0x02,
+ 0x87, 0xFD, 0x29, 0x00, 0xFD, 0x02, 0x02, 0xFD,
+ 0x20, 0x00, 0xCD, 0xFF, 0xBD, 0xFE, 0x20, 0x00,
+ 0x67, 0xFF, 0xBD, 0xFE, 0x20, 0x00, 0x01, 0xFF,
+ 0xBD, 0xFE, 0x20, 0x00, 0x9B, 0xFE, 0xBD, 0xFE,
+ 0x23, 0x00, 0x35, 0xFE, 0x51, 0xFE, 0x25, 0x00,
+ 0xCF, 0xFD, 0xF6, 0xFD, 0x27, 0x00, 0x69, 0xFD,
+ 0x87, 0xFD, 0x29, 0x00, 0x03, 0xFD, 0x02, 0xFD,
+ 0x23, 0x00, 0x33, 0x00, 0x5F, 0xFE, 0x23, 0x00,
+ 0x99, 0x00, 0x5F, 0xFE, 0x23, 0x00, 0xFF, 0x00,
+ 0x5F, 0xFE, 0x23, 0x00, 0x65, 0x01, 0x5F, 0xFE,
+ 0x26, 0x00, 0xCB, 0x01, 0xD5, 0xFD, 0x28, 0x00,
+ 0x31, 0x02, 0x60, 0xFD, 0x2A, 0x00, 0x97, 0x02,
+ 0xD2, 0xFC, 0x2C, 0x00, 0xFD, 0x02, 0x27, 0xFC,
+ 0x23, 0x00, 0xCD, 0xFF, 0x5F, 0xFE, 0x23, 0x00,
+ 0x67, 0xFF, 0x5F, 0xFE, 0x23, 0x00, 0x01, 0xFF,
+ 0x5F, 0xFE, 0x23, 0x00, 0x9B, 0xFE, 0x5F, 0xFE,
+ 0x26, 0x00, 0x35, 0xFE, 0xD5, 0xFD, 0x28, 0x00,
+ 0xCF, 0xFD, 0x60, 0xFD, 0x2A, 0x00, 0x69, 0xFD,
+ 0xD2, 0xFC, 0x2C, 0x00, 0x03, 0xFD, 0x27, 0xFC,
+ 0x25, 0x00, 0x33, 0x00, 0x03, 0xFE, 0x25, 0x00,
+ 0x99, 0x00, 0x03, 0xFE, 0x25, 0x00, 0xFF, 0x00,
+ 0x03, 0xFE, 0x25, 0x00, 0x65, 0x01, 0x03, 0xFE,
+ 0x28, 0x00, 0xCB, 0x01, 0x5A, 0xFD, 0x2A, 0x00,
+ 0x31, 0x02, 0xCB, 0xFC, 0x2C, 0x00, 0x97, 0x02,
+ 0x1D, 0xFC, 0x2E, 0x00, 0xFD, 0x02, 0x4C, 0xFB,
+ 0x25, 0x00, 0xCD, 0xFF, 0x03, 0xFE, 0x25, 0x00,
+ 0x67, 0xFF, 0x03, 0xFE, 0x25, 0x00, 0x01, 0xFF,
+ 0x03, 0xFE, 0x25, 0x00, 0x9B, 0xFE, 0x03, 0xFE,
+ 0x28, 0x00, 0x35, 0xFE, 0x5A, 0xFD, 0x2A, 0x00,
+ 0xCF, 0xFD, 0xCB, 0xFC, 0x2C, 0x00, 0x69, 0xFD,
+ 0x1D, 0xFC, 0x2E, 0x00, 0x03, 0xFD, 0x4C, 0xFB,
+ 0x27, 0x00, 0x33, 0x00, 0xA6, 0xFD, 0x27, 0x00,
+ 0x99, 0x00, 0xA6, 0xFD, 0x27, 0x00, 0xFF, 0x00,
+ 0xA6, 0xFD, 0x27, 0x00, 0x65, 0x01, 0xA6, 0xFD,
+ 0x2A, 0x00, 0xCB, 0x01, 0xDE, 0xFC, 0x2C, 0x00,
+ 0x31, 0x02, 0x35, 0xFC, 0x2E, 0x00, 0x97, 0x02,
+ 0x68, 0xFB, 0x30, 0x00, 0xFD, 0x02, 0x71, 0xFA,
+ 0x27, 0x00, 0xCD, 0xFF, 0xA6, 0xFD, 0x27, 0x00,
+ 0x67, 0xFF, 0xA6, 0xFD, 0x27, 0x00, 0x01, 0xFF,
+ 0xA6, 0xFD, 0x27, 0x00, 0x9B, 0xFE, 0xA6, 0xFD,
+ 0x2A, 0x00, 0x35, 0xFE, 0xDE, 0xFC, 0x2C, 0x00,
+ 0xCF, 0xFD, 0x35, 0xFC, 0x2E, 0x00, 0x69, 0xFD,
+ 0x68, 0xFB, 0x30, 0x00, 0x03, 0xFD, 0x71, 0xFA,
+ 0x29, 0x00, 0x33, 0x00, 0x4A, 0xFD, 0x29, 0x00,
+ 0x99, 0x00, 0x4A, 0xFD, 0x29, 0x00, 0xFF, 0x00,
+ 0x4A, 0xFD, 0x29, 0x00, 0x65, 0x01, 0x4A, 0xFD,
+ 0x2C, 0x00, 0xCB, 0x01, 0x63, 0xFC, 0x2E, 0x00,
+ 0x31, 0x02, 0xA0, 0xFB, 0x30, 0x00, 0x97, 0x02,
+ 0xB3, 0xFA, 0x30, 0x00, 0xFD, 0x02, 0x96, 0xF9,
+ 0x29, 0x00, 0xCD, 0xFF, 0x4A, 0xFD, 0x29, 0x00,
+ 0x67, 0xFF, 0x4A, 0xFD, 0x29, 0x00, 0x01, 0xFF,
+ 0x4A, 0xFD, 0x29, 0x00, 0x9B, 0xFE, 0x4A, 0xFD,
+ 0x2C, 0x00, 0x35, 0xFE, 0x63, 0xFC, 0x2E, 0x00,
+ 0xCF, 0xFD, 0xA0, 0xFB, 0x30, 0x00, 0x69, 0xFD,
+ 0xB3, 0xFA, 0x30, 0x00, 0x03, 0xFD, 0x96, 0xF9,
+ 0x21, 0x00, 0x38, 0x00, 0x33, 0x00, 0x21, 0x00,
+ 0xA8, 0x00, 0x33, 0x00, 0x21, 0x00, 0x18, 0x01,
+ 0x33, 0x00, 0x21, 0x00, 0x88, 0x01, 0x33, 0x00,
+ 0x24, 0x00, 0xF9, 0x01, 0x44, 0x00, 0x26, 0x00,
+ 0x69, 0x02, 0x52, 0x00, 0x28, 0x00, 0xD9, 0x02,
+ 0x63, 0x00, 0x2A, 0x00, 0x49, 0x03, 0x78, 0x00,
+ 0x21, 0x00, 0xC8, 0xFF, 0x33, 0x00, 0x21, 0x00,
+ 0x58, 0xFF, 0x33, 0x00, 0x21, 0x00, 0xE8, 0xFE,
+ 0x33, 0x00, 0x21, 0x00, 0x78, 0xFE, 0x33, 0x00,
+ 0x24, 0x00, 0x07, 0xFE, 0x44, 0x00, 0x26, 0x00,
+ 0x97, 0xFD, 0x52, 0x00, 0x28, 0x00, 0x27, 0xFD,
+ 0x63, 0x00, 0x2A, 0x00, 0xB7, 0xFC, 0x78, 0x00,
+ 0x21, 0x00, 0x38, 0x00, 0x99, 0x00, 0x21, 0x00,
+ 0xA8, 0x00, 0x99, 0x00, 0x21, 0x00, 0x18, 0x01,
+ 0x99, 0x00, 0x21, 0x00, 0x88, 0x01, 0x99, 0x00,
+ 0x24, 0x00, 0xF9, 0x01, 0xCC, 0x00, 0x26, 0x00,
+ 0x69, 0x02, 0xF6, 0x00, 0x28, 0x00, 0xD9, 0x02,
+ 0x2A, 0x01, 0x2A, 0x00, 0x49, 0x03, 0x68, 0x01,
+ 0x21, 0x00, 0xC8, 0xFF, 0x99, 0x00, 0x21, 0x00,
+ 0x58, 0xFF, 0x99, 0x00, 0x21, 0x00, 0xE8, 0xFE,
+ 0x99, 0x00, 0x21, 0x00, 0x78, 0xFE, 0x99, 0x00,
+ 0x24, 0x00, 0x07, 0xFE, 0xCC, 0x00, 0x26, 0x00,
+ 0x97, 0xFD, 0xF6, 0x00, 0x28, 0x00, 0x27, 0xFD,
+ 0x2A, 0x01, 0x2A, 0x00, 0xB7, 0xFC, 0x68, 0x01,
+ 0x21, 0x00, 0x38, 0x00, 0xFF, 0x00, 0x21, 0x00,
+ 0xA8, 0x00, 0xFF, 0x00, 0x21, 0x00, 0x18, 0x01,
+ 0xFF, 0x00, 0x21, 0x00, 0x88, 0x01, 0xFF, 0x00,
+ 0x24, 0x00, 0xF9, 0x01, 0x54, 0x01, 0x26, 0x00,
+ 0x69, 0x02, 0x9B, 0x01, 0x28, 0x00, 0xD9, 0x02,
+ 0xF1, 0x01, 0x2A, 0x00, 0x49, 0x03, 0x59, 0x02,
+ 0x21, 0x00, 0xC8, 0xFF, 0xFF, 0x00, 0x21, 0x00,
+ 0x58, 0xFF, 0xFF, 0x00, 0x21, 0x00, 0xE8, 0xFE,
+ 0xFF, 0x00, 0x21, 0x00, 0x78, 0xFE, 0xFF, 0x00,
+ 0x24, 0x00, 0x07, 0xFE, 0x54, 0x01, 0x26, 0x00,
+ 0x97, 0xFD, 0x9B, 0x01, 0x28, 0x00, 0x27, 0xFD,
+ 0xF1, 0x01, 0x2A, 0x00, 0xB7, 0xFC, 0x59, 0x02,
+ 0x21, 0x00, 0x38, 0x00, 0x65, 0x01, 0x21, 0x00,
+ 0xA8, 0x00, 0x65, 0x01, 0x21, 0x00, 0x18, 0x01,
+ 0x65, 0x01, 0x21, 0x00, 0x88, 0x01, 0x65, 0x01,
+ 0x24, 0x00, 0xF9, 0x01, 0xDC, 0x01, 0x26, 0x00,
+ 0x69, 0x02, 0x3F, 0x02, 0x28, 0x00, 0xD9, 0x02,
+ 0xB8, 0x02, 0x2A, 0x00, 0x49, 0x03, 0x49, 0x03,
+ 0x21, 0x00, 0xC8, 0xFF, 0x65, 0x01, 0x21, 0x00,
+ 0x58, 0xFF, 0x65, 0x01, 0x21, 0x00, 0xE8, 0xFE,
+ 0x65, 0x01, 0x21, 0x00, 0x78, 0xFE, 0x65, 0x01,
+ 0x24, 0x00, 0x07, 0xFE, 0xDC, 0x01, 0x26, 0x00,
+ 0x97, 0xFD, 0x3F, 0x02, 0x28, 0x00, 0x27, 0xFD,
+ 0xB8, 0x02, 0x2A, 0x00, 0xB7, 0xFC, 0x49, 0x03,
+ 0x24, 0x00, 0x38, 0x00, 0xCB, 0x01, 0x24, 0x00,
+ 0xA8, 0x00, 0xCB, 0x01, 0x24, 0x00, 0x18, 0x01,
+ 0xCB, 0x01, 0x24, 0x00, 0x88, 0x01, 0xCB, 0x01,
+ 0x27, 0x00, 0xF9, 0x01, 0x64, 0x02, 0x29, 0x00,
+ 0x69, 0x02, 0xE4, 0x02, 0x2B, 0x00, 0xD9, 0x02,
+ 0x7F, 0x03, 0x2D, 0x00, 0x49, 0x03, 0x3B, 0x04,
+ 0x24, 0x00, 0xC8, 0xFF, 0xCB, 0x01, 0x24, 0x00,
+ 0x58, 0xFF, 0xCB, 0x01, 0x24, 0x00, 0xE8, 0xFE,
+ 0xCB, 0x01, 0x24, 0x00, 0x78, 0xFE, 0xCB, 0x01,
+ 0x27, 0x00, 0x07, 0xFE, 0x64, 0x02, 0x29, 0x00,
+ 0x97, 0xFD, 0xE4, 0x02, 0x2B, 0x00, 0x27, 0xFD,
+ 0x7F, 0x03, 0x2D, 0x00, 0xB7, 0xFC, 0x3B, 0x04,
+ 0x26, 0x00, 0x38, 0x00, 0x31, 0x02, 0x26, 0x00,
+ 0xA8, 0x00, 0x31, 0x02, 0x26, 0x00, 0x18, 0x01,
+ 0x31, 0x02, 0x26, 0x00, 0x88, 0x01, 0x31, 0x02,
+ 0x29, 0x00, 0xF9, 0x01, 0xEC, 0x02, 0x2B, 0x00,
+ 0x69, 0x02, 0x88, 0x03, 0x2D, 0x00, 0xD9, 0x02,
+ 0x46, 0x04, 0x2F, 0x00, 0x49, 0x03, 0x2B, 0x05,
+ 0x26, 0x00, 0xC8, 0xFF, 0x31, 0x02, 0x26, 0x00,
+ 0x58, 0xFF, 0x31, 0x02, 0x26, 0x00, 0xE8, 0xFE,
+ 0x31, 0x02, 0x26, 0x00, 0x78, 0xFE, 0x31, 0x02,
+ 0x29, 0x00, 0x07, 0xFE, 0xEC, 0x02, 0x2B, 0x00,
+ 0x97, 0xFD, 0x88, 0x03, 0x2D, 0x00, 0x27, 0xFD,
+ 0x46, 0x04, 0x2F, 0x00, 0xB7, 0xFC, 0x2B, 0x05,
+ 0x28, 0x00, 0x38, 0x00, 0x97, 0x02, 0x28, 0x00,
+ 0xA8, 0x00, 0x97, 0x02, 0x28, 0x00, 0x18, 0x01,
+ 0x97, 0x02, 0x28, 0x00, 0x88, 0x01, 0x97, 0x02,
+ 0x2B, 0x00, 0xF9, 0x01, 0x74, 0x03, 0x2D, 0x00,
+ 0x69, 0x02, 0x2D, 0x04, 0x2F, 0x00, 0xD9, 0x02,
+ 0x0D, 0x05, 0x30, 0x00, 0x49, 0x03, 0x1C, 0x06,
+ 0x28, 0x00, 0xC8, 0xFF, 0x97, 0x02, 0x28, 0x00,
+ 0x58, 0xFF, 0x97, 0x02, 0x28, 0x00, 0xE8, 0xFE,
+ 0x97, 0x02, 0x28, 0x00, 0x78, 0xFE, 0x97, 0x02,
+ 0x2B, 0x00, 0x07, 0xFE, 0x74, 0x03, 0x2D, 0x00,
+ 0x97, 0xFD, 0x2D, 0x04, 0x2F, 0x00, 0x27, 0xFD,
+ 0x0D, 0x05, 0x30, 0x00, 0xB7, 0xFC, 0x1C, 0x06,
+ 0x2A, 0x00, 0x38, 0x00, 0xFD, 0x02, 0x2A, 0x00,
+ 0xA8, 0x00, 0xFD, 0x02, 0x2A, 0x00, 0x18, 0x01,
+ 0xFD, 0x02, 0x2A, 0x00, 0x88, 0x01, 0xFD, 0x02,
+ 0x2D, 0x00, 0xF9, 0x01, 0xFC, 0x03, 0x2F, 0x00,
+ 0x69, 0x02, 0xD1, 0x04, 0x30, 0x00, 0xD9, 0x02,
+ 0xD4, 0x05, 0x30, 0x00, 0x49, 0x03, 0x0C, 0x07,
+ 0x2A, 0x00, 0xC8, 0xFF, 0xFD, 0x02, 0x2A, 0x00,
+ 0x58, 0xFF, 0xFD, 0x02, 0x2A, 0x00, 0xE8, 0xFE,
+ 0xFD, 0x02, 0x2A, 0x00, 0x78, 0xFE, 0xFD, 0x02,
+ 0x2D, 0x00, 0x07, 0xFE, 0xFC, 0x03, 0x2F, 0x00,
+ 0x97, 0xFD, 0xD1, 0x04, 0x30, 0x00, 0x27, 0xFD,
+ 0xD4, 0x05, 0x30, 0x00, 0xB7, 0xFC, 0x0C, 0x07,
+ 0x21, 0x00, 0x38, 0x00, 0xCD, 0xFF, 0x21, 0x00,
+ 0xA8, 0x00, 0xCD, 0xFF, 0x21, 0x00, 0x18, 0x01,
+ 0xCD, 0xFF, 0x21, 0x00, 0x88, 0x01, 0xCD, 0xFF,
+ 0x24, 0x00, 0xF9, 0x01, 0xBC, 0xFF, 0x26, 0x00,
+ 0x69, 0x02, 0xAE, 0xFF, 0x28, 0x00, 0xD9, 0x02,
+ 0x9D, 0xFF, 0x2A, 0x00, 0x49, 0x03, 0x88, 0xFF,
+ 0x21, 0x00, 0xC8, 0xFF, 0xCD, 0xFF, 0x21, 0x00,
+ 0x58, 0xFF, 0xCD, 0xFF, 0x21, 0x00, 0xE8, 0xFE,
+ 0xCD, 0xFF, 0x21, 0x00, 0x78, 0xFE, 0xCD, 0xFF,
+ 0x24, 0x00, 0x07, 0xFE, 0xBC, 0xFF, 0x26, 0x00,
+ 0x97, 0xFD, 0xAE, 0xFF, 0x28, 0x00, 0x27, 0xFD,
+ 0x9D, 0xFF, 0x2A, 0x00, 0xB7, 0xFC, 0x88, 0xFF,
+ 0x21, 0x00, 0x38, 0x00, 0x67, 0xFF, 0x21, 0x00,
+ 0xA8, 0x00, 0x67, 0xFF, 0x21, 0x00, 0x18, 0x01,
+ 0x67, 0xFF, 0x21, 0x00, 0x88, 0x01, 0x67, 0xFF,
+ 0x24, 0x00, 0xF9, 0x01, 0x34, 0xFF, 0x26, 0x00,
+ 0x69, 0x02, 0x0A, 0xFF, 0x28, 0x00, 0xD9, 0x02,
+ 0xD6, 0xFE, 0x2A, 0x00, 0x49, 0x03, 0x98, 0xFE,
+ 0x21, 0x00, 0xC8, 0xFF, 0x67, 0xFF, 0x21, 0x00,
+ 0x58, 0xFF, 0x67, 0xFF, 0x21, 0x00, 0xE8, 0xFE,
+ 0x67, 0xFF, 0x21, 0x00, 0x78, 0xFE, 0x67, 0xFF,
+ 0x24, 0x00, 0x07, 0xFE, 0x34, 0xFF, 0x26, 0x00,
+ 0x97, 0xFD, 0x0A, 0xFF, 0x28, 0x00, 0x27, 0xFD,
+ 0xD6, 0xFE, 0x2A, 0x00, 0xB7, 0xFC, 0x98, 0xFE,
+ 0x21, 0x00, 0x38, 0x00, 0x01, 0xFF, 0x21, 0x00,
+ 0xA8, 0x00, 0x01, 0xFF, 0x21, 0x00, 0x18, 0x01,
+ 0x01, 0xFF, 0x21, 0x00, 0x88, 0x01, 0x01, 0xFF,
+ 0x24, 0x00, 0xF9, 0x01, 0xAC, 0xFE, 0x26, 0x00,
+ 0x69, 0x02, 0x65, 0xFE, 0x28, 0x00, 0xD9, 0x02,
+ 0x0F, 0xFE, 0x2A, 0x00, 0x49, 0x03, 0xA7, 0xFD,
+ 0x21, 0x00, 0xC8, 0xFF, 0x01, 0xFF, 0x21, 0x00,
+ 0x58, 0xFF, 0x01, 0xFF, 0x21, 0x00, 0xE8, 0xFE,
+ 0x01, 0xFF, 0x21, 0x00, 0x78, 0xFE, 0x01, 0xFF,
+ 0x24, 0x00, 0x07, 0xFE, 0xAC, 0xFE, 0x26, 0x00,
+ 0x97, 0xFD, 0x65, 0xFE, 0x28, 0x00, 0x27, 0xFD,
+ 0x0F, 0xFE, 0x2A, 0x00, 0xB7, 0xFC, 0xA7, 0xFD,
+ 0x21, 0x00, 0x38, 0x00, 0x9B, 0xFE, 0x21, 0x00,
+ 0xA8, 0x00, 0x9B, 0xFE, 0x21, 0x00, 0x18, 0x01,
+ 0x9B, 0xFE, 0x21, 0x00, 0x88, 0x01, 0x9B, 0xFE,
+ 0x24, 0x00, 0xF9, 0x01, 0x24, 0xFE, 0x26, 0x00,
+ 0x69, 0x02, 0xC1, 0xFD, 0x28, 0x00, 0xD9, 0x02,
+ 0x48, 0xFD, 0x2A, 0x00, 0x49, 0x03, 0xB7, 0xFC,
+ 0x21, 0x00, 0xC8, 0xFF, 0x9B, 0xFE, 0x21, 0x00,
+ 0x58, 0xFF, 0x9B, 0xFE, 0x21, 0x00, 0xE8, 0xFE,
+ 0x9B, 0xFE, 0x21, 0x00, 0x78, 0xFE, 0x9B, 0xFE,
+ 0x24, 0x00, 0x07, 0xFE, 0x24, 0xFE, 0x26, 0x00,
+ 0x97, 0xFD, 0xC1, 0xFD, 0x28, 0x00, 0x27, 0xFD,
+ 0x48, 0xFD, 0x2A, 0x00, 0xB7, 0xFC, 0xB7, 0xFC,
+ 0x24, 0x00, 0x38, 0x00, 0x35, 0xFE, 0x24, 0x00,
+ 0xA8, 0x00, 0x35, 0xFE, 0x24, 0x00, 0x18, 0x01,
+ 0x35, 0xFE, 0x24, 0x00, 0x88, 0x01, 0x35, 0xFE,
+ 0x27, 0x00, 0xF9, 0x01, 0x9C, 0xFD, 0x29, 0x00,
+ 0x69, 0x02, 0x1C, 0xFD, 0x2B, 0x00, 0xD9, 0x02,
+ 0x81, 0xFC, 0x2D, 0x00, 0x49, 0x03, 0xC5, 0xFB,
+ 0x24, 0x00, 0xC8, 0xFF, 0x35, 0xFE, 0x24, 0x00,
+ 0x58, 0xFF, 0x35, 0xFE, 0x24, 0x00, 0xE8, 0xFE,
+ 0x35, 0xFE, 0x24, 0x00, 0x78, 0xFE, 0x35, 0xFE,
+ 0x27, 0x00, 0x07, 0xFE, 0x9C, 0xFD, 0x29, 0x00,
+ 0x97, 0xFD, 0x1C, 0xFD, 0x2B, 0x00, 0x27, 0xFD,
+ 0x81, 0xFC, 0x2D, 0x00, 0xB7, 0xFC, 0xC5, 0xFB,
+ 0x26, 0x00, 0x38, 0x00, 0xCF, 0xFD, 0x26, 0x00,
+ 0xA8, 0x00, 0xCF, 0xFD, 0x26, 0x00, 0x18, 0x01,
+ 0xCF, 0xFD, 0x26, 0x00, 0x88, 0x01, 0xCF, 0xFD,
+ 0x29, 0x00, 0xF9, 0x01, 0x14, 0xFD, 0x2B, 0x00,
+ 0x69, 0x02, 0x78, 0xFC, 0x2D, 0x00, 0xD9, 0x02,
+ 0xBA, 0xFB, 0x2F, 0x00, 0x49, 0x03, 0xD5, 0xFA,
+ 0x26, 0x00, 0xC8, 0xFF, 0xCF, 0xFD, 0x26, 0x00,
+ 0x58, 0xFF, 0xCF, 0xFD, 0x26, 0x00, 0xE8, 0xFE,
+ 0xCF, 0xFD, 0x26, 0x00, 0x78, 0xFE, 0xCF, 0xFD,
+ 0x29, 0x00, 0x07, 0xFE, 0x14, 0xFD, 0x2B, 0x00,
+ 0x97, 0xFD, 0x78, 0xFC, 0x2D, 0x00, 0x27, 0xFD,
+ 0xBA, 0xFB, 0x2F, 0x00, 0xB7, 0xFC, 0xD5, 0xFA,
+ 0x28, 0x00, 0x38, 0x00, 0x69, 0xFD, 0x28, 0x00,
+ 0xA8, 0x00, 0x69, 0xFD, 0x28, 0x00, 0x18, 0x01,
+ 0x69, 0xFD, 0x28, 0x00, 0x88, 0x01, 0x69, 0xFD,
+ 0x2B, 0x00, 0xF9, 0x01, 0x8C, 0xFC, 0x2D, 0x00,
+ 0x69, 0x02, 0xD3, 0xFB, 0x2F, 0x00, 0xD9, 0x02,
+ 0xF3, 0xFA, 0x30, 0x00, 0x49, 0x03, 0xE4, 0xF9,
+ 0x28, 0x00, 0xC8, 0xFF, 0x69, 0xFD, 0x28, 0x00,
+ 0x58, 0xFF, 0x69, 0xFD, 0x28, 0x00, 0xE8, 0xFE,
+ 0x69, 0xFD, 0x28, 0x00, 0x78, 0xFE, 0x69, 0xFD,
+ 0x2B, 0x00, 0x07, 0xFE, 0x8C, 0xFC, 0x2D, 0x00,
+ 0x97, 0xFD, 0xD3, 0xFB, 0x2F, 0x00, 0x27, 0xFD,
+ 0xF3, 0xFA, 0x30, 0x00, 0xB7, 0xFC, 0xE4, 0xF9,
+ 0x2A, 0x00, 0x38, 0x00, 0x03, 0xFD, 0x2A, 0x00,
+ 0xA8, 0x00, 0x03, 0xFD, 0x2A, 0x00, 0x18, 0x01,
+ 0x03, 0xFD, 0x2A, 0x00, 0x88, 0x01, 0x03, 0xFD,
+ 0x2D, 0x00, 0xF9, 0x01, 0x04, 0xFC, 0x2F, 0x00,
+ 0x69, 0x02, 0x2F, 0xFB, 0x30, 0x00, 0xD9, 0x02,
+ 0x2C, 0xFA, 0x30, 0x00, 0x49, 0x03, 0xF4, 0xF8,
+ 0x2A, 0x00, 0xC8, 0xFF, 0x03, 0xFD, 0x2A, 0x00,
+ 0x58, 0xFF, 0x03, 0xFD, 0x2A, 0x00, 0xE8, 0xFE,
+ 0x03, 0xFD, 0x2A, 0x00, 0x78, 0xFE, 0x03, 0xFD,
+ 0x2D, 0x00, 0x07, 0xFE, 0x04, 0xFC, 0x2F, 0x00,
+ 0x97, 0xFD, 0x2F, 0xFB, 0x30, 0x00, 0x27, 0xFD,
+ 0x2C, 0xFA, 0x30, 0x00, 0xB7, 0xFC, 0xF4, 0xF8,
+ 0x22, 0x00, 0x3D, 0x00, 0x38, 0x00, 0x22, 0x00,
+ 0xB8, 0x00, 0x38, 0x00, 0x22, 0x00, 0x34, 0x01,
+ 0x38, 0x00, 0x22, 0x00, 0xAF, 0x01, 0x38, 0x00,
+ 0x25, 0x00, 0x2B, 0x02, 0x4A, 0x00, 0x27, 0x00,
+ 0xA6, 0x02, 0x5A, 0x00, 0x29, 0x00, 0x22, 0x03,
+ 0x6D, 0x00, 0x2B, 0x00, 0x9D, 0x03, 0x84, 0x00,
+ 0x22, 0x00, 0xC3, 0xFF, 0x38, 0x00, 0x22, 0x00,
+ 0x48, 0xFF, 0x38, 0x00, 0x22, 0x00, 0xCC, 0xFE,
+ 0x38, 0x00, 0x22, 0x00, 0x51, 0xFE, 0x38, 0x00,
+ 0x25, 0x00, 0xD5, 0xFD, 0x4A, 0x00, 0x27, 0x00,
+ 0x5A, 0xFD, 0x5A, 0x00, 0x29, 0x00, 0xDE, 0xFC,
+ 0x6D, 0x00, 0x2B, 0x00, 0x63, 0xFC, 0x84, 0x00,
+ 0x22, 0x00, 0x3D, 0x00, 0xA8, 0x00, 0x22, 0x00,
+ 0xB8, 0x00, 0xA8, 0x00, 0x22, 0x00, 0x34, 0x01,
+ 0xA8, 0x00, 0x22, 0x00, 0xAF, 0x01, 0xA8, 0x00,
+ 0x25, 0x00, 0x2B, 0x02, 0xDF, 0x00, 0x27, 0x00,
+ 0xA6, 0x02, 0x0F, 0x01, 0x29, 0x00, 0x22, 0x03,
+ 0x48, 0x01, 0x2B, 0x00, 0x9D, 0x03, 0x8D, 0x01,
+ 0x22, 0x00, 0xC3, 0xFF, 0xA8, 0x00, 0x22, 0x00,
+ 0x48, 0xFF, 0xA8, 0x00, 0x22, 0x00, 0xCC, 0xFE,
+ 0xA8, 0x00, 0x22, 0x00, 0x51, 0xFE, 0xA8, 0x00,
+ 0x25, 0x00, 0xD5, 0xFD, 0xDF, 0x00, 0x27, 0x00,
+ 0x5A, 0xFD, 0x0F, 0x01, 0x29, 0x00, 0xDE, 0xFC,
+ 0x48, 0x01, 0x2B, 0x00, 0x63, 0xFC, 0x8D, 0x01,
+ 0x22, 0x00, 0x3D, 0x00, 0x18, 0x01, 0x22, 0x00,
+ 0xB8, 0x00, 0x18, 0x01, 0x22, 0x00, 0x34, 0x01,
+ 0x18, 0x01, 0x22, 0x00, 0xAF, 0x01, 0x18, 0x01,
+ 0x25, 0x00, 0x2B, 0x02, 0x75, 0x01, 0x27, 0x00,
+ 0xA6, 0x02, 0xC4, 0x01, 0x29, 0x00, 0x22, 0x03,
+ 0x23, 0x02, 0x2B, 0x00, 0x9D, 0x03, 0x96, 0x02,
+ 0x22, 0x00, 0xC3, 0xFF, 0x18, 0x01, 0x22, 0x00,
+ 0x48, 0xFF, 0x18, 0x01, 0x22, 0x00, 0xCC, 0xFE,
+ 0x18, 0x01, 0x22, 0x00, 0x51, 0xFE, 0x18, 0x01,
+ 0x25, 0x00, 0xD5, 0xFD, 0x75, 0x01, 0x27, 0x00,
+ 0x5A, 0xFD, 0xC4, 0x01, 0x29, 0x00, 0xDE, 0xFC,
+ 0x23, 0x02, 0x2B, 0x00, 0x63, 0xFC, 0x96, 0x02,
+ 0x22, 0x00, 0x3D, 0x00, 0x88, 0x01, 0x22, 0x00,
+ 0xB8, 0x00, 0x88, 0x01, 0x22, 0x00, 0x34, 0x01,
+ 0x88, 0x01, 0x22, 0x00, 0xAF, 0x01, 0x88, 0x01,
+ 0x25, 0x00, 0x2B, 0x02, 0x0A, 0x02, 0x27, 0x00,
+ 0xA6, 0x02, 0x79, 0x02, 0x29, 0x00, 0x22, 0x03,
+ 0xFE, 0x02, 0x2B, 0x00, 0x9D, 0x03, 0x9F, 0x03,
+ 0x22, 0x00, 0xC3, 0xFF, 0x88, 0x01, 0x22, 0x00,
+ 0x48, 0xFF, 0x88, 0x01, 0x22, 0x00, 0xCC, 0xFE,
+ 0x88, 0x01, 0x22, 0x00, 0x51, 0xFE, 0x88, 0x01,
+ 0x25, 0x00, 0xD5, 0xFD, 0x0A, 0x02, 0x27, 0x00,
+ 0x5A, 0xFD, 0x79, 0x02, 0x29, 0x00, 0xDE, 0xFC,
+ 0xFE, 0x02, 0x2B, 0x00, 0x63, 0xFC, 0x9F, 0x03,
+ 0x25, 0x00, 0x3D, 0x00, 0xF9, 0x01, 0x25, 0x00,
+ 0xB8, 0x00, 0xF9, 0x01, 0x25, 0x00, 0x34, 0x01,
+ 0xF9, 0x01, 0x25, 0x00, 0xAF, 0x01, 0xF9, 0x01,
+ 0x28, 0x00, 0x2B, 0x02, 0xA0, 0x02, 0x2A, 0x00,
+ 0xA6, 0x02, 0x2E, 0x03, 0x2C, 0x00, 0x22, 0x03,
+ 0xD9, 0x03, 0x2E, 0x00, 0x9D, 0x03, 0xA8, 0x04,
+ 0x25, 0x00, 0xC3, 0xFF, 0xF9, 0x01, 0x25, 0x00,
+ 0x48, 0xFF, 0xF9, 0x01, 0x25, 0x00, 0xCC, 0xFE,
+ 0xF9, 0x01, 0x25, 0x00, 0x51, 0xFE, 0xF9, 0x01,
+ 0x28, 0x00, 0xD5, 0xFD, 0xA0, 0x02, 0x2A, 0x00,
+ 0x5A, 0xFD, 0x2E, 0x03, 0x2C, 0x00, 0xDE, 0xFC,
+ 0xD9, 0x03, 0x2E, 0x00, 0x63, 0xFC, 0xA8, 0x04,
+ 0x27, 0x00, 0x3D, 0x00, 0x69, 0x02, 0x27, 0x00,
+ 0xB8, 0x00, 0x69, 0x02, 0x27, 0x00, 0x34, 0x01,
+ 0x69, 0x02, 0x27, 0x00, 0xAF, 0x01, 0x69, 0x02,
+ 0x2A, 0x00, 0x2B, 0x02, 0x35, 0x03, 0x2C, 0x00,
+ 0xA6, 0x02, 0xE3, 0x03, 0x2E, 0x00, 0x22, 0x03,
+ 0xB4, 0x04, 0x30, 0x00, 0x9D, 0x03, 0xB1, 0x05,
+ 0x27, 0x00, 0xC3, 0xFF, 0x69, 0x02, 0x27, 0x00,
+ 0x48, 0xFF, 0x69, 0x02, 0x27, 0x00, 0xCC, 0xFE,
+ 0x69, 0x02, 0x27, 0x00, 0x51, 0xFE, 0x69, 0x02,
+ 0x2A, 0x00, 0xD5, 0xFD, 0x35, 0x03, 0x2C, 0x00,
+ 0x5A, 0xFD, 0xE3, 0x03, 0x2E, 0x00, 0xDE, 0xFC,
+ 0xB4, 0x04, 0x30, 0x00, 0x63, 0xFC, 0xB1, 0x05,
+ 0x29, 0x00, 0x3D, 0x00, 0xD9, 0x02, 0x29, 0x00,
+ 0xB8, 0x00, 0xD9, 0x02, 0x29, 0x00, 0x34, 0x01,
+ 0xD9, 0x02, 0x29, 0x00, 0xAF, 0x01, 0xD9, 0x02,
+ 0x2C, 0x00, 0x2B, 0x02, 0xCB, 0x03, 0x2E, 0x00,
+ 0xA6, 0x02, 0x98, 0x04, 0x30, 0x00, 0x22, 0x03,
+ 0x8F, 0x05, 0x30, 0x00, 0x9D, 0x03, 0xBA, 0x06,
+ 0x29, 0x00, 0xC3, 0xFF, 0xD9, 0x02, 0x29, 0x00,
+ 0x48, 0xFF, 0xD9, 0x02, 0x29, 0x00, 0xCC, 0xFE,
+ 0xD9, 0x02, 0x29, 0x00, 0x51, 0xFE, 0xD9, 0x02,
+ 0x2C, 0x00, 0xD5, 0xFD, 0xCB, 0x03, 0x2E, 0x00,
+ 0x5A, 0xFD, 0x98, 0x04, 0x30, 0x00, 0xDE, 0xFC,
+ 0x8F, 0x05, 0x30, 0x00, 0x63, 0xFC, 0xBA, 0x06,
+ 0x2B, 0x00, 0x3D, 0x00, 0x49, 0x03, 0x2B, 0x00,
+ 0xB8, 0x00, 0x49, 0x03, 0x2B, 0x00, 0x34, 0x01,
+ 0x49, 0x03, 0x2B, 0x00, 0xAF, 0x01, 0x49, 0x03,
+ 0x2E, 0x00, 0x2B, 0x02, 0x60, 0x04, 0x30, 0x00,
+ 0xA6, 0x02, 0x4D, 0x05, 0x30, 0x00, 0x22, 0x03,
+ 0x6A, 0x06, 0x30, 0x00, 0x9D, 0x03, 0xC3, 0x07,
+ 0x2B, 0x00, 0xC3, 0xFF, 0x49, 0x03, 0x2B, 0x00,
+ 0x48, 0xFF, 0x49, 0x03, 0x2B, 0x00, 0xCC, 0xFE,
+ 0x49, 0x03, 0x2B, 0x00, 0x51, 0xFE, 0x49, 0x03,
+ 0x2E, 0x00, 0xD5, 0xFD, 0x60, 0x04, 0x30, 0x00,
+ 0x5A, 0xFD, 0x4D, 0x05, 0x30, 0x00, 0xDE, 0xFC,
+ 0x6A, 0x06, 0x30, 0x00, 0x63, 0xFC, 0xC3, 0x07,
+ 0x22, 0x00, 0x3D, 0x00, 0xC8, 0xFF, 0x22, 0x00,
+ 0xB8, 0x00, 0xC8, 0xFF, 0x22, 0x00, 0x34, 0x01,
+ 0xC8, 0xFF, 0x22, 0x00, 0xAF, 0x01, 0xC8, 0xFF,
+ 0x25, 0x00, 0x2B, 0x02, 0xB6, 0xFF, 0x27, 0x00,
+ 0xA6, 0x02, 0xA6, 0xFF, 0x29, 0x00, 0x22, 0x03,
+ 0x93, 0xFF, 0x2B, 0x00, 0x9D, 0x03, 0x7C, 0xFF,
+ 0x22, 0x00, 0xC3, 0xFF, 0xC8, 0xFF, 0x22, 0x00,
+ 0x48, 0xFF, 0xC8, 0xFF, 0x22, 0x00, 0xCC, 0xFE,
+ 0xC8, 0xFF, 0x22, 0x00, 0x51, 0xFE, 0xC8, 0xFF,
+ 0x25, 0x00, 0xD5, 0xFD, 0xB6, 0xFF, 0x27, 0x00,
+ 0x5A, 0xFD, 0xA6, 0xFF, 0x29, 0x00, 0xDE, 0xFC,
+ 0x93, 0xFF, 0x2B, 0x00, 0x63, 0xFC, 0x7C, 0xFF,
+ 0x22, 0x00, 0x3D, 0x00, 0x58, 0xFF, 0x22, 0x00,
+ 0xB8, 0x00, 0x58, 0xFF, 0x22, 0x00, 0x34, 0x01,
+ 0x58, 0xFF, 0x22, 0x00, 0xAF, 0x01, 0x58, 0xFF,
+ 0x25, 0x00, 0x2B, 0x02, 0x21, 0xFF, 0x27, 0x00,
+ 0xA6, 0x02, 0xF1, 0xFE, 0x29, 0x00, 0x22, 0x03,
+ 0xB8, 0xFE, 0x2B, 0x00, 0x9D, 0x03, 0x73, 0xFE,
+ 0x22, 0x00, 0xC3, 0xFF, 0x58, 0xFF, 0x22, 0x00,
+ 0x48, 0xFF, 0x58, 0xFF, 0x22, 0x00, 0xCC, 0xFE,
+ 0x58, 0xFF, 0x22, 0x00, 0x51, 0xFE, 0x58, 0xFF,
+ 0x25, 0x00, 0xD5, 0xFD, 0x21, 0xFF, 0x27, 0x00,
+ 0x5A, 0xFD, 0xF1, 0xFE, 0x29, 0x00, 0xDE, 0xFC,
+ 0xB8, 0xFE, 0x2B, 0x00, 0x63, 0xFC, 0x73, 0xFE,
+ 0x22, 0x00, 0x3D, 0x00, 0xE8, 0xFE, 0x22, 0x00,
+ 0xB8, 0x00, 0xE8, 0xFE, 0x22, 0x00, 0x34, 0x01,
+ 0xE8, 0xFE, 0x22, 0x00, 0xAF, 0x01, 0xE8, 0xFE,
+ 0x25, 0x00, 0x2B, 0x02, 0x8B, 0xFE, 0x27, 0x00,
+ 0xA6, 0x02, 0x3C, 0xFE, 0x29, 0x00, 0x22, 0x03,
+ 0xDD, 0xFD, 0x2B, 0x00, 0x9D, 0x03, 0x6A, 0xFD,
+ 0x22, 0x00, 0xC3, 0xFF, 0xE8, 0xFE, 0x22, 0x00,
+ 0x48, 0xFF, 0xE8, 0xFE, 0x22, 0x00, 0xCC, 0xFE,
+ 0xE8, 0xFE, 0x22, 0x00, 0x51, 0xFE, 0xE8, 0xFE,
+ 0x25, 0x00, 0xD5, 0xFD, 0x8B, 0xFE, 0x27, 0x00,
+ 0x5A, 0xFD, 0x3C, 0xFE, 0x29, 0x00, 0xDE, 0xFC,
+ 0xDD, 0xFD, 0x2B, 0x00, 0x63, 0xFC, 0x6A, 0xFD,
+ 0x22, 0x00, 0x3D, 0x00, 0x78, 0xFE, 0x22, 0x00,
+ 0xB8, 0x00, 0x78, 0xFE, 0x22, 0x00, 0x34, 0x01,
+ 0x78, 0xFE, 0x22, 0x00, 0xAF, 0x01, 0x78, 0xFE,
+ 0x25, 0x00, 0x2B, 0x02, 0xF6, 0xFD, 0x27, 0x00,
+ 0xA6, 0x02, 0x87, 0xFD, 0x29, 0x00, 0x22, 0x03,
+ 0x02, 0xFD, 0x2B, 0x00, 0x9D, 0x03, 0x61, 0xFC,
+ 0x22, 0x00, 0xC3, 0xFF, 0x78, 0xFE, 0x22, 0x00,
+ 0x48, 0xFF, 0x78, 0xFE, 0x22, 0x00, 0xCC, 0xFE,
+ 0x78, 0xFE, 0x22, 0x00, 0x51, 0xFE, 0x78, 0xFE,
+ 0x25, 0x00, 0xD5, 0xFD, 0xF6, 0xFD, 0x27, 0x00,
+ 0x5A, 0xFD, 0x87, 0xFD, 0x29, 0x00, 0xDE, 0xFC,
+ 0x02, 0xFD, 0x2B, 0x00, 0x63, 0xFC, 0x61, 0xFC,
+ 0x25, 0x00, 0x3D, 0x00, 0x07, 0xFE, 0x25, 0x00,
+ 0xB8, 0x00, 0x07, 0xFE, 0x25, 0x00, 0x34, 0x01,
+ 0x07, 0xFE, 0x25, 0x00, 0xAF, 0x01, 0x07, 0xFE,
+ 0x28, 0x00, 0x2B, 0x02, 0x60, 0xFD, 0x2A, 0x00,
+ 0xA6, 0x02, 0xD2, 0xFC, 0x2C, 0x00, 0x22, 0x03,
+ 0x27, 0xFC, 0x2E, 0x00, 0x9D, 0x03, 0x58, 0xFB,
+ 0x25, 0x00, 0xC3, 0xFF, 0x07, 0xFE, 0x25, 0x00,
+ 0x48, 0xFF, 0x07, 0xFE, 0x25, 0x00, 0xCC, 0xFE,
+ 0x07, 0xFE, 0x25, 0x00, 0x51, 0xFE, 0x07, 0xFE,
+ 0x28, 0x00, 0xD5, 0xFD, 0x60, 0xFD, 0x2A, 0x00,
+ 0x5A, 0xFD, 0xD2, 0xFC, 0x2C, 0x00, 0xDE, 0xFC,
+ 0x27, 0xFC, 0x2E, 0x00, 0x63, 0xFC, 0x58, 0xFB,
+ 0x27, 0x00, 0x3D, 0x00, 0x97, 0xFD, 0x27, 0x00,
+ 0xB8, 0x00, 0x97, 0xFD, 0x27, 0x00, 0x34, 0x01,
+ 0x97, 0xFD, 0x27, 0x00, 0xAF, 0x01, 0x97, 0xFD,
+ 0x2A, 0x00, 0x2B, 0x02, 0xCB, 0xFC, 0x2C, 0x00,
+ 0xA6, 0x02, 0x1D, 0xFC, 0x2E, 0x00, 0x22, 0x03,
+ 0x4C, 0xFB, 0x30, 0x00, 0x9D, 0x03, 0x4F, 0xFA,
+ 0x27, 0x00, 0xC3, 0xFF, 0x97, 0xFD, 0x27, 0x00,
+ 0x48, 0xFF, 0x97, 0xFD, 0x27, 0x00, 0xCC, 0xFE,
+ 0x97, 0xFD, 0x27, 0x00, 0x51, 0xFE, 0x97, 0xFD,
+ 0x2A, 0x00, 0xD5, 0xFD, 0xCB, 0xFC, 0x2C, 0x00,
+ 0x5A, 0xFD, 0x1D, 0xFC, 0x2E, 0x00, 0xDE, 0xFC,
+ 0x4C, 0xFB, 0x30, 0x00, 0x63, 0xFC, 0x4F, 0xFA,
+ 0x29, 0x00, 0x3D, 0x00, 0x27, 0xFD, 0x29, 0x00,
+ 0xB8, 0x00, 0x27, 0xFD, 0x29, 0x00, 0x34, 0x01,
+ 0x27, 0xFD, 0x29, 0x00, 0xAF, 0x01, 0x27, 0xFD,
+ 0x2C, 0x00, 0x2B, 0x02, 0x35, 0xFC, 0x2E, 0x00,
+ 0xA6, 0x02, 0x68, 0xFB, 0x30, 0x00, 0x22, 0x03,
+ 0x71, 0xFA, 0x30, 0x00, 0x9D, 0x03, 0x46, 0xF9,
+ 0x29, 0x00, 0xC3, 0xFF, 0x27, 0xFD, 0x29, 0x00,
+ 0x48, 0xFF, 0x27, 0xFD, 0x29, 0x00, 0xCC, 0xFE,
+ 0x27, 0xFD, 0x29, 0x00, 0x51, 0xFE, 0x27, 0xFD,
+ 0x2C, 0x00, 0xD5, 0xFD, 0x35, 0xFC, 0x2E, 0x00,
+ 0x5A, 0xFD, 0x68, 0xFB, 0x30, 0x00, 0xDE, 0xFC,
+ 0x71, 0xFA, 0x30, 0x00, 0x63, 0xFC, 0x46, 0xF9,
+ 0x2B, 0x00, 0x3D, 0x00, 0xB7, 0xFC, 0x2B, 0x00,
+ 0xB8, 0x00, 0xB7, 0xFC, 0x2B, 0x00, 0x34, 0x01,
+ 0xB7, 0xFC, 0x2B, 0x00, 0xAF, 0x01, 0xB7, 0xFC,
+ 0x2E, 0x00, 0x2B, 0x02, 0xA0, 0xFB, 0x30, 0x00,
+ 0xA6, 0x02, 0xB3, 0xFA, 0x30, 0x00, 0x22, 0x03,
+ 0x96, 0xF9, 0x30, 0x00, 0x9D, 0x03, 0x3D, 0xF8,
+ 0x2B, 0x00, 0xC3, 0xFF, 0xB7, 0xFC, 0x2B, 0x00,
+ 0x48, 0xFF, 0xB7, 0xFC, 0x2B, 0x00, 0xCC, 0xFE,
+ 0xB7, 0xFC, 0x2B, 0x00, 0x51, 0xFE, 0xB7, 0xFC,
+ 0x2E, 0x00, 0xD5, 0xFD, 0xA0, 0xFB, 0x30, 0x00,
+ 0x5A, 0xFD, 0xB3, 0xFA, 0x30, 0x00, 0xDE, 0xFC,
+ 0x96, 0xF9, 0x30, 0x00, 0x63, 0xFC, 0x3D, 0xF8,
+ 0x23, 0x00, 0x44, 0x00, 0x3D, 0x00, 0x23, 0x00,
+ 0xCC, 0x00, 0x3D, 0x00, 0x23, 0x00, 0x54, 0x01,
+ 0x3D, 0x00, 0x23, 0x00, 0xDC, 0x01, 0x3D, 0x00,
+ 0x26, 0x00, 0x64, 0x02, 0x52, 0x00, 0x28, 0x00,
+ 0xEC, 0x02, 0x63, 0x00, 0x2A, 0x00, 0x74, 0x03,
+ 0x78, 0x00, 0x2C, 0x00, 0xFC, 0x03, 0x91, 0x00,
+ 0x23, 0x00, 0xBC, 0xFF, 0x3D, 0x00, 0x23, 0x00,
+ 0x34, 0xFF, 0x3D, 0x00, 0x23, 0x00, 0xAC, 0xFE,
+ 0x3D, 0x00, 0x23, 0x00, 0x24, 0xFE, 0x3D, 0x00,
+ 0x26, 0x00, 0x9C, 0xFD, 0x52, 0x00, 0x28, 0x00,
+ 0x14, 0xFD, 0x63, 0x00, 0x2A, 0x00, 0x8C, 0xFC,
+ 0x78, 0x00, 0x2C, 0x00, 0x04, 0xFC, 0x91, 0x00,
+ 0x23, 0x00, 0x44, 0x00, 0xB8, 0x00, 0x23, 0x00,
+ 0xCC, 0x00, 0xB8, 0x00, 0x23, 0x00, 0x54, 0x01,
+ 0xB8, 0x00, 0x23, 0x00, 0xDC, 0x01, 0xB8, 0x00,
+ 0x26, 0x00, 0x64, 0x02, 0xF6, 0x00, 0x28, 0x00,
+ 0xEC, 0x02, 0x2A, 0x01, 0x2A, 0x00, 0x74, 0x03,
+ 0x68, 0x01, 0x2C, 0x00, 0xFC, 0x03, 0xB4, 0x01,
+ 0x23, 0x00, 0xBC, 0xFF, 0xB8, 0x00, 0x23, 0x00,
+ 0x34, 0xFF, 0xB8, 0x00, 0x23, 0x00, 0xAC, 0xFE,
+ 0xB8, 0x00, 0x23, 0x00, 0x24, 0xFE, 0xB8, 0x00,
+ 0x26, 0x00, 0x9C, 0xFD, 0xF6, 0x00, 0x28, 0x00,
+ 0x14, 0xFD, 0x2A, 0x01, 0x2A, 0x00, 0x8C, 0xFC,
+ 0x68, 0x01, 0x2C, 0x00, 0x04, 0xFC, 0xB4, 0x01,
+ 0x23, 0x00, 0x44, 0x00, 0x34, 0x01, 0x23, 0x00,
+ 0xCC, 0x00, 0x34, 0x01, 0x23, 0x00, 0x54, 0x01,
+ 0x34, 0x01, 0x23, 0x00, 0xDC, 0x01, 0x34, 0x01,
+ 0x26, 0x00, 0x64, 0x02, 0x9B, 0x01, 0x28, 0x00,
+ 0xEC, 0x02, 0xF1, 0x01, 0x2A, 0x00, 0x74, 0x03,
+ 0x59, 0x02, 0x2C, 0x00, 0xFC, 0x03, 0xD8, 0x02,
+ 0x23, 0x00, 0xBC, 0xFF, 0x34, 0x01, 0x23, 0x00,
+ 0x34, 0xFF, 0x34, 0x01, 0x23, 0x00, 0xAC, 0xFE,
+ 0x34, 0x01, 0x23, 0x00, 0x24, 0xFE, 0x34, 0x01,
+ 0x26, 0x00, 0x9C, 0xFD, 0x9B, 0x01, 0x28, 0x00,
+ 0x14, 0xFD, 0xF1, 0x01, 0x2A, 0x00, 0x8C, 0xFC,
+ 0x59, 0x02, 0x2C, 0x00, 0x04, 0xFC, 0xD8, 0x02,
+ 0x23, 0x00, 0x44, 0x00, 0xAF, 0x01, 0x23, 0x00,
+ 0xCC, 0x00, 0xAF, 0x01, 0x23, 0x00, 0x54, 0x01,
+ 0xAF, 0x01, 0x23, 0x00, 0xDC, 0x01, 0xAF, 0x01,
+ 0x26, 0x00, 0x64, 0x02, 0x3F, 0x02, 0x28, 0x00,
+ 0xEC, 0x02, 0xB8, 0x02, 0x2A, 0x00, 0x74, 0x03,
+ 0x49, 0x03, 0x2C, 0x00, 0xFC, 0x03, 0xFB, 0x03,
+ 0x23, 0x00, 0xBC, 0xFF, 0xAF, 0x01, 0x23, 0x00,
+ 0x34, 0xFF, 0xAF, 0x01, 0x23, 0x00, 0xAC, 0xFE,
+ 0xAF, 0x01, 0x23, 0x00, 0x24, 0xFE, 0xAF, 0x01,
+ 0x26, 0x00, 0x9C, 0xFD, 0x3F, 0x02, 0x28, 0x00,
+ 0x14, 0xFD, 0xB8, 0x02, 0x2A, 0x00, 0x8C, 0xFC,
+ 0x49, 0x03, 0x2C, 0x00, 0x04, 0xFC, 0xFB, 0x03,
+ 0x26, 0x00, 0x44, 0x00, 0x2B, 0x02, 0x26, 0x00,
+ 0xCC, 0x00, 0x2B, 0x02, 0x26, 0x00, 0x54, 0x01,
+ 0x2B, 0x02, 0x26, 0x00, 0xDC, 0x01, 0x2B, 0x02,
+ 0x29, 0x00, 0x64, 0x02, 0xE4, 0x02, 0x2B, 0x00,
+ 0xEC, 0x02, 0x7F, 0x03, 0x2D, 0x00, 0x74, 0x03,
+ 0x3B, 0x04, 0x2F, 0x00, 0xFC, 0x03, 0x1F, 0x05,
+ 0x26, 0x00, 0xBC, 0xFF, 0x2B, 0x02, 0x26, 0x00,
+ 0x34, 0xFF, 0x2B, 0x02, 0x26, 0x00, 0xAC, 0xFE,
+ 0x2B, 0x02, 0x26, 0x00, 0x24, 0xFE, 0x2B, 0x02,
+ 0x29, 0x00, 0x9C, 0xFD, 0xE4, 0x02, 0x2B, 0x00,
+ 0x14, 0xFD, 0x7F, 0x03, 0x2D, 0x00, 0x8C, 0xFC,
+ 0x3B, 0x04, 0x2F, 0x00, 0x04, 0xFC, 0x1F, 0x05,
+ 0x28, 0x00, 0x44, 0x00, 0xA6, 0x02, 0x28, 0x00,
+ 0xCC, 0x00, 0xA6, 0x02, 0x28, 0x00, 0x54, 0x01,
+ 0xA6, 0x02, 0x28, 0x00, 0xDC, 0x01, 0xA6, 0x02,
+ 0x2B, 0x00, 0x64, 0x02, 0x88, 0x03, 0x2D, 0x00,
+ 0xEC, 0x02, 0x46, 0x04, 0x2F, 0x00, 0x74, 0x03,
+ 0x2B, 0x05, 0x30, 0x00, 0xFC, 0x03, 0x42, 0x06,
+ 0x28, 0x00, 0xBC, 0xFF, 0xA6, 0x02, 0x28, 0x00,
+ 0x34, 0xFF, 0xA6, 0x02, 0x28, 0x00, 0xAC, 0xFE,
+ 0xA6, 0x02, 0x28, 0x00, 0x24, 0xFE, 0xA6, 0x02,
+ 0x2B, 0x00, 0x9C, 0xFD, 0x88, 0x03, 0x2D, 0x00,
+ 0x14, 0xFD, 0x46, 0x04, 0x2F, 0x00, 0x8C, 0xFC,
+ 0x2B, 0x05, 0x30, 0x00, 0x04, 0xFC, 0x42, 0x06,
+ 0x2A, 0x00, 0x44, 0x00, 0x22, 0x03, 0x2A, 0x00,
+ 0xCC, 0x00, 0x22, 0x03, 0x2A, 0x00, 0x54, 0x01,
+ 0x22, 0x03, 0x2A, 0x00, 0xDC, 0x01, 0x22, 0x03,
+ 0x2D, 0x00, 0x64, 0x02, 0x2D, 0x04, 0x2F, 0x00,
+ 0xEC, 0x02, 0x0D, 0x05, 0x30, 0x00, 0x74, 0x03,
+ 0x1C, 0x06, 0x30, 0x00, 0xFC, 0x03, 0x66, 0x07,
+ 0x2A, 0x00, 0xBC, 0xFF, 0x22, 0x03, 0x2A, 0x00,
+ 0x34, 0xFF, 0x22, 0x03, 0x2A, 0x00, 0xAC, 0xFE,
+ 0x22, 0x03, 0x2A, 0x00, 0x24, 0xFE, 0x22, 0x03,
+ 0x2D, 0x00, 0x9C, 0xFD, 0x2D, 0x04, 0x2F, 0x00,
+ 0x14, 0xFD, 0x0D, 0x05, 0x30, 0x00, 0x8C, 0xFC,
+ 0x1C, 0x06, 0x30, 0x00, 0x04, 0xFC, 0x66, 0x07,
+ 0x2C, 0x00, 0x44, 0x00, 0x9D, 0x03, 0x2C, 0x00,
+ 0xCC, 0x00, 0x9D, 0x03, 0x2C, 0x00, 0x54, 0x01,
+ 0x9D, 0x03, 0x2C, 0x00, 0xDC, 0x01, 0x9D, 0x03,
+ 0x2F, 0x00, 0x64, 0x02, 0xD1, 0x04, 0x30, 0x00,
+ 0xEC, 0x02, 0xD4, 0x05, 0x30, 0x00, 0x74, 0x03,
+ 0x0C, 0x07, 0x30, 0x00, 0xFC, 0x03, 0x89, 0x08,
+ 0x2C, 0x00, 0xBC, 0xFF, 0x9D, 0x03, 0x2C, 0x00,
+ 0x34, 0xFF, 0x9D, 0x03, 0x2C, 0x00, 0xAC, 0xFE,
+ 0x9D, 0x03, 0x2C, 0x00, 0x24, 0xFE, 0x9D, 0x03,
+ 0x2F, 0x00, 0x9C, 0xFD, 0xD1, 0x04, 0x30, 0x00,
+ 0x14, 0xFD, 0xD4, 0x05, 0x30, 0x00, 0x8C, 0xFC,
+ 0x0C, 0x07, 0x30, 0x00, 0x04, 0xFC, 0x89, 0x08,
+ 0x23, 0x00, 0x44, 0x00, 0xC3, 0xFF, 0x23, 0x00,
+ 0xCC, 0x00, 0xC3, 0xFF, 0x23, 0x00, 0x54, 0x01,
+ 0xC3, 0xFF, 0x23, 0x00, 0xDC, 0x01, 0xC3, 0xFF,
+ 0x26, 0x00, 0x64, 0x02, 0xAE, 0xFF, 0x28, 0x00,
+ 0xEC, 0x02, 0x9D, 0xFF, 0x2A, 0x00, 0x74, 0x03,
+ 0x88, 0xFF, 0x2C, 0x00, 0xFC, 0x03, 0x6F, 0xFF,
+ 0x23, 0x00, 0xBC, 0xFF, 0xC3, 0xFF, 0x23, 0x00,
+ 0x34, 0xFF, 0xC3, 0xFF, 0x23, 0x00, 0xAC, 0xFE,
+ 0xC3, 0xFF, 0x23, 0x00, 0x24, 0xFE, 0xC3, 0xFF,
+ 0x26, 0x00, 0x9C, 0xFD, 0xAE, 0xFF, 0x28, 0x00,
+ 0x14, 0xFD, 0x9D, 0xFF, 0x2A, 0x00, 0x8C, 0xFC,
+ 0x88, 0xFF, 0x2C, 0x00, 0x04, 0xFC, 0x6F, 0xFF,
+ 0x23, 0x00, 0x44, 0x00, 0x48, 0xFF, 0x23, 0x00,
+ 0xCC, 0x00, 0x48, 0xFF, 0x23, 0x00, 0x54, 0x01,
+ 0x48, 0xFF, 0x23, 0x00, 0xDC, 0x01, 0x48, 0xFF,
+ 0x26, 0x00, 0x64, 0x02, 0x0A, 0xFF, 0x28, 0x00,
+ 0xEC, 0x02, 0xD6, 0xFE, 0x2A, 0x00, 0x74, 0x03,
+ 0x98, 0xFE, 0x2C, 0x00, 0xFC, 0x03, 0x4C, 0xFE,
+ 0x23, 0x00, 0xBC, 0xFF, 0x48, 0xFF, 0x23, 0x00,
+ 0x34, 0xFF, 0x48, 0xFF, 0x23, 0x00, 0xAC, 0xFE,
+ 0x48, 0xFF, 0x23, 0x00, 0x24, 0xFE, 0x48, 0xFF,
+ 0x26, 0x00, 0x9C, 0xFD, 0x0A, 0xFF, 0x28, 0x00,
+ 0x14, 0xFD, 0xD6, 0xFE, 0x2A, 0x00, 0x8C, 0xFC,
+ 0x98, 0xFE, 0x2C, 0x00, 0x04, 0xFC, 0x4C, 0xFE,
+ 0x23, 0x00, 0x44, 0x00, 0xCC, 0xFE, 0x23, 0x00,
+ 0xCC, 0x00, 0xCC, 0xFE, 0x23, 0x00, 0x54, 0x01,
+ 0xCC, 0xFE, 0x23, 0x00, 0xDC, 0x01, 0xCC, 0xFE,
+ 0x26, 0x00, 0x64, 0x02, 0x65, 0xFE, 0x28, 0x00,
+ 0xEC, 0x02, 0x0F, 0xFE, 0x2A, 0x00, 0x74, 0x03,
+ 0xA7, 0xFD, 0x2C, 0x00, 0xFC, 0x03, 0x28, 0xFD,
+ 0x23, 0x00, 0xBC, 0xFF, 0xCC, 0xFE, 0x23, 0x00,
+ 0x34, 0xFF, 0xCC, 0xFE, 0x23, 0x00, 0xAC, 0xFE,
+ 0xCC, 0xFE, 0x23, 0x00, 0x24, 0xFE, 0xCC, 0xFE,
+ 0x26, 0x00, 0x9C, 0xFD, 0x65, 0xFE, 0x28, 0x00,
+ 0x14, 0xFD, 0x0F, 0xFE, 0x2A, 0x00, 0x8C, 0xFC,
+ 0xA7, 0xFD, 0x2C, 0x00, 0x04, 0xFC, 0x28, 0xFD,
+ 0x23, 0x00, 0x44, 0x00, 0x51, 0xFE, 0x23, 0x00,
+ 0xCC, 0x00, 0x51, 0xFE, 0x23, 0x00, 0x54, 0x01,
+ 0x51, 0xFE, 0x23, 0x00, 0xDC, 0x01, 0x51, 0xFE,
+ 0x26, 0x00, 0x64, 0x02, 0xC1, 0xFD, 0x28, 0x00,
+ 0xEC, 0x02, 0x48, 0xFD, 0x2A, 0x00, 0x74, 0x03,
+ 0xB7, 0xFC, 0x2C, 0x00, 0xFC, 0x03, 0x05, 0xFC,
+ 0x23, 0x00, 0xBC, 0xFF, 0x51, 0xFE, 0x23, 0x00,
+ 0x34, 0xFF, 0x51, 0xFE, 0x23, 0x00, 0xAC, 0xFE,
+ 0x51, 0xFE, 0x23, 0x00, 0x24, 0xFE, 0x51, 0xFE,
+ 0x26, 0x00, 0x9C, 0xFD, 0xC1, 0xFD, 0x28, 0x00,
+ 0x14, 0xFD, 0x48, 0xFD, 0x2A, 0x00, 0x8C, 0xFC,
+ 0xB7, 0xFC, 0x2C, 0x00, 0x04, 0xFC, 0x05, 0xFC,
+ 0x26, 0x00, 0x44, 0x00, 0xD5, 0xFD, 0x26, 0x00,
+ 0xCC, 0x00, 0xD5, 0xFD, 0x26, 0x00, 0x54, 0x01,
+ 0xD5, 0xFD, 0x26, 0x00, 0xDC, 0x01, 0xD5, 0xFD,
+ 0x29, 0x00, 0x64, 0x02, 0x1C, 0xFD, 0x2B, 0x00,
+ 0xEC, 0x02, 0x81, 0xFC, 0x2D, 0x00, 0x74, 0x03,
+ 0xC5, 0xFB, 0x2F, 0x00, 0xFC, 0x03, 0xE1, 0xFA,
+ 0x26, 0x00, 0xBC, 0xFF, 0xD5, 0xFD, 0x26, 0x00,
+ 0x34, 0xFF, 0xD5, 0xFD, 0x26, 0x00, 0xAC, 0xFE,
+ 0xD5, 0xFD, 0x26, 0x00, 0x24, 0xFE, 0xD5, 0xFD,
+ 0x29, 0x00, 0x9C, 0xFD, 0x1C, 0xFD, 0x2B, 0x00,
+ 0x14, 0xFD, 0x81, 0xFC, 0x2D, 0x00, 0x8C, 0xFC,
+ 0xC5, 0xFB, 0x2F, 0x00, 0x04, 0xFC, 0xE1, 0xFA,
+ 0x28, 0x00, 0x44, 0x00, 0x5A, 0xFD, 0x28, 0x00,
+ 0xCC, 0x00, 0x5A, 0xFD, 0x28, 0x00, 0x54, 0x01,
+ 0x5A, 0xFD, 0x28, 0x00, 0xDC, 0x01, 0x5A, 0xFD,
+ 0x2B, 0x00, 0x64, 0x02, 0x78, 0xFC, 0x2D, 0x00,
+ 0xEC, 0x02, 0xBA, 0xFB, 0x2F, 0x00, 0x74, 0x03,
+ 0xD5, 0xFA, 0x30, 0x00, 0xFC, 0x03, 0xBE, 0xF9,
+ 0x28, 0x00, 0xBC, 0xFF, 0x5A, 0xFD, 0x28, 0x00,
+ 0x34, 0xFF, 0x5A, 0xFD, 0x28, 0x00, 0xAC, 0xFE,
+ 0x5A, 0xFD, 0x28, 0x00, 0x24, 0xFE, 0x5A, 0xFD,
+ 0x2B, 0x00, 0x9C, 0xFD, 0x78, 0xFC, 0x2D, 0x00,
+ 0x14, 0xFD, 0xBA, 0xFB, 0x2F, 0x00, 0x8C, 0xFC,
+ 0xD5, 0xFA, 0x30, 0x00, 0x04, 0xFC, 0xBE, 0xF9,
+ 0x2A, 0x00, 0x44, 0x00, 0xDE, 0xFC, 0x2A, 0x00,
+ 0xCC, 0x00, 0xDE, 0xFC, 0x2A, 0x00, 0x54, 0x01,
+ 0xDE, 0xFC, 0x2A, 0x00, 0xDC, 0x01, 0xDE, 0xFC,
+ 0x2D, 0x00, 0x64, 0x02, 0xD3, 0xFB, 0x2F, 0x00,
+ 0xEC, 0x02, 0xF3, 0xFA, 0x30, 0x00, 0x74, 0x03,
+ 0xE4, 0xF9, 0x30, 0x00, 0xFC, 0x03, 0x9A, 0xF8,
+ 0x2A, 0x00, 0xBC, 0xFF, 0xDE, 0xFC, 0x2A, 0x00,
+ 0x34, 0xFF, 0xDE, 0xFC, 0x2A, 0x00, 0xAC, 0xFE,
+ 0xDE, 0xFC, 0x2A, 0x00, 0x24, 0xFE, 0xDE, 0xFC,
+ 0x2D, 0x00, 0x9C, 0xFD, 0xD3, 0xFB, 0x2F, 0x00,
+ 0x14, 0xFD, 0xF3, 0xFA, 0x30, 0x00, 0x8C, 0xFC,
+ 0xE4, 0xF9, 0x30, 0x00, 0x04, 0xFC, 0x9A, 0xF8,
+ 0x2C, 0x00, 0x44, 0x00, 0x63, 0xFC, 0x2C, 0x00,
+ 0xCC, 0x00, 0x63, 0xFC, 0x2C, 0x00, 0x54, 0x01,
+ 0x63, 0xFC, 0x2C, 0x00, 0xDC, 0x01, 0x63, 0xFC,
+ 0x2F, 0x00, 0x64, 0x02, 0x2F, 0xFB, 0x30, 0x00,
+ 0xEC, 0x02, 0x2C, 0xFA, 0x30, 0x00, 0x74, 0x03,
+ 0xF4, 0xF8, 0x30, 0x00, 0xFC, 0x03, 0x77, 0xF7,
+ 0x2C, 0x00, 0xBC, 0xFF, 0x63, 0xFC, 0x2C, 0x00,
+ 0x34, 0xFF, 0x63, 0xFC, 0x2C, 0x00, 0xAC, 0xFE,
+ 0x63, 0xFC, 0x2C, 0x00, 0x24, 0xFE, 0x63, 0xFC,
+ 0x2F, 0x00, 0x9C, 0xFD, 0x2F, 0xFB, 0x30, 0x00,
+ 0x14, 0xFD, 0x2C, 0xFA, 0x30, 0x00, 0x8C, 0xFC,
+ 0xF4, 0xF8, 0x30, 0x00, 0x04, 0xFC, 0x77, 0xF7,
+ 0x24, 0x00, 0x4A, 0x00, 0x44, 0x00, 0x24, 0x00,
+ 0xDF, 0x00, 0x44, 0x00, 0x24, 0x00, 0x75, 0x01,
+ 0x44, 0x00, 0x24, 0x00, 0x0A, 0x02, 0x44, 0x00,
+ 0x27, 0x00, 0xA0, 0x02, 0x5A, 0x00, 0x29, 0x00,
+ 0x35, 0x03, 0x6D, 0x00, 0x2B, 0x00, 0xCB, 0x03,
+ 0x84, 0x00, 0x2D, 0x00, 0x60, 0x04, 0xA0, 0x00,
+ 0x24, 0x00, 0xB6, 0xFF, 0x44, 0x00, 0x24, 0x00,
+ 0x21, 0xFF, 0x44, 0x00, 0x24, 0x00, 0x8B, 0xFE,
+ 0x44, 0x00, 0x24, 0x00, 0xF6, 0xFD, 0x44, 0x00,
+ 0x27, 0x00, 0x60, 0xFD, 0x5A, 0x00, 0x29, 0x00,
+ 0xCB, 0xFC, 0x6D, 0x00, 0x2B, 0x00, 0x35, 0xFC,
+ 0x84, 0x00, 0x2D, 0x00, 0xA0, 0xFB, 0xA0, 0x00,
+ 0x24, 0x00, 0x4A, 0x00, 0xCC, 0x00, 0x24, 0x00,
+ 0xDF, 0x00, 0xCC, 0x00, 0x24, 0x00, 0x75, 0x01,
+ 0xCC, 0x00, 0x24, 0x00, 0x0A, 0x02, 0xCC, 0x00,
+ 0x27, 0x00, 0xA0, 0x02, 0x0F, 0x01, 0x29, 0x00,
+ 0x35, 0x03, 0x48, 0x01, 0x2B, 0x00, 0xCB, 0x03,
+ 0x8D, 0x01, 0x2D, 0x00, 0x60, 0x04, 0xE0, 0x01,
+ 0x24, 0x00, 0xB6, 0xFF, 0xCC, 0x00, 0x24, 0x00,
+ 0x21, 0xFF, 0xCC, 0x00, 0x24, 0x00, 0x8B, 0xFE,
+ 0xCC, 0x00, 0x24, 0x00, 0xF6, 0xFD, 0xCC, 0x00,
+ 0x27, 0x00, 0x60, 0xFD, 0x0F, 0x01, 0x29, 0x00,
+ 0xCB, 0xFC, 0x48, 0x01, 0x2B, 0x00, 0x35, 0xFC,
+ 0x8D, 0x01, 0x2D, 0x00, 0xA0, 0xFB, 0xE0, 0x01,
+ 0x24, 0x00, 0x4A, 0x00, 0x54, 0x01, 0x24, 0x00,
+ 0xDF, 0x00, 0x54, 0x01, 0x24, 0x00, 0x75, 0x01,
+ 0x54, 0x01, 0x24, 0x00, 0x0A, 0x02, 0x54, 0x01,
+ 0x27, 0x00, 0xA0, 0x02, 0xC4, 0x01, 0x29, 0x00,
+ 0x35, 0x03, 0x23, 0x02, 0x2B, 0x00, 0xCB, 0x03,
+ 0x96, 0x02, 0x2D, 0x00, 0x60, 0x04, 0x21, 0x03,
+ 0x24, 0x00, 0xB6, 0xFF, 0x54, 0x01, 0x24, 0x00,
+ 0x21, 0xFF, 0x54, 0x01, 0x24, 0x00, 0x8B, 0xFE,
+ 0x54, 0x01, 0x24, 0x00, 0xF6, 0xFD, 0x54, 0x01,
+ 0x27, 0x00, 0x60, 0xFD, 0xC4, 0x01, 0x29, 0x00,
+ 0xCB, 0xFC, 0x23, 0x02, 0x2B, 0x00, 0x35, 0xFC,
+ 0x96, 0x02, 0x2D, 0x00, 0xA0, 0xFB, 0x21, 0x03,
+ 0x24, 0x00, 0x4A, 0x00, 0xDC, 0x01, 0x24, 0x00,
+ 0xDF, 0x00, 0xDC, 0x01, 0x24, 0x00, 0x75, 0x01,
+ 0xDC, 0x01, 0x24, 0x00, 0x0A, 0x02, 0xDC, 0x01,
+ 0x27, 0x00, 0xA0, 0x02, 0x79, 0x02, 0x29, 0x00,
+ 0x35, 0x03, 0xFE, 0x02, 0x2B, 0x00, 0xCB, 0x03,
+ 0x9F, 0x03, 0x2D, 0x00, 0x60, 0x04, 0x61, 0x04,
+ 0x24, 0x00, 0xB6, 0xFF, 0xDC, 0x01, 0x24, 0x00,
+ 0x21, 0xFF, 0xDC, 0x01, 0x24, 0x00, 0x8B, 0xFE,
+ 0xDC, 0x01, 0x24, 0x00, 0xF6, 0xFD, 0xDC, 0x01,
+ 0x27, 0x00, 0x60, 0xFD, 0x79, 0x02, 0x29, 0x00,
+ 0xCB, 0xFC, 0xFE, 0x02, 0x2B, 0x00, 0x35, 0xFC,
+ 0x9F, 0x03, 0x2D, 0x00, 0xA0, 0xFB, 0x61, 0x04,
+ 0x27, 0x00, 0x4A, 0x00, 0x64, 0x02, 0x27, 0x00,
+ 0xDF, 0x00, 0x64, 0x02, 0x27, 0x00, 0x75, 0x01,
+ 0x64, 0x02, 0x27, 0x00, 0x0A, 0x02, 0x64, 0x02,
+ 0x2A, 0x00, 0xA0, 0x02, 0x2E, 0x03, 0x2C, 0x00,
+ 0x35, 0x03, 0xD9, 0x03, 0x2E, 0x00, 0xCB, 0x03,
+ 0xA8, 0x04, 0x30, 0x00, 0x60, 0x04, 0xA2, 0x05,
+ 0x27, 0x00, 0xB6, 0xFF, 0x64, 0x02, 0x27, 0x00,
+ 0x21, 0xFF, 0x64, 0x02, 0x27, 0x00, 0x8B, 0xFE,
+ 0x64, 0x02, 0x27, 0x00, 0xF6, 0xFD, 0x64, 0x02,
+ 0x2A, 0x00, 0x60, 0xFD, 0x2E, 0x03, 0x2C, 0x00,
+ 0xCB, 0xFC, 0xD9, 0x03, 0x2E, 0x00, 0x35, 0xFC,
+ 0xA8, 0x04, 0x30, 0x00, 0xA0, 0xFB, 0xA2, 0x05,
+ 0x29, 0x00, 0x4A, 0x00, 0xEC, 0x02, 0x29, 0x00,
+ 0xDF, 0x00, 0xEC, 0x02, 0x29, 0x00, 0x75, 0x01,
+ 0xEC, 0x02, 0x29, 0x00, 0x0A, 0x02, 0xEC, 0x02,
+ 0x2C, 0x00, 0xA0, 0x02, 0xE3, 0x03, 0x2E, 0x00,
+ 0x35, 0x03, 0xB4, 0x04, 0x30, 0x00, 0xCB, 0x03,
+ 0xB1, 0x05, 0x30, 0x00, 0x60, 0x04, 0xE2, 0x06,
+ 0x29, 0x00, 0xB6, 0xFF, 0xEC, 0x02, 0x29, 0x00,
+ 0x21, 0xFF, 0xEC, 0x02, 0x29, 0x00, 0x8B, 0xFE,
+ 0xEC, 0x02, 0x29, 0x00, 0xF6, 0xFD, 0xEC, 0x02,
+ 0x2C, 0x00, 0x60, 0xFD, 0xE3, 0x03, 0x2E, 0x00,
+ 0xCB, 0xFC, 0xB4, 0x04, 0x30, 0x00, 0x35, 0xFC,
+ 0xB1, 0x05, 0x30, 0x00, 0xA0, 0xFB, 0xE2, 0x06,
+ 0x2B, 0x00, 0x4A, 0x00, 0x74, 0x03, 0x2B, 0x00,
+ 0xDF, 0x00, 0x74, 0x03, 0x2B, 0x00, 0x75, 0x01,
+ 0x74, 0x03, 0x2B, 0x00, 0x0A, 0x02, 0x74, 0x03,
+ 0x2E, 0x00, 0xA0, 0x02, 0x98, 0x04, 0x30, 0x00,
+ 0x35, 0x03, 0x8F, 0x05, 0x30, 0x00, 0xCB, 0x03,
+ 0xBA, 0x06, 0x30, 0x00, 0x60, 0x04, 0x23, 0x08,
+ 0x2B, 0x00, 0xB6, 0xFF, 0x74, 0x03, 0x2B, 0x00,
+ 0x21, 0xFF, 0x74, 0x03, 0x2B, 0x00, 0x8B, 0xFE,
+ 0x74, 0x03, 0x2B, 0x00, 0xF6, 0xFD, 0x74, 0x03,
+ 0x2E, 0x00, 0x60, 0xFD, 0x98, 0x04, 0x30, 0x00,
+ 0xCB, 0xFC, 0x8F, 0x05, 0x30, 0x00, 0x35, 0xFC,
+ 0xBA, 0x06, 0x30, 0x00, 0xA0, 0xFB, 0x23, 0x08,
+ 0x2D, 0x00, 0x4A, 0x00, 0xFC, 0x03, 0x2D, 0x00,
+ 0xDF, 0x00, 0xFC, 0x03, 0x2D, 0x00, 0x75, 0x01,
+ 0xFC, 0x03, 0x2D, 0x00, 0x0A, 0x02, 0xFC, 0x03,
+ 0x30, 0x00, 0xA0, 0x02, 0x4D, 0x05, 0x30, 0x00,
+ 0x35, 0x03, 0x6A, 0x06, 0x30, 0x00, 0xCB, 0x03,
+ 0xC3, 0x07, 0x30, 0x00, 0x60, 0x04, 0x63, 0x09,
+ 0x2D, 0x00, 0xB6, 0xFF, 0xFC, 0x03, 0x2D, 0x00,
+ 0x21, 0xFF, 0xFC, 0x03, 0x2D, 0x00, 0x8B, 0xFE,
+ 0xFC, 0x03, 0x2D, 0x00, 0xF6, 0xFD, 0xFC, 0x03,
+ 0x30, 0x00, 0x60, 0xFD, 0x4D, 0x05, 0x30, 0x00,
+ 0xCB, 0xFC, 0x6A, 0x06, 0x30, 0x00, 0x35, 0xFC,
+ 0xC3, 0x07, 0x30, 0x00, 0xA0, 0xFB, 0x63, 0x09,
+ 0x24, 0x00, 0x4A, 0x00, 0xBC, 0xFF, 0x24, 0x00,
+ 0xDF, 0x00, 0xBC, 0xFF, 0x24, 0x00, 0x75, 0x01,
+ 0xBC, 0xFF, 0x24, 0x00, 0x0A, 0x02, 0xBC, 0xFF,
+ 0x27, 0x00, 0xA0, 0x02, 0xA6, 0xFF, 0x29, 0x00,
+ 0x35, 0x03, 0x93, 0xFF, 0x2B, 0x00, 0xCB, 0x03,
+ 0x7C, 0xFF, 0x2D, 0x00, 0x60, 0x04, 0x60, 0xFF,
+ 0x24, 0x00, 0xB6, 0xFF, 0xBC, 0xFF, 0x24, 0x00,
+ 0x21, 0xFF, 0xBC, 0xFF, 0x24, 0x00, 0x8B, 0xFE,
+ 0xBC, 0xFF, 0x24, 0x00, 0xF6, 0xFD, 0xBC, 0xFF,
+ 0x27, 0x00, 0x60, 0xFD, 0xA6, 0xFF, 0x29, 0x00,
+ 0xCB, 0xFC, 0x93, 0xFF, 0x2B, 0x00, 0x35, 0xFC,
+ 0x7C, 0xFF, 0x2D, 0x00, 0xA0, 0xFB, 0x60, 0xFF,
+ 0x24, 0x00, 0x4A, 0x00, 0x34, 0xFF, 0x24, 0x00,
+ 0xDF, 0x00, 0x34, 0xFF, 0x24, 0x00, 0x75, 0x01,
+ 0x34, 0xFF, 0x24, 0x00, 0x0A, 0x02, 0x34, 0xFF,
+ 0x27, 0x00, 0xA0, 0x02, 0xF1, 0xFE, 0x29, 0x00,
+ 0x35, 0x03, 0xB8, 0xFE, 0x2B, 0x00, 0xCB, 0x03,
+ 0x73, 0xFE, 0x2D, 0x00, 0x60, 0x04, 0x20, 0xFE,
+ 0x24, 0x00, 0xB6, 0xFF, 0x34, 0xFF, 0x24, 0x00,
+ 0x21, 0xFF, 0x34, 0xFF, 0x24, 0x00, 0x8B, 0xFE,
+ 0x34, 0xFF, 0x24, 0x00, 0xF6, 0xFD, 0x34, 0xFF,
+ 0x27, 0x00, 0x60, 0xFD, 0xF1, 0xFE, 0x29, 0x00,
+ 0xCB, 0xFC, 0xB8, 0xFE, 0x2B, 0x00, 0x35, 0xFC,
+ 0x73, 0xFE, 0x2D, 0x00, 0xA0, 0xFB, 0x20, 0xFE,
+ 0x24, 0x00, 0x4A, 0x00, 0xAC, 0xFE, 0x24, 0x00,
+ 0xDF, 0x00, 0xAC, 0xFE, 0x24, 0x00, 0x75, 0x01,
+ 0xAC, 0xFE, 0x24, 0x00, 0x0A, 0x02, 0xAC, 0xFE,
+ 0x27, 0x00, 0xA0, 0x02, 0x3C, 0xFE, 0x29, 0x00,
+ 0x35, 0x03, 0xDD, 0xFD, 0x2B, 0x00, 0xCB, 0x03,
+ 0x6A, 0xFD, 0x2D, 0x00, 0x60, 0x04, 0xDF, 0xFC,
+ 0x24, 0x00, 0xB6, 0xFF, 0xAC, 0xFE, 0x24, 0x00,
+ 0x21, 0xFF, 0xAC, 0xFE, 0x24, 0x00, 0x8B, 0xFE,
+ 0xAC, 0xFE, 0x24, 0x00, 0xF6, 0xFD, 0xAC, 0xFE,
+ 0x27, 0x00, 0x60, 0xFD, 0x3C, 0xFE, 0x29, 0x00,
+ 0xCB, 0xFC, 0xDD, 0xFD, 0x2B, 0x00, 0x35, 0xFC,
+ 0x6A, 0xFD, 0x2D, 0x00, 0xA0, 0xFB, 0xDF, 0xFC,
+ 0x24, 0x00, 0x4A, 0x00, 0x24, 0xFE, 0x24, 0x00,
+ 0xDF, 0x00, 0x24, 0xFE, 0x24, 0x00, 0x75, 0x01,
+ 0x24, 0xFE, 0x24, 0x00, 0x0A, 0x02, 0x24, 0xFE,
+ 0x27, 0x00, 0xA0, 0x02, 0x87, 0xFD, 0x29, 0x00,
+ 0x35, 0x03, 0x02, 0xFD, 0x2B, 0x00, 0xCB, 0x03,
+ 0x61, 0xFC, 0x2D, 0x00, 0x60, 0x04, 0x9F, 0xFB,
+ 0x24, 0x00, 0xB6, 0xFF, 0x24, 0xFE, 0x24, 0x00,
+ 0x21, 0xFF, 0x24, 0xFE, 0x24, 0x00, 0x8B, 0xFE,
+ 0x24, 0xFE, 0x24, 0x00, 0xF6, 0xFD, 0x24, 0xFE,
+ 0x27, 0x00, 0x60, 0xFD, 0x87, 0xFD, 0x29, 0x00,
+ 0xCB, 0xFC, 0x02, 0xFD, 0x2B, 0x00, 0x35, 0xFC,
+ 0x61, 0xFC, 0x2D, 0x00, 0xA0, 0xFB, 0x9F, 0xFB,
+ 0x27, 0x00, 0x4A, 0x00, 0x9C, 0xFD, 0x27, 0x00,
+ 0xDF, 0x00, 0x9C, 0xFD, 0x27, 0x00, 0x75, 0x01,
+ 0x9C, 0xFD, 0x27, 0x00, 0x0A, 0x02, 0x9C, 0xFD,
+ 0x2A, 0x00, 0xA0, 0x02, 0xD2, 0xFC, 0x2C, 0x00,
+ 0x35, 0x03, 0x27, 0xFC, 0x2E, 0x00, 0xCB, 0x03,
+ 0x58, 0xFB, 0x30, 0x00, 0x60, 0x04, 0x5E, 0xFA,
+ 0x27, 0x00, 0xB6, 0xFF, 0x9C, 0xFD, 0x27, 0x00,
+ 0x21, 0xFF, 0x9C, 0xFD, 0x27, 0x00, 0x8B, 0xFE,
+ 0x9C, 0xFD, 0x27, 0x00, 0xF6, 0xFD, 0x9C, 0xFD,
+ 0x2A, 0x00, 0x60, 0xFD, 0xD2, 0xFC, 0x2C, 0x00,
+ 0xCB, 0xFC, 0x27, 0xFC, 0x2E, 0x00, 0x35, 0xFC,
+ 0x58, 0xFB, 0x30, 0x00, 0xA0, 0xFB, 0x5E, 0xFA,
+ 0x29, 0x00, 0x4A, 0x00, 0x14, 0xFD, 0x29, 0x00,
+ 0xDF, 0x00, 0x14, 0xFD, 0x29, 0x00, 0x75, 0x01,
+ 0x14, 0xFD, 0x29, 0x00, 0x0A, 0x02, 0x14, 0xFD,
+ 0x2C, 0x00, 0xA0, 0x02, 0x1D, 0xFC, 0x2E, 0x00,
+ 0x35, 0x03, 0x4C, 0xFB, 0x30, 0x00, 0xCB, 0x03,
+ 0x4F, 0xFA, 0x30, 0x00, 0x60, 0x04, 0x1E, 0xF9,
+ 0x29, 0x00, 0xB6, 0xFF, 0x14, 0xFD, 0x29, 0x00,
+ 0x21, 0xFF, 0x14, 0xFD, 0x29, 0x00, 0x8B, 0xFE,
+ 0x14, 0xFD, 0x29, 0x00, 0xF6, 0xFD, 0x14, 0xFD,
+ 0x2C, 0x00, 0x60, 0xFD, 0x1D, 0xFC, 0x2E, 0x00,
+ 0xCB, 0xFC, 0x4C, 0xFB, 0x30, 0x00, 0x35, 0xFC,
+ 0x4F, 0xFA, 0x30, 0x00, 0xA0, 0xFB, 0x1E, 0xF9,
+ 0x2B, 0x00, 0x4A, 0x00, 0x8C, 0xFC, 0x2B, 0x00,
+ 0xDF, 0x00, 0x8C, 0xFC, 0x2B, 0x00, 0x75, 0x01,
+ 0x8C, 0xFC, 0x2B, 0x00, 0x0A, 0x02, 0x8C, 0xFC,
+ 0x2E, 0x00, 0xA0, 0x02, 0x68, 0xFB, 0x30, 0x00,
+ 0x35, 0x03, 0x71, 0xFA, 0x30, 0x00, 0xCB, 0x03,
+ 0x46, 0xF9, 0x30, 0x00, 0x60, 0x04, 0xDD, 0xF7,
+ 0x2B, 0x00, 0xB6, 0xFF, 0x8C, 0xFC, 0x2B, 0x00,
+ 0x21, 0xFF, 0x8C, 0xFC, 0x2B, 0x00, 0x8B, 0xFE,
+ 0x8C, 0xFC, 0x2B, 0x00, 0xF6, 0xFD, 0x8C, 0xFC,
+ 0x2E, 0x00, 0x60, 0xFD, 0x68, 0xFB, 0x30, 0x00,
+ 0xCB, 0xFC, 0x71, 0xFA, 0x30, 0x00, 0x35, 0xFC,
+ 0x46, 0xF9, 0x30, 0x00, 0xA0, 0xFB, 0xDD, 0xF7,
+ 0x2D, 0x00, 0x4A, 0x00, 0x04, 0xFC, 0x2D, 0x00,
+ 0xDF, 0x00, 0x04, 0xFC, 0x2D, 0x00, 0x75, 0x01,
+ 0x04, 0xFC, 0x2D, 0x00, 0x0A, 0x02, 0x04, 0xFC,
+ 0x30, 0x00, 0xA0, 0x02, 0xB3, 0xFA, 0x30, 0x00,
+ 0x35, 0x03, 0x96, 0xF9, 0x30, 0x00, 0xCB, 0x03,
+ 0x3D, 0xF8, 0x30, 0x00, 0x60, 0x04, 0x9D, 0xF6,
+ 0x2D, 0x00, 0xB6, 0xFF, 0x04, 0xFC, 0x2D, 0x00,
+ 0x21, 0xFF, 0x04, 0xFC, 0x2D, 0x00, 0x8B, 0xFE,
+ 0x04, 0xFC, 0x2D, 0x00, 0xF6, 0xFD, 0x04, 0xFC,
+ 0x30, 0x00, 0x60, 0xFD, 0xB3, 0xFA, 0x30, 0x00,
+ 0xCB, 0xFC, 0x96, 0xF9, 0x30, 0x00, 0x35, 0xFC,
+ 0x3D, 0xF8, 0x30, 0x00, 0xA0, 0xFB, 0x9D, 0xF6,
+ 0x25, 0x00, 0x52, 0x00, 0x4A, 0x00, 0x25, 0x00,
+ 0xF6, 0x00, 0x4A, 0x00, 0x25, 0x00, 0x9B, 0x01,
+ 0x4A, 0x00, 0x25, 0x00, 0x3F, 0x02, 0x4A, 0x00,
+ 0x28, 0x00, 0xE4, 0x02, 0x63, 0x00, 0x2A, 0x00,
+ 0x88, 0x03, 0x78, 0x00, 0x2C, 0x00, 0x2D, 0x04,
+ 0x91, 0x00, 0x2E, 0x00, 0xD1, 0x04, 0xB0, 0x00,
+ 0x25, 0x00, 0xAE, 0xFF, 0x4A, 0x00, 0x25, 0x00,
+ 0x0A, 0xFF, 0x4A, 0x00, 0x25, 0x00, 0x65, 0xFE,
+ 0x4A, 0x00, 0x25, 0x00, 0xC1, 0xFD, 0x4A, 0x00,
+ 0x28, 0x00, 0x1C, 0xFD, 0x63, 0x00, 0x2A, 0x00,
+ 0x78, 0xFC, 0x78, 0x00, 0x2C, 0x00, 0xD3, 0xFB,
+ 0x91, 0x00, 0x2E, 0x00, 0x2F, 0xFB, 0xB0, 0x00,
+ 0x25, 0x00, 0x52, 0x00, 0xDF, 0x00, 0x25, 0x00,
+ 0xF6, 0x00, 0xDF, 0x00, 0x25, 0x00, 0x9B, 0x01,
+ 0xDF, 0x00, 0x25, 0x00, 0x3F, 0x02, 0xDF, 0x00,
+ 0x28, 0x00, 0xE4, 0x02, 0x2A, 0x01, 0x2A, 0x00,
+ 0x88, 0x03, 0x68, 0x01, 0x2C, 0x00, 0x2D, 0x04,
+ 0xB4, 0x01, 0x2E, 0x00, 0xD1, 0x04, 0x10, 0x02,
+ 0x25, 0x00, 0xAE, 0xFF, 0xDF, 0x00, 0x25, 0x00,
+ 0x0A, 0xFF, 0xDF, 0x00, 0x25, 0x00, 0x65, 0xFE,
+ 0xDF, 0x00, 0x25, 0x00, 0xC1, 0xFD, 0xDF, 0x00,
+ 0x28, 0x00, 0x1C, 0xFD, 0x2A, 0x01, 0x2A, 0x00,
+ 0x78, 0xFC, 0x68, 0x01, 0x2C, 0x00, 0xD3, 0xFB,
+ 0xB4, 0x01, 0x2E, 0x00, 0x2F, 0xFB, 0x10, 0x02,
+ 0x25, 0x00, 0x52, 0x00, 0x75, 0x01, 0x25, 0x00,
+ 0xF6, 0x00, 0x75, 0x01, 0x25, 0x00, 0x9B, 0x01,
+ 0x75, 0x01, 0x25, 0x00, 0x3F, 0x02, 0x75, 0x01,
+ 0x28, 0x00, 0xE4, 0x02, 0xF1, 0x01, 0x2A, 0x00,
+ 0x88, 0x03, 0x59, 0x02, 0x2C, 0x00, 0x2D, 0x04,
+ 0xD8, 0x02, 0x2E, 0x00, 0xD1, 0x04, 0x71, 0x03,
+ 0x25, 0x00, 0xAE, 0xFF, 0x75, 0x01, 0x25, 0x00,
+ 0x0A, 0xFF, 0x75, 0x01, 0x25, 0x00, 0x65, 0xFE,
+ 0x75, 0x01, 0x25, 0x00, 0xC1, 0xFD, 0x75, 0x01,
+ 0x28, 0x00, 0x1C, 0xFD, 0xF1, 0x01, 0x2A, 0x00,
+ 0x78, 0xFC, 0x59, 0x02, 0x2C, 0x00, 0xD3, 0xFB,
+ 0xD8, 0x02, 0x2E, 0x00, 0x2F, 0xFB, 0x71, 0x03,
+ 0x25, 0x00, 0x52, 0x00, 0x0A, 0x02, 0x25, 0x00,
+ 0xF6, 0x00, 0x0A, 0x02, 0x25, 0x00, 0x9B, 0x01,
+ 0x0A, 0x02, 0x25, 0x00, 0x3F, 0x02, 0x0A, 0x02,
+ 0x28, 0x00, 0xE4, 0x02, 0xB8, 0x02, 0x2A, 0x00,
+ 0x88, 0x03, 0x49, 0x03, 0x2C, 0x00, 0x2D, 0x04,
+ 0xFB, 0x03, 0x2E, 0x00, 0xD1, 0x04, 0xD1, 0x04,
+ 0x25, 0x00, 0xAE, 0xFF, 0x0A, 0x02, 0x25, 0x00,
+ 0x0A, 0xFF, 0x0A, 0x02, 0x25, 0x00, 0x65, 0xFE,
+ 0x0A, 0x02, 0x25, 0x00, 0xC1, 0xFD, 0x0A, 0x02,
+ 0x28, 0x00, 0x1C, 0xFD, 0xB8, 0x02, 0x2A, 0x00,
+ 0x78, 0xFC, 0x49, 0x03, 0x2C, 0x00, 0xD3, 0xFB,
+ 0xFB, 0x03, 0x2E, 0x00, 0x2F, 0xFB, 0xD1, 0x04,
+ 0x28, 0x00, 0x52, 0x00, 0xA0, 0x02, 0x28, 0x00,
+ 0xF6, 0x00, 0xA0, 0x02, 0x28, 0x00, 0x9B, 0x01,
+ 0xA0, 0x02, 0x28, 0x00, 0x3F, 0x02, 0xA0, 0x02,
+ 0x2B, 0x00, 0xE4, 0x02, 0x7F, 0x03, 0x2D, 0x00,
+ 0x88, 0x03, 0x3B, 0x04, 0x2F, 0x00, 0x2D, 0x04,
+ 0x1F, 0x05, 0x30, 0x00, 0xD1, 0x04, 0x33, 0x06,
+ 0x28, 0x00, 0xAE, 0xFF, 0xA0, 0x02, 0x28, 0x00,
+ 0x0A, 0xFF, 0xA0, 0x02, 0x28, 0x00, 0x65, 0xFE,
+ 0xA0, 0x02, 0x28, 0x00, 0xC1, 0xFD, 0xA0, 0x02,
+ 0x2B, 0x00, 0x1C, 0xFD, 0x7F, 0x03, 0x2D, 0x00,
+ 0x78, 0xFC, 0x3B, 0x04, 0x2F, 0x00, 0xD3, 0xFB,
+ 0x1F, 0x05, 0x30, 0x00, 0x2F, 0xFB, 0x33, 0x06,
+ 0x2A, 0x00, 0x52, 0x00, 0x35, 0x03, 0x2A, 0x00,
+ 0xF6, 0x00, 0x35, 0x03, 0x2A, 0x00, 0x9B, 0x01,
+ 0x35, 0x03, 0x2A, 0x00, 0x3F, 0x02, 0x35, 0x03,
+ 0x2D, 0x00, 0xE4, 0x02, 0x46, 0x04, 0x2F, 0x00,
+ 0x88, 0x03, 0x2B, 0x05, 0x30, 0x00, 0x2D, 0x04,
+ 0x42, 0x06, 0x30, 0x00, 0xD1, 0x04, 0x93, 0x07,
+ 0x2A, 0x00, 0xAE, 0xFF, 0x35, 0x03, 0x2A, 0x00,
+ 0x0A, 0xFF, 0x35, 0x03, 0x2A, 0x00, 0x65, 0xFE,
+ 0x35, 0x03, 0x2A, 0x00, 0xC1, 0xFD, 0x35, 0x03,
+ 0x2D, 0x00, 0x1C, 0xFD, 0x46, 0x04, 0x2F, 0x00,
+ 0x78, 0xFC, 0x2B, 0x05, 0x30, 0x00, 0xD3, 0xFB,
+ 0x42, 0x06, 0x30, 0x00, 0x2F, 0xFB, 0x93, 0x07,
+ 0x2C, 0x00, 0x52, 0x00, 0xCB, 0x03, 0x2C, 0x00,
+ 0xF6, 0x00, 0xCB, 0x03, 0x2C, 0x00, 0x9B, 0x01,
+ 0xCB, 0x03, 0x2C, 0x00, 0x3F, 0x02, 0xCB, 0x03,
+ 0x2F, 0x00, 0xE4, 0x02, 0x0D, 0x05, 0x30, 0x00,
+ 0x88, 0x03, 0x1C, 0x06, 0x30, 0x00, 0x2D, 0x04,
+ 0x66, 0x07, 0x30, 0x00, 0xD1, 0x04, 0xF4, 0x08,
+ 0x2C, 0x00, 0xAE, 0xFF, 0xCB, 0x03, 0x2C, 0x00,
+ 0x0A, 0xFF, 0xCB, 0x03, 0x2C, 0x00, 0x65, 0xFE,
+ 0xCB, 0x03, 0x2C, 0x00, 0xC1, 0xFD, 0xCB, 0x03,
+ 0x2F, 0x00, 0x1C, 0xFD, 0x0D, 0x05, 0x30, 0x00,
+ 0x78, 0xFC, 0x1C, 0x06, 0x30, 0x00, 0xD3, 0xFB,
+ 0x66, 0x07, 0x30, 0x00, 0x2F, 0xFB, 0xF4, 0x08,
+ 0x2E, 0x00, 0x52, 0x00, 0x60, 0x04, 0x2E, 0x00,
+ 0xF6, 0x00, 0x60, 0x04, 0x2E, 0x00, 0x9B, 0x01,
+ 0x60, 0x04, 0x2E, 0x00, 0x3F, 0x02, 0x60, 0x04,
+ 0x30, 0x00, 0xE4, 0x02, 0xD4, 0x05, 0x30, 0x00,
+ 0x88, 0x03, 0x0C, 0x07, 0x30, 0x00, 0x2D, 0x04,
+ 0x89, 0x08, 0x30, 0x00, 0xD1, 0x04, 0x54, 0x0A,
+ 0x2E, 0x00, 0xAE, 0xFF, 0x60, 0x04, 0x2E, 0x00,
+ 0x0A, 0xFF, 0x60, 0x04, 0x2E, 0x00, 0x65, 0xFE,
+ 0x60, 0x04, 0x2E, 0x00, 0xC1, 0xFD, 0x60, 0x04,
+ 0x30, 0x00, 0x1C, 0xFD, 0xD4, 0x05, 0x30, 0x00,
+ 0x78, 0xFC, 0x0C, 0x07, 0x30, 0x00, 0xD3, 0xFB,
+ 0x89, 0x08, 0x30, 0x00, 0x2F, 0xFB, 0x54, 0x0A,
+ 0x25, 0x00, 0x52, 0x00, 0xB6, 0xFF, 0x25, 0x00,
+ 0xF6, 0x00, 0xB6, 0xFF, 0x25, 0x00, 0x9B, 0x01,
+ 0xB6, 0xFF, 0x25, 0x00, 0x3F, 0x02, 0xB6, 0xFF,
+ 0x28, 0x00, 0xE4, 0x02, 0x9D, 0xFF, 0x2A, 0x00,
+ 0x88, 0x03, 0x88, 0xFF, 0x2C, 0x00, 0x2D, 0x04,
+ 0x6F, 0xFF, 0x2E, 0x00, 0xD1, 0x04, 0x50, 0xFF,
+ 0x25, 0x00, 0xAE, 0xFF, 0xB6, 0xFF, 0x25, 0x00,
+ 0x0A, 0xFF, 0xB6, 0xFF, 0x25, 0x00, 0x65, 0xFE,
+ 0xB6, 0xFF, 0x25, 0x00, 0xC1, 0xFD, 0xB6, 0xFF,
+ 0x28, 0x00, 0x1C, 0xFD, 0x9D, 0xFF, 0x2A, 0x00,
+ 0x78, 0xFC, 0x88, 0xFF, 0x2C, 0x00, 0xD3, 0xFB,
+ 0x6F, 0xFF, 0x2E, 0x00, 0x2F, 0xFB, 0x50, 0xFF,
+ 0x25, 0x00, 0x52, 0x00, 0x21, 0xFF, 0x25, 0x00,
+ 0xF6, 0x00, 0x21, 0xFF, 0x25, 0x00, 0x9B, 0x01,
+ 0x21, 0xFF, 0x25, 0x00, 0x3F, 0x02, 0x21, 0xFF,
+ 0x28, 0x00, 0xE4, 0x02, 0xD6, 0xFE, 0x2A, 0x00,
+ 0x88, 0x03, 0x98, 0xFE, 0x2C, 0x00, 0x2D, 0x04,
+ 0x4C, 0xFE, 0x2E, 0x00, 0xD1, 0x04, 0xF0, 0xFD,
+ 0x25, 0x00, 0xAE, 0xFF, 0x21, 0xFF, 0x25, 0x00,
+ 0x0A, 0xFF, 0x21, 0xFF, 0x25, 0x00, 0x65, 0xFE,
+ 0x21, 0xFF, 0x25, 0x00, 0xC1, 0xFD, 0x21, 0xFF,
+ 0x28, 0x00, 0x1C, 0xFD, 0xD6, 0xFE, 0x2A, 0x00,
+ 0x78, 0xFC, 0x98, 0xFE, 0x2C, 0x00, 0xD3, 0xFB,
+ 0x4C, 0xFE, 0x2E, 0x00, 0x2F, 0xFB, 0xF0, 0xFD,
+ 0x25, 0x00, 0x52, 0x00, 0x8B, 0xFE, 0x25, 0x00,
+ 0xF6, 0x00, 0x8B, 0xFE, 0x25, 0x00, 0x9B, 0x01,
+ 0x8B, 0xFE, 0x25, 0x00, 0x3F, 0x02, 0x8B, 0xFE,
+ 0x28, 0x00, 0xE4, 0x02, 0x0F, 0xFE, 0x2A, 0x00,
+ 0x88, 0x03, 0xA7, 0xFD, 0x2C, 0x00, 0x2D, 0x04,
+ 0x28, 0xFD, 0x2E, 0x00, 0xD1, 0x04, 0x8F, 0xFC,
+ 0x25, 0x00, 0xAE, 0xFF, 0x8B, 0xFE, 0x25, 0x00,
+ 0x0A, 0xFF, 0x8B, 0xFE, 0x25, 0x00, 0x65, 0xFE,
+ 0x8B, 0xFE, 0x25, 0x00, 0xC1, 0xFD, 0x8B, 0xFE,
+ 0x28, 0x00, 0x1C, 0xFD, 0x0F, 0xFE, 0x2A, 0x00,
+ 0x78, 0xFC, 0xA7, 0xFD, 0x2C, 0x00, 0xD3, 0xFB,
+ 0x28, 0xFD, 0x2E, 0x00, 0x2F, 0xFB, 0x8F, 0xFC,
+ 0x25, 0x00, 0x52, 0x00, 0xF6, 0xFD, 0x25, 0x00,
+ 0xF6, 0x00, 0xF6, 0xFD, 0x25, 0x00, 0x9B, 0x01,
+ 0xF6, 0xFD, 0x25, 0x00, 0x3F, 0x02, 0xF6, 0xFD,
+ 0x28, 0x00, 0xE4, 0x02, 0x48, 0xFD, 0x2A, 0x00,
+ 0x88, 0x03, 0xB7, 0xFC, 0x2C, 0x00, 0x2D, 0x04,
+ 0x05, 0xFC, 0x2E, 0x00, 0xD1, 0x04, 0x2F, 0xFB,
+ 0x25, 0x00, 0xAE, 0xFF, 0xF6, 0xFD, 0x25, 0x00,
+ 0x0A, 0xFF, 0xF6, 0xFD, 0x25, 0x00, 0x65, 0xFE,
+ 0xF6, 0xFD, 0x25, 0x00, 0xC1, 0xFD, 0xF6, 0xFD,
+ 0x28, 0x00, 0x1C, 0xFD, 0x48, 0xFD, 0x2A, 0x00,
+ 0x78, 0xFC, 0xB7, 0xFC, 0x2C, 0x00, 0xD3, 0xFB,
+ 0x05, 0xFC, 0x2E, 0x00, 0x2F, 0xFB, 0x2F, 0xFB,
+ 0x28, 0x00, 0x52, 0x00, 0x60, 0xFD, 0x28, 0x00,
+ 0xF6, 0x00, 0x60, 0xFD, 0x28, 0x00, 0x9B, 0x01,
+ 0x60, 0xFD, 0x28, 0x00, 0x3F, 0x02, 0x60, 0xFD,
+ 0x2B, 0x00, 0xE4, 0x02, 0x81, 0xFC, 0x2D, 0x00,
+ 0x88, 0x03, 0xC5, 0xFB, 0x2F, 0x00, 0x2D, 0x04,
+ 0xE1, 0xFA, 0x30, 0x00, 0xD1, 0x04, 0xCD, 0xF9,
+ 0x28, 0x00, 0xAE, 0xFF, 0x60, 0xFD, 0x28, 0x00,
+ 0x0A, 0xFF, 0x60, 0xFD, 0x28, 0x00, 0x65, 0xFE,
+ 0x60, 0xFD, 0x28, 0x00, 0xC1, 0xFD, 0x60, 0xFD,
+ 0x2B, 0x00, 0x1C, 0xFD, 0x81, 0xFC, 0x2D, 0x00,
+ 0x78, 0xFC, 0xC5, 0xFB, 0x2F, 0x00, 0xD3, 0xFB,
+ 0xE1, 0xFA, 0x30, 0x00, 0x2F, 0xFB, 0xCD, 0xF9,
+ 0x2A, 0x00, 0x52, 0x00, 0xCB, 0xFC, 0x2A, 0x00,
+ 0xF6, 0x00, 0xCB, 0xFC, 0x2A, 0x00, 0x9B, 0x01,
+ 0xCB, 0xFC, 0x2A, 0x00, 0x3F, 0x02, 0xCB, 0xFC,
+ 0x2D, 0x00, 0xE4, 0x02, 0xBA, 0xFB, 0x2F, 0x00,
+ 0x88, 0x03, 0xD5, 0xFA, 0x30, 0x00, 0x2D, 0x04,
+ 0xBE, 0xF9, 0x30, 0x00, 0xD1, 0x04, 0x6D, 0xF8,
+ 0x2A, 0x00, 0xAE, 0xFF, 0xCB, 0xFC, 0x2A, 0x00,
+ 0x0A, 0xFF, 0xCB, 0xFC, 0x2A, 0x00, 0x65, 0xFE,
+ 0xCB, 0xFC, 0x2A, 0x00, 0xC1, 0xFD, 0xCB, 0xFC,
+ 0x2D, 0x00, 0x1C, 0xFD, 0xBA, 0xFB, 0x2F, 0x00,
+ 0x78, 0xFC, 0xD5, 0xFA, 0x30, 0x00, 0xD3, 0xFB,
+ 0xBE, 0xF9, 0x30, 0x00, 0x2F, 0xFB, 0x6D, 0xF8,
+ 0x2C, 0x00, 0x52, 0x00, 0x35, 0xFC, 0x2C, 0x00,
+ 0xF6, 0x00, 0x35, 0xFC, 0x2C, 0x00, 0x9B, 0x01,
+ 0x35, 0xFC, 0x2C, 0x00, 0x3F, 0x02, 0x35, 0xFC,
+ 0x2F, 0x00, 0xE4, 0x02, 0xF3, 0xFA, 0x30, 0x00,
+ 0x88, 0x03, 0xE4, 0xF9, 0x30, 0x00, 0x2D, 0x04,
+ 0x9A, 0xF8, 0x30, 0x00, 0xD1, 0x04, 0x0C, 0xF7,
+ 0x2C, 0x00, 0xAE, 0xFF, 0x35, 0xFC, 0x2C, 0x00,
+ 0x0A, 0xFF, 0x35, 0xFC, 0x2C, 0x00, 0x65, 0xFE,
+ 0x35, 0xFC, 0x2C, 0x00, 0xC1, 0xFD, 0x35, 0xFC,
+ 0x2F, 0x00, 0x1C, 0xFD, 0xF3, 0xFA, 0x30, 0x00,
+ 0x78, 0xFC, 0xE4, 0xF9, 0x30, 0x00, 0xD3, 0xFB,
+ 0x9A, 0xF8, 0x30, 0x00, 0x2F, 0xFB, 0x0C, 0xF7,
+ 0x2E, 0x00, 0x52, 0x00, 0xA0, 0xFB, 0x2E, 0x00,
+ 0xF6, 0x00, 0xA0, 0xFB, 0x2E, 0x00, 0x9B, 0x01,
+ 0xA0, 0xFB, 0x2E, 0x00, 0x3F, 0x02, 0xA0, 0xFB,
+ 0x30, 0x00, 0xE4, 0x02, 0x2C, 0xFA, 0x30, 0x00,
+ 0x88, 0x03, 0xF4, 0xF8, 0x30, 0x00, 0x2D, 0x04,
+ 0x77, 0xF7, 0x30, 0x00, 0xD1, 0x04, 0xAC, 0xF5,
+ 0x2E, 0x00, 0xAE, 0xFF, 0xA0, 0xFB, 0x2E, 0x00,
+ 0x0A, 0xFF, 0xA0, 0xFB, 0x2E, 0x00, 0x65, 0xFE,
+ 0xA0, 0xFB, 0x2E, 0x00, 0xC1, 0xFD, 0xA0, 0xFB,
+ 0x30, 0x00, 0x1C, 0xFD, 0x2C, 0xFA, 0x30, 0x00,
+ 0x78, 0xFC, 0xF4, 0xF8, 0x30, 0x00, 0xD3, 0xFB,
+ 0x77, 0xF7, 0x30, 0x00, 0x2F, 0xFB, 0xAC, 0xF5,
+ 0x26, 0x00, 0x5A, 0x00, 0x52, 0x00, 0x26, 0x00,
+ 0x0F, 0x01, 0x52, 0x00, 0x26, 0x00, 0xC4, 0x01,
+ 0x52, 0x00, 0x26, 0x00, 0x79, 0x02, 0x52, 0x00,
+ 0x29, 0x00, 0x2E, 0x03, 0x6D, 0x00, 0x2B, 0x00,
+ 0xE3, 0x03, 0x84, 0x00, 0x2D, 0x00, 0x98, 0x04,
+ 0xA0, 0x00, 0x2F, 0x00, 0x4D, 0x05, 0xC2, 0x00,
+ 0x26, 0x00, 0xA6, 0xFF, 0x52, 0x00, 0x26, 0x00,
+ 0xF1, 0xFE, 0x52, 0x00, 0x26, 0x00, 0x3C, 0xFE,
+ 0x52, 0x00, 0x26, 0x00, 0x87, 0xFD, 0x52, 0x00,
+ 0x29, 0x00, 0xD2, 0xFC, 0x6D, 0x00, 0x2B, 0x00,
+ 0x1D, 0xFC, 0x84, 0x00, 0x2D, 0x00, 0x68, 0xFB,
+ 0xA0, 0x00, 0x2F, 0x00, 0xB3, 0xFA, 0xC2, 0x00,
+ 0x26, 0x00, 0x5A, 0x00, 0xF6, 0x00, 0x26, 0x00,
+ 0x0F, 0x01, 0xF6, 0x00, 0x26, 0x00, 0xC4, 0x01,
+ 0xF6, 0x00, 0x26, 0x00, 0x79, 0x02, 0xF6, 0x00,
+ 0x29, 0x00, 0x2E, 0x03, 0x48, 0x01, 0x2B, 0x00,
+ 0xE3, 0x03, 0x8D, 0x01, 0x2D, 0x00, 0x98, 0x04,
+ 0xE0, 0x01, 0x2F, 0x00, 0x4D, 0x05, 0x46, 0x02,
+ 0x26, 0x00, 0xA6, 0xFF, 0xF6, 0x00, 0x26, 0x00,
+ 0xF1, 0xFE, 0xF6, 0x00, 0x26, 0x00, 0x3C, 0xFE,
+ 0xF6, 0x00, 0x26, 0x00, 0x87, 0xFD, 0xF6, 0x00,
+ 0x29, 0x00, 0xD2, 0xFC, 0x48, 0x01, 0x2B, 0x00,
+ 0x1D, 0xFC, 0x8D, 0x01, 0x2D, 0x00, 0x68, 0xFB,
+ 0xE0, 0x01, 0x2F, 0x00, 0xB3, 0xFA, 0x46, 0x02,
+ 0x26, 0x00, 0x5A, 0x00, 0x9B, 0x01, 0x26, 0x00,
+ 0x0F, 0x01, 0x9B, 0x01, 0x26, 0x00, 0xC4, 0x01,
+ 0x9B, 0x01, 0x26, 0x00, 0x79, 0x02, 0x9B, 0x01,
+ 0x29, 0x00, 0x2E, 0x03, 0x23, 0x02, 0x2B, 0x00,
+ 0xE3, 0x03, 0x96, 0x02, 0x2D, 0x00, 0x98, 0x04,
+ 0x21, 0x03, 0x2F, 0x00, 0x4D, 0x05, 0xCA, 0x03,
+ 0x26, 0x00, 0xA6, 0xFF, 0x9B, 0x01, 0x26, 0x00,
+ 0xF1, 0xFE, 0x9B, 0x01, 0x26, 0x00, 0x3C, 0xFE,
+ 0x9B, 0x01, 0x26, 0x00, 0x87, 0xFD, 0x9B, 0x01,
+ 0x29, 0x00, 0xD2, 0xFC, 0x23, 0x02, 0x2B, 0x00,
+ 0x1D, 0xFC, 0x96, 0x02, 0x2D, 0x00, 0x68, 0xFB,
+ 0x21, 0x03, 0x2F, 0x00, 0xB3, 0xFA, 0xCA, 0x03,
+ 0x26, 0x00, 0x5A, 0x00, 0x3F, 0x02, 0x26, 0x00,
+ 0x0F, 0x01, 0x3F, 0x02, 0x26, 0x00, 0xC4, 0x01,
+ 0x3F, 0x02, 0x26, 0x00, 0x79, 0x02, 0x3F, 0x02,
+ 0x29, 0x00, 0x2E, 0x03, 0xFE, 0x02, 0x2B, 0x00,
+ 0xE3, 0x03, 0x9F, 0x03, 0x2D, 0x00, 0x98, 0x04,
+ 0x61, 0x04, 0x2F, 0x00, 0x4D, 0x05, 0x4E, 0x05,
+ 0x26, 0x00, 0xA6, 0xFF, 0x3F, 0x02, 0x26, 0x00,
+ 0xF1, 0xFE, 0x3F, 0x02, 0x26, 0x00, 0x3C, 0xFE,
+ 0x3F, 0x02, 0x26, 0x00, 0x87, 0xFD, 0x3F, 0x02,
+ 0x29, 0x00, 0xD2, 0xFC, 0xFE, 0x02, 0x2B, 0x00,
+ 0x1D, 0xFC, 0x9F, 0x03, 0x2D, 0x00, 0x68, 0xFB,
+ 0x61, 0x04, 0x2F, 0x00, 0xB3, 0xFA, 0x4E, 0x05,
+ 0x29, 0x00, 0x5A, 0x00, 0xE4, 0x02, 0x29, 0x00,
+ 0x0F, 0x01, 0xE4, 0x02, 0x29, 0x00, 0xC4, 0x01,
+ 0xE4, 0x02, 0x29, 0x00, 0x79, 0x02, 0xE4, 0x02,
+ 0x2C, 0x00, 0x2E, 0x03, 0xD9, 0x03, 0x2E, 0x00,
+ 0xE3, 0x03, 0xA8, 0x04, 0x30, 0x00, 0x98, 0x04,
+ 0xA2, 0x05, 0x30, 0x00, 0x4D, 0x05, 0xD2, 0x06,
+ 0x29, 0x00, 0xA6, 0xFF, 0xE4, 0x02, 0x29, 0x00,
+ 0xF1, 0xFE, 0xE4, 0x02, 0x29, 0x00, 0x3C, 0xFE,
+ 0xE4, 0x02, 0x29, 0x00, 0x87, 0xFD, 0xE4, 0x02,
+ 0x2C, 0x00, 0xD2, 0xFC, 0xD9, 0x03, 0x2E, 0x00,
+ 0x1D, 0xFC, 0xA8, 0x04, 0x30, 0x00, 0x68, 0xFB,
+ 0xA2, 0x05, 0x30, 0x00, 0xB3, 0xFA, 0xD2, 0x06,
+ 0x2B, 0x00, 0x5A, 0x00, 0x88, 0x03, 0x2B, 0x00,
+ 0x0F, 0x01, 0x88, 0x03, 0x2B, 0x00, 0xC4, 0x01,
+ 0x88, 0x03, 0x2B, 0x00, 0x79, 0x02, 0x88, 0x03,
+ 0x2E, 0x00, 0x2E, 0x03, 0xB4, 0x04, 0x30, 0x00,
+ 0xE3, 0x03, 0xB1, 0x05, 0x30, 0x00, 0x98, 0x04,
+ 0xE2, 0x06, 0x30, 0x00, 0x4D, 0x05, 0x56, 0x08,
+ 0x2B, 0x00, 0xA6, 0xFF, 0x88, 0x03, 0x2B, 0x00,
+ 0xF1, 0xFE, 0x88, 0x03, 0x2B, 0x00, 0x3C, 0xFE,
+ 0x88, 0x03, 0x2B, 0x00, 0x87, 0xFD, 0x88, 0x03,
+ 0x2E, 0x00, 0xD2, 0xFC, 0xB4, 0x04, 0x30, 0x00,
+ 0x1D, 0xFC, 0xB1, 0x05, 0x30, 0x00, 0x68, 0xFB,
+ 0xE2, 0x06, 0x30, 0x00, 0xB3, 0xFA, 0x56, 0x08,
+ 0x2D, 0x00, 0x5A, 0x00, 0x2D, 0x04, 0x2D, 0x00,
+ 0x0F, 0x01, 0x2D, 0x04, 0x2D, 0x00, 0xC4, 0x01,
+ 0x2D, 0x04, 0x2D, 0x00, 0x79, 0x02, 0x2D, 0x04,
+ 0x30, 0x00, 0x2E, 0x03, 0x8F, 0x05, 0x30, 0x00,
+ 0xE3, 0x03, 0xBA, 0x06, 0x30, 0x00, 0x98, 0x04,
+ 0x23, 0x08, 0x30, 0x00, 0x4D, 0x05, 0xDA, 0x09,
+ 0x2D, 0x00, 0xA6, 0xFF, 0x2D, 0x04, 0x2D, 0x00,
+ 0xF1, 0xFE, 0x2D, 0x04, 0x2D, 0x00, 0x3C, 0xFE,
+ 0x2D, 0x04, 0x2D, 0x00, 0x87, 0xFD, 0x2D, 0x04,
+ 0x30, 0x00, 0xD2, 0xFC, 0x8F, 0x05, 0x30, 0x00,
+ 0x1D, 0xFC, 0xBA, 0x06, 0x30, 0x00, 0x68, 0xFB,
+ 0x23, 0x08, 0x30, 0x00, 0xB3, 0xFA, 0xDA, 0x09,
+ 0x2F, 0x00, 0x5A, 0x00, 0xD1, 0x04, 0x2F, 0x00,
+ 0x0F, 0x01, 0xD1, 0x04, 0x2F, 0x00, 0xC4, 0x01,
+ 0xD1, 0x04, 0x2F, 0x00, 0x79, 0x02, 0xD1, 0x04,
+ 0x30, 0x00, 0x2E, 0x03, 0x6A, 0x06, 0x30, 0x00,
+ 0xE3, 0x03, 0xC3, 0x07, 0x30, 0x00, 0x98, 0x04,
+ 0x63, 0x09, 0x30, 0x00, 0x4D, 0x05, 0x5E, 0x0B,
+ 0x2F, 0x00, 0xA6, 0xFF, 0xD1, 0x04, 0x2F, 0x00,
+ 0xF1, 0xFE, 0xD1, 0x04, 0x2F, 0x00, 0x3C, 0xFE,
+ 0xD1, 0x04, 0x2F, 0x00, 0x87, 0xFD, 0xD1, 0x04,
+ 0x30, 0x00, 0xD2, 0xFC, 0x6A, 0x06, 0x30, 0x00,
+ 0x1D, 0xFC, 0xC3, 0x07, 0x30, 0x00, 0x68, 0xFB,
+ 0x63, 0x09, 0x30, 0x00, 0xB3, 0xFA, 0x5E, 0x0B,
+ 0x26, 0x00, 0x5A, 0x00, 0xAE, 0xFF, 0x26, 0x00,
+ 0x0F, 0x01, 0xAE, 0xFF, 0x26, 0x00, 0xC4, 0x01,
+ 0xAE, 0xFF, 0x26, 0x00, 0x79, 0x02, 0xAE, 0xFF,
+ 0x29, 0x00, 0x2E, 0x03, 0x93, 0xFF, 0x2B, 0x00,
+ 0xE3, 0x03, 0x7C, 0xFF, 0x2D, 0x00, 0x98, 0x04,
+ 0x60, 0xFF, 0x2F, 0x00, 0x4D, 0x05, 0x3E, 0xFF,
+ 0x26, 0x00, 0xA6, 0xFF, 0xAE, 0xFF, 0x26, 0x00,
+ 0xF1, 0xFE, 0xAE, 0xFF, 0x26, 0x00, 0x3C, 0xFE,
+ 0xAE, 0xFF, 0x26, 0x00, 0x87, 0xFD, 0xAE, 0xFF,
+ 0x29, 0x00, 0xD2, 0xFC, 0x93, 0xFF, 0x2B, 0x00,
+ 0x1D, 0xFC, 0x7C, 0xFF, 0x2D, 0x00, 0x68, 0xFB,
+ 0x60, 0xFF, 0x2F, 0x00, 0xB3, 0xFA, 0x3E, 0xFF,
+ 0x26, 0x00, 0x5A, 0x00, 0x0A, 0xFF, 0x26, 0x00,
+ 0x0F, 0x01, 0x0A, 0xFF, 0x26, 0x00, 0xC4, 0x01,
+ 0x0A, 0xFF, 0x26, 0x00, 0x79, 0x02, 0x0A, 0xFF,
+ 0x29, 0x00, 0x2E, 0x03, 0xB8, 0xFE, 0x2B, 0x00,
+ 0xE3, 0x03, 0x73, 0xFE, 0x2D, 0x00, 0x98, 0x04,
+ 0x20, 0xFE, 0x2F, 0x00, 0x4D, 0x05, 0xBA, 0xFD,
+ 0x26, 0x00, 0xA6, 0xFF, 0x0A, 0xFF, 0x26, 0x00,
+ 0xF1, 0xFE, 0x0A, 0xFF, 0x26, 0x00, 0x3C, 0xFE,
+ 0x0A, 0xFF, 0x26, 0x00, 0x87, 0xFD, 0x0A, 0xFF,
+ 0x29, 0x00, 0xD2, 0xFC, 0xB8, 0xFE, 0x2B, 0x00,
+ 0x1D, 0xFC, 0x73, 0xFE, 0x2D, 0x00, 0x68, 0xFB,
+ 0x20, 0xFE, 0x2F, 0x00, 0xB3, 0xFA, 0xBA, 0xFD,
+ 0x26, 0x00, 0x5A, 0x00, 0x65, 0xFE, 0x26, 0x00,
+ 0x0F, 0x01, 0x65, 0xFE, 0x26, 0x00, 0xC4, 0x01,
+ 0x65, 0xFE, 0x26, 0x00, 0x79, 0x02, 0x65, 0xFE,
+ 0x29, 0x00, 0x2E, 0x03, 0xDD, 0xFD, 0x2B, 0x00,
+ 0xE3, 0x03, 0x6A, 0xFD, 0x2D, 0x00, 0x98, 0x04,
+ 0xDF, 0xFC, 0x2F, 0x00, 0x4D, 0x05, 0x36, 0xFC,
+ 0x26, 0x00, 0xA6, 0xFF, 0x65, 0xFE, 0x26, 0x00,
+ 0xF1, 0xFE, 0x65, 0xFE, 0x26, 0x00, 0x3C, 0xFE,
+ 0x65, 0xFE, 0x26, 0x00, 0x87, 0xFD, 0x65, 0xFE,
+ 0x29, 0x00, 0xD2, 0xFC, 0xDD, 0xFD, 0x2B, 0x00,
+ 0x1D, 0xFC, 0x6A, 0xFD, 0x2D, 0x00, 0x68, 0xFB,
+ 0xDF, 0xFC, 0x2F, 0x00, 0xB3, 0xFA, 0x36, 0xFC,
+ 0x26, 0x00, 0x5A, 0x00, 0xC1, 0xFD, 0x26, 0x00,
+ 0x0F, 0x01, 0xC1, 0xFD, 0x26, 0x00, 0xC4, 0x01,
+ 0xC1, 0xFD, 0x26, 0x00, 0x79, 0x02, 0xC1, 0xFD,
+ 0x29, 0x00, 0x2E, 0x03, 0x02, 0xFD, 0x2B, 0x00,
+ 0xE3, 0x03, 0x61, 0xFC, 0x2D, 0x00, 0x98, 0x04,
+ 0x9F, 0xFB, 0x2F, 0x00, 0x4D, 0x05, 0xB2, 0xFA,
+ 0x26, 0x00, 0xA6, 0xFF, 0xC1, 0xFD, 0x26, 0x00,
+ 0xF1, 0xFE, 0xC1, 0xFD, 0x26, 0x00, 0x3C, 0xFE,
+ 0xC1, 0xFD, 0x26, 0x00, 0x87, 0xFD, 0xC1, 0xFD,
+ 0x29, 0x00, 0xD2, 0xFC, 0x02, 0xFD, 0x2B, 0x00,
+ 0x1D, 0xFC, 0x61, 0xFC, 0x2D, 0x00, 0x68, 0xFB,
+ 0x9F, 0xFB, 0x2F, 0x00, 0xB3, 0xFA, 0xB2, 0xFA,
+ 0x29, 0x00, 0x5A, 0x00, 0x1C, 0xFD, 0x29, 0x00,
+ 0x0F, 0x01, 0x1C, 0xFD, 0x29, 0x00, 0xC4, 0x01,
+ 0x1C, 0xFD, 0x29, 0x00, 0x79, 0x02, 0x1C, 0xFD,
+ 0x2C, 0x00, 0x2E, 0x03, 0x27, 0xFC, 0x2E, 0x00,
+ 0xE3, 0x03, 0x58, 0xFB, 0x30, 0x00, 0x98, 0x04,
+ 0x5E, 0xFA, 0x30, 0x00, 0x4D, 0x05, 0x2E, 0xF9,
+ 0x29, 0x00, 0xA6, 0xFF, 0x1C, 0xFD, 0x29, 0x00,
+ 0xF1, 0xFE, 0x1C, 0xFD, 0x29, 0x00, 0x3C, 0xFE,
+ 0x1C, 0xFD, 0x29, 0x00, 0x87, 0xFD, 0x1C, 0xFD,
+ 0x2C, 0x00, 0xD2, 0xFC, 0x27, 0xFC, 0x2E, 0x00,
+ 0x1D, 0xFC, 0x58, 0xFB, 0x30, 0x00, 0x68, 0xFB,
+ 0x5E, 0xFA, 0x30, 0x00, 0xB3, 0xFA, 0x2E, 0xF9,
+ 0x2B, 0x00, 0x5A, 0x00, 0x78, 0xFC, 0x2B, 0x00,
+ 0x0F, 0x01, 0x78, 0xFC, 0x2B, 0x00, 0xC4, 0x01,
+ 0x78, 0xFC, 0x2B, 0x00, 0x79, 0x02, 0x78, 0xFC,
+ 0x2E, 0x00, 0x2E, 0x03, 0x4C, 0xFB, 0x30, 0x00,
+ 0xE3, 0x03, 0x4F, 0xFA, 0x30, 0x00, 0x98, 0x04,
+ 0x1E, 0xF9, 0x30, 0x00, 0x4D, 0x05, 0xAA, 0xF7,
+ 0x2B, 0x00, 0xA6, 0xFF, 0x78, 0xFC, 0x2B, 0x00,
+ 0xF1, 0xFE, 0x78, 0xFC, 0x2B, 0x00, 0x3C, 0xFE,
+ 0x78, 0xFC, 0x2B, 0x00, 0x87, 0xFD, 0x78, 0xFC,
+ 0x2E, 0x00, 0xD2, 0xFC, 0x4C, 0xFB, 0x30, 0x00,
+ 0x1D, 0xFC, 0x4F, 0xFA, 0x30, 0x00, 0x68, 0xFB,
+ 0x1E, 0xF9, 0x30, 0x00, 0xB3, 0xFA, 0xAA, 0xF7,
+ 0x2D, 0x00, 0x5A, 0x00, 0xD3, 0xFB, 0x2D, 0x00,
+ 0x0F, 0x01, 0xD3, 0xFB, 0x2D, 0x00, 0xC4, 0x01,
+ 0xD3, 0xFB, 0x2D, 0x00, 0x79, 0x02, 0xD3, 0xFB,
+ 0x30, 0x00, 0x2E, 0x03, 0x71, 0xFA, 0x30, 0x00,
+ 0xE3, 0x03, 0x46, 0xF9, 0x30, 0x00, 0x98, 0x04,
+ 0xDD, 0xF7, 0x30, 0x00, 0x4D, 0x05, 0x26, 0xF6,
+ 0x2D, 0x00, 0xA6, 0xFF, 0xD3, 0xFB, 0x2D, 0x00,
+ 0xF1, 0xFE, 0xD3, 0xFB, 0x2D, 0x00, 0x3C, 0xFE,
+ 0xD3, 0xFB, 0x2D, 0x00, 0x87, 0xFD, 0xD3, 0xFB,
+ 0x30, 0x00, 0xD2, 0xFC, 0x71, 0xFA, 0x30, 0x00,
+ 0x1D, 0xFC, 0x46, 0xF9, 0x30, 0x00, 0x68, 0xFB,
+ 0xDD, 0xF7, 0x30, 0x00, 0xB3, 0xFA, 0x26, 0xF6,
+ 0x2F, 0x00, 0x5A, 0x00, 0x2F, 0xFB, 0x2F, 0x00,
+ 0x0F, 0x01, 0x2F, 0xFB, 0x2F, 0x00, 0xC4, 0x01,
+ 0x2F, 0xFB, 0x2F, 0x00, 0x79, 0x02, 0x2F, 0xFB,
+ 0x30, 0x00, 0x2E, 0x03, 0x96, 0xF9, 0x30, 0x00,
+ 0xE3, 0x03, 0x3D, 0xF8, 0x30, 0x00, 0x98, 0x04,
+ 0x9D, 0xF6, 0x30, 0x00, 0x4D, 0x05, 0xA2, 0xF4,
+ 0x2F, 0x00, 0xA6, 0xFF, 0x2F, 0xFB, 0x2F, 0x00,
+ 0xF1, 0xFE, 0x2F, 0xFB, 0x2F, 0x00, 0x3C, 0xFE,
+ 0x2F, 0xFB, 0x2F, 0x00, 0x87, 0xFD, 0x2F, 0xFB,
+ 0x30, 0x00, 0xD2, 0xFC, 0x96, 0xF9, 0x30, 0x00,
+ 0x1D, 0xFC, 0x3D, 0xF8, 0x30, 0x00, 0x68, 0xFB,
+ 0x9D, 0xF6, 0x30, 0x00, 0xB3, 0xFA, 0xA2, 0xF4,
+ 0x27, 0x00, 0x63, 0x00, 0x5A, 0x00, 0x27, 0x00,
+ 0x2A, 0x01, 0x5A, 0x00, 0x27, 0x00, 0xF1, 0x01,
+ 0x5A, 0x00, 0x27, 0x00, 0xB8, 0x02, 0x5A, 0x00,
+ 0x2A, 0x00, 0x7F, 0x03, 0x78, 0x00, 0x2C, 0x00,
+ 0x46, 0x04, 0x91, 0x00, 0x2E, 0x00, 0x0D, 0x05,
+ 0xB0, 0x00, 0x2F, 0x00, 0xD4, 0x05, 0xC2, 0x00,
+ 0x27, 0x00, 0x9D, 0xFF, 0x5A, 0x00, 0x27, 0x00,
+ 0xD6, 0xFE, 0x5A, 0x00, 0x27, 0x00, 0x0F, 0xFE,
+ 0x5A, 0x00, 0x27, 0x00, 0x48, 0xFD, 0x5A, 0x00,
+ 0x2A, 0x00, 0x81, 0xFC, 0x78, 0x00, 0x2C, 0x00,
+ 0xBA, 0xFB, 0x91, 0x00, 0x2E, 0x00, 0xF3, 0xFA,
+ 0xB0, 0x00, 0x2F, 0x00, 0x2C, 0xFA, 0xC2, 0x00,
+ 0x27, 0x00, 0x63, 0x00, 0x0F, 0x01, 0x27, 0x00,
+ 0x2A, 0x01, 0x0F, 0x01, 0x27, 0x00, 0xF1, 0x01,
+ 0x0F, 0x01, 0x27, 0x00, 0xB8, 0x02, 0x0F, 0x01,
+ 0x2A, 0x00, 0x7F, 0x03, 0x68, 0x01, 0x2C, 0x00,
+ 0x46, 0x04, 0xB4, 0x01, 0x2E, 0x00, 0x0D, 0x05,
+ 0x10, 0x02, 0x2F, 0x00, 0xD4, 0x05, 0x46, 0x02,
+ 0x27, 0x00, 0x9D, 0xFF, 0x0F, 0x01, 0x27, 0x00,
+ 0xD6, 0xFE, 0x0F, 0x01, 0x27, 0x00, 0x0F, 0xFE,
+ 0x0F, 0x01, 0x27, 0x00, 0x48, 0xFD, 0x0F, 0x01,
+ 0x2A, 0x00, 0x81, 0xFC, 0x68, 0x01, 0x2C, 0x00,
+ 0xBA, 0xFB, 0xB4, 0x01, 0x2E, 0x00, 0xF3, 0xFA,
+ 0x10, 0x02, 0x2F, 0x00, 0x2C, 0xFA, 0x46, 0x02,
+ 0x27, 0x00, 0x63, 0x00, 0xC4, 0x01, 0x27, 0x00,
+ 0x2A, 0x01, 0xC4, 0x01, 0x27, 0x00, 0xF1, 0x01,
+ 0xC4, 0x01, 0x27, 0x00, 0xB8, 0x02, 0xC4, 0x01,
+ 0x2A, 0x00, 0x7F, 0x03, 0x59, 0x02, 0x2C, 0x00,
+ 0x46, 0x04, 0xD8, 0x02, 0x2E, 0x00, 0x0D, 0x05,
+ 0x71, 0x03, 0x2F, 0x00, 0xD4, 0x05, 0xCA, 0x03,
+ 0x27, 0x00, 0x9D, 0xFF, 0xC4, 0x01, 0x27, 0x00,
+ 0xD6, 0xFE, 0xC4, 0x01, 0x27, 0x00, 0x0F, 0xFE,
+ 0xC4, 0x01, 0x27, 0x00, 0x48, 0xFD, 0xC4, 0x01,
+ 0x2A, 0x00, 0x81, 0xFC, 0x59, 0x02, 0x2C, 0x00,
+ 0xBA, 0xFB, 0xD8, 0x02, 0x2E, 0x00, 0xF3, 0xFA,
+ 0x71, 0x03, 0x2F, 0x00, 0x2C, 0xFA, 0xCA, 0x03,
+ 0x27, 0x00, 0x63, 0x00, 0x79, 0x02, 0x27, 0x00,
+ 0x2A, 0x01, 0x79, 0x02, 0x27, 0x00, 0xF1, 0x01,
+ 0x79, 0x02, 0x27, 0x00, 0xB8, 0x02, 0x79, 0x02,
+ 0x2A, 0x00, 0x7F, 0x03, 0x49, 0x03, 0x2C, 0x00,
+ 0x46, 0x04, 0xFB, 0x03, 0x2E, 0x00, 0x0D, 0x05,
+ 0xD1, 0x04, 0x2F, 0x00, 0xD4, 0x05, 0x4E, 0x05,
+ 0x27, 0x00, 0x9D, 0xFF, 0x79, 0x02, 0x27, 0x00,
+ 0xD6, 0xFE, 0x79, 0x02, 0x27, 0x00, 0x0F, 0xFE,
+ 0x79, 0x02, 0x27, 0x00, 0x48, 0xFD, 0x79, 0x02,
+ 0x2A, 0x00, 0x81, 0xFC, 0x49, 0x03, 0x2C, 0x00,
+ 0xBA, 0xFB, 0xFB, 0x03, 0x2E, 0x00, 0xF3, 0xFA,
+ 0xD1, 0x04, 0x2F, 0x00, 0x2C, 0xFA, 0x4E, 0x05,
+ 0x2A, 0x00, 0x63, 0x00, 0x2E, 0x03, 0x2A, 0x00,
+ 0x2A, 0x01, 0x2E, 0x03, 0x2A, 0x00, 0xF1, 0x01,
+ 0x2E, 0x03, 0x2A, 0x00, 0xB8, 0x02, 0x2E, 0x03,
+ 0x2D, 0x00, 0x7F, 0x03, 0x3B, 0x04, 0x2F, 0x00,
+ 0x46, 0x04, 0x1F, 0x05, 0x30, 0x00, 0x0D, 0x05,
+ 0x33, 0x06, 0x30, 0x00, 0xD4, 0x05, 0xD2, 0x06,
+ 0x2A, 0x00, 0x9D, 0xFF, 0x2E, 0x03, 0x2A, 0x00,
+ 0xD6, 0xFE, 0x2E, 0x03, 0x2A, 0x00, 0x0F, 0xFE,
+ 0x2E, 0x03, 0x2A, 0x00, 0x48, 0xFD, 0x2E, 0x03,
+ 0x2D, 0x00, 0x81, 0xFC, 0x3B, 0x04, 0x2F, 0x00,
+ 0xBA, 0xFB, 0x1F, 0x05, 0x30, 0x00, 0xF3, 0xFA,
+ 0x33, 0x06, 0x30, 0x00, 0x2C, 0xFA, 0xD2, 0x06,
+ 0x2C, 0x00, 0x63, 0x00, 0xE3, 0x03, 0x2C, 0x00,
+ 0x2A, 0x01, 0xE3, 0x03, 0x2C, 0x00, 0xF1, 0x01,
+ 0xE3, 0x03, 0x2C, 0x00, 0xB8, 0x02, 0xE3, 0x03,
+ 0x2F, 0x00, 0x7F, 0x03, 0x2B, 0x05, 0x30, 0x00,
+ 0x46, 0x04, 0x42, 0x06, 0x30, 0x00, 0x0D, 0x05,
+ 0x93, 0x07, 0x30, 0x00, 0xD4, 0x05, 0x56, 0x08,
+ 0x2C, 0x00, 0x9D, 0xFF, 0xE3, 0x03, 0x2C, 0x00,
+ 0xD6, 0xFE, 0xE3, 0x03, 0x2C, 0x00, 0x0F, 0xFE,
+ 0xE3, 0x03, 0x2C, 0x00, 0x48, 0xFD, 0xE3, 0x03,
+ 0x2F, 0x00, 0x81, 0xFC, 0x2B, 0x05, 0x30, 0x00,
+ 0xBA, 0xFB, 0x42, 0x06, 0x30, 0x00, 0xF3, 0xFA,
+ 0x93, 0x07, 0x30, 0x00, 0x2C, 0xFA, 0x56, 0x08,
+ 0x2E, 0x00, 0x63, 0x00, 0x98, 0x04, 0x2E, 0x00,
+ 0x2A, 0x01, 0x98, 0x04, 0x2E, 0x00, 0xF1, 0x01,
+ 0x98, 0x04, 0x2E, 0x00, 0xB8, 0x02, 0x98, 0x04,
+ 0x30, 0x00, 0x7F, 0x03, 0x1C, 0x06, 0x30, 0x00,
+ 0x46, 0x04, 0x66, 0x07, 0x30, 0x00, 0x0D, 0x05,
+ 0xF4, 0x08, 0x30, 0x00, 0xD4, 0x05, 0xDA, 0x09,
+ 0x2E, 0x00, 0x9D, 0xFF, 0x98, 0x04, 0x2E, 0x00,
+ 0xD6, 0xFE, 0x98, 0x04, 0x2E, 0x00, 0x0F, 0xFE,
+ 0x98, 0x04, 0x2E, 0x00, 0x48, 0xFD, 0x98, 0x04,
+ 0x30, 0x00, 0x81, 0xFC, 0x1C, 0x06, 0x30, 0x00,
+ 0xBA, 0xFB, 0x66, 0x07, 0x30, 0x00, 0xF3, 0xFA,
+ 0xF4, 0x08, 0x30, 0x00, 0x2C, 0xFA, 0xDA, 0x09,
+ 0x30, 0x00, 0x63, 0x00, 0x4D, 0x05, 0x30, 0x00,
+ 0x2A, 0x01, 0x4D, 0x05, 0x30, 0x00, 0xF1, 0x01,
+ 0x4D, 0x05, 0x30, 0x00, 0xB8, 0x02, 0x4D, 0x05,
+ 0x30, 0x00, 0x7F, 0x03, 0x0C, 0x07, 0x30, 0x00,
+ 0x46, 0x04, 0x89, 0x08, 0x30, 0x00, 0x0D, 0x05,
+ 0x54, 0x0A, 0x30, 0x00, 0xD4, 0x05, 0x5E, 0x0B,
+ 0x30, 0x00, 0x9D, 0xFF, 0x4D, 0x05, 0x30, 0x00,
+ 0xD6, 0xFE, 0x4D, 0x05, 0x30, 0x00, 0x0F, 0xFE,
+ 0x4D, 0x05, 0x30, 0x00, 0x48, 0xFD, 0x4D, 0x05,
+ 0x30, 0x00, 0x81, 0xFC, 0x0C, 0x07, 0x30, 0x00,
+ 0xBA, 0xFB, 0x89, 0x08, 0x30, 0x00, 0xF3, 0xFA,
+ 0x54, 0x0A, 0x30, 0x00, 0x2C, 0xFA, 0x5E, 0x0B,
+ 0x27, 0x00, 0x63, 0x00, 0xA6, 0xFF, 0x27, 0x00,
+ 0x2A, 0x01, 0xA6, 0xFF, 0x27, 0x00, 0xF1, 0x01,
+ 0xA6, 0xFF, 0x27, 0x00, 0xB8, 0x02, 0xA6, 0xFF,
+ 0x2A, 0x00, 0x7F, 0x03, 0x88, 0xFF, 0x2C, 0x00,
+ 0x46, 0x04, 0x6F, 0xFF, 0x2E, 0x00, 0x0D, 0x05,
+ 0x50, 0xFF, 0x2F, 0x00, 0xD4, 0x05, 0x3E, 0xFF,
+ 0x27, 0x00, 0x9D, 0xFF, 0xA6, 0xFF, 0x27, 0x00,
+ 0xD6, 0xFE, 0xA6, 0xFF, 0x27, 0x00, 0x0F, 0xFE,
+ 0xA6, 0xFF, 0x27, 0x00, 0x48, 0xFD, 0xA6, 0xFF,
+ 0x2A, 0x00, 0x81, 0xFC, 0x88, 0xFF, 0x2C, 0x00,
+ 0xBA, 0xFB, 0x6F, 0xFF, 0x2E, 0x00, 0xF3, 0xFA,
+ 0x50, 0xFF, 0x2F, 0x00, 0x2C, 0xFA, 0x3E, 0xFF,
+ 0x27, 0x00, 0x63, 0x00, 0xF1, 0xFE, 0x27, 0x00,
+ 0x2A, 0x01, 0xF1, 0xFE, 0x27, 0x00, 0xF1, 0x01,
+ 0xF1, 0xFE, 0x27, 0x00, 0xB8, 0x02, 0xF1, 0xFE,
+ 0x2A, 0x00, 0x7F, 0x03, 0x98, 0xFE, 0x2C, 0x00,
+ 0x46, 0x04, 0x4C, 0xFE, 0x2E, 0x00, 0x0D, 0x05,
+ 0xF0, 0xFD, 0x2F, 0x00, 0xD4, 0x05, 0xBA, 0xFD,
+ 0x27, 0x00, 0x9D, 0xFF, 0xF1, 0xFE, 0x27, 0x00,
+ 0xD6, 0xFE, 0xF1, 0xFE, 0x27, 0x00, 0x0F, 0xFE,
+ 0xF1, 0xFE, 0x27, 0x00, 0x48, 0xFD, 0xF1, 0xFE,
+ 0x2A, 0x00, 0x81, 0xFC, 0x98, 0xFE, 0x2C, 0x00,
+ 0xBA, 0xFB, 0x4C, 0xFE, 0x2E, 0x00, 0xF3, 0xFA,
+ 0xF0, 0xFD, 0x2F, 0x00, 0x2C, 0xFA, 0xBA, 0xFD,
+ 0x27, 0x00, 0x63, 0x00, 0x3C, 0xFE, 0x27, 0x00,
+ 0x2A, 0x01, 0x3C, 0xFE, 0x27, 0x00, 0xF1, 0x01,
+ 0x3C, 0xFE, 0x27, 0x00, 0xB8, 0x02, 0x3C, 0xFE,
+ 0x2A, 0x00, 0x7F, 0x03, 0xA7, 0xFD, 0x2C, 0x00,
+ 0x46, 0x04, 0x28, 0xFD, 0x2E, 0x00, 0x0D, 0x05,
+ 0x8F, 0xFC, 0x2F, 0x00, 0xD4, 0x05, 0x36, 0xFC,
+ 0x27, 0x00, 0x9D, 0xFF, 0x3C, 0xFE, 0x27, 0x00,
+ 0xD6, 0xFE, 0x3C, 0xFE, 0x27, 0x00, 0x0F, 0xFE,
+ 0x3C, 0xFE, 0x27, 0x00, 0x48, 0xFD, 0x3C, 0xFE,
+ 0x2A, 0x00, 0x81, 0xFC, 0xA7, 0xFD, 0x2C, 0x00,
+ 0xBA, 0xFB, 0x28, 0xFD, 0x2E, 0x00, 0xF3, 0xFA,
+ 0x8F, 0xFC, 0x2F, 0x00, 0x2C, 0xFA, 0x36, 0xFC,
+ 0x27, 0x00, 0x63, 0x00, 0x87, 0xFD, 0x27, 0x00,
+ 0x2A, 0x01, 0x87, 0xFD, 0x27, 0x00, 0xF1, 0x01,
+ 0x87, 0xFD, 0x27, 0x00, 0xB8, 0x02, 0x87, 0xFD,
+ 0x2A, 0x00, 0x7F, 0x03, 0xB7, 0xFC, 0x2C, 0x00,
+ 0x46, 0x04, 0x05, 0xFC, 0x2E, 0x00, 0x0D, 0x05,
+ 0x2F, 0xFB, 0x2F, 0x00, 0xD4, 0x05, 0xB2, 0xFA,
+ 0x27, 0x00, 0x9D, 0xFF, 0x87, 0xFD, 0x27, 0x00,
+ 0xD6, 0xFE, 0x87, 0xFD, 0x27, 0x00, 0x0F, 0xFE,
+ 0x87, 0xFD, 0x27, 0x00, 0x48, 0xFD, 0x87, 0xFD,
+ 0x2A, 0x00, 0x81, 0xFC, 0xB7, 0xFC, 0x2C, 0x00,
+ 0xBA, 0xFB, 0x05, 0xFC, 0x2E, 0x00, 0xF3, 0xFA,
+ 0x2F, 0xFB, 0x2F, 0x00, 0x2C, 0xFA, 0xB2, 0xFA,
+ 0x2A, 0x00, 0x63, 0x00, 0xD2, 0xFC, 0x2A, 0x00,
+ 0x2A, 0x01, 0xD2, 0xFC, 0x2A, 0x00, 0xF1, 0x01,
+ 0xD2, 0xFC, 0x2A, 0x00, 0xB8, 0x02, 0xD2, 0xFC,
+ 0x2D, 0x00, 0x7F, 0x03, 0xC5, 0xFB, 0x2F, 0x00,
+ 0x46, 0x04, 0xE1, 0xFA, 0x30, 0x00, 0x0D, 0x05,
+ 0xCD, 0xF9, 0x30, 0x00, 0xD4, 0x05, 0x2E, 0xF9,
+ 0x2A, 0x00, 0x9D, 0xFF, 0xD2, 0xFC, 0x2A, 0x00,
+ 0xD6, 0xFE, 0xD2, 0xFC, 0x2A, 0x00, 0x0F, 0xFE,
+ 0xD2, 0xFC, 0x2A, 0x00, 0x48, 0xFD, 0xD2, 0xFC,
+ 0x2D, 0x00, 0x81, 0xFC, 0xC5, 0xFB, 0x2F, 0x00,
+ 0xBA, 0xFB, 0xE1, 0xFA, 0x30, 0x00, 0xF3, 0xFA,
+ 0xCD, 0xF9, 0x30, 0x00, 0x2C, 0xFA, 0x2E, 0xF9,
+ 0x2C, 0x00, 0x63, 0x00, 0x1D, 0xFC, 0x2C, 0x00,
+ 0x2A, 0x01, 0x1D, 0xFC, 0x2C, 0x00, 0xF1, 0x01,
+ 0x1D, 0xFC, 0x2C, 0x00, 0xB8, 0x02, 0x1D, 0xFC,
+ 0x2F, 0x00, 0x7F, 0x03, 0xD5, 0xFA, 0x30, 0x00,
+ 0x46, 0x04, 0xBE, 0xF9, 0x30, 0x00, 0x0D, 0x05,
+ 0x6D, 0xF8, 0x30, 0x00, 0xD4, 0x05, 0xAA, 0xF7,
+ 0x2C, 0x00, 0x9D, 0xFF, 0x1D, 0xFC, 0x2C, 0x00,
+ 0xD6, 0xFE, 0x1D, 0xFC, 0x2C, 0x00, 0x0F, 0xFE,
+ 0x1D, 0xFC, 0x2C, 0x00, 0x48, 0xFD, 0x1D, 0xFC,
+ 0x2F, 0x00, 0x81, 0xFC, 0xD5, 0xFA, 0x30, 0x00,
+ 0xBA, 0xFB, 0xBE, 0xF9, 0x30, 0x00, 0xF3, 0xFA,
+ 0x6D, 0xF8, 0x30, 0x00, 0x2C, 0xFA, 0xAA, 0xF7,
+ 0x2E, 0x00, 0x63, 0x00, 0x68, 0xFB, 0x2E, 0x00,
+ 0x2A, 0x01, 0x68, 0xFB, 0x2E, 0x00, 0xF1, 0x01,
+ 0x68, 0xFB, 0x2E, 0x00, 0xB8, 0x02, 0x68, 0xFB,
+ 0x30, 0x00, 0x7F, 0x03, 0xE4, 0xF9, 0x30, 0x00,
+ 0x46, 0x04, 0x9A, 0xF8, 0x30, 0x00, 0x0D, 0x05,
+ 0x0C, 0xF7, 0x30, 0x00, 0xD4, 0x05, 0x26, 0xF6,
+ 0x2E, 0x00, 0x9D, 0xFF, 0x68, 0xFB, 0x2E, 0x00,
+ 0xD6, 0xFE, 0x68, 0xFB, 0x2E, 0x00, 0x0F, 0xFE,
+ 0x68, 0xFB, 0x2E, 0x00, 0x48, 0xFD, 0x68, 0xFB,
+ 0x30, 0x00, 0x81, 0xFC, 0xE4, 0xF9, 0x30, 0x00,
+ 0xBA, 0xFB, 0x9A, 0xF8, 0x30, 0x00, 0xF3, 0xFA,
+ 0x0C, 0xF7, 0x30, 0x00, 0x2C, 0xFA, 0x26, 0xF6,
+ 0x30, 0x00, 0x63, 0x00, 0xB3, 0xFA, 0x30, 0x00,
+ 0x2A, 0x01, 0xB3, 0xFA, 0x30, 0x00, 0xF1, 0x01,
+ 0xB3, 0xFA, 0x30, 0x00, 0xB8, 0x02, 0xB3, 0xFA,
+ 0x30, 0x00, 0x7F, 0x03, 0xF4, 0xF8, 0x30, 0x00,
+ 0x46, 0x04, 0x77, 0xF7, 0x30, 0x00, 0x0D, 0x05,
+ 0xAC, 0xF5, 0x30, 0x00, 0xD4, 0x05, 0xA2, 0xF4,
+ 0x30, 0x00, 0x9D, 0xFF, 0xB3, 0xFA, 0x30, 0x00,
+ 0xD6, 0xFE, 0xB3, 0xFA, 0x30, 0x00, 0x0F, 0xFE,
+ 0xB3, 0xFA, 0x30, 0x00, 0x48, 0xFD, 0xB3, 0xFA,
+ 0x30, 0x00, 0x81, 0xFC, 0xF4, 0xF8, 0x30, 0x00,
+ 0xBA, 0xFB, 0x77, 0xF7, 0x30, 0x00, 0xF3, 0xFA,
+ 0xAC, 0xF5, 0x30, 0x00, 0x2C, 0xFA, 0xA2, 0xF4,
+ 0x28, 0x00, 0x6D, 0x00, 0x63, 0x00, 0x28, 0x00,
+ 0x48, 0x01, 0x63, 0x00, 0x28, 0x00, 0x23, 0x02,
+ 0x63, 0x00, 0x28, 0x00, 0xFE, 0x02, 0x63, 0x00,
+ 0x2B, 0x00, 0xD9, 0x03, 0x84, 0x00, 0x2D, 0x00,
+ 0xB4, 0x04, 0xA0, 0x00, 0x2F, 0x00, 0x8F, 0x05,
+ 0xC2, 0x00, 0x2F, 0x00, 0x6A, 0x06, 0xC2, 0x00,
+ 0x28, 0x00, 0x93, 0xFF, 0x63, 0x00, 0x28, 0x00,
+ 0xB8, 0xFE, 0x63, 0x00, 0x28, 0x00, 0xDD, 0xFD,
+ 0x63, 0x00, 0x28, 0x00, 0x02, 0xFD, 0x63, 0x00,
+ 0x2B, 0x00, 0x27, 0xFC, 0x84, 0x00, 0x2D, 0x00,
+ 0x4C, 0xFB, 0xA0, 0x00, 0x2F, 0x00, 0x71, 0xFA,
+ 0xC2, 0x00, 0x2F, 0x00, 0x96, 0xF9, 0xC2, 0x00,
+ 0x28, 0x00, 0x6D, 0x00, 0x2A, 0x01, 0x28, 0x00,
+ 0x48, 0x01, 0x2A, 0x01, 0x28, 0x00, 0x23, 0x02,
+ 0x2A, 0x01, 0x28, 0x00, 0xFE, 0x02, 0x2A, 0x01,
+ 0x2B, 0x00, 0xD9, 0x03, 0x8D, 0x01, 0x2D, 0x00,
+ 0xB4, 0x04, 0xE0, 0x01, 0x2F, 0x00, 0x8F, 0x05,
+ 0x46, 0x02, 0x2F, 0x00, 0x6A, 0x06, 0x46, 0x02,
+ 0x28, 0x00, 0x93, 0xFF, 0x2A, 0x01, 0x28, 0x00,
+ 0xB8, 0xFE, 0x2A, 0x01, 0x28, 0x00, 0xDD, 0xFD,
+ 0x2A, 0x01, 0x28, 0x00, 0x02, 0xFD, 0x2A, 0x01,
+ 0x2B, 0x00, 0x27, 0xFC, 0x8D, 0x01, 0x2D, 0x00,
+ 0x4C, 0xFB, 0xE0, 0x01, 0x2F, 0x00, 0x71, 0xFA,
+ 0x46, 0x02, 0x2F, 0x00, 0x96, 0xF9, 0x46, 0x02,
+ 0x28, 0x00, 0x6D, 0x00, 0xF1, 0x01, 0x28, 0x00,
+ 0x48, 0x01, 0xF1, 0x01, 0x28, 0x00, 0x23, 0x02,
+ 0xF1, 0x01, 0x28, 0x00, 0xFE, 0x02, 0xF1, 0x01,
+ 0x2B, 0x00, 0xD9, 0x03, 0x96, 0x02, 0x2D, 0x00,
+ 0xB4, 0x04, 0x21, 0x03, 0x2F, 0x00, 0x8F, 0x05,
+ 0xCA, 0x03, 0x2F, 0x00, 0x6A, 0x06, 0xCA, 0x03,
+ 0x28, 0x00, 0x93, 0xFF, 0xF1, 0x01, 0x28, 0x00,
+ 0xB8, 0xFE, 0xF1, 0x01, 0x28, 0x00, 0xDD, 0xFD,
+ 0xF1, 0x01, 0x28, 0x00, 0x02, 0xFD, 0xF1, 0x01,
+ 0x2B, 0x00, 0x27, 0xFC, 0x96, 0x02, 0x2D, 0x00,
+ 0x4C, 0xFB, 0x21, 0x03, 0x2F, 0x00, 0x71, 0xFA,
+ 0xCA, 0x03, 0x2F, 0x00, 0x96, 0xF9, 0xCA, 0x03,
+ 0x28, 0x00, 0x6D, 0x00, 0xB8, 0x02, 0x28, 0x00,
+ 0x48, 0x01, 0xB8, 0x02, 0x28, 0x00, 0x23, 0x02,
+ 0xB8, 0x02, 0x28, 0x00, 0xFE, 0x02, 0xB8, 0x02,
+ 0x2B, 0x00, 0xD9, 0x03, 0x9F, 0x03, 0x2D, 0x00,
+ 0xB4, 0x04, 0x61, 0x04, 0x2F, 0x00, 0x8F, 0x05,
+ 0x4E, 0x05, 0x2F, 0x00, 0x6A, 0x06, 0x4E, 0x05,
+ 0x28, 0x00, 0x93, 0xFF, 0xB8, 0x02, 0x28, 0x00,
+ 0xB8, 0xFE, 0xB8, 0x02, 0x28, 0x00, 0xDD, 0xFD,
+ 0xB8, 0x02, 0x28, 0x00, 0x02, 0xFD, 0xB8, 0x02,
+ 0x2B, 0x00, 0x27, 0xFC, 0x9F, 0x03, 0x2D, 0x00,
+ 0x4C, 0xFB, 0x61, 0x04, 0x2F, 0x00, 0x71, 0xFA,
+ 0x4E, 0x05, 0x2F, 0x00, 0x96, 0xF9, 0x4E, 0x05,
+ 0x2B, 0x00, 0x6D, 0x00, 0x7F, 0x03, 0x2B, 0x00,
+ 0x48, 0x01, 0x7F, 0x03, 0x2B, 0x00, 0x23, 0x02,
+ 0x7F, 0x03, 0x2B, 0x00, 0xFE, 0x02, 0x7F, 0x03,
+ 0x2E, 0x00, 0xD9, 0x03, 0xA8, 0x04, 0x30, 0x00,
+ 0xB4, 0x04, 0xA2, 0x05, 0x30, 0x00, 0x8F, 0x05,
+ 0xD2, 0x06, 0x30, 0x00, 0x6A, 0x06, 0xD2, 0x06,
+ 0x2B, 0x00, 0x93, 0xFF, 0x7F, 0x03, 0x2B, 0x00,
+ 0xB8, 0xFE, 0x7F, 0x03, 0x2B, 0x00, 0xDD, 0xFD,
+ 0x7F, 0x03, 0x2B, 0x00, 0x02, 0xFD, 0x7F, 0x03,
+ 0x2E, 0x00, 0x27, 0xFC, 0xA8, 0x04, 0x30, 0x00,
+ 0x4C, 0xFB, 0xA2, 0x05, 0x30, 0x00, 0x71, 0xFA,
+ 0xD2, 0x06, 0x30, 0x00, 0x96, 0xF9, 0xD2, 0x06,
+ 0x2D, 0x00, 0x6D, 0x00, 0x46, 0x04, 0x2D, 0x00,
+ 0x48, 0x01, 0x46, 0x04, 0x2D, 0x00, 0x23, 0x02,
+ 0x46, 0x04, 0x2D, 0x00, 0xFE, 0x02, 0x46, 0x04,
+ 0x30, 0x00, 0xD9, 0x03, 0xB1, 0x05, 0x30, 0x00,
+ 0xB4, 0x04, 0xE2, 0x06, 0x30, 0x00, 0x8F, 0x05,
+ 0x56, 0x08, 0x30, 0x00, 0x6A, 0x06, 0x56, 0x08,
+ 0x2D, 0x00, 0x93, 0xFF, 0x46, 0x04, 0x2D, 0x00,
+ 0xB8, 0xFE, 0x46, 0x04, 0x2D, 0x00, 0xDD, 0xFD,
+ 0x46, 0x04, 0x2D, 0x00, 0x02, 0xFD, 0x46, 0x04,
+ 0x30, 0x00, 0x27, 0xFC, 0xB1, 0x05, 0x30, 0x00,
+ 0x4C, 0xFB, 0xE2, 0x06, 0x30, 0x00, 0x71, 0xFA,
+ 0x56, 0x08, 0x30, 0x00, 0x96, 0xF9, 0x56, 0x08,
+ 0x2F, 0x00, 0x6D, 0x00, 0x0D, 0x05, 0x2F, 0x00,
+ 0x48, 0x01, 0x0D, 0x05, 0x2F, 0x00, 0x23, 0x02,
+ 0x0D, 0x05, 0x2F, 0x00, 0xFE, 0x02, 0x0D, 0x05,
+ 0x30, 0x00, 0xD9, 0x03, 0xBA, 0x06, 0x30, 0x00,
+ 0xB4, 0x04, 0x23, 0x08, 0x30, 0x00, 0x8F, 0x05,
+ 0xDA, 0x09, 0x30, 0x00, 0x6A, 0x06, 0xDA, 0x09,
+ 0x2F, 0x00, 0x93, 0xFF, 0x0D, 0x05, 0x2F, 0x00,
+ 0xB8, 0xFE, 0x0D, 0x05, 0x2F, 0x00, 0xDD, 0xFD,
+ 0x0D, 0x05, 0x2F, 0x00, 0x02, 0xFD, 0x0D, 0x05,
+ 0x30, 0x00, 0x27, 0xFC, 0xBA, 0x06, 0x30, 0x00,
+ 0x4C, 0xFB, 0x23, 0x08, 0x30, 0x00, 0x71, 0xFA,
+ 0xDA, 0x09, 0x30, 0x00, 0x96, 0xF9, 0xDA, 0x09,
+ 0x30, 0x00, 0x6D, 0x00, 0xD4, 0x05, 0x30, 0x00,
+ 0x48, 0x01, 0xD4, 0x05, 0x30, 0x00, 0x23, 0x02,
+ 0xD4, 0x05, 0x30, 0x00, 0xFE, 0x02, 0xD4, 0x05,
+ 0x30, 0x00, 0xD9, 0x03, 0xC3, 0x07, 0x30, 0x00,
+ 0xB4, 0x04, 0x63, 0x09, 0x30, 0x00, 0x8F, 0x05,
+ 0x5E, 0x0B, 0x30, 0x00, 0x6A, 0x06, 0x5E, 0x0B,
+ 0x30, 0x00, 0x93, 0xFF, 0xD4, 0x05, 0x30, 0x00,
+ 0xB8, 0xFE, 0xD4, 0x05, 0x30, 0x00, 0xDD, 0xFD,
+ 0xD4, 0x05, 0x30, 0x00, 0x02, 0xFD, 0xD4, 0x05,
+ 0x30, 0x00, 0x27, 0xFC, 0xC3, 0x07, 0x30, 0x00,
+ 0x4C, 0xFB, 0x63, 0x09, 0x30, 0x00, 0x71, 0xFA,
+ 0x5E, 0x0B, 0x30, 0x00, 0x96, 0xF9, 0x5E, 0x0B,
+ 0x28, 0x00, 0x6D, 0x00, 0x9D, 0xFF, 0x28, 0x00,
+ 0x48, 0x01, 0x9D, 0xFF, 0x28, 0x00, 0x23, 0x02,
+ 0x9D, 0xFF, 0x28, 0x00, 0xFE, 0x02, 0x9D, 0xFF,
+ 0x2B, 0x00, 0xD9, 0x03, 0x7C, 0xFF, 0x2D, 0x00,
+ 0xB4, 0x04, 0x60, 0xFF, 0x2F, 0x00, 0x8F, 0x05,
+ 0x3E, 0xFF, 0x2F, 0x00, 0x6A, 0x06, 0x3E, 0xFF,
+ 0x28, 0x00, 0x93, 0xFF, 0x9D, 0xFF, 0x28, 0x00,
+ 0xB8, 0xFE, 0x9D, 0xFF, 0x28, 0x00, 0xDD, 0xFD,
+ 0x9D, 0xFF, 0x28, 0x00, 0x02, 0xFD, 0x9D, 0xFF,
+ 0x2B, 0x00, 0x27, 0xFC, 0x7C, 0xFF, 0x2D, 0x00,
+ 0x4C, 0xFB, 0x60, 0xFF, 0x2F, 0x00, 0x71, 0xFA,
+ 0x3E, 0xFF, 0x2F, 0x00, 0x96, 0xF9, 0x3E, 0xFF,
+ 0x28, 0x00, 0x6D, 0x00, 0xD6, 0xFE, 0x28, 0x00,
+ 0x48, 0x01, 0xD6, 0xFE, 0x28, 0x00, 0x23, 0x02,
+ 0xD6, 0xFE, 0x28, 0x00, 0xFE, 0x02, 0xD6, 0xFE,
+ 0x2B, 0x00, 0xD9, 0x03, 0x73, 0xFE, 0x2D, 0x00,
+ 0xB4, 0x04, 0x20, 0xFE, 0x2F, 0x00, 0x8F, 0x05,
+ 0xBA, 0xFD, 0x2F, 0x00, 0x6A, 0x06, 0xBA, 0xFD,
+ 0x28, 0x00, 0x93, 0xFF, 0xD6, 0xFE, 0x28, 0x00,
+ 0xB8, 0xFE, 0xD6, 0xFE, 0x28, 0x00, 0xDD, 0xFD,
+ 0xD6, 0xFE, 0x28, 0x00, 0x02, 0xFD, 0xD6, 0xFE,
+ 0x2B, 0x00, 0x27, 0xFC, 0x73, 0xFE, 0x2D, 0x00,
+ 0x4C, 0xFB, 0x20, 0xFE, 0x2F, 0x00, 0x71, 0xFA,
+ 0xBA, 0xFD, 0x2F, 0x00, 0x96, 0xF9, 0xBA, 0xFD,
+ 0x28, 0x00, 0x6D, 0x00, 0x0F, 0xFE, 0x28, 0x00,
+ 0x48, 0x01, 0x0F, 0xFE, 0x28, 0x00, 0x23, 0x02,
+ 0x0F, 0xFE, 0x28, 0x00, 0xFE, 0x02, 0x0F, 0xFE,
+ 0x2B, 0x00, 0xD9, 0x03, 0x6A, 0xFD, 0x2D, 0x00,
+ 0xB4, 0x04, 0xDF, 0xFC, 0x2F, 0x00, 0x8F, 0x05,
+ 0x36, 0xFC, 0x2F, 0x00, 0x6A, 0x06, 0x36, 0xFC,
+ 0x28, 0x00, 0x93, 0xFF, 0x0F, 0xFE, 0x28, 0x00,
+ 0xB8, 0xFE, 0x0F, 0xFE, 0x28, 0x00, 0xDD, 0xFD,
+ 0x0F, 0xFE, 0x28, 0x00, 0x02, 0xFD, 0x0F, 0xFE,
+ 0x2B, 0x00, 0x27, 0xFC, 0x6A, 0xFD, 0x2D, 0x00,
+ 0x4C, 0xFB, 0xDF, 0xFC, 0x2F, 0x00, 0x71, 0xFA,
+ 0x36, 0xFC, 0x2F, 0x00, 0x96, 0xF9, 0x36, 0xFC,
+ 0x28, 0x00, 0x6D, 0x00, 0x48, 0xFD, 0x28, 0x00,
+ 0x48, 0x01, 0x48, 0xFD, 0x28, 0x00, 0x23, 0x02,
+ 0x48, 0xFD, 0x28, 0x00, 0xFE, 0x02, 0x48, 0xFD,
+ 0x2B, 0x00, 0xD9, 0x03, 0x61, 0xFC, 0x2D, 0x00,
+ 0xB4, 0x04, 0x9F, 0xFB, 0x2F, 0x00, 0x8F, 0x05,
+ 0xB2, 0xFA, 0x2F, 0x00, 0x6A, 0x06, 0xB2, 0xFA,
+ 0x28, 0x00, 0x93, 0xFF, 0x48, 0xFD, 0x28, 0x00,
+ 0xB8, 0xFE, 0x48, 0xFD, 0x28, 0x00, 0xDD, 0xFD,
+ 0x48, 0xFD, 0x28, 0x00, 0x02, 0xFD, 0x48, 0xFD,
+ 0x2B, 0x00, 0x27, 0xFC, 0x61, 0xFC, 0x2D, 0x00,
+ 0x4C, 0xFB, 0x9F, 0xFB, 0x2F, 0x00, 0x71, 0xFA,
+ 0xB2, 0xFA, 0x2F, 0x00, 0x96, 0xF9, 0xB2, 0xFA,
+ 0x2B, 0x00, 0x6D, 0x00, 0x81, 0xFC, 0x2B, 0x00,
+ 0x48, 0x01, 0x81, 0xFC, 0x2B, 0x00, 0x23, 0x02,
+ 0x81, 0xFC, 0x2B, 0x00, 0xFE, 0x02, 0x81, 0xFC,
+ 0x2E, 0x00, 0xD9, 0x03, 0x58, 0xFB, 0x30, 0x00,
+ 0xB4, 0x04, 0x5E, 0xFA, 0x30, 0x00, 0x8F, 0x05,
+ 0x2E, 0xF9, 0x30, 0x00, 0x6A, 0x06, 0x2E, 0xF9,
+ 0x2B, 0x00, 0x93, 0xFF, 0x81, 0xFC, 0x2B, 0x00,
+ 0xB8, 0xFE, 0x81, 0xFC, 0x2B, 0x00, 0xDD, 0xFD,
+ 0x81, 0xFC, 0x2B, 0x00, 0x02, 0xFD, 0x81, 0xFC,
+ 0x2E, 0x00, 0x27, 0xFC, 0x58, 0xFB, 0x30, 0x00,
+ 0x4C, 0xFB, 0x5E, 0xFA, 0x30, 0x00, 0x71, 0xFA,
+ 0x2E, 0xF9, 0x30, 0x00, 0x96, 0xF9, 0x2E, 0xF9,
+ 0x2D, 0x00, 0x6D, 0x00, 0xBA, 0xFB, 0x2D, 0x00,
+ 0x48, 0x01, 0xBA, 0xFB, 0x2D, 0x00, 0x23, 0x02,
+ 0xBA, 0xFB, 0x2D, 0x00, 0xFE, 0x02, 0xBA, 0xFB,
+ 0x30, 0x00, 0xD9, 0x03, 0x4F, 0xFA, 0x30, 0x00,
+ 0xB4, 0x04, 0x1E, 0xF9, 0x30, 0x00, 0x8F, 0x05,
+ 0xAA, 0xF7, 0x30, 0x00, 0x6A, 0x06, 0xAA, 0xF7,
+ 0x2D, 0x00, 0x93, 0xFF, 0xBA, 0xFB, 0x2D, 0x00,
+ 0xB8, 0xFE, 0xBA, 0xFB, 0x2D, 0x00, 0xDD, 0xFD,
+ 0xBA, 0xFB, 0x2D, 0x00, 0x02, 0xFD, 0xBA, 0xFB,
+ 0x30, 0x00, 0x27, 0xFC, 0x4F, 0xFA, 0x30, 0x00,
+ 0x4C, 0xFB, 0x1E, 0xF9, 0x30, 0x00, 0x71, 0xFA,
+ 0xAA, 0xF7, 0x30, 0x00, 0x96, 0xF9, 0xAA, 0xF7,
+ 0x2F, 0x00, 0x6D, 0x00, 0xF3, 0xFA, 0x2F, 0x00,
+ 0x48, 0x01, 0xF3, 0xFA, 0x2F, 0x00, 0x23, 0x02,
+ 0xF3, 0xFA, 0x2F, 0x00, 0xFE, 0x02, 0xF3, 0xFA,
+ 0x30, 0x00, 0xD9, 0x03, 0x46, 0xF9, 0x30, 0x00,
+ 0xB4, 0x04, 0xDD, 0xF7, 0x30, 0x00, 0x8F, 0x05,
+ 0x26, 0xF6, 0x30, 0x00, 0x6A, 0x06, 0x26, 0xF6,
+ 0x2F, 0x00, 0x93, 0xFF, 0xF3, 0xFA, 0x2F, 0x00,
+ 0xB8, 0xFE, 0xF3, 0xFA, 0x2F, 0x00, 0xDD, 0xFD,
+ 0xF3, 0xFA, 0x2F, 0x00, 0x02, 0xFD, 0xF3, 0xFA,
+ 0x30, 0x00, 0x27, 0xFC, 0x46, 0xF9, 0x30, 0x00,
+ 0x4C, 0xFB, 0xDD, 0xF7, 0x30, 0x00, 0x71, 0xFA,
+ 0x26, 0xF6, 0x30, 0x00, 0x96, 0xF9, 0x26, 0xF6,
+ 0x30, 0x00, 0x6D, 0x00, 0x2C, 0xFA, 0x30, 0x00,
+ 0x48, 0x01, 0x2C, 0xFA, 0x30, 0x00, 0x23, 0x02,
+ 0x2C, 0xFA, 0x30, 0x00, 0xFE, 0x02, 0x2C, 0xFA,
+ 0x30, 0x00, 0xD9, 0x03, 0x3D, 0xF8, 0x30, 0x00,
+ 0xB4, 0x04, 0x9D, 0xF6, 0x30, 0x00, 0x8F, 0x05,
+ 0xA2, 0xF4, 0x30, 0x00, 0x6A, 0x06, 0xA2, 0xF4,
+ 0x30, 0x00, 0x93, 0xFF, 0x2C, 0xFA, 0x30, 0x00,
+ 0xB8, 0xFE, 0x2C, 0xFA, 0x30, 0x00, 0xDD, 0xFD,
+ 0x2C, 0xFA, 0x30, 0x00, 0x02, 0xFD, 0x2C, 0xFA,
+ 0x30, 0x00, 0x27, 0xFC, 0x3D, 0xF8, 0x30, 0x00,
+ 0x4C, 0xFB, 0x9D, 0xF6, 0x30, 0x00, 0x71, 0xFA,
+ 0xA2, 0xF4, 0x30, 0x00, 0x96, 0xF9, 0xA2, 0xF4,
+ 0x29, 0x00, 0x78, 0x00, 0x6D, 0x00, 0x29, 0x00,
+ 0x68, 0x01, 0x6D, 0x00, 0x29, 0x00, 0x59, 0x02,
+ 0x6D, 0x00, 0x29, 0x00, 0x49, 0x03, 0x6D, 0x00,
+ 0x2C, 0x00, 0x3B, 0x04, 0x91, 0x00, 0x2E, 0x00,
+ 0x2B, 0x05, 0xB0, 0x00, 0x2F, 0x00, 0x1C, 0x06,
+ 0xC2, 0x00, 0x2F, 0x00, 0x0C, 0x07, 0xC2, 0x00,
+ 0x29, 0x00, 0x88, 0xFF, 0x6D, 0x00, 0x29, 0x00,
+ 0x98, 0xFE, 0x6D, 0x00, 0x29, 0x00, 0xA7, 0xFD,
+ 0x6D, 0x00, 0x29, 0x00, 0xB7, 0xFC, 0x6D, 0x00,
+ 0x2C, 0x00, 0xC5, 0xFB, 0x91, 0x00, 0x2E, 0x00,
+ 0xD5, 0xFA, 0xB0, 0x00, 0x2F, 0x00, 0xE4, 0xF9,
+ 0xC2, 0x00, 0x2F, 0x00, 0xF4, 0xF8, 0xC2, 0x00,
+ 0x29, 0x00, 0x78, 0x00, 0x48, 0x01, 0x29, 0x00,
+ 0x68, 0x01, 0x48, 0x01, 0x29, 0x00, 0x59, 0x02,
+ 0x48, 0x01, 0x29, 0x00, 0x49, 0x03, 0x48, 0x01,
+ 0x2C, 0x00, 0x3B, 0x04, 0xB4, 0x01, 0x2E, 0x00,
+ 0x2B, 0x05, 0x10, 0x02, 0x2F, 0x00, 0x1C, 0x06,
+ 0x46, 0x02, 0x2F, 0x00, 0x0C, 0x07, 0x46, 0x02,
+ 0x29, 0x00, 0x88, 0xFF, 0x48, 0x01, 0x29, 0x00,
+ 0x98, 0xFE, 0x48, 0x01, 0x29, 0x00, 0xA7, 0xFD,
+ 0x48, 0x01, 0x29, 0x00, 0xB7, 0xFC, 0x48, 0x01,
+ 0x2C, 0x00, 0xC5, 0xFB, 0xB4, 0x01, 0x2E, 0x00,
+ 0xD5, 0xFA, 0x10, 0x02, 0x2F, 0x00, 0xE4, 0xF9,
+ 0x46, 0x02, 0x2F, 0x00, 0xF4, 0xF8, 0x46, 0x02,
+ 0x29, 0x00, 0x78, 0x00, 0x23, 0x02, 0x29, 0x00,
+ 0x68, 0x01, 0x23, 0x02, 0x29, 0x00, 0x59, 0x02,
+ 0x23, 0x02, 0x29, 0x00, 0x49, 0x03, 0x23, 0x02,
+ 0x2C, 0x00, 0x3B, 0x04, 0xD8, 0x02, 0x2E, 0x00,
+ 0x2B, 0x05, 0x71, 0x03, 0x2F, 0x00, 0x1C, 0x06,
+ 0xCA, 0x03, 0x2F, 0x00, 0x0C, 0x07, 0xCA, 0x03,
+ 0x29, 0x00, 0x88, 0xFF, 0x23, 0x02, 0x29, 0x00,
+ 0x98, 0xFE, 0x23, 0x02, 0x29, 0x00, 0xA7, 0xFD,
+ 0x23, 0x02, 0x29, 0x00, 0xB7, 0xFC, 0x23, 0x02,
+ 0x2C, 0x00, 0xC5, 0xFB, 0xD8, 0x02, 0x2E, 0x00,
+ 0xD5, 0xFA, 0x71, 0x03, 0x2F, 0x00, 0xE4, 0xF9,
+ 0xCA, 0x03, 0x2F, 0x00, 0xF4, 0xF8, 0xCA, 0x03,
+ 0x29, 0x00, 0x78, 0x00, 0xFE, 0x02, 0x29, 0x00,
+ 0x68, 0x01, 0xFE, 0x02, 0x29, 0x00, 0x59, 0x02,
+ 0xFE, 0x02, 0x29, 0x00, 0x49, 0x03, 0xFE, 0x02,
+ 0x2C, 0x00, 0x3B, 0x04, 0xFB, 0x03, 0x2E, 0x00,
+ 0x2B, 0x05, 0xD1, 0x04, 0x2F, 0x00, 0x1C, 0x06,
+ 0x4E, 0x05, 0x2F, 0x00, 0x0C, 0x07, 0x4E, 0x05,
+ 0x29, 0x00, 0x88, 0xFF, 0xFE, 0x02, 0x29, 0x00,
+ 0x98, 0xFE, 0xFE, 0x02, 0x29, 0x00, 0xA7, 0xFD,
+ 0xFE, 0x02, 0x29, 0x00, 0xB7, 0xFC, 0xFE, 0x02,
+ 0x2C, 0x00, 0xC5, 0xFB, 0xFB, 0x03, 0x2E, 0x00,
+ 0xD5, 0xFA, 0xD1, 0x04, 0x2F, 0x00, 0xE4, 0xF9,
+ 0x4E, 0x05, 0x2F, 0x00, 0xF4, 0xF8, 0x4E, 0x05,
+ 0x2C, 0x00, 0x78, 0x00, 0xD9, 0x03, 0x2C, 0x00,
+ 0x68, 0x01, 0xD9, 0x03, 0x2C, 0x00, 0x59, 0x02,
+ 0xD9, 0x03, 0x2C, 0x00, 0x49, 0x03, 0xD9, 0x03,
+ 0x2F, 0x00, 0x3B, 0x04, 0x1F, 0x05, 0x30, 0x00,
+ 0x2B, 0x05, 0x33, 0x06, 0x30, 0x00, 0x1C, 0x06,
+ 0xD2, 0x06, 0x30, 0x00, 0x0C, 0x07, 0xD2, 0x06,
+ 0x2C, 0x00, 0x88, 0xFF, 0xD9, 0x03, 0x2C, 0x00,
+ 0x98, 0xFE, 0xD9, 0x03, 0x2C, 0x00, 0xA7, 0xFD,
+ 0xD9, 0x03, 0x2C, 0x00, 0xB7, 0xFC, 0xD9, 0x03,
+ 0x2F, 0x00, 0xC5, 0xFB, 0x1F, 0x05, 0x30, 0x00,
+ 0xD5, 0xFA, 0x33, 0x06, 0x30, 0x00, 0xE4, 0xF9,
+ 0xD2, 0x06, 0x30, 0x00, 0xF4, 0xF8, 0xD2, 0x06,
+ 0x2E, 0x00, 0x78, 0x00, 0xB4, 0x04, 0x2E, 0x00,
+ 0x68, 0x01, 0xB4, 0x04, 0x2E, 0x00, 0x59, 0x02,
+ 0xB4, 0x04, 0x2E, 0x00, 0x49, 0x03, 0xB4, 0x04,
+ 0x30, 0x00, 0x3B, 0x04, 0x42, 0x06, 0x30, 0x00,
+ 0x2B, 0x05, 0x93, 0x07, 0x30, 0x00, 0x1C, 0x06,
+ 0x56, 0x08, 0x30, 0x00, 0x0C, 0x07, 0x56, 0x08,
+ 0x2E, 0x00, 0x88, 0xFF, 0xB4, 0x04, 0x2E, 0x00,
+ 0x98, 0xFE, 0xB4, 0x04, 0x2E, 0x00, 0xA7, 0xFD,
+ 0xB4, 0x04, 0x2E, 0x00, 0xB7, 0xFC, 0xB4, 0x04,
+ 0x30, 0x00, 0xC5, 0xFB, 0x42, 0x06, 0x30, 0x00,
+ 0xD5, 0xFA, 0x93, 0x07, 0x30, 0x00, 0xE4, 0xF9,
+ 0x56, 0x08, 0x30, 0x00, 0xF4, 0xF8, 0x56, 0x08,
+ 0x30, 0x00, 0x78, 0x00, 0x8F, 0x05, 0x30, 0x00,
+ 0x68, 0x01, 0x8F, 0x05, 0x30, 0x00, 0x59, 0x02,
+ 0x8F, 0x05, 0x30, 0x00, 0x49, 0x03, 0x8F, 0x05,
+ 0x30, 0x00, 0x3B, 0x04, 0x66, 0x07, 0x30, 0x00,
+ 0x2B, 0x05, 0xF4, 0x08, 0x30, 0x00, 0x1C, 0x06,
+ 0xDA, 0x09, 0x30, 0x00, 0x0C, 0x07, 0xDA, 0x09,
+ 0x30, 0x00, 0x88, 0xFF, 0x8F, 0x05, 0x30, 0x00,
+ 0x98, 0xFE, 0x8F, 0x05, 0x30, 0x00, 0xA7, 0xFD,
+ 0x8F, 0x05, 0x30, 0x00, 0xB7, 0xFC, 0x8F, 0x05,
+ 0x30, 0x00, 0xC5, 0xFB, 0x66, 0x07, 0x30, 0x00,
+ 0xD5, 0xFA, 0xF4, 0x08, 0x30, 0x00, 0xE4, 0xF9,
+ 0xDA, 0x09, 0x30, 0x00, 0xF4, 0xF8, 0xDA, 0x09,
+ 0x30, 0x00, 0x78, 0x00, 0x6A, 0x06, 0x30, 0x00,
+ 0x68, 0x01, 0x6A, 0x06, 0x30, 0x00, 0x59, 0x02,
+ 0x6A, 0x06, 0x30, 0x00, 0x49, 0x03, 0x6A, 0x06,
+ 0x30, 0x00, 0x3B, 0x04, 0x89, 0x08, 0x30, 0x00,
+ 0x2B, 0x05, 0x54, 0x0A, 0x30, 0x00, 0x1C, 0x06,
+ 0x5E, 0x0B, 0x30, 0x00, 0x0C, 0x07, 0x5E, 0x0B,
+ 0x30, 0x00, 0x88, 0xFF, 0x6A, 0x06, 0x30, 0x00,
+ 0x98, 0xFE, 0x6A, 0x06, 0x30, 0x00, 0xA7, 0xFD,
+ 0x6A, 0x06, 0x30, 0x00, 0xB7, 0xFC, 0x6A, 0x06,
+ 0x30, 0x00, 0xC5, 0xFB, 0x89, 0x08, 0x30, 0x00,
+ 0xD5, 0xFA, 0x54, 0x0A, 0x30, 0x00, 0xE4, 0xF9,
+ 0x5E, 0x0B, 0x30, 0x00, 0xF4, 0xF8, 0x5E, 0x0B,
+ 0x29, 0x00, 0x78, 0x00, 0x93, 0xFF, 0x29, 0x00,
+ 0x68, 0x01, 0x93, 0xFF, 0x29, 0x00, 0x59, 0x02,
+ 0x93, 0xFF, 0x29, 0x00, 0x49, 0x03, 0x93, 0xFF,
+ 0x2C, 0x00, 0x3B, 0x04, 0x6F, 0xFF, 0x2E, 0x00,
+ 0x2B, 0x05, 0x50, 0xFF, 0x2F, 0x00, 0x1C, 0x06,
+ 0x3E, 0xFF, 0x2F, 0x00, 0x0C, 0x07, 0x3E, 0xFF,
+ 0x29, 0x00, 0x88, 0xFF, 0x93, 0xFF, 0x29, 0x00,
+ 0x98, 0xFE, 0x93, 0xFF, 0x29, 0x00, 0xA7, 0xFD,
+ 0x93, 0xFF, 0x29, 0x00, 0xB7, 0xFC, 0x93, 0xFF,
+ 0x2C, 0x00, 0xC5, 0xFB, 0x6F, 0xFF, 0x2E, 0x00,
+ 0xD5, 0xFA, 0x50, 0xFF, 0x2F, 0x00, 0xE4, 0xF9,
+ 0x3E, 0xFF, 0x2F, 0x00, 0xF4, 0xF8, 0x3E, 0xFF,
+ 0x29, 0x00, 0x78, 0x00, 0xB8, 0xFE, 0x29, 0x00,
+ 0x68, 0x01, 0xB8, 0xFE, 0x29, 0x00, 0x59, 0x02,
+ 0xB8, 0xFE, 0x29, 0x00, 0x49, 0x03, 0xB8, 0xFE,
+ 0x2C, 0x00, 0x3B, 0x04, 0x4C, 0xFE, 0x2E, 0x00,
+ 0x2B, 0x05, 0xF0, 0xFD, 0x2F, 0x00, 0x1C, 0x06,
+ 0xBA, 0xFD, 0x2F, 0x00, 0x0C, 0x07, 0xBA, 0xFD,
+ 0x29, 0x00, 0x88, 0xFF, 0xB8, 0xFE, 0x29, 0x00,
+ 0x98, 0xFE, 0xB8, 0xFE, 0x29, 0x00, 0xA7, 0xFD,
+ 0xB8, 0xFE, 0x29, 0x00, 0xB7, 0xFC, 0xB8, 0xFE,
+ 0x2C, 0x00, 0xC5, 0xFB, 0x4C, 0xFE, 0x2E, 0x00,
+ 0xD5, 0xFA, 0xF0, 0xFD, 0x2F, 0x00, 0xE4, 0xF9,
+ 0xBA, 0xFD, 0x2F, 0x00, 0xF4, 0xF8, 0xBA, 0xFD,
+ 0x29, 0x00, 0x78, 0x00, 0xDD, 0xFD, 0x29, 0x00,
+ 0x68, 0x01, 0xDD, 0xFD, 0x29, 0x00, 0x59, 0x02,
+ 0xDD, 0xFD, 0x29, 0x00, 0x49, 0x03, 0xDD, 0xFD,
+ 0x2C, 0x00, 0x3B, 0x04, 0x28, 0xFD, 0x2E, 0x00,
+ 0x2B, 0x05, 0x8F, 0xFC, 0x2F, 0x00, 0x1C, 0x06,
+ 0x36, 0xFC, 0x2F, 0x00, 0x0C, 0x07, 0x36, 0xFC,
+ 0x29, 0x00, 0x88, 0xFF, 0xDD, 0xFD, 0x29, 0x00,
+ 0x98, 0xFE, 0xDD, 0xFD, 0x29, 0x00, 0xA7, 0xFD,
+ 0xDD, 0xFD, 0x29, 0x00, 0xB7, 0xFC, 0xDD, 0xFD,
+ 0x2C, 0x00, 0xC5, 0xFB, 0x28, 0xFD, 0x2E, 0x00,
+ 0xD5, 0xFA, 0x8F, 0xFC, 0x2F, 0x00, 0xE4, 0xF9,
+ 0x36, 0xFC, 0x2F, 0x00, 0xF4, 0xF8, 0x36, 0xFC,
+ 0x29, 0x00, 0x78, 0x00, 0x02, 0xFD, 0x29, 0x00,
+ 0x68, 0x01, 0x02, 0xFD, 0x29, 0x00, 0x59, 0x02,
+ 0x02, 0xFD, 0x29, 0x00, 0x49, 0x03, 0x02, 0xFD,
+ 0x2C, 0x00, 0x3B, 0x04, 0x05, 0xFC, 0x2E, 0x00,
+ 0x2B, 0x05, 0x2F, 0xFB, 0x2F, 0x00, 0x1C, 0x06,
+ 0xB2, 0xFA, 0x2F, 0x00, 0x0C, 0x07, 0xB2, 0xFA,
+ 0x29, 0x00, 0x88, 0xFF, 0x02, 0xFD, 0x29, 0x00,
+ 0x98, 0xFE, 0x02, 0xFD, 0x29, 0x00, 0xA7, 0xFD,
+ 0x02, 0xFD, 0x29, 0x00, 0xB7, 0xFC, 0x02, 0xFD,
+ 0x2C, 0x00, 0xC5, 0xFB, 0x05, 0xFC, 0x2E, 0x00,
+ 0xD5, 0xFA, 0x2F, 0xFB, 0x2F, 0x00, 0xE4, 0xF9,
+ 0xB2, 0xFA, 0x2F, 0x00, 0xF4, 0xF8, 0xB2, 0xFA,
+ 0x2C, 0x00, 0x78, 0x00, 0x27, 0xFC, 0x2C, 0x00,
+ 0x68, 0x01, 0x27, 0xFC, 0x2C, 0x00, 0x59, 0x02,
+ 0x27, 0xFC, 0x2C, 0x00, 0x49, 0x03, 0x27, 0xFC,
+ 0x2F, 0x00, 0x3B, 0x04, 0xE1, 0xFA, 0x30, 0x00,
+ 0x2B, 0x05, 0xCD, 0xF9, 0x30, 0x00, 0x1C, 0x06,
+ 0x2E, 0xF9, 0x30, 0x00, 0x0C, 0x07, 0x2E, 0xF9,
+ 0x2C, 0x00, 0x88, 0xFF, 0x27, 0xFC, 0x2C, 0x00,
+ 0x98, 0xFE, 0x27, 0xFC, 0x2C, 0x00, 0xA7, 0xFD,
+ 0x27, 0xFC, 0x2C, 0x00, 0xB7, 0xFC, 0x27, 0xFC,
+ 0x2F, 0x00, 0xC5, 0xFB, 0xE1, 0xFA, 0x30, 0x00,
+ 0xD5, 0xFA, 0xCD, 0xF9, 0x30, 0x00, 0xE4, 0xF9,
+ 0x2E, 0xF9, 0x30, 0x00, 0xF4, 0xF8, 0x2E, 0xF9,
+ 0x2E, 0x00, 0x78, 0x00, 0x4C, 0xFB, 0x2E, 0x00,
+ 0x68, 0x01, 0x4C, 0xFB, 0x2E, 0x00, 0x59, 0x02,
+ 0x4C, 0xFB, 0x2E, 0x00, 0x49, 0x03, 0x4C, 0xFB,
+ 0x30, 0x00, 0x3B, 0x04, 0xBE, 0xF9, 0x30, 0x00,
+ 0x2B, 0x05, 0x6D, 0xF8, 0x30, 0x00, 0x1C, 0x06,
+ 0xAA, 0xF7, 0x30, 0x00, 0x0C, 0x07, 0xAA, 0xF7,
+ 0x2E, 0x00, 0x88, 0xFF, 0x4C, 0xFB, 0x2E, 0x00,
+ 0x98, 0xFE, 0x4C, 0xFB, 0x2E, 0x00, 0xA7, 0xFD,
+ 0x4C, 0xFB, 0x2E, 0x00, 0xB7, 0xFC, 0x4C, 0xFB,
+ 0x30, 0x00, 0xC5, 0xFB, 0xBE, 0xF9, 0x30, 0x00,
+ 0xD5, 0xFA, 0x6D, 0xF8, 0x30, 0x00, 0xE4, 0xF9,
+ 0xAA, 0xF7, 0x30, 0x00, 0xF4, 0xF8, 0xAA, 0xF7,
+ 0x30, 0x00, 0x78, 0x00, 0x71, 0xFA, 0x30, 0x00,
+ 0x68, 0x01, 0x71, 0xFA, 0x30, 0x00, 0x59, 0x02,
+ 0x71, 0xFA, 0x30, 0x00, 0x49, 0x03, 0x71, 0xFA,
+ 0x30, 0x00, 0x3B, 0x04, 0x9A, 0xF8, 0x30, 0x00,
+ 0x2B, 0x05, 0x0C, 0xF7, 0x30, 0x00, 0x1C, 0x06,
+ 0x26, 0xF6, 0x30, 0x00, 0x0C, 0x07, 0x26, 0xF6,
+ 0x30, 0x00, 0x88, 0xFF, 0x71, 0xFA, 0x30, 0x00,
+ 0x98, 0xFE, 0x71, 0xFA, 0x30, 0x00, 0xA7, 0xFD,
+ 0x71, 0xFA, 0x30, 0x00, 0xB7, 0xFC, 0x71, 0xFA,
+ 0x30, 0x00, 0xC5, 0xFB, 0x9A, 0xF8, 0x30, 0x00,
+ 0xD5, 0xFA, 0x0C, 0xF7, 0x30, 0x00, 0xE4, 0xF9,
+ 0x26, 0xF6, 0x30, 0x00, 0xF4, 0xF8, 0x26, 0xF6,
+ 0x30, 0x00, 0x78, 0x00, 0x96, 0xF9, 0x30, 0x00,
+ 0x68, 0x01, 0x96, 0xF9, 0x30, 0x00, 0x59, 0x02,
+ 0x96, 0xF9, 0x30, 0x00, 0x49, 0x03, 0x96, 0xF9,
+ 0x30, 0x00, 0x3B, 0x04, 0x77, 0xF7, 0x30, 0x00,
+ 0x2B, 0x05, 0xAC, 0xF5, 0x30, 0x00, 0x1C, 0x06,
+ 0xA2, 0xF4, 0x30, 0x00, 0x0C, 0x07, 0xA2, 0xF4,
+ 0x30, 0x00, 0x88, 0xFF, 0x96, 0xF9, 0x30, 0x00,
+ 0x98, 0xFE, 0x96, 0xF9, 0x30, 0x00, 0xA7, 0xFD,
+ 0x96, 0xF9, 0x30, 0x00, 0xB7, 0xFC, 0x96, 0xF9,
+ 0x30, 0x00, 0xC5, 0xFB, 0x77, 0xF7, 0x30, 0x00,
+ 0xD5, 0xFA, 0xAC, 0xF5, 0x30, 0x00, 0xE4, 0xF9,
+ 0xA2, 0xF4, 0x30, 0x00, 0xF4, 0xF8, 0xA2, 0xF4,
+ 0x2A, 0x00, 0x84, 0x00, 0x78, 0x00, 0x2A, 0x00,
+ 0x8D, 0x01, 0x78, 0x00, 0x2A, 0x00, 0x96, 0x02,
+ 0x78, 0x00, 0x2A, 0x00, 0x9F, 0x03, 0x78, 0x00,
+ 0x2D, 0x00, 0xA8, 0x04, 0xA0, 0x00, 0x2F, 0x00,
+ 0xB1, 0x05, 0xC2, 0x00, 0x2F, 0x00, 0xBA, 0x06,
+ 0xC2, 0x00, 0x2F, 0x00, 0xC3, 0x07, 0xC2, 0x00,
+ 0x2A, 0x00, 0x7C, 0xFF, 0x78, 0x00, 0x2A, 0x00,
+ 0x73, 0xFE, 0x78, 0x00, 0x2A, 0x00, 0x6A, 0xFD,
+ 0x78, 0x00, 0x2A, 0x00, 0x61, 0xFC, 0x78, 0x00,
+ 0x2D, 0x00, 0x58, 0xFB, 0xA0, 0x00, 0x2F, 0x00,
+ 0x4F, 0xFA, 0xC2, 0x00, 0x2F, 0x00, 0x46, 0xF9,
+ 0xC2, 0x00, 0x2F, 0x00, 0x3D, 0xF8, 0xC2, 0x00,
+ 0x2A, 0x00, 0x84, 0x00, 0x68, 0x01, 0x2A, 0x00,
+ 0x8D, 0x01, 0x68, 0x01, 0x2A, 0x00, 0x96, 0x02,
+ 0x68, 0x01, 0x2A, 0x00, 0x9F, 0x03, 0x68, 0x01,
+ 0x2D, 0x00, 0xA8, 0x04, 0xE0, 0x01, 0x2F, 0x00,
+ 0xB1, 0x05, 0x46, 0x02, 0x2F, 0x00, 0xBA, 0x06,
+ 0x46, 0x02, 0x2F, 0x00, 0xC3, 0x07, 0x46, 0x02,
+ 0x2A, 0x00, 0x7C, 0xFF, 0x68, 0x01, 0x2A, 0x00,
+ 0x73, 0xFE, 0x68, 0x01, 0x2A, 0x00, 0x6A, 0xFD,
+ 0x68, 0x01, 0x2A, 0x00, 0x61, 0xFC, 0x68, 0x01,
+ 0x2D, 0x00, 0x58, 0xFB, 0xE0, 0x01, 0x2F, 0x00,
+ 0x4F, 0xFA, 0x46, 0x02, 0x2F, 0x00, 0x46, 0xF9,
+ 0x46, 0x02, 0x2F, 0x00, 0x3D, 0xF8, 0x46, 0x02,
+ 0x2A, 0x00, 0x84, 0x00, 0x59, 0x02, 0x2A, 0x00,
+ 0x8D, 0x01, 0x59, 0x02, 0x2A, 0x00, 0x96, 0x02,
+ 0x59, 0x02, 0x2A, 0x00, 0x9F, 0x03, 0x59, 0x02,
+ 0x2D, 0x00, 0xA8, 0x04, 0x21, 0x03, 0x2F, 0x00,
+ 0xB1, 0x05, 0xCA, 0x03, 0x2F, 0x00, 0xBA, 0x06,
+ 0xCA, 0x03, 0x2F, 0x00, 0xC3, 0x07, 0xCA, 0x03,
+ 0x2A, 0x00, 0x7C, 0xFF, 0x59, 0x02, 0x2A, 0x00,
+ 0x73, 0xFE, 0x59, 0x02, 0x2A, 0x00, 0x6A, 0xFD,
+ 0x59, 0x02, 0x2A, 0x00, 0x61, 0xFC, 0x59, 0x02,
+ 0x2D, 0x00, 0x58, 0xFB, 0x21, 0x03, 0x2F, 0x00,
+ 0x4F, 0xFA, 0xCA, 0x03, 0x2F, 0x00, 0x46, 0xF9,
+ 0xCA, 0x03, 0x2F, 0x00, 0x3D, 0xF8, 0xCA, 0x03,
+ 0x2A, 0x00, 0x84, 0x00, 0x49, 0x03, 0x2A, 0x00,
+ 0x8D, 0x01, 0x49, 0x03, 0x2A, 0x00, 0x96, 0x02,
+ 0x49, 0x03, 0x2A, 0x00, 0x9F, 0x03, 0x49, 0x03,
+ 0x2D, 0x00, 0xA8, 0x04, 0x61, 0x04, 0x2F, 0x00,
+ 0xB1, 0x05, 0x4E, 0x05, 0x2F, 0x00, 0xBA, 0x06,
+ 0x4E, 0x05, 0x2F, 0x00, 0xC3, 0x07, 0x4E, 0x05,
+ 0x2A, 0x00, 0x7C, 0xFF, 0x49, 0x03, 0x2A, 0x00,
+ 0x73, 0xFE, 0x49, 0x03, 0x2A, 0x00, 0x6A, 0xFD,
+ 0x49, 0x03, 0x2A, 0x00, 0x61, 0xFC, 0x49, 0x03,
+ 0x2D, 0x00, 0x58, 0xFB, 0x61, 0x04, 0x2F, 0x00,
+ 0x4F, 0xFA, 0x4E, 0x05, 0x2F, 0x00, 0x46, 0xF9,
+ 0x4E, 0x05, 0x2F, 0x00, 0x3D, 0xF8, 0x4E, 0x05,
+ 0x2D, 0x00, 0x84, 0x00, 0x3B, 0x04, 0x2D, 0x00,
+ 0x8D, 0x01, 0x3B, 0x04, 0x2D, 0x00, 0x96, 0x02,
+ 0x3B, 0x04, 0x2D, 0x00, 0x9F, 0x03, 0x3B, 0x04,
+ 0x30, 0x00, 0xA8, 0x04, 0xA2, 0x05, 0x30, 0x00,
+ 0xB1, 0x05, 0xD2, 0x06, 0x30, 0x00, 0xBA, 0x06,
+ 0xD2, 0x06, 0x30, 0x00, 0xC3, 0x07, 0xD2, 0x06,
+ 0x2D, 0x00, 0x7C, 0xFF, 0x3B, 0x04, 0x2D, 0x00,
+ 0x73, 0xFE, 0x3B, 0x04, 0x2D, 0x00, 0x6A, 0xFD,
+ 0x3B, 0x04, 0x2D, 0x00, 0x61, 0xFC, 0x3B, 0x04,
+ 0x30, 0x00, 0x58, 0xFB, 0xA2, 0x05, 0x30, 0x00,
+ 0x4F, 0xFA, 0xD2, 0x06, 0x30, 0x00, 0x46, 0xF9,
+ 0xD2, 0x06, 0x30, 0x00, 0x3D, 0xF8, 0xD2, 0x06,
+ 0x2F, 0x00, 0x84, 0x00, 0x2B, 0x05, 0x2F, 0x00,
+ 0x8D, 0x01, 0x2B, 0x05, 0x2F, 0x00, 0x96, 0x02,
+ 0x2B, 0x05, 0x2F, 0x00, 0x9F, 0x03, 0x2B, 0x05,
+ 0x30, 0x00, 0xA8, 0x04, 0xE2, 0x06, 0x30, 0x00,
+ 0xB1, 0x05, 0x56, 0x08, 0x30, 0x00, 0xBA, 0x06,
+ 0x56, 0x08, 0x30, 0x00, 0xC3, 0x07, 0x56, 0x08,
+ 0x2F, 0x00, 0x7C, 0xFF, 0x2B, 0x05, 0x2F, 0x00,
+ 0x73, 0xFE, 0x2B, 0x05, 0x2F, 0x00, 0x6A, 0xFD,
+ 0x2B, 0x05, 0x2F, 0x00, 0x61, 0xFC, 0x2B, 0x05,
+ 0x30, 0x00, 0x58, 0xFB, 0xE2, 0x06, 0x30, 0x00,
+ 0x4F, 0xFA, 0x56, 0x08, 0x30, 0x00, 0x46, 0xF9,
+ 0x56, 0x08, 0x30, 0x00, 0x3D, 0xF8, 0x56, 0x08,
+ 0x30, 0x00, 0x84, 0x00, 0x1C, 0x06, 0x30, 0x00,
+ 0x8D, 0x01, 0x1C, 0x06, 0x30, 0x00, 0x96, 0x02,
+ 0x1C, 0x06, 0x30, 0x00, 0x9F, 0x03, 0x1C, 0x06,
+ 0x30, 0x00, 0xA8, 0x04, 0x23, 0x08, 0x30, 0x00,
+ 0xB1, 0x05, 0xDA, 0x09, 0x30, 0x00, 0xBA, 0x06,
+ 0xDA, 0x09, 0x30, 0x00, 0xC3, 0x07, 0xDA, 0x09,
+ 0x30, 0x00, 0x7C, 0xFF, 0x1C, 0x06, 0x30, 0x00,
+ 0x73, 0xFE, 0x1C, 0x06, 0x30, 0x00, 0x6A, 0xFD,
+ 0x1C, 0x06, 0x30, 0x00, 0x61, 0xFC, 0x1C, 0x06,
+ 0x30, 0x00, 0x58, 0xFB, 0x23, 0x08, 0x30, 0x00,
+ 0x4F, 0xFA, 0xDA, 0x09, 0x30, 0x00, 0x46, 0xF9,
+ 0xDA, 0x09, 0x30, 0x00, 0x3D, 0xF8, 0xDA, 0x09,
+ 0x30, 0x00, 0x84, 0x00, 0x0C, 0x07, 0x30, 0x00,
+ 0x8D, 0x01, 0x0C, 0x07, 0x30, 0x00, 0x96, 0x02,
+ 0x0C, 0x07, 0x30, 0x00, 0x9F, 0x03, 0x0C, 0x07,
+ 0x30, 0x00, 0xA8, 0x04, 0x63, 0x09, 0x30, 0x00,
+ 0xB1, 0x05, 0x5E, 0x0B, 0x30, 0x00, 0xBA, 0x06,
+ 0x5E, 0x0B, 0x30, 0x00, 0xC3, 0x07, 0x5E, 0x0B,
+ 0x30, 0x00, 0x7C, 0xFF, 0x0C, 0x07, 0x30, 0x00,
+ 0x73, 0xFE, 0x0C, 0x07, 0x30, 0x00, 0x6A, 0xFD,
+ 0x0C, 0x07, 0x30, 0x00, 0x61, 0xFC, 0x0C, 0x07,
+ 0x30, 0x00, 0x58, 0xFB, 0x63, 0x09, 0x30, 0x00,
+ 0x4F, 0xFA, 0x5E, 0x0B, 0x30, 0x00, 0x46, 0xF9,
+ 0x5E, 0x0B, 0x30, 0x00, 0x3D, 0xF8, 0x5E, 0x0B,
+ 0x2A, 0x00, 0x84, 0x00, 0x88, 0xFF, 0x2A, 0x00,
+ 0x8D, 0x01, 0x88, 0xFF, 0x2A, 0x00, 0x96, 0x02,
+ 0x88, 0xFF, 0x2A, 0x00, 0x9F, 0x03, 0x88, 0xFF,
+ 0x2D, 0x00, 0xA8, 0x04, 0x60, 0xFF, 0x2F, 0x00,
+ 0xB1, 0x05, 0x3E, 0xFF, 0x2F, 0x00, 0xBA, 0x06,
+ 0x3E, 0xFF, 0x2F, 0x00, 0xC3, 0x07, 0x3E, 0xFF,
+ 0x2A, 0x00, 0x7C, 0xFF, 0x88, 0xFF, 0x2A, 0x00,
+ 0x73, 0xFE, 0x88, 0xFF, 0x2A, 0x00, 0x6A, 0xFD,
+ 0x88, 0xFF, 0x2A, 0x00, 0x61, 0xFC, 0x88, 0xFF,
+ 0x2D, 0x00, 0x58, 0xFB, 0x60, 0xFF, 0x2F, 0x00,
+ 0x4F, 0xFA, 0x3E, 0xFF, 0x2F, 0x00, 0x46, 0xF9,
+ 0x3E, 0xFF, 0x2F, 0x00, 0x3D, 0xF8, 0x3E, 0xFF,
+ 0x2A, 0x00, 0x84, 0x00, 0x98, 0xFE, 0x2A, 0x00,
+ 0x8D, 0x01, 0x98, 0xFE, 0x2A, 0x00, 0x96, 0x02,
+ 0x98, 0xFE, 0x2A, 0x00, 0x9F, 0x03, 0x98, 0xFE,
+ 0x2D, 0x00, 0xA8, 0x04, 0x20, 0xFE, 0x2F, 0x00,
+ 0xB1, 0x05, 0xBA, 0xFD, 0x2F, 0x00, 0xBA, 0x06,
+ 0xBA, 0xFD, 0x2F, 0x00, 0xC3, 0x07, 0xBA, 0xFD,
+ 0x2A, 0x00, 0x7C, 0xFF, 0x98, 0xFE, 0x2A, 0x00,
+ 0x73, 0xFE, 0x98, 0xFE, 0x2A, 0x00, 0x6A, 0xFD,
+ 0x98, 0xFE, 0x2A, 0x00, 0x61, 0xFC, 0x98, 0xFE,
+ 0x2D, 0x00, 0x58, 0xFB, 0x20, 0xFE, 0x2F, 0x00,
+ 0x4F, 0xFA, 0xBA, 0xFD, 0x2F, 0x00, 0x46, 0xF9,
+ 0xBA, 0xFD, 0x2F, 0x00, 0x3D, 0xF8, 0xBA, 0xFD,
+ 0x2A, 0x00, 0x84, 0x00, 0xA7, 0xFD, 0x2A, 0x00,
+ 0x8D, 0x01, 0xA7, 0xFD, 0x2A, 0x00, 0x96, 0x02,
+ 0xA7, 0xFD, 0x2A, 0x00, 0x9F, 0x03, 0xA7, 0xFD,
+ 0x2D, 0x00, 0xA8, 0x04, 0xDF, 0xFC, 0x2F, 0x00,
+ 0xB1, 0x05, 0x36, 0xFC, 0x2F, 0x00, 0xBA, 0x06,
+ 0x36, 0xFC, 0x2F, 0x00, 0xC3, 0x07, 0x36, 0xFC,
+ 0x2A, 0x00, 0x7C, 0xFF, 0xA7, 0xFD, 0x2A, 0x00,
+ 0x73, 0xFE, 0xA7, 0xFD, 0x2A, 0x00, 0x6A, 0xFD,
+ 0xA7, 0xFD, 0x2A, 0x00, 0x61, 0xFC, 0xA7, 0xFD,
+ 0x2D, 0x00, 0x58, 0xFB, 0xDF, 0xFC, 0x2F, 0x00,
+ 0x4F, 0xFA, 0x36, 0xFC, 0x2F, 0x00, 0x46, 0xF9,
+ 0x36, 0xFC, 0x2F, 0x00, 0x3D, 0xF8, 0x36, 0xFC,
+ 0x2A, 0x00, 0x84, 0x00, 0xB7, 0xFC, 0x2A, 0x00,
+ 0x8D, 0x01, 0xB7, 0xFC, 0x2A, 0x00, 0x96, 0x02,
+ 0xB7, 0xFC, 0x2A, 0x00, 0x9F, 0x03, 0xB7, 0xFC,
+ 0x2D, 0x00, 0xA8, 0x04, 0x9F, 0xFB, 0x2F, 0x00,
+ 0xB1, 0x05, 0xB2, 0xFA, 0x2F, 0x00, 0xBA, 0x06,
+ 0xB2, 0xFA, 0x2F, 0x00, 0xC3, 0x07, 0xB2, 0xFA,
+ 0x2A, 0x00, 0x7C, 0xFF, 0xB7, 0xFC, 0x2A, 0x00,
+ 0x73, 0xFE, 0xB7, 0xFC, 0x2A, 0x00, 0x6A, 0xFD,
+ 0xB7, 0xFC, 0x2A, 0x00, 0x61, 0xFC, 0xB7, 0xFC,
+ 0x2D, 0x00, 0x58, 0xFB, 0x9F, 0xFB, 0x2F, 0x00,
+ 0x4F, 0xFA, 0xB2, 0xFA, 0x2F, 0x00, 0x46, 0xF9,
+ 0xB2, 0xFA, 0x2F, 0x00, 0x3D, 0xF8, 0xB2, 0xFA,
+ 0x2D, 0x00, 0x84, 0x00, 0xC5, 0xFB, 0x2D, 0x00,
+ 0x8D, 0x01, 0xC5, 0xFB, 0x2D, 0x00, 0x96, 0x02,
+ 0xC5, 0xFB, 0x2D, 0x00, 0x9F, 0x03, 0xC5, 0xFB,
+ 0x30, 0x00, 0xA8, 0x04, 0x5E, 0xFA, 0x30, 0x00,
+ 0xB1, 0x05, 0x2E, 0xF9, 0x30, 0x00, 0xBA, 0x06,
+ 0x2E, 0xF9, 0x30, 0x00, 0xC3, 0x07, 0x2E, 0xF9,
+ 0x2D, 0x00, 0x7C, 0xFF, 0xC5, 0xFB, 0x2D, 0x00,
+ 0x73, 0xFE, 0xC5, 0xFB, 0x2D, 0x00, 0x6A, 0xFD,
+ 0xC5, 0xFB, 0x2D, 0x00, 0x61, 0xFC, 0xC5, 0xFB,
+ 0x30, 0x00, 0x58, 0xFB, 0x5E, 0xFA, 0x30, 0x00,
+ 0x4F, 0xFA, 0x2E, 0xF9, 0x30, 0x00, 0x46, 0xF9,
+ 0x2E, 0xF9, 0x30, 0x00, 0x3D, 0xF8, 0x2E, 0xF9,
+ 0x2F, 0x00, 0x84, 0x00, 0xD5, 0xFA, 0x2F, 0x00,
+ 0x8D, 0x01, 0xD5, 0xFA, 0x2F, 0x00, 0x96, 0x02,
+ 0xD5, 0xFA, 0x2F, 0x00, 0x9F, 0x03, 0xD5, 0xFA,
+ 0x30, 0x00, 0xA8, 0x04, 0x1E, 0xF9, 0x30, 0x00,
+ 0xB1, 0x05, 0xAA, 0xF7, 0x30, 0x00, 0xBA, 0x06,
+ 0xAA, 0xF7, 0x30, 0x00, 0xC3, 0x07, 0xAA, 0xF7,
+ 0x2F, 0x00, 0x7C, 0xFF, 0xD5, 0xFA, 0x2F, 0x00,
+ 0x73, 0xFE, 0xD5, 0xFA, 0x2F, 0x00, 0x6A, 0xFD,
+ 0xD5, 0xFA, 0x2F, 0x00, 0x61, 0xFC, 0xD5, 0xFA,
+ 0x30, 0x00, 0x58, 0xFB, 0x1E, 0xF9, 0x30, 0x00,
+ 0x4F, 0xFA, 0xAA, 0xF7, 0x30, 0x00, 0x46, 0xF9,
+ 0xAA, 0xF7, 0x30, 0x00, 0x3D, 0xF8, 0xAA, 0xF7,
+ 0x30, 0x00, 0x84, 0x00, 0xE4, 0xF9, 0x30, 0x00,
+ 0x8D, 0x01, 0xE4, 0xF9, 0x30, 0x00, 0x96, 0x02,
+ 0xE4, 0xF9, 0x30, 0x00, 0x9F, 0x03, 0xE4, 0xF9,
+ 0x30, 0x00, 0xA8, 0x04, 0xDD, 0xF7, 0x30, 0x00,
+ 0xB1, 0x05, 0x26, 0xF6, 0x30, 0x00, 0xBA, 0x06,
+ 0x26, 0xF6, 0x30, 0x00, 0xC3, 0x07, 0x26, 0xF6,
+ 0x30, 0x00, 0x7C, 0xFF, 0xE4, 0xF9, 0x30, 0x00,
+ 0x73, 0xFE, 0xE4, 0xF9, 0x30, 0x00, 0x6A, 0xFD,
+ 0xE4, 0xF9, 0x30, 0x00, 0x61, 0xFC, 0xE4, 0xF9,
+ 0x30, 0x00, 0x58, 0xFB, 0xDD, 0xF7, 0x30, 0x00,
+ 0x4F, 0xFA, 0x26, 0xF6, 0x30, 0x00, 0x46, 0xF9,
+ 0x26, 0xF6, 0x30, 0x00, 0x3D, 0xF8, 0x26, 0xF6,
+ 0x30, 0x00, 0x84, 0x00, 0xF4, 0xF8, 0x30, 0x00,
+ 0x8D, 0x01, 0xF4, 0xF8, 0x30, 0x00, 0x96, 0x02,
+ 0xF4, 0xF8, 0x30, 0x00, 0x9F, 0x03, 0xF4, 0xF8,
+ 0x30, 0x00, 0xA8, 0x04, 0x9D, 0xF6, 0x30, 0x00,
+ 0xB1, 0x05, 0xA2, 0xF4, 0x30, 0x00, 0xBA, 0x06,
+ 0xA2, 0xF4, 0x30, 0x00, 0xC3, 0x07, 0xA2, 0xF4,
+ 0x30, 0x00, 0x7C, 0xFF, 0xF4, 0xF8, 0x30, 0x00,
+ 0x73, 0xFE, 0xF4, 0xF8, 0x30, 0x00, 0x6A, 0xFD,
+ 0xF4, 0xF8, 0x30, 0x00, 0x61, 0xFC, 0xF4, 0xF8,
+ 0x30, 0x00, 0x58, 0xFB, 0x9D, 0xF6, 0x30, 0x00,
+ 0x4F, 0xFA, 0xA2, 0xF4, 0x30, 0x00, 0x46, 0xF9,
+ 0xA2, 0xF4, 0x30, 0x00, 0x3D, 0xF8, 0xA2, 0xF4,
+ 0x2B, 0x00, 0x91, 0x00, 0x84, 0x00, 0x2B, 0x00,
+ 0xB4, 0x01, 0x84, 0x00, 0x2B, 0x00, 0xD8, 0x02,
+ 0x84, 0x00, 0x2B, 0x00, 0xFB, 0x03, 0x84, 0x00,
+ 0x2E, 0x00, 0x1F, 0x05, 0xB0, 0x00, 0x2F, 0x00,
+ 0x42, 0x06, 0xC2, 0x00, 0x2F, 0x00, 0x66, 0x07,
+ 0xC2, 0x00, 0x2F, 0x00, 0x89, 0x08, 0xC2, 0x00,
+ 0x2B, 0x00, 0x6F, 0xFF, 0x84, 0x00, 0x2B, 0x00,
+ 0x4C, 0xFE, 0x84, 0x00, 0x2B, 0x00, 0x28, 0xFD,
+ 0x84, 0x00, 0x2B, 0x00, 0x05, 0xFC, 0x84, 0x00,
+ 0x2E, 0x00, 0xE1, 0xFA, 0xB0, 0x00, 0x2F, 0x00,
+ 0xBE, 0xF9, 0xC2, 0x00, 0x2F, 0x00, 0x9A, 0xF8,
+ 0xC2, 0x00, 0x2F, 0x00, 0x77, 0xF7, 0xC2, 0x00,
+ 0x2B, 0x00, 0x91, 0x00, 0x8D, 0x01, 0x2B, 0x00,
+ 0xB4, 0x01, 0x8D, 0x01, 0x2B, 0x00, 0xD8, 0x02,
+ 0x8D, 0x01, 0x2B, 0x00, 0xFB, 0x03, 0x8D, 0x01,
+ 0x2E, 0x00, 0x1F, 0x05, 0x10, 0x02, 0x2F, 0x00,
+ 0x42, 0x06, 0x46, 0x02, 0x2F, 0x00, 0x66, 0x07,
+ 0x46, 0x02, 0x2F, 0x00, 0x89, 0x08, 0x46, 0x02,
+ 0x2B, 0x00, 0x6F, 0xFF, 0x8D, 0x01, 0x2B, 0x00,
+ 0x4C, 0xFE, 0x8D, 0x01, 0x2B, 0x00, 0x28, 0xFD,
+ 0x8D, 0x01, 0x2B, 0x00, 0x05, 0xFC, 0x8D, 0x01,
+ 0x2E, 0x00, 0xE1, 0xFA, 0x10, 0x02, 0x2F, 0x00,
+ 0xBE, 0xF9, 0x46, 0x02, 0x2F, 0x00, 0x9A, 0xF8,
+ 0x46, 0x02, 0x2F, 0x00, 0x77, 0xF7, 0x46, 0x02,
+ 0x2B, 0x00, 0x91, 0x00, 0x96, 0x02, 0x2B, 0x00,
+ 0xB4, 0x01, 0x96, 0x02, 0x2B, 0x00, 0xD8, 0x02,
+ 0x96, 0x02, 0x2B, 0x00, 0xFB, 0x03, 0x96, 0x02,
+ 0x2E, 0x00, 0x1F, 0x05, 0x71, 0x03, 0x2F, 0x00,
+ 0x42, 0x06, 0xCA, 0x03, 0x2F, 0x00, 0x66, 0x07,
+ 0xCA, 0x03, 0x2F, 0x00, 0x89, 0x08, 0xCA, 0x03,
+ 0x2B, 0x00, 0x6F, 0xFF, 0x96, 0x02, 0x2B, 0x00,
+ 0x4C, 0xFE, 0x96, 0x02, 0x2B, 0x00, 0x28, 0xFD,
+ 0x96, 0x02, 0x2B, 0x00, 0x05, 0xFC, 0x96, 0x02,
+ 0x2E, 0x00, 0xE1, 0xFA, 0x71, 0x03, 0x2F, 0x00,
+ 0xBE, 0xF9, 0xCA, 0x03, 0x2F, 0x00, 0x9A, 0xF8,
+ 0xCA, 0x03, 0x2F, 0x00, 0x77, 0xF7, 0xCA, 0x03,
+ 0x2B, 0x00, 0x91, 0x00, 0x9F, 0x03, 0x2B, 0x00,
+ 0xB4, 0x01, 0x9F, 0x03, 0x2B, 0x00, 0xD8, 0x02,
+ 0x9F, 0x03, 0x2B, 0x00, 0xFB, 0x03, 0x9F, 0x03,
+ 0x2E, 0x00, 0x1F, 0x05, 0xD1, 0x04, 0x2F, 0x00,
+ 0x42, 0x06, 0x4E, 0x05, 0x2F, 0x00, 0x66, 0x07,
+ 0x4E, 0x05, 0x2F, 0x00, 0x89, 0x08, 0x4E, 0x05,
+ 0x2B, 0x00, 0x6F, 0xFF, 0x9F, 0x03, 0x2B, 0x00,
+ 0x4C, 0xFE, 0x9F, 0x03, 0x2B, 0x00, 0x28, 0xFD,
+ 0x9F, 0x03, 0x2B, 0x00, 0x05, 0xFC, 0x9F, 0x03,
+ 0x2E, 0x00, 0xE1, 0xFA, 0xD1, 0x04, 0x2F, 0x00,
+ 0xBE, 0xF9, 0x4E, 0x05, 0x2F, 0x00, 0x9A, 0xF8,
+ 0x4E, 0x05, 0x2F, 0x00, 0x77, 0xF7, 0x4E, 0x05,
+ 0x2E, 0x00, 0x91, 0x00, 0xA8, 0x04, 0x2E, 0x00,
+ 0xB4, 0x01, 0xA8, 0x04, 0x2E, 0x00, 0xD8, 0x02,
+ 0xA8, 0x04, 0x2E, 0x00, 0xFB, 0x03, 0xA8, 0x04,
+ 0x30, 0x00, 0x1F, 0x05, 0x33, 0x06, 0x30, 0x00,
+ 0x42, 0x06, 0xD2, 0x06, 0x30, 0x00, 0x66, 0x07,
+ 0xD2, 0x06, 0x30, 0x00, 0x89, 0x08, 0xD2, 0x06,
+ 0x2E, 0x00, 0x6F, 0xFF, 0xA8, 0x04, 0x2E, 0x00,
+ 0x4C, 0xFE, 0xA8, 0x04, 0x2E, 0x00, 0x28, 0xFD,
+ 0xA8, 0x04, 0x2E, 0x00, 0x05, 0xFC, 0xA8, 0x04,
+ 0x30, 0x00, 0xE1, 0xFA, 0x33, 0x06, 0x30, 0x00,
+ 0xBE, 0xF9, 0xD2, 0x06, 0x30, 0x00, 0x9A, 0xF8,
+ 0xD2, 0x06, 0x30, 0x00, 0x77, 0xF7, 0xD2, 0x06,
+ 0x30, 0x00, 0x91, 0x00, 0xB1, 0x05, 0x30, 0x00,
+ 0xB4, 0x01, 0xB1, 0x05, 0x30, 0x00, 0xD8, 0x02,
+ 0xB1, 0x05, 0x30, 0x00, 0xFB, 0x03, 0xB1, 0x05,
+ 0x30, 0x00, 0x1F, 0x05, 0x93, 0x07, 0x30, 0x00,
+ 0x42, 0x06, 0x56, 0x08, 0x30, 0x00, 0x66, 0x07,
+ 0x56, 0x08, 0x30, 0x00, 0x89, 0x08, 0x56, 0x08,
+ 0x30, 0x00, 0x6F, 0xFF, 0xB1, 0x05, 0x30, 0x00,
+ 0x4C, 0xFE, 0xB1, 0x05, 0x30, 0x00, 0x28, 0xFD,
+ 0xB1, 0x05, 0x30, 0x00, 0x05, 0xFC, 0xB1, 0x05,
+ 0x30, 0x00, 0xE1, 0xFA, 0x93, 0x07, 0x30, 0x00,
+ 0xBE, 0xF9, 0x56, 0x08, 0x30, 0x00, 0x9A, 0xF8,
+ 0x56, 0x08, 0x30, 0x00, 0x77, 0xF7, 0x56, 0x08,
+ 0x30, 0x00, 0x91, 0x00, 0xBA, 0x06, 0x30, 0x00,
+ 0xB4, 0x01, 0xBA, 0x06, 0x30, 0x00, 0xD8, 0x02,
+ 0xBA, 0x06, 0x30, 0x00, 0xFB, 0x03, 0xBA, 0x06,
+ 0x30, 0x00, 0x1F, 0x05, 0xF4, 0x08, 0x30, 0x00,
+ 0x42, 0x06, 0xDA, 0x09, 0x30, 0x00, 0x66, 0x07,
+ 0xDA, 0x09, 0x30, 0x00, 0x89, 0x08, 0xDA, 0x09,
+ 0x30, 0x00, 0x6F, 0xFF, 0xBA, 0x06, 0x30, 0x00,
+ 0x4C, 0xFE, 0xBA, 0x06, 0x30, 0x00, 0x28, 0xFD,
+ 0xBA, 0x06, 0x30, 0x00, 0x05, 0xFC, 0xBA, 0x06,
+ 0x30, 0x00, 0xE1, 0xFA, 0xF4, 0x08, 0x30, 0x00,
+ 0xBE, 0xF9, 0xDA, 0x09, 0x30, 0x00, 0x9A, 0xF8,
+ 0xDA, 0x09, 0x30, 0x00, 0x77, 0xF7, 0xDA, 0x09,
+ 0x30, 0x00, 0x91, 0x00, 0xC3, 0x07, 0x30, 0x00,
+ 0xB4, 0x01, 0xC3, 0x07, 0x30, 0x00, 0xD8, 0x02,
+ 0xC3, 0x07, 0x30, 0x00, 0xFB, 0x03, 0xC3, 0x07,
+ 0x30, 0x00, 0x1F, 0x05, 0x54, 0x0A, 0x30, 0x00,
+ 0x42, 0x06, 0x5E, 0x0B, 0x30, 0x00, 0x66, 0x07,
+ 0x5E, 0x0B, 0x30, 0x00, 0x89, 0x08, 0x5E, 0x0B,
+ 0x30, 0x00, 0x6F, 0xFF, 0xC3, 0x07, 0x30, 0x00,
+ 0x4C, 0xFE, 0xC3, 0x07, 0x30, 0x00, 0x28, 0xFD,
+ 0xC3, 0x07, 0x30, 0x00, 0x05, 0xFC, 0xC3, 0x07,
+ 0x30, 0x00, 0xE1, 0xFA, 0x54, 0x0A, 0x30, 0x00,
+ 0xBE, 0xF9, 0x5E, 0x0B, 0x30, 0x00, 0x9A, 0xF8,
+ 0x5E, 0x0B, 0x30, 0x00, 0x77, 0xF7, 0x5E, 0x0B,
+ 0x2B, 0x00, 0x91, 0x00, 0x7C, 0xFF, 0x2B, 0x00,
+ 0xB4, 0x01, 0x7C, 0xFF, 0x2B, 0x00, 0xD8, 0x02,
+ 0x7C, 0xFF, 0x2B, 0x00, 0xFB, 0x03, 0x7C, 0xFF,
+ 0x2E, 0x00, 0x1F, 0x05, 0x50, 0xFF, 0x2F, 0x00,
+ 0x42, 0x06, 0x3E, 0xFF, 0x2F, 0x00, 0x66, 0x07,
+ 0x3E, 0xFF, 0x2F, 0x00, 0x89, 0x08, 0x3E, 0xFF,
+ 0x2B, 0x00, 0x6F, 0xFF, 0x7C, 0xFF, 0x2B, 0x00,
+ 0x4C, 0xFE, 0x7C, 0xFF, 0x2B, 0x00, 0x28, 0xFD,
+ 0x7C, 0xFF, 0x2B, 0x00, 0x05, 0xFC, 0x7C, 0xFF,
+ 0x2E, 0x00, 0xE1, 0xFA, 0x50, 0xFF, 0x2F, 0x00,
+ 0xBE, 0xF9, 0x3E, 0xFF, 0x2F, 0x00, 0x9A, 0xF8,
+ 0x3E, 0xFF, 0x2F, 0x00, 0x77, 0xF7, 0x3E, 0xFF,
+ 0x2B, 0x00, 0x91, 0x00, 0x73, 0xFE, 0x2B, 0x00,
+ 0xB4, 0x01, 0x73, 0xFE, 0x2B, 0x00, 0xD8, 0x02,
+ 0x73, 0xFE, 0x2B, 0x00, 0xFB, 0x03, 0x73, 0xFE,
+ 0x2E, 0x00, 0x1F, 0x05, 0xF0, 0xFD, 0x2F, 0x00,
+ 0x42, 0x06, 0xBA, 0xFD, 0x2F, 0x00, 0x66, 0x07,
+ 0xBA, 0xFD, 0x2F, 0x00, 0x89, 0x08, 0xBA, 0xFD,
+ 0x2B, 0x00, 0x6F, 0xFF, 0x73, 0xFE, 0x2B, 0x00,
+ 0x4C, 0xFE, 0x73, 0xFE, 0x2B, 0x00, 0x28, 0xFD,
+ 0x73, 0xFE, 0x2B, 0x00, 0x05, 0xFC, 0x73, 0xFE,
+ 0x2E, 0x00, 0xE1, 0xFA, 0xF0, 0xFD, 0x2F, 0x00,
+ 0xBE, 0xF9, 0xBA, 0xFD, 0x2F, 0x00, 0x9A, 0xF8,
+ 0xBA, 0xFD, 0x2F, 0x00, 0x77, 0xF7, 0xBA, 0xFD,
+ 0x2B, 0x00, 0x91, 0x00, 0x6A, 0xFD, 0x2B, 0x00,
+ 0xB4, 0x01, 0x6A, 0xFD, 0x2B, 0x00, 0xD8, 0x02,
+ 0x6A, 0xFD, 0x2B, 0x00, 0xFB, 0x03, 0x6A, 0xFD,
+ 0x2E, 0x00, 0x1F, 0x05, 0x8F, 0xFC, 0x2F, 0x00,
+ 0x42, 0x06, 0x36, 0xFC, 0x2F, 0x00, 0x66, 0x07,
+ 0x36, 0xFC, 0x2F, 0x00, 0x89, 0x08, 0x36, 0xFC,
+ 0x2B, 0x00, 0x6F, 0xFF, 0x6A, 0xFD, 0x2B, 0x00,
+ 0x4C, 0xFE, 0x6A, 0xFD, 0x2B, 0x00, 0x28, 0xFD,
+ 0x6A, 0xFD, 0x2B, 0x00, 0x05, 0xFC, 0x6A, 0xFD,
+ 0x2E, 0x00, 0xE1, 0xFA, 0x8F, 0xFC, 0x2F, 0x00,
+ 0xBE, 0xF9, 0x36, 0xFC, 0x2F, 0x00, 0x9A, 0xF8,
+ 0x36, 0xFC, 0x2F, 0x00, 0x77, 0xF7, 0x36, 0xFC,
+ 0x2B, 0x00, 0x91, 0x00, 0x61, 0xFC, 0x2B, 0x00,
+ 0xB4, 0x01, 0x61, 0xFC, 0x2B, 0x00, 0xD8, 0x02,
+ 0x61, 0xFC, 0x2B, 0x00, 0xFB, 0x03, 0x61, 0xFC,
+ 0x2E, 0x00, 0x1F, 0x05, 0x2F, 0xFB, 0x2F, 0x00,
+ 0x42, 0x06, 0xB2, 0xFA, 0x2F, 0x00, 0x66, 0x07,
+ 0xB2, 0xFA, 0x2F, 0x00, 0x89, 0x08, 0xB2, 0xFA,
+ 0x2B, 0x00, 0x6F, 0xFF, 0x61, 0xFC, 0x2B, 0x00,
+ 0x4C, 0xFE, 0x61, 0xFC, 0x2B, 0x00, 0x28, 0xFD,
+ 0x61, 0xFC, 0x2B, 0x00, 0x05, 0xFC, 0x61, 0xFC,
+ 0x2E, 0x00, 0xE1, 0xFA, 0x2F, 0xFB, 0x2F, 0x00,
+ 0xBE, 0xF9, 0xB2, 0xFA, 0x2F, 0x00, 0x9A, 0xF8,
+ 0xB2, 0xFA, 0x2F, 0x00, 0x77, 0xF7, 0xB2, 0xFA,
+ 0x2E, 0x00, 0x91, 0x00, 0x58, 0xFB, 0x2E, 0x00,
+ 0xB4, 0x01, 0x58, 0xFB, 0x2E, 0x00, 0xD8, 0x02,
+ 0x58, 0xFB, 0x2E, 0x00, 0xFB, 0x03, 0x58, 0xFB,
+ 0x30, 0x00, 0x1F, 0x05, 0xCD, 0xF9, 0x30, 0x00,
+ 0x42, 0x06, 0x2E, 0xF9, 0x30, 0x00, 0x66, 0x07,
+ 0x2E, 0xF9, 0x30, 0x00, 0x89, 0x08, 0x2E, 0xF9,
+ 0x2E, 0x00, 0x6F, 0xFF, 0x58, 0xFB, 0x2E, 0x00,
+ 0x4C, 0xFE, 0x58, 0xFB, 0x2E, 0x00, 0x28, 0xFD,
+ 0x58, 0xFB, 0x2E, 0x00, 0x05, 0xFC, 0x58, 0xFB,
+ 0x30, 0x00, 0xE1, 0xFA, 0xCD, 0xF9, 0x30, 0x00,
+ 0xBE, 0xF9, 0x2E, 0xF9, 0x30, 0x00, 0x9A, 0xF8,
+ 0x2E, 0xF9, 0x30, 0x00, 0x77, 0xF7, 0x2E, 0xF9,
+ 0x30, 0x00, 0x91, 0x00, 0x4F, 0xFA, 0x30, 0x00,
+ 0xB4, 0x01, 0x4F, 0xFA, 0x30, 0x00, 0xD8, 0x02,
+ 0x4F, 0xFA, 0x30, 0x00, 0xFB, 0x03, 0x4F, 0xFA,
+ 0x30, 0x00, 0x1F, 0x05, 0x6D, 0xF8, 0x30, 0x00,
+ 0x42, 0x06, 0xAA, 0xF7, 0x30, 0x00, 0x66, 0x07,
+ 0xAA, 0xF7, 0x30, 0x00, 0x89, 0x08, 0xAA, 0xF7,
+ 0x30, 0x00, 0x6F, 0xFF, 0x4F, 0xFA, 0x30, 0x00,
+ 0x4C, 0xFE, 0x4F, 0xFA, 0x30, 0x00, 0x28, 0xFD,
+ 0x4F, 0xFA, 0x30, 0x00, 0x05, 0xFC, 0x4F, 0xFA,
+ 0x30, 0x00, 0xE1, 0xFA, 0x6D, 0xF8, 0x30, 0x00,
+ 0xBE, 0xF9, 0xAA, 0xF7, 0x30, 0x00, 0x9A, 0xF8,
+ 0xAA, 0xF7, 0x30, 0x00, 0x77, 0xF7, 0xAA, 0xF7,
+ 0x30, 0x00, 0x91, 0x00, 0x46, 0xF9, 0x30, 0x00,
+ 0xB4, 0x01, 0x46, 0xF9, 0x30, 0x00, 0xD8, 0x02,
+ 0x46, 0xF9, 0x30, 0x00, 0xFB, 0x03, 0x46, 0xF9,
+ 0x30, 0x00, 0x1F, 0x05, 0x0C, 0xF7, 0x30, 0x00,
+ 0x42, 0x06, 0x26, 0xF6, 0x30, 0x00, 0x66, 0x07,
+ 0x26, 0xF6, 0x30, 0x00, 0x89, 0x08, 0x26, 0xF6,
+ 0x30, 0x00, 0x6F, 0xFF, 0x46, 0xF9, 0x30, 0x00,
+ 0x4C, 0xFE, 0x46, 0xF9, 0x30, 0x00, 0x28, 0xFD,
+ 0x46, 0xF9, 0x30, 0x00, 0x05, 0xFC, 0x46, 0xF9,
+ 0x30, 0x00, 0xE1, 0xFA, 0x0C, 0xF7, 0x30, 0x00,
+ 0xBE, 0xF9, 0x26, 0xF6, 0x30, 0x00, 0x9A, 0xF8,
+ 0x26, 0xF6, 0x30, 0x00, 0x77, 0xF7, 0x26, 0xF6,
+ 0x30, 0x00, 0x91, 0x00, 0x3D, 0xF8, 0x30, 0x00,
+ 0xB4, 0x01, 0x3D, 0xF8, 0x30, 0x00, 0xD8, 0x02,
+ 0x3D, 0xF8, 0x30, 0x00, 0xFB, 0x03, 0x3D, 0xF8,
+ 0x30, 0x00, 0x1F, 0x05, 0xAC, 0xF5, 0x30, 0x00,
+ 0x42, 0x06, 0xA2, 0xF4, 0x30, 0x00, 0x66, 0x07,
+ 0xA2, 0xF4, 0x30, 0x00, 0x89, 0x08, 0xA2, 0xF4,
+ 0x30, 0x00, 0x6F, 0xFF, 0x3D, 0xF8, 0x30, 0x00,
+ 0x4C, 0xFE, 0x3D, 0xF8, 0x30, 0x00, 0x28, 0xFD,
+ 0x3D, 0xF8, 0x30, 0x00, 0x05, 0xFC, 0x3D, 0xF8,
+ 0x30, 0x00, 0xE1, 0xFA, 0xAC, 0xF5, 0x30, 0x00,
+ 0xBE, 0xF9, 0xA2, 0xF4, 0x30, 0x00, 0x9A, 0xF8,
+ 0xA2, 0xF4, 0x30, 0x00, 0x77, 0xF7, 0xA2, 0xF4,
+ 0x2C, 0x00, 0xA0, 0x00, 0x91, 0x00, 0x2C, 0x00,
+ 0xE0, 0x01, 0x91, 0x00, 0x2C, 0x00, 0x21, 0x03,
+ 0x91, 0x00, 0x2C, 0x00, 0x61, 0x04, 0x91, 0x00,
+ 0x2F, 0x00, 0xA2, 0x05, 0xC2, 0x00, 0x2F, 0x00,
+ 0xE2, 0x06, 0xC2, 0x00, 0x2F, 0x00, 0x23, 0x08,
+ 0xC2, 0x00, 0x2F, 0x00, 0x63, 0x09, 0xC2, 0x00,
+ 0x2C, 0x00, 0x60, 0xFF, 0x91, 0x00, 0x2C, 0x00,
+ 0x20, 0xFE, 0x91, 0x00, 0x2C, 0x00, 0xDF, 0xFC,
+ 0x91, 0x00, 0x2C, 0x00, 0x9F, 0xFB, 0x91, 0x00,
+ 0x2F, 0x00, 0x5E, 0xFA, 0xC2, 0x00, 0x2F, 0x00,
+ 0x1E, 0xF9, 0xC2, 0x00, 0x2F, 0x00, 0xDD, 0xF7,
+ 0xC2, 0x00, 0x2F, 0x00, 0x9D, 0xF6, 0xC2, 0x00,
+ 0x2C, 0x00, 0xA0, 0x00, 0xB4, 0x01, 0x2C, 0x00,
+ 0xE0, 0x01, 0xB4, 0x01, 0x2C, 0x00, 0x21, 0x03,
+ 0xB4, 0x01, 0x2C, 0x00, 0x61, 0x04, 0xB4, 0x01,
+ 0x2F, 0x00, 0xA2, 0x05, 0x46, 0x02, 0x2F, 0x00,
+ 0xE2, 0x06, 0x46, 0x02, 0x2F, 0x00, 0x23, 0x08,
+ 0x46, 0x02, 0x2F, 0x00, 0x63, 0x09, 0x46, 0x02,
+ 0x2C, 0x00, 0x60, 0xFF, 0xB4, 0x01, 0x2C, 0x00,
+ 0x20, 0xFE, 0xB4, 0x01, 0x2C, 0x00, 0xDF, 0xFC,
+ 0xB4, 0x01, 0x2C, 0x00, 0x9F, 0xFB, 0xB4, 0x01,
+ 0x2F, 0x00, 0x5E, 0xFA, 0x46, 0x02, 0x2F, 0x00,
+ 0x1E, 0xF9, 0x46, 0x02, 0x2F, 0x00, 0xDD, 0xF7,
+ 0x46, 0x02, 0x2F, 0x00, 0x9D, 0xF6, 0x46, 0x02,
+ 0x2C, 0x00, 0xA0, 0x00, 0xD8, 0x02, 0x2C, 0x00,
+ 0xE0, 0x01, 0xD8, 0x02, 0x2C, 0x00, 0x21, 0x03,
+ 0xD8, 0x02, 0x2C, 0x00, 0x61, 0x04, 0xD8, 0x02,
+ 0x2F, 0x00, 0xA2, 0x05, 0xCA, 0x03, 0x2F, 0x00,
+ 0xE2, 0x06, 0xCA, 0x03, 0x2F, 0x00, 0x23, 0x08,
+ 0xCA, 0x03, 0x2F, 0x00, 0x63, 0x09, 0xCA, 0x03,
+ 0x2C, 0x00, 0x60, 0xFF, 0xD8, 0x02, 0x2C, 0x00,
+ 0x20, 0xFE, 0xD8, 0x02, 0x2C, 0x00, 0xDF, 0xFC,
+ 0xD8, 0x02, 0x2C, 0x00, 0x9F, 0xFB, 0xD8, 0x02,
+ 0x2F, 0x00, 0x5E, 0xFA, 0xCA, 0x03, 0x2F, 0x00,
+ 0x1E, 0xF9, 0xCA, 0x03, 0x2F, 0x00, 0xDD, 0xF7,
+ 0xCA, 0x03, 0x2F, 0x00, 0x9D, 0xF6, 0xCA, 0x03,
+ 0x2C, 0x00, 0xA0, 0x00, 0xFB, 0x03, 0x2C, 0x00,
+ 0xE0, 0x01, 0xFB, 0x03, 0x2C, 0x00, 0x21, 0x03,
+ 0xFB, 0x03, 0x2C, 0x00, 0x61, 0x04, 0xFB, 0x03,
+ 0x2F, 0x00, 0xA2, 0x05, 0x4E, 0x05, 0x2F, 0x00,
+ 0xE2, 0x06, 0x4E, 0x05, 0x2F, 0x00, 0x23, 0x08,
+ 0x4E, 0x05, 0x2F, 0x00, 0x63, 0x09, 0x4E, 0x05,
+ 0x2C, 0x00, 0x60, 0xFF, 0xFB, 0x03, 0x2C, 0x00,
+ 0x20, 0xFE, 0xFB, 0x03, 0x2C, 0x00, 0xDF, 0xFC,
+ 0xFB, 0x03, 0x2C, 0x00, 0x9F, 0xFB, 0xFB, 0x03,
+ 0x2F, 0x00, 0x5E, 0xFA, 0x4E, 0x05, 0x2F, 0x00,
+ 0x1E, 0xF9, 0x4E, 0x05, 0x2F, 0x00, 0xDD, 0xF7,
+ 0x4E, 0x05, 0x2F, 0x00, 0x9D, 0xF6, 0x4E, 0x05,
+ 0x2F, 0x00, 0xA0, 0x00, 0x1F, 0x05, 0x2F, 0x00,
+ 0xE0, 0x01, 0x1F, 0x05, 0x2F, 0x00, 0x21, 0x03,
+ 0x1F, 0x05, 0x2F, 0x00, 0x61, 0x04, 0x1F, 0x05,
+ 0x30, 0x00, 0xA2, 0x05, 0xD2, 0x06, 0x30, 0x00,
+ 0xE2, 0x06, 0xD2, 0x06, 0x30, 0x00, 0x23, 0x08,
+ 0xD2, 0x06, 0x30, 0x00, 0x63, 0x09, 0xD2, 0x06,
+ 0x2F, 0x00, 0x60, 0xFF, 0x1F, 0x05, 0x2F, 0x00,
+ 0x20, 0xFE, 0x1F, 0x05, 0x2F, 0x00, 0xDF, 0xFC,
+ 0x1F, 0x05, 0x2F, 0x00, 0x9F, 0xFB, 0x1F, 0x05,
+ 0x30, 0x00, 0x5E, 0xFA, 0xD2, 0x06, 0x30, 0x00,
+ 0x1E, 0xF9, 0xD2, 0x06, 0x30, 0x00, 0xDD, 0xF7,
+ 0xD2, 0x06, 0x30, 0x00, 0x9D, 0xF6, 0xD2, 0x06,
+ 0x30, 0x00, 0xA0, 0x00, 0x42, 0x06, 0x30, 0x00,
+ 0xE0, 0x01, 0x42, 0x06, 0x30, 0x00, 0x21, 0x03,
+ 0x42, 0x06, 0x30, 0x00, 0x61, 0x04, 0x42, 0x06,
+ 0x30, 0x00, 0xA2, 0x05, 0x56, 0x08, 0x30, 0x00,
+ 0xE2, 0x06, 0x56, 0x08, 0x30, 0x00, 0x23, 0x08,
+ 0x56, 0x08, 0x30, 0x00, 0x63, 0x09, 0x56, 0x08,
+ 0x30, 0x00, 0x60, 0xFF, 0x42, 0x06, 0x30, 0x00,
+ 0x20, 0xFE, 0x42, 0x06, 0x30, 0x00, 0xDF, 0xFC,
+ 0x42, 0x06, 0x30, 0x00, 0x9F, 0xFB, 0x42, 0x06,
+ 0x30, 0x00, 0x5E, 0xFA, 0x56, 0x08, 0x30, 0x00,
+ 0x1E, 0xF9, 0x56, 0x08, 0x30, 0x00, 0xDD, 0xF7,
+ 0x56, 0x08, 0x30, 0x00, 0x9D, 0xF6, 0x56, 0x08,
+ 0x30, 0x00, 0xA0, 0x00, 0x66, 0x07, 0x30, 0x00,
+ 0xE0, 0x01, 0x66, 0x07, 0x30, 0x00, 0x21, 0x03,
+ 0x66, 0x07, 0x30, 0x00, 0x61, 0x04, 0x66, 0x07,
+ 0x30, 0x00, 0xA2, 0x05, 0xDA, 0x09, 0x30, 0x00,
+ 0xE2, 0x06, 0xDA, 0x09, 0x30, 0x00, 0x23, 0x08,
+ 0xDA, 0x09, 0x30, 0x00, 0x63, 0x09, 0xDA, 0x09,
+ 0x30, 0x00, 0x60, 0xFF, 0x66, 0x07, 0x30, 0x00,
+ 0x20, 0xFE, 0x66, 0x07, 0x30, 0x00, 0xDF, 0xFC,
+ 0x66, 0x07, 0x30, 0x00, 0x9F, 0xFB, 0x66, 0x07,
+ 0x30, 0x00, 0x5E, 0xFA, 0xDA, 0x09, 0x30, 0x00,
+ 0x1E, 0xF9, 0xDA, 0x09, 0x30, 0x00, 0xDD, 0xF7,
+ 0xDA, 0x09, 0x30, 0x00, 0x9D, 0xF6, 0xDA, 0x09,
+ 0x30, 0x00, 0xA0, 0x00, 0x89, 0x08, 0x30, 0x00,
+ 0xE0, 0x01, 0x89, 0x08, 0x30, 0x00, 0x21, 0x03,
+ 0x89, 0x08, 0x30, 0x00, 0x61, 0x04, 0x89, 0x08,
+ 0x30, 0x00, 0xA2, 0x05, 0x5E, 0x0B, 0x30, 0x00,
+ 0xE2, 0x06, 0x5E, 0x0B, 0x30, 0x00, 0x23, 0x08,
+ 0x5E, 0x0B, 0x30, 0x00, 0x63, 0x09, 0x5E, 0x0B,
+ 0x30, 0x00, 0x60, 0xFF, 0x89, 0x08, 0x30, 0x00,
+ 0x20, 0xFE, 0x89, 0x08, 0x30, 0x00, 0xDF, 0xFC,
+ 0x89, 0x08, 0x30, 0x00, 0x9F, 0xFB, 0x89, 0x08,
+ 0x30, 0x00, 0x5E, 0xFA, 0x5E, 0x0B, 0x30, 0x00,
+ 0x1E, 0xF9, 0x5E, 0x0B, 0x30, 0x00, 0xDD, 0xF7,
+ 0x5E, 0x0B, 0x30, 0x00, 0x9D, 0xF6, 0x5E, 0x0B,
+ 0x2C, 0x00, 0xA0, 0x00, 0x6F, 0xFF, 0x2C, 0x00,
+ 0xE0, 0x01, 0x6F, 0xFF, 0x2C, 0x00, 0x21, 0x03,
+ 0x6F, 0xFF, 0x2C, 0x00, 0x61, 0x04, 0x6F, 0xFF,
+ 0x2F, 0x00, 0xA2, 0x05, 0x3E, 0xFF, 0x2F, 0x00,
+ 0xE2, 0x06, 0x3E, 0xFF, 0x2F, 0x00, 0x23, 0x08,
+ 0x3E, 0xFF, 0x2F, 0x00, 0x63, 0x09, 0x3E, 0xFF,
+ 0x2C, 0x00, 0x60, 0xFF, 0x6F, 0xFF, 0x2C, 0x00,
+ 0x20, 0xFE, 0x6F, 0xFF, 0x2C, 0x00, 0xDF, 0xFC,
+ 0x6F, 0xFF, 0x2C, 0x00, 0x9F, 0xFB, 0x6F, 0xFF,
+ 0x2F, 0x00, 0x5E, 0xFA, 0x3E, 0xFF, 0x2F, 0x00,
+ 0x1E, 0xF9, 0x3E, 0xFF, 0x2F, 0x00, 0xDD, 0xF7,
+ 0x3E, 0xFF, 0x2F, 0x00, 0x9D, 0xF6, 0x3E, 0xFF,
+ 0x2C, 0x00, 0xA0, 0x00, 0x4C, 0xFE, 0x2C, 0x00,
+ 0xE0, 0x01, 0x4C, 0xFE, 0x2C, 0x00, 0x21, 0x03,
+ 0x4C, 0xFE, 0x2C, 0x00, 0x61, 0x04, 0x4C, 0xFE,
+ 0x2F, 0x00, 0xA2, 0x05, 0xBA, 0xFD, 0x2F, 0x00,
+ 0xE2, 0x06, 0xBA, 0xFD, 0x2F, 0x00, 0x23, 0x08,
+ 0xBA, 0xFD, 0x2F, 0x00, 0x63, 0x09, 0xBA, 0xFD,
+ 0x2C, 0x00, 0x60, 0xFF, 0x4C, 0xFE, 0x2C, 0x00,
+ 0x20, 0xFE, 0x4C, 0xFE, 0x2C, 0x00, 0xDF, 0xFC,
+ 0x4C, 0xFE, 0x2C, 0x00, 0x9F, 0xFB, 0x4C, 0xFE,
+ 0x2F, 0x00, 0x5E, 0xFA, 0xBA, 0xFD, 0x2F, 0x00,
+ 0x1E, 0xF9, 0xBA, 0xFD, 0x2F, 0x00, 0xDD, 0xF7,
+ 0xBA, 0xFD, 0x2F, 0x00, 0x9D, 0xF6, 0xBA, 0xFD,
+ 0x2C, 0x00, 0xA0, 0x00, 0x28, 0xFD, 0x2C, 0x00,
+ 0xE0, 0x01, 0x28, 0xFD, 0x2C, 0x00, 0x21, 0x03,
+ 0x28, 0xFD, 0x2C, 0x00, 0x61, 0x04, 0x28, 0xFD,
+ 0x2F, 0x00, 0xA2, 0x05, 0x36, 0xFC, 0x2F, 0x00,
+ 0xE2, 0x06, 0x36, 0xFC, 0x2F, 0x00, 0x23, 0x08,
+ 0x36, 0xFC, 0x2F, 0x00, 0x63, 0x09, 0x36, 0xFC,
+ 0x2C, 0x00, 0x60, 0xFF, 0x28, 0xFD, 0x2C, 0x00,
+ 0x20, 0xFE, 0x28, 0xFD, 0x2C, 0x00, 0xDF, 0xFC,
+ 0x28, 0xFD, 0x2C, 0x00, 0x9F, 0xFB, 0x28, 0xFD,
+ 0x2F, 0x00, 0x5E, 0xFA, 0x36, 0xFC, 0x2F, 0x00,
+ 0x1E, 0xF9, 0x36, 0xFC, 0x2F, 0x00, 0xDD, 0xF7,
+ 0x36, 0xFC, 0x2F, 0x00, 0x9D, 0xF6, 0x36, 0xFC,
+ 0x2C, 0x00, 0xA0, 0x00, 0x05, 0xFC, 0x2C, 0x00,
+ 0xE0, 0x01, 0x05, 0xFC, 0x2C, 0x00, 0x21, 0x03,
+ 0x05, 0xFC, 0x2C, 0x00, 0x61, 0x04, 0x05, 0xFC,
+ 0x2F, 0x00, 0xA2, 0x05, 0xB2, 0xFA, 0x2F, 0x00,
+ 0xE2, 0x06, 0xB2, 0xFA, 0x2F, 0x00, 0x23, 0x08,
+ 0xB2, 0xFA, 0x2F, 0x00, 0x63, 0x09, 0xB2, 0xFA,
+ 0x2C, 0x00, 0x60, 0xFF, 0x05, 0xFC, 0x2C, 0x00,
+ 0x20, 0xFE, 0x05, 0xFC, 0x2C, 0x00, 0xDF, 0xFC,
+ 0x05, 0xFC, 0x2C, 0x00, 0x9F, 0xFB, 0x05, 0xFC,
+ 0x2F, 0x00, 0x5E, 0xFA, 0xB2, 0xFA, 0x2F, 0x00,
+ 0x1E, 0xF9, 0xB2, 0xFA, 0x2F, 0x00, 0xDD, 0xF7,
+ 0xB2, 0xFA, 0x2F, 0x00, 0x9D, 0xF6, 0xB2, 0xFA,
+ 0x2F, 0x00, 0xA0, 0x00, 0xE1, 0xFA, 0x2F, 0x00,
+ 0xE0, 0x01, 0xE1, 0xFA, 0x2F, 0x00, 0x21, 0x03,
+ 0xE1, 0xFA, 0x2F, 0x00, 0x61, 0x04, 0xE1, 0xFA,
+ 0x30, 0x00, 0xA2, 0x05, 0x2E, 0xF9, 0x30, 0x00,
+ 0xE2, 0x06, 0x2E, 0xF9, 0x30, 0x00, 0x23, 0x08,
+ 0x2E, 0xF9, 0x30, 0x00, 0x63, 0x09, 0x2E, 0xF9,
+ 0x2F, 0x00, 0x60, 0xFF, 0xE1, 0xFA, 0x2F, 0x00,
+ 0x20, 0xFE, 0xE1, 0xFA, 0x2F, 0x00, 0xDF, 0xFC,
+ 0xE1, 0xFA, 0x2F, 0x00, 0x9F, 0xFB, 0xE1, 0xFA,
+ 0x30, 0x00, 0x5E, 0xFA, 0x2E, 0xF9, 0x30, 0x00,
+ 0x1E, 0xF9, 0x2E, 0xF9, 0x30, 0x00, 0xDD, 0xF7,
+ 0x2E, 0xF9, 0x30, 0x00, 0x9D, 0xF6, 0x2E, 0xF9,
+ 0x30, 0x00, 0xA0, 0x00, 0xBE, 0xF9, 0x30, 0x00,
+ 0xE0, 0x01, 0xBE, 0xF9, 0x30, 0x00, 0x21, 0x03,
+ 0xBE, 0xF9, 0x30, 0x00, 0x61, 0x04, 0xBE, 0xF9,
+ 0x30, 0x00, 0xA2, 0x05, 0xAA, 0xF7, 0x30, 0x00,
+ 0xE2, 0x06, 0xAA, 0xF7, 0x30, 0x00, 0x23, 0x08,
+ 0xAA, 0xF7, 0x30, 0x00, 0x63, 0x09, 0xAA, 0xF7,
+ 0x30, 0x00, 0x60, 0xFF, 0xBE, 0xF9, 0x30, 0x00,
+ 0x20, 0xFE, 0xBE, 0xF9, 0x30, 0x00, 0xDF, 0xFC,
+ 0xBE, 0xF9, 0x30, 0x00, 0x9F, 0xFB, 0xBE, 0xF9,
+ 0x30, 0x00, 0x5E, 0xFA, 0xAA, 0xF7, 0x30, 0x00,
+ 0x1E, 0xF9, 0xAA, 0xF7, 0x30, 0x00, 0xDD, 0xF7,
+ 0xAA, 0xF7, 0x30, 0x00, 0x9D, 0xF6, 0xAA, 0xF7,
+ 0x30, 0x00, 0xA0, 0x00, 0x9A, 0xF8, 0x30, 0x00,
+ 0xE0, 0x01, 0x9A, 0xF8, 0x30, 0x00, 0x21, 0x03,
+ 0x9A, 0xF8, 0x30, 0x00, 0x61, 0x04, 0x9A, 0xF8,
+ 0x30, 0x00, 0xA2, 0x05, 0x26, 0xF6, 0x30, 0x00,
+ 0xE2, 0x06, 0x26, 0xF6, 0x30, 0x00, 0x23, 0x08,
+ 0x26, 0xF6, 0x30, 0x00, 0x63, 0x09, 0x26, 0xF6,
+ 0x30, 0x00, 0x60, 0xFF, 0x9A, 0xF8, 0x30, 0x00,
+ 0x20, 0xFE, 0x9A, 0xF8, 0x30, 0x00, 0xDF, 0xFC,
+ 0x9A, 0xF8, 0x30, 0x00, 0x9F, 0xFB, 0x9A, 0xF8,
+ 0x30, 0x00, 0x5E, 0xFA, 0x26, 0xF6, 0x30, 0x00,
+ 0x1E, 0xF9, 0x26, 0xF6, 0x30, 0x00, 0xDD, 0xF7,
+ 0x26, 0xF6, 0x30, 0x00, 0x9D, 0xF6, 0x26, 0xF6,
+ 0x30, 0x00, 0xA0, 0x00, 0x77, 0xF7, 0x30, 0x00,
+ 0xE0, 0x01, 0x77, 0xF7, 0x30, 0x00, 0x21, 0x03,
+ 0x77, 0xF7, 0x30, 0x00, 0x61, 0x04, 0x77, 0xF7,
+ 0x30, 0x00, 0xA2, 0x05, 0xA2, 0xF4, 0x30, 0x00,
+ 0xE2, 0x06, 0xA2, 0xF4, 0x30, 0x00, 0x23, 0x08,
+ 0xA2, 0xF4, 0x30, 0x00, 0x63, 0x09, 0xA2, 0xF4,
+ 0x30, 0x00, 0x60, 0xFF, 0x77, 0xF7, 0x30, 0x00,
+ 0x20, 0xFE, 0x77, 0xF7, 0x30, 0x00, 0xDF, 0xFC,
+ 0x77, 0xF7, 0x30, 0x00, 0x9F, 0xFB, 0x77, 0xF7,
+ 0x30, 0x00, 0x5E, 0xFA, 0xA2, 0xF4, 0x30, 0x00,
+ 0x1E, 0xF9, 0xA2, 0xF4, 0x30, 0x00, 0xDD, 0xF7,
+ 0xA2, 0xF4, 0x30, 0x00, 0x9D, 0xF6, 0xA2, 0xF4,
+ 0x2D, 0x00, 0xB0, 0x00, 0xA0, 0x00, 0x2D, 0x00,
+ 0x10, 0x02, 0xA0, 0x00, 0x2D, 0x00, 0x71, 0x03,
+ 0xA0, 0x00, 0x2D, 0x00, 0xD1, 0x04, 0xA0, 0x00,
+ 0x2F, 0x00, 0x33, 0x06, 0xC2, 0x00, 0x2F, 0x00,
+ 0x93, 0x07, 0xC2, 0x00, 0x2F, 0x00, 0xF4, 0x08,
+ 0xC2, 0x00, 0x2F, 0x00, 0x54, 0x0A, 0xC2, 0x00,
+ 0x2D, 0x00, 0x50, 0xFF, 0xA0, 0x00, 0x2D, 0x00,
+ 0xF0, 0xFD, 0xA0, 0x00, 0x2D, 0x00, 0x8F, 0xFC,
+ 0xA0, 0x00, 0x2D, 0x00, 0x2F, 0xFB, 0xA0, 0x00,
+ 0x2F, 0x00, 0xCD, 0xF9, 0xC2, 0x00, 0x2F, 0x00,
+ 0x6D, 0xF8, 0xC2, 0x00, 0x2F, 0x00, 0x0C, 0xF7,
+ 0xC2, 0x00, 0x2F, 0x00, 0xAC, 0xF5, 0xC2, 0x00,
+ 0x2D, 0x00, 0xB0, 0x00, 0xE0, 0x01, 0x2D, 0x00,
+ 0x10, 0x02, 0xE0, 0x01, 0x2D, 0x00, 0x71, 0x03,
+ 0xE0, 0x01, 0x2D, 0x00, 0xD1, 0x04, 0xE0, 0x01,
+ 0x2F, 0x00, 0x33, 0x06, 0x46, 0x02, 0x2F, 0x00,
+ 0x93, 0x07, 0x46, 0x02, 0x2F, 0x00, 0xF4, 0x08,
+ 0x46, 0x02, 0x2F, 0x00, 0x54, 0x0A, 0x46, 0x02,
+ 0x2D, 0x00, 0x50, 0xFF, 0xE0, 0x01, 0x2D, 0x00,
+ 0xF0, 0xFD, 0xE0, 0x01, 0x2D, 0x00, 0x8F, 0xFC,
+ 0xE0, 0x01, 0x2D, 0x00, 0x2F, 0xFB, 0xE0, 0x01,
+ 0x2F, 0x00, 0xCD, 0xF9, 0x46, 0x02, 0x2F, 0x00,
+ 0x6D, 0xF8, 0x46, 0x02, 0x2F, 0x00, 0x0C, 0xF7,
+ 0x46, 0x02, 0x2F, 0x00, 0xAC, 0xF5, 0x46, 0x02,
+ 0x2D, 0x00, 0xB0, 0x00, 0x21, 0x03, 0x2D, 0x00,
+ 0x10, 0x02, 0x21, 0x03, 0x2D, 0x00, 0x71, 0x03,
+ 0x21, 0x03, 0x2D, 0x00, 0xD1, 0x04, 0x21, 0x03,
+ 0x2F, 0x00, 0x33, 0x06, 0xCA, 0x03, 0x2F, 0x00,
+ 0x93, 0x07, 0xCA, 0x03, 0x2F, 0x00, 0xF4, 0x08,
+ 0xCA, 0x03, 0x2F, 0x00, 0x54, 0x0A, 0xCA, 0x03,
+ 0x2D, 0x00, 0x50, 0xFF, 0x21, 0x03, 0x2D, 0x00,
+ 0xF0, 0xFD, 0x21, 0x03, 0x2D, 0x00, 0x8F, 0xFC,
+ 0x21, 0x03, 0x2D, 0x00, 0x2F, 0xFB, 0x21, 0x03,
+ 0x2F, 0x00, 0xCD, 0xF9, 0xCA, 0x03, 0x2F, 0x00,
+ 0x6D, 0xF8, 0xCA, 0x03, 0x2F, 0x00, 0x0C, 0xF7,
+ 0xCA, 0x03, 0x2F, 0x00, 0xAC, 0xF5, 0xCA, 0x03,
+ 0x2D, 0x00, 0xB0, 0x00, 0x61, 0x04, 0x2D, 0x00,
+ 0x10, 0x02, 0x61, 0x04, 0x2D, 0x00, 0x71, 0x03,
+ 0x61, 0x04, 0x2D, 0x00, 0xD1, 0x04, 0x61, 0x04,
+ 0x2F, 0x00, 0x33, 0x06, 0x4E, 0x05, 0x2F, 0x00,
+ 0x93, 0x07, 0x4E, 0x05, 0x2F, 0x00, 0xF4, 0x08,
+ 0x4E, 0x05, 0x2F, 0x00, 0x54, 0x0A, 0x4E, 0x05,
+ 0x2D, 0x00, 0x50, 0xFF, 0x61, 0x04, 0x2D, 0x00,
+ 0xF0, 0xFD, 0x61, 0x04, 0x2D, 0x00, 0x8F, 0xFC,
+ 0x61, 0x04, 0x2D, 0x00, 0x2F, 0xFB, 0x61, 0x04,
+ 0x2F, 0x00, 0xCD, 0xF9, 0x4E, 0x05, 0x2F, 0x00,
+ 0x6D, 0xF8, 0x4E, 0x05, 0x2F, 0x00, 0x0C, 0xF7,
+ 0x4E, 0x05, 0x2F, 0x00, 0xAC, 0xF5, 0x4E, 0x05,
+ 0x30, 0x00, 0xB0, 0x00, 0xA2, 0x05, 0x30, 0x00,
+ 0x10, 0x02, 0xA2, 0x05, 0x30, 0x00, 0x71, 0x03,
+ 0xA2, 0x05, 0x30, 0x00, 0xD1, 0x04, 0xA2, 0x05,
+ 0x30, 0x00, 0x33, 0x06, 0xD2, 0x06, 0x30, 0x00,
+ 0x93, 0x07, 0xD2, 0x06, 0x30, 0x00, 0xF4, 0x08,
+ 0xD2, 0x06, 0x30, 0x00, 0x54, 0x0A, 0xD2, 0x06,
+ 0x30, 0x00, 0x50, 0xFF, 0xA2, 0x05, 0x30, 0x00,
+ 0xF0, 0xFD, 0xA2, 0x05, 0x30, 0x00, 0x8F, 0xFC,
+ 0xA2, 0x05, 0x30, 0x00, 0x2F, 0xFB, 0xA2, 0x05,
+ 0x30, 0x00, 0xCD, 0xF9, 0xD2, 0x06, 0x30, 0x00,
+ 0x6D, 0xF8, 0xD2, 0x06, 0x30, 0x00, 0x0C, 0xF7,
+ 0xD2, 0x06, 0x30, 0x00, 0xAC, 0xF5, 0xD2, 0x06,
+ 0x30, 0x00, 0xB0, 0x00, 0xE2, 0x06, 0x30, 0x00,
+ 0x10, 0x02, 0xE2, 0x06, 0x30, 0x00, 0x71, 0x03,
+ 0xE2, 0x06, 0x30, 0x00, 0xD1, 0x04, 0xE2, 0x06,
+ 0x30, 0x00, 0x33, 0x06, 0x56, 0x08, 0x30, 0x00,
+ 0x93, 0x07, 0x56, 0x08, 0x30, 0x00, 0xF4, 0x08,
+ 0x56, 0x08, 0x30, 0x00, 0x54, 0x0A, 0x56, 0x08,
+ 0x30, 0x00, 0x50, 0xFF, 0xE2, 0x06, 0x30, 0x00,
+ 0xF0, 0xFD, 0xE2, 0x06, 0x30, 0x00, 0x8F, 0xFC,
+ 0xE2, 0x06, 0x30, 0x00, 0x2F, 0xFB, 0xE2, 0x06,
+ 0x30, 0x00, 0xCD, 0xF9, 0x56, 0x08, 0x30, 0x00,
+ 0x6D, 0xF8, 0x56, 0x08, 0x30, 0x00, 0x0C, 0xF7,
+ 0x56, 0x08, 0x30, 0x00, 0xAC, 0xF5, 0x56, 0x08,
+ 0x30, 0x00, 0xB0, 0x00, 0x23, 0x08, 0x30, 0x00,
+ 0x10, 0x02, 0x23, 0x08, 0x30, 0x00, 0x71, 0x03,
+ 0x23, 0x08, 0x30, 0x00, 0xD1, 0x04, 0x23, 0x08,
+ 0x30, 0x00, 0x33, 0x06, 0xDA, 0x09, 0x30, 0x00,
+ 0x93, 0x07, 0xDA, 0x09, 0x30, 0x00, 0xF4, 0x08,
+ 0xDA, 0x09, 0x30, 0x00, 0x54, 0x0A, 0xDA, 0x09,
+ 0x30, 0x00, 0x50, 0xFF, 0x23, 0x08, 0x30, 0x00,
+ 0xF0, 0xFD, 0x23, 0x08, 0x30, 0x00, 0x8F, 0xFC,
+ 0x23, 0x08, 0x30, 0x00, 0x2F, 0xFB, 0x23, 0x08,
+ 0x30, 0x00, 0xCD, 0xF9, 0xDA, 0x09, 0x30, 0x00,
+ 0x6D, 0xF8, 0xDA, 0x09, 0x30, 0x00, 0x0C, 0xF7,
+ 0xDA, 0x09, 0x30, 0x00, 0xAC, 0xF5, 0xDA, 0x09,
+ 0x30, 0x00, 0xB0, 0x00, 0x63, 0x09, 0x30, 0x00,
+ 0x10, 0x02, 0x63, 0x09, 0x30, 0x00, 0x71, 0x03,
+ 0x63, 0x09, 0x30, 0x00, 0xD1, 0x04, 0x63, 0x09,
+ 0x30, 0x00, 0x33, 0x06, 0x5E, 0x0B, 0x30, 0x00,
+ 0x93, 0x07, 0x5E, 0x0B, 0x30, 0x00, 0xF4, 0x08,
+ 0x5E, 0x0B, 0x30, 0x00, 0x54, 0x0A, 0x5E, 0x0B,
+ 0x30, 0x00, 0x50, 0xFF, 0x63, 0x09, 0x30, 0x00,
+ 0xF0, 0xFD, 0x63, 0x09, 0x30, 0x00, 0x8F, 0xFC,
+ 0x63, 0x09, 0x30, 0x00, 0x2F, 0xFB, 0x63, 0x09,
+ 0x30, 0x00, 0xCD, 0xF9, 0x5E, 0x0B, 0x30, 0x00,
+ 0x6D, 0xF8, 0x5E, 0x0B, 0x30, 0x00, 0x0C, 0xF7,
+ 0x5E, 0x0B, 0x30, 0x00, 0xAC, 0xF5, 0x5E, 0x0B,
+ 0x2D, 0x00, 0xB0, 0x00, 0x60, 0xFF, 0x2D, 0x00,
+ 0x10, 0x02, 0x60, 0xFF, 0x2D, 0x00, 0x71, 0x03,
+ 0x60, 0xFF, 0x2D, 0x00, 0xD1, 0x04, 0x60, 0xFF,
+ 0x2F, 0x00, 0x33, 0x06, 0x3E, 0xFF, 0x2F, 0x00,
+ 0x93, 0x07, 0x3E, 0xFF, 0x2F, 0x00, 0xF4, 0x08,
+ 0x3E, 0xFF, 0x2F, 0x00, 0x54, 0x0A, 0x3E, 0xFF,
+ 0x2D, 0x00, 0x50, 0xFF, 0x60, 0xFF, 0x2D, 0x00,
+ 0xF0, 0xFD, 0x60, 0xFF, 0x2D, 0x00, 0x8F, 0xFC,
+ 0x60, 0xFF, 0x2D, 0x00, 0x2F, 0xFB, 0x60, 0xFF,
+ 0x2F, 0x00, 0xCD, 0xF9, 0x3E, 0xFF, 0x2F, 0x00,
+ 0x6D, 0xF8, 0x3E, 0xFF, 0x2F, 0x00, 0x0C, 0xF7,
+ 0x3E, 0xFF, 0x2F, 0x00, 0xAC, 0xF5, 0x3E, 0xFF,
+ 0x2D, 0x00, 0xB0, 0x00, 0x20, 0xFE, 0x2D, 0x00,
+ 0x10, 0x02, 0x20, 0xFE, 0x2D, 0x00, 0x71, 0x03,
+ 0x20, 0xFE, 0x2D, 0x00, 0xD1, 0x04, 0x20, 0xFE,
+ 0x2F, 0x00, 0x33, 0x06, 0xBA, 0xFD, 0x2F, 0x00,
+ 0x93, 0x07, 0xBA, 0xFD, 0x2F, 0x00, 0xF4, 0x08,
+ 0xBA, 0xFD, 0x2F, 0x00, 0x54, 0x0A, 0xBA, 0xFD,
+ 0x2D, 0x00, 0x50, 0xFF, 0x20, 0xFE, 0x2D, 0x00,
+ 0xF0, 0xFD, 0x20, 0xFE, 0x2D, 0x00, 0x8F, 0xFC,
+ 0x20, 0xFE, 0x2D, 0x00, 0x2F, 0xFB, 0x20, 0xFE,
+ 0x2F, 0x00, 0xCD, 0xF9, 0xBA, 0xFD, 0x2F, 0x00,
+ 0x6D, 0xF8, 0xBA, 0xFD, 0x2F, 0x00, 0x0C, 0xF7,
+ 0xBA, 0xFD, 0x2F, 0x00, 0xAC, 0xF5, 0xBA, 0xFD,
+ 0x2D, 0x00, 0xB0, 0x00, 0xDF, 0xFC, 0x2D, 0x00,
+ 0x10, 0x02, 0xDF, 0xFC, 0x2D, 0x00, 0x71, 0x03,
+ 0xDF, 0xFC, 0x2D, 0x00, 0xD1, 0x04, 0xDF, 0xFC,
+ 0x2F, 0x00, 0x33, 0x06, 0x36, 0xFC, 0x2F, 0x00,
+ 0x93, 0x07, 0x36, 0xFC, 0x2F, 0x00, 0xF4, 0x08,
+ 0x36, 0xFC, 0x2F, 0x00, 0x54, 0x0A, 0x36, 0xFC,
+ 0x2D, 0x00, 0x50, 0xFF, 0xDF, 0xFC, 0x2D, 0x00,
+ 0xF0, 0xFD, 0xDF, 0xFC, 0x2D, 0x00, 0x8F, 0xFC,
+ 0xDF, 0xFC, 0x2D, 0x00, 0x2F, 0xFB, 0xDF, 0xFC,
+ 0x2F, 0x00, 0xCD, 0xF9, 0x36, 0xFC, 0x2F, 0x00,
+ 0x6D, 0xF8, 0x36, 0xFC, 0x2F, 0x00, 0x0C, 0xF7,
+ 0x36, 0xFC, 0x2F, 0x00, 0xAC, 0xF5, 0x36, 0xFC,
+ 0x2D, 0x00, 0xB0, 0x00, 0x9F, 0xFB, 0x2D, 0x00,
+ 0x10, 0x02, 0x9F, 0xFB, 0x2D, 0x00, 0x71, 0x03,
+ 0x9F, 0xFB, 0x2D, 0x00, 0xD1, 0x04, 0x9F, 0xFB,
+ 0x2F, 0x00, 0x33, 0x06, 0xB2, 0xFA, 0x2F, 0x00,
+ 0x93, 0x07, 0xB2, 0xFA, 0x2F, 0x00, 0xF4, 0x08,
+ 0xB2, 0xFA, 0x2F, 0x00, 0x54, 0x0A, 0xB2, 0xFA,
+ 0x2D, 0x00, 0x50, 0xFF, 0x9F, 0xFB, 0x2D, 0x00,
+ 0xF0, 0xFD, 0x9F, 0xFB, 0x2D, 0x00, 0x8F, 0xFC,
+ 0x9F, 0xFB, 0x2D, 0x00, 0x2F, 0xFB, 0x9F, 0xFB,
+ 0x2F, 0x00, 0xCD, 0xF9, 0xB2, 0xFA, 0x2F, 0x00,
+ 0x6D, 0xF8, 0xB2, 0xFA, 0x2F, 0x00, 0x0C, 0xF7,
+ 0xB2, 0xFA, 0x2F, 0x00, 0xAC, 0xF5, 0xB2, 0xFA,
+ 0x30, 0x00, 0xB0, 0x00, 0x5E, 0xFA, 0x30, 0x00,
+ 0x10, 0x02, 0x5E, 0xFA, 0x30, 0x00, 0x71, 0x03,
+ 0x5E, 0xFA, 0x30, 0x00, 0xD1, 0x04, 0x5E, 0xFA,
+ 0x30, 0x00, 0x33, 0x06, 0x2E, 0xF9, 0x30, 0x00,
+ 0x93, 0x07, 0x2E, 0xF9, 0x30, 0x00, 0xF4, 0x08,
+ 0x2E, 0xF9, 0x30, 0x00, 0x54, 0x0A, 0x2E, 0xF9,
+ 0x30, 0x00, 0x50, 0xFF, 0x5E, 0xFA, 0x30, 0x00,
+ 0xF0, 0xFD, 0x5E, 0xFA, 0x30, 0x00, 0x8F, 0xFC,
+ 0x5E, 0xFA, 0x30, 0x00, 0x2F, 0xFB, 0x5E, 0xFA,
+ 0x30, 0x00, 0xCD, 0xF9, 0x2E, 0xF9, 0x30, 0x00,
+ 0x6D, 0xF8, 0x2E, 0xF9, 0x30, 0x00, 0x0C, 0xF7,
+ 0x2E, 0xF9, 0x30, 0x00, 0xAC, 0xF5, 0x2E, 0xF9,
+ 0x30, 0x00, 0xB0, 0x00, 0x1E, 0xF9, 0x30, 0x00,
+ 0x10, 0x02, 0x1E, 0xF9, 0x30, 0x00, 0x71, 0x03,
+ 0x1E, 0xF9, 0x30, 0x00, 0xD1, 0x04, 0x1E, 0xF9,
+ 0x30, 0x00, 0x33, 0x06, 0xAA, 0xF7, 0x30, 0x00,
+ 0x93, 0x07, 0xAA, 0xF7, 0x30, 0x00, 0xF4, 0x08,
+ 0xAA, 0xF7, 0x30, 0x00, 0x54, 0x0A, 0xAA, 0xF7,
+ 0x30, 0x00, 0x50, 0xFF, 0x1E, 0xF9, 0x30, 0x00,
+ 0xF0, 0xFD, 0x1E, 0xF9, 0x30, 0x00, 0x8F, 0xFC,
+ 0x1E, 0xF9, 0x30, 0x00, 0x2F, 0xFB, 0x1E, 0xF9,
+ 0x30, 0x00, 0xCD, 0xF9, 0xAA, 0xF7, 0x30, 0x00,
+ 0x6D, 0xF8, 0xAA, 0xF7, 0x30, 0x00, 0x0C, 0xF7,
+ 0xAA, 0xF7, 0x30, 0x00, 0xAC, 0xF5, 0xAA, 0xF7,
+ 0x30, 0x00, 0xB0, 0x00, 0xDD, 0xF7, 0x30, 0x00,
+ 0x10, 0x02, 0xDD, 0xF7, 0x30, 0x00, 0x71, 0x03,
+ 0xDD, 0xF7, 0x30, 0x00, 0xD1, 0x04, 0xDD, 0xF7,
+ 0x30, 0x00, 0x33, 0x06, 0x26, 0xF6, 0x30, 0x00,
+ 0x93, 0x07, 0x26, 0xF6, 0x30, 0x00, 0xF4, 0x08,
+ 0x26, 0xF6, 0x30, 0x00, 0x54, 0x0A, 0x26, 0xF6,
+ 0x30, 0x00, 0x50, 0xFF, 0xDD, 0xF7, 0x30, 0x00,
+ 0xF0, 0xFD, 0xDD, 0xF7, 0x30, 0x00, 0x8F, 0xFC,
+ 0xDD, 0xF7, 0x30, 0x00, 0x2F, 0xFB, 0xDD, 0xF7,
+ 0x30, 0x00, 0xCD, 0xF9, 0x26, 0xF6, 0x30, 0x00,
+ 0x6D, 0xF8, 0x26, 0xF6, 0x30, 0x00, 0x0C, 0xF7,
+ 0x26, 0xF6, 0x30, 0x00, 0xAC, 0xF5, 0x26, 0xF6,
+ 0x30, 0x00, 0xB0, 0x00, 0x9D, 0xF6, 0x30, 0x00,
+ 0x10, 0x02, 0x9D, 0xF6, 0x30, 0x00, 0x71, 0x03,
+ 0x9D, 0xF6, 0x30, 0x00, 0xD1, 0x04, 0x9D, 0xF6,
+ 0x30, 0x00, 0x33, 0x06, 0xA2, 0xF4, 0x30, 0x00,
+ 0x93, 0x07, 0xA2, 0xF4, 0x30, 0x00, 0xF4, 0x08,
+ 0xA2, 0xF4, 0x30, 0x00, 0x54, 0x0A, 0xA2, 0xF4,
+ 0x30, 0x00, 0x50, 0xFF, 0x9D, 0xF6, 0x30, 0x00,
+ 0xF0, 0xFD, 0x9D, 0xF6, 0x30, 0x00, 0x8F, 0xFC,
+ 0x9D, 0xF6, 0x30, 0x00, 0x2F, 0xFB, 0x9D, 0xF6,
+ 0x30, 0x00, 0xCD, 0xF9, 0xA2, 0xF4, 0x30, 0x00,
+ 0x6D, 0xF8, 0xA2, 0xF4, 0x30, 0x00, 0x0C, 0xF7,
+ 0xA2, 0xF4, 0x30, 0x00, 0xAC, 0xF5, 0xA2, 0xF4,
+ 0x2E, 0x00, 0xC2, 0x00, 0xB0, 0x00, 0x2E, 0x00,
+ 0x46, 0x02, 0xB0, 0x00, 0x2E, 0x00, 0xCA, 0x03,
+ 0xB0, 0x00, 0x2E, 0x00, 0x4E, 0x05, 0xB0, 0x00,
+ 0x2F, 0x00, 0xD2, 0x06, 0xC2, 0x00, 0x2F, 0x00,
+ 0x56, 0x08, 0xC2, 0x00, 0x2F, 0x00, 0xDA, 0x09,
+ 0xC2, 0x00, 0x2F, 0x00, 0x5E, 0x0B, 0xC2, 0x00,
+ 0x2E, 0x00, 0x3E, 0xFF, 0xB0, 0x00, 0x2E, 0x00,
+ 0xBA, 0xFD, 0xB0, 0x00, 0x2E, 0x00, 0x36, 0xFC,
+ 0xB0, 0x00, 0x2E, 0x00, 0xB2, 0xFA, 0xB0, 0x00,
+ 0x2F, 0x00, 0x2E, 0xF9, 0xC2, 0x00, 0x2F, 0x00,
+ 0xAA, 0xF7, 0xC2, 0x00, 0x2F, 0x00, 0x26, 0xF6,
+ 0xC2, 0x00, 0x2F, 0x00, 0xA2, 0xF4, 0xC2, 0x00,
+ 0x2E, 0x00, 0xC2, 0x00, 0x10, 0x02, 0x2E, 0x00,
+ 0x46, 0x02, 0x10, 0x02, 0x2E, 0x00, 0xCA, 0x03,
+ 0x10, 0x02, 0x2E, 0x00, 0x4E, 0x05, 0x10, 0x02,
+ 0x2F, 0x00, 0xD2, 0x06, 0x46, 0x02, 0x2F, 0x00,
+ 0x56, 0x08, 0x46, 0x02, 0x2F, 0x00, 0xDA, 0x09,
+ 0x46, 0x02, 0x2F, 0x00, 0x5E, 0x0B, 0x46, 0x02,
+ 0x2E, 0x00, 0x3E, 0xFF, 0x10, 0x02, 0x2E, 0x00,
+ 0xBA, 0xFD, 0x10, 0x02, 0x2E, 0x00, 0x36, 0xFC,
+ 0x10, 0x02, 0x2E, 0x00, 0xB2, 0xFA, 0x10, 0x02,
+ 0x2F, 0x00, 0x2E, 0xF9, 0x46, 0x02, 0x2F, 0x00,
+ 0xAA, 0xF7, 0x46, 0x02, 0x2F, 0x00, 0x26, 0xF6,
+ 0x46, 0x02, 0x2F, 0x00, 0xA2, 0xF4, 0x46, 0x02,
+ 0x2E, 0x00, 0xC2, 0x00, 0x71, 0x03, 0x2E, 0x00,
+ 0x46, 0x02, 0x71, 0x03, 0x2E, 0x00, 0xCA, 0x03,
+ 0x71, 0x03, 0x2E, 0x00, 0x4E, 0x05, 0x71, 0x03,
+ 0x2F, 0x00, 0xD2, 0x06, 0xCA, 0x03, 0x2F, 0x00,
+ 0x56, 0x08, 0xCA, 0x03, 0x2F, 0x00, 0xDA, 0x09,
+ 0xCA, 0x03, 0x2F, 0x00, 0x5E, 0x0B, 0xCA, 0x03,
+ 0x2E, 0x00, 0x3E, 0xFF, 0x71, 0x03, 0x2E, 0x00,
+ 0xBA, 0xFD, 0x71, 0x03, 0x2E, 0x00, 0x36, 0xFC,
+ 0x71, 0x03, 0x2E, 0x00, 0xB2, 0xFA, 0x71, 0x03,
+ 0x2F, 0x00, 0x2E, 0xF9, 0xCA, 0x03, 0x2F, 0x00,
+ 0xAA, 0xF7, 0xCA, 0x03, 0x2F, 0x00, 0x26, 0xF6,
+ 0xCA, 0x03, 0x2F, 0x00, 0xA2, 0xF4, 0xCA, 0x03,
+ 0x2E, 0x00, 0xC2, 0x00, 0xD1, 0x04, 0x2E, 0x00,
+ 0x46, 0x02, 0xD1, 0x04, 0x2E, 0x00, 0xCA, 0x03,
+ 0xD1, 0x04, 0x2E, 0x00, 0x4E, 0x05, 0xD1, 0x04,
+ 0x2F, 0x00, 0xD2, 0x06, 0x4E, 0x05, 0x2F, 0x00,
+ 0x56, 0x08, 0x4E, 0x05, 0x2F, 0x00, 0xDA, 0x09,
+ 0x4E, 0x05, 0x2F, 0x00, 0x5E, 0x0B, 0x4E, 0x05,
+ 0x2E, 0x00, 0x3E, 0xFF, 0xD1, 0x04, 0x2E, 0x00,
+ 0xBA, 0xFD, 0xD1, 0x04, 0x2E, 0x00, 0x36, 0xFC,
+ 0xD1, 0x04, 0x2E, 0x00, 0xB2, 0xFA, 0xD1, 0x04,
+ 0x2F, 0x00, 0x2E, 0xF9, 0x4E, 0x05, 0x2F, 0x00,
+ 0xAA, 0xF7, 0x4E, 0x05, 0x2F, 0x00, 0x26, 0xF6,
+ 0x4E, 0x05, 0x2F, 0x00, 0xA2, 0xF4, 0x4E, 0x05,
+ 0x30, 0x00, 0xC2, 0x00, 0x33, 0x06, 0x30, 0x00,
+ 0x46, 0x02, 0x33, 0x06, 0x30, 0x00, 0xCA, 0x03,
+ 0x33, 0x06, 0x30, 0x00, 0x4E, 0x05, 0x33, 0x06,
+ 0x30, 0x00, 0xD2, 0x06, 0xD2, 0x06, 0x30, 0x00,
+ 0x56, 0x08, 0xD2, 0x06, 0x30, 0x00, 0xDA, 0x09,
+ 0xD2, 0x06, 0x30, 0x00, 0x5E, 0x0B, 0xD2, 0x06,
+ 0x30, 0x00, 0x3E, 0xFF, 0x33, 0x06, 0x30, 0x00,
+ 0xBA, 0xFD, 0x33, 0x06, 0x30, 0x00, 0x36, 0xFC,
+ 0x33, 0x06, 0x30, 0x00, 0xB2, 0xFA, 0x33, 0x06,
+ 0x30, 0x00, 0x2E, 0xF9, 0xD2, 0x06, 0x30, 0x00,
+ 0xAA, 0xF7, 0xD2, 0x06, 0x30, 0x00, 0x26, 0xF6,
+ 0xD2, 0x06, 0x30, 0x00, 0xA2, 0xF4, 0xD2, 0x06,
+ 0x30, 0x00, 0xC2, 0x00, 0x93, 0x07, 0x30, 0x00,
+ 0x46, 0x02, 0x93, 0x07, 0x30, 0x00, 0xCA, 0x03,
+ 0x93, 0x07, 0x30, 0x00, 0x4E, 0x05, 0x93, 0x07,
+ 0x30, 0x00, 0xD2, 0x06, 0x56, 0x08, 0x30, 0x00,
+ 0x56, 0x08, 0x56, 0x08, 0x30, 0x00, 0xDA, 0x09,
+ 0x56, 0x08, 0x30, 0x00, 0x5E, 0x0B, 0x56, 0x08,
+ 0x30, 0x00, 0x3E, 0xFF, 0x93, 0x07, 0x30, 0x00,
+ 0xBA, 0xFD, 0x93, 0x07, 0x30, 0x00, 0x36, 0xFC,
+ 0x93, 0x07, 0x30, 0x00, 0xB2, 0xFA, 0x93, 0x07,
+ 0x30, 0x00, 0x2E, 0xF9, 0x56, 0x08, 0x30, 0x00,
+ 0xAA, 0xF7, 0x56, 0x08, 0x30, 0x00, 0x26, 0xF6,
+ 0x56, 0x08, 0x30, 0x00, 0xA2, 0xF4, 0x56, 0x08,
+ 0x30, 0x00, 0xC2, 0x00, 0xF4, 0x08, 0x30, 0x00,
+ 0x46, 0x02, 0xF4, 0x08, 0x30, 0x00, 0xCA, 0x03,
+ 0xF4, 0x08, 0x30, 0x00, 0x4E, 0x05, 0xF4, 0x08,
+ 0x30, 0x00, 0xD2, 0x06, 0xDA, 0x09, 0x30, 0x00,
+ 0x56, 0x08, 0xDA, 0x09, 0x30, 0x00, 0xDA, 0x09,
+ 0xDA, 0x09, 0x30, 0x00, 0x5E, 0x0B, 0xDA, 0x09,
+ 0x30, 0x00, 0x3E, 0xFF, 0xF4, 0x08, 0x30, 0x00,
+ 0xBA, 0xFD, 0xF4, 0x08, 0x30, 0x00, 0x36, 0xFC,
+ 0xF4, 0x08, 0x30, 0x00, 0xB2, 0xFA, 0xF4, 0x08,
+ 0x30, 0x00, 0x2E, 0xF9, 0xDA, 0x09, 0x30, 0x00,
+ 0xAA, 0xF7, 0xDA, 0x09, 0x30, 0x00, 0x26, 0xF6,
+ 0xDA, 0x09, 0x30, 0x00, 0xA2, 0xF4, 0xDA, 0x09,
+ 0x30, 0x00, 0xC2, 0x00, 0x54, 0x0A, 0x30, 0x00,
+ 0x46, 0x02, 0x54, 0x0A, 0x30, 0x00, 0xCA, 0x03,
+ 0x54, 0x0A, 0x30, 0x00, 0x4E, 0x05, 0x54, 0x0A,
+ 0x30, 0x00, 0xD2, 0x06, 0x5E, 0x0B, 0x30, 0x00,
+ 0x56, 0x08, 0x5E, 0x0B, 0x30, 0x00, 0xDA, 0x09,
+ 0x5E, 0x0B, 0x30, 0x00, 0x5E, 0x0B, 0x5E, 0x0B,
+ 0x30, 0x00, 0x3E, 0xFF, 0x54, 0x0A, 0x30, 0x00,
+ 0xBA, 0xFD, 0x54, 0x0A, 0x30, 0x00, 0x36, 0xFC,
+ 0x54, 0x0A, 0x30, 0x00, 0xB2, 0xFA, 0x54, 0x0A,
+ 0x30, 0x00, 0x2E, 0xF9, 0x5E, 0x0B, 0x30, 0x00,
+ 0xAA, 0xF7, 0x5E, 0x0B, 0x30, 0x00, 0x26, 0xF6,
+ 0x5E, 0x0B, 0x30, 0x00, 0xA2, 0xF4, 0x5E, 0x0B,
+ 0x2E, 0x00, 0xC2, 0x00, 0x50, 0xFF, 0x2E, 0x00,
+ 0x46, 0x02, 0x50, 0xFF, 0x2E, 0x00, 0xCA, 0x03,
+ 0x50, 0xFF, 0x2E, 0x00, 0x4E, 0x05, 0x50, 0xFF,
+ 0x2F, 0x00, 0xD2, 0x06, 0x3E, 0xFF, 0x2F, 0x00,
+ 0x56, 0x08, 0x3E, 0xFF, 0x2F, 0x00, 0xDA, 0x09,
+ 0x3E, 0xFF, 0x2F, 0x00, 0x5E, 0x0B, 0x3E, 0xFF,
+ 0x2E, 0x00, 0x3E, 0xFF, 0x50, 0xFF, 0x2E, 0x00,
+ 0xBA, 0xFD, 0x50, 0xFF, 0x2E, 0x00, 0x36, 0xFC,
+ 0x50, 0xFF, 0x2E, 0x00, 0xB2, 0xFA, 0x50, 0xFF,
+ 0x2F, 0x00, 0x2E, 0xF9, 0x3E, 0xFF, 0x2F, 0x00,
+ 0xAA, 0xF7, 0x3E, 0xFF, 0x2F, 0x00, 0x26, 0xF6,
+ 0x3E, 0xFF, 0x2F, 0x00, 0xA2, 0xF4, 0x3E, 0xFF,
+ 0x2E, 0x00, 0xC2, 0x00, 0xF0, 0xFD, 0x2E, 0x00,
+ 0x46, 0x02, 0xF0, 0xFD, 0x2E, 0x00, 0xCA, 0x03,
+ 0xF0, 0xFD, 0x2E, 0x00, 0x4E, 0x05, 0xF0, 0xFD,
+ 0x2F, 0x00, 0xD2, 0x06, 0xBA, 0xFD, 0x2F, 0x00,
+ 0x56, 0x08, 0xBA, 0xFD, 0x2F, 0x00, 0xDA, 0x09,
+ 0xBA, 0xFD, 0x2F, 0x00, 0x5E, 0x0B, 0xBA, 0xFD,
+ 0x2E, 0x00, 0x3E, 0xFF, 0xF0, 0xFD, 0x2E, 0x00,
+ 0xBA, 0xFD, 0xF0, 0xFD, 0x2E, 0x00, 0x36, 0xFC,
+ 0xF0, 0xFD, 0x2E, 0x00, 0xB2, 0xFA, 0xF0, 0xFD,
+ 0x2F, 0x00, 0x2E, 0xF9, 0xBA, 0xFD, 0x2F, 0x00,
+ 0xAA, 0xF7, 0xBA, 0xFD, 0x2F, 0x00, 0x26, 0xF6,
+ 0xBA, 0xFD, 0x2F, 0x00, 0xA2, 0xF4, 0xBA, 0xFD,
+ 0x2E, 0x00, 0xC2, 0x00, 0x8F, 0xFC, 0x2E, 0x00,
+ 0x46, 0x02, 0x8F, 0xFC, 0x2E, 0x00, 0xCA, 0x03,
+ 0x8F, 0xFC, 0x2E, 0x00, 0x4E, 0x05, 0x8F, 0xFC,
+ 0x2F, 0x00, 0xD2, 0x06, 0x36, 0xFC, 0x2F, 0x00,
+ 0x56, 0x08, 0x36, 0xFC, 0x2F, 0x00, 0xDA, 0x09,
+ 0x36, 0xFC, 0x2F, 0x00, 0x5E, 0x0B, 0x36, 0xFC,
+ 0x2E, 0x00, 0x3E, 0xFF, 0x8F, 0xFC, 0x2E, 0x00,
+ 0xBA, 0xFD, 0x8F, 0xFC, 0x2E, 0x00, 0x36, 0xFC,
+ 0x8F, 0xFC, 0x2E, 0x00, 0xB2, 0xFA, 0x8F, 0xFC,
+ 0x2F, 0x00, 0x2E, 0xF9, 0x36, 0xFC, 0x2F, 0x00,
+ 0xAA, 0xF7, 0x36, 0xFC, 0x2F, 0x00, 0x26, 0xF6,
+ 0x36, 0xFC, 0x2F, 0x00, 0xA2, 0xF4, 0x36, 0xFC,
+ 0x2E, 0x00, 0xC2, 0x00, 0x2F, 0xFB, 0x2E, 0x00,
+ 0x46, 0x02, 0x2F, 0xFB, 0x2E, 0x00, 0xCA, 0x03,
+ 0x2F, 0xFB, 0x2E, 0x00, 0x4E, 0x05, 0x2F, 0xFB,
+ 0x2F, 0x00, 0xD2, 0x06, 0xB2, 0xFA, 0x2F, 0x00,
+ 0x56, 0x08, 0xB2, 0xFA, 0x2F, 0x00, 0xDA, 0x09,
+ 0xB2, 0xFA, 0x2F, 0x00, 0x5E, 0x0B, 0xB2, 0xFA,
+ 0x2E, 0x00, 0x3E, 0xFF, 0x2F, 0xFB, 0x2E, 0x00,
+ 0xBA, 0xFD, 0x2F, 0xFB, 0x2E, 0x00, 0x36, 0xFC,
+ 0x2F, 0xFB, 0x2E, 0x00, 0xB2, 0xFA, 0x2F, 0xFB,
+ 0x2F, 0x00, 0x2E, 0xF9, 0xB2, 0xFA, 0x2F, 0x00,
+ 0xAA, 0xF7, 0xB2, 0xFA, 0x2F, 0x00, 0x26, 0xF6,
+ 0xB2, 0xFA, 0x2F, 0x00, 0xA2, 0xF4, 0xB2, 0xFA,
+ 0x30, 0x00, 0xC2, 0x00, 0xCD, 0xF9, 0x30, 0x00,
+ 0x46, 0x02, 0xCD, 0xF9, 0x30, 0x00, 0xCA, 0x03,
+ 0xCD, 0xF9, 0x30, 0x00, 0x4E, 0x05, 0xCD, 0xF9,
+ 0x30, 0x00, 0xD2, 0x06, 0x2E, 0xF9, 0x30, 0x00,
+ 0x56, 0x08, 0x2E, 0xF9, 0x30, 0x00, 0xDA, 0x09,
+ 0x2E, 0xF9, 0x30, 0x00, 0x5E, 0x0B, 0x2E, 0xF9,
+ 0x30, 0x00, 0x3E, 0xFF, 0xCD, 0xF9, 0x30, 0x00,
+ 0xBA, 0xFD, 0xCD, 0xF9, 0x30, 0x00, 0x36, 0xFC,
+ 0xCD, 0xF9, 0x30, 0x00, 0xB2, 0xFA, 0xCD, 0xF9,
+ 0x30, 0x00, 0x2E, 0xF9, 0x2E, 0xF9, 0x30, 0x00,
+ 0xAA, 0xF7, 0x2E, 0xF9, 0x30, 0x00, 0x26, 0xF6,
+ 0x2E, 0xF9, 0x30, 0x00, 0xA2, 0xF4, 0x2E, 0xF9,
+ 0x30, 0x00, 0xC2, 0x00, 0x6D, 0xF8, 0x30, 0x00,
+ 0x46, 0x02, 0x6D, 0xF8, 0x30, 0x00, 0xCA, 0x03,
+ 0x6D, 0xF8, 0x30, 0x00, 0x4E, 0x05, 0x6D, 0xF8,
+ 0x30, 0x00, 0xD2, 0x06, 0xAA, 0xF7, 0x30, 0x00,
+ 0x56, 0x08, 0xAA, 0xF7, 0x30, 0x00, 0xDA, 0x09,
+ 0xAA, 0xF7, 0x30, 0x00, 0x5E, 0x0B, 0xAA, 0xF7,
+ 0x30, 0x00, 0x3E, 0xFF, 0x6D, 0xF8, 0x30, 0x00,
+ 0xBA, 0xFD, 0x6D, 0xF8, 0x30, 0x00, 0x36, 0xFC,
+ 0x6D, 0xF8, 0x30, 0x00, 0xB2, 0xFA, 0x6D, 0xF8,
+ 0x30, 0x00, 0x2E, 0xF9, 0xAA, 0xF7, 0x30, 0x00,
+ 0xAA, 0xF7, 0xAA, 0xF7, 0x30, 0x00, 0x26, 0xF6,
+ 0xAA, 0xF7, 0x30, 0x00, 0xA2, 0xF4, 0xAA, 0xF7,
+ 0x30, 0x00, 0xC2, 0x00, 0x0C, 0xF7, 0x30, 0x00,
+ 0x46, 0x02, 0x0C, 0xF7, 0x30, 0x00, 0xCA, 0x03,
+ 0x0C, 0xF7, 0x30, 0x00, 0x4E, 0x05, 0x0C, 0xF7,
+ 0x30, 0x00, 0xD2, 0x06, 0x26, 0xF6, 0x30, 0x00,
+ 0x56, 0x08, 0x26, 0xF6, 0x30, 0x00, 0xDA, 0x09,
+ 0x26, 0xF6, 0x30, 0x00, 0x5E, 0x0B, 0x26, 0xF6,
+ 0x30, 0x00, 0x3E, 0xFF, 0x0C, 0xF7, 0x30, 0x00,
+ 0xBA, 0xFD, 0x0C, 0xF7, 0x30, 0x00, 0x36, 0xFC,
+ 0x0C, 0xF7, 0x30, 0x00, 0xB2, 0xFA, 0x0C, 0xF7,
+ 0x30, 0x00, 0x2E, 0xF9, 0x26, 0xF6, 0x30, 0x00,
+ 0xAA, 0xF7, 0x26, 0xF6, 0x30, 0x00, 0x26, 0xF6,
+ 0x26, 0xF6, 0x30, 0x00, 0xA2, 0xF4, 0x26, 0xF6,
+ 0x30, 0x00, 0xC2, 0x00, 0xAC, 0xF5, 0x30, 0x00,
+ 0x46, 0x02, 0xAC, 0xF5, 0x30, 0x00, 0xCA, 0x03,
+ 0xAC, 0xF5, 0x30, 0x00, 0x4E, 0x05, 0xAC, 0xF5,
+ 0x30, 0x00, 0xD2, 0x06, 0xA2, 0xF4, 0x30, 0x00,
+ 0x56, 0x08, 0xA2, 0xF4, 0x30, 0x00, 0xDA, 0x09,
+ 0xA2, 0xF4, 0x30, 0x00, 0x5E, 0x0B, 0xA2, 0xF4,
+ 0x30, 0x00, 0x3E, 0xFF, 0xAC, 0xF5, 0x30, 0x00,
+ 0xBA, 0xFD, 0xAC, 0xF5, 0x30, 0x00, 0x36, 0xFC,
+ 0xAC, 0xF5, 0x30, 0x00, 0xB2, 0xFA, 0xAC, 0xF5,
+ 0x30, 0x00, 0x2E, 0xF9, 0xA2, 0xF4, 0x30, 0x00,
+ 0xAA, 0xF7, 0xA2, 0xF4, 0x30, 0x00, 0x26, 0xF6,
+ 0xA2, 0xF4, 0x30, 0x00, 0xA2, 0xF4, 0xA2, 0xF4,
+ 0x00, 0x00
+};
+
+static const ByteProvider k1TownsSFXwdTableFMTownsProvider = { ARRAYSIZE(k1TownsSFXwdTableFMTowns), k1TownsSFXwdTableFMTowns };
+
+static const byte k1TownsSFXbtTableFMTowns[256] = {
+ 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+ 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F,
+ 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
+ 0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, 0x9F,
+ 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7,
+ 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF,
+ 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7,
+ 0xB8, 0xB9, 0xBA, 0xBB, 0xBC, 0xBD, 0xBE, 0xBF,
+ 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7,
+ 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF,
+ 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7,
+ 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF,
+ 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7,
+ 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF,
+ 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7,
+ 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFE,
+ 0x7F, 0x7F, 0x7E, 0x7D, 0x7C, 0x7B, 0x7A, 0x79,
+ 0x78, 0x77, 0x76, 0x75, 0x74, 0x73, 0x72, 0x71,
+ 0x70, 0x6F, 0x6E, 0x6D, 0x6C, 0x6B, 0x6A, 0x69,
+ 0x68, 0x67, 0x66, 0x65, 0x64, 0x63, 0x62, 0x61,
+ 0x60, 0x5F, 0x5E, 0x5D, 0x5C, 0x5B, 0x5A, 0x59,
+ 0x58, 0x57, 0x56, 0x55, 0x54, 0x53, 0x52, 0x51,
+ 0x50, 0x4F, 0x4E, 0x4D, 0x4C, 0x4B, 0x4A, 0x49,
+ 0x48, 0x47, 0x46, 0x45, 0x44, 0x43, 0x42, 0x41,
+ 0x40, 0x3F, 0x3E, 0x3D, 0x3C, 0x3B, 0x3A, 0x39,
+ 0x38, 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31,
+ 0x30, 0x2F, 0x2E, 0x2D, 0x2C, 0x2B, 0x2A, 0x29,
+ 0x28, 0x27, 0x26, 0x25, 0x24, 0x23, 0x22, 0x21,
+ 0x20, 0x1F, 0x1E, 0x1D, 0x1C, 0x1B, 0x1A, 0x19,
+ 0x18, 0x17, 0x16, 0x15, 0x14, 0x13, 0x12, 0x11,
+ 0x10, 0x0F, 0x0E, 0x0D, 0x0C, 0x0B, 0x0A, 0x09,
+ 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01
+};
+
+static const ByteProvider k1TownsSFXbtTableFMTownsProvider = { ARRAYSIZE(k1TownsSFXbtTableFMTowns), k1TownsSFXbtTableFMTowns };
+
+static const byte k1TownsCDATableFMTowns[708] = {
+ 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x54, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
+ 0x70, 0x5E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x90, 0x6D, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
+ 0xC0, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x75, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x80, 0x78, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x89, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x80, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xD0, 0x91, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
+ 0x80, 0xA8, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x05, 0x00, 0x00, 0x00, 0x50, 0xAF, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xA0, 0xB1, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x70, 0xB8, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xF0, 0xBC, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xD0, 0xC5, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
+ 0xE0, 0xD3, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x08, 0x00, 0x00, 0x00, 0xB0, 0xE7, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
+ 0xC0, 0xED, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xEE, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00,
+ 0x40, 0x05, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x0A, 0x00, 0x00, 0x00, 0x80, 0x0D, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x30, 0x0E, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x0F, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x10, 0x13, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x20, 0x1A, 0x01, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x80, 0x23, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x40, 0x25, 0x01, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x30, 0x27, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x90, 0x2A, 0x01, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00,
+ 0xD0, 0x34, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x70, 0x37, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x10, 0x47, 0x01, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00,
+ 0xF0, 0x5D, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x0D, 0x00, 0x00, 0x00, 0x30, 0x60, 0x01, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00,
+ 0x30, 0x70, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x50, 0x76, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xD0, 0x34, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x78, 0x01, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x00, 0x82, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x20, 0x83, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xA0, 0x84, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x8B, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x40, 0x90, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x13, 0x00, 0x00, 0x00, 0x50, 0x9B, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
+ 0x50, 0x76, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x30, 0xA7, 0x01, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x23, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x10, 0xB8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x50, 0xBA, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00,
+ 0x90, 0xC1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x10, 0x00, 0x00, 0x00, 0x50, 0xCA, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00,
+ 0x00, 0xD1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x12, 0x00, 0x00, 0x00
+};
+
+static const ByteProvider k1TownsCDATableFMTownsProvider = { ARRAYSIZE(k1TownsCDATableFMTowns), k1TownsCDATableFMTowns };
+
+static const char *const k1AudioTracksFMTowns[6] = {
+ "TW_INTRO.SFX",
+ "TW_SCEN1.SFX",
+ "TW_SCEN2.SFX",
+ "TW_SCEN3.SFX",
+ "TW_SCEN4.SFX",
+ "TW_SCEN5.SFX"
+};
+
+static const StringListProvider k1AudioTracksFMTownsProvider = { ARRAYSIZE(k1AudioTracksFMTowns), k1AudioTracksFMTowns };
+
diff --git a/devtools/create_kyradat/resources/lok_fmtowns_english.h b/devtools/create_kyradat/resources/lok_fmtowns_english.h
new file mode 100644
index 0000000000..f13a9d981d
--- /dev/null
+++ b/devtools/create_kyradat/resources/lok_fmtowns_english.h
@@ -0,0 +1,527 @@
+static const char *const k1IntroStringsFMTownsEnglish[50] = {
+ "This is a text test - 1",
+ "This is a text test - 2",
+ "Greetings, Kallak...",
+ "...Powerful leader of the Royal Mystics!",
+ "Did I frighten you?",
+ "Malcolm!",
+ "I heard yesterday of your escape.",
+ "And have expected you before now.",
+ "Why would I rush?",
+ "I rule this land!",
+ "Your puny curse restrains me naught.",
+ "So, slay me now!",
+ "I have little magic left.",
+ "I mean to harm you, have no doubt...",
+ "...Now you are stone...",
+ "...Yet I leave your eyes.",
+ "I shed no tears for Kyrandia...",
+ "...But cannot deny you yours.",
+ "Malcolm the Jester has broken free!",
+ "He now controls the Kyragem...",
+ "...source of all magic in Kyrandia!",
+ "",
+ "How dare you trip ME!",
+ "But no, something special for you...",
+ "A humorous hex!",
+ "But I shall give fair warning.",
+ "Don't jump on THAT tree!",
+ "Don't climb up THAT tree little squirrel!",
+ "Boo!",
+ "Tis funnier that way...",
+ "...Is it not?",
+ "Ha ha ha...",
+ "Aren't fingers wonderful?",
+ "It's great to be alive!",
+ "Brandon!",
+ "Grandfather! We did it!",
+ "No! YOU did it!",
+ "Long live King Brandon!",
+ "Long live the Royal Mystics!",
+ "Now, let's go put Kyrandia back together!",
+ "Good idea!",
+ "As my first Royal Proclamation...",
+ "I name sandals as the official footwear of Kyrandia!",
+ "Well done, Brandon!",
+ "The Land no longer weeps...",
+ "And your friends have been restored!",
+ "Dear Brynn...",
+ "Malcolm has broken free!",
+ "Soon he will come for me.",
+ "Please help Brandon..."
+};
+
+static const StringListProvider k1IntroStringsFMTownsEnglishProvider = { ARRAYSIZE(k1IntroStringsFMTownsEnglish), k1IntroStringsFMTownsEnglish };
+
+static const char *const k1ItemNamesFMTownsEnglish[107] = {
+ "Garnet",
+ "Amethyst",
+ "Aquamarine",
+ "Diamond",
+ "Emerald",
+ "Pearl",
+ "Ruby",
+ "Peridot",
+ "Sapphire",
+ "Opal",
+ "Topaz",
+ "Onyx",
+ "Sunstone",
+ "Moonstone",
+ "Rainbowstone",
+ "Lodestone",
+ "Rose",
+ "Tulip",
+ "Orchid",
+ "Silver Rose",
+ "Silver Statuette",
+ "Silver Coin",
+ "Gold Coin",
+ "Gold Ring",
+ "Royal Chalice",
+ "Pinecone",
+ "Acorn",
+ "Walnut",
+ "Everglowing Fireberries",
+ "Fireberries",
+ "Fireberries",
+ "Fireberries",
+ "Fireberries",
+ "Fireberries",
+ "Fish",
+ "Fish Bone",
+ "Mutton Leg",
+ "Bone",
+ "Apple",
+ "Apple Core",
+ "Blueberries",
+ "Mushroom",
+ "Note",
+ "Marble",
+ "Saw",
+ "Ankh",
+ "Feather",
+ "Egg",
+ "Leaf",
+ "Shamrock",
+ "Fallen Star",
+ "Crystal Ball",
+ "Teardrop",
+ "Mirror",
+ "Ice Shard",
+ "Flute",
+ "Hourglass",
+ "Iron Key",
+ "Jade Key",
+ "Obsidion Key",
+ "Red Potion",
+ "Red Potion",
+ "Blue Potion",
+ "Blue Potion",
+ "Yellow Potion",
+ "Yellow Potion",
+ "Green Potion",
+ "Orange Potion",
+ "Purple Potion",
+ "Potion of Rainbows",
+ "Fresh Water",
+ "Fresh Water",
+ "Salt Water",
+ "Salt Water",
+ "Mineral Water",
+ "Mineral Water",
+ "Magical Water",
+ "Magical Water",
+ "Empty Flask",
+ "Empty Flask",
+ "Scroll",
+ "Scroll",
+ "Scroll",
+ "Scroll",
+ "Scroll",
+ "Scroll",
+ "Scroll",
+ "Scroll",
+ "Scroll",
+ "Scroll",
+ "Parchment scrap",
+ "Parchment scrap",
+ "Parchment scrap",
+ "Parchment scrap",
+ "Parchment scrap",
+ "Red Magestone",
+ "Orange Magestone",
+ "Yellow Magestone",
+ "Green Magestone",
+ "Blue-Green Magestone",
+ "Blue Magestone",
+ "Purple Magestone",
+ "Heavy rock",
+ "Royal Crown",
+ "Royal Sceptre",
+ "Gold key",
+ "Unknown item"
+};
+
+static const StringListProvider k1ItemNamesFMTownsEnglishProvider = { ARRAYSIZE(k1ItemNamesFMTownsEnglish), k1ItemNamesFMTownsEnglish };
+
+static const char *const k1TakenStringsFMTownsEnglish[2] = {
+ " taken.",
+ " taken."
+};
+
+static const StringListProvider k1TakenStringsFMTownsEnglishProvider = { ARRAYSIZE(k1TakenStringsFMTownsEnglish), k1TakenStringsFMTownsEnglish };
+
+static const char *const k1PlacedStringsFMTownsEnglish[1] = {
+ " placed."
+};
+
+static const StringListProvider k1PlacedStringsFMTownsEnglishProvider = { ARRAYSIZE(k1PlacedStringsFMTownsEnglish), k1PlacedStringsFMTownsEnglish };
+
+static const char *const k1DroppedStringsFMTownsEnglish[1] = {
+ " dropped."
+};
+
+static const StringListProvider k1DroppedStringsFMTownsEnglishProvider = { ARRAYSIZE(k1DroppedStringsFMTownsEnglish), k1DroppedStringsFMTownsEnglish };
+
+static const char *const k1NoDropStringsFMTownsEnglish[2] = {
+ "You can't drop any more items in this scene.",
+ "You can't put that there."
+};
+
+static const StringListProvider k1NoDropStringsFMTownsEnglishProvider = { ARRAYSIZE(k1NoDropStringsFMTownsEnglish), k1NoDropStringsFMTownsEnglish };
+
+static const char *const k1PutDownStringFMTownsEnglish[1] = {
+ "Maybe I'd better put this down first."
+};
+
+static const StringListProvider k1PutDownStringFMTownsEnglishProvider = { ARRAYSIZE(k1PutDownStringFMTownsEnglish), k1PutDownStringFMTownsEnglish };
+
+static const char *const k1WaitAmuletStringFMTownsEnglish[1] = {
+ "I guess I'll have to wait for my Amulet to regain its power."
+};
+
+static const StringListProvider k1WaitAmuletStringFMTownsEnglishProvider = { ARRAYSIZE(k1WaitAmuletStringFMTownsEnglish), k1WaitAmuletStringFMTownsEnglish };
+
+static const char *const k1BlackJewelStringFMTownsEnglish[1] = {
+ "It's a jewel, but why is it black?"
+};
+
+static const StringListProvider k1BlackJewelStringFMTownsEnglishProvider = { ARRAYSIZE(k1BlackJewelStringFMTownsEnglish), k1BlackJewelStringFMTownsEnglish };
+
+static const char *const k1HealingTipStringFMTownsEnglish[1] = {
+ "Gee, this could come in handy if I get hurt."
+};
+
+static const StringListProvider k1HealingTipStringFMTownsEnglishProvider = { ARRAYSIZE(k1HealingTipStringFMTownsEnglish), k1HealingTipStringFMTownsEnglish };
+
+static const char *const k1PoisonGoneStringFMTownsEnglish[2] = {
+ "Amazing!",
+ "The effects of the poison are gone!"
+};
+
+static const StringListProvider k1PoisonGoneStringFMTownsEnglishProvider = { ARRAYSIZE(k1PoisonGoneStringFMTownsEnglish), k1PoisonGoneStringFMTownsEnglish };
+
+static const char *const k1ThePoisonStringsFMTownsEnglish[4] = {
+ "The poison...",
+ "I can't breathe...",
+ "I don't feel so good...",
+ "That snake must\rbe poisonous!"
+};
+
+static const StringListProvider k1ThePoisonStringsFMTownsEnglishProvider = { ARRAYSIZE(k1ThePoisonStringsFMTownsEnglish), k1ThePoisonStringsFMTownsEnglish };
+
+static const char *const k1FluteStringsFMTownsEnglish[2] = {
+ "Not very impressive sounding.",
+ "That last note sure was high!"
+};
+
+static const StringListProvider k1FluteStringsFMTownsEnglishProvider = { ARRAYSIZE(k1FluteStringsFMTownsEnglish), k1FluteStringsFMTownsEnglish };
+
+static const char *const k1WispJewelStringsFMTownsEnglish[3] = {
+ "I'm not really feeling up to it right now.",
+ "I probably should put down my ",
+ ", first."
+};
+
+static const StringListProvider k1WispJewelStringsFMTownsEnglishProvider = { ARRAYSIZE(k1WispJewelStringsFMTownsEnglish), k1WispJewelStringsFMTownsEnglish };
+
+static const char *const k1MagicJewelStringsFMTownsEnglish[1] = {
+ "That felt strange."
+};
+
+static const StringListProvider k1MagicJewelStringsFMTownsEnglishProvider = { ARRAYSIZE(k1MagicJewelStringsFMTownsEnglish), k1MagicJewelStringsFMTownsEnglish };
+
+static const char *const k1FlaskFullStringFMTownsEnglish[1] = {
+ "This flask is already full."
+};
+
+static const StringListProvider k1FlaskFullStringFMTownsEnglishProvider = { ARRAYSIZE(k1FlaskFullStringFMTownsEnglish), k1FlaskFullStringFMTownsEnglish };
+
+static const char *const k1FullFlaskStringFMTownsEnglish[4] = {
+ "The flask is now filled\rwith fresh, sparkling water.",
+ "The flask is now filled\rwith salt water.",
+ "The flask is now filled\rwith mineral water.",
+ "Magic water."
+};
+
+static const StringListProvider k1FullFlaskStringFMTownsEnglishProvider = { ARRAYSIZE(k1FullFlaskStringFMTownsEnglish), k1FullFlaskStringFMTownsEnglish };
+
+static const char *const k1OutroHomeStringFMTownsEnglish[1] = {
+ "Home"
+};
+
+static const StringListProvider k1OutroHomeStringFMTownsEnglishProvider = { ARRAYSIZE(k1OutroHomeStringFMTownsEnglish), k1OutroHomeStringFMTownsEnglish };
+
+static const char *const k1VeryCleverStringFMTownsEnglish[1] = {
+ "Very clever! But your feeble efforts are futile."
+};
+
+static const StringListProvider k1VeryCleverStringFMTownsEnglishProvider = { ARRAYSIZE(k1VeryCleverStringFMTownsEnglish), k1VeryCleverStringFMTownsEnglish };
+
+static const char *const k1GUIStringsFMTownsEnglish[38] = {
+ "The Legend of Kyrandia",
+ "Load a game",
+ "Save this game",
+ "Game controls",
+ "Quit playing",
+ "Resume game",
+ "Game Controls",
+ "Which game would you like to reload?",
+ "Select a position to save to:",
+ "[ EMPTY SLOT ]",
+ "Cancel",
+ "Enter a description of your saved game:",
+ "Save",
+ "Rest in peace, Brandon.",
+ "Are you sure you want to quit playing?",
+ "XXX",
+ "XXX",
+ "XXXXXXX",
+ "XXXXXXXXX",
+ "Main menu",
+ "on",
+ "on +CD",
+ "off",
+ "Yes",
+ "No",
+ "slowest",
+ "slow",
+ "normal",
+ "fast",
+ "fastest",
+ "slowest",
+ "normal",
+ "fast",
+ "clickable",
+ "Walk speed ",
+ "Text speed ",
+ "Music is ",
+ "Sounds are "
+};
+
+static const StringListProvider k1GUIStringsFMTownsEnglishProvider = { ARRAYSIZE(k1GUIStringsFMTownsEnglish), k1GUIStringsFMTownsEnglish };
+
+static const char *const k1NewGameStringFMTownsEnglish[1] = {
+ "[ START A NEW GAME ]"
+};
+
+static const StringListProvider k1NewGameStringFMTownsEnglishProvider = { ARRAYSIZE(k1NewGameStringFMTownsEnglish), k1NewGameStringFMTownsEnglish };
+
+static const char *const k1ConfigStringsFMTownsEnglish[9] = {
+ "slowest",
+ "slow",
+ "normal",
+ "fast",
+ "fastest",
+ "slowest",
+ "normal",
+ "fast",
+ "clickable"
+};
+
+static const StringListProvider k1ConfigStringsFMTownsEnglishProvider = { ARRAYSIZE(k1ConfigStringsFMTownsEnglish), k1ConfigStringsFMTownsEnglish };
+
+static const byte k1CreditsStringsFMTownsEnglish[1420] = {
+ 0x0D, 0x02, 0x54, 0x48, 0x45, 0x20, 0x45, 0x4E,
+ 0x44, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x02, 0x46, 0x61, 0x62, 0x6C, 0x65,
+ 0x73, 0x20, 0x26, 0x20, 0x46, 0x69, 0x65, 0x6E,
+ 0x64, 0x73, 0x0D, 0x02, 0x42, 0x6F, 0x6F, 0x6B,
+ 0x20, 0x49, 0x0D, 0x02, 0x54, 0x48, 0x45, 0x20,
+ 0x4C, 0x45, 0x47, 0x45, 0x4E, 0x44, 0x20, 0x4F,
+ 0x46, 0x20, 0x4B, 0x59, 0x52, 0x41, 0x4E, 0x44,
+ 0x49, 0x41, 0x0D, 0x0D, 0x50, 0x75, 0x62, 0x6C,
+ 0x69, 0x73, 0x68, 0x65, 0x64, 0x20, 0x62, 0x79,
+ 0x0D, 0x02, 0x57, 0x65, 0x73, 0x74, 0x77, 0x6F,
+ 0x6F, 0x64, 0x20, 0x53, 0x74, 0x75, 0x64, 0x69,
+ 0x6F, 0x73, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
+ 0x03, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F,
+ 0x72, 0x3A, 0x05, 0x04, 0x42, 0x72, 0x65, 0x74,
+ 0x74, 0x20, 0x57, 0x2E, 0x20, 0x53, 0x70, 0x65,
+ 0x72, 0x72, 0x79, 0x0D, 0x0D, 0x03, 0x44, 0x65,
+ 0x73, 0x69, 0x67, 0x6E, 0x3A, 0x05, 0x04, 0x4D,
+ 0x69, 0x63, 0x68, 0x61, 0x65, 0x6C, 0x20, 0x4C,
+ 0x65, 0x67, 0x67, 0x0D, 0x04, 0x52, 0x69, 0x63,
+ 0x6B, 0x20, 0x50, 0x61, 0x72, 0x6B, 0x73, 0x0D,
+ 0x04, 0x50, 0x61, 0x75, 0x6C, 0x20, 0x53, 0x2E,
+ 0x20, 0x4D, 0x75, 0x64, 0x72, 0x61, 0x0D, 0x0D,
+ 0x03, 0x4C, 0x65, 0x61, 0x64, 0x20, 0x50, 0x72,
+ 0x6F, 0x67, 0x72, 0x61, 0x6D, 0x6D, 0x65, 0x72,
+ 0x3A, 0x05, 0x04, 0x4D, 0x69, 0x63, 0x68, 0x61,
+ 0x65, 0x6C, 0x20, 0x4C, 0x65, 0x67, 0x67, 0x0D,
+ 0x0D, 0x03, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74,
+ 0x20, 0x50, 0x72, 0x6F, 0x67, 0x72, 0x61, 0x6D,
+ 0x6D, 0x65, 0x72, 0x3A, 0x05, 0x04, 0x53, 0x63,
+ 0x6F, 0x74, 0x74, 0x20, 0x42, 0x6F, 0x77, 0x65,
+ 0x6E, 0x0D, 0x0D, 0x03, 0x20, 0x20, 0x41, 0x6D,
+ 0x69, 0x67, 0x61, 0x20, 0x20, 0x50, 0x72, 0x6F,
+ 0x67, 0x72, 0x61, 0x6D, 0x6D, 0x65, 0x72, 0x3A,
+ 0x05, 0x04, 0x42, 0x69, 0x6C, 0x6C, 0x20, 0x53,
+ 0x74, 0x6F, 0x6B, 0x65, 0x73, 0x0D, 0x0D, 0x03,
+ 0x20, 0x20, 0x50, 0x43, 0x2D, 0x39, 0x38, 0x20,
+ 0x20, 0x50, 0x72, 0x6F, 0x67, 0x72, 0x61, 0x6D,
+ 0x6D, 0x65, 0x72, 0x3A, 0x05, 0x04, 0x59, 0x75,
+ 0x6B, 0x69, 0x6F, 0x20, 0x53, 0x65, 0x6B, 0x69,
+ 0x67, 0x75, 0x63, 0x68, 0x69, 0x0D, 0x0D, 0x03,
+ 0x46, 0x4D, 0x2D, 0x54, 0x4F, 0x57, 0x4E, 0x53,
+ 0x20, 0x50, 0x72, 0x6F, 0x67, 0x72, 0x61, 0x6D,
+ 0x6D, 0x65, 0x72, 0x3A, 0x05, 0x04, 0x54, 0x61,
+ 0x69, 0x73, 0x65, 0x69, 0x20, 0x4E, 0x6F, 0x6D,
+ 0x75, 0x72, 0x61, 0x0D, 0x03, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x05, 0x04, 0x4F, 0x68, 0x73, 0x68, 0x75,
+ 0x6E, 0x20, 0x4C, 0x65, 0x65, 0x0D, 0x0D, 0x03,
+ 0x49, 0x6E, 0x74, 0x72, 0x6F, 0x20, 0x26, 0x20,
+ 0x46, 0x69, 0x6E, 0x61, 0x6C, 0x65, 0x3A, 0x05,
+ 0x04, 0x43, 0x68, 0x72, 0x69, 0x73, 0x74, 0x6F,
+ 0x70, 0x68, 0x65, 0x72, 0x20, 0x59, 0x61, 0x74,
+ 0x65, 0x73, 0x0D, 0x0D, 0x03, 0x41, 0x72, 0x74,
+ 0x20, 0x26, 0x20, 0x47, 0x72, 0x61, 0x70, 0x68,
+ 0x69, 0x63, 0x73, 0x3A, 0x05, 0x04, 0x52, 0x69,
+ 0x63, 0x6B, 0x20, 0x50, 0x61, 0x72, 0x6B, 0x73,
+ 0x0D, 0x04, 0x52, 0x65, 0x6E, 0x20, 0x4F, 0x6C,
+ 0x73, 0x65, 0x6E, 0x0D, 0x04, 0x4C, 0x6F, 0x75,
+ 0x69, 0x73, 0x65, 0x20, 0x53, 0x61, 0x6E, 0x64,
+ 0x6F, 0x76, 0x61, 0x6C, 0x0D, 0x04, 0x4A, 0x6F,
+ 0x73, 0x65, 0x70, 0x68, 0x20, 0x48, 0x65, 0x77,
+ 0x69, 0x74, 0x74, 0x20, 0x49, 0x56, 0x0D, 0x04,
+ 0x4A, 0x75, 0x64, 0x69, 0x74, 0x68, 0x20, 0x50,
+ 0x65, 0x74, 0x65, 0x72, 0x73, 0x6F, 0x6E, 0x0D,
+ 0x04, 0x41, 0x61, 0x72, 0x6F, 0x6E, 0x20, 0x50,
+ 0x6F, 0x77, 0x65, 0x6C, 0x6C, 0x0D, 0x04, 0x45,
+ 0x6C, 0x69, 0x65, 0x20, 0x41, 0x72, 0x61, 0x62,
+ 0x69, 0x61, 0x6E, 0x0D, 0x04, 0x45, 0x72, 0x69,
+ 0x63, 0x20, 0x53, 0x68, 0x75, 0x6C, 0x74, 0x73,
+ 0x0D, 0x0D, 0x03, 0x41, 0x75, 0x64, 0x69, 0x6F,
+ 0x20, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F,
+ 0x72, 0x3A, 0x05, 0x04, 0x50, 0x61, 0x75, 0x6C,
+ 0x20, 0x53, 0x2E, 0x20, 0x4D, 0x75, 0x64, 0x72,
+ 0x61, 0x0D, 0x0D, 0x03, 0x4D, 0x75, 0x73, 0x69,
+ 0x63, 0x3A, 0x05, 0x04, 0x46, 0x72, 0x61, 0x6E,
+ 0x6B, 0x20, 0x4B, 0x6C, 0x65, 0x70, 0x61, 0x63,
+ 0x6B, 0x69, 0x0D, 0x03, 0x28, 0x39, 0x38, 0x20,
+ 0x26, 0x20, 0x54, 0x4F, 0x57, 0x4E, 0x53, 0x29,
+ 0x05, 0x04, 0x54, 0x61, 0x6B, 0x65, 0x73, 0x68,
+ 0x69, 0x20, 0x41, 0x62, 0x6F, 0x0D, 0x0D, 0x03,
+ 0x53, 0x6F, 0x75, 0x6E, 0x64, 0x20, 0x45, 0x66,
+ 0x66, 0x65, 0x63, 0x74, 0x73, 0x3A, 0x05, 0x04,
+ 0x44, 0x77, 0x69, 0x67, 0x68, 0x74, 0x20, 0x4F,
+ 0x6B, 0x61, 0x68, 0x61, 0x72, 0x61, 0x0D, 0x03,
+ 0x28, 0x50, 0x43, 0x2D, 0x39, 0x38, 0x29, 0x05,
+ 0x04, 0x54, 0x61, 0x6B, 0x65, 0x73, 0x68, 0x69,
+ 0x20, 0x41, 0x62, 0x6F, 0x0D, 0x0D, 0x03, 0x57,
+ 0x72, 0x69, 0x74, 0x65, 0x72, 0x3A, 0x05, 0x04,
+ 0x22, 0x43, 0x6F, 0x63, 0x6F, 0x22, 0x0D, 0x0D,
+ 0x03, 0x54, 0x72, 0x61, 0x6E, 0x73, 0x6C, 0x61,
+ 0x74, 0x6F, 0x72, 0x28, 0x4A, 0x61, 0x70, 0x61,
+ 0x6E, 0x65, 0x73, 0x65, 0x29, 0x3A, 0x05, 0x04,
+ 0x4D, 0x69, 0x6E, 0x6F, 0x72, 0x75, 0x20, 0x4E,
+ 0x61, 0x6B, 0x61, 0x7A, 0x61, 0x77, 0x61, 0x0D,
+ 0x04, 0x59, 0x75, 0x72, 0x69, 0x20, 0x49, 0x74,
+ 0x6F, 0x0D, 0x0D, 0x03, 0x51, 0x75, 0x61, 0x6C,
+ 0x69, 0x74, 0x79, 0x20, 0x41, 0x73, 0x73, 0x75,
+ 0x72, 0x61, 0x6E, 0x63, 0x65, 0x3A, 0x05, 0x04,
+ 0x47, 0x6C, 0x65, 0x6E, 0x6E, 0x20, 0x53, 0x70,
+ 0x65, 0x72, 0x72, 0x79, 0x0D, 0x04, 0x4D, 0x61,
+ 0x74, 0x74, 0x20, 0x43, 0x6F, 0x6C, 0x6C, 0x69,
+ 0x6E, 0x73, 0x0D, 0x04, 0x42, 0x69, 0x6C, 0x6C,
+ 0x20, 0x46, 0x6F, 0x73, 0x74, 0x65, 0x72, 0x0D,
+ 0x04, 0x4D, 0x69, 0x63, 0x68, 0x61, 0x65, 0x6C,
+ 0x20, 0x4C, 0x69, 0x67, 0x68, 0x74, 0x6E, 0x65,
+ 0x72, 0x0D, 0x04, 0x4D, 0x69, 0x63, 0x68, 0x61,
+ 0x65, 0x6C, 0x20, 0x47, 0x61, 0x74, 0x65, 0x72,
+ 0x0D, 0x04, 0x45, 0x75, 0x67, 0x65, 0x6E, 0x65,
+ 0x20, 0x4D, 0x61, 0x72, 0x74, 0x69, 0x6E, 0x0D,
+ 0x04, 0x4D, 0x69, 0x63, 0x68, 0x61, 0x65, 0x6C,
+ 0x20, 0x47, 0x6C, 0x6F, 0x73, 0x65, 0x63, 0x6B,
+ 0x69, 0x0D, 0x04, 0x4A, 0x75, 0x73, 0x74, 0x69,
+ 0x6E, 0x20, 0x4E, 0x6F, 0x72, 0x72, 0x0D, 0x04,
+ 0x54, 0x6F, 0x70, 0x20, 0x53, 0x74, 0x61, 0x72,
+ 0x20, 0x54, 0x65, 0x73, 0x74, 0x69, 0x6E, 0x67,
+ 0x0D, 0x04, 0x54, 0x65, 0x73, 0x74, 0x69, 0x6E,
+ 0x67, 0x20, 0x31, 0x2C, 0x32, 0x2C, 0x33, 0x0D,
+ 0x0D, 0x0D, 0x0D, 0x0D, 0x53, 0x70, 0x65, 0x63,
+ 0x69, 0x61, 0x6C, 0x20, 0x54, 0x68, 0x61, 0x6E,
+ 0x6B, 0x73, 0x20, 0x74, 0x6F, 0x0D, 0x4C, 0x79,
+ 0x6C, 0x65, 0x20, 0x4A, 0x2E, 0x20, 0x48, 0x61,
+ 0x6C, 0x6C, 0x0D, 0x44, 0x61, 0x76, 0x69, 0x64,
+ 0x20, 0x42, 0x69, 0x73, 0x68, 0x6F, 0x70, 0x0D,
+ 0x22, 0x54, 0x68, 0x65, 0x20, 0x44, 0x6F, 0x63,
+ 0x22, 0x0D, 0x61, 0x6E, 0x64, 0x0D, 0x46, 0x69,
+ 0x72, 0x65, 0x62, 0x65, 0x72, 0x72, 0x79, 0x20,
+ 0x47, 0x72, 0x65, 0x65, 0x6E, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x0D, 0x02, 0x43, 0x41, 0x53, 0x54,
+ 0x20, 0x4F, 0x46, 0x20, 0x43, 0x48, 0x41, 0x52,
+ 0x41, 0x43, 0x54, 0x45, 0x52, 0x53, 0x0D, 0x0D,
+ 0x4D, 0x61, 0x6C, 0x63, 0x6F, 0x6C, 0x6D, 0x20,
+ 0x74, 0x68, 0x65, 0x20, 0x4A, 0x65, 0x73, 0x74,
+ 0x65, 0x72, 0x0D, 0x42, 0x72, 0x61, 0x6E, 0x64,
+ 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x42,
+ 0x6F, 0x6C, 0x64, 0x0D, 0x42, 0x72, 0x61, 0x6E,
+ 0x64, 0x79, 0x77, 0x69, 0x6E, 0x65, 0x20, 0x61,
+ 0x6E, 0x64, 0x20, 0x44, 0x61, 0x72, 0x6D, 0x0D,
+ 0x50, 0x72, 0x69, 0x65, 0x73, 0x74, 0x65, 0x73,
+ 0x73, 0x20, 0x42, 0x72, 0x79, 0x6E, 0x6E, 0x0D,
+ 0x5A, 0x61, 0x6E, 0x74, 0x68, 0x69, 0x61, 0x2C,
+ 0x20, 0x4C, 0x61, 0x64, 0x79, 0x20, 0x6F, 0x66,
+ 0x20, 0x41, 0x6C, 0x63, 0x68, 0x65, 0x6D, 0x79,
+ 0x0D, 0x48, 0x65, 0x72, 0x6D, 0x61, 0x6E, 0x20,
+ 0x74, 0x68, 0x65, 0x20, 0x48, 0x61, 0x6E, 0x64,
+ 0x79, 0x6D, 0x61, 0x6E, 0x0D, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x01,
+ 0x41, 0x6E, 0x79, 0x20, 0x63, 0x68, 0x61, 0x72,
+ 0x61, 0x63, 0x74, 0x65, 0x72, 0x73, 0x20, 0x69,
+ 0x6E, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x67,
+ 0x61, 0x6D, 0x65, 0x20, 0x77, 0x68, 0x6F, 0x20,
+ 0x62, 0x65, 0x61, 0x72, 0x0D, 0x01, 0x72, 0x65,
+ 0x73, 0x65, 0x6D, 0x62, 0x6C, 0x61, 0x6E, 0x63,
+ 0x65, 0x20, 0x74, 0x6F, 0x20, 0x70, 0x65, 0x72,
+ 0x73, 0x6F, 0x6E, 0x73, 0x20, 0x6C, 0x69, 0x76,
+ 0x69, 0x6E, 0x67, 0x20, 0x6F, 0x72, 0x0D, 0x01,
+ 0x64, 0x65, 0x61, 0x64, 0x20, 0x61, 0x72, 0x65,
+ 0x20, 0x70, 0x75, 0x72, 0x65, 0x6C, 0x79, 0x20,
+ 0x63, 0x6F, 0x69, 0x6E, 0x63, 0x69, 0x64, 0x65,
+ 0x6E, 0x74, 0x61, 0x6C, 0x2E, 0x0D, 0x0D, 0x0D,
+ 0x01, 0x43, 0x6F, 0x70, 0x79, 0x72, 0x69, 0x67,
+ 0x68, 0x74, 0x20, 0x28, 0x43, 0x29, 0x20, 0x31,
+ 0x39, 0x39, 0x32, 0x2C, 0x20, 0x57, 0x65, 0x73,
+ 0x74, 0x77, 0x6F, 0x6F, 0x64, 0x20, 0x53, 0x74,
+ 0x75, 0x64, 0x69, 0x6F, 0x73, 0x2C, 0x20, 0x49,
+ 0x6E, 0x63, 0x2E, 0x0D, 0x01, 0x43, 0x6F, 0x70,
+ 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x28,
+ 0x43, 0x29, 0x20, 0x31, 0x39, 0x39, 0x33, 0x2C,
+ 0x20, 0x53, 0x74, 0x61, 0x72, 0x20, 0x43, 0x72,
+ 0x61, 0x66, 0x74, 0x2C, 0x20, 0x49, 0x6E, 0x63,
+ 0x2E, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x0D,
+ 0x01, 0x41, 0x6C, 0x6C, 0x20, 0x72, 0x69, 0x67,
+ 0x68, 0x74, 0x73, 0x20, 0x72, 0x65, 0x73, 0x65,
+ 0x72, 0x76, 0x65, 0x64, 0x2E, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x0D, 0x00
+};
+
+static const ByteProvider k1CreditsStringsFMTownsEnglishProvider = { ARRAYSIZE(k1CreditsStringsFMTownsEnglish), k1CreditsStringsFMTownsEnglish };
+
diff --git a/devtools/create_kyradat/resources/lok_fmtowns_japanese.h b/devtools/create_kyradat/resources/lok_fmtowns_japanese.h
new file mode 100644
index 0000000000..37f82e5623
--- /dev/null
+++ b/devtools/create_kyradat/resources/lok_fmtowns_japanese.h
@@ -0,0 +1,527 @@
+static const char *const k1IntroStringsFMTownsJapanese[50] = {
+ "This is a text test - 1",
+ "This is a text test - 2",
+ "\x8B""v""\x82\xB5\x90""U""\x82\xE8\x82\xBE\x82\xC8\x81""A""\x83""J""\x83\x89\x83""b""\x83""N""\x81""E""\x81""E""\x81""E",
+ "\x81""E""\x81""E""\x81""E""\x89\xA4\x8E\xBA\x96\x82\x8F""p""\x8E""t""\x82\xCC\x8E""w""\x93\xB1\x8E\xD2\x93""a""\x81""I",
+ "\x82\xA0\x82\xF1\x82\xBD\x82\xF0\x8B\xC1\x82\xA9\x82\xB5\x82\xBD\x82\xA9\x82\xC8\x81""H",
+ "\x83""}""\x83\x8B\x83""R""\x83\x80\x81""I",
+ "\x8B""M""\x97""l""\x82\xCC\x92""E""\x91\x96\x82\xC9\x82\xC2\x82\xA2\x82\xC4\x82\xCD\x8D\xF0\x93\xFA\x95\xF1\x8D\x90\x82\xF0\x8E\xF3\x82\xAF\x82\xC4\x82\xA2\x82\xBD\x81""B",
+ "\x82\xBB\x82\xEA\x82\xC5\x82\xA8\x91""O""\x82\xAA\x97\x88\x82\xE9\x82\xCC\x82\xF0\x91\xD2\x82\xC1\x82\xC4\x82\xA2\x82\xBD\x82\xF1\x82\xBE\x81""B",
+ "\x89\xBD\x8C\xCC\x82\xA8\x82\xEA\x97""l""\x82\xAA\x97\x88\x82\xBD\x82\xA9\x95\xAA\x82\xA9\x82\xE9\x82\xA9\x81""H",
+ "\x82\xC2\x82\xA2\x82\xC9\x81""A""\x82\xB1\x82\xCC\x8D\x91\x82\xF0\x8F\xE6\x82\xC1\x8E\xE6\x82\xC1\x82\xBD\x82\xBC\x81""I",
+ "\x8B""M""\x97""l""\x82\xCC\x82\xC2\x82\xDC\x82\xE7\x82\xF1\x8B\xBA\x94\x97\x82\xC8\x82\xC7\x82\xC5\x82\xA8\x82\xEA\x97""l""\x82\xF0\x94\x9B\x82\xEA\x82\xE9\x82\xE0\x82\xCC\x82\xA9\x81""B",
+ "\x82\xB3\x82\xA0\x81""A""\x82\xE2\x82\xE9\x82\xC8\x82\xE7\x82\xE2\x82\xC1\x82\xC4\x82\xDD\x82\xEB\x81""I",
+ "\x82\xED\x82\xB5\x82\xC9\x82\xE0\x82\xED\x82\xB8\x82\xA9\x82\xBE\x82\xAA\x96\x82\x97\xCD\x82\xAA\x8E""c""\x82\xC1\x82\xC4\x82\xA8\x82\xE9\x82\xED\x82\xA2\x81""B",
+ "\x82\xA8\x91""O""\x82\xF0\x82\xE2\x82\xC1\x82\xC2\x82\xAF\x82\xE9\x82\xC6\x82\xA2\x82\xA4\x82\xB1\x82\xC6\x82\xB3\x81""E""\x81""E""\x81""E",
+ "\x81""E""\x81""E""\x81""E""\x82\xE0\x82\xCD\x82\xE2\x82\xA8\x91""O""\x82\xCD\x90\xCE\x82\xC6\x82\xC8\x82\xC1\x82\xBD\x81""E""\x81""E""\x81""E",
+ "\x81""E""\x81""E""\x81""E""\x82\xBE\x82\xAA\x96\xDA\x82\xBE\x82\xAF\x82\xCD\x8C\xA9\x82\xA6\x82\xE9\x82\xDC\x82\xDC\x82\xC9\x82\xB5\x82\xC4\x82\xA8\x82\xB1\x82\xA4\x81""B",
+ "\x82\xA8\x82\xEA\x97""l""\x82\xCD\x83""L""\x83\x89\x83\x93\x83""f""\x83""B""\x83""A""\x82\xC9\x82\xCD\x82\xC8\x82\xF1\x82\xCC\x8A\xB4\x8F\x9D\x82\xE0\x82\xC8\x82\xA2\x81""E""\x81""E""\x81""E",
+ "\x81""E""\x81""E""\x81""E""\x82\xBE\x82\xAA\x81""A""\x82\xA8\x91""O""\x82\xBD\x82\xBF\x82\xCD\x82\xC7\x82\xA4\x82\xA9\x82\xC8\x81""B",
+ "\x88\xAB\x82\xCC\x93\xB9\x89\xBB\x8E""t""\x81""A""\x83""}""\x83\x8B\x83""R""\x83\x80\x82\xAA\x98""S""\x82\xF0\x94""j""\x82\xC1\x82\xBD\x81""B",
+ "\x8D\xA1\x82\xE2\x82\xB1\x82\xCC\x8D\x91\x82\xCC\x96\x82\x96""@""\x82\xCD\x82\xB7\x82\xD7\x82\xC4\x94\xDE\x82\xC9\x8E""x""\x94""z""\x82\xB3\x82\xEA\x82\xC4\x82\xB5\x82\xDC\x82\xC1\x82\xBD\x81""B",
+ "",
+ "",
+ "\x89\xBD\x82\xC5\x82\xA8\x82\xEA\x97""l""\x82\xF0\x82\xC2\x82\xDC\x82\xB8\x82\xA9\x82\xB9\x82\xBD\x81""I",
+ "\x82\xE6\x82\xB5\x81""A""\x82\xA8\x91""O""\x82\xC9\x82\xB7\x82\xCE\x82\xE7\x82\xB5\x82\xA2\x91\xA1\x82\xE8\x95\xA8\x82\xF0\x82\xE2\x82\xEB\x82\xA4\x81""E""\x81""E""\x81""E",
+ "\x82\xB1\x82\xEA\x82\xAA\x82\xA8\x82\xEA\x97""l""\x82\xCC\x83\x86\x81""[""\x83\x82\x83""A""\x82\xB3\x81""I",
+ "\x82\xBE\x82\xAA\x81""A""\x83""t""\x83""F""\x83""A""\x82\xC8\x82\xA8\x82\xEA\x97""l""\x82\xCD\x8C""x""\x8D\x90\x82\xF0\x82\xB7\x82\xE9\x82\xC2\x82\xE0\x82\xE8\x82\xB3\x81""B",
+ "\x82\xA0\x82\xCC\x96\xD8\x82\xC9\x82\xCD\x93""o""\x82\xE9\x82\xC8\x82\xE6\x81""I",
+ "\x82\xBF\x82\xC1\x82\xB1\x82\xA2\x83\x8A\x83""X""\x82\xDF\x81""A""\x82\xA0\x82\xCC\x96\xD8\x82\xC9\x82\xCD\x93""o""\x82\xE9\x82\xC8\x81""I",
+ "\x83""u""\x83""D""\x81""[""\x81""I",
+ "\x82\xB1\x82\xA2\x82\xC2\x82\xCD\x96\xCA\x94\x92\x82\xA2\x82\xE2\x81""E""\x81""E""\x81""E",
+ "\x81""E""\x81""E""\x81""E""\x82\xBB\x82\xA4\x8E""v""\x82\xED\x82\xF1\x82\xA9\x81""H",
+ "\x82\xCD\x82\xC1\x81""A""\x82\xCD\x82\xC1\x82\xCD\x81""E""\x81""E""\x81""E",
+ "\x8C\xB3\x82\xC9\x96\xDF\x82\xC1\x82\xBD\x82\xCC\x82\xA9\x81""H",
+ "\x90\xB6\x82\xAB\x82\xC4\x82\xA2\x82\xE9\x82\xB1\x82\xC6\x82\xCD\x82\xB7\x82\xCE\x82\xE7\x82\xB5\x82\xA2\x81""I",
+ "\x83""u""\x83\x89\x83\x93\x83""h""\x83\x93\x81""I",
+ "\x82\xA8\x91""c""\x95\x83\x82\xB3\x82\xF1\x81""I""\x96""l""\x82\xBD\x82\xBF\x82\xCD\x82\xE2\x82\xE8\x82\xDC\x82\xB5\x82\xBD\x82\xCB\x81""I",
+ "\x82\xA2\x82\xA2\x82\xE2\x81""I""\x82\xE2\x82\xC1\x82\xBD\x82\xCC\x82\xCD\x82\xA8\x91""O""\x81""I",
+ "\x83""u""\x83\x89\x83\x93\x83""h""\x83\x93\x89\xA4\x81""@""\x82\xCE\x82\xF1\x82\xB4\x82\xA2\x81""I",
+ "\x89\xA4\x8E\xBA\x96\x82\x8F""p""\x8E""t""\x81""@""\x82\xCE\x82\xF1\x82\xB4\x82\xA2\x81""I",
+ "\x82\xB3\x82\xA0\x81""A""\x8B\xA4\x82\xC9\x83""L""\x83\x89\x83\x93\x83""f""\x83""B""\x83""A""\x82\xF0\x95\x9C\x8B\xBB\x82\xB5\x82\xE6\x82\xA4\x81""I",
+ "\x91\xE5\x8E""^""\x90\xAC\x81""I",
+ "\x96""l""\x82\xCC\x89\xA4\x82\xC6\x82\xB5\x82\xC4\x82\xCC\x8D\xC5\x8F\x89\x82\xCC\x95""z""\x8D\x90\x82\xCD\x81""E""\x81""E""\x81""E",
+ "\x83""T""\x83\x93\x83""_""\x83\x8B\x82\xF0\x83""L""\x83\x89\x83\x93\x83""f""\x83""B""\x83""A""\x82\xCC\x8C\xF6\x8E\xAE\x82\xC8\x97\x9A\x95\xA8\x82\xC6\x82\xB7\x82\xE9\x82\xB1\x82\xC6\x82\xC5\x82\xB7\x81""I",
+ "\x82\xE6\x82\xAD\x82\xE2\x82\xC1\x82\xBD\x81""I""\x83""u""\x83\x89\x83\x93\x83""h""\x83\x93\x81""B",
+ "\x8E\xA9\x91""R""\x8A""E""\x82\xCD\x82\xE6\x82\xEB\x82\xB1\x82\xD1\x82\xC9\x82\xA0\x82\xD3\x82\xEA\x81""E""\x81""E""\x81""E",
+ "\x82\xA0\x82\xC8\x82\xBD\x82\xCC\x97""F""\x90""l""\x92""B""\x82\xE0\x8F\x95\x82\xA9\x82\xC1\x82\xBD\x82\xCC\x82\xC5\x82\xB7\x81""I",
+ "\x83""u""\x83\x8A\x83\x93\x82\xE6\x81""E""\x81""E""\x81""E",
+ "\x83""}""\x83\x8B\x83""R""\x83\x80\x82\xAA\x98""S""\x82\xF0\x94""j""\x82\xC1\x82\xBD\x81""I",
+ "\x82\xDC\x82\xE0\x82\xC8\x82\xAD\x93""z""\x82\xCD\x82\xED\x82\xB5\x82\xCC\x82\xC6\x82\xB1\x82\xEB\x82\xD6\x97\x88\x82\xE9\x82\xBE\x82\xEB\x82\xA4\x81""B",
+ "\x82\xC7\x82\xA4\x82\xA9\x83""u""\x83\x89\x83\x93\x83""h""\x83\x93\x82\xF0\x8F\x95\x82\xAF\x82\xC4\x82\xE2\x82\xC1\x82\xC4\x82\xA8\x82\xAD\x82\xEA\x81""E""\x81""E""\x81""E"
+};
+
+static const StringListProvider k1IntroStringsFMTownsJapaneseProvider = { ARRAYSIZE(k1IntroStringsFMTownsJapanese), k1IntroStringsFMTownsJapanese };
+
+static const char *const k1ItemNamesFMTownsJapanese[107] = {
+ "\x83""K""\x81""[""\x83""l""\x83""b""\x83""g",
+ "\x83""A""\x83\x81\x83""W""\x83""X""\x83""g",
+ "\x83""A""\x83""N""\x83""A""\x83""}""\x83\x8A\x83\x93",
+ "\x83""_""\x83""C""\x83""A""\x83\x82\x83\x93\x83""h",
+ "\x83""G""\x83\x81\x83\x89\x83\x8B\x83""h",
+ "\x83""p""\x81""[""\x83\x8B",
+ "\x83\x8B\x83""r""\x81""[",
+ "\x83""y""\x83\x8A\x83""h""\x81""[""\x83""g",
+ "\x83""T""\x83""t""\x83""@""\x83""C""\x83""A",
+ "\x83""I""\x83""p""\x81""[""\x83\x8B",
+ "\x83""g""\x83""p""\x81""[""\x83""Y",
+ "\x83""I""\x83""j""\x83""L""\x83""X",
+ "\x83""T""\x83\x93\x83""X""\x83""g""\x81""[""\x83\x93",
+ "\x83\x80\x81""[""\x83\x93\x83""X""\x83""g""\x81""[""\x83\x93",
+ "\x83\x8C\x83""C""\x83\x93\x83""{""\x81""[""\x83""X""\x83""g""\x81""[""\x83\x93",
+ "\x83\x8D\x81""[""\x83""h""\x83""X""\x83""g""\x81""[""\x83\x93",
+ "\x83""o""\x83\x89",
+ "\x83""`""\x83\x85\x81""[""\x83\x8A\x83""b""\x83""v",
+ "\x83\x89\x83\x93",
+ "\x8B\xE2\x82\xCC\x83""o""\x83\x89",
+ "\x8B\xE2\x82\xCC\x8F\xAC\x91\x9C",
+ "\x8B\xE2\x89\xDD",
+ "\x8B\xE0\x89\xDD",
+ "\x8B\xE0\x82\xCC\x83\x8A\x83\x93\x83""O",
+ "\x90\xB9\x94""t",
+ "\x8F\xBC\x82\xDA\x82\xC1\x82\xAD\x82\xE8",
+ "\x82\xC7\x82\xF1\x82\xAE\x82\xE8",
+ "\x83""N""\x83\x8B\x83""~",
+ "\x94""R""\x82\xA6\x82\xE9\x83""t""\x83""@""\x83""C""\x83""A""\x83""x""\x83\x8A\x81""[",
+ "\x83""t""\x83""@""\x83""C""\x83""A""\x83""x""\x83\x8A\x81""[",
+ "\x83""t""\x83""@""\x83""C""\x83""A""\x83""x""\x83\x8A\x81""[",
+ "\x83""t""\x83""@""\x83""C""\x83""A""\x83""x""\x83\x8A\x81""[",
+ "\x83""t""\x83""@""\x83""C""\x83""A""\x83""x""\x83\x8A\x81""[",
+ "\x83""t""\x83""@""\x83""C""\x83""A""\x83""x""\x83\x8A\x81""[",
+ "\x82\xB3\x82\xA9\x82\xC8",
+ "\x82\xB3\x82\xA9\x82\xC8\x82\xCC\x8D\x9C",
+ "\x97""r""\x82\xCC\x91\xAB",
+ "\x8D\x9C",
+ "\x83\x8A\x83\x93\x83""S",
+ "\x83\x8A\x83\x93\x83""S""\x82\xCC\x90""c",
+ "\x83""u""\x83\x8B\x81""[""\x83""x""\x83\x8A\x81""[",
+ "\x83""L""\x83""m""\x83""R",
+ "\x83""m""\x81""[""\x83""g",
+ "\x91\xE5\x97\x9D\x90\xCE",
+ "\x82\xCC\x82\xB1\x82\xAC\x82\xE8",
+ "\x83""A""\x83\x93\x83""N",
+ "\x89""H""\x8D\xAA",
+ "\x83""^""\x83""}""\x83""S",
+ "\x97""t""\x82\xC1\x82\xCF",
+ "\x94\x92\x92\xDC\x91\x90",
+ "\x97\x8E\x82\xBF\x82\xBD\x90\xAF",
+ "\x83""N""\x83\x8A\x83""X""\x83""^""\x83\x8B\x82\xCC\x8E\xEC",
+ "\x97\xDC\x82\xCC\x82\xB5\x82\xB8\x82\xAD",
+ "\x8B\xBE",
+ "\x95""X""\x82\xCC\x82\xA9\x82\xAF\x82\xE7",
+ "\x83""t""\x83\x8B\x81""[""\x83""g",
+ "\x8D\xBB\x8E\x9E\x8C""v",
+ "\x93""S""\x82\xCC\x8C\xAE",
+ "\x82\xD0\x82\xB7\x82\xA2\x82\xCC\x8C\xAE",
+ "\x8D\x95\x97""j""\x90\xCE\x82\xCC\x8C\xAE",
+ "\x90\xD4\x82\xCC\x83""|""\x81""[""\x83""V""\x83\x87\x83\x93",
+ "\x90\xD4\x82\xCC\x83""|""\x81""[""\x83""V""\x83\x87\x83\x93",
+ "\x90\xC2\x82\xCC\x83""|""\x81""[""\x83""V""\x83\x87\x83\x93",
+ "\x90\xC2\x82\xCC\x83""|""\x81""[""\x83""V""\x83\x87\x83\x93",
+ "\x89\xA9\x90""F""\x82\xCC\x83""|""\x81""[""\x83""V""\x83\x87\x83\x93",
+ "\x89\xA9\x90""F""\x82\xCC\x83""|""\x81""[""\x83""V""\x83\x87\x83\x93",
+ "\x97\xCE\x82\xCC\x83""|""\x81""[""\x83""V""\x83\x87\x83\x93",
+ "\x83""I""\x83\x8C\x83\x93\x83""W""\x90""F""\x82\xCC\x83""|""\x81""[""\x83""V""\x83\x87\x83\x93",
+ "\x8E\x87\x90""F""\x82\xCC\x83""|""\x81""[""\x83""V""\x83\x87\x83\x93",
+ "\x93\xF8\x90""F""\x82\xCC\x83""|""\x81""[""\x83""V""\x83\x87\x83\x93",
+ "\x90""V""\x91""N""\x82\xC8\x90\x85",
+ "\x90""V""\x91""N""\x82\xC8\x90\x85",
+ "\x89\x96\x90\x85",
+ "\x89\x96\x90\x85",
+ "\x83""~""\x83""l""\x83\x89\x83\x8B\x83""E""\x83""H""\x81""[""\x83""^""\x81""[",
+ "\x83""~""\x83""l""\x83\x89\x83\x8B\x83""E""\x83""H""\x81""[""\x83""^""\x81""[",
+ "\x96\x82\x96""@""\x82\xCC\x90\x85",
+ "\x96\x82\x96""@""\x82\xCC\x90\x85",
+ "\x8B\xF3\x82\xC1\x82\xDB\x82\xCC\x83""t""\x83\x89\x83""X""\x83""R",
+ "\x8B\xF3\x82\xC1\x82\xDB\x82\xCC\x83""t""\x83\x89\x83""X""\x83""R",
+ "\x83""X""\x83""N""\x83\x8D\x81""[""\x83\x8B",
+ "\x83""X""\x83""N""\x83\x8D\x81""[""\x83\x8B",
+ "\x83""X""\x83""N""\x83\x8D\x81""[""\x83\x8B",
+ "\x83""X""\x83""N""\x83\x8D\x81""[""\x83\x8B",
+ "\x83""X""\x83""N""\x83\x8D\x81""[""\x83\x8B",
+ "\x83""X""\x83""N""\x83\x8D\x81""[""\x83\x8B",
+ "\x83""X""\x83""N""\x83\x8D\x81""[""\x83\x8B",
+ "\x83""X""\x83""N""\x83\x8D\x81""[""\x83\x8B",
+ "\x83""X""\x83""N""\x83\x8D\x81""[""\x83\x8B",
+ "\x83""X""\x83""N""\x83\x8D\x81""[""\x83\x8B",
+ "\x97""r""\x94\xE7\x8E\x86\x82\xCC\x90\xD8\x82\xEA\x92""[",
+ "\x97""r""\x94\xE7\x8E\x86\x82\xCC\x90\xD8\x82\xEA\x92""[",
+ "\x97""r""\x94\xE7\x8E\x86\x82\xCC\x90\xD8\x82\xEA\x92""[",
+ "\x97""r""\x94\xE7\x8E\x86\x82\xCC\x90\xD8\x82\xEA\x92""[",
+ "\x97""r""\x94\xE7\x8E\x86\x82\xCC\x90\xD8\x82\xEA\x92""[",
+ "\x90\xD4\x82\xCC\x83\x81\x83""K""\x83""X""\x83""g""\x81""[""\x83\x93",
+ "\x83""I""\x83\x8C\x83\x93\x83""W""\x90""F""\x82\xCC\x83\x81\x83""K""\x83""X""\x83""g""\x81""[""\x83\x93",
+ "\x89\xA9\x90""F""\x82\xCC\x83\x81\x83""K""\x83""X""\x83""g""\x81""[""\x83\x93",
+ "\x97\xCE\x82\xCC\x83\x81\x83""K""\x83""X""\x83""g""\x81""[""\x83\x93",
+ "\x90\xC2\x97\xCE\x82\xCC\x83\x81\x83""K""\x83""X""\x83""g""\x81""[""\x83\x93",
+ "\x90\xC2\x82\xCC\x83\x81\x83""K""\x83""X""\x83""g""\x81""[""\x83\x93",
+ "\x8E\x87\x90""F""\x82\xCC\x83\x81\x83""K""\x83""X""\x83""g""\x81""[""\x83\x93",
+ "\x8F""d""\x82\xA2\x90\xCE",
+ "\x89\xA4\x8A\xA5",
+ "\x89\xA4\xE2\x94",
+ "\x8B\xE0\x82\xCC\x8C\xAE",
+ "\x95\xAA\x82\xA9\x82\xE7\x82\xC8\x82\xA2\x82\xE0\x82\xCC"
+};
+
+static const StringListProvider k1ItemNamesFMTownsJapaneseProvider = { ARRAYSIZE(k1ItemNamesFMTownsJapanese), k1ItemNamesFMTownsJapanese };
+
+static const char *const k1TakenStringsFMTownsJapanese[2] = {
+ "\x82\xF0\x8E\xE6\x82\xC1\x82\xBD\x81""B",
+ "\x82\xF0\x8E\xE6\x82\xC1\x82\xBD\x81""B"
+};
+
+static const StringListProvider k1TakenStringsFMTownsJapaneseProvider = { ARRAYSIZE(k1TakenStringsFMTownsJapanese), k1TakenStringsFMTownsJapanese };
+
+static const char *const k1PlacedStringsFMTownsJapanese[1] = {
+ "\x82\xF0\x82\xB5\x82\xDC\x82\xC1\x82\xBD\x81""B"
+};
+
+static const StringListProvider k1PlacedStringsFMTownsJapaneseProvider = { ARRAYSIZE(k1PlacedStringsFMTownsJapanese), k1PlacedStringsFMTownsJapanese };
+
+static const char *const k1DroppedStringsFMTownsJapanese[1] = {
+ "\x82\xF0\x92""u""\x82\xA2\x82\xBD\x81""B"
+};
+
+static const StringListProvider k1DroppedStringsFMTownsJapaneseProvider = { ARRAYSIZE(k1DroppedStringsFMTownsJapanese), k1DroppedStringsFMTownsJapanese };
+
+static const char *const k1NoDropStringsFMTownsJapanese[2] = {
+ "\x82\xB1\x82\xCC\x8F\xEA\x96\xCA\x82\xC5\x82\xCD\x81""A""\x82\xB1\x82\xEA\x88\xC8\x8F\xE3\x83""A""\x83""C""\x83""e""\x83\x80\x82\xAA\x92""u""\x82\xAF\x82\xDC\x82\xB9\x82\xF1\x81""B",
+ "\x82\xB1\x82\xB1\x82\xC9\x82\xCD\x92""u""\x82\xAF\x82\xDC\x82\xB9\x82\xF1\x81""B"
+};
+
+static const StringListProvider k1NoDropStringsFMTownsJapaneseProvider = { ARRAYSIZE(k1NoDropStringsFMTownsJapanese), k1NoDropStringsFMTownsJapanese };
+
+static const char *const k1PutDownStringFMTownsJapanese[1] = {
+ "\x82\xDC\x82\xB8\x81""A""\x82\xB1\x82\xEA\x82\xF0\x92""u""\x82\xA2\x82\xC4\x82\xA9\x82\xE7\x82\xCC\x95\xFB\x82\xAA\x82\xE6\x82\xB3\x82\xBB\x82\xA4\x82\xBE\x81""B"
+};
+
+static const StringListProvider k1PutDownStringFMTownsJapaneseProvider = { ARRAYSIZE(k1PutDownStringFMTownsJapanese), k1PutDownStringFMTownsJapanese };
+
+static const char *const k1WaitAmuletStringFMTownsJapanese[1] = {
+ "\x83""A""\x83""~""\x83\x85\x83\x8C\x83""b""\x83""g""\x82\xC9\x97\xCD\x82\xAA\x96\xDF\x82\xE9\x82\xDC\x82\xC5\x91\xD2\x82\xC1\x82\xC4\x82\xDD\x82\xE6\x82\xA4\x81""B"
+};
+
+static const StringListProvider k1WaitAmuletStringFMTownsJapaneseProvider = { ARRAYSIZE(k1WaitAmuletStringFMTownsJapanese), k1WaitAmuletStringFMTownsJapanese };
+
+static const char *const k1BlackJewelStringFMTownsJapanese[1] = {
+ "\x82\xB1\x82\xEA\x82\xCD\x95\xF3\x90\xCE\x82\xC9\x82\xCD\x88\xE1\x82\xA2\x82\xC8\x82\xA2\x82\xAA\x81""A""\x82\xC7\x82\xA4\x82\xB5\x82\xC4\x82\xDC\x82\xC1\x8D\x95\x82\xC8\x82\xF1\x82\xBE\x82\xEB\x82\xA4\x81""H"
+};
+
+static const StringListProvider k1BlackJewelStringFMTownsJapaneseProvider = { ARRAYSIZE(k1BlackJewelStringFMTownsJapanese), k1BlackJewelStringFMTownsJapanese };
+
+static const char *const k1HealingTipStringFMTownsJapanese[1] = {
+ "\x82\xA0\x82\xEA\x81""A""\x82\xB1\x82\xEA\x82\xCD\x8F\x9D\x82\xC2\x82\xA2\x82\xBD\x82\xE0\x82\xCC\x82\xF0\x8E\xA1\x82\xB7\x96\x82\x96""@""\x82\xC8\x82\xF1\x82\xBE\x81""B"
+};
+
+static const StringListProvider k1HealingTipStringFMTownsJapaneseProvider = { ARRAYSIZE(k1HealingTipStringFMTownsJapanese), k1HealingTipStringFMTownsJapanese };
+
+static const char *const k1PoisonGoneStringFMTownsJapanese[2] = {
+ "\x82\xB7\x82\xB2\x82\xA2\x81""I",
+ "\x93\xC5\x82\xAA\x8F\xC1\x82\xA6\x82\xBD\x81""I"
+};
+
+static const StringListProvider k1PoisonGoneStringFMTownsJapaneseProvider = { ARRAYSIZE(k1PoisonGoneStringFMTownsJapanese), k1PoisonGoneStringFMTownsJapanese };
+
+static const char *const k1ThePoisonStringsFMTownsJapanese[4] = {
+ "\x93\xC5\x82\xBE\x81""E""\x81""E""\x81""E",
+ "\x8C\xC4\x8B""z""\x82\xAA\x8F""o""\x97\x88\x82\xC8\x82\xA2\x81""E""\x81""E""\x81""E",
+ "\x8B""C""\x95\xAA\x82\xAA\x88\xAB\x82\xA2\x81""E""\x81""E""\x81""E",
+ "\x82\xA0\x82\xCC\x8E\xD6\x82\xCD""\r""\x93\xC5\x8E\xD6\x82\xC9\x82\xBF\x82\xAA\x82\xA2\x82\xC8\x82\xA2\x81""I"
+};
+
+static const StringListProvider k1ThePoisonStringsFMTownsJapaneseProvider = { ARRAYSIZE(k1ThePoisonStringsFMTownsJapanese), k1ThePoisonStringsFMTownsJapanese };
+
+static const char *const k1FluteStringsFMTownsJapanese[2] = {
+ "\x82\xA0\x82\xDC\x82\xE8\x82\xA2\x82\xA2\x89\xB9\x90""F""\x82\xB6\x82\xE1\x82\xC8\x82\xA2\x82\xC8\x81""B",
+ "\x8D\xC5\x8C\xE3\x82\xCD\x82\xC6\x82\xC4\x82\xE0\x8D\x82\x82\xA2\x89\xB9\x82\xBE\x81""I"
+};
+
+static const StringListProvider k1FluteStringsFMTownsJapaneseProvider = { ARRAYSIZE(k1FluteStringsFMTownsJapanese), k1FluteStringsFMTownsJapanese };
+
+static const char *const k1WispJewelStringsFMTownsJapanese[3] = {
+ "\x89\xBD\x82\xE0\x8A\xB4\x82\xB6\x82\xC8\x82\xA2\x82\xC8\x82\xA0\x81""B",
+ "\x8D\xC5\x8F\x89\x82\xC9\x81""A",
+ "\x82\xF0\x89\xBA\x82\xC9\x92""u""\x82\xAD\x82\xCC\x82\xA9\x82\xE0\x92""m""\x82\xEA\x82\xC8\x82\xA2\x81""B"
+};
+
+static const StringListProvider k1WispJewelStringsFMTownsJapaneseProvider = { ARRAYSIZE(k1WispJewelStringsFMTownsJapanese), k1WispJewelStringsFMTownsJapanese };
+
+static const char *const k1MagicJewelStringsFMTownsJapanese[1] = {
+ "\x82\xB1\x82\xEA\x82\xCD\x88\xE1\x82\xA4\x82\xBC\x81""B"
+};
+
+static const StringListProvider k1MagicJewelStringsFMTownsJapaneseProvider = { ARRAYSIZE(k1MagicJewelStringsFMTownsJapanese), k1MagicJewelStringsFMTownsJapanese };
+
+static const char *const k1FlaskFullStringFMTownsJapanese[1] = {
+ "\x83""t""\x83\x89\x83""X""\x83""R""\x82\xCD\x82\xE0\x82\xA4\x90\x85\x82\xAA\x93\xFC\x82\xC1\x82\xC4\x82\xA2\x82\xE9\x81""B"
+};
+
+static const StringListProvider k1FlaskFullStringFMTownsJapaneseProvider = { ARRAYSIZE(k1FlaskFullStringFMTownsJapanese), k1FlaskFullStringFMTownsJapanese };
+
+static const char *const k1FullFlaskStringFMTownsJapanese[4] = {
+ "\x83""t""\x83\x89\x83""X""\x83""R""\x82\xCC\x92\x86\x90""g""\x82\xCD\x81""A\r""\x96""A""\x97\xA7\x82\xC2\x90""V""\x91""N""\x82\xC8\x90\x85\x82\xBE\x81""B",
+ "\x83""t""\x83\x89\x83""X""\x83""R""\x82\xCC\x92\x86\x90""g""\x82\xCD\x81""A\r""\x89\x96\x90\x85\x82\xBE\x81""B",
+ "\x83""t""\x83\x89\x83""X""\x83""R""\x82\xCC\x92\x86\x90""g""\x82\xCD\x81""A\r""\x83""~""\x83""l""\x83\x89\x83\x8B\x83""E""\x83""H""\x81""[""\x83""^""\x81""[""\x82\xBE\x81""B",
+ "\x96\x82\x96""@""\x82\xCC\x90\x85\x82\xBE\x81""B"
+};
+
+static const StringListProvider k1FullFlaskStringFMTownsJapaneseProvider = { ARRAYSIZE(k1FullFlaskStringFMTownsJapanese), k1FullFlaskStringFMTownsJapanese };
+
+static const char *const k1OutroHomeStringFMTownsJapanese[1] = {
+ "\x89\xE4\x82\xAA\x89\xC6"
+};
+
+static const StringListProvider k1OutroHomeStringFMTownsJapaneseProvider = { ARRAYSIZE(k1OutroHomeStringFMTownsJapanese), k1OutroHomeStringFMTownsJapanese };
+
+static const char *const k1VeryCleverStringFMTownsJapanese[1] = {
+ "\x82\xE6\x82\xA2\x8E\xE8\x8D\xDB\x82\xBE\x81""I""\x82\xBE\x82\xAA\x82\xA8\x91""O""\x82\xCC\x82\xB3\x82\xB3\x82\xE2\x82\xA9\x82\xC8\x93""w""\x97\xCD\x82\xCD\x96\xB3\x91\xCA\x82\xBE\x81""B"
+};
+
+static const StringListProvider k1VeryCleverStringFMTownsJapaneseProvider = { ARRAYSIZE(k1VeryCleverStringFMTownsJapanese), k1VeryCleverStringFMTownsJapanese };
+
+static const char *const k1GUIStringsFMTownsJapanese[38] = {
+ "\x83""U""\x81""E""\x83\x8C\x83""W""\x83""F""\x83\x93\x83""h""\x81""E""\x83""I""\x83""u""\x81""E""\x83""L""\x83\x89\x83\x93\x83""f""\x83""B""\x83""A",
+ "\x83""Z""\x81""[""\x83""u""\x82\xB5\x82\xBD\x8F\x8A\x82\xA9\x82\xE7\x8E""n""\x82\xDF\x82\xE9",
+ "\x83""Q""\x81""[""\x83\x80\x82\xF0\x83""Z""\x81""[""\x83""u""\x82\xB7\x82\xE9",
+ "\x83""Q""\x81""[""\x83\x80\x82\xCC\x90\xDD\x92\xE8",
+ "\x83""Q""\x81""[""\x83\x80\x8F""I""\x97\xB9",
+ "\x83""Q""\x81""[""\x83\x80\x8D\xC4\x8A""J",
+ "\x83""Q""\x81""[""\x83\x80\x82\xCC\x90\xDD\x92\xE8",
+ "\x82\xC7\x82\xCC\x83""f""\x81""[""\x83""^""\x82\xF0\x83\x8D\x81""[""\x83""h""\x82\xB5\x82\xDC\x82\xB7\x82\xA9\x81""H",
+ "\x83""Z""\x81""[""\x83""u""\x82\xB7\x82\xE9\x88\xCA\x92""u""\x82\xF0\x91""I""\x82\xF1\x82\xC5\x89\xBA\x82\xB3\x82\xA2\x81""F",
+ "\x81""m""\x8B\xF3\x82\xAB\x83""X""\x83\x8D\x83""b""\x83""g""\x81""n",
+ "\x92\x86\x8E""~",
+ "\x83""Z""\x81""[""\x83""u""\x82\xB5\x82\xBD\x83""Q""\x81""[""\x83\x80\x82\xC9\x96\xBC\x91""O""\x82\xF0\x82\xC2\x82\xAF\x82\xC4\x89\xBA\x82\xB3\x82\xA2\x81""F",
+ "\x83""Z""\x81""[""\x83""u",
+ "\x83""u""\x83\x89\x83\x93\x83""h""\x83\x93\x81""A""\x82\xE4\x82\xC1\x82\xAD\x82\xE8\x8B""x""\x82\xDF\x82\xE9\x82\xE6\x81""B",
+ "\x83""Q""\x81""[""\x83\x80\x82\xF0\x8F""I""\x97\xB9\x82\xB5\x82\xC4\x82\xA2\x82\xA2\x82\xC5\x82\xB7\x82\xA9\x81""H",
+ "XXXX",
+ "XXXX",
+ "XXXXXXXX",
+ "XXXXXXXXXX",
+ "\x83\x81\x83""C""\x83\x93\x81""E""\x83\x81\x83""j""\x83\x85\x81""[",
+ "\x83""I""\x83\x93",
+ "\x83""I""\x83\x93"" ""\x81""{""\x82""b""\x82""c",
+ "\x83""I""\x83""t",
+ "\x82\xCD\x82\xA2",
+ "\x82\xA2\x82\xA2\x82\xA6",
+ "\xA0\x8E\x02",
+ "\xAC\x8E\x02",
+ "\xB4\x8E\x02",
+ "\xBC\x8E\x02",
+ "\xC4\x8E\x02",
+ "\xD0\x8E\x02",
+ "\xDC\x8E\x02",
+ "\xE4\x8E\x02",
+ "\xEC\x8E\x02",
+ "\x95\xE0\x81""@""\x8D""s""\x81""@""\x91\xAC\x81""@""\x93""x",
+ "\x83\x81\x83""b""\x83""Z""\x81""[""\x83""W""\x91\xAC\x93""x",
+ "\x89\xB9\x81""@""\x81""@""\x81""@""\x81""@""\x81""@""\x8A""y",
+ "\x8C\xF8\x81""@""\x81""@""\x89\xCA\x81""@""\x81""@""\x89\xB9"
+};
+
+static const StringListProvider k1GUIStringsFMTownsJapaneseProvider = { ARRAYSIZE(k1GUIStringsFMTownsJapanese), k1GUIStringsFMTownsJapanese };
+
+static const char *const k1NewGameStringFMTownsJapanese[1] = {
+ "\x81""m""\x8D\xC5\x8F\x89\x82\xA9\x82\xE7\x83""Q""\x81""[""\x83\x80\x82\xF0\x8E""n""\x82\xDF\x82\xE9\x81""n"
+};
+
+static const StringListProvider k1NewGameStringFMTownsJapaneseProvider = { ARRAYSIZE(k1NewGameStringFMTownsJapanese), k1NewGameStringFMTownsJapanese };
+
+static const char *const k1ConfigStringsFMTownsJapanese[9] = {
+ "\x82\xB2\x82\xAD\x92""x""\x82\xAD",
+ "\x92""x""\x81""@""\x82\xAD",
+ "\x95\x81\x81""@""\x92\xCA",
+ "\x91\xAC\x81""@""\x82\xAD",
+ "\x82\xB2\x82\xAD\x91\xAC\x82\xAD",
+ "\x82\xB2\x82\xAD\x92""x""\x82\xAD",
+ "\x95\x81\x81""@""\x92\xCA",
+ "\x91\xAC\x81""@""\x82\xAD",
+ "\x97""v""\x83""N""\x83\x8A\x83""b""\x83""N"
+};
+
+static const StringListProvider k1ConfigStringsFMTownsJapaneseProvider = { ARRAYSIZE(k1ConfigStringsFMTownsJapanese), k1ConfigStringsFMTownsJapanese };
+
+static const byte k1CreditsStringsFMTownsJapanese[1420] = {
+ 0x0D, 0x02, 0x54, 0x48, 0x45, 0x20, 0x45, 0x4E,
+ 0x44, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x02, 0x46, 0x61, 0x62, 0x6C, 0x65,
+ 0x73, 0x20, 0x26, 0x20, 0x46, 0x69, 0x65, 0x6E,
+ 0x64, 0x73, 0x0D, 0x02, 0x42, 0x6F, 0x6F, 0x6B,
+ 0x20, 0x49, 0x0D, 0x02, 0x54, 0x48, 0x45, 0x20,
+ 0x4C, 0x45, 0x47, 0x45, 0x4E, 0x44, 0x20, 0x4F,
+ 0x46, 0x20, 0x4B, 0x59, 0x52, 0x41, 0x4E, 0x44,
+ 0x49, 0x41, 0x0D, 0x0D, 0x50, 0x75, 0x62, 0x6C,
+ 0x69, 0x73, 0x68, 0x65, 0x64, 0x20, 0x62, 0x79,
+ 0x0D, 0x02, 0x57, 0x65, 0x73, 0x74, 0x77, 0x6F,
+ 0x6F, 0x64, 0x20, 0x53, 0x74, 0x75, 0x64, 0x69,
+ 0x6F, 0x73, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
+ 0x03, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F,
+ 0x72, 0x3A, 0x05, 0x04, 0x42, 0x72, 0x65, 0x74,
+ 0x74, 0x20, 0x57, 0x2E, 0x20, 0x53, 0x70, 0x65,
+ 0x72, 0x72, 0x79, 0x0D, 0x0D, 0x03, 0x44, 0x65,
+ 0x73, 0x69, 0x67, 0x6E, 0x3A, 0x05, 0x04, 0x4D,
+ 0x69, 0x63, 0x68, 0x61, 0x65, 0x6C, 0x20, 0x4C,
+ 0x65, 0x67, 0x67, 0x0D, 0x04, 0x52, 0x69, 0x63,
+ 0x6B, 0x20, 0x50, 0x61, 0x72, 0x6B, 0x73, 0x0D,
+ 0x04, 0x50, 0x61, 0x75, 0x6C, 0x20, 0x53, 0x2E,
+ 0x20, 0x4D, 0x75, 0x64, 0x72, 0x61, 0x0D, 0x0D,
+ 0x03, 0x4C, 0x65, 0x61, 0x64, 0x20, 0x50, 0x72,
+ 0x6F, 0x67, 0x72, 0x61, 0x6D, 0x6D, 0x65, 0x72,
+ 0x3A, 0x05, 0x04, 0x4D, 0x69, 0x63, 0x68, 0x61,
+ 0x65, 0x6C, 0x20, 0x4C, 0x65, 0x67, 0x67, 0x0D,
+ 0x0D, 0x03, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74,
+ 0x20, 0x50, 0x72, 0x6F, 0x67, 0x72, 0x61, 0x6D,
+ 0x6D, 0x65, 0x72, 0x3A, 0x05, 0x04, 0x53, 0x63,
+ 0x6F, 0x74, 0x74, 0x20, 0x42, 0x6F, 0x77, 0x65,
+ 0x6E, 0x0D, 0x0D, 0x03, 0x20, 0x20, 0x41, 0x6D,
+ 0x69, 0x67, 0x61, 0x20, 0x20, 0x50, 0x72, 0x6F,
+ 0x67, 0x72, 0x61, 0x6D, 0x6D, 0x65, 0x72, 0x3A,
+ 0x05, 0x04, 0x42, 0x69, 0x6C, 0x6C, 0x20, 0x53,
+ 0x74, 0x6F, 0x6B, 0x65, 0x73, 0x0D, 0x0D, 0x03,
+ 0x20, 0x20, 0x50, 0x43, 0x2D, 0x39, 0x38, 0x20,
+ 0x20, 0x50, 0x72, 0x6F, 0x67, 0x72, 0x61, 0x6D,
+ 0x6D, 0x65, 0x72, 0x3A, 0x05, 0x04, 0x59, 0x75,
+ 0x6B, 0x69, 0x6F, 0x20, 0x53, 0x65, 0x6B, 0x69,
+ 0x67, 0x75, 0x63, 0x68, 0x69, 0x0D, 0x0D, 0x03,
+ 0x46, 0x4D, 0x2D, 0x54, 0x4F, 0x57, 0x4E, 0x53,
+ 0x20, 0x50, 0x72, 0x6F, 0x67, 0x72, 0x61, 0x6D,
+ 0x6D, 0x65, 0x72, 0x3A, 0x05, 0x04, 0x54, 0x61,
+ 0x69, 0x73, 0x65, 0x69, 0x20, 0x4E, 0x6F, 0x6D,
+ 0x75, 0x72, 0x61, 0x0D, 0x03, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x05, 0x04, 0x4F, 0x68, 0x73, 0x68, 0x75,
+ 0x6E, 0x20, 0x4C, 0x65, 0x65, 0x0D, 0x0D, 0x03,
+ 0x49, 0x6E, 0x74, 0x72, 0x6F, 0x20, 0x26, 0x20,
+ 0x46, 0x69, 0x6E, 0x61, 0x6C, 0x65, 0x3A, 0x05,
+ 0x04, 0x43, 0x68, 0x72, 0x69, 0x73, 0x74, 0x6F,
+ 0x70, 0x68, 0x65, 0x72, 0x20, 0x59, 0x61, 0x74,
+ 0x65, 0x73, 0x0D, 0x0D, 0x03, 0x41, 0x72, 0x74,
+ 0x20, 0x26, 0x20, 0x47, 0x72, 0x61, 0x70, 0x68,
+ 0x69, 0x63, 0x73, 0x3A, 0x05, 0x04, 0x52, 0x69,
+ 0x63, 0x6B, 0x20, 0x50, 0x61, 0x72, 0x6B, 0x73,
+ 0x0D, 0x04, 0x52, 0x65, 0x6E, 0x20, 0x4F, 0x6C,
+ 0x73, 0x65, 0x6E, 0x0D, 0x04, 0x4C, 0x6F, 0x75,
+ 0x69, 0x73, 0x65, 0x20, 0x53, 0x61, 0x6E, 0x64,
+ 0x6F, 0x76, 0x61, 0x6C, 0x0D, 0x04, 0x4A, 0x6F,
+ 0x73, 0x65, 0x70, 0x68, 0x20, 0x48, 0x65, 0x77,
+ 0x69, 0x74, 0x74, 0x20, 0x49, 0x56, 0x0D, 0x04,
+ 0x4A, 0x75, 0x64, 0x69, 0x74, 0x68, 0x20, 0x50,
+ 0x65, 0x74, 0x65, 0x72, 0x73, 0x6F, 0x6E, 0x0D,
+ 0x04, 0x41, 0x61, 0x72, 0x6F, 0x6E, 0x20, 0x50,
+ 0x6F, 0x77, 0x65, 0x6C, 0x6C, 0x0D, 0x04, 0x45,
+ 0x6C, 0x69, 0x65, 0x20, 0x41, 0x72, 0x61, 0x62,
+ 0x69, 0x61, 0x6E, 0x0D, 0x04, 0x45, 0x72, 0x69,
+ 0x63, 0x20, 0x53, 0x68, 0x75, 0x6C, 0x74, 0x73,
+ 0x0D, 0x0D, 0x03, 0x41, 0x75, 0x64, 0x69, 0x6F,
+ 0x20, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F,
+ 0x72, 0x3A, 0x05, 0x04, 0x50, 0x61, 0x75, 0x6C,
+ 0x20, 0x53, 0x2E, 0x20, 0x4D, 0x75, 0x64, 0x72,
+ 0x61, 0x0D, 0x0D, 0x03, 0x4D, 0x75, 0x73, 0x69,
+ 0x63, 0x3A, 0x05, 0x04, 0x46, 0x72, 0x61, 0x6E,
+ 0x6B, 0x20, 0x4B, 0x6C, 0x65, 0x70, 0x61, 0x63,
+ 0x6B, 0x69, 0x0D, 0x03, 0x28, 0x39, 0x38, 0x20,
+ 0x26, 0x20, 0x54, 0x4F, 0x57, 0x4E, 0x53, 0x29,
+ 0x05, 0x04, 0x54, 0x61, 0x6B, 0x65, 0x73, 0x68,
+ 0x69, 0x20, 0x41, 0x62, 0x6F, 0x0D, 0x0D, 0x03,
+ 0x53, 0x6F, 0x75, 0x6E, 0x64, 0x20, 0x45, 0x66,
+ 0x66, 0x65, 0x63, 0x74, 0x73, 0x3A, 0x05, 0x04,
+ 0x44, 0x77, 0x69, 0x67, 0x68, 0x74, 0x20, 0x4F,
+ 0x6B, 0x61, 0x68, 0x61, 0x72, 0x61, 0x0D, 0x03,
+ 0x28, 0x50, 0x43, 0x2D, 0x39, 0x38, 0x29, 0x05,
+ 0x04, 0x54, 0x61, 0x6B, 0x65, 0x73, 0x68, 0x69,
+ 0x20, 0x41, 0x62, 0x6F, 0x0D, 0x0D, 0x03, 0x57,
+ 0x72, 0x69, 0x74, 0x65, 0x72, 0x3A, 0x05, 0x04,
+ 0x22, 0x43, 0x6F, 0x63, 0x6F, 0x22, 0x0D, 0x0D,
+ 0x03, 0x54, 0x72, 0x61, 0x6E, 0x73, 0x6C, 0x61,
+ 0x74, 0x6F, 0x72, 0x28, 0x4A, 0x61, 0x70, 0x61,
+ 0x6E, 0x65, 0x73, 0x65, 0x29, 0x3A, 0x05, 0x04,
+ 0x4D, 0x69, 0x6E, 0x6F, 0x72, 0x75, 0x20, 0x4E,
+ 0x61, 0x6B, 0x61, 0x7A, 0x61, 0x77, 0x61, 0x0D,
+ 0x04, 0x59, 0x75, 0x72, 0x69, 0x20, 0x49, 0x74,
+ 0x6F, 0x0D, 0x0D, 0x03, 0x51, 0x75, 0x61, 0x6C,
+ 0x69, 0x74, 0x79, 0x20, 0x41, 0x73, 0x73, 0x75,
+ 0x72, 0x61, 0x6E, 0x63, 0x65, 0x3A, 0x05, 0x04,
+ 0x47, 0x6C, 0x65, 0x6E, 0x6E, 0x20, 0x53, 0x70,
+ 0x65, 0x72, 0x72, 0x79, 0x0D, 0x04, 0x4D, 0x61,
+ 0x74, 0x74, 0x20, 0x43, 0x6F, 0x6C, 0x6C, 0x69,
+ 0x6E, 0x73, 0x0D, 0x04, 0x42, 0x69, 0x6C, 0x6C,
+ 0x20, 0x46, 0x6F, 0x73, 0x74, 0x65, 0x72, 0x0D,
+ 0x04, 0x4D, 0x69, 0x63, 0x68, 0x61, 0x65, 0x6C,
+ 0x20, 0x4C, 0x69, 0x67, 0x68, 0x74, 0x6E, 0x65,
+ 0x72, 0x0D, 0x04, 0x4D, 0x69, 0x63, 0x68, 0x61,
+ 0x65, 0x6C, 0x20, 0x47, 0x61, 0x74, 0x65, 0x72,
+ 0x0D, 0x04, 0x45, 0x75, 0x67, 0x65, 0x6E, 0x65,
+ 0x20, 0x4D, 0x61, 0x72, 0x74, 0x69, 0x6E, 0x0D,
+ 0x04, 0x4D, 0x69, 0x63, 0x68, 0x61, 0x65, 0x6C,
+ 0x20, 0x47, 0x6C, 0x6F, 0x73, 0x65, 0x63, 0x6B,
+ 0x69, 0x0D, 0x04, 0x4A, 0x75, 0x73, 0x74, 0x69,
+ 0x6E, 0x20, 0x4E, 0x6F, 0x72, 0x72, 0x0D, 0x04,
+ 0x54, 0x6F, 0x70, 0x20, 0x53, 0x74, 0x61, 0x72,
+ 0x20, 0x54, 0x65, 0x73, 0x74, 0x69, 0x6E, 0x67,
+ 0x0D, 0x04, 0x54, 0x65, 0x73, 0x74, 0x69, 0x6E,
+ 0x67, 0x20, 0x31, 0x2C, 0x32, 0x2C, 0x33, 0x0D,
+ 0x0D, 0x0D, 0x0D, 0x0D, 0x53, 0x70, 0x65, 0x63,
+ 0x69, 0x61, 0x6C, 0x20, 0x54, 0x68, 0x61, 0x6E,
+ 0x6B, 0x73, 0x20, 0x74, 0x6F, 0x0D, 0x4C, 0x79,
+ 0x6C, 0x65, 0x20, 0x4A, 0x2E, 0x20, 0x48, 0x61,
+ 0x6C, 0x6C, 0x0D, 0x44, 0x61, 0x76, 0x69, 0x64,
+ 0x20, 0x42, 0x69, 0x73, 0x68, 0x6F, 0x70, 0x0D,
+ 0x22, 0x54, 0x68, 0x65, 0x20, 0x44, 0x6F, 0x63,
+ 0x22, 0x0D, 0x61, 0x6E, 0x64, 0x0D, 0x46, 0x69,
+ 0x72, 0x65, 0x62, 0x65, 0x72, 0x72, 0x79, 0x20,
+ 0x47, 0x72, 0x65, 0x65, 0x6E, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x0D, 0x02, 0x43, 0x41, 0x53, 0x54,
+ 0x20, 0x4F, 0x46, 0x20, 0x43, 0x48, 0x41, 0x52,
+ 0x41, 0x43, 0x54, 0x45, 0x52, 0x53, 0x0D, 0x0D,
+ 0x4D, 0x61, 0x6C, 0x63, 0x6F, 0x6C, 0x6D, 0x20,
+ 0x74, 0x68, 0x65, 0x20, 0x4A, 0x65, 0x73, 0x74,
+ 0x65, 0x72, 0x0D, 0x42, 0x72, 0x61, 0x6E, 0x64,
+ 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x42,
+ 0x6F, 0x6C, 0x64, 0x0D, 0x42, 0x72, 0x61, 0x6E,
+ 0x64, 0x79, 0x77, 0x69, 0x6E, 0x65, 0x20, 0x61,
+ 0x6E, 0x64, 0x20, 0x44, 0x61, 0x72, 0x6D, 0x0D,
+ 0x50, 0x72, 0x69, 0x65, 0x73, 0x74, 0x65, 0x73,
+ 0x73, 0x20, 0x42, 0x72, 0x79, 0x6E, 0x6E, 0x0D,
+ 0x5A, 0x61, 0x6E, 0x74, 0x68, 0x69, 0x61, 0x2C,
+ 0x20, 0x4C, 0x61, 0x64, 0x79, 0x20, 0x6F, 0x66,
+ 0x20, 0x41, 0x6C, 0x63, 0x68, 0x65, 0x6D, 0x79,
+ 0x0D, 0x48, 0x65, 0x72, 0x6D, 0x61, 0x6E, 0x20,
+ 0x74, 0x68, 0x65, 0x20, 0x48, 0x61, 0x6E, 0x64,
+ 0x79, 0x6D, 0x61, 0x6E, 0x0D, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x01,
+ 0x41, 0x6E, 0x79, 0x20, 0x63, 0x68, 0x61, 0x72,
+ 0x61, 0x63, 0x74, 0x65, 0x72, 0x73, 0x20, 0x69,
+ 0x6E, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x67,
+ 0x61, 0x6D, 0x65, 0x20, 0x77, 0x68, 0x6F, 0x20,
+ 0x62, 0x65, 0x61, 0x72, 0x0D, 0x01, 0x72, 0x65,
+ 0x73, 0x65, 0x6D, 0x62, 0x6C, 0x61, 0x6E, 0x63,
+ 0x65, 0x20, 0x74, 0x6F, 0x20, 0x70, 0x65, 0x72,
+ 0x73, 0x6F, 0x6E, 0x73, 0x20, 0x6C, 0x69, 0x76,
+ 0x69, 0x6E, 0x67, 0x20, 0x6F, 0x72, 0x0D, 0x01,
+ 0x64, 0x65, 0x61, 0x64, 0x20, 0x61, 0x72, 0x65,
+ 0x20, 0x70, 0x75, 0x72, 0x65, 0x6C, 0x79, 0x20,
+ 0x63, 0x6F, 0x69, 0x6E, 0x63, 0x69, 0x64, 0x65,
+ 0x6E, 0x74, 0x61, 0x6C, 0x2E, 0x0D, 0x0D, 0x0D,
+ 0x01, 0x43, 0x6F, 0x70, 0x79, 0x72, 0x69, 0x67,
+ 0x68, 0x74, 0x20, 0x28, 0x43, 0x29, 0x20, 0x31,
+ 0x39, 0x39, 0x32, 0x2C, 0x20, 0x57, 0x65, 0x73,
+ 0x74, 0x77, 0x6F, 0x6F, 0x64, 0x20, 0x53, 0x74,
+ 0x75, 0x64, 0x69, 0x6F, 0x73, 0x2C, 0x20, 0x49,
+ 0x6E, 0x63, 0x2E, 0x0D, 0x01, 0x43, 0x6F, 0x70,
+ 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x28,
+ 0x43, 0x29, 0x20, 0x31, 0x39, 0x39, 0x33, 0x2C,
+ 0x20, 0x53, 0x74, 0x61, 0x72, 0x20, 0x43, 0x72,
+ 0x61, 0x66, 0x74, 0x2C, 0x20, 0x49, 0x6E, 0x63,
+ 0x2E, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x0D,
+ 0x01, 0x41, 0x6C, 0x6C, 0x20, 0x72, 0x69, 0x67,
+ 0x68, 0x74, 0x73, 0x20, 0x72, 0x65, 0x73, 0x65,
+ 0x72, 0x76, 0x65, 0x64, 0x2E, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x0D, 0x00
+};
+
+static const ByteProvider k1CreditsStringsFMTownsJapaneseProvider = { ARRAYSIZE(k1CreditsStringsFMTownsJapanese), k1CreditsStringsFMTownsJapanese };
+
diff --git a/devtools/create_kyradat/resources/lok_pc98.h b/devtools/create_kyradat/resources/lok_pc98.h
new file mode 100644
index 0000000000..fc628f0e3c
--- /dev/null
+++ b/devtools/create_kyradat/resources/lok_pc98.h
@@ -0,0 +1,2000 @@
+static const byte k1KallakWritingSeqPC98[2035] = {
+ 0x00, 0x00, 0x01, 0x0E, 0x1A, 0x1B, 0x17, 0x00,
+ 0x00, 0x00, 0x3F, 0x01, 0xC7, 0x0C, 0x00, 0x0C,
+ 0x00, 0x19, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00,
+ 0x10, 0x05, 0x00, 0x95, 0x00, 0x20, 0x09, 0x14,
+ 0x0F, 0x2E, 0x02, 0x00, 0x01, 0x00, 0x00, 0x10,
+ 0x05, 0x01, 0x94, 0x00, 0x1B, 0x07, 0x06, 0x00,
+ 0x18, 0x1D, 0x02, 0x00, 0x02, 0x00, 0x00, 0x10,
+ 0x05, 0x02, 0x93, 0x00, 0x14, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x03, 0x00, 0x00, 0x10, 0x05, 0x01,
+ 0x90, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x04, 0x00, 0x00, 0x10, 0x05, 0x00, 0x8D, 0x00,
+ 0x20, 0x07, 0x06, 0x00, 0x18, 0x1D, 0x02, 0x00,
+ 0x05, 0x00, 0x00, 0x10, 0x05, 0x01, 0x8A, 0x00,
+ 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00, 0x06, 0x00,
+ 0x00, 0x10, 0x05, 0x02, 0x88, 0x00, 0x14, 0x07,
+ 0x06, 0x00, 0x18, 0x1D, 0x02, 0x00, 0x07, 0x00,
+ 0x00, 0x10, 0x05, 0x01, 0x85, 0x00, 0x1B, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00, 0x10,
+ 0x05, 0x00, 0x82, 0x00, 0x20, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x09, 0x00, 0x00, 0x10, 0x05, 0x01,
+ 0x7F, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x0A, 0x00, 0x00, 0x10, 0x05, 0x02, 0x7C, 0x00,
+ 0x14, 0x07, 0x06, 0x00, 0x18, 0x1D, 0x02, 0x00,
+ 0x0B, 0x00, 0x00, 0x10, 0x05, 0x01, 0x79, 0x00,
+ 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00, 0x0C, 0x00,
+ 0x00, 0x10, 0x05, 0x00, 0x76, 0x00, 0x20, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x0D, 0x00, 0x00, 0x10,
+ 0x05, 0x01, 0x73, 0x00, 0x1B, 0x07, 0x06, 0x00,
+ 0x18, 0x1D, 0x02, 0x00, 0x0E, 0x00, 0x00, 0x10,
+ 0x05, 0x02, 0x70, 0x00, 0x14, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x0F, 0x00, 0x00, 0x10, 0x05, 0x01,
+ 0x6D, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x10, 0x00, 0x00, 0x10, 0x05, 0x00, 0x6A, 0x00,
+ 0x20, 0x07, 0x06, 0x00, 0x02, 0x00, 0x11, 0x00,
+ 0x00, 0x10, 0x05, 0x01, 0x67, 0x00, 0x1B, 0x07,
+ 0x06, 0x00, 0x18, 0x1D, 0x02, 0x00, 0x12, 0x00,
+ 0x00, 0x10, 0x05, 0x02, 0x65, 0x00, 0x14, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x13, 0x00, 0x00, 0x10,
+ 0x05, 0x01, 0x63, 0x00, 0x1B, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x14, 0x00, 0x00, 0x10, 0x05, 0x00,
+ 0x63, 0x00, 0x20, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x15, 0x00, 0x00, 0x10, 0x05, 0x00, 0x65, 0x00,
+ 0x1F, 0x07, 0x06, 0x00, 0x02, 0x00, 0x16, 0x00,
+ 0x00, 0x10, 0x05, 0x00, 0x6A, 0x00, 0x1D, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x17, 0x00, 0x00, 0x10,
+ 0x05, 0x00, 0x70, 0x00, 0x19, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x18, 0x00, 0x00, 0x10, 0x05, 0x00,
+ 0x76, 0x00, 0x17, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x19, 0x00, 0x00, 0x10, 0x05, 0x00, 0x7C, 0x00,
+ 0x16, 0x07, 0x06, 0x00, 0x02, 0x00, 0x1A, 0x00,
+ 0x00, 0x10, 0x05, 0x00, 0x82, 0x00, 0x17, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x1B, 0x00, 0x00, 0x10,
+ 0x05, 0x00, 0x88, 0x00, 0x19, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x1C, 0x00, 0x00, 0x10, 0x05, 0x00,
+ 0x8D, 0x00, 0x1D, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x1D, 0x00, 0x00, 0x10, 0x05, 0x00, 0x93, 0x00,
+ 0x1F, 0x07, 0x06, 0x00, 0x1C, 0x1B, 0x0F, 0x2F,
+ 0x02, 0x00, 0x01, 0x00, 0x00, 0x10, 0x05, 0x01,
+ 0x94, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x01, 0x00, 0x00, 0x10, 0x05, 0x01, 0x94, 0x00,
+ 0x1B, 0x07, 0x06, 0x00, 0x18, 0x1D, 0x02, 0x00,
+ 0x02, 0x00, 0x00, 0x10, 0x05, 0x02, 0x93, 0x00,
+ 0x14, 0x07, 0x06, 0x00, 0x02, 0x00, 0x02, 0x00,
+ 0x00, 0x10, 0x05, 0x02, 0x93, 0x00, 0x14, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x03, 0x00, 0x00, 0x10,
+ 0x05, 0x01, 0x90, 0x00, 0x1B, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x04, 0x00, 0x00, 0x10, 0x05, 0x00,
+ 0x8D, 0x00, 0x20, 0x07, 0x06, 0x00, 0x18, 0x1D,
+ 0x02, 0x00, 0x05, 0x00, 0x00, 0x10, 0x05, 0x01,
+ 0x8A, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x05, 0x00, 0x00, 0x10, 0x05, 0x01, 0x8A, 0x00,
+ 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00, 0x06, 0x00,
+ 0x00, 0x10, 0x05, 0x02, 0x88, 0x00, 0x14, 0x07,
+ 0x06, 0x00, 0x18, 0x1D, 0x02, 0x00, 0x07, 0x00,
+ 0x00, 0x10, 0x05, 0x01, 0x85, 0x00, 0x1B, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00, 0x10,
+ 0x05, 0x00, 0x82, 0x00, 0x20, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x09, 0x00, 0x00, 0x10, 0x05, 0x01,
+ 0x7F, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x0A, 0x00, 0x00, 0x10, 0x05, 0x02, 0x7C, 0x00,
+ 0x14, 0x07, 0x06, 0x00, 0x18, 0x1D, 0x02, 0x00,
+ 0x0B, 0x00, 0x00, 0x10, 0x05, 0x01, 0x79, 0x00,
+ 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00, 0x0C, 0x00,
+ 0x00, 0x10, 0x05, 0x00, 0x76, 0x00, 0x20, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x0D, 0x00, 0x00, 0x10,
+ 0x05, 0x01, 0x73, 0x00, 0x1B, 0x07, 0x06, 0x00,
+ 0x18, 0x1D, 0x02, 0x00, 0x0E, 0x00, 0x00, 0x10,
+ 0x05, 0x02, 0x70, 0x00, 0x14, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x0F, 0x00, 0x00, 0x10, 0x05, 0x01,
+ 0x6D, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x10, 0x00, 0x00, 0x10, 0x05, 0x00, 0x6A, 0x00,
+ 0x20, 0x07, 0x06, 0x00, 0x02, 0x00, 0x11, 0x00,
+ 0x00, 0x10, 0x05, 0x01, 0x67, 0x00, 0x1B, 0x07,
+ 0x06, 0x00, 0x18, 0x1D, 0x02, 0x00, 0x12, 0x00,
+ 0x00, 0x10, 0x05, 0x02, 0x65, 0x00, 0x14, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x13, 0x00, 0x00, 0x10,
+ 0x05, 0x01, 0x63, 0x00, 0x1B, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x14, 0x00, 0x00, 0x10, 0x05, 0x00,
+ 0x63, 0x00, 0x20, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x15, 0x00, 0x00, 0x10, 0x05, 0x00, 0x65, 0x00,
+ 0x1F, 0x07, 0x06, 0x00, 0x02, 0x00, 0x16, 0x00,
+ 0x00, 0x10, 0x05, 0x00, 0x6A, 0x00, 0x1D, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x17, 0x00, 0x00, 0x10,
+ 0x05, 0x00, 0x70, 0x00, 0x19, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x18, 0x00, 0x00, 0x10, 0x05, 0x00,
+ 0x76, 0x00, 0x17, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x19, 0x00, 0x00, 0x10, 0x05, 0x00, 0x7C, 0x00,
+ 0x16, 0x07, 0x06, 0x00, 0x02, 0x00, 0x1A, 0x00,
+ 0x00, 0x10, 0x05, 0x00, 0x82, 0x00, 0x17, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x1B, 0x00, 0x00, 0x10,
+ 0x05, 0x00, 0x88, 0x00, 0x19, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x1C, 0x00, 0x00, 0x10, 0x05, 0x00,
+ 0x8D, 0x00, 0x1D, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x1D, 0x00, 0x00, 0x10, 0x05, 0x00, 0x93, 0x00,
+ 0x1F, 0x07, 0x06, 0x00, 0x1C, 0x1B, 0x0F, 0x30,
+ 0x02, 0x00, 0x01, 0x00, 0x00, 0x10, 0x05, 0x01,
+ 0x94, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x01, 0x00, 0x00, 0x10, 0x05, 0x01, 0x94, 0x00,
+ 0x1B, 0x07, 0x06, 0x00, 0x18, 0x1D, 0x02, 0x00,
+ 0x02, 0x00, 0x00, 0x10, 0x05, 0x02, 0x93, 0x00,
+ 0x14, 0x07, 0x06, 0x00, 0x02, 0x00, 0x02, 0x00,
+ 0x00, 0x10, 0x05, 0x02, 0x93, 0x00, 0x14, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x10,
+ 0x05, 0x02, 0x93, 0x00, 0x14, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x03, 0x00, 0x00, 0x10, 0x05, 0x01,
+ 0x90, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x03, 0x00, 0x00, 0x10, 0x05, 0x01, 0x90, 0x00,
+ 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00, 0x04, 0x00,
+ 0x00, 0x10, 0x05, 0x00, 0x8D, 0x00, 0x20, 0x07,
+ 0x06, 0x00, 0x18, 0x1D, 0x02, 0x00, 0x05, 0x00,
+ 0x00, 0x10, 0x05, 0x01, 0x8A, 0x00, 0x1B, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x06, 0x00, 0x00, 0x10,
+ 0x05, 0x02, 0x88, 0x00, 0x14, 0x07, 0x06, 0x00,
+ 0x18, 0x1D, 0x02, 0x00, 0x07, 0x00, 0x00, 0x10,
+ 0x05, 0x01, 0x85, 0x00, 0x1B, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x08, 0x00, 0x00, 0x10, 0x05, 0x00,
+ 0x82, 0x00, 0x20, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x09, 0x00, 0x00, 0x10, 0x05, 0x01, 0x7F, 0x00,
+ 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00, 0x0A, 0x00,
+ 0x00, 0x10, 0x05, 0x02, 0x7C, 0x00, 0x14, 0x07,
+ 0x06, 0x00, 0x18, 0x1D, 0x02, 0x00, 0x0B, 0x00,
+ 0x00, 0x10, 0x05, 0x01, 0x79, 0x00, 0x1B, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x0C, 0x00, 0x00, 0x10,
+ 0x05, 0x00, 0x76, 0x00, 0x20, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x0D, 0x00, 0x00, 0x10, 0x05, 0x01,
+ 0x73, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x18, 0x1D,
+ 0x02, 0x00, 0x0E, 0x00, 0x00, 0x10, 0x05, 0x02,
+ 0x70, 0x00, 0x14, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x0F, 0x00, 0x00, 0x10, 0x05, 0x01, 0x6D, 0x00,
+ 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00, 0x10, 0x00,
+ 0x00, 0x10, 0x05, 0x00, 0x6A, 0x00, 0x20, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x11, 0x00, 0x00, 0x10,
+ 0x05, 0x01, 0x67, 0x00, 0x1B, 0x07, 0x06, 0x00,
+ 0x18, 0x1D, 0x02, 0x00, 0x12, 0x00, 0x00, 0x10,
+ 0x05, 0x02, 0x65, 0x00, 0x14, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x13, 0x00, 0x00, 0x10, 0x05, 0x01,
+ 0x63, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x14, 0x00, 0x00, 0x10, 0x05, 0x00, 0x63, 0x00,
+ 0x20, 0x07, 0x06, 0x00, 0x02, 0x00, 0x15, 0x00,
+ 0x00, 0x10, 0x05, 0x00, 0x65, 0x00, 0x1F, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x16, 0x00, 0x00, 0x10,
+ 0x05, 0x00, 0x6A, 0x00, 0x1D, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x17, 0x00, 0x00, 0x10, 0x05, 0x00,
+ 0x70, 0x00, 0x19, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x18, 0x00, 0x00, 0x10, 0x05, 0x00, 0x76, 0x00,
+ 0x17, 0x07, 0x06, 0x00, 0x02, 0x00, 0x19, 0x00,
+ 0x00, 0x10, 0x05, 0x00, 0x7C, 0x00, 0x16, 0x07,
+ 0x06, 0x00, 0x02, 0x00, 0x1A, 0x00, 0x00, 0x10,
+ 0x05, 0x00, 0x82, 0x00, 0x17, 0x07, 0x06, 0x00,
+ 0x02, 0x00, 0x1B, 0x00, 0x00, 0x10, 0x05, 0x00,
+ 0x88, 0x00, 0x19, 0x07, 0x06, 0x00, 0x02, 0x00,
+ 0x1C, 0x00, 0x00, 0x10, 0x05, 0x00, 0x8D, 0x00,
+ 0x1D, 0x07, 0x06, 0x00, 0x02, 0x00, 0x1D, 0x00,
+ 0x00, 0x10, 0x05, 0x00, 0x93, 0x00, 0x1F, 0x07,
+ 0x06, 0x00, 0x1C, 0x06, 0x3C, 0x00, 0x1B, 0x0F,
+ 0x31, 0x02, 0x00, 0x00, 0x00, 0x00, 0x10, 0x05,
+ 0x00, 0x95, 0x00, 0x20, 0x07, 0x06, 0x00, 0x02,
+ 0x00, 0x00, 0x00, 0x00, 0x10, 0x05, 0x00, 0x95,
+ 0x00, 0x20, 0x07, 0x06, 0x00, 0x18, 0x1D, 0x02,
+ 0x00, 0x01, 0x00, 0x00, 0x10, 0x05, 0x01, 0x94,
+ 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00, 0x01,
+ 0x00, 0x00, 0x10, 0x05, 0x01, 0x94, 0x00, 0x1B,
+ 0x07, 0x06, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00,
+ 0x10, 0x05, 0x02, 0x93, 0x00, 0x14, 0x07, 0x06,
+ 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x10, 0x05,
+ 0x02, 0x93, 0x00, 0x14, 0x07, 0x06, 0x00, 0x18,
+ 0x1D, 0x02, 0x00, 0x03, 0x00, 0x00, 0x10, 0x05,
+ 0x01, 0x90, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02,
+ 0x00, 0x04, 0x00, 0x00, 0x10, 0x05, 0x00, 0x8D,
+ 0x00, 0x20, 0x07, 0x06, 0x00, 0x02, 0x00, 0x05,
+ 0x00, 0x00, 0x10, 0x05, 0x01, 0x8A, 0x00, 0x1B,
+ 0x07, 0x06, 0x00, 0x18, 0x1D, 0x02, 0x00, 0x06,
+ 0x00, 0x00, 0x10, 0x05, 0x02, 0x88, 0x00, 0x14,
+ 0x07, 0x06, 0x00, 0x02, 0x00, 0x07, 0x00, 0x00,
+ 0x10, 0x05, 0x01, 0x85, 0x00, 0x1B, 0x07, 0x06,
+ 0x00, 0x18, 0x1D, 0x02, 0x00, 0x08, 0x00, 0x00,
+ 0x10, 0x05, 0x00, 0x82, 0x00, 0x20, 0x07, 0x06,
+ 0x00, 0x02, 0x00, 0x09, 0x00, 0x00, 0x10, 0x05,
+ 0x01, 0x7F, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02,
+ 0x00, 0x0A, 0x00, 0x00, 0x10, 0x05, 0x02, 0x7C,
+ 0x00, 0x14, 0x07, 0x06, 0x00, 0x18, 0x1D, 0x02,
+ 0x00, 0x0B, 0x00, 0x00, 0x10, 0x05, 0x01, 0x79,
+ 0x00, 0x1B, 0x07, 0x06, 0x00, 0x02, 0x00, 0x0C,
+ 0x00, 0x00, 0x10, 0x05, 0x00, 0x76, 0x00, 0x20,
+ 0x07, 0x06, 0x00, 0x18, 0x1D, 0x02, 0x00, 0x0D,
+ 0x00, 0x00, 0x10, 0x05, 0x01, 0x73, 0x00, 0x1B,
+ 0x07, 0x06, 0x00, 0x02, 0x00, 0x0E, 0x00, 0x00,
+ 0x10, 0x05, 0x02, 0x70, 0x00, 0x14, 0x07, 0x06,
+ 0x00, 0x02, 0x00, 0x0F, 0x00, 0x00, 0x10, 0x05,
+ 0x01, 0x6D, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x18,
+ 0x1D, 0x02, 0x00, 0x10, 0x00, 0x00, 0x10, 0x05,
+ 0x00, 0x6A, 0x00, 0x20, 0x07, 0x06, 0x00, 0x02,
+ 0x00, 0x11, 0x00, 0x00, 0x10, 0x05, 0x01, 0x67,
+ 0x00, 0x1B, 0x07, 0x06, 0x00, 0x18, 0x1D, 0x02,
+ 0x00, 0x12, 0x00, 0x00, 0x10, 0x05, 0x02, 0x65,
+ 0x00, 0x14, 0x07, 0x06, 0x00, 0x06, 0x3C, 0x00,
+ 0x02, 0x00, 0x1E, 0x00, 0x00, 0x10, 0x08, 0x12,
+ 0x06, 0x1E, 0x00, 0x0A, 0x01, 0x02, 0x00, 0x1F,
+ 0x00, 0x00, 0x10, 0x07, 0x0A, 0x00, 0x02, 0x00,
+ 0x20, 0x00, 0x00, 0x10, 0x07, 0x0A, 0x00, 0x02,
+ 0x00, 0x21, 0x00, 0x00, 0x10, 0x07, 0x0A, 0x00,
+ 0x02, 0x00, 0x22, 0x00, 0x00, 0x10, 0x07, 0x0A,
+ 0x00, 0x0B, 0x01, 0x02, 0x00, 0x18, 0x1F, 0x06,
+ 0x0A, 0x00, 0x02, 0x00, 0x23, 0x00, 0x00, 0x10,
+ 0x07, 0x14, 0x00, 0x18, 0x1E, 0x02, 0x00, 0x24,
+ 0x00, 0x00, 0x10, 0x07, 0x14, 0x00, 0x02, 0x00,
+ 0x25, 0x00, 0x00, 0x10, 0x07, 0x14, 0x00, 0x18,
+ 0x1F, 0x02, 0x00, 0x26, 0x00, 0x00, 0x10, 0x07,
+ 0x14, 0x00, 0x02, 0x00, 0x27, 0x00, 0x00, 0x10,
+ 0x07, 0x14, 0x00, 0x18, 0x1E, 0x02, 0x00, 0x28,
+ 0x00, 0x00, 0x10, 0x08, 0x06, 0x3C, 0x00, 0x18,
+ 0x1E, 0x03, 0x00, 0x07, 0x06, 0x00, 0x18, 0x1E,
+ 0x03, 0x00, 0x07, 0x06, 0x00, 0x03, 0x00, 0x07,
+ 0x06, 0x00, 0x03, 0x00, 0x07, 0x06, 0x00, 0x03,
+ 0x00, 0x07, 0x06, 0x00, 0x03, 0x00, 0x07, 0x06,
+ 0x00, 0x03, 0x00, 0x07, 0x06, 0x00, 0x18, 0x1E,
+ 0x03, 0x00, 0x07, 0x06, 0x00, 0x03, 0x00, 0x07,
+ 0x06, 0x00, 0x03, 0x00, 0x07, 0x06, 0x00, 0x03,
+ 0x00, 0x07, 0x06, 0x00, 0x03, 0x00, 0x07, 0x06,
+ 0x00, 0x03, 0x00, 0x07, 0x06, 0x00, 0x03, 0x00,
+ 0x07, 0x06, 0x00, 0x03, 0x00, 0x07, 0x06, 0x00,
+ 0x03, 0x00, 0x07, 0x06, 0x00, 0x18, 0x1E, 0x03,
+ 0x00, 0x07, 0x06, 0x00, 0x03, 0x00, 0x07, 0x06,
+ 0x00, 0x03, 0x00, 0x07, 0x06, 0x00, 0x03, 0x00,
+ 0x07, 0x06, 0x00, 0x03, 0x00, 0x07, 0x06, 0x00,
+ 0x03, 0x00, 0x07, 0x06, 0x00, 0x03, 0x00, 0x07,
+ 0x06, 0x00, 0x03, 0x00, 0x07, 0x06, 0x00, 0x18,
+ 0x1E, 0x03, 0x00, 0x07, 0x06, 0x00, 0x03, 0x00,
+ 0x07, 0x06, 0x00, 0x03, 0x00, 0x07, 0x06, 0x00,
+ 0x03, 0x00, 0x07, 0x06, 0x00, 0x03, 0x00, 0x07,
+ 0x06, 0x00, 0x03, 0x00, 0x07, 0x06, 0x00, 0x03,
+ 0x00, 0x07, 0x06, 0x00, 0x03, 0x00, 0x07, 0x06,
+ 0x00, 0x03, 0x00, 0x07, 0x06, 0x00, 0x03, 0x00,
+ 0x07, 0x06, 0x00, 0x13, 0x1C, 0x19, 0x01, 0x13,
+ 0x01, 0x00, 0x1D
+};
+
+static const ByteProvider k1KallakWritingSeqPC98Provider = { ARRAYSIZE(k1KallakWritingSeqPC98), k1KallakWritingSeqPC98 };
+
+static const byte k1MalcolmTreeSeqPC98[535] = {
+ 0x00, 0x01, 0x00, 0x1A, 0x0E, 0x17, 0x00, 0x00,
+ 0x00, 0x3F, 0x01, 0xC7, 0x0C, 0x00, 0x0C, 0x01,
+ 0x0D, 0x01, 0x09, 0x02, 0x01, 0x00, 0x00, 0x00,
+ 0x10, 0x19, 0x03, 0x09, 0x18, 0x1E, 0x14, 0x18,
+ 0x1F, 0x0A, 0x00, 0x03, 0x01, 0x06, 0x06, 0x00,
+ 0x0B, 0x00, 0x1F, 0x00, 0x18, 0x19, 0x0A, 0x01,
+ 0x03, 0x01, 0x06, 0x06, 0x00, 0x0B, 0x01, 0x0F,
+ 0x00, 0x18, 0x26, 0x10, 0x1F, 0x50, 0x00, 0x2D,
+ 0x05, 0x0A, 0x02, 0x03, 0x01, 0x06, 0x06, 0x00,
+ 0x0B, 0x02, 0x10, 0x00, 0x11, 0x18, 0x1F, 0x03,
+ 0x01, 0x06, 0x06, 0x00, 0x03, 0x01, 0x06, 0x06,
+ 0x00, 0x03, 0x01, 0x06, 0x06, 0x00, 0x18, 0x24,
+ 0x18, 0x1F, 0x03, 0x01, 0x06, 0x06, 0x00, 0x18,
+ 0x1E, 0x0A, 0x03, 0x03, 0x01, 0x06, 0x06, 0x00,
+ 0x0B, 0x03, 0x15, 0x00, 0x10, 0x16, 0x50, 0x00,
+ 0x2D, 0x05, 0x18, 0x1F, 0x03, 0x01, 0x06, 0x06,
+ 0x00, 0x03, 0x01, 0x06, 0x06, 0x00, 0x18, 0x1E,
+ 0x03, 0x01, 0x06, 0x06, 0x00, 0x03, 0x01, 0x06,
+ 0x06, 0x00, 0x18, 0x1F, 0x03, 0x01, 0x06, 0x06,
+ 0x00, 0x03, 0x01, 0x06, 0x06, 0x00, 0x03, 0x01,
+ 0x06, 0x06, 0x00, 0x03, 0x01, 0x06, 0x06, 0x00,
+ 0x18, 0x1E, 0x03, 0x01, 0x06, 0x06, 0x00, 0x18,
+ 0x1A, 0x18, 0x1E, 0x0A, 0x05, 0x03, 0x01, 0x06,
+ 0x06, 0x00, 0x0B, 0x05, 0x09, 0x00, 0x11, 0x0A,
+ 0x06, 0x03, 0x01, 0x06, 0x06, 0x00, 0x0B, 0x06,
+ 0x14, 0x00, 0x18, 0x1A, 0x18, 0x1F, 0x10, 0x17,
+ 0x50, 0x00, 0x2D, 0x05, 0x06, 0x3C, 0x00, 0x0A,
+ 0x07, 0x03, 0x01, 0x06, 0x06, 0x00, 0x0B, 0x07,
+ 0x06, 0x00, 0x18, 0x1E, 0x06, 0x1E, 0x00, 0x10,
+ 0x18, 0x50, 0x00, 0x2D, 0x05, 0x03, 0x01, 0x06,
+ 0x06, 0x00, 0x03, 0x01, 0x06, 0x06, 0x00, 0x03,
+ 0x01, 0x06, 0x06, 0x00, 0x0A, 0x08, 0x04, 0x01,
+ 0x06, 0x06, 0x00, 0x04, 0x01, 0x06, 0x06, 0x00,
+ 0x03, 0x01, 0x06, 0x06, 0x00, 0x03, 0x01, 0x06,
+ 0x06, 0x00, 0x0B, 0x08, 0x01, 0x00, 0x03, 0x01,
+ 0x06, 0x06, 0x00, 0x06, 0x78, 0x00, 0x0A, 0x09,
+ 0x03, 0x01, 0x06, 0x06, 0x00, 0x0B, 0x09, 0x04,
+ 0x00, 0x18, 0x1B, 0x0A, 0x0A, 0x03, 0x01, 0x06,
+ 0x06, 0x00, 0x0B, 0x0A, 0x09, 0x00, 0x06, 0x14,
+ 0x00, 0x10, 0x19, 0x50, 0x00, 0x2D, 0x05, 0x03,
+ 0x01, 0x06, 0x06, 0x00, 0x03, 0x01, 0x06, 0x06,
+ 0x00, 0x0A, 0x0B, 0x03, 0x01, 0x06, 0x06, 0x00,
+ 0x04, 0x01, 0x06, 0x06, 0x00, 0x04, 0x01, 0x06,
+ 0x06, 0x00, 0x03, 0x01, 0x06, 0x06, 0x00, 0x03,
+ 0x01, 0x06, 0x06, 0x00, 0x0B, 0x0B, 0x01, 0x00,
+ 0x03, 0x01, 0x06, 0x06, 0x00, 0x03, 0x01, 0x06,
+ 0x06, 0x00, 0x03, 0x01, 0x06, 0x06, 0x00, 0x10,
+ 0x1A, 0x50, 0x00, 0x2D, 0x05, 0x0A, 0x0C, 0x03,
+ 0x01, 0x06, 0x06, 0x00, 0x0B, 0x0C, 0x12, 0x00,
+ 0x03, 0x01, 0x01, 0x01, 0x11, 0x15, 0x00, 0x02,
+ 0x00, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00,
+ 0x10, 0x10, 0x1C, 0x50, 0x00, 0x2D, 0x05, 0x06,
+ 0x3C, 0x00, 0x03, 0x02, 0x03, 0x02, 0x06, 0x06,
+ 0x00, 0x11, 0x18, 0x1C, 0x0A, 0x0F, 0x03, 0x02,
+ 0x06, 0x06, 0x00, 0x0B, 0x0F, 0x0D, 0x00, 0x10,
+ 0x1D, 0x50, 0x00, 0x2D, 0x05, 0x0A, 0x10, 0x03,
+ 0x02, 0x06, 0x06, 0x00, 0x03, 0x02, 0x06, 0x06,
+ 0x00, 0x03, 0x02, 0x06, 0x06, 0x00, 0x04, 0x02,
+ 0x06, 0x06, 0x00, 0x04, 0x02, 0x06, 0x06, 0x00,
+ 0x04, 0x02, 0x06, 0x06, 0x00, 0x0B, 0x10, 0x02,
+ 0x00, 0x10, 0x1E, 0x50, 0x00, 0x2D, 0x05, 0x0A,
+ 0x11, 0x03, 0x02, 0x06, 0x06, 0x00, 0x03, 0x02,
+ 0x06, 0x06, 0x00, 0x03, 0x02, 0x06, 0x06, 0x00,
+ 0x04, 0x02, 0x06, 0x06, 0x00, 0x04, 0x02, 0x06,
+ 0x06, 0x00, 0x04, 0x02, 0x06, 0x06, 0x00, 0x0B,
+ 0x11, 0x02, 0x00, 0x06, 0xB4, 0x00, 0x13, 0x19,
+ 0x01, 0x13, 0x01, 0x01, 0x01, 0x02, 0x1D
+};
+
+static const ByteProvider k1MalcolmTreeSeqPC98Provider = { ARRAYSIZE(k1MalcolmTreeSeqPC98), k1MalcolmTreeSeqPC98 };
+
+static const byte k1WestwoodLogoSeqPC98[75] = {
+ 0x00, 0x03, 0x01, 0x1A, 0x02, 0x03, 0x00, 0x00,
+ 0x00, 0x00, 0x16, 0x01, 0x06, 0x06, 0x00, 0x06,
+ 0x3C, 0x00, 0x18, 0x14, 0x0A, 0x00, 0x03, 0x03,
+ 0x16, 0x01, 0x0B, 0x00, 0x08, 0x00, 0x06, 0x3C,
+ 0x00, 0x18, 0x27, 0x0A, 0x01, 0x03, 0x03, 0x16,
+ 0x01, 0x0B, 0x01, 0x0B, 0x00, 0x06, 0x78, 0x00,
+ 0x18, 0x14, 0x02, 0x03, 0x0A, 0x00, 0x00, 0x00,
+ 0x16, 0x01, 0x06, 0x06, 0x00, 0x0A, 0x02, 0x04,
+ 0x03, 0x16, 0x01, 0x0B, 0x02, 0x09, 0x00, 0x13,
+ 0x01, 0x03, 0x1D
+};
+
+static const ByteProvider k1WestwoodLogoSeqPC98Provider = { ARRAYSIZE(k1WestwoodLogoSeqPC98), k1WestwoodLogoSeqPC98 };
+
+static const byte k1KyrandiaLogoSeqPC98[92] = {
+ 0x15, 0x00, 0x02, 0x00, 0x06, 0x01, 0x1A, 0x02,
+ 0x06, 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x06,
+ 0x06, 0x00, 0x18, 0x14, 0x16, 0x04, 0x0A, 0x00,
+ 0x03, 0x06, 0x16, 0x00, 0x0B, 0x00, 0x0B, 0x00,
+ 0x06, 0x3C, 0x00, 0x18, 0x27, 0x0A, 0x01, 0x03,
+ 0x06, 0x16, 0x00, 0x0B, 0x01, 0x0F, 0x00, 0x06,
+ 0x3C, 0x00, 0x18, 0x27, 0x0A, 0x02, 0x04, 0x06,
+ 0x16, 0x00, 0x0B, 0x02, 0x0F, 0x00, 0x02, 0x06,
+ 0x0D, 0x00, 0x00, 0x00, 0x16, 0x00, 0x06, 0x06,
+ 0x00, 0x06, 0x78, 0x00, 0x18, 0x14, 0x0A, 0x02,
+ 0x04, 0x06, 0x16, 0x00, 0x0B, 0x02, 0x0C, 0x00,
+ 0x13, 0x01, 0x06, 0x1D
+};
+
+static const ByteProvider k1KyrandiaLogoSeqPC98Provider = { ARRAYSIZE(k1KyrandiaLogoSeqPC98), k1KyrandiaLogoSeqPC98 };
+
+static const byte k1KallakMalcolmSeqPC98[620] = {
+ 0x00, 0x04, 0x01, 0x1A, 0x0E, 0x17, 0x00, 0x00,
+ 0x00, 0x3F, 0x01, 0xC7, 0x0C, 0x00, 0x0C, 0x03,
+ 0x0D, 0x00, 0x17, 0x00, 0x00, 0x88, 0x3F, 0x01,
+ 0xC7, 0x0C, 0x02, 0x19, 0x00, 0x02, 0x04, 0x00,
+ 0x10, 0x00, 0x3A, 0x09, 0x19, 0x00, 0x19, 0x05,
+ 0x14, 0x18, 0x23, 0x0A, 0x00, 0x03, 0x04, 0x07,
+ 0x07, 0x00, 0x0B, 0x00, 0x22, 0x00, 0x10, 0x02,
+ 0x50, 0x00, 0x3A, 0x05, 0x0A, 0x01, 0x03, 0x04,
+ 0x07, 0x07, 0x00, 0x0B, 0x01, 0x07, 0x00, 0x06,
+ 0x3C, 0x00, 0x10, 0x03, 0x50, 0x00, 0x3A, 0x05,
+ 0x0A, 0x02, 0x03, 0x04, 0x07, 0x07, 0x00, 0x0B,
+ 0x02, 0x17, 0x00, 0x06, 0x3C, 0x00, 0x10, 0x04,
+ 0x50, 0x00, 0x3A, 0x05, 0x0A, 0x03, 0x03, 0x04,
+ 0x07, 0x07, 0x00, 0x0B, 0x03, 0x0A, 0x00, 0x06,
+ 0x3C, 0x00, 0x03, 0x04, 0x07, 0x07, 0x00, 0x03,
+ 0x04, 0x07, 0x07, 0x00, 0x03, 0x04, 0x07, 0x07,
+ 0x00, 0x10, 0x05, 0xF0, 0x00, 0x3A, 0x0F, 0x03,
+ 0x04, 0x07, 0x07, 0x00, 0x03, 0x04, 0x07, 0x07,
+ 0x00, 0x03, 0x04, 0x07, 0x07, 0x00, 0x03, 0x04,
+ 0x07, 0x07, 0x00, 0x06, 0x3C, 0x00, 0x10, 0x06,
+ 0xF0, 0x00, 0x3A, 0x0F, 0x0A, 0x04, 0x03, 0x04,
+ 0x07, 0x07, 0x00, 0x0B, 0x04, 0x12, 0x00, 0x06,
+ 0x3C, 0x00, 0x03, 0x04, 0x07, 0x07, 0x00, 0x03,
+ 0x04, 0x07, 0x07, 0x00, 0x03, 0x04, 0x07, 0x07,
+ 0x00, 0x03, 0x04, 0x07, 0x07, 0x00, 0x06, 0x78,
+ 0x00, 0x10, 0x07, 0xF0, 0x00, 0x3A, 0x0F, 0x0A,
+ 0x05, 0x03, 0x04, 0x07, 0x07, 0x00, 0x0B, 0x05,
+ 0x11, 0x00, 0x06, 0x3C, 0x00, 0x03, 0x04, 0x07,
+ 0x07, 0x00, 0x03, 0x04, 0x07, 0x07, 0x00, 0x10,
+ 0x08, 0x50, 0x00, 0x3A, 0x05, 0x0A, 0x06, 0x03,
+ 0x04, 0x07, 0x07, 0x00, 0x0B, 0x06, 0x07, 0x00,
+ 0x06, 0x3C, 0x00, 0x03, 0x04, 0x07, 0x07, 0x00,
+ 0x03, 0x04, 0x07, 0x07, 0x00, 0x03, 0x04, 0x07,
+ 0x07, 0x00, 0x10, 0x09, 0x50, 0x00, 0x3A, 0x05,
+ 0x0A, 0x07, 0x03, 0x04, 0x07, 0x07, 0x00, 0x0B,
+ 0x07, 0x0A, 0x00, 0x06, 0x3C, 0x00, 0x03, 0x04,
+ 0x07, 0x07, 0x00, 0x10, 0x0A, 0x50, 0x00, 0x3A,
+ 0x05, 0x0A, 0x08, 0x03, 0x04, 0x07, 0x07, 0x00,
+ 0x0B, 0x08, 0x10, 0x00, 0x06, 0x3C, 0x00, 0x03,
+ 0x04, 0x07, 0x07, 0x00, 0x10, 0x0B, 0xF0, 0x00,
+ 0x3A, 0x0F, 0x03, 0x04, 0x07, 0x07, 0x00, 0x03,
+ 0x04, 0x07, 0x07, 0x00, 0x03, 0x04, 0x07, 0x07,
+ 0x00, 0x03, 0x04, 0x07, 0x07, 0x00, 0x03, 0x04,
+ 0x07, 0x07, 0x00, 0x03, 0x04, 0x07, 0x07, 0x00,
+ 0x03, 0x04, 0x07, 0x07, 0x00, 0x03, 0x04, 0x07,
+ 0x07, 0x00, 0x06, 0x3C, 0x00, 0x03, 0x04, 0x07,
+ 0x07, 0x00, 0x10, 0x0C, 0xF0, 0x00, 0x3A, 0x0F,
+ 0x0A, 0x09, 0x03, 0x04, 0x07, 0x07, 0x00, 0x0B,
+ 0x09, 0x0E, 0x00, 0x06, 0x3C, 0x00, 0x03, 0x04,
+ 0x07, 0x07, 0x00, 0x03, 0x04, 0x07, 0x07, 0x00,
+ 0x03, 0x04, 0x07, 0x07, 0x00, 0x03, 0x04, 0x07,
+ 0x07, 0x00, 0x03, 0x04, 0x07, 0x07, 0x00, 0x03,
+ 0x04, 0x07, 0x07, 0x00, 0x10, 0x0D, 0x50, 0x00,
+ 0x3A, 0x05, 0x0A, 0x0A, 0x03, 0x04, 0x07, 0x07,
+ 0x00, 0x0B, 0x0A, 0x0E, 0x00, 0x06, 0x3C, 0x00,
+ 0x0A, 0x0B, 0x03, 0x04, 0x07, 0x07, 0x00, 0x0B,
+ 0x0B, 0x02, 0x00, 0x18, 0x20, 0x0A, 0x0C, 0x03,
+ 0x04, 0x07, 0x07, 0x00, 0x0B, 0x0C, 0x06, 0x00,
+ 0x18, 0x21, 0x0A, 0x0D, 0x03, 0x04, 0x07, 0x07,
+ 0x00, 0x0B, 0x0D, 0x0C, 0x00, 0x18, 0x22, 0x0A,
+ 0x0E, 0x03, 0x04, 0x07, 0x07, 0x00, 0x0B, 0x0E,
+ 0x0B, 0x00, 0x10, 0x0E, 0x50, 0x00, 0x3A, 0x05,
+ 0x0A, 0x0F, 0x03, 0x04, 0x07, 0x07, 0x00, 0x0B,
+ 0x0F, 0x09, 0x00, 0x06, 0x3C, 0x00, 0x03, 0x04,
+ 0x07, 0x07, 0x00, 0x10, 0x0F, 0x50, 0x00, 0x3A,
+ 0x05, 0x0A, 0x10, 0x03, 0x04, 0x07, 0x07, 0x00,
+ 0x0B, 0x10, 0x09, 0x00, 0x06, 0x3C, 0x00, 0x03,
+ 0x04, 0x07, 0x07, 0x00, 0x10, 0x10, 0x50, 0x00,
+ 0x3A, 0x05, 0x0A, 0x11, 0x03, 0x04, 0x07, 0x07,
+ 0x00, 0x0B, 0x11, 0x0F, 0x00, 0x06, 0x3C, 0x00,
+ 0x03, 0x04, 0x07, 0x07, 0x00, 0x10, 0x11, 0x50,
+ 0x00, 0x3A, 0x05, 0x0A, 0x12, 0x03, 0x04, 0x07,
+ 0x07, 0x00, 0x0B, 0x12, 0x14, 0x00, 0x06, 0x3C,
+ 0x00, 0x0A, 0x13, 0x03, 0x04, 0x07, 0x07, 0x00,
+ 0x0B, 0x13, 0x06, 0x00, 0x18, 0x23, 0x0A, 0x13,
+ 0x03, 0x04, 0x07, 0x07, 0x00, 0x0B, 0x13, 0x07,
+ 0x00, 0x11, 0x06, 0x3C, 0x00, 0x13, 0x19, 0x01,
+ 0x13, 0x01, 0x04, 0x1D
+};
+
+static const ByteProvider k1KallakMalcolmSeqPC98Provider = { ARRAYSIZE(k1KallakMalcolmSeqPC98), k1KallakMalcolmSeqPC98 };
+
+static const byte k1ForestSeqPC98[406] = {
+ 0x00, 0x05, 0x01, 0x00, 0x07, 0x01, 0x1A, 0x02,
+ 0x07, 0x00, 0x00, 0x00, 0x08, 0x02, 0x05, 0x00,
+ 0x98, 0x00, 0x38, 0x0A, 0x00, 0x03, 0x07, 0x16,
+ 0x02, 0x06, 0x09, 0x00, 0x0B, 0x00, 0x41, 0x00,
+ 0x18, 0x16, 0x03, 0x07, 0x02, 0x05, 0x01, 0x98,
+ 0x00, 0x38, 0x16, 0x02, 0x16, 0x03, 0x06, 0x09,
+ 0x00, 0x03, 0x07, 0x02, 0x05, 0x03, 0x98, 0x00,
+ 0x38, 0x16, 0x02, 0x16, 0x03, 0x06, 0x09, 0x00,
+ 0x03, 0x07, 0x02, 0x05, 0x01, 0x98, 0x00, 0x38,
+ 0x16, 0x02, 0x16, 0x03, 0x06, 0x09, 0x00, 0x03,
+ 0x07, 0x02, 0x05, 0x00, 0x98, 0x00, 0x38, 0x16,
+ 0x02, 0x16, 0x03, 0x06, 0x09, 0x00, 0x0A, 0x05,
+ 0x03, 0x07, 0x16, 0x02, 0x06, 0x09, 0x00, 0x0B,
+ 0x05, 0x0E, 0x00, 0x18, 0x16, 0x03, 0x07, 0x02,
+ 0x05, 0x01, 0x98, 0x00, 0x38, 0x16, 0x02, 0x16,
+ 0x03, 0x06, 0x09, 0x00, 0x03, 0x07, 0x02, 0x05,
+ 0x03, 0x98, 0x00, 0x38, 0x16, 0x02, 0x16, 0x03,
+ 0x06, 0x09, 0x00, 0x03, 0x07, 0x02, 0x05, 0x01,
+ 0x98, 0x00, 0x38, 0x16, 0x02, 0x16, 0x03, 0x06,
+ 0x09, 0x00, 0x03, 0x07, 0x02, 0x05, 0x04, 0x98,
+ 0x00, 0x38, 0x16, 0x02, 0x16, 0x03, 0x06, 0x09,
+ 0x00, 0x03, 0x07, 0x16, 0x02, 0x06, 0x09, 0x00,
+ 0x03, 0x07, 0x16, 0x02, 0x06, 0x09, 0x00, 0x03,
+ 0x07, 0x02, 0x05, 0x05, 0x98, 0x00, 0x38, 0x16,
+ 0x02, 0x16, 0x03, 0x06, 0x09, 0x00, 0x03, 0x07,
+ 0x16, 0x02, 0x06, 0x09, 0x00, 0x03, 0x07, 0x16,
+ 0x02, 0x06, 0x09, 0x00, 0x03, 0x07, 0x02, 0x05,
+ 0x06, 0x98, 0x00, 0x38, 0x16, 0x02, 0x16, 0x03,
+ 0x06, 0x09, 0x00, 0x03, 0x07, 0x16, 0x02, 0x06,
+ 0x09, 0x00, 0x03, 0x07, 0x16, 0x02, 0x06, 0x09,
+ 0x00, 0x18, 0x25, 0x0A, 0x00, 0x03, 0x07, 0x03,
+ 0x05, 0x16, 0x02, 0x16, 0x03, 0x06, 0x09, 0x00,
+ 0x0B, 0x00, 0x09, 0x00, 0x0A, 0x06, 0x03, 0x07,
+ 0x16, 0x02, 0x06, 0x09, 0x00, 0x0B, 0x06, 0x0E,
+ 0x00, 0x18, 0x17, 0x0A, 0x01, 0x03, 0x07, 0x03,
+ 0x05, 0x16, 0x02, 0x16, 0x03, 0x06, 0x09, 0x00,
+ 0x0B, 0x01, 0x0D, 0x00, 0x18, 0x25, 0x0A, 0x07,
+ 0x03, 0x07, 0x16, 0x02, 0x06, 0x09, 0x00, 0x0B,
+ 0x07, 0x0E, 0x00, 0x18, 0x18, 0x03, 0x07, 0x03,
+ 0x05, 0x16, 0x02, 0x16, 0x03, 0x06, 0x09, 0x00,
+ 0x03, 0x07, 0x03, 0x05, 0x16, 0x02, 0x16, 0x03,
+ 0x06, 0x09, 0x00, 0x03, 0x07, 0x03, 0x05, 0x16,
+ 0x02, 0x16, 0x03, 0x06, 0x09, 0x00, 0x03, 0x07,
+ 0x03, 0x05, 0x16, 0x02, 0x16, 0x03, 0x06, 0x09,
+ 0x00, 0x03, 0x07, 0x03, 0x05, 0x16, 0x02, 0x16,
+ 0x03, 0x06, 0x09, 0x00, 0x06, 0x12, 0x00, 0x18,
+ 0x25, 0x0A, 0x02, 0x03, 0x07, 0x03, 0x05, 0x16,
+ 0x02, 0x16, 0x03, 0x06, 0x09, 0x00, 0x0B, 0x02,
+ 0x07, 0x00, 0x0A, 0x03, 0x03, 0x07, 0x16, 0x02,
+ 0x06, 0x09, 0x00, 0x0B, 0x03, 0x0F, 0x00, 0x13,
+ 0x13, 0x01, 0x07, 0x01, 0x05, 0x1D
+};
+
+static const ByteProvider k1ForestSeqPC98Provider = { ARRAYSIZE(k1ForestSeqPC98), k1ForestSeqPC98 };
+
+static const char *const k1IntroCPSStringsPC98[2] = {
+ "gemcut.cps",
+ "tree.cps"
+};
+
+static const StringListProvider k1IntroCPSStringsPC98Provider = { ARRAYSIZE(k1IntroCPSStringsPC98), k1IntroCPSStringsPC98 };
+
+static const char *const k1IntroCOLStringsPC98[4] = {
+ "kallak.col",
+ "tree_exp.col",
+ "ww.col",
+ "mal-kal.col"
+};
+
+static const StringListProvider k1IntroCOLStringsPC98Provider = { ARRAYSIZE(k1IntroCOLStringsPC98), k1IntroCOLStringsPC98 };
+
+static const char *const k1IntroWSAStringsPC98[11] = {
+ "kallak.wsa",
+ "tree1.wsa",
+ "tree2.wsa",
+ "westwood.wsa",
+ "mal-kal.wsa",
+ "destruct.wsa",
+ "kyrandia.wsa",
+ "shore.wsa",
+ "reunion.wsa",
+ "reuniont.wsa",
+ "latern.wsa"
+};
+
+static const StringListProvider k1IntroWSAStringsPC98Provider = { ARRAYSIZE(k1IntroWSAStringsPC98), k1IntroWSAStringsPC98 };
+
+static const Room k1RoomListPC98[246] = {
+ { 30, 0xFFFF, 0xFFFF, 0x0001, 0xFFFF },
+ { 71, 0xFFFF, 0xFFFF, 0x0005, 0xFFFF },
+ { 44, 0xFFFF, 0x0003, 0xFFFF, 0xFFFF },
+ { 72, 0xFFFF, 0xFFFF, 0x000E, 0xFFFF },
+ { 48, 0xFFFF, 0x0005, 0xFFFF, 0x000E },
+ { 74, 0xFFFF, 0x000A, 0xFFFF, 0x0004 },
+ { 46, 0xFFFF, 0x000F, 0xFFFF, 0x000B },
+ { 75, 0xFFFF, 0x0009, 0xFFFF, 0x0018 },
+ { 13, 0xFFFF, 0x000C, 0xFFFF, 0x000A },
+ { 5, 0x000D, 0xFFFF, 0xFFFF, 0x0007 },
+ { 84, 0xFFFF, 0x0008, 0xFFFF, 0x0005 },
+ { 37, 0xFFFF, 0x0006, 0x000C, 0x0010 },
+ { 51, 0x000B, 0xFFFF, 0x000D, 0x0008 },
+ { 23, 0x000C, 0xFFFF, 0x0009, 0xFFFF },
+ { 25, 0x0003, 0x0004, 0xFFFF, 0xFFFF },
+ { 11, 0xFFFF, 0xFFFF, 0xFFFF, 0x0006 },
+ { 86, 0xFFFF, 0x000B, 0xFFFF, 0xFFFF },
+ { 84, 0xFFFF, 0x0022, 0x0017, 0x0016 },
+ { 51, 0x0020, 0x0014, 0x0024, 0x0015 },
+ { 85, 0x0014, 0x0019, 0xFFFF, 0x0024 },
+ { 33, 0x001C, 0xFFFF, 0x0013, 0x0012 },
+ { 31, 0x0022, 0x0012, 0xFFFF, 0x0017 },
+ { 25, 0x001F, 0x0011, 0xFFFF, 0xFFFF },
+ { 25, 0x0011, 0x0015, 0xFFFF, 0xFFFF },
+ { 2, 0xFFFF, 0x0007, 0xFFFF, 0x001A },
+ { 82, 0xFFFF, 0x006D, 0xFFFF, 0x0013 },
+ { 77, 0xFFFF, 0x0018, 0x0021, 0xFFFF },
+ { 15, 0xFFFF, 0x001A, 0xFFFF, 0xFFFF },
+ { 16, 0xFFFF, 0xFFFF, 0x0014, 0x0020 },
+ { 19, 0xFFFF, 0x0021, 0xFFFF, 0x001F },
+ { 12, 0xFFFF, 0xFFFF, 0x0020, 0x0021 },
+ { 7, 0x0023, 0x001D, 0x0016, 0xFFFF },
+ { 20, 0x001E, 0x001C, 0x0012, 0x0022 },
+ { 17, 0x001A, 0x001E, 0x0022, 0x001D },
+ { 22, 0x0021, 0x0020, 0x0015, 0x0011 },
+ { 24, 0xFFFF, 0xFFFF, 0x001F, 0xFFFF },
+ { 32, 0x0012, 0x0013, 0xFFFF, 0xFFFF },
+ { 87, 0xFFFF, 0x0026, 0xFFFF, 0xFFFF },
+ { 8, 0xFFFF, 0x0027, 0xFFFF, 0x0025 },
+ { 88, 0xFFFF, 0x0035, 0x0037, 0x0026 },
+ { 35, 0xFFFF, 0x0036, 0x0038, 0xFFFF },
+ { 47, 0xFFFF, 0xFFFF, 0x003B, 0xFFFF },
+ { 28, 0x0035, 0x002B, 0x002F, 0x0037 },
+ { 36, 0xFFFF, 0x002C, 0xFFFF, 0x002A },
+ { 78, 0xFFFF, 0xFFFF, 0xFFFF, 0x002B },
+ { 10, 0xFFFF, 0xFFFF, 0xFFFF, 0x002C },
+ { 51, 0x0037, 0x002F, 0x0040, 0x003C },
+ { 38, 0x002A, 0x003D, 0x0041, 0x002E },
+ { 81, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 41, 0xFFFF, 0xFFFF, 0x0069, 0xFFFF },
+ { 50, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 18, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 49, 0xFFFF, 0xFFFF, 0x0054, 0xFFFF },
+ { 105, 0xFFFF, 0xFFFF, 0x002A, 0x0027 },
+ { 105, 0xFFFF, 0xFFFF, 0x0039, 0x0028 },
+ { 37, 0x0027, 0x002A, 0x002E, 0x0049 },
+ { 34, 0x0028, 0x0039, 0xFFFF, 0xFFFF },
+ { 51, 0x0036, 0x003A, 0xFFFF, 0x0038 },
+ { 84, 0xFFFF, 0x003B, 0xFFFF, 0x0039 },
+ { 1, 0x0029, 0xFFFF, 0x003E, 0x003A },
+ { 37, 0x0049, 0x002E, 0x003F, 0xFFFF },
+ { 33, 0xFFFF, 0xFFFF, 0xFFFF, 0x002F },
+ { 34, 0x003B, 0x003F, 0xFFFF, 0xFFFF },
+ { 85, 0x003C, 0x0040, 0xFFFF, 0x003E },
+ { 106, 0x002E, 0x0041, 0xFFFF, 0x003F },
+ { 33, 0x002F, 0xFFFF, 0xFFFF, 0x0040 },
+ { 60, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 11, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 33, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 26, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 0, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 25, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 23, 0xFFFF, 0x0037, 0x003C, 0xFFFF },
+ { 6, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 51, 0x0063, 0x0067, 0x006B, 0x0066 },
+ { 66, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 67, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 62, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 65, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 18, 0x0056, 0x005A, 0x005E, 0xFFFF },
+ { 6, 0xFFFF, 0x0052, 0x0056, 0xFFFF },
+ { 4, 0xFFFF, 0x0053, 0x0057, 0x0051 },
+ { 3, 0xFFFF, 0x0054, 0xFFFF, 0x0052 },
+ { 37, 0x0034, 0x0055, 0x0058, 0x0053 },
+ { 11, 0xFFFF, 0xFFFF, 0x0059, 0x0054 },
+ { 37, 0x0051, 0x0057, 0x0050, 0xFFFF },
+ { 51, 0x0052, 0xFFFF, 0x005A, 0x0056 },
+ { 51, 0x0054, 0x0059, 0x005C, 0xFFFF },
+ { 1, 0x0055, 0xFFFF, 0x005D, 0x0058 },
+ { 106, 0x0057, 0x005B, 0xFFFF, 0x0050 },
+ { 85, 0xFFFF, 0x005C, 0xFFFF, 0x005A },
+ { 37, 0x0058, 0x005D, 0x005F, 0x005B },
+ { 33, 0x0059, 0xFFFF, 0xFFFF, 0x005C },
+ { 51, 0x0050, 0xFFFF, 0x0061, 0xFFFF },
+ { 51, 0x005C, 0xFFFF, 0x0064, 0xFFFF },
+ { 37, 0xFFFF, 0x0061, 0x0065, 0xFFFF },
+ { 51, 0x005E, 0x0062, 0xFFFF, 0x0060 },
+ { 84, 0xFFFF, 0x0063, 0x0066, 0x0061 },
+ { 84, 0xFFFF, 0x0064, 0x004B, 0x0062 },
+ { 33, 0x005F, 0xFFFF, 0x0067, 0x0063 },
+ { 51, 0x0060, 0xFFFF, 0x0068, 0xFFFF },
+ { 37, 0x0062, 0x004B, 0x006A, 0xFFFF },
+ { 1, 0x0064, 0xFFFF, 0x006C, 0x004B },
+ { 34, 0x0065, 0x0069, 0xFFFF, 0xFFFF },
+ { 51, 0x0031, 0x006A, 0xFFFF, 0x0068 },
+ { 85, 0x0066, 0x006B, 0xFFFF, 0x0069 },
+ { 106, 0x004B, 0x006C, 0xFFFF, 0x006A },
+ { 33, 0x0067, 0xFFFF, 0xFFFF, 0x006B },
+ { 55, 0x00C4, 0x00C5, 0xFFFF, 0x0019 },
+ { 52, 0xFFFF, 0x00C1, 0xFFFF, 0x0096 },
+ { 64, 0xFFFF, 0x00BF, 0xFFFF, 0x008C },
+ { 57, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 54, 0x00AF, 0xFFFF, 0x00B7, 0x00AC },
+ { 53, 0x0078, 0xFFFF, 0x0079, 0xFFFF },
+ { 29, 0xFFFF, 0x00BB, 0xFFFF, 0x00C5 },
+ { 69, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 76, 0x00C6, 0xFFFF, 0xFFFF, 0x00B1 },
+ { 59, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 58, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 59, 0xFFFF, 0x0025, 0x0072, 0xFFFF },
+ { 58, 0x0072, 0x007B, 0x00BB, 0xFFFF },
+ { 58, 0xFFFF, 0x007F, 0x007B, 0xFFFF },
+ { 59, 0x007A, 0xFFFF, 0x007C, 0x0079 },
+ { 58, 0x007B, 0x0081, 0x00BC, 0xFFFF },
+ { 58, 0x00BC, 0x0083, 0xFFFF, 0xFFFF },
+ { 58, 0xFFFF, 0x0085, 0x007F, 0xFFFF },
+ { 59, 0x007E, 0x0086, 0x0080, 0x007A },
+ { 58, 0x007F, 0x00BD, 0x0081, 0xFFFF },
+ { 59, 0x0080, 0x0087, 0x0082, 0x007C },
+ { 58, 0x0081, 0xFFFF, 0x0083, 0x00BC },
+ { 59, 0x0082, 0x0089, 0x0084, 0x007D },
+ { 58, 0x0083, 0x008A, 0xFFFF, 0xFFFF },
+ { 59, 0xFFFF, 0x008B, 0x0086, 0x007E },
+ { 58, 0x0085, 0x008C, 0x00BD, 0x007F },
+ { 58, 0x00BD, 0x008E, 0x0088, 0x0081 },
+ { 59, 0x0087, 0xFFFF, 0x0089, 0xFFFF },
+ { 58, 0x0088, 0x0090, 0x008A, 0x0083 },
+ { 59, 0x0089, 0x0091, 0xFFFF, 0x0084 },
+ { 58, 0xFFFF, 0x0092, 0x008C, 0x0085 },
+ { 59, 0x008B, 0x006F, 0x008D, 0x0086 },
+ { 58, 0x008C, 0x0093, 0x008E, 0x00BD },
+ { 59, 0x008D, 0xFFFF, 0xFFFF, 0x0087 },
+ { 58, 0xFFFF, 0x00BE, 0x0090, 0xFFFF },
+ { 59, 0x008F, 0x0095, 0x0091, 0x0089 },
+ { 58, 0x0090, 0x0096, 0xFFFF, 0x008A },
+ { 59, 0xFFFF, 0x0098, 0xFFFF, 0x008B },
+ { 59, 0xFFFF, 0xFFFF, 0xFFFF, 0x008D },
+ { 58, 0xFFFF, 0x009A, 0x00BE, 0xFFFF },
+ { 58, 0x00BE, 0xFFFF, 0x0096, 0x0090 },
+ { 59, 0x0095, 0x006E, 0x0097, 0x0091 },
+ { 58, 0x0096, 0x009D, 0xFFFF, 0xFFFF },
+ { 58, 0xFFFF, 0x009E, 0x00BF, 0x0092 },
+ { 58, 0x00BF, 0x00A0, 0x009A, 0xFFFF },
+ { 59, 0x0099, 0xFFFF, 0x009B, 0x0094 },
+ { 58, 0x009A, 0xFFFF, 0x009C, 0xFFFF },
+ { 59, 0x009B, 0x00A2, 0xFFFF, 0xFFFF },
+ { 59, 0xFFFF, 0x00A3, 0xFFFF, 0x0097 },
+ { 59, 0xFFFF, 0xFFFF, 0x009F, 0x0098 },
+ { 58, 0x009E, 0x00A4, 0x00A0, 0x00BF },
+ { 59, 0x009F, 0x00A5, 0xFFFF, 0x0099 },
+ { 58, 0xFFFF, 0x00A6, 0x00C0, 0xFFFF },
+ { 58, 0x00C0, 0x00A8, 0xFFFF, 0x009C },
+ { 58, 0x00C1, 0xFFFF, 0xFFFF, 0x009D },
+ { 59, 0xFFFF, 0x00AA, 0x00A5, 0x009F },
+ { 58, 0x00A4, 0x00AB, 0x00A6, 0x00A0 },
+ { 59, 0x00A5, 0x00AC, 0x00A7, 0x00A1 },
+ { 58, 0x00A6, 0xFFFF, 0xFFFF, 0x00C0 },
+ { 59, 0xFFFF, 0x00AD, 0x00A9, 0x00A2 },
+ { 58, 0x00A8, 0x00AE, 0xFFFF, 0x00C1 },
+ { 58, 0xFFFF, 0xFFFF, 0x00AB, 0x00A4 },
+ { 59, 0x00AA, 0x00AF, 0x00AC, 0x00A5 },
+ { 58, 0x00AB, 0x0071, 0x00C2, 0x00A6 },
+ { 58, 0xFFFF, 0x00B0, 0x00AE, 0x00A8 },
+ { 59, 0x00AD, 0xFFFF, 0xFFFF, 0x00A9 },
+ { 58, 0xFFFF, 0x00C3, 0x0071, 0x00AB },
+ { 59, 0xFFFF, 0xFFFF, 0x00B1, 0x00AD },
+ { 58, 0x00B0, 0x0075, 0xFFFF, 0xFFFF },
+ { 59, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 59, 0x00C3, 0xFFFF, 0x00B4, 0xFFFF },
+ { 59, 0x00B3, 0x00BA, 0xFFFF, 0xFFFF },
+ { 58, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 59, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 58, 0x0071, 0xFFFF, 0xFFFF, 0x00C2 },
+ { 58, 0xFFFF, 0xFFFF, 0x00B9, 0xFFFF },
+ { 59, 0x00B8, 0xFFFF, 0xFFFF, 0x00C3 },
+ { 58, 0xFFFF, 0xFFFF, 0xFFFF, 0x00B4 },
+ { 59, 0x0079, 0xFFFF, 0xFFFF, 0x0073 },
+ { 59, 0x007C, 0x0082, 0x007D, 0xFFFF },
+ { 59, 0x0086, 0x008D, 0x0087, 0x0080 },
+ { 59, 0x0094, 0xFFFF, 0x0095, 0x008F },
+ { 59, 0x0098, 0x009F, 0x0099, 0x006F },
+ { 59, 0x00A1, 0x00A7, 0x00A2, 0xFFFF },
+ { 59, 0xFFFF, 0x00A9, 0x00A3, 0x006E },
+ { 59, 0x00AC, 0x00B7, 0xFFFF, 0xFFFF },
+ { 58, 0xFFFF, 0x00B9, 0x00B3, 0x00AF },
+ { 59, 0xFFFF, 0xFFFF, 0x006D, 0xFFFF },
+ { 58, 0xFFFF, 0x0073, 0xFFFF, 0x006D },
+ { 59, 0xFFFF, 0xFFFF, 0x0075, 0xFFFF },
+ { 94, 0xFFFF, 0x00C8, 0xFFFF, 0xFFFF },
+ { 43, 0x00C9, 0x00CB, 0x00CA, 0x00C7 },
+ { 51, 0xFFFF, 0xFFFF, 0x00C8, 0xFFFF },
+ { 37, 0x00C8, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 79, 0xFFFF, 0xFFFF, 0xFFFF, 0x00C8 },
+ { 80, 0xFFFF, 0xFFFF, 0x00CB, 0x00CD },
+ { 97, 0x00E3, 0x00D4, 0x00CC, 0x00D3 },
+ { 103, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 100, 0xFFFF, 0x00CE, 0x00D5, 0xFFFF },
+ { 98, 0xFFFF, 0xFFFF, 0xFFFF, 0x00D7 },
+ { 101, 0xFFFF, 0x00D2, 0x00CE, 0xFFFF },
+ { 99, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 93, 0x00D5, 0x00CD, 0xFFFF, 0xFFFF },
+ { 93, 0x00D6, 0xFFFF, 0xFFFF, 0x00CD },
+ { 93, 0x00CF, 0x00CE, 0x00D3, 0xFFFF },
+ { 93, 0x00D7, 0xFFFF, 0x00D4, 0x00CE },
+ { 93, 0xFFFF, 0x00D0, 0x00D6, 0x00CE },
+ { 93, 0x00DA, 0x00E3, 0xFFFF, 0xFFFF },
+ { 93, 0x00DB, 0xFFFF, 0xFFFF, 0x00E3 },
+ { 93, 0xFFFF, 0x00E4, 0x00D8, 0x00E2 },
+ { 93, 0xFFFF, 0x00E1, 0x00D9, 0x00E4 },
+ { 93, 0xFFFF, 0x00E4, 0xFFFF, 0x00DF },
+ { 93, 0xFFFF, 0x00E0, 0xFFFF, 0x00E4 },
+ { 93, 0xFFFF, 0xFFFF, 0x00E4, 0xFFFF },
+ { 91, 0xFFFF, 0x00DC, 0xFFFF, 0xFFFF },
+ { 90, 0xFFFF, 0xFFFF, 0xFFFF, 0x00DD },
+ { 92, 0xFFFF, 0xFFFF, 0xFFFF, 0x00DB },
+ { 95, 0xFFFF, 0x00DA, 0xFFFF, 0xFFFF },
+ { 96, 0xFFFF, 0x00D9, 0x00CD, 0x00D8 },
+ { 89, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 102, 0xFFFF, 0x00E6, 0xFFFF, 0xFFFF },
+ { 102, 0xFFFF, 0x00EA, 0x00E8, 0x00E5 },
+ { 102, 0xFFFF, 0x00E8, 0x00EB, 0xFFFF },
+ { 102, 0x00E6, 0xFFFF, 0xFFFF, 0x00E7 },
+ { 102, 0xFFFF, 0xFFFF, 0x00ED, 0xFFFF },
+ { 102, 0xFFFF, 0xFFFF, 0xFFFF, 0x00E6 },
+ { 102, 0x00E7, 0x00EC, 0x00EF, 0xFFFF },
+ { 102, 0xFFFF, 0x00ED, 0x00F0, 0x00EB },
+ { 102, 0x00E9, 0x00EE, 0x00F1, 0x00EC },
+ { 102, 0xFFFF, 0xFFFF, 0x00F2, 0x00ED },
+ { 102, 0x00EB, 0x00F0, 0xFFFF, 0xFFFF },
+ { 102, 0x00EC, 0x00F1, 0x00F3, 0x00EF },
+ { 102, 0x00ED, 0xFFFF, 0x00F4, 0x00F0 },
+ { 102, 0x00EE, 0xFFFF, 0xFFFF, 0xFFFF },
+ { 102, 0x00F0, 0x00F4, 0xFFFF, 0xFFFF },
+ { 102, 0x00F1, 0x00F5, 0xFFFF, 0x00F3 },
+ { 102, 0xFFFF, 0xFFFF, 0x00CF, 0x00F4 }
+};
+
+static const RoomProvider k1RoomListPC98Provider = { ARRAYSIZE(k1RoomListPC98), k1RoomListPC98 };
+
+static const char *const k1RoomFilenamesPC98[107] = {
+ "CLIFFB",
+ "XEDGEB",
+ "CAVEB",
+ "NCLIFF",
+ "NCLIFFB",
+ "CAVE",
+ "NWCLIFF",
+ "OAKS",
+ "PLATEAU",
+ "POTHUT",
+ "POTION",
+ "NWCLIFB",
+ "SONG",
+ "SORROW",
+ "SPELHUT",
+ "SPELL",
+ "SPRING",
+ "SQUARE",
+ "STUMP",
+ "TEMPLE",
+ "WELL",
+ "WILLOW",
+ "WISE",
+ "XEDGE",
+ "RUBY",
+ "ZROCK",
+ "ZROCKB",
+ "FORESTD",
+ "FOUNTN",
+ "GATECV",
+ "GEMCUT",
+ "CLIFF",
+ "DEAD",
+ "EDGE",
+ "EDGEB",
+ "FALLS",
+ "FORESTC",
+ "FORESTB",
+ "GLADE",
+ "GEMHUT",
+ "ALGAE",
+ "MIX",
+ "BRIDGE",
+ "GRAVE",
+ "HEALER",
+ "HEALHUT",
+ "ALTAR",
+ "BURN",
+ "SICKWIL",
+ "LAGOON",
+ "MAPLE",
+ "FORESTA",
+ "ARCH",
+ "CHASM",
+ "EMCAV",
+ "ENTER",
+ "FLOWERS",
+ "GEMSLOT",
+ "GEN_CAV",
+ "GENCAVB",
+ "GOLDEN",
+ "GOLDENB",
+ "ICE",
+ "MARKET",
+ "MOONCAV",
+ "MSHCAV",
+ "POOL",
+ "SEASONS",
+ "SHRINE",
+ "TREECAV",
+ "EXTGEM",
+ "GEM",
+ "EXTHEAL",
+ "BASE",
+ "TRUNK",
+ "BROKEN",
+ "LAVA",
+ "EXTSPEL",
+ "EXTPOT",
+ "CASTLE",
+ "CGATE",
+ "LEPHOLE",
+ "DRAGON",
+ "XEDGEC",
+ "FNORTH",
+ "FSOUTH",
+ "FGOWEST",
+ "PLTCAVE",
+ "BONKBG",
+ "BALCONY",
+ "DARMS",
+ "BRINS",
+ "ALCHEMY",
+ "GENHALL",
+ "LANDING",
+ "BELROOM",
+ "UPSTAIR",
+ "DNSTAIR",
+ "KITCHEN",
+ "KYRAGEM",
+ "LIBRARY",
+ "FOYER",
+ "CATACOM",
+ "GRTHALL",
+ "FESTSTH",
+ "FWSTSTH",
+ "FSOUTHB"
+};
+
+static const StringListProvider k1RoomFilenamesPC98Provider = { ARRAYSIZE(k1RoomFilenamesPC98), k1RoomFilenamesPC98 };
+
+static const char *const k1CharacterImageFilenamesPC98[20] = {
+ "BRANDON.CPS",
+ "DAPHNE.CPS",
+ "MERITH.CPS",
+ "HERMAN.CPS",
+ "SMALL.CPS",
+ "MALCOM.CPS",
+ "DRINK.CPS",
+ "SHRINK.CPS",
+ "HEALBR1.CPS",
+ "HEALBR2.CPS",
+ "SNOW1A.CPS",
+ "SNOW2A.CPS",
+ "BRANWILL.CPS",
+ "FLUTE1.CPS",
+ "FLUTE2.CPS",
+ "POISON1.CPS",
+ "POISON2.CPS",
+ "TELEKIN.CPS",
+ "BRANSTON.CPS",
+ "POISON.CPS"
+};
+
+static const StringListProvider k1CharacterImageFilenamesPC98Provider = { ARRAYSIZE(k1CharacterImageFilenamesPC98), k1CharacterImageFilenamesPC98 };
+
+static const Shape k1DefaultShapesPC98[166] = {
+ { 0, 0, 0, 3, 48, -12, -48 },
+ { 0, 3, 0, 3, 48, -12, -48 },
+ { 0, 6, 0, 3, 48, -12, -48 },
+ { 0, 9, 0, 3, 48, -12, -48 },
+ { 0, 12, 0, 3, 48, -12, -48 },
+ { 0, 15, 0, 3, 48, -12, -48 },
+ { 0, 18, 0, 3, 48, -12, -48 },
+ { 0, 21, 0, 3, 48, -12, -48 },
+ { 0, 24, 0, 3, 48, -12, -48 },
+ { 0, 27, 0, 3, 48, -12, -48 },
+ { 0, 0, 51, 2, 11, -2, -8 },
+ { 0, 2, 51, 2, 11, -2, -8 },
+ { 0, 4, 51, 2, 11, -2, -8 },
+ { 0, 6, 51, 2, 11, -2, -8 },
+ { 0, 8, 51, 2, 11, -2, -8 },
+ { 0, 10, 51, 2, 11, -2, -8 },
+ { 0, 12, 51, 2, 11, -2, -8 },
+ { 0, 14, 51, 2, 11, -2, -8 },
+ { 0, 16, 51, 2, 11, -2, -8 },
+ { 0, 18, 51, 2, 11, -2, -8 },
+ { 0, 20, 51, 2, 11, -2, -8 },
+ { 0, 22, 51, 2, 11, -2, -8 },
+ { 0, 0, 80, 3, 48, -12, -48 },
+ { 0, 3, 80, 3, 48, -12, -48 },
+ { 0, 6, 80, 3, 48, -12, -48 },
+ { 0, 9, 80, 3, 48, -12, -48 },
+ { 0, 12, 80, 3, 48, -12, -48 },
+ { 0, 15, 80, 3, 48, -12, -48 },
+ { 0, 0, 129, 3, 48, -12, -48 },
+ { 0, 3, 129, 3, 48, -12, -48 },
+ { 0, 6, 129, 3, 48, -12, -48 },
+ { 0, 9, 129, 3, 48, -12, -48 },
+ { 0, 12, 129, 3, 48, -12, -48 },
+ { 0, 15, 129, 3, 48, -12, -48 },
+ { 2, 0, 0, 3, 48, -12, -48 },
+ { 2, 3, 0, 3, 48, -12, -48 },
+ { 2, 6, 0, 3, 48, -12, -48 },
+ { 2, 9, 0, 3, 48, -12, -48 },
+ { 2, 12, 0, 3, 48, -12, -48 },
+ { 2, 15, 0, 3, 48, -12, -48 },
+ { 2, 18, 0, 3, 48, -12, -48 },
+ { 2, 21, 0, 3, 48, -12, -48 },
+ { 2, 24, 0, 3, 48, -12, -48 },
+ { 2, 27, 0, 3, 48, -12, -48 },
+ { 2, 30, 10, 3, 38, -16, -38 },
+ { 2, 27, 48, 4, 40, -8, -40 },
+ { 2, 0, 51, 2, 11, -4, 0 },
+ { 2, 2, 51, 2, 11, -4, 0 },
+ { 2, 4, 51, 2, 11, -4, 0 },
+ { 2, 6, 51, 2, 11, -4, 0 },
+ { 2, 8, 51, 2, 11, -4, 0 },
+ { 2, 10, 51, 2, 11, -4, 0 },
+ { 2, 12, 51, 2, 11, -4, 0 },
+ { 2, 14, 51, 2, 11, -4, 0 },
+ { 2, 16, 51, 2, 11, -4, 0 },
+ { 2, 18, 51, 2, 11, -4, 0 },
+ { 2, 20, 51, 2, 11, -4, 0 },
+ { 2, 22, 51, 2, 11, -4, 0 },
+ { 255, 0, 80, 3, 48, -12, -48 },
+ { 255, 3, 80, 3, 48, -12, -48 },
+ { 255, 6, 80, 3, 48, -12, -48 },
+ { 255, 9, 80, 3, 48, -12, -48 },
+ { 255, 12, 80, 3, 48, -12, -48 },
+ { 255, 15, 80, 3, 48, -12, -48 },
+ { 255, 0, 129, 3, 48, -12, -48 },
+ { 255, 3, 129, 3, 48, -12, -48 },
+ { 255, 6, 129, 3, 48, -12, -48 },
+ { 255, 9, 129, 3, 48, -12, -48 },
+ { 255, 12, 129, 3, 48, -12, -48 },
+ { 255, 15, 129, 3, 48, -12, -48 },
+ { 3, 0, 0, 3, 48, -12, -46 },
+ { 3, 3, 0, 3, 48, -12, -48 },
+ { 3, 6, 0, 3, 48, -12, -48 },
+ { 3, 9, 0, 3, 48, -12, -48 },
+ { 3, 12, 0, 3, 48, -12, -48 },
+ { 3, 15, 0, 3, 48, -12, -48 },
+ { 3, 18, 0, 3, 48, -12, -48 },
+ { 3, 21, 0, 3, 48, -12, -48 },
+ { 3, 24, 0, 3, 48, -12, -48 },
+ { 3, 27, 0, 3, 48, -12, -46 },
+ { 3, 30, 0, 3, 48, -14, -47 },
+ { 3, 39, 199, 1, 1, -12, -48 },
+ { 3, 0, 51, 2, 11, 0, -7 },
+ { 3, 2, 51, 2, 11, 0, -7 },
+ { 3, 4, 51, 2, 11, 0, -7 },
+ { 3, 6, 51, 2, 11, 0, -7 },
+ { 3, 8, 51, 2, 11, 0, -7 },
+ { 3, 10, 51, 2, 11, 0, -7 },
+ { 3, 12, 51, 2, 11, 0, -7 },
+ { 3, 14, 51, 2, 11, 0, -7 },
+ { 3, 16, 51, 2, 11, 0, -7 },
+ { 3, 18, 51, 2, 11, 0, -7 },
+ { 3, 20, 51, 2, 11, 0, -7 },
+ { 3, 22, 51, 2, 11, 0, -7 },
+ { 3, 0, 80, 3, 48, -12, -48 },
+ { 3, 3, 80, 3, 48, -12, -48 },
+ { 3, 6, 80, 3, 48, -12, -48 },
+ { 3, 9, 80, 3, 48, -12, -48 },
+ { 3, 12, 80, 3, 48, -12, -48 },
+ { 3, 15, 80, 3, 48, -12, -48 },
+ { 3, 0, 129, 3, 48, -12, -48 },
+ { 3, 3, 129, 3, 48, -12, -48 },
+ { 3, 6, 129, 3, 48, -12, -48 },
+ { 3, 9, 129, 3, 48, -12, -48 },
+ { 3, 12, 129, 3, 48, -12, -48 },
+ { 3, 15, 129, 3, 48, -12, -48 },
+ { 12, 0, 96, 5, 29, -20, -42 },
+ { 12, 5, 96, 5, 29, -20, -42 },
+ { 12, 10, 96, 5, 29, -20, -42 },
+ { 12, 15, 96, 5, 29, -20, -42 },
+ { 12, 20, 96, 5, 29, -20, -42 },
+ { 12, 25, 96, 5, 29, -20, -42 },
+ { 12, 30, 96, 5, 29, -20, -42 },
+ { 12, 35, 96, 5, 29, -20, -42 },
+ { 12, 0, 125, 5, 29, -20, -42 },
+ { 12, 5, 125, 5, 29, -20, -42 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 },
+ { 255, 0, 0, 0, 0, 0, 0 }
+};
+
+static const ShapeProvider k1DefaultShapesPC98Provider = { ARRAYSIZE(k1DefaultShapesPC98), k1DefaultShapesPC98 };
+
+static const byte k1AmuleteAnimSeqPC98[42] = {
+ 0x00, 0x01, 0x02, 0x01, 0x03, 0x04, 0x03, 0x01,
+ 0x02, 0x03, 0x04, 0x05, 0x06, 0x05, 0x04, 0x05,
+ 0x07, 0x08, 0x07, 0x08, 0x09, 0x08, 0x09, 0x07,
+ 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
+ 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15,
+ 0x16, 0xFF
+};
+
+static const ByteProvider k1AmuleteAnimSeqPC98Provider = { ARRAYSIZE(k1AmuleteAnimSeqPC98), k1AmuleteAnimSeqPC98 };
+
+static const byte k1SpecialPalette1PC98[21] = {
+ 0x36, 0x25, 0x1C, 0x31, 0x21, 0x19, 0x2C, 0x1D,
+ 0x16, 0x27, 0x19, 0x13, 0x22, 0x16, 0x11, 0x1D,
+ 0x12, 0x0D, 0x18, 0x0F, 0x0B
+};
+
+static const ByteProvider k1SpecialPalette1PC98Provider = { ARRAYSIZE(k1SpecialPalette1PC98), k1SpecialPalette1PC98 };
+
+static const byte k1SpecialPalette2PC98[51] = {
+ 0x03, 0x03, 0x00, 0x37, 0x29, 0x1D, 0x33, 0x25,
+ 0x1A, 0x2D, 0x21, 0x17, 0x2A, 0x1D, 0x13, 0x26,
+ 0x19, 0x11, 0x22, 0x16, 0x0E, 0x1E, 0x12, 0x0C,
+ 0x1A, 0x0F, 0x0A, 0x16, 0x0C, 0x08, 0x12, 0x0A,
+ 0x05, 0x0E, 0x08, 0x05, 0x2D, 0x1E, 0x13, 0x27,
+ 0x19, 0x0F, 0x22, 0x14, 0x0C, 0x1C, 0x11, 0x0A,
+ 0x17, 0x0C, 0x08
+};
+
+static const ByteProvider k1SpecialPalette2PC98Provider = { ARRAYSIZE(k1SpecialPalette2PC98), k1SpecialPalette2PC98 };
+
+static const byte k1SpecialPalette3PC98[51] = {
+ 0x03, 0x03, 0x00, 0x25, 0x30, 0x1B, 0x24, 0x2C,
+ 0x18, 0x23, 0x29, 0x15, 0x22, 0x25, 0x12, 0x21,
+ 0x22, 0x11, 0x1F, 0x1D, 0x0D, 0x1B, 0x18, 0x0B,
+ 0x18, 0x13, 0x0A, 0x14, 0x0E, 0x08, 0x11, 0x0A,
+ 0x05, 0x0E, 0x08, 0x05, 0x21, 0x22, 0x11, 0x1D,
+ 0x1C, 0x0C, 0x19, 0x15, 0x0A, 0x15, 0x0F, 0x08,
+ 0x11, 0x0A, 0x05
+};
+
+static const ByteProvider k1SpecialPalette3PC98Provider = { ARRAYSIZE(k1SpecialPalette3PC98), k1SpecialPalette3PC98 };
+
+static const byte k1SpecialPalette4PC98[51] = {
+ 0x06, 0x03, 0x01, 0x33, 0x25, 0x0A, 0x2F, 0x21,
+ 0x0A, 0x2B, 0x1D, 0x08, 0x28, 0x1A, 0x08, 0x24,
+ 0x17, 0x06, 0x21, 0x22, 0x06, 0x1D, 0x11, 0x05,
+ 0x19, 0x0E, 0x05, 0x16, 0x0B, 0x03, 0x12, 0x0A,
+ 0x03, 0x0F, 0x08, 0x03, 0x28, 0x1A, 0x08, 0x22,
+ 0x15, 0x05, 0x1D, 0x11, 0x05, 0x17, 0x0C, 0x03,
+ 0x12, 0x0A, 0x03
+};
+
+static const ByteProvider k1SpecialPalette4PC98Provider = { ARRAYSIZE(k1SpecialPalette4PC98), k1SpecialPalette4PC98 };
+
+static const byte k1SpecialPalette5PC98[51] = {
+ 0x03, 0x03, 0x00, 0x2A, 0x1D, 0x13, 0x27, 0x1A,
+ 0x11, 0x24, 0x18, 0x0F, 0x21, 0x15, 0x0D, 0x1E,
+ 0x13, 0x0C, 0x1C, 0x11, 0x0A, 0x19, 0x0F, 0x0A,
+ 0x16, 0x0C, 0x08, 0x13, 0x0A, 0x06, 0x11, 0x08,
+ 0x05, 0x0E, 0x08, 0x05, 0x1C, 0x11, 0x0A, 0x19,
+ 0x0E, 0x08, 0x16, 0x0C, 0x08, 0x13, 0x0A, 0x06,
+ 0x11, 0x08, 0x05
+};
+
+static const ByteProvider k1SpecialPalette5PC98Provider = { ARRAYSIZE(k1SpecialPalette5PC98), k1SpecialPalette5PC98 };
+
+static const byte k1SpecialPalette6PC98[51] = {
+ 0x00, 0x08, 0x01, 0x00, 0x1E, 0x00, 0x00, 0x1B,
+ 0x00, 0x00, 0x19, 0x00, 0x00, 0x17, 0x00, 0x00,
+ 0x14, 0x00, 0x00, 0x12, 0x00, 0x00, 0x11, 0x00,
+ 0x00, 0x0E, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x0A,
+ 0x00, 0x00, 0x08, 0x00, 0x13, 0x21, 0x0F, 0x11,
+ 0x1F, 0x0D, 0x0E, 0x1D, 0x0C, 0x0C, 0x1B, 0x0B,
+ 0x0A, 0x19, 0x0A
+};
+
+static const ByteProvider k1SpecialPalette6PC98Provider = { ARRAYSIZE(k1SpecialPalette6PC98), k1SpecialPalette6PC98 };
+
+static const byte k1SpecialPalette7PC98[54] = {
+ 0x05, 0x2B, 0x00, 0x00, 0x22, 0x00, 0x00, 0x1E,
+ 0x00, 0x00, 0x16, 0x01, 0x00, 0x12, 0x03, 0x00,
+ 0x0F, 0x01, 0x00, 0x0B, 0x03, 0x0A, 0x19, 0x0A,
+ 0x2D, 0x2D, 0x32, 0x29, 0x29, 0x2D, 0x25, 0x25,
+ 0x2B, 0x1F, 0x1F, 0x26, 0x1B, 0x1B, 0x22, 0x14,
+ 0x16, 0x1D, 0x11, 0x11, 0x18, 0x0D, 0x0D, 0x14,
+ 0x0A, 0x0A, 0x0F, 0x06, 0x06, 0x0B
+};
+
+static const ByteProvider k1SpecialPalette7PC98Provider = { ARRAYSIZE(k1SpecialPalette7PC98), k1SpecialPalette7PC98 };
+
+static const byte k1SpecialPalette8PC98[54] = {
+ 0x12, 0x37, 0x3F, 0x14, 0x31, 0x3F, 0x14, 0x29,
+ 0x3F, 0x14, 0x22, 0x3F, 0x14, 0x1B, 0x3F, 0x14,
+ 0x14, 0x3F, 0x0E, 0x0F, 0x37, 0x14, 0x29, 0x3F,
+ 0x2F, 0x3F, 0x3D, 0x26, 0x3F, 0x3F, 0x15, 0x3F,
+ 0x3F, 0x14, 0x3B, 0x3F, 0x12, 0x37, 0x3F, 0x14,
+ 0x31, 0x3F, 0x14, 0x29, 0x3F, 0x14, 0x22, 0x3F,
+ 0x14, 0x1B, 0x3F, 0x14, 0x14, 0x3F
+};
+
+static const ByteProvider k1SpecialPalette8PC98Provider = { ARRAYSIZE(k1SpecialPalette8PC98), k1SpecialPalette8PC98 };
+
+static const byte k1SpecialPalette9PC98[45] = {
+ 0x36, 0x00, 0x00, 0x32, 0x00, 0x00, 0x2F, 0x00,
+ 0x00, 0x2C, 0x00, 0x00, 0x29, 0x00, 0x00, 0x26,
+ 0x00, 0x00, 0x23, 0x00, 0x00, 0x20, 0x00, 0x00,
+ 0x1C, 0x00, 0x00, 0x19, 0x00, 0x00, 0x16, 0x00,
+ 0x00, 0x13, 0x00, 0x00, 0x11, 0x00, 0x00, 0x0D,
+ 0x00, 0x00, 0x0A, 0x00, 0x00
+};
+
+static const ByteProvider k1SpecialPalette9PC98Provider = { ARRAYSIZE(k1SpecialPalette9PC98), k1SpecialPalette9PC98 };
+
+static const byte k1SpecialPalette10PC98[45] = {
+ 0x29, 0x00, 0x00, 0x26, 0x00, 0x00, 0x24, 0x00,
+ 0x00, 0x22, 0x00, 0x00, 0x20, 0x00, 0x00, 0x1E,
+ 0x00, 0x00, 0x1B, 0x00, 0x00, 0x19, 0x00, 0x00,
+ 0x17, 0x00, 0x00, 0x15, 0x00, 0x00, 0x12, 0x00,
+ 0x00, 0x11, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x0C,
+ 0x00, 0x00, 0x0A, 0x00, 0x00
+};
+
+static const ByteProvider k1SpecialPalette10PC98Provider = { ARRAYSIZE(k1SpecialPalette10PC98), k1SpecialPalette10PC98 };
+
+static const byte k1SpecialPalette11PC98[45] = {
+ 0x20, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x1C, 0x00,
+ 0x00, 0x1B, 0x00, 0x00, 0x19, 0x00, 0x00, 0x18,
+ 0x00, 0x00, 0x16, 0x00, 0x00, 0x15, 0x00, 0x00,
+ 0x13, 0x00, 0x00, 0x11, 0x00, 0x00, 0x11, 0x00,
+ 0x00, 0x0E, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x0B,
+ 0x00, 0x00, 0x0A, 0x00, 0x00
+};
+
+static const ByteProvider k1SpecialPalette11PC98Provider = { ARRAYSIZE(k1SpecialPalette11PC98), k1SpecialPalette11PC98 };
+
+static const byte k1SpecialPalette12PC98[45] = {
+ 0x19, 0x00, 0x00, 0x18, 0x00, 0x00, 0x16, 0x00,
+ 0x00, 0x15, 0x00, 0x00, 0x14, 0x00, 0x00, 0x13,
+ 0x00, 0x00, 0x12, 0x00, 0x00, 0x11, 0x00, 0x00,
+ 0x11, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x0E, 0x00,
+ 0x00, 0x0D, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0B,
+ 0x00, 0x00, 0x0A, 0x00, 0x00
+};
+
+static const ByteProvider k1SpecialPalette12PC98Provider = { ARRAYSIZE(k1SpecialPalette12PC98), k1SpecialPalette12PC98 };
+
+static const byte k1SpecialPalette13PC98[45] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const ByteProvider k1SpecialPalette13PC98Provider = { ARRAYSIZE(k1SpecialPalette13PC98), k1SpecialPalette13PC98 };
+
+static const byte k1SpecialPalette14PC98[60] = {
+ 0x0E, 0x28, 0x3F, 0x0C, 0x24, 0x3B, 0x0A, 0x20,
+ 0x38, 0x0A, 0x1C, 0x34, 0x08, 0x19, 0x31, 0x08,
+ 0x15, 0x2D, 0x05, 0x13, 0x2A, 0x05, 0x11, 0x27,
+ 0x03, 0x0D, 0x24, 0x03, 0x0A, 0x20, 0x03, 0x08,
+ 0x1D, 0x01, 0x06, 0x19, 0x01, 0x05, 0x16, 0x00,
+ 0x03, 0x13, 0x00, 0x01, 0x0F, 0x00, 0x01, 0x0C,
+ 0x00, 0x00, 0x08, 0x00, 0x00, 0x05, 0x00, 0x00,
+ 0x03, 0x00, 0x00, 0x00
+};
+
+static const ByteProvider k1SpecialPalette14PC98Provider = { ARRAYSIZE(k1SpecialPalette14PC98), k1SpecialPalette14PC98 };
+
+static const byte k1SpecialPalette15PC98[45] = {
+ 0x24, 0x00, 0x39, 0x21, 0x00, 0x36, 0x1F, 0x00,
+ 0x32, 0x1C, 0x00, 0x2D, 0x1A, 0x00, 0x2A, 0x17,
+ 0x00, 0x26, 0x15, 0x00, 0x22, 0x12, 0x00, 0x1E,
+ 0x11, 0x00, 0x1A, 0x0E, 0x00, 0x16, 0x0B, 0x00,
+ 0x12, 0x0A, 0x00, 0x0F, 0x06, 0x00, 0x0B, 0x05,
+ 0x00, 0x08, 0x01, 0x00, 0x03
+};
+
+static const ByteProvider k1SpecialPalette15PC98Provider = { ARRAYSIZE(k1SpecialPalette15PC98), k1SpecialPalette15PC98 };
+
+static const byte k1SpecialPalette16PC98[33] = {
+ 0x00, 0x3F, 0x3F, 0x00, 0x38, 0x38, 0x00, 0x34,
+ 0x34, 0x00, 0x30, 0x30, 0x00, 0x2D, 0x2D, 0x00,
+ 0x29, 0x29, 0x00, 0x25, 0x25, 0x00, 0x1F, 0x1F,
+ 0x00, 0x1B, 0x1B, 0x00, 0x16, 0x16, 0x00, 0x11,
+ 0x11
+};
+
+static const ByteProvider k1SpecialPalette16PC98Provider = { ARRAYSIZE(k1SpecialPalette16PC98), k1SpecialPalette16PC98 };
+
+static const byte k1SpecialPalette17PC98[33] = {
+ 0x3B, 0x3B, 0x3B, 0x36, 0x36, 0x36, 0x32, 0x32,
+ 0x32, 0x2D, 0x2D, 0x2D, 0x2A, 0x2A, 0x2A, 0x26,
+ 0x26, 0x26, 0x21, 0x21, 0x21, 0x1D, 0x1D, 0x1D,
+ 0x19, 0x19, 0x19, 0x15, 0x15, 0x15, 0x11, 0x11,
+ 0x11
+};
+
+static const ByteProvider k1SpecialPalette17PC98Provider = { ARRAYSIZE(k1SpecialPalette17PC98), k1SpecialPalette17PC98 };
+
+static const byte k1SpecialPalette18PC98[21] = {
+ 0x0F, 0x23, 0x1C, 0x2A, 0x36, 0x3F, 0x24, 0x2F,
+ 0x38, 0x1F, 0x2A, 0x32, 0x1A, 0x24, 0x2B, 0x15,
+ 0x1E, 0x25, 0x11, 0x19, 0x1F
+};
+
+static const ByteProvider k1SpecialPalette18PC98Provider = { ARRAYSIZE(k1SpecialPalette18PC98), k1SpecialPalette18PC98 };
+
+static const byte k1SpecialPalette19PC98[21] = {
+ 0x00, 0x00, 0x1C, 0x00, 0x00, 0x3F, 0x00, 0x00,
+ 0x38, 0x00, 0x00, 0x32, 0x00, 0x00, 0x2B, 0x00,
+ 0x00, 0x25, 0x00, 0x00, 0x1F
+};
+
+static const ByteProvider k1SpecialPalette19PC98Provider = { ARRAYSIZE(k1SpecialPalette19PC98), k1SpecialPalette19PC98 };
+
+static const byte k1SpecialPalette20PC98[21] = {
+ 0x26, 0x1B, 0x1B, 0x3F, 0x34, 0x34, 0x3B, 0x2F,
+ 0x2F, 0x39, 0x2B, 0x2B, 0x36, 0x26, 0x27, 0x33,
+ 0x22, 0x23, 0x31, 0x1F, 0x20
+};
+
+static const ByteProvider k1SpecialPalette20PC98Provider = { ARRAYSIZE(k1SpecialPalette20PC98), k1SpecialPalette20PC98 };
+
+static const byte k1SpecialPalette21PC98[21] = {
+ 0x1C, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x38, 0x00,
+ 0x00, 0x32, 0x00, 0x00, 0x2B, 0x00, 0x00, 0x25,
+ 0x00, 0x00, 0x1F, 0x00, 0x00
+};
+
+static const ByteProvider k1SpecialPalette21PC98Provider = { ARRAYSIZE(k1SpecialPalette21PC98), k1SpecialPalette21PC98 };
+
+static const byte k1SpecialPalette22PC98[21] = {
+ 0x1F, 0x1F, 0x0C, 0x3F, 0x3F, 0x21, 0x3B, 0x3B,
+ 0x1F, 0x37, 0x37, 0x1D, 0x34, 0x34, 0x1B, 0x30,
+ 0x30, 0x19, 0x2D, 0x2D, 0x17
+};
+
+static const ByteProvider k1SpecialPalette22PC98Provider = { ARRAYSIZE(k1SpecialPalette22PC98), k1SpecialPalette22PC98 };
+
+static const byte k1SpecialPalette23PC98[21] = {
+ 0x1F, 0x1F, 0x00, 0x3F, 0x3F, 0x00, 0x3B, 0x3B,
+ 0x00, 0x37, 0x37, 0x00, 0x34, 0x34, 0x00, 0x30,
+ 0x30, 0x00, 0x2D, 0x2D, 0x00
+};
+
+static const ByteProvider k1SpecialPalette23PC98Provider = { ARRAYSIZE(k1SpecialPalette23PC98), k1SpecialPalette23PC98 };
+
+static const byte k1SpecialPalette24PC98[48] = {
+ 0x36, 0x38, 0x2C, 0x31, 0x38, 0x23, 0x2A, 0x33,
+ 0x1E, 0x24, 0x2F, 0x1A, 0x1E, 0x2A, 0x16, 0x18,
+ 0x26, 0x13, 0x13, 0x21, 0x0F, 0x0E, 0x1D, 0x0D,
+ 0x0D, 0x1B, 0x0C, 0x0A, 0x19, 0x0A, 0x0A, 0x18,
+ 0x0A, 0x08, 0x17, 0x08, 0x08, 0x16, 0x08, 0x08,
+ 0x15, 0x06, 0x06, 0x14, 0x06, 0x06, 0x11, 0x06
+};
+
+static const ByteProvider k1SpecialPalette24PC98Provider = { ARRAYSIZE(k1SpecialPalette24PC98), k1SpecialPalette24PC98 };
+
+static const byte k1SpecialPalette25PC98[48] = {
+ 0x36, 0x38, 0x2C, 0x31, 0x36, 0x23, 0x2A, 0x33,
+ 0x1E, 0x24, 0x2F, 0x1A, 0x1E, 0x2A, 0x16, 0x1E,
+ 0x2A, 0x16, 0x18, 0x26, 0x13, 0x13, 0x21, 0x0F,
+ 0x0E, 0x1D, 0x0D, 0x0D, 0x1B, 0x0C, 0x0D, 0x1B,
+ 0x0C, 0x0A, 0x19, 0x0A, 0x0A, 0x18, 0x0A, 0x0A,
+ 0x18, 0x0A, 0x0A, 0x18, 0x0A, 0x06, 0x14, 0x06
+};
+
+static const ByteProvider k1SpecialPalette25PC98Provider = { ARRAYSIZE(k1SpecialPalette25PC98), k1SpecialPalette25PC98 };
+
+static const byte k1SpecialPalette26PC98[48] = {
+ 0x31, 0x38, 0x23, 0x31, 0x38, 0x23, 0x2A, 0x33,
+ 0x1E, 0x24, 0x2F, 0x1A, 0x19, 0x2A, 0x16, 0x18,
+ 0x26, 0x13, 0x13, 0x21, 0x0F, 0x13, 0x21, 0x11,
+ 0x13, 0x21, 0x0F, 0x0E, 0x1D, 0x0D, 0x0E, 0x1D,
+ 0x0D, 0x0E, 0x1D, 0x0D, 0x0D, 0x1B, 0x0C, 0x0A,
+ 0x19, 0x0A, 0x0A, 0x19, 0x0A, 0x06, 0x13, 0x06
+};
+
+static const ByteProvider k1SpecialPalette26PC98Provider = { ARRAYSIZE(k1SpecialPalette26PC98), k1SpecialPalette26PC98 };
+
+static const byte k1SpecialPalette27PC98[48] = {
+ 0x31, 0x38, 0x23, 0x31, 0x38, 0x23, 0x2A, 0x33,
+ 0x1E, 0x24, 0x2F, 0x1A, 0x19, 0x2A, 0x16, 0x18,
+ 0x26, 0x13, 0x13, 0x21, 0x0F, 0x13, 0x21, 0x0F,
+ 0x13, 0x21, 0x0F, 0x0E, 0x1D, 0x0D, 0x0E, 0x1D,
+ 0x0D, 0x0E, 0x1D, 0x0D, 0x0D, 0x1B, 0x0C, 0x0D,
+ 0x19, 0x0C, 0x0D, 0x19, 0x0C, 0x08, 0x16, 0x08
+};
+
+static const ByteProvider k1SpecialPalette27PC98Provider = { ARRAYSIZE(k1SpecialPalette27PC98), k1SpecialPalette27PC98 };
+
+static const byte k1SpecialPalette28PC98[48] = {
+ 0x36, 0x38, 0x2C, 0x31, 0x38, 0x23, 0x2A, 0x33,
+ 0x1E, 0x24, 0x2F, 0x1A, 0x19, 0x2A, 0x16, 0x1E,
+ 0x2A, 0x16, 0x18, 0x26, 0x13, 0x13, 0x21, 0x0F,
+ 0x13, 0x21, 0x0F, 0x13, 0x21, 0x0F, 0x13, 0x21,
+ 0x0F, 0x0E, 0x1D, 0x0D, 0x0D, 0x1B, 0x0C, 0x0D,
+ 0x1B, 0x0C, 0x0D, 0x1B, 0x0C, 0x08, 0x17, 0x08
+};
+
+static const ByteProvider k1SpecialPalette28PC98Provider = { ARRAYSIZE(k1SpecialPalette28PC98), k1SpecialPalette28PC98 };
+
+static const byte k1SpecialPalette29PC98[48] = {
+ 0x36, 0x38, 0x2C, 0x31, 0x38, 0x23, 0x2A, 0x33,
+ 0x1E, 0x24, 0x2F, 0x1A, 0x19, 0x2A, 0x16, 0x1E,
+ 0x2A, 0x16, 0x18, 0x26, 0x13, 0x13, 0x21, 0x0F,
+ 0x13, 0x21, 0x0F, 0x13, 0x21, 0x0F, 0x13, 0x21,
+ 0x0F, 0x13, 0x21, 0x0F, 0x0E, 0x1D, 0x0D, 0x0E,
+ 0x1D, 0x0D, 0x0E, 0x1D, 0x0D, 0x08, 0x17, 0x08
+};
+
+static const ByteProvider k1SpecialPalette29PC98Provider = { ARRAYSIZE(k1SpecialPalette29PC98), k1SpecialPalette29PC98 };
+
+static const byte k1SpecialPalette30PC98[60] = {
+ 0x1E, 0x1D, 0x3F, 0x1A, 0x19, 0x3F, 0x14, 0x12,
+ 0x3B, 0x12, 0x11, 0x37, 0x11, 0x11, 0x33, 0x0F,
+ 0x0E, 0x2F, 0x0E, 0x0D, 0x2C, 0x0D, 0x0C, 0x28,
+ 0x0B, 0x0B, 0x24, 0x0A, 0x0A, 0x20, 0x0A, 0x0A,
+ 0x1D, 0x05, 0x05, 0x18, 0x03, 0x03, 0x13, 0x01,
+ 0x01, 0x11, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x05,
+ 0x00, 0x0A, 0x1A, 0x00, 0x0F, 0x13, 0x00, 0x14,
+ 0x11, 0x0F, 0x0D, 0x00
+};
+
+static const ByteProvider k1SpecialPalette30PC98Provider = { ARRAYSIZE(k1SpecialPalette30PC98), k1SpecialPalette30PC98 };
+
+static const byte k1SpecialPalette31PC98[39] = {
+ 0x2B, 0x19, 0x34, 0x27, 0x17, 0x30, 0x23, 0x14,
+ 0x2C, 0x20, 0x12, 0x27, 0x1C, 0x11, 0x23, 0x18,
+ 0x0E, 0x1E, 0x15, 0x0C, 0x1A, 0x11, 0x0A, 0x15,
+ 0x0E, 0x08, 0x11, 0x0A, 0x05, 0x0C, 0x06, 0x03,
+ 0x08, 0x03, 0x01, 0x03, 0x00, 0x00, 0x00
+};
+
+static const ByteProvider k1SpecialPalette31PC98Provider = { ARRAYSIZE(k1SpecialPalette31PC98), k1SpecialPalette31PC98 };
+
+static const byte k1SpecialPalette32PC98[39] = {
+ 0x12, 0x12, 0x16, 0x11, 0x11, 0x14, 0x0F, 0x0F,
+ 0x12, 0x0D, 0x0D, 0x11, 0x0B, 0x0B, 0x0E, 0x0A,
+ 0x0A, 0x0C, 0x08, 0x08, 0x0A, 0x08, 0x08, 0x08,
+ 0x05, 0x05, 0x06, 0x05, 0x05, 0x05, 0x03, 0x03,
+ 0x03, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00
+};
+
+static const ByteProvider k1SpecialPalette32PC98Provider = { ARRAYSIZE(k1SpecialPalette32PC98), k1SpecialPalette32PC98 };
+
+static const byte k1SpecialPalette33PC98[60] = {
+ 0x3F, 0x3D, 0x2F, 0x3F, 0x3D, 0x29, 0x3F, 0x3D,
+ 0x23, 0x3F, 0x3D, 0x1D, 0x3F, 0x3B, 0x17, 0x3F,
+ 0x3B, 0x11, 0x3F, 0x3B, 0x0B, 0x3F, 0x3B, 0x05,
+ 0x3F, 0x3B, 0x00, 0x3D, 0x38, 0x00, 0x3B, 0x34,
+ 0x00, 0x39, 0x33, 0x00, 0x39, 0x30, 0x00, 0x37,
+ 0x2D, 0x00, 0x36, 0x2B, 0x00, 0x34, 0x28, 0x00,
+ 0x33, 0x26, 0x00, 0x32, 0x24, 0x00, 0x30, 0x22,
+ 0x00, 0x2F, 0x20, 0x00
+};
+
+static const ByteProvider k1SpecialPalette33PC98Provider = { ARRAYSIZE(k1SpecialPalette33PC98), k1SpecialPalette33PC98 };
+
+static const Shape k1Healing1ShapesPC98[22] = {
+ { 8, 0, 0, 3, 48, -12, -48 },
+ { 8, 3, 0, 3, 48, -12, -48 },
+ { 8, 6, 0, 3, 48, -12, -48 },
+ { 8, 9, 0, 3, 48, -12, -48 },
+ { 8, 12, 0, 3, 48, -12, -48 },
+ { 8, 15, 0, 3, 48, -12, -48 },
+ { 8, 18, 0, 3, 48, -12, -48 },
+ { 8, 21, 0, 3, 48, -12, -48 },
+ { 8, 24, 0, 3, 48, -12, -48 },
+ { 8, 27, 0, 3, 48, -12, -48 },
+ { 8, 30, 0, 3, 48, -12, -48 },
+ { 8, 33, 0, 3, 48, -12, -48 },
+ { 8, 0, 48, 3, 48, -12, -48 },
+ { 8, 3, 48, 3, 48, -12, -48 },
+ { 8, 6, 48, 3, 48, -12, -48 },
+ { 8, 9, 48, 3, 48, -12, -48 },
+ { 8, 12, 48, 3, 48, -12, -48 },
+ { 8, 15, 48, 3, 48, -12, -48 },
+ { 8, 18, 48, 3, 48, -12, -48 },
+ { 8, 21, 48, 3, 48, -12, -48 },
+ { 8, 24, 48, 3, 48, -12, -48 },
+ { 8, 27, 48, 3, 48, -12, -48 }
+};
+
+static const ShapeProvider k1Healing1ShapesPC98Provider = { ARRAYSIZE(k1Healing1ShapesPC98), k1Healing1ShapesPC98 };
+
+static const Shape k1Healing2ShapesPC98[30] = {
+ { 9, 0, 0, 3, 48, -11, -48 },
+ { 9, 3, 0, 3, 48, -11, -48 },
+ { 9, 6, 0, 3, 48, -11, -48 },
+ { 9, 9, 0, 3, 48, -11, -48 },
+ { 9, 12, 0, 3, 48, -11, -48 },
+ { 9, 15, 0, 3, 48, -11, -48 },
+ { 9, 18, 0, 3, 48, -11, -48 },
+ { 9, 21, 0, 3, 48, -11, -48 },
+ { 9, 24, 0, 3, 48, -11, -48 },
+ { 9, 27, 0, 3, 48, -11, -48 },
+ { 9, 30, 0, 3, 48, -11, -48 },
+ { 9, 33, 0, 3, 48, -11, -48 },
+ { 9, 0, 48, 3, 48, -11, -48 },
+ { 9, 3, 48, 3, 48, -11, -48 },
+ { 9, 6, 48, 3, 48, -11, -48 },
+ { 9, 9, 48, 3, 48, -11, -48 },
+ { 9, 12, 48, 3, 48, -11, -48 },
+ { 9, 15, 48, 3, 48, -11, -48 },
+ { 9, 18, 48, 3, 48, -11, -48 },
+ { 9, 21, 48, 3, 48, -11, -48 },
+ { 9, 24, 48, 3, 48, -11, -48 },
+ { 9, 27, 48, 3, 48, -11, -48 },
+ { 9, 30, 48, 3, 48, -11, -48 },
+ { 9, 33, 48, 3, 48, -11, -48 },
+ { 9, 0, 96, 3, 48, -11, -48 },
+ { 9, 3, 96, 3, 48, -11, -48 },
+ { 9, 6, 96, 3, 48, -11, -48 },
+ { 9, 9, 96, 3, 48, -11, -48 },
+ { 9, 12, 96, 3, 48, -11, -48 },
+ { 9, 15, 96, 3, 48, -11, -48 }
+};
+
+static const ShapeProvider k1Healing2ShapesPC98Provider = { ARRAYSIZE(k1Healing2ShapesPC98), k1Healing2ShapesPC98 };
+
+static const Shape k1PoisonDeathShapesPC98[20] = {
+ { 19, 0, 0, 8, 48, -31, -48 },
+ { 19, 8, 0, 8, 48, -31, -48 },
+ { 19, 16, 0, 8, 48, -31, -48 },
+ { 19, 24, 0, 8, 48, -31, -48 },
+ { 19, 32, 0, 8, 48, -31, -48 },
+ { 19, 0, 48, 8, 48, -31, -48 },
+ { 19, 8, 48, 8, 48, -31, -48 },
+ { 19, 16, 48, 8, 48, -31, -48 },
+ { 19, 24, 48, 8, 48, -31, -48 },
+ { 19, 32, 48, 8, 48, -31, -48 },
+ { 19, 0, 96, 8, 48, -31, -48 },
+ { 19, 8, 96, 8, 48, -31, -48 },
+ { 19, 16, 96, 8, 48, -31, -48 },
+ { 19, 24, 96, 8, 48, -31, -48 },
+ { 19, 32, 96, 8, 48, -31, -48 },
+ { 19, 0, 144, 8, 48, -31, -48 },
+ { 19, 8, 144, 8, 48, -31, -48 },
+ { 19, 16, 144, 8, 48, -31, -48 },
+ { 19, 24, 144, 8, 48, -31, -48 },
+ { 19, 32, 144, 8, 48, -31, -48 }
+};
+
+static const ShapeProvider k1PoisonDeathShapesPC98Provider = { ARRAYSIZE(k1PoisonDeathShapesPC98), k1PoisonDeathShapesPC98 };
+
+static const Shape k1FluteShapesPC98[36] = {
+ { 13, 0, 0, 3, 75, -12, -75 },
+ { 13, 3, 0, 3, 75, -12, -75 },
+ { 13, 6, 0, 3, 75, -12, -75 },
+ { 13, 9, 0, 3, 75, -12, -75 },
+ { 13, 12, 0, 3, 75, -12, -75 },
+ { 13, 15, 0, 3, 75, -12, -75 },
+ { 13, 18, 0, 3, 75, -12, -75 },
+ { 13, 21, 0, 3, 75, -12, -75 },
+ { 13, 24, 0, 3, 75, -12, -75 },
+ { 13, 27, 0, 3, 75, -12, -75 },
+ { 13, 30, 0, 3, 75, -12, -75 },
+ { 13, 33, 0, 3, 75, -12, -75 },
+ { 13, 36, 75, 3, 75, -12, -75 },
+ { 13, 0, 75, 3, 75, -12, -75 },
+ { 13, 3, 75, 3, 75, -12, -75 },
+ { 13, 6, 75, 3, 75, -12, -75 },
+ { 13, 9, 75, 3, 75, -12, -75 },
+ { 13, 12, 75, 3, 75, -12, -75 },
+ { 13, 15, 75, 3, 75, -12, -75 },
+ { 13, 18, 75, 3, 75, -12, -75 },
+ { 13, 21, 75, 3, 75, -12, -75 },
+ { 13, 24, 75, 3, 75, -12, -75 },
+ { 13, 27, 75, 3, 75, -12, -75 },
+ { 13, 30, 75, 3, 75, -12, -75 },
+ { 13, 33, 75, 3, 75, -12, -75 },
+ { 13, 36, 75, 3, 75, -12, -75 },
+ { 14, 0, 0, 3, 75, -12, -75 },
+ { 14, 3, 0, 3, 75, -12, -75 },
+ { 14, 6, 0, 3, 75, -12, -75 },
+ { 14, 9, 0, 3, 75, -12, -75 },
+ { 14, 12, 0, 3, 75, -12, -75 },
+ { 14, 15, 0, 3, 75, -12, -75 },
+ { 14, 18, 0, 3, 75, -12, -75 },
+ { 14, 21, 0, 3, 75, -12, -75 },
+ { 14, 24, 0, 3, 75, -12, -75 },
+ { 14, 27, 0, 3, 75, -12, -75 }
+};
+
+static const ShapeProvider k1FluteShapesPC98Provider = { ARRAYSIZE(k1FluteShapesPC98), k1FluteShapesPC98 };
+
+static const Shape k1Winter1ShapesPC98[7] = {
+ { 10, 5, 0, 5, 66, -20, -65 },
+ { 10, 10, 0, 5, 66, -20, -65 },
+ { 10, 15, 0, 5, 66, -20, -65 },
+ { 10, 20, 0, 5, 66, -20, -65 },
+ { 10, 25, 0, 5, 66, -20, -65 },
+ { 10, 30, 0, 5, 66, -20, -65 },
+ { 10, 35, 0, 5, 66, -20, -65 }
+};
+
+static const ShapeProvider k1Winter1ShapesPC98Provider = { ARRAYSIZE(k1Winter1ShapesPC98), k1Winter1ShapesPC98 };
+
+static const Shape k1Winter2ShapesPC98[35] = {
+ { 10, 0, 66, 5, 66, -20, -65 },
+ { 10, 5, 66, 5, 66, -20, -65 },
+ { 10, 10, 66, 5, 66, -20, -65 },
+ { 10, 15, 66, 5, 66, -20, -65 },
+ { 10, 20, 66, 5, 66, -20, -65 },
+ { 10, 25, 66, 5, 66, -20, -65 },
+ { 10, 30, 66, 5, 66, -20, -65 },
+ { 10, 35, 66, 5, 66, -20, -65 },
+ { 10, 0, 132, 5, 66, -20, -65 },
+ { 10, 5, 132, 5, 66, -20, -65 },
+ { 10, 10, 132, 5, 66, -20, -65 },
+ { 10, 15, 132, 5, 66, -20, -65 },
+ { 10, 20, 132, 5, 66, -20, -65 },
+ { 10, 25, 132, 5, 66, -20, -65 },
+ { 10, 30, 132, 5, 66, -20, -65 },
+ { 10, 35, 132, 5, 66, -20, -65 },
+ { 11, 0, 0, 5, 66, -20, -65 },
+ { 11, 5, 0, 5, 66, -20, -65 },
+ { 11, 10, 0, 5, 66, -20, -65 },
+ { 11, 15, 0, 5, 66, -20, -65 },
+ { 11, 20, 0, 5, 66, -20, -65 },
+ { 11, 25, 0, 5, 66, -20, -65 },
+ { 11, 30, 0, 5, 66, -20, -65 },
+ { 11, 35, 0, 5, 66, -20, -65 },
+ { 11, 0, 66, 5, 66, -20, -65 },
+ { 11, 5, 66, 5, 66, -20, -65 },
+ { 11, 10, 66, 5, 66, -20, -65 },
+ { 11, 15, 66, 5, 66, -20, -65 },
+ { 11, 20, 66, 5, 66, -20, -65 },
+ { 11, 25, 66, 5, 66, -20, -65 },
+ { 11, 30, 66, 5, 66, -20, -65 },
+ { 11, 35, 66, 5, 66, -20, -65 },
+ { 11, 0, 132, 5, 66, -20, -65 },
+ { 11, 5, 132, 5, 66, -20, -65 },
+ { 11, 10, 132, 5, 66, -20, -65 }
+};
+
+static const ShapeProvider k1Winter2ShapesPC98Provider = { ARRAYSIZE(k1Winter2ShapesPC98), k1Winter2ShapesPC98 };
+
+static const Shape k1Winter3ShapesPC98[4] = {
+ { 11, 15, 132, 5, 66, -20, -65 },
+ { 11, 20, 132, 5, 66, -20, -65 },
+ { 11, 25, 132, 5, 66, -20, -65 },
+ { 11, 30, 132, 5, 66, -20, -65 }
+};
+
+static const ShapeProvider k1Winter3ShapesPC98Provider = { ARRAYSIZE(k1Winter3ShapesPC98), k1Winter3ShapesPC98 };
+
+static const Shape k1DrinkShapesPC98[15] = {
+ { 6, 0, 0, 4, 48, -20, -48 },
+ { 6, 4, 0, 4, 48, -20, -48 },
+ { 6, 8, 0, 4, 48, -20, -48 },
+ { 6, 12, 0, 4, 48, -20, -48 },
+ { 6, 16, 0, 4, 48, -20, -48 },
+ { 6, 20, 0, 5, 48, -20, -48 },
+ { 6, 0, 48, 5, 54, -20, -54 },
+ { 6, 5, 48, 5, 54, -20, -54 },
+ { 6, 10, 48, 5, 54, -20, -54 },
+ { 7, 0, 0, 3, 43, -12, -43 },
+ { 7, 3, 3, 2, 40, -8, -40 },
+ { 7, 5, 7, 2, 36, -8, -36 },
+ { 7, 7, 10, 2, 33, -8, -33 },
+ { 7, 9, 12, 2, 31, -8, -31 },
+ { 7, 11, 15, 2, 28, -8, -28 }
+};
+
+static const ShapeProvider k1DrinkShapesPC98Provider = { ARRAYSIZE(k1DrinkShapesPC98), k1DrinkShapesPC98 };
+
+static const Shape k1WispShapesPC98[26] = {
+ { 12, 0, 0, 5, 48, -20, -48 },
+ { 12, 5, 0, 5, 48, -20, -48 },
+ { 12, 10, 0, 5, 48, -20, -48 },
+ { 12, 15, 0, 5, 48, -20, -48 },
+ { 12, 20, 0, 5, 48, -20, -48 },
+ { 12, 25, 0, 5, 48, -20, -48 },
+ { 12, 30, 0, 5, 48, -20, -48 },
+ { 12, 35, 0, 5, 48, -20, -48 },
+ { 12, 0, 48, 5, 48, -20, -48 },
+ { 12, 5, 48, 5, 48, -20, -48 },
+ { 12, 10, 48, 5, 48, -20, -48 },
+ { 12, 15, 48, 5, 48, -20, -48 },
+ { 12, 20, 48, 5, 48, -20, -48 },
+ { 12, 25, 48, 5, 48, -20, -48 },
+ { 12, 30, 48, 5, 48, -20, -48 },
+ { 12, 35, 48, 5, 48, -20, -48 },
+ { 12, 0, 96, 5, 29, -20, -42 },
+ { 12, 5, 96, 5, 29, -20, -42 },
+ { 12, 10, 96, 5, 29, -20, -42 },
+ { 12, 15, 96, 5, 29, -20, -42 },
+ { 12, 20, 96, 5, 29, -20, -42 },
+ { 12, 25, 96, 5, 29, -20, -42 },
+ { 12, 30, 96, 5, 29, -20, -42 },
+ { 12, 35, 96, 5, 29, -20, -42 },
+ { 12, 0, 125, 5, 29, -20, -42 },
+ { 12, 5, 125, 5, 29, -20, -42 }
+};
+
+static const ShapeProvider k1WispShapesPC98Provider = { ARRAYSIZE(k1WispShapesPC98), k1WispShapesPC98 };
+
+static const Shape k1MagicAnimShapesPC98[5] = {
+ { 17, 0, 0, 8, 49, -32, -49 },
+ { 17, 8, 0, 8, 49, -32, -49 },
+ { 17, 16, 0, 8, 49, -32, -49 },
+ { 17, 24, 0, 8, 49, -32, -49 },
+ { 17, 32, 0, 8, 49, -32, -49 }
+};
+
+static const ShapeProvider k1MagicAnimShapesPC98Provider = { ARRAYSIZE(k1MagicAnimShapesPC98), k1MagicAnimShapesPC98 };
+
+static const Shape k1BranStoneShapesPC98[14] = {
+ { 18, 0, 0, 5, 51, -20, -50 },
+ { 18, 5, 0, 5, 51, -20, -50 },
+ { 18, 10, 0, 5, 51, -20, -50 },
+ { 18, 15, 0, 5, 51, -20, -50 },
+ { 18, 20, 0, 5, 51, -20, -50 },
+ { 18, 25, 0, 5, 51, -20, -50 },
+ { 18, 30, 0, 5, 51, -20, -50 },
+ { 18, 35, 0, 5, 51, -20, -50 },
+ { 18, 0, 51, 5, 51, -20, -50 },
+ { 18, 5, 51, 5, 51, -20, -50 },
+ { 18, 10, 51, 5, 51, -20, -50 },
+ { 18, 15, 51, 5, 51, -20, -50 },
+ { 18, 20, 51, 5, 51, -20, -50 },
+ { 18, 25, 51, 5, 51, -20, -50 }
+};
+
+static const ShapeProvider k1BranStoneShapesPC98Provider = { ARRAYSIZE(k1BranStoneShapesPC98), k1BranStoneShapesPC98 };
+
+static const byte k1OutroReunionSeqPC98[1352] = {
+ 0x1A, 0x00, 0x08, 0x01, 0x06, 0x01, 0x00, 0x02,
+ 0x08, 0x00, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00,
+ 0x14, 0x0A, 0x00, 0x03, 0x08, 0x07, 0x08, 0x00,
+ 0x0B, 0x00, 0x09, 0x00, 0x10, 0x20, 0x5A, 0x00,
+ 0x3A, 0x02, 0x02, 0x08, 0x0D, 0x50, 0x00, 0x22,
+ 0x07, 0x10, 0x00, 0x02, 0x08, 0x0E, 0x50, 0x00,
+ 0x22, 0x07, 0x10, 0x00, 0x02, 0x08, 0x0C, 0x50,
+ 0x00, 0x22, 0x07, 0x10, 0x00, 0x02, 0x08, 0x0B,
+ 0x50, 0x00, 0x22, 0x07, 0x10, 0x00, 0x02, 0x08,
+ 0x0C, 0x50, 0x00, 0x22, 0x07, 0x10, 0x00, 0x02,
+ 0x08, 0x0D, 0x50, 0x00, 0x22, 0x07, 0x10, 0x00,
+ 0x02, 0x08, 0x0E, 0x50, 0x00, 0x22, 0x07, 0x10,
+ 0x00, 0x0A, 0x01, 0x03, 0x08, 0x07, 0x08, 0x00,
+ 0x0B, 0x01, 0x04, 0x00, 0x10, 0x21, 0x5A, 0x00,
+ 0x3A, 0x02, 0x0A, 0x02, 0x02, 0x08, 0x14, 0x50,
+ 0x00, 0x22, 0x07, 0x08, 0x00, 0x03, 0x08, 0x07,
+ 0x08, 0x00, 0x03, 0x08, 0x07, 0x08, 0x00, 0x03,
+ 0x08, 0x07, 0x08, 0x00, 0x03, 0x08, 0x07, 0x08,
+ 0x00, 0x0B, 0x02, 0x01, 0x00, 0x03, 0x08, 0x07,
+ 0x08, 0x00, 0x03, 0x08, 0x07, 0x08, 0x00, 0x03,
+ 0x08, 0x07, 0x08, 0x00, 0x10, 0x22, 0x5A, 0x00,
+ 0x3A, 0x02, 0x0A, 0x03, 0x03, 0x08, 0x07, 0x08,
+ 0x00, 0x0B, 0x03, 0x0B, 0x00, 0x10, 0x23, 0x78,
+ 0x00, 0x3A, 0x0F, 0x0A, 0x03, 0x03, 0x08, 0x07,
+ 0x08, 0x00, 0x0B, 0x03, 0x05, 0x00, 0x06, 0x28,
+ 0x00, 0x02, 0x08, 0x2E, 0x50, 0x00, 0x22, 0x07,
+ 0x10, 0x00, 0x02, 0x08, 0x2D, 0x50, 0x00, 0x22,
+ 0x07, 0x10, 0x00, 0x02, 0x08, 0x2E, 0x50, 0x00,
+ 0x22, 0x07, 0x10, 0x00, 0x02, 0x08, 0x2D, 0x50,
+ 0x00, 0x22, 0x07, 0x10, 0x00, 0x02, 0x08, 0x2E,
+ 0x50, 0x00, 0x22, 0x07, 0x10, 0x00, 0x02, 0x08,
+ 0x2D, 0x50, 0x00, 0x22, 0x07, 0x10, 0x00, 0x02,
+ 0x08, 0x2F, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00,
+ 0x02, 0x08, 0x30, 0x50, 0x00, 0x22, 0x07, 0x08,
+ 0x00, 0x02, 0x08, 0x31, 0x50, 0x00, 0x22, 0x07,
+ 0x08, 0x00, 0x02, 0x08, 0x32, 0x50, 0x00, 0x22,
+ 0x07, 0x08, 0x00, 0x06, 0x0A, 0x00, 0x10, 0x24,
+ 0x5A, 0x00, 0x3A, 0x02, 0x02, 0x08, 0x33, 0x50,
+ 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08, 0x34,
+ 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08,
+ 0x35, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02,
+ 0x08, 0x36, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00,
+ 0x02, 0x08, 0x37, 0x50, 0x00, 0x22, 0x07, 0x08,
+ 0x00, 0x02, 0x08, 0x35, 0x50, 0x00, 0x22, 0x07,
+ 0x08, 0x00, 0x02, 0x08, 0x34, 0x50, 0x00, 0x22,
+ 0x07, 0x08, 0x00, 0x02, 0x08, 0x33, 0x50, 0x00,
+ 0x22, 0x07, 0x08, 0x00, 0x02, 0x08, 0x35, 0x50,
+ 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08, 0x36,
+ 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08,
+ 0x37, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x06,
+ 0x0A, 0x00, 0x10, 0x25, 0x5A, 0x00, 0x3A, 0x02,
+ 0x02, 0x08, 0x33, 0x50, 0x00, 0x22, 0x07, 0x08,
+ 0x00, 0x02, 0x08, 0x34, 0x50, 0x00, 0x22, 0x07,
+ 0x08, 0x00, 0x02, 0x08, 0x35, 0x50, 0x00, 0x22,
+ 0x07, 0x08, 0x00, 0x02, 0x08, 0x36, 0x50, 0x00,
+ 0x22, 0x07, 0x08, 0x00, 0x02, 0x08, 0x37, 0x50,
+ 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08, 0x35,
+ 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08,
+ 0x34, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02,
+ 0x08, 0x33, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00,
+ 0x02, 0x08, 0x35, 0x50, 0x00, 0x22, 0x07, 0x08,
+ 0x00, 0x02, 0x08, 0x36, 0x50, 0x00, 0x22, 0x07,
+ 0x08, 0x00, 0x02, 0x08, 0x37, 0x50, 0x00, 0x22,
+ 0x07, 0x08, 0x00, 0x06, 0x1E, 0x00, 0x10, 0x26,
+ 0x78, 0x00, 0x3A, 0x0F, 0x02, 0x08, 0x38, 0x50,
+ 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08, 0x39,
+ 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08,
+ 0x3A, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02,
+ 0x08, 0x38, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00,
+ 0x02, 0x08, 0x3B, 0x50, 0x00, 0x22, 0x07, 0x08,
+ 0x00, 0x06, 0x0A, 0x00, 0x02, 0x08, 0x39, 0x50,
+ 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08, 0x38,
+ 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08,
+ 0x39, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02,
+ 0x08, 0x3A, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00,
+ 0x06, 0x3C, 0x00, 0x11, 0x02, 0x08, 0x33, 0x50,
+ 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08, 0x32,
+ 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08,
+ 0x31, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02,
+ 0x08, 0x30, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00,
+ 0x02, 0x08, 0x2F, 0x50, 0x00, 0x22, 0x07, 0x08,
+ 0x00, 0x02, 0x08, 0x2E, 0x50, 0x00, 0x22, 0x07,
+ 0x08, 0x00, 0x02, 0x08, 0x2D, 0x50, 0x00, 0x22,
+ 0x07, 0x08, 0x00, 0x06, 0x1E, 0x00, 0x02, 0x08,
+ 0x2E, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02,
+ 0x08, 0x2F, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00,
+ 0x02, 0x08, 0x30, 0x50, 0x00, 0x22, 0x07, 0x08,
+ 0x00, 0x02, 0x08, 0x31, 0x50, 0x00, 0x22, 0x07,
+ 0x08, 0x00, 0x02, 0x08, 0x32, 0x50, 0x00, 0x22,
+ 0x07, 0x08, 0x00, 0x02, 0x08, 0x33, 0x50, 0x00,
+ 0x22, 0x07, 0x08, 0x00, 0x02, 0x08, 0x41, 0x50,
+ 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08, 0x42,
+ 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08,
+ 0x43, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02,
+ 0x08, 0x44, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00,
+ 0x02, 0x08, 0x45, 0x50, 0x00, 0x22, 0x07, 0x08,
+ 0x00, 0x02, 0x08, 0x46, 0x50, 0x00, 0x22, 0x07,
+ 0x08, 0x00, 0x06, 0x0A, 0x00, 0x10, 0x27, 0x5A,
+ 0x00, 0x3A, 0x02, 0x02, 0x08, 0x4E, 0x50, 0x00,
+ 0x22, 0x07, 0x08, 0x00, 0x02, 0x08, 0x4F, 0x50,
+ 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08, 0x50,
+ 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08,
+ 0x51, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02,
+ 0x08, 0x52, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00,
+ 0x02, 0x08, 0x53, 0x50, 0x00, 0x22, 0x07, 0x08,
+ 0x00, 0x02, 0x08, 0x54, 0x50, 0x00, 0x22, 0x07,
+ 0x08, 0x00, 0x02, 0x08, 0x55, 0x50, 0x00, 0x22,
+ 0x07, 0x08, 0x00, 0x06, 0x78, 0x00, 0x10, 0x28,
+ 0x78, 0x00, 0x3A, 0x0F, 0x0A, 0x05, 0x02, 0x08,
+ 0x59, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02,
+ 0x08, 0x5A, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00,
+ 0x02, 0x08, 0x5B, 0x50, 0x00, 0x22, 0x07, 0x08,
+ 0x00, 0x02, 0x08, 0x5C, 0x50, 0x00, 0x22, 0x07,
+ 0x08, 0x00, 0x02, 0x08, 0x5D, 0x50, 0x00, 0x22,
+ 0x07, 0x08, 0x00, 0x0B, 0x05, 0x01, 0x00, 0x06,
+ 0x28, 0x00, 0x10, 0x29, 0x78, 0x00, 0x3A, 0x0F,
+ 0x0A, 0x06, 0x02, 0x08, 0x59, 0x50, 0x00, 0x22,
+ 0x07, 0x08, 0x00, 0x02, 0x08, 0x5A, 0x50, 0x00,
+ 0x22, 0x07, 0x08, 0x00, 0x02, 0x08, 0x5B, 0x50,
+ 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08, 0x5C,
+ 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x02, 0x08,
+ 0x5D, 0x50, 0x00, 0x22, 0x07, 0x08, 0x00, 0x0B,
+ 0x06, 0x01, 0x00, 0x06, 0x28, 0x00, 0x10, 0x2A,
+ 0x78, 0x00, 0x3A, 0x0F, 0x02, 0x08, 0x5E, 0x50,
+ 0x00, 0x22, 0x07, 0x10, 0x00, 0x02, 0x08, 0x63,
+ 0x50, 0x00, 0x22, 0x07, 0x10, 0x00, 0x06, 0xB4,
+ 0x00, 0x11, 0x18, 0x69, 0x02, 0x08, 0x64, 0x50,
+ 0x00, 0x22, 0x07, 0x10, 0x00, 0x02, 0x08, 0x65,
+ 0x50, 0x00, 0x22, 0x07, 0x10, 0x00, 0x18, 0x74,
+ 0x02, 0x08, 0x66, 0x50, 0x00, 0x22, 0x07, 0x10,
+ 0x00, 0x02, 0x08, 0x67, 0x50, 0x00, 0x22, 0x07,
+ 0x10, 0x00, 0x18, 0x75, 0x02, 0x08, 0x68, 0x50,
+ 0x00, 0x22, 0x07, 0x10, 0x00, 0x02, 0x08, 0x69,
+ 0x50, 0x00, 0x22, 0x07, 0x10, 0x00, 0x10, 0x2B,
+ 0x96, 0x00, 0x1C, 0x22, 0x0A, 0x06, 0x02, 0x08,
+ 0x6B, 0x50, 0x00, 0x22, 0x07, 0x10, 0x00, 0x02,
+ 0x08, 0x6C, 0x50, 0x00, 0x22, 0x07, 0x10, 0x00,
+ 0x02, 0x08, 0x6D, 0x50, 0x00, 0x22, 0x07, 0x10,
+ 0x00, 0x02, 0x08, 0x6E, 0x50, 0x00, 0x22, 0x07,
+ 0x10, 0x00, 0x02, 0x08, 0x6F, 0x50, 0x00, 0x22,
+ 0x07, 0x10, 0x00, 0x02, 0x08, 0x70, 0x50, 0x00,
+ 0x22, 0x07, 0x10, 0x00, 0x02, 0x08, 0x71, 0x50,
+ 0x00, 0x22, 0x07, 0x10, 0x00, 0x0B, 0x06, 0x01,
+ 0x00, 0x06, 0x1E, 0x00, 0x10, 0x2C, 0x96, 0x00,
+ 0x1C, 0x22, 0x0A, 0x06, 0x02, 0x08, 0x6B, 0x50,
+ 0x00, 0x22, 0x07, 0x10, 0x00, 0x02, 0x08, 0x6C,
+ 0x50, 0x00, 0x22, 0x07, 0x10, 0x00, 0x02, 0x08,
+ 0x6D, 0x50, 0x00, 0x22, 0x07, 0x10, 0x00, 0x02,
+ 0x08, 0x6E, 0x50, 0x00, 0x22, 0x07, 0x10, 0x00,
+ 0x02, 0x08, 0x6F, 0x50, 0x00, 0x22, 0x07, 0x10,
+ 0x00, 0x02, 0x08, 0x70, 0x50, 0x00, 0x22, 0x07,
+ 0x10, 0x00, 0x02, 0x08, 0x71, 0x50, 0x00, 0x22,
+ 0x07, 0x10, 0x00, 0x0B, 0x06, 0x01, 0x00, 0x06,
+ 0x1E, 0x00, 0x10, 0x2D, 0x96, 0x00, 0x1C, 0x22,
+ 0x0A, 0x06, 0x02, 0x08, 0x6B, 0x50, 0x00, 0x22,
+ 0x07, 0x10, 0x00, 0x02, 0x08, 0x6C, 0x50, 0x00,
+ 0x22, 0x07, 0x10, 0x00, 0x02, 0x08, 0x6D, 0x50,
+ 0x00, 0x22, 0x07, 0x10, 0x00, 0x02, 0x08, 0x6E,
+ 0x50, 0x00, 0x22, 0x07, 0x10, 0x00, 0x02, 0x08,
+ 0x6F, 0x50, 0x00, 0x22, 0x07, 0x10, 0x00, 0x02,
+ 0x08, 0x70, 0x50, 0x00, 0x22, 0x07, 0x10, 0x00,
+ 0x02, 0x08, 0x71, 0x50, 0x00, 0x22, 0x07, 0x10,
+ 0x00, 0x0B, 0x06, 0x01, 0x00, 0x06, 0x1E, 0x00,
+ 0x02, 0x08, 0x72, 0x50, 0x00, 0x22, 0x07, 0x10,
+ 0x00, 0x02, 0x08, 0x73, 0x50, 0x00, 0x22, 0x07,
+ 0x10, 0x00, 0x06, 0x14, 0x00, 0x02, 0x08, 0x74,
+ 0x50, 0x00, 0x22, 0x07, 0x10, 0x00, 0x02, 0x08,
+ 0x75, 0x50, 0x00, 0x22, 0x07, 0x10, 0x00, 0x06,
+ 0x78, 0x00, 0x13, 0x0E, 0x13, 0x01, 0x08, 0x1D
+};
+
+static const ByteProvider k1OutroReunionSeqPC98Provider = { ARRAYSIZE(k1OutroReunionSeqPC98), k1OutroReunionSeqPC98 };
+
+static const byte k1PC98IntroSfxPC98[768] = {
+ 0x56, 0x00, 0x43, 0x00, 0x7C, 0x00, 0x69, 0x00,
+ 0xA2, 0x00, 0x8F, 0x00, 0x00, 0x00, 0xB5, 0x00,
+ 0x00, 0x00, 0xE5, 0x00, 0x00, 0x00, 0x01, 0x01,
+ 0x00, 0x00, 0x2C, 0x01, 0x00, 0x00, 0x45, 0x01,
+ 0x00, 0x00, 0x54, 0x01, 0x00, 0x00, 0x68, 0x01,
+ 0x8D, 0x01, 0x7C, 0x01, 0xBD, 0x01, 0x9E, 0x01,
+ 0xF0, 0x01, 0xDC, 0x01, 0x00, 0x00, 0x04, 0x02,
+ 0x00, 0x00, 0x2B, 0x02, 0x59, 0x02, 0x40, 0x02,
+ 0xF1, 0x00, 0xFF, 0xF1, 0x09, 0x32, 0x81, 0x49,
+ 0x81, 0x52, 0x81, 0x59, 0x81, 0xF7, 0x01, 0x03,
+ 0xC7, 0x00, 0xFF, 0x42, 0x32, 0xFF, 0xF1, 0x05,
+ 0x30, 0x81, 0x47, 0x81, 0x50, 0x81, 0x57, 0x81,
+ 0xF7, 0x01, 0x03, 0xC7, 0x00, 0xFF, 0x41, 0x32,
+ 0xFF, 0xF1, 0x0C, 0x32, 0x81, 0x49, 0x81, 0x52,
+ 0x81, 0x59, 0x81, 0xF7, 0x01, 0x03, 0xC7, 0x00,
+ 0xFF, 0x42, 0x32, 0xFF, 0xF1, 0x08, 0x30, 0x81,
+ 0x47, 0x81, 0x50, 0x81, 0x57, 0x81, 0xF7, 0x01,
+ 0x03, 0xC7, 0x00, 0xFF, 0x41, 0x32, 0xFF, 0xF1,
+ 0x0F, 0x32, 0x81, 0x49, 0x81, 0x52, 0x81, 0x59,
+ 0x81, 0xF7, 0x01, 0x03, 0xC7, 0x00, 0xFF, 0x42,
+ 0x32, 0xFF, 0xF1, 0x0C, 0x30, 0x81, 0x47, 0x81,
+ 0x50, 0x81, 0x57, 0x81, 0xF7, 0x01, 0x03, 0xC7,
+ 0x00, 0xFF, 0x41, 0x32, 0xFF, 0xF1, 0x0A, 0x39,
+ 0x01, 0x44, 0x01, 0x49, 0x01, 0xFC, 0xF6, 0x05,
+ 0x05, 0xB7, 0x00, 0x39, 0x01, 0x44, 0x01, 0x49,
+ 0x01, 0xF6, 0x02, 0x02, 0xC3, 0x00, 0xFB, 0xFB,
+ 0xFB, 0xFB, 0x39, 0x01, 0x44, 0x01, 0x49, 0x01,
+ 0xF6, 0x02, 0x02, 0xD2, 0x00, 0xFC, 0xFC, 0xF6,
+ 0x05, 0x05, 0xC3, 0x00, 0xFF, 0xF1, 0x0F, 0x69,
+ 0x81, 0x59, 0x81, 0x49, 0x01, 0x39, 0x81, 0x54,
+ 0x01, 0xF6, 0x02, 0x02, 0xED, 0x00, 0x80, 0x04,
+ 0xFB, 0xFB, 0xFB, 0xF6, 0x03, 0x03, 0xED, 0x00,
+ 0xFF, 0xF1, 0x0C, 0x69, 0x81, 0x49, 0x81, 0x59,
+ 0x81, 0x39, 0x01, 0x62, 0x81, 0x57, 0x01, 0x60,
+ 0x01, 0xFC, 0xF6, 0x03, 0x03, 0x0B, 0x01, 0x62,
+ 0x81, 0x57, 0x01, 0x60, 0x01, 0xFB, 0xF6, 0x03,
+ 0x03, 0x17, 0x01, 0xFB, 0xFB, 0xFB, 0xF6, 0x05,
+ 0x05, 0x0B, 0x01, 0xFF, 0xF1, 0x0F, 0xF4, 0x09,
+ 0xF7, 0x01, 0x01, 0x54, 0x01, 0xC8, 0x27, 0x09,
+ 0xF4, 0x42, 0x10, 0x08, 0xFB, 0xF6, 0x0E, 0x0E,
+ 0x3A, 0x01, 0xF4, 0x80, 0xFF, 0xF1, 0x08, 0xF4,
+ 0x41, 0x10, 0x01, 0xFC, 0xF6, 0x07, 0x07, 0x49,
+ 0x01, 0xF4, 0x80, 0xFF, 0xF1, 0x0C, 0xF9, 0x0E,
+ 0xFA, 0x12, 0x64, 0x04, 0x0B, 0x60, 0x03, 0x80,
+ 0x03, 0x60, 0x03, 0x80, 0x03, 0x60, 0x12, 0xFF,
+ 0xF1, 0x0C, 0xF9, 0x0E, 0xFA, 0x12, 0x18, 0x04,
+ 0x0B, 0x70, 0x02, 0x80, 0x02, 0x72, 0x02, 0x80,
+ 0x02, 0x73, 0x0B, 0xFF, 0xF1, 0x0E, 0xF3, 0x00,
+ 0xF7, 0x01, 0x05, 0x39, 0xFF, 0xFF, 0x30, 0x30,
+ 0xF1, 0x07, 0x3B, 0x0A, 0xFF, 0xF1, 0x0C, 0xF3,
+ 0x0A, 0xF7, 0x01, 0x05, 0x39, 0xFF, 0xFF, 0x60,
+ 0x30, 0xF1, 0x05, 0x6B, 0x0A, 0xFF, 0xF1, 0x0E,
+ 0xF3, 0x00, 0xF7, 0x01, 0x05, 0x39, 0xFF, 0xFF,
+ 0x30, 0x30, 0xF1, 0x0C, 0x69, 0x01, 0x75, 0x02,
+ 0x72, 0x01, 0x64, 0x02, 0x70, 0x01, 0xFB, 0xF6,
+ 0x0B, 0x0B, 0xAC, 0x01, 0xFF, 0xF1, 0x0C, 0xF3,
+ 0x0A, 0xF7, 0x01, 0x05, 0x39, 0xFF, 0xFF, 0x60,
+ 0x31, 0xF1, 0x0A, 0x69, 0x01, 0x75, 0x02, 0x72,
+ 0x01, 0x64, 0x02, 0x70, 0x01, 0xFB, 0xF6, 0x09,
+ 0x09, 0xCB, 0x01, 0xFF, 0xF1, 0x0F, 0xF3, 0x00,
+ 0x24, 0x81, 0x29, 0x01, 0xF6, 0x08, 0x08, 0xE0,
+ 0x01, 0xFB, 0xF6, 0x0E, 0x0E, 0xE0, 0x01, 0xFF,
+ 0xF1, 0x0F, 0xF3, 0x0D, 0x24, 0x81, 0x22, 0x01,
+ 0xF6, 0x08, 0x08, 0xF4, 0x01, 0xFB, 0xF6, 0x0E,
+ 0x0E, 0xF4, 0x01, 0xFF, 0xF1, 0x0C, 0x29, 0x81,
+ 0xFC, 0x24, 0x81, 0xFC, 0x29, 0x81, 0xFC, 0x34,
+ 0x81, 0x35, 0x81, 0x36, 0x81, 0x35, 0x81, 0x34,
+ 0x81, 0x33, 0x81, 0x32, 0x81, 0x33, 0x01, 0xF6,
+ 0x02, 0x02, 0x0F, 0x02, 0xFB, 0xF6, 0x0E, 0x0E,
+ 0x0F, 0x02, 0xFF, 0xF1, 0x0F, 0xF4, 0x0B, 0x29,
+ 0x81, 0x27, 0x81, 0xF4, 0x43, 0x29, 0x02, 0xFB,
+ 0xF6, 0x0E, 0x0E, 0x35, 0x02, 0xF4, 0x80, 0xFF,
+ 0xF1, 0x0E, 0xF7, 0x01, 0x01, 0x09, 0x03, 0xFF,
+ 0x44, 0x08, 0xF1, 0x0C, 0xF7, 0x01, 0x04, 0xC8,
+ 0x00, 0xFF, 0x1B, 0x1E, 0xF1, 0x06, 0x1B, 0x1E,
+ 0xFF, 0xF1, 0x0F, 0xF4, 0x4F, 0xF7, 0x01, 0x05,
+ 0xC7, 0x00, 0xFF, 0x19, 0x04, 0xF7, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xF4, 0x0F, 0xFB, 0x10, 0x04,
+ 0xFB, 0xF6, 0x07, 0x07, 0x6E, 0x02, 0xF1, 0x08,
+ 0x10, 0x04, 0xFB, 0xF6, 0x07, 0x07, 0x78, 0x02,
+ 0xF4, 0x80, 0xFF, 0xF1, 0x0F, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
+};
+
+static const ByteProvider k1PC98IntroSfxPC98Provider = { ARRAYSIZE(k1PC98IntroSfxPC98), k1PC98IntroSfxPC98 };
+
diff --git a/devtools/create_kyradat/resources/lok_pc98_japanese.h b/devtools/create_kyradat/resources/lok_pc98_japanese.h
new file mode 100644
index 0000000000..0cbc96aeb9
--- /dev/null
+++ b/devtools/create_kyradat/resources/lok_pc98_japanese.h
@@ -0,0 +1,558 @@
+static const char *const k1IntroStringsPC98Japanese[50] = {
+ "This is a text test - 1",
+ "This is a text test - 2",
+ "\x8B""v""\x82\xB5\x90""U""\x82\xE8\x82\xBE\x82\xC8\x81""A""\x83""J""\x83\x89\x83""b""\x83""N""\x81""E""\x81""E""\x81""E",
+ "\x81""E""\x81""E""\x81""E""\x89\xA4\x8E\xBA\x96\x82\x8F""p""\x8E""t""\x82\xCC\x8E""w""\x93\xB1\x8E\xD2\x93""a""\x81""I",
+ "\x82\xA0\x82\xF1\x82\xBD\x82\xF0\x8B\xC1\x82\xA9\x82\xB5\x82\xBD\x82\xA9\x82\xC8\x81""H",
+ "\x83""}""\x83\x8B\x83""R""\x83\x80\x81""I",
+ "\x8B""M""\x97""l""\x82\xCC\x92""E""\x91\x96\x82\xC9\x82\xC2\x82\xA2\x82\xC4\x82\xCD\x8D\xF0\x93\xFA\x95\xF1\x8D\x90\x82\xF0\x8E\xF3\x82\xAF\x82\xC4\x82\xA2\x82\xBD\x81""B",
+ "\x82\xBB\x82\xEA\x82\xC5\x82\xA8\x91""O""\x82\xAA\x97\x88\x82\xE9\x82\xCC\x82\xF0\x91\xD2\x82\xC1\x82\xC4\x82\xA2\x82\xBD\x82\xF1\x82\xBE\x81""B",
+ "\x89\xBD\x8C\xCC\x82\xA8\x82\xEA\x97""l""\x82\xAA\x97\x88\x82\xBD\x82\xA9\x95\xAA\x82\xA9\x82\xE9\x82\xA9\x81""H",
+ "\x82\xC2\x82\xA2\x82\xC9\x81""A""\x82\xB1\x82\xCC\x8D\x91\x82\xF0\x8F\xE6\x82\xC1\x8E\xE6\x82\xC1\x82\xBD\x82\xBC\x81""I",
+ "\x8B""M""\x97""l""\x82\xCC\x82\xC2\x82\xDC\x82\xE7\x82\xF1\x8B\xBA\x94\x97\x82\xC8\x82\xC7\x82\xC5\x82\xA8\x82\xEA\x97""l""\x82\xF0\x94\x9B\x82\xEA\x82\xE9\x82\xE0\x82\xCC\x82\xA9\x81""B",
+ "\x82\xB3\x82\xA0\x81""A""\x82\xE2\x82\xE9\x82\xC8\x82\xE7\x82\xE2\x82\xC1\x82\xC4\x82\xDD\x82\xEB\x81""I",
+ "\x82\xED\x82\xB5\x82\xC9\x82\xE0\x82\xED\x82\xB8\x82\xA9\x82\xBE\x82\xAA\x96\x82\x97\xCD\x82\xAA\x8E""c""\x82\xC1\x82\xC4\x82\xA8\x82\xE9\x82\xED\x82\xA2\x81""B",
+ "\x82\xA8\x91""O""\x82\xF0\x82\xE2\x82\xC1\x82\xC2\x82\xAF\x82\xE9\x82\xC6\x82\xA2\x82\xA4\x82\xB1\x82\xC6\x82\xB3\x81""E""\x81""E""\x81""E",
+ "\x81""E""\x81""E""\x81""E""\x82\xE0\x82\xCD\x82\xE2\x82\xA8\x91""O""\x82\xCD\x90\xCE\x82\xC6\x82\xC8\x82\xC1\x82\xBD\x81""E""\x81""E""\x81""E",
+ "\x81""E""\x81""E""\x81""E""\x82\xBE\x82\xAA\x96\xDA\x82\xBE\x82\xAF\x82\xCD\x8C\xA9\x82\xA6\x82\xE9\x82\xDC\x82\xDC\x82\xC9\x82\xB5\x82\xC4\x82\xA8\x82\xB1\x82\xA4\x81""B",
+ "\x82\xA8\x82\xEA\x97""l""\x82\xCD\x83""L""\x83\x89\x83\x93\x83""f""\x83""B""\x83""A""\x82\xC9\x82\xCD\x82\xC8\x82\xF1\x82\xCC\x8A\xB4\x8F\x9D\x82\xE0\x82\xC8\x82\xA2\x81""E""\x81""E""\x81""E",
+ "\x81""E""\x81""E""\x81""E""\x82\xBE\x82\xAA\x81""A""\x82\xA8\x91""O""\x82\xBD\x82\xBF\x82\xCD\x82\xC7\x82\xA4\x82\xA9\x82\xC8\x81""B",
+ "\x8B""{""\x92\xEC\x93\xB9\x89\xBB\x8E""t""\x82\xCC\x83""}""\x83\x8B\x83""R""\x83\x80\x82\xAA\x98""S""\x82\xF0\x94""j""\x82\xC1\x82\xBD\x81""I",
+ "\x8D\xA1\x82\xE2\x94\xDE\x82\xCD\x83""L""\x83\x89\x83\x93\x83""f""\x83""B""\x83""A""\x82\xCC\x82\xB7\x82\xD7\x82\xC4\x82\xCC\x96\x82\x97\xCD\x82\xCC\x8D\xAA\x8C\xB9\x82\xBD\x82\xE9\x81""E""\x81""E""\x81""E",
+ "\x81""E""\x81""E""\x81""E""\x83""L""\x83\x89\x83\x93\x83""W""\x83""F""\x83\x80\x82\xF0\x8E\xE8\x92\x86\x82\xC9\x8E\xFB\x82\xDF\x82\xC4\x82\xA2\x82\xE9\x81""I",
+ "",
+ "\x89\xBD\x82\xC5\x82\xA8\x82\xEA\x97""l""\x82\xF0\x82\xC2\x82\xDC\x82\xB8\x82\xA9\x82\xB9\x82\xBD\x81""I",
+ "\x82\xE6\x82\xB5\x81""A""\x82\xA8\x91""O""\x82\xC9\x82\xB7\x82\xCE\x82\xE7\x82\xB5\x82\xA2\x91\xA1\x82\xE8\x95\xA8\x82\xF0\x82\xE2\x82\xEB\x82\xA4\x81""E""\x81""E""\x81""E",
+ "\x82\xB1\x82\xEA\x82\xAA\x82\xA8\x82\xEA\x97""l""\x82\xCC\x83\x86\x81""[""\x83\x82\x83""A""\x82\xB3\x81""I",
+ "\x82\xBE\x82\xAA\x81""A""\x83""t""\x83""F""\x83""A""\x82\xC8\x82\xA8\x82\xEA\x97""l""\x82\xCD\x8C""x""\x8D\x90\x82\xF0\x82\xB7\x82\xE9\x82\xC2\x82\xE0\x82\xE8\x82\xB3\x81""B",
+ "\x82\xA0\x82\xCC\x96\xD8\x82\xC9\x82\xCD\x93""o""\x82\xE9\x82\xC8\x82\xE6\x81""I",
+ "\x82\xBF\x82\xC1\x82\xB1\x82\xA2\x83\x8A\x83""X""\x82\xDF\x81""A""\x82\xA0\x82\xCC\x96\xD8\x82\xC9\x82\xCD\x93""o""\x82\xE9\x82\xC8\x81""I",
+ "\x83""u""\x83""D""\x81""[""\x81""I",
+ "\x82\xB1\x82\xA2\x82\xC2\x82\xCD\x96\xCA\x94\x92\x82\xA2\x82\xE2\x81""E""\x81""E""\x81""E",
+ "\x81""E""\x81""E""\x81""E""\x82\xBB\x82\xA4\x8E""v""\x82\xED\x82\xF1\x82\xA9\x81""H",
+ "\x82\xCD\x82\xC1\x81""A""\x82\xCD\x82\xC1\x82\xCD\x81""E""\x81""E""\x81""E",
+ "\x8C\xB3\x82\xC9\x96\xDF\x82\xC1\x82\xBD\x82\xCC\x82\xA9\x81""H",
+ "\x90\xB6\x82\xAB\x82\xC4\x82\xA2\x82\xE9\x82\xB1\x82\xC6\x82\xCD\x82\xB7\x82\xCE\x82\xE7\x82\xB5\x82\xA2\x81""I",
+ "\x83""u""\x83\x89\x83\x93\x83""h""\x83\x93\x81""I",
+ "\x82\xA8\x91""c""\x95\x83\x82\xB3\x82\xF1\x81""I""\x96""l""\x82\xBD\x82\xBF\x82\xCD\x82\xE2\x82\xE8\x82\xDC\x82\xB5\x82\xBD\x82\xCB\x81""I",
+ "\x82\xA2\x82\xA2\x82\xE2\x81""I""\x82\xE2\x82\xC1\x82\xBD\x82\xCC\x82\xCD\x82\xA8\x91""O""\x81""I",
+ "\x83""u""\x83\x89\x83\x93\x83""h""\x83\x93\x89\xA4\x81""@""\x82\xCE\x82\xF1\x82\xB4\x82\xA2\x81""I",
+ "\x89\xA4\x8E\xBA\x96\x82\x8F""p""\x8E""t""\x81""@""\x82\xCE\x82\xF1\x82\xB4\x82\xA2\x81""I",
+ "\x82\xB3\x82\xA0\x81""A""\x8B\xA4\x82\xC9\x83""L""\x83\x89\x83\x93\x83""f""\x83""B""\x83""A""\x82\xF0\x95\x9C\x8B\xBB\x82\xB5\x82\xE6\x82\xA4\x81""I",
+ "\x91\xE5\x8E""^""\x90\xAC\x81""I",
+ "\x96""l""\x82\xCC\x89\xA4\x82\xC6\x82\xB5\x82\xC4\x82\xCC\x8D\xC5\x8F\x89\x82\xCC\x95""z""\x8D\x90\x82\xCD\x81""E""\x81""E""\x81""E",
+ "\x83""T""\x83\x93\x83""_""\x83\x8B\x82\xF0\x83""L""\x83\x89\x83\x93\x83""f""\x83""B""\x83""A""\x82\xCC\x8C\xF6\x8E\xAE\x82\xC8\x97\x9A\x95\xA8\x82\xC6\x82\xB7\x82\xE9\x82\xB1\x82\xC6\x82\xC5\x82\xB7\x81""I",
+ "\x82\xE6\x82\xAD\x82\xE2\x82\xC1\x82\xBD\x81""I""\x83""u""\x83\x89\x83\x93\x83""h""\x83\x93\x81""B",
+ "\x8E\xA9\x91""R""\x8A""E""\x82\xCD\x82\xE6\x82\xEB\x82\xB1\x82\xD1\x82\xC9\x82\xA0\x82\xD3\x82\xEA\x81""E""\x81""E""\x81""E",
+ "\x82\xA0\x82\xC8\x82\xBD\x82\xCC\x97""F""\x90""l""\x92""B""\x82\xE0\x8F\x95\x82\xA9\x82\xC1\x82\xBD\x82\xCC\x82\xC5\x82\xB7\x81""I",
+ "\x83""u""\x83\x8A\x83\x93\x82\xE6\x81""E""\x81""E""\x81""E",
+ "\x83""}""\x83\x8B\x83""R""\x83\x80\x82\xAA\x98""S""\x82\xF0\x94""j""\x82\xC1\x82\xBD\x81""I",
+ "\x82\xDC\x82\xE0\x82\xC8\x82\xAD\x93""z""\x82\xCD\x82\xED\x82\xB5\x82\xCC\x82\xC6\x82\xB1\x82\xEB\x82\xD6\x97\x88\x82\xE9\x82\xBE\x82\xEB\x82\xA4\x81""B",
+ "\x82\xC7\x82\xA4\x82\xA9\x83""u""\x83\x89\x83\x93\x83""h""\x83\x93\x82\xF0\x8F\x95\x82\xAF\x82\xC4\x82\xE2\x82\xC1\x82\xC4\x82\xA8\x82\xAD\x82\xEA\x81""E""\x81""E""\x81""E"
+};
+
+static const StringListProvider k1IntroStringsPC98JapaneseProvider = { ARRAYSIZE(k1IntroStringsPC98Japanese), k1IntroStringsPC98Japanese };
+
+static const char *const k1ItemNamesPC98Japanese[107] = {
+ "\x83""K""\x81""[""\x83""l""\x83""b""\x83""g",
+ "\x83""A""\x83\x81\x83""W""\x83""X""\x83""g",
+ "\x83""A""\x83""N""\x83""A""\x83""}""\x83\x8A\x83\x93",
+ "\x83""_""\x83""C""\x83""A""\x83\x82\x83\x93\x83""h",
+ "\x83""G""\x83\x81\x83\x89\x83\x8B\x83""h",
+ "\x83""p""\x81""[""\x83\x8B",
+ "\x83\x8B\x83""r""\x81""[",
+ "\x83""y""\x83\x8A\x83""h""\x81""[""\x83""g",
+ "\x83""T""\x83""t""\x83""@""\x83""C""\x83""A",
+ "\x83""I""\x83""p""\x81""[""\x83\x8B",
+ "\x83""g""\x83""p""\x81""[""\x83""Y",
+ "\x83""I""\x83""j""\x83""L""\x83""X",
+ "\x83""T""\x83\x93\x83""X""\x83""g""\x81""[""\x83\x93",
+ "\x83\x80\x81""[""\x83\x93\x83""X""\x83""g""\x81""[""\x83\x93",
+ "\x83\x8C\x83""C""\x83\x93\x83""{""\x81""[""\x83""X""\x83""g""\x81""[""\x83\x93",
+ "\x83\x8D\x81""[""\x83""h""\x83""X""\x83""g""\x81""[""\x83\x93",
+ "\x83""o""\x83\x89",
+ "\x83""`""\x83\x85\x81""[""\x83\x8A\x83""b""\x83""v",
+ "\x83\x89\x83\x93",
+ "\x8B\xE2\x82\xCC\x83""o""\x83\x89",
+ "\x8B\xE2\x82\xCC\x8F\xAC\x91\x9C",
+ "\x8B\xE2\x89\xDD",
+ "\x8B\xE0\x89\xDD",
+ "\x8B\xE0\x82\xCC\x83\x8A\x83\x93\x83""O",
+ "\x90\xB9\x94""t",
+ "\x8F\xBC\x82\xDA\x82\xC1\x82\xAD\x82\xE8",
+ "\x82\xC7\x82\xF1\x82\xAE\x82\xE8",
+ "\x83""N""\x83\x8B\x83""~",
+ "\x94""R""\x82\xA6\x82\xE9\x83""t""\x83""@""\x83""C""\x83""A""\x83""x""\x83\x8A\x81""[",
+ "\x83""t""\x83""@""\x83""C""\x83""A""\x83""x""\x83\x8A\x81""[",
+ "\x83""t""\x83""@""\x83""C""\x83""A""\x83""x""\x83\x8A\x81""[",
+ "\x83""t""\x83""@""\x83""C""\x83""A""\x83""x""\x83\x8A\x81""[",
+ "\x83""t""\x83""@""\x83""C""\x83""A""\x83""x""\x83\x8A\x81""[",
+ "\x83""t""\x83""@""\x83""C""\x83""A""\x83""x""\x83\x8A\x81""[",
+ "\x82\xB3\x82\xA9\x82\xC8",
+ "\x82\xB3\x82\xA9\x82\xC8\x82\xCC\x8D\x9C",
+ "\x97""r""\x82\xCC\x91\xAB",
+ "\x8D\x9C",
+ "\x83\x8A\x83\x93\x83""S",
+ "\x83\x8A\x83\x93\x83""S""\x82\xCC\x90""c",
+ "\x83""u""\x83\x8B\x81""[""\x83""x""\x83\x8A\x81""[",
+ "\x83""L""\x83""m""\x83""R",
+ "\x83""m""\x81""[""\x83""g",
+ "\x91\xE5\x97\x9D\x90\xCE",
+ "\x82\xCC\x82\xB1\x82\xAC\x82\xE8",
+ "\x83""A""\x83\x93\x83""N",
+ "\x89""H""\x8D\xAA",
+ "\x83""^""\x83""}""\x83""S",
+ "\x97""t""\x82\xC1\x82\xCF",
+ "\x94\x92\x92\xDC\x91\x90",
+ "\x97\x8E\x82\xBF\x82\xBD\x90\xAF",
+ "\x83""N""\x83\x8A\x83""X""\x83""^""\x83\x8B\x82\xCC\x8E\xEC",
+ "\x97\xDC\x82\xCC\x82\xB5\x82\xB8\x82\xAD",
+ "\x8B\xBE",
+ "\x95""X""\x82\xCC\x82\xA9\x82\xAF\x82\xE7",
+ "\x83""t""\x83\x8B\x81""[""\x83""g",
+ "\x8D\xBB\x8E\x9E\x8C""v",
+ "\x93""S""\x82\xCC\x8C\xAE",
+ "\x82\xD0\x82\xB7\x82\xA2\x82\xCC\x8C\xAE",
+ "\x8D\x95\x97""j""\x90\xCE\x82\xCC\x8C\xAE",
+ "\x90\xD4\x82\xCC\x83""|""\x81""[""\x83""V""\x83\x87\x83\x93",
+ "\x90\xD4\x82\xCC\x83""|""\x81""[""\x83""V""\x83\x87\x83\x93",
+ "\x90\xC2\x82\xCC\x83""|""\x81""[""\x83""V""\x83\x87\x83\x93",
+ "\x90\xC2\x82\xCC\x83""|""\x81""[""\x83""V""\x83\x87\x83\x93",
+ "\x89\xA9\x90""F""\x82\xCC\x83""|""\x81""[""\x83""V""\x83\x87\x83\x93",
+ "\x89\xA9\x90""F""\x82\xCC\x83""|""\x81""[""\x83""V""\x83\x87\x83\x93",
+ "\x97\xCE\x82\xCC\x83""|""\x81""[""\x83""V""\x83\x87\x83\x93",
+ "\x83""I""\x83\x8C\x83\x93\x83""W""\x90""F""\x82\xCC\x83""|""\x81""[""\x83""V""\x83\x87\x83\x93",
+ "\x8E\x87\x90""F""\x82\xCC\x83""|""\x81""[""\x83""V""\x83\x87\x83\x93",
+ "\x93\xF8\x90""F""\x82\xCC\x83""|""\x81""[""\x83""V""\x83\x87\x83\x93",
+ "\x90""V""\x91""N""\x82\xC8\x90\x85",
+ "\x90""V""\x91""N""\x82\xC8\x90\x85",
+ "\x89\x96\x90\x85",
+ "\x89\x96\x90\x85",
+ "\x83""~""\x83""l""\x83\x89\x83\x8B\x83""E""\x83""H""\x81""[""\x83""^""\x81""[",
+ "\x83""~""\x83""l""\x83\x89\x83\x8B\x83""E""\x83""H""\x81""[""\x83""^""\x81""[",
+ "\x96\x82\x96""@""\x82\xCC\x90\x85",
+ "\x96\x82\x96""@""\x82\xCC\x90\x85",
+ "\x8B\xF3\x82\xC1\x82\xDB\x82\xCC\x83""t""\x83\x89\x83""X""\x83""R",
+ "\x8B\xF3\x82\xC1\x82\xDB\x82\xCC\x83""t""\x83\x89\x83""X""\x83""R",
+ "\x83""X""\x83""N""\x83\x8D\x81""[""\x83\x8B",
+ "\x83""X""\x83""N""\x83\x8D\x81""[""\x83\x8B",
+ "\x83""X""\x83""N""\x83\x8D\x81""[""\x83\x8B",
+ "\x83""X""\x83""N""\x83\x8D\x81""[""\x83\x8B",
+ "\x83""X""\x83""N""\x83\x8D\x81""[""\x83\x8B",
+ "\x83""X""\x83""N""\x83\x8D\x81""[""\x83\x8B",
+ "\x83""X""\x83""N""\x83\x8D\x81""[""\x83\x8B",
+ "\x83""X""\x83""N""\x83\x8D\x81""[""\x83\x8B",
+ "\x83""X""\x83""N""\x83\x8D\x81""[""\x83\x8B",
+ "\x83""X""\x83""N""\x83\x8D\x81""[""\x83\x8B",
+ "\x97""r""\x94\xE7\x8E\x86\x82\xCC\x90\xD8\x82\xEA\x92""[",
+ "\x97""r""\x94\xE7\x8E\x86\x82\xCC\x90\xD8\x82\xEA\x92""[",
+ "\x97""r""\x94\xE7\x8E\x86\x82\xCC\x90\xD8\x82\xEA\x92""[",
+ "\x97""r""\x94\xE7\x8E\x86\x82\xCC\x90\xD8\x82\xEA\x92""[",
+ "\x97""r""\x94\xE7\x8E\x86\x82\xCC\x90\xD8\x82\xEA\x92""[",
+ "\x90\xD4\x82\xCC\x83\x81\x83""K""\x83""X""\x83""g""\x81""[""\x83\x93",
+ "\x83""I""\x83\x8C\x83\x93\x83""W""\x90""F""\x82\xCC\x83\x81\x83""K""\x83""X""\x83""g""\x81""[""\x83\x93",
+ "\x89\xA9\x90""F""\x82\xCC\x83\x81\x83""K""\x83""X""\x83""g""\x81""[""\x83\x93",
+ "\x97\xCE\x82\xCC\x83\x81\x83""K""\x83""X""\x83""g""\x81""[""\x83\x93",
+ "\x90\xC2\x97\xCE\x82\xCC\x83\x81\x83""K""\x83""X""\x83""g""\x81""[""\x83\x93",
+ "\x90\xC2\x82\xCC\x83\x81\x83""K""\x83""X""\x83""g""\x81""[""\x83\x93",
+ "\x8E\x87\x90""F""\x82\xCC\x83\x81\x83""K""\x83""X""\x83""g""\x81""[""\x83\x93",
+ "\x8F""d""\x82\xA2\x90\xCE",
+ "\x89\xA4\x8A\xA5",
+ "\x89\xA4\xE2\x94",
+ "\x8B\xE0\x82\xCC\x8C\xAE",
+ "\x95\xAA\x82\xA9\x82\xE7\x82\xC8\x82\xA2\x82\xE0\x82\xCC"
+};
+
+static const StringListProvider k1ItemNamesPC98JapaneseProvider = { ARRAYSIZE(k1ItemNamesPC98Japanese), k1ItemNamesPC98Japanese };
+
+static const char *const k1TakenStringsPC98Japanese[2] = {
+ "\x82\xF0\x8E\xE6\x82\xC1\x82\xBD\x81""B",
+ "\x82\xF0\x8E\xE6\x82\xC1\x82\xBD\x81""B"
+};
+
+static const StringListProvider k1TakenStringsPC98JapaneseProvider = { ARRAYSIZE(k1TakenStringsPC98Japanese), k1TakenStringsPC98Japanese };
+
+static const char *const k1PlacedStringsPC98Japanese[1] = {
+ "\x82\xF0\x82\xB5\x82\xDC\x82\xC1\x82\xBD\x81""B"
+};
+
+static const StringListProvider k1PlacedStringsPC98JapaneseProvider = { ARRAYSIZE(k1PlacedStringsPC98Japanese), k1PlacedStringsPC98Japanese };
+
+static const char *const k1DroppedStringsPC98Japanese[1] = {
+ "\x82\xF0\x92""u""\x82\xA2\x82\xBD\x81""B"
+};
+
+static const StringListProvider k1DroppedStringsPC98JapaneseProvider = { ARRAYSIZE(k1DroppedStringsPC98Japanese), k1DroppedStringsPC98Japanese };
+
+static const char *const k1NoDropStringsPC98Japanese[2] = {
+ "\x82\xB1\x82\xCC\x8F\xEA\x96\xCA\x82\xC5\x82\xCD\x81""A""\x82\xB1\x82\xEA\x88\xC8\x8F\xE3\x83""A""\x83""C""\x83""e""\x83\x80\x82\xAA\x92""u""\x82\xAF\x82\xDC\x82\xB9\x82\xF1\x81""B",
+ "\x82\xB1\x82\xB1\x82\xC9\x82\xCD\x92""u""\x82\xAF\x82\xDC\x82\xB9\x82\xF1\x81""B"
+};
+
+static const StringListProvider k1NoDropStringsPC98JapaneseProvider = { ARRAYSIZE(k1NoDropStringsPC98Japanese), k1NoDropStringsPC98Japanese };
+
+static const char *const k1PutDownStringPC98Japanese[1] = {
+ "\x82\xDC\x82\xB8\x81""A""\x82\xB1\x82\xEA\x82\xF0\x92""u""\x82\xA2\x82\xC4\x82\xA9\x82\xE7\x82\xCC\x95\xFB\x82\xAA\x82\xE6\x82\xB3\x82\xBB\x82\xA4\x82\xBE\x81""B"
+};
+
+static const StringListProvider k1PutDownStringPC98JapaneseProvider = { ARRAYSIZE(k1PutDownStringPC98Japanese), k1PutDownStringPC98Japanese };
+
+static const char *const k1WaitAmuletStringPC98Japanese[1] = {
+ "\x83""A""\x83""~""\x83\x85\x83\x8C\x83""b""\x83""g""\x82\xC9\x97\xCD\x82\xAA\x96\xDF\x82\xE9\x82\xDC\x82\xC5\x91\xD2\x82\xC1\x82\xC4\x82\xDD\x82\xE6\x82\xA4\x81""B"
+};
+
+static const StringListProvider k1WaitAmuletStringPC98JapaneseProvider = { ARRAYSIZE(k1WaitAmuletStringPC98Japanese), k1WaitAmuletStringPC98Japanese };
+
+static const char *const k1BlackJewelStringPC98Japanese[1] = {
+ "\x82\xB1\x82\xEA\x82\xCD\x95\xF3\x90\xCE\x82\xC9\x82\xCD\x88\xE1\x82\xA2\x82\xC8\x82\xA2\x82\xAA\x81""A""\x82\xC7\x82\xA4\x82\xB5\x82\xC4\x82\xDC\x82\xC1\x8D\x95\x82\xC8\x82\xF1\x82\xBE\x82\xEB\x82\xA4\x81""H"
+};
+
+static const StringListProvider k1BlackJewelStringPC98JapaneseProvider = { ARRAYSIZE(k1BlackJewelStringPC98Japanese), k1BlackJewelStringPC98Japanese };
+
+static const char *const k1HealingTipStringPC98Japanese[1] = {
+ "\x82\xA0\x82\xEA\x81""A""\x82\xB1\x82\xEA\x82\xCD\x8F\x9D\x82\xC2\x82\xA2\x82\xBD\x82\xE0\x82\xCC\x82\xF0\x8E\xA1\x82\xB7\x96\x82\x96""@""\x82\xC8\x82\xF1\x82\xBE\x81""B"
+};
+
+static const StringListProvider k1HealingTipStringPC98JapaneseProvider = { ARRAYSIZE(k1HealingTipStringPC98Japanese), k1HealingTipStringPC98Japanese };
+
+static const char *const k1PoisonGoneStringPC98Japanese[2] = {
+ "\x82\xB7\x82\xB2\x82\xA2\x81""I",
+ "\x93\xC5\x82\xAA\x8F\xC1\x82\xA6\x82\xBD\x81""I"
+};
+
+static const StringListProvider k1PoisonGoneStringPC98JapaneseProvider = { ARRAYSIZE(k1PoisonGoneStringPC98Japanese), k1PoisonGoneStringPC98Japanese };
+
+static const char *const k1ThePoisonStringsPC98Japanese[3] = {
+ "\x93\xC5\x82\xBE\x81""E""\x81""E""\x81""E",
+ "\x8C\xC4\x8B""z""\x82\xAA\x8F""o""\x97\x88\x82\xC8\x82\xA2\x81""E""\x81""E""\x81""E",
+ "\x8B""C""\x95\xAA\x82\xAA\x88\xAB\x82\xA2\x81""E""\x81""E""\x81""E"
+};
+
+static const StringListProvider k1ThePoisonStringsPC98JapaneseProvider = { ARRAYSIZE(k1ThePoisonStringsPC98Japanese), k1ThePoisonStringsPC98Japanese };
+
+static const char *const k1FluteStringsPC98Japanese[2] = {
+ "\x82\xA0\x82\xDC\x82\xE8\x82\xA2\x82\xA2\x89\xB9\x90""F""\x82\xB6\x82\xE1\x82\xC8\x82\xA2\x82\xC8\x81""B",
+ "\x8D\xC5\x8C\xE3\x82\xCD\x82\xC6\x82\xC4\x82\xE0\x8D\x82\x82\xA2\x89\xB9\x82\xBE\x81""I"
+};
+
+static const StringListProvider k1FluteStringsPC98JapaneseProvider = { ARRAYSIZE(k1FluteStringsPC98Japanese), k1FluteStringsPC98Japanese };
+
+static const char *const k1WispJewelStringsPC98Japanese[3] = {
+ "\x89\xBD\x82\xE0\x8A\xB4\x82\xB6\x82\xC8\x82\xA2\x82\xC8\x82\xA0\x81""B",
+ "\x8D\xC5\x8F\x89\x82\xC9\x81""A",
+ "\x82\xF0\x89\xBA\x82\xC9\x92""u""\x82\xAD\x82\xCC\x82\xA9\x82\xE0\x92""m""\x82\xEA\x82\xC8\x82\xA2\x81""B"
+};
+
+static const StringListProvider k1WispJewelStringsPC98JapaneseProvider = { ARRAYSIZE(k1WispJewelStringsPC98Japanese), k1WispJewelStringsPC98Japanese };
+
+static const char *const k1MagicJewelStringsPC98Japanese[1] = {
+ "\x82\xB1\x82\xEA\x82\xCD\x88\xE1\x82\xA4\x82\xBC\x81""B"
+};
+
+static const StringListProvider k1MagicJewelStringsPC98JapaneseProvider = { ARRAYSIZE(k1MagicJewelStringsPC98Japanese), k1MagicJewelStringsPC98Japanese };
+
+static const char *const k1FlaskFullStringPC98Japanese[1] = {
+ "\x83""t""\x83\x89\x83""X""\x83""R""\x82\xCD\x82\xE0\x82\xA4\x90\x85\x82\xAA\x93\xFC\x82\xC1\x82\xC4\x82\xA2\x82\xE9\x81""B"
+};
+
+static const StringListProvider k1FlaskFullStringPC98JapaneseProvider = { ARRAYSIZE(k1FlaskFullStringPC98Japanese), k1FlaskFullStringPC98Japanese };
+
+static const char *const k1FullFlaskStringPC98Japanese[4] = {
+ "\x83""t""\x83\x89\x83""X""\x83""R""\x82\xCC\x92\x86\x90""g""\x82\xCD\x81""A\r""\x96""A""\x97\xA7\x82\xC2\x90""V""\x91""N""\x82\xC8\x90\x85\x82\xBE\x81""B",
+ "\x83""t""\x83\x89\x83""X""\x83""R""\x82\xCC\x92\x86\x90""g""\x82\xCD\x81""A\r""\x89\x96\x90\x85\x82\xBE\x81""B",
+ "\x83""t""\x83\x89\x83""X""\x83""R""\x82\xCC\x92\x86\x90""g""\x82\xCD\x81""A\r""\x83""~""\x83""l""\x83\x89\x83\x8B\x83""E""\x83""H""\x81""[""\x83""^""\x81""[""\x82\xBE\x81""B",
+ "\x96\x82\x96""@""\x82\xCC\x90\x85\x82\xBE\x81""B"
+};
+
+static const StringListProvider k1FullFlaskStringPC98JapaneseProvider = { ARRAYSIZE(k1FullFlaskStringPC98Japanese), k1FullFlaskStringPC98Japanese };
+
+static const char *const k1OutroHomeStringPC98Japanese[1] = {
+ "\x89\xE4\x82\xAA\x89\xC6"
+};
+
+static const StringListProvider k1OutroHomeStringPC98JapaneseProvider = { ARRAYSIZE(k1OutroHomeStringPC98Japanese), k1OutroHomeStringPC98Japanese };
+
+static const char *const k1VeryCleverStringPC98Japanese[1] = {
+ "\x82\xE6\x82\xA2\x8E\xE8\x8D\xDB\x82\xBE\x81""I""\x82\xBE\x82\xAA\x82\xA8\x91""O""\x82\xCC\x82\xB3\x82\xB3\x82\xE2\x82\xA9\x82\xC8\x93""w""\x97\xCD\x82\xCD\x96\xB3\x91\xCA\x82\xBE\x81""B"
+};
+
+static const StringListProvider k1VeryCleverStringPC98JapaneseProvider = { ARRAYSIZE(k1VeryCleverStringPC98Japanese), k1VeryCleverStringPC98Japanese };
+
+static const char *const k1GUIStringsPC98Japanese[75] = {
+ "\x83""L""\x83\x89\x83\x93\x83""f""\x83""B""\x83""A""\x82\xCC\x93""`""\x90\xE0",
+ "\x83""Z""\x81""[""\x83""u""\x82\xB5\x82\xBD\x8F\x8A\x82\xA9\x82\xE7\x8E""n""\x82\xDF\x82\xE9",
+ "\x83""Q""\x81""[""\x83\x80\x82\xF0\x83""Z""\x81""[""\x83""u""\x82\xB7\x82\xE9",
+ "\x83""Q""\x81""[""\x83\x80\x82\xCC\x90\xDD\x92\xE8",
+ "\x83""Q""\x81""[""\x83\x80\x8F""I""\x97\xB9",
+ "\x83""Q""\x81""[""\x83\x80\x8D\xC4\x8A""J",
+ "\x83""Q""\x81""[""\x83\x80\x82\xCC\x90\xDD\x92\xE8",
+ "\x82\xC7\x82\xCC\x83""f""\x81""[""\x83""^""\x82\xF0\x83\x8D\x81""[""\x83""h""\x82\xB5\x82\xDC\x82\xB7\x82\xA9\x81""H",
+ "\x83""Z""\x81""[""\x83""u""\x82\xB7\x82\xE9\x88\xCA\x92""u""\x82\xF0\x91""I""\x82\xF1\x82\xC5\x89\xBA\x82\xB3\x82\xA2\x81""F",
+ "\x81""m""\x8D\xC5\x8F\x89\x82\xA9\x82\xE7\x83""Q""\x81""[""\x83\x80\x82\xF0\x8E""n""\x82\xDF\x82\xE9\x81""n",
+ "\x81""m""\x8B\xF3\x82\xAB\x83""X""\x83\x8D\x83""b""\x83""g""\x81""n",
+ "\x92\x86\x8E""~",
+ "\x83""Z""\x81""[""\x83""u""\x82\xB5\x82\xBD\x83""Q""\x81""[""\x83\x80\x82\xC9\x96\xBC\x91""O""\x82\xF0\x82\xC2\x82\xAF\x82\xC4\x89\xBA\x82\xB3\x82\xA2\x81""F",
+ "\x83""Z""\x81""[""\x83""u",
+ "\x83""u""\x83\x89\x83\x93\x83""h""\x83\x93\x81""A""\x82\xE4\x82\xC1\x82\xAD\x82\xE8\x8B""x""\x82\xDF\x82\xE9\x82\xE6\x81""B",
+ "\x83""Q""\x81""[""\x83\x80\x82\xF0\x8F""I""\x97\xB9\x82\xB5\x82\xC4\x82\xA2\x82\xA2\x82\xC5\x82\xB7\x82\xA9\x81""H",
+ "XXX",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "XXX",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "XXXXXXX",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "XXXXXXXXX",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "\x83\x81\x83""C""\x83\x93\x81""E""\x83\x81\x83""j""\x83\x85\x81""[",
+ "\x83""I""\x83\x93",
+ "\x83""I""\x83""t",
+ "\x82\xCD\x82\xA2",
+ "\x82\xA2\x82\xA2\x82\xA6",
+ "\xD2""q""\x8A""$""\xDB""q""\x8A""$""\xE0""q""\x8A""$""\xE5""q""\x8A""$""\xEA""q""\x8A""$""\xF3""q""\x8A""$""\xFC""q""\x8A""$""\x01""r""\x8A""$""\x06""r""\x8A""$""\x95\xE0\x81""@""\x8D""s""\x81""@""\x91\xAC\x81""@""\x93""x",
+ "\x83\x81\x83""b""\x83""Z""\x81""[""\x83""W""\x91\xAC\x93""x",
+ "\x89\xB9\x81""@""\x81""@""\x81""@""\x81""@""\x81""@""\x8A""y",
+ "\x8C\xF8\x81""@""\x81""@""\x89\xCA\x81""@""\x81""@""\x89\xB9"
+};
+
+static const StringListProvider k1GUIStringsPC98JapaneseProvider = { ARRAYSIZE(k1GUIStringsPC98Japanese), k1GUIStringsPC98Japanese };
+
+static const char *const k1NewGameStringPC98Japanese[1] = {
+ "\x81""m""\x8D\xC5\x8F\x89\x82\xA9\x82\xE7\x83""Q""\x81""[""\x83\x80\x82\xF0\x8E""n""\x82\xDF\x82\xE9\x81""n"
+};
+
+static const StringListProvider k1NewGameStringPC98JapaneseProvider = { ARRAYSIZE(k1NewGameStringPC98Japanese), k1NewGameStringPC98Japanese };
+
+static const char *const k1ConfigStringsPC98Japanese[9] = {
+ "\x82\xB2\x82\xAD\x92""x""\x82\xAD",
+ "\x92""x""\x82\xAD",
+ "\x95\x81\x92\xCA",
+ "\x91\xAC\x82\xAD",
+ "\x82\xB2\x82\xAD\x91\xAC\x82\xAD",
+ "\x82\xB2\x82\xAD\x92""x""\x82\xAD",
+ "\x95\x81\x92\xCA",
+ "\x91\xAC\x82\xAD",
+ "\x97""v""\x83""N""\x83\x8A\x83""b""\x83""N"
+};
+
+static const StringListProvider k1ConfigStringsPC98JapaneseProvider = { ARRAYSIZE(k1ConfigStringsPC98Japanese), k1ConfigStringsPC98Japanese };
+
+static const char *const k1PC98StoryStringsPC98Japanese[2] = {
+ "\x88\xAB\x82\xCC\x93\xB9\x89\xBB\x8E""t""\x81""A""\x83""}""\x83\x8B\x83""R""\x83\x80\x82\xAA\x98""S""\x82\xF0\x94""j""\x82\xC1\x82\xBD\x81""B",
+ "\x8D\xA1\x82\xE2\x82\xB1\x82\xCC\x8D\x91\x82\xCC\x96\x82\x96""@""\x82\xCD\x82\xB7\x82\xD7\x82\xC4\x94\xDE\x82\xC9\x8E""x""\x94""z""\x82\xB3\x82\xEA\x82\xC4\x82\xB5\x82\xDC\x82\xC1\x82\xBD\x81""B"
+};
+
+static const StringListProvider k1PC98StoryStringsPC98JapaneseProvider = { ARRAYSIZE(k1PC98StoryStringsPC98Japanese), k1PC98StoryStringsPC98Japanese };
+
+static const byte k1CreditsStringsPC98Japanese[1328] = {
+ 0x0D, 0x02, 0x54, 0x48, 0x45, 0x20, 0x45, 0x4E,
+ 0x44, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x02, 0x46, 0x61, 0x62, 0x6C, 0x65,
+ 0x73, 0x20, 0x26, 0x20, 0x46, 0x69, 0x65, 0x6E,
+ 0x64, 0x73, 0x0D, 0x02, 0x42, 0x6F, 0x6F, 0x6B,
+ 0x20, 0x49, 0x0D, 0x02, 0x54, 0x48, 0x45, 0x20,
+ 0x4C, 0x45, 0x47, 0x45, 0x4E, 0x44, 0x20, 0x4F,
+ 0x46, 0x20, 0x4B, 0x59, 0x52, 0x41, 0x4E, 0x44,
+ 0x49, 0x41, 0x0D, 0x0D, 0x50, 0x75, 0x62, 0x6C,
+ 0x69, 0x73, 0x68, 0x65, 0x64, 0x20, 0x62, 0x79,
+ 0x0D, 0x02, 0x57, 0x65, 0x73, 0x74, 0x77, 0x6F,
+ 0x6F, 0x64, 0x20, 0x53, 0x74, 0x75, 0x64, 0x69,
+ 0x6F, 0x73, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
+ 0x03, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F,
+ 0x72, 0x3A, 0x05, 0x04, 0x42, 0x72, 0x65, 0x74,
+ 0x74, 0x20, 0x57, 0x2E, 0x20, 0x53, 0x70, 0x65,
+ 0x72, 0x72, 0x79, 0x0D, 0x0D, 0x03, 0x44, 0x65,
+ 0x73, 0x69, 0x67, 0x6E, 0x3A, 0x05, 0x04, 0x4D,
+ 0x69, 0x63, 0x68, 0x61, 0x65, 0x6C, 0x20, 0x4C,
+ 0x65, 0x67, 0x67, 0x0D, 0x04, 0x52, 0x69, 0x63,
+ 0x6B, 0x20, 0x50, 0x61, 0x72, 0x6B, 0x73, 0x0D,
+ 0x04, 0x50, 0x61, 0x75, 0x6C, 0x20, 0x53, 0x2E,
+ 0x20, 0x4D, 0x75, 0x64, 0x72, 0x61, 0x0D, 0x0D,
+ 0x03, 0x4C, 0x65, 0x61, 0x64, 0x20, 0x50, 0x72,
+ 0x6F, 0x67, 0x72, 0x61, 0x6D, 0x6D, 0x65, 0x72,
+ 0x3A, 0x05, 0x04, 0x4D, 0x69, 0x63, 0x68, 0x61,
+ 0x65, 0x6C, 0x20, 0x4C, 0x65, 0x67, 0x67, 0x0D,
+ 0x0D, 0x03, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74,
+ 0x20, 0x50, 0x72, 0x6F, 0x67, 0x72, 0x61, 0x6D,
+ 0x6D, 0x65, 0x72, 0x3A, 0x05, 0x04, 0x53, 0x63,
+ 0x6F, 0x74, 0x74, 0x20, 0x42, 0x6F, 0x77, 0x65,
+ 0x6E, 0x0D, 0x0D, 0x03, 0x41, 0x6D, 0x69, 0x67,
+ 0x61, 0x20, 0x50, 0x72, 0x6F, 0x67, 0x72, 0x61,
+ 0x6D, 0x6D, 0x65, 0x72, 0x3A, 0x05, 0x04, 0x42,
+ 0x69, 0x6C, 0x6C, 0x20, 0x53, 0x74, 0x6F, 0x6B,
+ 0x65, 0x73, 0x0D, 0x0D, 0x03, 0x50, 0x43, 0x2D,
+ 0x39, 0x38, 0x20, 0x50, 0x72, 0x6F, 0x67, 0x72,
+ 0x61, 0x6D, 0x6D, 0x65, 0x72, 0x3A, 0x05, 0x04,
+ 0x59, 0x75, 0x6B, 0x69, 0x6F, 0x20, 0x53, 0x65,
+ 0x6B, 0x69, 0x67, 0x75, 0x63, 0x68, 0x69, 0x0D,
+ 0x0D, 0x03, 0x49, 0x6E, 0x74, 0x72, 0x6F, 0x20,
+ 0x26, 0x20, 0x46, 0x69, 0x6E, 0x61, 0x6C, 0x65,
+ 0x3A, 0x05, 0x04, 0x43, 0x68, 0x72, 0x69, 0x73,
+ 0x74, 0x6F, 0x70, 0x68, 0x65, 0x72, 0x20, 0x59,
+ 0x61, 0x74, 0x65, 0x73, 0x0D, 0x0D, 0x03, 0x41,
+ 0x72, 0x74, 0x20, 0x26, 0x20, 0x47, 0x72, 0x61,
+ 0x70, 0x68, 0x69, 0x63, 0x73, 0x3A, 0x05, 0x04,
+ 0x52, 0x69, 0x63, 0x6B, 0x20, 0x50, 0x61, 0x72,
+ 0x6B, 0x73, 0x0D, 0x04, 0x52, 0x65, 0x6E, 0x20,
+ 0x4F, 0x6C, 0x73, 0x65, 0x6E, 0x0D, 0x04, 0x4C,
+ 0x6F, 0x75, 0x69, 0x73, 0x65, 0x20, 0x53, 0x61,
+ 0x6E, 0x64, 0x6F, 0x76, 0x61, 0x6C, 0x0D, 0x04,
+ 0x4A, 0x6F, 0x73, 0x65, 0x70, 0x68, 0x20, 0x48,
+ 0x65, 0x77, 0x69, 0x74, 0x74, 0x20, 0x49, 0x56,
+ 0x0D, 0x04, 0x4A, 0x75, 0x64, 0x69, 0x74, 0x68,
+ 0x20, 0x50, 0x65, 0x74, 0x65, 0x72, 0x73, 0x6F,
+ 0x6E, 0x0D, 0x04, 0x41, 0x61, 0x72, 0x6F, 0x6E,
+ 0x20, 0x50, 0x6F, 0x77, 0x65, 0x6C, 0x6C, 0x0D,
+ 0x04, 0x45, 0x6C, 0x69, 0x65, 0x20, 0x41, 0x72,
+ 0x61, 0x62, 0x69, 0x61, 0x6E, 0x0D, 0x04, 0x45,
+ 0x72, 0x69, 0x63, 0x20, 0x53, 0x68, 0x75, 0x6C,
+ 0x74, 0x73, 0x0D, 0x0D, 0x03, 0x41, 0x75, 0x64,
+ 0x69, 0x6F, 0x20, 0x44, 0x69, 0x72, 0x65, 0x63,
+ 0x74, 0x6F, 0x72, 0x3A, 0x05, 0x04, 0x50, 0x61,
+ 0x75, 0x6C, 0x20, 0x53, 0x2E, 0x20, 0x4D, 0x75,
+ 0x64, 0x72, 0x61, 0x0D, 0x0D, 0x03, 0x4D, 0x75,
+ 0x73, 0x69, 0x63, 0x3A, 0x05, 0x04, 0x46, 0x72,
+ 0x61, 0x6E, 0x6B, 0x20, 0x4B, 0x6C, 0x65, 0x70,
+ 0x61, 0x63, 0x6B, 0x69, 0x0D, 0x03, 0x28, 0x50,
+ 0x43, 0x2D, 0x39, 0x38, 0x29, 0x05, 0x04, 0x54,
+ 0x61, 0x6B, 0x65, 0x73, 0x68, 0x69, 0x20, 0x41,
+ 0x62, 0x6F, 0x0D, 0x0D, 0x03, 0x53, 0x6F, 0x75,
+ 0x6E, 0x64, 0x20, 0x45, 0x66, 0x66, 0x65, 0x63,
+ 0x74, 0x73, 0x3A, 0x05, 0x04, 0x44, 0x77, 0x69,
+ 0x67, 0x68, 0x74, 0x20, 0x4F, 0x6B, 0x61, 0x68,
+ 0x61, 0x72, 0x61, 0x0D, 0x03, 0x28, 0x50, 0x43,
+ 0x2D, 0x39, 0x38, 0x29, 0x05, 0x04, 0x54, 0x61,
+ 0x6B, 0x65, 0x73, 0x68, 0x69, 0x20, 0x41, 0x62,
+ 0x6F, 0x0D, 0x0D, 0x03, 0x57, 0x72, 0x69, 0x74,
+ 0x65, 0x72, 0x3A, 0x05, 0x04, 0x22, 0x43, 0x6F,
+ 0x63, 0x6F, 0x22, 0x0D, 0x0D, 0x03, 0x54, 0x72,
+ 0x61, 0x6E, 0x73, 0x6C, 0x61, 0x74, 0x6F, 0x72,
+ 0x3A, 0x05, 0x04, 0x4D, 0x69, 0x6E, 0x6F, 0x72,
+ 0x75, 0x20, 0x4E, 0x61, 0x6B, 0x61, 0x7A, 0x61,
+ 0x77, 0x61, 0x0D, 0x04, 0x59, 0x75, 0x72, 0x69,
+ 0x20, 0x49, 0x74, 0x6F, 0x0D, 0x0D, 0x03, 0x51,
+ 0x75, 0x61, 0x6C, 0x69, 0x74, 0x79, 0x20, 0x41,
+ 0x73, 0x73, 0x75, 0x72, 0x61, 0x6E, 0x63, 0x65,
+ 0x3A, 0x05, 0x04, 0x47, 0x6C, 0x65, 0x6E, 0x6E,
+ 0x20, 0x53, 0x70, 0x65, 0x72, 0x72, 0x79, 0x0D,
+ 0x04, 0x4D, 0x61, 0x74, 0x74, 0x20, 0x43, 0x6F,
+ 0x6C, 0x6C, 0x69, 0x6E, 0x73, 0x0D, 0x04, 0x42,
+ 0x69, 0x6C, 0x6C, 0x20, 0x46, 0x6F, 0x73, 0x74,
+ 0x65, 0x72, 0x0D, 0x04, 0x4D, 0x69, 0x63, 0x68,
+ 0x61, 0x65, 0x6C, 0x20, 0x4C, 0x69, 0x67, 0x68,
+ 0x74, 0x6E, 0x65, 0x72, 0x0D, 0x04, 0x4D, 0x69,
+ 0x63, 0x68, 0x61, 0x65, 0x6C, 0x20, 0x47, 0x61,
+ 0x74, 0x65, 0x72, 0x0D, 0x04, 0x45, 0x75, 0x67,
+ 0x65, 0x6E, 0x65, 0x20, 0x4D, 0x61, 0x72, 0x74,
+ 0x69, 0x6E, 0x0D, 0x04, 0x4D, 0x69, 0x63, 0x68,
+ 0x61, 0x65, 0x6C, 0x20, 0x47, 0x6C, 0x6F, 0x73,
+ 0x65, 0x63, 0x6B, 0x69, 0x0D, 0x04, 0x4A, 0x75,
+ 0x73, 0x74, 0x69, 0x6E, 0x20, 0x4E, 0x6F, 0x72,
+ 0x72, 0x0D, 0x04, 0x54, 0x6F, 0x70, 0x20, 0x53,
+ 0x74, 0x61, 0x72, 0x20, 0x54, 0x65, 0x73, 0x74,
+ 0x69, 0x6E, 0x67, 0x0D, 0x04, 0x54, 0x65, 0x73,
+ 0x74, 0x69, 0x6E, 0x67, 0x20, 0x31, 0x2C, 0x32,
+ 0x2C, 0x33, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x53,
+ 0x70, 0x65, 0x63, 0x69, 0x61, 0x6C, 0x20, 0x54,
+ 0x68, 0x61, 0x6E, 0x6B, 0x73, 0x20, 0x74, 0x6F,
+ 0x0D, 0x4C, 0x79, 0x6C, 0x65, 0x20, 0x4A, 0x2E,
+ 0x20, 0x48, 0x61, 0x6C, 0x6C, 0x0D, 0x44, 0x61,
+ 0x76, 0x69, 0x64, 0x20, 0x42, 0x69, 0x73, 0x68,
+ 0x6F, 0x70, 0x0D, 0x22, 0x54, 0x68, 0x65, 0x20,
+ 0x44, 0x6F, 0x63, 0x22, 0x0D, 0x61, 0x6E, 0x64,
+ 0x0D, 0x46, 0x69, 0x72, 0x65, 0x62, 0x65, 0x72,
+ 0x72, 0x79, 0x20, 0x47, 0x72, 0x65, 0x65, 0x6E,
+ 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x02, 0x43,
+ 0x41, 0x53, 0x54, 0x20, 0x4F, 0x46, 0x20, 0x43,
+ 0x48, 0x41, 0x52, 0x41, 0x43, 0x54, 0x45, 0x52,
+ 0x53, 0x0D, 0x0D, 0x4D, 0x61, 0x6C, 0x63, 0x6F,
+ 0x6C, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x4A,
+ 0x65, 0x73, 0x74, 0x65, 0x72, 0x0D, 0x42, 0x72,
+ 0x61, 0x6E, 0x64, 0x6F, 0x6E, 0x20, 0x74, 0x68,
+ 0x65, 0x20, 0x42, 0x6F, 0x6C, 0x64, 0x0D, 0x42,
+ 0x72, 0x61, 0x6E, 0x64, 0x79, 0x77, 0x69, 0x6E,
+ 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x44, 0x61,
+ 0x72, 0x6D, 0x0D, 0x50, 0x72, 0x69, 0x65, 0x73,
+ 0x74, 0x65, 0x73, 0x73, 0x20, 0x42, 0x72, 0x79,
+ 0x6E, 0x6E, 0x0D, 0x5A, 0x61, 0x6E, 0x74, 0x68,
+ 0x69, 0x61, 0x2C, 0x20, 0x4C, 0x61, 0x64, 0x79,
+ 0x20, 0x6F, 0x66, 0x20, 0x41, 0x6C, 0x63, 0x68,
+ 0x65, 0x6D, 0x79, 0x0D, 0x48, 0x65, 0x72, 0x6D,
+ 0x61, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x48,
+ 0x61, 0x6E, 0x64, 0x79, 0x6D, 0x61, 0x6E, 0x0D,
+ 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x01, 0x41, 0x6E, 0x79, 0x20, 0x63,
+ 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72,
+ 0x73, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x69,
+ 0x73, 0x20, 0x67, 0x61, 0x6D, 0x65, 0x20, 0x77,
+ 0x68, 0x6F, 0x20, 0x62, 0x65, 0x61, 0x72, 0x0D,
+ 0x01, 0x72, 0x65, 0x73, 0x65, 0x6D, 0x62, 0x6C,
+ 0x61, 0x6E, 0x63, 0x65, 0x20, 0x74, 0x6F, 0x20,
+ 0x70, 0x65, 0x72, 0x73, 0x6F, 0x6E, 0x73, 0x20,
+ 0x6C, 0x69, 0x76, 0x69, 0x6E, 0x67, 0x20, 0x6F,
+ 0x72, 0x0D, 0x01, 0x64, 0x65, 0x61, 0x64, 0x20,
+ 0x61, 0x72, 0x65, 0x20, 0x70, 0x75, 0x72, 0x65,
+ 0x6C, 0x79, 0x20, 0x63, 0x6F, 0x69, 0x6E, 0x63,
+ 0x69, 0x64, 0x65, 0x6E, 0x74, 0x61, 0x6C, 0x2E,
+ 0x0D, 0x0D, 0x0D, 0x01, 0x43, 0x6F, 0x70, 0x79,
+ 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x28, 0x43,
+ 0x29, 0x20, 0x31, 0x39, 0x39, 0x32, 0x2C, 0x20,
+ 0x57, 0x65, 0x73, 0x74, 0x77, 0x6F, 0x6F, 0x64,
+ 0x20, 0x53, 0x74, 0x75, 0x64, 0x69, 0x6F, 0x73,
+ 0x2C, 0x20, 0x49, 0x6E, 0x63, 0x2E, 0x0D, 0x01,
+ 0x43, 0x6F, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68,
+ 0x74, 0x20, 0x28, 0x43, 0x29, 0x20, 0x31, 0x39,
+ 0x39, 0x33, 0x2C, 0x20, 0x53, 0x74, 0x61, 0x72,
+ 0x20, 0x43, 0x72, 0x61, 0x66, 0x74, 0x2C, 0x20,
+ 0x49, 0x6E, 0x63, 0x2E, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x0D, 0x01, 0x41, 0x6C, 0x6C, 0x20,
+ 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x20, 0x72,
+ 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x2E,
+ 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x00, 0x00
+};
+
+static const ByteProvider k1CreditsStringsPC98JapaneseProvider = { ARRAYSIZE(k1CreditsStringsPC98Japanese), k1CreditsStringsPC98Japanese };
+
diff --git a/devtools/create_kyradat/resources/lol_dos.h b/devtools/create_kyradat/resources/lol_dos.h
new file mode 100644
index 0000000000..9f7d2e79b9
--- /dev/null
+++ b/devtools/create_kyradat/resources/lol_dos.h
@@ -0,0 +1,1558 @@
+static const char *const kLoLIngamePakFilesDOS[11] = {
+ "VOC.PAK",
+ "GENERAL.PAK",
+ "CHAPTER1.PAK",
+ "CHAPTER2.PAK",
+ "CHAPTER3.PAK",
+ "CHAPTER4.PAK",
+ "CHAPTER5.PAK",
+ "CHAPTER6.PAK",
+ "CHAPTER7.PAK",
+ "CHAPTER8.PAK",
+ "DRIVERS.PAK"
+};
+
+static const StringListProvider kLoLIngamePakFilesDOSProvider = { ARRAYSIZE(kLoLIngamePakFilesDOS), kLoLIngamePakFilesDOS };
+
+static const char *const kLoLIngameSfxFilesDOS[230] = {
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "DOORMTOP",
+ "DOORMTCL",
+ "PMETLHI",
+ "SWING6",
+ "MDAMAGE2",
+ "LEVERDN",
+ "LEVERUP",
+ "MTLDRSLM",
+ "DOORWDOP",
+ "DOORWDCL",
+ "KEYOPEN",
+ "KEYLOCK",
+ "PORTCUL",
+ "PORTCULD",
+ "LOKPICK",
+ "OCEAN2",
+ "NUNCHUK",
+ "SWING",
+ "SHWING1",
+ "SWING6",
+ "THROW",
+ "CROSSBOW",
+ "HEAL1",
+ "FIRESPL1",
+ "PRESSIN",
+ "PRESSOUT",
+ "PLATEON",
+ "PLATEOFF",
+ "DORWDSLM",
+ "LITENIN1",
+ "ICESPEL2",
+ "SPELL4B",
+ "SHIELD1",
+ "3BOLTC",
+ "2BOLTC",
+ "1BOLTC",
+ "DAWNSPL1",
+ "HEALKING",
+ "SPELL7",
+ "SWING1",
+ "EXPLODE",
+ "CROWCAW",
+ "MORPH2",
+ "CHEST",
+ "MONEY",
+ "SPELBK2",
+ "AUTOMAP",
+ "MINECRT3",
+ "CREAK1",
+ "TURNPAG2",
+ "POLGULP1",
+ "GOOEY1",
+ "BUCKBELL",
+ "KEEPXIT2",
+ "VSCREAM4",
+ "EMPTY",
+ "GOOEY1",
+ "GOOEY2",
+ "RIPPOD4",
+ "PODSKEL1",
+ "INVISO",
+ "OPENBOX2",
+ "ACCEPT2",
+ "BOW2",
+ "HACHUCKM",
+ "FOUNDRY2",
+ "FOUNDRY2",
+ "FOUNDRY4",
+ "FOUNDRY6",
+ "CLEANGL1",
+ "CLEANGL2",
+ "GLOWY1",
+ "DORSTNOP",
+ "DORSTNCL",
+ "EMPTY",
+ "EMPTY",
+ "EMPTY",
+ "EMPTY",
+ "ADAMAGE1",
+ "HDAMAGE1",
+ "TDAMAGE1",
+ "BDAMAGE1",
+ "LDAMAGE1",
+ "TDAMAGE2",
+ "CDAMAGE1",
+ "EMPTY",
+ "EMPTY",
+ "EMPTY",
+ "GOOD1",
+ "GOOD2",
+ "EMPTY",
+ "EMPTY",
+ "EMPTY",
+ "LITENIN1",
+ "COMPASS2",
+ "KINGDOR1",
+ "GLASBRK2",
+ "FLUTTER3",
+ "NUNCHUK",
+ "WALLFALL",
+ "WALLHIT",
+ "MWHOA1",
+ "LADDER",
+ "WHITTL3",
+ "ROWBOAT1",
+ "HORSEY2",
+ "SNORT",
+ "PUMPDOR1",
+ "PUMPSM2",
+ "PUMPSM3",
+ "SPARK1",
+ "BEZEL",
+ "SWARM",
+ "CHEST1",
+ "WRIT1",
+ "CAUSFOG",
+ "VAELAN2",
+ "ROARSPL1",
+ "RATTLER",
+ "WINK1",
+ "HANDFATE",
+ "QUAKE1",
+ "WIZLAMP1",
+ "SAP2",
+ "MSTDOOM1",
+ "GARDIAN1",
+ "VORTEX1",
+ "LION1",
+ "STEAM",
+ "SQUAWCK",
+ "SLIDEMUG",
+ "SPARKHIT",
+ "SPARKHIT2",
+ "SPARKHIT3",
+ "ICEFORM",
+ "ICEXPLOD",
+ "EXPLODE2",
+ "EXPLODE3",
+ "BOLTQUK2",
+ "BOLT2",
+ "BOLT3",
+ "SNKBITE",
+ "HANDGLOW",
+ "MSTDOOM2",
+ "MSTDOOM3",
+ "GARDIAN2",
+ "PLUSPOWR",
+ "MINSPOWR",
+ "BLUDCURL",
+ "LORAGASP",
+ "POURH2O",
+ "AWHOA2",
+ "HWHOA1",
+ "CWHOA1",
+ "AFALL2",
+ "EMPTY",
+ "CFALL2",
+ "MFALL2",
+ "EMPTY",
+ "EMPTY",
+ "EMPTY",
+ "EMPTY",
+ "EMPTY",
+ "EMPTY",
+ "EMPTY",
+ "EMPTY",
+ "WRIT2",
+ "WRIT3",
+ "WRIT4",
+ "WRIT5",
+ "WRIT6",
+ "RUCKUS1",
+ "RUCKUS3",
+ "CHANT1",
+ "EMPTY",
+ "EMPTY",
+ "EMPTY",
+ "CHANT2",
+ "CHANT3",
+ ""
+};
+
+static const StringListProvider kLoLIngameSfxFilesDOSProvider = { ARRAYSIZE(kLoLIngameSfxFilesDOS), kLoLIngameSfxFilesDOS };
+
+static const byte kLoLIngameSfxIndexDOS[1000] = {
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0x34, 0x00, 0x6F, 0x00, 0x7C, 0x00, 0x00, 0x00,
+ 0x7D, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00,
+ 0x7F, 0x00, 0x00, 0x00, 0x36, 0x00, 0x73, 0x00,
+ 0x35, 0x00, 0x9C, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
+ 0x80, 0x00, 0x73, 0x00, 0x81, 0x00, 0x73, 0x00,
+ 0x82, 0x00, 0x73, 0x00, 0x83, 0x00, 0x73, 0x00,
+ 0x84, 0x00, 0x73, 0x00, 0x85, 0x00, 0x73, 0x00,
+ 0x86, 0x00, 0x73, 0x00, 0xD7, 0x00, 0x76, 0x00,
+ 0x87, 0x00, 0x65, 0x00, 0x38, 0x00, 0x5F, 0x00,
+ 0x37, 0x00, 0x5F, 0x00, 0x32, 0x00, 0x0A, 0x00,
+ 0x33, 0x00, 0x64, 0x00, 0x39, 0x00, 0x65, 0x00,
+ 0x3A, 0x00, 0x0A, 0x00, 0x3B, 0x00, 0x14, 0x00,
+ 0x4E, 0x00, 0x65, 0x00, 0x7A, 0x00, 0x64, 0x00,
+ 0x7B, 0x00, 0x64, 0x00, 0x88, 0x00, 0x65, 0x00,
+ 0x3C, 0x00, 0x65, 0x00, 0x3D, 0x00, 0x64, 0x00,
+ 0x89, 0x00, 0x00, 0x00, 0x8E, 0x00, 0x14, 0x00,
+ 0x3E, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00,
+ 0x40, 0x00, 0x65, 0x00, 0x41, 0x00, 0x00, 0x00,
+ 0xC9, 0x00, 0x72, 0x00, 0xCA, 0x00, 0x72, 0x00,
+ 0xCB, 0x00, 0x72, 0x00, 0xCC, 0x00, 0x74, 0x00,
+ 0xCD, 0x00, 0x74, 0x00, 0xCE, 0x00, 0x74, 0x00,
+ 0xCF, 0x00, 0x74, 0x00, 0xD0, 0x00, 0x73, 0x00,
+ 0xD1, 0x00, 0x73, 0x00, 0xD2, 0x00, 0x73, 0x00,
+ 0xD3, 0x00, 0x73, 0x00, 0xD4, 0x00, 0x72, 0x00,
+ 0xD5, 0x00, 0x72, 0x00, 0xD6, 0x00, 0x72, 0x00,
+ 0x42, 0x00, 0x6F, 0x00, 0x43, 0x00, 0x6F, 0x00,
+ 0x44, 0x00, 0x6F, 0x00, 0x45, 0x00, 0x6F, 0x00,
+ 0x46, 0x00, 0x6F, 0x00, 0x47, 0x00, 0x6F, 0x00,
+ 0x48, 0x00, 0x77, 0x00, 0x49, 0x00, 0x89, 0xFF,
+ 0x4F, 0x00, 0x89, 0xFF, 0x50, 0x00, 0x89, 0xFF,
+ 0xA0, 0x00, 0x8A, 0xFF, 0xA1, 0x00, 0x89, 0xFF,
+ 0xA2, 0x00, 0x89, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
+ 0xA3, 0x00, 0x89, 0xFF, 0xA4, 0x00, 0x89, 0xFF,
+ 0x4A, 0x00, 0x13, 0x00, 0x4B, 0x00, 0x13, 0x00,
+ 0x4C, 0x00, 0x32, 0x00, 0x4D, 0x00, 0x32, 0x00,
+ 0x5F, 0x00, 0x0A, 0x00, 0x51, 0x00, 0x00, 0x00,
+ 0x52, 0x00, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x00,
+ 0x53, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00,
+ 0x55, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00,
+ 0x57, 0x00, 0x00, 0x00, 0x58, 0x00, 0x77, 0x00,
+ 0x60, 0x00, 0x00, 0x00, 0x5D, 0x00, 0x6A, 0x00,
+ 0x8A, 0x00, 0x6F, 0x00, 0x8B, 0x00, 0x6F, 0x00,
+ 0x8C, 0x00, 0x00, 0x00, 0x8D, 0x00, 0x00, 0x00,
+ 0x5A, 0x00, 0x77, 0x00, 0x5C, 0x00, 0x00, 0x00,
+ 0x5B, 0x00, 0x00, 0x00, 0x5E, 0x00, 0x6F, 0x00,
+ 0x61, 0x00, 0x76, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0x62, 0x00, 0x76, 0x00, 0x63, 0x00, 0x3C, 0x00,
+ 0x64, 0x00, 0x6D, 0x00, 0x65, 0x00, 0x00, 0x00,
+ 0x66, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00,
+ 0x68, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00,
+ 0x6A, 0x00, 0x00, 0x00, 0x6B, 0x00, 0x00, 0x00,
+ 0x6C, 0x00, 0x00, 0x00, 0x6D, 0x00, 0x00, 0x00,
+ 0x6E, 0x00, 0x00, 0x00, 0x6F, 0x00, 0x00, 0x00,
+ 0x70, 0x00, 0x88, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
+ 0x71, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00,
+ 0x73, 0x00, 0x74, 0x00, 0x74, 0x00, 0x00, 0x00,
+ 0x75, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00,
+ 0x77, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00,
+ 0x79, 0x00, 0x77, 0x00, 0x90, 0x00, 0x00, 0x00,
+ 0x91, 0x00, 0x00, 0x00, 0x92, 0x00, 0x77, 0x00,
+ 0x93, 0x00, 0x1E, 0x00, 0x94, 0x00, 0x89, 0xFF,
+ 0x95, 0x00, 0x77, 0x00, 0x96, 0x00, 0x76, 0x00,
+ 0x97, 0x00, 0x72, 0x00, 0x98, 0x00, 0x00, 0x00,
+ 0x99, 0x00, 0x50, 0x00, 0x9A, 0x00, 0x78, 0x00,
+ 0x9B, 0x00, 0x64, 0x00, 0x9C, 0x00, 0x5A, 0x00,
+ 0x9D, 0x00, 0x64, 0x00, 0x9E, 0x00, 0x65, 0x00,
+ 0x9F, 0x00, 0x66, 0x00, 0xA5, 0x00, 0x89, 0xFF,
+ 0xA6, 0x00, 0x89, 0xFF, 0xA7, 0x00, 0x77, 0x00,
+ 0xA8, 0x00, 0x76, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xA9, 0x00, 0x77, 0x00, 0xAA, 0x00, 0x77, 0x00,
+ 0xAB, 0x00, 0x77, 0x00, 0xAC, 0x00, 0x77, 0x00,
+ 0xAD, 0x00, 0x77, 0x00, 0xAE, 0x00, 0x77, 0x00,
+ 0xAF, 0x00, 0x76, 0x00, 0xB0, 0x00, 0x77, 0x00,
+ 0xB1, 0x00, 0x64, 0x00, 0xB2, 0x00, 0x6F, 0x00,
+ 0xB3, 0x00, 0x6E, 0x00, 0xB4, 0x00, 0x6E, 0x00,
+ 0xB5, 0x00, 0x77, 0x00, 0xB6, 0x00, 0x77, 0x00,
+ 0xB7, 0x00, 0x77, 0x00, 0xB8, 0x00, 0x76, 0x00,
+ 0xB9, 0x00, 0x77, 0x00, 0xBA, 0x00, 0x77, 0x00,
+ 0xBB, 0x00, 0x77, 0x00, 0xBC, 0x00, 0x77, 0x00,
+ 0xBD, 0x00, 0x77, 0x00, 0xBE, 0x00, 0x77, 0x00,
+ 0xBF, 0x00, 0x77, 0x00, 0xC0, 0x00, 0x76, 0x00,
+ 0xC1, 0x00, 0x77, 0x00, 0xC2, 0x00, 0x77, 0x00,
+ 0xC3, 0x00, 0x77, 0x00, 0xC4, 0x00, 0x6E, 0x00,
+ 0xC5, 0x00, 0x6E, 0x00, 0xC6, 0x00, 0x7D, 0x00,
+ 0xC7, 0x00, 0x78, 0x00, 0xC8, 0x00, 0x78, 0x00,
+ 0xD8, 0x00, 0x77, 0x00, 0xD9, 0x00, 0x77, 0x00,
+ 0xDA, 0x00, 0x77, 0x00, 0xDB, 0x00, 0x77, 0x00,
+ 0xDC, 0x00, 0x77, 0x00, 0xDD, 0x00, 0x78, 0x00,
+ 0xDE, 0x00, 0x78, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xE3, 0x00, 0x77, 0x00, 0xE4, 0x00, 0x77, 0x00,
+ 0xE0, 0x00, 0x1E, 0x00, 0xDF, 0x00, 0x77, 0x00,
+ 0xE1, 0x00, 0x05, 0x00, 0xE2, 0x00, 0x0A, 0x00,
+ 0x00, 0x00, 0x50, 0x00, 0x01, 0x00, 0x50, 0x00,
+ 0x02, 0x00, 0x50, 0x00, 0x03, 0x00, 0x50, 0x00,
+ 0x04, 0x00, 0x50, 0x00, 0x05, 0x00, 0x50, 0x00,
+ 0x06, 0x00, 0x50, 0x00, 0x07, 0x00, 0x50, 0x00,
+ 0x08, 0x00, 0x50, 0x00, 0x09, 0x00, 0x50, 0x00,
+ 0x0A, 0x00, 0x50, 0x00, 0x0B, 0x00, 0x50, 0x00,
+ 0x0C, 0x00, 0x50, 0x00, 0x0D, 0x00, 0x50, 0x00,
+ 0x0E, 0x00, 0x50, 0x00, 0x0F, 0x00, 0x50, 0x00,
+ 0x10, 0x00, 0x50, 0x00, 0x11, 0x00, 0x5A, 0x00,
+ 0x12, 0x00, 0x5A, 0x00, 0x13, 0x00, 0x5A, 0x00,
+ 0x14, 0x00, 0x5A, 0x00, 0x15, 0x00, 0x5A, 0x00,
+ 0x16, 0x00, 0x5A, 0x00, 0x17, 0x00, 0x5A, 0x00,
+ 0x18, 0x00, 0x5A, 0x00, 0x19, 0x00, 0x5A, 0x00,
+ 0x1A, 0x00, 0x5A, 0x00, 0x1B, 0x00, 0x5A, 0x00,
+ 0x1C, 0x00, 0x5A, 0x00, 0x1D, 0x00, 0x5A, 0x00,
+ 0x1E, 0x00, 0x5A, 0x00, 0x1F, 0x00, 0x5A, 0x00,
+ 0x20, 0x00, 0x5A, 0x00, 0x21, 0x00, 0x73, 0x00,
+ 0x22, 0x00, 0x73, 0x00, 0x23, 0x00, 0x73, 0x00,
+ 0x24, 0x00, 0x73, 0x00, 0x25, 0x00, 0x73, 0x00,
+ 0x26, 0x00, 0x73, 0x00, 0x27, 0x00, 0x73, 0x00,
+ 0x28, 0x00, 0x73, 0x00, 0x29, 0x00, 0x73, 0x00,
+ 0x2A, 0x00, 0x73, 0x00, 0x2B, 0x00, 0x50, 0x00,
+ 0x2C, 0x00, 0x5A, 0x00, 0x2D, 0x00, 0x5A, 0x00,
+ 0x2E, 0x00, 0x5A, 0x00, 0x2F, 0x00, 0x5A, 0x00,
+ 0x30, 0x00, 0x5A, 0x00, 0x31, 0x00, 0x5A, 0x00
+};
+
+static const ByteProvider kLoLIngameSfxIndexDOSProvider = { ARRAYSIZE(kLoLIngameSfxIndexDOS), kLoLIngameSfxIndexDOS };
+
+static const byte kLoLMusicTrackMapDOS[240] = {
+ 0x01, 0x61, 0x02, 0x01, 0x61, 0x03, 0x01, 0x61,
+ 0x04, 0x01, 0x61, 0x05, 0x03, 0x61, 0x03, 0x01,
+ 0x61, 0x07, 0x01, 0x61, 0x08, 0x01, 0x62, 0x02,
+ 0x01, 0x64, 0x03, 0x01, 0x62, 0x04, 0x01, 0x62,
+ 0x05, 0x01, 0x62, 0x06, 0x01, 0x62, 0x07, 0x01,
+ 0x62, 0x08, 0x01, 0x62, 0x09, 0x01, 0x63, 0x02,
+ 0x01, 0x63, 0x03, 0x01, 0x63, 0x04, 0x01, 0x63,
+ 0x05, 0x01, 0x63, 0x06, 0x01, 0x63, 0x07, 0x01,
+ 0x64, 0x02, 0x02, 0x61, 0x02, 0x02, 0x61, 0x03,
+ 0x02, 0x61, 0x04, 0x02, 0x61, 0x05, 0x02, 0x61,
+ 0x06, 0x02, 0x61, 0x07, 0x02, 0x61, 0x08, 0x02,
+ 0x61, 0x09, 0x03, 0x61, 0x02, 0x03, 0x61, 0x03,
+ 0x03, 0x61, 0x04, 0x03, 0x61, 0x05, 0x03, 0x61,
+ 0x06, 0x03, 0x61, 0x07, 0x04, 0x61, 0x02, 0x04,
+ 0x61, 0x03, 0x04, 0x61, 0x04, 0x05, 0x61, 0x02,
+ 0x05, 0x61, 0x03, 0x05, 0x61, 0x04, 0x05, 0x61,
+ 0x05, 0x05, 0x61, 0x06, 0x06, 0x61, 0x03, 0x06,
+ 0x61, 0x05, 0x06, 0x61, 0x06, 0x06, 0x62, 0x02,
+ 0x06, 0x61, 0x02, 0x06, 0x61, 0x04, 0x08, 0x61,
+ 0x02, 0x08, 0x61, 0x03, 0x08, 0x61, 0x04, 0x08,
+ 0x61, 0x05, 0x08, 0x61, 0x06, 0x08, 0x61, 0x07,
+ 0x08, 0x62, 0x02, 0x08, 0x62, 0x03, 0x01, 0x61,
+ 0x09, 0x03, 0x62, 0x02, 0x03, 0x62, 0x03, 0x03,
+ 0x62, 0x04, 0x03, 0x62, 0x05, 0x03, 0x62, 0x06,
+ 0x03, 0x62, 0x07, 0x03, 0x62, 0x08, 0x04, 0x61,
+ 0x05, 0x04, 0x61, 0x06, 0x04, 0x61, 0x07, 0x04,
+ 0x61, 0x08, 0x05, 0x62, 0x02, 0x05, 0x62, 0x03,
+ 0x05, 0x62, 0x04, 0x07, 0x61, 0x02, 0x07, 0x61,
+ 0x03, 0x01, 0x64, 0x0A, 0x03, 0x62, 0x09, 0x01,
+ 0x64, 0x04, 0x05, 0x62, 0x05, 0x05, 0x62, 0x06
+};
+
+static const ByteProvider kLoLMusicTrackMapDOSProvider = { ARRAYSIZE(kLoLMusicTrackMapDOS), kLoLMusicTrackMapDOS };
+
+static const byte kLoLIngameGMSfxIndexDOS[250] = {
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0x1A, 0x0B, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x25, 0x0B, 0x07, 0x25, 0x25, 0x25, 0x25,
+ 0x25, 0x25, 0x25, 0x1A, 0x11, 0x0E, 0x0E, 0x05,
+ 0x05, 0x11, 0x05, 0x05, 0x11, 0x05, 0x05, 0x11,
+ 0x2A, 0x2B, 0x06, 0xFF, 0x05, 0x05, 0x2B, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x25,
+ 0x25, 0x25, 0x25, 0xFF, 0xFF, 0xFF, 0x0C, 0x0C,
+ 0x0C, 0x0C, 0x0C, 0x0C, 0x08, 0x29, 0x29, 0x27,
+ 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x01, 0x0E,
+ 0x09, 0x09, 0x0A, 0x12, 0xE7, 0x29, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x18, 0x27, 0x13, 0x10, 0x1A, 0x1A,
+ 0xFF, 0xFF, 0x12, 0x26, 0xFF, 0x02, 0x05, 0x05,
+ 0x0F, 0xFF, 0xFF, 0xFF, 0x02, 0x05, 0x21, 0x1A,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x28, 0x0A, 0x19, 0xFF,
+ 0x0B, 0x06, 0x02, 0x02, 0x03, 0x02, 0xFF, 0xFF,
+ 0x0A, 0x0A, 0x0F, 0xFF, 0xFF, 0x0C, 0x1B, 0x22,
+ 0xFF, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0x10, 0x02,
+ 0x03, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A,
+ 0x29, 0x0A, 0x0A, 0x27, 0x0A, 0x28, 0x0A, 0x0A,
+ 0x06, 0xFF, 0x29, 0x29, 0x29, 0x28, 0x12, 0x12,
+ 0x12, 0x29, 0x29, 0x29, 0x25, 0x29, 0x27, 0x27,
+ 0x0C, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0x19, 0x19,
+ 0x19, 0x19, 0x19, 0x22, 0x1B, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x16, 0xFF, 0x16, 0x16, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C,
+ 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C,
+ 0x0C, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
+ 0x22, 0x22, 0x22, 0x16, 0x0C, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF
+};
+
+static const ByteProvider kLoLIngameGMSfxIndexDOSProvider = { ARRAYSIZE(kLoLIngameGMSfxIndexDOS), kLoLIngameGMSfxIndexDOS };
+
+static const byte kLoLIngameMT32SfxIndexDOS[250] = {
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0x30, 0x2E, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x2C, 0x31, 0x02, 0x2C, 0x2C, 0x2C, 0x2C,
+ 0x2C, 0x2C, 0x2C, 0x1A, 0x0C, 0x03, 0x04, 0x0B,
+ 0x0A, 0x0C, 0x0B, 0x0A, 0x0C, 0x0B, 0x0A, 0x0C,
+ 0x24, 0x25, 0x0D, 0x02, 0x0B, 0x0A, 0x25, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2C,
+ 0x2C, 0x2C, 0x2C, 0xFF, 0xFF, 0xFF, 0x2E, 0x2E,
+ 0x2E, 0x2E, 0x31, 0x31, 0x1B, 0x10, 0x23, 0x21,
+ 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x03, 0x04,
+ 0x2B, 0x2A, 0x32, 0x21, 0x18, 0x23, 0x1B, 0x1B,
+ 0x1B, 0xFF, 0x17, 0x33, 0x32, 0x08, 0x1A, 0x19,
+ 0x02, 0x02, 0x0E, 0x32, 0x09, 0x17, 0x0B, 0x0B,
+ 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0x01, 0x1A,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x33, 0x08, 0x34, 0xFF,
+ 0x31, 0x0D, 0x05, 0x06, 0x05, 0x06, 0xFF, 0xFF,
+ 0x0F, 0x34, 0x07, 0xFF, 0xFF, 0x31, 0x1A, 0x26,
+ 0xFF, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x05,
+ 0x06, 0x33, 0x34, 0x34, 0x34, 0x34, 0x34, 0x33,
+ 0x32, 0x34, 0x34, 0x32, 0x34, 0x33, 0x34, 0xFF,
+ 0x27, 0xFF, 0x23, 0x23, 0x23, 0x21, 0x0E, 0x0E,
+ 0x0E, 0x23, 0x23, 0x23, 0x2C, 0x32, 0x33, 0x33,
+ 0x2F, 0x19, 0xFF, 0xFF, 0xFF, 0x18, 0x17, 0x18,
+ 0x18, 0x17, 0x18, 0x26, 0x06, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x15, 0xFF, 0x15, 0x15, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31,
+ 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31,
+ 0x31, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26,
+ 0x26, 0x26, 0x26, 0x15, 0x31, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF
+};
+
+static const ByteProvider kLoLIngameMT32SfxIndexDOSProvider = { ARRAYSIZE(kLoLIngameMT32SfxIndexDOS), kLoLIngameMT32SfxIndexDOS };
+
+static const byte kLoLIngamePcSpkSfxIndexDOS[250] = {
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0x04, 0x0C, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x17, 0x0C, 0x10, 0x17, 0x17, 0x17, 0x17,
+ 0x17, 0x17, 0x17, 0x04, 0x14, 0x02, 0x02, 0x05,
+ 0x05, 0x14, 0x05, 0x05, 0x05, 0x14, 0x05, 0x05,
+ 0x14, 0x00, 0x00, 0x10, 0x05, 0x05, 0x01, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x17,
+ 0x17, 0x17, 0x17, 0xFF, 0xFF, 0xFF, 0x0C, 0x0C,
+ 0x0C, 0x0C, 0x0C, 0x0C, 0x12, 0x0E, 0x0F, 0x11,
+ 0x0F, 0x11, 0x12, 0x11, 0x12, 0x12, 0x01, 0x01,
+ 0x02, 0x0A, 0x15, 0x12, 0x0A, 0x0F, 0x15, 0x15,
+ 0x15, 0xFF, 0x0A, 0xFF, 0x16, 0x05, 0x0A, 0x0A,
+ 0x10, 0x10, 0x07, 0x15, 0xFF, 0x0A, 0xFF, 0xFF,
+ 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0x05, 0x10, 0x0A,
+ 0x13, 0x13, 0xFF, 0xFF, 0xFF, 0x01, 0x0A, 0xFF,
+ 0x0C, 0x00, 0x02, 0x02, 0x02, 0x02, 0xFF, 0xFF,
+ 0xFF, 0x15, 0x05, 0xFF, 0xFF, 0x0C, 0x16, 0x0B,
+ 0xFF, 0x0A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x12, 0x11, 0x12, 0x11, 0x12, 0x11, 0x12,
+ 0x11, 0x12, 0x11, 0x12, 0x11, 0x12, 0x03, 0xFF,
+ 0x02, 0xFF, 0x0F, 0x0F, 0x0F, 0x0F, 0x08, 0x08,
+ 0x08, 0x16, 0x16, 0x16, 0x17, 0x16, 0x16, 0x16,
+ 0x0B, 0x0A, 0xFF, 0xFF, 0xFF, 0x0A, 0x0A, 0x0A,
+ 0x0A, 0x0A, 0x0A, 0x06, 0x10, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x14, 0xFF, 0x14, 0x14, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B,
+ 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B,
+ 0x0B, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x0D, 0x14, 0x0B, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF
+};
+
+static const ByteProvider kLoLIngamePcSpkSfxIndexDOSProvider = { ARRAYSIZE(kLoLIngamePcSpkSfxIndexDOS), kLoLIngamePcSpkSfxIndexDOS };
+
+static const SpellProperty kLoLSpellPropertiesDOS[10] = {
+ { 16436, { 5, 10, 15, 25 }, 0, 0, { 0, 0, 0, 0 }, 0, 0, 0x0100 },
+ { 16437, { 5, 10, 25, 60 }, 0, 0, { 0, 0, 0, 0 }, 0, 0, 0x0001 },
+ { 16438, { 8, 15, 30, 80 }, 0, 0, { 0, 0, 0, 0 }, 0, 0, 0x0102 },
+ { 16440, { 20, 35, 65, 100 }, 0, 0, { 0, 0, 0, 0 }, 0, 0, 0x0103 },
+ { 16441, { 30, 60, 90, 120 }, 0, 0, { 0, 0, 0, 0 }, 0, 0, 0x0104 },
+ { 16442, { 30, 60, 90, 150 }, 0, 0, { 0, 0, 0, 0 }, 0, 0, 0x0105 },
+ { 16439, { 25, 30, 50, 100 }, 0, 0, { 0, 0, 0, 0 }, 0, 0, 0x0106 },
+ { 16443, { 3, 6, 12, 24 }, 0, 0, { 0, 0, 0, 0 }, 0, 0, 0x0107 },
+ { 16975, { 15, 15, 15, 15 }, 0, 0, { 0, 0, 0, 0 }, 0, 0, 0x0108 },
+ { 16975, { 15, 15, 15, 15 }, 15, 0, { 0, 0, 0, 0 }, 0, 0, 0x0108 }
+};
+
+static const SpellPropertyProvider kLoLSpellPropertiesDOSProvider = { ARRAYSIZE(kLoLSpellPropertiesDOS), kLoLSpellPropertiesDOS };
+
+static const byte kLoLGameShapeMapDOS[276] = {
+ 0x15, 0x54, 0x05, 0x35, 0x09, 0x36, 0x00, 0x34,
+ 0x00, 0x34, 0x00, 0x34, 0x00, 0x3A, 0x26, 0x3B,
+ 0x05, 0x35, 0x07, 0x37, 0x18, 0x3E, 0x0D, 0x3C,
+ 0x06, 0x40, 0x06, 0x3D, 0x01, 0x54, 0x01, 0x54,
+ 0x0A, 0x54, 0x0A, 0x54, 0x0A, 0x54, 0x04, 0x54,
+ 0x04, 0x54, 0x2D, 0x54, 0x2D, 0x54, 0x0B, 0x39,
+ 0x24, 0x54, 0x03, 0x38, 0x00, 0x3A, 0x1E, 0x3C,
+ 0x1E, 0x3C, 0x1B, 0x54, 0x14, 0x54, 0x29, 0x54,
+ 0x02, 0x54, 0x0C, 0x54, 0x22, 0x54, 0x21, 0x3F,
+ 0x0D, 0x3C, 0x25, 0x54, 0x1A, 0x3F, 0x04, 0x54,
+ 0x30, 0x54, 0x31, 0x54, 0x32, 0x54, 0x32, 0x54,
+ 0x00, 0x34, 0x00, 0x34, 0x00, 0x34, 0x00, 0x34,
+ 0x17, 0x54, 0x17, 0x54, 0x0E, 0x54, 0x0E, 0x54,
+ 0x0E, 0x54, 0x26, 0x3B, 0x2C, 0x54, 0x21, 0x3F,
+ 0x07, 0x37, 0x27, 0x54, 0x1B, 0x54, 0x1B, 0x54,
+ 0x1B, 0x54, 0x1B, 0x54, 0x1B, 0x54, 0x1B, 0x54,
+ 0x1B, 0x54, 0x1B, 0x54, 0x22, 0x54, 0x22, 0x54,
+ 0x16, 0x54, 0x2D, 0x54, 0x3B, 0x54, 0x3B, 0x54,
+ 0x3A, 0x54, 0x17, 0x54, 0x1B, 0x54, 0x1B, 0x54,
+ 0x17, 0x54, 0x0A, 0x54, 0x0A, 0x54, 0x0A, 0x54,
+ 0x1F, 0x54, 0x17, 0x54, 0x27, 0x54, 0x1B, 0x54,
+ 0x1E, 0x3C, 0x2A, 0x54, 0x2F, 0x54, 0x2F, 0x54,
+ 0x2F, 0x54, 0x2F, 0x54, 0x2F, 0x54, 0x2F, 0x54,
+ 0x2C, 0x54, 0x2C, 0x54, 0x2C, 0x54, 0x2C, 0x54,
+ 0x34, 0x54, 0x0F, 0x54, 0x35, 0x41, 0x1B, 0x54,
+ 0x1B, 0x54, 0x1B, 0x54, 0x1B, 0x54, 0x2B, 0x54,
+ 0x1D, 0x54, 0x1D, 0x54, 0x28, 0x54, 0x28, 0x54,
+ 0x28, 0x54, 0x28, 0x54, 0x01, 0x54, 0x14, 0x54,
+ 0x14, 0x54, 0x14, 0x54, 0x14, 0x54, 0x1B, 0x54,
+ 0x27, 0x54, 0x1B, 0x54, 0x1B, 0x54, 0x1B, 0x54,
+ 0x1B, 0x54, 0x36, 0x54, 0x37, 0x54, 0x38, 0x54,
+ 0x39, 0x54, 0x1B, 0x54, 0x1B, 0x54, 0x1B, 0x54,
+ 0x1B, 0x54, 0x27, 0x54, 0x2E, 0x54, 0x2E, 0x54,
+ 0x2E, 0x54, 0x2E, 0x54, 0x17, 0x54, 0x01, 0x54,
+ 0x1C, 0x54, 0x1C, 0x54
+};
+
+static const ByteProvider kLoLGameShapeMapDOSProvider = { ARRAYSIZE(kLoLGameShapeMapDOS), kLoLGameShapeMapDOS };
+
+static const byte kLoLSceneItemOffsDOS[8] = {
+ 0x00, 0xFE, 0x01, 0xFF, 0x02, 0x00, 0x01, 0xFF
+};
+
+static const ByteProvider kLoLSceneItemOffsDOSProvider = { ARRAYSIZE(kLoLSceneItemOffsDOS), kLoLSceneItemOffsDOS };
+
+static const byte kLoLCharInvIndexDOS[5] = {
+ 0x00, 0x00, 0x03, 0x01, 0x02
+};
+
+static const ByteProvider kLoLCharInvIndexDOSProvider = { ARRAYSIZE(kLoLCharInvIndexDOS), kLoLCharInvIndexDOS };
+
+static const byte kLoLCharInvDefsDOS[88] = {
+ 0x05, 0x34, 0x50, 0x34, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x05, 0x04, 0x05, 0x1C, 0x50, 0x04, 0x50, 0x1C,
+ 0x05, 0x5D, 0x0F, 0x4E, 0x50, 0x4E, 0x05, 0x19,
+ 0x50, 0x19, 0x05, 0x49, 0x50, 0x49, 0x05, 0x01,
+ 0x05, 0x31, 0x50, 0x01, 0x50, 0x31, 0x05, 0x61,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x05, 0x34, 0x50, 0x34,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x05, 0x04, 0x05, 0x1C,
+ 0x50, 0x04, 0x50, 0x1C, 0x05, 0x5D, 0x0F, 0x4E,
+ 0x50, 0x4E, 0x05, 0x34, 0x50, 0x34, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x05, 0x04, 0x05, 0x1C, 0x50, 0x04,
+ 0x50, 0x1C, 0xFF, 0xFF, 0x0F, 0x4E, 0x50, 0x4E
+};
+
+static const ByteProvider kLoLCharInvDefsDOSProvider = { ARRAYSIZE(kLoLCharInvDefsDOS), kLoLCharInvDefsDOS };
+
+static const uint16 kLoLCharDefsManDOS[9] = {
+ 0x0100, 0x0100, 0x0100, 0x0032, 0x0100, 0x0100, 0x0100, 0x0100,
+ 0x0004
+};
+
+static const Uint16Provider kLoLCharDefsManDOSProvider = { ARRAYSIZE(kLoLCharDefsManDOS), kLoLCharDefsManDOS };
+
+static const uint16 kLoLCharDefsWomanDOS[9] = {
+ 0x0100, 0x0100, 0x0100, 0x0032, 0x0100, 0x0100, 0x0100, 0x0100,
+ 0x0004
+};
+
+static const Uint16Provider kLoLCharDefsWomanDOSProvider = { ARRAYSIZE(kLoLCharDefsWomanDOS), kLoLCharDefsWomanDOS };
+
+static const uint16 kLoLCharDefsKieranDOS[9] = {
+ 0x0180, 0x0080, 0x00C0, 0x0032, 0x0200, 0x00A6, 0x0100, 0x0140,
+ 0x0006
+};
+
+static const Uint16Provider kLoLCharDefsKieranDOSProvider = { ARRAYSIZE(kLoLCharDefsKieranDOS), kLoLCharDefsKieranDOS };
+
+static const uint16 kLoLCharDefsAkshelDOS[9] = {
+ 0x00C0, 0x00C0, 0x0140, 0x0032, 0x0100, 0x0180, 0x0180, 0x0100,
+ 0x0004
+};
+
+static const Uint16Provider kLoLCharDefsAkshelDOSProvider = { ARRAYSIZE(kLoLCharDefsAkshelDOS), kLoLCharDefsAkshelDOS };
+
+static const uint32 kLoLExpRequirementsDOS[11] = {
+ 0x00000000, 0x000001F4, 0x000005DC, 0x00001388, 0x000061A8, 0x0000C350, 0x00013880, 0x0001D4C0,
+ 0x0002BF20, 0x00041EB0, 0x7FFFFFFF
+};
+
+static const Uint32Provider kLoLExpRequirementsDOSProvider = { ARRAYSIZE(kLoLExpRequirementsDOS), kLoLExpRequirementsDOS };
+
+static const uint16 kLoLMonsterModifiers1DOS[3] = {
+ 0x00C0, 0x0100, 0x0180
+};
+
+static const Uint16Provider kLoLMonsterModifiers1DOSProvider = { ARRAYSIZE(kLoLMonsterModifiers1DOS), kLoLMonsterModifiers1DOS };
+
+static const uint16 kLoLMonsterModifiers2DOS[3] = {
+ 0x0100, 0x0100, 0x00C0
+};
+
+static const Uint16Provider kLoLMonsterModifiers2DOSProvider = { ARRAYSIZE(kLoLMonsterModifiers2DOS), kLoLMonsterModifiers2DOS };
+
+static const uint16 kLoLMonsterModifiers3DOS[3] = {
+ 0x0140, 0x0100, 0x0080
+};
+
+static const Uint16Provider kLoLMonsterModifiers3DOSProvider = { ARRAYSIZE(kLoLMonsterModifiers3DOS), kLoLMonsterModifiers3DOS };
+
+static const byte kLoLMonsterShiftOffsetsDOS[32] = {
+ 0x01, 0x01, 0x01, 0x00, 0x01, 0xFF, 0x00, 0xFF,
+ 0x00, 0x00, 0x00, 0x01, 0xFF, 0x01, 0xFF, 0x00,
+ 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x01,
+ 0x01, 0x01, 0x01, 0x00, 0x01, 0xFF, 0x00, 0x00
+};
+
+static const ByteProvider kLoLMonsterShiftOffsetsDOSProvider = { ARRAYSIZE(kLoLMonsterShiftOffsetsDOS), kLoLMonsterShiftOffsetsDOS };
+
+static const byte kLoLMonsterDirFlagsDOS[16] = {
+ 0x08, 0x14, 0x00, 0x04, 0x04, 0x08, 0x14, 0x00,
+ 0x00, 0x04, 0x08, 0x14, 0x14, 0x00, 0x04, 0x08
+};
+
+static const ByteProvider kLoLMonsterDirFlagsDOSProvider = { ARRAYSIZE(kLoLMonsterDirFlagsDOS), kLoLMonsterDirFlagsDOS };
+
+static const byte kLoLMonsterScaleYDOS[30] = {
+ 0x7C, 0x78, 0x74, 0x70, 0x6C, 0x68, 0x65, 0x62,
+ 0x5F, 0x5C, 0x59, 0x56, 0x53, 0x50, 0x4D, 0x4A,
+ 0x48, 0x46, 0x44, 0x43, 0x41, 0x40, 0x3E, 0x3D,
+ 0x3C, 0x3B, 0x3A, 0x39, 0x38, 0x38
+};
+
+static const ByteProvider kLoLMonsterScaleYDOSProvider = { ARRAYSIZE(kLoLMonsterScaleYDOS), kLoLMonsterScaleYDOS };
+
+static const byte kLoLMonsterScaleXDOS[32] = {
+ 0x98, 0x98, 0x90, 0x88, 0x80, 0x76, 0x6E, 0x68,
+ 0x62, 0x5C, 0x58, 0x54, 0x50, 0x4A, 0x44, 0x40,
+ 0x3C, 0x38, 0x36, 0x32, 0x30, 0x2C, 0x2A, 0x28,
+ 0x26, 0x24, 0x22, 0x20, 0x20, 0x1E, 0x18, 0x10
+};
+
+static const ByteProvider kLoLMonsterScaleXDOSProvider = { ARRAYSIZE(kLoLMonsterScaleXDOS), kLoLMonsterScaleXDOS };
+
+static const uint16 kLoLMonsterScaleWHDOS[65] = {
+ 0x0041, 0x0045, 0x0049, 0x004D, 0x0051, 0x0055, 0x0059, 0x005D,
+ 0x0062, 0x0066, 0x006A, 0x006E, 0x0072, 0x0076, 0x007A, 0x007E,
+ 0x0082, 0x0086, 0x008A, 0x008E, 0x0092, 0x0096, 0x009A, 0x009E,
+ 0x00A3, 0x00A7, 0x00AB, 0x00AF, 0x00B3, 0x00B7, 0x00BB, 0x00BF,
+ 0x00C3, 0x00C7, 0x00CB, 0x00CF, 0x00D3, 0x00D7, 0x00DB, 0x00DF,
+ 0x00E4, 0x00E8, 0x00EC, 0x00F0, 0x00F4, 0x00F8, 0x00FC, 0x0100,
+ 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+ 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+ 0x0100
+};
+
+static const Uint16Provider kLoLMonsterScaleWHDOSProvider = { ARRAYSIZE(kLoLMonsterScaleWHDOS), kLoLMonsterScaleWHDOS };
+
+static const FlyingObjectShape kLoLFlyingObjectShpDOS[13] = {
+ { 0, 0, 1, 0x00, 0x40, },
+ { 2, 2, 3, 0x00, 0x00, },
+ { 4, 4, 4, 0x00, 0x00, },
+ { 5, 5, 5, 0x20, 0x00, },
+ { 6, 6, 6, 0x20, 0x00, },
+ { 7, 7, 7, 0x20, 0x00, },
+ { 9, 8, 15, 0x00, 0x00, },
+ { 11, 10, 12, 0x00, 0x00, },
+ { 12, 12, 12, 0x20, 0x00, },
+ { 14, 13, 15, 0x00, 0x00, },
+ { 16, 16, 16, 0x00, 0x00, },
+ { 17, 17, 17, 0x20, 0x00, },
+ { 18, 18, 18, 0x00, 0x00, }
+};
+
+static const FlyingObjectShapeProvider kLoLFlyingObjectShpDOSProvider = { ARRAYSIZE(kLoLFlyingObjectShpDOS), kLoLFlyingObjectShpDOS };
+
+static const uint16 kLoLInventoryDescDOS[11] = {
+ 0x417A, 0x417B, 0x417A, 0x417B, 0x417C, 0x417D, 0x417E, 0x417F,
+ 0x4180, 0x4181, 0x4181
+};
+
+static const Uint16Provider kLoLInventoryDescDOSProvider = { ARRAYSIZE(kLoLInventoryDescDOS), kLoLInventoryDescDOS };
+
+static const char *const kLoLLevelShpListDOS[12] = {
+ "KEEP.SHP",
+ "FOREST1.SHP",
+ "MANOR.SHP",
+ "CAVE1.SHP",
+ "SWAMP.SHP",
+ "URBISH.SHP",
+ "MINE1.SHP",
+ "TOWER1.SHP",
+ "YVEL1.SHP",
+ "CATWALK.SHP",
+ "RUIN.SHP",
+ "CIMMERIA.SHP"
+};
+
+static const StringListProvider kLoLLevelShpListDOSProvider = { ARRAYSIZE(kLoLLevelShpListDOS), kLoLLevelShpListDOS };
+
+static const char *const kLoLLevelDatListDOS[12] = {
+ "KEEP.DAT",
+ "FOREST1.DAT",
+ "MANOR.DAT",
+ "CAVE1.DAT",
+ "SWAMP.DAT",
+ "URBISH.DAT",
+ "MINE1.DAT",
+ "TOWER1.DAT",
+ "YVEL1.DAT",
+ "CATWALK.DAT",
+ "RUIN.DAT",
+ "CIMMERIA.DAT"
+};
+
+static const StringListProvider kLoLLevelDatListDOSProvider = { ARRAYSIZE(kLoLLevelDatListDOS), kLoLLevelDatListDOS };
+
+static const CompassDef kLoLCompassDefsDOS[32] = {
+ { 0, 3, -3, 0x00 },
+ { 1, 3, -3, 0x00 },
+ { 2, 3, -3, 0x00 },
+ { 3, 5, -3, 0x00 },
+ { 4, 5, -3, 0x00 },
+ { 5, 6, -3, 0x00 },
+ { 6, 6, -3, 0x00 },
+ { 7, 6, -3, 0x00 },
+ { 8, 6, -3, 0x00 },
+ { 7, 6, 4, 0x02 },
+ { 6, 6, 4, 0x02 },
+ { 5, 6, 4, 0x02 },
+ { 4, 5, 4, 0x02 },
+ { 3, 5, 4, 0x02 },
+ { 2, 3, 4, 0x02 },
+ { 1, 3, 4, 0x02 },
+ { 0, 3, 4, 0x02 },
+ { 1, 2, 4, 0x03 },
+ { 2, 2, 4, 0x03 },
+ { 3, 0, 4, 0x03 },
+ { 4, 0, 4, 0x03 },
+ { 5, -1, 4, 0x03 },
+ { 6, -1, 4, 0x03 },
+ { 7, -1, 4, 0x03 },
+ { 8, -1, -3, 0x01 },
+ { 7, -1, -3, 0x01 },
+ { 6, -1, -3, 0x01 },
+ { 5, -1, -3, 0x01 },
+ { 4, 0, -3, 0x01 },
+ { 3, 0, -3, 0x01 },
+ { 2, 2, -3, 0x01 },
+ { 1, 2, -3, 0x01 }
+};
+
+static const CompassDefProvider kLoLCompassDefsDOSProvider = { ARRAYSIZE(kLoLCompassDefsDOS), kLoLCompassDefsDOS };
+
+static const byte kLoLStashSetupDOS[12] = {
+ 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x03,
+ 0x03, 0x00, 0x01, 0x01
+};
+
+static const ByteProvider kLoLStashSetupDOSProvider = { ARRAYSIZE(kLoLStashSetupDOS), kLoLStashSetupDOS };
+
+static const byte kLoLDscWallsDOS[36] = {
+ 0xFF, 0xFF, 0x02, 0x01, 0x02, 0x01, 0x02, 0xFF,
+ 0x02, 0x03, 0x02, 0x03, 0xFF, 0xFF, 0x02, 0x01,
+ 0x02, 0x01, 0x02, 0xFF, 0x02, 0x03, 0x02, 0x03,
+ 0x02, 0x01, 0x02, 0xFF, 0x02, 0x03, 0xFF, 0x01,
+ 0x02, 0xFF, 0xFF, 0x03
+};
+
+static const ByteProvider kLoLDscWallsDOSProvider = { ARRAYSIZE(kLoLDscWallsDOS), kLoLDscWallsDOS };
+
+static const byte kLoLDscShapeIndexDOS[36] = {
+ 0x03, 0x09, 0x03, 0x08, 0x03, 0x07, 0x03, 0x03,
+ 0x03, 0xF9, 0x03, 0xF8, 0x03, 0xF7, 0x02, 0x09,
+ 0x02, 0x06, 0x02, 0x02, 0x02, 0xFA, 0x02, 0xF7,
+ 0x01, 0x05, 0x01, 0x01, 0x01, 0xFB, 0x00, 0x04,
+ 0x00, 0x00, 0x00, 0xFC
+};
+
+static const ByteProvider kLoLDscShapeIndexDOSProvider = { ARRAYSIZE(kLoLDscShapeIndexDOS), kLoLDscShapeIndexDOS };
+
+static const byte kLoLDscOvlMapDOS[10] = {
+ 0x00, 0x01, 0x01, 0x01, 0x04, 0x05, 0x05, 0x05,
+ 0x05, 0x04
+};
+
+static const ByteProvider kLoLDscOvlMapDOSProvider = { ARRAYSIZE(kLoLDscOvlMapDOS), kLoLDscOvlMapDOS };
+
+static const uint16 kLoLDscScaleWidthDataDOS[36] = {
+ 0x0060, 0x0000, 0x0060, 0x00CE, 0x0060, 0x0055, 0x0060, 0x0000,
+ 0x0060, 0x0055, 0x0060, 0x00CE, 0x0060, 0x0000, 0x00A0, 0x00AE,
+ 0x00A0, 0x00AA, 0x00A0, 0x0000, 0x00A0, 0x00AA, 0x00A0, 0x00AE,
+ 0x0100, 0x0100, 0x0100, 0x0000, 0x0100, 0x0100, 0x0000, 0x0100,
+ 0x0100, 0x0000, 0x0000, 0x0100
+};
+
+static const Uint16Provider kLoLDscScaleWidthDataDOSProvider = { ARRAYSIZE(kLoLDscScaleWidthDataDOS), kLoLDscScaleWidthDataDOS };
+
+static const uint16 kLoLDscScaleHeightDataDOS[36] = {
+ 0x006A, 0x0000, 0x006A, 0x006A, 0x006A, 0x006A, 0x006A, 0x0000,
+ 0x006A, 0x006A, 0x006A, 0x006A, 0x006A, 0x0000, 0x00AA, 0x0056,
+ 0x00AA, 0x00AA, 0x00AA, 0x0000, 0x00AA, 0x00AA, 0x00AA, 0x0056,
+ 0x0100, 0x0100, 0x0100, 0x0000, 0x0100, 0x0100, 0x0000, 0x0100,
+ 0x0100, 0x0000, 0x0000, 0x0100
+};
+
+static const Uint16Provider kLoLDscScaleHeightDataDOSProvider = { ARRAYSIZE(kLoLDscScaleHeightDataDOS), kLoLDscScaleHeightDataDOS };
+
+static const uint16 kLoLDscXDOS[36] = {
+ 0xFFB0, 0xFFE0, 0xFFE0, 0x0010, 0x0010, 0x0040, 0x0040, 0x0000,
+ 0x0070, 0x0070, 0x00A0, 0x00A0, 0x00D0, 0x00D0, 0xFF86, 0x0000,
+ 0xFFE0, 0x0030, 0x0030, 0x0000, 0x0080, 0x0080, 0x00D0, 0x00B0,
+ 0xFF98, 0x0018, 0x0018, 0x0000, 0x0098, 0x0098, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x00B0, 0x00B0
+};
+
+static const Uint16Provider kLoLDscXDOSProvider = { ARRAYSIZE(kLoLDscXDOS), kLoLDscXDOS };
+
+static const byte kLoLBaseDscYDOS[36] = {
+ 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B,
+ 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x14, 0x1C,
+ 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x1C,
+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00
+};
+
+static const ByteProvider kLoLBaseDscYDOSProvider = { ARRAYSIZE(kLoLBaseDscYDOS), kLoLBaseDscYDOS };
+
+static const byte kLoLDscTileIndexDOS[18] = {
+ 0x00, 0x06, 0x01, 0x05, 0x02, 0x04, 0x03, 0x07,
+ 0x0B, 0x08, 0x0A, 0x09, 0x0C, 0x0E, 0x0D, 0x0F,
+ 0x11, 0x10
+};
+
+static const ByteProvider kLoLDscTileIndexDOSProvider = { ARRAYSIZE(kLoLDscTileIndexDOS), kLoLDscTileIndexDOS };
+
+static const byte kLoLDscUnk2DOS[23] = {
+ 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03,
+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x12, 0x12, 0x12, 0x12, 0x12
+};
+
+static const ByteProvider kLoLDscUnk2DOSProvider = { ARRAYSIZE(kLoLDscUnk2DOS), kLoLDscUnk2DOS };
+
+static const byte kLoLDscDoorShapeIndexDOS[23] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01
+};
+
+static const ByteProvider kLoLDscDoorShapeIndexDOSProvider = { ARRAYSIZE(kLoLDscDoorShapeIndexDOS), kLoLDscDoorShapeIndexDOS };
+
+static const byte kLoLDscDimData1DOS[324] = {
+ 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7,
+ 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7,
+ 0xD8, 0xD7, 0xD8, 0xD8, 0x02, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xFE, 0xD7, 0xD8, 0xD8, 0xD8, 0xD7, 0x03,
+ 0xD8, 0xFD, 0xD8, 0xD8, 0xD8, 0xFE, 0xD8, 0x08,
+ 0xD8, 0xD8, 0xD8, 0xFE, 0xF8, 0x06, 0xD8, 0xD8,
+ 0xFA, 0x03, 0xD8, 0xFD, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xFA, 0xD7,
+ 0x10, 0xD8, 0xFA, 0xD7, 0x10, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xF2, 0xD8, 0x14, 0xD8, 0xD8,
+ 0xD8, 0xF0, 0x0E, 0x14, 0xD8, 0xED, 0x10, 0xD8,
+ 0xD8, 0x13, 0xD8, 0xD8, 0xD8, 0xD8, 0xEC, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD7, 0x14, 0xD8, 0xED,
+ 0xD7, 0xD8, 0xD8, 0x13, 0xD7, 0xD7, 0xD7, 0xD7,
+ 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7,
+ 0xD7, 0xD7, 0xD7, 0xD7, 0xD8, 0xD7, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD7, 0xD8,
+ 0xD8, 0xD8, 0xD7, 0xD8, 0xD8, 0xD7, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0x06, 0xD8, 0xD8, 0xFA, 0x03, 0xD8, 0xFD,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xFA, 0xD8, 0x10, 0xD8, 0xFA, 0xD7,
+ 0x10, 0xFD, 0xD8, 0x13, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xF0, 0xD8, 0xD8,
+ 0xD8, 0xED, 0x10, 0xD8, 0xD8, 0x13, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD7, 0xD8, 0xD8, 0xD8, 0xD7, 0xD8, 0xD8, 0xD7,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0x03, 0xD8, 0xFD,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xFD, 0xD8,
+ 0x13, 0xFD, 0xD8, 0x13, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xED, 0xD8, 0xD8, 0xD8, 0x13, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8
+};
+
+static const ByteProvider kLoLDscDimData1DOSProvider = { ARRAYSIZE(kLoLDscDimData1DOS), kLoLDscDimData1DOS };
+
+static const byte kLoLDscDimData2DOS[648] = {
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x00, 0x16, 0x16, 0x00, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x02, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x02, 0x16, 0x00, 0x04, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x16, 0x00, 0x00, 0x03,
+ 0x00, 0x16, 0x03, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x02, 0x16, 0x00, 0x16, 0x00, 0x08,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x02,
+ 0x16, 0x00, 0x00, 0x06, 0x00, 0x16, 0x00, 0x16,
+ 0x06, 0x16, 0x00, 0x03, 0x00, 0x16, 0x03, 0x00,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x06, 0x16, 0x08, 0x0E,
+ 0x00, 0x10, 0x00, 0x16, 0x03, 0x16, 0x06, 0x10,
+ 0x00, 0x13, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x0E, 0x16,
+ 0x00, 0x16, 0x00, 0x14, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x10, 0x16, 0x16, 0x00, 0x00, 0x14,
+ 0x00, 0x16, 0x13, 0x16, 0x00, 0x10, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x13, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x14, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x12, 0x16, 0x14, 0x16, 0x00, 0x16, 0x13, 0x16,
+ 0x16, 0x00, 0x00, 0x16, 0x00, 0x16, 0x00, 0x13,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x00, 0x16, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x00, 0x16, 0x16, 0x00,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x06, 0x00, 0x16, 0x00, 0x16,
+ 0x06, 0x16, 0x00, 0x03, 0x00, 0x16, 0x03, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x06, 0x16, 0x00, 0x16,
+ 0x00, 0x10, 0x00, 0x16, 0x03, 0x16, 0x07, 0x0F,
+ 0x00, 0x13, 0x03, 0x16, 0x00, 0x16, 0x00, 0x13,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x10, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x13, 0x16, 0x00, 0x10, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x13, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x00, 0x16, 0x16, 0x00,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x03, 0x00, 0x16, 0x03, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x03, 0x16, 0x00, 0x16,
+ 0x00, 0x13, 0x03, 0x16, 0x00, 0x16, 0x00, 0x13,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x13, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x13, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16
+};
+
+static const ByteProvider kLoLDscDimData2DOSProvider = { ARRAYSIZE(kLoLDscDimData2DOS), kLoLDscDimData2DOS };
+
+static const byte kLoLDscBlockMapDOS[12] = {
+ 0x02, 0x03, 0x00, 0x01, 0x01, 0x02, 0x03, 0x00,
+ 0x03, 0x00, 0x01, 0x02
+};
+
+static const ByteProvider kLoLDscBlockMapDOSProvider = { ARRAYSIZE(kLoLDscBlockMapDOS), kLoLDscBlockMapDOS };
+
+static const byte kLoLDscDimMapDOS[18] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x03,
+ 0x03, 0x03
+};
+
+static const ByteProvider kLoLDscDimMapDOSProvider = { ARRAYSIZE(kLoLDscDimMapDOS), kLoLDscDimMapDOS };
+
+static const byte kLoLDscOvlIndexDOS[20] = {
+ 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02, 0x03,
+ 0x03, 0x03, 0x04, 0x04, 0x05, 0x05, 0x05, 0x06,
+ 0x06, 0x07, 0x07, 0x07
+};
+
+static const ByteProvider kLoLDscOvlIndexDOSProvider = { ARRAYSIZE(kLoLDscOvlIndexDOS), kLoLDscOvlIndexDOS };
+
+static const byte kLoLDscBlockIndexDOS[72] = {
+ 0x9D, 0x9E, 0x9F, 0xA0, 0xA1, 0xA2, 0xA3, 0xBE,
+ 0xBF, 0xC0, 0xC1, 0xC2, 0xDF, 0xE0, 0xE1, 0xFF,
+ 0x00, 0x01, 0xA3, 0xC3, 0xE3, 0x03, 0x23, 0x43,
+ 0x63, 0xC2, 0xE2, 0x02, 0x22, 0x42, 0xE1, 0x01,
+ 0x21, 0xE0, 0x00, 0x20, 0x63, 0x62, 0x61, 0x60,
+ 0x5F, 0x5E, 0x5D, 0x42, 0x41, 0x40, 0x3F, 0x3E,
+ 0x21, 0x20, 0x1F, 0x01, 0x00, 0xFF, 0x5D, 0x3D,
+ 0x1D, 0xFD, 0xDD, 0xBD, 0x9D, 0x3E, 0x1E, 0xFE,
+ 0xDE, 0xBE, 0x1F, 0xFF, 0xDF, 0x20, 0x00, 0xE0
+};
+
+static const ByteProvider kLoLDscBlockIndexDOSProvider = { ARRAYSIZE(kLoLDscBlockIndexDOS), kLoLDscBlockIndexDOS };
+
+static const byte kLoLDscDoorY2DOS[128] = {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x0D, 0x08, 0x03, 0x12, 0x0E, 0x09, 0x04, 0x00,
+ 0x13, 0x0F, 0x0A, 0x05, 0x01, 0x14, 0x10, 0x0B,
+ 0x06, 0x02, 0x11, 0x0C, 0x07, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x14, 0x13, 0x12, 0x11, 0x10, 0x0F, 0x0E, 0x0D,
+ 0x0C, 0x0B, 0x0A, 0x09, 0x08, 0x07, 0x06, 0x05,
+ 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x07, 0x0C, 0x11, 0x02, 0x06, 0x0B, 0x10, 0x14,
+ 0x01, 0x05, 0x0A, 0x0F, 0x13, 0x00, 0x04, 0x09,
+ 0x0E, 0x12, 0x03, 0x08, 0x0D, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const ByteProvider kLoLDscDoorY2DOSProvider = { ARRAYSIZE(kLoLDscDoorY2DOS), kLoLDscDoorY2DOS };
+
+static const byte kLoLDscDoorFrameY1DOS[4] = {
+ 0x1E, 0x18, 0x10, 0x00
+};
+
+static const ByteProvider kLoLDscDoorFrameY1DOSProvider = { ARRAYSIZE(kLoLDscDoorFrameY1DOS), kLoLDscDoorFrameY1DOS };
+
+static const byte kLoLDscDoorFrameY2DOS[4] = {
+ 0x3B, 0x47, 0x56, 0x78
+};
+
+static const ByteProvider kLoLDscDoorFrameY2DOSProvider = { ARRAYSIZE(kLoLDscDoorFrameY2DOS), kLoLDscDoorFrameY2DOS };
+
+static const uint16 kLoLDscDoorScaleDOS[8] = {
+ 0x0075, 0x006A, 0x00B9, 0x00B2, 0x0100, 0x0100, 0x0000, 0x0000
+};
+
+static const Uint16Provider kLoLDscDoorScaleDOSProvider = { ARRAYSIZE(kLoLDscDoorScaleDOS), kLoLDscDoorScaleDOS };
+
+static const uint16 kLoLDscDoor4DOS[4] = {
+ 0x0005, 0x0002, 0x0008, 0x787C
+};
+
+static const Uint16Provider kLoLDscDoor4DOSProvider = { ARRAYSIZE(kLoLDscDoor4DOS), kLoLDscDoor4DOS };
+
+static const uint16 kLoLDscDoorXDOS[576] = {
+ 0xFF98, 0xFFA0, 0xFFA8, 0xFF90, 0xFF98, 0xFFA0, 0xFFA8, 0xFFB0,
+ 0xFF74, 0xFF7E, 0xFF88, 0xFF92, 0xFF9C, 0xFF74, 0xFF7E, 0xFF88,
+ 0xFF92, 0xFF9C, 0xFF64, 0xFF70, 0xFF7C, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFB8, 0xFFC0, 0xFFC8, 0xFFB0, 0xFFB8, 0xFFC0, 0xFFC8, 0xFFD0,
+ 0xFF9C, 0xFFA6, 0xFFB0, 0xFFBA, 0xFFC4, 0xFF9C, 0xFFA6, 0xFFB0,
+ 0xFFBA, 0xFFC4, 0xFF94, 0xFFA0, 0xFFAC, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFD8, 0xFFE0, 0xFFE8, 0xFFD0, 0xFFD8, 0xFFE0, 0xFFE8, 0xFFF0,
+ 0xFFC4, 0xFFCE, 0xFFD8, 0xFFE2, 0xFFEC, 0xFFC4, 0xFFCE, 0xFFD8,
+ 0xFFE2, 0xFFEC, 0xFFC4, 0xFFD0, 0xFFDC, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFF8, 0x0000, 0x0008, 0xFFF0, 0xFFF8, 0x0000, 0x0008, 0x0010,
+ 0xFFEC, 0xFFF6, 0x0000, 0x000A, 0x0014, 0xFFEC, 0xFFF6, 0x0000,
+ 0x000A, 0x0014, 0xFFF4, 0x0000, 0x000C, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0018, 0x0020, 0x0028, 0x0010, 0x0018, 0x0020, 0x0028, 0x0030,
+ 0x0014, 0x001E, 0x0028, 0x0032, 0x003C, 0x0014, 0x001E, 0x0028,
+ 0x0032, 0x003C, 0x0024, 0x0030, 0x003C, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0038, 0x0040, 0x0048, 0x0030, 0x0038, 0x0040, 0x0048, 0x0050,
+ 0x003C, 0x0046, 0x0050, 0x005A, 0x0064, 0x003C, 0x0046, 0x0050,
+ 0x005A, 0x0064, 0x0054, 0x0060, 0x006C, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0058, 0x0060, 0x0068, 0x0050, 0x0058, 0x0060, 0x0068, 0x0070,
+ 0x0064, 0x006E, 0x0078, 0x0082, 0x008C, 0x0064, 0x006E, 0x0078,
+ 0x0082, 0x008C, 0x0084, 0x0090, 0x009C, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFF94, 0xFFA0, 0xFFAC, 0xFF7E, 0xFF8B, 0xFF98, 0xFFA5, 0xFFB2,
+ 0xFF6C, 0xFF7B, 0xFF8A, 0xFF99, 0xFFA7, 0xFF60, 0xFF70, 0xFF80,
+ 0xFF90, 0xFFA0, 0xFF4C, 0xFF60, 0xFF74, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFC4, 0xFFD0, 0xFFDC, 0xFFB2, 0xFFBF, 0xFFCC, 0xFFD9, 0xFFE6,
+ 0xFFA7, 0xFFB6, 0xFFC5, 0xFFD4, 0xFFE2, 0xFFA0, 0xFFB0, 0xFFC0,
+ 0xFFD0, 0xFFE0, 0xFF9C, 0xFFB0, 0xFFC4, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFF4, 0x0000, 0x000C, 0xFFE6, 0xFFF3, 0x0000, 0x000D, 0x001A,
+ 0xFFE2, 0xFFF1, 0x0000, 0x000F, 0x001E, 0xFFE0, 0xFFF0, 0x0000,
+ 0x0010, 0x0020, 0xFFEC, 0x0000, 0x0014, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0024, 0x0030, 0x003C, 0x001A, 0x0027, 0x0034, 0x0041, 0x004E,
+ 0x001E, 0x002C, 0x003B, 0x004A, 0x0059, 0x0020, 0x0030, 0x0040,
+ 0x0050, 0x0060, 0x003C, 0x0050, 0x0064, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0054, 0x0060, 0x006C, 0x004E, 0x005B, 0x0068, 0x0075, 0x0082,
+ 0x0059, 0x0067, 0x0076, 0x0085, 0x0094, 0x0060, 0x0070, 0x0080,
+ 0x0090, 0x00A0, 0x008C, 0x00A0, 0x00B4, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFF9C, 0xFFB0, 0xFFC4, 0xFF7C, 0xFF92, 0xFFA8, 0xFFBE, 0xFFD4,
+ 0xFF6D, 0xFF85, 0xFF9E, 0xFFB6, 0xFFCF, 0xFF5E, 0xFF79, 0xFF94,
+ 0xFFAF, 0xFFCA, 0xFF60, 0xFF80, 0xFFA0, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFEC, 0x0000, 0x0014, 0xFFD4, 0xFFEA, 0x0000, 0x0016, 0x002C,
+ 0xFFCF, 0xFFE7, 0x0000, 0x0019, 0x0031, 0xFFCA, 0xFFE5, 0x0000,
+ 0x001B, 0x0036, 0xFFE0, 0x0000, 0x0020, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x003C, 0x0050, 0x0064, 0x002C, 0x0042, 0x0058, 0x006E, 0x0084,
+ 0x0031, 0x004A, 0x0062, 0x007B, 0x0093, 0x0036, 0x0051, 0x006C,
+ 0x0087, 0x00A2, 0x0060, 0x0080, 0x00A0, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFF60, 0xFF80, 0xFFA0, 0xFF1C, 0xFF42, 0xFF68, 0xFF8E, 0xFFB4,
+ 0xFF40, 0xFF60, 0xFF80, 0xFFA0, 0xFFC0, 0xFF1C, 0xFF42, 0xFF68,
+ 0xFF8E, 0xFFB4, 0xFF60, 0xFF80, 0xFFA0, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFE0, 0x0000, 0x0020, 0xFFB4, 0xFFDA, 0x0000, 0x0026, 0x004C,
+ 0xFFC0, 0xFFE0, 0x0000, 0x0020, 0x0040, 0xFFB4, 0xFFDA, 0x0000,
+ 0x0026, 0x004C, 0xFFE0, 0x0000, 0x0020, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0060, 0x0080, 0x00A0, 0x004C, 0x0072, 0x0098, 0x00BE, 0x00E4,
+ 0x0040, 0x0060, 0x0080, 0x00A0, 0x00C0, 0x004C, 0x0072, 0x0098,
+ 0x00BE, 0x00E4, 0x0060, 0x0080, 0x00A0, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
+};
+
+static const Uint16Provider kLoLDscDoorXDOSProvider = { ARRAYSIZE(kLoLDscDoorXDOS), kLoLDscDoorXDOS };
+
+static const uint16 kLoLDscDoorYDOS[576] = {
+ 0xFFBF, 0xFFBF, 0xFFBF, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1,
+ 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC5, 0xFFC5, 0xFFC5,
+ 0xFFC5, 0xFFC5, 0xFFC9, 0xFFC9, 0xFFC9, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFBF, 0xFFBF, 0xFFBF, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1,
+ 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC5, 0xFFC5, 0xFFC5,
+ 0xFFC5, 0xFFC5, 0xFFC9, 0xFFC9, 0xFFC9, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFBF, 0xFFBF, 0xFFBF, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1,
+ 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC5, 0xFFC5, 0xFFC5,
+ 0xFFC5, 0xFFC5, 0xFFC9, 0xFFC9, 0xFFC9, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFBF, 0xFFBF, 0xFFBF, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1,
+ 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC5, 0xFFC5, 0xFFC5,
+ 0xFFC5, 0xFFC5, 0xFFC9, 0xFFC9, 0xFFC9, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFBF, 0xFFBF, 0xFFBF, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1,
+ 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC5, 0xFFC5, 0xFFC5,
+ 0xFFC5, 0xFFC5, 0xFFC9, 0xFFC9, 0xFFC9, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFBF, 0xFFBF, 0xFFBF, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1,
+ 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC5, 0xFFC5, 0xFFC5,
+ 0xFFC5, 0xFFC5, 0xFFC9, 0xFFC9, 0xFFC9, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFBF, 0xFFBF, 0xFFBF, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1,
+ 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC5, 0xFFC5, 0xFFC5,
+ 0xFFC5, 0xFFC5, 0xFFC9, 0xFFC9, 0xFFC9, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFC9, 0xFFC9, 0xFFC9, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB,
+ 0xFFCE, 0xFFCE, 0xFFCE, 0xFFCE, 0xFFCE, 0xFFD3, 0xFFD3, 0xFFD3,
+ 0xFFD3, 0xFFD3, 0xFFD7, 0xFFD7, 0xFFD7, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFC9, 0xFFC9, 0xFFC9, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB,
+ 0xFFCE, 0xFFCE, 0xFFCE, 0xFFCE, 0xFFCE, 0xFFD3, 0xFFD3, 0xFFD3,
+ 0xFFD3, 0xFFD3, 0xFFD7, 0xFFD7, 0xFFD7, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFC9, 0xFFC9, 0xFFC9, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB,
+ 0xFFCE, 0xFFCE, 0xFFCE, 0xFFCE, 0xFFCE, 0xFFD3, 0xFFD3, 0xFFD3,
+ 0xFFD3, 0xFFD3, 0xFFD7, 0xFFD7, 0xFFD7, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFC9, 0xFFC9, 0xFFC9, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB,
+ 0xFFCE, 0xFFCE, 0xFFCE, 0xFFCE, 0xFFCE, 0xFFD3, 0xFFD3, 0xFFD3,
+ 0xFFD3, 0xFFD3, 0xFFD7, 0xFFD7, 0xFFD7, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFC9, 0xFFC9, 0xFFC9, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB,
+ 0xFFCE, 0xFFCE, 0xFFCE, 0xFFCE, 0xFFCE, 0xFFD3, 0xFFD3, 0xFFD3,
+ 0xFFD3, 0xFFD3, 0xFFD7, 0xFFD7, 0xFFD7, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFD7, 0xFFD7, 0xFFD7, 0xFFDD, 0xFFDD, 0xFFDD, 0xFFDD, 0xFFDD,
+ 0xFFE2, 0xFFE2, 0xFFE2, 0xFFE2, 0xFFE2, 0xFFEA, 0xFFEA, 0xFFEA,
+ 0xFFEA, 0xFFEA, 0xFFF8, 0xFFF8, 0xFFF8, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFD7, 0xFFD7, 0xFFD7, 0xFFDD, 0xFFDD, 0xFFDD, 0xFFDD, 0xFFDD,
+ 0xFFE2, 0xFFE2, 0xFFE2, 0xFFE2, 0xFFE2, 0xFFEA, 0xFFEA, 0xFFEA,
+ 0xFFEA, 0xFFEA, 0xFFF8, 0xFFF8, 0xFFF8, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFD7, 0xFFD7, 0xFFD7, 0xFFDD, 0xFFDD, 0xFFDD, 0xFFDD, 0xFFDD,
+ 0xFFE2, 0xFFE2, 0xFFE2, 0xFFE2, 0xFFE2, 0xFFEA, 0xFFEA, 0xFFEA,
+ 0xFFEA, 0xFFEA, 0xFFF8, 0xFFF8, 0xFFF8, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFF8, 0xFFF8, 0xFFF8, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFF8, 0xFFF8, 0xFFF8, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFF8, 0xFFF8, 0xFFF8, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
+};
+
+static const Uint16Provider kLoLDscDoorYDOSProvider = { ARRAYSIZE(kLoLDscDoorYDOS), kLoLDscDoorYDOS };
+
+static const byte kLoLScrollXTopDOS[5] = {
+ 0x05, 0x0A, 0x0F, 0x14, 0x19
+};
+
+static const ByteProvider kLoLScrollXTopDOSProvider = { ARRAYSIZE(kLoLScrollXTopDOS), kLoLScrollXTopDOS };
+
+static const byte kLoLScrollYTopDOS[5] = {
+ 0x02, 0x04, 0x07, 0x09, 0x0C
+};
+
+static const ByteProvider kLoLScrollYTopDOSProvider = { ARRAYSIZE(kLoLScrollYTopDOS), kLoLScrollYTopDOS };
+
+static const byte kLoLScrollXBottomDOS[5] = {
+ 0x05, 0x0A, 0x0F, 0x14, 0x19
+};
+
+static const ByteProvider kLoLScrollXBottomDOSProvider = { ARRAYSIZE(kLoLScrollXBottomDOS), kLoLScrollXBottomDOS };
+
+static const byte kLoLScrollYBottomDOS[5] = {
+ 0x04, 0x08, 0x0C, 0x10, 0x14
+};
+
+static const ByteProvider kLoLScrollYBottomDOSProvider = { ARRAYSIZE(kLoLScrollYBottomDOS), kLoLScrollYBottomDOS };
+
+static const LoLButtonDef kLoLButtonDefsDOS[95] = {
+ { 0x1100, 96, 352, 33, 131, 22, 19, 0x0000, 0 },
+ { 0x1100, 97, 353, 33, 150, 22, 18, 0x0000, 0 },
+ { 0x1100, 98, 354, 33, 150, 22, 18, 0x0000, 0 },
+ { 0x1100, 92, 348, 11, 150, 22, 18, 0x0000, 0 },
+ { 0x1100, 102, 358, 53, 150, 22, 18, 0x0000, 0 },
+ { 0x1100, 91, 347, 11, 131, 22, 19, 0x0000, 0 },
+ { 0x1100, 101, 357, 53, 131, 22, 19, 0x0000, 0 },
+ { 0x0100, 112, 0, 80, 143, 22, 17, 0x0000, 0 },
+ { 0x0100, 113, 0, 80, 143, 22, 17, 0x0001, 0 },
+ { 0x0100, 114, 0, 80, 143, 22, 17, 0x0002, 0 },
+ { 0x0100, 115, 0, 80, 143, 22, 17, 0x0003, 0 },
+ { 0x1100, 116, 0, 80, 160, 22, 17, 0x0000, 0 },
+ { 0x1100, 117, 0, 80, 160, 22, 17, 0x0001, 0 },
+ { 0x1100, 118, 0, 80, 160, 22, 17, 0x0002, 0 },
+ { 0x1100, 119, 0, 80, 160, 22, 17, 0x0003, 0 },
+ { 0x1100, 119, 0, 80, 144, 22, 32, 0x0000, 0 },
+ { 0x1100, 110, 0, 0, 0, 320, 200, 0x0003, 0 },
+ { 0x0100, 112, 0, 80, 143, 33, 34, 0x0000, 0 },
+ { 0x0100, 113, 0, 80, 143, 33, 34, 0x0001, 0 },
+ { 0x0100, 114, 0, 80, 143, 33, 34, 0x0002, 0 },
+ { 0x0100, 115, 0, 80, 143, 33, 34, 0x0003, 0 },
+ { 0x0100, 112, 0, 80, 143, 66, 34, 0x0000, 0 },
+ { 0x0100, 113, 0, 80, 143, 66, 34, 0x0001, 0 },
+ { 0x0100, 114, 0, 80, 143, 66, 34, 0x0002, 0 },
+ { 0x0100, 115, 0, 80, 143, 66, 34, 0x0003, 0 },
+ { 0x0100, 115, 0, 80, 143, 12, 34, 0x0000, 0 },
+ { 0x0100, 115, 0, 80, 143, 12, 34, 0x0001, 0 },
+ { 0x0100, 115, 0, 80, 143, 12, 34, 0x0002, 0 },
+ { 0x0100, 115, 0, 80, 143, 12, 34, 0x0003, 0 },
+ { 0x1000, 112, 0, 80, 143, 66, 34, 0x0000, 0 },
+ { 0x1000, 113, 0, 80, 143, 66, 34, 0x0001, 0 },
+ { 0x1000, 114, 0, 80, 143, 66, 34, 0x0002, 0 },
+ { 0x1000, 115, 0, 80, 143, 66, 34, 0x0003, 0 },
+ { 0x1100, 0, 0, 0, 0, 20, 19, 0x0000, 2 },
+ { 0x1100, 0, 0, 0, 0, 20, 19, 0x0001, 2 },
+ { 0x1100, 0, 0, 0, 0, 20, 19, 0x0002, 2 },
+ { 0x1100, 0, 0, 0, 0, 20, 19, 0x0003, 2 },
+ { 0x1100, 0, 0, 0, 0, 20, 19, 0x0004, 2 },
+ { 0x1100, 0, 0, 0, 0, 20, 19, 0x0005, 2 },
+ { 0x1100, 0, 0, 0, 0, 20, 19, 0x0006, 2 },
+ { 0x1100, 0, 0, 0, 0, 20, 19, 0x0007, 2 },
+ { 0x1100, 0, 0, 0, 0, 20, 19, 0x0008, 2 },
+ { 0x1100, 0, 0, 0, 0, 12, 11, 0x0009, 2 },
+ { 0x1100, 0, 0, 0, 0, 12, 11, 0x000A, 2 },
+ { 0x1100, 110, 0, 160, 93, 43, 19, 0x0000, 2 },
+ { 0x1100, 0, 0, 0, 102, 88, 19, 0x0000, 2 },
+ { 0x1100, 0, 0, 88, 102, 88, 19, 0x0001, 2 },
+ { 0x1100, 0, 0, 0, 85, 88, 17, 0x0002, 2 },
+ { 0x1100, 0, 0, 88, 85, 88, 17, 0x0003, 2 },
+ { 0x1100, 0, 0, 0, 0, 176, 120, 0x0000, 2 },
+ { 0x1100, 0, 0, 106, 179, 21, 21, 0x0000, 0 },
+ { 0x1100, 0, 0, 127, 179, 21, 21, 0x0001, 0 },
+ { 0x1100, 0, 0, 148, 179, 21, 21, 0x0002, 0 },
+ { 0x1100, 0, 0, 169, 179, 21, 21, 0x0003, 0 },
+ { 0x1100, 0, 0, 190, 179, 21, 21, 0x0004, 0 },
+ { 0x1100, 0, 0, 211, 179, 21, 21, 0x0005, 0 },
+ { 0x1100, 0, 0, 232, 179, 21, 21, 0x0006, 0 },
+ { 0x1100, 0, 0, 253, 179, 21, 21, 0x0007, 0 },
+ { 0x1100, 0, 0, 274, 179, 21, 21, 0x0008, 0 },
+ { 0x1100, 0, 0, 274, 179, 21, 21, 0x0009, 0 },
+ { 0x1100, 0, 0, 85, 179, 21, 21, 0xFFFF, 0 },
+ { 0x1100, 0, 0, 295, 179, 22, 21, 0x0001, 0 },
+ { 0x1100, 0, 0, 24, 8, 128, 96, 0x0001, 2 },
+ { 0x1100, 0, 0, 0, 0, 176, 120, 0x0000, 2 },
+ { 0x1100, 0, 0, 0, 0, 0, 0, 0x0000, 0 },
+ { 0x1100, 0, 0, 112, 0, 176, 16, 0x0001, 0 },
+ { 0x1100, 0, 0, 112, 110, 176, 26, 0x0001, 0 },
+ { 0x1100, 0, 0, 96, 88, 32, 32, 0x0001, 0 },
+ { 0x1100, 0, 0, 272, 88, 32, 32, 0x0001, 0 },
+ { 0x1100, 0, 0, 96, 16, 32, 72, 0x0001, 0 },
+ { 0x1100, 0, 0, 272, 16, 32, 72, 0x0001, 0 },
+ { 0x1100, 0, 0, 24, 15, 61, 9, 0x0000, 0 },
+ { 0x1100, 0, 0, 24, 24, 61, 9, 0x0000, 0 },
+ { 0x1100, 0, 0, 24, 33, 61, 9, 0x0000, 0 },
+ { 0x1100, 0, 0, 24, 42, 61, 9, 0x0000, 0 },
+ { 0x1100, 0, 0, 24, 51, 61, 9, 0x0000, 0 },
+ { 0x1100, 0, 0, 24, 60, 61, 9, 0x0000, 0 },
+ { 0x1100, 0, 0, 24, 69, 61, 9, 0x0000, 0 },
+ { 0x1100, 0, 0, 24, 78, 61, 9, 0x0000, 0 },
+ { 0x1100, 0, 0, 24, 87, 61, 9, 0x0000, 0 },
+ { 0x1100, 0, 0, 24, 96, 61, 9, 0x0000, 0 },
+ { 0x0100, 112, 0, 80, 143, 66, 34, 0x0000, 0 },
+ { 0x0100, 113, 0, 80, 143, 66, 34, 0x0001, 0 },
+ { 0x0100, 114, 0, 80, 143, 66, 34, 0x0002, 0 },
+ { 0x0100, 115, 0, 80, 143, 66, 34, 0x0003, 0 },
+ { 0x1100, 110, 0, 0, 0, 320, 200, 0x0003, 0 },
+ { 0x0100, 0, 0, 112, 0, 88, 80, 0x0000, 0 },
+ { 0x0100, 0, 0, 200, 0, 88, 80, 0x0001, 0 },
+ { 0x1100, 25, 110, 11, 178, 21, 22, 0x0000, 0 },
+ { 0x0100, 20, 0, 32, 178, 22, 22, 0x0000, 0 },
+ { 0x0100, 0, 0, 291, 96, 27, 24, 0x0000, 0 },
+ { 0x0100, 0, 0, 289, 0, 31, 28, 0x0000, 0 },
+ { 0x0100, 0, 0, 289, 31, 31, 23, 0x0000, 0 },
+ { 0x0100, 0, 0, 291, 56, 29, 24, 0x0000, 0 },
+ { 0x1100, 0, 0, 220, 98, 43, 19, 0x0000, 0 }
+};
+
+static const LoLButtonDefProvider kLoLButtonDefsDOSProvider = { ARRAYSIZE(kLoLButtonDefsDOS), kLoLButtonDefsDOS };
+
+static const byte kLoLButtonList1DOS[40] = {
+ 0x59, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x31,
+ 0x3E, 0x2D, 0x2E, 0x2F, 0x30, 0x56, 0x57, 0x01,
+ 0x02, 0x00, 0x03, 0x04, 0x05, 0x06, 0x32, 0x33,
+ 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B,
+ 0x3C, 0x3D, 0x58, 0x5A, 0x5B, 0x5C, 0x5D, 0xFF
+};
+
+static const ByteProvider kLoLButtonList1DOSProvider = { ARRAYSIZE(kLoLButtonList1DOS), kLoLButtonList1DOS };
+
+static const byte kLoLButtonList2DOS[15] = {
+ 0x2C, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
+ 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x5E, 0xFF
+};
+
+static const ByteProvider kLoLButtonList2DOSProvider = { ARRAYSIZE(kLoLButtonList2DOS), kLoLButtonList2DOS };
+
+static const byte kLoLButtonList3DOS[2] = {
+ 0x40, 0xFF
+};
+
+static const ByteProvider kLoLButtonList3DOSProvider = { ARRAYSIZE(kLoLButtonList3DOS), kLoLButtonList3DOS };
+
+static const byte kLoLButtonList4DOS[15] = {
+ 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39,
+ 0x3A, 0x3B, 0x3C, 0x3D, 0x5A, 0x5B, 0xFF
+};
+
+static const ByteProvider kLoLButtonList4DOSProvider = { ARRAYSIZE(kLoLButtonList4DOS), kLoLButtonList4DOS };
+
+static const byte kLoLButtonList5DOS[16] = {
+ 0x01, 0x02, 0x00, 0x03, 0x04, 0x05, 0x06, 0x41,
+ 0x42, 0x43, 0x44, 0x45, 0x46, 0x5A, 0x5B, 0xFF
+};
+
+static const ByteProvider kLoLButtonList5DOSProvider = { ARRAYSIZE(kLoLButtonList5DOS), kLoLButtonList5DOS };
+
+static const byte kLoLButtonList6DOS[14] = {
+ 0x2C, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
+ 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0xFF
+};
+
+static const ByteProvider kLoLButtonList6DOSProvider = { ARRAYSIZE(kLoLButtonList6DOS), kLoLButtonList6DOS };
+
+static const byte kLoLButtonList7DOS[3] = {
+ 0x0F, 0x10, 0xFF
+};
+
+static const ByteProvider kLoLButtonList7DOSProvider = { ARRAYSIZE(kLoLButtonList7DOS), kLoLButtonList7DOS };
+
+static const byte kLoLButtonList8DOS[2] = {
+ 0x55, 0xFF
+};
+
+static const ByteProvider kLoLButtonList8DOSProvider = { ARRAYSIZE(kLoLButtonList8DOS), kLoLButtonList8DOS };
+
+static const byte kLoLLegendDataDOS[48] = {
+ 0x0E, 0x00, 0x07, 0x42, 0x19, 0x00, 0x08, 0x42,
+ 0x1A, 0x00, 0x09, 0x42, 0x0D, 0x00, 0x0A, 0x42,
+ 0x0A, 0x00, 0x0B, 0x42, 0x0B, 0x00, 0x0C, 0x42,
+ 0x0F, 0x00, 0x0D, 0x42, 0x16, 0x00, 0x0E, 0x42,
+ 0x17, 0x00, 0x0F, 0x42, 0x11, 0x00, 0x10, 0x42,
+ 0x12, 0x00, 0x51, 0x42, 0xFF, 0xFF, 0xFF, 0xFF
+};
+
+static const ByteProvider kLoLLegendDataDOSProvider = { ARRAYSIZE(kLoLLegendDataDOS), kLoLLegendDataDOS };
+
+static const byte kLoLMapCursorOvlDOS[25] = {
+ 0x00, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86,
+ 0x87, 0x88, 0x01, 0x01, 0x01, 0x01, 0x01, 0x88,
+ 0x87, 0x86, 0x85, 0x84, 0x83, 0x82, 0x81, 0x80,
+ 0x80
+};
+
+static const ByteProvider kLoLMapCursorOvlDOSProvider = { ARRAYSIZE(kLoLMapCursorOvlDOS), kLoLMapCursorOvlDOS };
+
+static const uint16 kLoLMapStringIdDOS[30] = {
+ 0xFFFF, 0x4211, 0x4212, 0x4213, 0x4214, 0x4215, 0x4216, 0x4217,
+ 0x4218, 0x4219, 0x421A, 0x421B, 0x421C, 0x421D, 0x421E, 0x421F,
+ 0x4220, 0x4221, 0x4222, 0x4223, 0x4224, 0x4225, 0x4226, 0x4227,
+ 0x4228, 0x4229, 0x422A, 0x422B, 0x422C, 0x422D
+};
+
+static const Uint16Provider kLoLMapStringIdDOSProvider = { ARRAYSIZE(kLoLMapStringIdDOS), kLoLMapStringIdDOS };
+
+static const byte kLoLSpellbookAnimDOS[28] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x13, 0xB6, 0x04, 0x00, 0x13, 0x4D,
+ 0x04, 0x00, 0x13, 0xB9, 0x04, 0x00, 0x13, 0xB8,
+ 0x04, 0x00, 0x13, 0xBA
+};
+
+static const ByteProvider kLoLSpellbookAnimDOSProvider = { ARRAYSIZE(kLoLSpellbookAnimDOS), kLoLSpellbookAnimDOS };
+
+static const byte kLoLSpellbookCoordsDOS[12] = {
+ 0x16, 0x16, 0x16, 0x1F, 0x16, 0x28, 0x16, 0x31,
+ 0x16, 0x3A, 0x16, 0x43
+};
+
+static const ByteProvider kLoLSpellbookCoordsDOSProvider = { ARRAYSIZE(kLoLSpellbookCoordsDOS), kLoLSpellbookCoordsDOS };
+
+static const byte kLoLHealShapeFramesDOS[80] = {
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02,
+ 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x03, 0x03,
+ 0x03, 0x03, 0x02, 0x02, 0x01, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
+ 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00,
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F
+};
+
+static const ByteProvider kLoLHealShapeFramesDOSProvider = { ARRAYSIZE(kLoLHealShapeFramesDOS), kLoLHealShapeFramesDOS };
+
+static const byte kLoLLightningDefsDOS[20] = {
+ 0x06, 0x05, 0xAB, 0x00, 0x06, 0x04, 0xAB, 0x00,
+ 0x08, 0x04, 0xAA, 0x00, 0x06, 0x03, 0xAA, 0x00,
+ 0x06, 0x02, 0xA9, 0x00
+};
+
+static const ByteProvider kLoLLightningDefsDOSProvider = { ARRAYSIZE(kLoLLightningDefsDOS), kLoLLightningDefsDOS };
+
+static const uint16 kLoLFireballCoordsDOS[256] = {
+ 0x0000, 0x0324, 0x0647, 0x096A, 0x0C8B, 0x0FAB, 0x12C7, 0x15E1,
+ 0x18F8, 0x1C0B, 0x1F19, 0x2223, 0x2527, 0x2826, 0x2B1E, 0x2E10,
+ 0x30FB, 0x33DE, 0x36B9, 0x398C, 0x3C56, 0x3F16, 0x41CD, 0x447A,
+ 0x471C, 0x49B3, 0x4C3F, 0x4EBF, 0x5133, 0x539A, 0x55F4, 0x5842,
+ 0x5A81, 0x5CB3, 0x5ED6, 0x60EB, 0x62F1, 0x64E7, 0x66CE, 0x68A5,
+ 0x6A6C, 0x6C23, 0x6DC9, 0x6F5E, 0x70E1, 0x7254, 0x73B5, 0x7503,
+ 0x7640, 0x776B, 0x7883, 0x7989, 0x7A7C, 0x7B5C, 0x7C29, 0x7CE2,
+ 0x7D89, 0x7E1C, 0x7E9C, 0x7F08, 0x7F61, 0x7FA6, 0x7FD7, 0x7FF5,
+ 0x7FFF, 0x7FF5, 0x7FD7, 0x7FA6, 0x7F61, 0x7F08, 0x7E9C, 0x7E1C,
+ 0x7D89, 0x7CE2, 0x7C29, 0x7B5C, 0x7A7C, 0x7989, 0x7883, 0x776B,
+ 0x7640, 0x7503, 0x73B5, 0x7254, 0x70E1, 0x6F5E, 0x6DC9, 0x6C23,
+ 0x6A6C, 0x68A5, 0x66CE, 0x64E7, 0x62F1, 0x60EB, 0x5ED6, 0x5CB3,
+ 0x5A81, 0x5842, 0x55F4, 0x539A, 0x5133, 0x4EBF, 0x4C3F, 0x49B3,
+ 0x471C, 0x447A, 0x41CD, 0x3F16, 0x3C56, 0x398C, 0x36B9, 0x33DE,
+ 0x30FB, 0x2E10, 0x2B1E, 0x2826, 0x2527, 0x2223, 0x1F19, 0x1C0B,
+ 0x18F8, 0x15E1, 0x12C7, 0x0FAB, 0x0C8B, 0x096A, 0x0647, 0x0324,
+ 0x0000, 0xFCDC, 0xF9B9, 0xF696, 0xF375, 0xF055, 0xED39, 0xEA1F,
+ 0xE708, 0xE3F5, 0xE0E7, 0xDDDD, 0xDAD9, 0xD7DA, 0xD4E2, 0xD1F0,
+ 0xCF05, 0xCC22, 0xC947, 0xC674, 0xC3AA, 0xC0EA, 0xBE33, 0xBB86,
+ 0xB8E4, 0xB64D, 0xB3C1, 0xB141, 0xAECD, 0xAC66, 0xAA0C, 0xA7BE,
+ 0xA57F, 0xA34D, 0xA12A, 0x9F15, 0x9D0F, 0x9B19, 0x9932, 0x975B,
+ 0x9594, 0x93DD, 0x9237, 0x90A2, 0x8F1F, 0x8DAC, 0x8C4B, 0x8AFD,
+ 0x89C0, 0x8895, 0x877D, 0x8677, 0x8584, 0x84A4, 0x83D7, 0x831E,
+ 0x8277, 0x81E4, 0x8164, 0x80F8, 0x809F, 0x805A, 0x8029, 0x800B,
+ 0x8001, 0x800B, 0x8029, 0x805A, 0x809F, 0x80F8, 0x8164, 0x81E4,
+ 0x8277, 0x831E, 0x83D7, 0x84A4, 0x8584, 0x8677, 0x877D, 0x8895,
+ 0x89C0, 0x8AFD, 0x8C4B, 0x8DAC, 0x8F1F, 0x90A2, 0x9237, 0x93DD,
+ 0x9594, 0x975B, 0x9932, 0x9B19, 0x9D0F, 0x9F15, 0xA12A, 0xA34D,
+ 0xA57F, 0xA7BE, 0xAA0C, 0xAC66, 0xAECD, 0xB141, 0xB3C1, 0xB64D,
+ 0xB8E4, 0xBB86, 0xBE33, 0xC0EA, 0xC3AA, 0xC674, 0xC947, 0xCC22,
+ 0xCF05, 0xD1F0, 0xD4E2, 0xD7DA, 0xDAD9, 0xDDDD, 0xE0E7, 0xE3F5,
+ 0xE708, 0xEA1F, 0xED39, 0xF055, 0xF375, 0xF696, 0xF9B9, 0xFCDC
+};
+
+static const Uint16Provider kLoLFireballCoordsDOSProvider = { ARRAYSIZE(kLoLFireballCoordsDOS), kLoLFireballCoordsDOS };
+
diff --git a/devtools/create_kyradat/resources/lol_dos_cd.h b/devtools/create_kyradat/resources/lol_dos_cd.h
new file mode 100644
index 0000000000..3482986658
--- /dev/null
+++ b/devtools/create_kyradat/resources/lol_dos_cd.h
@@ -0,0 +1,1625 @@
+static const byte kLoLHistoryDOSCD[465] = {
+ 0x31, 0x61, 0x68, 0x69, 0x73, 0x74, 0x30, 0x31,
+ 0x2E, 0x77, 0x73, 0x61, 0x00, 0x00, 0x00, 0x31,
+ 0x62, 0x68, 0x69, 0x73, 0x74, 0x30, 0x31, 0x2E,
+ 0x77, 0x73, 0x61, 0x00, 0x00, 0x00, 0x31, 0x63,
+ 0x68, 0x69, 0x73, 0x74, 0x30, 0x31, 0x2E, 0x77,
+ 0x73, 0x61, 0x00, 0x00, 0x00, 0x32, 0x61, 0x68,
+ 0x69, 0x73, 0x74, 0x30, 0x32, 0x2E, 0x77, 0x73,
+ 0x61, 0x00, 0x00, 0x00, 0x32, 0x62, 0x68, 0x69,
+ 0x73, 0x74, 0x30, 0x33, 0x2E, 0x77, 0x73, 0x61,
+ 0x00, 0x00, 0x00, 0x32, 0x65, 0x68, 0x69, 0x73,
+ 0x74, 0x30, 0x34, 0x2E, 0x77, 0x73, 0x61, 0x00,
+ 0x00, 0x00, 0x32, 0x66, 0x68, 0x69, 0x73, 0x74,
+ 0x30, 0x35, 0x2E, 0x77, 0x73, 0x61, 0x00, 0x00,
+ 0x00, 0x33, 0x61, 0x68, 0x69, 0x73, 0x74, 0x30,
+ 0x36, 0x61, 0x2E, 0x77, 0x73, 0x61, 0x00, 0x00,
+ 0x33, 0x62, 0x68, 0x69, 0x73, 0x74, 0x30, 0x36,
+ 0x61, 0x2E, 0x77, 0x73, 0x61, 0x00, 0x00, 0x33,
+ 0x63, 0x68, 0x69, 0x73, 0x74, 0x30, 0x36, 0x62,
+ 0x2E, 0x77, 0x73, 0x61, 0x00, 0x00, 0x33, 0x64,
+ 0x68, 0x69, 0x73, 0x74, 0x32, 0x30, 0x2E, 0x77,
+ 0x73, 0x61, 0x00, 0x00, 0x00, 0x34, 0x61, 0x68,
+ 0x69, 0x73, 0x74, 0x30, 0x38, 0x2E, 0x77, 0x73,
+ 0x61, 0x00, 0x00, 0x00, 0x34, 0x63, 0x68, 0x69,
+ 0x73, 0x74, 0x30, 0x39, 0x2E, 0x77, 0x73, 0x61,
+ 0x00, 0x00, 0x00, 0x34, 0x65, 0x68, 0x69, 0x73,
+ 0x74, 0x31, 0x30, 0x2E, 0x77, 0x73, 0x61, 0x00,
+ 0x00, 0x00, 0x35, 0x61, 0x68, 0x69, 0x73, 0x74,
+ 0x31, 0x31, 0x2E, 0x77, 0x73, 0x61, 0x00, 0x00,
+ 0x00, 0x35, 0x62, 0x68, 0x69, 0x73, 0x74, 0x31,
+ 0x32, 0x2E, 0x77, 0x73, 0x61, 0x00, 0x00, 0x00,
+ 0x35, 0x63, 0x68, 0x69, 0x73, 0x74, 0x31, 0x32,
+ 0x2E, 0x77, 0x73, 0x61, 0x00, 0x00, 0x00, 0x35,
+ 0x64, 0x68, 0x69, 0x73, 0x74, 0x31, 0x33, 0x2E,
+ 0x77, 0x73, 0x61, 0x00, 0x00, 0x00, 0x36, 0x61,
+ 0x68, 0x69, 0x73, 0x74, 0x31, 0x34, 0x2E, 0x77,
+ 0x73, 0x61, 0x00, 0x00, 0x00, 0x36, 0x62, 0x68,
+ 0x69, 0x73, 0x74, 0x31, 0x35, 0x2E, 0x77, 0x73,
+ 0x61, 0x00, 0x00, 0x00, 0x36, 0x63, 0x68, 0x69,
+ 0x73, 0x74, 0x31, 0x36, 0x2E, 0x77, 0x73, 0x61,
+ 0x00, 0x00, 0x00, 0x37, 0x61, 0x68, 0x69, 0x73,
+ 0x74, 0x31, 0x37, 0x2E, 0x77, 0x73, 0x61, 0x00,
+ 0x00, 0x00, 0x37, 0x62, 0x68, 0x69, 0x73, 0x74,
+ 0x31, 0x38, 0x61, 0x2E, 0x77, 0x73, 0x61, 0x00,
+ 0x00, 0x37, 0x63, 0x68, 0x69, 0x73, 0x74, 0x31,
+ 0x39, 0x2E, 0x77, 0x73, 0x61, 0x00, 0x00, 0x00,
+ 0x38, 0x61, 0x68, 0x69, 0x73, 0x74, 0x32, 0x31,
+ 0x63, 0x2E, 0x77, 0x73, 0x61, 0x00, 0x00, 0x38,
+ 0x63, 0x68, 0x69, 0x73, 0x74, 0x32, 0x31, 0x63,
+ 0x2E, 0x77, 0x73, 0x61, 0x00, 0x00, 0x39, 0x61,
+ 0x68, 0x69, 0x73, 0x74, 0x32, 0x32, 0x2E, 0x77,
+ 0x73, 0x61, 0x00, 0x00, 0x00, 0x39, 0x64, 0x68,
+ 0x69, 0x73, 0x74, 0x32, 0x33, 0x2E, 0x77, 0x73,
+ 0x61, 0x00, 0x00, 0x00, 0x39, 0x66, 0x68, 0x69,
+ 0x73, 0x74, 0x32, 0x34, 0x2E, 0x77, 0x73, 0x61,
+ 0x00, 0x00, 0x00, 0x39, 0x68, 0x68, 0x69, 0x73,
+ 0x74, 0x32, 0x35, 0x2E, 0x77, 0x73, 0x61, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00
+};
+
+static const ByteProvider kLoLHistoryDOSCDProvider = { ARRAYSIZE(kLoLHistoryDOSCD), kLoLHistoryDOSCD };
+
+static const char *const kLoLIngameSfxFilesDOSCD[230] = {
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "DOORMTOP",
+ "DOORMTCL",
+ "PMETLHI",
+ "SWING6",
+ "MDAMAGE2",
+ "LEVERDN",
+ "LEVERUP",
+ "MTLDRSLM",
+ "DOORWDOP",
+ "DOORWDCL",
+ "KEYOPEN",
+ "KEYLOCK",
+ "PORTCUL",
+ "PORTCULD",
+ "LOKPICK",
+ "OCEAN2",
+ "NUNCHUK",
+ "SWING",
+ "SHWING1",
+ "SWING6",
+ "THROW",
+ "CROSSBOW",
+ "HEAL1",
+ "FIRESPL1",
+ "PRESSIN",
+ "PRESSOUT",
+ "PLATEON",
+ "PLATEOFF",
+ "DORWDSLM",
+ "LITENIN1",
+ "ICESPEL2",
+ "SPELL4B",
+ "SHIELD1",
+ "3BOLTC",
+ "2BOLTC",
+ "1BOLTC",
+ "DAWNSPL1",
+ "HEALKING",
+ "SPELL7",
+ "SWING1",
+ "EXPLODE",
+ "CROWCAW",
+ "MORPH2",
+ "CHEST",
+ "MONEY",
+ "SPELBK2",
+ "AUTOMAP",
+ "MINECRT3",
+ "CREAK1",
+ "TURNPAG2",
+ "POLGULP1",
+ "GOOEY2",
+ "BUCKBELL",
+ "KEEPXIT2",
+ "VSCREAM4",
+ "EMPTY",
+ "GOOEY1",
+ "GOOEY2",
+ "RIPPOD4",
+ "PODSKEL1",
+ "INVISO",
+ "OPENBOX2",
+ "ACCEPT2",
+ "BOW2",
+ "HACHUCKM",
+ "FOUNDRY2",
+ "FOUNDRY2",
+ "FOUNDRY4",
+ "FOUNDRY6",
+ "CLEANGL1",
+ "CLEANGL2",
+ "GLOWY1",
+ "DORSTNOP",
+ "DORSTNCL",
+ "EMPTY",
+ "EMPTY",
+ "EMPTY",
+ "EMPTY",
+ "ADAMAGE1",
+ "HDAMAGE1",
+ "TDAMAGE1",
+ "BDAMAGE1",
+ "LDAMAGE1",
+ "TDAMAGE2",
+ "CDAMAGE1",
+ "EMPTY",
+ "EMPTY",
+ "EMPTY",
+ "GOOD1",
+ "GOOD2",
+ "EMPTY",
+ "EMPTY",
+ "EMPTY",
+ "LITENIN1",
+ "COMPASS2",
+ "KINGDOR1",
+ "GLASBRK2",
+ "FLUTTER3",
+ "NUNCHUK",
+ "WALLFALL",
+ "WALLHIT",
+ "MWHOA1",
+ "LADDER",
+ "WHITTL3",
+ "ROWBOAT1",
+ "HORSEY2",
+ "SNORT",
+ "PUMPDOR1",
+ "PUMPSM2",
+ "PUMPSM3",
+ "SPARK1",
+ "BEZEL",
+ "SWARM",
+ "CHEST1",
+ "WRIT1",
+ "CAUSFOG",
+ "VAELAN2",
+ "ROARSPL1",
+ "RATTLER",
+ "WINK1",
+ "HANDFATE",
+ "QUAKE1",
+ "WIZLAMP1",
+ "SAP2",
+ "MSTDOOM1",
+ "GARDIAN1",
+ "VORTEX1",
+ "LION1",
+ "STEAM",
+ "SQUAWCK",
+ "SLIDEMUG",
+ "SPARKHIT",
+ "SPARKHIT2",
+ "SPARKHIT3",
+ "ICEFORM",
+ "ICEXPLOD",
+ "EXPLODE2",
+ "EXPLODE3",
+ "BOLTQUK2",
+ "BOLT2",
+ "BOLT3",
+ "SNKBITE",
+ "HANDGLOW",
+ "MSTDOOM2",
+ "MSTDOOM3",
+ "GARDIAN2",
+ "PLUSPOWR",
+ "MINSPOWR",
+ "BLUDCURL",
+ "LORAGASP",
+ "POURH2O",
+ "AWHOA2",
+ "HWHOA1",
+ "CWHOA1",
+ "AFALL2",
+ "EMPTY",
+ "CFALL2",
+ "MFALL2",
+ "EMPTY",
+ "EMPTY",
+ "EMPTY",
+ "EMPTY",
+ "EMPTY",
+ "EMPTY",
+ "EMPTY",
+ "EMPTY",
+ "WRIT2",
+ "WRIT3",
+ "WRIT4",
+ "WRIT5",
+ "WRIT6",
+ "RUCKUS1",
+ "RUCKUS3",
+ "CHANT1",
+ "EMPTY",
+ "EMPTY",
+ "EMPTY",
+ "CHANT2",
+ "CHANT3",
+ ""
+};
+
+static const StringListProvider kLoLIngameSfxFilesDOSCDProvider = { ARRAYSIZE(kLoLIngameSfxFilesDOSCD), kLoLIngameSfxFilesDOSCD };
+
+static const byte kLoLIngameSfxIndexDOSCD[1000] = {
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0x34, 0x00, 0x6F, 0x00, 0x7C, 0x00, 0x00, 0x00,
+ 0x7D, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00,
+ 0x7F, 0x00, 0x00, 0x00, 0x36, 0x00, 0x73, 0x00,
+ 0x35, 0x00, 0x9C, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
+ 0x80, 0x00, 0x73, 0x00, 0x81, 0x00, 0x73, 0x00,
+ 0x82, 0x00, 0x73, 0x00, 0x83, 0x00, 0x73, 0x00,
+ 0x84, 0x00, 0x73, 0x00, 0x85, 0x00, 0x73, 0x00,
+ 0x86, 0x00, 0x73, 0x00, 0xD7, 0x00, 0x76, 0x00,
+ 0x87, 0x00, 0x65, 0x00, 0x38, 0x00, 0x5F, 0x00,
+ 0x37, 0x00, 0x5F, 0x00, 0x32, 0x00, 0x0A, 0x00,
+ 0x33, 0x00, 0x64, 0x00, 0x39, 0x00, 0x65, 0x00,
+ 0x3A, 0x00, 0x0A, 0x00, 0x3B, 0x00, 0x14, 0x00,
+ 0x4E, 0x00, 0x65, 0x00, 0x7A, 0x00, 0x64, 0x00,
+ 0x7B, 0x00, 0x64, 0x00, 0x88, 0x00, 0x65, 0x00,
+ 0x3C, 0x00, 0x65, 0x00, 0x3D, 0x00, 0x64, 0x00,
+ 0x89, 0x00, 0x00, 0x00, 0x8E, 0x00, 0x14, 0x00,
+ 0x3E, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00,
+ 0x40, 0x00, 0x65, 0x00, 0x41, 0x00, 0x00, 0x00,
+ 0xC9, 0x00, 0x72, 0x00, 0xCA, 0x00, 0x72, 0x00,
+ 0xCB, 0x00, 0x72, 0x00, 0xCC, 0x00, 0x74, 0x00,
+ 0xCD, 0x00, 0x74, 0x00, 0xCE, 0x00, 0x74, 0x00,
+ 0xCF, 0x00, 0x74, 0x00, 0xD0, 0x00, 0x73, 0x00,
+ 0xD1, 0x00, 0x73, 0x00, 0xD2, 0x00, 0x73, 0x00,
+ 0xD3, 0x00, 0x73, 0x00, 0xD4, 0x00, 0x72, 0x00,
+ 0xD5, 0x00, 0x72, 0x00, 0xD6, 0x00, 0x72, 0x00,
+ 0x42, 0x00, 0x6F, 0x00, 0x43, 0x00, 0x6F, 0x00,
+ 0x44, 0x00, 0x6F, 0x00, 0x45, 0x00, 0x6F, 0x00,
+ 0x46, 0x00, 0x6F, 0x00, 0x47, 0x00, 0x6F, 0x00,
+ 0x48, 0x00, 0x77, 0x00, 0x49, 0x00, 0x89, 0xFF,
+ 0x4F, 0x00, 0x89, 0xFF, 0x50, 0x00, 0x89, 0xFF,
+ 0xA0, 0x00, 0x8A, 0xFF, 0xA1, 0x00, 0x89, 0xFF,
+ 0xA2, 0x00, 0x89, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
+ 0xA3, 0x00, 0x89, 0xFF, 0xA4, 0x00, 0x89, 0xFF,
+ 0x4A, 0x00, 0x13, 0x00, 0x4B, 0x00, 0x13, 0x00,
+ 0x4C, 0x00, 0x32, 0x00, 0x4D, 0x00, 0x32, 0x00,
+ 0x5F, 0x00, 0x0A, 0x00, 0x51, 0x00, 0x00, 0x00,
+ 0x52, 0x00, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x00,
+ 0x53, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00,
+ 0x55, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00,
+ 0x57, 0x00, 0x00, 0x00, 0x58, 0x00, 0x77, 0x00,
+ 0x60, 0x00, 0x00, 0x00, 0x5D, 0x00, 0x6A, 0x00,
+ 0x8A, 0x00, 0x6F, 0x00, 0x8B, 0x00, 0x6F, 0x00,
+ 0x8C, 0x00, 0x00, 0x00, 0x8D, 0x00, 0x00, 0x00,
+ 0x5A, 0x00, 0x77, 0x00, 0x5C, 0x00, 0x00, 0x00,
+ 0x5B, 0x00, 0x00, 0x00, 0x5E, 0x00, 0x6F, 0x00,
+ 0x61, 0x00, 0x76, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0x62, 0x00, 0x76, 0x00, 0x63, 0x00, 0x3C, 0x00,
+ 0x64, 0x00, 0x6D, 0x00, 0x65, 0x00, 0x00, 0x00,
+ 0x66, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00,
+ 0x68, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00,
+ 0x6A, 0x00, 0x00, 0x00, 0x6B, 0x00, 0x00, 0x00,
+ 0x6C, 0x00, 0x00, 0x00, 0x6D, 0x00, 0x00, 0x00,
+ 0x6E, 0x00, 0x00, 0x00, 0x6F, 0x00, 0x00, 0x00,
+ 0x70, 0x00, 0x88, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
+ 0x71, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00,
+ 0x73, 0x00, 0x74, 0x00, 0x74, 0x00, 0x00, 0x00,
+ 0x75, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00,
+ 0x77, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00,
+ 0x79, 0x00, 0x77, 0x00, 0x90, 0x00, 0x00, 0x00,
+ 0x91, 0x00, 0x00, 0x00, 0x92, 0x00, 0x77, 0x00,
+ 0x93, 0x00, 0x1E, 0x00, 0x94, 0x00, 0x89, 0xFF,
+ 0x95, 0x00, 0x77, 0x00, 0x96, 0x00, 0x76, 0x00,
+ 0x97, 0x00, 0x72, 0x00, 0x98, 0x00, 0x00, 0x00,
+ 0x99, 0x00, 0x50, 0x00, 0x9A, 0x00, 0x78, 0x00,
+ 0x9B, 0x00, 0x64, 0x00, 0x9C, 0x00, 0x5A, 0x00,
+ 0x9D, 0x00, 0x64, 0x00, 0x9E, 0x00, 0x65, 0x00,
+ 0x9F, 0x00, 0x66, 0x00, 0xA5, 0x00, 0x89, 0xFF,
+ 0xA6, 0x00, 0x89, 0xFF, 0xA7, 0x00, 0x77, 0x00,
+ 0xA8, 0x00, 0x76, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xA9, 0x00, 0x77, 0x00, 0xAA, 0x00, 0x77, 0x00,
+ 0xAB, 0x00, 0x77, 0x00, 0xAC, 0x00, 0x77, 0x00,
+ 0xAD, 0x00, 0x77, 0x00, 0xAE, 0x00, 0x77, 0x00,
+ 0xAF, 0x00, 0x76, 0x00, 0xB0, 0x00, 0x77, 0x00,
+ 0xB1, 0x00, 0x64, 0x00, 0xB2, 0x00, 0x6F, 0x00,
+ 0xB3, 0x00, 0x6E, 0x00, 0xB4, 0x00, 0x6E, 0x00,
+ 0xB5, 0x00, 0x77, 0x00, 0xB6, 0x00, 0x77, 0x00,
+ 0xB7, 0x00, 0x77, 0x00, 0xB8, 0x00, 0x76, 0x00,
+ 0xB9, 0x00, 0x77, 0x00, 0xBA, 0x00, 0x77, 0x00,
+ 0xBB, 0x00, 0x77, 0x00, 0xBC, 0x00, 0x77, 0x00,
+ 0xBD, 0x00, 0x77, 0x00, 0xBE, 0x00, 0x77, 0x00,
+ 0xBF, 0x00, 0x77, 0x00, 0xC0, 0x00, 0x76, 0x00,
+ 0xC1, 0x00, 0x77, 0x00, 0xC2, 0x00, 0x77, 0x00,
+ 0xC3, 0x00, 0x77, 0x00, 0xC4, 0x00, 0x6E, 0x00,
+ 0xC5, 0x00, 0x6E, 0x00, 0xC6, 0x00, 0x7D, 0x00,
+ 0xC7, 0x00, 0x78, 0x00, 0xC8, 0x00, 0x78, 0x00,
+ 0xD8, 0x00, 0x77, 0x00, 0xD9, 0x00, 0x77, 0x00,
+ 0xDA, 0x00, 0x77, 0x00, 0xDB, 0x00, 0x77, 0x00,
+ 0xDC, 0x00, 0x77, 0x00, 0xDD, 0x00, 0x78, 0x00,
+ 0xDE, 0x00, 0x78, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xE3, 0x00, 0x77, 0x00, 0xE4, 0x00, 0x77, 0x00,
+ 0xE0, 0x00, 0x1E, 0x00, 0xDF, 0x00, 0x77, 0x00,
+ 0xE1, 0x00, 0x05, 0x00, 0xE2, 0x00, 0x0A, 0x00,
+ 0x00, 0x00, 0x50, 0x00, 0x01, 0x00, 0x50, 0x00,
+ 0x02, 0x00, 0x50, 0x00, 0x03, 0x00, 0x50, 0x00,
+ 0x04, 0x00, 0x50, 0x00, 0x05, 0x00, 0x50, 0x00,
+ 0x06, 0x00, 0x50, 0x00, 0x07, 0x00, 0x50, 0x00,
+ 0x08, 0x00, 0x50, 0x00, 0x09, 0x00, 0x50, 0x00,
+ 0x0A, 0x00, 0x50, 0x00, 0x0B, 0x00, 0x50, 0x00,
+ 0x0C, 0x00, 0x50, 0x00, 0x0D, 0x00, 0x50, 0x00,
+ 0x0E, 0x00, 0x50, 0x00, 0x0F, 0x00, 0x50, 0x00,
+ 0x10, 0x00, 0x50, 0x00, 0x11, 0x00, 0x5A, 0x00,
+ 0x12, 0x00, 0x5A, 0x00, 0x13, 0x00, 0x5A, 0x00,
+ 0x14, 0x00, 0x5A, 0x00, 0x15, 0x00, 0x5A, 0x00,
+ 0x16, 0x00, 0x5A, 0x00, 0x17, 0x00, 0x5A, 0x00,
+ 0x18, 0x00, 0x5A, 0x00, 0x19, 0x00, 0x5A, 0x00,
+ 0x1A, 0x00, 0x5A, 0x00, 0x1B, 0x00, 0x5A, 0x00,
+ 0x1C, 0x00, 0x5A, 0x00, 0x1D, 0x00, 0x5A, 0x00,
+ 0x1E, 0x00, 0x5A, 0x00, 0x1F, 0x00, 0x5A, 0x00,
+ 0x20, 0x00, 0x5A, 0x00, 0x21, 0x00, 0x73, 0x00,
+ 0x22, 0x00, 0x73, 0x00, 0x23, 0x00, 0x73, 0x00,
+ 0x24, 0x00, 0x73, 0x00, 0x25, 0x00, 0x73, 0x00,
+ 0x26, 0x00, 0x73, 0x00, 0x27, 0x00, 0x73, 0x00,
+ 0x28, 0x00, 0x73, 0x00, 0x29, 0x00, 0x73, 0x00,
+ 0x2A, 0x00, 0x73, 0x00, 0x2B, 0x00, 0x50, 0x00,
+ 0x2C, 0x00, 0x5A, 0x00, 0x2D, 0x00, 0x5A, 0x00,
+ 0x2E, 0x00, 0x5A, 0x00, 0x2F, 0x00, 0x5A, 0x00,
+ 0x30, 0x00, 0x5A, 0x00, 0x31, 0x00, 0x5A, 0x00
+};
+
+static const ByteProvider kLoLIngameSfxIndexDOSCDProvider = { ARRAYSIZE(kLoLIngameSfxIndexDOSCD), kLoLIngameSfxIndexDOSCD };
+
+static const byte kLoLMusicTrackMapDOSCD[240] = {
+ 0x01, 0x61, 0x02, 0x01, 0x61, 0x03, 0x01, 0x61,
+ 0x04, 0x01, 0x61, 0x05, 0x03, 0x61, 0x03, 0x01,
+ 0x61, 0x07, 0x01, 0x61, 0x08, 0x01, 0x62, 0x02,
+ 0x01, 0x64, 0x03, 0x01, 0x62, 0x04, 0x01, 0x62,
+ 0x05, 0x01, 0x62, 0x06, 0x01, 0x62, 0x07, 0x01,
+ 0x62, 0x08, 0x01, 0x62, 0x09, 0x01, 0x63, 0x02,
+ 0x01, 0x63, 0x03, 0x01, 0x63, 0x04, 0x01, 0x63,
+ 0x05, 0x01, 0x63, 0x06, 0x01, 0x63, 0x07, 0x01,
+ 0x64, 0x02, 0x02, 0x61, 0x02, 0x02, 0x61, 0x03,
+ 0x02, 0x61, 0x04, 0x02, 0x61, 0x05, 0x02, 0x61,
+ 0x06, 0x02, 0x61, 0x07, 0x02, 0x61, 0x08, 0x02,
+ 0x61, 0x09, 0x03, 0x61, 0x02, 0x03, 0x61, 0x03,
+ 0x03, 0x61, 0x04, 0x03, 0x61, 0x05, 0x03, 0x61,
+ 0x06, 0x03, 0x61, 0x07, 0x04, 0x61, 0x02, 0x04,
+ 0x61, 0x03, 0x04, 0x61, 0x04, 0x05, 0x61, 0x02,
+ 0x05, 0x61, 0x03, 0x05, 0x61, 0x04, 0x05, 0x61,
+ 0x05, 0x05, 0x61, 0x06, 0x06, 0x61, 0x03, 0x06,
+ 0x61, 0x05, 0x06, 0x61, 0x06, 0x06, 0x62, 0x02,
+ 0x06, 0x61, 0x02, 0x06, 0x61, 0x04, 0x08, 0x61,
+ 0x02, 0x08, 0x61, 0x03, 0x08, 0x61, 0x04, 0x08,
+ 0x61, 0x05, 0x08, 0x61, 0x06, 0x08, 0x61, 0x07,
+ 0x08, 0x62, 0x02, 0x08, 0x62, 0x03, 0x01, 0x61,
+ 0x09, 0x03, 0x62, 0x02, 0x03, 0x62, 0x03, 0x03,
+ 0x62, 0x04, 0x03, 0x62, 0x05, 0x03, 0x62, 0x06,
+ 0x03, 0x62, 0x07, 0x03, 0x62, 0x08, 0x04, 0x61,
+ 0x05, 0x04, 0x61, 0x06, 0x04, 0x61, 0x07, 0x04,
+ 0x61, 0x08, 0x05, 0x62, 0x02, 0x05, 0x62, 0x03,
+ 0x05, 0x62, 0x04, 0x07, 0x61, 0x02, 0x07, 0x61,
+ 0x03, 0x01, 0x64, 0x0A, 0x03, 0x62, 0x09, 0x01,
+ 0x64, 0x04, 0x05, 0x62, 0x05, 0x05, 0x62, 0x06
+};
+
+static const ByteProvider kLoLMusicTrackMapDOSCDProvider = { ARRAYSIZE(kLoLMusicTrackMapDOSCD), kLoLMusicTrackMapDOSCD };
+
+static const byte kLoLIngameGMSfxIndexDOSCD[250] = {
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0x1A, 0x0B, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x25, 0x0B, 0x07, 0x25, 0x25, 0x25, 0x25,
+ 0x25, 0x25, 0x25, 0x1A, 0x11, 0x0E, 0x0E, 0x05,
+ 0x05, 0x11, 0x05, 0x05, 0x11, 0x05, 0x05, 0x11,
+ 0x2A, 0x2B, 0x06, 0xFF, 0x05, 0x05, 0x2B, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x25,
+ 0x25, 0x25, 0x25, 0xFF, 0xFF, 0xFF, 0x0C, 0x0C,
+ 0x0C, 0x0C, 0x0C, 0x0C, 0x08, 0x29, 0x29, 0x27,
+ 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x01, 0x0E,
+ 0x09, 0x09, 0x0A, 0x12, 0xE7, 0x29, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x18, 0x27, 0x13, 0x10, 0x1A, 0x1A,
+ 0xFF, 0xFF, 0x12, 0x26, 0xFF, 0x02, 0x05, 0x05,
+ 0x0F, 0xFF, 0xFF, 0xFF, 0x02, 0x05, 0x21, 0x1A,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x28, 0x0A, 0x19, 0xFF,
+ 0x0B, 0x06, 0x02, 0x02, 0x03, 0x02, 0xFF, 0xFF,
+ 0x0A, 0x0A, 0x0F, 0xFF, 0xFF, 0x0C, 0x1B, 0x22,
+ 0xFF, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0x10, 0x02,
+ 0x03, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A,
+ 0x29, 0x0A, 0x0A, 0x27, 0x0A, 0x28, 0x0A, 0x0A,
+ 0x06, 0xFF, 0x29, 0x29, 0x29, 0x28, 0x12, 0x12,
+ 0x12, 0x29, 0x29, 0x29, 0x25, 0x29, 0x27, 0x27,
+ 0x0C, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0x19, 0x19,
+ 0x19, 0x19, 0x19, 0x22, 0x1B, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x16, 0xFF, 0x16, 0x16, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C,
+ 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C,
+ 0x0C, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
+ 0x22, 0x22, 0x22, 0x16, 0x0C, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF
+};
+
+static const ByteProvider kLoLIngameGMSfxIndexDOSCDProvider = { ARRAYSIZE(kLoLIngameGMSfxIndexDOSCD), kLoLIngameGMSfxIndexDOSCD };
+
+static const byte kLoLIngameMT32SfxIndexDOSCD[250] = {
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0x30, 0x2E, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x2C, 0x31, 0x02, 0x2C, 0x2C, 0x2C, 0x2C,
+ 0x2C, 0x2C, 0x2C, 0x1A, 0x0C, 0x03, 0x04, 0x0B,
+ 0x0A, 0x0C, 0x0B, 0x0A, 0x0C, 0x0B, 0x0A, 0x0C,
+ 0x24, 0x25, 0x0D, 0x02, 0x0B, 0x0A, 0x25, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2C,
+ 0x2C, 0x2C, 0x2C, 0xFF, 0xFF, 0xFF, 0x2E, 0x2E,
+ 0x2E, 0x2E, 0x31, 0x31, 0x1B, 0x10, 0x23, 0x21,
+ 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x03, 0x04,
+ 0x2B, 0x2A, 0x32, 0x21, 0x18, 0x23, 0x1B, 0x1B,
+ 0x1B, 0xFF, 0x17, 0x33, 0x32, 0x08, 0x1A, 0x19,
+ 0x02, 0x02, 0x0E, 0x32, 0x09, 0x17, 0x0B, 0x0B,
+ 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0x01, 0x1A,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x33, 0x08, 0x34, 0xFF,
+ 0x31, 0x0D, 0x05, 0x06, 0x05, 0x06, 0xFF, 0xFF,
+ 0x0F, 0x34, 0x07, 0xFF, 0xFF, 0x31, 0x1A, 0x26,
+ 0xFF, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x05,
+ 0x06, 0x33, 0x34, 0x34, 0x34, 0x34, 0x34, 0x33,
+ 0x32, 0x34, 0x34, 0x32, 0x34, 0x33, 0x34, 0xFF,
+ 0x27, 0xFF, 0x23, 0x23, 0x23, 0x21, 0x0E, 0x0E,
+ 0x0E, 0x23, 0x23, 0x23, 0x2C, 0x32, 0x33, 0x33,
+ 0x2F, 0x19, 0xFF, 0xFF, 0xFF, 0x18, 0x17, 0x18,
+ 0x18, 0x17, 0x18, 0x26, 0x06, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x15, 0xFF, 0x15, 0x15, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31,
+ 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31,
+ 0x31, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26,
+ 0x26, 0x26, 0x26, 0x15, 0x31, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF
+};
+
+static const ByteProvider kLoLIngameMT32SfxIndexDOSCDProvider = { ARRAYSIZE(kLoLIngameMT32SfxIndexDOSCD), kLoLIngameMT32SfxIndexDOSCD };
+
+static const byte kLoLIngamePcSpkSfxIndexDOSCD[250] = {
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0x04, 0x0C, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x17, 0x0C, 0x10, 0x17, 0x17, 0x17, 0x17,
+ 0x17, 0x17, 0x17, 0x04, 0x14, 0x02, 0x02, 0x05,
+ 0x05, 0x14, 0x05, 0x05, 0x05, 0x14, 0x05, 0x05,
+ 0x14, 0x00, 0x00, 0x10, 0x05, 0x05, 0x01, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x17,
+ 0x17, 0x17, 0x17, 0xFF, 0xFF, 0xFF, 0x0C, 0x0C,
+ 0x0C, 0x0C, 0x0C, 0x0C, 0x12, 0x0E, 0x0F, 0x11,
+ 0x0F, 0x11, 0x12, 0x11, 0x12, 0x12, 0x01, 0x01,
+ 0x02, 0x0A, 0x15, 0x12, 0x0A, 0x0F, 0x15, 0x15,
+ 0x15, 0xFF, 0x0A, 0xFF, 0x16, 0x05, 0x0A, 0x0A,
+ 0x10, 0x10, 0x07, 0x15, 0xFF, 0x0A, 0xFF, 0xFF,
+ 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0x05, 0x10, 0x0A,
+ 0x13, 0x13, 0xFF, 0xFF, 0xFF, 0x01, 0x0A, 0xFF,
+ 0x0C, 0x00, 0x02, 0x02, 0x02, 0x02, 0xFF, 0xFF,
+ 0xFF, 0x15, 0x05, 0xFF, 0xFF, 0x0C, 0x16, 0x0B,
+ 0xFF, 0x0A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x12, 0x11, 0x12, 0x11, 0x12, 0x11, 0x12,
+ 0x11, 0x12, 0x11, 0x12, 0x11, 0x12, 0x03, 0xFF,
+ 0x02, 0xFF, 0x0F, 0x0F, 0x0F, 0x0F, 0x08, 0x08,
+ 0x08, 0x16, 0x16, 0x16, 0x17, 0x16, 0x16, 0x16,
+ 0x0B, 0x0A, 0xFF, 0xFF, 0xFF, 0x0A, 0x0A, 0x0A,
+ 0x0A, 0x0A, 0x0A, 0x06, 0x10, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x14, 0xFF, 0x14, 0x14, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B,
+ 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B,
+ 0x0B, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x0D, 0x14, 0x0B, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF
+};
+
+static const ByteProvider kLoLIngamePcSpkSfxIndexDOSCDProvider = { ARRAYSIZE(kLoLIngamePcSpkSfxIndexDOSCD), kLoLIngamePcSpkSfxIndexDOSCD };
+
+static const SpellProperty kLoLSpellPropertiesDOSCD[10] = {
+ { 16436, { 5, 10, 15, 25 }, 0, 0, { 0, 0, 0, 0 }, 0, 0, 0x0100 },
+ { 16437, { 5, 10, 25, 60 }, 0, 0, { 0, 0, 0, 0 }, 0, 0, 0x0001 },
+ { 16438, { 8, 15, 30, 80 }, 0, 0, { 0, 0, 0, 0 }, 0, 0, 0x0102 },
+ { 16440, { 20, 35, 65, 100 }, 0, 0, { 0, 0, 0, 0 }, 0, 0, 0x0103 },
+ { 16441, { 30, 60, 90, 120 }, 0, 0, { 0, 0, 0, 0 }, 0, 0, 0x0104 },
+ { 16442, { 30, 60, 90, 150 }, 0, 0, { 0, 0, 0, 0 }, 0, 0, 0x0105 },
+ { 16439, { 25, 30, 50, 100 }, 0, 0, { 0, 0, 0, 0 }, 0, 0, 0x0106 },
+ { 16443, { 3, 6, 12, 24 }, 0, 0, { 0, 0, 0, 0 }, 0, 0, 0x0107 },
+ { 16975, { 15, 15, 15, 15 }, 0, 0, { 0, 0, 0, 0 }, 0, 0, 0x0108 },
+ { 16975, { 15, 15, 15, 15 }, 15, 0, { 0, 0, 0, 0 }, 0, 0, 0x0108 }
+};
+
+static const SpellPropertyProvider kLoLSpellPropertiesDOSCDProvider = { ARRAYSIZE(kLoLSpellPropertiesDOSCD), kLoLSpellPropertiesDOSCD };
+
+static const byte kLoLGameShapeMapDOSCD[276] = {
+ 0x15, 0x5A, 0x05, 0x37, 0x09, 0x38, 0x00, 0x36,
+ 0x00, 0x36, 0x00, 0x36, 0x00, 0x3C, 0x26, 0x3D,
+ 0x05, 0x37, 0x07, 0x39, 0x18, 0x40, 0x0D, 0x3E,
+ 0x06, 0x42, 0x06, 0x3F, 0x01, 0x5A, 0x01, 0x5A,
+ 0x0A, 0x5A, 0x0A, 0x5A, 0x0A, 0x5A, 0x04, 0x5A,
+ 0x04, 0x5A, 0x2D, 0x5A, 0x2D, 0x5A, 0x0B, 0x3B,
+ 0x24, 0x5A, 0x03, 0x3A, 0x00, 0x3C, 0x1E, 0x3E,
+ 0x1E, 0x3E, 0x1B, 0x5A, 0x14, 0x5A, 0x29, 0x5A,
+ 0x02, 0x5A, 0x0C, 0x5A, 0x22, 0x5A, 0x21, 0x41,
+ 0x0D, 0x3E, 0x25, 0x5A, 0x1A, 0x41, 0x04, 0x5A,
+ 0x30, 0x5A, 0x31, 0x5A, 0x32, 0x5A, 0x32, 0x5A,
+ 0x00, 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, 0x36,
+ 0x17, 0x5A, 0x17, 0x5A, 0x0E, 0x5A, 0x0E, 0x5A,
+ 0x0E, 0x5A, 0x26, 0x3D, 0x2C, 0x5A, 0x21, 0x41,
+ 0x07, 0x39, 0x27, 0x5A, 0x1B, 0x5A, 0x1B, 0x5A,
+ 0x1B, 0x5A, 0x1B, 0x5A, 0x1B, 0x5A, 0x1B, 0x5A,
+ 0x1B, 0x5A, 0x1B, 0x5A, 0x22, 0x5A, 0x22, 0x5A,
+ 0x16, 0x5A, 0x2D, 0x5A, 0x3B, 0x5A, 0x3B, 0x5A,
+ 0x3A, 0x5A, 0x17, 0x5A, 0x1B, 0x5A, 0x1B, 0x5A,
+ 0x17, 0x5A, 0x0A, 0x5A, 0x0A, 0x5A, 0x0A, 0x5A,
+ 0x1F, 0x5A, 0x17, 0x5A, 0x27, 0x5A, 0x1B, 0x5A,
+ 0x1E, 0x3E, 0x2A, 0x5A, 0x2F, 0x5A, 0x2F, 0x5A,
+ 0x2F, 0x5A, 0x2F, 0x5A, 0x2F, 0x5A, 0x2F, 0x5A,
+ 0x2C, 0x5A, 0x2C, 0x5A, 0x2C, 0x5A, 0x2C, 0x5A,
+ 0x34, 0x5A, 0x0F, 0x5A, 0x35, 0x43, 0x1B, 0x5A,
+ 0x1B, 0x5A, 0x1B, 0x5A, 0x1B, 0x5A, 0x2B, 0x5A,
+ 0x1D, 0x5A, 0x1D, 0x5A, 0x28, 0x5A, 0x28, 0x5A,
+ 0x28, 0x5A, 0x28, 0x5A, 0x01, 0x5A, 0x14, 0x5A,
+ 0x14, 0x5A, 0x14, 0x5A, 0x14, 0x5A, 0x1B, 0x5A,
+ 0x27, 0x5A, 0x1B, 0x5A, 0x1B, 0x5A, 0x1B, 0x5A,
+ 0x1B, 0x5A, 0x36, 0x5A, 0x37, 0x5A, 0x38, 0x5A,
+ 0x39, 0x5A, 0x1B, 0x5A, 0x1B, 0x5A, 0x1B, 0x5A,
+ 0x1B, 0x5A, 0x27, 0x5A, 0x2E, 0x5A, 0x2E, 0x5A,
+ 0x2E, 0x5A, 0x2E, 0x5A, 0x17, 0x5A, 0x01, 0x5A,
+ 0x1C, 0x5A, 0x1C, 0x5A
+};
+
+static const ByteProvider kLoLGameShapeMapDOSCDProvider = { ARRAYSIZE(kLoLGameShapeMapDOSCD), kLoLGameShapeMapDOSCD };
+
+static const byte kLoLSceneItemOffsDOSCD[8] = {
+ 0x00, 0xFE, 0x01, 0xFF, 0x02, 0x00, 0x01, 0xFF
+};
+
+static const ByteProvider kLoLSceneItemOffsDOSCDProvider = { ARRAYSIZE(kLoLSceneItemOffsDOSCD), kLoLSceneItemOffsDOSCD };
+
+static const byte kLoLCharInvIndexDOSCD[5] = {
+ 0x00, 0x00, 0x03, 0x01, 0x02
+};
+
+static const ByteProvider kLoLCharInvIndexDOSCDProvider = { ARRAYSIZE(kLoLCharInvIndexDOSCD), kLoLCharInvIndexDOSCD };
+
+static const byte kLoLCharInvDefsDOSCD[88] = {
+ 0x05, 0x34, 0x50, 0x34, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x05, 0x04, 0x05, 0x1C, 0x50, 0x04, 0x50, 0x1C,
+ 0x05, 0x5D, 0x0F, 0x4E, 0x50, 0x4E, 0x05, 0x19,
+ 0x50, 0x19, 0x05, 0x49, 0x50, 0x49, 0x05, 0x01,
+ 0x05, 0x31, 0x50, 0x01, 0x50, 0x31, 0x05, 0x61,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x05, 0x34, 0x50, 0x34,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x05, 0x04, 0x05, 0x1C,
+ 0x50, 0x04, 0x50, 0x1C, 0x05, 0x5D, 0x0F, 0x4E,
+ 0x50, 0x4E, 0x05, 0x34, 0x50, 0x34, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x05, 0x04, 0x05, 0x1C, 0x50, 0x04,
+ 0x50, 0x1C, 0xFF, 0xFF, 0x0F, 0x4E, 0x50, 0x4E
+};
+
+static const ByteProvider kLoLCharInvDefsDOSCDProvider = { ARRAYSIZE(kLoLCharInvDefsDOSCD), kLoLCharInvDefsDOSCD };
+
+static const uint16 kLoLCharDefsManDOSCD[9] = {
+ 0x0100, 0x0100, 0x0100, 0x0032, 0x0100, 0x0100, 0x0100, 0x0100,
+ 0x0004
+};
+
+static const Uint16Provider kLoLCharDefsManDOSCDProvider = { ARRAYSIZE(kLoLCharDefsManDOSCD), kLoLCharDefsManDOSCD };
+
+static const uint16 kLoLCharDefsWomanDOSCD[9] = {
+ 0x0100, 0x0100, 0x0100, 0x0032, 0x0100, 0x0100, 0x0100, 0x0100,
+ 0x0004
+};
+
+static const Uint16Provider kLoLCharDefsWomanDOSCDProvider = { ARRAYSIZE(kLoLCharDefsWomanDOSCD), kLoLCharDefsWomanDOSCD };
+
+static const uint16 kLoLCharDefsKieranDOSCD[9] = {
+ 0x0180, 0x0080, 0x00C0, 0x0032, 0x0200, 0x00A6, 0x0100, 0x0140,
+ 0x0006
+};
+
+static const Uint16Provider kLoLCharDefsKieranDOSCDProvider = { ARRAYSIZE(kLoLCharDefsKieranDOSCD), kLoLCharDefsKieranDOSCD };
+
+static const uint16 kLoLCharDefsAkshelDOSCD[9] = {
+ 0x00C0, 0x00C0, 0x0140, 0x0032, 0x0100, 0x0180, 0x0180, 0x0100,
+ 0x0004
+};
+
+static const Uint16Provider kLoLCharDefsAkshelDOSCDProvider = { ARRAYSIZE(kLoLCharDefsAkshelDOSCD), kLoLCharDefsAkshelDOSCD };
+
+static const uint32 kLoLExpRequirementsDOSCD[11] = {
+ 0x00000000, 0x000001F4, 0x000005DC, 0x00001388, 0x000061A8, 0x0000C350, 0x00013880, 0x0001D4C0,
+ 0x0002BF20, 0x00041EB0, 0x7FFFFFFF
+};
+
+static const Uint32Provider kLoLExpRequirementsDOSCDProvider = { ARRAYSIZE(kLoLExpRequirementsDOSCD), kLoLExpRequirementsDOSCD };
+
+static const uint16 kLoLMonsterModifiers1DOSCD[3] = {
+ 0x0066, 0x0100, 0x0180
+};
+
+static const Uint16Provider kLoLMonsterModifiers1DOSCDProvider = { ARRAYSIZE(kLoLMonsterModifiers1DOSCD), kLoLMonsterModifiers1DOSCD };
+
+static const uint16 kLoLMonsterModifiers2DOSCD[3] = {
+ 0x0100, 0x0100, 0x00C0
+};
+
+static const Uint16Provider kLoLMonsterModifiers2DOSCDProvider = { ARRAYSIZE(kLoLMonsterModifiers2DOSCD), kLoLMonsterModifiers2DOSCD };
+
+static const uint16 kLoLMonsterModifiers3DOSCD[3] = {
+ 0x0140, 0x0100, 0x0080
+};
+
+static const Uint16Provider kLoLMonsterModifiers3DOSCDProvider = { ARRAYSIZE(kLoLMonsterModifiers3DOSCD), kLoLMonsterModifiers3DOSCD };
+
+static const uint16 kLoLMonsterModifiers4DOSCD[3] = {
+ 0x0080, 0x0100, 0x0100
+};
+
+static const Uint16Provider kLoLMonsterModifiers4DOSCDProvider = { ARRAYSIZE(kLoLMonsterModifiers4DOSCD), kLoLMonsterModifiers4DOSCD };
+
+static const byte kLoLMonsterShiftOffsetsDOSCD[32] = {
+ 0x01, 0x01, 0x01, 0x00, 0x01, 0xFF, 0x00, 0xFF,
+ 0x00, 0x00, 0x00, 0x01, 0xFF, 0x01, 0xFF, 0x00,
+ 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x01,
+ 0x01, 0x01, 0x01, 0x00, 0x01, 0xFF, 0x00, 0x00
+};
+
+static const ByteProvider kLoLMonsterShiftOffsetsDOSCDProvider = { ARRAYSIZE(kLoLMonsterShiftOffsetsDOSCD), kLoLMonsterShiftOffsetsDOSCD };
+
+static const byte kLoLMonsterDirFlagsDOSCD[16] = {
+ 0x08, 0x14, 0x00, 0x04, 0x04, 0x08, 0x14, 0x00,
+ 0x00, 0x04, 0x08, 0x14, 0x14, 0x00, 0x04, 0x08
+};
+
+static const ByteProvider kLoLMonsterDirFlagsDOSCDProvider = { ARRAYSIZE(kLoLMonsterDirFlagsDOSCD), kLoLMonsterDirFlagsDOSCD };
+
+static const byte kLoLMonsterScaleYDOSCD[30] = {
+ 0x7C, 0x78, 0x74, 0x70, 0x6C, 0x68, 0x65, 0x62,
+ 0x5F, 0x5C, 0x59, 0x56, 0x53, 0x50, 0x4D, 0x4A,
+ 0x48, 0x46, 0x44, 0x43, 0x41, 0x40, 0x3E, 0x3D,
+ 0x3C, 0x3B, 0x3A, 0x39, 0x38, 0x38
+};
+
+static const ByteProvider kLoLMonsterScaleYDOSCDProvider = { ARRAYSIZE(kLoLMonsterScaleYDOSCD), kLoLMonsterScaleYDOSCD };
+
+static const byte kLoLMonsterScaleXDOSCD[32] = {
+ 0x98, 0x98, 0x90, 0x88, 0x80, 0x76, 0x6E, 0x68,
+ 0x62, 0x5C, 0x58, 0x54, 0x50, 0x4A, 0x44, 0x40,
+ 0x3C, 0x38, 0x36, 0x32, 0x30, 0x2C, 0x2A, 0x28,
+ 0x26, 0x24, 0x22, 0x20, 0x20, 0x1E, 0x18, 0x10
+};
+
+static const ByteProvider kLoLMonsterScaleXDOSCDProvider = { ARRAYSIZE(kLoLMonsterScaleXDOSCD), kLoLMonsterScaleXDOSCD };
+
+static const uint16 kLoLMonsterScaleWHDOSCD[65] = {
+ 0x0041, 0x0045, 0x0049, 0x004D, 0x0051, 0x0055, 0x0059, 0x005D,
+ 0x0062, 0x0066, 0x006A, 0x006E, 0x0072, 0x0076, 0x007A, 0x007E,
+ 0x0082, 0x0086, 0x008A, 0x008E, 0x0092, 0x0096, 0x009A, 0x009E,
+ 0x00A3, 0x00A7, 0x00AB, 0x00AF, 0x00B3, 0x00B7, 0x00BB, 0x00BF,
+ 0x00C3, 0x00C7, 0x00CB, 0x00CF, 0x00D3, 0x00D7, 0x00DB, 0x00DF,
+ 0x00E4, 0x00E8, 0x00EC, 0x00F0, 0x00F4, 0x00F8, 0x00FC, 0x0100,
+ 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+ 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+ 0x0100
+};
+
+static const Uint16Provider kLoLMonsterScaleWHDOSCDProvider = { ARRAYSIZE(kLoLMonsterScaleWHDOSCD), kLoLMonsterScaleWHDOSCD };
+
+static const FlyingObjectShape kLoLFlyingObjectShpDOSCD[13] = {
+ { 0, 0, 1, 0x00, 0x40, },
+ { 2, 2, 3, 0x00, 0x00, },
+ { 4, 4, 4, 0x00, 0x00, },
+ { 5, 5, 5, 0x20, 0x00, },
+ { 6, 6, 6, 0x20, 0x00, },
+ { 7, 7, 7, 0x20, 0x00, },
+ { 9, 8, 15, 0x00, 0x00, },
+ { 11, 10, 12, 0x00, 0x00, },
+ { 12, 12, 12, 0x20, 0x00, },
+ { 14, 13, 15, 0x00, 0x00, },
+ { 16, 16, 16, 0x00, 0x00, },
+ { 17, 17, 17, 0x20, 0x00, },
+ { 18, 18, 18, 0x00, 0x00, }
+};
+
+static const FlyingObjectShapeProvider kLoLFlyingObjectShpDOSCDProvider = { ARRAYSIZE(kLoLFlyingObjectShpDOSCD), kLoLFlyingObjectShpDOSCD };
+
+static const uint16 kLoLInventoryDescDOSCD[11] = {
+ 0x417A, 0x417B, 0x417A, 0x417B, 0x417C, 0x417D, 0x417E, 0x417F,
+ 0x4180, 0x4181, 0x4181
+};
+
+static const Uint16Provider kLoLInventoryDescDOSCDProvider = { ARRAYSIZE(kLoLInventoryDescDOSCD), kLoLInventoryDescDOSCD };
+
+static const char *const kLoLLevelShpListDOSCD[12] = {
+ "KEEP.SHP",
+ "FOREST1.SHP",
+ "MANOR.SHP",
+ "CAVE1.SHP",
+ "SWAMP.SHP",
+ "URBISH.SHP",
+ "MINE1.SHP",
+ "TOWER1.SHP",
+ "YVEL1.SHP",
+ "CATWALK.SHP",
+ "RUIN.SHP",
+ "CIMMERIA.SHP"
+};
+
+static const StringListProvider kLoLLevelShpListDOSCDProvider = { ARRAYSIZE(kLoLLevelShpListDOSCD), kLoLLevelShpListDOSCD };
+
+static const char *const kLoLLevelDatListDOSCD[12] = {
+ "KEEP.DAT",
+ "FOREST1.DAT",
+ "MANOR.DAT",
+ "CAVE1.DAT",
+ "SWAMP.DAT",
+ "URBISH.DAT",
+ "MINE1.DAT",
+ "TOWER1.DAT",
+ "YVEL1.DAT",
+ "CATWALK.DAT",
+ "RUIN.DAT",
+ "CIMMERIA.DAT"
+};
+
+static const StringListProvider kLoLLevelDatListDOSCDProvider = { ARRAYSIZE(kLoLLevelDatListDOSCD), kLoLLevelDatListDOSCD };
+
+static const CompassDef kLoLCompassDefsDOSCD[32] = {
+ { 0, 3, -3, 0x00 },
+ { 1, 3, -3, 0x00 },
+ { 2, 3, -3, 0x00 },
+ { 3, 5, -3, 0x00 },
+ { 4, 5, -3, 0x00 },
+ { 5, 6, -3, 0x00 },
+ { 6, 6, -3, 0x00 },
+ { 7, 6, -3, 0x00 },
+ { 8, 6, -3, 0x00 },
+ { 7, 6, 4, 0x02 },
+ { 6, 6, 4, 0x02 },
+ { 5, 6, 4, 0x02 },
+ { 4, 5, 4, 0x02 },
+ { 3, 5, 4, 0x02 },
+ { 2, 3, 4, 0x02 },
+ { 1, 3, 4, 0x02 },
+ { 0, 3, 4, 0x02 },
+ { 1, 2, 4, 0x03 },
+ { 2, 2, 4, 0x03 },
+ { 3, 0, 4, 0x03 },
+ { 4, 0, 4, 0x03 },
+ { 5, -1, 4, 0x03 },
+ { 6, -1, 4, 0x03 },
+ { 7, -1, 4, 0x03 },
+ { 8, -1, -3, 0x01 },
+ { 7, -1, -3, 0x01 },
+ { 6, -1, -3, 0x01 },
+ { 5, -1, -3, 0x01 },
+ { 4, 0, -3, 0x01 },
+ { 3, 0, -3, 0x01 },
+ { 2, 2, -3, 0x01 },
+ { 1, 2, -3, 0x01 }
+};
+
+static const CompassDefProvider kLoLCompassDefsDOSCDProvider = { ARRAYSIZE(kLoLCompassDefsDOSCD), kLoLCompassDefsDOSCD };
+
+static const uint16 kLoLItemPricesDOSCD[46] = {
+ 0x0001, 0x0005, 0x0008, 0x000A, 0x000F, 0x0014, 0x0019, 0x001E,
+ 0x0023, 0x0028, 0x002D, 0x0032, 0x0037, 0x003C, 0x0041, 0x0046,
+ 0x004B, 0x0050, 0x005A, 0x0064, 0x0069, 0x0078, 0x007D, 0x0082,
+ 0x008C, 0x0096, 0x00A0, 0x00AF, 0x00C8, 0x00E1, 0x00FA, 0x0113,
+ 0x012C, 0x0145, 0x015E, 0x0177, 0x0190, 0x01A9, 0x01C2, 0x01DB,
+ 0x01F4, 0x0230, 0x03E8, 0x05DC, 0x0BB8, 0x0000
+};
+
+static const Uint16Provider kLoLItemPricesDOSCDProvider = { ARRAYSIZE(kLoLItemPricesDOSCD), kLoLItemPricesDOSCD };
+
+static const byte kLoLStashSetupDOSCD[12] = {
+ 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x03,
+ 0x03, 0x00, 0x01, 0x01
+};
+
+static const ByteProvider kLoLStashSetupDOSCDProvider = { ARRAYSIZE(kLoLStashSetupDOSCD), kLoLStashSetupDOSCD };
+
+static const byte kLoLDscWallsDOSCD[36] = {
+ 0xFF, 0xFF, 0x02, 0x01, 0x02, 0x01, 0x02, 0xFF,
+ 0x02, 0x03, 0x02, 0x03, 0xFF, 0xFF, 0x02, 0x01,
+ 0x02, 0x01, 0x02, 0xFF, 0x02, 0x03, 0x02, 0x03,
+ 0x02, 0x01, 0x02, 0xFF, 0x02, 0x03, 0xFF, 0x01,
+ 0x02, 0xFF, 0xFF, 0x03
+};
+
+static const ByteProvider kLoLDscWallsDOSCDProvider = { ARRAYSIZE(kLoLDscWallsDOSCD), kLoLDscWallsDOSCD };
+
+static const byte kLoLDscShapeIndexDOSCD[36] = {
+ 0x03, 0x09, 0x03, 0x08, 0x03, 0x07, 0x03, 0x03,
+ 0x03, 0xF9, 0x03, 0xF8, 0x03, 0xF7, 0x02, 0x09,
+ 0x02, 0x06, 0x02, 0x02, 0x02, 0xFA, 0x02, 0xF7,
+ 0x01, 0x05, 0x01, 0x01, 0x01, 0xFB, 0x00, 0x04,
+ 0x00, 0x00, 0x00, 0xFC
+};
+
+static const ByteProvider kLoLDscShapeIndexDOSCDProvider = { ARRAYSIZE(kLoLDscShapeIndexDOSCD), kLoLDscShapeIndexDOSCD };
+
+static const byte kLoLDscOvlMapDOSCD[10] = {
+ 0x00, 0x01, 0x01, 0x01, 0x04, 0x05, 0x05, 0x05,
+ 0x05, 0x04
+};
+
+static const ByteProvider kLoLDscOvlMapDOSCDProvider = { ARRAYSIZE(kLoLDscOvlMapDOSCD), kLoLDscOvlMapDOSCD };
+
+static const uint16 kLoLDscScaleWidthDataDOSCD[36] = {
+ 0x0060, 0x0000, 0x0060, 0x00CE, 0x0060, 0x0055, 0x0060, 0x0000,
+ 0x0060, 0x0055, 0x0060, 0x00CE, 0x0060, 0x0000, 0x00A0, 0x00AE,
+ 0x00A0, 0x00AA, 0x00A0, 0x0000, 0x00A0, 0x00AA, 0x00A0, 0x00AE,
+ 0x0100, 0x0100, 0x0100, 0x0000, 0x0100, 0x0100, 0x0000, 0x0100,
+ 0x0100, 0x0000, 0x0000, 0x0100
+};
+
+static const Uint16Provider kLoLDscScaleWidthDataDOSCDProvider = { ARRAYSIZE(kLoLDscScaleWidthDataDOSCD), kLoLDscScaleWidthDataDOSCD };
+
+static const uint16 kLoLDscScaleHeightDataDOSCD[36] = {
+ 0x006A, 0x0000, 0x006A, 0x006A, 0x006A, 0x006A, 0x006A, 0x0000,
+ 0x006A, 0x006A, 0x006A, 0x006A, 0x006A, 0x0000, 0x00AA, 0x0056,
+ 0x00AA, 0x00AA, 0x00AA, 0x0000, 0x00AA, 0x00AA, 0x00AA, 0x0056,
+ 0x0100, 0x0100, 0x0100, 0x0000, 0x0100, 0x0100, 0x0000, 0x0100,
+ 0x0100, 0x0000, 0x0000, 0x0100
+};
+
+static const Uint16Provider kLoLDscScaleHeightDataDOSCDProvider = { ARRAYSIZE(kLoLDscScaleHeightDataDOSCD), kLoLDscScaleHeightDataDOSCD };
+
+static const uint16 kLoLDscXDOSCD[36] = {
+ 0xFFB0, 0xFFE0, 0xFFE0, 0x0010, 0x0010, 0x0040, 0x0040, 0x0000,
+ 0x0070, 0x0070, 0x00A0, 0x00A0, 0x00D0, 0x00D0, 0xFF86, 0x0000,
+ 0xFFE0, 0x0030, 0x0030, 0x0000, 0x0080, 0x0080, 0x00D0, 0x00B0,
+ 0xFF98, 0x0018, 0x0018, 0x0000, 0x0098, 0x0098, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x00B0, 0x00B0
+};
+
+static const Uint16Provider kLoLDscXDOSCDProvider = { ARRAYSIZE(kLoLDscXDOSCD), kLoLDscXDOSCD };
+
+static const byte kLoLBaseDscYDOSCD[36] = {
+ 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B,
+ 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x14, 0x1C,
+ 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x1C,
+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00
+};
+
+static const ByteProvider kLoLBaseDscYDOSCDProvider = { ARRAYSIZE(kLoLBaseDscYDOSCD), kLoLBaseDscYDOSCD };
+
+static const byte kLoLDscTileIndexDOSCD[18] = {
+ 0x00, 0x06, 0x01, 0x05, 0x02, 0x04, 0x03, 0x07,
+ 0x0B, 0x08, 0x0A, 0x09, 0x0C, 0x0E, 0x0D, 0x0F,
+ 0x11, 0x10
+};
+
+static const ByteProvider kLoLDscTileIndexDOSCDProvider = { ARRAYSIZE(kLoLDscTileIndexDOSCD), kLoLDscTileIndexDOSCD };
+
+static const byte kLoLDscUnk2DOSCD[23] = {
+ 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03,
+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x12, 0x12, 0x12, 0x12, 0x12
+};
+
+static const ByteProvider kLoLDscUnk2DOSCDProvider = { ARRAYSIZE(kLoLDscUnk2DOSCD), kLoLDscUnk2DOSCD };
+
+static const byte kLoLDscDoorShapeIndexDOSCD[23] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01
+};
+
+static const ByteProvider kLoLDscDoorShapeIndexDOSCDProvider = { ARRAYSIZE(kLoLDscDoorShapeIndexDOSCD), kLoLDscDoorShapeIndexDOSCD };
+
+static const byte kLoLDscDimData1DOSCD[324] = {
+ 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7,
+ 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7,
+ 0xD8, 0xD7, 0xD8, 0xD8, 0x02, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xFE, 0xD7, 0xD8, 0xD8, 0xD8, 0xD7, 0x03,
+ 0xD8, 0xFD, 0xD8, 0xD8, 0xD8, 0xFE, 0xD8, 0x08,
+ 0xD8, 0xD8, 0xD8, 0xFE, 0xF8, 0x06, 0xD8, 0xD8,
+ 0xFA, 0x03, 0xD8, 0xFD, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xFA, 0xD7,
+ 0x10, 0xD8, 0xFA, 0xD7, 0x10, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xF2, 0xD8, 0x14, 0xD8, 0xD8,
+ 0xD8, 0xF0, 0x0E, 0x14, 0xD8, 0xED, 0x10, 0xD8,
+ 0xD8, 0x13, 0xD8, 0xD8, 0xD8, 0xD8, 0xEC, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD7, 0x14, 0xD8, 0xED,
+ 0xD7, 0xD8, 0xD8, 0x13, 0xD7, 0xD7, 0xD7, 0xD7,
+ 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7,
+ 0xD7, 0xD7, 0xD7, 0xD7, 0xD8, 0xD7, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD7, 0xD8,
+ 0xD8, 0xD8, 0xD7, 0xD8, 0xD8, 0xD7, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0x06, 0xD8, 0xD8, 0xFA, 0x03, 0xD8, 0xFD,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xFA, 0xD8, 0x10, 0xD8, 0xFA, 0xD7,
+ 0x10, 0xFD, 0xD8, 0x13, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xF0, 0xD8, 0xD8,
+ 0xD8, 0xED, 0x10, 0xD8, 0xD8, 0x13, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD7, 0xD8, 0xD8, 0xD8, 0xD7, 0xD8, 0xD8, 0xD7,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0x03, 0xD8, 0xFD,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xFD, 0xD8,
+ 0x13, 0xFD, 0xD8, 0x13, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xED, 0xD8, 0xD8, 0xD8, 0x13, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8
+};
+
+static const ByteProvider kLoLDscDimData1DOSCDProvider = { ARRAYSIZE(kLoLDscDimData1DOSCD), kLoLDscDimData1DOSCD };
+
+static const byte kLoLDscDimData2DOSCD[648] = {
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x00, 0x16, 0x16, 0x00, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x02, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x02, 0x16, 0x00, 0x04, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x16, 0x00, 0x00, 0x03,
+ 0x00, 0x16, 0x03, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x02, 0x16, 0x00, 0x16, 0x00, 0x08,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x02,
+ 0x16, 0x00, 0x00, 0x06, 0x00, 0x16, 0x00, 0x16,
+ 0x06, 0x16, 0x00, 0x03, 0x00, 0x16, 0x03, 0x00,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x06, 0x16, 0x08, 0x0E,
+ 0x00, 0x10, 0x00, 0x16, 0x03, 0x16, 0x06, 0x10,
+ 0x00, 0x13, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x0E, 0x16,
+ 0x00, 0x16, 0x00, 0x14, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x10, 0x16, 0x16, 0x00, 0x00, 0x14,
+ 0x00, 0x16, 0x13, 0x16, 0x00, 0x10, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x13, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x14, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x12, 0x16, 0x14, 0x16, 0x00, 0x16, 0x13, 0x16,
+ 0x16, 0x00, 0x00, 0x16, 0x00, 0x16, 0x00, 0x13,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x00, 0x16, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x00, 0x16, 0x16, 0x00,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x06, 0x00, 0x16, 0x00, 0x16,
+ 0x06, 0x16, 0x00, 0x03, 0x00, 0x16, 0x03, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x06, 0x16, 0x00, 0x16,
+ 0x00, 0x10, 0x00, 0x16, 0x03, 0x16, 0x07, 0x0F,
+ 0x00, 0x13, 0x03, 0x16, 0x00, 0x16, 0x00, 0x13,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x10, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x13, 0x16, 0x00, 0x10, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x13, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x00, 0x16, 0x16, 0x00,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x03, 0x00, 0x16, 0x03, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x03, 0x16, 0x00, 0x16,
+ 0x00, 0x13, 0x03, 0x16, 0x00, 0x16, 0x00, 0x13,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x13, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x13, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16
+};
+
+static const ByteProvider kLoLDscDimData2DOSCDProvider = { ARRAYSIZE(kLoLDscDimData2DOSCD), kLoLDscDimData2DOSCD };
+
+static const byte kLoLDscBlockMapDOSCD[12] = {
+ 0x02, 0x03, 0x00, 0x01, 0x01, 0x02, 0x03, 0x00,
+ 0x03, 0x00, 0x01, 0x02
+};
+
+static const ByteProvider kLoLDscBlockMapDOSCDProvider = { ARRAYSIZE(kLoLDscBlockMapDOSCD), kLoLDscBlockMapDOSCD };
+
+static const byte kLoLDscDimMapDOSCD[18] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x03,
+ 0x03, 0x03
+};
+
+static const ByteProvider kLoLDscDimMapDOSCDProvider = { ARRAYSIZE(kLoLDscDimMapDOSCD), kLoLDscDimMapDOSCD };
+
+static const byte kLoLDscOvlIndexDOSCD[20] = {
+ 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02, 0x03,
+ 0x03, 0x03, 0x04, 0x04, 0x05, 0x05, 0x05, 0x06,
+ 0x06, 0x07, 0x07, 0x07
+};
+
+static const ByteProvider kLoLDscOvlIndexDOSCDProvider = { ARRAYSIZE(kLoLDscOvlIndexDOSCD), kLoLDscOvlIndexDOSCD };
+
+static const byte kLoLDscBlockIndexDOSCD[72] = {
+ 0x9D, 0x9E, 0x9F, 0xA0, 0xA1, 0xA2, 0xA3, 0xBE,
+ 0xBF, 0xC0, 0xC1, 0xC2, 0xDF, 0xE0, 0xE1, 0xFF,
+ 0x00, 0x01, 0xA3, 0xC3, 0xE3, 0x03, 0x23, 0x43,
+ 0x63, 0xC2, 0xE2, 0x02, 0x22, 0x42, 0xE1, 0x01,
+ 0x21, 0xE0, 0x00, 0x20, 0x63, 0x62, 0x61, 0x60,
+ 0x5F, 0x5E, 0x5D, 0x42, 0x41, 0x40, 0x3F, 0x3E,
+ 0x21, 0x20, 0x1F, 0x01, 0x00, 0xFF, 0x5D, 0x3D,
+ 0x1D, 0xFD, 0xDD, 0xBD, 0x9D, 0x3E, 0x1E, 0xFE,
+ 0xDE, 0xBE, 0x1F, 0xFF, 0xDF, 0x20, 0x00, 0xE0
+};
+
+static const ByteProvider kLoLDscBlockIndexDOSCDProvider = { ARRAYSIZE(kLoLDscBlockIndexDOSCD), kLoLDscBlockIndexDOSCD };
+
+static const byte kLoLDscDoorY2DOSCD[128] = {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x0D, 0x08, 0x03, 0x12, 0x0E, 0x09, 0x04, 0x00,
+ 0x13, 0x0F, 0x0A, 0x05, 0x01, 0x14, 0x10, 0x0B,
+ 0x06, 0x02, 0x11, 0x0C, 0x07, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x14, 0x13, 0x12, 0x11, 0x10, 0x0F, 0x0E, 0x0D,
+ 0x0C, 0x0B, 0x0A, 0x09, 0x08, 0x07, 0x06, 0x05,
+ 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x07, 0x0C, 0x11, 0x02, 0x06, 0x0B, 0x10, 0x14,
+ 0x01, 0x05, 0x0A, 0x0F, 0x13, 0x00, 0x04, 0x09,
+ 0x0E, 0x12, 0x03, 0x08, 0x0D, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const ByteProvider kLoLDscDoorY2DOSCDProvider = { ARRAYSIZE(kLoLDscDoorY2DOSCD), kLoLDscDoorY2DOSCD };
+
+static const byte kLoLDscDoorFrameY1DOSCD[4] = {
+ 0x1E, 0x18, 0x10, 0x00
+};
+
+static const ByteProvider kLoLDscDoorFrameY1DOSCDProvider = { ARRAYSIZE(kLoLDscDoorFrameY1DOSCD), kLoLDscDoorFrameY1DOSCD };
+
+static const byte kLoLDscDoorFrameY2DOSCD[4] = {
+ 0x3B, 0x47, 0x56, 0x78
+};
+
+static const ByteProvider kLoLDscDoorFrameY2DOSCDProvider = { ARRAYSIZE(kLoLDscDoorFrameY2DOSCD), kLoLDscDoorFrameY2DOSCD };
+
+static const uint16 kLoLDscDoorScaleDOSCD[8] = {
+ 0x0075, 0x006A, 0x00B9, 0x00B2, 0x0100, 0x0100, 0x0000, 0x0000
+};
+
+static const Uint16Provider kLoLDscDoorScaleDOSCDProvider = { ARRAYSIZE(kLoLDscDoorScaleDOSCD), kLoLDscDoorScaleDOSCD };
+
+static const uint16 kLoLDscDoor4DOSCD[4] = {
+ 0x0005, 0x0002, 0x0008, 0x787C
+};
+
+static const Uint16Provider kLoLDscDoor4DOSCDProvider = { ARRAYSIZE(kLoLDscDoor4DOSCD), kLoLDscDoor4DOSCD };
+
+static const uint16 kLoLDscDoorXDOSCD[576] = {
+ 0xFF98, 0xFFA0, 0xFFA8, 0xFF90, 0xFF98, 0xFFA0, 0xFFA8, 0xFFB0,
+ 0xFF74, 0xFF7E, 0xFF88, 0xFF92, 0xFF9C, 0xFF74, 0xFF7E, 0xFF88,
+ 0xFF92, 0xFF9C, 0xFF64, 0xFF70, 0xFF7C, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFB8, 0xFFC0, 0xFFC8, 0xFFB0, 0xFFB8, 0xFFC0, 0xFFC8, 0xFFD0,
+ 0xFF9C, 0xFFA6, 0xFFB0, 0xFFBA, 0xFFC4, 0xFF9C, 0xFFA6, 0xFFB0,
+ 0xFFBA, 0xFFC4, 0xFF94, 0xFFA0, 0xFFAC, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFD8, 0xFFE0, 0xFFE8, 0xFFD0, 0xFFD8, 0xFFE0, 0xFFE8, 0xFFF0,
+ 0xFFC4, 0xFFCE, 0xFFD8, 0xFFE2, 0xFFEC, 0xFFC4, 0xFFCE, 0xFFD8,
+ 0xFFE2, 0xFFEC, 0xFFC4, 0xFFD0, 0xFFDC, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFF8, 0x0000, 0x0008, 0xFFF0, 0xFFF8, 0x0000, 0x0008, 0x0010,
+ 0xFFEC, 0xFFF6, 0x0000, 0x000A, 0x0014, 0xFFEC, 0xFFF6, 0x0000,
+ 0x000A, 0x0014, 0xFFF4, 0x0000, 0x000C, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0018, 0x0020, 0x0028, 0x0010, 0x0018, 0x0020, 0x0028, 0x0030,
+ 0x0014, 0x001E, 0x0028, 0x0032, 0x003C, 0x0014, 0x001E, 0x0028,
+ 0x0032, 0x003C, 0x0024, 0x0030, 0x003C, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0038, 0x0040, 0x0048, 0x0030, 0x0038, 0x0040, 0x0048, 0x0050,
+ 0x003C, 0x0046, 0x0050, 0x005A, 0x0064, 0x003C, 0x0046, 0x0050,
+ 0x005A, 0x0064, 0x0054, 0x0060, 0x006C, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0058, 0x0060, 0x0068, 0x0050, 0x0058, 0x0060, 0x0068, 0x0070,
+ 0x0064, 0x006E, 0x0078, 0x0082, 0x008C, 0x0064, 0x006E, 0x0078,
+ 0x0082, 0x008C, 0x0084, 0x0090, 0x009C, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFF94, 0xFFA0, 0xFFAC, 0xFF7E, 0xFF8B, 0xFF98, 0xFFA5, 0xFFB2,
+ 0xFF6C, 0xFF7B, 0xFF8A, 0xFF99, 0xFFA7, 0xFF60, 0xFF70, 0xFF80,
+ 0xFF90, 0xFFA0, 0xFF4C, 0xFF60, 0xFF74, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFC4, 0xFFD0, 0xFFDC, 0xFFB2, 0xFFBF, 0xFFCC, 0xFFD9, 0xFFE6,
+ 0xFFA7, 0xFFB6, 0xFFC5, 0xFFD4, 0xFFE2, 0xFFA0, 0xFFB0, 0xFFC0,
+ 0xFFD0, 0xFFE0, 0xFF9C, 0xFFB0, 0xFFC4, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFF4, 0x0000, 0x000C, 0xFFE6, 0xFFF3, 0x0000, 0x000D, 0x001A,
+ 0xFFE2, 0xFFF1, 0x0000, 0x000F, 0x001E, 0xFFE0, 0xFFF0, 0x0000,
+ 0x0010, 0x0020, 0xFFEC, 0x0000, 0x0014, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0024, 0x0030, 0x003C, 0x001A, 0x0027, 0x0034, 0x0041, 0x004E,
+ 0x001E, 0x002C, 0x003B, 0x004A, 0x0059, 0x0020, 0x0030, 0x0040,
+ 0x0050, 0x0060, 0x003C, 0x0050, 0x0064, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0054, 0x0060, 0x006C, 0x004E, 0x005B, 0x0068, 0x0075, 0x0082,
+ 0x0059, 0x0067, 0x0076, 0x0085, 0x0094, 0x0060, 0x0070, 0x0080,
+ 0x0090, 0x00A0, 0x008C, 0x00A0, 0x00B4, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFF9C, 0xFFB0, 0xFFC4, 0xFF7C, 0xFF92, 0xFFA8, 0xFFBE, 0xFFD4,
+ 0xFF6D, 0xFF85, 0xFF9E, 0xFFB6, 0xFFCF, 0xFF5E, 0xFF79, 0xFF94,
+ 0xFFAF, 0xFFCA, 0xFF60, 0xFF80, 0xFFA0, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFEC, 0x0000, 0x0014, 0xFFD4, 0xFFEA, 0x0000, 0x0016, 0x002C,
+ 0xFFCF, 0xFFE7, 0x0000, 0x0019, 0x0031, 0xFFCA, 0xFFE5, 0x0000,
+ 0x001B, 0x0036, 0xFFE0, 0x0000, 0x0020, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x003C, 0x0050, 0x0064, 0x002C, 0x0042, 0x0058, 0x006E, 0x0084,
+ 0x0031, 0x004A, 0x0062, 0x007B, 0x0093, 0x0036, 0x0051, 0x006C,
+ 0x0087, 0x00A2, 0x0060, 0x0080, 0x00A0, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFF60, 0xFF80, 0xFFA0, 0xFF1C, 0xFF42, 0xFF68, 0xFF8E, 0xFFB4,
+ 0xFF40, 0xFF60, 0xFF80, 0xFFA0, 0xFFC0, 0xFF1C, 0xFF42, 0xFF68,
+ 0xFF8E, 0xFFB4, 0xFF60, 0xFF80, 0xFFA0, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFE0, 0x0000, 0x0020, 0xFFB4, 0xFFDA, 0x0000, 0x0026, 0x004C,
+ 0xFFC0, 0xFFE0, 0x0000, 0x0020, 0x0040, 0xFFB4, 0xFFDA, 0x0000,
+ 0x0026, 0x004C, 0xFFE0, 0x0000, 0x0020, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0060, 0x0080, 0x00A0, 0x004C, 0x0072, 0x0098, 0x00BE, 0x00E4,
+ 0x0040, 0x0060, 0x0080, 0x00A0, 0x00C0, 0x004C, 0x0072, 0x0098,
+ 0x00BE, 0x00E4, 0x0060, 0x0080, 0x00A0, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
+};
+
+static const Uint16Provider kLoLDscDoorXDOSCDProvider = { ARRAYSIZE(kLoLDscDoorXDOSCD), kLoLDscDoorXDOSCD };
+
+static const uint16 kLoLDscDoorYDOSCD[576] = {
+ 0xFFBF, 0xFFBF, 0xFFBF, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1,
+ 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC5, 0xFFC5, 0xFFC5,
+ 0xFFC5, 0xFFC5, 0xFFC9, 0xFFC9, 0xFFC9, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFBF, 0xFFBF, 0xFFBF, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1,
+ 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC5, 0xFFC5, 0xFFC5,
+ 0xFFC5, 0xFFC5, 0xFFC9, 0xFFC9, 0xFFC9, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFBF, 0xFFBF, 0xFFBF, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1,
+ 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC5, 0xFFC5, 0xFFC5,
+ 0xFFC5, 0xFFC5, 0xFFC9, 0xFFC9, 0xFFC9, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFBF, 0xFFBF, 0xFFBF, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1,
+ 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC5, 0xFFC5, 0xFFC5,
+ 0xFFC5, 0xFFC5, 0xFFC9, 0xFFC9, 0xFFC9, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFBF, 0xFFBF, 0xFFBF, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1,
+ 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC5, 0xFFC5, 0xFFC5,
+ 0xFFC5, 0xFFC5, 0xFFC9, 0xFFC9, 0xFFC9, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFBF, 0xFFBF, 0xFFBF, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1,
+ 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC5, 0xFFC5, 0xFFC5,
+ 0xFFC5, 0xFFC5, 0xFFC9, 0xFFC9, 0xFFC9, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFBF, 0xFFBF, 0xFFBF, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1,
+ 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC5, 0xFFC5, 0xFFC5,
+ 0xFFC5, 0xFFC5, 0xFFC9, 0xFFC9, 0xFFC9, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFC9, 0xFFC9, 0xFFC9, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB,
+ 0xFFCE, 0xFFCE, 0xFFCE, 0xFFCE, 0xFFCE, 0xFFD3, 0xFFD3, 0xFFD3,
+ 0xFFD3, 0xFFD3, 0xFFD7, 0xFFD7, 0xFFD7, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFC9, 0xFFC9, 0xFFC9, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB,
+ 0xFFCE, 0xFFCE, 0xFFCE, 0xFFCE, 0xFFCE, 0xFFD3, 0xFFD3, 0xFFD3,
+ 0xFFD3, 0xFFD3, 0xFFD7, 0xFFD7, 0xFFD7, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFC9, 0xFFC9, 0xFFC9, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB,
+ 0xFFCE, 0xFFCE, 0xFFCE, 0xFFCE, 0xFFCE, 0xFFD3, 0xFFD3, 0xFFD3,
+ 0xFFD3, 0xFFD3, 0xFFD7, 0xFFD7, 0xFFD7, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFC9, 0xFFC9, 0xFFC9, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB,
+ 0xFFCE, 0xFFCE, 0xFFCE, 0xFFCE, 0xFFCE, 0xFFD3, 0xFFD3, 0xFFD3,
+ 0xFFD3, 0xFFD3, 0xFFD7, 0xFFD7, 0xFFD7, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFC9, 0xFFC9, 0xFFC9, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB,
+ 0xFFCE, 0xFFCE, 0xFFCE, 0xFFCE, 0xFFCE, 0xFFD3, 0xFFD3, 0xFFD3,
+ 0xFFD3, 0xFFD3, 0xFFD7, 0xFFD7, 0xFFD7, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFD7, 0xFFD7, 0xFFD7, 0xFFDD, 0xFFDD, 0xFFDD, 0xFFDD, 0xFFDD,
+ 0xFFE2, 0xFFE2, 0xFFE2, 0xFFE2, 0xFFE2, 0xFFEA, 0xFFEA, 0xFFEA,
+ 0xFFEA, 0xFFEA, 0xFFF8, 0xFFF8, 0xFFF8, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFD7, 0xFFD7, 0xFFD7, 0xFFDD, 0xFFDD, 0xFFDD, 0xFFDD, 0xFFDD,
+ 0xFFE2, 0xFFE2, 0xFFE2, 0xFFE2, 0xFFE2, 0xFFEA, 0xFFEA, 0xFFEA,
+ 0xFFEA, 0xFFEA, 0xFFF8, 0xFFF8, 0xFFF8, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFD7, 0xFFD7, 0xFFD7, 0xFFDD, 0xFFDD, 0xFFDD, 0xFFDD, 0xFFDD,
+ 0xFFE2, 0xFFE2, 0xFFE2, 0xFFE2, 0xFFE2, 0xFFEA, 0xFFEA, 0xFFEA,
+ 0xFFEA, 0xFFEA, 0xFFF8, 0xFFF8, 0xFFF8, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFF8, 0xFFF8, 0xFFF8, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFF8, 0xFFF8, 0xFFF8, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFF8, 0xFFF8, 0xFFF8, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
+};
+
+static const Uint16Provider kLoLDscDoorYDOSCDProvider = { ARRAYSIZE(kLoLDscDoorYDOSCD), kLoLDscDoorYDOSCD };
+
+static const byte kLoLScrollXTopDOSCD[5] = {
+ 0x05, 0x0A, 0x0F, 0x14, 0x19
+};
+
+static const ByteProvider kLoLScrollXTopDOSCDProvider = { ARRAYSIZE(kLoLScrollXTopDOSCD), kLoLScrollXTopDOSCD };
+
+static const byte kLoLScrollYTopDOSCD[5] = {
+ 0x02, 0x04, 0x07, 0x09, 0x0C
+};
+
+static const ByteProvider kLoLScrollYTopDOSCDProvider = { ARRAYSIZE(kLoLScrollYTopDOSCD), kLoLScrollYTopDOSCD };
+
+static const byte kLoLScrollXBottomDOSCD[5] = {
+ 0x05, 0x0A, 0x0F, 0x14, 0x19
+};
+
+static const ByteProvider kLoLScrollXBottomDOSCDProvider = { ARRAYSIZE(kLoLScrollXBottomDOSCD), kLoLScrollXBottomDOSCD };
+
+static const byte kLoLScrollYBottomDOSCD[5] = {
+ 0x04, 0x08, 0x0C, 0x10, 0x14
+};
+
+static const ByteProvider kLoLScrollYBottomDOSCDProvider = { ARRAYSIZE(kLoLScrollYBottomDOSCD), kLoLScrollYBottomDOSCD };
+
+static const LoLButtonDef kLoLButtonDefsDOSCD[95] = {
+ { 0x1100, 96, 352, 33, 131, 22, 19, 0x0000, 0 },
+ { 0x1100, 97, 353, 33, 150, 22, 18, 0x0000, 0 },
+ { 0x1100, 98, 354, 33, 150, 22, 18, 0x0000, 0 },
+ { 0x1100, 92, 348, 11, 150, 22, 18, 0x0000, 0 },
+ { 0x1100, 102, 358, 53, 150, 22, 18, 0x0000, 0 },
+ { 0x1100, 91, 347, 11, 131, 22, 19, 0x0000, 0 },
+ { 0x1100, 101, 357, 53, 131, 22, 19, 0x0000, 0 },
+ { 0x0100, 112, 0, 80, 143, 22, 17, 0x0000, 0 },
+ { 0x0100, 113, 0, 80, 143, 22, 17, 0x0001, 0 },
+ { 0x0100, 114, 0, 80, 143, 22, 17, 0x0002, 0 },
+ { 0x0100, 115, 0, 80, 143, 22, 17, 0x0003, 0 },
+ { 0x1100, 0, 0, 80, 160, 22, 17, 0x0000, 0 },
+ { 0x1100, 0, 0, 80, 160, 22, 17, 0x0001, 0 },
+ { 0x1100, 0, 0, 80, 160, 22, 17, 0x0002, 0 },
+ { 0x1100, 0, 0, 80, 160, 22, 17, 0x0003, 0 },
+ { 0x1100, 0, 0, 80, 144, 22, 32, 0x0000, 0 },
+ { 0x1100, 110, 0, 0, 0, 320, 200, 0x0003, 0 },
+ { 0x0100, 0, 0, 80, 143, 33, 34, 0x0000, 0 },
+ { 0x0100, 0, 0, 80, 143, 33, 34, 0x0001, 0 },
+ { 0x0100, 0, 0, 80, 143, 33, 34, 0x0002, 0 },
+ { 0x0100, 0, 0, 80, 143, 33, 34, 0x0003, 0 },
+ { 0x0100, 0, 0, 80, 143, 66, 34, 0x0000, 0 },
+ { 0x0100, 0, 0, 80, 143, 66, 34, 0x0001, 0 },
+ { 0x0100, 0, 0, 80, 143, 66, 34, 0x0002, 0 },
+ { 0x0100, 0, 0, 80, 143, 66, 34, 0x0003, 0 },
+ { 0x0100, 0, 0, 80, 143, 12, 34, 0x0000, 0 },
+ { 0x0100, 0, 0, 80, 143, 12, 34, 0x0001, 0 },
+ { 0x0100, 0, 0, 80, 143, 12, 34, 0x0002, 0 },
+ { 0x0100, 0, 0, 80, 143, 12, 34, 0x0003, 0 },
+ { 0x1000, 0, 0, 80, 143, 66, 34, 0x0000, 0 },
+ { 0x1000, 0, 0, 80, 143, 66, 34, 0x0001, 0 },
+ { 0x1000, 0, 0, 80, 143, 66, 34, 0x0002, 0 },
+ { 0x1000, 0, 0, 80, 143, 66, 34, 0x0003, 0 },
+ { 0x1100, 0, 0, 0, 0, 20, 19, 0x0000, 2 },
+ { 0x1100, 0, 0, 0, 0, 20, 19, 0x0001, 2 },
+ { 0x1100, 0, 0, 0, 0, 20, 19, 0x0002, 2 },
+ { 0x1100, 0, 0, 0, 0, 20, 19, 0x0003, 2 },
+ { 0x1100, 0, 0, 0, 0, 20, 19, 0x0004, 2 },
+ { 0x1100, 0, 0, 0, 0, 20, 19, 0x0005, 2 },
+ { 0x1100, 0, 0, 0, 0, 20, 19, 0x0006, 2 },
+ { 0x1100, 0, 0, 0, 0, 20, 19, 0x0007, 2 },
+ { 0x1100, 0, 0, 0, 0, 20, 19, 0x0008, 2 },
+ { 0x1100, 0, 0, 0, 0, 12, 11, 0x0009, 2 },
+ { 0x1100, 0, 0, 0, 0, 12, 11, 0x000A, 2 },
+ { 0x1100, 110, 0, 160, 93, 43, 19, 0x0000, 2 },
+ { 0x1100, 0, 0, 0, 102, 88, 19, 0x0000, 2 },
+ { 0x1100, 0, 0, 88, 102, 88, 19, 0x0001, 2 },
+ { 0x1100, 0, 0, 0, 85, 88, 17, 0x0002, 2 },
+ { 0x1100, 0, 0, 88, 85, 88, 17, 0x0003, 2 },
+ { 0x1100, 0, 0, 0, 0, 176, 120, 0x0000, 2 },
+ { 0x1100, 0, 0, 106, 179, 21, 21, 0x0000, 0 },
+ { 0x1100, 0, 0, 127, 179, 21, 21, 0x0001, 0 },
+ { 0x1100, 0, 0, 148, 179, 21, 21, 0x0002, 0 },
+ { 0x1100, 0, 0, 169, 179, 21, 21, 0x0003, 0 },
+ { 0x1100, 0, 0, 190, 179, 21, 21, 0x0004, 0 },
+ { 0x1100, 0, 0, 211, 179, 21, 21, 0x0005, 0 },
+ { 0x1100, 0, 0, 232, 179, 21, 21, 0x0006, 0 },
+ { 0x1100, 0, 0, 253, 179, 21, 21, 0x0007, 0 },
+ { 0x1100, 0, 0, 274, 179, 21, 21, 0x0008, 0 },
+ { 0x1100, 0, 0, 274, 179, 21, 21, 0x0009, 0 },
+ { 0x1100, 0, 0, 85, 179, 21, 21, 0xFFFF, 0 },
+ { 0x1100, 0, 0, 295, 179, 22, 21, 0x0001, 0 },
+ { 0x1100, 0, 0, 24, 8, 128, 96, 0x0001, 2 },
+ { 0x1100, 0, 0, 0, 0, 176, 120, 0x0000, 2 },
+ { 0x1100, 0, 0, 0, 0, 0, 0, 0x0000, 0 },
+ { 0x1100, 0, 0, 112, 0, 176, 16, 0x0001, 0 },
+ { 0x1100, 0, 0, 112, 110, 176, 26, 0x0001, 0 },
+ { 0x1100, 0, 0, 96, 88, 32, 32, 0x0001, 0 },
+ { 0x1100, 0, 0, 272, 88, 32, 32, 0x0001, 0 },
+ { 0x1100, 0, 0, 96, 16, 32, 72, 0x0001, 0 },
+ { 0x1100, 0, 0, 272, 16, 32, 72, 0x0001, 0 },
+ { 0x1100, 0, 0, 24, 15, 61, 9, 0x0000, 0 },
+ { 0x1100, 0, 0, 24, 24, 61, 9, 0x0000, 0 },
+ { 0x1100, 0, 0, 24, 33, 61, 9, 0x0000, 0 },
+ { 0x1100, 0, 0, 24, 42, 61, 9, 0x0000, 0 },
+ { 0x1100, 0, 0, 24, 51, 61, 9, 0x0000, 0 },
+ { 0x1100, 0, 0, 24, 60, 61, 9, 0x0000, 0 },
+ { 0x1100, 0, 0, 24, 69, 61, 9, 0x0000, 0 },
+ { 0x1100, 0, 0, 24, 78, 61, 9, 0x0000, 0 },
+ { 0x1100, 0, 0, 24, 87, 61, 9, 0x0000, 0 },
+ { 0x1100, 0, 0, 24, 96, 61, 9, 0x0000, 0 },
+ { 0x0100, 0, 0, 80, 143, 66, 34, 0x0000, 0 },
+ { 0x0100, 0, 0, 80, 143, 66, 34, 0x0001, 0 },
+ { 0x0100, 0, 0, 80, 143, 66, 34, 0x0002, 0 },
+ { 0x0100, 0, 0, 80, 143, 66, 34, 0x0003, 0 },
+ { 0x1100, 110, 0, 0, 0, 320, 200, 0x0003, 0 },
+ { 0x0100, 0, 0, 112, 0, 88, 80, 0x0000, 0 },
+ { 0x0100, 0, 0, 200, 0, 88, 80, 0x0001, 0 },
+ { 0x1100, 25, 110, 11, 178, 21, 22, 0x0000, 0 },
+ { 0x0100, 20, 0, 32, 178, 22, 22, 0x0000, 0 },
+ { 0x0100, 0, 0, 291, 96, 27, 24, 0x0000, 0 },
+ { 0x0100, 0, 0, 289, 0, 31, 28, 0x0000, 0 },
+ { 0x0100, 0, 0, 289, 31, 31, 23, 0x0000, 0 },
+ { 0x0100, 0, 0, 291, 56, 29, 24, 0x0000, 0 },
+ { 0x1100, 0, 0, 220, 98, 43, 19, 0x0000, 0 }
+};
+
+static const LoLButtonDefProvider kLoLButtonDefsDOSCDProvider = { ARRAYSIZE(kLoLButtonDefsDOSCD), kLoLButtonDefsDOSCD };
+
+static const byte kLoLButtonList1DOSCD[40] = {
+ 0x59, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x31,
+ 0x3E, 0x2D, 0x2E, 0x2F, 0x30, 0x56, 0x57, 0x01,
+ 0x02, 0x00, 0x03, 0x04, 0x05, 0x06, 0x32, 0x33,
+ 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B,
+ 0x3C, 0x3D, 0x58, 0x5A, 0x5B, 0x5C, 0x5D, 0xFF
+};
+
+static const ByteProvider kLoLButtonList1DOSCDProvider = { ARRAYSIZE(kLoLButtonList1DOSCD), kLoLButtonList1DOSCD };
+
+static const byte kLoLButtonList2DOSCD[15] = {
+ 0x2C, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
+ 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x5E, 0xFF
+};
+
+static const ByteProvider kLoLButtonList2DOSCDProvider = { ARRAYSIZE(kLoLButtonList2DOSCD), kLoLButtonList2DOSCD };
+
+static const byte kLoLButtonList3DOSCD[2] = {
+ 0x40, 0xFF
+};
+
+static const ByteProvider kLoLButtonList3DOSCDProvider = { ARRAYSIZE(kLoLButtonList3DOSCD), kLoLButtonList3DOSCD };
+
+static const byte kLoLButtonList4DOSCD[15] = {
+ 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39,
+ 0x3A, 0x3B, 0x3C, 0x3D, 0x5A, 0x5B, 0xFF
+};
+
+static const ByteProvider kLoLButtonList4DOSCDProvider = { ARRAYSIZE(kLoLButtonList4DOSCD), kLoLButtonList4DOSCD };
+
+static const byte kLoLButtonList5DOSCD[16] = {
+ 0x01, 0x02, 0x00, 0x03, 0x04, 0x05, 0x06, 0x41,
+ 0x42, 0x43, 0x44, 0x45, 0x46, 0x5A, 0x5B, 0xFF
+};
+
+static const ByteProvider kLoLButtonList5DOSCDProvider = { ARRAYSIZE(kLoLButtonList5DOSCD), kLoLButtonList5DOSCD };
+
+static const byte kLoLButtonList6DOSCD[14] = {
+ 0x2C, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
+ 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0xFF
+};
+
+static const ByteProvider kLoLButtonList6DOSCDProvider = { ARRAYSIZE(kLoLButtonList6DOSCD), kLoLButtonList6DOSCD };
+
+static const byte kLoLButtonList7DOSCD[3] = {
+ 0x0F, 0x10, 0xFF
+};
+
+static const ByteProvider kLoLButtonList7DOSCDProvider = { ARRAYSIZE(kLoLButtonList7DOSCD), kLoLButtonList7DOSCD };
+
+static const byte kLoLButtonList8DOSCD[2] = {
+ 0x55, 0xFF
+};
+
+static const ByteProvider kLoLButtonList8DOSCDProvider = { ARRAYSIZE(kLoLButtonList8DOSCD), kLoLButtonList8DOSCD };
+
+static const byte kLoLLegendDataDOSCD[60] = {
+ 0x0E, 0x00, 0x00, 0x07, 0x42, 0x19, 0x00, 0x00,
+ 0x08, 0x42, 0x1A, 0x00, 0x00, 0x09, 0x42, 0x0D,
+ 0x00, 0x00, 0x0A, 0x42, 0x0A, 0x00, 0x00, 0x0B,
+ 0x42, 0x0B, 0x00, 0x00, 0x0C, 0x42, 0x0F, 0x00,
+ 0x00, 0x0D, 0x42, 0x16, 0x00, 0x00, 0x0E, 0x42,
+ 0x17, 0x00, 0x00, 0x0F, 0x42, 0x11, 0x00, 0x00,
+ 0x10, 0x42, 0x12, 0x00, 0xFB, 0x51, 0x42, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF
+};
+
+static const ByteProvider kLoLLegendDataDOSCDProvider = { ARRAYSIZE(kLoLLegendDataDOSCD), kLoLLegendDataDOSCD };
+
+static const byte kLoLMapCursorOvlDOSCD[25] = {
+ 0x00, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86,
+ 0x87, 0x88, 0x01, 0x01, 0x01, 0x01, 0x01, 0x88,
+ 0x87, 0x86, 0x85, 0x84, 0x83, 0x82, 0x81, 0x80,
+ 0x80
+};
+
+static const ByteProvider kLoLMapCursorOvlDOSCDProvider = { ARRAYSIZE(kLoLMapCursorOvlDOSCD), kLoLMapCursorOvlDOSCD };
+
+static const uint16 kLoLMapStringIdDOSCD[30] = {
+ 0xFFFF, 0x4211, 0x4212, 0x4213, 0x4214, 0x4215, 0x4216, 0x4217,
+ 0x4218, 0x4219, 0x421A, 0x421B, 0x421C, 0x421D, 0x421E, 0x421F,
+ 0x4220, 0x4221, 0x4222, 0x4223, 0x4224, 0x4225, 0x4226, 0x4227,
+ 0x4228, 0x4229, 0x422A, 0x422B, 0x422C, 0x422D
+};
+
+static const Uint16Provider kLoLMapStringIdDOSCDProvider = { ARRAYSIZE(kLoLMapStringIdDOSCD), kLoLMapStringIdDOSCD };
+
+static const byte kLoLSpellbookAnimDOSCD[28] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x13, 0xB6, 0x04, 0x00, 0x13, 0x4D,
+ 0x04, 0x00, 0x13, 0xB9, 0x04, 0x00, 0x13, 0xB8,
+ 0x04, 0x00, 0x13, 0xBA
+};
+
+static const ByteProvider kLoLSpellbookAnimDOSCDProvider = { ARRAYSIZE(kLoLSpellbookAnimDOSCD), kLoLSpellbookAnimDOSCD };
+
+static const byte kLoLSpellbookCoordsDOSCD[12] = {
+ 0x16, 0x16, 0x16, 0x1F, 0x16, 0x28, 0x16, 0x31,
+ 0x16, 0x3A, 0x16, 0x43
+};
+
+static const ByteProvider kLoLSpellbookCoordsDOSCDProvider = { ARRAYSIZE(kLoLSpellbookCoordsDOSCD), kLoLSpellbookCoordsDOSCD };
+
+static const byte kLoLHealShapeFramesDOSCD[80] = {
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02,
+ 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x03, 0x03,
+ 0x03, 0x03, 0x02, 0x02, 0x01, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
+ 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00,
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F
+};
+
+static const ByteProvider kLoLHealShapeFramesDOSCDProvider = { ARRAYSIZE(kLoLHealShapeFramesDOSCD), kLoLHealShapeFramesDOSCD };
+
+static const byte kLoLLightningDefsDOSCD[20] = {
+ 0x06, 0x05, 0xAB, 0x00, 0x06, 0x04, 0xAB, 0x00,
+ 0x08, 0x04, 0xAA, 0x00, 0x06, 0x03, 0xAA, 0x00,
+ 0x06, 0x02, 0xA9, 0x00
+};
+
+static const ByteProvider kLoLLightningDefsDOSCDProvider = { ARRAYSIZE(kLoLLightningDefsDOSCD), kLoLLightningDefsDOSCD };
+
+static const uint16 kLoLFireballCoordsDOSCD[256] = {
+ 0x0000, 0x0324, 0x0647, 0x096A, 0x0C8B, 0x0FAB, 0x12C7, 0x15E1,
+ 0x18F8, 0x1C0B, 0x1F19, 0x2223, 0x2527, 0x2826, 0x2B1E, 0x2E10,
+ 0x30FB, 0x33DE, 0x36B9, 0x398C, 0x3C56, 0x3F16, 0x41CD, 0x447A,
+ 0x471C, 0x49B3, 0x4C3F, 0x4EBF, 0x5133, 0x539A, 0x55F4, 0x5842,
+ 0x5A81, 0x5CB3, 0x5ED6, 0x60EB, 0x62F1, 0x64E7, 0x66CE, 0x68A5,
+ 0x6A6C, 0x6C23, 0x6DC9, 0x6F5E, 0x70E1, 0x7254, 0x73B5, 0x7503,
+ 0x7640, 0x776B, 0x7883, 0x7989, 0x7A7C, 0x7B5C, 0x7C29, 0x7CE2,
+ 0x7D89, 0x7E1C, 0x7E9C, 0x7F08, 0x7F61, 0x7FA6, 0x7FD7, 0x7FF5,
+ 0x7FFF, 0x7FF5, 0x7FD7, 0x7FA6, 0x7F61, 0x7F08, 0x7E9C, 0x7E1C,
+ 0x7D89, 0x7CE2, 0x7C29, 0x7B5C, 0x7A7C, 0x7989, 0x7883, 0x776B,
+ 0x7640, 0x7503, 0x73B5, 0x7254, 0x70E1, 0x6F5E, 0x6DC9, 0x6C23,
+ 0x6A6C, 0x68A5, 0x66CE, 0x64E7, 0x62F1, 0x60EB, 0x5ED6, 0x5CB3,
+ 0x5A81, 0x5842, 0x55F4, 0x539A, 0x5133, 0x4EBF, 0x4C3F, 0x49B3,
+ 0x471C, 0x447A, 0x41CD, 0x3F16, 0x3C56, 0x398C, 0x36B9, 0x33DE,
+ 0x30FB, 0x2E10, 0x2B1E, 0x2826, 0x2527, 0x2223, 0x1F19, 0x1C0B,
+ 0x18F8, 0x15E1, 0x12C7, 0x0FAB, 0x0C8B, 0x096A, 0x0647, 0x0324,
+ 0x0000, 0xFCDC, 0xF9B9, 0xF696, 0xF375, 0xF055, 0xED39, 0xEA1F,
+ 0xE708, 0xE3F5, 0xE0E7, 0xDDDD, 0xDAD9, 0xD7DA, 0xD4E2, 0xD1F0,
+ 0xCF05, 0xCC22, 0xC947, 0xC674, 0xC3AA, 0xC0EA, 0xBE33, 0xBB86,
+ 0xB8E4, 0xB64D, 0xB3C1, 0xB141, 0xAECD, 0xAC66, 0xAA0C, 0xA7BE,
+ 0xA57F, 0xA34D, 0xA12A, 0x9F15, 0x9D0F, 0x9B19, 0x9932, 0x975B,
+ 0x9594, 0x93DD, 0x9237, 0x90A2, 0x8F1F, 0x8DAC, 0x8C4B, 0x8AFD,
+ 0x89C0, 0x8895, 0x877D, 0x8677, 0x8584, 0x84A4, 0x83D7, 0x831E,
+ 0x8277, 0x81E4, 0x8164, 0x80F8, 0x809F, 0x805A, 0x8029, 0x800B,
+ 0x8001, 0x800B, 0x8029, 0x805A, 0x809F, 0x80F8, 0x8164, 0x81E4,
+ 0x8277, 0x831E, 0x83D7, 0x84A4, 0x8584, 0x8677, 0x877D, 0x8895,
+ 0x89C0, 0x8AFD, 0x8C4B, 0x8DAC, 0x8F1F, 0x90A2, 0x9237, 0x93DD,
+ 0x9594, 0x975B, 0x9932, 0x9B19, 0x9D0F, 0x9F15, 0xA12A, 0xA34D,
+ 0xA57F, 0xA7BE, 0xAA0C, 0xAC66, 0xAECD, 0xB141, 0xB3C1, 0xB64D,
+ 0xB8E4, 0xBB86, 0xBE33, 0xC0EA, 0xC3AA, 0xC674, 0xC947, 0xCC22,
+ 0xCF05, 0xD1F0, 0xD4E2, 0xD7DA, 0xDAD9, 0xDDDD, 0xE0E7, 0xE3F5,
+ 0xE708, 0xEA1F, 0xED39, 0xF055, 0xF375, 0xF696, 0xF9B9, 0xFCDC
+};
+
+static const Uint16Provider kLoLFireballCoordsDOSCDProvider = { ARRAYSIZE(kLoLFireballCoordsDOSCD), kLoLFireballCoordsDOSCD };
+
diff --git a/devtools/create_kyradat/resources/lol_dos_cd_english.h b/devtools/create_kyradat/resources/lol_dos_cd_english.h
new file mode 100644
index 0000000000..9d636cf714
--- /dev/null
+++ b/devtools/create_kyradat/resources/lol_dos_cd_english.h
@@ -0,0 +1,68 @@
+static const LoLCharacter kLoLCharacterDefsDOSCDEnglish[9] = {
+ { 0x0001, "Michael", 0, -1, 0, 0, 17,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 20, 20, 6, 6, 0, 0, 0, 384, 320, 5, 2, 0,
+ { 44, 0, 0, 0, 0, 138, 0, 0, 162, 0, 0 },
+ { 1, 1, 1 }, { 0, 0, 0 }, { 1, 1, 1 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "Timothy", 0, 2, 0, 0, 22,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 27, 27, 5, 5, 0, 0, 0, 256, 256, 0, 0, 0,
+ { 93, 131, 0, 0, 0, 153, 0, 0, 162, 0, 0 },
+ { 3, 2, 1 }, { 0, 0, 0 }, { 2500, 1000, 250 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "Baccata", 3, 3, 0, 0, 23,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 22, 22, 18, 18, 0, 0, 0, 256, 256, 0, 0, 0,
+ { 108, 149, 0, 0, 145, 153, 0, 0, 129, 0, 0 },
+ { 1, 1, 3 }, { 0, 0, 0 }, { 1, 1, 4000 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "Lora", 1, 4, 0, 0, 24,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 25, 48, 5, 5, 0, 0, 0, 256, 256, 0, 0, 0,
+ { 0, 0, 0, 0, 0, 137, 0, 0, 162, 0, 0 },
+ { 1, 4, 1 }, { 0, 0, 0 }, { 1, 15001, 1 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "Conrad", 0, -5, 0, 0, 26,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 23, 23, 10, 10, 0, 0, 0, 366, 358, 2, 3, 0,
+ { 44, 0, 0, 0, 0, 138, 0, 0, 162, 0, 0 },
+ { 1, 1, 1 }, { 0, 0, 0 }, { 1, 1, 1 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "Paulson", 0, 6, 0, 0, 25,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 105, 105, 45, 45, 0, 0, 0, 256, 256, 0, 0, 0,
+ { 0, 0, 0, 0, 0, 138, 0, 0, 129, 0, 0 },
+ { 5, 2, 3 }, { 0, 0, 0 }, { 40000, 501, 3500 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "Dawn", 1, 7, 0, 0, 24,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 50, 50, 80, 80, 0, 0, 0, 256, 256, 0, 0, 0,
+ { 0, 0, 0, 0, 0, 138, 0, 0, 129, 0, 0 },
+ { 1, 2, 10 }, { 1, 254, 177 }, { 1, 501, 1 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "Kieran", 2, -8, 0, 0, 21,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 23, 23, 8, 8, 0, 0, 0, 422, 332, 5, 1, 0,
+ { 44, 0, 0, 0, 0, 138, 0, 0, 162, 0, 0 },
+ { 1, 1, 1 }, { 0, 0, 0 }, { 1, 1, 1 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "Ak'shel", 4, -9, 0, 0, 20,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 28, 28, 32, 32, 0, 0, 0, 320, 256, 1, 1, 0,
+ { 44, 0, 0, 0, 0, 138, 0, 0, 162, 0, 0 },
+ { 1, 1, 1 }, { 0, 0, 0 }, { 1, 1, 1 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } }
+};
+
+static const LoLCharacterProvider kLoLCharacterDefsDOSCDEnglishProvider = { ARRAYSIZE(kLoLCharacterDefsDOSCDEnglish), kLoLCharacterDefsDOSCDEnglish };
+
diff --git a/devtools/create_kyradat/resources/lol_dos_cd_french.h b/devtools/create_kyradat/resources/lol_dos_cd_french.h
new file mode 100644
index 0000000000..ea91647eb9
--- /dev/null
+++ b/devtools/create_kyradat/resources/lol_dos_cd_french.h
@@ -0,0 +1,68 @@
+static const LoLCharacter kLoLCharacterDefsDOSCDFrench[9] = {
+ { 0x0001, "Michael", 0, -1, 0, 0, 17,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 20, 20, 6, 6, 0, 0, 0, 384, 320, 5, 2, 0,
+ { 44, 0, 0, 0, 0, 138, 0, 0, 162, 0, 0 },
+ { 1, 1, 1 }, { 0, 0, 0 }, { 1, 1, 1 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "Timothy", 0, 2, 0, 0, 22,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 27, 27, 5, 5, 0, 0, 0, 256, 256, 0, 0, 0,
+ { 93, 131, 0, 0, 0, 153, 0, 0, 162, 0, 0 },
+ { 3, 2, 1 }, { 0, 0, 0 }, { 2500, 1000, 250 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "Baccata", 3, 3, 0, 0, 23,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 22, 22, 18, 18, 0, 0, 0, 256, 256, 0, 0, 0,
+ { 108, 149, 0, 0, 145, 153, 0, 0, 129, 0, 0 },
+ { 1, 1, 3 }, { 0, 0, 0 }, { 1, 1, 4000 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "Lora", 1, 4, 0, 0, 24,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 25, 48, 5, 5, 0, 0, 0, 256, 256, 0, 0, 0,
+ { 0, 0, 0, 0, 0, 137, 0, 0, 162, 0, 0 },
+ { 1, 4, 1 }, { 0, 0, 0 }, { 1, 15001, 1 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "Conrad", 0, -5, 0, 0, 26,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 23, 23, 10, 10, 0, 0, 0, 366, 358, 2, 3, 0,
+ { 44, 0, 0, 0, 0, 138, 0, 0, 162, 0, 0 },
+ { 1, 1, 1 }, { 0, 0, 0 }, { 1, 1, 1 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "Paulson", 0, 6, 0, 0, 25,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 105, 105, 45, 45, 0, 0, 0, 256, 256, 0, 0, 0,
+ { 0, 0, 0, 0, 0, 138, 0, 0, 129, 0, 0 },
+ { 5, 2, 3 }, { 0, 0, 0 }, { 40000, 501, 3500 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "Dawn", 1, 7, 0, 0, 24,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 50, 50, 80, 80, 0, 0, 0, 256, 256, 0, 0, 0,
+ { 0, 0, 0, 0, 0, 138, 0, 0, 129, 0, 0 },
+ { 1, 2, 10 }, { 1, 254, 177 }, { 1, 501, 1 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "Kieran", 2, -8, 0, 0, 21,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 23, 23, 8, 8, 0, 0, 0, 422, 332, 5, 1, 0,
+ { 44, 0, 0, 0, 0, 138, 0, 0, 162, 0, 0 },
+ { 1, 1, 1 }, { 0, 0, 0 }, { 1, 1, 1 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "Ak'shel", 4, -9, 0, 0, 20,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 28, 28, 32, 32, 0, 0, 0, 320, 256, 1, 1, 0,
+ { 44, 0, 0, 0, 0, 138, 0, 0, 162, 0, 0 },
+ { 1, 1, 1 }, { 0, 0, 0 }, { 1, 1, 1 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } }
+};
+
+static const LoLCharacterProvider kLoLCharacterDefsDOSCDFrenchProvider = { ARRAYSIZE(kLoLCharacterDefsDOSCDFrench), kLoLCharacterDefsDOSCDFrench };
+
diff --git a/devtools/create_kyradat/resources/lol_dos_cd_german.h b/devtools/create_kyradat/resources/lol_dos_cd_german.h
new file mode 100644
index 0000000000..9682217857
--- /dev/null
+++ b/devtools/create_kyradat/resources/lol_dos_cd_german.h
@@ -0,0 +1,68 @@
+static const LoLCharacter kLoLCharacterDefsDOSCDGerman[9] = {
+ { 0x0001, "Michael", 0, -1, 0, 0, 17,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 20, 20, 6, 6, 0, 0, 0, 384, 320, 5, 2, 0,
+ { 44, 0, 0, 0, 0, 138, 0, 0, 162, 0, 0 },
+ { 1, 1, 1 }, { 0, 0, 0 }, { 1, 1, 1 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "Timothy", 0, 2, 0, 0, 22,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 27, 27, 5, 5, 0, 0, 0, 256, 256, 0, 0, 0,
+ { 93, 131, 0, 0, 0, 153, 0, 0, 162, 0, 0 },
+ { 3, 2, 1 }, { 0, 0, 0 }, { 2500, 1000, 250 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "Baccata", 3, 3, 0, 0, 23,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 22, 22, 18, 18, 0, 0, 0, 256, 256, 0, 0, 0,
+ { 108, 149, 0, 0, 145, 153, 0, 0, 129, 0, 0 },
+ { 1, 1, 3 }, { 0, 0, 0 }, { 1, 1, 4000 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "Lora", 1, 4, 0, 0, 24,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 25, 48, 5, 5, 0, 0, 0, 256, 256, 0, 0, 0,
+ { 0, 0, 0, 0, 0, 137, 0, 0, 162, 0, 0 },
+ { 1, 4, 1 }, { 0, 0, 0 }, { 1, 15001, 1 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "Conrad", 0, -5, 0, 0, 26,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 23, 23, 10, 10, 0, 0, 0, 366, 358, 2, 3, 0,
+ { 44, 0, 0, 0, 0, 138, 0, 0, 162, 0, 0 },
+ { 1, 1, 1 }, { 0, 0, 0 }, { 1, 1, 1 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "Paulson", 0, 6, 0, 0, 25,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 105, 105, 45, 45, 0, 0, 0, 256, 256, 0, 0, 0,
+ { 0, 0, 0, 0, 0, 138, 0, 0, 129, 0, 0 },
+ { 5, 2, 3 }, { 0, 0, 0 }, { 40000, 501, 3500 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "Dawn", 1, 7, 0, 0, 24,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 50, 50, 80, 80, 0, 0, 0, 256, 256, 0, 0, 0,
+ { 0, 0, 0, 0, 0, 138, 0, 0, 129, 0, 0 },
+ { 1, 2, 10 }, { 1, 254, 177 }, { 1, 501, 1 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "Kieran", 2, -8, 0, 0, 21,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 23, 23, 8, 8, 0, 0, 0, 422, 332, 5, 1, 0,
+ { 44, 0, 0, 0, 0, 138, 0, 0, 162, 0, 0 },
+ { 1, 1, 1 }, { 0, 0, 0 }, { 1, 1, 1 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "Ak'shel", 4, -9, 0, 0, 20,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 28, 28, 32, 32, 0, 0, 0, 320, 256, 1, 1, 0,
+ { 44, 0, 0, 0, 0, 138, 0, 0, 162, 0, 0 },
+ { 1, 1, 1 }, { 0, 0, 0 }, { 1, 1, 1 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } }
+};
+
+static const LoLCharacterProvider kLoLCharacterDefsDOSCDGermanProvider = { ARRAYSIZE(kLoLCharacterDefsDOSCDGerman), kLoLCharacterDefsDOSCDGerman };
+
diff --git a/devtools/create_kyradat/resources/lol_dos_cd_italian.h b/devtools/create_kyradat/resources/lol_dos_cd_italian.h
new file mode 100644
index 0000000000..4a9734e40b
--- /dev/null
+++ b/devtools/create_kyradat/resources/lol_dos_cd_italian.h
@@ -0,0 +1,68 @@
+static const LoLCharacter kLoLCharacterDefsDOSCDItalian[9] = {
+ { 0x0001, "Michael", 0, -1, 0, 0, 17,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 20, 20, 6, 6, 0, 0, 0, 384, 320, 5, 2, 0,
+ { 44, 0, 0, 0, 0, 138, 0, 0, 162, 0, 0 },
+ { 1, 1, 1 }, { 0, 0, 0 }, { 1, 1, 1 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "Timothy", 0, 2, 0, 0, 22,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 27, 27, 5, 5, 0, 0, 0, 256, 256, 0, 0, 0,
+ { 93, 131, 0, 0, 0, 153, 0, 0, 162, 0, 0 },
+ { 3, 2, 1 }, { 0, 0, 0 }, { 2500, 1000, 250 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "Baccata", 3, 3, 0, 0, 23,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 22, 22, 18, 18, 0, 0, 0, 256, 256, 0, 0, 0,
+ { 108, 149, 0, 0, 145, 153, 0, 0, 129, 0, 0 },
+ { 1, 1, 3 }, { 0, 0, 0 }, { 1, 1, 4000 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "Lora", 1, 4, 0, 0, 24,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 25, 48, 5, 5, 0, 0, 0, 256, 256, 0, 0, 0,
+ { 0, 0, 0, 0, 0, 137, 0, 0, 162, 0, 0 },
+ { 1, 4, 1 }, { 0, 0, 0 }, { 1, 15001, 1 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "Conrad", 0, -5, 0, 0, 26,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 23, 23, 10, 10, 0, 0, 0, 366, 358, 2, 3, 0,
+ { 44, 0, 0, 0, 0, 138, 0, 0, 162, 0, 0 },
+ { 1, 1, 1 }, { 0, 0, 0 }, { 1, 1, 1 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "Paulson", 0, 6, 0, 0, 25,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 105, 105, 45, 45, 0, 0, 0, 256, 256, 0, 0, 0,
+ { 0, 0, 0, 0, 0, 138, 0, 0, 129, 0, 0 },
+ { 5, 2, 3 }, { 0, 0, 0 }, { 40000, 501, 3500 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "Dawn", 1, 7, 0, 0, 24,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 50, 50, 80, 80, 0, 0, 0, 256, 256, 0, 0, 0,
+ { 0, 0, 0, 0, 0, 138, 0, 0, 129, 0, 0 },
+ { 1, 2, 10 }, { 1, 254, 177 }, { 1, 501, 1 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "Kieran", 2, -8, 0, 0, 21,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 23, 23, 8, 8, 0, 0, 0, 422, 332, 5, 1, 0,
+ { 44, 0, 0, 0, 0, 138, 0, 0, 162, 0, 0 },
+ { 1, 1, 1 }, { 0, 0, 0 }, { 1, 1, 1 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "Ak'shel", 4, -9, 0, 0, 20,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 28, 28, 32, 32, 0, 0, 0, 320, 256, 1, 1, 0,
+ { 44, 0, 0, 0, 0, 138, 0, 0, 162, 0, 0 },
+ { 1, 1, 1 }, { 0, 0, 0 }, { 1, 1, 1 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } }
+};
+
+static const LoLCharacterProvider kLoLCharacterDefsDOSCDItalianProvider = { ARRAYSIZE(kLoLCharacterDefsDOSCDItalian), kLoLCharacterDefsDOSCDItalian };
+
diff --git a/devtools/create_kyradat/resources/lol_dos_cd_russian.h b/devtools/create_kyradat/resources/lol_dos_cd_russian.h
new file mode 100644
index 0000000000..37ab84eacf
--- /dev/null
+++ b/devtools/create_kyradat/resources/lol_dos_cd_russian.h
@@ -0,0 +1,68 @@
+static const LoLCharacter kLoLCharacterDefsDOSCDRussian[9] = {
+ { 0x0001, "Michael", 0, -1, 0, 0, 17,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 20, 20, 6, 6, 0, 0, 0, 384, 320, 5, 2, 0,
+ { 44, 0, 0, 0, 0, 138, 0, 0, 162, 0, 0 },
+ { 1, 1, 1 }, { 0, 0, 0 }, { 1, 1, 1 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "Timothy", 0, 2, 0, 0, 22,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 27, 27, 5, 5, 0, 0, 0, 256, 256, 0, 0, 0,
+ { 93, 131, 0, 0, 0, 153, 0, 0, 162, 0, 0 },
+ { 3, 2, 1 }, { 0, 0, 0 }, { 2500, 1000, 250 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "Baccata", 3, 3, 0, 0, 23,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 22, 22, 18, 18, 0, 0, 0, 256, 256, 0, 0, 0,
+ { 108, 149, 0, 0, 145, 153, 0, 0, 129, 0, 0 },
+ { 1, 1, 3 }, { 0, 0, 0 }, { 1, 1, 4000 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "Lora", 1, 4, 0, 0, 24,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 25, 48, 5, 5, 0, 0, 0, 256, 256, 0, 0, 0,
+ { 0, 0, 0, 0, 0, 137, 0, 0, 162, 0, 0 },
+ { 1, 4, 1 }, { 0, 0, 0 }, { 1, 15001, 1 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "Conrad", 0, -5, 0, 0, 26,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 23, 23, 10, 10, 0, 0, 0, 366, 358, 2, 3, 0,
+ { 44, 0, 0, 0, 0, 138, 0, 0, 162, 0, 0 },
+ { 1, 1, 1 }, { 0, 0, 0 }, { 1, 1, 1 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "Paulson", 0, 6, 0, 0, 25,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 105, 105, 45, 45, 0, 0, 0, 256, 256, 0, 0, 0,
+ { 0, 0, 0, 0, 0, 138, 0, 0, 129, 0, 0 },
+ { 5, 2, 3 }, { 0, 0, 0 }, { 40000, 501, 3500 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "Dawn", 1, 7, 0, 0, 24,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 50, 50, 80, 80, 0, 0, 0, 256, 256, 0, 0, 0,
+ { 0, 0, 0, 0, 0, 138, 0, 0, 129, 0, 0 },
+ { 1, 2, 10 }, { 1, 254, 177 }, { 1, 501, 1 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "Kieran", 2, -8, 0, 0, 21,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 23, 23, 8, 8, 0, 0, 0, 422, 332, 5, 1, 0,
+ { 44, 0, 0, 0, 0, 138, 0, 0, 162, 0, 0 },
+ { 1, 1, 1 }, { 0, 0, 0 }, { 1, 1, 1 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "Ak'shel", 4, -9, 0, 0, 20,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 28, 28, 32, 32, 0, 0, 0, 320, 256, 1, 1, 0,
+ { 44, 0, 0, 0, 0, 138, 0, 0, 162, 0, 0 },
+ { 1, 1, 1 }, { 0, 0, 0 }, { 1, 1, 1 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } }
+};
+
+static const LoLCharacterProvider kLoLCharacterDefsDOSCDRussianProvider = { ARRAYSIZE(kLoLCharacterDefsDOSCDRussian), kLoLCharacterDefsDOSCDRussian };
+
diff --git a/devtools/create_kyradat/resources/lol_dos_demo.h b/devtools/create_kyradat/resources/lol_dos_demo.h
new file mode 100644
index 0000000000..7c5a08fbc9
--- /dev/null
+++ b/devtools/create_kyradat/resources/lol_dos_demo.h
@@ -0,0 +1,54 @@
+static const char *const kLoLSeqplayPakFilesDOSDemo[1] = {
+ "GENERAL.PAK"
+};
+
+static const StringListProvider kLoLSeqplayPakFilesDOSDemoProvider = { ARRAYSIZE(kLoLSeqplayPakFilesDOSDemo), kLoLSeqplayPakFilesDOSDemo };
+
+static const HoFSequence kLoLSeqplaySeqDataDOSDemoSeq[11] = {
+ { 0x0002, "", "scene1.cps", 3, 1, 0xFFFF, 0xFFFF, 0x0000, 0x0001, 0x00C8, 0, 0, 0x003C },
+ { 0x0004, "", "", 3, 0, 0x0000, 0x0001, 0x0000, 0x0001, 0x00C8, 0, 0, 0x0000 },
+ { 0x0003, "scene2.wsa", "scene2.cps", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x0053, 0x0003, 0, 0, 0x001E },
+ { 0x0004, "", "", 4, 0, 0x0002, 0x0003, 0x0000, 0x0001, 0x00C8, 0, 0, 0x0000 },
+ { 0x0003, "scene3.wsa", "scene3.cps", 5, 0, 0xFFFF, 0xFFFF, 0x0000, 0x006B, 0x0005, 0, 0, 0x001E },
+ { 0x0004, "", "", 4, 0, 0x0004, 0x0005, 0x0000, 0x0001, 0x00C8, 0, 0, 0x0000 },
+ { 0x0003, "scene4.wsa", "scene4.cps", 4, 0, 0xFFFF, 0xFFFF, 0x0000, 0x0044, 0x000A, 0, 0, 0x0028 },
+ { 0x0004, "", "", 4, 0, 0x0006, 0x0007, 0x0000, 0x0001, 0x00C8, 0, 0, 0x0000 },
+ { 0x0003, "scene5.wsa", "scene5.cps", 4, 1, 0xFFFF, 0xFFFF, 0x0000, 0x0031, 0x0008, 0, 0, 0x000A },
+ { 0x0004, "", "", 3, 1, 0x0008, 0x0009, 0x0000, 0x0001, 0x00C8, 0, 0, 0x0000 },
+ { 0x0002, "", "scene1.cps", 3, 1, 0xFFFF, 0xFFFF, 0x0000, 0x0001, 0x0014, 0, 0, 0x012C }
+};
+
+
+static const HoFSequenceProvider kLoLSeqplaySeqDataDOSDemoProvider = { ARRAYSIZE(kLoLSeqplaySeqDataDOSDemoSeq), kLoLSeqplaySeqDataDOSDemoSeq, 0, NULL };
+
+static const char *const kLoLSeqplaySfxFilesDOSDemo[18] = {
+ "tclap1",
+ "tclap2",
+ "beeorc2",
+ "tclap4",
+ "tclap5",
+ "scotia9",
+ "bolt",
+ "bolt2",
+ "wokout1",
+ "cdamage1",
+ "wokmisc1",
+ "mwhoa1",
+ "mstdoom2",
+ "loragasp",
+ "ratwok",
+ "swing1",
+ "bludyell",
+ ""
+};
+
+static const StringListProvider kLoLSeqplaySfxFilesDOSDemoProvider = { ARRAYSIZE(kLoLSeqplaySfxFilesDOSDemo), kLoLSeqplaySfxFilesDOSDemo };
+
+static const char *const kLoLSeqplayIntroTracksDOSDemo[3] = {
+ "loredemo",
+ "loredemo",
+ ""
+};
+
+static const StringListProvider kLoLSeqplayIntroTracksDOSDemoProvider = { ARRAYSIZE(kLoLSeqplayIntroTracksDOSDemo), kLoLSeqplayIntroTracksDOSDemo };
+
diff --git a/devtools/create_kyradat/resources/lol_dos_demo_english.h b/devtools/create_kyradat/resources/lol_dos_demo_english.h
new file mode 100644
index 0000000000..df80fd10e2
--- /dev/null
+++ b/devtools/create_kyradat/resources/lol_dos_demo_english.h
@@ -0,0 +1,15 @@
+static const char *const kLoLSeqplayStringsDOSDemoEnglish[10] = {
+ "The Lands have become perilous",
+ "to travellers",
+ "King Richard holds the strength",
+ "to defeat Sorceress Scotia!",
+ "You have the ability to restore",
+ "hope to the People",
+ "Cruel and hideous monsters",
+ "will hinder your quest...",
+ "Will you accept the challenge ?",
+ "Scotia awaits..."
+};
+
+static const StringListProvider kLoLSeqplayStringsDOSDemoEnglishProvider = { ARRAYSIZE(kLoLSeqplayStringsDOSDemoEnglish), kLoLSeqplayStringsDOSDemoEnglish };
+
diff --git a/devtools/create_kyradat/resources/lol_dos_english.h b/devtools/create_kyradat/resources/lol_dos_english.h
new file mode 100644
index 0000000000..f6b579545b
--- /dev/null
+++ b/devtools/create_kyradat/resources/lol_dos_english.h
@@ -0,0 +1,68 @@
+static const LoLCharacter kLoLCharacterDefsDOSEnglish[9] = {
+ { 0x0001, "Michael", 0, -1, 0, 0, 17,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 20, 20, 6, 6, 0, 0, 0, 384, 320, 5, 2, 0,
+ { 44, 0, 0, 0, 0, 138, 0, 0, 162, 0, 0 },
+ { 1, 1, 1 }, { 0, 0, 0 }, { 1, 1, 1 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "Timothy", 0, 2, 0, 0, 22,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 27, 27, 5, 5, 0, 0, 0, 256, 256, 0, 0, 0,
+ { 93, 131, 0, 0, 0, 153, 0, 0, 162, 0, 0 },
+ { 3, 2, 1 }, { 0, 0, 0 }, { 2500, 1000, 250 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "Baccata", 3, 3, 0, 0, 23,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 22, 22, 18, 18, 0, 0, 0, 256, 256, 0, 0, 0,
+ { 108, 149, 0, 0, 145, 153, 0, 0, 129, 0, 0 },
+ { 1, 1, 3 }, { 0, 0, 0 }, { 1, 1, 4000 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "Lora", 1, 4, 0, 0, 24,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 25, 48, 5, 5, 0, 0, 0, 256, 256, 0, 0, 0,
+ { 0, 0, 0, 0, 0, 137, 0, 0, 162, 0, 0 },
+ { 1, 4, 1 }, { 0, 0, 0 }, { 1, 15001, 1 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "Conrad", 0, -5, 0, 0, 26,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 23, 23, 10, 10, 0, 0, 0, 366, 358, 2, 3, 0,
+ { 44, 0, 0, 0, 0, 138, 0, 0, 162, 0, 0 },
+ { 1, 1, 1 }, { 0, 0, 0 }, { 1, 1, 1 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "Paulson", 0, 6, 0, 0, 25,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 105, 105, 45, 45, 0, 0, 0, 256, 256, 0, 0, 0,
+ { 0, 0, 0, 0, 0, 138, 0, 0, 129, 0, 0 },
+ { 5, 2, 3 }, { 0, 0, 0 }, { 40000, 501, 3500 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "Dawn", 1, 7, 0, 0, 24,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 50, 50, 80, 80, 0, 0, 0, 256, 256, 0, 0, 0,
+ { 0, 0, 0, 0, 0, 138, 0, 0, 129, 0, 0 },
+ { 1, 2, 10 }, { 1, 254, 177 }, { 1, 501, 1 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "Kieran", 2, -8, 0, 0, 21,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 23, 23, 8, 8, 0, 0, 0, 422, 332, 5, 1, 0,
+ { 44, 0, 0, 0, 0, 138, 0, 0, 162, 0, 0 },
+ { 1, 1, 1 }, { 0, 0, 0 }, { 1, 1, 1 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "Ak'shel", 4, -9, 0, 0, 20,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 28, 28, 32, 32, 0, 0, 0, 320, 256, 1, 1, 0,
+ { 44, 0, 0, 0, 0, 138, 0, 0, 162, 0, 0 },
+ { 1, 1, 1 }, { 0, 0, 0 }, { 1, 1, 1 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } }
+};
+
+static const LoLCharacterProvider kLoLCharacterDefsDOSEnglishProvider = { ARRAYSIZE(kLoLCharacterDefsDOSEnglish), kLoLCharacterDefsDOSEnglish };
+
diff --git a/devtools/create_kyradat/resources/lol_dos_french.h b/devtools/create_kyradat/resources/lol_dos_french.h
new file mode 100644
index 0000000000..2e9180655a
--- /dev/null
+++ b/devtools/create_kyradat/resources/lol_dos_french.h
@@ -0,0 +1,68 @@
+static const LoLCharacter kLoLCharacterDefsDOSFrench[9] = {
+ { 0x0001, "Michael", 0, -1, 0, 0, 17,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 20, 20, 6, 6, 0, 0, 0, 384, 320, 5, 2, 0,
+ { 44, 0, 0, 0, 0, 138, 0, 0, 162, 0, 0 },
+ { 1, 1, 1 }, { 0, 0, 0 }, { 1, 1, 1 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "Timothy", 0, 2, 0, 0, 22,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 27, 27, 5, 5, 0, 0, 0, 256, 256, 0, 0, 0,
+ { 93, 131, 0, 0, 0, 153, 0, 0, 162, 0, 0 },
+ { 3, 2, 1 }, { 0, 0, 0 }, { 2500, 1000, 250 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "Baccata", 3, 3, 0, 0, 23,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 22, 22, 18, 18, 0, 0, 0, 256, 256, 0, 0, 0,
+ { 108, 149, 0, 0, 145, 153, 0, 0, 129, 0, 0 },
+ { 1, 1, 3 }, { 0, 0, 0 }, { 1, 1, 4000 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "Lora", 1, 4, 0, 0, 24,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 25, 48, 5, 5, 0, 0, 0, 256, 256, 0, 0, 0,
+ { 0, 0, 0, 0, 0, 137, 0, 0, 162, 0, 0 },
+ { 1, 4, 1 }, { 0, 0, 0 }, { 1, 15001, 1 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "Conrad", 0, -5, 0, 0, 26,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 23, 23, 10, 10, 0, 0, 0, 366, 358, 2, 3, 0,
+ { 44, 0, 0, 0, 0, 138, 0, 0, 162, 0, 0 },
+ { 1, 1, 1 }, { 0, 0, 0 }, { 1, 1, 1 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "Paulson", 0, 6, 0, 0, 25,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 105, 105, 45, 45, 0, 0, 0, 256, 256, 0, 0, 0,
+ { 0, 0, 0, 0, 0, 138, 0, 0, 129, 0, 0 },
+ { 5, 2, 3 }, { 0, 0, 0 }, { 40000, 501, 3500 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "Dawn", 1, 7, 0, 0, 24,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 50, 50, 80, 80, 0, 0, 0, 256, 256, 0, 0, 0,
+ { 0, 0, 0, 0, 0, 138, 0, 0, 129, 0, 0 },
+ { 1, 2, 10 }, { 1, 254, 177 }, { 1, 501, 1 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "Kieran", 2, -8, 0, 0, 21,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 23, 23, 8, 8, 0, 0, 0, 422, 332, 5, 1, 0,
+ { 44, 0, 0, 0, 0, 138, 0, 0, 162, 0, 0 },
+ { 1, 1, 1 }, { 0, 0, 0 }, { 1, 1, 1 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "Ak'shel", 4, -9, 0, 0, 20,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 28, 28, 32, 32, 0, 0, 0, 320, 256, 1, 1, 0,
+ { 44, 0, 0, 0, 0, 138, 0, 0, 162, 0, 0 },
+ { 1, 1, 1 }, { 0, 0, 0 }, { 1, 1, 1 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } }
+};
+
+static const LoLCharacterProvider kLoLCharacterDefsDOSFrenchProvider = { ARRAYSIZE(kLoLCharacterDefsDOSFrench), kLoLCharacterDefsDOSFrench };
+
diff --git a/devtools/create_kyradat/resources/lol_dos_german.h b/devtools/create_kyradat/resources/lol_dos_german.h
new file mode 100644
index 0000000000..886f180d1d
--- /dev/null
+++ b/devtools/create_kyradat/resources/lol_dos_german.h
@@ -0,0 +1,68 @@
+static const LoLCharacter kLoLCharacterDefsDOSGerman[9] = {
+ { 0x0001, "Michael", 0, -1, 0, 0, 17,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 20, 20, 6, 6, 0, 0, 0, 384, 320, 5, 2, 0,
+ { 44, 0, 0, 0, 0, 138, 0, 0, 162, 0, 0 },
+ { 1, 1, 1 }, { 0, 0, 0 }, { 1, 1, 1 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "Timothy", 0, 2, 0, 0, 22,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 27, 27, 5, 5, 0, 0, 0, 256, 256, 0, 0, 0,
+ { 93, 131, 0, 0, 0, 153, 0, 0, 162, 0, 0 },
+ { 3, 2, 1 }, { 0, 0, 0 }, { 2500, 1000, 250 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "Baccata", 3, 3, 0, 0, 23,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 22, 22, 18, 18, 0, 0, 0, 256, 256, 0, 0, 0,
+ { 108, 149, 0, 0, 145, 153, 0, 0, 129, 0, 0 },
+ { 1, 1, 3 }, { 0, 0, 0 }, { 1, 1, 4000 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "Lora", 1, 4, 0, 0, 24,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 25, 48, 5, 5, 0, 0, 0, 256, 256, 0, 0, 0,
+ { 0, 0, 0, 0, 0, 137, 0, 0, 162, 0, 0 },
+ { 1, 4, 1 }, { 0, 0, 0 }, { 1, 15001, 1 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "Conrad", 0, -5, 0, 0, 26,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 23, 23, 10, 10, 0, 0, 0, 366, 358, 2, 3, 0,
+ { 44, 0, 0, 0, 0, 138, 0, 0, 162, 0, 0 },
+ { 1, 1, 1 }, { 0, 0, 0 }, { 1, 1, 1 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "Paulson", 0, 6, 0, 0, 25,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 105, 105, 45, 45, 0, 0, 0, 256, 256, 0, 0, 0,
+ { 0, 0, 0, 0, 0, 138, 0, 0, 129, 0, 0 },
+ { 5, 2, 3 }, { 0, 0, 0 }, { 40000, 501, 3500 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "Dawn", 1, 7, 0, 0, 24,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 50, 50, 80, 80, 0, 0, 0, 256, 256, 0, 0, 0,
+ { 0, 0, 0, 0, 0, 138, 0, 0, 129, 0, 0 },
+ { 1, 2, 10 }, { 1, 254, 177 }, { 1, 501, 1 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "Kieran", 2, -8, 0, 0, 21,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 23, 23, 8, 8, 0, 0, 0, 422, 332, 5, 1, 0,
+ { 44, 0, 0, 0, 0, 138, 0, 0, 162, 0, 0 },
+ { 1, 1, 1 }, { 0, 0, 0 }, { 1, 1, 1 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "Ak'shel", 4, -9, 0, 0, 20,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 28, 28, 32, 32, 0, 0, 0, 320, 256, 1, 1, 0,
+ { 44, 0, 0, 0, 0, 138, 0, 0, 162, 0, 0 },
+ { 1, 1, 1 }, { 0, 0, 0 }, { 1, 1, 1 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } }
+};
+
+static const LoLCharacterProvider kLoLCharacterDefsDOSGermanProvider = { ARRAYSIZE(kLoLCharacterDefsDOSGerman), kLoLCharacterDefsDOSGerman };
+
diff --git a/devtools/create_kyradat/resources/lol_dos_russian.h b/devtools/create_kyradat/resources/lol_dos_russian.h
new file mode 100644
index 0000000000..ba27180755
--- /dev/null
+++ b/devtools/create_kyradat/resources/lol_dos_russian.h
@@ -0,0 +1,68 @@
+static const LoLCharacter kLoLCharacterDefsDOSRussian[9] = {
+ { 0x0001, "\x8C\xA0\xA9\xAA\xAB", 0, -1, 0, 0, 17,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 20, 20, 6, 6, 0, 0, 0, 384, 320, 5, 2, 0,
+ { 44, 0, 0, 0, 0, 138, 0, 0, 162, 0, 0 },
+ { 1, 1, 1 }, { 0, 0, 0 }, { 1, 1, 1 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "\x92\xA8\xAC\xAE\xE2\xA8", 0, 2, 0, 0, 22,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 27, 27, 5, 5, 0, 0, 0, 256, 256, 0, 0, 0,
+ { 93, 131, 0, 0, 0, 153, 0, 0, 162, 0, 0 },
+ { 3, 2, 1 }, { 0, 0, 0 }, { 2500, 1000, 250 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "\x81\xA0\xAA\xAA\xA0\xE2\xA0", 3, 3, 0, 0, 23,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 22, 22, 18, 18, 0, 0, 0, 256, 256, 0, 0, 0,
+ { 108, 149, 0, 0, 145, 153, 0, 0, 129, 0, 0 },
+ { 1, 1, 3 }, { 0, 0, 0 }, { 1, 1, 4000 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "\x8B\xAE\xE0\xA0", 1, 4, 0, 0, 24,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 25, 48, 5, 5, 0, 0, 0, 256, 256, 0, 0, 0,
+ { 0, 0, 0, 0, 0, 137, 0, 0, 162, 0, 0 },
+ { 1, 4, 1 }, { 0, 0, 0 }, { 1, 15001, 1 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "\x8A\xAE\xAD\xE0\xA0\xA4", 0, -5, 0, 0, 26,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 23, 23, 10, 10, 0, 0, 0, 366, 358, 2, 3, 0,
+ { 44, 0, 0, 0, 0, 138, 0, 0, 162, 0, 0 },
+ { 1, 1, 1 }, { 0, 0, 0 }, { 1, 1, 1 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "\x8F\xA0\xE3\xAB\xE1\xAE\xAD", 0, 6, 0, 0, 25,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 105, 105, 45, 45, 0, 0, 0, 256, 256, 0, 0, 0,
+ { 0, 0, 0, 0, 0, 138, 0, 0, 129, 0, 0 },
+ { 5, 2, 3 }, { 0, 0, 0 }, { 40000, 501, 3500 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "\x84\xA8\xA0\xAD\xA0", 1, 7, 0, 0, 24,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 50, 50, 80, 80, 0, 0, 0, 256, 256, 0, 0, 0,
+ { 0, 0, 0, 0, 0, 138, 0, 0, 129, 0, 0 },
+ { 1, 2, 10 }, { 1, 254, 177 }, { 1, 501, 1 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "\x8A\xA8\xE0\xA0\xAD", 2, -8, 0, 0, 21,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 23, 23, 8, 8, 0, 0, 0, 422, 332, 5, 1, 0,
+ { 44, 0, 0, 0, 0, 138, 0, 0, 162, 0, 0 },
+ { 1, 1, 1 }, { 0, 0, 0 }, { 1, 1, 1 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "\x80\xAA\xE8\xA5\xAB", 4, -9, 0, 0, 20,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 28, 28, 32, 32, 0, 0, 0, 320, 256, 1, 1, 0,
+ { 44, 0, 0, 0, 0, 138, 0, 0, 162, 0, 0 },
+ { 1, 1, 1 }, { 0, 0, 0 }, { 1, 1, 1 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } }
+};
+
+static const LoLCharacterProvider kLoLCharacterDefsDOSRussianProvider = { ARRAYSIZE(kLoLCharacterDefsDOSRussian), kLoLCharacterDefsDOSRussian };
+
diff --git a/devtools/create_kyradat/resources/lol_fmtowns.h b/devtools/create_kyradat/resources/lol_fmtowns.h
new file mode 100644
index 0000000000..8c9fabf128
--- /dev/null
+++ b/devtools/create_kyradat/resources/lol_fmtowns.h
@@ -0,0 +1,1600 @@
+static const char *const kLoLIngamePakFilesFMTowns[11] = {
+ "VOC.PAK",
+ "GENERAL.PAK",
+ "CHAPTER1.PAK",
+ "CHAPTER2.PAK",
+ "CHAPTER3.PAK",
+ "CHAPTER4.PAK",
+ "CHAPTER5.PAK",
+ "CHAPTER6.PAK",
+ "CHAPTER7.PAK",
+ "CHAPTER8.PAK",
+ "TMUS.PAK"
+};
+
+static const StringListProvider kLoLIngamePakFilesFMTownsProvider = { ARRAYSIZE(kLoLIngamePakFilesFMTowns), kLoLIngamePakFilesFMTowns };
+
+static const char *const kLoLIngameSfxFilesFMTowns[230] = {
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "DOORMTOP",
+ "DOORMTCL",
+ "PMETLHI",
+ "SWING6",
+ "MDAMAGE2",
+ "LEVERDN",
+ "LEVERUP",
+ "MTLDRSLM",
+ "DOORWDOP",
+ "DOORWDCL",
+ "KEYOPEN",
+ "KEYLOCK",
+ "PORTCUL",
+ "PORTCULD",
+ "LOKPICK",
+ "OCEAN2",
+ "NUNCHUK",
+ "SWING",
+ "SHWING1",
+ "SWING6",
+ "THROW",
+ "CROSSBOW",
+ "HEAL1",
+ "FIRESPL1",
+ "PRESSIN",
+ "PRESSOUT",
+ "PLATEON",
+ "PLATEOFF",
+ "DORWDSLM",
+ "LITENIN1",
+ "ICESPEL2",
+ "SPELL4B",
+ "SHIELD1",
+ "3BOLTC",
+ "2BOLTC",
+ "1BOLTC",
+ "DAWNSPL1",
+ "HEALKING",
+ "SPELL7",
+ "SWING1",
+ "EXPLODE",
+ "CROWCAW",
+ "MORPH2",
+ "CHEST",
+ "MONEY",
+ "SPELBK2",
+ "AUTOMAP",
+ "MINECRT3",
+ "CREAK1",
+ "TURNPAG2",
+ "POLGULP1",
+ "GOOEY1",
+ "BUCKBELL",
+ "KEEPXIT2",
+ "VSCREAM4",
+ "EMPTY",
+ "GOOEY1",
+ "GOOEY2",
+ "RIPPOD4",
+ "PODSKEL1",
+ "INVISO",
+ "OPENBOX2",
+ "ACCEPT2",
+ "BOW2",
+ "HACHUCKM",
+ "FOUNDRY2",
+ "FOUNDRY2",
+ "FOUNDRY4",
+ "FOUNDRY6",
+ "CLEANGL1",
+ "CLEANGL2",
+ "GLOWY1",
+ "DORSTNOP",
+ "DORSTNCL",
+ "EMPTY",
+ "EMPTY",
+ "EMPTY",
+ "EMPTY",
+ "ADAMAGE1",
+ "HDAMAGE1",
+ "TDAMAGE1",
+ "BDAMAGE1",
+ "LDAMAGE1",
+ "TDAMAGE2",
+ "CDAMAGE1",
+ "EMPTY",
+ "EMPTY",
+ "EMPTY",
+ "GOOD1",
+ "GOOD2",
+ "EMPTY",
+ "EMPTY",
+ "EMPTY",
+ "LITENIN1",
+ "COMPASS2",
+ "KINGDOR1",
+ "GLASBRK2",
+ "FLUTTER3",
+ "NUNCHUK",
+ "WALLFALL",
+ "WALLHIT",
+ "MWHOA1",
+ "LADDER",
+ "WHITTL3",
+ "ROWBOAT1",
+ "HORSEY2",
+ "SNORT",
+ "PUMPDOR1",
+ "PUMPSM2",
+ "PUMPSM3",
+ "SPARK1",
+ "BEZEL",
+ "SWARM",
+ "CHEST",
+ "WRIT1",
+ "CAUSFOG",
+ "VAELAN2",
+ "ROARSPL1",
+ "RATTLER",
+ "WINK1",
+ "HANDFATE",
+ "QUAKE1",
+ "WIZLAMP1",
+ "SAP2",
+ "MSTDOOM1",
+ "GARDIAN1",
+ "VORTEX1",
+ "LION1",
+ "STEAM",
+ "SQUAWCK",
+ "SLIDEMUG",
+ "SPARKHIT",
+ "SPARKHIT2",
+ "SPARKHIT3",
+ "ICEFORM",
+ "ICEXPLOD",
+ "EXPLODE2",
+ "EXPLODE3",
+ "BOLTQUK2",
+ "BOLT2",
+ "BOLT3",
+ "SNKBITE",
+ "HANDGLOW",
+ "MSTDOOM2",
+ "MSTDOOM3",
+ "GARDIAN2",
+ "PLUSPOWR",
+ "MINSPOWR",
+ "BLUDCURL",
+ "LORAGASP",
+ "POURH2O",
+ "AWHOA2",
+ "HWHOA1",
+ "CWHOA1",
+ "AFALL2",
+ "EMPTY",
+ "CFALL2",
+ "MFALL2",
+ "EMPTY",
+ "EMPTY",
+ "EMPTY",
+ "EMPTY",
+ "EMPTY",
+ "EMPTY",
+ "EMPTY",
+ "EMPTY",
+ "WRIT2",
+ "WRIT3",
+ "WRIT4",
+ "WRIT5",
+ "WRIT6",
+ "RUCKUS1",
+ "RUCKUS3",
+ "CHANT1",
+ "EMPTY",
+ "EMPTY",
+ "EMPTY",
+ "CHANT2",
+ "CHANT3",
+ ""
+};
+
+static const StringListProvider kLoLIngameSfxFilesFMTownsProvider = { ARRAYSIZE(kLoLIngameSfxFilesFMTowns), kLoLIngameSfxFilesFMTowns };
+
+static const byte kLoLIngameSfxIndexFMTowns[1000] = {
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0x34, 0x00, 0x6F, 0x00, 0x7C, 0x00, 0x00, 0x00,
+ 0x7D, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00,
+ 0x7F, 0x00, 0x00, 0x00, 0x36, 0x00, 0x73, 0x00,
+ 0x35, 0x00, 0x9C, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
+ 0x80, 0x00, 0x73, 0x00, 0x81, 0x00, 0x73, 0x00,
+ 0x82, 0x00, 0x73, 0x00, 0x83, 0x00, 0x73, 0x00,
+ 0x84, 0x00, 0x73, 0x00, 0x85, 0x00, 0x73, 0x00,
+ 0x86, 0x00, 0x73, 0x00, 0xD7, 0x00, 0x76, 0x00,
+ 0x87, 0x00, 0x65, 0x00, 0x38, 0x00, 0x5F, 0x00,
+ 0x37, 0x00, 0x5F, 0x00, 0x32, 0x00, 0x0A, 0x00,
+ 0x33, 0x00, 0x64, 0x00, 0x39, 0x00, 0x65, 0x00,
+ 0x3A, 0x00, 0x0A, 0x00, 0x3B, 0x00, 0x14, 0x00,
+ 0x4E, 0x00, 0x65, 0x00, 0x7A, 0x00, 0x64, 0x00,
+ 0x7B, 0x00, 0x64, 0x00, 0x88, 0x00, 0x65, 0x00,
+ 0x3C, 0x00, 0x65, 0x00, 0x3D, 0x00, 0x64, 0x00,
+ 0x89, 0x00, 0x00, 0x00, 0x8E, 0x00, 0x14, 0x00,
+ 0x3E, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00,
+ 0x40, 0x00, 0x65, 0x00, 0x41, 0x00, 0x00, 0x00,
+ 0xC9, 0x00, 0x72, 0x00, 0xCA, 0x00, 0x72, 0x00,
+ 0xCB, 0x00, 0x72, 0x00, 0xCC, 0x00, 0x74, 0x00,
+ 0xCD, 0x00, 0x74, 0x00, 0xCE, 0x00, 0x74, 0x00,
+ 0xCF, 0x00, 0x74, 0x00, 0xD0, 0x00, 0x73, 0x00,
+ 0xD1, 0x00, 0x73, 0x00, 0xD2, 0x00, 0x73, 0x00,
+ 0xD3, 0x00, 0x73, 0x00, 0xD4, 0x00, 0x72, 0x00,
+ 0xD5, 0x00, 0x72, 0x00, 0xD6, 0x00, 0x72, 0x00,
+ 0x42, 0x00, 0x6F, 0x00, 0x43, 0x00, 0x6F, 0x00,
+ 0x44, 0x00, 0x6F, 0x00, 0x45, 0x00, 0x6F, 0x00,
+ 0x46, 0x00, 0x6F, 0x00, 0x47, 0x00, 0x6F, 0x00,
+ 0x48, 0x00, 0x77, 0x00, 0x49, 0x00, 0x89, 0xFF,
+ 0x4F, 0x00, 0x89, 0xFF, 0x50, 0x00, 0x89, 0xFF,
+ 0xA0, 0x00, 0x8A, 0xFF, 0xA1, 0x00, 0x89, 0xFF,
+ 0xA2, 0x00, 0x89, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
+ 0xA3, 0x00, 0x89, 0xFF, 0xA4, 0x00, 0x89, 0xFF,
+ 0x4A, 0x00, 0x13, 0x00, 0x4B, 0x00, 0x13, 0x00,
+ 0x4C, 0x00, 0x32, 0x00, 0x4D, 0x00, 0x32, 0x00,
+ 0x5F, 0x00, 0x0A, 0x00, 0x51, 0x00, 0x00, 0x00,
+ 0x52, 0x00, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x00,
+ 0x53, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00,
+ 0x55, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00,
+ 0x57, 0x00, 0x00, 0x00, 0x58, 0x00, 0x77, 0x00,
+ 0x60, 0x00, 0x00, 0x00, 0x5D, 0x00, 0x6A, 0x00,
+ 0x8A, 0x00, 0x6F, 0x00, 0x8B, 0x00, 0x6F, 0x00,
+ 0x8C, 0x00, 0x00, 0x00, 0x8D, 0x00, 0x00, 0x00,
+ 0x5A, 0x00, 0x77, 0x00, 0x5C, 0x00, 0x00, 0x00,
+ 0x5B, 0x00, 0x00, 0x00, 0x5E, 0x00, 0x6F, 0x00,
+ 0x61, 0x00, 0x76, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0x62, 0x00, 0x76, 0x00, 0x63, 0x00, 0x3C, 0x00,
+ 0x64, 0x00, 0x6D, 0x00, 0x65, 0x00, 0x00, 0x00,
+ 0x66, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00,
+ 0x68, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00,
+ 0x6A, 0x00, 0x00, 0x00, 0x6B, 0x00, 0x00, 0x00,
+ 0x6C, 0x00, 0x00, 0x00, 0x6D, 0x00, 0x00, 0x00,
+ 0x6E, 0x00, 0x00, 0x00, 0x6F, 0x00, 0x00, 0x00,
+ 0x70, 0x00, 0x88, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
+ 0x71, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00,
+ 0x73, 0x00, 0x74, 0x00, 0x74, 0x00, 0x00, 0x00,
+ 0x75, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00,
+ 0x77, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00,
+ 0x79, 0x00, 0x77, 0x00, 0x90, 0x00, 0x00, 0x00,
+ 0x91, 0x00, 0x00, 0x00, 0x92, 0x00, 0x77, 0x00,
+ 0x93, 0x00, 0x1E, 0x00, 0x94, 0x00, 0x89, 0xFF,
+ 0x95, 0x00, 0x77, 0x00, 0x96, 0x00, 0x76, 0x00,
+ 0x97, 0x00, 0x72, 0x00, 0x98, 0x00, 0x00, 0x00,
+ 0x99, 0x00, 0x50, 0x00, 0x9A, 0x00, 0x78, 0x00,
+ 0x9B, 0x00, 0x64, 0x00, 0x9C, 0x00, 0x5A, 0x00,
+ 0x9D, 0x00, 0x64, 0x00, 0x9E, 0x00, 0x65, 0x00,
+ 0x9F, 0x00, 0x66, 0x00, 0xA5, 0x00, 0x89, 0xFF,
+ 0xA6, 0x00, 0x89, 0xFF, 0xA7, 0x00, 0x77, 0x00,
+ 0xA8, 0x00, 0x76, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xA9, 0x00, 0x77, 0x00, 0xAA, 0x00, 0x77, 0x00,
+ 0xAB, 0x00, 0x77, 0x00, 0xAC, 0x00, 0x77, 0x00,
+ 0xAD, 0x00, 0x77, 0x00, 0xAE, 0x00, 0x77, 0x00,
+ 0xAF, 0x00, 0x76, 0x00, 0xB0, 0x00, 0x77, 0x00,
+ 0xB1, 0x00, 0x64, 0x00, 0xB2, 0x00, 0x6F, 0x00,
+ 0xB3, 0x00, 0x6E, 0x00, 0xB4, 0x00, 0x6E, 0x00,
+ 0xB5, 0x00, 0x77, 0x00, 0xB6, 0x00, 0x77, 0x00,
+ 0xB7, 0x00, 0x77, 0x00, 0xB8, 0x00, 0x76, 0x00,
+ 0xB9, 0x00, 0x77, 0x00, 0xBA, 0x00, 0x77, 0x00,
+ 0xBB, 0x00, 0x77, 0x00, 0xBC, 0x00, 0x77, 0x00,
+ 0xBD, 0x00, 0x77, 0x00, 0xBE, 0x00, 0x77, 0x00,
+ 0xBF, 0x00, 0x77, 0x00, 0xC0, 0x00, 0x76, 0x00,
+ 0xC1, 0x00, 0x77, 0x00, 0xC2, 0x00, 0x77, 0x00,
+ 0xC3, 0x00, 0x77, 0x00, 0xC4, 0x00, 0x6E, 0x00,
+ 0xC5, 0x00, 0x6E, 0x00, 0xC6, 0x00, 0x7D, 0x00,
+ 0xC7, 0x00, 0x78, 0x00, 0xC8, 0x00, 0x78, 0x00,
+ 0xD8, 0x00, 0x77, 0x00, 0xD9, 0x00, 0x77, 0x00,
+ 0xDA, 0x00, 0x77, 0x00, 0xDB, 0x00, 0x77, 0x00,
+ 0xDC, 0x00, 0x77, 0x00, 0xDD, 0x00, 0x78, 0x00,
+ 0xDE, 0x00, 0x78, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xE3, 0x00, 0x77, 0x00, 0xE4, 0x00, 0x77, 0x00,
+ 0xE0, 0x00, 0x1E, 0x00, 0xDF, 0x00, 0x77, 0x00,
+ 0xE1, 0x00, 0x05, 0x00, 0xE2, 0x00, 0x0A, 0x00,
+ 0x00, 0x00, 0x50, 0x00, 0x01, 0x00, 0x50, 0x00,
+ 0x02, 0x00, 0x50, 0x00, 0x03, 0x00, 0x50, 0x00,
+ 0x04, 0x00, 0x50, 0x00, 0x05, 0x00, 0x50, 0x00,
+ 0x06, 0x00, 0x50, 0x00, 0x07, 0x00, 0x50, 0x00,
+ 0x08, 0x00, 0x50, 0x00, 0x09, 0x00, 0x50, 0x00,
+ 0x0A, 0x00, 0x50, 0x00, 0x0B, 0x00, 0x50, 0x00,
+ 0x0C, 0x00, 0x50, 0x00, 0x0D, 0x00, 0x50, 0x00,
+ 0x0E, 0x00, 0x50, 0x00, 0x0F, 0x00, 0x50, 0x00,
+ 0x10, 0x00, 0x50, 0x00, 0x11, 0x00, 0x5A, 0x00,
+ 0x12, 0x00, 0x5A, 0x00, 0x13, 0x00, 0x5A, 0x00,
+ 0x14, 0x00, 0x5A, 0x00, 0x15, 0x00, 0x5A, 0x00,
+ 0x16, 0x00, 0x5A, 0x00, 0x17, 0x00, 0x5A, 0x00,
+ 0x18, 0x00, 0x5A, 0x00, 0x19, 0x00, 0x5A, 0x00,
+ 0x1A, 0x00, 0x5A, 0x00, 0x1B, 0x00, 0x5A, 0x00,
+ 0x1C, 0x00, 0x5A, 0x00, 0x1D, 0x00, 0x5A, 0x00,
+ 0x1E, 0x00, 0x5A, 0x00, 0x1F, 0x00, 0x5A, 0x00,
+ 0x20, 0x00, 0x5A, 0x00, 0x21, 0x00, 0x73, 0x00,
+ 0x22, 0x00, 0x73, 0x00, 0x23, 0x00, 0x73, 0x00,
+ 0x24, 0x00, 0x73, 0x00, 0x25, 0x00, 0x73, 0x00,
+ 0x26, 0x00, 0x73, 0x00, 0x27, 0x00, 0x73, 0x00,
+ 0x28, 0x00, 0x73, 0x00, 0x29, 0x00, 0x73, 0x00,
+ 0x2A, 0x00, 0x73, 0x00, 0x2B, 0x00, 0x50, 0x00,
+ 0x2C, 0x00, 0x5A, 0x00, 0x2D, 0x00, 0x5A, 0x00,
+ 0x2E, 0x00, 0x5A, 0x00, 0x2F, 0x00, 0x5A, 0x00,
+ 0x30, 0x00, 0x5A, 0x00, 0x31, 0x00, 0x5A, 0x00
+};
+
+static const ByteProvider kLoLIngameSfxIndexFMTownsProvider = { ARRAYSIZE(kLoLIngameSfxIndexFMTowns), kLoLIngameSfxIndexFMTowns };
+
+static const SpellProperty kLoLSpellPropertiesFMTowns[10] = {
+ { 16436, { 5, 10, 15, 25 }, 0, 0, { 0, 0, 0, 0 }, 0, 0, 0x0100 },
+ { 16437, { 5, 10, 25, 60 }, 0, 0, { 0, 0, 0, 0 }, 0, 0, 0x0001 },
+ { 16438, { 8, 15, 30, 80 }, 0, 0, { 0, 0, 0, 0 }, 0, 0, 0x0102 },
+ { 16440, { 20, 35, 65, 100 }, 0, 0, { 0, 0, 0, 0 }, 0, 0, 0x0103 },
+ { 16441, { 30, 60, 90, 120 }, 0, 0, { 0, 0, 0, 0 }, 0, 0, 0x0104 },
+ { 16442, { 30, 60, 90, 150 }, 0, 0, { 0, 0, 0, 0 }, 0, 0, 0x0105 },
+ { 16439, { 25, 30, 50, 100 }, 0, 0, { 0, 0, 0, 0 }, 0, 0, 0x0106 },
+ { 16443, { 3, 6, 12, 24 }, 0, 0, { 0, 0, 0, 0 }, 0, 0, 0x0107 },
+ { 16975, { 15, 15, 15, 15 }, 0, 0, { 0, 0, 0, 0 }, 0, 0, 0x0108 },
+ { 16975, { 15, 15, 15, 15 }, 15, 0, { 0, 0, 0, 0 }, 0, 0, 0x0108 }
+};
+
+static const SpellPropertyProvider kLoLSpellPropertiesFMTownsProvider = { ARRAYSIZE(kLoLSpellPropertiesFMTowns), kLoLSpellPropertiesFMTowns };
+
+static const byte kLoLGameShapeMapFMTowns[276] = {
+ 0x15, 0x54, 0x05, 0x35, 0x09, 0x36, 0x00, 0x34,
+ 0x00, 0x34, 0x00, 0x34, 0x00, 0x3A, 0x26, 0x3B,
+ 0x05, 0x35, 0x07, 0x37, 0x18, 0x3E, 0x0D, 0x3C,
+ 0x06, 0x40, 0x06, 0x3D, 0x01, 0x54, 0x01, 0x54,
+ 0x0A, 0x54, 0x0A, 0x54, 0x0A, 0x54, 0x04, 0x54,
+ 0x04, 0x54, 0x2D, 0x54, 0x2D, 0x54, 0x0B, 0x39,
+ 0x24, 0x54, 0x03, 0x38, 0x00, 0x3A, 0x1E, 0x3C,
+ 0x1E, 0x3C, 0x1B, 0x54, 0x14, 0x54, 0x29, 0x54,
+ 0x02, 0x54, 0x0C, 0x54, 0x22, 0x54, 0x21, 0x3F,
+ 0x0D, 0x3C, 0x25, 0x54, 0x1A, 0x3F, 0x04, 0x54,
+ 0x30, 0x54, 0x31, 0x54, 0x32, 0x54, 0x32, 0x54,
+ 0x00, 0x34, 0x00, 0x34, 0x00, 0x34, 0x00, 0x34,
+ 0x17, 0x54, 0x17, 0x54, 0x0E, 0x54, 0x0E, 0x54,
+ 0x0E, 0x54, 0x26, 0x3B, 0x2C, 0x54, 0x21, 0x3F,
+ 0x07, 0x37, 0x27, 0x54, 0x1B, 0x54, 0x1B, 0x54,
+ 0x1B, 0x54, 0x1B, 0x54, 0x1B, 0x54, 0x1B, 0x54,
+ 0x1B, 0x54, 0x1B, 0x54, 0x22, 0x54, 0x22, 0x54,
+ 0x16, 0x54, 0x2D, 0x54, 0x3B, 0x54, 0x3B, 0x54,
+ 0x3A, 0x54, 0x17, 0x54, 0x1B, 0x54, 0x1B, 0x54,
+ 0x17, 0x54, 0x0A, 0x54, 0x0A, 0x54, 0x0A, 0x54,
+ 0x1F, 0x54, 0x17, 0x54, 0x27, 0x54, 0x1B, 0x54,
+ 0x1E, 0x3C, 0x2A, 0x54, 0x2F, 0x54, 0x2F, 0x54,
+ 0x2F, 0x54, 0x2F, 0x54, 0x2F, 0x54, 0x2F, 0x54,
+ 0x2C, 0x54, 0x2C, 0x54, 0x2C, 0x54, 0x2C, 0x54,
+ 0x34, 0x54, 0x0F, 0x54, 0x35, 0x41, 0x1B, 0x54,
+ 0x1B, 0x54, 0x1B, 0x54, 0x1B, 0x54, 0x2B, 0x54,
+ 0x1D, 0x54, 0x1D, 0x54, 0x28, 0x54, 0x28, 0x54,
+ 0x28, 0x54, 0x28, 0x54, 0x01, 0x54, 0x14, 0x54,
+ 0x14, 0x54, 0x14, 0x54, 0x14, 0x54, 0x1B, 0x54,
+ 0x27, 0x54, 0x1B, 0x54, 0x1B, 0x54, 0x1B, 0x54,
+ 0x1B, 0x54, 0x36, 0x54, 0x37, 0x54, 0x38, 0x54,
+ 0x39, 0x54, 0x1B, 0x54, 0x1B, 0x54, 0x1B, 0x54,
+ 0x1B, 0x54, 0x27, 0x54, 0x2E, 0x54, 0x2E, 0x54,
+ 0x2E, 0x54, 0x2E, 0x54, 0x17, 0x54, 0x01, 0x54,
+ 0x1C, 0x54, 0x1C, 0x54
+};
+
+static const ByteProvider kLoLGameShapeMapFMTownsProvider = { ARRAYSIZE(kLoLGameShapeMapFMTowns), kLoLGameShapeMapFMTowns };
+
+static const byte kLoLSceneItemOffsFMTowns[8] = {
+ 0x00, 0xFE, 0x01, 0xFF, 0x02, 0x00, 0x01, 0xFF
+};
+
+static const ByteProvider kLoLSceneItemOffsFMTownsProvider = { ARRAYSIZE(kLoLSceneItemOffsFMTowns), kLoLSceneItemOffsFMTowns };
+
+static const byte kLoLCharInvIndexFMTowns[5] = {
+ 0x00, 0x00, 0x03, 0x01, 0x02
+};
+
+static const ByteProvider kLoLCharInvIndexFMTownsProvider = { ARRAYSIZE(kLoLCharInvIndexFMTowns), kLoLCharInvIndexFMTowns };
+
+static const byte kLoLCharInvDefsFMTowns[88] = {
+ 0x05, 0x34, 0x50, 0x34, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x05, 0x04, 0x05, 0x1C, 0x50, 0x04, 0x50, 0x1C,
+ 0x05, 0x5D, 0x0F, 0x4E, 0x50, 0x4E, 0x05, 0x19,
+ 0x50, 0x19, 0x05, 0x49, 0x50, 0x49, 0x05, 0x01,
+ 0x05, 0x31, 0x50, 0x01, 0x50, 0x31, 0x05, 0x61,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x05, 0x34, 0x50, 0x34,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x05, 0x04, 0x05, 0x1C,
+ 0x50, 0x04, 0x50, 0x1C, 0x05, 0x5D, 0x0F, 0x4E,
+ 0x50, 0x4E, 0x05, 0x34, 0x50, 0x34, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x05, 0x04, 0x05, 0x1C, 0x50, 0x04,
+ 0x50, 0x1C, 0xFF, 0xFF, 0x0F, 0x4E, 0x50, 0x4E
+};
+
+static const ByteProvider kLoLCharInvDefsFMTownsProvider = { ARRAYSIZE(kLoLCharInvDefsFMTowns), kLoLCharInvDefsFMTowns };
+
+static const uint16 kLoLCharDefsManFMTowns[9] = {
+ 0x0100, 0x0100, 0x0100, 0x0032, 0x0100, 0x0100, 0x0100, 0x0100,
+ 0x0004
+};
+
+static const Uint16Provider kLoLCharDefsManFMTownsProvider = { ARRAYSIZE(kLoLCharDefsManFMTowns), kLoLCharDefsManFMTowns };
+
+static const uint16 kLoLCharDefsWomanFMTowns[9] = {
+ 0x0100, 0x0100, 0x0100, 0x0032, 0x0100, 0x0100, 0x0100, 0x0100,
+ 0x0004
+};
+
+static const Uint16Provider kLoLCharDefsWomanFMTownsProvider = { ARRAYSIZE(kLoLCharDefsWomanFMTowns), kLoLCharDefsWomanFMTowns };
+
+static const uint16 kLoLCharDefsKieranFMTowns[9] = {
+ 0x0180, 0x0080, 0x00C0, 0x0032, 0x0200, 0x00A6, 0x0100, 0x0140,
+ 0x0006
+};
+
+static const Uint16Provider kLoLCharDefsKieranFMTownsProvider = { ARRAYSIZE(kLoLCharDefsKieranFMTowns), kLoLCharDefsKieranFMTowns };
+
+static const uint16 kLoLCharDefsAkshelFMTowns[9] = {
+ 0x00C0, 0x00C0, 0x0140, 0x0032, 0x0100, 0x0180, 0x0180, 0x0100,
+ 0x0004
+};
+
+static const Uint16Provider kLoLCharDefsAkshelFMTownsProvider = { ARRAYSIZE(kLoLCharDefsAkshelFMTowns), kLoLCharDefsAkshelFMTowns };
+
+static const uint32 kLoLExpRequirementsFMTowns[11] = {
+ 0x00000000, 0x000001F4, 0x000005DC, 0x00001388, 0x000061A8, 0x0000C350, 0x00013880, 0x0001D4C0,
+ 0x0002BF20, 0x00041EB0, 0x7FFFFFFF
+};
+
+static const Uint32Provider kLoLExpRequirementsFMTownsProvider = { ARRAYSIZE(kLoLExpRequirementsFMTowns), kLoLExpRequirementsFMTowns };
+
+static const uint16 kLoLMonsterModifiers1FMTowns[3] = {
+ 0x00C0, 0x0100, 0x0180
+};
+
+static const Uint16Provider kLoLMonsterModifiers1FMTownsProvider = { ARRAYSIZE(kLoLMonsterModifiers1FMTowns), kLoLMonsterModifiers1FMTowns };
+
+static const uint16 kLoLMonsterModifiers2FMTowns[3] = {
+ 0x0100, 0x0100, 0x00C0
+};
+
+static const Uint16Provider kLoLMonsterModifiers2FMTownsProvider = { ARRAYSIZE(kLoLMonsterModifiers2FMTowns), kLoLMonsterModifiers2FMTowns };
+
+static const uint16 kLoLMonsterModifiers3FMTowns[3] = {
+ 0x0140, 0x0100, 0x0080
+};
+
+static const Uint16Provider kLoLMonsterModifiers3FMTownsProvider = { ARRAYSIZE(kLoLMonsterModifiers3FMTowns), kLoLMonsterModifiers3FMTowns };
+
+static const byte kLoLMonsterShiftOffsetsFMTowns[32] = {
+ 0x01, 0x01, 0x01, 0x00, 0x01, 0xFF, 0x00, 0xFF,
+ 0x00, 0x00, 0x00, 0x01, 0xFF, 0x01, 0xFF, 0x00,
+ 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x01,
+ 0x01, 0x01, 0x01, 0x00, 0x01, 0xFF, 0x00, 0x00
+};
+
+static const ByteProvider kLoLMonsterShiftOffsetsFMTownsProvider = { ARRAYSIZE(kLoLMonsterShiftOffsetsFMTowns), kLoLMonsterShiftOffsetsFMTowns };
+
+static const byte kLoLMonsterDirFlagsFMTowns[16] = {
+ 0x08, 0x14, 0x00, 0x04, 0x04, 0x08, 0x14, 0x00,
+ 0x00, 0x04, 0x08, 0x14, 0x14, 0x00, 0x04, 0x08
+};
+
+static const ByteProvider kLoLMonsterDirFlagsFMTownsProvider = { ARRAYSIZE(kLoLMonsterDirFlagsFMTowns), kLoLMonsterDirFlagsFMTowns };
+
+static const byte kLoLMonsterScaleYFMTowns[30] = {
+ 0x7C, 0x78, 0x74, 0x70, 0x6C, 0x68, 0x65, 0x62,
+ 0x5F, 0x5C, 0x59, 0x56, 0x53, 0x50, 0x4D, 0x4A,
+ 0x48, 0x46, 0x44, 0x43, 0x41, 0x40, 0x3E, 0x3D,
+ 0x3C, 0x3B, 0x3A, 0x39, 0x38, 0x38
+};
+
+static const ByteProvider kLoLMonsterScaleYFMTownsProvider = { ARRAYSIZE(kLoLMonsterScaleYFMTowns), kLoLMonsterScaleYFMTowns };
+
+static const byte kLoLMonsterScaleXFMTowns[29] = {
+ 0x98, 0x98, 0x90, 0x88, 0x80, 0x76, 0x6E, 0x68,
+ 0x62, 0x5C, 0x58, 0x54, 0x50, 0x4A, 0x44, 0x40,
+ 0x3C, 0x38, 0x36, 0x32, 0x30, 0x2C, 0x2A, 0x28,
+ 0x26, 0x24, 0x22, 0x20, 0x20
+};
+
+static const ByteProvider kLoLMonsterScaleXFMTownsProvider = { ARRAYSIZE(kLoLMonsterScaleXFMTowns), kLoLMonsterScaleXFMTowns };
+
+static const uint16 kLoLMonsterScaleWHFMTowns[65] = {
+ 0x0041, 0x0045, 0x0049, 0x004D, 0x0051, 0x0055, 0x0059, 0x005D,
+ 0x0062, 0x0066, 0x006A, 0x006E, 0x0072, 0x0076, 0x007A, 0x007E,
+ 0x0082, 0x0086, 0x008A, 0x008E, 0x0092, 0x0096, 0x009A, 0x009E,
+ 0x00A3, 0x00A7, 0x00AB, 0x00AF, 0x00B3, 0x00B7, 0x00BB, 0x00BF,
+ 0x00C3, 0x00C7, 0x00CB, 0x00CF, 0x00D3, 0x00D7, 0x00DB, 0x00DF,
+ 0x00E4, 0x00E8, 0x00EC, 0x00F0, 0x00F4, 0x00F8, 0x00FC, 0x0100,
+ 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+ 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+ 0x0100
+};
+
+static const Uint16Provider kLoLMonsterScaleWHFMTownsProvider = { ARRAYSIZE(kLoLMonsterScaleWHFMTowns), kLoLMonsterScaleWHFMTowns };
+
+static const FlyingObjectShape kLoLFlyingObjectShpFMTowns[13] = {
+ { 0, 0, 1, 0x00, 0x40, },
+ { 2, 2, 3, 0x00, 0x00, },
+ { 4, 4, 4, 0x00, 0x00, },
+ { 5, 5, 5, 0x20, 0x00, },
+ { 6, 6, 6, 0x20, 0x00, },
+ { 7, 7, 7, 0x20, 0x00, },
+ { 9, 8, 15, 0x00, 0x00, },
+ { 11, 10, 12, 0x00, 0x00, },
+ { 12, 12, 12, 0x20, 0x00, },
+ { 14, 13, 15, 0x00, 0x00, },
+ { 16, 16, 16, 0x00, 0x00, },
+ { 17, 17, 17, 0x20, 0x00, },
+ { 18, 18, 18, 0x00, 0x00, }
+};
+
+static const FlyingObjectShapeProvider kLoLFlyingObjectShpFMTownsProvider = { ARRAYSIZE(kLoLFlyingObjectShpFMTowns), kLoLFlyingObjectShpFMTowns };
+
+static const uint16 kLoLInventoryDescFMTowns[11] = {
+ 0x417A, 0x417B, 0x417A, 0x417B, 0x417C, 0x417D, 0x417E, 0x417F,
+ 0x4180, 0x4181, 0x4181
+};
+
+static const Uint16Provider kLoLInventoryDescFMTownsProvider = { ARRAYSIZE(kLoLInventoryDescFMTowns), kLoLInventoryDescFMTowns };
+
+static const char *const kLoLLevelShpListFMTowns[12] = {
+ "KEEP.SHP",
+ "FOREST1.SHP",
+ "MANOR.SHP",
+ "CAVE1.SHP",
+ "SWAMP.SHP",
+ "URBISH.SHP",
+ "MINE1.SHP",
+ "TOWER1.SHP",
+ "YVEL1.SHP",
+ "CATWALK.SHP",
+ "RUIN.SHP",
+ "CIMMERIA.SHP"
+};
+
+static const StringListProvider kLoLLevelShpListFMTownsProvider = { ARRAYSIZE(kLoLLevelShpListFMTowns), kLoLLevelShpListFMTowns };
+
+static const char *const kLoLLevelDatListFMTowns[12] = {
+ "KEEP.DAT",
+ "FOREST1.DAT",
+ "MANOR.DAT",
+ "CAVE1.DAT",
+ "SWAMP.DAT",
+ "URBISH.DAT",
+ "MINE1.DAT",
+ "TOWER1.DAT",
+ "YVEL1.DAT",
+ "CATWALK.DAT",
+ "RUIN.DAT",
+ "CIMMERIA.DAT"
+};
+
+static const StringListProvider kLoLLevelDatListFMTownsProvider = { ARRAYSIZE(kLoLLevelDatListFMTowns), kLoLLevelDatListFMTowns };
+
+static const CompassDef kLoLCompassDefsFMTowns[32] = {
+ { 0, 3, -3, 0x00 },
+ { 1, 3, -3, 0x00 },
+ { 2, 3, -3, 0x00 },
+ { 3, 5, -3, 0x00 },
+ { 4, 5, -3, 0x00 },
+ { 5, 6, -3, 0x00 },
+ { 6, 6, -3, 0x00 },
+ { 7, 6, -3, 0x00 },
+ { 8, 6, -3, 0x00 },
+ { 7, 6, 4, 0x02 },
+ { 6, 6, 4, 0x02 },
+ { 5, 6, 4, 0x02 },
+ { 4, 5, 4, 0x02 },
+ { 3, 5, 4, 0x02 },
+ { 2, 3, 4, 0x02 },
+ { 1, 3, 4, 0x02 },
+ { 0, 3, 4, 0x02 },
+ { 1, 2, 4, 0x03 },
+ { 2, 2, 4, 0x03 },
+ { 3, 0, 4, 0x03 },
+ { 4, 0, 4, 0x03 },
+ { 5, -1, 4, 0x03 },
+ { 6, -1, 4, 0x03 },
+ { 7, -1, 4, 0x03 },
+ { 8, -1, -3, 0x01 },
+ { 7, -1, -3, 0x01 },
+ { 6, -1, -3, 0x01 },
+ { 5, -1, -3, 0x01 },
+ { 4, 0, -3, 0x01 },
+ { 3, 0, -3, 0x01 },
+ { 2, 2, -3, 0x01 },
+ { 1, 2, -3, 0x01 }
+};
+
+static const CompassDefProvider kLoLCompassDefsFMTownsProvider = { ARRAYSIZE(kLoLCompassDefsFMTowns), kLoLCompassDefsFMTowns };
+
+static const byte kLoLStashSetupFMTowns[12] = {
+ 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x03,
+ 0x03, 0x00, 0x01, 0x01
+};
+
+static const ByteProvider kLoLStashSetupFMTownsProvider = { ARRAYSIZE(kLoLStashSetupFMTowns), kLoLStashSetupFMTowns };
+
+static const byte kLoLDscWallsFMTowns[36] = {
+ 0xFF, 0xFF, 0x02, 0x01, 0x02, 0x01, 0x02, 0xFF,
+ 0x02, 0x03, 0x02, 0x03, 0xFF, 0xFF, 0x02, 0x01,
+ 0x02, 0x01, 0x02, 0xFF, 0x02, 0x03, 0x02, 0x03,
+ 0x02, 0x01, 0x02, 0xFF, 0x02, 0x03, 0xFF, 0x01,
+ 0x02, 0xFF, 0xFF, 0x03
+};
+
+static const ByteProvider kLoLDscWallsFMTownsProvider = { ARRAYSIZE(kLoLDscWallsFMTowns), kLoLDscWallsFMTowns };
+
+static const byte kLoLDscShapeIndexFMTowns[36] = {
+ 0x03, 0x09, 0x03, 0x08, 0x03, 0x07, 0x03, 0x03,
+ 0x03, 0xF9, 0x03, 0xF8, 0x03, 0xF7, 0x02, 0x09,
+ 0x02, 0x06, 0x02, 0x02, 0x02, 0xFA, 0x02, 0xF7,
+ 0x01, 0x05, 0x01, 0x01, 0x01, 0xFB, 0x00, 0x04,
+ 0x00, 0x00, 0x00, 0xFC
+};
+
+static const ByteProvider kLoLDscShapeIndexFMTownsProvider = { ARRAYSIZE(kLoLDscShapeIndexFMTowns), kLoLDscShapeIndexFMTowns };
+
+static const byte kLoLDscOvlMapFMTowns[10] = {
+ 0x00, 0x01, 0x01, 0x01, 0x04, 0x05, 0x05, 0x05,
+ 0x05, 0x04
+};
+
+static const ByteProvider kLoLDscOvlMapFMTownsProvider = { ARRAYSIZE(kLoLDscOvlMapFMTowns), kLoLDscOvlMapFMTowns };
+
+static const uint16 kLoLDscScaleWidthDataFMTowns[36] = {
+ 0x0060, 0x0000, 0x0060, 0x00CE, 0x0060, 0x0055, 0x0060, 0x0000,
+ 0x0060, 0x0055, 0x0060, 0x00CE, 0x0060, 0x0000, 0x00A0, 0x00AE,
+ 0x00A0, 0x00AA, 0x00A0, 0x0000, 0x00A0, 0x00AA, 0x00A0, 0x00AE,
+ 0x0100, 0x0100, 0x0100, 0x0000, 0x0100, 0x0100, 0x0000, 0x0100,
+ 0x0100, 0x0000, 0x0000, 0x0100
+};
+
+static const Uint16Provider kLoLDscScaleWidthDataFMTownsProvider = { ARRAYSIZE(kLoLDscScaleWidthDataFMTowns), kLoLDscScaleWidthDataFMTowns };
+
+static const uint16 kLoLDscScaleHeightDataFMTowns[36] = {
+ 0x006A, 0x0000, 0x006A, 0x006A, 0x006A, 0x006A, 0x006A, 0x0000,
+ 0x006A, 0x006A, 0x006A, 0x006A, 0x006A, 0x0000, 0x00AA, 0x0056,
+ 0x00AA, 0x00AA, 0x00AA, 0x0000, 0x00AA, 0x00AA, 0x00AA, 0x0056,
+ 0x0100, 0x0100, 0x0100, 0x0000, 0x0100, 0x0100, 0x0000, 0x0100,
+ 0x0100, 0x0000, 0x0000, 0x0100
+};
+
+static const Uint16Provider kLoLDscScaleHeightDataFMTownsProvider = { ARRAYSIZE(kLoLDscScaleHeightDataFMTowns), kLoLDscScaleHeightDataFMTowns };
+
+static const uint16 kLoLDscXFMTowns[36] = {
+ 0xFFB0, 0xFFE0, 0xFFE0, 0x0010, 0x0010, 0x0040, 0x0040, 0x0000,
+ 0x0070, 0x0070, 0x00A0, 0x00A0, 0x00D0, 0x00D0, 0xFF86, 0x0000,
+ 0xFFE0, 0x0030, 0x0030, 0x0000, 0x0080, 0x0080, 0x00D0, 0x00B0,
+ 0xFF98, 0x0018, 0x0018, 0x0000, 0x0098, 0x0098, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x00B0, 0x00B0
+};
+
+static const Uint16Provider kLoLDscXFMTownsProvider = { ARRAYSIZE(kLoLDscXFMTowns), kLoLDscXFMTowns };
+
+static const byte kLoLBaseDscYFMTowns[36] = {
+ 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B,
+ 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x14, 0x1C,
+ 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x1C,
+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00
+};
+
+static const ByteProvider kLoLBaseDscYFMTownsProvider = { ARRAYSIZE(kLoLBaseDscYFMTowns), kLoLBaseDscYFMTowns };
+
+static const byte kLoLDscTileIndexFMTowns[18] = {
+ 0x00, 0x06, 0x01, 0x05, 0x02, 0x04, 0x03, 0x07,
+ 0x0B, 0x08, 0x0A, 0x09, 0x0C, 0x0E, 0x0D, 0x0F,
+ 0x11, 0x10
+};
+
+static const ByteProvider kLoLDscTileIndexFMTownsProvider = { ARRAYSIZE(kLoLDscTileIndexFMTowns), kLoLDscTileIndexFMTowns };
+
+static const byte kLoLDscUnk2FMTowns[23] = {
+ 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03,
+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x12, 0x12, 0x12, 0x12, 0x12
+};
+
+static const ByteProvider kLoLDscUnk2FMTownsProvider = { ARRAYSIZE(kLoLDscUnk2FMTowns), kLoLDscUnk2FMTowns };
+
+static const byte kLoLDscDoorShapeIndexFMTowns[23] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01
+};
+
+static const ByteProvider kLoLDscDoorShapeIndexFMTownsProvider = { ARRAYSIZE(kLoLDscDoorShapeIndexFMTowns), kLoLDscDoorShapeIndexFMTowns };
+
+static const byte kLoLDscDimData1FMTowns[324] = {
+ 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7,
+ 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7,
+ 0xD8, 0xD7, 0xD8, 0xD8, 0x02, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xFE, 0xD7, 0xD8, 0xD8, 0xD8, 0xD7, 0x03,
+ 0xD8, 0xFD, 0xD8, 0xD8, 0xD8, 0xFE, 0xD8, 0x08,
+ 0xD8, 0xD8, 0xD8, 0xFE, 0xF8, 0x06, 0xD8, 0xD8,
+ 0xFA, 0x03, 0xD8, 0xFD, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xFA, 0xD7,
+ 0x10, 0xD8, 0xFA, 0xD7, 0x10, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xF2, 0xD8, 0x14, 0xD8, 0xD8,
+ 0xD8, 0xF0, 0x0E, 0x14, 0xD8, 0xED, 0x10, 0xD8,
+ 0xD8, 0x13, 0xD8, 0xD8, 0xD8, 0xD8, 0xEC, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD7, 0x14, 0xD8, 0xED,
+ 0xD7, 0xD8, 0xD8, 0x13, 0xD7, 0xD7, 0xD7, 0xD7,
+ 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7,
+ 0xD7, 0xD7, 0xD7, 0xD7, 0xD8, 0xD7, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD7, 0xD8,
+ 0xD8, 0xD8, 0xD7, 0xD8, 0xD8, 0xD7, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0x06, 0xD8, 0xD8, 0xFA, 0x03, 0xD8, 0xFD,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xFA, 0xD8, 0x10, 0xD8, 0xFA, 0xD7,
+ 0x10, 0xFD, 0xD8, 0x13, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xF0, 0xD8, 0xD8,
+ 0xD8, 0xED, 0x10, 0xD8, 0xD8, 0x13, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD7, 0xD8, 0xD8, 0xD8, 0xD7, 0xD8, 0xD8, 0xD7,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0x03, 0xD8, 0xFD,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xFD, 0xD8,
+ 0x13, 0xFD, 0xD8, 0x13, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xED, 0xD8, 0xD8, 0xD8, 0x13, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8
+};
+
+static const ByteProvider kLoLDscDimData1FMTownsProvider = { ARRAYSIZE(kLoLDscDimData1FMTowns), kLoLDscDimData1FMTowns };
+
+static const byte kLoLDscDimData2FMTowns[648] = {
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x00, 0x16, 0x16, 0x00, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x02, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x02, 0x16, 0x00, 0x04, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x16, 0x00, 0x00, 0x03,
+ 0x00, 0x16, 0x03, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x02, 0x16, 0x00, 0x16, 0x00, 0x08,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x02,
+ 0x16, 0x00, 0x00, 0x06, 0x00, 0x16, 0x00, 0x16,
+ 0x06, 0x16, 0x00, 0x03, 0x00, 0x16, 0x03, 0x00,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x06, 0x16, 0x08, 0x0E,
+ 0x00, 0x10, 0x00, 0x16, 0x03, 0x16, 0x06, 0x10,
+ 0x00, 0x13, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x0E, 0x16,
+ 0x00, 0x16, 0x00, 0x14, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x10, 0x16, 0x16, 0x00, 0x00, 0x14,
+ 0x00, 0x16, 0x13, 0x16, 0x00, 0x10, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x13, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x14, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x12, 0x16, 0x14, 0x16, 0x00, 0x16, 0x13, 0x16,
+ 0x16, 0x00, 0x00, 0x16, 0x00, 0x16, 0x00, 0x13,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x00, 0x16, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x00, 0x16, 0x16, 0x00,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x06, 0x00, 0x16, 0x00, 0x16,
+ 0x06, 0x16, 0x00, 0x03, 0x00, 0x16, 0x03, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x06, 0x16, 0x00, 0x16,
+ 0x00, 0x10, 0x00, 0x16, 0x03, 0x16, 0x07, 0x0F,
+ 0x00, 0x13, 0x03, 0x16, 0x00, 0x16, 0x00, 0x13,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x10, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x13, 0x16, 0x00, 0x10, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x13, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x00, 0x16, 0x16, 0x00,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x03, 0x00, 0x16, 0x03, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x03, 0x16, 0x00, 0x16,
+ 0x00, 0x13, 0x03, 0x16, 0x00, 0x16, 0x00, 0x13,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x13, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x13, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16
+};
+
+static const ByteProvider kLoLDscDimData2FMTownsProvider = { ARRAYSIZE(kLoLDscDimData2FMTowns), kLoLDscDimData2FMTowns };
+
+static const byte kLoLDscBlockMapFMTowns[12] = {
+ 0x02, 0x03, 0x00, 0x01, 0x01, 0x02, 0x03, 0x00,
+ 0x03, 0x00, 0x01, 0x02
+};
+
+static const ByteProvider kLoLDscBlockMapFMTownsProvider = { ARRAYSIZE(kLoLDscBlockMapFMTowns), kLoLDscBlockMapFMTowns };
+
+static const byte kLoLDscDimMapFMTowns[18] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x03,
+ 0x03, 0x03
+};
+
+static const ByteProvider kLoLDscDimMapFMTownsProvider = { ARRAYSIZE(kLoLDscDimMapFMTowns), kLoLDscDimMapFMTowns };
+
+static const byte kLoLDscOvlIndexFMTowns[20] = {
+ 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02, 0x03,
+ 0x03, 0x03, 0x04, 0x04, 0x05, 0x05, 0x05, 0x06,
+ 0x06, 0x07, 0x07, 0x07
+};
+
+static const ByteProvider kLoLDscOvlIndexFMTownsProvider = { ARRAYSIZE(kLoLDscOvlIndexFMTowns), kLoLDscOvlIndexFMTowns };
+
+static const byte kLoLDscBlockIndexFMTowns[72] = {
+ 0x9D, 0x9E, 0x9F, 0xA0, 0xA1, 0xA2, 0xA3, 0xBE,
+ 0xBF, 0xC0, 0xC1, 0xC2, 0xDF, 0xE0, 0xE1, 0xFF,
+ 0x00, 0x01, 0xA3, 0xC3, 0xE3, 0x03, 0x23, 0x43,
+ 0x63, 0xC2, 0xE2, 0x02, 0x22, 0x42, 0xE1, 0x01,
+ 0x21, 0xE0, 0x00, 0x20, 0x63, 0x62, 0x61, 0x60,
+ 0x5F, 0x5E, 0x5D, 0x42, 0x41, 0x40, 0x3F, 0x3E,
+ 0x21, 0x20, 0x1F, 0x01, 0x00, 0xFF, 0x5D, 0x3D,
+ 0x1D, 0xFD, 0xDD, 0xBD, 0x9D, 0x3E, 0x1E, 0xFE,
+ 0xDE, 0xBE, 0x1F, 0xFF, 0xDF, 0x20, 0x00, 0xE0
+};
+
+static const ByteProvider kLoLDscBlockIndexFMTownsProvider = { ARRAYSIZE(kLoLDscBlockIndexFMTowns), kLoLDscBlockIndexFMTowns };
+
+static const byte kLoLDscDoorY2FMTowns[128] = {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x0D, 0x08, 0x03, 0x12, 0x0E, 0x09, 0x04, 0x00,
+ 0x13, 0x0F, 0x0A, 0x05, 0x01, 0x14, 0x10, 0x0B,
+ 0x06, 0x02, 0x11, 0x0C, 0x07, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x14, 0x13, 0x12, 0x11, 0x10, 0x0F, 0x0E, 0x0D,
+ 0x0C, 0x0B, 0x0A, 0x09, 0x08, 0x07, 0x06, 0x05,
+ 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x07, 0x0C, 0x11, 0x02, 0x06, 0x0B, 0x10, 0x14,
+ 0x01, 0x05, 0x0A, 0x0F, 0x13, 0x00, 0x04, 0x09,
+ 0x0E, 0x12, 0x03, 0x08, 0x0D, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const ByteProvider kLoLDscDoorY2FMTownsProvider = { ARRAYSIZE(kLoLDscDoorY2FMTowns), kLoLDscDoorY2FMTowns };
+
+static const byte kLoLDscDoorFrameY1FMTowns[4] = {
+ 0x1E, 0x18, 0x10, 0x00
+};
+
+static const ByteProvider kLoLDscDoorFrameY1FMTownsProvider = { ARRAYSIZE(kLoLDscDoorFrameY1FMTowns), kLoLDscDoorFrameY1FMTowns };
+
+static const byte kLoLDscDoorFrameY2FMTowns[4] = {
+ 0x3B, 0x47, 0x56, 0x78
+};
+
+static const ByteProvider kLoLDscDoorFrameY2FMTownsProvider = { ARRAYSIZE(kLoLDscDoorFrameY2FMTowns), kLoLDscDoorFrameY2FMTowns };
+
+static const uint16 kLoLDscDoorScaleFMTowns[8] = {
+ 0x0075, 0x006A, 0x00B9, 0x00B2, 0x0100, 0x0100, 0x0000, 0x0000
+};
+
+static const Uint16Provider kLoLDscDoorScaleFMTownsProvider = { ARRAYSIZE(kLoLDscDoorScaleFMTowns), kLoLDscDoorScaleFMTowns };
+
+static const uint16 kLoLDscDoor4FMTowns[4] = {
+ 0x0005, 0x0002, 0x0008, 0x0000
+};
+
+static const Uint16Provider kLoLDscDoor4FMTownsProvider = { ARRAYSIZE(kLoLDscDoor4FMTowns), kLoLDscDoor4FMTowns };
+
+static const uint16 kLoLDscDoorXFMTowns[576] = {
+ 0xFF98, 0xFFA0, 0xFFA8, 0xFF90, 0xFF98, 0xFFA0, 0xFFA8, 0xFFB0,
+ 0xFF74, 0xFF7E, 0xFF88, 0xFF92, 0xFF9C, 0xFF74, 0xFF7E, 0xFF88,
+ 0xFF92, 0xFF9C, 0xFF64, 0xFF70, 0xFF7C, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFB8, 0xFFC0, 0xFFC8, 0xFFB0, 0xFFB8, 0xFFC0, 0xFFC8, 0xFFD0,
+ 0xFF9C, 0xFFA6, 0xFFB0, 0xFFBA, 0xFFC4, 0xFF9C, 0xFFA6, 0xFFB0,
+ 0xFFBA, 0xFFC4, 0xFF94, 0xFFA0, 0xFFAC, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFD8, 0xFFE0, 0xFFE8, 0xFFD0, 0xFFD8, 0xFFE0, 0xFFE8, 0xFFF0,
+ 0xFFC4, 0xFFCE, 0xFFD8, 0xFFE2, 0xFFEC, 0xFFC4, 0xFFCE, 0xFFD8,
+ 0xFFE2, 0xFFEC, 0xFFC4, 0xFFD0, 0xFFDC, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFF8, 0x0000, 0x0008, 0xFFF0, 0xFFF8, 0x0000, 0x0008, 0x0010,
+ 0xFFEC, 0xFFF6, 0x0000, 0x000A, 0x0014, 0xFFEC, 0xFFF6, 0x0000,
+ 0x000A, 0x0014, 0xFFF4, 0x0000, 0x000C, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0018, 0x0020, 0x0028, 0x0010, 0x0018, 0x0020, 0x0028, 0x0030,
+ 0x0014, 0x001E, 0x0028, 0x0032, 0x003C, 0x0014, 0x001E, 0x0028,
+ 0x0032, 0x003C, 0x0024, 0x0030, 0x003C, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0038, 0x0040, 0x0048, 0x0030, 0x0038, 0x0040, 0x0048, 0x0050,
+ 0x003C, 0x0046, 0x0050, 0x005A, 0x0064, 0x003C, 0x0046, 0x0050,
+ 0x005A, 0x0064, 0x0054, 0x0060, 0x006C, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0058, 0x0060, 0x0068, 0x0050, 0x0058, 0x0060, 0x0068, 0x0070,
+ 0x0064, 0x006E, 0x0078, 0x0082, 0x008C, 0x0064, 0x006E, 0x0078,
+ 0x0082, 0x008C, 0x0084, 0x0090, 0x009C, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFF94, 0xFFA0, 0xFFAC, 0xFF7E, 0xFF8B, 0xFF98, 0xFFA5, 0xFFB2,
+ 0xFF6C, 0xFF7B, 0xFF8A, 0xFF99, 0xFFA7, 0xFF60, 0xFF70, 0xFF80,
+ 0xFF90, 0xFFA0, 0xFF4C, 0xFF60, 0xFF74, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFC4, 0xFFD0, 0xFFDC, 0xFFB2, 0xFFBF, 0xFFCC, 0xFFD9, 0xFFE6,
+ 0xFFA7, 0xFFB6, 0xFFC5, 0xFFD4, 0xFFE2, 0xFFA0, 0xFFB0, 0xFFC0,
+ 0xFFD0, 0xFFE0, 0xFF9C, 0xFFB0, 0xFFC4, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFF4, 0x0000, 0x000C, 0xFFE6, 0xFFF3, 0x0000, 0x000D, 0x001A,
+ 0xFFE2, 0xFFF1, 0x0000, 0x000F, 0x001E, 0xFFE0, 0xFFF0, 0x0000,
+ 0x0010, 0x0020, 0xFFEC, 0x0000, 0x0014, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0024, 0x0030, 0x003C, 0x001A, 0x0027, 0x0034, 0x0041, 0x004E,
+ 0x001E, 0x002C, 0x003B, 0x004A, 0x0059, 0x0020, 0x0030, 0x0040,
+ 0x0050, 0x0060, 0x003C, 0x0050, 0x0064, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0054, 0x0060, 0x006C, 0x004E, 0x005B, 0x0068, 0x0075, 0x0082,
+ 0x0059, 0x0067, 0x0076, 0x0085, 0x0094, 0x0060, 0x0070, 0x0080,
+ 0x0090, 0x00A0, 0x008C, 0x00A0, 0x00B4, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFF9C, 0xFFB0, 0xFFC4, 0xFF7C, 0xFF92, 0xFFA8, 0xFFBE, 0xFFD4,
+ 0xFF6D, 0xFF85, 0xFF9E, 0xFFB6, 0xFFCF, 0xFF5E, 0xFF79, 0xFF94,
+ 0xFFAF, 0xFFCA, 0xFF60, 0xFF80, 0xFFA0, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFEC, 0x0000, 0x0014, 0xFFD4, 0xFFEA, 0x0000, 0x0016, 0x002C,
+ 0xFFCF, 0xFFE7, 0x0000, 0x0019, 0x0031, 0xFFCA, 0xFFE5, 0x0000,
+ 0x001B, 0x0036, 0xFFE0, 0x0000, 0x0020, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x003C, 0x0050, 0x0064, 0x002C, 0x0042, 0x0058, 0x006E, 0x0084,
+ 0x0031, 0x004A, 0x0062, 0x007B, 0x0093, 0x0036, 0x0051, 0x006C,
+ 0x0087, 0x00A2, 0x0060, 0x0080, 0x00A0, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFF60, 0xFF80, 0xFFA0, 0xFF1C, 0xFF42, 0xFF68, 0xFF8E, 0xFFB4,
+ 0xFF40, 0xFF60, 0xFF80, 0xFFA0, 0xFFC0, 0xFF1C, 0xFF42, 0xFF68,
+ 0xFF8E, 0xFFB4, 0xFF60, 0xFF80, 0xFFA0, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFE0, 0x0000, 0x0020, 0xFFB4, 0xFFDA, 0x0000, 0x0026, 0x004C,
+ 0xFFC0, 0xFFE0, 0x0000, 0x0020, 0x0040, 0xFFB4, 0xFFDA, 0x0000,
+ 0x0026, 0x004C, 0xFFE0, 0x0000, 0x0020, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0060, 0x0080, 0x00A0, 0x004C, 0x0072, 0x0098, 0x00BE, 0x00E4,
+ 0x0040, 0x0060, 0x0080, 0x00A0, 0x00C0, 0x004C, 0x0072, 0x0098,
+ 0x00BE, 0x00E4, 0x0060, 0x0080, 0x00A0, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
+};
+
+static const Uint16Provider kLoLDscDoorXFMTownsProvider = { ARRAYSIZE(kLoLDscDoorXFMTowns), kLoLDscDoorXFMTowns };
+
+static const uint16 kLoLDscDoorYFMTowns[576] = {
+ 0xFFBF, 0xFFBF, 0xFFBF, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1,
+ 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC5, 0xFFC5, 0xFFC5,
+ 0xFFC5, 0xFFC5, 0xFFC9, 0xFFC9, 0xFFC9, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFBF, 0xFFBF, 0xFFBF, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1,
+ 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC5, 0xFFC5, 0xFFC5,
+ 0xFFC5, 0xFFC5, 0xFFC9, 0xFFC9, 0xFFC9, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFBF, 0xFFBF, 0xFFBF, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1,
+ 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC5, 0xFFC5, 0xFFC5,
+ 0xFFC5, 0xFFC5, 0xFFC9, 0xFFC9, 0xFFC9, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFBF, 0xFFBF, 0xFFBF, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1,
+ 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC5, 0xFFC5, 0xFFC5,
+ 0xFFC5, 0xFFC5, 0xFFC9, 0xFFC9, 0xFFC9, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFBF, 0xFFBF, 0xFFBF, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1,
+ 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC5, 0xFFC5, 0xFFC5,
+ 0xFFC5, 0xFFC5, 0xFFC9, 0xFFC9, 0xFFC9, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFBF, 0xFFBF, 0xFFBF, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1,
+ 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC5, 0xFFC5, 0xFFC5,
+ 0xFFC5, 0xFFC5, 0xFFC9, 0xFFC9, 0xFFC9, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFBF, 0xFFBF, 0xFFBF, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1,
+ 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC5, 0xFFC5, 0xFFC5,
+ 0xFFC5, 0xFFC5, 0xFFC9, 0xFFC9, 0xFFC9, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFC9, 0xFFC9, 0xFFC9, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB,
+ 0xFFCE, 0xFFCE, 0xFFCE, 0xFFCE, 0xFFCE, 0xFFD3, 0xFFD3, 0xFFD3,
+ 0xFFD3, 0xFFD3, 0xFFD7, 0xFFD7, 0xFFD7, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFC9, 0xFFC9, 0xFFC9, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB,
+ 0xFFCE, 0xFFCE, 0xFFCE, 0xFFCE, 0xFFCE, 0xFFD3, 0xFFD3, 0xFFD3,
+ 0xFFD3, 0xFFD3, 0xFFD7, 0xFFD7, 0xFFD7, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFC9, 0xFFC9, 0xFFC9, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB,
+ 0xFFCE, 0xFFCE, 0xFFCE, 0xFFCE, 0xFFCE, 0xFFD3, 0xFFD3, 0xFFD3,
+ 0xFFD3, 0xFFD3, 0xFFD7, 0xFFD7, 0xFFD7, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFC9, 0xFFC9, 0xFFC9, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB,
+ 0xFFCE, 0xFFCE, 0xFFCE, 0xFFCE, 0xFFCE, 0xFFD3, 0xFFD3, 0xFFD3,
+ 0xFFD3, 0xFFD3, 0xFFD7, 0xFFD7, 0xFFD7, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFC9, 0xFFC9, 0xFFC9, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB,
+ 0xFFCE, 0xFFCE, 0xFFCE, 0xFFCE, 0xFFCE, 0xFFD3, 0xFFD3, 0xFFD3,
+ 0xFFD3, 0xFFD3, 0xFFD7, 0xFFD7, 0xFFD7, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFD7, 0xFFD7, 0xFFD7, 0xFFDD, 0xFFDD, 0xFFDD, 0xFFDD, 0xFFDD,
+ 0xFFE2, 0xFFE2, 0xFFE2, 0xFFE2, 0xFFE2, 0xFFEA, 0xFFEA, 0xFFEA,
+ 0xFFEA, 0xFFEA, 0xFFF8, 0xFFF8, 0xFFF8, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFD7, 0xFFD7, 0xFFD7, 0xFFDD, 0xFFDD, 0xFFDD, 0xFFDD, 0xFFDD,
+ 0xFFE2, 0xFFE2, 0xFFE2, 0xFFE2, 0xFFE2, 0xFFEA, 0xFFEA, 0xFFEA,
+ 0xFFEA, 0xFFEA, 0xFFF8, 0xFFF8, 0xFFF8, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFD7, 0xFFD7, 0xFFD7, 0xFFDD, 0xFFDD, 0xFFDD, 0xFFDD, 0xFFDD,
+ 0xFFE2, 0xFFE2, 0xFFE2, 0xFFE2, 0xFFE2, 0xFFEA, 0xFFEA, 0xFFEA,
+ 0xFFEA, 0xFFEA, 0xFFF8, 0xFFF8, 0xFFF8, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFF8, 0xFFF8, 0xFFF8, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFF8, 0xFFF8, 0xFFF8, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFF8, 0xFFF8, 0xFFF8, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
+};
+
+static const Uint16Provider kLoLDscDoorYFMTownsProvider = { ARRAYSIZE(kLoLDscDoorYFMTowns), kLoLDscDoorYFMTowns };
+
+static const byte kLoLScrollXTopFMTowns[5] = {
+ 0x05, 0x0A, 0x0F, 0x14, 0x19
+};
+
+static const ByteProvider kLoLScrollXTopFMTownsProvider = { ARRAYSIZE(kLoLScrollXTopFMTowns), kLoLScrollXTopFMTowns };
+
+static const byte kLoLScrollYTopFMTowns[5] = {
+ 0x02, 0x04, 0x07, 0x09, 0x0C
+};
+
+static const ByteProvider kLoLScrollYTopFMTownsProvider = { ARRAYSIZE(kLoLScrollYTopFMTowns), kLoLScrollYTopFMTowns };
+
+static const byte kLoLScrollXBottomFMTowns[5] = {
+ 0x05, 0x0A, 0x0F, 0x14, 0x19
+};
+
+static const ByteProvider kLoLScrollXBottomFMTownsProvider = { ARRAYSIZE(kLoLScrollXBottomFMTowns), kLoLScrollXBottomFMTowns };
+
+static const byte kLoLScrollYBottomFMTowns[5] = {
+ 0x04, 0x08, 0x0C, 0x10, 0x14
+};
+
+static const ByteProvider kLoLScrollYBottomFMTownsProvider = { ARRAYSIZE(kLoLScrollYBottomFMTowns), kLoLScrollYBottomFMTowns };
+
+static const LoLButtonDef kLoLButtonDefsFMTowns[95] = {
+ { 0x1100, 30, 56, 33, 131, 22, 19, 0x0000, 0 },
+ { 0x1100, 31, 53, 33, 150, 22, 18, 0x0000, 0 },
+ { 0x1100, 31, 53, 33, 150, 22, 18, 0x0000, 0 },
+ { 0x1100, 29, 52, 11, 150, 22, 18, 0x0000, 0 },
+ { 0x1100, 28, 54, 53, 150, 22, 18, 0x0000, 0 },
+ { 0x1100, 127, 55, 11, 131, 22, 19, 0x0000, 0 },
+ { 0x1100, 18, 57, 53, 131, 22, 19, 0x0000, 0 },
+ { 0x0100, 49, 0, 80, 143, 22, 17, 0x0000, 0 },
+ { 0x0100, 50, 0, 80, 143, 22, 17, 0x0001, 0 },
+ { 0x0100, 51, 0, 80, 143, 22, 17, 0x0002, 0 },
+ { 0x0100, 48, 0, 80, 143, 22, 17, 0x0003, 0 },
+ { 0x1100, 0, 0, 80, 160, 22, 17, 0x0000, 0 },
+ { 0x1100, 0, 0, 80, 160, 22, 17, 0x0001, 0 },
+ { 0x1100, 0, 0, 80, 160, 22, 17, 0x0002, 0 },
+ { 0x1100, 0, 0, 80, 160, 22, 17, 0x0003, 0 },
+ { 0x1100, 0, 0, 80, 144, 22, 32, 0x0000, 0 },
+ { 0x1100, 27, 0, 0, 0, 320, 200, 0x0003, 0 },
+ { 0x0100, 0, 0, 80, 143, 33, 34, 0x0000, 0 },
+ { 0x0100, 0, 0, 80, 143, 33, 34, 0x0001, 0 },
+ { 0x0100, 0, 0, 80, 143, 33, 34, 0x0002, 0 },
+ { 0x0100, 0, 0, 80, 143, 33, 34, 0x0003, 0 },
+ { 0x0100, 0, 0, 80, 143, 66, 34, 0x0000, 0 },
+ { 0x0100, 0, 0, 80, 143, 66, 34, 0x0001, 0 },
+ { 0x0100, 0, 0, 80, 143, 66, 34, 0x0002, 0 },
+ { 0x0100, 0, 0, 80, 143, 66, 34, 0x0003, 0 },
+ { 0x0100, 0, 0, 80, 143, 12, 34, 0x0000, 0 },
+ { 0x0100, 0, 0, 80, 143, 12, 34, 0x0001, 0 },
+ { 0x0100, 0, 0, 80, 143, 12, 34, 0x0002, 0 },
+ { 0x0100, 0, 0, 80, 143, 12, 34, 0x0003, 0 },
+ { 0x1000, 0, 0, 80, 143, 66, 34, 0x0000, 0 },
+ { 0x1000, 0, 0, 80, 143, 66, 34, 0x0001, 0 },
+ { 0x1000, 0, 0, 80, 143, 66, 34, 0x0002, 0 },
+ { 0x1000, 0, 0, 80, 143, 66, 34, 0x0003, 0 },
+ { 0x1100, 0, 0, 0, 0, 20, 19, 0x0000, 2 },
+ { 0x1100, 0, 0, 0, 0, 20, 19, 0x0001, 2 },
+ { 0x1100, 0, 0, 0, 0, 20, 19, 0x0002, 2 },
+ { 0x1100, 0, 0, 0, 0, 20, 19, 0x0003, 2 },
+ { 0x1100, 0, 0, 0, 0, 20, 19, 0x0004, 2 },
+ { 0x1100, 0, 0, 0, 0, 20, 19, 0x0005, 2 },
+ { 0x1100, 0, 0, 0, 0, 20, 19, 0x0006, 2 },
+ { 0x1100, 0, 0, 0, 0, 20, 19, 0x0007, 2 },
+ { 0x1100, 0, 0, 0, 0, 20, 19, 0x0008, 2 },
+ { 0x1100, 0, 0, 0, 0, 12, 11, 0x0009, 2 },
+ { 0x1100, 0, 0, 0, 0, 12, 11, 0x000A, 2 },
+ { 0x1100, 27, 0, 160, 93, 43, 19, 0x0000, 2 },
+ { 0x1100, 0, 0, 0, 102, 88, 19, 0x0000, 2 },
+ { 0x1100, 0, 0, 88, 102, 88, 19, 0x0001, 2 },
+ { 0x1100, 0, 0, 0, 85, 88, 17, 0x0002, 2 },
+ { 0x1100, 0, 0, 88, 85, 88, 17, 0x0003, 2 },
+ { 0x1100, 0, 0, 0, 0, 176, 120, 0x0000, 2 },
+ { 0x1100, 0, 0, 106, 179, 21, 21, 0x0000, 0 },
+ { 0x1100, 0, 0, 127, 179, 21, 21, 0x0001, 0 },
+ { 0x1100, 0, 0, 148, 179, 21, 21, 0x0002, 0 },
+ { 0x1100, 0, 0, 169, 179, 21, 21, 0x0003, 0 },
+ { 0x1100, 0, 0, 190, 179, 21, 21, 0x0004, 0 },
+ { 0x1100, 0, 0, 211, 179, 21, 21, 0x0005, 0 },
+ { 0x1100, 0, 0, 232, 179, 21, 21, 0x0006, 0 },
+ { 0x1100, 0, 0, 253, 179, 21, 21, 0x0007, 0 },
+ { 0x1100, 0, 0, 274, 179, 21, 21, 0x0008, 0 },
+ { 0x1100, 0, 0, 274, 179, 21, 21, 0x0009, 0 },
+ { 0x1100, 0, 0, 85, 179, 21, 21, 0xFFFF, 0 },
+ { 0x1100, 0, 0, 295, 179, 22, 21, 0x0001, 0 },
+ { 0x1100, 0, 0, 24, 8, 128, 96, 0x0001, 2 },
+ { 0x1100, 0, 0, 0, 0, 176, 120, 0x0000, 2 },
+ { 0x1100, 0, 0, 0, 0, 0, 0, 0x0000, 0 },
+ { 0x1100, 0, 0, 112, 0, 176, 16, 0x0001, 0 },
+ { 0x1100, 0, 0, 112, 110, 176, 26, 0x0001, 0 },
+ { 0x1100, 0, 0, 96, 88, 32, 32, 0x0001, 0 },
+ { 0x1100, 0, 0, 272, 88, 32, 32, 0x0001, 0 },
+ { 0x1100, 0, 0, 96, 16, 32, 72, 0x0001, 0 },
+ { 0x1100, 0, 0, 272, 16, 32, 72, 0x0001, 0 },
+ { 0x1100, 0, 0, 24, 15, 61, 9, 0x0000, 0 },
+ { 0x1100, 0, 0, 24, 24, 61, 9, 0x0000, 0 },
+ { 0x1100, 0, 0, 24, 33, 61, 9, 0x0000, 0 },
+ { 0x1100, 0, 0, 24, 42, 61, 9, 0x0000, 0 },
+ { 0x1100, 0, 0, 24, 51, 61, 9, 0x0000, 0 },
+ { 0x1100, 0, 0, 24, 60, 61, 9, 0x0000, 0 },
+ { 0x1100, 0, 0, 24, 69, 61, 9, 0x0000, 0 },
+ { 0x1100, 0, 0, 24, 78, 61, 9, 0x0000, 0 },
+ { 0x1100, 0, 0, 24, 87, 61, 9, 0x0000, 0 },
+ { 0x1100, 0, 0, 24, 96, 61, 9, 0x0000, 0 },
+ { 0x0100, 0, 0, 80, 143, 66, 34, 0x0000, 0 },
+ { 0x0100, 0, 0, 80, 143, 66, 34, 0x0001, 0 },
+ { 0x0100, 0, 0, 80, 143, 66, 34, 0x0002, 0 },
+ { 0x0100, 0, 0, 80, 143, 66, 34, 0x0003, 0 },
+ { 0x1100, 27, 0, 0, 0, 320, 200, 0x0003, 0 },
+ { 0x0100, 0, 0, 112, 0, 88, 80, 0x0000, 0 },
+ { 0x0100, 0, 0, 200, 0, 88, 80, 0x0001, 0 },
+ { 0x1100, 79, 27, 11, 178, 21, 22, 0x0000, 0 },
+ { 0x0100, 82, 0, 32, 178, 22, 22, 0x0000, 0 },
+ { 0x0100, 0, 0, 291, 96, 27, 24, 0x0000, 0 },
+ { 0x0100, 0, 0, 289, 0, 31, 28, 0x0000, 0 },
+ { 0x0100, 0, 0, 289, 31, 31, 23, 0x0000, 0 },
+ { 0x0100, 0, 0, 291, 56, 29, 24, 0x0000, 0 },
+ { 0x1100, 0, 0, 220, 98, 43, 19, 0x0000, 0 }
+};
+
+static const LoLButtonDefProvider kLoLButtonDefsFMTownsProvider = { ARRAYSIZE(kLoLButtonDefsFMTowns), kLoLButtonDefsFMTowns };
+
+static const byte kLoLButtonList1FMTowns[40] = {
+ 0x59, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x31,
+ 0x3E, 0x2D, 0x2E, 0x2F, 0x30, 0x56, 0x57, 0x01,
+ 0x02, 0x00, 0x03, 0x04, 0x05, 0x06, 0x32, 0x33,
+ 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B,
+ 0x3C, 0x3D, 0x58, 0x5A, 0x5B, 0x5C, 0x5D, 0xFF
+};
+
+static const ByteProvider kLoLButtonList1FMTownsProvider = { ARRAYSIZE(kLoLButtonList1FMTowns), kLoLButtonList1FMTowns };
+
+static const byte kLoLButtonList2FMTowns[15] = {
+ 0x2C, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
+ 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x5E, 0xFF
+};
+
+static const ByteProvider kLoLButtonList2FMTownsProvider = { ARRAYSIZE(kLoLButtonList2FMTowns), kLoLButtonList2FMTowns };
+
+static const byte kLoLButtonList3FMTowns[2] = {
+ 0x40, 0xFF
+};
+
+static const ByteProvider kLoLButtonList3FMTownsProvider = { ARRAYSIZE(kLoLButtonList3FMTowns), kLoLButtonList3FMTowns };
+
+static const byte kLoLButtonList4FMTowns[15] = {
+ 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39,
+ 0x3A, 0x3B, 0x3C, 0x3D, 0x5A, 0x5B, 0xFF
+};
+
+static const ByteProvider kLoLButtonList4FMTownsProvider = { ARRAYSIZE(kLoLButtonList4FMTowns), kLoLButtonList4FMTowns };
+
+static const byte kLoLButtonList5FMTowns[16] = {
+ 0x01, 0x02, 0x00, 0x03, 0x04, 0x05, 0x06, 0x41,
+ 0x42, 0x43, 0x44, 0x45, 0x46, 0x5A, 0x5B, 0xFF
+};
+
+static const ByteProvider kLoLButtonList5FMTownsProvider = { ARRAYSIZE(kLoLButtonList5FMTowns), kLoLButtonList5FMTowns };
+
+static const byte kLoLButtonList6FMTowns[14] = {
+ 0x2C, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
+ 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0xFF
+};
+
+static const ByteProvider kLoLButtonList6FMTownsProvider = { ARRAYSIZE(kLoLButtonList6FMTowns), kLoLButtonList6FMTowns };
+
+static const byte kLoLButtonList7FMTowns[3] = {
+ 0x0F, 0x10, 0xFF
+};
+
+static const ByteProvider kLoLButtonList7FMTownsProvider = { ARRAYSIZE(kLoLButtonList7FMTowns), kLoLButtonList7FMTowns };
+
+static const byte kLoLButtonList8FMTowns[2] = {
+ 0x55, 0xFF
+};
+
+static const ByteProvider kLoLButtonList8FMTownsProvider = { ARRAYSIZE(kLoLButtonList8FMTowns), kLoLButtonList8FMTowns };
+
+static const byte kLoLLegendDataFMTowns[60] = {
+ 0x0E, 0x00, 0x00, 0x07, 0x42, 0x19, 0x00, 0x00,
+ 0x08, 0x42, 0x1A, 0x00, 0x00, 0x09, 0x42, 0x0D,
+ 0x00, 0x00, 0x0A, 0x42, 0x0A, 0x00, 0x00, 0x0B,
+ 0x42, 0x0B, 0x00, 0x00, 0x0C, 0x42, 0x0F, 0x00,
+ 0x00, 0x0D, 0x42, 0x16, 0x00, 0x00, 0x0E, 0x42,
+ 0x17, 0x00, 0x00, 0x0F, 0x42, 0x11, 0x00, 0x00,
+ 0x10, 0x42, 0x12, 0x00, 0xFB, 0x51, 0x42, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF
+};
+
+static const ByteProvider kLoLLegendDataFMTownsProvider = { ARRAYSIZE(kLoLLegendDataFMTowns), kLoLLegendDataFMTowns };
+
+static const uint16 kLoLMapStringIdFMTowns[30] = {
+ 0xFFFF, 0x4211, 0x4212, 0x4213, 0x4214, 0x4215, 0x4216, 0x4217,
+ 0x4218, 0x4219, 0x421A, 0x421B, 0x421C, 0x421D, 0x421E, 0x421F,
+ 0x4220, 0x4221, 0x4222, 0x4223, 0x4224, 0x4225, 0x4226, 0x4227,
+ 0x4228, 0x4229, 0x422A, 0x422B, 0x422C, 0x422D
+};
+
+static const Uint16Provider kLoLMapStringIdFMTownsProvider = { ARRAYSIZE(kLoLMapStringIdFMTowns), kLoLMapStringIdFMTowns };
+
+static const byte kLoLSpellbookAnimFMTowns[28] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x13, 0xB6, 0x04, 0x00, 0x13, 0x4D,
+ 0x04, 0x00, 0x13, 0xB9, 0x04, 0x00, 0x13, 0xB8,
+ 0x04, 0x00, 0x13, 0xBA
+};
+
+static const ByteProvider kLoLSpellbookAnimFMTownsProvider = { ARRAYSIZE(kLoLSpellbookAnimFMTowns), kLoLSpellbookAnimFMTowns };
+
+static const byte kLoLSpellbookCoordsFMTowns[12] = {
+ 0x16, 0x16, 0x16, 0x1F, 0x16, 0x28, 0x16, 0x31,
+ 0x16, 0x3A, 0x16, 0x43
+};
+
+static const ByteProvider kLoLSpellbookCoordsFMTownsProvider = { ARRAYSIZE(kLoLSpellbookCoordsFMTowns), kLoLSpellbookCoordsFMTowns };
+
+static const byte kLoLHealShapeFramesFMTowns[80] = {
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02,
+ 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x03, 0x03,
+ 0x03, 0x03, 0x02, 0x02, 0x01, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
+ 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00,
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F
+};
+
+static const ByteProvider kLoLHealShapeFramesFMTownsProvider = { ARRAYSIZE(kLoLHealShapeFramesFMTowns), kLoLHealShapeFramesFMTowns };
+
+static const byte kLoLLightningDefsFMTowns[20] = {
+ 0x06, 0x05, 0xAB, 0x00, 0x06, 0x04, 0xAB, 0x00,
+ 0x08, 0x04, 0xAA, 0x00, 0x06, 0x03, 0xAA, 0x00,
+ 0x06, 0x02, 0xA9, 0x00
+};
+
+static const ByteProvider kLoLLightningDefsFMTownsProvider = { ARRAYSIZE(kLoLLightningDefsFMTowns), kLoLLightningDefsFMTowns };
+
+static const uint16 kLoLFireballCoordsFMTowns[256] = {
+ 0x0000, 0x0324, 0x0647, 0x096A, 0x0C8B, 0x0FAB, 0x12C7, 0x15E1,
+ 0x18F8, 0x1C0B, 0x1F19, 0x2223, 0x2527, 0x2826, 0x2B1E, 0x2E10,
+ 0x30FB, 0x33DE, 0x36B9, 0x398C, 0x3C56, 0x3F16, 0x41CD, 0x447A,
+ 0x471C, 0x49B3, 0x4C3F, 0x4EBF, 0x5133, 0x539A, 0x55F4, 0x5842,
+ 0x5A81, 0x5CB3, 0x5ED6, 0x60EB, 0x62F1, 0x64E7, 0x66CE, 0x68A5,
+ 0x6A6C, 0x6C23, 0x6DC9, 0x6F5E, 0x70E1, 0x7254, 0x73B5, 0x7503,
+ 0x7640, 0x776B, 0x7883, 0x7989, 0x7A7C, 0x7B5C, 0x7C29, 0x7CE2,
+ 0x7D89, 0x7E1C, 0x7E9C, 0x7F08, 0x7F61, 0x7FA6, 0x7FD7, 0x7FF5,
+ 0x7FFF, 0x7FF5, 0x7FD7, 0x7FA6, 0x7F61, 0x7F08, 0x7E9C, 0x7E1C,
+ 0x7D89, 0x7CE2, 0x7C29, 0x7B5C, 0x7A7C, 0x7989, 0x7883, 0x776B,
+ 0x7640, 0x7503, 0x73B5, 0x7254, 0x70E1, 0x6F5E, 0x6DC9, 0x6C23,
+ 0x6A6C, 0x68A5, 0x66CE, 0x64E7, 0x62F1, 0x60EB, 0x5ED6, 0x5CB3,
+ 0x5A81, 0x5842, 0x55F4, 0x539A, 0x5133, 0x4EBF, 0x4C3F, 0x49B3,
+ 0x471C, 0x447A, 0x41CD, 0x3F16, 0x3C56, 0x398C, 0x36B9, 0x33DE,
+ 0x30FB, 0x2E10, 0x2B1E, 0x2826, 0x2527, 0x2223, 0x1F19, 0x1C0B,
+ 0x18F8, 0x15E1, 0x12C7, 0x0FAB, 0x0C8B, 0x096A, 0x0647, 0x0324,
+ 0x0000, 0xFCDC, 0xF9B9, 0xF696, 0xF375, 0xF055, 0xED39, 0xEA1F,
+ 0xE708, 0xE3F5, 0xE0E7, 0xDDDD, 0xDAD9, 0xD7DA, 0xD4E2, 0xD1F0,
+ 0xCF05, 0xCC22, 0xC947, 0xC674, 0xC3AA, 0xC0EA, 0xBE33, 0xBB86,
+ 0xB8E4, 0xB64D, 0xB3C1, 0xB141, 0xAECD, 0xAC66, 0xAA0C, 0xA7BE,
+ 0xA57F, 0xA34D, 0xA12A, 0x9F15, 0x9D0F, 0x9B19, 0x9932, 0x975B,
+ 0x9594, 0x93DD, 0x9237, 0x90A2, 0x8F1F, 0x8DAC, 0x8C4B, 0x8AFD,
+ 0x89C0, 0x8895, 0x877D, 0x8677, 0x8584, 0x84A4, 0x83D7, 0x831E,
+ 0x8277, 0x81E4, 0x8164, 0x80F8, 0x809F, 0x805A, 0x8029, 0x800B,
+ 0x8001, 0x800B, 0x8029, 0x805A, 0x809F, 0x80F8, 0x8164, 0x81E4,
+ 0x8277, 0x831E, 0x83D7, 0x84A4, 0x8584, 0x8677, 0x877D, 0x8895,
+ 0x89C0, 0x8AFD, 0x8C4B, 0x8DAC, 0x8F1F, 0x90A2, 0x9237, 0x93DD,
+ 0x9594, 0x975B, 0x9932, 0x9B19, 0x9D0F, 0x9F15, 0xA12A, 0xA34D,
+ 0xA57F, 0xA7BE, 0xAA0C, 0xAC66, 0xAECD, 0xB141, 0xB3C1, 0xB64D,
+ 0xB8E4, 0xBB86, 0xBE33, 0xC0EA, 0xC3AA, 0xC674, 0xC947, 0xCC22,
+ 0xCF05, 0xD1F0, 0xD4E2, 0xD7DA, 0xDAD9, 0xDDDD, 0xE0E7, 0xE3F5,
+ 0xE708, 0xEA1F, 0xED39, 0xF055, 0xF375, 0xF696, 0xF9B9, 0xFCDC
+};
+
+static const Uint16Provider kLoLFireballCoordsFMTownsProvider = { ARRAYSIZE(kLoLFireballCoordsFMTowns), kLoLFireballCoordsFMTowns };
+
+static const byte kLoLCreditsFMTowns[1516] = {
+ 0x02, 0x54, 0x68, 0x65, 0x20, 0x45, 0x6E, 0x64,
+ 0x05, 0x0D, 0x0D, 0x0D, 0x02, 0x4C, 0x41, 0x4E,
+ 0x44, 0x53, 0x20, 0x4F, 0x46, 0x20, 0x4C, 0x4F,
+ 0x52, 0x45, 0x05, 0x0D, 0x01, 0x54, 0x68, 0x65,
+ 0x20, 0x54, 0x68, 0x72, 0x6F, 0x6E, 0x65, 0x20,
+ 0x6F, 0x66, 0x20, 0x43, 0x68, 0x61, 0x6F, 0x73,
+ 0x05, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x02, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54,
+ 0x49, 0x56, 0x45, 0x20, 0x50, 0x52, 0x4F, 0x44,
+ 0x55, 0x43, 0x45, 0x52, 0x05, 0x0D, 0x0D, 0x02,
+ 0x42, 0x72, 0x65, 0x74, 0x74, 0x20, 0x57, 0x2E,
+ 0x20, 0x53, 0x70, 0x65, 0x72, 0x72, 0x79, 0x05,
+ 0x0D, 0x0D, 0x0D, 0x0D, 0x02, 0x50, 0x52, 0x4F,
+ 0x44, 0x55, 0x43, 0x45, 0x52, 0x05, 0x0D, 0x0D,
+ 0x02, 0x52, 0x69, 0x63, 0x6B, 0x20, 0x47, 0x75,
+ 0x73, 0x68, 0x05, 0x0D, 0x0D, 0x0D, 0x0D, 0x02,
+ 0x50, 0x52, 0x4F, 0x44, 0x55, 0x43, 0x54, 0x20,
+ 0x43, 0x4F, 0x4F, 0x52, 0x44, 0x49, 0x4E, 0x41,
+ 0x54, 0x4F, 0x52, 0x05, 0x0D, 0x0D, 0x02, 0x43,
+ 0x61, 0x74, 0x68, 0x69, 0x65, 0x20, 0x41, 0x2E,
+ 0x20, 0x54, 0x6F, 0x64, 0x64, 0x05, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x02, 0x44, 0x45, 0x53, 0x49, 0x47,
+ 0x4E, 0x45, 0x52, 0x53, 0x05, 0x0D, 0x0D, 0x02,
+ 0x57, 0x69, 0x6C, 0x6C, 0x69, 0x61, 0x6D, 0x20,
+ 0x41, 0x6C, 0x61, 0x6E, 0x20, 0x43, 0x72, 0x75,
+ 0x6D, 0x05, 0x0D, 0x50, 0x68, 0x69, 0x6C, 0x69,
+ 0x70, 0x20, 0x57, 0x2E, 0x20, 0x47, 0x6F, 0x72,
+ 0x72, 0x6F, 0x77, 0x05, 0x0D, 0x0D, 0x0D, 0x0D,
+ 0x02, 0x4C, 0x45, 0x41, 0x44, 0x20, 0x50, 0x52,
+ 0x4F, 0x47, 0x52, 0x41, 0x4D, 0x4D, 0x45, 0x52,
+ 0x05, 0x0D, 0x0D, 0x02, 0x50, 0x68, 0x69, 0x6C,
+ 0x69, 0x70, 0x20, 0x57, 0x2E, 0x20, 0x47, 0x6F,
+ 0x72, 0x72, 0x6F, 0x77, 0x05, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x02, 0x50, 0x52, 0x4F, 0x47, 0x52, 0x41,
+ 0x4D, 0x4D, 0x45, 0x52, 0x53, 0x05, 0x0D, 0x0D,
+ 0x02, 0x4A, 0x6F, 0x65, 0x20, 0x42, 0x6F, 0x73,
+ 0x74, 0x69, 0x63, 0x05, 0x0D, 0x02, 0x53, 0x63,
+ 0x6F, 0x74, 0x74, 0x20, 0x4B, 0x2E, 0x20, 0x42,
+ 0x6F, 0x77, 0x65, 0x6E, 0x05, 0x0D, 0x02, 0x4A,
+ 0x6F, 0x68, 0x6E, 0x20, 0x4C, 0x61, 0x53, 0x61,
+ 0x6C, 0x76, 0x69, 0x61, 0x05, 0x0D, 0x02, 0x4D,
+ 0x61, 0x72, 0x6B, 0x20, 0x4D, 0x63, 0x43, 0x75,
+ 0x62, 0x62, 0x69, 0x6E, 0x05, 0x0D, 0x02, 0x4A,
+ 0x75, 0x73, 0x74, 0x69, 0x6E, 0x20, 0x4D, 0x63,
+ 0x4B, 0x69, 0x6E, 0x6E, 0x65, 0x72, 0x6E, 0x65,
+ 0x79, 0x05, 0x0D, 0x02, 0x51, 0x69, 0x6E, 0x67,
+ 0x20, 0x59, 0x75, 0x61, 0x6E, 0x05, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x02, 0x4C, 0x45, 0x41, 0x44, 0x20,
+ 0x41, 0x52, 0x54, 0x49, 0x53, 0x54, 0x05, 0x0D,
+ 0x0D, 0x02, 0x52, 0x69, 0x63, 0x6B, 0x20, 0x50,
+ 0x61, 0x72, 0x6B, 0x73, 0x05, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x02, 0x41, 0x52, 0x54, 0x49, 0x53, 0x54,
+ 0x53, 0x05, 0x0D, 0x0D, 0x02, 0x45, 0x6C, 0x69,
+ 0x65, 0x20, 0x41, 0x72, 0x61, 0x62, 0x69, 0x61,
+ 0x6E, 0x05, 0x0D, 0x02, 0x43, 0x61, 0x72, 0x79,
+ 0x20, 0x44, 0x65, 0x61, 0x6E, 0x20, 0x41, 0x76,
+ 0x65, 0x72, 0x65, 0x74, 0x74, 0x05, 0x0D, 0x02,
+ 0x45, 0x72, 0x69, 0x63, 0x20, 0x47, 0x6F, 0x6F,
+ 0x63, 0x68, 0x05, 0x0D, 0x02, 0x4A, 0x6F, 0x73,
+ 0x65, 0x70, 0x68, 0x20, 0x42, 0x2E, 0x20, 0x48,
+ 0x65, 0x77, 0x69, 0x74, 0x74, 0x20, 0x49, 0x56,
+ 0x05, 0x0D, 0x02, 0x52, 0x65, 0x6E, 0x20, 0x4F,
+ 0x6C, 0x73, 0x65, 0x6E, 0x05, 0x0D, 0x02, 0x4A,
+ 0x75, 0x64, 0x69, 0x74, 0x68, 0x20, 0x50, 0x65,
+ 0x74, 0x65, 0x72, 0x73, 0x6F, 0x6E, 0x05, 0x0D,
+ 0x02, 0x45, 0x2E, 0x4D, 0x2E, 0x20, 0x4C, 0x6F,
+ 0x75, 0x69, 0x73, 0x65, 0x20, 0x53, 0x61, 0x6E,
+ 0x64, 0x6F, 0x76, 0x61, 0x6C, 0x05, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x02, 0x4D, 0x55, 0x53, 0x49, 0x43,
+ 0x20, 0x26, 0x20, 0x53, 0x4F, 0x55, 0x4E, 0x44,
+ 0x53, 0x05, 0x0D, 0x0D, 0x02, 0x50, 0x61, 0x75,
+ 0x6C, 0x20, 0x53, 0x2E, 0x20, 0x4D, 0x75, 0x64,
+ 0x72, 0x61, 0x05, 0x0D, 0x02, 0x44, 0x77, 0x69,
+ 0x67, 0x68, 0x74, 0x20, 0x4B, 0x2E, 0x20, 0x4F,
+ 0x6B, 0x61, 0x68, 0x61, 0x72, 0x61, 0x05, 0x0D,
+ 0x02, 0x46, 0x72, 0x61, 0x6E, 0x6B, 0x20, 0x4B,
+ 0x6C, 0x65, 0x70, 0x61, 0x63, 0x6B, 0x69, 0x05,
+ 0x0D, 0x02, 0x50, 0x61, 0x74, 0x72, 0x69, 0x63,
+ 0x6B, 0x20, 0x43, 0x6F, 0x6C, 0x6C, 0x69, 0x6E,
+ 0x73, 0x05, 0x0D, 0x0D, 0x0D, 0x0D, 0x02, 0x51,
+ 0x55, 0x41, 0x4C, 0x49, 0x54, 0x59, 0x20, 0x41,
+ 0x53, 0x53, 0x55, 0x52, 0x41, 0x4E, 0x43, 0x45,
+ 0x05, 0x0D, 0x0D, 0x02, 0x4A, 0x65, 0x73, 0x73,
+ 0x65, 0x20, 0x43, 0x6C, 0x65, 0x6D, 0x69, 0x74,
+ 0x05, 0x0D, 0x02, 0x4B, 0x65, 0x6E, 0x6E, 0x65,
+ 0x74, 0x68, 0x20, 0x44, 0x75, 0x6E, 0x6E, 0x65,
+ 0x05, 0x0D, 0x02, 0x4A, 0x65, 0x66, 0x66, 0x20,
+ 0x53, 0x74, 0x65, 0x76, 0x65, 0x6E, 0x20, 0x46,
+ 0x69, 0x6C, 0x6C, 0x68, 0x61, 0x62, 0x65, 0x72,
+ 0x05, 0x0D, 0x02, 0x57, 0x69, 0x6C, 0x6C, 0x69,
+ 0x61, 0x6D, 0x20, 0x46, 0x6F, 0x73, 0x74, 0x65,
+ 0x72, 0x05, 0x0D, 0x02, 0x53, 0x63, 0x6F, 0x74,
+ 0x74, 0x20, 0x46, 0x6C, 0x65, 0x6D, 0x69, 0x6E,
+ 0x67, 0x05, 0x0D, 0x02, 0x4D, 0x69, 0x63, 0x68,
+ 0x61, 0x65, 0x6C, 0x20, 0x4C, 0x69, 0x67, 0x68,
+ 0x74, 0x6E, 0x65, 0x72, 0x05, 0x0D, 0x02, 0x47,
+ 0x6C, 0x65, 0x6E, 0x6E, 0x20, 0x53, 0x70, 0x65,
+ 0x72, 0x72, 0x79, 0x05, 0x0D, 0x02, 0x43, 0x68,
+ 0x72, 0x69, 0x73, 0x20, 0x4D, 0x63, 0x46, 0x61,
+ 0x72, 0x6C, 0x61, 0x6E, 0x64, 0x05, 0x0D, 0x02,
+ 0x53, 0x63, 0x6F, 0x74, 0x74, 0x20, 0x4D, 0x61,
+ 0x6E, 0x6E, 0x69, 0x6E, 0x67, 0x05, 0x0D, 0x02,
+ 0x50, 0x61, 0x75, 0x6C, 0x20, 0x53, 0x68, 0x6F,
+ 0x65, 0x6E, 0x65, 0x72, 0x05, 0x0D, 0x02, 0x41,
+ 0x64, 0x61, 0x6D, 0x20, 0x52, 0x79, 0x61, 0x6E,
+ 0x05, 0x0D, 0x02, 0x4D, 0x69, 0x74, 0x63, 0x68,
+ 0x20, 0x46, 0x69, 0x65, 0x6C, 0x64, 0x6D, 0x61,
+ 0x6E, 0x05, 0x0D, 0x02, 0x4A, 0x61, 0x72, 0x65,
+ 0x64, 0x20, 0x42, 0x72, 0x69, 0x6E, 0x6B, 0x6C,
+ 0x65, 0x79, 0x05, 0x0D, 0x02, 0x4A, 0x75, 0x73,
+ 0x74, 0x69, 0x6E, 0x20, 0x48, 0x61, 0x6C, 0x6C,
+ 0x05, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x02,
+ 0x56, 0x4F, 0x49, 0x43, 0x45, 0x20, 0x41, 0x43,
+ 0x54, 0x4F, 0x52, 0x53, 0x05, 0x0D, 0x0D, 0x03,
+ 0x52, 0x69, 0x63, 0x68, 0x61, 0x72, 0x64, 0x20,
+ 0x53, 0x6D, 0x69, 0x74, 0x68, 0x20, 0x61, 0x73,
+ 0x05, 0x04, 0x4B, 0x49, 0x4E, 0x47, 0x20, 0x52,
+ 0x49, 0x43, 0x48, 0x41, 0x52, 0x44, 0x05, 0x0D,
+ 0x03, 0x45, 0x72, 0x69, 0x63, 0x20, 0x47, 0x6F,
+ 0x6F, 0x63, 0x68, 0x20, 0x61, 0x73, 0x05, 0x04,
+ 0x47, 0x45, 0x52, 0x4F, 0x4E, 0x05, 0x0D, 0x03,
+ 0x53, 0x63, 0x6F, 0x74, 0x69, 0x61, 0x20, 0x61,
+ 0x73, 0x05, 0x04, 0x68, 0x65, 0x72, 0x73, 0x65,
+ 0x6C, 0x66, 0x05, 0x0D, 0x03, 0x46, 0x72, 0x61,
+ 0x6E, 0x6B, 0x20, 0x4B, 0x6C, 0x65, 0x70, 0x61,
+ 0x63, 0x6B, 0x69, 0x20, 0x61, 0x73, 0x05, 0x04,
+ 0x50, 0x49, 0x47, 0x4C, 0x45, 0x54, 0x05, 0x0D,
+ 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x02, 0x4A, 0x41,
+ 0x50, 0x41, 0x4E, 0x45, 0x53, 0x45, 0x20, 0x56,
+ 0x45, 0x52, 0x49, 0x53, 0x49, 0x4F, 0x4E, 0x05,
+ 0x0D, 0x0D, 0x0D, 0x02, 0x50, 0x52, 0x4F, 0x47,
+ 0x52, 0x41, 0x4D, 0x4D, 0x45, 0x52, 0x53, 0x05,
+ 0x0D, 0x0D, 0x02, 0x59, 0x75, 0x6B, 0x69, 0x6F,
+ 0x20, 0x53, 0x65, 0x6B, 0x69, 0x67, 0x75, 0x63,
+ 0x68, 0x69, 0x05, 0x0D, 0x02, 0x4E, 0x61, 0x6F,
+ 0x73, 0x68, 0x69, 0x20, 0x4E, 0x6F, 0x67, 0x75,
+ 0x63, 0x68, 0x69, 0x05, 0x0D, 0x0D, 0x0D, 0x0D,
+ 0x02, 0x41, 0x52, 0x54, 0x49, 0x53, 0x54, 0x53,
+ 0x05, 0x0D, 0x0D, 0x02, 0x4D, 0x61, 0x73, 0x61,
+ 0x6B, 0x69, 0x20, 0x54, 0x6F, 0x67, 0x61, 0x73,
+ 0x68, 0x69, 0x05, 0x0D, 0x02, 0x52, 0x69, 0x73,
+ 0x61, 0x6B, 0x6F, 0x20, 0x53, 0x65, 0x74, 0x6F,
+ 0x05, 0x0D, 0x02, 0x52, 0x65, 0x69, 0x67, 0x61,
+ 0x20, 0x59, 0x61, 0x73, 0x75, 0x64, 0x61, 0x05,
+ 0x0D, 0x02, 0x4D, 0x61, 0x73, 0x75, 0x6D, 0x69,
+ 0x20, 0x53, 0x68, 0x69, 0x6E, 0x62, 0x6F, 0x05,
+ 0x0D, 0x02, 0x4E, 0x61, 0x6F, 0x6B, 0x6F, 0x20,
+ 0x4E, 0x69, 0x74, 0x74, 0x61, 0x05, 0x0D, 0x02,
+ 0x4B, 0x69, 0x79, 0x6F, 0x66, 0x75, 0x6D, 0x69,
+ 0x20, 0x48, 0x69, 0x6E, 0x6F, 0x05, 0x0D, 0x02,
+ 0x48, 0x69, 0x72, 0x6F, 0x6D, 0x69, 0x20, 0x53,
+ 0x61, 0x6B, 0x61, 0x65, 0x05, 0x0D, 0x02, 0x4B,
+ 0x79, 0x6F, 0x75, 0x6B, 0x6F, 0x20, 0x4D, 0x69,
+ 0x79, 0x61, 0x6D, 0x6F, 0x74, 0x6F, 0x05, 0x0D,
+ 0x02, 0x53, 0x68, 0x6F, 0x6B, 0x6F, 0x20, 0x4D,
+ 0x75, 0x72, 0x61, 0x6B, 0x61, 0x6D, 0x69, 0x05,
+ 0x0D, 0x0D, 0x0D, 0x0D, 0x02, 0x4D, 0x55, 0x53,
+ 0x49, 0x43, 0x20, 0x26, 0x20, 0x53, 0x4F, 0x55,
+ 0x4E, 0x44, 0x53, 0x05, 0x0D, 0x0D, 0x02, 0x54,
+ 0x61, 0x6B, 0x65, 0x73, 0x68, 0x69, 0x20, 0x41,
+ 0x62, 0x6F, 0x05, 0x0D, 0x0D, 0x0D, 0x0D, 0x02,
+ 0x4A, 0x41, 0x50, 0x41, 0x4E, 0x45, 0x53, 0x45,
+ 0x20, 0x54, 0x52, 0x41, 0x4E, 0x53, 0x4C, 0x41,
+ 0x54, 0x4F, 0x52, 0x05, 0x0D, 0x0D, 0x02, 0x59,
+ 0x75, 0x72, 0x69, 0x20, 0x49, 0x74, 0x6F, 0x05,
+ 0x0D, 0x0D, 0x0D, 0x0D, 0x02, 0x53, 0x70, 0x65,
+ 0x63, 0x69, 0x61, 0x6C, 0x20, 0x74, 0x68, 0x61,
+ 0x6E, 0x6B, 0x73, 0x20, 0x74, 0x6F, 0x3A, 0x05,
+ 0x0D, 0x0D, 0x02, 0x48, 0x69, 0x72, 0x6F, 0x6B,
+ 0x6F, 0x20, 0x59, 0x6F, 0x72, 0x6F, 0x69, 0x7A,
+ 0x75, 0x6B, 0x61, 0x05, 0x0D, 0x02, 0x59, 0x75,
+ 0x6A, 0x69, 0x20, 0x4F, 0x64, 0x61, 0x77, 0x61,
+ 0x72, 0x61, 0x05, 0x0D, 0x02, 0x4F, 0x68, 0x73,
+ 0x68, 0x75, 0x6E, 0x20, 0x4C, 0x65, 0x65, 0x05,
+ 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x01,
+ 0x43, 0x6F, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68,
+ 0x74, 0x20, 0x28, 0x43, 0x29, 0x20, 0x31, 0x39,
+ 0x39, 0x33, 0x2C, 0x20, 0x57, 0x65, 0x73, 0x74,
+ 0x77, 0x6F, 0x6F, 0x64, 0x20, 0x53, 0x74, 0x75,
+ 0x64, 0x69, 0x6F, 0x73, 0x2C, 0x20, 0x49, 0x6E,
+ 0x63, 0x2E, 0x05, 0x0D, 0x01, 0x43, 0x6F, 0x70,
+ 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x28,
+ 0x43, 0x29, 0x20, 0x31, 0x39, 0x39, 0x34, 0x2C,
+ 0x20, 0x53, 0x74, 0x61, 0x72, 0x43, 0x72, 0x61,
+ 0x66, 0x74, 0x2C, 0x20, 0x49, 0x6E, 0x63, 0x2E,
+ 0x05, 0x0D, 0x01, 0x41, 0x6C, 0x6C, 0x20, 0x72,
+ 0x69, 0x67, 0x68, 0x74, 0x73, 0x20, 0x72, 0x65,
+ 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x2E, 0x05,
+ 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
+ 0x00, 0x00, 0x00, 0x00
+};
+
+static const ByteProvider kLoLCreditsFMTownsProvider = { ARRAYSIZE(kLoLCreditsFMTowns), kLoLCreditsFMTowns };
+
diff --git a/devtools/create_kyradat/resources/lol_fmtowns_japanese.h b/devtools/create_kyradat/resources/lol_fmtowns_japanese.h
new file mode 100644
index 0000000000..b43fcdd6e8
--- /dev/null
+++ b/devtools/create_kyradat/resources/lol_fmtowns_japanese.h
@@ -0,0 +1,68 @@
+static const LoLCharacter kLoLCharacterDefsFMTownsJapanese[9] = {
+ { 0x0001, "\x83""}""\x83""C""\x83""P""\x83\x8B", 0, -1, 0, 0, 17,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 20, 20, 6, 6, 0, 0, 0, 384, 320, 5, 2, 0,
+ { 44, 0, 0, 0, 0, 138, 0, 0, 162, 0, 0 },
+ { 1, 1, 1 }, { 0, 0, 0 }, { 1, 1, 1 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "\x83""e""\x83""B""\x83\x82\x83""V""\x81""[", 0, 2, 0, 0, 22,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 27, 27, 5, 5, 0, 0, 0, 256, 256, 0, 0, 0,
+ { 93, 131, 0, 0, 0, 153, 0, 0, 162, 0, 0 },
+ { 3, 2, 1 }, { 0, 0, 0 }, { 2500, 1000, 250 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "\x83""o""\x83""R""\x81""[""\x83""^", 3, 3, 0, 0, 23,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 22, 22, 18, 18, 0, 0, 0, 256, 256, 0, 0, 0,
+ { 108, 149, 0, 0, 145, 153, 0, 0, 129, 0, 0 },
+ { 1, 1, 3 }, { 0, 0, 0 }, { 1, 1, 4000 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "\x83\x8D\x81""[""\x83\x89", 1, 4, 0, 0, 24,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 25, 48, 5, 5, 0, 0, 0, 256, 256, 0, 0, 0,
+ { 0, 0, 0, 0, 0, 137, 0, 0, 162, 0, 0 },
+ { 1, 4, 1 }, { 0, 0, 0 }, { 1, 15001, 1 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "\x83""R""\x83\x93\x83\x89\x83""b""\x83""h", 0, -5, 0, 0, 26,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 23, 23, 10, 10, 0, 0, 0, 366, 358, 2, 3, 0,
+ { 44, 0, 0, 0, 0, 138, 0, 0, 162, 0, 0 },
+ { 1, 1, 1 }, { 0, 0, 0 }, { 1, 1, 1 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "\x83""|""\x81""[""\x83\x8B\x83""\\""\x83\x93", 0, 6, 0, 0, 25,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 105, 105, 45, 45, 0, 0, 0, 256, 256, 0, 0, 0,
+ { 0, 0, 0, 0, 0, 138, 0, 0, 129, 0, 0 },
+ { 5, 2, 3 }, { 0, 0, 0 }, { 40000, 501, 3500 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "\x83""h""\x81""[""\x83\x93", 1, 7, 0, 0, 24,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 50, 50, 80, 80, 0, 0, 0, 256, 256, 0, 0, 0,
+ { 0, 0, 0, 0, 0, 138, 0, 0, 129, 0, 0 },
+ { 1, 2, 10 }, { 1, 254, 177 }, { 1, 501, 1 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "\x83""L""\x81""[""\x83\x89\x83\x93", 2, -8, 0, 0, 21,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 23, 23, 8, 8, 0, 0, 0, 422, 332, 5, 1, 0,
+ { 44, 0, 0, 0, 0, 138, 0, 0, 162, 0, 0 },
+ { 1, 1, 1 }, { 0, 0, 0 }, { 1, 1, 1 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "\x83""A""\x83""N""\x83""V""\x83""F""\x83\x8B", 4, -9, 0, 0, 20,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 28, 28, 32, 32, 0, 0, 0, 320, 256, 1, 1, 0,
+ { 44, 0, 0, 0, 0, 138, 0, 0, 162, 0, 0 },
+ { 1, 1, 1 }, { 0, 0, 0 }, { 1, 1, 1 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } }
+};
+
+static const LoLCharacterProvider kLoLCharacterDefsFMTownsJapaneseProvider = { ARRAYSIZE(kLoLCharacterDefsFMTownsJapanese), kLoLCharacterDefsFMTownsJapanese };
+
diff --git a/devtools/create_kyradat/resources/lol_pc98.h b/devtools/create_kyradat/resources/lol_pc98.h
new file mode 100644
index 0000000000..e62fabe210
--- /dev/null
+++ b/devtools/create_kyradat/resources/lol_pc98.h
@@ -0,0 +1,1598 @@
+static const char *const kLoLIngamePakFilesPC98[11] = {
+ "VOC.PAK",
+ "GENERAL.PAK",
+ "CHAPTER1.PAK",
+ "CHAPTER2.PAK",
+ "CHAPTER3.PAK",
+ "CHAPTER4.PAK",
+ "CHAPTER5.PAK",
+ "CHAPTER6.PAK",
+ "CHAPTER7.PAK",
+ "CHAPTER8.PAK",
+ "MUS.PAK"
+};
+
+static const StringListProvider kLoLIngamePakFilesPC98Provider = { ARRAYSIZE(kLoLIngamePakFilesPC98), kLoLIngamePakFilesPC98 };
+
+static const char *const kLoLIngameSfxFilesPC98[229] = {
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "XXXXXXXX",
+ "DOORMTOP",
+ "DOORMTCL",
+ "PMETLHI",
+ "SWING6",
+ "MDAMAGE2",
+ "LEVERDN",
+ "LEVERUP",
+ "MTLDRSLM",
+ "DOORWDOP",
+ "DOORWDCL",
+ "KEYOPEN",
+ "KEYLOCK",
+ "PORTCUL",
+ "PORTCULD",
+ "LOKPICK",
+ "OCEAN2",
+ "NUNCHUK",
+ "SWING",
+ "SHWING1",
+ "SWING6",
+ "THROW",
+ "CROSSBOW",
+ "HEAL1",
+ "FIRESPL1",
+ "PRESSIN",
+ "PRESSOUT",
+ "PLATEON",
+ "PLATEOFF",
+ "DORWDSLM",
+ "LITENIN1",
+ "ICESPEL2",
+ "SPELL4B",
+ "SHIELD1",
+ "3BOLTC",
+ "2BOLTC",
+ "1BOLTC",
+ "DAWNSPL1",
+ "HEALKING",
+ "SPELL7",
+ "SWING1",
+ "EXPLODE",
+ "CROWCAW",
+ "MORPH2",
+ "CHEST",
+ "MONEY",
+ "SPELBK2",
+ "AUTOMAP",
+ "MINECRT3",
+ "CREAK1",
+ "TURNPAG2",
+ "POLGULP1",
+ "GOOEY1",
+ "BUCKBELL",
+ "KEEPXIT2",
+ "VSCREAM4",
+ "EMPTY",
+ "GOOEY1",
+ "GOOEY2",
+ "RIPPOD4",
+ "PODSKEL1",
+ "INVISO",
+ "OPENBOX2",
+ "ACCEPT2",
+ "BOW2",
+ "HACHUCKM",
+ "FOUNDRY2",
+ "FOUNDRY2",
+ "FOUNDRY4",
+ "FOUNDRY6",
+ "CLEANGL1",
+ "CLEANGL2",
+ "GLOWY1",
+ "DORSTNOP",
+ "DORSTNCL",
+ "EMPTY",
+ "EMPTY",
+ "EMPTY",
+ "EMPTY",
+ "ADAMAGE1",
+ "HDAMAGE1",
+ "TDAMAGE1",
+ "BDAMAGE1",
+ "LDAMAGE1",
+ "TDAMAGE2",
+ "CDAMAGE1",
+ "EMPTY",
+ "EMPTY",
+ "EMPTY",
+ "GOOD1",
+ "GOOD2",
+ "EMPTY",
+ "EMPTY",
+ "EMPTY",
+ "LITENIN1",
+ "COMPASS2",
+ "KINGDOR1",
+ "GLASBRK2",
+ "FLUTTER3",
+ "NUNCHUK",
+ "WALLFALL",
+ "WALLHIT",
+ "MWHOA1",
+ "LADDER",
+ "WHITTL3",
+ "ROWBOAT1",
+ "HORSEY2",
+ "SNORT",
+ "PUMPDOR1",
+ "PUMPSM2",
+ "PUMPSM3",
+ "SPARK1",
+ "BEZEL",
+ "SWARM",
+ "CHEST",
+ "WRIT1",
+ "CAUSFOG",
+ "VAELAN2",
+ "ROARSPL1",
+ "RATTLER",
+ "WINK1",
+ "HANDFATE",
+ "QUAKE1",
+ "WIZLAMP1",
+ "SAP2",
+ "MSTDOOM1",
+ "GARDIAN1",
+ "VORTEX1",
+ "LION1",
+ "STEAM",
+ "SQUAWCK",
+ "SLIDEMUG",
+ "SPARKHIT",
+ "SPARKHIT2",
+ "SPARKHIT3",
+ "ICEFORM",
+ "ICEXPLOD",
+ "EXPLODE2",
+ "EXPLODE3",
+ "BOLTQUK2",
+ "BOLT2",
+ "BOLT3",
+ "SNKBITE",
+ "HANDGLOW",
+ "MSTDOOM2",
+ "MSTDOOM3",
+ "GARDIAN2",
+ "PLUSPOWR",
+ "MINSPOWR",
+ "BLUDCURL",
+ "LORAGASP",
+ "POURH2O",
+ "AWHOA2",
+ "HWHOA1",
+ "CWHOA1",
+ "AFALL2",
+ "EMPTY",
+ "CFALL2",
+ "MFALL2",
+ "EMPTY",
+ "EMPTY",
+ "EMPTY",
+ "EMPTY",
+ "EMPTY",
+ "EMPTY",
+ "EMPTY",
+ "EMPTY",
+ "WRIT2",
+ "WRIT3",
+ "WRIT4",
+ "WRIT5",
+ "WRIT6",
+ "RUCKUS1",
+ "RUCKUS3",
+ "CHANT1",
+ "EMPTY",
+ "EMPTY",
+ "EMPTY",
+ "CHANT2",
+ "CHANT3"
+};
+
+static const StringListProvider kLoLIngameSfxFilesPC98Provider = { ARRAYSIZE(kLoLIngameSfxFilesPC98), kLoLIngameSfxFilesPC98 };
+
+static const byte kLoLIngameSfxIndexPC98[1000] = {
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0x34, 0x00, 0x6F, 0x00, 0x7C, 0x00, 0x00, 0x00,
+ 0x7D, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00,
+ 0x7F, 0x00, 0x00, 0x00, 0x36, 0x00, 0x73, 0x00,
+ 0x35, 0x00, 0x9C, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
+ 0x80, 0x00, 0x73, 0x00, 0x81, 0x00, 0x73, 0x00,
+ 0x82, 0x00, 0x73, 0x00, 0x83, 0x00, 0x73, 0x00,
+ 0x84, 0x00, 0x73, 0x00, 0x85, 0x00, 0x73, 0x00,
+ 0x86, 0x00, 0x73, 0x00, 0xD7, 0x00, 0x76, 0x00,
+ 0x87, 0x00, 0x65, 0x00, 0x38, 0x00, 0x5F, 0x00,
+ 0x37, 0x00, 0x5F, 0x00, 0x32, 0x00, 0x0A, 0x00,
+ 0x33, 0x00, 0x64, 0x00, 0x39, 0x00, 0x65, 0x00,
+ 0x3A, 0x00, 0x0A, 0x00, 0x3B, 0x00, 0x14, 0x00,
+ 0x4E, 0x00, 0x65, 0x00, 0x7A, 0x00, 0x64, 0x00,
+ 0x7B, 0x00, 0x64, 0x00, 0x88, 0x00, 0x65, 0x00,
+ 0x3C, 0x00, 0x65, 0x00, 0x3D, 0x00, 0x64, 0x00,
+ 0x89, 0x00, 0x00, 0x00, 0x8E, 0x00, 0x14, 0x00,
+ 0x3E, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00,
+ 0x40, 0x00, 0x65, 0x00, 0x41, 0x00, 0x00, 0x00,
+ 0xC9, 0x00, 0x72, 0x00, 0xCA, 0x00, 0x72, 0x00,
+ 0xCB, 0x00, 0x72, 0x00, 0xCC, 0x00, 0x74, 0x00,
+ 0xCD, 0x00, 0x74, 0x00, 0xCE, 0x00, 0x74, 0x00,
+ 0xCF, 0x00, 0x74, 0x00, 0xD0, 0x00, 0x73, 0x00,
+ 0xD1, 0x00, 0x73, 0x00, 0xD2, 0x00, 0x73, 0x00,
+ 0xD3, 0x00, 0x73, 0x00, 0xD4, 0x00, 0x72, 0x00,
+ 0xD5, 0x00, 0x72, 0x00, 0xD6, 0x00, 0x72, 0x00,
+ 0x42, 0x00, 0x6F, 0x00, 0x43, 0x00, 0x6F, 0x00,
+ 0x44, 0x00, 0x6F, 0x00, 0x45, 0x00, 0x6F, 0x00,
+ 0x46, 0x00, 0x6F, 0x00, 0x47, 0x00, 0x6F, 0x00,
+ 0x48, 0x00, 0x77, 0x00, 0x49, 0x00, 0x89, 0xFF,
+ 0x4F, 0x00, 0x89, 0xFF, 0x50, 0x00, 0x89, 0xFF,
+ 0xA0, 0x00, 0x8A, 0xFF, 0xA1, 0x00, 0x89, 0xFF,
+ 0xA2, 0x00, 0x89, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
+ 0xA3, 0x00, 0x89, 0xFF, 0xA4, 0x00, 0x89, 0xFF,
+ 0x4A, 0x00, 0x13, 0x00, 0x4B, 0x00, 0x13, 0x00,
+ 0x4C, 0x00, 0x32, 0x00, 0x4D, 0x00, 0x32, 0x00,
+ 0x5F, 0x00, 0x0A, 0x00, 0x51, 0x00, 0x00, 0x00,
+ 0x52, 0x00, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x00,
+ 0x53, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00,
+ 0x55, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00,
+ 0x57, 0x00, 0x00, 0x00, 0x58, 0x00, 0x77, 0x00,
+ 0x60, 0x00, 0x00, 0x00, 0x5D, 0x00, 0x6A, 0x00,
+ 0x8A, 0x00, 0x6F, 0x00, 0x8B, 0x00, 0x6F, 0x00,
+ 0x8C, 0x00, 0x00, 0x00, 0x8D, 0x00, 0x00, 0x00,
+ 0x5A, 0x00, 0x77, 0x00, 0x5C, 0x00, 0x00, 0x00,
+ 0x5B, 0x00, 0x00, 0x00, 0x5E, 0x00, 0x6F, 0x00,
+ 0x61, 0x00, 0x76, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0x62, 0x00, 0x76, 0x00, 0x63, 0x00, 0x3C, 0x00,
+ 0x64, 0x00, 0x6D, 0x00, 0x65, 0x00, 0x00, 0x00,
+ 0x66, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00,
+ 0x68, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00,
+ 0x6A, 0x00, 0x00, 0x00, 0x6B, 0x00, 0x00, 0x00,
+ 0x6C, 0x00, 0x00, 0x00, 0x6D, 0x00, 0x00, 0x00,
+ 0x6E, 0x00, 0x00, 0x00, 0x6F, 0x00, 0x00, 0x00,
+ 0x70, 0x00, 0x88, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
+ 0x71, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00,
+ 0x73, 0x00, 0x74, 0x00, 0x74, 0x00, 0x00, 0x00,
+ 0x75, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00,
+ 0x77, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00,
+ 0x79, 0x00, 0x77, 0x00, 0x90, 0x00, 0x00, 0x00,
+ 0x91, 0x00, 0x00, 0x00, 0x92, 0x00, 0x77, 0x00,
+ 0x93, 0x00, 0x1E, 0x00, 0x94, 0x00, 0x89, 0xFF,
+ 0x95, 0x00, 0x77, 0x00, 0x96, 0x00, 0x76, 0x00,
+ 0x97, 0x00, 0x72, 0x00, 0x98, 0x00, 0x00, 0x00,
+ 0x99, 0x00, 0x50, 0x00, 0x9A, 0x00, 0x78, 0x00,
+ 0x9B, 0x00, 0x64, 0x00, 0x9C, 0x00, 0x5A, 0x00,
+ 0x9D, 0x00, 0x64, 0x00, 0x9E, 0x00, 0x65, 0x00,
+ 0x9F, 0x00, 0x66, 0x00, 0xA5, 0x00, 0x89, 0xFF,
+ 0xA6, 0x00, 0x89, 0xFF, 0xA7, 0x00, 0x77, 0x00,
+ 0xA8, 0x00, 0x76, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xA9, 0x00, 0x77, 0x00, 0xAA, 0x00, 0x77, 0x00,
+ 0xAB, 0x00, 0x77, 0x00, 0xAC, 0x00, 0x77, 0x00,
+ 0xAD, 0x00, 0x77, 0x00, 0xAE, 0x00, 0x77, 0x00,
+ 0xAF, 0x00, 0x76, 0x00, 0xB0, 0x00, 0x77, 0x00,
+ 0xB1, 0x00, 0x64, 0x00, 0xB2, 0x00, 0x6F, 0x00,
+ 0xB3, 0x00, 0x6E, 0x00, 0xB4, 0x00, 0x6E, 0x00,
+ 0xB5, 0x00, 0x77, 0x00, 0xB6, 0x00, 0x77, 0x00,
+ 0xB7, 0x00, 0x77, 0x00, 0xB8, 0x00, 0x76, 0x00,
+ 0xB9, 0x00, 0x77, 0x00, 0xBA, 0x00, 0x77, 0x00,
+ 0xBB, 0x00, 0x77, 0x00, 0xBC, 0x00, 0x77, 0x00,
+ 0xBD, 0x00, 0x77, 0x00, 0xBE, 0x00, 0x77, 0x00,
+ 0xBF, 0x00, 0x77, 0x00, 0xC0, 0x00, 0x76, 0x00,
+ 0xC1, 0x00, 0x77, 0x00, 0xC2, 0x00, 0x77, 0x00,
+ 0xC3, 0x00, 0x77, 0x00, 0xC4, 0x00, 0x6E, 0x00,
+ 0xC5, 0x00, 0x6E, 0x00, 0xC6, 0x00, 0x7D, 0x00,
+ 0xC7, 0x00, 0x78, 0x00, 0xC8, 0x00, 0x78, 0x00,
+ 0xD8, 0x00, 0x77, 0x00, 0xD9, 0x00, 0x77, 0x00,
+ 0xDA, 0x00, 0x77, 0x00, 0xDB, 0x00, 0x77, 0x00,
+ 0xDC, 0x00, 0x77, 0x00, 0xDD, 0x00, 0x78, 0x00,
+ 0xDE, 0x00, 0x78, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0xE3, 0x00, 0x77, 0x00, 0xE4, 0x00, 0x77, 0x00,
+ 0xE0, 0x00, 0x1E, 0x00, 0xDF, 0x00, 0x77, 0x00,
+ 0xE1, 0x00, 0x05, 0x00, 0xE2, 0x00, 0x0A, 0x00,
+ 0x00, 0x00, 0x50, 0x00, 0x01, 0x00, 0x50, 0x00,
+ 0x02, 0x00, 0x50, 0x00, 0x03, 0x00, 0x50, 0x00,
+ 0x04, 0x00, 0x50, 0x00, 0x05, 0x00, 0x50, 0x00,
+ 0x06, 0x00, 0x50, 0x00, 0x07, 0x00, 0x50, 0x00,
+ 0x08, 0x00, 0x50, 0x00, 0x09, 0x00, 0x50, 0x00,
+ 0x0A, 0x00, 0x50, 0x00, 0x0B, 0x00, 0x50, 0x00,
+ 0x0C, 0x00, 0x50, 0x00, 0x0D, 0x00, 0x50, 0x00,
+ 0x0E, 0x00, 0x50, 0x00, 0x0F, 0x00, 0x50, 0x00,
+ 0x10, 0x00, 0x50, 0x00, 0x11, 0x00, 0x5A, 0x00,
+ 0x12, 0x00, 0x5A, 0x00, 0x13, 0x00, 0x5A, 0x00,
+ 0x14, 0x00, 0x5A, 0x00, 0x15, 0x00, 0x5A, 0x00,
+ 0x16, 0x00, 0x5A, 0x00, 0x17, 0x00, 0x5A, 0x00,
+ 0x18, 0x00, 0x5A, 0x00, 0x19, 0x00, 0x5A, 0x00,
+ 0x1A, 0x00, 0x5A, 0x00, 0x1B, 0x00, 0x5A, 0x00,
+ 0x1C, 0x00, 0x5A, 0x00, 0x1D, 0x00, 0x5A, 0x00,
+ 0x1E, 0x00, 0x5A, 0x00, 0x1F, 0x00, 0x5A, 0x00,
+ 0x20, 0x00, 0x5A, 0x00, 0x21, 0x00, 0x73, 0x00,
+ 0x22, 0x00, 0x73, 0x00, 0x23, 0x00, 0x73, 0x00,
+ 0x24, 0x00, 0x73, 0x00, 0x25, 0x00, 0x73, 0x00,
+ 0x26, 0x00, 0x73, 0x00, 0x27, 0x00, 0x73, 0x00,
+ 0x28, 0x00, 0x73, 0x00, 0x29, 0x00, 0x73, 0x00,
+ 0x2A, 0x00, 0x73, 0x00, 0x2B, 0x00, 0x50, 0x00,
+ 0x2C, 0x00, 0x5A, 0x00, 0x2D, 0x00, 0x5A, 0x00,
+ 0x2E, 0x00, 0x5A, 0x00, 0x2F, 0x00, 0x5A, 0x00,
+ 0x30, 0x00, 0x5A, 0x00, 0x31, 0x00, 0x5A, 0x00
+};
+
+static const ByteProvider kLoLIngameSfxIndexPC98Provider = { ARRAYSIZE(kLoLIngameSfxIndexPC98), kLoLIngameSfxIndexPC98 };
+
+static const SpellProperty kLoLSpellPropertiesPC98[10] = {
+ { 16436, { 5, 10, 15, 25 }, 0, 0, { 0, 0, 0, 0 }, 0, 0, 0x0100 },
+ { 16437, { 5, 10, 25, 60 }, 0, 0, { 0, 0, 0, 0 }, 0, 0, 0x0001 },
+ { 16438, { 8, 15, 30, 80 }, 0, 0, { 0, 0, 0, 0 }, 0, 0, 0x0102 },
+ { 16440, { 20, 35, 65, 100 }, 0, 0, { 0, 0, 0, 0 }, 0, 0, 0x0103 },
+ { 16441, { 30, 60, 90, 120 }, 0, 0, { 0, 0, 0, 0 }, 0, 0, 0x0104 },
+ { 16442, { 30, 60, 90, 150 }, 0, 0, { 0, 0, 0, 0 }, 0, 0, 0x0105 },
+ { 16439, { 25, 30, 50, 100 }, 0, 0, { 0, 0, 0, 0 }, 0, 0, 0x0106 },
+ { 16443, { 3, 6, 12, 24 }, 0, 0, { 0, 0, 0, 0 }, 0, 0, 0x0107 },
+ { 16975, { 15, 15, 15, 15 }, 0, 0, { 0, 0, 0, 0 }, 0, 0, 0x0108 },
+ { 16975, { 15, 15, 15, 15 }, 15, 0, { 0, 0, 0, 0 }, 0, 0, 0x0108 }
+};
+
+static const SpellPropertyProvider kLoLSpellPropertiesPC98Provider = { ARRAYSIZE(kLoLSpellPropertiesPC98), kLoLSpellPropertiesPC98 };
+
+static const byte kLoLGameShapeMapPC98[276] = {
+ 0x15, 0x54, 0x05, 0x35, 0x09, 0x36, 0x00, 0x34,
+ 0x00, 0x34, 0x00, 0x34, 0x00, 0x3A, 0x26, 0x3B,
+ 0x05, 0x35, 0x07, 0x37, 0x18, 0x3E, 0x0D, 0x3C,
+ 0x06, 0x40, 0x06, 0x3D, 0x01, 0x54, 0x01, 0x54,
+ 0x0A, 0x54, 0x0A, 0x54, 0x0A, 0x54, 0x04, 0x54,
+ 0x04, 0x54, 0x2D, 0x54, 0x2D, 0x54, 0x0B, 0x39,
+ 0x24, 0x54, 0x03, 0x38, 0x00, 0x3A, 0x1E, 0x3C,
+ 0x1E, 0x3C, 0x1B, 0x54, 0x14, 0x54, 0x29, 0x54,
+ 0x02, 0x54, 0x0C, 0x54, 0x22, 0x54, 0x21, 0x3F,
+ 0x0D, 0x3C, 0x25, 0x54, 0x1A, 0x3F, 0x04, 0x54,
+ 0x30, 0x54, 0x31, 0x54, 0x32, 0x54, 0x32, 0x54,
+ 0x00, 0x34, 0x00, 0x34, 0x00, 0x34, 0x00, 0x34,
+ 0x17, 0x54, 0x17, 0x54, 0x0E, 0x54, 0x0E, 0x54,
+ 0x0E, 0x54, 0x26, 0x3B, 0x2C, 0x54, 0x21, 0x3F,
+ 0x07, 0x37, 0x27, 0x54, 0x1B, 0x54, 0x1B, 0x54,
+ 0x1B, 0x54, 0x1B, 0x54, 0x1B, 0x54, 0x1B, 0x54,
+ 0x1B, 0x54, 0x1B, 0x54, 0x22, 0x54, 0x22, 0x54,
+ 0x16, 0x54, 0x2D, 0x54, 0x3B, 0x54, 0x3B, 0x54,
+ 0x3A, 0x54, 0x17, 0x54, 0x1B, 0x54, 0x1B, 0x54,
+ 0x17, 0x54, 0x0A, 0x54, 0x0A, 0x54, 0x0A, 0x54,
+ 0x1F, 0x54, 0x17, 0x54, 0x27, 0x54, 0x1B, 0x54,
+ 0x1E, 0x3C, 0x2A, 0x54, 0x2F, 0x54, 0x2F, 0x54,
+ 0x2F, 0x54, 0x2F, 0x54, 0x2F, 0x54, 0x2F, 0x54,
+ 0x2C, 0x54, 0x2C, 0x54, 0x2C, 0x54, 0x2C, 0x54,
+ 0x34, 0x54, 0x0F, 0x54, 0x35, 0x41, 0x1B, 0x54,
+ 0x1B, 0x54, 0x1B, 0x54, 0x1B, 0x54, 0x2B, 0x54,
+ 0x1D, 0x54, 0x1D, 0x54, 0x28, 0x54, 0x28, 0x54,
+ 0x28, 0x54, 0x28, 0x54, 0x01, 0x54, 0x14, 0x54,
+ 0x14, 0x54, 0x14, 0x54, 0x14, 0x54, 0x1B, 0x54,
+ 0x27, 0x54, 0x1B, 0x54, 0x1B, 0x54, 0x1B, 0x54,
+ 0x1B, 0x54, 0x36, 0x54, 0x37, 0x54, 0x38, 0x54,
+ 0x39, 0x54, 0x1B, 0x54, 0x1B, 0x54, 0x1B, 0x54,
+ 0x1B, 0x54, 0x27, 0x54, 0x2E, 0x54, 0x2E, 0x54,
+ 0x2E, 0x54, 0x2E, 0x54, 0x17, 0x54, 0x01, 0x54,
+ 0x1C, 0x54, 0x1C, 0x54
+};
+
+static const ByteProvider kLoLGameShapeMapPC98Provider = { ARRAYSIZE(kLoLGameShapeMapPC98), kLoLGameShapeMapPC98 };
+
+static const byte kLoLSceneItemOffsPC98[8] = {
+ 0x00, 0xFE, 0x01, 0xFF, 0x02, 0x00, 0x01, 0xFF
+};
+
+static const ByteProvider kLoLSceneItemOffsPC98Provider = { ARRAYSIZE(kLoLSceneItemOffsPC98), kLoLSceneItemOffsPC98 };
+
+static const byte kLoLCharInvIndexPC98[5] = {
+ 0x00, 0x00, 0x03, 0x01, 0x02
+};
+
+static const ByteProvider kLoLCharInvIndexPC98Provider = { ARRAYSIZE(kLoLCharInvIndexPC98), kLoLCharInvIndexPC98 };
+
+static const byte kLoLCharInvDefsPC98[88] = {
+ 0x05, 0x34, 0x50, 0x34, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x05, 0x04, 0x05, 0x1C, 0x50, 0x04, 0x50, 0x1C,
+ 0x05, 0x5D, 0x0F, 0x4E, 0x50, 0x4E, 0x05, 0x19,
+ 0x50, 0x19, 0x05, 0x49, 0x50, 0x49, 0x05, 0x01,
+ 0x05, 0x31, 0x50, 0x01, 0x50, 0x31, 0x05, 0x61,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x05, 0x34, 0x50, 0x34,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x05, 0x04, 0x05, 0x1C,
+ 0x50, 0x04, 0x50, 0x1C, 0x05, 0x5D, 0x0F, 0x4E,
+ 0x50, 0x4E, 0x05, 0x34, 0x50, 0x34, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x05, 0x04, 0x05, 0x1C, 0x50, 0x04,
+ 0x50, 0x1C, 0xFF, 0xFF, 0x0F, 0x4E, 0x50, 0x4E
+};
+
+static const ByteProvider kLoLCharInvDefsPC98Provider = { ARRAYSIZE(kLoLCharInvDefsPC98), kLoLCharInvDefsPC98 };
+
+static const uint16 kLoLCharDefsManPC98[9] = {
+ 0x0100, 0x0100, 0x0100, 0x0032, 0x0100, 0x0100, 0x0100, 0x0100,
+ 0x0004
+};
+
+static const Uint16Provider kLoLCharDefsManPC98Provider = { ARRAYSIZE(kLoLCharDefsManPC98), kLoLCharDefsManPC98 };
+
+static const uint16 kLoLCharDefsWomanPC98[9] = {
+ 0x0100, 0x0100, 0x0100, 0x0032, 0x0100, 0x0100, 0x0100, 0x0100,
+ 0x0004
+};
+
+static const Uint16Provider kLoLCharDefsWomanPC98Provider = { ARRAYSIZE(kLoLCharDefsWomanPC98), kLoLCharDefsWomanPC98 };
+
+static const uint16 kLoLCharDefsKieranPC98[9] = {
+ 0x0180, 0x0080, 0x00C0, 0x0032, 0x0200, 0x00A6, 0x0100, 0x0140,
+ 0x0006
+};
+
+static const Uint16Provider kLoLCharDefsKieranPC98Provider = { ARRAYSIZE(kLoLCharDefsKieranPC98), kLoLCharDefsKieranPC98 };
+
+static const uint16 kLoLCharDefsAkshelPC98[9] = {
+ 0x00C0, 0x00C0, 0x0140, 0x0032, 0x0100, 0x0180, 0x0180, 0x0100,
+ 0x0004
+};
+
+static const Uint16Provider kLoLCharDefsAkshelPC98Provider = { ARRAYSIZE(kLoLCharDefsAkshelPC98), kLoLCharDefsAkshelPC98 };
+
+static const uint32 kLoLExpRequirementsPC98[11] = {
+ 0x00000000, 0x000001F4, 0x000005DC, 0x00001388, 0x000061A8, 0x0000C350, 0x00013880, 0x0001D4C0,
+ 0x0002BF20, 0x00041EB0, 0x7FFFFFFF
+};
+
+static const Uint32Provider kLoLExpRequirementsPC98Provider = { ARRAYSIZE(kLoLExpRequirementsPC98), kLoLExpRequirementsPC98 };
+
+static const uint16 kLoLMonsterModifiers1PC98[3] = {
+ 0x00C0, 0x0100, 0x0180
+};
+
+static const Uint16Provider kLoLMonsterModifiers1PC98Provider = { ARRAYSIZE(kLoLMonsterModifiers1PC98), kLoLMonsterModifiers1PC98 };
+
+static const uint16 kLoLMonsterModifiers2PC98[3] = {
+ 0x0100, 0x0100, 0x00C0
+};
+
+static const Uint16Provider kLoLMonsterModifiers2PC98Provider = { ARRAYSIZE(kLoLMonsterModifiers2PC98), kLoLMonsterModifiers2PC98 };
+
+static const uint16 kLoLMonsterModifiers3PC98[3] = {
+ 0x0140, 0x0100, 0x0080
+};
+
+static const Uint16Provider kLoLMonsterModifiers3PC98Provider = { ARRAYSIZE(kLoLMonsterModifiers3PC98), kLoLMonsterModifiers3PC98 };
+
+static const byte kLoLMonsterShiftOffsetsPC98[32] = {
+ 0x01, 0x01, 0x01, 0x00, 0x01, 0xFF, 0x00, 0xFF,
+ 0x00, 0x00, 0x00, 0x01, 0xFF, 0x01, 0xFF, 0x00,
+ 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x01,
+ 0x01, 0x01, 0x01, 0x00, 0x01, 0xFF, 0x00, 0x00
+};
+
+static const ByteProvider kLoLMonsterShiftOffsetsPC98Provider = { ARRAYSIZE(kLoLMonsterShiftOffsetsPC98), kLoLMonsterShiftOffsetsPC98 };
+
+static const byte kLoLMonsterDirFlagsPC98[16] = {
+ 0x08, 0x14, 0x00, 0x04, 0x04, 0x08, 0x14, 0x00,
+ 0x00, 0x04, 0x08, 0x14, 0x14, 0x00, 0x04, 0x08
+};
+
+static const ByteProvider kLoLMonsterDirFlagsPC98Provider = { ARRAYSIZE(kLoLMonsterDirFlagsPC98), kLoLMonsterDirFlagsPC98 };
+
+static const byte kLoLMonsterScaleYPC98[30] = {
+ 0x7C, 0x78, 0x74, 0x70, 0x6C, 0x68, 0x65, 0x62,
+ 0x5F, 0x5C, 0x59, 0x56, 0x53, 0x50, 0x4D, 0x4A,
+ 0x48, 0x46, 0x44, 0x43, 0x41, 0x40, 0x3E, 0x3D,
+ 0x3C, 0x3B, 0x3A, 0x39, 0x38, 0x38
+};
+
+static const ByteProvider kLoLMonsterScaleYPC98Provider = { ARRAYSIZE(kLoLMonsterScaleYPC98), kLoLMonsterScaleYPC98 };
+
+static const byte kLoLMonsterScaleXPC98[29] = {
+ 0x98, 0x98, 0x90, 0x88, 0x80, 0x76, 0x6E, 0x68,
+ 0x62, 0x5C, 0x58, 0x54, 0x50, 0x4A, 0x44, 0x40,
+ 0x3C, 0x38, 0x36, 0x32, 0x30, 0x2C, 0x2A, 0x28,
+ 0x26, 0x24, 0x22, 0x20, 0x20
+};
+
+static const ByteProvider kLoLMonsterScaleXPC98Provider = { ARRAYSIZE(kLoLMonsterScaleXPC98), kLoLMonsterScaleXPC98 };
+
+static const uint16 kLoLMonsterScaleWHPC98[65] = {
+ 0x0041, 0x0045, 0x0049, 0x004D, 0x0051, 0x0055, 0x0059, 0x005D,
+ 0x0062, 0x0066, 0x006A, 0x006E, 0x0072, 0x0076, 0x007A, 0x007E,
+ 0x0082, 0x0086, 0x008A, 0x008E, 0x0092, 0x0096, 0x009A, 0x009E,
+ 0x00A3, 0x00A7, 0x00AB, 0x00AF, 0x00B3, 0x00B7, 0x00BB, 0x00BF,
+ 0x00C3, 0x00C7, 0x00CB, 0x00CF, 0x00D3, 0x00D7, 0x00DB, 0x00DF,
+ 0x00E4, 0x00E8, 0x00EC, 0x00F0, 0x00F4, 0x00F8, 0x00FC, 0x0100,
+ 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+ 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+ 0x0100
+};
+
+static const Uint16Provider kLoLMonsterScaleWHPC98Provider = { ARRAYSIZE(kLoLMonsterScaleWHPC98), kLoLMonsterScaleWHPC98 };
+
+static const FlyingObjectShape kLoLFlyingObjectShpPC98[13] = {
+ { 0, 0, 1, 0x00, 0x40, },
+ { 2, 2, 3, 0x00, 0x00, },
+ { 4, 4, 4, 0x00, 0x00, },
+ { 5, 5, 5, 0x20, 0x00, },
+ { 6, 6, 6, 0x20, 0x00, },
+ { 7, 7, 7, 0x20, 0x00, },
+ { 9, 8, 15, 0x00, 0x00, },
+ { 11, 10, 12, 0x00, 0x00, },
+ { 12, 12, 12, 0x20, 0x00, },
+ { 14, 13, 15, 0x00, 0x00, },
+ { 16, 16, 16, 0x00, 0x00, },
+ { 17, 17, 17, 0x20, 0x00, },
+ { 18, 18, 18, 0x00, 0x00, }
+};
+
+static const FlyingObjectShapeProvider kLoLFlyingObjectShpPC98Provider = { ARRAYSIZE(kLoLFlyingObjectShpPC98), kLoLFlyingObjectShpPC98 };
+
+static const uint16 kLoLInventoryDescPC98[11] = {
+ 0x417A, 0x417B, 0x417A, 0x417B, 0x417C, 0x417D, 0x417E, 0x417F,
+ 0x4180, 0x4181, 0x4181
+};
+
+static const Uint16Provider kLoLInventoryDescPC98Provider = { ARRAYSIZE(kLoLInventoryDescPC98), kLoLInventoryDescPC98 };
+
+static const char *const kLoLLevelShpListPC98[12] = {
+ "KEEP.SHP",
+ "FOREST1.SHP",
+ "MANOR.SHP",
+ "CAVE1.SHP",
+ "SWAMP.SHP",
+ "URBISH.SHP",
+ "MINE1.SHP",
+ "TOWER1.SHP",
+ "YVEL1.SHP",
+ "CATWALK.SHP",
+ "RUIN.SHP",
+ "CIMMERIA.SHP"
+};
+
+static const StringListProvider kLoLLevelShpListPC98Provider = { ARRAYSIZE(kLoLLevelShpListPC98), kLoLLevelShpListPC98 };
+
+static const char *const kLoLLevelDatListPC98[12] = {
+ "KEEP.DAT",
+ "FOREST1.DAT",
+ "MANOR.DAT",
+ "CAVE1.DAT",
+ "SWAMP.DAT",
+ "URBISH.DAT",
+ "MINE1.DAT",
+ "TOWER1.DAT",
+ "YVEL1.DAT",
+ "CATWALK.DAT",
+ "RUIN.DAT",
+ "CIMMERIA.DAT"
+};
+
+static const StringListProvider kLoLLevelDatListPC98Provider = { ARRAYSIZE(kLoLLevelDatListPC98), kLoLLevelDatListPC98 };
+
+static const CompassDef kLoLCompassDefsPC98[32] = {
+ { 0, 3, -3, 0x00 },
+ { 1, 3, -3, 0x00 },
+ { 2, 3, -3, 0x00 },
+ { 3, 5, -3, 0x00 },
+ { 4, 5, -3, 0x00 },
+ { 5, 6, -3, 0x00 },
+ { 6, 6, -3, 0x00 },
+ { 7, 6, -3, 0x00 },
+ { 8, 6, -3, 0x00 },
+ { 7, 6, 4, 0x02 },
+ { 6, 6, 4, 0x02 },
+ { 5, 6, 4, 0x02 },
+ { 4, 5, 4, 0x02 },
+ { 3, 5, 4, 0x02 },
+ { 2, 3, 4, 0x02 },
+ { 1, 3, 4, 0x02 },
+ { 0, 3, 4, 0x02 },
+ { 1, 2, 4, 0x03 },
+ { 2, 2, 4, 0x03 },
+ { 3, 0, 4, 0x03 },
+ { 4, 0, 4, 0x03 },
+ { 5, -1, 4, 0x03 },
+ { 6, -1, 4, 0x03 },
+ { 7, -1, 4, 0x03 },
+ { 8, -1, -3, 0x01 },
+ { 7, -1, -3, 0x01 },
+ { 6, -1, -3, 0x01 },
+ { 5, -1, -3, 0x01 },
+ { 4, 0, -3, 0x01 },
+ { 3, 0, -3, 0x01 },
+ { 2, 2, -3, 0x01 },
+ { 1, 2, -3, 0x01 }
+};
+
+static const CompassDefProvider kLoLCompassDefsPC98Provider = { ARRAYSIZE(kLoLCompassDefsPC98), kLoLCompassDefsPC98 };
+
+static const byte kLoLStashSetupPC98[12] = {
+ 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x03,
+ 0x03, 0x00, 0x01, 0x01
+};
+
+static const ByteProvider kLoLStashSetupPC98Provider = { ARRAYSIZE(kLoLStashSetupPC98), kLoLStashSetupPC98 };
+
+static const byte kLoLDscWallsPC98[36] = {
+ 0xFF, 0xFF, 0x02, 0x01, 0x02, 0x01, 0x02, 0xFF,
+ 0x02, 0x03, 0x02, 0x03, 0xFF, 0xFF, 0x02, 0x01,
+ 0x02, 0x01, 0x02, 0xFF, 0x02, 0x03, 0x02, 0x03,
+ 0x02, 0x01, 0x02, 0xFF, 0x02, 0x03, 0xFF, 0x01,
+ 0x02, 0xFF, 0xFF, 0x03
+};
+
+static const ByteProvider kLoLDscWallsPC98Provider = { ARRAYSIZE(kLoLDscWallsPC98), kLoLDscWallsPC98 };
+
+static const byte kLoLDscShapeIndexPC98[36] = {
+ 0x03, 0x09, 0x03, 0x08, 0x03, 0x07, 0x03, 0x03,
+ 0x03, 0xF9, 0x03, 0xF8, 0x03, 0xF7, 0x02, 0x09,
+ 0x02, 0x06, 0x02, 0x02, 0x02, 0xFA, 0x02, 0xF7,
+ 0x01, 0x05, 0x01, 0x01, 0x01, 0xFB, 0x00, 0x04,
+ 0x00, 0x00, 0x00, 0xFC
+};
+
+static const ByteProvider kLoLDscShapeIndexPC98Provider = { ARRAYSIZE(kLoLDscShapeIndexPC98), kLoLDscShapeIndexPC98 };
+
+static const byte kLoLDscOvlMapPC98[10] = {
+ 0x00, 0x01, 0x01, 0x01, 0x04, 0x05, 0x05, 0x05,
+ 0x05, 0x04
+};
+
+static const ByteProvider kLoLDscOvlMapPC98Provider = { ARRAYSIZE(kLoLDscOvlMapPC98), kLoLDscOvlMapPC98 };
+
+static const uint16 kLoLDscScaleWidthDataPC98[36] = {
+ 0x0060, 0x0000, 0x0060, 0x00CE, 0x0060, 0x0055, 0x0060, 0x0000,
+ 0x0060, 0x0055, 0x0060, 0x00CE, 0x0060, 0x0000, 0x00A0, 0x00AE,
+ 0x00A0, 0x00AA, 0x00A0, 0x0000, 0x00A0, 0x00AA, 0x00A0, 0x00AE,
+ 0x0100, 0x0100, 0x0100, 0x0000, 0x0100, 0x0100, 0x0000, 0x0100,
+ 0x0100, 0x0000, 0x0000, 0x0100
+};
+
+static const Uint16Provider kLoLDscScaleWidthDataPC98Provider = { ARRAYSIZE(kLoLDscScaleWidthDataPC98), kLoLDscScaleWidthDataPC98 };
+
+static const uint16 kLoLDscScaleHeightDataPC98[36] = {
+ 0x006A, 0x0000, 0x006A, 0x006A, 0x006A, 0x006A, 0x006A, 0x0000,
+ 0x006A, 0x006A, 0x006A, 0x006A, 0x006A, 0x0000, 0x00AA, 0x0056,
+ 0x00AA, 0x00AA, 0x00AA, 0x0000, 0x00AA, 0x00AA, 0x00AA, 0x0056,
+ 0x0100, 0x0100, 0x0100, 0x0000, 0x0100, 0x0100, 0x0000, 0x0100,
+ 0x0100, 0x0000, 0x0000, 0x0100
+};
+
+static const Uint16Provider kLoLDscScaleHeightDataPC98Provider = { ARRAYSIZE(kLoLDscScaleHeightDataPC98), kLoLDscScaleHeightDataPC98 };
+
+static const uint16 kLoLDscXPC98[36] = {
+ 0xFFB0, 0xFFE0, 0xFFE0, 0x0010, 0x0010, 0x0040, 0x0040, 0x0000,
+ 0x0070, 0x0070, 0x00A0, 0x00A0, 0x00D0, 0x00D0, 0xFF86, 0x0000,
+ 0xFFE0, 0x0030, 0x0030, 0x0000, 0x0080, 0x0080, 0x00D0, 0x00B0,
+ 0xFF98, 0x0018, 0x0018, 0x0000, 0x0098, 0x0098, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x00B0, 0x00B0
+};
+
+static const Uint16Provider kLoLDscXPC98Provider = { ARRAYSIZE(kLoLDscXPC98), kLoLDscXPC98 };
+
+static const byte kLoLBaseDscYPC98[36] = {
+ 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B,
+ 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x14, 0x1C,
+ 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x1C,
+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00
+};
+
+static const ByteProvider kLoLBaseDscYPC98Provider = { ARRAYSIZE(kLoLBaseDscYPC98), kLoLBaseDscYPC98 };
+
+static const byte kLoLDscTileIndexPC98[18] = {
+ 0x00, 0x06, 0x01, 0x05, 0x02, 0x04, 0x03, 0x07,
+ 0x0B, 0x08, 0x0A, 0x09, 0x0C, 0x0E, 0x0D, 0x0F,
+ 0x11, 0x10
+};
+
+static const ByteProvider kLoLDscTileIndexPC98Provider = { ARRAYSIZE(kLoLDscTileIndexPC98), kLoLDscTileIndexPC98 };
+
+static const byte kLoLDscUnk2PC98[23] = {
+ 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03,
+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x12, 0x12, 0x12, 0x12, 0x12
+};
+
+static const ByteProvider kLoLDscUnk2PC98Provider = { ARRAYSIZE(kLoLDscUnk2PC98), kLoLDscUnk2PC98 };
+
+static const byte kLoLDscDoorShapeIndexPC98[23] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01
+};
+
+static const ByteProvider kLoLDscDoorShapeIndexPC98Provider = { ARRAYSIZE(kLoLDscDoorShapeIndexPC98), kLoLDscDoorShapeIndexPC98 };
+
+static const byte kLoLDscDimData1PC98[324] = {
+ 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7,
+ 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7,
+ 0xD8, 0xD7, 0xD8, 0xD8, 0x02, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xFE, 0xD7, 0xD8, 0xD8, 0xD8, 0xD7, 0x03,
+ 0xD8, 0xFD, 0xD8, 0xD8, 0xD8, 0xFE, 0xD8, 0x08,
+ 0xD8, 0xD8, 0xD8, 0xFE, 0xF8, 0x06, 0xD8, 0xD8,
+ 0xFA, 0x03, 0xD8, 0xFD, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xFA, 0xD7,
+ 0x10, 0xD8, 0xFA, 0xD7, 0x10, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xF2, 0xD8, 0x14, 0xD8, 0xD8,
+ 0xD8, 0xF0, 0x0E, 0x14, 0xD8, 0xED, 0x10, 0xD8,
+ 0xD8, 0x13, 0xD8, 0xD8, 0xD8, 0xD8, 0xEC, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD7, 0x14, 0xD8, 0xED,
+ 0xD7, 0xD8, 0xD8, 0x13, 0xD7, 0xD7, 0xD7, 0xD7,
+ 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7,
+ 0xD7, 0xD7, 0xD7, 0xD7, 0xD8, 0xD7, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD7, 0xD8,
+ 0xD8, 0xD8, 0xD7, 0xD8, 0xD8, 0xD7, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0x06, 0xD8, 0xD8, 0xFA, 0x03, 0xD8, 0xFD,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xFA, 0xD8, 0x10, 0xD8, 0xFA, 0xD7,
+ 0x10, 0xFD, 0xD8, 0x13, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xF0, 0xD8, 0xD8,
+ 0xD8, 0xED, 0x10, 0xD8, 0xD8, 0x13, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD7, 0xD8, 0xD8, 0xD8, 0xD7, 0xD8, 0xD8, 0xD7,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0x03, 0xD8, 0xFD,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xFD, 0xD8,
+ 0x13, 0xFD, 0xD8, 0x13, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xED, 0xD8, 0xD8, 0xD8, 0x13, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
+ 0xD8, 0xD8, 0xD8, 0xD8
+};
+
+static const ByteProvider kLoLDscDimData1PC98Provider = { ARRAYSIZE(kLoLDscDimData1PC98), kLoLDscDimData1PC98 };
+
+static const byte kLoLDscDimData2PC98[648] = {
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x00, 0x16, 0x16, 0x00, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x02, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x02, 0x16, 0x00, 0x04, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x16, 0x00, 0x00, 0x03,
+ 0x00, 0x16, 0x03, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x02, 0x16, 0x00, 0x16, 0x00, 0x08,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x02,
+ 0x16, 0x00, 0x00, 0x06, 0x00, 0x16, 0x00, 0x16,
+ 0x06, 0x16, 0x00, 0x03, 0x00, 0x16, 0x03, 0x00,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x06, 0x16, 0x08, 0x0E,
+ 0x00, 0x10, 0x00, 0x16, 0x03, 0x16, 0x06, 0x10,
+ 0x00, 0x13, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x0E, 0x16,
+ 0x00, 0x16, 0x00, 0x14, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x10, 0x16, 0x16, 0x00, 0x00, 0x14,
+ 0x00, 0x16, 0x13, 0x16, 0x00, 0x10, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x13, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x14, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x12, 0x16, 0x14, 0x16, 0x00, 0x16, 0x13, 0x16,
+ 0x16, 0x00, 0x00, 0x16, 0x00, 0x16, 0x00, 0x13,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x00, 0x16, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x00, 0x16, 0x16, 0x00,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x06, 0x00, 0x16, 0x00, 0x16,
+ 0x06, 0x16, 0x00, 0x03, 0x00, 0x16, 0x03, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x06, 0x16, 0x00, 0x16,
+ 0x00, 0x10, 0x00, 0x16, 0x03, 0x16, 0x07, 0x0F,
+ 0x00, 0x13, 0x03, 0x16, 0x00, 0x16, 0x00, 0x13,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x10, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x13, 0x16, 0x00, 0x10, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x13, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
+ 0x16, 0x00, 0x16, 0x00, 0x00, 0x16, 0x16, 0x00,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x03, 0x00, 0x16, 0x03, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x03, 0x16, 0x00, 0x16,
+ 0x00, 0x13, 0x03, 0x16, 0x00, 0x16, 0x00, 0x13,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x13, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x13, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
+ 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16
+};
+
+static const ByteProvider kLoLDscDimData2PC98Provider = { ARRAYSIZE(kLoLDscDimData2PC98), kLoLDscDimData2PC98 };
+
+static const byte kLoLDscBlockMapPC98[12] = {
+ 0x02, 0x03, 0x00, 0x01, 0x01, 0x02, 0x03, 0x00,
+ 0x03, 0x00, 0x01, 0x02
+};
+
+static const ByteProvider kLoLDscBlockMapPC98Provider = { ARRAYSIZE(kLoLDscBlockMapPC98), kLoLDscBlockMapPC98 };
+
+static const byte kLoLDscDimMapPC98[18] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x03,
+ 0x03, 0x03
+};
+
+static const ByteProvider kLoLDscDimMapPC98Provider = { ARRAYSIZE(kLoLDscDimMapPC98), kLoLDscDimMapPC98 };
+
+static const byte kLoLDscOvlIndexPC98[20] = {
+ 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02, 0x03,
+ 0x03, 0x03, 0x04, 0x04, 0x05, 0x05, 0x05, 0x06,
+ 0x06, 0x07, 0x07, 0x07
+};
+
+static const ByteProvider kLoLDscOvlIndexPC98Provider = { ARRAYSIZE(kLoLDscOvlIndexPC98), kLoLDscOvlIndexPC98 };
+
+static const byte kLoLDscBlockIndexPC98[72] = {
+ 0x9D, 0x9E, 0x9F, 0xA0, 0xA1, 0xA2, 0xA3, 0xBE,
+ 0xBF, 0xC0, 0xC1, 0xC2, 0xDF, 0xE0, 0xE1, 0xFF,
+ 0x00, 0x01, 0xA3, 0xC3, 0xE3, 0x03, 0x23, 0x43,
+ 0x63, 0xC2, 0xE2, 0x02, 0x22, 0x42, 0xE1, 0x01,
+ 0x21, 0xE0, 0x00, 0x20, 0x63, 0x62, 0x61, 0x60,
+ 0x5F, 0x5E, 0x5D, 0x42, 0x41, 0x40, 0x3F, 0x3E,
+ 0x21, 0x20, 0x1F, 0x01, 0x00, 0xFF, 0x5D, 0x3D,
+ 0x1D, 0xFD, 0xDD, 0xBD, 0x9D, 0x3E, 0x1E, 0xFE,
+ 0xDE, 0xBE, 0x1F, 0xFF, 0xDF, 0x20, 0x00, 0xE0
+};
+
+static const ByteProvider kLoLDscBlockIndexPC98Provider = { ARRAYSIZE(kLoLDscBlockIndexPC98), kLoLDscBlockIndexPC98 };
+
+static const byte kLoLDscDoorY2PC98[128] = {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x0D, 0x08, 0x03, 0x12, 0x0E, 0x09, 0x04, 0x00,
+ 0x13, 0x0F, 0x0A, 0x05, 0x01, 0x14, 0x10, 0x0B,
+ 0x06, 0x02, 0x11, 0x0C, 0x07, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x14, 0x13, 0x12, 0x11, 0x10, 0x0F, 0x0E, 0x0D,
+ 0x0C, 0x0B, 0x0A, 0x09, 0x08, 0x07, 0x06, 0x05,
+ 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x07, 0x0C, 0x11, 0x02, 0x06, 0x0B, 0x10, 0x14,
+ 0x01, 0x05, 0x0A, 0x0F, 0x13, 0x00, 0x04, 0x09,
+ 0x0E, 0x12, 0x03, 0x08, 0x0D, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const ByteProvider kLoLDscDoorY2PC98Provider = { ARRAYSIZE(kLoLDscDoorY2PC98), kLoLDscDoorY2PC98 };
+
+static const byte kLoLDscDoorFrameY1PC98[4] = {
+ 0x1E, 0x18, 0x10, 0x00
+};
+
+static const ByteProvider kLoLDscDoorFrameY1PC98Provider = { ARRAYSIZE(kLoLDscDoorFrameY1PC98), kLoLDscDoorFrameY1PC98 };
+
+static const byte kLoLDscDoorFrameY2PC98[4] = {
+ 0x3B, 0x47, 0x56, 0x78
+};
+
+static const ByteProvider kLoLDscDoorFrameY2PC98Provider = { ARRAYSIZE(kLoLDscDoorFrameY2PC98), kLoLDscDoorFrameY2PC98 };
+
+static const uint16 kLoLDscDoorScalePC98[8] = {
+ 0x0075, 0x006A, 0x00B9, 0x00B2, 0x0100, 0x0100, 0x0000, 0x0000
+};
+
+static const Uint16Provider kLoLDscDoorScalePC98Provider = { ARRAYSIZE(kLoLDscDoorScalePC98), kLoLDscDoorScalePC98 };
+
+static const uint16 kLoLDscDoor4PC98[4] = {
+ 0x0005, 0x0002, 0x0008, 0x787C
+};
+
+static const Uint16Provider kLoLDscDoor4PC98Provider = { ARRAYSIZE(kLoLDscDoor4PC98), kLoLDscDoor4PC98 };
+
+static const uint16 kLoLDscDoorXPC98[576] = {
+ 0xFF98, 0xFFA0, 0xFFA8, 0xFF90, 0xFF98, 0xFFA0, 0xFFA8, 0xFFB0,
+ 0xFF74, 0xFF7E, 0xFF88, 0xFF92, 0xFF9C, 0xFF74, 0xFF7E, 0xFF88,
+ 0xFF92, 0xFF9C, 0xFF64, 0xFF70, 0xFF7C, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFB8, 0xFFC0, 0xFFC8, 0xFFB0, 0xFFB8, 0xFFC0, 0xFFC8, 0xFFD0,
+ 0xFF9C, 0xFFA6, 0xFFB0, 0xFFBA, 0xFFC4, 0xFF9C, 0xFFA6, 0xFFB0,
+ 0xFFBA, 0xFFC4, 0xFF94, 0xFFA0, 0xFFAC, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFD8, 0xFFE0, 0xFFE8, 0xFFD0, 0xFFD8, 0xFFE0, 0xFFE8, 0xFFF0,
+ 0xFFC4, 0xFFCE, 0xFFD8, 0xFFE2, 0xFFEC, 0xFFC4, 0xFFCE, 0xFFD8,
+ 0xFFE2, 0xFFEC, 0xFFC4, 0xFFD0, 0xFFDC, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFF8, 0x0000, 0x0008, 0xFFF0, 0xFFF8, 0x0000, 0x0008, 0x0010,
+ 0xFFEC, 0xFFF6, 0x0000, 0x000A, 0x0014, 0xFFEC, 0xFFF6, 0x0000,
+ 0x000A, 0x0014, 0xFFF4, 0x0000, 0x000C, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0018, 0x0020, 0x0028, 0x0010, 0x0018, 0x0020, 0x0028, 0x0030,
+ 0x0014, 0x001E, 0x0028, 0x0032, 0x003C, 0x0014, 0x001E, 0x0028,
+ 0x0032, 0x003C, 0x0024, 0x0030, 0x003C, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0038, 0x0040, 0x0048, 0x0030, 0x0038, 0x0040, 0x0048, 0x0050,
+ 0x003C, 0x0046, 0x0050, 0x005A, 0x0064, 0x003C, 0x0046, 0x0050,
+ 0x005A, 0x0064, 0x0054, 0x0060, 0x006C, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0058, 0x0060, 0x0068, 0x0050, 0x0058, 0x0060, 0x0068, 0x0070,
+ 0x0064, 0x006E, 0x0078, 0x0082, 0x008C, 0x0064, 0x006E, 0x0078,
+ 0x0082, 0x008C, 0x0084, 0x0090, 0x009C, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFF94, 0xFFA0, 0xFFAC, 0xFF7E, 0xFF8B, 0xFF98, 0xFFA5, 0xFFB2,
+ 0xFF6C, 0xFF7B, 0xFF8A, 0xFF99, 0xFFA7, 0xFF60, 0xFF70, 0xFF80,
+ 0xFF90, 0xFFA0, 0xFF4C, 0xFF60, 0xFF74, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFC4, 0xFFD0, 0xFFDC, 0xFFB2, 0xFFBF, 0xFFCC, 0xFFD9, 0xFFE6,
+ 0xFFA7, 0xFFB6, 0xFFC5, 0xFFD4, 0xFFE2, 0xFFA0, 0xFFB0, 0xFFC0,
+ 0xFFD0, 0xFFE0, 0xFF9C, 0xFFB0, 0xFFC4, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFF4, 0x0000, 0x000C, 0xFFE6, 0xFFF3, 0x0000, 0x000D, 0x001A,
+ 0xFFE2, 0xFFF1, 0x0000, 0x000F, 0x001E, 0xFFE0, 0xFFF0, 0x0000,
+ 0x0010, 0x0020, 0xFFEC, 0x0000, 0x0014, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0024, 0x0030, 0x003C, 0x001A, 0x0027, 0x0034, 0x0041, 0x004E,
+ 0x001E, 0x002C, 0x003B, 0x004A, 0x0059, 0x0020, 0x0030, 0x0040,
+ 0x0050, 0x0060, 0x003C, 0x0050, 0x0064, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0054, 0x0060, 0x006C, 0x004E, 0x005B, 0x0068, 0x0075, 0x0082,
+ 0x0059, 0x0067, 0x0076, 0x0085, 0x0094, 0x0060, 0x0070, 0x0080,
+ 0x0090, 0x00A0, 0x008C, 0x00A0, 0x00B4, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFF9C, 0xFFB0, 0xFFC4, 0xFF7C, 0xFF92, 0xFFA8, 0xFFBE, 0xFFD4,
+ 0xFF6D, 0xFF85, 0xFF9E, 0xFFB6, 0xFFCF, 0xFF5E, 0xFF79, 0xFF94,
+ 0xFFAF, 0xFFCA, 0xFF60, 0xFF80, 0xFFA0, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFEC, 0x0000, 0x0014, 0xFFD4, 0xFFEA, 0x0000, 0x0016, 0x002C,
+ 0xFFCF, 0xFFE7, 0x0000, 0x0019, 0x0031, 0xFFCA, 0xFFE5, 0x0000,
+ 0x001B, 0x0036, 0xFFE0, 0x0000, 0x0020, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x003C, 0x0050, 0x0064, 0x002C, 0x0042, 0x0058, 0x006E, 0x0084,
+ 0x0031, 0x004A, 0x0062, 0x007B, 0x0093, 0x0036, 0x0051, 0x006C,
+ 0x0087, 0x00A2, 0x0060, 0x0080, 0x00A0, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFF60, 0xFF80, 0xFFA0, 0xFF1C, 0xFF42, 0xFF68, 0xFF8E, 0xFFB4,
+ 0xFF40, 0xFF60, 0xFF80, 0xFFA0, 0xFFC0, 0xFF1C, 0xFF42, 0xFF68,
+ 0xFF8E, 0xFFB4, 0xFF60, 0xFF80, 0xFFA0, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFE0, 0x0000, 0x0020, 0xFFB4, 0xFFDA, 0x0000, 0x0026, 0x004C,
+ 0xFFC0, 0xFFE0, 0x0000, 0x0020, 0x0040, 0xFFB4, 0xFFDA, 0x0000,
+ 0x0026, 0x004C, 0xFFE0, 0x0000, 0x0020, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0060, 0x0080, 0x00A0, 0x004C, 0x0072, 0x0098, 0x00BE, 0x00E4,
+ 0x0040, 0x0060, 0x0080, 0x00A0, 0x00C0, 0x004C, 0x0072, 0x0098,
+ 0x00BE, 0x00E4, 0x0060, 0x0080, 0x00A0, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
+};
+
+static const Uint16Provider kLoLDscDoorXPC98Provider = { ARRAYSIZE(kLoLDscDoorXPC98), kLoLDscDoorXPC98 };
+
+static const uint16 kLoLDscDoorYPC98[576] = {
+ 0xFFBF, 0xFFBF, 0xFFBF, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1,
+ 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC5, 0xFFC5, 0xFFC5,
+ 0xFFC5, 0xFFC5, 0xFFC9, 0xFFC9, 0xFFC9, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFBF, 0xFFBF, 0xFFBF, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1,
+ 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC5, 0xFFC5, 0xFFC5,
+ 0xFFC5, 0xFFC5, 0xFFC9, 0xFFC9, 0xFFC9, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFBF, 0xFFBF, 0xFFBF, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1,
+ 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC5, 0xFFC5, 0xFFC5,
+ 0xFFC5, 0xFFC5, 0xFFC9, 0xFFC9, 0xFFC9, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFBF, 0xFFBF, 0xFFBF, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1,
+ 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC5, 0xFFC5, 0xFFC5,
+ 0xFFC5, 0xFFC5, 0xFFC9, 0xFFC9, 0xFFC9, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFBF, 0xFFBF, 0xFFBF, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1,
+ 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC5, 0xFFC5, 0xFFC5,
+ 0xFFC5, 0xFFC5, 0xFFC9, 0xFFC9, 0xFFC9, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFBF, 0xFFBF, 0xFFBF, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1,
+ 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC5, 0xFFC5, 0xFFC5,
+ 0xFFC5, 0xFFC5, 0xFFC9, 0xFFC9, 0xFFC9, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFBF, 0xFFBF, 0xFFBF, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1,
+ 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC5, 0xFFC5, 0xFFC5,
+ 0xFFC5, 0xFFC5, 0xFFC9, 0xFFC9, 0xFFC9, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFC9, 0xFFC9, 0xFFC9, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB,
+ 0xFFCE, 0xFFCE, 0xFFCE, 0xFFCE, 0xFFCE, 0xFFD3, 0xFFD3, 0xFFD3,
+ 0xFFD3, 0xFFD3, 0xFFD7, 0xFFD7, 0xFFD7, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFC9, 0xFFC9, 0xFFC9, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB,
+ 0xFFCE, 0xFFCE, 0xFFCE, 0xFFCE, 0xFFCE, 0xFFD3, 0xFFD3, 0xFFD3,
+ 0xFFD3, 0xFFD3, 0xFFD7, 0xFFD7, 0xFFD7, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFC9, 0xFFC9, 0xFFC9, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB,
+ 0xFFCE, 0xFFCE, 0xFFCE, 0xFFCE, 0xFFCE, 0xFFD3, 0xFFD3, 0xFFD3,
+ 0xFFD3, 0xFFD3, 0xFFD7, 0xFFD7, 0xFFD7, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFC9, 0xFFC9, 0xFFC9, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB,
+ 0xFFCE, 0xFFCE, 0xFFCE, 0xFFCE, 0xFFCE, 0xFFD3, 0xFFD3, 0xFFD3,
+ 0xFFD3, 0xFFD3, 0xFFD7, 0xFFD7, 0xFFD7, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFC9, 0xFFC9, 0xFFC9, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB,
+ 0xFFCE, 0xFFCE, 0xFFCE, 0xFFCE, 0xFFCE, 0xFFD3, 0xFFD3, 0xFFD3,
+ 0xFFD3, 0xFFD3, 0xFFD7, 0xFFD7, 0xFFD7, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFD7, 0xFFD7, 0xFFD7, 0xFFDD, 0xFFDD, 0xFFDD, 0xFFDD, 0xFFDD,
+ 0xFFE2, 0xFFE2, 0xFFE2, 0xFFE2, 0xFFE2, 0xFFEA, 0xFFEA, 0xFFEA,
+ 0xFFEA, 0xFFEA, 0xFFF8, 0xFFF8, 0xFFF8, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFD7, 0xFFD7, 0xFFD7, 0xFFDD, 0xFFDD, 0xFFDD, 0xFFDD, 0xFFDD,
+ 0xFFE2, 0xFFE2, 0xFFE2, 0xFFE2, 0xFFE2, 0xFFEA, 0xFFEA, 0xFFEA,
+ 0xFFEA, 0xFFEA, 0xFFF8, 0xFFF8, 0xFFF8, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFD7, 0xFFD7, 0xFFD7, 0xFFDD, 0xFFDD, 0xFFDD, 0xFFDD, 0xFFDD,
+ 0xFFE2, 0xFFE2, 0xFFE2, 0xFFE2, 0xFFE2, 0xFFEA, 0xFFEA, 0xFFEA,
+ 0xFFEA, 0xFFEA, 0xFFF8, 0xFFF8, 0xFFF8, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFF8, 0xFFF8, 0xFFF8, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFF8, 0xFFF8, 0xFFF8, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFF8, 0xFFF8, 0xFFF8, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
+};
+
+static const Uint16Provider kLoLDscDoorYPC98Provider = { ARRAYSIZE(kLoLDscDoorYPC98), kLoLDscDoorYPC98 };
+
+static const byte kLoLScrollXTopPC98[5] = {
+ 0x05, 0x0A, 0x0F, 0x14, 0x19
+};
+
+static const ByteProvider kLoLScrollXTopPC98Provider = { ARRAYSIZE(kLoLScrollXTopPC98), kLoLScrollXTopPC98 };
+
+static const byte kLoLScrollYTopPC98[5] = {
+ 0x02, 0x04, 0x07, 0x09, 0x0C
+};
+
+static const ByteProvider kLoLScrollYTopPC98Provider = { ARRAYSIZE(kLoLScrollYTopPC98), kLoLScrollYTopPC98 };
+
+static const byte kLoLScrollXBottomPC98[5] = {
+ 0x05, 0x0A, 0x0F, 0x14, 0x19
+};
+
+static const ByteProvider kLoLScrollXBottomPC98Provider = { ARRAYSIZE(kLoLScrollXBottomPC98), kLoLScrollXBottomPC98 };
+
+static const byte kLoLScrollYBottomPC98[5] = {
+ 0x04, 0x08, 0x0C, 0x10, 0x14
+};
+
+static const ByteProvider kLoLScrollYBottomPC98Provider = { ARRAYSIZE(kLoLScrollYBottomPC98), kLoLScrollYBottomPC98 };
+
+static const LoLButtonDef kLoLButtonDefsPC98[95] = {
+ { 0x1100, 68, 324, 33, 131, 22, 19, 0x0000, 0 },
+ { 0x1100, 72, 328, 33, 150, 22, 18, 0x0000, 0 },
+ { 0x1100, 76, 332, 33, 150, 22, 18, 0x0000, 0 },
+ { 0x1100, 71, 327, 11, 150, 22, 18, 0x0000, 0 },
+ { 0x1100, 73, 329, 53, 150, 22, 18, 0x0000, 0 },
+ { 0x1100, 67, 323, 11, 131, 22, 19, 0x0000, 0 },
+ { 0x1100, 69, 325, 53, 131, 22, 19, 0x0000, 0 },
+ { 0x0100, 99, 0, 80, 143, 22, 17, 0x0000, 0 },
+ { 0x0100, 100, 0, 80, 143, 22, 17, 0x0001, 0 },
+ { 0x0100, 101, 0, 80, 143, 22, 17, 0x0002, 0 },
+ { 0x0100, 102, 0, 80, 143, 22, 17, 0x0003, 0 },
+ { 0x1100, 0, 0, 80, 160, 22, 17, 0x0000, 0 },
+ { 0x1100, 0, 0, 80, 160, 22, 17, 0x0001, 0 },
+ { 0x1100, 0, 0, 80, 160, 22, 17, 0x0002, 0 },
+ { 0x1100, 0, 0, 80, 160, 22, 17, 0x0003, 0 },
+ { 0x1100, 0, 0, 80, 144, 22, 32, 0x0000, 0 },
+ { 0x1100, 1, 0, 0, 0, 320, 200, 0x0003, 0 },
+ { 0x0100, 0, 0, 80, 143, 33, 34, 0x0000, 0 },
+ { 0x0100, 0, 0, 80, 143, 33, 34, 0x0001, 0 },
+ { 0x0100, 0, 0, 80, 143, 33, 34, 0x0002, 0 },
+ { 0x0100, 0, 0, 80, 143, 33, 34, 0x0003, 0 },
+ { 0x0100, 0, 0, 80, 143, 66, 34, 0x0000, 0 },
+ { 0x0100, 0, 0, 80, 143, 66, 34, 0x0001, 0 },
+ { 0x0100, 0, 0, 80, 143, 66, 34, 0x0002, 0 },
+ { 0x0100, 0, 0, 80, 143, 66, 34, 0x0003, 0 },
+ { 0x0100, 0, 0, 80, 143, 12, 34, 0x0000, 0 },
+ { 0x0100, 0, 0, 80, 143, 12, 34, 0x0001, 0 },
+ { 0x0100, 0, 0, 80, 143, 12, 34, 0x0002, 0 },
+ { 0x0100, 0, 0, 80, 143, 12, 34, 0x0003, 0 },
+ { 0x1000, 0, 0, 80, 143, 66, 34, 0x0000, 0 },
+ { 0x1000, 0, 0, 80, 143, 66, 34, 0x0001, 0 },
+ { 0x1000, 0, 0, 80, 143, 66, 34, 0x0002, 0 },
+ { 0x1000, 0, 0, 80, 143, 66, 34, 0x0003, 0 },
+ { 0x1100, 0, 0, 0, 0, 20, 19, 0x0000, 2 },
+ { 0x1100, 0, 0, 0, 0, 20, 19, 0x0001, 2 },
+ { 0x1100, 0, 0, 0, 0, 20, 19, 0x0002, 2 },
+ { 0x1100, 0, 0, 0, 0, 20, 19, 0x0003, 2 },
+ { 0x1100, 0, 0, 0, 0, 20, 19, 0x0004, 2 },
+ { 0x1100, 0, 0, 0, 0, 20, 19, 0x0005, 2 },
+ { 0x1100, 0, 0, 0, 0, 20, 19, 0x0006, 2 },
+ { 0x1100, 0, 0, 0, 0, 20, 19, 0x0007, 2 },
+ { 0x1100, 0, 0, 0, 0, 20, 19, 0x0008, 2 },
+ { 0x1100, 0, 0, 0, 0, 12, 11, 0x0009, 2 },
+ { 0x1100, 0, 0, 0, 0, 12, 11, 0x000A, 2 },
+ { 0x1100, 1, 0, 160, 93, 43, 19, 0x0000, 2 },
+ { 0x1100, 0, 0, 0, 102, 88, 19, 0x0000, 2 },
+ { 0x1100, 0, 0, 88, 102, 88, 19, 0x0001, 2 },
+ { 0x1100, 0, 0, 0, 85, 88, 17, 0x0002, 2 },
+ { 0x1100, 0, 0, 88, 85, 88, 17, 0x0003, 2 },
+ { 0x1100, 0, 0, 0, 0, 176, 120, 0x0000, 2 },
+ { 0x1100, 0, 0, 106, 179, 21, 21, 0x0000, 0 },
+ { 0x1100, 0, 0, 127, 179, 21, 21, 0x0001, 0 },
+ { 0x1100, 0, 0, 148, 179, 21, 21, 0x0002, 0 },
+ { 0x1100, 0, 0, 169, 179, 21, 21, 0x0003, 0 },
+ { 0x1100, 0, 0, 190, 179, 21, 21, 0x0004, 0 },
+ { 0x1100, 0, 0, 211, 179, 21, 21, 0x0005, 0 },
+ { 0x1100, 0, 0, 232, 179, 21, 21, 0x0006, 0 },
+ { 0x1100, 0, 0, 253, 179, 21, 21, 0x0007, 0 },
+ { 0x1100, 0, 0, 274, 179, 21, 21, 0x0008, 0 },
+ { 0x1100, 0, 0, 274, 179, 21, 21, 0x0009, 0 },
+ { 0x1100, 0, 0, 85, 179, 21, 21, 0xFFFF, 0 },
+ { 0x1100, 0, 0, 295, 179, 22, 21, 0x0001, 0 },
+ { 0x1100, 0, 0, 24, 8, 128, 96, 0x0001, 2 },
+ { 0x1100, 0, 0, 0, 0, 176, 120, 0x0000, 2 },
+ { 0x1100, 0, 0, 0, 0, 0, 0, 0x0000, 0 },
+ { 0x1100, 0, 0, 112, 0, 176, 16, 0x0001, 0 },
+ { 0x1100, 0, 0, 112, 110, 176, 26, 0x0001, 0 },
+ { 0x1100, 0, 0, 96, 88, 32, 32, 0x0001, 0 },
+ { 0x1100, 0, 0, 272, 88, 32, 32, 0x0001, 0 },
+ { 0x1100, 0, 0, 96, 16, 32, 72, 0x0001, 0 },
+ { 0x1100, 0, 0, 272, 16, 32, 72, 0x0001, 0 },
+ { 0x1100, 0, 0, 24, 15, 61, 9, 0x0000, 0 },
+ { 0x1100, 0, 0, 24, 24, 61, 9, 0x0000, 0 },
+ { 0x1100, 0, 0, 24, 33, 61, 9, 0x0000, 0 },
+ { 0x1100, 0, 0, 24, 42, 61, 9, 0x0000, 0 },
+ { 0x1100, 0, 0, 24, 51, 61, 9, 0x0000, 0 },
+ { 0x1100, 0, 0, 24, 60, 61, 9, 0x0000, 0 },
+ { 0x1100, 0, 0, 24, 69, 61, 9, 0x0000, 0 },
+ { 0x1100, 0, 0, 24, 78, 61, 9, 0x0000, 0 },
+ { 0x1100, 0, 0, 24, 87, 61, 9, 0x0000, 0 },
+ { 0x1100, 0, 0, 24, 96, 61, 9, 0x0000, 0 },
+ { 0x0100, 0, 0, 80, 143, 66, 34, 0x0000, 0 },
+ { 0x0100, 0, 0, 80, 143, 66, 34, 0x0001, 0 },
+ { 0x0100, 0, 0, 80, 143, 66, 34, 0x0002, 0 },
+ { 0x0100, 0, 0, 80, 143, 66, 34, 0x0003, 0 },
+ { 0x1100, 1, 0, 0, 0, 320, 200, 0x0003, 0 },
+ { 0x0100, 0, 0, 112, 0, 88, 80, 0x0000, 0 },
+ { 0x0100, 0, 0, 200, 0, 88, 80, 0x0001, 0 },
+ { 0x1100, 25, 1, 11, 178, 21, 22, 0x0000, 0 },
+ { 0x0100, 20, 0, 32, 178, 22, 22, 0x0000, 0 },
+ { 0x0100, 0, 0, 291, 96, 27, 24, 0x0000, 0 },
+ { 0x0100, 0, 0, 289, 0, 31, 28, 0x0000, 0 },
+ { 0x0100, 0, 0, 289, 31, 31, 23, 0x0000, 0 },
+ { 0x0100, 0, 0, 291, 56, 29, 24, 0x0000, 0 },
+ { 0x1100, 0, 0, 220, 98, 43, 19, 0x0000, 0 }
+};
+
+static const LoLButtonDefProvider kLoLButtonDefsPC98Provider = { ARRAYSIZE(kLoLButtonDefsPC98), kLoLButtonDefsPC98 };
+
+static const byte kLoLButtonList1PC98[40] = {
+ 0x59, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x31,
+ 0x3E, 0x2D, 0x2E, 0x2F, 0x30, 0x56, 0x57, 0x01,
+ 0x02, 0x00, 0x03, 0x04, 0x05, 0x06, 0x32, 0x33,
+ 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B,
+ 0x3C, 0x3D, 0x58, 0x5A, 0x5B, 0x5C, 0x5D, 0xFF
+};
+
+static const ByteProvider kLoLButtonList1PC98Provider = { ARRAYSIZE(kLoLButtonList1PC98), kLoLButtonList1PC98 };
+
+static const byte kLoLButtonList2PC98[15] = {
+ 0x2C, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
+ 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x5E, 0xFF
+};
+
+static const ByteProvider kLoLButtonList2PC98Provider = { ARRAYSIZE(kLoLButtonList2PC98), kLoLButtonList2PC98 };
+
+static const byte kLoLButtonList3PC98[2] = {
+ 0x40, 0xFF
+};
+
+static const ByteProvider kLoLButtonList3PC98Provider = { ARRAYSIZE(kLoLButtonList3PC98), kLoLButtonList3PC98 };
+
+static const byte kLoLButtonList4PC98[15] = {
+ 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39,
+ 0x3A, 0x3B, 0x3C, 0x3D, 0x5A, 0x5B, 0xFF
+};
+
+static const ByteProvider kLoLButtonList4PC98Provider = { ARRAYSIZE(kLoLButtonList4PC98), kLoLButtonList4PC98 };
+
+static const byte kLoLButtonList5PC98[16] = {
+ 0x01, 0x02, 0x00, 0x03, 0x04, 0x05, 0x06, 0x41,
+ 0x42, 0x43, 0x44, 0x45, 0x46, 0x5A, 0x5B, 0xFF
+};
+
+static const ByteProvider kLoLButtonList5PC98Provider = { ARRAYSIZE(kLoLButtonList5PC98), kLoLButtonList5PC98 };
+
+static const byte kLoLButtonList6PC98[14] = {
+ 0x2C, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
+ 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0xFF
+};
+
+static const ByteProvider kLoLButtonList6PC98Provider = { ARRAYSIZE(kLoLButtonList6PC98), kLoLButtonList6PC98 };
+
+static const byte kLoLButtonList7PC98[3] = {
+ 0x0F, 0x10, 0xFF
+};
+
+static const ByteProvider kLoLButtonList7PC98Provider = { ARRAYSIZE(kLoLButtonList7PC98), kLoLButtonList7PC98 };
+
+static const byte kLoLButtonList8PC98[2] = {
+ 0x55, 0xFF
+};
+
+static const ByteProvider kLoLButtonList8PC98Provider = { ARRAYSIZE(kLoLButtonList8PC98), kLoLButtonList8PC98 };
+
+static const byte kLoLLegendDataPC98[60] = {
+ 0x0E, 0x00, 0x00, 0x07, 0x42, 0x19, 0x00, 0x00,
+ 0x08, 0x42, 0x1A, 0x00, 0x00, 0x09, 0x42, 0x0D,
+ 0x00, 0x00, 0x0A, 0x42, 0x0A, 0x00, 0x00, 0x0B,
+ 0x42, 0x0B, 0x00, 0x00, 0x0C, 0x42, 0x0F, 0x00,
+ 0x00, 0x0D, 0x42, 0x16, 0x00, 0x00, 0x0E, 0x42,
+ 0x17, 0x00, 0x00, 0x0F, 0x42, 0x11, 0x00, 0x00,
+ 0x10, 0x42, 0x12, 0x00, 0xFB, 0x51, 0x42, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF
+};
+
+static const ByteProvider kLoLLegendDataPC98Provider = { ARRAYSIZE(kLoLLegendDataPC98), kLoLLegendDataPC98 };
+
+static const uint16 kLoLMapStringIdPC98[30] = {
+ 0xFFFF, 0x4211, 0x4212, 0x4213, 0x4214, 0x4215, 0x4216, 0x4217,
+ 0x4218, 0x4219, 0x421A, 0x421B, 0x421C, 0x421D, 0x421E, 0x421F,
+ 0x4220, 0x4221, 0x4222, 0x4223, 0x4224, 0x4225, 0x4226, 0x4227,
+ 0x4228, 0x4229, 0x422A, 0x422B, 0x422C, 0x422D
+};
+
+static const Uint16Provider kLoLMapStringIdPC98Provider = { ARRAYSIZE(kLoLMapStringIdPC98), kLoLMapStringIdPC98 };
+
+static const byte kLoLSpellbookAnimPC98[28] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x13, 0xB6, 0x04, 0x00, 0x13, 0x4D,
+ 0x04, 0x00, 0x13, 0xB9, 0x04, 0x00, 0x13, 0xB8,
+ 0x04, 0x00, 0x13, 0xBA
+};
+
+static const ByteProvider kLoLSpellbookAnimPC98Provider = { ARRAYSIZE(kLoLSpellbookAnimPC98), kLoLSpellbookAnimPC98 };
+
+static const byte kLoLSpellbookCoordsPC98[12] = {
+ 0x16, 0x16, 0x16, 0x1F, 0x16, 0x28, 0x16, 0x31,
+ 0x16, 0x3A, 0x16, 0x43
+};
+
+static const ByteProvider kLoLSpellbookCoordsPC98Provider = { ARRAYSIZE(kLoLSpellbookCoordsPC98), kLoLSpellbookCoordsPC98 };
+
+static const byte kLoLHealShapeFramesPC98[80] = {
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02,
+ 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x03, 0x03,
+ 0x03, 0x03, 0x02, 0x02, 0x01, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
+ 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00,
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F
+};
+
+static const ByteProvider kLoLHealShapeFramesPC98Provider = { ARRAYSIZE(kLoLHealShapeFramesPC98), kLoLHealShapeFramesPC98 };
+
+static const byte kLoLLightningDefsPC98[20] = {
+ 0x06, 0x05, 0xAB, 0x00, 0x06, 0x04, 0xAB, 0x00,
+ 0x08, 0x04, 0xAA, 0x00, 0x06, 0x03, 0xAA, 0x00,
+ 0x06, 0x02, 0xA9, 0x00
+};
+
+static const ByteProvider kLoLLightningDefsPC98Provider = { ARRAYSIZE(kLoLLightningDefsPC98), kLoLLightningDefsPC98 };
+
+static const uint16 kLoLFireballCoordsPC98[256] = {
+ 0x0000, 0x0324, 0x0647, 0x096A, 0x0C8B, 0x0FAB, 0x12C7, 0x15E1,
+ 0x18F8, 0x1C0B, 0x1F19, 0x2223, 0x2527, 0x2826, 0x2B1E, 0x2E10,
+ 0x30FB, 0x33DE, 0x36B9, 0x398C, 0x3C56, 0x3F16, 0x41CD, 0x447A,
+ 0x471C, 0x49B3, 0x4C3F, 0x4EBF, 0x5133, 0x539A, 0x55F4, 0x5842,
+ 0x5A81, 0x5CB3, 0x5ED6, 0x60EB, 0x62F1, 0x64E7, 0x66CE, 0x68A5,
+ 0x6A6C, 0x6C23, 0x6DC9, 0x6F5E, 0x70E1, 0x7254, 0x73B5, 0x7503,
+ 0x7640, 0x776B, 0x7883, 0x7989, 0x7A7C, 0x7B5C, 0x7C29, 0x7CE2,
+ 0x7D89, 0x7E1C, 0x7E9C, 0x7F08, 0x7F61, 0x7FA6, 0x7FD7, 0x7FF5,
+ 0x7FFF, 0x7FF5, 0x7FD7, 0x7FA6, 0x7F61, 0x7F08, 0x7E9C, 0x7E1C,
+ 0x7D89, 0x7CE2, 0x7C29, 0x7B5C, 0x7A7C, 0x7989, 0x7883, 0x776B,
+ 0x7640, 0x7503, 0x73B5, 0x7254, 0x70E1, 0x6F5E, 0x6DC9, 0x6C23,
+ 0x6A6C, 0x68A5, 0x66CE, 0x64E7, 0x62F1, 0x60EB, 0x5ED6, 0x5CB3,
+ 0x5A81, 0x5842, 0x55F4, 0x539A, 0x5133, 0x4EBF, 0x4C3F, 0x49B3,
+ 0x471C, 0x447A, 0x41CD, 0x3F16, 0x3C56, 0x398C, 0x36B9, 0x33DE,
+ 0x30FB, 0x2E10, 0x2B1E, 0x2826, 0x2527, 0x2223, 0x1F19, 0x1C0B,
+ 0x18F8, 0x15E1, 0x12C7, 0x0FAB, 0x0C8B, 0x096A, 0x0647, 0x0324,
+ 0x0000, 0xFCDC, 0xF9B9, 0xF696, 0xF375, 0xF055, 0xED39, 0xEA1F,
+ 0xE708, 0xE3F5, 0xE0E7, 0xDDDD, 0xDAD9, 0xD7DA, 0xD4E2, 0xD1F0,
+ 0xCF05, 0xCC22, 0xC947, 0xC674, 0xC3AA, 0xC0EA, 0xBE33, 0xBB86,
+ 0xB8E4, 0xB64D, 0xB3C1, 0xB141, 0xAECD, 0xAC66, 0xAA0C, 0xA7BE,
+ 0xA57F, 0xA34D, 0xA12A, 0x9F15, 0x9D0F, 0x9B19, 0x9932, 0x975B,
+ 0x9594, 0x93DD, 0x9237, 0x90A2, 0x8F1F, 0x8DAC, 0x8C4B, 0x8AFD,
+ 0x89C0, 0x8895, 0x877D, 0x8677, 0x8584, 0x84A4, 0x83D7, 0x831E,
+ 0x8277, 0x81E4, 0x8164, 0x80F8, 0x809F, 0x805A, 0x8029, 0x800B,
+ 0x8001, 0x800B, 0x8029, 0x805A, 0x809F, 0x80F8, 0x8164, 0x81E4,
+ 0x8277, 0x831E, 0x83D7, 0x84A4, 0x8584, 0x8677, 0x877D, 0x8895,
+ 0x89C0, 0x8AFD, 0x8C4B, 0x8DAC, 0x8F1F, 0x90A2, 0x9237, 0x93DD,
+ 0x9594, 0x975B, 0x9932, 0x9B19, 0x9D0F, 0x9F15, 0xA12A, 0xA34D,
+ 0xA57F, 0xA7BE, 0xAA0C, 0xAC66, 0xAECD, 0xB141, 0xB3C1, 0xB64D,
+ 0xB8E4, 0xBB86, 0xBE33, 0xC0EA, 0xC3AA, 0xC674, 0xC947, 0xCC22,
+ 0xCF05, 0xD1F0, 0xD4E2, 0xD7DA, 0xDAD9, 0xDDDD, 0xE0E7, 0xE3F5,
+ 0xE708, 0xEA1F, 0xED39, 0xF055, 0xF375, 0xF696, 0xF9B9, 0xFCDC
+};
+
+static const Uint16Provider kLoLFireballCoordsPC98Provider = { ARRAYSIZE(kLoLFireballCoordsPC98), kLoLFireballCoordsPC98 };
+
+static const byte kLoLCreditsPC98[1511] = {
+ 0x02, 0x54, 0x68, 0x65, 0x20, 0x45, 0x6E, 0x64,
+ 0x05, 0x0D, 0x0D, 0x0D, 0x02, 0x4C, 0x41, 0x4E,
+ 0x44, 0x53, 0x20, 0x4F, 0x46, 0x20, 0x4C, 0x4F,
+ 0x52, 0x45, 0x05, 0x0D, 0x01, 0x54, 0x68, 0x65,
+ 0x20, 0x54, 0x68, 0x72, 0x6F, 0x6E, 0x65, 0x20,
+ 0x6F, 0x66, 0x20, 0x43, 0x68, 0x61, 0x6F, 0x73,
+ 0x05, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x02, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54,
+ 0x49, 0x56, 0x45, 0x20, 0x50, 0x52, 0x4F, 0x44,
+ 0x55, 0x43, 0x45, 0x52, 0x05, 0x0D, 0x0D, 0x02,
+ 0x42, 0x72, 0x65, 0x74, 0x74, 0x20, 0x57, 0x2E,
+ 0x20, 0x53, 0x70, 0x65, 0x72, 0x72, 0x79, 0x05,
+ 0x0D, 0x0D, 0x0D, 0x0D, 0x02, 0x50, 0x52, 0x4F,
+ 0x44, 0x55, 0x43, 0x45, 0x52, 0x05, 0x0D, 0x0D,
+ 0x02, 0x52, 0x69, 0x63, 0x6B, 0x20, 0x47, 0x75,
+ 0x73, 0x68, 0x05, 0x0D, 0x0D, 0x0D, 0x0D, 0x02,
+ 0x50, 0x52, 0x4F, 0x44, 0x55, 0x43, 0x54, 0x20,
+ 0x43, 0x4F, 0x4F, 0x52, 0x44, 0x49, 0x4E, 0x41,
+ 0x54, 0x4F, 0x52, 0x05, 0x0D, 0x0D, 0x02, 0x43,
+ 0x61, 0x74, 0x68, 0x69, 0x65, 0x20, 0x41, 0x2E,
+ 0x20, 0x54, 0x6F, 0x64, 0x64, 0x05, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x02, 0x44, 0x45, 0x53, 0x49, 0x47,
+ 0x4E, 0x45, 0x52, 0x53, 0x05, 0x0D, 0x0D, 0x02,
+ 0x57, 0x69, 0x6C, 0x6C, 0x69, 0x61, 0x6D, 0x20,
+ 0x41, 0x6C, 0x61, 0x6E, 0x20, 0x43, 0x72, 0x75,
+ 0x6D, 0x05, 0x0D, 0x50, 0x68, 0x69, 0x6C, 0x69,
+ 0x70, 0x20, 0x57, 0x2E, 0x20, 0x47, 0x6F, 0x72,
+ 0x72, 0x6F, 0x77, 0x05, 0x0D, 0x0D, 0x0D, 0x0D,
+ 0x02, 0x4C, 0x45, 0x41, 0x44, 0x20, 0x50, 0x52,
+ 0x4F, 0x47, 0x52, 0x41, 0x4D, 0x4D, 0x45, 0x52,
+ 0x05, 0x0D, 0x0D, 0x02, 0x50, 0x68, 0x69, 0x6C,
+ 0x69, 0x70, 0x20, 0x57, 0x2E, 0x20, 0x47, 0x6F,
+ 0x72, 0x72, 0x6F, 0x77, 0x05, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x02, 0x50, 0x52, 0x4F, 0x47, 0x52, 0x41,
+ 0x4D, 0x4D, 0x45, 0x52, 0x53, 0x05, 0x0D, 0x0D,
+ 0x02, 0x4A, 0x6F, 0x65, 0x20, 0x42, 0x6F, 0x73,
+ 0x74, 0x69, 0x63, 0x05, 0x0D, 0x02, 0x53, 0x63,
+ 0x6F, 0x74, 0x74, 0x20, 0x4B, 0x2E, 0x20, 0x42,
+ 0x6F, 0x77, 0x65, 0x6E, 0x05, 0x0D, 0x02, 0x4A,
+ 0x6F, 0x68, 0x6E, 0x20, 0x4C, 0x61, 0x53, 0x61,
+ 0x6C, 0x76, 0x69, 0x61, 0x05, 0x0D, 0x02, 0x4D,
+ 0x61, 0x72, 0x6B, 0x20, 0x4D, 0x63, 0x43, 0x75,
+ 0x62, 0x62, 0x69, 0x6E, 0x05, 0x0D, 0x02, 0x4A,
+ 0x75, 0x73, 0x74, 0x69, 0x6E, 0x20, 0x4D, 0x63,
+ 0x4B, 0x69, 0x6E, 0x6E, 0x65, 0x72, 0x6E, 0x65,
+ 0x79, 0x05, 0x0D, 0x02, 0x51, 0x69, 0x6E, 0x67,
+ 0x20, 0x59, 0x75, 0x61, 0x6E, 0x05, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x02, 0x4C, 0x45, 0x41, 0x44, 0x20,
+ 0x41, 0x52, 0x54, 0x49, 0x53, 0x54, 0x05, 0x0D,
+ 0x0D, 0x02, 0x52, 0x69, 0x63, 0x6B, 0x20, 0x50,
+ 0x61, 0x72, 0x6B, 0x73, 0x05, 0x0D, 0x0D, 0x0D,
+ 0x0D, 0x02, 0x41, 0x52, 0x54, 0x49, 0x53, 0x54,
+ 0x53, 0x05, 0x0D, 0x0D, 0x02, 0x45, 0x6C, 0x69,
+ 0x65, 0x20, 0x41, 0x72, 0x61, 0x62, 0x69, 0x61,
+ 0x6E, 0x05, 0x0D, 0x02, 0x43, 0x61, 0x72, 0x79,
+ 0x20, 0x44, 0x65, 0x61, 0x6E, 0x20, 0x41, 0x76,
+ 0x65, 0x72, 0x65, 0x74, 0x74, 0x05, 0x0D, 0x02,
+ 0x45, 0x72, 0x69, 0x63, 0x20, 0x47, 0x6F, 0x6F,
+ 0x63, 0x68, 0x05, 0x0D, 0x02, 0x4A, 0x6F, 0x73,
+ 0x65, 0x70, 0x68, 0x20, 0x42, 0x2E, 0x20, 0x48,
+ 0x65, 0x77, 0x69, 0x74, 0x74, 0x20, 0x49, 0x56,
+ 0x05, 0x0D, 0x02, 0x52, 0x65, 0x6E, 0x20, 0x4F,
+ 0x6C, 0x73, 0x65, 0x6E, 0x05, 0x0D, 0x02, 0x4A,
+ 0x75, 0x64, 0x69, 0x74, 0x68, 0x20, 0x50, 0x65,
+ 0x74, 0x65, 0x72, 0x73, 0x6F, 0x6E, 0x05, 0x0D,
+ 0x02, 0x45, 0x2E, 0x4D, 0x2E, 0x20, 0x4C, 0x6F,
+ 0x75, 0x69, 0x73, 0x65, 0x20, 0x53, 0x61, 0x6E,
+ 0x64, 0x6F, 0x76, 0x61, 0x6C, 0x05, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x02, 0x4D, 0x55, 0x53, 0x49, 0x43,
+ 0x20, 0x26, 0x20, 0x53, 0x4F, 0x55, 0x4E, 0x44,
+ 0x53, 0x05, 0x0D, 0x0D, 0x02, 0x50, 0x61, 0x75,
+ 0x6C, 0x20, 0x53, 0x2E, 0x20, 0x4D, 0x75, 0x64,
+ 0x72, 0x61, 0x05, 0x0D, 0x02, 0x44, 0x77, 0x69,
+ 0x67, 0x68, 0x74, 0x20, 0x4B, 0x2E, 0x20, 0x4F,
+ 0x6B, 0x61, 0x68, 0x61, 0x72, 0x61, 0x05, 0x0D,
+ 0x02, 0x46, 0x72, 0x61, 0x6E, 0x6B, 0x20, 0x4B,
+ 0x6C, 0x65, 0x70, 0x61, 0x63, 0x6B, 0x69, 0x05,
+ 0x0D, 0x02, 0x50, 0x61, 0x74, 0x72, 0x69, 0x63,
+ 0x6B, 0x20, 0x43, 0x6F, 0x6C, 0x6C, 0x69, 0x6E,
+ 0x73, 0x05, 0x0D, 0x0D, 0x0D, 0x0D, 0x02, 0x51,
+ 0x55, 0x41, 0x4C, 0x49, 0x54, 0x59, 0x20, 0x41,
+ 0x53, 0x53, 0x55, 0x52, 0x41, 0x4E, 0x43, 0x45,
+ 0x05, 0x0D, 0x0D, 0x02, 0x4A, 0x65, 0x73, 0x73,
+ 0x65, 0x20, 0x43, 0x6C, 0x65, 0x6D, 0x69, 0x74,
+ 0x05, 0x0D, 0x02, 0x4B, 0x65, 0x6E, 0x6E, 0x65,
+ 0x74, 0x68, 0x20, 0x44, 0x75, 0x6E, 0x6E, 0x65,
+ 0x05, 0x0D, 0x02, 0x4A, 0x65, 0x66, 0x66, 0x20,
+ 0x53, 0x74, 0x65, 0x76, 0x65, 0x6E, 0x20, 0x46,
+ 0x69, 0x6C, 0x6C, 0x68, 0x61, 0x62, 0x65, 0x72,
+ 0x05, 0x0D, 0x02, 0x57, 0x69, 0x6C, 0x6C, 0x69,
+ 0x61, 0x6D, 0x20, 0x46, 0x6F, 0x73, 0x74, 0x65,
+ 0x72, 0x05, 0x0D, 0x02, 0x53, 0x63, 0x6F, 0x74,
+ 0x74, 0x20, 0x46, 0x6C, 0x65, 0x6D, 0x69, 0x6E,
+ 0x67, 0x05, 0x0D, 0x02, 0x4D, 0x69, 0x63, 0x68,
+ 0x61, 0x65, 0x6C, 0x20, 0x4C, 0x69, 0x67, 0x68,
+ 0x74, 0x6E, 0x65, 0x72, 0x05, 0x0D, 0x02, 0x47,
+ 0x6C, 0x65, 0x6E, 0x6E, 0x20, 0x53, 0x70, 0x65,
+ 0x72, 0x72, 0x79, 0x05, 0x0D, 0x02, 0x43, 0x68,
+ 0x72, 0x69, 0x73, 0x20, 0x4D, 0x63, 0x46, 0x61,
+ 0x72, 0x6C, 0x61, 0x6E, 0x64, 0x05, 0x0D, 0x02,
+ 0x53, 0x63, 0x6F, 0x74, 0x74, 0x20, 0x4D, 0x61,
+ 0x6E, 0x6E, 0x69, 0x6E, 0x67, 0x05, 0x0D, 0x02,
+ 0x50, 0x61, 0x75, 0x6C, 0x20, 0x53, 0x68, 0x6F,
+ 0x65, 0x6E, 0x65, 0x72, 0x05, 0x0D, 0x02, 0x41,
+ 0x64, 0x61, 0x6D, 0x20, 0x52, 0x79, 0x61, 0x6E,
+ 0x05, 0x0D, 0x02, 0x4D, 0x69, 0x74, 0x63, 0x68,
+ 0x20, 0x46, 0x69, 0x65, 0x6C, 0x64, 0x6D, 0x61,
+ 0x6E, 0x05, 0x0D, 0x02, 0x4A, 0x61, 0x72, 0x65,
+ 0x64, 0x20, 0x42, 0x72, 0x69, 0x6E, 0x6B, 0x6C,
+ 0x65, 0x79, 0x05, 0x0D, 0x02, 0x4A, 0x75, 0x73,
+ 0x74, 0x69, 0x6E, 0x20, 0x48, 0x61, 0x6C, 0x6C,
+ 0x05, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x02,
+ 0x56, 0x4F, 0x49, 0x43, 0x45, 0x20, 0x41, 0x43,
+ 0x54, 0x4F, 0x52, 0x53, 0x05, 0x0D, 0x0D, 0x03,
+ 0x52, 0x69, 0x63, 0x68, 0x61, 0x72, 0x64, 0x20,
+ 0x53, 0x6D, 0x69, 0x74, 0x68, 0x20, 0x61, 0x73,
+ 0x05, 0x04, 0x4B, 0x49, 0x4E, 0x47, 0x20, 0x52,
+ 0x49, 0x43, 0x48, 0x41, 0x52, 0x44, 0x05, 0x0D,
+ 0x03, 0x45, 0x72, 0x69, 0x63, 0x20, 0x47, 0x6F,
+ 0x6F, 0x63, 0x68, 0x20, 0x61, 0x73, 0x05, 0x04,
+ 0x47, 0x45, 0x52, 0x4F, 0x4E, 0x05, 0x0D, 0x03,
+ 0x53, 0x63, 0x6F, 0x74, 0x69, 0x61, 0x20, 0x61,
+ 0x73, 0x05, 0x04, 0x68, 0x65, 0x72, 0x73, 0x65,
+ 0x6C, 0x66, 0x05, 0x0D, 0x03, 0x46, 0x72, 0x61,
+ 0x6E, 0x6B, 0x20, 0x4B, 0x6C, 0x65, 0x70, 0x61,
+ 0x63, 0x6B, 0x69, 0x20, 0x61, 0x73, 0x05, 0x04,
+ 0x50, 0x49, 0x47, 0x4C, 0x45, 0x54, 0x05, 0x0D,
+ 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x02, 0x4A, 0x41,
+ 0x50, 0x41, 0x4E, 0x45, 0x53, 0x45, 0x20, 0x56,
+ 0x45, 0x52, 0x53, 0x49, 0x4F, 0x4E, 0x05, 0x0D,
+ 0x0D, 0x0D, 0x02, 0x50, 0x52, 0x4F, 0x47, 0x52,
+ 0x41, 0x4D, 0x4D, 0x45, 0x52, 0x53, 0x05, 0x0D,
+ 0x0D, 0x02, 0x59, 0x75, 0x6B, 0x69, 0x6F, 0x20,
+ 0x53, 0x65, 0x6B, 0x69, 0x67, 0x75, 0x63, 0x68,
+ 0x69, 0x05, 0x0D, 0x02, 0x4E, 0x61, 0x6F, 0x73,
+ 0x68, 0x69, 0x20, 0x4E, 0x6F, 0x67, 0x75, 0x63,
+ 0x68, 0x69, 0x05, 0x0D, 0x0D, 0x0D, 0x0D, 0x02,
+ 0x41, 0x52, 0x54, 0x49, 0x53, 0x54, 0x53, 0x05,
+ 0x0D, 0x0D, 0x02, 0x4D, 0x61, 0x73, 0x61, 0x6B,
+ 0x69, 0x20, 0x54, 0x6F, 0x67, 0x61, 0x73, 0x68,
+ 0x69, 0x05, 0x0D, 0x02, 0x52, 0x69, 0x73, 0x61,
+ 0x6B, 0x6F, 0x20, 0x53, 0x65, 0x74, 0x6F, 0x05,
+ 0x0D, 0x02, 0x52, 0x65, 0x69, 0x67, 0x61, 0x20,
+ 0x59, 0x61, 0x73, 0x75, 0x64, 0x61, 0x05, 0x0D,
+ 0x02, 0x4D, 0x61, 0x73, 0x75, 0x6D, 0x69, 0x20,
+ 0x53, 0x68, 0x69, 0x6E, 0x62, 0x6F, 0x05, 0x0D,
+ 0x02, 0x4E, 0x61, 0x6F, 0x6B, 0x6F, 0x20, 0x4E,
+ 0x69, 0x74, 0x74, 0x61, 0x05, 0x0D, 0x02, 0x4B,
+ 0x69, 0x79, 0x6F, 0x66, 0x75, 0x6D, 0x69, 0x20,
+ 0x48, 0x69, 0x6E, 0x6F, 0x05, 0x0D, 0x02, 0x48,
+ 0x69, 0x72, 0x6F, 0x6D, 0x69, 0x20, 0x53, 0x61,
+ 0x6B, 0x61, 0x65, 0x05, 0x0D, 0x02, 0x4B, 0x79,
+ 0x6F, 0x75, 0x6B, 0x6F, 0x20, 0x4D, 0x69, 0x79,
+ 0x61, 0x6D, 0x6F, 0x74, 0x6F, 0x05, 0x0D, 0x02,
+ 0x53, 0x68, 0x6F, 0x6B, 0x6F, 0x20, 0x4D, 0x75,
+ 0x72, 0x61, 0x6B, 0x61, 0x6D, 0x69, 0x05, 0x0D,
+ 0x0D, 0x0D, 0x0D, 0x02, 0x4D, 0x55, 0x53, 0x49,
+ 0x43, 0x20, 0x26, 0x20, 0x53, 0x4F, 0x55, 0x4E,
+ 0x44, 0x53, 0x05, 0x0D, 0x0D, 0x02, 0x54, 0x61,
+ 0x6B, 0x65, 0x73, 0x68, 0x69, 0x20, 0x41, 0x62,
+ 0x6F, 0x05, 0x0D, 0x0D, 0x0D, 0x0D, 0x02, 0x4A,
+ 0x41, 0x50, 0x41, 0x4E, 0x45, 0x53, 0x45, 0x20,
+ 0x54, 0x52, 0x41, 0x4E, 0x53, 0x4C, 0x41, 0x54,
+ 0x4F, 0x52, 0x05, 0x0D, 0x0D, 0x02, 0x59, 0x75,
+ 0x72, 0x69, 0x20, 0x49, 0x74, 0x6F, 0x05, 0x0D,
+ 0x0D, 0x0D, 0x0D, 0x02, 0x53, 0x70, 0x65, 0x63,
+ 0x69, 0x61, 0x6C, 0x20, 0x74, 0x68, 0x61, 0x6E,
+ 0x6B, 0x73, 0x20, 0x74, 0x6F, 0x3A, 0x05, 0x0D,
+ 0x0D, 0x02, 0x48, 0x69, 0x72, 0x6F, 0x6B, 0x6F,
+ 0x20, 0x59, 0x6F, 0x72, 0x6F, 0x69, 0x7A, 0x75,
+ 0x6B, 0x61, 0x05, 0x0D, 0x02, 0x59, 0x75, 0x6A,
+ 0x69, 0x20, 0x4F, 0x64, 0x61, 0x77, 0x61, 0x72,
+ 0x61, 0x05, 0x0D, 0x02, 0x4F, 0x68, 0x73, 0x68,
+ 0x75, 0x6E, 0x20, 0x4C, 0x65, 0x65, 0x05, 0x0D,
+ 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x01, 0x43,
+ 0x6F, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74,
+ 0x20, 0x28, 0x43, 0x29, 0x20, 0x31, 0x39, 0x39,
+ 0x33, 0x2C, 0x20, 0x57, 0x65, 0x73, 0x74, 0x77,
+ 0x6F, 0x6F, 0x64, 0x20, 0x53, 0x74, 0x75, 0x64,
+ 0x69, 0x6F, 0x73, 0x2C, 0x20, 0x49, 0x6E, 0x63,
+ 0x2E, 0x05, 0x0D, 0x01, 0x43, 0x6F, 0x70, 0x79,
+ 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x28, 0x43,
+ 0x29, 0x20, 0x31, 0x39, 0x39, 0x34, 0x2C, 0x20,
+ 0x53, 0x74, 0x61, 0x72, 0x43, 0x72, 0x61, 0x66,
+ 0x74, 0x2C, 0x49, 0x6E, 0x63, 0x2E, 0x05, 0x0D,
+ 0x01, 0x41, 0x6C, 0x6C, 0x20, 0x72, 0x69, 0x67,
+ 0x68, 0x74, 0x73, 0x20, 0x72, 0x65, 0x73, 0x65,
+ 0x72, 0x76, 0x65, 0x64, 0x2E, 0x05, 0x0D, 0x0D,
+ 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x00
+};
+
+static const ByteProvider kLoLCreditsPC98Provider = { ARRAYSIZE(kLoLCreditsPC98), kLoLCreditsPC98 };
+
diff --git a/devtools/create_kyradat/resources/lol_pc98_japanese.h b/devtools/create_kyradat/resources/lol_pc98_japanese.h
new file mode 100644
index 0000000000..e4e6f18347
--- /dev/null
+++ b/devtools/create_kyradat/resources/lol_pc98_japanese.h
@@ -0,0 +1,68 @@
+static const LoLCharacter kLoLCharacterDefsPC98Japanese[9] = {
+ { 0x0001, "\x83""}""\x83""C""\x83""P""\x83\x8B", 0, -1, 0, 0, 17,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 20, 20, 6, 6, 0, 0, 0, 384, 320, 5, 2, 0,
+ { 44, 0, 0, 0, 0, 138, 0, 0, 162, 0, 0 },
+ { 1, 1, 1 }, { 0, 0, 0 }, { 1, 1, 1 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "\x83""e""\x83""B""\x83\x82\x83""V""\x81""[", 0, 2, 0, 0, 22,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 27, 27, 5, 5, 0, 0, 0, 256, 256, 0, 0, 0,
+ { 93, 131, 0, 0, 0, 153, 0, 0, 162, 0, 0 },
+ { 3, 2, 1 }, { 0, 0, 0 }, { 2500, 1000, 250 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "\x83""o""\x83""R""\x81""[""\x83""^", 3, 3, 0, 0, 23,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 22, 22, 18, 18, 0, 0, 0, 256, 256, 0, 0, 0,
+ { 108, 149, 0, 0, 145, 153, 0, 0, 129, 0, 0 },
+ { 1, 1, 3 }, { 0, 0, 0 }, { 1, 1, 4000 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "\x83\x8D\x81""[""\x83\x89", 1, 4, 0, 0, 24,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 25, 48, 5, 5, 0, 0, 0, 256, 256, 0, 0, 0,
+ { 0, 0, 0, 0, 0, 137, 0, 0, 162, 0, 0 },
+ { 1, 4, 1 }, { 0, 0, 0 }, { 1, 15001, 1 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "\x83""R""\x83\x93\x83\x89\x83""b""\x83""h", 0, -5, 0, 0, 26,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 23, 23, 10, 10, 0, 0, 0, 366, 358, 2, 3, 0,
+ { 44, 0, 0, 0, 0, 138, 0, 0, 162, 0, 0 },
+ { 1, 1, 1 }, { 0, 0, 0 }, { 1, 1, 1 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "\x83""|""\x81""[""\x83\x8B\x83""\\""\x83\x93", 0, 6, 0, 0, 25,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 105, 105, 45, 45, 0, 0, 0, 256, 256, 0, 0, 0,
+ { 0, 0, 0, 0, 0, 138, 0, 0, 129, 0, 0 },
+ { 5, 2, 3 }, { 0, 0, 0 }, { 40000, 501, 3500 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "\x83""h""\x81""[""\x83\x93", 1, 7, 0, 0, 24,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 50, 50, 80, 80, 0, 0, 0, 256, 256, 0, 0, 0,
+ { 0, 0, 0, 0, 0, 138, 0, 0, 129, 0, 0 },
+ { 1, 2, 10 }, { 1, 254, 177 }, { 1, 501, 1 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "\x83""L""\x81""[""\x83\x89\x83\x93", 2, -8, 0, 0, 21,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 23, 23, 8, 8, 0, 0, 0, 422, 332, 5, 1, 0,
+ { 44, 0, 0, 0, 0, 138, 0, 0, 162, 0, 0 },
+ { 1, 1, 1 }, { 0, 0, 0 }, { 1, 1, 1 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } },
+ { 0x0001, "\x83""A""\x83""N""\x83""V""\x83""F""\x83\x8B", 4, -9, 0, 0, 20,
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 256, 256, 256, 256, 256, 256, 256, 256 },
+ 0, 28, 28, 32, 32, 0, 0, 0, 320, 256, 1, 1, 0,
+ { 44, 0, 0, 0, 0, 138, 0, 0, 162, 0, 0 },
+ { 1, 1, 1 }, { 0, 0, 0 }, { 1, 1, 1 },
+ { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } }
+};
+
+static const LoLCharacterProvider kLoLCharacterDefsPC98JapaneseProvider = { ARRAYSIZE(kLoLCharacterDefsPC98Japanese), kLoLCharacterDefsPC98Japanese };
+
diff --git a/devtools/create_kyradat/resources/mr_dos_cd.h b/devtools/create_kyradat/resources/mr_dos_cd.h
new file mode 100644
index 0000000000..9dffa33a1d
--- /dev/null
+++ b/devtools/create_kyradat/resources/mr_dos_cd.h
@@ -0,0 +1,556 @@
+static const char *const k3MainMenuStringsDOSCD[12] = {
+ "Start a new game",
+ "Introduction",
+ "Load a game",
+ "Exit the game",
+ "Nouvelle Partie",
+ "Introduction",
+ "Charger une partie",
+ "Quitter le jeu",
+ "Neues Spiel starten",
+ "Intro",
+ "Spielstand laden",
+ "Spiel beenden"
+};
+
+static const StringListProvider k3MainMenuStringsDOSCDProvider = { ARRAYSIZE(k3MainMenuStringsDOSCD), k3MainMenuStringsDOSCD };
+
+static const char *const k3MusicFilesDOSCD[43] = {
+ "ARREST1",
+ "BATH1",
+ "OCEAN1",
+ "CLOWN1",
+ "DARM2",
+ "FALL1M",
+ "FALL2",
+ "FISH1",
+ "FISHWNDR",
+ "HERMAN1",
+ "JAIL1",
+ "JUNGLE1",
+ "KATHY1",
+ "NICESINE",
+ "PEGASUS1",
+ "PIRATE1",
+ "PIRATE2",
+ "PIRATE3",
+ "POP3",
+ "PORT1",
+ "QUEEN1",
+ "RUINS1",
+ "SNAKES1",
+ "SPRING1",
+ "STATUE1",
+ "STATUE2",
+ "TITLE1",
+ "UNDER1",
+ "WALKCHP1",
+ "YANK1",
+ "ZAN2",
+ "GROOVE2",
+ "GROOVE3",
+ "KING1",
+ "KING2",
+ "GROOVE1",
+ "JAIL2",
+ "SPIRIT1",
+ "SPRING1A",
+ "POP1",
+ "POP2",
+ "SQUIRL1",
+ ""
+};
+
+static const StringListProvider k3MusicFilesDOSCDProvider = { ARRAYSIZE(k3MusicFilesDOSCD), k3MusicFilesDOSCD };
+
+static const byte k3ScoreTableDOSCD[200] = {
+ 0x0A, 0x08, 0x05, 0x09, 0x0A, 0x0A, 0x07, 0x08,
+ 0x09, 0x09, 0x08, 0x08, 0x07, 0x08, 0x05, 0x09,
+ 0x06, 0x0A, 0x07, 0x08, 0x05, 0x09, 0x06, 0x06,
+ 0x07, 0x08, 0x05, 0x09, 0x06, 0x08, 0x07, 0x08,
+ 0x05, 0x09, 0x06, 0x0A, 0x07, 0x08, 0x05, 0x05,
+ 0x05, 0x07, 0x05, 0x07, 0x0A, 0x05, 0x0A, 0x05,
+ 0x05, 0x08, 0x06, 0x08, 0x07, 0x05, 0x05, 0x08,
+ 0x06, 0x09, 0x05, 0x07, 0x06, 0x05, 0x05, 0x07,
+ 0x07, 0x07, 0x06, 0x05, 0x08, 0x06, 0x0A, 0x05,
+ 0x07, 0x05, 0x0A, 0x05, 0x05, 0x05, 0x05, 0x07,
+ 0x05, 0x08, 0x09, 0x07, 0x07, 0x06, 0x0A, 0x06,
+ 0x05, 0x0A, 0x08, 0x05, 0x08, 0x06, 0x0A, 0x05,
+ 0x05, 0x08, 0x08, 0x05, 0x07, 0x07, 0x07, 0x06,
+ 0x08, 0x09, 0x08, 0x08, 0x06, 0x05, 0x07, 0x06,
+ 0x05, 0x08, 0x0F, 0x07, 0x09, 0x06, 0x06, 0x08,
+ 0x05, 0x08, 0x0F, 0x0F, 0x05, 0x0F, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const ByteProvider k3ScoreTableDOSCDProvider = { ARRAYSIZE(k3ScoreTableDOSCD), k3ScoreTableDOSCD };
+
+static const char *const k3SfxFilesDOSCD[225] = {
+ "ALARM1",
+ "ARMOIRE1",
+ "ARROW1",
+ "AUDLAFF1",
+ "AUDLAFF2",
+ "AUDLAFF3",
+ "AUDLAFF4",
+ "AUDLAFF5",
+ "AUDLAFF6",
+ "AUDLAFF7",
+ "AUDLAFF8",
+ "AUDLAFF9",
+ "BARK22A",
+ "BEAM1",
+ "BEDSQK1",
+ "BEDSQK2",
+ "BIGCLOK1",
+ "BIGDOR2",
+ "BIRD4",
+ "BIRD122",
+ "BIRD222",
+ "BIRD322",
+ "BLAST22D",
+ "BLINK1",
+ "BOATMIX1",
+ "BODYFAL1",
+ "BOTLBLOW",
+ "BOUNCE3",
+ "BOUNCE5",
+ "BOW2",
+ "BUBL1",
+ "BUBL2",
+ "BUBL3",
+ "BUBL4",
+ "BUTTON1",
+ "BUTTON2",
+ "CANNON1",
+ "CASHREG1",
+ "CATHY1",
+ "CHAIN1",
+ "CHATTER1",
+ "CHATTER2",
+ "CHEESE1",
+ "CHICHIC2",
+ "CHIPLAF1",
+ "CHIPROR1",
+ "CLANG1",
+ "CLDOOR1",
+ "CLEAT1",
+ "CLOTHES1",
+ "COIN2",
+ "COUNTER1",
+ "CREAK1",
+ "CREAK2",
+ "CREAK3",
+ "CRIKT22A",
+ "CRMAD1",
+ "CRNORM1",
+ "CRUMBLE1",
+ "CRUNCH1",
+ "CRYSTAL1",
+ "DFLY1",
+ "DIAL1",
+ "DIGDIRT1",
+ "DIZZY1",
+ "DODO1",
+ "DOORBELL",
+ "DOORCL1",
+ "DOOROP1",
+ "DRIP1",
+ "DROPITM1",
+ "EAT22A",
+ "EATNUT1",
+ "ELEC1",
+ "EXPLODE2",
+ "FALL1",
+ "FALLM2",
+ "FALLM3",
+ "FESTRE1",
+ "FISHLAF2",
+ "FLAG22A",
+ "FLAG22B",
+ "FLAG22C",
+ "FLPOOF1",
+ "FOLDER1",
+ "FROG1",
+ "FROGJMP1",
+ "FSHBUBL1",
+ "FUNNEL1",
+ "FUSE1",
+ "GATE22A",
+ "GEM1",
+ "GEMFIRE1",
+ "GEMLIT1",
+ "GEMPUT1",
+ "GEMRAIN1",
+ "GEMWND1",
+ "GIRLLAF1",
+ "GIRLLAF2",
+ "GLASBRK1",
+ "GLOWY1",
+ "GOODK33",
+ "GROWTWIG",
+ "GUNTHER3",
+ "H2ODROP2",
+ "H2OFALL1",
+ "HAMMER1",
+ "HAYFALL2",
+ "HERMMAG1",
+ "HIPRES1",
+ "HITHED22",
+ "HOWL1",
+ "HUM1",
+ "HYPNO1",
+ "HYPNO2",
+ "IMPACT1",
+ "JOHAN1",
+ "JUNGAMB2",
+ "KISS1",
+ "KISS2",
+ "KNIFE",
+ "KNIFHIT1",
+ "KNIFSTAB",
+ "KNOCK",
+ "LAND1",
+ "LEVIBAB1",
+ "LEVIMAN1",
+ "LID",
+ "MACHMIX1",
+ "MALCFALL",
+ "MALCYAWN",
+ "MJUMP1",
+ "MOO1",
+ "MOO2",
+ "MOO3",
+ "MORPH1",
+ "MORPH2",
+ "MORPH3",
+ "MORPH4",
+ "MOTHS1",
+ "MSPLASH1",
+ "MTLSLAM1",
+ "MUDBATH1",
+ "NAIL1",
+ "NEIGH1",
+ "NETCATCH",
+ "NETMAL1",
+ "NETRIP1",
+ "OPDOOR1",
+ "OWL1",
+ "OWL2",
+ "PEDAL3",
+ "PEGWING1",
+ "PICKUP1",
+ "PLUCK3",
+ "POLGULP1",
+ "POOF1",
+ "PORTAL1",
+ "POURH2O1",
+ "PRIMOR1",
+ "PUMP1",
+ "PUNCTRE1",
+ "RATTLE1",
+ "REV2",
+ "RING",
+ "ROAR3",
+ "ROWBOAT1",
+ "RUCKUS1",
+ "RUMBLE1",
+ "SCOLD1",
+ "SCRATCH1",
+ "SHOVEL1",
+ "SHOWER2",
+ "SLOTPUL1",
+ "SNAKKILL",
+ "SNAP1",
+ "SNIFF1",
+ "SNIFF2",
+ "SNIFFM1",
+ "SNIP22B",
+ "SNORIN1",
+ "SNOROUT1",
+ "SNORT1",
+ "SPITBAL1",
+ "SPITBAL2",
+ "SPLASH1",
+ "SQUEAK1",
+ "SQUEAK2",
+ "SQUEAK3",
+ "STATUE",
+ "STAMPED1",
+ "STARS1",
+ "STONE1",
+ "STONE2",
+ "STONE3",
+ "STRETCH1",
+ "STRETCH2",
+ "SUNRISE1",
+ "SWALLOW1",
+ "SWALLOW2",
+ "SWAV22B",
+ "TELBEL1",
+ "TELBEL2",
+ "TENNIS1",
+ "THROW1",
+ "THUMP1",
+ "TOILET1",
+ "TRAPDOR1",
+ "TRICKLE",
+ "TROLGRNT",
+ "TROLYEL1",
+ "TROLYEL2",
+ "TUBEDOR1",
+ "TWIGSNAP",
+ "UMBRLA1",
+ "UNLOK22A",
+ "VACUUM",
+ "WAVELT1",
+ "WHIP1",
+ "WHIP2",
+ "WOODHIT1",
+ "YAWN1",
+ "ZING",
+ "ZIPPER1",
+ ""
+};
+
+static const StringListProvider k3SfxFilesDOSCDProvider = { ARRAYSIZE(k3SfxFilesDOSCD), k3SfxFilesDOSCD };
+
+static const byte k3SfxMapDOSCD[608] = {
+ 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
+ 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
+ 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x99, 0x00,
+ 0x46, 0x00, 0xA9, 0x00, 0x33, 0x00, 0x65, 0x00,
+ 0x9B, 0x00, 0x17, 0x00, 0xBB, 0x00, 0x64, 0x00,
+ 0x55, 0x00, 0xD5, 0x00, 0x66, 0x00, 0xB9, 0x00,
+ 0x9A, 0x00, 0xFF, 0x00, 0xCC, 0x00, 0x67, 0x00,
+ 0x2E, 0x00, 0xA1, 0x00, 0xD0, 0x00, 0x63, 0x00,
+ 0x89, 0x00, 0xBE, 0x00, 0x80, 0x00, 0x1D, 0x00,
+ 0x02, 0x00, 0x28, 0x00, 0x91, 0x00, 0x29, 0x00,
+ 0xCE, 0x00, 0x8F, 0x00, 0x49, 0x00, 0x2B, 0x00,
+ 0x2D, 0x00, 0x2C, 0x00, 0x3E, 0x00, 0x22, 0x00,
+ 0x80, 0x00, 0x9C, 0x00, 0x2E, 0x00, 0x04, 0x00,
+ 0x47, 0x00, 0xA8, 0x00, 0x51, 0x00, 0x52, 0x00,
+ 0x80, 0x00, 0x48, 0x00, 0x38, 0x0A, 0x0C, 0x00,
+ 0xD8, 0x00, 0xD1, 0x00, 0xD2, 0x00, 0xD3, 0x00,
+ 0xD1, 0x00, 0x6A, 0x00, 0x8A, 0x00, 0xC0, 0x00,
+ 0xC1, 0x00, 0xC2, 0x00, 0x9F, 0x00, 0xA3, 0x00,
+ 0x90, 0x00, 0xB6, 0x00, 0x37, 0x00, 0x71, 0x00,
+ 0x13, 0x00, 0x50, 0x00, 0x5A, 0x00, 0x6E, 0x00,
+ 0x70, 0x00, 0x11, 0x00, 0x16, 0x00, 0x14, 0x00,
+ 0x43, 0x00, 0xCD, 0x00, 0xAA, 0x00, 0x15, 0x00,
+ 0x83, 0x00, 0x19, 0x00, 0xB3, 0x00, 0x6F, 0x00,
+ 0x26, 0x00, 0xC8, 0x00, 0xA7, 0x00, 0x98, 0x00,
+ 0x87, 0x00, 0xC7, 0x00, 0xA2, 0x00, 0xB0, 0x00,
+ 0x12, 0x00, 0xD7, 0x00, 0x56, 0x00, 0x45, 0x00,
+ 0x4B, 0x00, 0xAF, 0x00, 0x3B, 0x00, 0x6C, 0x00,
+ 0x8E, 0x00, 0x39, 0x00, 0x38, 0x00, 0x92, 0x00,
+ 0x4B, 0x00, 0xD0, 0x00, 0x4A, 0x00, 0x9D, 0x00,
+ 0x7F, 0x00, 0x6D, 0x00, 0xFF, 0x00, 0xFF, 0x00,
+ 0x3D, 0x00, 0x72, 0x00, 0x40, 0x00, 0x66, 0x00,
+ 0x01, 0x00, 0xA5, 0x00, 0x00, 0x00, 0x3C, 0x00,
+ 0xAC, 0x00, 0x38, 0x00, 0x8B, 0x00, 0xDF, 0x00,
+ 0x0E, 0x00, 0x54, 0x00, 0xFF, 0x00, 0xFF, 0x00,
+ 0x94, 0x00, 0xAB, 0x00, 0x76, 0x00, 0x58, 0x00,
+ 0x6B, 0x00, 0x27, 0x00, 0xFF, 0x00, 0x77, 0x00,
+ 0xA6, 0x00, 0x63, 0x00, 0x9E, 0x00, 0xDE, 0x00,
+ 0x84, 0x00, 0x85, 0x00, 0x86, 0x00, 0x3F, 0x00,
+ 0xCC, 0x00, 0xCC, 0x00, 0xCC, 0x00, 0x93, 0x00,
+ 0x9D, 0x00, 0x75, 0x00, 0x75, 0x00, 0x75, 0x00,
+ 0x75, 0x00, 0x3A, 0x00, 0xFF, 0x00, 0xFF, 0x00,
+ 0xFF, 0x00, 0xAE, 0x00, 0x8C, 0x00, 0x20, 0x00,
+ 0xFF, 0x00, 0x32, 0x00, 0x32, 0x00, 0xFF, 0x00,
+ 0x4D, 0x00, 0xD9, 0x00, 0x88, 0x00, 0x4D, 0x00,
+ 0x4D, 0x00, 0x4D, 0x00, 0x4D, 0x00, 0xA0, 0x00,
+ 0x4C, 0x00, 0x8C, 0x00, 0x4C, 0x00, 0x4C, 0x00,
+ 0x8C, 0x00, 0x8C, 0x00, 0x5C, 0x00, 0x5D, 0x00,
+ 0x60, 0x00, 0x5F, 0x00, 0xC5, 0x00, 0xBF, 0x00,
+ 0xFF, 0x00, 0x4F, 0x00, 0x16, 0x00, 0x59, 0x00,
+ 0xFF, 0x00, 0x24, 0x00, 0xA4, 0x00, 0xCF, 0x00,
+ 0xFF, 0x00, 0x47, 0x00, 0x95, 0x00, 0x96, 0x00,
+ 0x7B, 0x00, 0xBD, 0x00, 0xFF, 0x00, 0x34, 0x00,
+ 0x35, 0x00, 0x36, 0x00, 0xDE, 0x00, 0xFF, 0x00,
+ 0x4B, 0x00, 0xD6, 0x00, 0xFF, 0x00, 0x61, 0x00,
+ 0x62, 0x00, 0xFF, 0x00, 0x78, 0x00, 0xFF, 0x00,
+ 0x44, 0x00, 0xB4, 0x00, 0xB5, 0x00, 0x42, 0x00,
+ 0x27, 0x00, 0xA2, 0x00, 0x27, 0x00, 0x5D, 0x00,
+ 0x7A, 0x00, 0x89, 0x00, 0x1A, 0x00, 0x0E, 0x00,
+ 0x82, 0x00, 0xFF, 0x00, 0x79, 0x00, 0x2A, 0x00,
+ 0x81, 0x00, 0xFF, 0x00, 0x74, 0x00, 0x4E, 0x00,
+ 0xB1, 0x00, 0x1B, 0x00, 0x2F, 0x00, 0xBA, 0x00,
+ 0xBB, 0x00, 0xBC, 0x00, 0xDA, 0x00, 0xDB, 0x00,
+ 0x18, 0x00, 0x5E, 0x00, 0x0D, 0x0A, 0x88, 0x00,
+ 0x1E, 0x00, 0x1F, 0x00, 0x20, 0x00, 0x21, 0x00,
+ 0x69, 0x00, 0x1C, 0x00, 0x7C, 0x00, 0x30, 0x00,
+ 0xC3, 0x00, 0xC4, 0x00, 0xAD, 0x00, 0x25, 0x00,
+ 0x53, 0x00, 0xB7, 0x00, 0xB8, 0x00, 0xDC, 0x00,
+ 0x8D, 0x00, 0xCB, 0x00, 0xD4, 0x00, 0xB2, 0x00,
+ 0xDD, 0x00, 0x57, 0x00, 0x41, 0x00, 0x10, 0x00,
+ 0x4C, 0x00, 0xC9, 0x00, 0xFF, 0x00, 0xFF, 0x00,
+ 0x7D, 0x00, 0x7E, 0x00, 0xCA, 0x00, 0x03, 0x00,
+ 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00,
+ 0x08, 0x00, 0x09, 0x00, 0x0A, 0x00, 0x0B, 0x00,
+ 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
+ 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,
+ 0x23, 0x00, 0x97, 0x00, 0x73, 0x00, 0x00, 0x00
+};
+
+static const ByteProvider k3SfxMapDOSCDProvider = { ARRAYSIZE(k3SfxMapDOSCD), k3SfxMapDOSCD };
+
+static const FrameControl k3ItemAnimDataDOSCD0FrameControl[3] = {
+ { 0x0003, 0x0019 },
+ { 0x0048, 0x001E },
+ { 0x0049, 0x001E }
+};
+
+static const FrameControl k3ItemAnimDataDOSCD1FrameControl[7] = {
+ { 0x003A, 0x000B },
+ { 0x004B, 0x000B },
+ { 0x004C, 0x000B },
+ { 0x004D, 0x000B },
+ { 0x004E, 0x000B },
+ { 0x004F, 0x000B },
+ { 0x0050, 0x000B }
+};
+
+static const FrameControl k3ItemAnimDataDOSCD2FrameControl[4] = {
+ { 0x0014, 0x000F },
+ { 0x0051, 0x000F },
+ { 0x0052, 0x000F },
+ { 0x0053, 0x000F }
+};
+
+static const FrameControl k3ItemAnimDataDOSCD3FrameControl[4] = {
+ { 0x0013, 0x0014 },
+ { 0x0054, 0x0014 },
+ { 0x0055, 0x0014 },
+ { 0x0056, 0x0014 }
+};
+
+static const FrameControl k3ItemAnimDataDOSCD4FrameControl[7] = {
+ { 0x0015, 0x0010 },
+ { 0x0057, 0x0012 },
+ { 0x0058, 0x0010 },
+ { 0x0059, 0x0011 },
+ { 0x005A, 0x0010 },
+ { 0x005B, 0x0011 },
+ { 0x005C, 0x0010 }
+};
+
+static const FrameControl k3ItemAnimDataDOSCD5FrameControl[4] = {
+ { 0x0009, 0x001E },
+ { 0x005D, 0x001E },
+ { 0x005E, 0x001E },
+ { 0x005D, 0x001E }
+};
+
+static const FrameControl k3ItemAnimDataDOSCD6FrameControl[7] = {
+ { 0x0039, 0x0021 },
+ { 0x005F, 0x0020 },
+ { 0x0060, 0x001E },
+ { 0x0061, 0x0020 },
+ { 0x0062, 0x0021 },
+ { 0x0063, 0x001E },
+ { 0x0064, 0x0022 }
+};
+
+static const FrameControl k3ItemAnimDataDOSCD7FrameControl[34] = {
+ { 0x0040, 0x000C },
+ { 0x006C, 0x0010 },
+ { 0x006B, 0x0010 },
+ { 0x006A, 0x000F },
+ { 0x0069, 0x000F },
+ { 0x0068, 0x000F },
+ { 0x0067, 0x000F },
+ { 0x0066, 0x000F },
+ { 0x0065, 0x000F },
+ { 0x0066, 0x0011 },
+ { 0x0067, 0x0012 },
+ { 0x0068, 0x0010 },
+ { 0x0069, 0x000F },
+ { 0x006A, 0x0010 },
+ { 0x006B, 0x000F },
+ { 0x006C, 0x0010 },
+ { 0x006B, 0x000F },
+ { 0x006A, 0x0010 },
+ { 0x006B, 0x000F },
+ { 0x006C, 0x0010 },
+ { 0x006B, 0x000F },
+ { 0x006A, 0x0010 },
+ { 0x0069, 0x000F },
+ { 0x0068, 0x0010 },
+ { 0x0067, 0x0012 },
+ { 0x0066, 0x0011 },
+ { 0x0065, 0x00C8 },
+ { 0x0066, 0x0011 },
+ { 0x0067, 0x0012 },
+ { 0x0068, 0x0010 },
+ { 0x0069, 0x000F },
+ { 0x006A, 0x0010 },
+ { 0x006B, 0x000F },
+ { 0x006C, 0x0010 }
+};
+
+static const FrameControl k3ItemAnimDataDOSCD8FrameControl[5] = {
+ { 0x002B, 0x0019 },
+ { 0x008E, 0x0016 },
+ { 0x008F, 0x0014 },
+ { 0x0090, 0x0016 },
+ { 0x0091, 0x0050 }
+};
+
+static const FrameControl k3ItemAnimDataDOSCD9FrameControl[6] = {
+ { 0x003B, 0x0258 },
+ { 0x0092, 0x000A },
+ { 0x0093, 0x000A },
+ { 0x0094, 0x000A },
+ { 0x0093, 0x000A },
+ { 0x0092, 0x000A }
+};
+
+static const ItemAnimDefinition k3ItemAnimDataDOSCD[10] = {
+ { 3, 3, k3ItemAnimDataDOSCD0FrameControl },
+ { 58, 7, k3ItemAnimDataDOSCD1FrameControl },
+ { 20, 4, k3ItemAnimDataDOSCD2FrameControl },
+ { 19, 4, k3ItemAnimDataDOSCD3FrameControl },
+ { 21, 7, k3ItemAnimDataDOSCD4FrameControl },
+ { 9, 4, k3ItemAnimDataDOSCD5FrameControl },
+ { 57, 7, k3ItemAnimDataDOSCD6FrameControl },
+ { 64, 34, k3ItemAnimDataDOSCD7FrameControl },
+ { 43, 5, k3ItemAnimDataDOSCD8FrameControl },
+ { 59, 6, k3ItemAnimDataDOSCD9FrameControl }
+};
+
+static const ItemAnimDefinitionProvider k3ItemAnimDataDOSCDProvider = { ARRAYSIZE(k3ItemAnimDataDOSCD), k3ItemAnimDataDOSCD };
+
+static const byte k3ItemMagicTableDOSCD[36] = {
+ 0x06, 0x05, 0x07, 0xFE, 0x05, 0x06, 0x07, 0xFE,
+ 0x03, 0x00, 0x22, 0xFE, 0x00, 0x03, 0x22, 0xFE,
+ 0x10, 0x00, 0x20, 0x0F, 0x00, 0x10, 0x0F, 0x20,
+ 0x10, 0x22, 0x21, 0x0F, 0x22, 0x10, 0x0F, 0x21,
+ 0xFF, 0xFF, 0xFF, 0x00
+};
+
+static const ByteProvider k3ItemMagicTableDOSCDProvider = { ARRAYSIZE(k3ItemMagicTableDOSCD), k3ItemMagicTableDOSCD };
+
+static const byte k3ItemStringMapDOSCD[72] = {
+ 0x01, 0x00, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x01,
+ 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0x02, 0x00, 0x02, 0x00, 0x02,
+ 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01,
+ 0x01, 0x00, 0x02, 0x02, 0x00, 0x00, 0x02, 0x00,
+ 0x00, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x02,
+ 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02
+};
+
+static const ByteProvider k3ItemStringMapDOSCDProvider = { ARRAYSIZE(k3ItemStringMapDOSCD), k3ItemStringMapDOSCD };
+
diff --git a/devtools/create_kyradat/search.cpp b/devtools/create_kyradat/search.cpp
deleted file mode 100644
index 4a32ea9df0..0000000000
--- a/devtools/create_kyradat/search.cpp
+++ /dev/null
@@ -1,215 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-// Disable symbol overrides so that we can use system headers.
-#define FORBIDDEN_SYMBOL_ALLOW_ALL
-
-#include "search.h"
-#include "md5.h"
-
-#include <algorithm>
-#include <cassert>
-
-Hasher::Hash Hasher::createHash(const byte *data, uint32 size) {
- md5_context ctx;
- md5_starts(&ctx);
- md5_update(&ctx, data, size);
-
- Hash hash;
- md5_finish(&ctx, hash.digest);
- return hash;
-}
-
-SearchData SearchCreator::create(const char *filename) {
- FILE *f = fopen(filename, "rb");
- assert(f);
-
- SearchData data;
- data.size = fileSize(f);
-
- byte *buffer = new byte[data.size];
- fread(buffer, 1, data.size, f);
- fclose(f);
-
- data = create(buffer, data.size);
- delete[] buffer;
-
- return data;
-}
-
-SearchData SearchCreator::create(const byte *buffer, uint32 size) {
- SearchData data;
-
- data.size = size;
- data.hash = Hasher::createHash(buffer, data.size);
- data.byteSum = 0;
-
- for (uint32 i = 0; i < data.size; ++i)
- data.byteSum += buffer[i];
-
- return data;
-}
-
-SumCreator::SumCreator(InputList list, const DataInput &input) : _curOffset(0), _input(input), _sums() {
- // Sort in ascending order
- list.sort(std::less<uint32>());
-
- uint32 byteSum = 0;
- uint32 oldSize = 0;
-
- for (InputList::const_iterator i = list.begin(); i != list.end(); ++i) {
- // Strip out entries, which exceed the buffer size
- if (*i > _input.size())
- continue;
-
- // Strip out duplicates
- if (_sums.find(*i) != _sums.end())
- continue;
-
- // Only add the bytes exceeding the old sum's size
- // to the sum. This saves a few accesses.
- for (uint32 j = oldSize; j < *i; ++j)
- byteSum += _input[j];
-
- _sums[*i] = byteSum;
-
- // Save this sum's size
- oldSize = *i;
- }
-}
-
-bool SumCreator::nextByte() {
- // Calculate the bytes available for summing. We need to add
- // 1 here, since we will only update the offset AFTER everything
- // is done.
- const uint32 sizeLeft = _input.size() - (_curOffset + 1);
-
- if (!sizeLeft) {
- _sums.clear();
- return false;
- }
-
- // Grab the old first byte.
- const byte firstByte = _input[_curOffset];
-
- typedef std::list<uint32> DeletionList;
- DeletionList toRemove;
-
- for (SumMap::iterator i = _sums.begin(); i != _sums.end(); ++i) {
- // If this entry needs to sum up a larger buffer than the buffer
- // size left, we will remove the entry and continue to the next
- // one.
- if (i->first > sizeLeft) {
- // Add the current entry to the removal list.
- toRemove.push_back(i->first);
- continue;
- }
-
- // Update the byte sum. First we remove the old first byte
- // from the sum, next we add the next available byte.
- i->second -= firstByte;
- i->second += _input[_curOffset + i->first];
- }
-
- // Remove all entries flagged for removal
- for (DeletionList::const_iterator i = toRemove.begin(); i != toRemove.end(); ++i)
- _sums.erase(*i);
-
- // Update out offset.
- ++_curOffset;
-
- // We return whether there are still some sums left available.
- return !_sums.empty();
-}
-
-bool SumCreator::hasSum(uint32 size) const {
- return _sums.find(size) != _sums.end();
-}
-
-uint32 SumCreator::getSum(uint32 size) const {
- SumMap::const_iterator s = _sums.find(size);
-
- if (s == _sums.end())
- return 0;
-
- return s->second;
-}
-
-Search::Search(const char *filename) : _data(), _search() {
- FILE *src = fopen(filename, "rb");
- assert(src);
-
- uint32 size = fileSize(src);
- byte *data = new byte[size];
- fread(data, 1, size, src);
- fclose(src);
-
- _data.resize(size);
- std::copy(data, data + size, _data.begin());
- delete[] data;
-}
-
-Search::Search(const byte *data, uint32 size) : _data(), _search() {
- _data.resize(size);
- std::copy(data, data + size, _data.begin());
-}
-
-void Search::addData(SearchData data) {
- // Do not add any duplicates
- if (std::find(_search.begin(), _search.end(), data) != _search.end())
- return;
-
- _search.push_back(data);
-}
-
-bool Search::search(ResultList &res) {
- SumCreator::InputList list;
- for (SearchList::const_iterator i = _search.begin(); i != _search.end(); ++i)
- list.push_back(i->size);
-
- SumCreator sum(list, _data);
- list.clear();
-
- do {
- const uint32 offset = sum.getOffset();
-
- for (SearchList::iterator i = _search.begin(); i != _search.end(); ) {
- if (!sum.hasSum(i->size)) {
- i = _search.erase(i);
- continue;
- }
-
- const uint32 byteSum = sum.getSum(i->size);
- if (byteSum == i->byteSum) {
- if (Hasher::createHash(&_data[offset], i->size) == i->hash) {
- res.push_back(ResultData(*i, offset));
- i = _search.erase(i);
- continue;
- }
- }
-
- ++i;
- }
- } while (sum.nextByte());
-
- return !res.empty();
-}
diff --git a/devtools/create_kyradat/search.h b/devtools/create_kyradat/search.h
deleted file mode 100644
index 1f121f69b4..0000000000
--- a/devtools/create_kyradat/search.h
+++ /dev/null
@@ -1,116 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef SEARCH_H
-#define SEARCH_H
-
-#include "util.h"
-
-#include <list>
-#include <map>
-#include <vector>
-#include <cstring>
-
-class Hasher {
-public:
- struct Hash {
- uint8 digest[16];
-
- bool operator==(const Hash &r) const {
- return !std::memcmp(digest, r.digest, sizeof(digest));
- }
-
- bool operator<(const Hash &r) const {
- return std::memcmp(digest, r.digest, sizeof(digest)) < 0;
- }
- };
-
- static Hash createHash(const byte *data, uint32 size);
-};
-
-struct SearchData {
- uint32 size;
-
- uint32 byteSum;
- Hasher::Hash hash;
-
- bool operator==(const SearchData &r) const {
- return (size == r.size && byteSum == r.byteSum && hash == r.hash);
- }
-
- bool operator<(const SearchData &r) const {
- return (size < r.size && byteSum < r.byteSum && hash < r.hash);
- }
-};
-
-class SearchCreator {
-public:
- static SearchData create(const char *filename);
- static SearchData create(const byte *buffer, uint32 size);
-};
-
-class SumCreator {
-public:
- typedef std::list<uint32> InputList;
- typedef std::vector<byte> DataInput;
-
- SumCreator(InputList list, const DataInput &input);
-
- bool nextByte();
-
- uint32 getOffset() const { return _curOffset; }
-
- bool hasSum(uint32 size) const;
- uint32 getSum(uint32 size) const;
-private:
- uint32 _curOffset;
- DataInput _input;
-
- typedef std::map<uint32, uint32> SumMap;
- SumMap _sums;
-};
-
-class Search {
-public:
- Search(const char *filename);
- Search(const byte *data, uint32 size);
-
- void addData(SearchData data);
-
- struct ResultData {
- SearchData data;
- uint32 offset;
-
- ResultData() : data(), offset() {}
- ResultData(SearchData d, uint32 o) : data(d), offset(o) {}
- };
-
- typedef std::list<ResultData> ResultList;
- bool search(ResultList &res);
-private:
- SumCreator::DataInput _data;
-
- typedef std::list<SearchData> SearchList;
- SearchList _search;
-};
-
-#endif
diff --git a/devtools/create_kyradat/tables.cpp b/devtools/create_kyradat/tables.cpp
deleted file mode 100644
index 506ffe21c7..0000000000
--- a/devtools/create_kyradat/tables.cpp
+++ /dev/null
@@ -1,4479 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-// Disable symbol overrides so that we can use system headers.
-#define FORBIDDEN_SYMBOL_ALLOW_ALL
-
-#include "tables.h"
-#include "create_kyradat.h"
-#include "common/language.h"
-#include "common/platform.h"
-
-#define EXTRACT_END_ENTRY { UNK_LANG, kPlatformUnknown, { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }
-
-namespace {
-
-// Id provider tables
-
-const ExtractEntrySearchData k1ForestSeqProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000195, 0x00001455, { { 0x86, 0xC2, 0x45, 0xEB, 0x16, 0x8A, 0x44, 0x73, 0xB4, 0x59, 0x13, 0x9B, 0x85, 0x40, 0x82, 0x81 } } } }, // floppy
- { UNK_LANG, kPlatformUnknown, { 0x000002DE, 0x00003946, { { 0x85, 0x79, 0xDC, 0xB8, 0x62, 0xAD, 0xD6, 0x01, 0xA5, 0x66, 0x6B, 0xC4, 0x61, 0xCA, 0x82, 0xF5 } } } }, // CD + Amiga
-
- { UNK_LANG, kPlatformUnknown, { 0x00000273, 0x00001D80, { { 0x18, 0x32, 0xB7, 0xFB, 0xD8, 0x1A, 0x6D, 0x83, 0x75, 0xF5, 0x2B, 0xF7, 0xC0, 0xFD, 0x85, 0xEF } } } }, // Amiga + CD demo
-
- { UNK_LANG, kPlatformFMTowns, { 0x00000196, 0x00001468, { { 0x06, 0x8D, 0xC1, 0x9B, 0xBC, 0x28, 0xE8, 0x36, 0x43, 0x67, 0x34, 0xAA, 0x78, 0xB9, 0xCB, 0x72 } } } },
-
- { UNK_LANG, kPlatformPC98, { 0x0000013B, 0x0000128A, { { 0xD8, 0xB1, 0xFF, 0x57, 0xC9, 0x5D, 0xE1, 0x23, 0xA5, 0xA0, 0x4B, 0x0F, 0x28, 0xAC, 0x56, 0x83 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1KallakWritingSeqProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x000007F5, 0x00006DCD, { { 0x0E, 0x0A, 0x75, 0xA5, 0x71, 0x5A, 0xC6, 0x32, 0x52, 0x7F, 0xEC, 0x2B, 0x0B, 0xF2, 0x22, 0xE6 } } } }, // floppy
- { UNK_LANG, kPlatformDOS, { 0x00000805, 0x0000719E, { { 0xA2, 0xFE, 0x0A, 0xAA, 0xD9, 0x43, 0x5A, 0xBE, 0x56, 0x38, 0x73, 0x42, 0xAC, 0xA9, 0x1B, 0x01 } } } }, // CD
-
- { UNK_LANG, kPlatformAmiga, { 0x000007F4, 0x00006DAD, { { 0x84, 0x9D, 0x82, 0xD2, 0x4E, 0x8B, 0xE2, 0x86, 0x82, 0x5E, 0xE7, 0x2C, 0x7A, 0xD6, 0xFE, 0x19 } } } },
-
- { UNK_LANG, kPlatformFMTowns, { 0x000007F7, 0x00006E23, { { 0x97, 0x8C, 0x63, 0x8D, 0x91, 0x68, 0xA5, 0x63, 0x55, 0x43, 0xE7, 0xE0, 0x12, 0xF9, 0x80, 0xA4 } } } },
-
- { UNK_LANG, kPlatformPC98, { 0x000007F3, 0x00006D9E, { { 0x3E, 0x83, 0xA4, 0xBF, 0x43, 0xAC, 0xDD, 0x41, 0x33, 0xC3, 0x33, 0x4E, 0xAE, 0x08, 0xB6, 0xDA } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1KyrandiaLogoSeqProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x0000005C, 0x000003D3, { { 0x75, 0xC5, 0x55, 0x54, 0x00, 0xD7, 0xE9, 0x26, 0x0F, 0x01, 0xB1, 0xB7, 0xA9, 0x29, 0xF7, 0x69 } } } },
- { UNK_LANG, kPlatformDOS, { 0x000000A6, 0x00000A09, { { 0x70, 0x6E, 0x74, 0xBB, 0xD7, 0x09, 0x05, 0xDD, 0xA3, 0x09, 0x96, 0x40, 0xBD, 0x01, 0x19, 0x05 } } } }, // CD
- { UNK_LANG, kPlatformDOS, { 0x00000054, 0x00000300, { { 0x4E, 0xAD, 0xD0, 0x73, 0xD2, 0x3C, 0xF6, 0x6B, 0x65, 0x23, 0xA2, 0x30, 0xD6, 0xEE, 0x1C, 0x13 } } } }, // demo
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1KallakMalcolmSeqProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x0000026B, 0x00002132, { { 0x51, 0x07, 0x32, 0xA2, 0x09, 0x47, 0x97, 0x02, 0x85, 0x31, 0x39, 0x93, 0x3A, 0x53, 0x47, 0xA5 } } } }, // floppy
- { UNK_LANG, kPlatformDOS, { 0x00000267, 0x00002100, { { 0xD9, 0x5E, 0x59, 0xF0, 0x7B, 0xC8, 0xF1, 0x40, 0x4F, 0x68, 0x6F, 0xEC, 0xB5, 0xE8, 0x88, 0xE2 } } } }, // floppy
- { UNK_LANG, kPlatformUnknown, { 0x0000027B, 0x0000220A, { { 0xB7, 0xC1, 0x57, 0x04, 0x9B, 0x67, 0x82, 0x7B, 0x6E, 0xFD, 0x59, 0xF2, 0x10, 0x93, 0x89, 0x12 } } } }, // CD + Amiga
-
- { UNK_LANG, kPlatformUnknown, { 0x000002B8, 0x0000280B, { { 0x98, 0xC8, 0x36, 0x8C, 0xF8, 0x92, 0xC2, 0xB9, 0x1B, 0x71, 0x6B, 0x4C, 0xA4, 0x6C, 0xF6, 0x30 } } } }, // Amiga + CD demo
-
- { UNK_LANG, kPlatformFMTowns, { 0x0000026D, 0x00002188, { { 0x7E, 0x3B, 0x06, 0x69, 0x11, 0x59, 0xBE, 0x42, 0xCB, 0x33, 0x9C, 0x15, 0xCF, 0x61, 0xF6, 0xB0 } } } },
-
- { UNK_LANG, kPlatformPC98, { 0x0000026C, 0x00002145, { { 0x95, 0xB7, 0x9E, 0x63, 0x99, 0xFA, 0x22, 0xBF, 0x62, 0x37, 0xC2, 0x2B, 0x40, 0x73, 0x53, 0x83 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1MalcolmTreeSeqProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000216, 0x000014FB, { { 0xBA, 0x6F, 0x63, 0xD5, 0x44, 0xCE, 0xE8, 0x20, 0xD4, 0x4C, 0x06, 0x58, 0x21, 0x8E, 0x07, 0x8B } } } }, // floppy
- { UNK_LANG, kPlatformDOS, { 0x00000230, 0x0000192A, { { 0x28, 0xCC, 0x89, 0x40, 0x8A, 0xF7, 0xCB, 0xC0, 0x11, 0x8F, 0x0F, 0xE5, 0x5F, 0x24, 0x2D, 0x32 } } } }, // CD
-
- { UNK_LANG, kPlatformAmiga, { 0x00000214, 0x000014C4, { { 0xA2, 0x60, 0x16, 0x14, 0x20, 0xE4, 0x8D, 0x89, 0xC4, 0x30, 0x07, 0x21, 0xC9, 0x26, 0xA6, 0x84 } } } },
-
- { UNK_LANG, kPlatformFMTowns, { 0x00000218, 0x00001551, { { 0x30, 0x42, 0xD3, 0x7D, 0x6B, 0x43, 0x3B, 0xC7, 0x63, 0x56, 0x7D, 0x12, 0xE0, 0x53, 0x41, 0x48 } } } },
-
- { UNK_LANG, kPlatformPC98, { 0x00000217, 0x0000150E, { { 0x41, 0xFC, 0xD3, 0xAC, 0x8D, 0x1C, 0x11, 0x4E, 0xE0, 0x0C, 0xF6, 0x93, 0xA9, 0x22, 0x53, 0x7F } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1WestwoodLogoSeqProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x0000004B, 0x000002FE, { { 0x6E, 0xDA, 0x5D, 0x1E, 0xF4, 0x38, 0xAE, 0x7A, 0x9F, 0xBC, 0x00, 0x7C, 0x77, 0x9D, 0x03, 0xAF } } } },
- { UNK_LANG, kPlatformDOS, { 0x0000004B, 0x0000032A, { { 0x9A, 0x54, 0x6F, 0x6C, 0x70, 0xD1, 0x02, 0x94, 0xD1, 0xA1, 0xA7, 0xBE, 0x1B, 0x10, 0xBD, 0x2F } } } }, // CD
- { UNK_LANG, kPlatformDOS, { 0x00000044, 0x00000243, { { 0x00, 0x11, 0x10, 0x64, 0x60, 0xE8, 0xB5, 0x59, 0x00, 0x60, 0xF5, 0x10, 0xB5, 0x63, 0x9D, 0x55 } } } }, // demo
-
- { UNK_LANG, kPlatformAmiga, { 0x0000004D, 0x00000319, { { 0xE9, 0x5D, 0xD4, 0x60, 0x4E, 0xA6, 0x92, 0x30, 0x9C, 0x77, 0x99, 0xBC, 0xB1, 0x97, 0xFB, 0xBD } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1Demo1SeqProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000026, 0x0000016E, { { 0x61, 0xF2, 0x84, 0x42, 0x89, 0x6E, 0xB8, 0x0D, 0x01, 0xB7, 0xE4, 0x49, 0xA1, 0x72, 0xDC, 0x66 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1Demo2SeqProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000023, 0x00000151, { { 0xE7, 0x9F, 0xA7, 0x80, 0xE3, 0xC1, 0x63, 0xF2, 0x3F, 0x7B, 0x64, 0xD9, 0x70, 0x3A, 0xF1, 0x55 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1Demo3SeqProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000059, 0x000001A8, { { 0x9E, 0x90, 0x4F, 0x9E, 0xBC, 0x39, 0x37, 0xD1, 0x10, 0x67, 0x8C, 0xE5, 0x84, 0xFD, 0xD9, 0x7C } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1Demo4SeqProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000020, 0x0000013E, { { 0xB7, 0x67, 0x1D, 0x50, 0x11, 0xD0, 0x16, 0x91, 0x40, 0x40, 0xD1, 0xC0, 0xA0, 0x79, 0x3D, 0xCE } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1AmuleteAnimSeqProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x0000002A, 0x0000025D, { { 0xB1, 0x59, 0x3C, 0x9A, 0x61, 0xC0, 0x1D, 0x80, 0xB5, 0x0C, 0x2E, 0xF9, 0xF6, 0x36, 0xED, 0x7D } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1OutroReunionSeqProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000547, 0x0000781C, { { 0xCF, 0xD6, 0x1D, 0x3D, 0x14, 0x40, 0x88, 0x35, 0x36, 0x4F, 0x0B, 0x1F, 0x9A, 0x1C, 0x3D, 0xAC } } } }, // floppy
- { UNK_LANG, kPlatformDOS, { 0x00000547, 0x000077E0, { { 0x80, 0xC4, 0xFC, 0xD5, 0xEB, 0xAA, 0xA5, 0x87, 0x58, 0x5E, 0xAA, 0xE7, 0x01, 0x8F, 0x59, 0x3F } } } }, // floppy
- { UNK_LANG, kPlatformDOS, { 0x000005E5, 0x00008918, { { 0x6A, 0x33, 0x8C, 0xB0, 0x16, 0x57, 0x2D, 0xEB, 0xB2, 0xE1, 0x64, 0x80, 0x98, 0x99, 0x98, 0x19 } } } }, // CD
-
- { UNK_LANG, kPlatformAmiga, { 0x0000054A, 0x0000785F, { { 0x55, 0xEA, 0xB8, 0x7F, 0x3A, 0x86, 0xCD, 0xA6, 0xBC, 0xA7, 0x9A, 0x39, 0xED, 0xF5, 0x30, 0x0A } } } },
-
- { UNK_LANG, kPlatformUnknown, { 0x00000547, 0x00007876, { { 0x7A, 0xC7, 0x80, 0x34, 0x7A, 0x1B, 0xAB, 0xF8, 0xA7, 0x2F, 0x63, 0x3C, 0xDA, 0x89, 0x3F, 0x82 } } } }, // some floppy DOS + FM-TOWNS
-
- { UNK_LANG, kPlatformPC98, { 0x00000548, 0x00007889, { { 0x17, 0xE9, 0x40, 0xBA, 0x4A, 0xBD, 0xC6, 0x62, 0x56, 0x96, 0xD6, 0x1B, 0x11, 0xF3, 0xD8, 0x14 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1IntroCPSStringsProvider[] = {
- { UNK_LANG, kPlatformFMTowns, { 0x00000015, 0x0000071D, { { 0x59, 0x65, 0x08, 0xF9, 0x4C, 0x81, 0xA1, 0xE3, 0x68, 0xF7, 0xE3, 0xF6, 0x33, 0x5F, 0xF5, 0x36 } } } },
-
- { UNK_LANG, kPlatformUnknown, { 0x00000014, 0x0000071D, { { 0xBA, 0xB6, 0x58, 0xB3, 0x28, 0x5E, 0x9F, 0x77, 0x69, 0x9D, 0x77, 0x53, 0x9D, 0x0D, 0xB0, 0x29 } } } }, // floppy + PC98
- { UNK_LANG, kPlatformDOS, { 0x00000015, 0x00000786, { { 0xCF, 0x09, 0xE1, 0xD9, 0x8E, 0x34, 0x5D, 0xEA, 0xBC, 0xAC, 0xC4, 0xF4, 0x4A, 0xEC, 0xFF, 0xC1 } } } }, // CD
- { UNK_LANG, kPlatformDOS, { 0x00000019, 0x000008DB, { { 0x3A, 0xDC, 0x1D, 0xAD, 0xF4, 0x5E, 0xC9, 0x19, 0xE9, 0x84, 0xD1, 0x31, 0x89, 0x6B, 0x6C, 0xF7 } } } }, // Old floppy
- { UNK_LANG, kPlatformDOS, { 0x0000000C, 0x00000413, { { 0xA1, 0xE3, 0x06, 0x53, 0x23, 0x9A, 0xE0, 0xF1, 0xE4, 0xFD, 0xD9, 0x05, 0x22, 0xA6, 0x28, 0x46 } } } }, // demo
-
- { UNK_LANG, kPlatformAmiga, { 0x00000016, 0x0000070A, { { 0xD9, 0xDB, 0x91, 0xCD, 0x93, 0x81, 0xC4, 0x3F, 0x14, 0xF1, 0xC5, 0x02, 0xE7, 0x3F, 0x3A, 0x6C } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1IntroCOLStringsProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000030, 0x00000F09, { { 0x05, 0x7B, 0x69, 0xB7, 0x6A, 0xC3, 0x7F, 0xD9, 0x7E, 0x51, 0x87, 0xA5, 0x31, 0xD8, 0x80, 0xB3 } } } },
- { UNK_LANG, kPlatformUnknown, { 0x0000002B, 0x00000F09, { { 0x01, 0x40, 0x65, 0xC1, 0x33, 0xAA, 0x64, 0xA7, 0x44, 0xD5, 0x89, 0x68, 0x17, 0x47, 0xC7, 0x1D } } } }, // floppy(?) + PC98
- { UNK_LANG, kPlatformDOS, { 0x00000046, 0x0000174F, { { 0xAA, 0x59, 0x01, 0x20, 0x06, 0xB4, 0x80, 0xC0, 0x84, 0x38, 0xFD, 0x97, 0xBF, 0x78, 0xDD, 0x78 } } } }, // demo
-
- { UNK_LANG, kPlatformAmiga, { 0x0000002E, 0x00000F09, { { 0x2A, 0x42, 0xB8, 0x4E, 0xC6, 0xF0, 0x5F, 0x4A, 0x08, 0xB4, 0xE3, 0xE5, 0xBD, 0x32, 0x11, 0x06 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1IntroWSAStringsProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000093, 0x00002E5D, { { 0xAB, 0xD1, 0x32, 0x89, 0x2A, 0x8D, 0xC0, 0x2C, 0x87, 0x87, 0xA3, 0x14, 0x2A, 0x2A, 0x22, 0x7F } } } },
-
- { UNK_LANG, kPlatformUnknown, { 0x00000086, 0x00002E5D, { { 0xD2, 0x8D, 0x62, 0xEF, 0xEB, 0x75, 0x04, 0x13, 0x64, 0x85, 0x6B, 0x6C, 0xE8, 0x6C, 0xCF, 0x52 } } } },
- { UNK_LANG, kPlatformDOS, { 0x0000004D, 0x00001AEC, { { 0x15, 0xBC, 0x8C, 0xD9, 0x33, 0x0C, 0xC5, 0x66, 0x87, 0x3B, 0x76, 0xEE, 0x0C, 0x41, 0x4D, 0x1F } } } }, // demo
-
- { UNK_LANG, kPlatformUnknown, { 0x00000080, 0x00002E5D, { { 0x67, 0x03, 0x20, 0xDF, 0xAA, 0x3C, 0x6A, 0xB5, 0x45, 0xD0, 0x00, 0x2B, 0x30, 0xCC, 0x36, 0xB6 } } } }, // Amiga + CD Demo
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1IntroStringsProvider[] = {
- { EN_ANY, kPlatformDOS, { 0x000004F5, 0x0001A7B1, { { 0xC7, 0x65, 0x5B, 0x5A, 0x56, 0x43, 0x94, 0x55, 0x5B, 0x00, 0xFD, 0x5D, 0xF4, 0xB5, 0x04, 0x15 } } } }, // floppy
- { EN_ANY, kPlatformDOS, { 0x000004F6, 0x0001A7B1, { { 0xDE, 0x41, 0xB1, 0x98, 0xD5, 0xAD, 0x6B, 0xBA, 0x33, 0x04, 0x19, 0x5D, 0xCC, 0x07, 0xB5, 0x56 } } } }, // CD
- { EN_ANY, kPlatformDOS, { 0x000002FA, 0x00010181, { { 0x48, 0xD3, 0x1B, 0x8E, 0x8D, 0xBC, 0x1F, 0x51, 0x35, 0x71, 0xE2, 0xAB, 0xC8, 0xBE, 0xFC, 0x88 } } } }, // demo
-
- { FR_FRA, kPlatformDOS, { 0x000005EF, 0x000207E6, { { 0xDC, 0x6C, 0x9A, 0x7C, 0x19, 0x45, 0x2B, 0x25, 0x84, 0xCC, 0xE1, 0x40, 0xFE, 0x8E, 0xF4, 0x51 } } } }, // floppy
- { FR_FRA, kPlatformDOS, { 0x000005F0, 0x000207E6, { { 0xB8, 0x51, 0xEA, 0x44, 0x64, 0x04, 0xE4, 0x6A, 0x7B, 0xBD, 0x31, 0x62, 0xC0, 0xDD, 0xEA, 0xEF } } } }, // CD
-
- { DE_DEU, kPlatformDOS, { 0x00000605, 0x000212AB, { { 0x8F, 0x3A, 0x9D, 0x9A, 0x81, 0xF2, 0x4A, 0x90, 0xBC, 0xBD, 0x62, 0x8B, 0xD8, 0xD6, 0xF4, 0x5D } } } }, // floppy
- { DE_DEU, kPlatformDOS, { 0x00000606, 0x000212AB, { { 0xB0, 0x78, 0x86, 0xFB, 0xCB, 0x3D, 0x1E, 0x1E, 0x86, 0xE7, 0x2C, 0x2B, 0x3A, 0x3C, 0x6F, 0x1C } } } }, // CD
-
- { IT_ITA, kPlatformDOS, { 0x0000057C, 0x0001DF02, { { 0x4B, 0x09, 0xBC, 0xBC, 0xB3, 0x3C, 0x69, 0xEB, 0xA6, 0xB5, 0x76, 0xED, 0xC7, 0x57, 0x71, 0xB0 } } } }, // floppy
- { IT_ITA, kPlatformDOS, { 0x000005F0, 0x0001CF13, { { 0x4F, 0xA0, 0x47, 0x57, 0x6D, 0x2D, 0xA6, 0x62, 0x06, 0xBE, 0x86, 0xD2, 0xD7, 0xEA, 0x2E, 0xD6 } } } }, // (fan) CD
-
- { ES_ESP, kPlatformDOS, { 0x000005CF, 0x00020415, { { 0xCC, 0xE5, 0x9F, 0xB8, 0xCA, 0xFA, 0x2D, 0x05, 0xB8, 0xAF, 0x9F, 0x1F, 0x8A, 0xA8, 0x56, 0xDE } } } },
-
- { RU_RUS, kPlatformDOS, { 0x000004F6, 0x000131C6, { { 0x77, 0x76, 0x12, 0xB1, 0xDA, 0x9C, 0xA9, 0xB5, 0x21, 0x1E, 0x49, 0x08, 0x46, 0xB3, 0xE4, 0x61 } } } },
-
- { EN_ANY, kPlatformAmiga, { 0x0000050A, 0x0001A7B1, { { 0x1B, 0x74, 0x71, 0x4C, 0xAB, 0x81, 0x10, 0x59, 0x8A, 0x21, 0x50, 0xBB, 0xFE, 0x6F, 0xD0, 0xE8 } } } },
- { DE_DEU, kPlatformAmiga, { 0x00000626, 0x00021319, { { 0x80, 0x55, 0x54, 0x14, 0x5D, 0x6F, 0x49, 0x04, 0x4A, 0xEF, 0x92, 0xB8, 0x5B, 0x01, 0x0F, 0x97 } } } },
-
- { EN_ANY, kPlatformFMTowns, { 0x00000545, 0x0001A84C, { { 0xEF, 0xE2, 0xE4, 0x92, 0xE1, 0x18, 0xF8, 0x3C, 0x91, 0x29, 0x4D, 0x82, 0xA4, 0x3E, 0xE6, 0x7D } } } },
- { JA_JPN, kPlatformFMTowns, { 0x000005FB, 0x0003163E, { { 0x16, 0x28, 0x83, 0xCE, 0x29, 0x94, 0x9F, 0x82, 0xDC, 0xD4, 0x06, 0xE8, 0x67, 0xC9, 0x56, 0x29 } } } },
-
- { JA_JPN, kPlatformPC98, { 0x000005D0, 0x00032AD7, { { 0xEE, 0x36, 0x93, 0xDD, 0x71, 0x02, 0xE9, 0x0D, 0x54, 0xDE, 0xB6, 0xE1, 0x09, 0x59, 0x60, 0x64 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1OutroHomeStringProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x00000005, 0x00000189, { { 0xA5, 0xF3, 0x03, 0x3F, 0x43, 0x2B, 0x77, 0xCC, 0x5C, 0x96, 0x64, 0xB1, 0x75, 0xB5, 0x3E, 0xF6 } } } },
-
- { JA_JPN, kPlatformUnknown, { 0x00000007, 0x000003E8, { { 0x68, 0x35, 0x87, 0x53, 0xD9, 0x53, 0x1F, 0x13, 0x24, 0x61, 0x0D, 0x8D, 0x33, 0x91, 0xF3, 0x47 } } } },
-
- { FR_FRA, kPlatformDOS, { 0x00000007, 0x00000267, { { 0xD0, 0xC1, 0x11, 0x49, 0x3D, 0x3F, 0xCE, 0x84, 0x8F, 0xEF, 0xE3, 0xFD, 0x43, 0xCA, 0x92, 0xB0 } } } },
-
- { DE_DEU, kPlatformUnknown, { 0x0000000E, 0x00000473, { { 0xB6, 0xEB, 0xE8, 0x22, 0x67, 0x24, 0xA9, 0xA3, 0x94, 0x55, 0xC6, 0x57, 0x17, 0x15, 0x5B, 0x04 } } } },
-
- { ES_ESP, kPlatformDOS, { 0x00000005, 0x00000178, { { 0x2E, 0x9C, 0x94, 0x0F, 0x29, 0x77, 0x27, 0x1D, 0x77, 0x1E, 0x5A, 0xF8, 0x0E, 0x8D, 0x09, 0x6B } } } },
- { IT_ITA, kPlatformDOS, { 0x00000005, 0x00000178, { { 0x2E, 0x9C, 0x94, 0x0F, 0x29, 0x77, 0x27, 0x1D, 0x77, 0x1E, 0x5A, 0xF8, 0x0E, 0x8D, 0x09, 0x6B } } } },
-
- { IT_ITA, kPlatformDOS, { 0x00000007, 0x000001B8, { { 0x17, 0x95, 0x5B, 0x4F, 0xE2, 0x07, 0x5A, 0x49, 0xFA, 0xCE, 0x53, 0x8B, 0xE7, 0x46, 0x69, 0xC7 } } } }, // (fan) CD
-
- { RU_RUS, kPlatformDOS, { 0x00000005, 0x000000EF, { { 0xA0, 0xB4, 0xF2, 0x11, 0x16, 0x92, 0xC8, 0xEB, 0xF2, 0x0C, 0xFE, 0x43, 0xFE, 0x18, 0xF6, 0xBB } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1RoomFilenamesProvider[] = {
- { UNK_LANG, kPlatformFMTowns, { 0x0000034C, 0x0000B7AA, { { 0x7C, 0x1B, 0x89, 0x09, 0xF0, 0x87, 0x3C, 0x64, 0x3D, 0x0E, 0x61, 0xCC, 0x09, 0x8D, 0xC9, 0x95 } } } },
- { UNK_LANG, kPlatformUnknown, { 0x000002DC, 0x0000B7AA, { { 0x31, 0x56, 0x41, 0x69, 0x1E, 0x84, 0x54, 0x2C, 0xF7, 0x7B, 0x98, 0x25, 0xF3, 0x91, 0x56, 0xFD } } } }, // DOS + PC98
-
- { UNK_LANG, kPlatformAmiga, { 0x00000308, 0x0000B7AA, { { 0x6D, 0xA4, 0xE8, 0x27, 0x68, 0x24, 0xCF, 0xAA, 0x30, 0x32, 0x71, 0x74, 0x36, 0x68, 0x82, 0x20 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1RoomListProvider[] = {
- { UNK_LANG, kPlatformFMTowns, { 0x000064E8, 0x0010312B, { { 0x94, 0x5C, 0x87, 0x35, 0x35, 0x6B, 0x3E, 0xBF, 0x55, 0x3D, 0xDB, 0xD9, 0xFB, 0x97, 0x27, 0x5D } } } },
-
- { UNK_LANG, kPlatformUnknown, { 0x00004DD6, 0x0010312B, { { 0xC6, 0xF0, 0xC4, 0x2C, 0x5A, 0xD7, 0x48, 0xE4, 0x41, 0x23, 0x65, 0x6D, 0xC8, 0xC7, 0xCE, 0xF5 } } } }, // DOS + PC98
- { UNK_LANG, kPlatformUnknown, { 0x00004DD6, 0x0010315D, { { 0x4A, 0x1B, 0xA2, 0x35, 0xE1, 0x22, 0xD3, 0x7A, 0xE9, 0x69, 0x12, 0x3A, 0x9C, 0x92, 0x6F, 0x5C } } } }, // Old DOS floppy
-
- { UNK_LANG, kPlatformAmiga, { 0x00004ECC, 0x0010312B, { { 0x9A, 0x91, 0xF1, 0x9C, 0x8A, 0x96, 0x1C, 0x7B, 0xB7, 0xE4, 0xF1, 0xE9, 0x7D, 0xEF, 0x40, 0xBF } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1CharacterImageFilenamesProvider[] = {
- { UNK_LANG, kPlatformFMTowns, { 0x000000F7, 0x00003A8F, { { 0x1F, 0xAB, 0x8E, 0x5F, 0xAD, 0x76, 0x57, 0x37, 0xD7, 0x9B, 0x3F, 0x35, 0x4B, 0xA0, 0x98, 0x37 } } } },
-
- { UNK_LANG, kPlatformUnknown, { 0x000000E4, 0x00003A8F, { { 0x7A, 0x77, 0x6D, 0x26, 0xC8, 0x43, 0xCB, 0x74, 0x46, 0x2E, 0x04, 0x22, 0x89, 0x27, 0x33, 0x06 } } } }, // DOS + PC98
-
- { UNK_LANG, kPlatformAmiga, { 0x000000F0, 0x00003A8F, { { 0xC0, 0xD9, 0x8C, 0x2B, 0x65, 0x51, 0x7C, 0x13, 0x52, 0x7E, 0xF7, 0x63, 0xA6, 0xA9, 0xCE, 0x40 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1AudioTracksProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000038, 0x00000D5C, { { 0x65, 0x35, 0x2F, 0xA3, 0x93, 0x22, 0x15, 0xA0, 0xC6, 0x2B, 0x73, 0x7C, 0x3E, 0xB8, 0x7A, 0xB5 } } } },
-
- { UNK_LANG, kPlatformFMTowns, { 0x0000005D, 0x0000154E, { { 0xA7, 0x7E, 0x03, 0x0A, 0x81, 0x54, 0xD2, 0x5D, 0x7B, 0x33, 0x07, 0xBF, 0x70, 0x01, 0x4B, 0x79 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1AudioTracks2Provider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000009, 0x00000363, { { 0x16, 0xA2, 0x68, 0x21, 0x04, 0xA8, 0x39, 0x7E, 0xA1, 0x7D, 0x70, 0xFD, 0x86, 0xC7, 0x69, 0x28 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1AudioTracksIntroProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000006, 0x0000022C, { { 0x5F, 0xC9, 0xE1, 0x4B, 0x34, 0x52, 0xB9, 0xF8, 0xFF, 0x37, 0x8B, 0xF4, 0xEF, 0x5E, 0xC5, 0xDA } } } }, // floppy + demo
- { UNK_LANG, kPlatformUnknown, { 0x0000000C, 0x00000458, { { 0xEB, 0xB3, 0x96, 0xA5, 0x07, 0xE6, 0x11, 0x58, 0xDB, 0x3F, 0x34, 0x30, 0xFB, 0x7B, 0x92, 0xC8 } } } }, // CD
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1ItemNamesProvider[] = {
- { EN_ANY, kPlatformDOS, { 0x00000468, 0x00018B13, { { 0xCE, 0xFE, 0x19, 0x5D, 0x3F, 0xD7, 0x2A, 0xF6, 0xD0, 0xC5, 0xBC, 0x17, 0x6A, 0x52, 0xDB, 0xFE } } } },
-
- { FR_FRA, kPlatformDOS, { 0x00000506, 0x0001C3CC, { { 0x46, 0xD4, 0x19, 0x04, 0x2A, 0x46, 0xCD, 0x63, 0x41, 0x5A, 0x8E, 0xA8, 0x00, 0xDD, 0x02, 0x77 } } } },
-
- { DE_DEU, kPlatformDOS, { 0x00000512, 0x0001DD2C, { { 0x5D, 0xB0, 0x6B, 0x8E, 0x9C, 0x70, 0x09, 0x90, 0x3C, 0xC6, 0x58, 0x1F, 0x71, 0x24, 0x76, 0x56 } } } },
-
- { IT_ITA, kPlatformDOS, { 0x00000591, 0x0001F869, { { 0x4D, 0xD7, 0x66, 0xBB, 0x9A, 0xD8, 0x79, 0x1E, 0x92, 0x2B, 0xE5, 0xC2, 0x0F, 0x02, 0x0B, 0x35 } } } }, // floppy
- { IT_ITA, kPlatformDOS, { 0x00000506, 0x0001C1D9, { { 0xF2, 0x2D, 0x18, 0x13, 0x61, 0xFB, 0x57, 0x93, 0x5C, 0xDC, 0x79, 0x44, 0x96, 0x01, 0xA6, 0x90 } } } }, // (fan) CD
-
- { ES_ESP, kPlatformDOS, { 0x00000530, 0x0001D90A, { { 0x52, 0xFB, 0xA8, 0x3F, 0xA3, 0x6F, 0xC2, 0x67, 0x55, 0x9F, 0x66, 0x9F, 0xFD, 0x79, 0x44, 0xDF } } } },
-
- { RU_RUS, kPlatformDOS, { 0x000004AE, 0x00011888, { { 0x6F, 0x4D, 0xBE, 0xC8, 0xAE, 0x7C, 0x12, 0x3E, 0x69, 0x0B, 0x39, 0xCB, 0x4D, 0x4B, 0xA8, 0x3A } } } }, // floppy
-
- { EN_ANY, kPlatformAmiga, { 0x00000380, 0x00012960, { { 0x2D, 0x81, 0xCF, 0x7A, 0x9D, 0x71, 0x83, 0xB7, 0xE5, 0x00, 0xB0, 0x6E, 0x25, 0x94, 0xCB, 0xA4 } } } },
- { DE_DEU, kPlatformAmiga, { 0x000003E5, 0x0001607D, { { 0x6D, 0xBE, 0xAD, 0xE5, 0xD1, 0x41, 0x6C, 0x42, 0x71, 0x79, 0x9C, 0x78, 0x93, 0x84, 0xC8, 0x11 } } } },
-
- { EN_ANY, kPlatformFMTowns, { 0x00000505, 0x00018B13, { { 0x62, 0x76, 0x84, 0x5D, 0x8D, 0xBA, 0x23, 0xC5, 0x67, 0x26, 0x22, 0xBD, 0xBE, 0x81, 0x2D, 0xFF } } } },
- { JA_JPN, kPlatformFMTowns, { 0x00000587, 0x000247A1, { { 0xE8, 0xCA, 0x1E, 0x34, 0x05, 0xE5, 0x08, 0xCA, 0xA7, 0xFE, 0x55, 0xCB, 0x75, 0xD0, 0xA7, 0x19 } } } },
-
- { JA_JPN, kPlatformPC98, { 0x000004CF, 0x000247A1, { { 0xBE, 0x80, 0x3F, 0x10, 0xF7, 0x3A, 0x85, 0xD1, 0xE8, 0x24, 0xE6, 0x4E, 0x8F, 0x17, 0xC9, 0x2E } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1TakenStringsProvider[] = {
- { EN_ANY, kPlatformDOS, { 0x00000010, 0x000004C2, { { 0x08, 0xC0, 0x66, 0xB1, 0x45, 0x04, 0x78, 0xF9, 0xAF, 0x0F, 0x52, 0xC8, 0x0E, 0x0C, 0x69, 0x86 } } } },
-
- { FR_FRA, kPlatformDOS, { 0x0000001E, 0x000008FA, { { 0xC9, 0xCC, 0x2E, 0x0B, 0xE4, 0xE0, 0x44, 0xBD, 0xC2, 0x10, 0x09, 0xA3, 0x36, 0xB1, 0x5D, 0x1C } } } }, // floppy
- { FR_FRA, kPlatformDOS, { 0x0000000F, 0x0000047D, { { 0xE8, 0xB5, 0x15, 0xD5, 0x96, 0x81, 0xD2, 0x84, 0xAB, 0x33, 0xC1, 0x1C, 0x47, 0x1B, 0xFE, 0xDB } } } }, // CD
-
- { DE_DEU, kPlatformDOS, { 0x0000001C, 0x000009C0, { { 0xA8, 0x64, 0xDD, 0x9D, 0x91, 0x42, 0x04, 0x26, 0xD0, 0x80, 0x40, 0xED, 0x08, 0x51, 0xC9, 0xBB } } } },
-
- { IT_ITA, kPlatformDOS, { 0x00000014, 0x00000588, { { 0x5B, 0x75, 0xAE, 0xD7, 0x50, 0x6C, 0x3E, 0x65, 0x5C, 0xF8, 0x84, 0x34, 0x48, 0x58, 0x0E, 0x6E } } } }, // floppy
- { IT_ITA, kPlatformDOS, { 0x0000000F, 0x000002F0, { { 0x37, 0x22, 0x62, 0xE4, 0x1B, 0x1F, 0xD6, 0x9E, 0x94, 0xA3, 0x41, 0x00, 0xD5, 0x29, 0x28, 0x09 } } } }, // (fan) CD
-
- { ES_ESP, kPlatformDOS, { 0x00000014, 0x000005D8, { { 0xD6, 0x00, 0x90, 0x6A, 0x75, 0x3B, 0xF1, 0xFE, 0xF4, 0x3E, 0x0E, 0x1D, 0x39, 0xEB, 0x2D, 0xC8 } } } },
-
- { RU_RUS, kPlatformDOS, { 0x00000010, 0x00000262, { { 0x1E, 0x90, 0x20, 0xC8, 0xD3, 0x08, 0x53, 0x4F, 0x28, 0x95, 0x6A, 0xA4, 0x14, 0x37, 0x05, 0xF0 } } } },
-
- { EN_ANY, kPlatformAmiga, { 0x00000008, 0x00000261, { { 0x93, 0x5B, 0x79, 0xE8, 0x89, 0x8E, 0xB5, 0x37, 0x39, 0x2A, 0xB0, 0x04, 0x98, 0x80, 0x5A, 0x4E } } } },
- { DE_DEU, kPlatformAmiga, { 0x0000000E, 0x000004E0, { { 0x52, 0x4D, 0x74, 0x91, 0x70, 0x0D, 0x4C, 0x40, 0x5C, 0x7E, 0xBA, 0xDA, 0x24, 0x49, 0xF3, 0x1A } } } },
-
- { EN_ANY, kPlatformFMTowns, { 0x0000001C, 0x00000AED, { { 0x32, 0xD2, 0x87, 0x67, 0x3D, 0x01, 0x50, 0xF3, 0xFA, 0x19, 0x7A, 0xB0, 0xF8, 0x6F, 0x8A, 0x07 } } } },
- { JA_JPN, kPlatformFMTowns, { 0x0000001F, 0x00000EB7, { { 0x7F, 0x8C, 0xFF, 0x35, 0x30, 0x71, 0x9A, 0x78, 0xCC, 0x07, 0x11, 0x86, 0xE3, 0x0D, 0x16, 0xDF } } } },
-
- { JA_JPN, kPlatformPC98, { 0x00000016, 0x00000C56, { { 0x97, 0xF0, 0x57, 0xCC, 0x03, 0x06, 0x41, 0xDC, 0xFC, 0xD5, 0xA2, 0x35, 0x0C, 0x71, 0x37, 0xCC } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1PlacedStringsProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x00000009, 0x000002B7, { { 0xE7, 0xCF, 0x8A, 0x19, 0xEF, 0x98, 0xE5, 0x74, 0x46, 0x46, 0x47, 0x65, 0xB6, 0x81, 0x70, 0x0A } } } },
-
- { JA_JPN, kPlatformUnknown, { 0x0000000D, 0x0000074C, { { 0x0E, 0x1C, 0x1F, 0xD2, 0xCF, 0xBF, 0x40, 0xE1, 0x59, 0x0F, 0x1B, 0x46, 0xED, 0x8B, 0x96, 0x8E } } } },
-
- { FR_FRA, kPlatformDOS, { 0x00000011, 0x00000545, { { 0x05, 0xEF, 0x74, 0x54, 0x06, 0xB7, 0x64, 0x47, 0x21, 0x56, 0x55, 0x74, 0x70, 0x2D, 0xA8, 0x23 } } } },
-
- { DE_DEU, kPlatformUnknown, { 0x0000000B, 0x00000389, { { 0xB9, 0x74, 0xBE, 0x63, 0xB4, 0xA4, 0x8A, 0x04, 0xD9, 0x50, 0x73, 0xB7, 0x01, 0x9E, 0x77, 0xD3 } } } },
-
- { IT_ITA, kPlatformDOS, { 0x0000000D, 0x0000040D, { { 0x9C, 0x71, 0x53, 0x35, 0xC3, 0xE8, 0x46, 0xB9, 0xD2, 0xFA, 0x1C, 0x8C, 0xC3, 0xFF, 0xBC, 0x1F } } } }, // floppy
- { IT_ITA, kPlatformDOS, { 0x00000011, 0x000003B8, { { 0xC8, 0xA6, 0xE4, 0x8A, 0xF7, 0x4C, 0x3F, 0xA6, 0x24, 0x7F, 0xEF, 0xE4, 0x63, 0x8B, 0x72, 0xF3 } } } }, // (fan) CD
-
- { ES_ESP, kPlatformDOS, { 0x0000000D, 0x00000439, { { 0x57, 0xAE, 0x1C, 0xC1, 0xF5, 0xE8, 0x5B, 0x9E, 0x90, 0x02, 0xB9, 0x8D, 0x86, 0x38, 0xFB, 0xA8 } } } },
-
- { RU_RUS, kPlatformDOS, { 0x00000009, 0x00000203, { { 0x7D, 0xAE, 0x67, 0x94, 0x8E, 0x73, 0x35, 0xC1, 0x11, 0xB4, 0x55, 0x6E, 0x92, 0x25, 0x39, 0xE4 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1DroppedStringsProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x0000000A, 0x0000033C, { { 0x96, 0x63, 0xFD, 0x73, 0x71, 0xCC, 0x62, 0x59, 0x86, 0x02, 0x47, 0x55, 0x82, 0xF8, 0x5E, 0x1F } } } },
-
- { JA_JPN, kPlatformUnknown, { 0x0000000B, 0x0000059F, { { 0xDD, 0x5E, 0x51, 0x7E, 0xD9, 0xFC, 0xCD, 0xAD, 0x6B, 0x93, 0x71, 0xBE, 0x83, 0x63, 0x3F, 0x88 } } } },
-
- { FR_FRA, kPlatformDOS, { 0x00000011, 0x00000579, { { 0x3D, 0x0C, 0x3C, 0xAD, 0x2E, 0xE3, 0x7A, 0x5A, 0x4A, 0x21, 0x1C, 0x96, 0xC5, 0x5A, 0xA7, 0x9E } } } },
-
- { DE_DEU, kPlatformUnknown, { 0x00000011, 0x00000612, { { 0xEC, 0xCD, 0x99, 0x58, 0xF7, 0x08, 0x92, 0x43, 0x95, 0x10, 0x6B, 0xDD, 0x61, 0xF7, 0x5C, 0xA4 } } } },
-
- { IT_ITA, kPlatformDOS, { 0x0000000B, 0x0000031B, { { 0x32, 0x0C, 0xCD, 0x83, 0xF6, 0x97, 0xC8, 0x76, 0x57, 0x6B, 0x7C, 0xAD, 0x51, 0xEB, 0x91, 0x1F } } } }, // floppy
- { IT_ITA, kPlatformDOS, { 0x00000011, 0x000003B8, { { 0xC8, 0xA6, 0xE4, 0x8A, 0xF7, 0x4C, 0x3F, 0xA6, 0x24, 0x7F, 0xEF, 0xE4, 0x63, 0x8B, 0x72, 0xF3 } } } }, // (fan) CD
-
- { ES_ESP, kPlatformDOS, { 0x00000008, 0x00000261, { { 0x1D, 0xB5, 0xFB, 0x23, 0x94, 0xA7, 0x86, 0x7A, 0xAC, 0x53, 0xDA, 0x6F, 0xCC, 0x41, 0x0F, 0xD7 } } } },
-
- { RU_RUS, kPlatformDOS, { 0x0000000A, 0x000001F5, { { 0xAA, 0x21, 0x88, 0x6D, 0xD0, 0xAB, 0x5C, 0x15, 0x7F, 0xAD, 0x0E, 0x3B, 0x2F, 0x17, 0xBF, 0xAD } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1NoDropStringsProvider[] = {
- { EN_ANY, kPlatformDOS, { 0x00000047, 0x00001881, { { 0xEF, 0x81, 0x2B, 0x8F, 0x06, 0x0C, 0xA6, 0xBA, 0x50, 0x9C, 0x99, 0x40, 0x53, 0xFD, 0xC1, 0x55 } } } },
-
- { FR_FRA, kPlatformDOS, { 0x0000004C, 0x00001B39, { { 0xFF, 0xD5, 0x5D, 0x1C, 0xF1, 0x8A, 0xA4, 0x21, 0xB1, 0x56, 0x2B, 0xAC, 0x9F, 0x40, 0x30, 0x53 } } } },
-
- { DE_DEU, kPlatformDOS, { 0x0000004C, 0x00001AFF, { { 0xE5, 0x05, 0x79, 0x10, 0x91, 0x95, 0x64, 0x40, 0xB2, 0x73, 0x39, 0xFA, 0x50, 0x8D, 0xCE, 0x8A } } } },
-
- { IT_ITA, kPlatformDOS, { 0x00000045, 0x00001850, { { 0x50, 0x34, 0x82, 0xA9, 0x28, 0xDE, 0x44, 0xB3, 0x2D, 0x59, 0x0B, 0x7F, 0xCE, 0x42, 0x1F, 0x73 } } } }, // floppy
- { IT_ITA, kPlatformDOS, { 0x0000004C, 0x00001650, { { 0x42, 0x7A, 0x04, 0xCD, 0x69, 0xB1, 0x06, 0x9A, 0xD8, 0x7E, 0x7A, 0x14, 0x5B, 0x1C, 0x70, 0xB8 } } } }, // (fan) CD
-
- { ES_ESP, kPlatformDOS, { 0x0000003D, 0x000015FA, { { 0x87, 0x2E, 0xE6, 0x8A, 0xF1, 0xC9, 0xC9, 0xEC, 0xD3, 0x2C, 0x25, 0x7E, 0x36, 0x02, 0xF7, 0xAC } } } },
-
- { EN_ANY, kPlatformAmiga, { 0x00000048, 0x00001881, { { 0x69, 0xA8, 0x0B, 0x47, 0xFD, 0xA0, 0x94, 0x12, 0x82, 0x1D, 0xE0, 0x9C, 0xB1, 0x10, 0x6D, 0x11 } } } },
- { DE_DEU, kPlatformAmiga, { 0x0000004D, 0x00001AFF, { { 0xF8, 0x83, 0x2E, 0x08, 0x88, 0x7B, 0x72, 0x7F, 0x71, 0xD4, 0x05, 0xF3, 0x1A, 0x78, 0xF1, 0x9D } } } },
-
- { EN_ANY, kPlatformFMTowns, { 0x0000007A, 0x0000323C, { { 0x00, 0x7F, 0x8E, 0x2E, 0x7B, 0xFC, 0x06, 0x0B, 0x7A, 0x7F, 0x17, 0xAF, 0x47, 0x82, 0xC1, 0x16 } } } },
- { JA_JPN, kPlatformFMTowns, { 0x00000061, 0x00002E9C, { { 0x8A, 0xFA, 0x43, 0x26, 0x68, 0x6D, 0x5A, 0x59, 0x0C, 0x9E, 0xCB, 0x28, 0x43, 0x33, 0x54, 0x49 } } } },
-
- { JA_JPN, kPlatformPC98, { 0x00000042, 0x000025C2, { { 0x6F, 0x34, 0x59, 0x17, 0x22, 0xCE, 0x1A, 0x82, 0x18, 0xE3, 0x9F, 0x86, 0x84, 0xF1, 0x8E, 0x0C } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1PutDownStringProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x00000026, 0x00000D27, { { 0x83, 0x09, 0x51, 0xD3, 0x94, 0x2B, 0xB1, 0x8B, 0x8B, 0x16, 0xA9, 0xEB, 0xE8, 0xA2, 0x4F, 0x0C } } } },
-
- { JA_JPN, kPlatformUnknown, { 0x00000029, 0x0000187D, { { 0xDE, 0xEE, 0x66, 0x88, 0x57, 0xF5, 0xF9, 0x2E, 0xD2, 0x14, 0xF5, 0x83, 0xA0, 0x0D, 0x96, 0x86 } } } },
-
- { FR_FRA, kPlatformDOS, { 0x0000002E, 0x0000101D, { { 0xBC, 0xEA, 0x6C, 0x1F, 0x31, 0xCF, 0x30, 0x26, 0x2D, 0x24, 0xC5, 0xEA, 0x97, 0x49, 0xDC, 0x4C } } } },
-
- { DE_DEU, kPlatformUnknown, { 0x00000028, 0x00000E7E, { { 0x26, 0x93, 0x76, 0x37, 0x41, 0x2E, 0xF3, 0xED, 0xF5, 0x7B, 0xA7, 0xEB, 0x80, 0x61, 0x3B, 0x84 } } } },
-
- { IT_ITA, kPlatformDOS, { 0x00000034, 0x0000131D, { { 0x36, 0x87, 0x4D, 0x73, 0x2A, 0x67, 0xBA, 0xCE, 0xCB, 0x33, 0x3C, 0x10, 0xCC, 0x3E, 0x7E, 0xAD } } } }, // floppy
- { IT_ITA, kPlatformDOS, { 0x0000002E, 0x00000EB2, { { 0x14, 0x08, 0xE6, 0xD1, 0x54, 0x76, 0x2A, 0x9E, 0xBE, 0x5A, 0x15, 0xEB, 0x52, 0x01, 0x52, 0x97 } } } }, // (fan) CD
-
- { ES_ESP, kPlatformDOS, { 0x0000002D, 0x00001052, { { 0x12, 0x0A, 0x23, 0x11, 0xDF, 0x8A, 0x59, 0xD4, 0xF2, 0xCA, 0xA5, 0xA7, 0x76, 0x1B, 0x54, 0xB6 } } } },
-
- { RU_RUS, kPlatformDOS, { 0x00000024, 0x0000099F, { { 0x05, 0xD7, 0xB8, 0x32, 0x95, 0x93, 0x29, 0x5F, 0xF3, 0x1A, 0xF0, 0x2E, 0xBA, 0x3A, 0x0D, 0x27 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1WaitAmuletStringProvider[] = {
- { EN_ANY, kPlatformDOS, { 0x0000003D, 0x0000150D, { { 0x11, 0xC8, 0x7E, 0x83, 0x7A, 0xC3, 0x5D, 0xD9, 0x72, 0xFC, 0x75, 0xCB, 0x57, 0xE9, 0xF1, 0x36 } } } },
-
- { JA_JPN, kPlatformUnknown, { 0x00000029, 0x000017A7, { { 0xFD, 0xA3, 0xAD, 0x24, 0x16, 0x49, 0x22, 0x6F, 0x52, 0xE9, 0x50, 0x11, 0x51, 0x38, 0xCA, 0xE0 } } } },
-
- { FR_FRA, kPlatformDOS, { 0x00000049, 0x00001ADD, { { 0xFD, 0xCF, 0x9C, 0xAD, 0xA2, 0xAA, 0x74, 0x11, 0x8E, 0x89, 0x02, 0xCB, 0x2B, 0x5B, 0x2B, 0x1C } } } },
-
- { DE_DEU, kPlatformUnknown, { 0x00000048, 0x000019CF, { { 0x82, 0xDD, 0xBD, 0xA3, 0xD0, 0xE0, 0x19, 0xC0, 0x6D, 0xC5, 0xEE, 0x7A, 0x0B, 0x49, 0x06, 0xCE } } } },
-
- { IT_ITA, kPlatformDOS, { 0x0000004A, 0x00001B4C, { { 0x38, 0x26, 0x54, 0x10, 0x3D, 0x32, 0xCD, 0xAE, 0x3F, 0x96, 0xFE, 0x6F, 0x4A, 0x94, 0x72, 0xB0 } } } }, // floppy
- { IT_ITA, kPlatformDOS, { 0x00000049, 0x0000184F, { { 0x11, 0x42, 0xB2, 0xD6, 0x76, 0xEA, 0xF9, 0xCA, 0x46, 0xE4, 0xA6, 0x35, 0xE8, 0xB9, 0x8B, 0xE9 } } } }, // (fan) CD
-
- { ES_ESP, kPlatformDOS, { 0x00000042, 0x000017FD, { { 0x0A, 0x8A, 0x7E, 0x9A, 0x5F, 0x4A, 0x35, 0x06, 0x4D, 0x6B, 0xBF, 0x29, 0x1B, 0xAD, 0xD8, 0x37 } } } },
-
- { RU_RUS, kPlatformDOS, { 0x0000003C, 0x00000EF1, { { 0xC1, 0x0A, 0xFA, 0xBB, 0x65, 0xC3, 0x31, 0xC9, 0x80, 0x9B, 0x0C, 0x16, 0xED, 0xBF, 0x47, 0xFA } } } },
-
- { EN_ANY, kPlatformUnknown, { 0x0000003E, 0x0000150D, { { 0xA8, 0xBF, 0x99, 0x9B, 0xC1, 0x36, 0x21, 0x47, 0x6D, 0x99, 0x4F, 0x34, 0xE6, 0x61, 0x47, 0xFD } } } }, // Amiga + FM-TOWNS
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1BlackJewelStringProvider[] = {
- { EN_ANY, kPlatformDOS, { 0x00000023, 0x00000B73, { { 0xBE, 0xE9, 0xBD, 0x65, 0xB9, 0xB1, 0xCD, 0xF0, 0x45, 0x03, 0x01, 0x70, 0xBE, 0xD0, 0x0F, 0x80 } } } },
-
- { JA_JPN, kPlatformUnknown, { 0x00000035, 0x0000205F, { { 0x33, 0xD6, 0x19, 0xEE, 0xEA, 0xDD, 0x9F, 0xB5, 0x77, 0x0C, 0x8E, 0x84, 0x5E, 0x61, 0x22, 0x3E } } } },
-
- { FR_FRA, kPlatformDOS, { 0x0000002B, 0x00000F11, { { 0x68, 0xA0, 0xA3, 0xA0, 0xB6, 0xD1, 0x40, 0x22, 0xB4, 0x10, 0x3D, 0x5A, 0x7F, 0x1F, 0x4B, 0xE7 } } } },
-
- { DE_DEU, kPlatformUnknown, { 0x00000031, 0x0000113B, { { 0xA5, 0x00, 0xD1, 0xDC, 0x25, 0x99, 0x3E, 0x6B, 0xFF, 0xC8, 0x6C, 0xDA, 0xA4, 0xCF, 0x51, 0xD7 } } } },
-
- { IT_ITA, kPlatformDOS, { 0x00000022, 0x00000B6E, { { 0xAE, 0xA0, 0xDF, 0x07, 0xDD, 0x88, 0x98, 0x6B, 0xDD, 0x9E, 0x2E, 0xC0, 0xBD, 0x45, 0x2E, 0x2B } } } }, // floppy
- { IT_ITA, kPlatformDOS, { 0x0000002B, 0x00000D6D, { { 0x08, 0x5E, 0x1F, 0xA8, 0x8F, 0x1F, 0x6A, 0xE0, 0xF3, 0x49, 0xEF, 0x44, 0xA8, 0xCD, 0xDE, 0x45 } } } }, // (fan) CD
-
- { ES_ESP, kPlatformDOS, { 0x00000025, 0x00000CF6, { { 0x4B, 0x13, 0x39, 0xCB, 0x3F, 0x44, 0x18, 0x46, 0x43, 0xDB, 0x94, 0xC5, 0x3E, 0x6B, 0xC4, 0x74 } } } },
-
- { RU_RUS, kPlatformDOS, { 0x00000021, 0x000007FF, { { 0x3F, 0x26, 0xB4, 0xB4, 0x11, 0x0C, 0xEF, 0xC0, 0x6A, 0xD1, 0xCC, 0x0E, 0x68, 0x7D, 0xA5, 0x1A } } } },
-
- { EN_ANY, kPlatformUnknown, { 0x00000024, 0x00000B73, { { 0x8D, 0x57, 0x5F, 0x93, 0x85, 0x75, 0xF2, 0xD8, 0x36, 0xC2, 0x7C, 0x0E, 0x3B, 0xEA, 0xE0, 0x0A } } } }, // Amiga + FM-TOWNS
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1PoisonGoneStringProvider[] = {
- { EN_ANY, kPlatformDOS, { 0x0000002D, 0x00000F59, { { 0x9A, 0x88, 0x07, 0x5A, 0x9C, 0xC3, 0x7B, 0xB0, 0x79, 0x69, 0xE0, 0x84, 0x11, 0x9B, 0x82, 0xCD } } } },
-
- { FR_FRA, kPlatformDOS, { 0x00000059, 0x00001E91, { { 0xDA, 0x9C, 0xC4, 0x7A, 0x79, 0x73, 0x60, 0xBF, 0x31, 0xF8, 0x8F, 0xAF, 0xC1, 0x4D, 0x25, 0xEC } } } }, // floppy
- { FR_FRA, kPlatformDOS, { 0x0000002A, 0x00000EAA, { { 0x0B, 0x4E, 0xDF, 0x03, 0x9E, 0x64, 0x3B, 0x13, 0x10, 0x6A, 0xF9, 0x4C, 0x66, 0x0D, 0x09, 0xC5 } } } }, // (fan) CD
-
- { DE_DEU, kPlatformDOS, { 0x00000036, 0x00001324, { { 0x30, 0x67, 0xEE, 0x7C, 0x4D, 0x36, 0xFE, 0x46, 0x05, 0x44, 0x23, 0xA1, 0xB4, 0x07, 0x16, 0xB5 } } } },
-
- { IT_ITA, kPlatformDOS, { 0x00000034, 0x0000128D, { { 0x4E, 0x54, 0xFE, 0x58, 0x7F, 0x15, 0xFA, 0xC1, 0x50, 0xF8, 0x47, 0x29, 0x15, 0xE8, 0x83, 0xC7 } } } }, // floppy
- { IT_ITA, kPlatformDOS, { 0x0000002A, 0x00000DFD, { { 0x57, 0xDC, 0xE0, 0x45, 0x2E, 0x89, 0x77, 0x7F, 0x4B, 0x41, 0xCF, 0x4A, 0xFE, 0x0B, 0xAF, 0xC1 } } } }, // (fan) CD
-
- { ES_ESP, kPlatformDOS, { 0x00000033, 0x0000127E, { { 0x67, 0xEB, 0xD3, 0x00, 0xF8, 0x4F, 0xF1, 0x79, 0x48, 0xE6, 0x9C, 0xB2, 0xA7, 0xCF, 0x76, 0x07 } } } },
-
- { RU_RUS, kPlatformDOS, { 0x00000027, 0x00000952, { { 0x36, 0x64, 0x30, 0x1C, 0x5A, 0xC0, 0x0D, 0x73, 0xE5, 0xA6, 0x2F, 0xD8, 0x64, 0x98, 0x81, 0x56 } } } },
-
- { EN_ANY, kPlatformAmiga, { 0x0000002E, 0x00000F59, { { 0xAD, 0x95, 0xF3, 0xA7, 0xBB, 0x04, 0x08, 0x77, 0xD0, 0x71, 0xFC, 0x8B, 0x33, 0x2A, 0x6D, 0xD3 } } } },
- { DE_DEU, kPlatformAmiga, { 0x00000037, 0x00001324, { { 0xB3, 0xE6, 0x0A, 0x49, 0x37, 0x73, 0x3C, 0xAF, 0x78, 0x9E, 0x7D, 0x13, 0x75, 0xAE, 0xA8, 0x89 } } } },
-
- { EN_ANY, kPlatformFMTowns, { 0x0000003C, 0x000013B4, { { 0xE9, 0x54, 0xF1, 0xEC, 0x64, 0x5A, 0xEB, 0xC7, 0xAA, 0x7E, 0xA2, 0x9F, 0xE8, 0xFB, 0x3A, 0x82 } } } },
- { JA_JPN, kPlatformFMTowns, { 0x0000003D, 0x000017D1, { { 0x7C, 0x93, 0x62, 0x32, 0x47, 0xB9, 0x78, 0x03, 0x86, 0x8D, 0x99, 0xB8, 0x86, 0x68, 0xEF, 0x3A } } } },
-
- { JA_JPN, kPlatformPC98, { 0x00000016, 0x00000B60, { { 0xFF, 0x8C, 0xC0, 0x1B, 0x2C, 0x0C, 0x23, 0x89, 0x93, 0x79, 0xC5, 0xCD, 0xAC, 0xF9, 0xEA, 0xA7 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1HealingTipStringProvider[] = {
- { EN_ANY, kPlatformDOS, { 0x0000002D, 0x00000F04, { { 0xC0, 0xC7, 0x0C, 0x3D, 0xA7, 0x62, 0x14, 0xFB, 0xE8, 0x52, 0x05, 0x0D, 0xFE, 0xF6, 0xC7, 0x28 } } } },
-
- { JA_JPN, kPlatformUnknown, { 0x0000002B, 0x00001949, { { 0xC7, 0xE3, 0x0A, 0x6B, 0x8F, 0xCA, 0xBC, 0x3A, 0xDC, 0x76, 0x48, 0xD3, 0x8B, 0xD9, 0x44, 0x2E } } } },
-
- { FR_FRA, kPlatformDOS, { 0x00000036, 0x0000132C, { { 0x86, 0x65, 0x80, 0x10, 0x40, 0x32, 0x6C, 0x2F, 0x5E, 0x76, 0xFB, 0xDC, 0x19, 0x33, 0x02, 0x3C } } } },
-
- { DE_DEU, kPlatformUnknown, { 0x0000003C, 0x00001537, { { 0x78, 0xC2, 0x76, 0x24, 0x0D, 0x1F, 0xC0, 0x13, 0x4E, 0x34, 0x0A, 0x50, 0x4C, 0x35, 0x7E, 0xB1 } } } },
-
- { IT_ITA, kPlatformDOS, { 0x0000003F, 0x0000170E, { { 0x0B, 0x37, 0xA4, 0x5E, 0x05, 0x4A, 0x96, 0x1F, 0x2E, 0x02, 0x43, 0xBE, 0xCC, 0xF9, 0x21, 0x5E } } } }, // floppy
- { IT_ITA, kPlatformDOS, { 0x00000036, 0x00001364, { { 0x59, 0x70, 0x13, 0x8D, 0x93, 0x9C, 0x1B, 0x69, 0x2F, 0x13, 0x9A, 0xB2, 0x4C, 0x97, 0x7E, 0x95 } } } }, // (fan) CD
-
- { ES_ESP, kPlatformDOS, { 0x00000028, 0x00000E0F, { { 0x3E, 0x40, 0xCA, 0x2A, 0x5F, 0xFE, 0x74, 0x30, 0x8C, 0x31, 0x41, 0x09, 0xBD, 0xFD, 0xA3, 0x7E } } } },
-
- { RU_RUS, kPlatformDOS, { 0x00000026, 0x000008EE, { { 0x7C, 0xC0, 0x62, 0x39, 0x66, 0x9E, 0x63, 0xCD, 0x21, 0x3D, 0x72, 0x91, 0xB8, 0xB9, 0xB6, 0x92 } } } },
-
- { EN_ANY, kPlatformUnknown, { 0x0000002E, 0x00000F04, { { 0x95, 0x39, 0x36, 0x89, 0xC4, 0x60, 0x7C, 0x0C, 0xDC, 0x06, 0xF7, 0x86, 0x1A, 0xF7, 0x93, 0x2B } } } }, // Amiga + FM-TOWNS
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1WispJewelStringsProvider[] = {
- { EN_ANY, kPlatformDOS, { 0x00000053, 0x00001C62, { { 0x9A, 0xF1, 0xCC, 0xB3, 0x09, 0xF0, 0x9C, 0x33, 0x0E, 0xF0, 0xE3, 0xF8, 0x24, 0x63, 0x40, 0x95 } } } }, // floppy
- { EN_ANY, kPlatformDOS, { 0x00000052, 0x00001CE8, { { 0x6D, 0x69, 0x6D, 0x15, 0x4F, 0xF1, 0xD8, 0xA6, 0x53, 0x9F, 0xE3, 0x77, 0x75, 0x25, 0xE7, 0x93 } } } }, // CD
-
- { FR_FRA, kPlatformDOS, { 0x0000005B, 0x00001E9A, { { 0xC1, 0x26, 0xF3, 0x64, 0x18, 0x7D, 0xF7, 0x5A, 0xB6, 0x2B, 0x44, 0x57, 0xDC, 0x60, 0x20, 0x3C } } } }, // floppy
- { FR_FRA, kPlatformDOS, { 0x00000050, 0x00001B8D, { { 0x9A, 0xCE, 0x1D, 0x62, 0xFA, 0xC6, 0x73, 0x80, 0x02, 0x0A, 0x61, 0x24, 0xDC, 0x2A, 0xEF, 0xE6 } } } }, // CD
-
- { DE_DEU, kPlatformDOS, { 0x00000061, 0x00002184, { { 0x4B, 0x20, 0xD7, 0xE6, 0x00, 0xBF, 0x32, 0x40, 0xB7, 0xD0, 0xD6, 0xEC, 0x9C, 0x0F, 0x0B, 0xF0 } } } }, // floppy
- { DE_DEU, kPlatformDOS, { 0x00000058, 0x00001E88, { { 0x0E, 0x14, 0xD1, 0xF3, 0x03, 0x29, 0x48, 0x1D, 0x32, 0x2A, 0xBB, 0x0B, 0x48, 0xB3, 0x2E, 0x47 } } } }, // CD
-
- { IT_ITA, kPlatformDOS, { 0x00000074, 0x00002945, { { 0x17, 0x8B, 0x7E, 0xD9, 0x04, 0x7C, 0xD4, 0x9D, 0xCE, 0xF0, 0x79, 0x00, 0xAC, 0x82, 0x7C, 0x82 } } } }, // floppy
- { IT_ITA, kPlatformDOS, { 0x00000050, 0x00001A10, { { 0xFB, 0x79, 0x74, 0x14, 0xB9, 0x75, 0x4F, 0x44, 0x83, 0xB1, 0xD4, 0xBE, 0x17, 0x0F, 0xC4, 0xD6 } } } }, // (fan) CD
-
- { ES_ESP, kPlatformDOS, { 0x0000005F, 0x0000211E, { { 0xE7, 0x0A, 0x85, 0x25, 0x44, 0x41, 0x47, 0x3B, 0x7A, 0xA6, 0x62, 0xAE, 0xAE, 0xD5, 0x92, 0x45 } } } },
-
- // only one of two strings translated in the fan translation
- { RU_RUS, kPlatformDOS, { 0x00000053, 0x0000191F, { { 0x14, 0xEB, 0x38, 0x54, 0x40, 0x40, 0x04, 0xA6, 0xA0, 0xFE, 0xDB, 0xD0, 0x8C, 0xA6, 0x1F, 0x55 } } } },
-
- { EN_ANY, kPlatformAmiga, { 0x00000056, 0x00001C62, { { 0x43, 0x28, 0x3C, 0x0F, 0x78, 0x52, 0xE7, 0x2A, 0x77, 0xF3, 0x21, 0x5A, 0xF0, 0xFC, 0x9E, 0xF8 } } } },
- { DE_DEU, kPlatformAmiga, { 0x00000063, 0x00002184, { { 0x6B, 0xDC, 0x6B, 0xCF, 0xD4, 0xC7, 0x2A, 0x9A, 0x2E, 0x34, 0x71, 0x4E, 0xB7, 0xF6, 0xAF, 0xDA } } } },
-
- { EN_ANY, kPlatformFMTowns, { 0x00000075, 0x00002B94, { { 0xA5, 0x4C, 0xBF, 0x5F, 0xD3, 0xF8, 0x6D, 0xE4, 0xB4, 0x8E, 0x64, 0x84, 0xD9, 0xBA, 0x2B, 0x33 } } } },
- { JA_JPN, kPlatformFMTowns, { 0x00000067, 0x00002C6B, { { 0x55, 0x56, 0x6B, 0xEA, 0xEF, 0x34, 0xDA, 0x23, 0x23, 0xF4, 0x9D, 0x0F, 0xBF, 0xC3, 0x1F, 0xDA } } } },
-
- { JA_JPN, kPlatformPC98, { 0x00000037, 0x00001EDF, { { 0xA8, 0x42, 0x79, 0xEB, 0x82, 0xAF, 0x03, 0xD7, 0x03, 0xF9, 0xE0, 0x60, 0xD4, 0x87, 0xAD, 0x2E } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1MagicJewelStringsProvider[] = {
- { EN_ANY, kPlatformDOS, { 0x00000013, 0x0000069E, { { 0x7C, 0xF2, 0xEE, 0x7C, 0x8A, 0xCE, 0x5B, 0x09, 0x32, 0xDC, 0x31, 0x1F, 0x45, 0x21, 0x84, 0xFF } } } },
-
- { JA_JPN, kPlatformUnknown, { 0x0000000F, 0x0000087E, { { 0xD8, 0xF1, 0x40, 0x9D, 0x9C, 0x15, 0x9E, 0xBD, 0x69, 0xE5, 0xE1, 0x51, 0x34, 0x22, 0xF3, 0x75 } } } },
-
- { FR_FRA, kPlatformDOS, { 0x00000011, 0x000005DB, { { 0x44, 0x99, 0x35, 0x77, 0x9B, 0x3D, 0xF8, 0xAF, 0x7A, 0xA6, 0x14, 0xD0, 0x99, 0xC6, 0x80, 0x7B } } } },
-
- { DE_DEU, kPlatformUnknown, { 0x00000014, 0x000006EF, { { 0xDE, 0x77, 0xB6, 0x8C, 0x39, 0x5C, 0x6F, 0xDF, 0x7D, 0x04, 0x0F, 0x65, 0x24, 0x75, 0xED, 0x95 } } } },
-
- { IT_ITA, kPlatformDOS, { 0x0000001D, 0x00000A83, { { 0x60, 0x69, 0x18, 0x6C, 0x34, 0xB0, 0x56, 0xE3, 0x06, 0x7C, 0xB1, 0xDD, 0x26, 0x80, 0xAE, 0x30 } } } }, // floppy
- { IT_ITA, kPlatformDOS, { 0x00000011, 0x000005E4, { { 0xD5, 0x11, 0xDA, 0x40, 0x09, 0x6A, 0x5D, 0x76, 0x5C, 0x20, 0xC4, 0x43, 0x4D, 0xF3, 0x67, 0xF0 } } } }, // (fan) CD
-
- { ES_ESP, kPlatformDOS, { 0x00000011, 0x000005CD, { { 0x32, 0x2A, 0xFF, 0x9F, 0x10, 0x75, 0x6B, 0xD6, 0x46, 0xAE, 0x55, 0xD3, 0x68, 0x4F, 0xBB, 0x5A } } } },
-
- { RU_RUS, kPlatformDOS, { 0x00000012, 0x0000047D, { { 0xB1, 0xC3, 0x66, 0xBC, 0x42, 0xAD, 0x5B, 0xD8, 0xF5, 0x3D, 0xB9, 0x50, 0x77, 0x32, 0xA7, 0x15 } } } },
-
- { EN_ANY, kPlatformUnknown, { 0x00000014, 0x0000069E, { { 0x6A, 0x1C, 0x9B, 0x85, 0x61, 0xC7, 0x28, 0xA9, 0xA3, 0xF4, 0xFA, 0x47, 0x90, 0x8F, 0x06, 0xB4 } } } }, // Amiga + FM-TOWNS
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1ThePoisonStringsProvider[] = {
- { EN_ANY, kPlatformDOS, { 0x00000057, 0x00001C24, { { 0xBC, 0x31, 0x5C, 0x25, 0x50, 0x36, 0x58, 0x20, 0x55, 0xFC, 0x75, 0x47, 0x2D, 0x43, 0x73, 0x78 } } } },
-
- { FR_FRA, kPlatformDOS, { 0x00000068, 0x000022D8, { { 0x39, 0xDA, 0xB3, 0xD2, 0xDA, 0x3F, 0xAB, 0x40, 0x1A, 0x4F, 0x9D, 0x02, 0xBA, 0x37, 0xEC, 0x4D } } } },
-
- { DE_DEU, kPlatformDOS, { 0x00000072, 0x00002690, { { 0xEF, 0x62, 0x85, 0xA3, 0x8B, 0x20, 0x4B, 0x65, 0xF8, 0xE7, 0x2C, 0x02, 0x3F, 0x3F, 0x25, 0x65 } } } },
-
- { IT_ITA, kPlatformDOS, { 0x00000063, 0x000021F8, { { 0x3C, 0x2E, 0xF8, 0xAD, 0xCF, 0xB5, 0xE7, 0x2C, 0x98, 0x7A, 0xB9, 0x6F, 0x7A, 0x42, 0xE1, 0x92 } } } }, // floppy
- { IT_ITA, kPlatformDOS, { 0x00000068, 0x00002077, { { 0x5D, 0xF4, 0xF9, 0xD9, 0x87, 0x34, 0x14, 0xAB, 0xE4, 0x9A, 0x67, 0xAF, 0x18, 0x8B, 0x40, 0x98 } } } }, // (fan) CD
-
- { ES_ESP, kPlatformDOS, { 0x00000059, 0x00001DF7, { { 0x16, 0x7B, 0x5F, 0x91, 0x06, 0x5B, 0xFC, 0x9C, 0x88, 0x61, 0xCC, 0x1B, 0x52, 0x4F, 0x91, 0xC5 } } } },
-
- { RU_RUS, kPlatformDOS, { 0x00000052, 0x0000136F, { { 0xEF, 0xD2, 0xA0, 0x5F, 0xD5, 0xE6, 0x77, 0x96, 0xFA, 0xC5, 0x60, 0x7C, 0xB7, 0xA8, 0x7C, 0x7A } } } },
-
- { EN_ANY, kPlatformAmiga, { 0x00000058, 0x00001C24, { { 0xBA, 0x1F, 0xBD, 0x5C, 0x85, 0x3D, 0x3C, 0x92, 0xD1, 0x13, 0xF3, 0x40, 0x2E, 0xBB, 0x1C, 0xE2 } } } },
- { DE_DEU, kPlatformAmiga, { 0x00000073, 0x00002690, { { 0x44, 0xAE, 0xC9, 0xFD, 0x9F, 0x8E, 0x1B, 0xDD, 0x3F, 0xE4, 0x4D, 0x4B, 0x5A, 0x13, 0xE5, 0x99 } } } },
-
- { EN_ANY, kPlatformFMTowns, { 0x00000092, 0x0000334E, { { 0xC9, 0x02, 0xB5, 0xEF, 0x90, 0xA8, 0x9C, 0x6E, 0xAD, 0xD6, 0x1F, 0xCC, 0x71, 0x9F, 0x19, 0x2C } } } },
- { JA_JPN, kPlatformFMTowns, { 0x000000A0, 0x00003EEB, { { 0x4B, 0x0C, 0xD5, 0xF0, 0xFE, 0x05, 0xF5, 0x09, 0x96, 0xA9, 0xE4, 0xDD, 0x86, 0x8D, 0x79, 0x3C } } } },
-
- { JA_JPN, kPlatformPC98, { 0x00000045, 0x00002350, { { 0xAD, 0x17, 0xA0, 0x40, 0x86, 0x0E, 0x1D, 0x2F, 0xA7, 0x14, 0x5B, 0x81, 0x38, 0x09, 0x80, 0x21 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1FluteStringsProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x0000003C, 0x00001599, { { 0x96, 0x72, 0x5A, 0x8A, 0xA0, 0xEE, 0xA2, 0xCE, 0x4D, 0x21, 0x01, 0x6C, 0xC5, 0x1A, 0xEB, 0x21 } } } }, // floppy + AMIGA
- { EN_ANY, kPlatformDOS, { 0x0000009C, 0x00002334, { { 0xA8, 0xA3, 0x1F, 0x0D, 0x36, 0x25, 0x19, 0x98, 0x50, 0xA0, 0x13, 0x65, 0xF4, 0xE8, 0x27, 0x19 } } } }, // CD
-
- { FR_FRA, kPlatformDOS, { 0x00000045, 0x000018EE, { { 0x3E, 0x3B, 0x20, 0x46, 0xEB, 0xB0, 0x88, 0x26, 0xB2, 0x0D, 0xD6, 0x8F, 0xF7, 0x53, 0x74, 0xAE } } } },
-
- { DE_DEU, kPlatformUnknown, { 0x00000040, 0x000016F2, { { 0x70, 0xFF, 0x86, 0x73, 0x9E, 0x75, 0xDD, 0x17, 0x27, 0x86, 0x44, 0xE9, 0x78, 0x3D, 0x48, 0xDB } } } },
-
- { IT_ITA, kPlatformDOS, { 0x0000004C, 0x00001BFB, { { 0x06, 0x4F, 0x6A, 0x37, 0x8B, 0x44, 0x27, 0x26, 0xCE, 0x28, 0xB2, 0x47, 0x71, 0xE2, 0x27, 0x73 } } } }, // floppy
- { IT_ITA, kPlatformDOS, { 0x00000045, 0x00001726, { { 0x5A, 0xCF, 0x64, 0x4B, 0x61, 0x57, 0xEC, 0xB3, 0xBF, 0x32, 0x45, 0x51, 0x5D, 0x02, 0xC5, 0xB6 } } } }, // (fan) CD
-
- { ES_ESP, kPlatformDOS, { 0x00000052, 0x00001D8E, { { 0x9D, 0xA5, 0xF1, 0x42, 0xD1, 0x48, 0xEB, 0x8F, 0x4B, 0xDC, 0xD9, 0x10, 0x55, 0xBD, 0x12, 0xBB } } } },
-
- // not translated in the fan translation
- { RU_RUS, kPlatformDOS, { 0x0000003C, 0x00001599, { { 0x96, 0x72, 0x5A, 0x8A, 0xA0, 0xEE, 0xA2, 0xCE, 0x4D, 0x21, 0x01, 0x6C, 0xC5, 0x1A, 0xEB, 0x21 } } } },
-
- { EN_ANY, kPlatformFMTowns, { 0x0000005A, 0x000024F9, { { 0xCA, 0x1F, 0x62, 0x23, 0x22, 0x25, 0x4A, 0x94, 0x8A, 0x50, 0x59, 0xD5, 0xB4, 0x4E, 0xF1, 0xA6 } } } },
- { JA_JPN, kPlatformFMTowns, { 0x00000053, 0x00002745, { { 0x7A, 0xBB, 0xFC, 0x30, 0xB6, 0xCE, 0x61, 0xD4, 0xDB, 0xB0, 0xE6, 0xB2, 0xF4, 0x4D, 0x81, 0x35 } } } },
-
- { JA_JPN, kPlatformPC98, { 0x00000032, 0x00001CDF, { { 0xB7, 0x08, 0x8D, 0x67, 0xB2, 0x0F, 0x59, 0x2D, 0xA6, 0x36, 0x21, 0x7B, 0x8B, 0x89, 0xE3, 0xED } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1FlaskFullStringProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x0000001C, 0x000009C8, { { 0xA5, 0xC7, 0x5E, 0x6E, 0x02, 0xEE, 0x8C, 0xF8, 0xF0, 0xBF, 0x69, 0xB8, 0x05, 0x1E, 0xF5, 0x28 } } } },
-
- { JA_JPN, kPlatformUnknown, { 0x0000001F, 0x00001135, { { 0x90, 0x52, 0x4A, 0x95, 0xE4, 0x89, 0xD6, 0x0A, 0xE1, 0x2E, 0x98, 0x11, 0x02, 0xF5, 0x79, 0x37 } } } },
-
- { FR_FRA, kPlatformDOS, { 0x0000001E, 0x00000AC7, { { 0x4E, 0x7A, 0xC8, 0xC5, 0xD4, 0xB8, 0xD0, 0x73, 0x66, 0x2B, 0x2A, 0x13, 0xDE, 0xE1, 0x32, 0xAA } } } },
-
- { DE_DEU, kPlatformUnknown, { 0x0000001E, 0x00000A71, { { 0x11, 0x88, 0x37, 0x8E, 0x17, 0xF2, 0x82, 0x1E, 0x72, 0xF0, 0xA3, 0x2B, 0x4F, 0x76, 0x5F, 0xBA } } } },
-
- { IT_ITA, kPlatformDOS, { 0x00000021, 0x00000C19, { { 0xC0, 0xFA, 0xD2, 0xB8, 0xCA, 0x94, 0x67, 0x10, 0x65, 0x01, 0x7F, 0xB0, 0x95, 0xC6, 0x0E, 0xFF } } } }, // floppy
- { IT_ITA, kPlatformDOS, { 0x0000001E, 0x00000973, { { 0xD3, 0x93, 0x3C, 0xA6, 0xF7, 0x79, 0xE6, 0x05, 0x49, 0x88, 0x89, 0xDE, 0xCA, 0x77, 0x2F, 0x1B } } } }, // (fan) CD
-
- { ES_ESP, kPlatformDOS, { 0x0000001B, 0x0000099D, { { 0x13, 0x23, 0x5D, 0x38, 0x9B, 0xFB, 0x00, 0x5C, 0xA1, 0x3A, 0x22, 0xD6, 0xCD, 0x5C, 0x09, 0xAE } } } },
-
- { RU_RUS, kPlatformDOS, { 0x0000001A, 0x0000066E, { { 0x36, 0x43, 0xB6, 0xB2, 0xED, 0xBA, 0x21, 0x0C, 0x16, 0x54, 0x99, 0xF9, 0x2E, 0x6E, 0x0A, 0x28 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1FullFlaskStringProvider[] = {
- { EN_ANY, kPlatformDOS, { 0x00000097, 0x00003521, { { 0x9C, 0x30, 0xC7, 0xC9, 0x97, 0xF3, 0x0E, 0xC4, 0x6E, 0xCA, 0x63, 0xC6, 0xD8, 0x06, 0xFF, 0x30 } } } },
-
- { FR_FRA, kPlatformDOS, { 0x00000086, 0x00002E16, { { 0x94, 0x6C, 0x6D, 0xB6, 0x4C, 0x84, 0xBB, 0xF6, 0xC8, 0x50, 0x4C, 0x00, 0x38, 0xE3, 0x09, 0x5B } } } },
-
- { DE_DEU, kPlatformDOS, { 0x000000AF, 0x00003E38, { { 0x66, 0x86, 0xAF, 0x1A, 0x2D, 0x33, 0x40, 0xE7, 0x96, 0x9B, 0x32, 0x26, 0xFF, 0x9F, 0x79, 0x8B } } } },
-
- { IT_ITA, kPlatformDOS, { 0x00000086, 0x00002CDB, { { 0xB1, 0xAE, 0x2A, 0x03, 0x28, 0xEC, 0x6D, 0x2F, 0xED, 0x71, 0xBE, 0x60, 0xCF, 0xAB, 0x8C, 0x00 } } } }, // floppy
- { IT_ITA, kPlatformDOS, { 0x000000B5, 0x00004111, { { 0xA3, 0x4D, 0xA0, 0xF5, 0xE5, 0xD7, 0xFE, 0x11, 0xBB, 0x2C, 0xB5, 0xF2, 0xE0, 0x52, 0xF1, 0xF0 } } } }, // (fan) CD
-
- { ES_ESP, kPlatformDOS, { 0x0000009A, 0x0000363B, { { 0x38, 0x25, 0xE6, 0xB5, 0xCB, 0x78, 0x5E, 0xAD, 0x2D, 0xD4, 0x2E, 0x8B, 0x89, 0x20, 0xB1, 0x95 } } } },
-
- { RU_RUS, kPlatformDOS, { 0x00000094, 0x0000232B, { { 0xBF, 0x68, 0xF9, 0x8F, 0x82, 0xE9, 0xE7, 0x69, 0x33, 0xD6, 0x41, 0x15, 0x2C, 0xFE, 0x72, 0xAB } } } },
-
- { EN_ANY, kPlatformAmiga, { 0x0000009A, 0x00003521, { { 0x26, 0xE5, 0xC8, 0x6D, 0x14, 0x81, 0x9F, 0x90, 0x38, 0x3C, 0x00, 0x9D, 0x8E, 0x72, 0xB1, 0x83 } } } },
- { DE_DEU, kPlatformAmiga, { 0x000000B0, 0x00003E38, { { 0x8A, 0x6D, 0x42, 0x36, 0x29, 0x06, 0xB2, 0xCE, 0xA3, 0x41, 0x14, 0xE8, 0xB1, 0xEF, 0x6E, 0x3B } } } },
-
- { EN_ANY, kPlatformFMTowns, { 0x0000009D, 0x00003521, { { 0xAB, 0x74, 0x71, 0x5C, 0x6E, 0x65, 0xF5, 0x5E, 0xB0, 0x6E, 0x0E, 0xC7, 0x56, 0xCB, 0x55, 0x98 } } } },
- { JA_JPN, kPlatformFMTowns, { 0x0000007D, 0x000039CE, { { 0x9E, 0xBE, 0x13, 0x7F, 0x4D, 0x4B, 0xCB, 0x08, 0xC3, 0xE5, 0xF1, 0xC2, 0xD3, 0x69, 0x9E, 0xDF } } } },
-
- { JA_JPN, kPlatformPC98, { 0x00000079, 0x000039CE, { { 0xEF, 0x3F, 0x36, 0xD4, 0x6C, 0x64, 0x74, 0x9A, 0xFE, 0x13, 0xB5, 0x77, 0x9A, 0xCF, 0x15, 0x5C } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1VeryCleverStringProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x00000032, 0x0000118D, { { 0x4B, 0x6D, 0xD4, 0xDC, 0x3E, 0xA2, 0x2D, 0x6D, 0x2C, 0x5A, 0xF7, 0x67, 0x4B, 0x6D, 0x40, 0xEF } } } },
-
- { JA_JPN, kPlatformUnknown, { 0x0000002F, 0x00001BDF, { { 0x32, 0x2C, 0x60, 0x1E, 0xB7, 0xE0, 0xFE, 0x5F, 0xEA, 0xEF, 0xA4, 0x73, 0xAC, 0xCB, 0xBA, 0xFE } } } },
-
- { FR_FRA, kPlatformDOS, { 0x00000027, 0x00000DE1, { { 0x43, 0xC2, 0xC7, 0xD2, 0xA3, 0x70, 0x36, 0x38, 0xB5, 0x5B, 0x22, 0xEF, 0xBA, 0x0D, 0x37, 0x27 } } } },
-
- { DE_DEU, kPlatformUnknown, { 0x00000043, 0x00001871, { { 0x33, 0x3F, 0xEA, 0x7F, 0x5F, 0x56, 0x98, 0xF3, 0x03, 0x8D, 0x3E, 0xAC, 0xA1, 0x62, 0x2A, 0xD7 } } } },
-
- { IT_ITA, kPlatformDOS, { 0x00000038, 0x000013CF, { { 0x58, 0x7B, 0x59, 0x50, 0x84, 0xBB, 0x5B, 0x70, 0xDF, 0x76, 0x2F, 0xC3, 0x7E, 0xEC, 0x6A, 0x8B } } } }, // floppy
- { IT_ITA, kPlatformDOS, { 0x00000027, 0x00000D01, { { 0x72, 0x7E, 0x88, 0xFB, 0xDA, 0xC0, 0x9E, 0x31, 0xAC, 0x32, 0xFD, 0x90, 0x7D, 0x01, 0x86, 0xD0 } } } }, // (fan) CD
-
- { ES_ESP, kPlatformDOS, { 0x00000036, 0x000013F8, { { 0x2D, 0x9B, 0x7D, 0x58, 0xD1, 0x94, 0x04, 0x45, 0x6E, 0x81, 0xCC, 0x1E, 0x2F, 0xC5, 0xC9, 0xEA } } } },
-
- // not translated in the fan translation
- { RU_RUS, kPlatformDOS, { 0x00000032, 0x0000118D, { { 0x4B, 0x6D, 0xD4, 0xDC, 0x3E, 0xA2, 0x2D, 0x6D, 0x2C, 0x5A, 0xF7, 0x67, 0x4B, 0x6D, 0x40, 0xEF } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1NewGameStringProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x00000015, 0x0000052B, { { 0xAB, 0xD2, 0x16, 0x26, 0xC2, 0x86, 0xFA, 0xC8, 0x42, 0xCD, 0x16, 0xCD, 0x25, 0xB7, 0x44, 0xDC } } } },
-
- { JA_JPN, kPlatformUnknown, { 0x0000001B, 0x00000EC8, { { 0x13, 0x9A, 0xBC, 0x8F, 0xE2, 0x4B, 0xD7, 0x0B, 0xC0, 0x81, 0x60, 0x10, 0xC2, 0xA6, 0x9C, 0xFA } } } },
-
- { FR_FRA, kPlatformDOS, { 0x0000001D, 0x0000079B, { { 0x2B, 0x5B, 0x54, 0x29, 0x76, 0x31, 0x5E, 0x89, 0xC2, 0xD1, 0xDB, 0x3B, 0xF0, 0xBC, 0xCD, 0x66 } } } },
-
- { DE_DEU, kPlatformUnknown, { 0x0000001D, 0x0000076F, { { 0x5C, 0x84, 0x2A, 0xB1, 0x61, 0xDD, 0x7B, 0xB3, 0xD4, 0x6A, 0xD2, 0xEF, 0xA4, 0x5F, 0x81, 0xFE } } } },
-
- { IT_ITA, kPlatformDOS, { 0x0000001C, 0x0000075E, { { 0xC8, 0xCB, 0x35, 0x5E, 0x73, 0x09, 0xDB, 0xA1, 0xF1, 0x8D, 0x14, 0x54, 0x8D, 0xF7, 0xB1, 0xD3 } } } }, // floppy
- { IT_ITA, kPlatformDOS, { 0x0000001D, 0x000007BD, { { 0xF4, 0x5C, 0x50, 0x82, 0x91, 0x7E, 0x09, 0x52, 0x44, 0x95, 0xC2, 0x2E, 0xC9, 0x52, 0x12, 0x2B } } } }, // (fan) CD
-
- { ES_ESP, kPlatformDOS, { 0x0000001B, 0x00000701, { { 0x2B, 0x87, 0xC3, 0x82, 0x68, 0xA5, 0xFC, 0xC5, 0x64, 0x9E, 0xAB, 0xD2, 0x8A, 0x07, 0x9C, 0x1E } } } },
-
- { RU_RUS, kPlatformDOS, { 0x00000015, 0x0000035F, { { 0x7E, 0x49, 0xC1, 0xCB, 0x2D, 0x61, 0xA7, 0x4C, 0x20, 0xAC, 0xEC, 0x54, 0x80, 0x14, 0x6A, 0xCA } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1DefaultShapesProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x0000048A, 0x00012C0A, { { 0x90, 0x9E, 0x21, 0x9F, 0x90, 0x16, 0x1D, 0xA5, 0x57, 0xF8, 0x71, 0xE1, 0x15, 0x44, 0x29, 0x73 } } } },
-
- // TODO: Where did this come from?
- /*{ UNK_LANG, kPlatformUnknown, { 0x000004F3, 0x00014AE4, { { 0x6E, 0x37, 0x81, 0x15, 0x4D, 0xDD, 0xBA, 0xA6, 0xE3, 0x5F, 0xB6, 0xC8, 0x20, 0xE9, 0xE0, 0x63 } } } },*/
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1Healing1ShapesProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x0000009A, 0x00002F17, { { 0x92, 0x2C, 0xF1, 0x5C, 0x8B, 0xCE, 0xEB, 0x0B, 0xE4, 0x07, 0x16, 0xAA, 0x25, 0x4F, 0x83, 0xEB } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1Healing2ShapesProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x000000D2, 0x00004257, { { 0xAC, 0x35, 0xAA, 0x72, 0x50, 0x67, 0x58, 0xE4, 0x70, 0xB0, 0xBB, 0xCA, 0xA7, 0x4C, 0x91, 0x82 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1PoisonDeathShapesProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x0000008C, 0x00002E90, { { 0xBC, 0x44, 0xFB, 0x98, 0xE7, 0x42, 0xF6, 0xC8, 0x87, 0xDD, 0x00, 0x42, 0x85, 0xD8, 0x1E, 0x81 } } } },
- { UNK_LANG, kPlatformUnknown, { 0x0000008C, 0x00002E7C, { { 0xA5, 0xD7, 0x13, 0xFC, 0x43, 0x22, 0x13, 0xBC, 0x5F, 0x3F, 0xC8, 0x28, 0xDA, 0x04, 0xB0, 0xDD } } } }, // Old Dos Floppy
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1FluteShapesProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x000000FC, 0x00004F0F, { { 0xB1, 0xF0, 0x56, 0x6E, 0xAB, 0x3C, 0x88, 0x13, 0x97, 0x7C, 0xCC, 0x61, 0x85, 0x8A, 0x28, 0x12 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1Winter1ShapesProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000031, 0x00000E70, { { 0x3A, 0x15, 0x36, 0x51, 0x2F, 0xF8, 0xAF, 0xE6, 0x41, 0x71, 0x8D, 0x44, 0x99, 0x48, 0xB3, 0x4F } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1Winter2ShapesProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x000000F5, 0x00005192, { { 0xD3, 0x64, 0xAC, 0x64, 0x42, 0x9F, 0xB9, 0xCA, 0x0C, 0xC8, 0x97, 0x67, 0x8C, 0x92, 0xB4, 0x79 } } } },
-
- { UNK_LANG, kPlatformUnknown, { 0x000000F5, 0x000029E4, { { 0xF0, 0x7B, 0x05, 0xD8, 0xC1, 0x97, 0x27, 0x17, 0xFA, 0x32, 0xE9, 0x1A, 0x46, 0xA5, 0xEB, 0x84 } } } }, // CD + Amiga
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1Winter3ShapesProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x0000001C, 0x00000A5E, { { 0x84, 0xDD, 0xC0, 0xEA, 0xE3, 0xBE, 0x98, 0x66, 0xE0, 0xA3, 0x4D, 0x00, 0x88, 0x31, 0x61, 0x1F } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1DrinkShapesProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000069, 0x00001EDA, { { 0x21, 0xFA, 0x2F, 0x41, 0x8F, 0x70, 0x3B, 0xBB, 0x93, 0x35, 0x49, 0xEC, 0x1C, 0xEE, 0xDD, 0xAC } } } },
-
- { UNK_LANG, kPlatformFMTowns, { 0x0000006A, 0x00001EDA, { { 0xE2, 0xDA, 0xEC, 0x87, 0x4A, 0x27, 0xD8, 0xC1, 0x57, 0xE7, 0xD8, 0xD7, 0x87, 0x5F, 0x3A, 0xEB } } } },
-
- { UNK_LANG, kPlatformPC98, { 0x0000006A, 0x00001EDA, { { 0xE2, 0xDA, 0xEC, 0x87, 0x4A, 0x27, 0xD8, 0xC1, 0x57, 0xE7, 0xD8, 0xD7, 0x87, 0x5F, 0x3A, 0xEB } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1WispShapesProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x000000B6, 0x00003A53, { { 0x34, 0x52, 0x9D, 0x06, 0x4F, 0x1B, 0xCD, 0xB7, 0x30, 0xF7, 0xB4, 0x9F, 0x0F, 0x34, 0xDD, 0xF7 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1MagicAnimShapesProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000023, 0x00000A2D, { { 0x48, 0x8E, 0x2A, 0x61, 0x93, 0xCD, 0x58, 0x3B, 0x45, 0x62, 0xD9, 0x01, 0x8F, 0xBA, 0x2A, 0x1A } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1BranStoneShapesProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x0000006E, 0x00001E41, { { 0x77, 0x99, 0x54, 0xED, 0x4C, 0x31, 0x08, 0x50, 0x41, 0x22, 0x6B, 0xED, 0x34, 0xF4, 0x17, 0xA1 } } } },
-
- { UNK_LANG, kPlatformAmiga, { 0x0000006E, 0x00002026, { { 0x5A, 0xAF, 0x28, 0xF3, 0x0F, 0x82, 0x05, 0xB4, 0x33, 0x83, 0xCE, 0x56, 0xDB, 0xE7, 0x5C, 0xB4 } } } },
-
- { UNK_LANG, kPlatformFMTowns, { 0x00000063, 0x00001E41, { { 0xDA, 0xA1, 0x93, 0x68, 0xBF, 0xB3, 0xBB, 0xD1, 0x2E, 0xF9, 0xB2, 0x25, 0x72, 0xD9, 0xA6, 0x00 } } } },
-
- { UNK_LANG, kPlatformPC98, { 0x00000063, 0x00001E41, { { 0xDA, 0xA1, 0x93, 0x68, 0xBF, 0xB3, 0xBB, 0xD1, 0x2E, 0xF9, 0xB2, 0x25, 0x72, 0xD9, 0xA6, 0x00 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1SpecialPalette1Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000015, 0x0000024B, { { 0x6C, 0x6C, 0xE9, 0xB6, 0xC4, 0xC2, 0x29, 0xA5, 0xB6, 0xB3, 0x82, 0xB6, 0x03, 0x5B, 0x66, 0x7A } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1SpecialPalette2Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000033, 0x00000470, { { 0x63, 0x02, 0x97, 0x7D, 0xBE, 0x97, 0x5E, 0x88, 0x2E, 0x50, 0x18, 0x6A, 0x4A, 0x61, 0x09, 0xA6 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1SpecialPalette3Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000033, 0x0000042A, { { 0xF8, 0x32, 0x65, 0x55, 0x1C, 0xC5, 0x6E, 0x71, 0xC6, 0x6A, 0x8E, 0xC5, 0x3C, 0xBC, 0x1F, 0xA8 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1SpecialPalette4Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000033, 0x000003A4, { { 0xA1, 0xA6, 0x6F, 0x53, 0xA2, 0x1E, 0x27, 0x6F, 0x0D, 0xD0, 0x4F, 0xDC, 0x4C, 0xDC, 0xAE, 0x17 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1SpecialPalette5Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000033, 0x0000033D, { { 0x22, 0x02, 0xB3, 0xCD, 0x4E, 0xD5, 0x6E, 0x65, 0x2B, 0x38, 0x7D, 0x3E, 0x27, 0x03, 0x1A, 0x59 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1SpecialPalette6Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000033, 0x000001EA, { { 0xC7, 0xA7, 0x0E, 0xBA, 0x3F, 0x5E, 0xD3, 0x02, 0x99, 0x3B, 0x32, 0x00, 0x39, 0x3C, 0xD2, 0xAC } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1SpecialPalette7Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000036, 0x0000040C, { { 0x1A, 0x8E, 0x3E, 0x5F, 0x09, 0xFE, 0x4A, 0xF1, 0x5D, 0x2E, 0x2C, 0xD3, 0xFF, 0x75, 0x7D, 0x1C } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1SpecialPalette8Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000036, 0x000008E4, { { 0x55, 0xB4, 0xD3, 0xD1, 0x89, 0x49, 0xA5, 0x7E, 0x40, 0xF9, 0xFE, 0x6E, 0x16, 0xE8, 0xBD, 0xBB } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1SpecialPalette9Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x0000002D, 0x000001DB, { { 0x7A, 0x04, 0x16, 0xDD, 0x6A, 0xBA, 0x51, 0x9E, 0x24, 0x9E, 0xEA, 0x76, 0xD0, 0xFA, 0x92, 0xF4 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1SpecialPalette10Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x0000002D, 0x0000017A, { { 0xD2, 0x20, 0x1F, 0x12, 0xE1, 0x65, 0x68, 0xA7, 0x9C, 0x69, 0x8E, 0x99, 0xDF, 0xC5, 0xD2, 0x8E } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1SpecialPalette11Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x0000002D, 0x00000136, { { 0xBF, 0x38, 0xB1, 0xFE, 0xBF, 0x25, 0xBC, 0xD3, 0xCC, 0x60, 0x40, 0x97, 0xB6, 0x4A, 0xC7, 0xB2 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1SpecialPalette12Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x0000002D, 0x00000102, { { 0x1C, 0x1E, 0x6A, 0x30, 0xE1, 0xD1, 0xF9, 0x3D, 0x9A, 0xF1, 0x84, 0xBD, 0x44, 0x07, 0x51, 0xEA } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1SpecialPalette13Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x0000002D, 0x00000000, { { 0x76, 0x22, 0x21, 0x4B, 0x85, 0x36, 0xAF, 0xE7, 0xB8, 0x9B, 0x1C, 0x66, 0x06, 0x06, 0x9B, 0x0D } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1SpecialPalette14Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x0000003C, 0x000003BF, { { 0x78, 0xE8, 0xA8, 0xF2, 0x4D, 0x54, 0x48, 0x47, 0xC9, 0xC1, 0x5B, 0x6C, 0x69, 0xCB, 0x65, 0xB6 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1SpecialPalette15Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x0000002D, 0x000002DD, { { 0x9F, 0x66, 0x50, 0xAC, 0xED, 0x0C, 0x63, 0x20, 0xE9, 0x4E, 0x4D, 0x3D, 0xC4, 0xBC, 0x94, 0x8A } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1SpecialPalette16Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000021, 0x0000036E, { { 0xA9, 0xDB, 0x1C, 0x35, 0xED, 0xED, 0xE4, 0x40, 0x68, 0x29, 0xB1, 0x6E, 0x60, 0xE4, 0xB0, 0xDB } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1SpecialPalette17Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000021, 0x000004D7, { { 0xC0, 0xB5, 0x7B, 0x94, 0xED, 0xD7, 0x48, 0x66, 0x37, 0x54, 0xE8, 0xFC, 0x0F, 0xA5, 0x54, 0x8A } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1SpecialPalette18Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000015, 0x000002FD, { { 0x0A, 0xDD, 0x81, 0xA8, 0x89, 0xD2, 0x53, 0x05, 0x25, 0xCC, 0x2B, 0x8B, 0x48, 0x1D, 0xAB, 0x0A } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1SpecialPalette19Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000015, 0x00000134, { { 0xCB, 0x0F, 0xA9, 0xD2, 0xD8, 0xEA, 0x2A, 0x1F, 0x16, 0x7B, 0x90, 0xE5, 0x72, 0xB3, 0x52, 0x50 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1SpecialPalette20Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000015, 0x00000396, { { 0x3B, 0xD8, 0xA5, 0xC5, 0x66, 0x3E, 0xC7, 0x88, 0xD0, 0x3B, 0x42, 0x29, 0x84, 0x58, 0xA7, 0x00 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1SpecialPalette21Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000015, 0x00000134, { { 0x96, 0x70, 0x7D, 0x5B, 0xC4, 0xBA, 0x89, 0x89, 0xC9, 0x42, 0xF4, 0x70, 0x33, 0xF5, 0xE8, 0x02 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1SpecialPalette22Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000015, 0x00000376, { { 0xA2, 0x92, 0x28, 0x65, 0xAB, 0xCC, 0x16, 0xE8, 0xA5, 0x72, 0x2F, 0x00, 0x66, 0x8F, 0x8D, 0x96 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1SpecialPalette23Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000015, 0x000002C2, { { 0x5C, 0x78, 0x74, 0x81, 0x76, 0xB5, 0x26, 0x8E, 0x20, 0xAE, 0x50, 0xCD, 0x2B, 0x9E, 0x81, 0x8B } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1SpecialPalette24Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000030, 0x00000472, { { 0xC6, 0xF0, 0xA6, 0x33, 0x7E, 0xAE, 0xBC, 0xF9, 0xAE, 0xE2, 0xF4, 0x7B, 0x71, 0x44, 0x50, 0xEF } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1SpecialPalette25Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000030, 0x000004CD, { { 0x57, 0x03, 0xB5, 0x27, 0x64, 0x48, 0xBF, 0x6A, 0x0F, 0xC2, 0xC0, 0x4A, 0x73, 0x9A, 0xFE, 0xB3 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1SpecialPalette26Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000030, 0x000004CA, { { 0xF8, 0x39, 0x8D, 0x6F, 0x8D, 0x9C, 0x6E, 0x0A, 0x33, 0xE8, 0xF2, 0xA6, 0xF6, 0x40, 0x70, 0xE5 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1SpecialPalette27Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000030, 0x000004D9, { { 0xF6, 0xD4, 0x88, 0x57, 0x6F, 0x1A, 0xA3, 0x1F, 0x6B, 0x17, 0x4D, 0xA0, 0x9E, 0xD8, 0x09, 0x66 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1SpecialPalette28Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000030, 0x0000051D, { { 0x59, 0x02, 0xE3, 0xC6, 0x28, 0xF6, 0xBC, 0xD4, 0xC8, 0x7E, 0x58, 0x6F, 0xE4, 0xA2, 0x28, 0x4F } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1SpecialPalette29Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000030, 0x00000534, { { 0xC2, 0x26, 0x94, 0x47, 0x28, 0x11, 0xAA, 0xE6, 0x10, 0xA2, 0xD4, 0xD9, 0x61, 0x57, 0x62, 0x22 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1SpecialPalette30Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x0000003C, 0x00000453, { { 0xE1, 0x30, 0xC2, 0xCD, 0x79, 0xD8, 0x36, 0x8D, 0xAC, 0xF7, 0x87, 0x05, 0x49, 0xD7, 0x7A, 0x5F } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1SpecialPalette31Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000027, 0x000002FB, { { 0xA6, 0x65, 0xE1, 0xE1, 0xCC, 0x71, 0x83, 0x63, 0x9A, 0x04, 0xE2, 0x00, 0xBF, 0x90, 0xDF, 0x95 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1SpecialPalette32Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000027, 0x0000016C, { { 0xAA, 0x88, 0x97, 0xE3, 0xCA, 0x06, 0x11, 0x07, 0x8F, 0xFA, 0x75, 0x26, 0xA8, 0x7A, 0x49, 0x28 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1SpecialPalette33Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x0000003C, 0x0000094C, { { 0x2E, 0x5E, 0x34, 0x3E, 0x99, 0x61, 0x6F, 0x88, 0x91, 0xA7, 0x75, 0xAA, 0x42, 0x4B, 0x1F, 0x5D } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1GUIStringsProvider[] = {
- { EN_ANY, kPlatformDOS, { 0x000001B0, 0x00009562, { { 0x78, 0xB0, 0x81, 0x15, 0x96, 0x09, 0x1E, 0x6C, 0x20, 0x7B, 0xF7, 0xB1, 0x29, 0x2A, 0x3D, 0xE4 } } } }, // floppy
- { EN_ANY, kPlatformDOS, { 0x00000209, 0x00009788, { { 0xDD, 0xA0, 0x5C, 0x30, 0x60, 0x68, 0xDC, 0x24, 0xBE, 0x3F, 0xA2, 0x31, 0xE0, 0x81, 0x6C, 0xCA } } } }, // CD
-
- { FR_FRA, kPlatformDOS, { 0x00000234, 0x0000C262, { { 0x08, 0x83, 0x32, 0x4E, 0x48, 0xEC, 0x83, 0x4B, 0x1B, 0x82, 0x58, 0x48, 0xA3, 0x30, 0x05, 0x33 } } } }, // floppy
- { FR_FRA, kPlatformDOS, { 0x0000025D, 0x0000CBDC, { { 0x36, 0xF0, 0x92, 0x9C, 0x5F, 0xFF, 0x5D, 0x65, 0x5F, 0x0B, 0xC0, 0x72, 0x9F, 0x30, 0x47, 0xAB } } } }, // CD
-
- { DE_DEU, kPlatformDOS, { 0x00000236, 0x0000BA9C, { { 0xEB, 0xA6, 0x90, 0x9D, 0x99, 0x4B, 0x4F, 0xD9, 0xCE, 0xFF, 0x44, 0x3F, 0x77, 0x6F, 0xE1, 0x71 } } } }, // floppy
- { DE_DEU, kPlatformDOS, { 0x00000261, 0x0000C538, { { 0xF3, 0xED, 0x5E, 0x73, 0x6F, 0x6E, 0x06, 0xF8, 0x48, 0xF8, 0x30, 0x69, 0x34, 0x5D, 0x99, 0x0C } } } }, // CD
-
- { IT_ITA, kPlatformDOS, { 0x00000225, 0x0000B0E1, { { 0x57, 0xE2, 0x39, 0xA8, 0xF5, 0x70, 0x48, 0xB4, 0x3D, 0xD4, 0x2A, 0x8C, 0x7C, 0x76, 0xB7, 0x8D } } } }, // floppy
- { IT_ITA, kPlatformDOS, { 0x0000025D, 0x0000AFD0, { { 0x8E, 0x97, 0xA9, 0x55, 0x16, 0xF7, 0x42, 0x83, 0xA3, 0x68, 0x2F, 0xD6, 0x37, 0x1C, 0x9A, 0xD1 } } } }, // (fan) CD
-
- { ES_ESP, kPlatformDOS, { 0x0000023A, 0x0000C3BD, { { 0xED, 0x0D, 0xE7, 0x5B, 0xDC, 0x21, 0x41, 0x54, 0x68, 0x7D, 0x8E, 0x97, 0x1A, 0xB1, 0xA1, 0x4A } } } }, // floppy
-
- { RU_RUS, kPlatformDOS, { 0x000001B1, 0x000065E8, { { 0x91, 0x22, 0x61, 0x8B, 0xCD, 0x7C, 0x0E, 0xD4, 0x32, 0x00, 0xC3, 0x6E, 0x50, 0x7F, 0x3C, 0x82 } } } }, // floppy
-
- { EN_ANY, kPlatformAmiga, { 0x000001DF, 0x00009042, { { 0x0D, 0xD3, 0x1A, 0x92, 0x8D, 0x9C, 0x72, 0x55, 0xEF, 0xFB, 0x81, 0x21, 0x3B, 0x43, 0xA7, 0xE8 } } } },
- { DE_DEU, kPlatformAmiga, { 0x00000237, 0x0000BAF7, { { 0xD7, 0x1A, 0x8E, 0xCC, 0x6D, 0x3E, 0xA9, 0xDD, 0x9A, 0x6B, 0x71, 0xFE, 0xD4, 0x50, 0x30, 0x6E } } } },
-
- { EN_ANY, kPlatformFMTowns, { 0x000001FC, 0x00009D9A, { { 0xE8, 0x39, 0x46, 0x0A, 0x41, 0xC3, 0xDC, 0x33, 0x6E, 0xC5, 0x5D, 0x99, 0xCC, 0xF6, 0xDD, 0xCC } } } },
- { JA_JPN, kPlatformFMTowns, { 0x0000025F, 0x0000E56A, { { 0x77, 0x9A, 0x02, 0x52, 0xED, 0x62, 0x23, 0x5A, 0x58, 0x78, 0x19, 0x52, 0x03, 0xD7, 0x88, 0x40 } } } },
-
- { JA_JPN, kPlatformPC98, { 0x00000213, 0x0000EC5A, { { 0x3B, 0xBA, 0xFB, 0x61, 0x34, 0x60, 0x25, 0xDA, 0x48, 0xBF, 0x95, 0x7F, 0x7F, 0xB6, 0xE4, 0x55 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1ConfigStringsProvider[] = {
- { EN_ANY, kPlatformDOS, { 0x0000003F, 0x000016E9, { { 0x4F, 0x19, 0x60, 0x67, 0xA8, 0x31, 0x0B, 0xD5, 0x3D, 0x06, 0x39, 0xF1, 0x42, 0xB0, 0xFD, 0x5C } } } }, // floppy
- { EN_ANY, kPlatformDOS, { 0x00000061, 0x00002249, { { 0x5D, 0xE2, 0x05, 0xA7, 0xEC, 0x0A, 0x73, 0xF5, 0x01, 0x5B, 0x64, 0x71, 0x83, 0xEC, 0x56, 0x24 } } } }, // CD
-
- { FR_FRA, kPlatformDOS, { 0x0000004B, 0x00001AE8, { { 0xE3, 0xC9, 0x0F, 0x54, 0x48, 0x31, 0x6E, 0x5F, 0x51, 0x8E, 0xF8, 0xE6, 0xAC, 0x16, 0xAC, 0x1C } } } }, // floppy
- { FR_FRA, kPlatformDOS, { 0x0000007A, 0x00002C37, { { 0x9E, 0xD8, 0x85, 0xB4, 0x9D, 0x32, 0x9D, 0x80, 0x58, 0xE4, 0x08, 0xC7, 0x75, 0xD2, 0x9C, 0x1E } } } }, // CD
-
- { DE_DEU, kPlatformDOS, { 0x0000005E, 0x00002280, { { 0xC7, 0xD2, 0x22, 0xB5, 0xD3, 0xBC, 0x7A, 0x97, 0x26, 0x04, 0x07, 0x78, 0xAA, 0xAB, 0x1D, 0x5C } } } }, // floppy
- { DE_DEU, kPlatformDOS, { 0x00000082, 0x00002E94, { { 0xC5, 0xDC, 0x44, 0x6C, 0x4B, 0x3E, 0x4E, 0x27, 0x0C, 0xCC, 0x65, 0x6C, 0x20, 0x8D, 0x71, 0x07 } } } }, // CD
-
- { IT_ITA, kPlatformDOS, { 0x00000054, 0x00001E98, { { 0x10, 0x6B, 0x6B, 0x9B, 0x91, 0x05, 0xE9, 0x30, 0xE2, 0x75, 0xE2, 0x45, 0x79, 0x17, 0x73, 0xC9 } } } }, // floppy
- { IT_ITA, kPlatformDOS, { 0x0000007A, 0x00002904, { { 0xD3, 0xD2, 0x96, 0x6E, 0xE7, 0xE8, 0x64, 0x77, 0x73, 0xCD, 0xC2, 0x9E, 0x57, 0xB5, 0xD3, 0xCD } } } }, // (fan) CD
-
- { ES_ESP, kPlatformDOS, { 0x0000004A, 0x00001B7B, { { 0x6B, 0x69, 0x50, 0x92, 0x9B, 0x35, 0x58, 0xE1, 0xEA, 0xBF, 0x42, 0x0B, 0xEB, 0x88, 0x41, 0x8D } } } }, // floppy
-
- // not translated in the fan translation
- { RU_RUS, kPlatformDOS, { 0x0000003F, 0x00000B0D, { { 0x0E, 0x60, 0x0F, 0x4A, 0xA9, 0xF0, 0x1B, 0x76, 0xBB, 0x33, 0xB2, 0x4B, 0x5C, 0xB5, 0x4A, 0x97 } } } }, // floppy
-
- { EN_ANY, kPlatformAmiga, { 0x0000002E, 0x00000FA1, { { 0x5E, 0xFF, 0xFF, 0x3D, 0xF8, 0x11, 0x6F, 0x3B, 0xC5, 0x39, 0x8F, 0x25, 0x8F, 0x0F, 0xE9, 0x2B } } } },
- { DE_DEU, kPlatformAmiga, { 0x00000043, 0x00001783, { { 0xB2, 0x2B, 0xAB, 0x27, 0x06, 0x9A, 0x1E, 0x4B, 0xA7, 0xD3, 0xFF, 0xEB, 0xFD, 0x12, 0xDC, 0x94 } } } },
-
- { EN_ANY, kPlatformFMTowns, { 0x0000004A, 0x000016E9, { { 0x37, 0x12, 0xAD, 0x4C, 0xB8, 0x2C, 0xF5, 0x75, 0x20, 0x74, 0xA0, 0xFD, 0x58, 0xB1, 0x71, 0x77 } } } },
- { JA_JPN, kPlatformFMTowns, { 0x00000057, 0x00002262, { { 0xC5, 0x9A, 0x4A, 0xE3, 0xDF, 0xD3, 0x0E, 0x8E, 0xBB, 0xAF, 0x75, 0xD3, 0x67, 0xB1, 0xF6, 0x08 } } } },
-
- { JA_JPN, kPlatformPC98, { 0x0000003F, 0x00001E9D, { { 0x8A, 0x3C, 0x78, 0x6B, 0x3F, 0x0A, 0x7D, 0x92, 0x16, 0x39, 0xEB, 0x1C, 0x84, 0x9E, 0x4F, 0x84 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1TownsMusicFadeTableProvider[] = {
- { UNK_LANG, kPlatformFMTowns, { 0x00000B10, 0x000076DE, { { 0x9F, 0x08, 0x5B, 0xD6, 0x25, 0x7F, 0x11, 0x08, 0x87, 0x45, 0x92, 0xD3, 0xE5, 0xA8, 0x7C, 0x2F } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1TownsSFXwdTableProvider[] = {
- { UNK_LANG, kPlatformFMTowns, { 0x00012608, 0x006717A1, { { 0x34, 0xDD, 0x2D, 0xA5, 0x14, 0x05, 0xEE, 0x2F, 0x93, 0x7C, 0x78, 0x4D, 0xCA, 0x13, 0xED, 0x93 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1TownsSFXbtTableProvider[] = {
- { UNK_LANG, kPlatformFMTowns, { 0x00000100, 0x00007FFE, { { 0xEF, 0x3D, 0x9F, 0x31, 0xE7, 0x19, 0x1E, 0x4F, 0xF3, 0x66, 0x42, 0xC8, 0x0D, 0x89, 0x96, 0x20 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1TownsCDATableProvider[] = {
- { UNK_LANG, kPlatformFMTowns, { 0x000002C4, 0x0000C5ED, { { 0x76, 0x86, 0x77, 0xF9, 0x85, 0x23, 0x32, 0x56, 0x3C, 0x06, 0x03, 0xCF, 0x0C, 0x49, 0x94, 0xB5 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1PC98StoryStringsProvider[] = {
- { JA_JPN, kPlatformPC98, { 0x00000054, 0x00002FAD, { { 0xCB, 0x25, 0xD1, 0xFA, 0x65, 0xCE, 0xD5, 0xE6, 0xAD, 0xE3, 0x48, 0x25, 0xC8, 0x51, 0xC6, 0x12 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1PC98IntroSfxProvider[] = {
- { UNK_LANG, kPlatformPC98, { 0x00000300, 0x00017445, { { 0xC3, 0x54, 0x4A, 0x58, 0x00, 0x33, 0xEA, 0xF1, 0x20, 0xA8, 0x0C, 0xDE, 0x7A, 0x94, 0xAB, 0x5E } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1CreditsStringsProvider[] = {
- { EN_ANY, kPlatformAmiga, { 0x000004CC, 0x000182F7, { { 0x7D, 0x14, 0xA6, 0xEC, 0x12, 0x67, 0xAC, 0xA7, 0x7B, 0xF8, 0x44, 0x19, 0x52, 0xCC, 0x3A, 0x65 } } } },
- { DE_DEU, kPlatformAmiga, { 0x000004FB, 0x00019987, { { 0x8B, 0xF1, 0x61, 0xB9, 0x3E, 0xA4, 0x28, 0x9B, 0x45, 0x86, 0xD1, 0xF0, 0xC3, 0x35, 0x44, 0xA0 } } } },
-
- { EN_ANY, kPlatformFMTowns, { 0x0000058C, 0x0001AD16, { { 0xFC, 0x1B, 0xE6, 0xEB, 0x03, 0x1C, 0x54, 0x93, 0x64, 0x53, 0xB1, 0x17, 0x9D, 0x95, 0x1B, 0x4A } } } },
- { JA_JPN, kPlatformFMTowns, { 0x0000058C, 0x0001AD16, { { 0xFC, 0x1B, 0xE6, 0xEB, 0x03, 0x1C, 0x54, 0x93, 0x64, 0x53, 0xB1, 0x17, 0x9D, 0x95, 0x1B, 0x4A } } } },
-
- { JA_JPN, kPlatformPC98, { 0x00000530, 0x00019571, { { 0x38, 0x4F, 0xE0, 0x74, 0x27, 0x21, 0xEC, 0x63, 0x41, 0x32, 0xB1, 0xD9, 0xA5, 0x65, 0x62, 0x71 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1AmigaIntroSFXTableProvider[] = {
- { UNK_LANG, kPlatformAmiga, { 0x00000140, 0x00000D82, { { 0x61, 0xF6, 0x8F, 0xE5, 0xCD, 0x15, 0x58, 0x9F, 0xDF, 0x0E, 0x22, 0xAA, 0x9A, 0xCF, 0xC4, 0xA6 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k1AmigaGameSFXTableProvider[] = {
- { UNK_LANG, kPlatformAmiga, { 0x000003C0, 0x00005505, { { 0x8D, 0x6D, 0x2C, 0x58, 0x50, 0xF7, 0xBF, 0x60, 0xC3, 0x15, 0x20, 0x23, 0x1F, 0x90, 0x3E, 0xD6 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k2SeqplayPakFilesProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000022, 0x000008E0, { { 0xB7, 0x3B, 0x51, 0x46, 0x78, 0x2D, 0x4D, 0x82, 0xD4, 0x30, 0xFC, 0x6E, 0xC4, 0x5B, 0x27, 0x3E } } } }, // DOS floppy + PC98
-
- { UNK_LANG, kPlatformDOS, { 0x00000046, 0x0000121A, { { 0x42, 0xC2, 0x5A, 0xDC, 0x27, 0x2D, 0xB4, 0x44, 0x85, 0x58, 0x0F, 0xB6, 0x6D, 0x76, 0x04, 0x4F } } } }, // CD
- { UNK_LANG, kPlatformDOS, { 0x00000014, 0x000004FA, { { 0xBB, 0x4C, 0x16, 0xEB, 0x56, 0xEF, 0xAC, 0x68, 0x6B, 0x49, 0x96, 0x3A, 0x9F, 0x00, 0x75, 0xF6 } } } }, // demo
- { UNK_LANG, kPlatformDOS, { 0x0000000C, 0x00000308, { { 0xC0, 0xAC, 0x10, 0xF1, 0x12, 0xD1, 0x21, 0x92, 0xA1, 0x62, 0x5B, 0x6E, 0xCF, 0x88, 0x32, 0x7C } } } }, // Lands of Lore demo
-
- { UNK_LANG, kPlatformFMTowns, { 0x00000033, 0x00000BBD, { { 0x92, 0x5B, 0xDA, 0xE3, 0x7C, 0x39, 0xC4, 0x75, 0x24, 0xBA, 0x67, 0x27, 0x6E, 0x21, 0xA3, 0xF7 } } } },
-
- // TODO: Where did this come from?
- //{ UNK_LANG, kPlatformUnknown, { 0x0000002E, 0x00000C09, { { 0x6A, 0x25, 0xF6, 0x03, 0xA6, 0x88, 0xA0, 0x53, 0xE1, 0xF4, 0xB9, 0x0C, 0x71, 0x17, 0x36, 0x6B } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k2SeqplayStringsProvider[] = {
- { EN_ANY, kPlatformDOS, { 0x000008C8, 0x0002FDE3, { { 0x62, 0xD1, 0x6F, 0xBC, 0xEC, 0xE6, 0xCF, 0xE8, 0xD8, 0xE9, 0xDE, 0xFB, 0x09, 0xAF, 0x34, 0x92 } } } }, // floppy
- { EN_ANY, kPlatformDOS, { 0x00000916, 0x00031417, { { 0x3E, 0x15, 0xDA, 0xF4, 0x77, 0x44, 0x80, 0x47, 0xDB, 0x32, 0x0E, 0x6D, 0xCA, 0x32, 0x65, 0x1B } } } }, // CD
- { EN_ANY, kPlatformDOS, { 0x00000102, 0x00005BD6, { { 0xB3, 0x00, 0xE5, 0x39, 0x02, 0x3D, 0xBF, 0xDD, 0x54, 0x70, 0xEA, 0xC1, 0xCB, 0xAC, 0xAA, 0xF7 } } } }, // Lands of Lore demo
-
- { DE_DEU, kPlatformDOS, { 0x000009EC, 0x000370F9, { { 0x56, 0x94, 0xCC, 0xE5, 0x38, 0x19, 0xAD, 0xD1, 0xBB, 0x6A, 0x6E, 0xEC, 0xC5, 0x1B, 0x57, 0x7B } } } }, // floppy
- { DE_DEU, kPlatformDOS, { 0x00000A3F, 0x000389F4, { { 0x51, 0xC1, 0x87, 0x16, 0x53, 0x8C, 0x68, 0x8E, 0x9B, 0x81, 0xA1, 0xD2, 0xCE, 0x5F, 0x83, 0x31 } } } }, // CD
-
- { FR_FRA, kPlatformDOS, { 0x000009C9, 0x00036324, { { 0x2C, 0xC2, 0xD9, 0xCF, 0x90, 0x2A, 0xDF, 0xE9, 0x85, 0x9E, 0x5D, 0xBB, 0x1D, 0x9A, 0x14, 0x69 } } } }, // floppy
- { FR_FRA, kPlatformDOS, { 0x00000995, 0x000352D7, { { 0xED, 0x7C, 0x49, 0x7B, 0x1A, 0x2C, 0x73, 0x61, 0x73, 0xAF, 0x16, 0x89, 0x1E, 0x01, 0xE2, 0xAE } } } }, // CD
-
- { IT_ITA, kPlatformDOS, { 0x00000916, 0x0003188F, { { 0xDC, 0x46, 0x06, 0xE1, 0xB0, 0x66, 0xBC, 0x18, 0x2E, 0x6E, 0x9E, 0xC9, 0xA4, 0x14, 0x8D, 0x08 } } } }, // floppy
- { IT_ITA, kPlatformDOS, { 0x000008C8, 0x00030947, { { 0x7F, 0x75, 0x5F, 0x99, 0x94, 0xFE, 0xA1, 0xE6, 0xEF, 0xB8, 0x93, 0x71, 0x83, 0x1B, 0xAC, 0x4A } } } }, // (fan) CD
-
- { RU_RUS, kPlatformDOS, { 0x00000916, 0x00032C49, { { 0xEA, 0x5C, 0xE5, 0x06, 0x05, 0x5F, 0x36, 0xE8, 0x31, 0x3E, 0xBF, 0x74, 0x73, 0xFB, 0xAB, 0xFF } } } }, // (fan) CD - intro and outro strings haven't been translated in this fan translation
- { RU_RUS, kPlatformDOS, { 0x000008C8, 0x00028639, { { 0xF9, 0x1D, 0x6A, 0x85, 0x23, 0x5E, 0x2A, 0x64, 0xBC, 0x45, 0xB2, 0x48, 0x13, 0x49, 0xD4, 0xF7 } } } }, // (fan) floppy
-
- { EN_ANY, kPlatformFMTowns, { 0x00000990, 0x00030C61, { { 0x60, 0x51, 0x11, 0x83, 0x3F, 0x06, 0xC3, 0xA3, 0xE0, 0xC0, 0x2F, 0x41, 0x29, 0xDE, 0x65, 0xB1 } } } },
- { JA_JPN, kPlatformFMTowns, { 0x000008A8, 0x00036831, { { 0x56, 0x5B, 0x23, 0x61, 0xE8, 0x3B, 0xE1, 0x36, 0xD6, 0x62, 0xD0, 0x84, 0x00, 0x04, 0x05, 0xAD } } } },
-
- { EN_ANY, kPlatformPC98, { 0x000008F4, 0x00030C61, { { 0xA4, 0x4C, 0xD9, 0x05, 0x65, 0x24, 0xE5, 0x3E, 0x6C, 0x8B, 0xEE, 0x8D, 0x4F, 0x09, 0x6F, 0x00 } } } },
- { JA_JPN, kPlatformPC98, { 0x000007F5, 0x00036831, { { 0xF7, 0xCF, 0xF1, 0x2B, 0x26, 0x1E, 0xEC, 0xC8, 0x13, 0xDE, 0xC7, 0x71, 0x72, 0x05, 0x0F, 0xA7 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k2SeqplaySfxFilesProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000173, 0x00008198, { { 0x2D, 0xF5, 0x5C, 0xAE, 0xDB, 0x71, 0x60, 0xFE, 0x78, 0x04, 0xFC, 0xAD, 0x4B, 0x43, 0xB1, 0x4B } } } }, // floppy
- { UNK_LANG, kPlatformDOS, { 0x00000234, 0x0000B0B2, { { 0xE4, 0x19, 0x4F, 0x8C, 0x53, 0xFD, 0x5F, 0x2A, 0xFB, 0x77, 0x1C, 0x32, 0xB3, 0x39, 0x25, 0x85 } } } }, // CD
- { UNK_LANG, kPlatformDOS, { 0x000000DE, 0x00004EA4, { { 0x97, 0xA8, 0x4A, 0xED, 0x12, 0x87, 0xEB, 0x82, 0x42, 0xFA, 0x45, 0x0D, 0x45, 0x8F, 0xFE, 0x76 } } } }, // demo
- { UNK_LANG, kPlatformDOS, { 0x000000C5, 0x00004508, { { 0xBF, 0xA9, 0x1A, 0x37, 0x0B, 0xF8, 0x13, 0x9D, 0x2D, 0x67, 0x3D, 0x9B, 0xE9, 0x16, 0x07, 0x0C } } } }, // Lands of Lore demo
-
- { UNK_LANG, kPlatformFMTowns, { 0x000001A3, 0x00008098, { { 0xA9, 0xD2, 0xE2, 0x32, 0x59, 0xC4, 0x97, 0x74, 0x11, 0x49, 0x8F, 0x2B, 0xBF, 0x00, 0xF9, 0xF1 } } } },
-
- { UNK_LANG, kPlatformPC98, { 0x00000173, 0x00008098, { { 0x29, 0xA6, 0xF1, 0x2D, 0x35, 0x38, 0xFD, 0x3B, 0xF0, 0xB1, 0xE1, 0xFE, 0x45, 0xB1, 0x43, 0xAE } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k2SeqplayTlkFilesProvider[] = {
- { EN_ANY, kPlatformDOS, { 0x0000009D, 0x0000286B, { { 0x58, 0x30, 0x72, 0x62, 0xC8, 0x77, 0x2A, 0x06, 0xD6, 0x24, 0x1A, 0x7A, 0xAF, 0x79, 0xFF, 0xAE } } } },
- { FR_FRA, kPlatformDOS, { 0x0000009D, 0x00002878, { { 0x28, 0x5D, 0x7F, 0x5B, 0x57, 0xC2, 0xFF, 0x73, 0xC1, 0x8E, 0xD6, 0xE0, 0x4D, 0x03, 0x99, 0x2C } } } },
- { DE_DEU, kPlatformDOS, { 0x0000009D, 0x00002885, { { 0x87, 0x24, 0xB6, 0xE9, 0xD6, 0xAA, 0x68, 0x2D, 0x6B, 0x05, 0xDF, 0xE1, 0x2B, 0xA4, 0x79, 0xE5 } } } },
- { IT_ITA, kPlatformDOS, { 0x0000009D, 0x0000286B, { { 0x58, 0x30, 0x72, 0x62, 0xC8, 0x77, 0x2A, 0x06, 0xD6, 0x24, 0x1A, 0x7A, 0xAF, 0x79, 0xFF, 0xAE } } } },
- { RU_RUS, kPlatformDOS, { 0x0000009D, 0x0000286B, { { 0x58, 0x30, 0x72, 0x62, 0xC8, 0x77, 0x2A, 0x06, 0xD6, 0x24, 0x1A, 0x7A, 0xAF, 0x79, 0xFF, 0xAE } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k2SeqplaySeqDataProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x000006F4, 0x0000F5AD, { { 0x23, 0x1E, 0x30, 0xF0, 0xF1, 0x5B, 0xFF, 0x4B, 0xDF, 0xB1, 0x78, 0xD8, 0x48, 0x7A, 0xA3, 0xDD } } } }, // floppy
- { UNK_LANG, kPlatformDOS, { 0x000006F4, 0x0000FA52, { { 0xC8, 0x33, 0xCC, 0x0A, 0x40, 0x8A, 0x96, 0x4F, 0x42, 0x7E, 0x8B, 0x62, 0x9C, 0x2F, 0x33, 0x0B } } } }, // floppy (French)
- { UNK_LANG, kPlatformDOS, { 0x000006F4, 0x0000F8A6, { { 0x8B, 0xF3, 0x80, 0xE1, 0xB8, 0xCA, 0xE1, 0x18, 0x72, 0xA3, 0xF0, 0x4C, 0xBF, 0x81, 0x97, 0x71 } } } }, // floppy (German)
- { UNK_LANG, kPlatformDOS, { 0x000006F4, 0x0000FA35, { { 0x4C, 0x26, 0x1B, 0xF6, 0x8E, 0x73, 0xB7, 0xD2, 0x58, 0x59, 0xB8, 0x97, 0x58, 0xFB, 0x0E, 0x2A } } } }, // floppy (Italian)
- { UNK_LANG, kPlatformDOS, { 0x000006BE, 0x0000E9FF, { { 0x9A, 0xCD, 0x40, 0x44, 0xEF, 0x9F, 0x05, 0x86, 0xDA, 0x49, 0x8A, 0x85, 0x68, 0xDF, 0xA7, 0x55 } } } }, // CD
- { UNK_LANG, kPlatformDOS, { 0x0000027C, 0x00007742, { { 0x42, 0x37, 0xF8, 0xDD, 0xA2, 0x8C, 0xA6, 0x26, 0x89, 0x5F, 0xCF, 0x61, 0xDD, 0x8F, 0xC7, 0x1E } } } }, // demo
- { UNK_LANG, kPlatformDOS, { 0x0000024C, 0x00004C10, { { 0x21, 0x3A, 0x86, 0x60, 0xA8, 0xFF, 0x42, 0x19, 0x35, 0x32, 0xA5, 0xB9, 0x3A, 0xDD, 0xA9, 0xC7 } } } }, // Lands of Lore demo
-
- { UNK_LANG, kPlatformFMTowns, { 0x000006BC, 0x0000DCE3, { { 0x27, 0x09, 0x22, 0xDC, 0xED, 0xDE, 0x88, 0xAE, 0xDB, 0x97, 0x52, 0x12, 0x96, 0x8D, 0x8D, 0x37 } } } },
-
- { UNK_LANG, kPlatformPC98, { 0x000006BE, 0x0000E043, { { 0x35, 0xA0, 0xF1, 0x14, 0xC7, 0x60, 0x80, 0x35, 0xA2, 0xDB, 0xF2, 0x73, 0x96, 0xC0, 0xAE, 0x84 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k2SeqplayCreditsProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000AE8, 0x0002E520, { { 0x19, 0x59, 0xEA, 0x70, 0x23, 0xE2, 0x41, 0x78, 0x2D, 0xF5, 0xE6, 0x28, 0xEA, 0x0C, 0xCF, 0x79 } } } },
- { IT_ITA, kPlatformDOS, { 0x00000AE8, 0x0002EE4A, { { 0x3E, 0x5C, 0x6F, 0x9E, 0x72, 0x2D, 0xAB, 0x17, 0x1D, 0x27, 0xFF, 0x32, 0xD3, 0x48, 0x46, 0xBA } } } }, // (fan) CD
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k2SeqplayCreditsSpecialProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x0000001A, 0x00000829, { { 0xDF, 0x31, 0x0F, 0xB9, 0xC9, 0xC4, 0xF2, 0xB5, 0xF7, 0x98, 0x6F, 0x44, 0x4E, 0x9C, 0xFE, 0xA7 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k2SeqplayIntroTracksProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000010, 0x00000592, { { 0xDE, 0xD9, 0x5E, 0xCA, 0x5A, 0x9F, 0x8B, 0xB1, 0xE2, 0xDB, 0xA4, 0xA1, 0xAF, 0xD4, 0x75, 0x46 } } } }, // floppy
- { UNK_LANG, kPlatformDOS, { 0x00000008, 0x000002C9, { { 0xFA, 0x80, 0x3C, 0x78, 0x66, 0x2C, 0xD5, 0x91, 0x5D, 0xF1, 0xE9, 0xC1, 0x6A, 0x65, 0xEB, 0xD6 } } } }, // CD
- { UNK_LANG, kPlatformDOS, { 0x00000010, 0x00000542, { { 0xE5, 0xAA, 0x6A, 0xB9, 0x19, 0xAB, 0x35, 0x26, 0x43, 0x70, 0x32, 0xEF, 0xB9, 0x7F, 0x0F, 0x19 } } } }, // demo
- { UNK_LANG, kPlatformDOS, { 0x0000001A, 0x0000096C, { { 0xC2, 0xBD, 0x2C, 0x65, 0xD3, 0xFE, 0xF1, 0x6A, 0xE7, 0x34, 0x18, 0x0C, 0x86, 0x95, 0x66, 0x35 } } } }, // Lands of Lore demo
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k2SeqplayFinaleTracksProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000012, 0x00000618, { { 0x22, 0x61, 0x4D, 0x6F, 0xCE, 0x38, 0x64, 0xAB, 0x20, 0xD8, 0x34, 0x33, 0x44, 0x21, 0xE0, 0x23 } } } }, // floppy
- { UNK_LANG, kPlatformDOS, { 0x00000009, 0x0000030C, { { 0x24, 0x3F, 0x57, 0xFA, 0x7E, 0x6D, 0x61, 0x6C, 0x53, 0xBC, 0x44, 0x38, 0x61, 0xE9, 0x3E, 0xE6 } } } }, // CD
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k2SeqplayIntroCDAProvider[] = {
- { UNK_LANG, kPlatformFMTowns, { 0x00000018, 0x00000036, { { 0xCE, 0x10, 0x68, 0x7E, 0x84, 0x68, 0x3A, 0x23, 0x36, 0x41, 0x07, 0xE8, 0x59, 0xDB, 0xA3, 0x31 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k2SeqplayFinaleCDAProvider[] = {
- { UNK_LANG, kPlatformFMTowns, { 0x00000008, 0x000000AE, { { 0x38, 0x47, 0x35, 0xAA, 0xEC, 0xBA, 0xD3, 0xD0, 0x3E, 0x17, 0xFD, 0xB8, 0x9F, 0xB9, 0xAD, 0x61 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k2SeqplayShapeAnimDataProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x000000B8, 0x00000270, { { 0xBD, 0x3B, 0xFA, 0xE6, 0xA0, 0x40, 0x4E, 0x6E, 0x3E, 0x43, 0x81, 0xF3, 0x35, 0x57, 0x62, 0x27 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k2IngamePakFilesProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x0000049F, 0x00012F40, { { 0x4B, 0x2A, 0x84, 0xE3, 0xA5, 0x34, 0xE9, 0xB3, 0xB7, 0x39, 0xF1, 0x1B, 0x4C, 0xE6, 0x43, 0x79 } } } }, // floppy
-
- { UNK_LANG, kPlatformFMTowns, { 0x0000011C, 0x00003FB8, { { 0x66, 0x34, 0xE8, 0x1C, 0xF9, 0xFF, 0x84, 0x90, 0x20, 0x71, 0x42, 0xA3, 0x2C, 0x4A, 0xE9, 0x46 } } } },
-
- { UNK_LANG, kPlatformPC98, { 0x000000F4, 0x00003F57, { { 0x8A, 0xA7, 0x2C, 0xB9, 0x6E, 0x8D, 0x95, 0xBF, 0xF8, 0xB9, 0x98, 0x63, 0x20, 0xF8, 0xB0, 0x7B } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k2IngameSfxFilesProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x000006F1, 0x0001545E, { { 0xD3, 0x8A, 0xA1, 0xD4, 0x83, 0x77, 0x96, 0x6D, 0x87, 0xB1, 0x71, 0x8F, 0x38, 0x6A, 0x34, 0xDC } } } },
- { UNK_LANG, kPlatformFMTowns, { 0x00000967, 0x0002101A, { { 0x09, 0xC7, 0xB7, 0x2A, 0x76, 0xF1, 0x4B, 0x87, 0xC5, 0x83, 0xFF, 0xF3, 0xDB, 0x3C, 0x66, 0x60 } } } },
- { UNK_LANG, kPlatformPC98, { 0x000006F1, 0x0001545E, { { 0xD3, 0x8A, 0xA1, 0xD4, 0x83, 0x77, 0x96, 0x6D, 0x87, 0xB1, 0x71, 0x8F, 0x38, 0x6A, 0x34, 0xDC } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k2IngameSfxIndexProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000358, 0x000074F4, { { 0xC8, 0x30, 0x1D, 0x9C, 0xFC, 0xF8, 0xD5, 0xBA, 0x7E, 0xAB, 0x13, 0x3F, 0x43, 0x50, 0xFA, 0xC4 } } } }, // CD
-
- { UNK_LANG, kPlatformUnknown, { 0x00000358, 0x0000747E, { { 0x20, 0x99, 0x4D, 0xB8, 0xF2, 0x05, 0xF2, 0xA7, 0x07, 0x28, 0x97, 0xFB, 0x70, 0x1F, 0x2A, 0x73 } } } }, // floppy + FM-TOWNS
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k2IngameTracksProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x0000007E, 0x00001E45, { { 0xC6, 0x52, 0xCC, 0x1A, 0x23, 0x3B, 0xDA, 0x03, 0xF3, 0xC2, 0x46, 0xDF, 0x01, 0xA3, 0x9E, 0x50 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k2IngameCDAProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000130, 0x00001B9D, { { 0x9E, 0xFB, 0x01, 0xE7, 0xBA, 0xE1, 0x4F, 0x3C, 0xC5, 0xB9, 0x75, 0x80, 0xEA, 0xAC, 0xB0, 0x0F } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k2IngameTalkObjIndexProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000078, 0x00000A9C, { { 0x27, 0x65, 0xFA, 0xB1, 0xF8, 0x04, 0x7F, 0x93, 0x2B, 0x2D, 0x44, 0x3C, 0x95, 0x13, 0x50, 0xD2 } } } }, // floppy (English)
- { UNK_LANG, kPlatformDOS, { 0x00000078, 0x00000A53, { { 0x18, 0x5B, 0x79, 0x92, 0x54, 0xDB, 0x4B, 0x0C, 0x78, 0x89, 0x7C, 0x59, 0xBF, 0x53, 0x37, 0x14 } } } }, // floppy (German + French)
- { UNK_LANG, kPlatformDOS, { 0x00000078, 0x00000A7C, { { 0x33, 0x89, 0x69, 0xEF, 0x62, 0x94, 0x3A, 0xC0, 0xB2, 0xBA, 0xFB, 0x0C, 0x86, 0x2C, 0xAC, 0x5C } } } }, // floppy (Italian)
- { UNK_LANG, kPlatformDOS, { 0x00000084, 0x00000CD0, { { 0x82, 0x2E, 0xF4, 0xDD, 0x28, 0x75, 0xDD, 0x79, 0x78, 0x62, 0x55, 0x48, 0xDD, 0xF7, 0x16, 0x81 } } } }, // CD
-
- { UNK_LANG, kPlatformFMTowns, { 0x0000007A, 0x00000744, { { 0x74, 0x84, 0xB4, 0xA6, 0x9D, 0x91, 0xBF, 0x24, 0x1E, 0xD5, 0xDE, 0xD4, 0x73, 0x93, 0x1F, 0xE6 } } } },
-
- { UNK_LANG, kPlatformPC98, { 0x00000078, 0x0000099D, { { 0x2F, 0x06, 0x8D, 0x4E, 0x76, 0x9E, 0x92, 0xFD, 0x43, 0xA4, 0x12, 0xED, 0xBA, 0x30, 0xFE, 0x94 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k2IngameTimJpStringsProvider[] = {
- { UNK_LANG, kPlatformFMTowns, { 0x0000002D, 0x00001302, { { 0x15, 0x29, 0xFD, 0xB1, 0xEB, 0xC0, 0x00, 0xA4, 0x19, 0xDA, 0xC7, 0x2E, 0x17, 0x0F, 0x3F, 0xB7 } } } },
- { UNK_LANG, kPlatformPC98, { 0x0000002C, 0x00001302, { { 0xAB, 0xBA, 0xC8, 0x2A, 0xD0, 0xD1, 0x1C, 0xEA, 0x6F, 0x35, 0x12, 0x5D, 0x85, 0xFB, 0x92, 0x84 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k2IngameShapeAnimDataProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000348, 0x0001AAEB, { { 0x67, 0xD1, 0x03, 0xBF, 0x4B, 0xEC, 0x80, 0x26, 0x5D, 0x1D, 0x0E, 0x5B, 0xF1, 0xE8, 0x4C, 0x64 } } } }, // CD
-
- { UNK_LANG, kPlatformUnknown, { 0x00000348, 0x00002473, { { 0xBC, 0x18, 0x51, 0xFA, 0x51, 0x1D, 0x24, 0x7D, 0x44, 0xD0, 0xE2, 0x38, 0x31, 0x33, 0x3B, 0x56 } } } }, // floppy + FM-TOWNS
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k2IngameTlkDemoStringsProvider[] = {
- { EN_ANY, kPlatformDOS, { 0x000000CB, 0x00004741, { { 0xF3, 0x54, 0x37, 0xEE, 0x61, 0x9E, 0xE0, 0x82, 0x64, 0x8B, 0xF3, 0x53, 0xC7, 0x2F, 0x49, 0x1F } } } },
- { FR_FRA, kPlatformDOS, { 0x000000BE, 0x00004327, { { 0x8C, 0xF2, 0x5E, 0x85, 0xDA, 0xA1, 0x91, 0x90, 0xE5, 0xC7, 0x2A, 0xBA, 0x48, 0xC3, 0x9A, 0xCA } } } },
- { DE_DEU, kPlatformDOS, { 0x000000DC, 0x00004C7B, { { 0xC9, 0x75, 0x3A, 0x4A, 0xF4, 0xB0, 0xE8, 0x61, 0x90, 0x74, 0x34, 0x84, 0x53, 0x54, 0xA2, 0x4F } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k3MainMenuStringsProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x000000B0, 0x00003E75, { { 0xA7, 0x91, 0x9B, 0x61, 0x31, 0x12, 0x74, 0xB5, 0x4B, 0x4F, 0x8A, 0x44, 0xA9, 0xB1, 0x03, 0xC0 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k3MusicFilesProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x000001D5, 0x00007436, { { 0x27, 0xC2, 0x96, 0xFF, 0x22, 0xEC, 0xB5, 0x26, 0xF9, 0x4F, 0x04, 0xDD, 0x58, 0x17, 0xFE, 0xC6 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k3ScoreTableProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x000000C8, 0x0000038F, { { 0x4E, 0x2E, 0xC3, 0xD9, 0x13, 0xA0, 0x74, 0x7E, 0xAB, 0xA1, 0x23, 0x2F, 0x11, 0x35, 0x4D, 0xA5 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k3SfxFilesProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x000008BF, 0x0001A766, { { 0xBD, 0x5D, 0x65, 0x5D, 0xC4, 0x34, 0xDF, 0x36, 0xF5, 0xC0, 0xE8, 0x7B, 0x51, 0x9F, 0xE5, 0xC7 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k3SfxMapProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x000004C0, 0x0000C4F9, { { 0x06, 0x61, 0x45, 0x38, 0xC2, 0x6A, 0x12, 0x23, 0x55, 0x2C, 0x7F, 0xA5, 0xE2, 0x79, 0x81, 0x9E } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k3ItemAnimDataProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x000001C8, 0x00003777, { { 0x8F, 0xE8, 0x80, 0x4A, 0x88, 0x83, 0xC0, 0x48, 0x55, 0x47, 0x81, 0xD3, 0xB7, 0xD5, 0x09, 0x8F } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k3ItemMagicTableProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000048, 0x00000F9E, { { 0x87, 0xA7, 0xC0, 0xA2, 0x0F, 0xA3, 0x5B, 0x08, 0x76, 0x6F, 0x02, 0x68, 0x13, 0x17, 0x3B, 0x76 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData k3ItemStringMapProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000048, 0x0000003C, { { 0x4C, 0xA7, 0xAA, 0xB0, 0x3C, 0xCC, 0x78, 0x91, 0x0A, 0xF2, 0x7F, 0x25, 0x80, 0xB3, 0x74, 0x74 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseChargenStrings1Provider[] = {
- { EN_ANY, kPlatformUnknown, { 0x000000CA, 0x00003BC8, { { 0x27, 0xEA, 0xE3, 0x0D, 0x55, 0xB3, 0x69, 0x3E, 0xC2, 0x66, 0x58, 0x64, 0xAA, 0xC2, 0x80, 0x58 } } } },
- { DE_DEU, kPlatformUnknown, { 0x000000C3, 0x000038F6, { { 0x20, 0x68, 0xAB, 0xD4, 0xBF, 0x49, 0x04, 0xC0, 0x91, 0xB4, 0x71, 0xB0, 0xB6, 0xC9, 0x11, 0xF0 } } } }, // EOB 1
- { DE_DEU, kPlatformUnknown, { 0x000000C7, 0x00003ADB, { { 0x0D, 0x03, 0x7A, 0xE6, 0x7D, 0x41, 0x89, 0x49, 0x0C, 0xB6, 0xD0, 0x4F, 0xEA, 0x1E, 0x54, 0xFF } } } }, // EOB 2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseChargenStrings2Provider[] = {
- { EN_ANY, kPlatformUnknown, { 0x0000004B, 0x000011AE, { { 0x28, 0x98, 0x4C, 0xA3, 0x98, 0xB0, 0xA2, 0x17, 0x9C, 0x80, 0x4F, 0x3F, 0x58, 0x3B, 0x2C, 0xFB } } } },
- { DE_DEU, kPlatformUnknown, { 0x0000004E, 0x0000129D, { { 0xED, 0xF3, 0x36, 0x16, 0xE2, 0x1B, 0x32, 0x95, 0xFE, 0xE8, 0x3E, 0x7D, 0xE6, 0x32, 0x34, 0xD4 } } } }, // EOB 1
- { DE_DEU, kPlatformUnknown, { 0x0000004A, 0x00001267, { { 0xD6, 0xE2, 0x27, 0x6A, 0x6F, 0x7E, 0xB4, 0xCE, 0xA8, 0xE9, 0x79, 0x31, 0x5C, 0x13, 0xA1, 0x8F } } } }, // EOB 2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseChargenStartLevelsProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x0000003C, 0x00000054, { { 0xAB, 0x68, 0x74, 0x3E, 0x0D, 0x45, 0xA3, 0x50, 0xA7, 0x72, 0x6A, 0xDF, 0x9C, 0x23, 0x98, 0x74 } } } }, // EOB 1
- { UNK_LANG, kPlatformUnknown, { 0x0000003C, 0x000000B1, { { 0xFD, 0x3F, 0x6B, 0xB5, 0xE4, 0xEE, 0x32, 0x3B, 0xBD, 0x72, 0x37, 0x88, 0x52, 0x84, 0xBD, 0xC6 } } } }, // EOB 2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseChargenStatStringsProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x00000055, 0x000015D6, { { 0xB8, 0x29, 0x4B, 0xA4, 0x4F, 0x45, 0x16, 0x1A, 0x07, 0x28, 0x14, 0x86, 0x1B, 0xDF, 0xAC, 0xDF } } } },
- { DE_DEU, kPlatformUnknown, { 0x00000056, 0x000015F9, { { 0xBB, 0x5A, 0x7D, 0xCF, 0xC3, 0x90, 0x9A, 0xB3, 0x73, 0xB2, 0x4D, 0x46, 0xB8, 0x89, 0x7D, 0xAE } } } }, // EOB 1
- { DE_DEU, kPlatformUnknown, { 0x00000053, 0x0000159A, { { 0x1D, 0xA6, 0x84, 0xDB, 0xC5, 0x81, 0xC7, 0xF0, 0x1C, 0xA4, 0xE3, 0x10, 0x4F, 0x8A, 0xF3, 0xCE } } } }, // EOB 2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseChargenRaceSexStringsProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x00000098, 0x00002572, { { 0x8D, 0xF9, 0xDE, 0x92, 0xFC, 0xA8, 0xFC, 0xE9, 0x0A, 0x98, 0x6D, 0xA4, 0x6F, 0x21, 0xCD, 0xF4 } } } },
- { DE_DEU, kPlatformUnknown, { 0x000000AA, 0x00002A1E, { { 0x8E, 0xAF, 0x4B, 0x20, 0xEA, 0xFE, 0x71, 0x8E, 0x8B, 0x4B, 0x46, 0x62, 0x91, 0x48, 0x08, 0xAF } } } }, // EOB 1
- { DE_DEU, kPlatformUnknown, { 0x00000098, 0x00002502, { { 0xA4, 0x8B, 0x20, 0xF5, 0x97, 0xFE, 0x34, 0x6D, 0x9F, 0xF0, 0xA8, 0xE9, 0xE8, 0xFA, 0x23, 0x9B } } } }, // EOB 2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseChargenClassStringsProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x000000D5, 0x000035A7, { { 0xAF, 0x89, 0x9A, 0x11, 0x9A, 0x8D, 0x39, 0x6F, 0x26, 0x41, 0x4E, 0x20, 0xAD, 0x91, 0xC5, 0xDA } } } },
- { DE_DEU, kPlatformUnknown, { 0x000000FA, 0x00003FD8, { { 0xBD, 0x78, 0xF7, 0xEC, 0x9D, 0x9A, 0x3A, 0x22, 0xAB, 0xD9, 0x10, 0xAD, 0x8E, 0x1D, 0x4D, 0xDE } } } }, // EOB 1
- { DE_DEU, kPlatformUnknown, { 0x000000E4, 0x00003BE5, { { 0xDE, 0x1B, 0x25, 0x4F, 0xE6, 0xD0, 0xB5, 0x95, 0xD0, 0xA6, 0x69, 0xE6, 0x53, 0xB8, 0x20, 0x1E } } } }, // EOB 2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseChargenAlignmentStringsProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x00000078, 0x00001F44, { { 0xBB, 0x52, 0x3C, 0xA6, 0x79, 0x87, 0xDC, 0xB8, 0x21, 0x7A, 0xA0, 0x17, 0x45, 0xEA, 0xF2, 0x50 } } } },
- { DE_DEU, kPlatformUnknown, { 0x0000008A, 0x00002423, { { 0xA3, 0x36, 0x0D, 0x64, 0x33, 0xFD, 0x54, 0xA5, 0xA9, 0xD7, 0xFA, 0x34, 0x39, 0xAD, 0x6A, 0x98 } } } }, // EOB 1
- { DE_DEU, kPlatformUnknown, { 0x0000007F, 0x000021F8, { { 0xBD, 0xB2, 0x06, 0xF9, 0xC9, 0x36, 0x5D, 0x91, 0x43, 0x08, 0x3A, 0x2C, 0x5F, 0x1C, 0xF3, 0x9C } } } }, // EOB 2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseChargenEnterGameStringsProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x00000020, 0x00000A0E, { { 0x98, 0x7F, 0x2C, 0x2E, 0xBB, 0x5E, 0xAA, 0xD0, 0x72, 0xF5, 0xBC, 0x4A, 0x34, 0x5B, 0xB4, 0xF5 } } } },
- { DE_DEU, kPlatformUnknown, { 0x00000021, 0x00000AB6, { { 0x02, 0x7F, 0x19, 0x5A, 0xA9, 0xB7, 0x8C, 0xE2, 0xF7, 0x35, 0xB0, 0xD8, 0xA8, 0x0C, 0x24, 0x44 } } } }, // EOB 1
- { DE_DEU, kPlatformUnknown, { 0x0000001E, 0x00000925, { { 0xDA, 0x83, 0x00, 0xD2, 0x94, 0xF0, 0xD8, 0xFC, 0x3D, 0xA8, 0xD2, 0x4E, 0xF2, 0xD7, 0x2B, 0x7E } } } }, // EOB 2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseChargenClassMinStatsProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x000000B4, 0x00000165, { { 0x83, 0x5E, 0x91, 0x10, 0x4D, 0x75, 0x6B, 0xF9, 0x45, 0x1B, 0x65, 0x13, 0x37, 0x3E, 0xC0, 0xAE } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseChargenRaceMinStatsProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000048, 0x000000B2, { { 0x08, 0xF0, 0x8F, 0x22, 0x9D, 0xD8, 0xBE, 0x52, 0x70, 0x7C, 0xCA, 0x8D, 0xB2, 0xF5, 0xC6, 0xB8 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseChargenRaceMaxStatsProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000048, 0x00000479, { { 0xBD, 0xA0, 0x8C, 0xC2, 0x05, 0xCA, 0x0D, 0x4B, 0x82, 0x9B, 0x3D, 0xB5, 0x4B, 0xDB, 0xD2, 0xC1 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseSaveThrowTable1Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000032, 0x00000214, { { 0x3D, 0x89, 0x30, 0x0A, 0x5C, 0x4A, 0x0F, 0xC3, 0xC7, 0x6B, 0x72, 0x7C, 0x12, 0x51, 0x8D, 0x8E } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseSaveThrowTable2Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000019, 0x000000E7, { { 0xF4, 0x0D, 0xDF, 0xA3, 0x23, 0x71, 0x76, 0x2A, 0xC5, 0x6F, 0xF1, 0x59, 0x5F, 0x45, 0x73, 0x05 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseSaveThrowTable3Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000023, 0x00000155, { { 0x42, 0x98, 0x84, 0x00, 0x70, 0x8A, 0x7B, 0x26, 0xC0, 0x96, 0xA3, 0x28, 0x41, 0x36, 0x4B, 0x21 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseSaveThrowTable4Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x0000001E, 0x0000013B, { { 0xAB, 0x84, 0x2B, 0x0A, 0xC2, 0x46, 0xFF, 0x83, 0x03, 0xF8, 0x3F, 0x32, 0x53, 0xA2, 0x95, 0x65 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseSaveThrwLvlIndexProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000006, 0x00000070, { { 0x57, 0x48, 0x5F, 0x75, 0x79, 0xD4, 0xAA, 0x7D, 0xB7, 0xEB, 0x19, 0x9F, 0xCF, 0x99, 0x29, 0x29 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseSaveThrwModDivProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000006, 0x00000012, { { 0x50, 0x29, 0x51, 0x65, 0x0B, 0xF1, 0xCC, 0xDA, 0x2C, 0xA4, 0x7E, 0xEE, 0x20, 0xB0, 0x29, 0xB1 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseSaveThrwModExtProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000006, 0x00000030, { { 0x07, 0x7D, 0x61, 0x1C, 0x95, 0xEC, 0x9A, 0xCE, 0xA1, 0x29, 0x83, 0x2F, 0xCA, 0x95, 0x95, 0xF5 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBasePryDoorStringsProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x000000E8, 0x00004D9F, { { 0xDE, 0x01, 0x69, 0x00, 0x0B, 0x32, 0xFA, 0x20, 0xB8, 0x11, 0xD6, 0xD9, 0xE2, 0xEA, 0xF5, 0xE8 } } } }, // EOB 1
- { EN_ANY, kPlatformUnknown, { 0x000000D2, 0x000043D2, { { 0x82, 0x3C, 0xF4, 0x4A, 0x87, 0x84, 0xFE, 0xF9, 0xBA, 0xC6, 0x67, 0x3A, 0x0D, 0x0F, 0x76, 0x78 } } } }, // EOB 2
- { DE_DEU, kPlatformUnknown, { 0x00000128, 0x0000657C, { { 0xA3, 0xC8, 0x48, 0xA7, 0x1F, 0x75, 0xDF, 0xB0, 0x37, 0xDA, 0x75, 0x2E, 0x9F, 0x4E, 0x45, 0xB0 } } } }, // EOB 1
- { DE_DEU, kPlatformUnknown, { 0x000000D9, 0x00004769, { { 0x24, 0x59, 0x00, 0x8F, 0x9A, 0x3E, 0x95, 0xAB, 0x14, 0x9A, 0x3B, 0x19, 0x34, 0xDB, 0x9B, 0x18 } } } }, // EOB 2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseWarningStringsProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x00000052, 0x00001A7B, { { 0x81, 0x7A, 0xDF, 0xD2, 0x4F, 0xA7, 0x92, 0xA7, 0x44, 0xE5, 0x22, 0x73, 0xF6, 0xB3, 0x29, 0x5C } } } }, // EOB 1
- { EN_ANY, kPlatformUnknown, { 0x00000085, 0x00002B5C, { { 0xF1, 0xCE, 0x7C, 0x53, 0xEF, 0x5B, 0x59, 0x71, 0xA9, 0xEB, 0x00, 0xBA, 0xB7, 0x59, 0xC5, 0x2E } } } }, // EOB 2
- { DE_DEU, kPlatformUnknown, { 0x0000005F, 0x00001FD2, { { 0xBA, 0x85, 0x97, 0x63, 0x84, 0x80, 0x79, 0x44, 0x50, 0x99, 0x1A, 0x01, 0x37, 0x37, 0x0E, 0xD1 } } } }, // EOB 1
- { DE_DEU, kPlatformUnknown, { 0x00000096, 0x000032BF, { { 0x07, 0x95, 0x91, 0x1A, 0x1B, 0xC8, 0xA3, 0xEE, 0x76, 0x0A, 0x48, 0x11, 0x37, 0x6F, 0xBA, 0x05 } } } }, // EOB 1
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseItemSuffixStringsRingsProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x0000002B, 0x00000F7B, { { 0x8A, 0x27, 0x87, 0x81, 0x5F, 0x74, 0x27, 0xA9, 0x5E, 0x1B, 0xEE, 0xC0, 0xF7, 0x22, 0x8F, 0x57 } } } },
- { DE_DEU, kPlatformUnknown, { 0x00000022, 0x00000C02, { { 0x7D, 0x5F, 0x40, 0xEA, 0xAD, 0xDD, 0x1B, 0xA0, 0xA6, 0xE0, 0x57, 0x7D, 0x0D, 0x60, 0xF4, 0x2C } } } }, // EOB 1
- { DE_DEU, kPlatformUnknown, { 0x0000002E, 0x00000FF2, { { 0xE1, 0x50, 0xB7, 0xE2, 0xEF, 0xAD, 0x5B, 0x6D, 0x27, 0x35, 0x9C, 0xE7, 0x2D, 0xB2, 0x2E, 0xD0 } } } }, // EOB 2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseItemSuffixStringsPotionsProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x00000054, 0x00001DDB, { { 0xB6, 0x78, 0xD9, 0x09, 0x1D, 0x09, 0x63, 0xF8, 0x96, 0x74, 0xF0, 0x75, 0x23, 0xF5, 0xD4, 0xC4 } } } },
- { DE_DEU, kPlatformUnknown, { 0x00000064, 0x000024ED, { { 0x10, 0x5A, 0xB8, 0xCA, 0x0F, 0x0D, 0x44, 0x19, 0x9D, 0x3D, 0x76, 0x54, 0xA1, 0x69, 0x97, 0x8B } } } }, // EOB 1
- { DE_DEU, kPlatformUnknown, { 0x0000006F, 0x00002792, { { 0x1A, 0x71, 0x2B, 0xCC, 0xCA, 0xDA, 0xF6, 0xED, 0x5E, 0xF0, 0x24, 0x20, 0xD7, 0x2D, 0x18, 0x49 } } } }, // EOB 2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseItemSuffixStringsWandsProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x0000003C, 0x000014EB, { { 0xB5, 0x38, 0x35, 0x57, 0xF2, 0xF8, 0x0E, 0xBA, 0x75, 0x03, 0x1C, 0xCD, 0x46, 0x7D, 0x03, 0x83 } } } }, // EOB 1
- { EN_ANY, kPlatformUnknown, { 0x0000004A, 0x000019B2, { { 0x44, 0x10, 0xE4, 0xAF, 0xAB, 0x19, 0x25, 0x87, 0x2B, 0x15, 0x1C, 0x4C, 0x03, 0x50, 0x41, 0xC4 } } } }, // EOB 2
- { DE_DEU, kPlatformUnknown, { 0x00000040, 0x000016B5, { { 0xEC, 0xF4, 0x71, 0xC1, 0x69, 0x5C, 0xF9, 0xC1, 0xED, 0xC1, 0xED, 0x0C, 0x25, 0x3E, 0x13, 0xB1 } } } }, // EOB 1
- { DE_DEU, kPlatformUnknown, { 0x00000069, 0x0000252B, { { 0x12, 0x06, 0xEA, 0x2F, 0xAF, 0x47, 0x55, 0x52, 0xB6, 0xD9, 0x11, 0xA4, 0x4F, 0x30, 0xCE, 0x9D } } } }, // EOB 2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseRipItemStringsProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x00000025, 0x00000AEA, { { 0x7A, 0x2D, 0x03, 0xA5, 0x94, 0xD1, 0xA2, 0x2C, 0x41, 0x1F, 0xEB, 0x5C, 0xFB, 0xB2, 0xC6, 0x9E } } } },
- { DE_DEU, kPlatformUnknown, { 0x00000024, 0x00000B1B, { { 0xD0, 0x26, 0x19, 0x0B, 0xA5, 0x8A, 0x38, 0x73, 0x14, 0x25, 0x40, 0x5D, 0x24, 0xB8, 0x4E, 0xC5 } } } }, // EOB 1
- { DE_DEU, kPlatformUnknown, { 0x0000002E, 0x00000D38, { { 0xCE, 0xC5, 0x00, 0x63, 0xBB, 0xF0, 0xC4, 0x0D, 0x50, 0x2B, 0x82, 0x1C, 0xC0, 0xCD, 0xF1, 0xAF } } } }, // EOB 2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseCursedStringProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x0000000D, 0x000003C7, { { 0x7F, 0x6B, 0x6A, 0xFE, 0x63, 0xF4, 0x17, 0xAF, 0xFD, 0x00, 0x31, 0x4A, 0x20, 0x9E, 0x8C, 0xEB } } } }, // EOB 1
- { EN_ANY, kPlatformUnknown, { 0x0000000D, 0x000003C7, { { 0x59, 0xD8, 0x84, 0x25, 0xE0, 0x06, 0x51, 0xA4, 0x70, 0xC5, 0x78, 0x22, 0xF0, 0x2D, 0xA0, 0x43 } } } }, // EOB 2
- { DE_DEU, kPlatformUnknown, { 0x00000010, 0x00000514, { { 0x97, 0x41, 0xA6, 0xAE, 0xF8, 0xA8, 0x3E, 0x85, 0xA8, 0x16, 0x01, 0x15, 0x0E, 0x46, 0x13, 0x45 } } } }, // EOB 1
- { DE_DEU, kPlatformUnknown, { 0x00000013, 0x000005A5, { { 0xEC, 0xD3, 0xA5, 0xD2, 0xAD, 0x7C, 0x5E, 0x0F, 0x42, 0xBC, 0x6E, 0xDE, 0x7E, 0x36, 0x0B, 0x43 } } } }, // EOB 2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseEnchantedStringProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000007, 0x0000016C, { { 0x98, 0x62, 0xD3, 0xA3, 0x11, 0xAE, 0x0A, 0xBA, 0x8F, 0xE8, 0x30, 0x0B, 0xDC, 0x12, 0x90, 0x3B } } } }, // EOB 1
- { UNK_LANG, kPlatformUnknown, { 0x00000007, 0x0000016C, { { 0x01, 0x91, 0xBD, 0x89, 0xAE, 0x0E, 0x71, 0xEE, 0xBE, 0x31, 0xD9, 0x55, 0x21, 0x61, 0x19, 0xAE } } } }, // EOB 2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseMagicObjectStringsProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x0000002B, 0x00000E7D, { { 0x7E, 0x8F, 0x17, 0xEB, 0xE5, 0x5D, 0xEB, 0x9A, 0x84, 0xFF, 0x86, 0x6A, 0x01, 0x3E, 0x04, 0x84 } } } },
- { DE_DEU, kPlatformUnknown, { 0x0000003A, 0x000014E4, { { 0x3D, 0x34, 0x3C, 0xCA, 0xDC, 0xD1, 0xCF, 0x15, 0x69, 0x57, 0xC3, 0xB1, 0x58, 0xDF, 0xE9, 0x9D } } } }, // EOB 1
- { DE_DEU, kPlatformUnknown, { 0x0000002A, 0x00000EE4, { { 0x9C, 0x38, 0x4B, 0x9B, 0x67, 0x30, 0x4E, 0x88, 0xA9, 0xA2, 0xF8, 0x78, 0x8E, 0xC7, 0xC3, 0x86 } } } }, // EOB 2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseMagicObject5StringProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x00000006, 0x000001FE, { { 0x74, 0x8D, 0xB9, 0x76, 0xD2, 0x2F, 0x60, 0xD2, 0x36, 0x45, 0x98, 0x4C, 0x0A, 0xE5, 0xE5, 0x0D } } } },
- { DE_DEU, kPlatformUnknown, { 0x00000006, 0x00000204, { { 0xE4, 0xC1, 0xAD, 0x71, 0x87, 0x80, 0x9D, 0x97, 0x91, 0x80, 0x3F, 0x71, 0xD3, 0x62, 0x06, 0xD5 } } } }, // EOB 1
- { DE_DEU, kPlatformUnknown, { 0x00000007, 0x0000027A, { { 0x44, 0x47, 0x79, 0x46, 0x9B, 0xE5, 0xBD, 0x3C, 0xE8, 0x8D, 0xC6, 0xC5, 0x4E, 0x88, 0x13, 0xC0 } } } }, // EOB 2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBasePatternSuffixProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x00000009, 0x00000245, { { 0x67, 0x3F, 0x33, 0xA5, 0x3B, 0x5D, 0x2C, 0x9E, 0x15, 0x82, 0x04, 0xE2, 0xD7, 0x34, 0x42, 0x24 } } } },
- { DE_DEU, kPlatformUnknown, { 0x00000006, 0x0000015D, { { 0x33, 0xD6, 0x91, 0x2D, 0xED, 0xE1, 0x43, 0x42, 0x23, 0xB9, 0xE9, 0x3D, 0x48, 0x82, 0x92, 0x1E } } } }, // EOB 1
- { DE_DEU, kPlatformUnknown, { 0x00000008, 0x00000219, { { 0xCD, 0xDC, 0x7F, 0x8B, 0xBE, 0xD6, 0x05, 0x37, 0xDA, 0xDC, 0x11, 0xC3, 0x1E, 0x7A, 0xE7, 0x13 } } } }, // EOB 2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBasePatternGrFix1Provider[] = {
- { EN_ANY, kPlatformUnknown, { 0x00000009, 0x00000245, { { 0x67, 0x3F, 0x33, 0xA5, 0x3B, 0x5D, 0x2C, 0x9E, 0x15, 0x82, 0x04, 0xE2, 0xD7, 0x34, 0x42, 0x24 } } } },
- { DE_DEU, kPlatformUnknown, { 0x00000006, 0x0000015D, { { 0x33, 0xD6, 0x91, 0x2D, 0xED, 0xE1, 0x43, 0x42, 0x23, 0xB9, 0xE9, 0x3D, 0x48, 0x82, 0x92, 0x1E } } } }, // EOB 1
- { DE_DEU, kPlatformUnknown, { 0x00000007, 0x0000018A, { { 0x02, 0x5C, 0x86, 0xD9, 0x62, 0x0C, 0x71, 0xB3, 0x77, 0x9C, 0x7B, 0xBC, 0x4D, 0x5B, 0xDB, 0xE7 } } } }, // EOB 2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBasePatternGrFix2Provider[] = {
- { EN_ANY, kPlatformUnknown, { 0x00000009, 0x00000245, { { 0x67, 0x3F, 0x33, 0xA5, 0x3B, 0x5D, 0x2C, 0x9E, 0x15, 0x82, 0x04, 0xE2, 0xD7, 0x34, 0x42, 0x24 } } } },
- { DE_DEU, kPlatformUnknown, { 0x00000006, 0x0000015D, { { 0x33, 0xD6, 0x91, 0x2D, 0xED, 0xE1, 0x43, 0x42, 0x23, 0xB9, 0xE9, 0x3D, 0x48, 0x82, 0x92, 0x1E } } } }, // EOB 1
- { DE_DEU, kPlatformUnknown, { 0x00000006, 0x00000150, { { 0x48, 0xBE, 0xED, 0xD3, 0xA5, 0x2E, 0xCD, 0xE0, 0x34, 0xBA, 0xA6, 0x8D, 0x7D, 0x00, 0xA2, 0xFF } } } }, // EOB 2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseValidateArmorStringProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x00000023, 0x00000B78, { { 0xC2, 0x33, 0x6B, 0xB9, 0xE1, 0x5E, 0x88, 0x5E, 0x22, 0xF2, 0x97, 0x83, 0xF8, 0xC8, 0x8C, 0xAB } } } },
- { DE_DEU, kPlatformUnknown, { 0x00000026, 0x00000D19, { { 0xAD, 0x19, 0xE2, 0xDE, 0x04, 0xF9, 0x8F, 0x92, 0xAC, 0x1A, 0x05, 0xEA, 0x7B, 0xB5, 0x9F, 0x09 } } } }, // EOB 1
- { DE_DEU, kPlatformUnknown, { 0x00000029, 0x00000E7A, { { 0xEC, 0xA8, 0x2E, 0x8D, 0xB1, 0xC8, 0x0F, 0xCD, 0x24, 0xBD, 0x4B, 0x39, 0x16, 0xC9, 0x53, 0x08 } } } }, // EOB 2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseValidateCursedStringProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x0000002E, 0x00000F35, { { 0xE7, 0x0E, 0xA1, 0xCE, 0xCC, 0x13, 0xBC, 0x4B, 0x2B, 0x19, 0xEB, 0xA4, 0x05, 0xCF, 0xCF, 0x65 } } } },
- { DE_DEU, kPlatformUnknown, { 0x00000037, 0x000012D8, { { 0x3C, 0x7F, 0x16, 0xCE, 0x40, 0x58, 0xF1, 0x3A, 0xAB, 0x4C, 0x37, 0x82, 0x32, 0x88, 0xA4, 0x2D } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseValidateNoDropStringProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x0000001F, 0x00000A8F, { { 0x61, 0x99, 0x3E, 0x36, 0x49, 0x19, 0xB4, 0xE4, 0xBC, 0xFA, 0xB5, 0x71, 0x0E, 0xD6, 0x15, 0x3C } } } }, // EOB 1
- { EN_ANY, kPlatformUnknown, { 0x00000020, 0x00000AB6, { { 0xAA, 0x0E, 0x64, 0xD1, 0xA2, 0xA6, 0x62, 0x76, 0x51, 0xDF, 0x9E, 0x76, 0x85, 0x42, 0xE1, 0x4A } } } }, // EOB 2
- { DE_DEU, kPlatformUnknown, { 0x00000024, 0x00000C31, { { 0x10, 0xD9, 0x55, 0x69, 0xFE, 0x0A, 0x8C, 0xE5, 0xF7, 0x05, 0x5F, 0x09, 0x3B, 0xC9, 0x93, 0x38 } } } }, // EOB 1
- { DE_DEU, kPlatformUnknown, { 0x00000027, 0x00000D9F, { { 0xA5, 0xF0, 0x8E, 0x78, 0x0A, 0x37, 0x31, 0xDC, 0xE0, 0xDF, 0xE5, 0xCB, 0x86, 0xDC, 0x21, 0x73 } } } }, // EOB 2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBasePotionStringsProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x00000017, 0x0000070E, { { 0xD9, 0xCB, 0x26, 0xB6, 0x6F, 0x17, 0x12, 0xB7, 0xB0, 0x95, 0x1B, 0x2A, 0xD8, 0x83, 0x0D, 0x2B } } } },
- { DE_DEU, kPlatformUnknown, { 0x0000001E, 0x000009BD, { { 0xCA, 0xD0, 0x29, 0xB0, 0x7A, 0x2B, 0x0B, 0x69, 0xCA, 0xA4, 0xCA, 0x97, 0xCF, 0x8B, 0x03, 0xAD } } } }, // EOB 1
- { DE_DEU, kPlatformUnknown, { 0x0000001D, 0x00000964, { { 0x5D, 0xE2, 0xA5, 0x0D, 0x72, 0xE9, 0x8F, 0xC9, 0xFA, 0xF3, 0x41, 0x5A, 0x3F, 0x33, 0xAA, 0x15 } } } }, // EOB 2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseWandStringProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x00000035, 0x000011EC, { { 0x7C, 0x3D, 0xF1, 0x28, 0x0C, 0x23, 0xD3, 0x18, 0xEE, 0xAD, 0xA7, 0xF4, 0x58, 0xD7, 0x1C, 0x8E } } } }, // EOB 1
- { EN_ANY, kPlatformUnknown, { 0x00000029, 0x00000E47, { { 0xED, 0x2E, 0xD4, 0x4D, 0xDB, 0x90, 0x3F, 0xD0, 0xFB, 0x95, 0xB8, 0xF2, 0xCF, 0x06, 0x08, 0xAF } } } }, // EOB 2
- { DE_DEU, kPlatformUnknown, { 0x00000046, 0x0000186E, { { 0x54, 0x8F, 0x53, 0x34, 0xE8, 0x81, 0x76, 0x71, 0x53, 0x3F, 0x99, 0xE7, 0xCF, 0xB7, 0xC9, 0xD9 } } } }, // EOB 1
- { DE_DEU, kPlatformUnknown, { 0x0000002F, 0x00001070, { { 0x86, 0x18, 0x00, 0x54, 0x05, 0x3D, 0xC2, 0x26, 0xA7, 0xD9, 0x68, 0xE6, 0xC2, 0x0D, 0x26, 0x99 } } } }, // EOB 2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseItemMisuseStringsProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x00000066, 0x000022F6, { { 0xE8, 0xB9, 0x07, 0x61, 0x29, 0x90, 0xB0, 0x22, 0x30, 0xC5, 0x0F, 0xAD, 0xCA, 0x6C, 0x83, 0xC6 } } } },
- { DE_DEU, kPlatformUnknown, { 0x00000068, 0x00002472, { { 0xCA, 0xD7, 0xFD, 0x5B, 0x65, 0x72, 0xC7, 0x15, 0xB3, 0xFE, 0xFC, 0xEF, 0x53, 0xFB, 0x57, 0x6C } } } }, // EOB 1
- { DE_DEU, kPlatformUnknown, { 0x0000007E, 0x00002C87, { { 0x5E, 0x11, 0xC9, 0x93, 0xF4, 0xAB, 0x1A, 0x9D, 0xA7, 0x62, 0x71, 0x94, 0x37, 0xCA, 0xE2, 0x25 } } } }, // EOB 2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseTakenStringsProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x00000009, 0x0000026E, { { 0x3B, 0x73, 0x70, 0x2E, 0x22, 0x90, 0x0D, 0xC1, 0xDE, 0x32, 0x11, 0xCC, 0x97, 0xBA, 0xA3, 0x58 } } } },
- { DE_DEU, kPlatformUnknown, { 0x0000000F, 0x000004ED, { { 0x8D, 0x12, 0x1E, 0x91, 0xD3, 0xF4, 0x34, 0x15, 0xC7, 0x4F, 0xE7, 0x23, 0x5B, 0xE8, 0x66, 0xB7 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBasePotionEffectStringsProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x00000065, 0x0000248F, { { 0x4F, 0x60, 0x7F, 0xA7, 0x6F, 0x81, 0xD4, 0xAA, 0x68, 0xD5, 0xAA, 0xBE, 0xBC, 0xD4, 0x92, 0x3A } } } }, // EOB 1
- { EN_ANY, kPlatformUnknown, { 0x0000005D, 0x0000219D, { { 0x87, 0x60, 0x9F, 0xF3, 0x1B, 0x30, 0x4B, 0x2B, 0xE4, 0x94, 0xEF, 0x22, 0xEA, 0x36, 0xE4, 0x7F } } } }, // EOB 2
- { DE_DEU, kPlatformUnknown, { 0x0000006E, 0x00002840, { { 0x04, 0xF8, 0x53, 0x38, 0x09, 0xD8, 0x58, 0xFC, 0x5F, 0xE9, 0x69, 0xFB, 0x9C, 0x0D, 0x92, 0x2E } } } }, // EOB 1
- { DE_DEU, kPlatformUnknown, { 0x00000059, 0x000020D2, { { 0xB6, 0xA1, 0x57, 0xD6, 0x46, 0xE3, 0xCF, 0x04, 0x5A, 0xC8, 0xBB, 0x59, 0x8D, 0xE3, 0x6F, 0xBF } } } }, // EOB 2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseYesNoStringsProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x00000007, 0x0000022E, { { 0xF1, 0x30, 0x61, 0xA7, 0x20, 0x71, 0x3B, 0x75, 0xBE, 0xA7, 0xD6, 0x78, 0x34, 0xF7, 0x19, 0x06 } } } },
- { DE_DEU, kPlatformUnknown, { 0x00000008, 0x00000275, { { 0xAF, 0x3E, 0xC5, 0x5A, 0x60, 0x34, 0x9B, 0x39, 0x37, 0x9E, 0xE2, 0x17, 0x23, 0x8E, 0x23, 0x23 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kRpgCommonMoreStringsProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x00000005, 0x00000133, { { 0xA6, 0x1A, 0x3A, 0xB8, 0xCC, 0x92, 0xB8, 0xBE, 0x28, 0xD6, 0x64, 0x8F, 0x0A, 0x2A, 0x39, 0xCD } } } },
- { DE_DEU, kPlatformUnknown, { 0x00000005, 0x0000012C, { { 0x82, 0x30, 0x00, 0xD6, 0xFA, 0x53, 0x17, 0x69, 0x64, 0xCA, 0xFE, 0x0F, 0x92, 0xEF, 0x87, 0x7A } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseNpcMaxStringsProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x00000052, 0x00001D23, { { 0x95, 0xB0, 0xBF, 0xF9, 0xE6, 0x8C, 0xCF, 0x9B, 0x36, 0xE3, 0x81, 0x22, 0x1E, 0x68, 0x9E, 0xBE } } } },
- { DE_DEU, kPlatformUnknown, { 0x00000064, 0x00002341, { { 0xC0, 0xA6, 0xCD, 0x5E, 0x8E, 0xFA, 0x89, 0xE4, 0x98, 0xE5, 0x3D, 0x13, 0x6B, 0xE7, 0x8F, 0x6E } } } }, // EoB 1
- { DE_DEU, kPlatformUnknown, { 0x0000003E, 0x00001613, { { 0x4E, 0x31, 0x7F, 0xC4, 0xC7, 0x9C, 0xB5, 0x7D, 0x36, 0x85, 0xD8, 0x81, 0xE2, 0x06, 0xF9, 0xAE } } } }, // EoB 2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseOkStringsProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x00000003, 0x0000009A, { { 0x88, 0xD2, 0x76, 0x1C, 0x80, 0x02, 0xC5, 0x5B, 0x35, 0x57, 0x0E, 0xEB, 0xCA, 0xD6, 0xC9, 0x2E } } } },
- { DE_DEU, kPlatformUnknown, { 0x00000003, 0x0000009A, { { 0x88, 0xD2, 0x76, 0x1C, 0x80, 0x02, 0xC5, 0x5B, 0x35, 0x57, 0x0E, 0xEB, 0xCA, 0xD6, 0xC9, 0x2E } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseNpcJoinStringsProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x00000015, 0x000006C7, { { 0x5A, 0xBF, 0xA2, 0x3E, 0x36, 0xC4, 0x23, 0xC8, 0xA8, 0x86, 0x06, 0x80, 0xAF, 0xB1, 0xDD, 0xAB } } } },
- { DE_DEU, kPlatformUnknown, { 0x00000020, 0x00000A93, { { 0x4A, 0xFD, 0x70, 0xB7, 0x7A, 0x0B, 0x7C, 0x32, 0x07, 0x5A, 0x4A, 0xC7, 0x84, 0x9D, 0x2D, 0xF3 } } } }, // EoB 1
- { DE_DEU, kPlatformUnknown, { 0x00000018, 0x00000848, { { 0xC9, 0xEE, 0x71, 0x04, 0xA2, 0xA5, 0x52, 0x87, 0x7C, 0x6D, 0x3C, 0x15, 0x7D, 0x41, 0xE0, 0xE7 } } } }, // EoB 2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseCancelStringsProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x00000007, 0x000001A6, { { 0x21, 0xED, 0xF9, 0x71, 0xEF, 0x74, 0xD7, 0x9E, 0xF3, 0x02, 0xE5, 0x03, 0x06, 0xDE, 0xD5, 0x09 } } } },
- { DE_DEU, kPlatformUnknown, { 0x0000000A, 0x0000027A, { { 0xBD, 0x88, 0xB2, 0xA0, 0xAF, 0x8D, 0xFE, 0x5B, 0xAC, 0xDF, 0xB5, 0x9F, 0xA0, 0x23, 0x6E, 0xAE } } } }, // EoB 1
- { DE_DEU, kPlatformUnknown, { 0x00000006, 0x00000145, { { 0x22, 0x45, 0x35, 0xC6, 0x28, 0x00, 0x22, 0xAA, 0xD1, 0x15, 0x48, 0xE6, 0xE5, 0x62, 0x73, 0x37 } } } }, // EoB 2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseAbortStringsProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x00000006, 0x00000178, { { 0xDD, 0xEC, 0x68, 0x6D, 0x2E, 0x10, 0x34, 0x94, 0x46, 0x25, 0xF9, 0xAB, 0x29, 0x27, 0x32, 0xA8 } } } },
- { DE_DEU, kPlatformUnknown, { 0x00000006, 0x00000145, { { 0x22, 0x45, 0x35, 0xC6, 0x28, 0x00, 0x22, 0xAA, 0xD1, 0x15, 0x48, 0xE6, 0xE5, 0x62, 0x73, 0x37 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseMenuStringsMainProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x00000067, 0x0000245E, { { 0xD9, 0xE0, 0x74, 0x9D, 0x43, 0x96, 0xDC, 0x3B, 0xDF, 0x90, 0x03, 0xDE, 0x91, 0xE6, 0xA0, 0x1E } } } }, // EOB1
- { DE_DEU, kPlatformUnknown, { 0x00000068, 0x000025D9, { { 0x17, 0xEB, 0xAB, 0x4F, 0x95, 0xD1, 0x7F, 0xEB, 0xF4, 0x92, 0x42, 0xD1, 0xD2, 0xA8, 0xC4, 0xA8 } } } }, // EOB1
- { DE_DEU, kPlatformUnknown, { 0x00000069, 0x0000265B, { { 0x4C, 0xA9, 0x38, 0x28, 0xE1, 0xD0, 0xE3, 0x35, 0xBB, 0xDC, 0xFB, 0x6B, 0xAB, 0xB1, 0x62, 0x88 } } } }, // EOB2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseMenuStringsSaveLoadProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x00000077, 0x00002513, { { 0x70, 0xD9, 0x48, 0xC2, 0x3A, 0x38, 0x1D, 0xD0, 0x8B, 0x90, 0x08, 0x8D, 0x80, 0xF5, 0x24, 0x59 } } } }, // EOB1
- { DE_DEU, kPlatformUnknown, { 0x00000086, 0x00002D2F, { { 0x2B, 0x48, 0x5C, 0x78, 0xF9, 0xB9, 0xD6, 0xA8, 0x1D, 0xF4, 0x97, 0xAC, 0xF1, 0x09, 0x26, 0xA7 } } } }, // EOB1
- { EN_ANY, kPlatformUnknown, { 0x000000A9, 0x00003850, { { 0xC3, 0x09, 0x7B, 0x18, 0xD6, 0x08, 0x0E, 0x2A, 0xB6, 0x66, 0x43, 0x14, 0xD7, 0x59, 0x34, 0xF7 } } } }, // EOB2
- { DE_DEU, kPlatformUnknown, { 0x000000A2, 0x00003942, { { 0x6E, 0x10, 0x87, 0x4B, 0x80, 0xE8, 0x89, 0xC4, 0x31, 0xDC, 0xAC, 0xA9, 0xA3, 0x8D, 0x79, 0x41 } } } }, // EOB2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseMenuStringsOnOffProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x00000007, 0x00000178, { { 0x4D, 0xA7, 0x13, 0x00, 0x05, 0xF2, 0x44, 0xCB, 0xF7, 0x12, 0x72, 0x54, 0xDE, 0x35, 0x04, 0xEC } } } }, // EOB1
- { DE_DEU, kPlatformUnknown, { 0x00000007, 0x00000178, { { 0xC7, 0x6F, 0x60, 0x72, 0x47, 0x89, 0x47, 0xF0, 0x29, 0x57, 0x45, 0x41, 0xD5, 0x80, 0x40, 0x7B } } } }, // EOB2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseMenuStringsSpellsProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x000001EF, 0x0000A0D0, { { 0xBA, 0x80, 0x5C, 0xAB, 0x93, 0x19, 0x53, 0x45, 0x17, 0xBC, 0x86, 0x5B, 0x1B, 0x01, 0x3E, 0x98 } } } }, // EOB1
- { DE_DEU, kPlatformUnknown, { 0x000001EA, 0x00009DE0, { { 0x00, 0xB0, 0x1F, 0xE7, 0x16, 0x48, 0x51, 0x25, 0xE5, 0xD8, 0xA1, 0x31, 0x13, 0x81, 0x8D, 0xB6 } } } }, // EOB1
- { EN_ANY, kPlatformUnknown, { 0x000001FB, 0x0000A658, { { 0xAD, 0x6A, 0xFE, 0x13, 0xE5, 0xEA, 0x6A, 0xD1, 0xC9, 0x80, 0x1C, 0xEE, 0xD7, 0x2A, 0xF8, 0xB2 } } } }, // EOB2
- { DE_DEU, kPlatformUnknown, { 0x00000222, 0x0000B1C9, { { 0x24, 0xC8, 0x9B, 0x51, 0xEE, 0x45, 0x14, 0xFC, 0x1B, 0xE4, 0x37, 0x8B, 0xEC, 0x94, 0xD9, 0x0B } } } }, // EOB2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseMenuStringsRestProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x000000B3, 0x00003CED, { { 0x82, 0xF9, 0xA1, 0x74, 0xE6, 0x95, 0xA4, 0xFC, 0xE6, 0x5E, 0xB4, 0x43, 0x7D, 0x10, 0xFD, 0x12 } } } }, // EOB1
- { DE_DEU, kPlatformUnknown, { 0x000000B3, 0x00003BE4, { { 0x7F, 0xE8, 0xFE, 0xA4, 0xD9, 0x5C, 0x49, 0x66, 0x38, 0x8F, 0x84, 0xB8, 0xF5, 0x03, 0xCD, 0x70 } } } }, // EOB
- { DE_DEU, kPlatformUnknown, { 0x000000C0, 0x000040A6, { { 0x05, 0x97, 0x45, 0x72, 0xE2, 0x33, 0xBE, 0xDE, 0x56, 0x26, 0x26, 0x15, 0x3A, 0x56, 0x93, 0xFD } } } }, // EOB2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseMenuStringsDropProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x0000002E, 0x00000FCA, { { 0x88, 0xCB, 0xD2, 0xB3, 0xDA, 0x36, 0x97, 0x3D, 0xB8, 0x75, 0xFF, 0x36, 0xE1, 0x4E, 0xF4, 0x6D } } } }, // EOB1
- { DE_DEU, kPlatformUnknown, { 0x00000039, 0x0000131E, { { 0x74, 0x0B, 0xE9, 0x04, 0x76, 0x26, 0xD2, 0xE8, 0x03, 0x48, 0x38, 0x18, 0xAC, 0x19, 0xBD, 0x7E } } } }, // EOB1
- { DE_DEU, kPlatformUnknown, { 0x00000033, 0x0000119C, { { 0x8F, 0x2B, 0xC3, 0x01, 0xB2, 0xDE, 0x1F, 0xC6, 0x82, 0xC3, 0x58, 0x7C, 0x50, 0x23, 0x37, 0x65 } } } }, // EOB2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseMenuStringsExitProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x0000002B, 0x00000E3D, { { 0x1C, 0xD6, 0x39, 0xA9, 0xC7, 0x3D, 0x32, 0x4A, 0xF2, 0xAE, 0xEC, 0x08, 0x6F, 0xC7, 0xA6, 0x7B } } } }, // EOB1
- { DE_DEU, kPlatformUnknown, { 0x0000002D, 0x00000E68, { { 0x4B, 0x2F, 0x65, 0x39, 0x69, 0xE7, 0x3D, 0x7B, 0x10, 0x15, 0x6F, 0x1F, 0xD8, 0x8E, 0xEA, 0x55 } } } }, // EOB1
- { DE_DEU, kPlatformUnknown, { 0x00000026, 0x00000CBD, { { 0x0C, 0x5D, 0xE4, 0xD2, 0x6F, 0xA3, 0x91, 0xDA, 0x5F, 0xE2, 0x57, 0x77, 0x74, 0x22, 0xE7, 0x85 } } } }, // EOB2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseMenuStringsStarveProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x0000003D, 0x0000150C, { { 0x40, 0xEB, 0x79, 0xC3, 0x99, 0x4C, 0xEA, 0xCD, 0x8A, 0xB4, 0x54, 0xB8, 0xAA, 0xEC, 0xAD, 0x4F } } } }, // EOB1
- { DE_DEU, kPlatformUnknown, { 0x00000037, 0x00001296, { { 0x51, 0x3C, 0x90, 0x91, 0x4E, 0x1C, 0x73, 0x2F, 0x0C, 0x7A, 0x6D, 0x03, 0x1E, 0x54, 0x65, 0xF1 } } } }, // EOB1
- { DE_DEU, kPlatformUnknown, { 0x00000030, 0x00001057, { { 0xF3, 0x5E, 0xFC, 0xC3, 0x9D, 0xB5, 0xFE, 0x4E, 0x66, 0x9D, 0x6A, 0xC6, 0x61, 0xC8, 0x0A, 0x17 } } } }, // EOB2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseMenuStringsScribeProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x00000103, 0x000055E1, { { 0x1B, 0x56, 0xD2, 0x78, 0x3F, 0x67, 0x7A, 0x5B, 0xB6, 0x2B, 0x70, 0x3D, 0x6A, 0xBB, 0x08, 0x0A } } } }, // EOB1
- { DE_DEU, kPlatformUnknown, { 0x0000010C, 0x00005B1C, { { 0xD7, 0xBF, 0x37, 0x21, 0xA2, 0x63, 0x8C, 0x6A, 0x02, 0x92, 0x13, 0x32, 0xD6, 0xA6, 0x1C, 0xDC } } } }, // EOB1
- { DE_DEU, kPlatformUnknown, { 0x00000100, 0x0000560F, { { 0x69, 0x15, 0x2C, 0x2D, 0xE7, 0x40, 0x4A, 0xE0, 0x86, 0x0D, 0xC8, 0x66, 0x87, 0x1C, 0x27, 0x0B } } } }, // EOB2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseMenuStringsDrop2Provider[] = {
- { EN_ANY, kPlatformUnknown, { 0x00000084, 0x00002ACE, { { 0xAB, 0x78, 0x42, 0x29, 0xFB, 0xC5, 0x34, 0x96, 0x9D, 0x8A, 0x21, 0x46, 0xE7, 0x6B, 0x06, 0xBA } } } }, // EOB1
- { DE_DEU, kPlatformUnknown, { 0x0000008C, 0x00002D02, { { 0x11, 0x3F, 0x0C, 0xB2, 0xBF, 0xA7, 0x39, 0x23, 0xDC, 0x00, 0xB4, 0xEA, 0x5E, 0xFE, 0x40, 0xB7 } } } }, // EOB1
- { EN_ANY, kPlatformUnknown, { 0x0000008E, 0x00002FFB, { { 0xCE, 0x7A, 0xCC, 0xA4, 0x02, 0x54, 0x1A, 0x78, 0xF1, 0xFC, 0xE6, 0x6C, 0x76, 0xCD, 0xFD, 0x9E } } } }, // EOB2
- { DE_DEU, kPlatformUnknown, { 0x00000090, 0x000031CE, { { 0x01, 0x72, 0x59, 0xBE, 0x62, 0x72, 0xD4, 0x99, 0x76, 0xC9, 0x92, 0x0E, 0xE9, 0x1A, 0xCD, 0x65 } } } }, // EOB2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseMenuStringsHeadProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x00000021, 0x00000B27, { { 0x04, 0x06, 0x01, 0xF8, 0x50, 0x54, 0x11, 0x61, 0xFF, 0xB4, 0xE1, 0x97, 0xFA, 0x08, 0xAA, 0x1B } } } }, // EOB1
- { DE_DEU, kPlatformUnknown, { 0x00000024, 0x00000CF5, { { 0x96, 0xD6, 0xB5, 0xB0, 0x2E, 0x71, 0xA4, 0x0A, 0x34, 0x41, 0x94, 0x02, 0x2F, 0xB0, 0x4C, 0x36 } } } }, // EOB1
- { DE_DEU, kPlatformUnknown, { 0x00000025, 0x00000D92, { { 0xE4, 0x73, 0x2D, 0x29, 0xAD, 0x30, 0xE5, 0x8D, 0xAE, 0xC6, 0xD7, 0xF5, 0x35, 0xD8, 0xA4, 0x98 } } } }, // EOB2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseMenuStringsPoisonProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x0000002E, 0x00001077, { { 0x14, 0x7E, 0xFC, 0xE0, 0x88, 0xFE, 0x86, 0xA8, 0x96, 0x94, 0xB1, 0x71, 0x90, 0x47, 0x2D, 0x78 } } } }, // EOB1
- { DE_DEU, kPlatformUnknown, { 0x00000036, 0x000013A2, { { 0x18, 0xD9, 0x1D, 0xE5, 0x3D, 0xFD, 0x52, 0xB6, 0x18, 0x17, 0x61, 0xE8, 0xA5, 0x32, 0x9F, 0xA8 } } } }, // EOB1
- { EN_ANY, kPlatformUnknown, { 0x0000002D, 0x00001006, { { 0xD6, 0x0B, 0x11, 0x79, 0xAD, 0x61, 0x5B, 0x3A, 0x72, 0x7D, 0x53, 0x6F, 0xA9, 0x08, 0x73, 0xDC } } } }, // EOB2
- { DE_DEU, kPlatformUnknown, { 0x00000035, 0x000013BE, { { 0x73, 0x38, 0x76, 0x2C, 0x42, 0x87, 0x43, 0x7E, 0x8E, 0x4C, 0x41, 0x57, 0x3F, 0x04, 0xBA, 0x11 } } } }, // EOB2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseMenuStringsMgcProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x00000020, 0x00000857, { { 0xD1, 0x9E, 0xBF, 0xF7, 0xCF, 0xF7, 0xD0, 0x94, 0x14, 0x56, 0xD2, 0x4F, 0x59, 0x91, 0x57, 0x52 } } } }, // EOB1
- { DE_DEU, kPlatformUnknown, { 0x00000020, 0x0000086C, { { 0x12, 0x36, 0x84, 0x2F, 0x00, 0xAD, 0x12, 0x42, 0x3A, 0xA2, 0xC5, 0xC9, 0x59, 0x90, 0x64, 0x5F } } } }, // EOB1
- { DE_DEU, kPlatformUnknown, { 0x00000021, 0x0000090B, { { 0x26, 0xA7, 0x58, 0x7C, 0x0C, 0x9E, 0x67, 0xB9, 0x05, 0xE6, 0x91, 0x59, 0xE3, 0xDF, 0x9C, 0x52 } } } }, // EOB2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseMenuStringsPrefsProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x00000041, 0x00001392, { { 0xB1, 0x7E, 0xE3, 0x73, 0xB2, 0xA2, 0x63, 0x39, 0x20, 0xE8, 0xF3, 0x38, 0x45, 0xB6, 0xAC, 0xC8 } } } }, // EOB1
- { DE_DEU, kPlatformUnknown, { 0x00000045, 0x000015F6, { { 0x53, 0xBA, 0x7E, 0x6D, 0x24, 0x88, 0x2C, 0x19, 0x10, 0x71, 0x6F, 0xAB, 0x85, 0x8E, 0x97, 0xF6 } } } }, // EOB1
- { DE_DEU, kPlatformUnknown, { 0x0000003D, 0x00001246, { { 0x03, 0xFB, 0x7C, 0x80, 0x33, 0x45, 0x6C, 0x27, 0x89, 0x7B, 0x7C, 0xAC, 0x7A, 0xE1, 0xDE, 0x49 } } } }, // EOB2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseMenuStringsRest2Provider[] = {
- { EN_ANY, kPlatformUnknown, { 0x0000004D, 0x00001744, { { 0x63, 0xA5, 0x6F, 0x09, 0x6F, 0x5E, 0x4B, 0x89, 0xFF, 0x33, 0x63, 0xCB, 0xAA, 0x04, 0x59, 0x63 } } } }, // EOB1
- { DE_DEU, kPlatformUnknown, { 0x0000004D, 0x00001769, { { 0x2C, 0xA9, 0x7D, 0x4C, 0xC5, 0x13, 0xE2, 0xEB, 0x89, 0x6C, 0xAE, 0x25, 0xC3, 0x3E, 0x56, 0x7E } } } }, // EOB1
- { EN_ANY, kPlatformUnknown, { 0x00000052, 0x000017F6, { { 0x7C, 0x49, 0xFC, 0x89, 0x90, 0x5D, 0xFF, 0x86, 0x86, 0xE9, 0xB2, 0x29, 0x60, 0xB2, 0x22, 0x7F } } } }, // EOB2
- { DE_DEU, kPlatformUnknown, { 0x0000004C, 0x000014FF, { { 0x0C, 0x94, 0x6D, 0x5A, 0x42, 0x68, 0xE0, 0xDC, 0xCD, 0xB9, 0x1A, 0x4A, 0xC1, 0xCC, 0xE6, 0x91 } } } }, // EOB2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseMenuStringsRest3Provider[] = {
- { EN_ANY, kPlatformUnknown, { 0x0000002B, 0x00000DF4, { { 0x42, 0x90, 0x49, 0xA7, 0x2E, 0x61, 0x77, 0x7F, 0x9F, 0x53, 0xAD, 0x3C, 0x87, 0xE2, 0x0E, 0x36 } } } }, // EOB2
- { DE_DEU, kPlatformUnknown, { 0x00000027, 0x00000D45, { { 0x8D, 0xAB, 0xBF, 0x57, 0xF3, 0x2C, 0x3F, 0x93, 0xBF, 0x33, 0x58, 0x2D, 0x97, 0x78, 0x71, 0x7F } } } }, // EOB2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseMenuStringsRest4Provider[] = {
- { EN_ANY, kPlatformUnknown, { 0x00000029, 0x00000DEC, { { 0x1C, 0x86, 0x3D, 0x40, 0x2C, 0x5E, 0xCA, 0xA0, 0xA1, 0xB8, 0x23, 0x42, 0x9C, 0x6B, 0xFA, 0xBB } } } }, // EOB1
- { DE_DEU, kPlatformUnknown, { 0x00000034, 0x00001238, { { 0xE9, 0x95, 0x27, 0x79, 0x1C, 0x0D, 0xF5, 0x94, 0x92, 0xFC, 0xCA, 0x22, 0x17, 0xA8, 0x36, 0x96 } } } }, // EOB1
- { EN_ANY, kPlatformUnknown, { 0x0000002A, 0x00000DEB, { { 0x0E, 0xD3, 0xC5, 0xA9, 0x8B, 0x06, 0x57, 0xB0, 0x20, 0x1A, 0xEE, 0x42, 0x49, 0x2E, 0xA1, 0x50 } } } }, // EOB2
- { DE_DEU, kPlatformUnknown, { 0x00000033, 0x00001189, { { 0x56, 0x1B, 0x6B, 0x00, 0x47, 0xFD, 0x56, 0xD3, 0x12, 0x03, 0x79, 0x7D, 0xFF, 0x83, 0xCF, 0xAA } } } }, // EOB2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseMenuStringsDefeatProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x0000006D, 0x00002643, { { 0x94, 0xBA, 0xAC, 0xA4, 0x87, 0x6A, 0xEA, 0x7D, 0x98, 0x6E, 0x09, 0x82, 0xE0, 0x16, 0x65, 0x4F } } } }, // EOB1
- { DE_DEU, kPlatformUnknown, { 0x0000006A, 0x00002456, { { 0xE0, 0x9A, 0x10, 0xE2, 0x73, 0x42, 0xF6, 0x79, 0xCB, 0x65, 0xA2, 0x50, 0xF0, 0x2B, 0xFD, 0x9B } } } }, // EOB1
- { EN_ANY, kPlatformUnknown, { 0x00000056, 0x00001E4F, { { 0x97, 0x07, 0x5F, 0xA2, 0x0D, 0x58, 0xD2, 0xDF, 0xD6, 0x04, 0xA2, 0x16, 0x0B, 0x1F, 0x7E, 0x23 } } } }, // EOB2
- { DE_DEU, kPlatformUnknown, { 0x00000042, 0x000016B1, { { 0xCA, 0x57, 0xDC, 0x2B, 0xC6, 0xC7, 0x78, 0x1E, 0x84, 0x0A, 0x10, 0x88, 0xCA, 0xCD, 0xFF, 0x89 } } } }, // EOB2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseMenuStringsTransferProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x00000114, 0x00005E09, { { 0xBF, 0xCE, 0x7F, 0xE4, 0x17, 0x15, 0xC6, 0x10, 0xDF, 0x16, 0xF9, 0x3C, 0xDA, 0x29, 0xA0, 0xA6 } } } }, // EOB2
- { DE_DEU, kPlatformUnknown, { 0x000000D1, 0x00004811, { { 0x2E, 0x00, 0xD1, 0xA6, 0x9F, 0x53, 0xC5, 0x4B, 0x25, 0x4A, 0xAC, 0x9E, 0x11, 0x6C, 0x58, 0x5E } } } }, // EOB2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseMenuStringsSpecProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x0000006F, 0x00002785, { { 0xAE, 0xC7, 0x88, 0x89, 0x39, 0xB8, 0xF7, 0xB4, 0xD5, 0x82, 0xBC, 0x46, 0xA1, 0xCB, 0x04, 0x1F } } } }, // EOB2
- { DE_DEU, kPlatformUnknown, { 0x00000075, 0x00002871, { { 0xB4, 0x38, 0x0F, 0x94, 0x8B, 0xB1, 0x8D, 0xA3, 0xF8, 0xDA, 0x37, 0x75, 0x6F, 0x39, 0x3E, 0xB5 } } } }, // EOB2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseMenuStringsSpellNoProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000006, 0x000000A5, { { 0x0D, 0x4A, 0x8B, 0x40, 0x70, 0x79, 0xCD, 0xB3, 0x0F, 0x5A, 0x5A, 0x3F, 0x6E, 0xE8, 0xF9, 0x74 } } } }, // EOB2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseMenuYesNoStringsProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x00000007, 0x000001EE, { { 0x8C, 0xF1, 0x35, 0x1F, 0xD6, 0x1F, 0xA4, 0xA1, 0xD6, 0xD6, 0x0A, 0x27, 0xB9, 0xFC, 0x9E, 0x62 } } } },
- { DE_DEU, kPlatformUnknown, { 0x00000008, 0x00000235, { { 0xC7, 0x06, 0xCF, 0xA8, 0xC0, 0xDE, 0xD4, 0x8C, 0x7F, 0xA2, 0x3A, 0xD3, 0x48, 0x51, 0x36, 0x89 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseSpellLevelsMageProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x0000001A, 0x00000042, { { 0x4F, 0xA3, 0x70, 0x0F, 0x6D, 0xB4, 0xC2, 0xAF, 0x12, 0xB4, 0x2E, 0x26, 0xEF, 0x0B, 0x37, 0x92 } } } }, // EOB1
- { UNK_LANG, kPlatformUnknown, { 0x00000023, 0x00000074, { { 0xBE, 0x10, 0xFA, 0xD9, 0xB3, 0xB0, 0x4E, 0x73, 0xC9, 0xA1, 0xE2, 0xCE, 0xE8, 0xEC, 0x85, 0x0F } } } }, // EOB2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseSpellLevelsClericProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000019, 0x00000045, { { 0x9E, 0xDA, 0xF2, 0x94, 0x3E, 0x0B, 0xA0, 0x23, 0x08, 0x41, 0xD5, 0x3C, 0x61, 0x77, 0xFD, 0x78 } } } }, // EOB1
- { UNK_LANG, kPlatformUnknown, { 0x0000001D, 0x00000066, { { 0xDB, 0x7F, 0x93, 0xE2, 0x2E, 0xCF, 0x69, 0xCC, 0x2A, 0xEF, 0x7C, 0x1E, 0x92, 0x6B, 0x51, 0x4E } } } }, // EOB2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseNumSpellsClericProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000032, 0x0000004C, { { 0x87, 0xDD, 0xD0, 0xF8, 0x52, 0x84, 0x26, 0xC4, 0x9C, 0x5D, 0x0E, 0x46, 0x1A, 0xE8, 0x19, 0xD6 } } } }, // EOB1
- { UNK_LANG, kPlatformUnknown, { 0x00000088, 0x00000114, { { 0xA0, 0xB7, 0x2F, 0xED, 0x50, 0xE7, 0xC6, 0x11, 0xC9, 0x25, 0xB2, 0xB9, 0x81, 0xFB, 0xD8, 0x59 } } } }, // EOB2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseNumSpellsWisAdjProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000028, 0x0000001D, { { 0xA5, 0xCA, 0x1D, 0x96, 0xAE, 0x89, 0xBC, 0x7A, 0x32, 0x50, 0xCE, 0x44, 0x5D, 0x93, 0x25, 0x4B } } } }, // EOB1
- { UNK_LANG, kPlatformUnknown, { 0x00000040, 0x0000001D, { { 0x07, 0x31, 0x0D, 0x12, 0x55, 0x11, 0x11, 0xB6, 0x68, 0xC7, 0xEE, 0xDE, 0xC6, 0xED, 0x82, 0x5A } } } }, // EOB2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseNumSpellsPalProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x0000003C, 0x00000012, { { 0x96, 0x7E, 0x17, 0x9E, 0xFD, 0x39, 0xC9, 0x3A, 0xB7, 0x3E, 0x8D, 0xA8, 0xED, 0xA3, 0x07, 0xEB } } } }, // EOB1
- { UNK_LANG, kPlatformUnknown, { 0x00000088, 0x0000002F, { { 0x19, 0x1A, 0x9B, 0x42, 0xA0, 0x67, 0x10, 0x1A, 0xAC, 0x00, 0x0F, 0xF7, 0xBE, 0x04, 0x61, 0x36 } } } }, // EOB2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseNumSpellsMageProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000037, 0x0000005E, { { 0x61, 0x30, 0x1A, 0x74, 0x9B, 0x4C, 0x8C, 0x83, 0xD5, 0xE6, 0x39, 0x6E, 0xCA, 0x18, 0x16, 0x63 } } } }, // EOB1
- { UNK_LANG, kPlatformUnknown, { 0x00000114, 0x00000102, { { 0x33, 0xEE, 0x32, 0x9C, 0xB2, 0xB3, 0x60, 0x66, 0x91, 0xE0, 0x90, 0x0E, 0x8F, 0xE1, 0xA5, 0x4A } } } }, // EOB2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseCharGuiStringsHpProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x0000000F, 0x00000352, { { 0x9C, 0x13, 0x3D, 0x2A, 0x68, 0x11, 0x81, 0xA4, 0x77, 0x54, 0x47, 0x43, 0xA1, 0xDA, 0x55, 0x50 } } } },
- { DE_DEU, kPlatformUnknown, { 0x0000000E, 0x000002AC, { { 0xBB, 0xD5, 0x36, 0xB2, 0x8A, 0x60, 0x78, 0x04, 0x46, 0x2D, 0x35, 0x59, 0x3E, 0x42, 0xB9, 0x83 } } } }, // EoB 1
- { DE_DEU, kPlatformUnknown, { 0x0000000E, 0x000002B8, { { 0x77, 0x76, 0xA0, 0x38, 0xE9, 0xB6, 0x0C, 0x43, 0xFE, 0x5A, 0x51, 0xC7, 0x1B, 0x59, 0xD3, 0x63 } } } }, // EoB 2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseCharGuiStringsWp1Provider[] = {
- { EN_ANY, kPlatformUnknown, { 0x0000000A, 0x00000253, { { 0x1D, 0xF4, 0xB9, 0x56, 0xE6, 0x16, 0x7D, 0x08, 0xA4, 0x00, 0x1E, 0x1A, 0x60, 0x49, 0xE9, 0x29 } } } },
- { DE_DEU, kPlatformUnknown, { 0x0000000A, 0x00000236, { { 0x17, 0xEC, 0x54, 0xA0, 0x43, 0xFB, 0x52, 0x66, 0xC5, 0x44, 0x1B, 0xDF, 0x95, 0x47, 0x62, 0xB3 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseCharGuiStringsWp2Provider[] = {
- { EN_ANY, kPlatformUnknown, { 0x0000000F, 0x00000371, { { 0x42, 0xF4, 0x52, 0x60, 0x20, 0xFC, 0x34, 0x94, 0x49, 0x1E, 0x67, 0x54, 0xB5, 0x6A, 0x97, 0x2A } } } },
- { DE_DEU, kPlatformUnknown, { 0x00000010, 0x000003D6, { { 0x10, 0xD1, 0x77, 0x6C, 0xCD, 0x00, 0x94, 0xC7, 0xD0, 0x53, 0x47, 0x9F, 0x70, 0x77, 0x50, 0xD1 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseCharGuiStringsWrProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x00000014, 0x00000477, { { 0xAA, 0x26, 0xD5, 0xFD, 0xE6, 0x16, 0x53, 0x19, 0x39, 0x46, 0xEB, 0xCD, 0x88, 0xEC, 0x5E, 0xCB } } } },
- { DE_DEU, kPlatformUnknown, { 0x00000015, 0x000004A4, { { 0x53, 0x54, 0x37, 0x35, 0x27, 0x1F, 0xB9, 0x09, 0x9C, 0xE9, 0x5E, 0x11, 0xBD, 0x8F, 0x15, 0xAE } } } }, // EoB 1
- { DE_DEU, kPlatformUnknown, { 0x00000011, 0x00000402, { { 0xE0, 0x92, 0xF4, 0x49, 0xB7, 0x74, 0xBB, 0xEB, 0x90, 0x0D, 0x75, 0x65, 0xBB, 0xF6, 0xB6, 0xE9 } } } }, // EoB 2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseCharGuiStringsSt1Provider[] = {
- { EN_ANY, kPlatformUnknown, { 0x0000003B, 0x0000104B, { { 0xC0, 0xD9, 0x0F, 0x7B, 0x6D, 0x17, 0x02, 0xBD, 0x7B, 0xB1, 0x76, 0x72, 0xA1, 0xEE, 0x5E, 0xAD } } } },
- { DE_DEU, kPlatformUnknown, { 0x00000039, 0x00000F69, { { 0x09, 0x42, 0x35, 0x47, 0x48, 0x50, 0x05, 0x09, 0x3B, 0x81, 0x14, 0x01, 0xF9, 0xB5, 0x04, 0xB2 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseCharGuiStringsSt2Provider[] = {
- { EN_ANY, kPlatformUnknown, { 0x00000045, 0x000012E7, { { 0x49, 0x48, 0x30, 0x73, 0xDA, 0x42, 0xDB, 0xB9, 0xF4, 0x07, 0x00, 0x26, 0x96, 0x1F, 0x02, 0x4E } } } },
- { DE_DEU, kPlatformUnknown, { 0x00000042, 0x0000114D, { { 0x88, 0x6E, 0x45, 0xF9, 0xAE, 0xEF, 0xE8, 0x54, 0x9C, 0xEF, 0xD2, 0x73, 0x78, 0x41, 0xD9, 0xAF } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseCharGuiStringsInProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x00000023, 0x000008CB, { { 0xF0, 0xE9, 0xF1, 0x05, 0x47, 0x3A, 0x5D, 0xCA, 0x9F, 0x75, 0x9D, 0x51, 0x9E, 0xEC, 0x9B, 0x67 } } } },
- { DE_DEU, kPlatformUnknown, { 0x00000020, 0x00000810, { { 0xF5, 0x39, 0x1E, 0x0E, 0x65, 0xEF, 0x09, 0xF2, 0x8D, 0x90, 0xC4, 0xF6, 0x8A, 0xED, 0xAD, 0xDF } } } }, // EoB 1
- { DE_DEU, kPlatformUnknown, { 0x00000023, 0x00000940, { { 0xAB, 0xF6, 0xE4, 0xD4, 0x07, 0x07, 0xDA, 0x92, 0x71, 0xE2, 0x73, 0x1F, 0x06, 0xE3, 0x12, 0xEB } } } }, // EoB 2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseCharStatusStrings7Provider[] = {
- { EN_ANY, kPlatformUnknown, { 0x00000022, 0x00000B95, { { 0xCB, 0xB7, 0x16, 0x77, 0x9C, 0xEB, 0x70, 0x83, 0xB2, 0xBE, 0xF7, 0x67, 0xB1, 0xE9, 0xD0, 0x5E } } } }, // EOB 1 + 2
- { DE_DEU, kPlatformUnknown, { 0x0000002B, 0x00000EE3, { { 0xC8, 0x81, 0x23, 0xC3, 0x03, 0xBD, 0x4C, 0xF5, 0x41, 0x47, 0xFA, 0x32, 0xA0, 0x98, 0x0A, 0x8E } } } }, // EOB 1
- { DE_DEU, kPlatformUnknown, { 0x00000023, 0x00000C68, { { 0xF5, 0x55, 0x09, 0xD8, 0x73, 0xF8, 0xF0, 0xE3, 0x14, 0xCD, 0x78, 0x84, 0x58, 0xB0, 0x64, 0x5B } } } }, // EOB 2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseCharStatusStrings81Provider[] = {
- { EN_ANY, kPlatformUnknown, { 0x00000021, 0x00000B03, { { 0x44, 0xFC, 0xC2, 0x23, 0x4B, 0x78, 0xA8, 0xF8, 0xA5, 0x46, 0x5B, 0x89, 0x1F, 0x9D, 0x4E, 0xFA } } } }, // EOB 1
- { DE_DEU, kPlatformUnknown, { 0x00000020, 0x00000A52, { { 0x81, 0xDA, 0x22, 0x8A, 0xD3, 0x7D, 0xE7, 0xF5, 0x39, 0x6A, 0x62, 0x41, 0xE5, 0x8D, 0x45, 0x20 } } } }, // EOB 1
-};
-
-const ExtractEntrySearchData kEoBBaseCharStatusStrings82Provider[] = {
- { EN_ANY, kPlatformUnknown, { 0x00000023, 0x00000B0F, { { 0xBD, 0xED, 0xFE, 0xFD, 0x40, 0x95, 0x42, 0x21, 0x1F, 0x55, 0x67, 0x65, 0xA8, 0xC3, 0x99, 0xA1 } } } }, // EOB 2
- { DE_DEU, kPlatformUnknown, { 0x0000001A, 0x00000789, { { 0x8C, 0xF3, 0xB8, 0x3C, 0x6E, 0x85, 0xED, 0xD6, 0x2B, 0xD7, 0xAE, 0x8A, 0xFC, 0x25, 0x5E, 0x8F } } } }, // EOB 2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseCharStatusStrings9Provider[] = {
- { EN_ANY, kPlatformUnknown, { 0x0000001C, 0x00000952, { { 0x2F, 0x41, 0x17, 0x95, 0xF8, 0xC8, 0x4E, 0x88, 0xC6, 0x83, 0x38, 0x9B, 0xAB, 0x23, 0x48, 0xB9 } } } }, // EOB 1 + 2
- { DE_DEU, kPlatformUnknown, { 0x0000001D, 0x0000099F, { { 0x5E, 0xB4, 0xBE, 0xA9, 0x0C, 0xB2, 0xF2, 0x4E, 0x63, 0xF8, 0x7B, 0x98, 0x67, 0x2D, 0xC9, 0xBF } } } }, // EOB 1
- { DE_DEU, kPlatformUnknown, { 0x0000001E, 0x00000A52, { { 0xD4, 0x65, 0x3F, 0x35, 0xDD, 0x8A, 0x33, 0x44, 0x2F, 0x8C, 0xAC, 0x2F, 0xEC, 0x96, 0x5B, 0x02 } } } }, // EOB 2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseCharStatusStrings12Provider[] = {
- { EN_ANY, kPlatformUnknown, { 0x00000010, 0x00000503, { { 0x81, 0x22, 0xE9, 0x0F, 0xA5, 0xEA, 0xFE, 0xB5, 0xB6, 0x43, 0x36, 0x22, 0x87, 0x24, 0x2C, 0x40 } } } },
- { DE_DEU, kPlatformUnknown, { 0x00000014, 0x00000683, { { 0x5A, 0xF8, 0xAA, 0x16, 0x97, 0xBE, 0xD5, 0x22, 0xCE, 0x3F, 0xBC, 0x00, 0x44, 0xC1, 0x27, 0xD3 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseCharStatusStrings131Provider[] = {
- { EN_ANY, kPlatformUnknown, { 0x0000000B, 0x0000027A, { { 0x70, 0x1A, 0x83, 0x35, 0x0A, 0x51, 0xEA, 0x27, 0x6E, 0xCD, 0xEB, 0xAD, 0x20, 0x74, 0x28, 0x7D } } } },
- { DE_DEU, kPlatformUnknown, { 0x0000000C, 0x000002EE, { { 0xFE, 0xF9, 0x45, 0xE7, 0x89, 0x7B, 0xA4, 0x82, 0x90, 0x63, 0x91, 0x5B, 0x9E, 0x83, 0x80, 0x10 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseCharStatusStrings132Provider[] = {
- { EN_ANY, kPlatformUnknown, { 0x0000000D, 0x00000286, { { 0x00, 0x1E, 0x11, 0xCC, 0x57, 0xFA, 0xEF, 0x2A, 0x0A, 0xFF, 0xFF, 0xE9, 0x3E, 0xA3, 0x62, 0x21 } } } },
- { DE_DEU, kPlatformUnknown, { 0x0000000A, 0x0000018A, { { 0x10, 0x54, 0x6F, 0xC3, 0x08, 0xC4, 0xD2, 0xBB, 0x34, 0x0A, 0x04, 0x65, 0x49, 0xFC, 0x5E, 0x15 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseLevelGainStringsProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x0000002A, 0x00000CC9, { { 0xF2, 0x1F, 0xDF, 0xE0, 0xA5, 0x86, 0x46, 0xF4, 0xFC, 0x71, 0xB0, 0x22, 0x32, 0x46, 0x71, 0xB6 } } } }, // EOB 1
- { DE_DEU, kPlatformUnknown, { 0x00000029, 0x00000D38, { { 0x18, 0xA3, 0xFD, 0xCC, 0xF2, 0x68, 0x18, 0x9E, 0x80, 0x5A, 0xC0, 0x22, 0xFD, 0x15, 0x83, 0x84 } } } }, // EOB 1
- { EN_ANY, kPlatformUnknown, { 0x0000001C, 0x0000078C, { { 0x15, 0x70, 0x37, 0xE4, 0x0B, 0x50, 0x32, 0xCA, 0xAE, 0xF6, 0x81, 0xD0, 0x98, 0x9B, 0x36, 0x8A } } } }, // EOB 2
- { DE_DEU, kPlatformUnknown, { 0x0000001F, 0x000008E3, { { 0x07, 0x2C, 0x51, 0x5E, 0x47, 0xAA, 0xCC, 0x27, 0x77, 0xD8, 0x17, 0x59, 0x6B, 0xBE, 0xF5, 0x87 } } } }, // EOB 2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseExperienceTable0Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000030, 0x00000C9E, { { 0xDB, 0x47, 0xD9, 0x0D, 0x6E, 0x68, 0x04, 0xE4, 0x17, 0xCB, 0x60, 0x89, 0x35, 0x3E, 0xA9, 0xEE } } } }, // EoB 1
- { UNK_LANG, kPlatformUnknown, { 0x00000038, 0x00000E24, { { 0xBC, 0xF3, 0x96, 0x8A, 0xD5, 0x0C, 0xAA, 0x94, 0xBB, 0xB5, 0x08, 0x73, 0xF8, 0x5C, 0xF0, 0xA9 } } } }, // EoB 2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseExperienceTable1Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000030, 0x00000C80, { { 0x35, 0x45, 0x0D, 0x4F, 0xE0, 0x84, 0xA2, 0x1B, 0xB0, 0x0D, 0x60, 0x4D, 0x1D, 0xD5, 0x6C, 0x72 } } } }, // EoB 1
- { UNK_LANG, kPlatformUnknown, { 0x00000038, 0x00000E6F, { { 0xBD, 0x3F, 0x42, 0x54, 0x75, 0x41, 0xAA, 0x58, 0x0D, 0xD8, 0xC0, 0x07, 0x63, 0x35, 0x83, 0x6B } } } }, // EoB 2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseExperienceTable2Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x0000002C, 0x00000E10, { { 0xA5, 0x4D, 0xCB, 0xF3, 0x5F, 0x89, 0x71, 0x24, 0x6F, 0x70, 0xCA, 0x51, 0xAA, 0x1C, 0x0A, 0x97 } } } }, // EoB 1
- { UNK_LANG, kPlatformUnknown, { 0x00000038, 0x00001149, { { 0xF9, 0xF1, 0x7E, 0x6B, 0xB2, 0xFE, 0x04, 0xC4, 0x29, 0x3D, 0xE3, 0x42, 0x5D, 0x92, 0x77, 0x53 } } } }, // EoB 2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseExperienceTable3Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000030, 0x00000ADC, { { 0x42, 0x2E, 0x2E, 0xF5, 0xF8, 0x65, 0x69, 0x28, 0x50, 0x67, 0x43, 0xDF, 0x91, 0x67, 0x9B, 0x09 } } } }, // EoB 1
- { UNK_LANG, kPlatformUnknown, { 0x00000038, 0x00000C94, { { 0x67, 0x09, 0x98, 0x19, 0x1F, 0x6B, 0x4D, 0xEB, 0x1D, 0x4D, 0x55, 0xA8, 0xFF, 0xD1, 0xAB, 0xE1 } } } }, // EoB 2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseExperienceTable4Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000030, 0x00000DA7, { { 0x45, 0x58, 0x34, 0xC9, 0x09, 0x61, 0xD7, 0xE1, 0xF8, 0x68, 0x80, 0xBC, 0xEF, 0x7A, 0x24, 0x03 } } } }, // EoB 1
- { UNK_LANG, kPlatformUnknown, { 0x00000038, 0x00000FE1, { { 0x26, 0x7F, 0x83, 0x53, 0x4A, 0xC6, 0xA2, 0x7B, 0xD2, 0xFB, 0x73, 0xB2, 0x08, 0x0A, 0xF7, 0xFD } } } }, // EoB 2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseWllFlagPresetProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000019, 0x00000BD9, { { 0xBE, 0x5A, 0xA6, 0xC8, 0xE4, 0x04, 0x4C, 0x32, 0x35, 0x61, 0x48, 0x73, 0x29, 0xA9, 0x99, 0x54 } } } }, // EoB 1
- { UNK_LANG, kPlatformUnknown, { 0x00000019, 0x00000BC9, { { 0x56, 0xC0, 0x66, 0x4D, 0xE1, 0x3A, 0x27, 0x89, 0x9D, 0x73, 0x63, 0x93, 0x08, 0x2B, 0x13, 0xBC } } } }, // EoB 2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseDscShapeCoordsProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000168, 0x0000F206, { { 0xB8, 0xDF, 0x10, 0xBB, 0x06, 0xA1, 0x46, 0xC6, 0xD2, 0xE3, 0xD7, 0x64, 0x4A, 0xC6, 0x40, 0xC0 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseDscDoorScaleOffsProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000020, 0x0000010F, { { 0x7B, 0x7D, 0x03, 0xDE, 0x33, 0x95, 0xB8, 0xFD, 0xAD, 0x72, 0x44, 0x7D, 0x47, 0xFE, 0x04, 0x3D } } } }, // EoB1
- { UNK_LANG, kPlatformDOS, { 0x00000035, 0x00000139, { { 0x74, 0x63, 0x18, 0xE7, 0xAB, 0xA4, 0x22, 0xCF, 0x32, 0x19, 0x28, 0x9E, 0x7F, 0x97, 0xA7, 0x37 } } } }, // EoB2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseDscDoorScaleMult1Provider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000004, 0x00000026, { { 0x5D, 0x17, 0xFB, 0x6A, 0x7F, 0x51, 0x55, 0xFB, 0x55, 0xB9, 0x50, 0xB0, 0x7F, 0xE4, 0xDF, 0x67 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseDscDoorScaleMult2Provider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000004, 0x00000006, { { 0x98, 0xD8, 0xF8, 0x0C, 0x98, 0xC4, 0xF1, 0x87, 0x59, 0x32, 0x78, 0x31, 0xFA, 0x98, 0x8A, 0x43 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseDscDoorScaleMult3Provider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000004, 0x00000013, { { 0xEE, 0xB6, 0xA5, 0x6E, 0x0C, 0x8E, 0xAB, 0x38, 0xD9, 0x23, 0xC6, 0x21, 0xB3, 0x7E, 0x97, 0x78 } } } }, // EOB 1
- { UNK_LANG, kPlatformDOS, { 0x00000004, 0x00000019, { { 0x86, 0xD8, 0x04, 0xD2, 0x66, 0x6F, 0x43, 0x24, 0x2E, 0x93, 0xB9, 0xAE, 0xEB, 0x44, 0xCA, 0x48 } } } }, // EOB 2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseDscDoorScaleMult4Provider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000004, 0x00000006, { { 0x98, 0xD8, 0xF8, 0x0C, 0x98, 0xC4, 0xF1, 0x87, 0x59, 0x32, 0x78, 0x31, 0xFA, 0x98, 0x8A, 0x43 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseDscDoorScaleMult5Provider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000004, 0x00000020, { { 0x37, 0xA1, 0x0D, 0x64, 0xD6, 0x1E, 0xBA, 0xA3, 0xD9, 0x0A, 0x6C, 0xAB, 0x6B, 0xA3, 0x59, 0x24 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseDscDoorScaleMult6Provider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000004, 0x00000006, { { 0x98, 0xD8, 0xF8, 0x0C, 0x98, 0xC4, 0xF1, 0x87, 0x59, 0x32, 0x78, 0x31, 0xFA, 0x98, 0x8A, 0x43 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseDscDoorType5OffsProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000006, 0x00000012, { { 0x73, 0xBB, 0x61, 0xD6, 0xA7, 0x75, 0xC8, 0x7B, 0xD6, 0xA4, 0x53, 0x1B, 0x54, 0xE9, 0x30, 0x3F } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseDscDoorXEProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000020, 0x0000010F, { { 0x7B, 0x7D, 0x03, 0xDE, 0x33, 0x95, 0xB8, 0xFD, 0xAD, 0x72, 0x44, 0x7D, 0x47, 0xFE, 0x04, 0x3D } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseDscDoorY1Provider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000004, 0x000000D7, { { 0x25, 0xAE, 0xF4, 0x99, 0xE8, 0x97, 0x47, 0xAE, 0x75, 0xF3, 0xA9, 0x70, 0x4C, 0x70, 0xF3, 0x11 } } } }, // EOB 1
- { UNK_LANG, kPlatformDOS, { 0x00000004, 0x000000D8, { { 0xB4, 0xAA, 0x0D, 0x91, 0x58, 0x22, 0x16, 0xCF, 0xC5, 0x9D, 0x8D, 0xA1, 0xB4, 0x40, 0x83, 0x0E } } } }, // EOB 2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseDscDoorY3Provider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000004, 0x00000058, { { 0xF0, 0x3C, 0x3B, 0x97, 0x10, 0x95, 0x89, 0x18, 0x3B, 0xA9, 0xE8, 0x77, 0x9B, 0x10, 0xDC, 0xF1 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseDscDoorY4Provider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000004, 0x00000076, { { 0x84, 0xB6, 0x8F, 0x7E, 0x9A, 0x17, 0xAC, 0x59, 0xB1, 0x4C, 0xDE, 0x11, 0xA6, 0x95, 0xE3, 0x76 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseDscDoorY5Provider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000004, 0x000000D9, { { 0x5D, 0x27, 0x1D, 0xD6, 0x5F, 0x98, 0xF9, 0x7D, 0x65, 0x7B, 0xE0, 0x67, 0x34, 0xA0, 0xE8, 0x30 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseDscDoorY6Provider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000004, 0x000000D9, { { 0x4D, 0x15, 0x4A, 0xF1, 0x17, 0x09, 0xC1, 0xA6, 0x08, 0x4A, 0xCD, 0xB2, 0x68, 0xC2, 0x59, 0x52 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseDscDoorY7Provider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000004, 0x000000DA, { { 0xA9, 0x24, 0x71, 0x8A, 0x18, 0x24, 0x6D, 0x0A, 0x65, 0x12, 0xBB, 0x1F, 0xE7, 0x95, 0xC5, 0xA4 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseDscDoorCoordsExtProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000048, 0x00000C8E, { { 0x2E, 0x0E, 0xB2, 0xAC, 0xE7, 0x0F, 0xDF, 0x38, 0xDF, 0x92, 0xB7, 0xB5, 0xA2, 0xFD, 0x40, 0x2D } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseDscItemPosIndexProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000010, 0x00000018, { { 0x74, 0x90, 0x47, 0xE6, 0xFB, 0xC0, 0x34, 0xDF, 0x92, 0x5B, 0xA1, 0xCB, 0x06, 0x33, 0xCA, 0x6B } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseDscItemShpXProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000024, 0x00000F2C, { { 0x9E, 0x22, 0x3F, 0x8F, 0x31, 0x83, 0xF7, 0x7C, 0x59, 0x60, 0x7C, 0x0A, 0xEB, 0xD2, 0x18, 0x85 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseDscItemPosUnkProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000012, 0x00000433, { { 0xA4, 0x7B, 0x08, 0x07, 0x81, 0xEA, 0x4F, 0x99, 0x77, 0x74, 0x93, 0x65, 0xBF, 0x0C, 0x3B, 0x94 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseDscItemTileIndexProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000012, 0x00000D23, { { 0x0E, 0x17, 0xE1, 0x1F, 0x34, 0x7D, 0x30, 0xF6, 0xAE, 0x0B, 0xAC, 0x9D, 0x21, 0xB6, 0x97, 0xCC } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseDscItemShapeMapProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x0000005A, 0x00000B23, { { 0x41, 0x4A, 0x95, 0x7F, 0x82, 0x85, 0x28, 0x55, 0xD4, 0xD5, 0xD6, 0xD8, 0xA9, 0xAE, 0xF4, 0xC0 } } } }, // EoB 1
- { UNK_LANG, kPlatformDOS, { 0x00000071, 0x00000860, { { 0xEA, 0x5D, 0x33, 0xB6, 0x38, 0x30, 0x65, 0x29, 0x7F, 0x08, 0x89, 0x04, 0xC5, 0x97, 0x76, 0xCB } } } }, // EoB 2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseDscTelptrShpCoordsProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x0000009C, 0x00000EBE, { { 0x2D, 0x1D, 0x74, 0x39, 0x29, 0xC3, 0x6F, 0x53, 0xD9, 0xA5, 0x4B, 0x9F, 0xD6, 0xDD, 0x73, 0xE9 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBasePortalSeqDataProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x0000007E, 0x000002D0, { { 0x18, 0x7E, 0x65, 0x17, 0x4C, 0xD2, 0xB5, 0x2E, 0x81, 0xF8, 0x1C, 0xAC, 0x37, 0x21, 0x62, 0x2A } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseManDefProvider[] = {
- { EN_ANY, kPlatformDOS, { 0x00000078, 0x000002CD, { { 0x33, 0x9B, 0x0C, 0x6A, 0x2E, 0x4F, 0xE9, 0x02, 0x7B, 0xEE, 0xF1, 0x04, 0xA3, 0xBA, 0xD4, 0xF3 } } } }, // EoB 1
- { DE_DEU, kPlatformDOS, { 0x00000078, 0x000002C4, { { 0x92, 0x20, 0x58, 0x5F, 0x44, 0x09, 0x0B, 0xF0, 0xDA, 0x09, 0xE2, 0x44, 0x0B, 0xB7, 0x95, 0x96 } } } }, // EoB 1
- { EN_ANY, kPlatformDOS, { 0x000000C8, 0x00000834, { { 0x18, 0xEA, 0x33, 0xB7, 0x4B, 0x72, 0x23, 0x8D, 0x0E, 0x9F, 0x4E, 0xF5, 0x09, 0xA3, 0x9C, 0xEA } } } }, // EoB 2
- { DE_DEU, kPlatformDOS, { 0x000000C8, 0x00000622, { { 0xFE, 0x1D, 0x94, 0x3A, 0x0B, 0x17, 0x89, 0xEF, 0x60, 0x18, 0xB2, 0x43, 0x7A, 0x02, 0xDB, 0x61 } } } }, // EoB 2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseManWordProvider[] = {
- { EN_ANY, kPlatformDOS, { 0x000000E0, 0x00005134, { { 0x68, 0x9C, 0x19, 0x2B, 0x5F, 0x38, 0x36, 0x41, 0xA7, 0x7E, 0xB7, 0x51, 0x41, 0x60, 0x1D, 0x67 } } } }, // EoB 1
- { DE_DEU, kPlatformDOS, { 0x000000EA, 0x00005458, { { 0xEC, 0x14, 0x11, 0xE9, 0x19, 0xFD, 0xF8, 0xFC, 0xA8, 0x46, 0x3D, 0xCD, 0x56, 0x08, 0xC3, 0x4A } } } }, // EoB 1
- { EN_ANY, kPlatformDOS, { 0x0000017E, 0x00008B64, { { 0x66, 0x38, 0x09, 0x5B, 0x2E, 0x50, 0x54, 0x43, 0x1C, 0xEC, 0x56, 0x3B, 0x72, 0x39, 0xF9, 0xC3 } } } }, // EoB 2
- { DE_DEU, kPlatformDOS, { 0x0000015B, 0x00007C37, { { 0x44, 0xA3, 0x32, 0x88, 0x9F, 0x63, 0x28, 0xA0, 0xBD, 0x00, 0xF1, 0x08, 0xCA, 0xE5, 0xFE, 0x5F } } } }, // EoB 2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseManPromptProvider[] = {
- { EN_ANY, kPlatformDOS, { 0x00000041, 0x000013AC, { { 0x40, 0x2B, 0xB5, 0x99, 0xEF, 0x8F, 0x3C, 0x9F, 0xB1, 0x5A, 0xBE, 0xE4, 0x80, 0x8E, 0xBB, 0x96 } } } }, // EoB 1
- { DE_DEU, kPlatformDOS, { 0x00000048, 0x000015A5, { { 0x0B, 0xB4, 0x9E, 0xAD, 0xB3, 0x56, 0x75, 0xC1, 0xAE, 0x29, 0xF7, 0xB5, 0x82, 0x14, 0xD1, 0x27 } } } }, // EoB 1
- { EN_ANY, kPlatformDOS, { 0x00000041, 0x000013AC, { { 0x40, 0x2B, 0xB5, 0x99, 0xEF, 0x8F, 0x3C, 0x9F, 0xB1, 0x5A, 0xBE, 0xE4, 0x80, 0x8E, 0xBB, 0x96 } } } }, // EoB 2
- { DE_DEU, kPlatformDOS, { 0x0000005C, 0x00001D08, { { 0x10, 0xCE, 0x2D, 0xED, 0xA9, 0xA0, 0x7C, 0xA1, 0x91, 0x3F, 0xD8, 0x43, 0x03, 0x53, 0x97, 0xCA } } } }, // EoB 2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseDscMonsterFrmOffsTbl1Provider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000020, 0x00001000, { { 0x98, 0x27, 0x57, 0x25, 0x3B, 0x04, 0x7D, 0x14, 0x3A, 0xD4, 0xA2, 0x5D, 0xBA, 0x04, 0x45, 0xAC } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseDscMonsterFrmOffsTbl2Provider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000020, 0x00000828, { { 0x7E, 0x8A, 0x0C, 0xEB, 0x5C, 0xBC, 0x6C, 0xBD, 0xD2, 0x48, 0x08, 0xCC, 0xF7, 0x7B, 0x81, 0x03 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseInvSlotXProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000036, 0x000010BF, { { 0x50, 0x6E, 0x67, 0x2B, 0x7D, 0x6C, 0xF2, 0x21, 0x73, 0xA2, 0xD5, 0xBB, 0xCE, 0x3B, 0x71, 0xAA } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseInvSlotYProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x0000001B, 0x00000A5B, { { 0x47, 0x55, 0x7D, 0x84, 0x45, 0x91, 0xC4, 0x44, 0x10, 0xD5, 0x39, 0xC4, 0xC8, 0x4F, 0x01, 0xA4 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseSlotValidationFlagsProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000036, 0x00001F6B, { { 0x87, 0x4F, 0x9A, 0x97, 0x20, 0x20, 0xB2, 0xA6, 0xF7, 0xC2, 0x5F, 0xAA, 0x17, 0xEA, 0xB4, 0x50 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseProjectileWeaponTypesProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000008, 0x0000061C, { { 0x05, 0x55, 0xA6, 0xD1, 0x3C, 0x12, 0x84, 0xDA, 0xA9, 0x33, 0xCF, 0x07, 0x05, 0x2A, 0xB2, 0x29 } } } }, // EOB 1
- { UNK_LANG, kPlatformDOS, { 0x0000000F, 0x00000829, { { 0x9F, 0x6A, 0x13, 0x8A, 0xA7, 0x40, 0xE8, 0x40, 0x2E, 0x87, 0x49, 0x6B, 0x67, 0xED, 0xE8, 0xCE } } } }, // EOB 2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseWandTypesProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000007, 0x00000162, { { 0xDB, 0x5D, 0x34, 0x70, 0x41, 0xAB, 0x8F, 0x75, 0xC8, 0x61, 0x8E, 0x44, 0x82, 0xCF, 0x28, 0x03 } } } }, // EOB 1
- { UNK_LANG, kPlatformDOS, { 0x00000008, 0x00000175, { { 0x01, 0xC2, 0xF0, 0xC6, 0x1C, 0xD0, 0x14, 0xD9, 0xB8, 0xF5, 0x9C, 0xFC, 0x22, 0xE4, 0xA0, 0xA7 } } } }, // EOB 2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseDrawObjPosIndexProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000014, 0x00000028, { { 0x44, 0x46, 0x8C, 0x94, 0x76, 0x24, 0x08, 0xC7, 0x1F, 0x1B, 0x10, 0xD7, 0xDF, 0x18, 0x6C, 0x0D } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseFlightObjFlipIndexProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000010, 0x00000008, { { 0xEB, 0xF0, 0x27, 0x7E, 0xA8, 0x09, 0x3A, 0x95, 0x3B, 0x71, 0x2A, 0x43, 0x2E, 0xCF, 0x22, 0x0B } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseFlightObjShpMapProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000058, 0x000051BD, { { 0xC3, 0xD2, 0xD1, 0xE5, 0x78, 0xEE, 0xA7, 0xAA, 0x71, 0xD1, 0xDD, 0xDF, 0x40, 0xBB, 0xAF, 0x66 } } } }, // EOB 1
- { UNK_LANG, kPlatformDOS, { 0x0000002D, 0x000025E6, { { 0x64, 0x26, 0x3D, 0xDC, 0x6C, 0x1A, 0xFC, 0x36, 0x9E, 0x5A, 0xBF, 0x64, 0xAD, 0xF4, 0xA3, 0x5D } } } }, // EOB 2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseFlightObjSclIndexProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000048, 0x00002A0E, { { 0xAC, 0xBB, 0x7D, 0x73, 0x98, 0xF4, 0x1E, 0x4A, 0x77, 0xF0, 0x98, 0x75, 0x11, 0xBF, 0xF7, 0xD5 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseBookNumbersProvider[] = {
- { EN_ANY, kPlatformDOS, { 0x00000020, 0x00000AC8, { { 0x35, 0x05, 0x37, 0x4C, 0x05, 0x74, 0x04, 0x08, 0xAD, 0xA3, 0x64, 0xBF, 0xC0, 0x67, 0xF2, 0xF7 } } } },
- { DE_DEU, kPlatformDOS, { 0x00000028, 0x00000E5D, { { 0x80, 0x98, 0x05, 0x54, 0x84, 0x90, 0xD3, 0xB3, 0x9B, 0xFB, 0x8F, 0xB9, 0xA0, 0x43, 0xAA, 0xFD } } } },
- { EN_ANY, kPlatformDOS, { 0x00000020, 0x00000AC8, { { 0x35, 0x05, 0x37, 0x4C, 0x05, 0x74, 0x04, 0x08, 0xAD, 0xA3, 0x64, 0xBF, 0xC0, 0x67, 0xF2, 0xF7 } } } },
- { DE_DEU, kPlatformDOS, { 0x00000022, 0x00000BCA, { { 0x93, 0x0E, 0xE0, 0x6D, 0xDD, 0x40, 0xBC, 0x89, 0x67, 0xBD, 0x8A, 0xCB, 0xD2, 0xCF, 0x78, 0x8D } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseMageSpellsListProvider[] = {
- { EN_ANY, kPlatformDOS, { 0x00000122, 0x00006304, { { 0xD7, 0x14, 0x28, 0x83, 0x04, 0xC3, 0x42, 0x5A, 0x15, 0x49, 0x91, 0x12, 0x1D, 0x49, 0x17, 0x5B } } } },
- { DE_DEU, kPlatformDOS, { 0x0000013A, 0x00007155, { { 0x94, 0x45, 0xB9, 0x15, 0x57, 0x6E, 0xC6, 0x70, 0x66, 0x5F, 0xA7, 0x90, 0xA0, 0xC7, 0xC9, 0xE9 } } } },
- { EN_ANY, kPlatformDOS, { 0x00000195, 0x00008AC0, { { 0x55, 0xB8, 0x75, 0x35, 0x09, 0x23, 0x83, 0x11, 0x22, 0xF8, 0x23, 0x1E, 0x8F, 0x08, 0x57, 0x66 } } } },
- { DE_DEU, kPlatformDOS, { 0x0000019A, 0x0000929F, { { 0xB3, 0xA0, 0x2D, 0x3B, 0xF3, 0x72, 0x9B, 0x75, 0xA3, 0xC4, 0xD8, 0x72, 0x4B, 0xDE, 0x69, 0x82 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseClericSpellsListProvider[] = {
- { EN_ANY, kPlatformDOS, { 0x0000013B, 0x00006BE6, { { 0x34, 0x63, 0x0B, 0xBA, 0xED, 0xC2, 0x9B, 0x31, 0xC3, 0x65, 0x51, 0xFF, 0xEF, 0xD8, 0x25, 0x92 } } } },
- { DE_DEU, kPlatformDOS, { 0x0000016D, 0x00007E74, { { 0x6E, 0xDE, 0x28, 0xE6, 0x13, 0x3D, 0xA6, 0x42, 0x80, 0xAB, 0xE7, 0xED, 0xAD, 0xC8, 0x62, 0x48 } } } },
- { EN_ANY, kPlatformDOS, { 0x00000164, 0x000079B3, { { 0x93, 0x16, 0x25, 0xFB, 0x76, 0xFF, 0xBC, 0x70, 0x9A, 0xB7, 0x93, 0xFC, 0x2E, 0xC3, 0x61, 0x7F } } } },
- { DE_DEU, kPlatformDOS, { 0x0000018B, 0x00008BB1, { { 0x8C, 0x21, 0xED, 0xE0, 0x1F, 0xF1, 0xDB, 0x72, 0xC4, 0x46, 0x36, 0x50, 0x16, 0xD5, 0xA8, 0x68 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseSpellNamesProvider[] = {
- { EN_ANY, kPlatformDOS, { 0x0000029A, 0x0000F1C8, { { 0xCA, 0xE1, 0x30, 0xDC, 0xAB, 0xD1, 0x87, 0xE8, 0x51, 0xA2, 0xA2, 0x1C, 0x23, 0x4A, 0x34, 0x58 } } } },
- { DE_DEU, kPlatformDOS, { 0x000002D3, 0x0001080D, { { 0x5F, 0xDB, 0x9E, 0x48, 0x30, 0x03, 0xE1, 0x8E, 0xC7, 0xDC, 0x98, 0x10, 0xCE, 0xA1, 0x28, 0x31 } } } },
- { EN_ANY, kPlatformDOS, { 0x00000366, 0x00013B1A, { { 0x15, 0xCB, 0x0E, 0xA9, 0x4E, 0x78, 0x30, 0x99, 0xA1, 0xCF, 0xF7, 0x05, 0xAB, 0x00, 0x66, 0x82 } } } },
- { DE_DEU, kPlatformDOS, { 0x000003BA, 0x0001626B, { { 0x0E, 0x4F, 0xF6, 0xFB, 0x78, 0x5E, 0x03, 0xE7, 0x82, 0xC4, 0xE2, 0x7B, 0xD9, 0xB2, 0xD7, 0xB2 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseMagicStrings1Provider[] = {
- { EN_ANY, kPlatformDOS, { 0x00000084, 0x000029B0, { { 0xC6, 0x90, 0x19, 0x61, 0xA1, 0x66, 0xF6, 0x03, 0x7A, 0x1F, 0x10, 0x00, 0xCA, 0x8F, 0x69, 0x3B } } } },
- { DE_DEU, kPlatformDOS, { 0x0000009D, 0x000033E4, { { 0x4B, 0xCF, 0x40, 0xCE, 0x0F, 0x86, 0x98, 0x36, 0x03, 0x59, 0xFE, 0x32, 0xFA, 0x4C, 0x14, 0x75 } } } },
- { EN_ANY, kPlatformDOS, { 0x00000085, 0x000029BD, { { 0xAB, 0x22, 0x4A, 0x70, 0xBB, 0x29, 0xB8, 0xBD, 0xAF, 0xC5, 0x0D, 0x1F, 0x23, 0x38, 0xBD, 0x06 } } } },
- { DE_DEU, kPlatformDOS, { 0x0000008C, 0x00002D68, { { 0x4B, 0x0A, 0x09, 0x22, 0xF7, 0x77, 0x82, 0x4B, 0xFE, 0x0B, 0xF1, 0x8F, 0x1C, 0xEA, 0x1A, 0x0C } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseMagicStrings2Provider[] = {
- { EN_ANY, kPlatformDOS, { 0x00000051, 0x00001AD6, { { 0x28, 0x18, 0x2B, 0xF0, 0x0E, 0xC6, 0xEB, 0x01, 0xB0, 0x9A, 0x0A, 0x65, 0x05, 0xCB, 0x8F, 0x41 } } } },
- { DE_DEU, kPlatformDOS, { 0x0000004F, 0x00001A82, { { 0x77, 0x85, 0x17, 0x25, 0x07, 0x72, 0x4A, 0x7F, 0x4F, 0x39, 0x6C, 0xDD, 0xB6, 0x70, 0x11, 0x02 } } } },
- { EN_ANY, kPlatformDOS, { 0x00000090, 0x00002E35, { { 0x39, 0xD7, 0xA3, 0x21, 0xF0, 0xB7, 0x93, 0x9D, 0xDD, 0xEE, 0x33, 0xC2, 0x05, 0xE6, 0xE3, 0x63 } } } },
- { DE_DEU, kPlatformDOS, { 0x000000A1, 0x0000365C, { { 0x9A, 0x2D, 0xDB, 0x38, 0xB3, 0xF4, 0x0E, 0xF4, 0x36, 0x87, 0x60, 0xAE, 0xF8, 0x7E, 0xCA, 0x8A } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseMagicStrings3Provider[] = {
- { EN_ANY, kPlatformDOS, { 0x0000008D, 0x00002DC8, { { 0x35, 0x5E, 0xDD, 0x32, 0x2D, 0x55, 0x1E, 0xBC, 0x93, 0x49, 0x55, 0x48, 0x8F, 0xCD, 0x87, 0xEB } } } },
- { DE_DEU, kPlatformDOS, { 0x000000A8, 0x0000381C, { { 0x12, 0x95, 0x55, 0x57, 0x2B, 0xA0, 0x1A, 0x75, 0xD3, 0x43, 0xFF, 0x3E, 0x00, 0xB6, 0xEC, 0x35 } } } },
- { EN_ANY, kPlatformDOS, { 0x00000088, 0x00002CD4, { { 0xD8, 0xBA, 0x5D, 0x14, 0x92, 0x84, 0x5A, 0x07, 0xC6, 0x76, 0xDF, 0x11, 0x1D, 0x84, 0x7A, 0x98 } } } },
- { DE_DEU, kPlatformDOS, { 0x00000081, 0x00002B14, { { 0xC8, 0xB7, 0x77, 0xBC, 0x3A, 0xB6, 0xDC, 0xB7, 0x00, 0xF3, 0x06, 0xEB, 0x77, 0x10, 0x7C, 0x7E } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseMagicStrings4Provider[] = {
- { EN_ANY, kPlatformDOS, { 0x00000017, 0x0000071C, { { 0x96, 0x50, 0xA8, 0x08, 0x1B, 0x2D, 0x0C, 0xF6, 0x90, 0x6A, 0xE7, 0x9F, 0x65, 0xCC, 0x71, 0xA0 } } } },
- { DE_DEU, kPlatformDOS, { 0x0000001B, 0x00000840, { { 0xA2, 0xCF, 0x81, 0x3E, 0x87, 0xA8, 0x10, 0x1B, 0x44, 0x8D, 0x5B, 0x8B, 0xAE, 0x23, 0x30, 0xD3 } } } },
- { EN_ANY, kPlatformDOS, { 0x0000000C, 0x000003A5, { { 0x72, 0x64, 0xBD, 0x1C, 0xED, 0x05, 0x28, 0xFC, 0x94, 0x4B, 0x8F, 0x3C, 0x38, 0x08, 0x77, 0xED } } } },
- { DE_DEU, kPlatformDOS, { 0x00000010, 0x0000054E, { { 0xD9, 0x97, 0xA8, 0x24, 0x27, 0x7B, 0x01, 0x3F, 0x03, 0xBA, 0x2A, 0x43, 0x81, 0x8F, 0x97, 0x03 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseMagicStrings6Provider[] = {
- { EN_ANY, kPlatformDOS, { 0x00000029, 0x00000DA4, { { 0x5C, 0x6F, 0xA1, 0xC2, 0x56, 0xDE, 0xFE, 0xD5, 0x01, 0xFB, 0x65, 0x00, 0x24, 0xD1, 0x49, 0x7B } } } },
- { DE_DEU, kPlatformDOS, { 0x00000032, 0x00001211, { { 0x13, 0xBC, 0xF1, 0x03, 0x49, 0xDB, 0x16, 0xA5, 0xC3, 0x7C, 0xBF, 0x14, 0x8F, 0x40, 0x07, 0x8E } } } },
- { EN_ANY, kPlatformDOS, { 0x00000030, 0x00000FF5, { { 0xE4, 0x2B, 0xB9, 0xF0, 0x26, 0x3D, 0x30, 0xCD, 0xEF, 0xCD, 0xF5, 0xC0, 0x4E, 0xA4, 0xC4, 0x92 } } } },
- { DE_DEU, kPlatformDOS, { 0x00000029, 0x00000E6D, { { 0xE1, 0xBD, 0x4B, 0x42, 0x17, 0xA2, 0xB6, 0x6C, 0xF2, 0x7F, 0xEB, 0x41, 0x2C, 0x82, 0x8C, 0x76 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseMagicStrings7Provider[] = {
- { EN_ANY, kPlatformDOS, { 0x00000014, 0x00000406, { { 0xBD, 0xE1, 0x0A, 0x75, 0xD1, 0x18, 0xF7, 0x08, 0x2D, 0x2B, 0x65, 0x36, 0xA7, 0x59, 0x2E, 0x13 } } } },
- { DE_DEU, kPlatformDOS, { 0x0000000F, 0x000001E5, { { 0x1F, 0xC9, 0x46, 0x8B, 0x41, 0xAD, 0xAD, 0x2B, 0x5A, 0xA9, 0xAB, 0x94, 0x9A, 0x1E, 0x36, 0xAC } } } },
- { EN_ANY, kPlatformDOS, { 0x00000065, 0x000021AF, { { 0x76, 0x35, 0xAE, 0x1D, 0xC2, 0x54, 0x36, 0x11, 0x4D, 0x3E, 0x96, 0x11, 0xB2, 0xDC, 0x15, 0x20 } } } },
- { DE_DEU, kPlatformDOS, { 0x0000006F, 0x000026BA, { { 0xC9, 0x46, 0xD7, 0xF3, 0xF2, 0x5F, 0xF4, 0xB1, 0x22, 0xC8, 0x30, 0x16, 0x8E, 0x75, 0x4D, 0xA8 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseMagicStrings8Provider[] = {
- { EN_ANY, kPlatformDOS, { 0x00000056, 0x00001C95, { { 0x7E, 0x43, 0x73, 0xEC, 0x94, 0x0D, 0xF8, 0x1B, 0xF3, 0x1A, 0x62, 0x19, 0x96, 0x6A, 0x2C, 0xB5 } } } },
- { DE_DEU, kPlatformDOS, { 0x00000061, 0x0000213B, { { 0xE2, 0x3B, 0xA7, 0xB7, 0xE6, 0xA5, 0x0D, 0x0F, 0xE0, 0x94, 0x9B, 0xAE, 0xE1, 0x11, 0x97, 0x93 } } } },
- { EN_ANY, kPlatformDOS, { 0x00000085, 0x00002C0E, { { 0x6A, 0xEC, 0xF2, 0x5F, 0xA6, 0x3F, 0xB1, 0x1A, 0x74, 0x49, 0x5A, 0x47, 0xB0, 0x7A, 0xE6, 0x99 } } } },
- { DE_DEU, kPlatformDOS, { 0x00000096, 0x0000342E, { { 0x83, 0x48, 0x3B, 0xED, 0x73, 0x02, 0x03, 0xCA, 0xA9, 0x4D, 0x40, 0x0F, 0xDE, 0x17, 0x7D, 0x40 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseExpObjectTlModeProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000012, 0x0000000C, { { 0x98, 0x29, 0x54, 0xCD, 0xED, 0xAC, 0x7B, 0x61, 0x8D, 0x4F, 0x19, 0xE8, 0xA6, 0xB1, 0x51, 0x80 } } } },
- EXTRACT_END_ENTRY
-};
-const ExtractEntrySearchData kEoBBaseExpObjectTblIndexProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000009, 0x00000005, { { 0xFE, 0xEA, 0xC4, 0x54, 0x62, 0x7E, 0x43, 0x6E, 0x89, 0x48, 0x03, 0xE7, 0x47, 0xBF, 0x7D, 0x9D } } } }, // EOB 1
- { UNK_LANG, kPlatformDOS, { 0x0000000E, 0x00000004, { { 0x63, 0x27, 0x19, 0x17, 0xBD, 0xC3, 0x8A, 0xA7, 0x1E, 0xF7, 0xD1, 0x78, 0x39, 0x3B, 0xD4, 0x4F } } } }, // EOB 2
- EXTRACT_END_ENTRY
-};
-const ExtractEntrySearchData kEoBBaseExpObjectShpStartProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000004, 0x00000034, { { 0x27, 0xC5, 0x09, 0x97, 0x8E, 0xD4, 0xF1, 0x8D, 0x77, 0xEB, 0x1D, 0x34, 0x55, 0xB2, 0x48, 0x38 } } } },
- EXTRACT_END_ENTRY
-};
-const ExtractEntrySearchData kEoBBaseExpObjectTbl1Provider[] = {
- { UNK_LANG, kPlatformDOS, { 0x0000000D, 0x0000005D, { { 0x49, 0xC4, 0x47, 0x55, 0xDC, 0x25, 0x08, 0x03, 0x3D, 0x23, 0xAD, 0x09, 0x5F, 0x9C, 0x34, 0x06 } } } },
- EXTRACT_END_ENTRY
-};
-const ExtractEntrySearchData kEoBBaseExpObjectTbl2Provider[] = {
- { UNK_LANG, kPlatformDOS, { 0x0000000A, 0x0000005C, { { 0xAB, 0x6A, 0x97, 0x35, 0xCC, 0x13, 0xC4, 0x17, 0x0B, 0xF2, 0xD3, 0xFD, 0xA2, 0x1C, 0x6C, 0xA8 } } } },
- EXTRACT_END_ENTRY
-};
-const ExtractEntrySearchData kEoBBaseExpObjectTbl3Provider[] = {
- { UNK_LANG, kPlatformDOS, { 0x0000000B, 0x00000032, { { 0x59, 0x23, 0xB9, 0xBE, 0x0E, 0xFA, 0xEB, 0xDD, 0x82, 0x68, 0x5B, 0xB0, 0xBE, 0x9B, 0x1D, 0x8E } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseExpObjectYProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000008, 0x0000016C, { { 0xCF, 0x5B, 0x04, 0xAB, 0x1A, 0xAF, 0xDD, 0x56, 0xAC, 0xF6, 0x23, 0x86, 0x33, 0x06, 0x5A, 0xC6 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseSparkDefStepsProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000008, 0x000002FD, { { 0xB5, 0x6F, 0x31, 0x5F, 0xC6, 0x47, 0xE9, 0x23, 0x0E, 0x73, 0xBF, 0x77, 0xC7, 0xEE, 0xDB, 0x27 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseSparkDefSubStepsProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000004, 0x000000FF, { { 0x18, 0x27, 0x73, 0x45, 0x26, 0x58, 0x81, 0x82, 0x70, 0x86, 0x7A, 0x0D, 0xDE, 0xC1, 0x08, 0x52 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseSparkDefShiftProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000004, 0x0000000C, { { 0xCC, 0xDC, 0x78, 0xF9, 0xFE, 0x88, 0xF3, 0x87, 0xFD, 0x08, 0xE8, 0x8A, 0x38, 0xD5, 0x4C, 0x53 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseSparkDefAddProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000008, 0x0000007F, { { 0x7F, 0x86, 0x2E, 0x14, 0xDB, 0x36, 0xED, 0x99, 0xD9, 0xCE, 0xAF, 0x11, 0xC2, 0x89, 0x21, 0x6B } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseSparkDefXProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x0000000C, 0x000000A5, { { 0x77, 0xD7, 0xE0, 0x2D, 0xD4, 0x25, 0x94, 0x6E, 0x59, 0x3B, 0xAF, 0x9B, 0x16, 0x4F, 0x6D, 0x4C } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseSparkDefYProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000006, 0x00000138, { { 0xB9, 0xA2, 0x72, 0x01, 0x2A, 0xD7, 0x61, 0xAB, 0x02, 0x57, 0x87, 0xC8, 0x86, 0x83, 0xDF, 0xB3 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseSparkOfFlags1Provider[] = {
- { UNK_LANG, kPlatformDOS, { 0x0000002C, 0x00000BF4, { { 0x94, 0x8C, 0x1B, 0x77, 0xBF, 0x3A, 0x51, 0x17, 0x89, 0x16, 0xD0, 0x74, 0x95, 0xBD, 0x85, 0x98 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseSparkOfFlags2Provider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000040, 0x000003FC, { { 0x40, 0x13, 0x5A, 0x9D, 0xBD, 0x29, 0x2E, 0x9C, 0xC1, 0xE7, 0xD4, 0xC9, 0x26, 0xFA, 0xF2, 0x70 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseSparkOfShiftProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000010, 0x000000F0, { { 0xC5, 0xC8, 0x91, 0x7E, 0x78, 0x2F, 0xF1, 0xE5, 0xE0, 0x06, 0xB2, 0x39, 0xDC, 0x0D, 0x7A, 0x5F } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseSparkOfXProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000010, 0x00000528, { { 0x58, 0xE6, 0x24, 0x6A, 0xD3, 0xA4, 0xEF, 0x58, 0x4A, 0x9C, 0x32, 0x31, 0x4C, 0x61, 0xBC, 0x1C } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseSparkOfYProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000010, 0x000002D4, { { 0x74, 0x31, 0xFE, 0x7C, 0x38, 0x16, 0x0C, 0x05, 0x64, 0xAB, 0x8A, 0x69, 0xEA, 0x66, 0x29, 0x2F } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseSpellPropertiesProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x000003EF, 0x0000BE7A, { { 0x10, 0xEA, 0x14, 0x26, 0xE2, 0xFC, 0xA1, 0xCB, 0xD9, 0x80, 0xFE, 0x9F, 0x69, 0x58, 0x4A, 0xCA } } } },
- { UNK_LANG, kPlatformDOS, { 0x000003EF, 0x00008FCE, { { 0xC9, 0x36, 0xDD, 0x7B, 0x05, 0x6E, 0x92, 0xBA, 0x2B, 0x39, 0x87, 0xA7, 0x3A, 0x7E, 0xB0, 0xAD } } } },
- { UNK_LANG, kPlatformDOS, { 0x000006D6, 0x0000CA78, { { 0xEB, 0x3B, 0x9F, 0xFD, 0x4E, 0x3F, 0x5C, 0xDE, 0xC6, 0xBA, 0xFE, 0x83, 0xB4, 0x10, 0x6D, 0x95 } } } },
- { UNK_LANG, kPlatformDOS, { 0x000006D6, 0x0000EC32, { { 0x52, 0xAE, 0x4D, 0xC2, 0x24, 0xC8, 0xD3, 0xBE, 0x09, 0x45, 0x98, 0x38, 0x17, 0x7D, 0xFF, 0xE4 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseMagicFlightPropsProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000060, 0x0000166F, { { 0x38, 0x30, 0xCA, 0x07, 0x64, 0xBA, 0xC4, 0xA4, 0x4F, 0x75, 0xB4, 0x84, 0x3A, 0x92, 0xFD, 0xE3 } } } },
- { UNK_LANG, kPlatformDOS, { 0x00000038, 0x00000DDC, { { 0x23, 0x32, 0x8D, 0x34, 0x4F, 0x72, 0x37, 0xE1, 0x0C, 0x1B, 0x47, 0x17, 0x5D, 0xDF, 0xDB, 0xF5 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseTurnUndeadEffectProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x0000008C, 0x00002E8B, { { 0x96, 0x15, 0x61, 0x12, 0x43, 0xCF, 0x3A, 0x84, 0x1A, 0x89, 0xB5, 0x32, 0x0D, 0xB3, 0x20, 0x67 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseBurningHandsDestProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000008, 0x0000000C, { { 0x61, 0xD7, 0xAB, 0xE1, 0x56, 0x54, 0x51, 0x5B, 0xD9, 0x59, 0x2D, 0x3D, 0xAE, 0xA4, 0x49, 0x31 } } } }, // EOB1
- { UNK_LANG, kPlatformDOS, { 0x00000020, 0x0000003E, { { 0xA5, 0x8C, 0xCA, 0x13, 0xED, 0x0F, 0xB7, 0xA2, 0xD7, 0x9C, 0xCD, 0x11, 0x65, 0x11, 0x4B, 0xD8 } } } }, // EOB2
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseConeOfColdDest1Provider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000007, 0x00000500, { { 0x48, 0xF1, 0xFE, 0x48, 0xEC, 0x64, 0x17, 0x51, 0x5C, 0x9A, 0x91, 0x35, 0x95, 0xC3, 0x73, 0x8E } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseConeOfColdDest2Provider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000007, 0x00000210, { { 0xBA, 0x62, 0xA0, 0x4F, 0x50, 0x0C, 0x02, 0xC3, 0xAD, 0x7C, 0x39, 0x63, 0x5F, 0x41, 0xB4, 0xFB } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseConeOfColdDest3Provider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000007, 0x00000200, { { 0xA0, 0x1F, 0xAC, 0x3A, 0x2D, 0x25, 0x1F, 0x5C, 0xD2, 0x04, 0xAC, 0xAB, 0x97, 0x8B, 0x61, 0xD7 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseConeOfColdDest4Provider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000007, 0x000004F0, { { 0xB3, 0x9A, 0x2B, 0x3A, 0x51, 0x24, 0x95, 0xBE, 0xDE, 0x0F, 0xD5, 0xE9, 0xE9, 0x21, 0x96, 0x04 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseConeOfColdGfxTblProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000010, 0x0000003E, { { 0x0A, 0xBA, 0xFD, 0x3F, 0xD8, 0x49, 0x3F, 0xD2, 0x26, 0x1B, 0x19, 0x53, 0x4F, 0x84, 0xB9, 0x4F } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB1MainMenuStringsProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x00000037, 0x00000D79, { { 0x1D, 0x72, 0x7F, 0x8F, 0xEB, 0x4A, 0xBF, 0x82, 0xB7, 0xB5, 0x9D, 0xB0, 0x7B, 0xDA, 0xEC, 0xEE } } } },
- { DE_DEU, kPlatformUnknown, { 0x00000034, 0x00000C6F, { { 0xF2, 0x5F, 0xBE, 0xFB, 0x27, 0x1C, 0x91, 0x33, 0x25, 0x09, 0xC1, 0xA0, 0x27, 0x89, 0xD7, 0xD5 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB1BonusStringsProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x00000093, 0x000031B6, { { 0xC1, 0x54, 0x1D, 0x02, 0x4A, 0x35, 0x7F, 0x5D, 0x84, 0x2D, 0x2C, 0x9C, 0x06, 0x97, 0x29, 0x8D } } } },
- { DE_DEU, kPlatformUnknown, { 0x00000093, 0x000031CD, { { 0x3E, 0x0F, 0x52, 0x02, 0xC7, 0x9E, 0x83, 0xB3, 0xB1, 0xAB, 0x03, 0x3A, 0x18, 0xE2, 0x87, 0x2E } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB1IntroFilesOpeningProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x0000003F, 0x00001044, { { 0xF5, 0x8C, 0xC8, 0x39, 0x38, 0xBB, 0x0B, 0xCA, 0x34, 0x38, 0x1D, 0x11, 0x46, 0x91, 0xEF, 0x7E } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB1IntroFilesTowerProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x0000001A, 0x000006E6, { { 0xBD, 0x06, 0x3B, 0x7D, 0x24, 0x79, 0xD6, 0xC2, 0xFA, 0xDA, 0x31, 0x15, 0x3E, 0xE2, 0x75, 0xF8 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB1IntroFilesOrbProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000015, 0x00000565, { { 0xA7, 0x91, 0x97, 0x5B, 0x29, 0xE8, 0x27, 0x90, 0xB3, 0x8F, 0xD5, 0x13, 0x77, 0x4A, 0x93, 0x37 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB1IntroFilesWdEntryProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x0000002C, 0x00000B42, { { 0x5C, 0xDF, 0xB1, 0x2A, 0x83, 0x03, 0x73, 0x47, 0x1E, 0x29, 0x7C, 0x16, 0x2E, 0x5D, 0x0F, 0xA4 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB1IntroFilesKingProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000016, 0x000005AE, { { 0xB5, 0xB5, 0x80, 0xD3, 0xC0, 0xF4, 0x9F, 0xE1, 0x12, 0x3C, 0xCB, 0xD6, 0xF2, 0x7F, 0x15, 0x5B } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB1IntroFilesHandsProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x0000000A, 0x0000027C, { { 0x90, 0xC7, 0x36, 0xE6, 0x7D, 0x6D, 0xCB, 0x77, 0xA0, 0x03, 0x45, 0x48, 0x46, 0xF3, 0x80, 0xC8 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB1IntroFilesWdExitProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000033, 0x00000D2A, { { 0xA8, 0xF0, 0x36, 0x0E, 0x37, 0xC6, 0xCC, 0xDB, 0x9B, 0xB8, 0x52, 0x64, 0x02, 0x1E, 0x9D, 0x1C } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB1IntroFilesTunnelProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x0000001A, 0x000006E2, { { 0xA1, 0xDD, 0x20, 0x50, 0x7A, 0xB6, 0x89, 0x67, 0x13, 0xAA, 0x47, 0x6B, 0xC0, 0xA0, 0x8A, 0xFD } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB1IntroOpeningFrmDelayProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x0000000A, 0x000001E0, { { 0xDA, 0xE3, 0x06, 0xA2, 0x41, 0xF6, 0x5A, 0x6A, 0xBD, 0x0B, 0xA6, 0x09, 0x69, 0x03, 0x1D, 0x2C } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB1IntroWdEncodeXProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x0000001F, 0x000001BB, { { 0x00, 0x50, 0x8E, 0xF5, 0x51, 0xA6, 0xF5, 0x57, 0x0D, 0x55, 0x6C, 0x14, 0x62, 0xCD, 0xD0, 0x7E } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB1IntroWdEncodeYProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x0000001F, 0x0000000B, { { 0x39, 0x38, 0x02, 0xCE, 0x9D, 0x89, 0x1E, 0xBF, 0x32, 0x86, 0xA0, 0x79, 0xA4, 0xBE, 0xC5, 0x81 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB1IntroWdEncodeWHProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x0000001F, 0x00000027, { { 0xA8, 0x6C, 0x13, 0x2B, 0x4C, 0x26, 0x38, 0x3D, 0xDA, 0xC2, 0x90, 0xB3, 0x97, 0xA9, 0x45, 0x84 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB1IntroWdDsXProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x0000003E, 0x0000104A, { { 0xAC, 0x1F, 0xA6, 0x20, 0xD0, 0x02, 0xF0, 0x9D, 0x75, 0x93, 0x6C, 0x12, 0x0A, 0x76, 0x1B, 0x3F } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB1IntroWdDsYProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x0000001F, 0x00000655, { { 0xF3, 0xF7, 0x65, 0xEC, 0xEA, 0x5C, 0x08, 0xCF, 0xAD, 0x48, 0x35, 0xA2, 0x5B, 0x82, 0xB0, 0xC5 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB1IntroTvlX1Provider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000006, 0x00000027, { { 0x7F, 0x14, 0x7D, 0x8C, 0x20, 0x49, 0xDB, 0xC3, 0x31, 0x1A, 0xC3, 0x95, 0xA4, 0x8C, 0x96, 0xDC } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB1IntroTvlY1Provider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000006, 0x000000EC, { { 0x29, 0xB4, 0x8D, 0xE1, 0xDF, 0x36, 0x39, 0x27, 0xC8, 0xF6, 0x32, 0x1A, 0x3B, 0x74, 0xA1, 0x4F } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB1IntroTvlX2Provider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000006, 0x00000051, { { 0x51, 0x33, 0x0A, 0x55, 0x76, 0xA2, 0x91, 0xDA, 0x59, 0xD6, 0x09, 0xD9, 0x3D, 0xD4, 0xB8, 0xFE } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB1IntroTvlY2Provider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000006, 0x0000016A, { { 0xD5, 0xA3, 0xF6, 0x12, 0x90, 0x87, 0xF2, 0xC7, 0x6A, 0x22, 0x77, 0xB5, 0x48, 0xB2, 0xCB, 0xCA } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB1IntroTvlWProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000006, 0x0000004E, { { 0xCF, 0xC7, 0xA8, 0x59, 0x6A, 0x5B, 0x35, 0x7F, 0xC9, 0xEC, 0x59, 0x7E, 0x88, 0x31, 0x32, 0xA6 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB1IntroTvlHProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000006, 0x0000013D, { { 0x26, 0x7B, 0x3D, 0x5F, 0x64, 0x97, 0xF9, 0x1B, 0xB6, 0x65, 0x99, 0x95, 0x0A, 0x98, 0x38, 0x92 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB1DoorShapeDefsProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000060, 0x00000F8A, { { 0x95, 0x53, 0x1B, 0x07, 0x64, 0x81, 0x0E, 0x04, 0xC0, 0xDA, 0xB5, 0x74, 0x57, 0x04, 0x10, 0xE2 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB1DoorSwitchShapeDefsProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000060, 0x0000119E, { { 0xA4, 0xE6, 0x96, 0x36, 0x59, 0x05, 0xB8, 0x57, 0xF4, 0x6D, 0x79, 0x1D, 0x29, 0x52, 0xA0, 0xEE } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB1DoorSwitchCoordsProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000030, 0x000007F7, { { 0x85, 0x20, 0x98, 0x20, 0xE1, 0xD6, 0xA5, 0xBD, 0x9E, 0x59, 0x63, 0x6A, 0xEF, 0xEF, 0x80, 0x19 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB1MonsterPropertiesProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000252, 0x000038E5, { { 0x5E, 0xD7, 0xEF, 0x3B, 0xD5, 0xDA, 0x2A, 0x09, 0x78, 0xF6, 0xD8, 0x57, 0x68, 0xB4, 0x90, 0xCA } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB1EnemyMageSpellListProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x0000000A, 0x0000000F, { { 0x01, 0x1B, 0x9C, 0x51, 0xC9, 0xA2, 0x10, 0xBB, 0xA7, 0x82, 0xD4, 0x91, 0x7E, 0x84, 0x54, 0x93 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB1EnemyMageSfxProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x0000000A, 0x0000029B, { { 0xA2, 0x9F, 0x2E, 0xDE, 0x15, 0x23, 0x78, 0xDD, 0x26, 0x98, 0x6E, 0xA3, 0x77, 0xEA, 0xB5, 0x80 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB1BeholderSpellListProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000004, 0x00000079, { { 0x8E, 0x13, 0x54, 0x9D, 0x54, 0xF6, 0xC9, 0x6E, 0x10, 0xF1, 0xC0, 0xE9, 0x66, 0xDD, 0x95, 0xED } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB1BeholderSfxProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000004, 0x000000F5, { { 0xA9, 0x90, 0x41, 0x0D, 0xB5, 0xE0, 0x28, 0xFD, 0x0A, 0xC3, 0xF9, 0xEC, 0xC8, 0x47, 0xC1, 0x57 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB1TurnUndeadStringProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x00000027, 0x00000BF2, { { 0x43, 0x0A, 0x1E, 0xEE, 0x84, 0xD6, 0xD6, 0x87, 0x20, 0x9F, 0x15, 0x22, 0x9B, 0x65, 0x24, 0xDB } } } },
- { DE_DEU, kPlatformUnknown, { 0x00000030, 0x00000F48, { { 0xDA, 0x59, 0xEC, 0xC1, 0x9B, 0xCF, 0x90, 0x4A, 0x93, 0x3E, 0xE5, 0x26, 0x20, 0x8B, 0x74, 0x92 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB1CgaMappingDefaultProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000020, 0x0000002C, { { 0x7E, 0x1C, 0x75, 0xC3, 0x8E, 0xF7, 0x56, 0x62, 0x9B, 0xB6, 0xF4, 0x3A, 0x21, 0x03, 0xFA, 0xF5 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB1CgaMappingAltProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000020, 0x00000030, { { 0x2A, 0x8C, 0xF6, 0xD7, 0x87, 0xFA, 0x7B, 0x22, 0x28, 0x2A, 0x50, 0xE2, 0x26, 0x7B, 0xC7, 0x44 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB1CgaMappingInvProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000020, 0x0000002E, { { 0x3A, 0x06, 0xBF, 0x0C, 0xD4, 0xD0, 0x15, 0x1F, 0xB5, 0xC5, 0x49, 0xFD, 0x21, 0xE1, 0xE1, 0x66 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB1CgaMappingItemsLProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000020, 0x0000002A, { { 0xE0, 0x85, 0xA1, 0x3A, 0x3D, 0xC9, 0xF8, 0x56, 0x17, 0x0A, 0xD8, 0x44, 0x56, 0xDF, 0x3C, 0x57 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB1CgaMappingItemsSProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000020, 0x00000036, { { 0x2E, 0x6F, 0xD4, 0x2E, 0xB2, 0x84, 0xB2, 0xC3, 0x36, 0x88, 0x80, 0xC1, 0x67, 0x5A, 0xEB, 0x60 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB1CgaMappingThrownProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000020, 0x00000030, { { 0x0C, 0x3D, 0x1E, 0xAB, 0x0B, 0x25, 0x9F, 0x78, 0xE6, 0xB1, 0x52, 0x79, 0x0F, 0x96, 0x33, 0x97 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB1CgaMappingIconsProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000020, 0x00000039, { { 0x99, 0x50, 0x1A, 0xE1, 0xF3, 0x52, 0xC3, 0x5A, 0x4E, 0xBD, 0x03, 0x74, 0x2C, 0x39, 0xCA, 0x71 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB1CgaMappingDecoProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000020, 0x00000035, { { 0xA5, 0x17, 0xED, 0xEE, 0x02, 0x87, 0x8C, 0x9D, 0xAC, 0x96, 0xC6, 0x07, 0xB0, 0x8E, 0x5D, 0xE3 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB1CgaLevelMappingIndexProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x0000000C, 0x00000013, { { 0x48, 0x5D, 0xDF, 0x8F, 0xFD, 0x5D, 0xA0, 0xB0, 0x00, 0xD8, 0xB3, 0x09, 0x90, 0x5D, 0x13, 0x3F } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB1CgaMappingLevel0Provider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000020, 0x00000035, { { 0xC2, 0x4D, 0x2F, 0x0A, 0xB0, 0x3E, 0x46, 0x80, 0xD1, 0xEE, 0x32, 0x5F, 0xBA, 0x5C, 0xCC, 0x7A } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB1CgaMappingLevel1Provider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000020, 0x00000030, { { 0x94, 0x8E, 0xAE, 0x12, 0xB5, 0x68, 0xCD, 0x43, 0x95, 0xD2, 0x01, 0x21, 0x0C, 0xA1, 0x34, 0xF5 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB1CgaMappingLevel2Provider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000020, 0x00000030, { { 0x20, 0x6F, 0x9F, 0x57, 0x0C, 0xFD, 0xDA, 0x5C, 0xA0, 0x1D, 0x28, 0xB4, 0x88, 0x24, 0x68, 0x68 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB1CgaMappingLevel3Provider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000020, 0x00000030, { { 0x44, 0x95, 0x9A, 0x69, 0x70, 0xB2, 0x63, 0xB6, 0xFB, 0xD0, 0xFF, 0xD9, 0xF0, 0xCD, 0xD4, 0x75 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB1CgaMappingLevel4Provider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000020, 0x00000031, { { 0xEA, 0xC4, 0x01, 0xC0, 0x21, 0xFE, 0x66, 0xDD, 0xD4, 0x83, 0xC1, 0x2C, 0x09, 0xD3, 0xD0, 0x97 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB1NpcShpDataProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x0000004C, 0x00000A42, { { 0x70, 0x21, 0x85, 0x8C, 0xD4, 0x04, 0xAA, 0x20, 0x1D, 0x0E, 0x9D, 0xB7, 0x74, 0x58, 0xCC, 0x0C } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB1NpcSubShpIndex1Provider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000006, 0x00000035, { { 0x9A, 0x83, 0xF9, 0xA4, 0x27, 0xBA, 0xFC, 0xD2, 0xDE, 0x03, 0x65, 0xF2, 0xFA, 0x37, 0xDA, 0xF1 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB1NpcSubShpIndex2Provider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000006, 0x00000051, { { 0x7E, 0xAC, 0x0E, 0x54, 0x59, 0x5D, 0xF6, 0x53, 0x03, 0x22, 0x1D, 0xC7, 0xFC, 0x16, 0xC8, 0x88 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB1NpcSubShpYProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000006, 0x00000143, { { 0xC1, 0xED, 0x93, 0x5E, 0x84, 0xCE, 0x48, 0xCF, 0x4C, 0xF3, 0x9C, 0x93, 0xBF, 0xFE, 0xB8, 0x6F } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB1Npc0StringsProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x00000044, 0x000016E2, { { 0x7C, 0x28, 0x72, 0xC9, 0x57, 0xF5, 0xAB, 0x02, 0xD1, 0x42, 0xE8, 0xA3, 0xF9, 0x33, 0x70, 0xEE } } } },
- { DE_DEU, kPlatformUnknown, { 0x00000050, 0x00001B13, { { 0x69, 0x05, 0xEB, 0xB6, 0x86, 0x81, 0xAC, 0x09, 0x53, 0x35, 0x4D, 0x55, 0xF3, 0x13, 0x6F, 0xC0 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB1Npc11StringsProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x0000001B, 0x00000928, { { 0x86, 0x08, 0x95, 0x6B, 0xBF, 0x12, 0x2D, 0xF9, 0x62, 0x25, 0xD9, 0xAE, 0x25, 0x10, 0xDF, 0xDC } } } },
- { DE_DEU, kPlatformUnknown, { 0x0000001A, 0x000008DB, { { 0xBD, 0xBB, 0x48, 0x8E, 0x04, 0x7D, 0xE4, 0x78, 0xBB, 0x59, 0x6E, 0x86, 0xE1, 0x06, 0x27, 0x50 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB1Npc12StringsProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x00000016, 0x0000079C, { { 0x22, 0x57, 0x3A, 0x9C, 0x7C, 0xDB, 0x55, 0xD0, 0x9C, 0x84, 0x28, 0xA6, 0x9D, 0x40, 0x38, 0x6E } } } },
- { DE_DEU, kPlatformUnknown, { 0x00000014, 0x000006ED, { { 0x88, 0x1C, 0x09, 0x61, 0x5D, 0x9D, 0xDE, 0x8A, 0x54, 0x1C, 0x40, 0xCF, 0x28, 0x2B, 0x52, 0x9D } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB1Npc21StringsProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x00000014, 0x000006FD, { { 0x55, 0x77, 0x2F, 0xB0, 0xB3, 0x2D, 0x81, 0x29, 0xDE, 0x71, 0x83, 0x41, 0x06, 0x5B, 0x72, 0x21 } } } },
- { DE_DEU, kPlatformUnknown, { 0x00000015, 0x00000748, { { 0x3E, 0x15, 0x27, 0xFD, 0x76, 0xFB, 0x14, 0x8C, 0xF6, 0x14, 0x3E, 0x20, 0x0A, 0x04, 0xF5, 0x32 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB1Npc22StringsProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x0000000F, 0x000004D4, { { 0xE5, 0x97, 0x06, 0x45, 0x6A, 0xAC, 0x96, 0x6D, 0x0A, 0xC9, 0xDF, 0x8F, 0x96, 0x2D, 0x01, 0x5D } } } },
- { DE_DEU, kPlatformUnknown, { 0x0000000D, 0x00000439, { { 0x87, 0xCB, 0x17, 0xD2, 0xC8, 0x7F, 0x34, 0xDA, 0x82, 0x30, 0xB2, 0x68, 0xB0, 0x10, 0xD9, 0x52 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB1Npc31StringsProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x00000011, 0x00000597, { { 0x5C, 0xEB, 0x0A, 0xE6, 0xB1, 0x37, 0x0E, 0x8F, 0x14, 0xB4, 0x68, 0x86, 0xE5, 0xD2, 0xDE, 0xC7 } } } },
- { DE_DEU, kPlatformUnknown, { 0x00000012, 0x00000603, { { 0x8E, 0x68, 0x55, 0xCD, 0x29, 0x1E, 0x3C, 0x06, 0x7B, 0x97, 0xE1, 0x07, 0x49, 0x09, 0xF0, 0x57 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB1Npc32StringsProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x00000020, 0x00000AE4, { { 0xED, 0x09, 0x04, 0xEC, 0xE3, 0x43, 0xDA, 0xEE, 0x5D, 0x78, 0x32, 0x63, 0x68, 0xFC, 0x4F, 0x9E } } } },
- { DE_DEU, kPlatformUnknown, { 0x00000020, 0x00000B13, { { 0x87, 0x40, 0x88, 0xA5, 0xE2, 0x6F, 0x83, 0xBC, 0x99, 0x2B, 0xD3, 0xF5, 0x8D, 0x6B, 0x6E, 0x7D } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB1Npc4StringsProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x0000000D, 0x0000043C, { { 0x2C, 0xE7, 0xE5, 0xAA, 0xF3, 0x50, 0xA8, 0x6D, 0xC2, 0xC6, 0x88, 0xFE, 0x12, 0x96, 0xFE, 0x54 } } } },
- { DE_DEU, kPlatformUnknown, { 0x00000014, 0x00000720, { { 0xF8, 0x58, 0x9A, 0xDB, 0xE5, 0x3F, 0x67, 0x53, 0x1F, 0x27, 0x2E, 0x8D, 0x6E, 0xAD, 0x45, 0xF5 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB1Npc5StringsProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x00000021, 0x00000ABC, { { 0xF1, 0xB5, 0x9E, 0x51, 0x9E, 0xF8, 0x84, 0x95, 0x55, 0x55, 0xE7, 0xDF, 0x36, 0xE1, 0x78, 0x9A } } } },
- { DE_DEU, kPlatformUnknown, { 0x0000001D, 0x00000A8C, { { 0x4A, 0xAE, 0x5B, 0x3B, 0xAD, 0x18, 0x91, 0x3F, 0xC9, 0x5A, 0x82, 0x5D, 0xA7, 0x06, 0x1A, 0xAE } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB1Npc6StringsProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x00000011, 0x00000612, { { 0x1B, 0xE2, 0x23, 0xD9, 0x00, 0x5C, 0xB9, 0x54, 0xCE, 0xA7, 0x6A, 0x51, 0xF6, 0xBB, 0x8A, 0xC9 } } } },
- { DE_DEU, kPlatformUnknown, { 0x00000012, 0x00000647, { { 0x6C, 0x3F, 0xE2, 0xD0, 0xB0, 0x75, 0x2D, 0x73, 0xEE, 0x6F, 0x17, 0x74, 0xAA, 0x7D, 0xA2, 0x21 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB1Npc7StringsProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x00000018, 0x00000777, { { 0x60, 0xB4, 0x17, 0x72, 0x89, 0x87, 0x47, 0xE3, 0xD9, 0xC3, 0x59, 0x16, 0xFD, 0x03, 0x31, 0xD4 } } } },
- { DE_DEU, kPlatformUnknown, { 0x00000016, 0x000007B6, { { 0xAE, 0xB6, 0x3C, 0x14, 0x2B, 0x34, 0xB8, 0x7C, 0xCF, 0x87, 0xDA, 0x70, 0xBF, 0x0D, 0xAB, 0xE2 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2MainMenuStringsProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x0000005F, 0x000017BE, { { 0x77, 0x8A, 0x50, 0x9F, 0x42, 0xD8, 0x00, 0x05, 0x60, 0x2A, 0x80, 0x25, 0x00, 0xDC, 0x7C, 0x92 } } } },
- { DE_DEU, kPlatformUnknown, { 0x0000005E, 0x000017F3, { { 0xD0, 0x93, 0x2E, 0x5F, 0x9D, 0xDB, 0xC4, 0xFB, 0x9E, 0x9F, 0x14, 0xD6, 0xB4, 0xBE, 0x3D, 0x0C } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2TransferPortraitFramesProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000040, 0x00000B25, { { 0x13, 0x25, 0x69, 0xC6, 0xE4, 0x9D, 0x35, 0x11, 0xAB, 0xE2, 0xC1, 0xEF, 0x21, 0x8B, 0xB8, 0x28 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2TransferConvertTableProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000031, 0x000004BC, { { 0x96, 0x53, 0xA2, 0xF1, 0x26, 0xFE, 0x1B, 0x5E, 0xDF, 0x62, 0x2C, 0x8C, 0xBD, 0x62, 0x5A, 0xF9 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2TransferItemTableProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x0000003C, 0x00000025, { { 0xD0, 0xA4, 0xB3, 0x7D, 0x74, 0x4D, 0x16, 0x43, 0x56, 0x07, 0x84, 0xAA, 0x96, 0xBD, 0x82, 0x25 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2TransferExpTableProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000018, 0x0000076B, { { 0x91, 0x65, 0x5B, 0x8D, 0xE8, 0x5B, 0x28, 0x32, 0x4D, 0x7A, 0x57, 0x8E, 0x18, 0x5B, 0x1A, 0xE9 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2TransferStrings1Provider[] = {
- { EN_ANY, kPlatformUnknown, { 0x00000010, 0x000003D3, { { 0x31, 0xE4, 0x65, 0x69, 0x0A, 0xA1, 0x1D, 0xD1, 0xFE, 0xF8, 0x5C, 0x29, 0xB1, 0x46, 0xBD, 0xBE } } } },
- { DE_DEU, kPlatformUnknown, { 0x00000010, 0x000003E2, { { 0xF0, 0x10, 0xF8, 0x9F, 0x05, 0x1E, 0x31, 0x33, 0x4E, 0xC8, 0x49, 0xBC, 0x9E, 0xAD, 0xD4, 0x99 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2TransferStrings2Provider[] = {
- { EN_ANY, kPlatformUnknown, { 0x0000006A, 0x00002681, { { 0x12, 0x4D, 0x29, 0x9D, 0xD3, 0xFC, 0x39, 0x22, 0x73, 0x1E, 0x5C, 0xAF, 0x1F, 0xD1, 0xAA, 0x87 } } } },
- { DE_DEU, kPlatformUnknown, { 0x00000057, 0x00001F8E, { { 0x85, 0xD8, 0x39, 0x1E, 0x6D, 0x97, 0xBD, 0x0E, 0xDD, 0xCF, 0x19, 0x47, 0x31, 0xDC, 0x7C, 0x1A } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2TransferLabelsProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x0000000A, 0x00000240, { { 0x2A, 0x8B, 0x54, 0x99, 0x94, 0x35, 0x2B, 0xAB, 0x7F, 0x7F, 0x98, 0xA3, 0xFD, 0x57, 0x20, 0xDE } } } },
- { DE_DEU, kPlatformUnknown, { 0x00000009, 0x000001DF, { { 0x47, 0x6B, 0xBA, 0xCD, 0x99, 0x74, 0xCA, 0x3C, 0xAA, 0xC6, 0xB4, 0x50, 0x38, 0x90, 0x25, 0xB8 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2IntroStringsProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x00000321, 0x0000DBC3, { { 0x11, 0x9B, 0x54, 0xB3, 0x34, 0xF0, 0xB5, 0xE1, 0xFA, 0x6A, 0x31, 0x02, 0x59, 0x29, 0xCA, 0x94 } } } },
- { DE_DEU, kPlatformUnknown, { 0x0000038E, 0x0001119C, { { 0x92, 0x63, 0x18, 0xDD, 0x9F, 0x62, 0xF5, 0xBC, 0x3D, 0x93, 0xDC, 0x6E, 0xE5, 0xBE, 0x8C, 0x0B } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2IntroCPSFilesProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x000000A2, 0x0000296A, { { 0xE9, 0x28, 0x4A, 0x6E, 0xAA, 0x44, 0xF4, 0xD7, 0xD1, 0x29, 0xBF, 0x90, 0x6B, 0x82, 0xD1, 0x77 } } } },
- { DE_DEU, kPlatformUnknown, { 0x000000A2, 0x0000296B, { { 0x03, 0xA2, 0x0A, 0xAB, 0x76, 0x78, 0x04, 0x88, 0x6A, 0xE0, 0x36, 0x8B, 0x3A, 0x87, 0x44, 0xC8 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2IntroAnimData00Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000037, 0x000003E1, { { 0x38, 0xC2, 0x0F, 0xE1, 0x43, 0x6A, 0xE8, 0x7C, 0x82, 0x65, 0x9B, 0x4A, 0x9F, 0x83, 0xCD, 0xC8 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2IntroAnimData01Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000037, 0x000003A3, { { 0x84, 0x44, 0xF4, 0x46, 0x4E, 0x2B, 0xD7, 0xC6, 0xAD, 0x14, 0xF1, 0x9E, 0x8A, 0xBE, 0x7B, 0x42 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2IntroAnimData02Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000037, 0x00000446, { { 0x0C, 0xCA, 0x41, 0x0C, 0x89, 0x59, 0xD5, 0x28, 0x9A, 0xDC, 0x51, 0x1C, 0x0B, 0x8C, 0xD2, 0xDB } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2IntroAnimData03Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x0000002C, 0x0000010E, { { 0xAB, 0x48, 0x64, 0x02, 0xB3, 0xF3, 0x6C, 0x82, 0x9D, 0x37, 0x5F, 0x52, 0x0F, 0x5B, 0xDF, 0x96 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2IntroAnimData04Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000021, 0x00000149, { { 0x3B, 0xAC, 0x14, 0x51, 0xDF, 0x5D, 0x22, 0x15, 0x46, 0x4E, 0xCD, 0xF3, 0xD4, 0x61, 0x29, 0x4A } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2IntroAnimData05Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x0000002C, 0x0000010E, { { 0x28, 0x29, 0x5F, 0x31, 0x23, 0x53, 0xBA, 0xD7, 0x24, 0xB9, 0x21, 0x70, 0x84, 0x8A, 0x1C, 0x2E } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2IntroAnimData06Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x000000B0, 0x00001365, { { 0x91, 0x28, 0x2F, 0x10, 0x45, 0x4D, 0xCF, 0x3E, 0x70, 0x1E, 0xD4, 0xBA, 0x0E, 0x70, 0xDE, 0xD0 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2IntroAnimData07Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000037, 0x000003C4, { { 0x8C, 0x72, 0xDE, 0x4F, 0x92, 0x52, 0x0A, 0xED, 0xF4, 0x79, 0xD6, 0x3D, 0x8F, 0x59, 0x9D, 0x69 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2IntroAnimData08Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000042, 0x00000442, { { 0xD2, 0x91, 0x51, 0xEB, 0x91, 0x13, 0x43, 0xCE, 0x7E, 0x60, 0xB8, 0xFF, 0xA7, 0xE2, 0x4C, 0x11 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2IntroAnimData09Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x0000002C, 0x000004BC, { { 0xD6, 0xC7, 0x44, 0x2E, 0xE7, 0x2A, 0x44, 0x09, 0x39, 0xC3, 0xD3, 0xA8, 0x02, 0xC8, 0xA0, 0x19 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2IntroAnimData10Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x0000006E, 0x00000C12, { { 0x91, 0xDB, 0x41, 0x7A, 0x4F, 0x7C, 0x7B, 0x83, 0x32, 0x13, 0x68, 0xF6, 0x58, 0x79, 0xDA, 0x99 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2IntroAnimData11Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x000000B0, 0x0000073C, { { 0x17, 0x1F, 0x4D, 0x05, 0x3F, 0x14, 0x2E, 0x77, 0xD3, 0xDB, 0x78, 0x67, 0xBB, 0x18, 0xDC, 0x85 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2IntroAnimData12Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000021, 0x00000228, { { 0xC9, 0x50, 0x68, 0x51, 0xD0, 0xC1, 0x5D, 0xD4, 0xFF, 0x08, 0x28, 0xDE, 0xC4, 0x41, 0x8C, 0xDB } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2IntroAnimData13Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x0000002C, 0x00000340, { { 0x03, 0xCA, 0x5D, 0xD1, 0x15, 0xFA, 0x60, 0xD7, 0x70, 0x64, 0x3D, 0x44, 0x08, 0xB8, 0xDB, 0xAD } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2IntroAnimData14Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000042, 0x000007C0, { { 0x82, 0xA9, 0x0B, 0x90, 0x9D, 0x65, 0x1E, 0xC7, 0x03, 0x5E, 0xB7, 0xDF, 0x6E, 0x1F, 0xED, 0xD6 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2IntroAnimData15Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x0000002C, 0x00000504, { { 0xA7, 0x91, 0x4F, 0xAD, 0xB1, 0x77, 0x80, 0x3A, 0xC7, 0xDE, 0x35, 0x7A, 0x96, 0x16, 0xD2, 0x13 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2IntroAnimData16Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000079, 0x00000B3D, { { 0xCC, 0x63, 0x5A, 0x11, 0xEE, 0x8A, 0xAE, 0x3A, 0x14, 0xC3, 0xBC, 0xDA, 0xAF, 0x1D, 0xD4, 0x2C } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2IntroAnimData17Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000084, 0x00000911, { { 0x09, 0x1C, 0x4B, 0xD9, 0x0B, 0x2A, 0xD6, 0xC1, 0xE3, 0x8D, 0xFE, 0x43, 0x8F, 0x2E, 0x21, 0x51 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2IntroAnimData18Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000058, 0x000008FA, { { 0xFE, 0x58, 0xD9, 0x67, 0x78, 0x97, 0xE2, 0xCD, 0x82, 0xB8, 0xC9, 0xC0, 0x1F, 0xCA, 0x7C, 0xF5 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2IntroAnimData19Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x0000009A, 0x00000D6B, { { 0xA1, 0xDD, 0x7B, 0x8B, 0x25, 0xA5, 0x96, 0x5A, 0x33, 0x5E, 0x80, 0x5F, 0xA5, 0xBB, 0xAC, 0x11 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2IntroAnimData20Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x0000009A, 0x00000D6C, { { 0x19, 0xF9, 0x93, 0x1D, 0x01, 0xEE, 0x7C, 0x8B, 0x6C, 0x3E, 0x35, 0x2C, 0x5C, 0x88, 0xCD, 0xB6 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2IntroAnimData21Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x0000009A, 0x00000D83, { { 0xCB, 0x4F, 0x21, 0x29, 0x63, 0x5B, 0x8C, 0xF2, 0xBA, 0x03, 0x49, 0xD1, 0xAF, 0x22, 0xB0, 0xD5 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2IntroAnimData22Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000016, 0x00000200, { { 0x66, 0xEE, 0x45, 0xB1, 0x87, 0x66, 0xC4, 0x55, 0xCE, 0x60, 0x0C, 0x5B, 0xBB, 0x3C, 0x7D, 0x33 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2IntroAnimData23Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000016, 0x0000020D, { { 0xC4, 0x49, 0xE2, 0x5B, 0x2E, 0x17, 0x68, 0xC4, 0xBA, 0x20, 0xEC, 0xB1, 0xEB, 0x1A, 0xFB, 0xE0 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2IntroAnimData24Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000016, 0x00000214, { { 0xF1, 0x46, 0x82, 0xEF, 0x6D, 0xCA, 0x68, 0xA2, 0xF3, 0x55, 0x63, 0xD2, 0x13, 0x25, 0x19, 0xF7 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2IntroAnimData25Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000016, 0x00000256, { { 0x8F, 0xB9, 0xCD, 0xB8, 0x58, 0xCB, 0x90, 0x03, 0xFC, 0xB6, 0x95, 0x6F, 0x52, 0xF8, 0x7D, 0x19 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2IntroAnimData26Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000016, 0x00000263, { { 0x7A, 0x37, 0x07, 0xC4, 0x67, 0x72, 0x1F, 0xCB, 0xAC, 0x98, 0x46, 0x9A, 0xF3, 0x5F, 0xBA, 0x78 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2IntroAnimData27Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000016, 0x0000026A, { { 0x80, 0x11, 0xEE, 0x44, 0xDA, 0xE1, 0x26, 0x1F, 0x14, 0x7E, 0x93, 0x99, 0x44, 0x44, 0x9F, 0x85 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2IntroAnimData28Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000016, 0x000001F6, { { 0x45, 0xA1, 0xA5, 0xEC, 0x85, 0x06, 0xE2, 0x91, 0x28, 0xE0, 0xBB, 0x53, 0x74, 0x44, 0xD9, 0xA6 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2IntroAnimData29Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000016, 0x000001F9, { { 0x3F, 0x03, 0x2F, 0x8B, 0xFB, 0x6A, 0x97, 0x05, 0xED, 0xBB, 0xD6, 0xA0, 0xF5, 0x7A, 0x6D, 0x08 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2IntroAnimData30Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000016, 0x00000204, { { 0xA1, 0x37, 0x57, 0xC3, 0x72, 0x08, 0x98, 0xA6, 0xF4, 0x5E, 0x58, 0x9E, 0xF3, 0x11, 0x88, 0x1E } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2IntroAnimData31Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000016, 0x00000212, { { 0x19, 0xCC, 0x6F, 0xA8, 0x29, 0xB5, 0x3B, 0x15, 0x2F, 0x2C, 0x43, 0xED, 0x7A, 0xF5, 0xC5, 0x69 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2IntroAnimData32Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000037, 0x000006C9, { { 0xBF, 0x65, 0xBA, 0x3F, 0x44, 0xEE, 0xB0, 0x5C, 0x8B, 0xBD, 0x15, 0xAB, 0x03, 0xD1, 0x55, 0x21 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2IntroAnimData33Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x0000009A, 0x00001585, { { 0xB5, 0x44, 0x06, 0xC9, 0xE8, 0x27, 0x75, 0x6E, 0x63, 0x77, 0xE9, 0xA9, 0x68, 0x73, 0xF5, 0x78 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2IntroAnimData34Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000058, 0x00000B43, { { 0x52, 0xB4, 0x1E, 0x14, 0x88, 0xBD, 0x8A, 0xD7, 0x38, 0xDF, 0x25, 0xB0, 0xAF, 0xAE, 0x76, 0xE1 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2IntroAnimData35Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000037, 0x000005A4, { { 0xFB, 0x82, 0xE7, 0xB2, 0x54, 0xDB, 0xB5, 0xE1, 0xCE, 0xFB, 0xD1, 0x23, 0x39, 0x8F, 0xA1, 0x0D } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2IntroAnimData36Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000042, 0x00000572, { { 0x2C, 0x16, 0xD9, 0xBE, 0xDB, 0xBA, 0x04, 0xCA, 0x97, 0xB5, 0x88, 0x43, 0xA8, 0x62, 0xE2, 0x04 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2IntroAnimData37Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000016, 0x0000024E, { { 0xFF, 0x28, 0xD8, 0x62, 0xC6, 0xAD, 0x48, 0xC7, 0x31, 0x84, 0x6C, 0xBA, 0x9F, 0x4D, 0x15, 0xDA } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2IntroAnimData38Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x000001D9, 0x00001FB1, { { 0x16, 0xB0, 0xDF, 0x86, 0x8C, 0xB3, 0x52, 0xEF, 0x21, 0x04, 0x22, 0x6D, 0xC0, 0x03, 0xB8, 0xC6 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2IntroAnimData39Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x0000004D, 0x00000582, { { 0x11, 0x6C, 0xBB, 0xF6, 0x1B, 0x3C, 0xAE, 0xAA, 0x40, 0x27, 0x3F, 0x86, 0x33, 0x92, 0xCB, 0xA9 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2IntroAnimData40Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000160, 0x000010A2, { { 0xD9, 0x9D, 0xF1, 0x7D, 0xE1, 0x7C, 0x61, 0xC0, 0xD4, 0xD3, 0x05, 0x0C, 0x79, 0xDD, 0xDB, 0xD1 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2IntroAnimData41Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000037, 0x00000355, { { 0x92, 0x85, 0xBE, 0x5A, 0x38, 0x08, 0xF3, 0xDF, 0xC6, 0x56, 0x74, 0xC3, 0x0B, 0x3F, 0x72, 0x4D } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2IntroAnimData42Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000021, 0x0000010B, { { 0x68, 0xF8, 0x1D, 0x74, 0x6D, 0x32, 0x1E, 0x3A, 0x1C, 0xD1, 0x1D, 0x4B, 0x89, 0x3D, 0x5F, 0x2B } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2IntroAnimData43Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000037, 0x00000116, { { 0xD5, 0x46, 0xCB, 0x3F, 0x27, 0xBD, 0x2B, 0xD6, 0x35, 0x69, 0x9E, 0x0A, 0x28, 0xDA, 0xC9, 0x84 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2IntroShapes00Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x0000005A, 0x00000A86, { { 0xF9, 0xD5, 0xD2, 0x93, 0xBC, 0xC4, 0x86, 0x3F, 0x83, 0x0D, 0xDB, 0x38, 0x60, 0x6E, 0xA7, 0xDA } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2IntroShapes01Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x0000000C, 0x0000009B, { { 0xAA, 0xDD, 0x25, 0x21, 0x57, 0x6A, 0xB7, 0xEB, 0xDA, 0xFD, 0x72, 0x3B, 0xCA, 0x68, 0xDB, 0x34 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2IntroShapes04Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x0000003C, 0x00000417, { { 0x13, 0x95, 0x81, 0x46, 0x84, 0x36, 0xF2, 0xFC, 0xDE, 0x15, 0x85, 0x81, 0xB3, 0x9A, 0x9D, 0x20 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2IntroShapes07Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x0000006C, 0x000021F1, { { 0x6F, 0x7C, 0x28, 0xBB, 0xC3, 0x52, 0xE4, 0x13, 0xB4, 0xE9, 0xA4, 0x47, 0x9A, 0xBE, 0x19, 0xDA } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2FinaleStringsProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x0000031C, 0x0000E287, { { 0x1E, 0x73, 0x93, 0x79, 0xB7, 0xF8, 0x17, 0xEE, 0xE4, 0xFC, 0xF0, 0x34, 0x9D, 0x06, 0x4F, 0x55 } } } },
- { DE_DEU, kPlatformUnknown, { 0x0000039F, 0x00011660, { { 0xBC, 0x1D, 0x95, 0x20, 0x32, 0xF5, 0x83, 0xCF, 0xF7, 0x11, 0xE4, 0x1D, 0x89, 0x47, 0xF0, 0x65 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2CreditsDataProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x0000090C, 0x00023464, { { 0x55, 0x31, 0x9D, 0x60, 0x2C, 0xA1, 0x0B, 0xF9, 0xED, 0x46, 0xDF, 0x44, 0x1A, 0x9F, 0xB1, 0xB0 } } } },
- { DE_DEU, kPlatformUnknown, { 0x00000B11, 0x0002BBD7, { { 0x46, 0x24, 0x78, 0xE9, 0xCE, 0x75, 0x45, 0x7B, 0x3B, 0xAA, 0x15, 0xD8, 0x5B, 0xCB, 0x06, 0x3A } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2FinaleCPSFilesProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x0000009C, 0x00002853, { { 0x1F, 0xB9, 0x3D, 0x48, 0x47, 0x31, 0x0D, 0xA8, 0x92, 0x52, 0xD1, 0x54, 0x48, 0x42, 0x47, 0xBD } } } },
- { DE_DEU, kPlatformUnknown, { 0x0000009C, 0x00002878, { { 0x48, 0x3B, 0x7A, 0xC2, 0x9C, 0xEC, 0x10, 0x07, 0xD1, 0xB6, 0x9E, 0x89, 0xE9, 0xE1, 0xBF, 0xBF } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2FinaleAnimData00Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000079, 0x00000B66, { { 0x9B, 0x8C, 0x17, 0xFA, 0xD2, 0x4F, 0x4B, 0x0E, 0x3A, 0x43, 0xB1, 0x86, 0x0C, 0xDC, 0x73, 0xAB } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2FinaleAnimData01Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000063, 0x00000A03, { { 0xBB, 0x31, 0xEA, 0x35, 0xFB, 0x99, 0x4C, 0x3E, 0x72, 0xBD, 0x36, 0x6B, 0x5C, 0x03, 0x19, 0x7F } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2FinaleAnimData02Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x0000002C, 0x000007C2, { { 0xF6, 0x83, 0x37, 0x58, 0x3C, 0x59, 0x84, 0x8F, 0x97, 0x80, 0xE2, 0xD8, 0xFD, 0x77, 0xA9, 0x54 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2FinaleAnimData03Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000042, 0x0000092B, { { 0x47, 0xE4, 0x34, 0xE8, 0x72, 0xCC, 0xA4, 0x4A, 0xA4, 0x8F, 0xBA, 0xBC, 0x0C, 0x04, 0x18, 0xAF } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2FinaleAnimData04Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000058, 0x0000080B, { { 0x16, 0xDB, 0x77, 0x4C, 0x8E, 0xFD, 0x44, 0xF6, 0x5E, 0x28, 0x0B, 0x74, 0x93, 0x45, 0x8F, 0xD9 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2FinaleAnimData05Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x0000004D, 0x00000C72, { { 0x6C, 0x57, 0x56, 0x7E, 0x87, 0x10, 0x9C, 0xE7, 0x69, 0xAC, 0x3B, 0x3F, 0xF6, 0x43, 0x5C, 0xD4 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2FinaleAnimData06Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000016, 0x00000264, { { 0x48, 0x49, 0x5D, 0x78, 0xE2, 0xF1, 0x0D, 0x87, 0xEE, 0xEE, 0xD1, 0xA1, 0xC6, 0x64, 0xCA, 0x13 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2FinaleAnimData07Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000042, 0x00000ABE, { { 0xFE, 0xA9, 0x5D, 0x87, 0xAF, 0x55, 0x04, 0x92, 0x41, 0xD3, 0xAD, 0x1D, 0xFF, 0x03, 0x81, 0x3C } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2FinaleAnimData08Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000021, 0x000004D8, { { 0x4E, 0xA7, 0xCC, 0x0B, 0x1B, 0x48, 0x22, 0x09, 0x33, 0xF7, 0x23, 0xF1, 0xF5, 0x9F, 0xA5, 0x7B } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2FinaleAnimData09Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000058, 0x000004BE, { { 0xF6, 0xEA, 0xA0, 0x7F, 0x54, 0x61, 0x79, 0x4C, 0x71, 0xD7, 0x9B, 0xA6, 0xC3, 0x45, 0xEE, 0x3E } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2FinaleAnimData10Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x0000009A, 0x00000FC4, { { 0xA9, 0xFB, 0x31, 0x55, 0xB8, 0x28, 0x63, 0xC3, 0x4B, 0x9E, 0x7D, 0x41, 0xC7, 0x1F, 0x2F, 0xBD } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2FinaleAnimData11Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x000000C6, 0x0000166B, { { 0xCC, 0x16, 0x50, 0xFF, 0xFF, 0xD5, 0xAE, 0x03, 0x40, 0xA3, 0x9A, 0x1F, 0xF8, 0x8E, 0x23, 0x7A } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2FinaleAnimData12Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x000000FD, 0x00001A69, { { 0x6A, 0x80, 0x89, 0x7E, 0xFC, 0xE4, 0x01, 0xF5, 0xA2, 0x11, 0xE7, 0x26, 0x20, 0x96, 0x62, 0x7B } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2FinaleAnimData13Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x000000FD, 0x00001886, { { 0xF9, 0x5B, 0x62, 0xDD, 0xAB, 0x14, 0x35, 0x77, 0x53, 0x05, 0xDB, 0xC5, 0xFD, 0x4D, 0x4F, 0x12 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2FinaleAnimData14Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000108, 0x00001895, { { 0x22, 0xA1, 0x88, 0x69, 0xF9, 0x1C, 0xA2, 0x64, 0x44, 0xCD, 0x00, 0xFA, 0xB1, 0x94, 0xEB, 0x3A } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2FinaleAnimData15Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x000000D1, 0x000016E5, { { 0xD8, 0xE9, 0xA5, 0xEE, 0x54, 0x1B, 0x3E, 0x32, 0xDA, 0x78, 0x90, 0xC2, 0x54, 0xFC, 0xD5, 0x39 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2FinaleAnimData16Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x0000008F, 0x00000C69, { { 0xBC, 0x41, 0xE5, 0xAF, 0x89, 0xE2, 0x54, 0x12, 0x9E, 0xB0, 0x5F, 0x28, 0xFF, 0x92, 0x9D, 0x89 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2FinaleAnimData17Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x000000DC, 0x0000170D, { { 0x7A, 0x7B, 0x74, 0xCB, 0x68, 0xC2, 0xFF, 0xC7, 0xBE, 0x47, 0xE9, 0x43, 0xF7, 0x15, 0x8D, 0x59 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2FinaleAnimData18Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000134, 0x00002651, { { 0x71, 0x26, 0x47, 0x0D, 0x7C, 0x96, 0x45, 0x0B, 0x82, 0xD0, 0x37, 0xB9, 0xD4, 0xD0, 0x84, 0xFC } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2FinaleAnimData19Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x0000004D, 0x000009C3, { { 0xDA, 0x96, 0xDF, 0x16, 0xEB, 0x5D, 0x49, 0xA4, 0x3F, 0xD3, 0x31, 0xBE, 0x49, 0x72, 0xF2, 0x71 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2FinaleAnimData20Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000021, 0x000003D8, { { 0xD9, 0xC8, 0x58, 0x4B, 0x7D, 0x79, 0x86, 0xCB, 0xEB, 0x77, 0xC2, 0xD4, 0xB7, 0xB4, 0xE9, 0x6A } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2FinaleShapes00Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000018, 0x0000071C, { { 0xE8, 0x67, 0xCB, 0x76, 0x6D, 0x49, 0xC2, 0x05, 0x0D, 0xAD, 0xB6, 0x83, 0x35, 0xB3, 0xBE, 0xE5 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2FinaleShapes03Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000012, 0x00000571, { { 0x91, 0xEC, 0xAC, 0x12, 0x08, 0x33, 0xDA, 0x7C, 0xBD, 0x51, 0x64, 0xE3, 0xAE, 0x43, 0x75, 0x14 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2FinaleShapes07Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000018, 0x00000166, { { 0xED, 0x6E, 0x0C, 0x85, 0x13, 0x6F, 0xAC, 0xEB, 0xCA, 0x74, 0x2E, 0x2D, 0x0E, 0xCE, 0x17, 0xD6 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2FinaleShapes09Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000036, 0x00000898, { { 0xEB, 0xB0, 0xD9, 0xC4, 0xB6, 0xBC, 0xE3, 0xAF, 0xB2, 0x5D, 0xE3, 0xCE, 0xF7, 0x26, 0x07, 0xE5 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2FinaleShapes10Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000018, 0x0000017F, { { 0x0F, 0x37, 0x94, 0xA6, 0xCE, 0x23, 0xE3, 0x2E, 0x5E, 0x2B, 0x78, 0x5B, 0x66, 0xC8, 0xE5, 0x96 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2NpcShapeDataProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000018, 0x0000045D, { { 0x69, 0xE0, 0x5E, 0x86, 0xEB, 0x7D, 0x25, 0x95, 0xC2, 0xA0, 0xE9, 0xD5, 0x3A, 0x4A, 0x65, 0xBC } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseClassModifierFlagsProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x0000000F, 0x00000059, { { 0x17, 0x2B, 0x23, 0x14, 0x0F, 0x9D, 0x94, 0xD3, 0xBF, 0x94, 0x83, 0x0B, 0x79, 0xDB, 0xC0, 0xA9 } } } }, // EOB 1
- { UNK_LANG, kPlatformUnknown, { 0x0000000F, 0x00000083, { { 0x54, 0x68, 0xF4, 0x07, 0x3E, 0x2A, 0xD4, 0x06, 0xF3, 0x10, 0x88, 0x6C, 0xE3, 0x34, 0x08, 0x30 } } } }, // EOB 2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseMonsterStepTable01Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000004, 0x00000200, { { 0x26, 0x86, 0x10, 0x04, 0xC1, 0x48, 0xDD, 0xC0, 0x9F, 0x92, 0xD6, 0x20, 0x38, 0x36, 0xE2, 0xDD } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseMonsterStepTable02Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000008, 0x00000400, { { 0x6E, 0x53, 0x3C, 0x7A, 0x11, 0x46, 0x8B, 0xDC, 0x73, 0x24, 0xF8, 0x13, 0xCB, 0x6C, 0x9B, 0xE6 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseMonsterStepTable1Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000010, 0x00000400, { { 0x8B, 0x4C, 0x6B, 0x86, 0x93, 0xDA, 0x82, 0x1B, 0x04, 0x23, 0x92, 0x5B, 0x79, 0xB9, 0xFB, 0x06 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseMonsterStepTable2Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000010, 0x00000601, { { 0xE4, 0x36, 0x12, 0x93, 0x44, 0xDE, 0x6E, 0xA0, 0x4B, 0x98, 0x4B, 0x47, 0x87, 0xE3, 0x40, 0xD4 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseMonsterStepTable3Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000010, 0x000007F8, { { 0x00, 0x0C, 0xB0, 0xDA, 0xE1, 0xC8, 0x45, 0x11, 0x57, 0xE4, 0x72, 0xD2, 0x32, 0xC6, 0x16, 0x2B } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseMonsterCloseAttPosTable1Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000004, 0x00000006, { { 0x4F, 0x9D, 0x50, 0xDA, 0xA1, 0x75, 0xB0, 0xD5, 0x90, 0xCA, 0xFF, 0x3E, 0xB5, 0xE8, 0x0D, 0xAA } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseMonsterCloseAttPosTable21Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000008, 0x0000000C, { { 0x6A, 0xED, 0x15, 0xCE, 0x69, 0x54, 0x7D, 0x7B, 0x6D, 0xCE, 0xC7, 0x2A, 0x01, 0xD7, 0xDC, 0xB0 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseMonsterCloseAttPosTable22Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000010, 0x00000018, { { 0x6D, 0xB9, 0x69, 0x4A, 0xE3, 0x72, 0x03, 0x5B, 0x5A, 0xBB, 0x15, 0x4A, 0xDA, 0xFB, 0x99, 0x87 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseMonsterCloseAttUnkTableProvider[] = {////
- { UNK_LANG, kPlatformUnknown, { 0x0000000C, 0x000007FE, { { 0xF0, 0xCB, 0x3A, 0x53, 0xDD, 0x59, 0x04, 0x87, 0x6F, 0x1B, 0x5A, 0x13, 0xBA, 0x78, 0x62, 0xEC } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseMonsterCloseAttChkTable1Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000010, 0x00000008, { { 0x93, 0x27, 0x19, 0xA7, 0xA7, 0x49, 0x0E, 0xC9, 0xED, 0x5C, 0x8F, 0x9F, 0xC2, 0x34, 0x62, 0x07 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseMonsterCloseAttChkTable2Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000010, 0x00000008, { { 0xEB, 0xF0, 0x27, 0x7E, 0xA8, 0x09, 0x3A, 0x95, 0x3B, 0x71, 0x2A, 0x43, 0x2E, 0xCF, 0x22, 0x0B } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseMonsterCloseAttDstTable1Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000010, 0x00000018, { { 0x1E, 0xC9, 0x6C, 0x5D, 0xDF, 0xD4, 0xC0, 0x87, 0xAD, 0xEE, 0x86, 0x29, 0xD5, 0x3E, 0x8D, 0xB4 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseMonsterCloseAttDstTable2Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000030, 0x00000078, { { 0x4C, 0xA8, 0x2A, 0x53, 0xB3, 0xAA, 0x52, 0x96, 0x1D, 0xE8, 0x37, 0xDB, 0x4A, 0x77, 0xD8, 0x5B } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseMonsterProximityTableProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000020, 0x00000030, { { 0x25, 0xFC, 0xA3, 0xEB, 0x44, 0x93, 0x9B, 0x33, 0xB5, 0x86, 0xC4, 0xCB, 0x17, 0xEF, 0x2D, 0x47 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseFindBlockMonstersTableProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000040, 0x00000088, { { 0x6F, 0xEE, 0x8B, 0x4C, 0x21, 0xF0, 0xC6, 0x4F, 0x1D, 0x05, 0x95, 0x41, 0xD7, 0xD6, 0x52, 0x66 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseMonsterDirChangeTableProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000030, 0x0000180C, { { 0xCD, 0xBB, 0xFD, 0xAB, 0xFB, 0x1D, 0x5C, 0x0F, 0xA2, 0xAC, 0x32, 0xA9, 0xA1, 0x93, 0x2D, 0x1C } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseMonsterDistAttStringsProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x00000076, 0x00002965, { { 0x1A, 0x22, 0x50, 0x04, 0x27, 0x05, 0xE9, 0x61, 0xF9, 0x0A, 0xF0, 0x50, 0x01, 0x0E, 0x65, 0xB4 } } } },
- { DE_DEU, kPlatformUnknown, { 0x0000008C, 0x00003274, { { 0xE7, 0x24, 0x17, 0x13, 0x4F, 0xB3, 0xF9, 0xB7, 0x90, 0xFA, 0x3D, 0xFF, 0xA7, 0xFB, 0x3F, 0x1F } } } },
- { EN_ANY, kPlatformUnknown, { 0x00000054, 0x00001D03, { { 0xEB, 0x07, 0xD4, 0x22, 0xFD, 0xA0, 0x77, 0x80, 0x22, 0x04, 0x2E, 0x27, 0x7F, 0x64, 0x99, 0x4E } } } },
- { DE_DEU, kPlatformUnknown, { 0x00000062, 0x000023E0, { { 0xB8, 0x03, 0x5C, 0x31, 0xCC, 0x18, 0xCD, 0x8D, 0x60, 0xD1, 0xFB, 0x5B, 0x66, 0xC2, 0x9A, 0x4C } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseEncodeMonsterDefsProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000150, 0x00001ACB, { { 0x73, 0x67, 0x5B, 0x64, 0x22, 0xDB, 0x08, 0x3A, 0xCD, 0xEB, 0x30, 0x28, 0xBD, 0xAD, 0xF8, 0x9B } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoBBaseNpcPresetsProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x0000088B, 0x000038D0, { { 0x2E, 0xAE, 0xF0, 0x2A, 0x71, 0x6F, 0x7C, 0x5C, 0xF5, 0xAF, 0xB8, 0xBB, 0x47, 0xE5, 0xB6, 0xC3 } } } }, // EOB 1
- { UNK_LANG, kPlatformUnknown, { 0x00000816, 0x00002C8E, { { 0xAB, 0xEE, 0x18, 0x0E, 0x59, 0xF6, 0xE0, 0x26, 0x93, 0xAB, 0x3B, 0x23, 0x29, 0x7A, 0x2C, 0x97 } } } }, // EOB 2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2Npc1StringsProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x0000000B, 0x000003B9, { { 0xB1, 0x67, 0x80, 0x21, 0x92, 0xDD, 0xFA, 0x4C, 0x4D, 0x64, 0x7C, 0x05, 0x08, 0xDC, 0x55, 0xFD } } } },
- { DE_DEU, kPlatformUnknown, { 0x0000000D, 0x0000049E, { { 0x2D, 0x78, 0xF6, 0x20, 0x30, 0xEC, 0x62, 0x6E, 0x58, 0xF7, 0xC7, 0x6D, 0xD7, 0xBD, 0x70, 0x76 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2Npc2StringsProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x00000012, 0x0000064C, { { 0xB0, 0x66, 0x0D, 0xDE, 0x16, 0xEB, 0x5E, 0x51, 0xAF, 0x4D, 0x19, 0xD1, 0x1E, 0x0B, 0xCB, 0xD6 } } } },
- { DE_DEU, kPlatformUnknown, { 0x00000018, 0x000008FF, { { 0x59, 0x29, 0x01, 0x6F, 0xF0, 0x49, 0xC8, 0x57, 0x3E, 0x70, 0x01, 0x7E, 0x5E, 0xF2, 0xEB, 0x35 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2MonsterDustStringsProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x0000001F, 0x00000AD7, { { 0x2B, 0x66, 0x27, 0xFD, 0xC6, 0x17, 0x0B, 0x6B, 0xFC, 0x7D, 0x7F, 0xD2, 0xC4, 0x12, 0x8F, 0x33 } } } },
- { DE_DEU, kPlatformUnknown, { 0x0000001F, 0x00000A91, { { 0x1D, 0x7D, 0xEE, 0xB8, 0x9B, 0x37, 0x2E, 0x64, 0x13, 0xB6, 0x39, 0xED, 0x88, 0xB6, 0x8B, 0xD7 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2DreamStepsProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x0000000E, 0x00000114, { { 0x27, 0x32, 0xCB, 0x89, 0x27, 0xC5, 0xDD, 0x91, 0xBE, 0x97, 0x62, 0xF5, 0x76, 0xF7, 0xCD, 0x25 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2KheldranStringsProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x0000001A, 0x00000887, { { 0xA6, 0xB4, 0x45, 0x1B, 0x33, 0x54, 0x36, 0xAD, 0x1D, 0xB1, 0xDA, 0xC3, 0x12, 0x85, 0x3C, 0x58 } } } },
- { DE_DEU, kPlatformUnknown, { 0x00000012, 0x00000511, { { 0xEE, 0x21, 0xA8, 0x6E, 0xF7, 0xEC, 0x9A, 0x8D, 0xBA, 0x8D, 0xE3, 0x4A, 0x17, 0x15, 0xCA, 0x8C } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2HornStringsProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x0000009A, 0x00003541, { { 0xA5, 0x4D, 0x88, 0xAC, 0x1C, 0xCD, 0x57, 0xD4, 0x1E, 0x9F, 0xAE, 0x13, 0x46, 0xAD, 0xA0, 0x22 } } } },
- { DE_DEU, kPlatformUnknown, { 0x000000AB, 0x00003B6C, { { 0x36, 0x34, 0xB3, 0xB1, 0x55, 0x66, 0x7A, 0x90, 0x97, 0x01, 0xDC, 0x4A, 0xAF, 0x17, 0x6B, 0x5A } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2HornSoundsProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000004, 0x00000106, { { 0x3E, 0x7B, 0x96, 0xFD, 0xCA, 0x4E, 0xA7, 0xA6, 0xB8, 0x82, 0x67, 0xCF, 0x93, 0x86, 0xE4, 0x45 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2WallOfForceDsXProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000024, 0x00000D67, { { 0x51, 0xCF, 0xAB, 0x1E, 0xB4, 0xE0, 0xE3, 0x44, 0x29, 0xD1, 0xDC, 0x82, 0xCD, 0x08, 0x50, 0xF5 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2WallOfForceDsYProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000003, 0x00000048, { { 0x45, 0xFC, 0xEA, 0x8C, 0x34, 0xD7, 0xBE, 0x74, 0x05, 0x03, 0xE6, 0x94, 0x34, 0xB5, 0x45, 0x4D } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2WallOfForceNumWProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000003, 0x00000006, { { 0x52, 0x89, 0xDF, 0x73, 0x7D, 0xF5, 0x73, 0x26, 0xFC, 0xDD, 0x22, 0x59, 0x7A, 0xFB, 0x1F, 0xAC } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2WallOfForceNumHProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000003, 0x00000011, { { 0x33, 0x86, 0x06, 0xBE, 0x8D, 0xC8, 0x37, 0x2D, 0x0F, 0x61, 0x97, 0xA4, 0x26, 0xA9, 0xBC, 0x60 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kEoB2WallOfForceShpIdProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000003, 0x00000006, { { 0x77, 0xAE, 0x9B, 0x52, 0x9E, 0xF7, 0xEB, 0x48, 0xA8, 0x5E, 0xED, 0xC2, 0x08, 0x53, 0xCE, 0x3C } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kLoLIngamePakFilesProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000088, 0x0000224F, { { 0xDA, 0x24, 0x18, 0xA3, 0xEF, 0x16, 0x70, 0x8F, 0xA8, 0xC2, 0x2E, 0xC2, 0xED, 0x39, 0x03, 0xD1 } } } },
- { UNK_LANG, kPlatformPC98, { 0x00000084, 0x00002125, { { 0x7A, 0x89, 0xE2, 0x36, 0xEC, 0x6F, 0x52, 0x2B, 0xEF, 0xBA, 0x3D, 0x28, 0x54, 0xDA, 0xFB, 0x72 } } } },
- { UNK_LANG, kPlatformFMTowns, { 0x0000009D, 0x00002179, { { 0x7D, 0x7A, 0xE1, 0xD9, 0x69, 0x23, 0x9D, 0xFF, 0x83, 0x39, 0x73, 0xEC, 0xF4, 0x26, 0x20, 0x8E } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kLoLCharacterDefsProvider[] = {
- { RU_RUS, kPlatformDOS, { 0x00000492, 0x000052BA, { { 0x52, 0x29, 0x0D, 0x49, 0xFD, 0x17, 0xD7, 0x70, 0x6D, 0xCA, 0xEB, 0xB6, 0x7E, 0xFA, 0xBE, 0x08 } } } }, // floppy
- { EN_ANY, kPlatformDOS, { 0x00000492, 0x000046B0, { { 0x7A, 0x94, 0x8B, 0xC6, 0xF7, 0xF1, 0x2F, 0xF3, 0xBC, 0x1B, 0x0B, 0x4E, 0x00, 0xC9, 0x44, 0x58 } } } }, // floppy
- { DE_DEU, kPlatformDOS, { 0x00000492, 0x000047FD, { { 0x8C, 0x0B, 0x8B, 0xCE, 0xE0, 0xB0, 0x8F, 0xA9, 0x06, 0xC3, 0x98, 0xE6, 0x2E, 0x09, 0xB6, 0x93 } } } }, // floppy
- { FR_FRA, kPlatformDOS, { 0x00000492, 0x000047FD, { { 0x8C, 0x0B, 0x8B, 0xCE, 0xE0, 0xB0, 0x8F, 0xA9, 0x06, 0xC3, 0x98, 0xE6, 0x2E, 0x09, 0xB6, 0x93 } } } }, // floppy
- { EN_ANY, kPlatformDOS, { 0x00000492, 0x00004ACD, { { 0xDF, 0x87, 0xFE, 0x89, 0x59, 0xCC, 0x01, 0xD7, 0xC7, 0xEB, 0x16, 0xA4, 0x09, 0xAF, 0x5D, 0xC0 } } } }, // CD
- { DE_DEU, kPlatformDOS, { 0x00000492, 0x00004ACD, { { 0xDF, 0x87, 0xFE, 0x89, 0x59, 0xCC, 0x01, 0xD7, 0xC7, 0xEB, 0x16, 0xA4, 0x09, 0xAF, 0x5D, 0xC0 } } } }, // CD
- { FR_FRA, kPlatformDOS, { 0x00000492, 0x00004ACD, { { 0xDF, 0x87, 0xFE, 0x89, 0x59, 0xCC, 0x01, 0xD7, 0xC7, 0xEB, 0x16, 0xA4, 0x09, 0xAF, 0x5D, 0xC0 } } } }, // CD
- { RU_RUS, kPlatformDOS, { 0x00000492, 0x00004ACD, { { 0xDF, 0x87, 0xFE, 0x89, 0x59, 0xCC, 0x01, 0xD7, 0xC7, 0xEB, 0x16, 0xA4, 0x09, 0xAF, 0x5D, 0xC0 } } } }, // CD
- { IT_ITA, kPlatformDOS, { 0x00000492, 0x00004ACD, { { 0xDF, 0x87, 0xFE, 0x89, 0x59, 0xCC, 0x01, 0xD7, 0xC7, 0xEB, 0x16, 0xA4, 0x09, 0xAF, 0x5D, 0xC0 } } } }, // CD
- { JA_JPN, kPlatformPC98, { 0x00000492, 0x00005893, { { 0x7C, 0x7E, 0xFB, 0x80, 0xD9, 0xB6, 0x16, 0x87, 0x80, 0xB7, 0x46, 0x9B, 0x96, 0x1A, 0x6A, 0xBE } } } },
- { JA_JPN, kPlatformFMTowns, { 0x00000492, 0x00005041, { { 0xAB, 0x07, 0x37, 0xFE, 0xC2, 0x4B, 0x5D, 0x16, 0xE4, 0xC4, 0x2C, 0x8C, 0xC3, 0x78, 0xCB, 0xCB } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kLoLIngameSfxFilesProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x000008F2, 0x0001E5B6, { { 0x63, 0x5E, 0x37, 0xAA, 0x27, 0x80, 0x4C, 0x85, 0xB1, 0x9D, 0x7B, 0x1D, 0x64, 0xA3, 0xEB, 0x97 } } } }, // floppy
- { UNK_LANG, kPlatformDOS, { 0x000008F2, 0x0001E5B7, { { 0x9E, 0xC8, 0xE8, 0x19, 0x2F, 0x58, 0x0B, 0xC7, 0x2D, 0x41, 0x72, 0xE7, 0xF4, 0x80, 0x03, 0xCB } } } }, // CD
- { UNK_LANG, kPlatformPC98, { 0x000008EF, 0x0001E585, { { 0x85, 0x81, 0x5C, 0xA4, 0x34, 0x44, 0xF4, 0x58, 0xF9, 0x82, 0xEE, 0x0F, 0x6A, 0x0D, 0xA2, 0x7F } } } },
- { UNK_LANG, kPlatformFMTowns, { 0x000008F0, 0x0001E585, { { 0xB7, 0x82, 0xFF, 0xAB, 0x71, 0x54, 0xEB, 0x52, 0x8D, 0xAC, 0x9A, 0xB4, 0x9E, 0x33, 0x00, 0x95 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kLoLIngameSfxIndexProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x000003E8, 0x0000E8D2, { { 0x19, 0x39, 0x17, 0xED, 0xAE, 0xDC, 0x7A, 0xAC, 0x45, 0x5F, 0x2D, 0xCD, 0x65, 0x8D, 0xAD, 0xAE } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kLoLMusicTrackMapProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x000000F0, 0x0000210D, { { 0x55, 0x25, 0x3E, 0x35, 0xD2, 0xD8, 0x13, 0xE3, 0x1D, 0xB1, 0xB3, 0x00, 0x2E, 0x17, 0x91, 0x2F } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kLoLIngameGMSfxIndexProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x000000FA, 0x00006281, { { 0x25, 0x89, 0xB0, 0x3B, 0x12, 0x09, 0x02, 0xF6, 0xFE, 0x76, 0xD5, 0xC9, 0x5B, 0x88, 0xAC, 0xAA } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kLoLIngameMT32SfxIndexProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x000000FA, 0x00006579, { { 0x16, 0x40, 0x1C, 0x09, 0x69, 0xA9, 0x0D, 0x6D, 0x4B, 0x0C, 0x99, 0xF0, 0x40, 0x5D, 0xBB, 0x6E } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kLoLIngamePcSpkSfxIndexProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x000000FA, 0x00005EFC, { { 0xA3, 0x5C, 0x69, 0xED, 0x13, 0xEC, 0x08, 0x0E, 0xFA, 0x72, 0x83, 0x0D, 0xD7, 0x8D, 0x9C, 0x70 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kLoLSpellPropertiesProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000118, 0x00000B06, { { 0x27, 0x69, 0x53, 0x01, 0xA0, 0xE3, 0x76, 0xAA, 0x33, 0xA4, 0x52, 0x11, 0x52, 0xB1, 0x0E, 0xDA } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kLoLGameShapeMapProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000114, 0x000038D3, { { 0xB2, 0x8A, 0x5D, 0x9A, 0x51, 0x63, 0x4D, 0x65, 0xE4, 0xF5, 0xBA, 0x88, 0x70, 0x6C, 0xA6, 0xF8 } } } }, // floppy + PC98
- { UNK_LANG, kPlatformDOS, { 0x00000114, 0x00003B97, { { 0x29, 0xE5, 0x0F, 0x51, 0xF0, 0x10, 0x35, 0x3E, 0x70, 0x3A, 0xAA, 0xFE, 0xD7, 0xD5, 0xAA, 0x9F } } } }, // CD
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kLoLSceneItemOffsProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000008, 0x00000300, { { 0x69, 0x80, 0x5A, 0x3E, 0x63, 0xC1, 0x04, 0x60, 0x09, 0x2F, 0x49, 0xD7, 0x26, 0x32, 0xAA, 0xE2 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kLoLCharInvIndexProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x0000000A, 0x00000006, { { 0x19, 0x79, 0x4E, 0xFC, 0x05, 0x14, 0x89, 0x23, 0xEB, 0xCA, 0x94, 0x50, 0xE8, 0xD3, 0x81, 0x24 } } } },
- { UNK_LANG, kPlatformFMTowns, { 0x00000005, 0x00000006, { { 0x54, 0x11, 0x01, 0x79, 0x4D, 0xED, 0xF9, 0xEA, 0xDF, 0x03, 0x51, 0xAB, 0x8D, 0x9D, 0x2F, 0x34 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kLoLCharInvDefsProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000058, 0x00001D7A, { { 0x25, 0xE4, 0xEB, 0x6D, 0xBE, 0xEA, 0xBD, 0x9A, 0x9F, 0xA5, 0x9E, 0xEB, 0x3D, 0x03, 0x1D, 0x72 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kLoLCharDefsManProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000012, 0x0000003D, { { 0xEB, 0x82, 0x32, 0x9D, 0x76, 0xC8, 0x3D, 0x5E, 0x8C, 0x26, 0x53, 0xDF, 0xC1, 0xFD, 0x0F, 0xC5 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kLoLCharDefsWomanProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000012, 0x0000003D, { { 0xEB, 0x82, 0x32, 0x9D, 0x76, 0xC8, 0x3D, 0x5E, 0x8C, 0x26, 0x53, 0xDF, 0xC1, 0xFD, 0x0F, 0xC5 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kLoLCharDefsKieranProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000012, 0x000002E3, { { 0xBF, 0xB1, 0x0F, 0x40, 0xBF, 0xA1, 0xD0, 0x2B, 0xC9, 0x80, 0x35, 0x40, 0xA9, 0xA3, 0x01, 0xC8 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kLoLCharDefsAkshelProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000012, 0x000002FB, { { 0x47, 0x3C, 0x07, 0x15, 0x20, 0xE6, 0x90, 0x59, 0x55, 0xF2, 0xA7, 0xC3, 0x27, 0x22, 0xAB, 0xDC } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kLoLExpRequirementsProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x0000002C, 0x00000C0A, { { 0x3F, 0x36, 0xFA, 0xE3, 0xB0, 0x76, 0x5E, 0xFF, 0xE9, 0xBA, 0xDF, 0xD0, 0x9D, 0xFF, 0xDD, 0x27 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kLoLMonsterModifiers1Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000006, 0x00000142, { { 0x62, 0x4B, 0x5E, 0x46, 0x64, 0xA4, 0x3A, 0xB7, 0x11, 0x14, 0xA8, 0x41, 0xAF, 0x4E, 0xE6, 0x58 } } } }, // floppy + PC98 + FM-TOWNS
- { UNK_LANG, kPlatformDOS, { 0x00000006, 0x000000E8, { { 0x94, 0xCB, 0xD2, 0xE4, 0xF4, 0xA8, 0x4D, 0x46, 0x2E, 0x84, 0x8C, 0x6F, 0xF9, 0x75, 0xD7, 0x28 } } } }, // CD
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kLoLMonsterModifiers2Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000006, 0x000000C2, { { 0x89, 0x12, 0xA7, 0x0D, 0xD9, 0xC7, 0x5B, 0x03, 0xD4, 0x21, 0x6F, 0x0A, 0x1D, 0x83, 0x1B, 0x98 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kLoLMonsterModifiers3Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000006, 0x000000C2, { { 0x56, 0x4D, 0x82, 0xCC, 0x2C, 0x00, 0x1E, 0x9D, 0xF7, 0x64, 0xB7, 0x60, 0x63, 0x0A, 0x03, 0xD7 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kLoLMonsterModifiers4Provider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000006, 0x00000082, { { 0xA8, 0xFC, 0xBB, 0x1B, 0xC0, 0x85, 0x3B, 0xEF, 0xDB, 0xDE, 0xB0, 0x98, 0x58, 0x34, 0x75, 0xE9 } } } }, // CD
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kLoLMonsterShiftOffsetsProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000020, 0x00000803, { { 0x30, 0x55, 0x74, 0x0D, 0xC7, 0x3B, 0xD9, 0x5C, 0x26, 0xF0, 0x4E, 0x8F, 0xE4, 0x4D, 0xCB, 0x2A } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kLoLMonsterDirFlagsProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000010, 0x00000080, { { 0xE5, 0xA1, 0xE3, 0xCE, 0xA0, 0x5F, 0x15, 0xE9, 0x5B, 0x28, 0x90, 0xC0, 0xDF, 0x21, 0xEC, 0x24 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kLoLMonsterScaleYProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x0000001E, 0x00000982, { { 0xE2, 0x71, 0x5F, 0x57, 0x4A, 0x8F, 0x50, 0xDB, 0x3E, 0xDA, 0xAB, 0x10, 0xEB, 0xDB, 0x0D, 0x14 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kLoLMonsterScaleXProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000020, 0x00000918, { { 0xF6, 0x14, 0xE6, 0x48, 0x4E, 0x5B, 0x43, 0xCC, 0xCE, 0x4E, 0x98, 0x71, 0x5A, 0xC2, 0x00, 0x1E } } } },
- { UNK_LANG, kPlatformPC98, { 0x0000001D, 0x000008D2, { { 0x1C, 0x25, 0x38, 0xE2, 0xBB, 0xB2, 0xDB, 0x93, 0x1B, 0x25, 0xB6, 0x89, 0xA9, 0x9B, 0x0A, 0xFE } } } },
- { UNK_LANG, kPlatformFMTowns, { 0x0000001D, 0x000008D2, { { 0x1C, 0x25, 0x38, 0xE2, 0xBB, 0xB2, 0xDB, 0x93, 0x1B, 0x25, 0xB6, 0x89, 0xA9, 0x9B, 0x0A, 0xFE } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kLoLMonsterScaleWHProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000082, 0x00001D2A, { { 0x85, 0x7E, 0x18, 0xDD, 0x74, 0x1C, 0x62, 0x6F, 0xF4, 0xE5, 0xAF, 0x65, 0xEC, 0x6A, 0x90, 0xAD } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kLoLFlyingObjectShpProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000082, 0x00000252, { { 0xDE, 0x9D, 0x89, 0xAF, 0x0F, 0x50, 0x14, 0x60, 0x68, 0xAF, 0x19, 0xD8, 0x54, 0x8A, 0x36, 0x27 } } } },
- { UNK_LANG, kPlatformFMTowns, { 0x00000075, 0x00000252, { { 0xD7, 0xE5, 0x13, 0x67, 0xDB, 0x9C, 0xD4, 0x12, 0x0E, 0x99, 0x0D, 0x2A, 0x70, 0x17, 0x95, 0x89 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kLoLInventoryDescProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000016, 0x0000082D, { { 0x86, 0xB4, 0xB9, 0x50, 0xB6, 0xDA, 0x29, 0xB2, 0xC0, 0x0D, 0x34, 0x3F, 0x8D, 0x88, 0xAA, 0xE4 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kLoLLevelShpListProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x0000007F, 0x00002090, { { 0x17, 0x31, 0x8A, 0xB5, 0x9B, 0x3A, 0xDA, 0x16, 0x9E, 0xE3, 0xD1, 0x5F, 0xB4, 0x7B, 0xB2, 0x25 } } } },
- { UNK_LANG, kPlatformFMTowns, { 0x00000091, 0x00002090, { { 0x51, 0x79, 0x1D, 0x60, 0xB0, 0x71, 0xB8, 0xF2, 0xDD, 0xD4, 0x36, 0x1B, 0xF8, 0x15, 0xBF, 0xB7 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kLoLLevelDatListProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x0000007F, 0x00001FB8, { { 0xF6, 0xE9, 0x98, 0x79, 0x51, 0xCA, 0xA0, 0x35, 0xE4, 0xD0, 0xA1, 0xCD, 0x23, 0x89, 0x7D, 0x11 } } } },
- { UNK_LANG, kPlatformFMTowns, { 0x00000091, 0x00001FB8, { { 0x65, 0x1A, 0x3E, 0x96, 0x96, 0xA9, 0x94, 0xD6, 0xD5, 0x21, 0xBE, 0x60, 0xB5, 0x83, 0xF0, 0xE5 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kLoLCompassDefsProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000100, 0x000030EF, { { 0x6F, 0xF0, 0x46, 0x6E, 0xB3, 0x72, 0xCF, 0xC7, 0xE3, 0xAF, 0xBE, 0x63, 0xA1, 0x1C, 0x33, 0x20 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kLoLItemPricesProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x0000005C, 0x00001251, { { 0x18, 0x62, 0x5E, 0xE2, 0xE4, 0x2A, 0xB0, 0xA0, 0x8B, 0x8D, 0x9D, 0x07, 0x5F, 0x83, 0x53, 0xF7 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kLoLStashSetupProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x0000000C, 0x0000001E, { { 0x1C, 0x93, 0x66, 0x56, 0xDB, 0xD7, 0xA4, 0xB3, 0xE7, 0x2F, 0xEA, 0x88, 0xE2, 0xC8, 0x79, 0xD0 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kLoLDscWallsProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000024, 0x00000A2A, { { 0xAC, 0x4E, 0x73, 0x2C, 0xB0, 0xEE, 0x24, 0x0E, 0x66, 0x8D, 0x48, 0xE5, 0xCA, 0x6B, 0x7F, 0x7F } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kRpgCommonDscShapeIndexProvider[] = {
- // LOL:
- { UNK_LANG, kPlatformUnknown, { 0x00000024, 0x00000728, { { 0x14, 0xBA, 0x6D, 0x5C, 0x7D, 0x20, 0x0D, 0x35, 0xA7, 0xB0, 0x8D, 0x2F, 0x1D, 0x2A, 0x49, 0xA4 } } } },
- // EOB:
- { UNK_LANG, kPlatformUnknown, { 0x00000024, 0x00000632, { { 0xBE, 0x3E, 0x84, 0x71, 0x89, 0x04, 0xC9, 0x1D, 0xCF, 0xE4, 0x3B, 0xD8, 0x2A, 0xF4, 0x0F, 0x54 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kLoLDscOvlMapProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x0000000A, 0x0000001F, { { 0x9C, 0xF2, 0xCC, 0x48, 0x42, 0xC6, 0x76, 0x83, 0xD3, 0x1A, 0x43, 0x42, 0x7F, 0xEF, 0x19, 0x0F } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kLoLDscScaleWidthDataProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000048, 0x00000ABE, { { 0x28, 0x9A, 0xAA, 0x16, 0xC4, 0xFD, 0x52, 0xA9, 0x76, 0x98, 0x72, 0x0C, 0x2D, 0xE4, 0xB0, 0x57 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kLoLDscScaleHeightDataProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000048, 0x000009E8, { { 0x25, 0x35, 0x07, 0xBC, 0xF9, 0x82, 0x8B, 0x5B, 0x67, 0x7C, 0x38, 0xD1, 0xF8, 0x35, 0x81, 0xC7 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kRpgCommonDscXProvider[] = {
- // LOL
- { UNK_LANG, kPlatformUnknown, { 0x00000048, 0x00001468, { { 0x55, 0xC5, 0x30, 0x76, 0x0A, 0xDC, 0xEC, 0xAB, 0x68, 0x9B, 0x61, 0xF0, 0x58, 0x78, 0x56, 0xA6 } } } },
- // EOB
- { UNK_LANG, kPlatformUnknown, { 0x00000024, 0x00000BFA, { { 0x5F, 0x86, 0x9B, 0xDA, 0x5D, 0x6E, 0xC0, 0xB9, 0x29, 0x82, 0xA5, 0xD7, 0xC9, 0x34, 0x90, 0x63 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kLoLDscYProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000024, 0x00000282, { { 0x09, 0x98, 0x3A, 0x33, 0x15, 0xA1, 0x4A, 0xFF, 0x76, 0x19, 0x2B, 0xB1, 0x74, 0x89, 0xF4, 0x37 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kRpgCommonDscTileIndexProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000012, 0x00000099, { { 0x18, 0xD9, 0x39, 0x27, 0x5B, 0x34, 0xAE, 0x7C, 0xA9, 0xA9, 0xDB, 0x42, 0x49, 0x61, 0x6B, 0x37 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kRpgCommonDscUnk2Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000017, 0x000000D2, { { 0xDE, 0xDA, 0x75, 0x15, 0x2B, 0xDC, 0x90, 0x3F, 0xC9, 0x92, 0x04, 0x01, 0x23, 0x7A, 0xDA, 0x2E } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kRpgCommonDscDoorShapeIndexProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000017, 0x0000000A, { { 0x2E, 0xC4, 0xA1, 0x47, 0x7C, 0xAE, 0xAD, 0xD8, 0x8A, 0x72, 0x95, 0x2F, 0x18, 0xC5, 0x08, 0x19 } } } }, // LOL
- { UNK_LANG, kPlatformUnknown, { 0x00000020, 0x00000021, { { 0xE3, 0x00, 0x85, 0x1C, 0x13, 0xCE, 0x5D, 0xA7, 0xA2, 0x93, 0x9B, 0x56, 0x1A, 0x0C, 0x43, 0x3E } } } }, // EOB 1
- { UNK_LANG, kPlatformUnknown, { 0x00000035, 0x0000000B, { { 0xC2, 0xBC, 0xCA, 0x95, 0x69, 0xE8, 0x3F, 0x1F, 0xC2, 0x1C, 0x37, 0x90, 0x63, 0x8F, 0xE6, 0x1D } } } }, // EOB 2
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kRpgCommonDscDimData1Provider[] = {
- // LOL
- { UNK_LANG, kPlatformUnknown, { 0x00000144, 0x0001007D, { { 0x18, 0x3D, 0xA5, 0xF7, 0x1A, 0x5A, 0x90, 0xA7, 0x4E, 0x66, 0x1A, 0x4E, 0x0C, 0x69, 0x58, 0x31 } } } },
- // EOB
- { UNK_LANG, kPlatformUnknown, { 0x00000144, 0x00010115, { { 0x89, 0x37, 0x1C, 0x85, 0x53, 0xEE, 0xC0, 0xEC, 0x17, 0x26, 0x0B, 0xE5, 0xCC, 0x9C, 0x30, 0x58 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kRpgCommonDscDimData2Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000288, 0x00001BC2, { { 0x30, 0xD1, 0xD1, 0x35, 0x74, 0x2C, 0x86, 0x81, 0x23, 0xE2, 0x05, 0xCE, 0x75, 0x60, 0x3C, 0x55 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kRpgCommonDscBlockMapProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x0000000C, 0x00000012, { { 0x01, 0xEE, 0x32, 0xA6, 0x71, 0x15, 0x8D, 0xFB, 0x33, 0xF2, 0xD6, 0x8A, 0x30, 0x00, 0x10, 0x4B } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kRpgCommonDscDimMapProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000012, 0x00000014, { { 0x4D, 0x53, 0x2E, 0xF2, 0xA3, 0xF9, 0xE2, 0xEC, 0x44, 0xBE, 0x5F, 0x04, 0x91, 0xF8, 0xE1, 0x04 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kLoLDscOvlIndexProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000028, 0x00000048, { { 0x3E, 0x8E, 0x62, 0xAF, 0xD1, 0x28, 0x39, 0x73, 0x0D, 0xD8, 0x4A, 0xA7, 0xF4, 0xD7, 0x32, 0x25 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kRpgCommonDscBlockIndexProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000048, 0x00002200, { { 0xF4, 0x8B, 0x32, 0xC3, 0xD3, 0xFB, 0x46, 0xF2, 0xB8, 0x3A, 0x58, 0x39, 0x94, 0x57, 0x97, 0x4B } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kRpgCommonDscDoorY2Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000080, 0x00000348, { { 0xC6, 0x58, 0x8B, 0xFE, 0x18, 0x72, 0x47, 0xF1, 0xB6, 0x3A, 0x0F, 0xFB, 0x3D, 0x99, 0x74, 0xD0 } } } }, // LOL
- { UNK_LANG, kPlatformUnknown, { 0x00000004, 0x00000046, { { 0x35, 0x36, 0xBC, 0xD8, 0x63, 0x25, 0x31, 0xA9, 0x61, 0x8E, 0xF6, 0x54, 0x4A, 0x79, 0x17, 0xF8 } } } }, // EOB
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kRpgCommonDscDoorFrameY1Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000020, 0x0000053B, { { 0xF0, 0x9E, 0xC5, 0xB1, 0xEA, 0x5A, 0x58, 0xBD, 0xAC, 0x7B, 0xB2, 0xD4, 0xFE, 0x3F, 0x4F, 0x51 } } } }, // EOB I
- { UNK_LANG, kPlatformUnknown, { 0x00000004, 0x00000046, { { 0xD4, 0xA4, 0xEC, 0xA2, 0x99, 0xB6, 0x5E, 0x12, 0x98, 0xFF, 0xF2, 0x55, 0xC8, 0xBD, 0xC5, 0x8F } } } }, // EOB II
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kRpgCommonDscDoorFrameY2Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000020, 0x0000053B, { { 0xF0, 0x9E, 0xC5, 0xB1, 0xEA, 0x5A, 0x58, 0xBD, 0xAC, 0x7B, 0xB2, 0xD4, 0xFE, 0x3F, 0x4F, 0x51 } } } }, // EOB I
- { UNK_LANG, kPlatformUnknown, { 0x00000004, 0x00000150, { { 0x49, 0x7E, 0xF4, 0xDF, 0x8D, 0x04, 0x0A, 0xCE, 0x49, 0xBB, 0xA2, 0x1D, 0x8D, 0xC2, 0x14, 0x9E } } } }, // EOB II
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kRpgCommonDscDoorFrameIndex1Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x0000000C, 0x00000058, { { 0xC9, 0xAF, 0x1F, 0x68, 0xF1, 0xDE, 0x96, 0x9B, 0x3B, 0xCB, 0x56, 0xEC, 0x2E, 0x62, 0x9A, 0x0A } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kRpgCommonDscDoorFrameIndex2Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x0000000C, 0x000000E8, { { 0x8C, 0x10, 0x56, 0xEA, 0x4D, 0x1A, 0x9C, 0xB2, 0x55, 0x54, 0xA5, 0x61, 0x1D, 0x19, 0x4E, 0x50 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kLoLDscDoorScaleProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000010, 0x0000024C, { { 0x8D, 0x83, 0x26, 0xEE, 0xDC, 0xF7, 0x13, 0xC0, 0xAA, 0x88, 0xC2, 0xAA, 0x66, 0xA7, 0x59, 0x41 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kLoLDscDoor4Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000008, 0x00000103, { { 0x29, 0xC0, 0x4B, 0x7F, 0x36, 0x23, 0xBB, 0x38, 0x4C, 0x83, 0xC6, 0x9D, 0xB4, 0x8F, 0x29, 0x2E } } } },
- { UNK_LANG, kPlatformFMTowns, { 0x00000008, 0x0000000F, { { 0x9C, 0x6B, 0xAF, 0x69, 0x42, 0xC9, 0xC9, 0xA0, 0xD9, 0xF3, 0x54, 0xD9, 0x9A, 0xAF, 0xCF, 0xD8 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kLoLDscDoorXProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000480, 0x0001654D, { { 0x2A, 0x1F, 0xBF, 0xE3, 0xC4, 0xEF, 0x7E, 0xD1, 0x61, 0x51, 0xFE, 0x88, 0x8D, 0x1F, 0x59, 0x70 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kLoLDscDoorYProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000480, 0x00026666, { { 0x06, 0xBF, 0xA4, 0xD4, 0x6E, 0x29, 0x42, 0xA2, 0xA0, 0x8E, 0x3C, 0x14, 0xF3, 0xD6, 0x3F, 0x87 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kLoLScrollXTopProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x0000000A, 0x0000004B, { { 0x18, 0x1E, 0x6E, 0xE9, 0x34, 0xF0, 0x02, 0xC6, 0x57, 0x34, 0xDF, 0x55, 0xD9, 0x39, 0xE8, 0x98 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kLoLScrollYTopProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x0000000A, 0x00000022, { { 0xF3, 0x20, 0x5A, 0xC1, 0xBB, 0x0C, 0x79, 0x52, 0x23, 0xC1, 0x36, 0x81, 0x70, 0x2F, 0x92, 0xFC } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kLoLScrollXBottomProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x0000000A, 0x0000004B, { { 0x18, 0x1E, 0x6E, 0xE9, 0x34, 0xF0, 0x02, 0xC6, 0x57, 0x34, 0xDF, 0x55, 0xD9, 0x39, 0xE8, 0x98 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kLoLScrollYBottomProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x0000000A, 0x0000003C, { { 0x5B, 0x4F, 0xB7, 0xB5, 0x55, 0xA2, 0x9A, 0x21, 0xEF, 0xB4, 0x98, 0x47, 0x05, 0x57, 0x49, 0x55 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kLoLButtonDefsProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x0000082A, 0x0000CAAE, { { 0xC1, 0x83, 0x0D, 0xA0, 0x66, 0x16, 0x3D, 0x31, 0xCE, 0x30, 0x9F, 0x4E, 0x00, 0x65, 0x5A, 0xC8 } } } }, // floppy
- { UNK_LANG, kPlatformDOS, { 0x0000082A, 0x0000C34E, { { 0x7F, 0x9A, 0x0F, 0x28, 0x1A, 0x8F, 0x03, 0x46, 0x48, 0xEB, 0xC9, 0xB9, 0x23, 0x29, 0x5E, 0x50 } } } }, // floppy
- { UNK_LANG, kPlatformDOS, { 0x0000082A, 0x0000C47B, { { 0xDF, 0x1A, 0x18, 0x1F, 0x58, 0x05, 0x1F, 0x56, 0xD8, 0x6D, 0xBB, 0x93, 0xEC, 0x35, 0x9D, 0xA5 } } } }, // CD
- { UNK_LANG, kPlatformPC98, { 0x0000082A, 0x0000AB58, { { 0xDD, 0x2B, 0xA9, 0x54, 0x60, 0x25, 0x2C, 0x74, 0xF8, 0x5D, 0xC6, 0xD2, 0x2C, 0x1A, 0x24, 0x44 } } } },
- { UNK_LANG, kPlatformFMTowns, { 0x0000082A, 0x0000D271, { { 0xAF, 0xAD, 0x11, 0xF9, 0xDC, 0x41, 0x94, 0xB3, 0x0E, 0x48, 0x69, 0xB3, 0x32, 0x89, 0x7C, 0xDD } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kLoLButtonList1Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000050, 0x00000A37, { { 0x0F, 0x73, 0xEC, 0xDD, 0xAB, 0xFF, 0x49, 0x46, 0x5E, 0x8F, 0x0D, 0xC3, 0xE7, 0x1B, 0x89, 0x51 } } } },
- { UNK_LANG, kPlatformFMTowns, { 0x00000028, 0x00000938, { { 0x4B, 0xD9, 0x4A, 0x57, 0x58, 0xEC, 0x01, 0xE5, 0xA1, 0x25, 0x6A, 0x1A, 0x9C, 0x5D, 0x79, 0x19 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kLoLButtonList2Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x0000001E, 0x00000522, { { 0xEA, 0x41, 0x46, 0xE2, 0xFE, 0xAA, 0x7D, 0x5E, 0x89, 0x7F, 0xBF, 0x9B, 0x30, 0x60, 0x74, 0xF3 } } } },
- { UNK_LANG, kPlatformFMTowns, { 0x0000000F, 0x00000423, { { 0xD3, 0xA8, 0xD4, 0xFB, 0x1A, 0x56, 0x21, 0x8C, 0x01, 0xED, 0xF8, 0x54, 0xA9, 0xC5, 0x97, 0x04 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kLoLButtonList3Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000004, 0x0000023E, { { 0x70, 0xAA, 0xCA, 0xAC, 0x5C, 0x21, 0xCF, 0xA5, 0xBF, 0x7F, 0x5F, 0xBC, 0xF1, 0x24, 0x8A, 0xAF } } } },
- { UNK_LANG, kPlatformFMTowns, { 0x00000002, 0x0000013F, { { 0xDF, 0xE4, 0x3D, 0x18, 0x94, 0x18, 0xA5, 0x74, 0xBA, 0x26, 0x7B, 0x31, 0x87, 0xAE, 0xEE, 0x22 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kLoLButtonList4Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x0000001E, 0x0000054D, { { 0x19, 0x2A, 0xBE, 0x7F, 0x94, 0x10, 0xA0, 0x60, 0x2A, 0x33, 0xD6, 0x11, 0x85, 0xF0, 0xA4, 0xA9 } } } },
- { UNK_LANG, kPlatformFMTowns, { 0x0000000F, 0x0000044E, { { 0x18, 0x1E, 0xBB, 0x7D, 0xAC, 0xA1, 0x87, 0x0F, 0x32, 0xA3, 0xBF, 0x5F, 0xBC, 0xBB, 0x90, 0xA4 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kLoLButtonList5Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000020, 0x0000045D, { { 0xE3, 0x7C, 0xC2, 0x36, 0x21, 0x46, 0xDB, 0xF3, 0xDD, 0x38, 0x4B, 0x40, 0xE0, 0x35, 0x09, 0xC3 } } } },
- { UNK_LANG, kPlatformFMTowns, { 0x00000010, 0x0000035E, { { 0x4E, 0xE2, 0xD6, 0x93, 0xA3, 0xEF, 0xD0, 0xEA, 0x28, 0xE6, 0xE7, 0xDD, 0xFC, 0x44, 0xE2, 0xB9 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kLoLButtonList6Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x0000001C, 0x000004C4, { { 0x21, 0x7C, 0x29, 0x3F, 0x95, 0x6F, 0x91, 0x8C, 0xB2, 0x30, 0x09, 0xA6, 0x7B, 0x48, 0x44, 0x8F } } } },
- { UNK_LANG, kPlatformFMTowns, { 0x0000000E, 0x000003C5, { { 0x05, 0x10, 0x83, 0x1E, 0x18, 0x11, 0xC4, 0x43, 0x01, 0xE3, 0xE0, 0xD7, 0x79, 0x29, 0xA5, 0x86 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kLoLButtonList7Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000006, 0x0000021D, { { 0xDC, 0xCE, 0x1B, 0xEB, 0x11, 0x6D, 0xDE, 0x37, 0x17, 0xC8, 0x06, 0x51, 0xC3, 0x0C, 0xCB, 0xA6 } } } },
- { UNK_LANG, kPlatformFMTowns, { 0x00000003, 0x0000011E, { { 0xCF, 0x37, 0xEF, 0x83, 0xEC, 0x0D, 0x65, 0x41, 0xC8, 0x1D, 0xD1, 0x20, 0x82, 0x6B, 0xB5, 0x9B } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kLoLButtonList8Provider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000004, 0x00000253, { { 0x0C, 0x7B, 0x10, 0x99, 0x93, 0xD0, 0x33, 0xCA, 0xAB, 0x8D, 0x7E, 0x24, 0xE5, 0x7E, 0x6C, 0x91 } } } },
- { UNK_LANG, kPlatformFMTowns, { 0x00000002, 0x00000154, { { 0xE9, 0x6B, 0x8A, 0xD7, 0x8E, 0xCF, 0x66, 0x07, 0xDC, 0xF1, 0xC0, 0xAA, 0x81, 0x88, 0xB8, 0xB9 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kLoLLegendDataProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000030, 0x00000858, { { 0x63, 0x5E, 0x60, 0xC7, 0x62, 0x2C, 0x5D, 0x8F, 0x74, 0x71, 0x98, 0xB7, 0x09, 0xD2, 0x51, 0xC7 } } } },
- { UNK_LANG, kPlatformUnknown, { 0x0000003C, 0x00000A52, { { 0x81, 0xC5, 0xA4, 0xE7, 0x60, 0xDA, 0xD6, 0x5E, 0x19, 0xAB, 0xF3, 0xC7, 0xDD, 0xDB, 0x92, 0x5E } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kLoLMapCursorOvlProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x00000019, 0x000009CD, { { 0xF6, 0xD2, 0xFA, 0x36, 0x62, 0x95, 0x1D, 0x99, 0x7F, 0x11, 0x5F, 0xA8, 0x4D, 0x47, 0x72, 0x40 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kLoLMapStringIdProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x0000003C, 0x00000CFB, { { 0xE3, 0xC3, 0x41, 0x06, 0xD1, 0x71, 0x77, 0x78, 0xAD, 0x39, 0xAE, 0x2C, 0x16, 0x21, 0x45, 0xB7 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kLoLSpellbookAnimProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000038, 0x000003A1, { { 0x50, 0xA0, 0xF6, 0xA7, 0x53, 0x96, 0x86, 0x49, 0xB0, 0x8D, 0xA8, 0xB2, 0x2D, 0x9A, 0xE2, 0x1F } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kLoLSpellbookCoordsProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000018, 0x0000018F, { { 0xA5, 0xF6, 0x8A, 0x58, 0x9A, 0xC7, 0x3C, 0x3A, 0xB5, 0x87, 0x89, 0x87, 0x73, 0x51, 0x9B, 0x1B } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kLoLHealShapeFramesProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000050, 0x000000F4, { { 0xC9, 0x6E, 0x39, 0xE1, 0xD7, 0xAD, 0x10, 0x4F, 0xE2, 0xFE, 0xDC, 0xAD, 0x00, 0x9D, 0x41, 0xEF } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kLoLLightningDefsProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000014, 0x00000385, { { 0x68, 0x39, 0x65, 0xCB, 0xA9, 0x80, 0x90, 0xFB, 0xDD, 0x77, 0x0C, 0x76, 0x5A, 0xB5, 0x05, 0x03 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kLoLFireballCoordsProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000200, 0x0000FD81, { { 0xB3, 0xE0, 0x6F, 0x89, 0xCD, 0xE5, 0xA9, 0x6A, 0x4B, 0x61, 0x7A, 0x3F, 0x47, 0x26, 0x73, 0x58 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kLoLCreditsProvider[] = {
- { JA_JPN , kPlatformPC98, { 0x000005E7, 0x0001A1B0, { { 0x2A, 0xD0, 0x38, 0x84, 0x0C, 0x38, 0xCB, 0x52, 0x5D, 0x82, 0xBE, 0x03, 0x76, 0xFA, 0x0A, 0x4A } } } },
- { JA_JPN , kPlatformFMTowns, { 0x000005EC, 0x0001A219, { { 0x03, 0xBC, 0x67, 0x19, 0xA1, 0x99, 0x70, 0x10, 0x7A, 0x73, 0x85, 0xDA, 0xB4, 0x59, 0x49, 0xB0 } } } },
- EXTRACT_END_ENTRY
-};
-
-const ExtractEntrySearchData kLoLHistoryProvider[] = {
- { UNK_LANG, kPlatformDOS, { 0x000001D1, 0x00007F9B, { { 0x25, 0x10, 0x86, 0x40, 0xAC, 0x53, 0xFE, 0x11, 0x4D, 0xE2, 0xD9, 0x35, 0xD6, 0x89, 0xBB, 0x09 } } } },
-
- EXTRACT_END_ENTRY
-};
-
-// Provider tables
-
-struct ExtractEntry {
- int id;
- const ExtractEntrySearchData *providers;
-};
-
-const ExtractEntry extractProviders[] = {
- { k1ForestSeq, k1ForestSeqProvider },
- { k1KallakWritingSeq, k1KallakWritingSeqProvider },
- { k1KyrandiaLogoSeq, k1KyrandiaLogoSeqProvider },
- { k1KallakMalcolmSeq, k1KallakMalcolmSeqProvider },
- { k1MalcolmTreeSeq, k1MalcolmTreeSeqProvider },
- { k1WestwoodLogoSeq, k1WestwoodLogoSeqProvider },
- { k1Demo1Seq, k1Demo1SeqProvider },
- { k1Demo2Seq, k1Demo2SeqProvider },
- { k1Demo3Seq, k1Demo3SeqProvider },
- { k1Demo4Seq, k1Demo4SeqProvider },
- { k1AmuleteAnimSeq, k1AmuleteAnimSeqProvider },
- { k1OutroReunionSeq, k1OutroReunionSeqProvider },
- { k1IntroCPSStrings, k1IntroCPSStringsProvider },
- { k1IntroCOLStrings, k1IntroCOLStringsProvider },
- { k1IntroWSAStrings, k1IntroWSAStringsProvider },
- { k1IntroStrings, k1IntroStringsProvider },
- { k1OutroHomeString, k1OutroHomeStringProvider },
- { k1RoomFilenames, k1RoomFilenamesProvider },
- { k1RoomList, k1RoomListProvider },
- { k1CharacterImageFilenames, k1CharacterImageFilenamesProvider },
- { k1AudioTracks, k1AudioTracksProvider },
- { k1AudioTracks2, k1AudioTracks2Provider },
- { k1AudioTracksIntro, k1AudioTracksIntroProvider },
- { k1ItemNames, k1ItemNamesProvider },
- { k1TakenStrings, k1TakenStringsProvider },
- { k1PlacedStrings, k1PlacedStringsProvider },
- { k1DroppedStrings, k1DroppedStringsProvider },
- { k1NoDropStrings, k1NoDropStringsProvider },
- { k1PutDownString, k1PutDownStringProvider },
- { k1WaitAmuletString, k1WaitAmuletStringProvider },
- { k1BlackJewelString, k1BlackJewelStringProvider },
- { k1PoisonGoneString, k1PoisonGoneStringProvider },
- { k1HealingTipString, k1HealingTipStringProvider },
- { k1WispJewelStrings, k1WispJewelStringsProvider },
- { k1MagicJewelStrings, k1MagicJewelStringsProvider },
- { k1ThePoisonStrings, k1ThePoisonStringsProvider },
- { k1FluteStrings, k1FluteStringsProvider },
- { k1FlaskFullString, k1FlaskFullStringProvider },
- { k1FullFlaskString, k1FullFlaskStringProvider },
- { k1VeryCleverString, k1VeryCleverStringProvider },
- { k1NewGameString, k1NewGameStringProvider },
- { k1DefaultShapes, k1DefaultShapesProvider },
- { k1Healing1Shapes, k1Healing1ShapesProvider },
- { k1Healing2Shapes, k1Healing2ShapesProvider },
- { k1PoisonDeathShapes, k1PoisonDeathShapesProvider },
- { k1FluteShapes, k1FluteShapesProvider },
- { k1Winter1Shapes, k1Winter1ShapesProvider },
- { k1Winter2Shapes, k1Winter2ShapesProvider },
- { k1Winter3Shapes, k1Winter3ShapesProvider },
- { k1DrinkShapes, k1DrinkShapesProvider },
- { k1WispShapes, k1WispShapesProvider },
- { k1MagicAnimShapes, k1MagicAnimShapesProvider },
- { k1BranStoneShapes, k1BranStoneShapesProvider },
- { k1SpecialPalette1, k1SpecialPalette1Provider },
- { k1SpecialPalette2, k1SpecialPalette2Provider },
- { k1SpecialPalette3, k1SpecialPalette3Provider },
- { k1SpecialPalette4, k1SpecialPalette4Provider },
- { k1SpecialPalette5, k1SpecialPalette5Provider },
- { k1SpecialPalette6, k1SpecialPalette6Provider },
- { k1SpecialPalette7, k1SpecialPalette7Provider },
- { k1SpecialPalette8, k1SpecialPalette8Provider },
- { k1SpecialPalette9, k1SpecialPalette9Provider },
- { k1SpecialPalette10, k1SpecialPalette10Provider },
- { k1SpecialPalette11, k1SpecialPalette11Provider },
- { k1SpecialPalette12, k1SpecialPalette12Provider },
- { k1SpecialPalette13, k1SpecialPalette13Provider },
- { k1SpecialPalette14, k1SpecialPalette14Provider },
- { k1SpecialPalette15, k1SpecialPalette15Provider },
- { k1SpecialPalette16, k1SpecialPalette16Provider },
- { k1SpecialPalette17, k1SpecialPalette17Provider },
- { k1SpecialPalette18, k1SpecialPalette18Provider },
- { k1SpecialPalette19, k1SpecialPalette19Provider },
- { k1SpecialPalette20, k1SpecialPalette20Provider },
- { k1SpecialPalette21, k1SpecialPalette21Provider },
- { k1SpecialPalette22, k1SpecialPalette22Provider },
- { k1SpecialPalette23, k1SpecialPalette23Provider },
- { k1SpecialPalette24, k1SpecialPalette24Provider },
- { k1SpecialPalette25, k1SpecialPalette25Provider },
- { k1SpecialPalette26, k1SpecialPalette26Provider },
- { k1SpecialPalette27, k1SpecialPalette27Provider },
- { k1SpecialPalette28, k1SpecialPalette28Provider },
- { k1SpecialPalette29, k1SpecialPalette29Provider },
- { k1SpecialPalette30, k1SpecialPalette30Provider },
- { k1SpecialPalette31, k1SpecialPalette31Provider },
- { k1SpecialPalette32, k1SpecialPalette32Provider },
- { k1SpecialPalette33, k1SpecialPalette33Provider },
- { k1GUIStrings, k1GUIStringsProvider },
- { k1ConfigStrings, k1ConfigStringsProvider },
- { k1TownsMusicFadeTable, k1TownsMusicFadeTableProvider },
- { k1TownsSFXwdTable, k1TownsSFXwdTableProvider },
- { k1TownsSFXbtTable, k1TownsSFXbtTableProvider },
- { k1TownsCDATable, k1TownsCDATableProvider },
- { k1PC98StoryStrings, k1PC98StoryStringsProvider },
- { k1PC98IntroSfx, k1PC98IntroSfxProvider },
- { k1CreditsStrings, k1CreditsStringsProvider },
- { k1AmigaIntroSFXTable, k1AmigaIntroSFXTableProvider },
- { k1AmigaGameSFXTable, k1AmigaGameSFXTableProvider },
- { k2SeqplayPakFiles, k2SeqplayPakFilesProvider },
- { k2SeqplayStrings, k2SeqplayStringsProvider },
- { k2SeqplaySfxFiles, k2SeqplaySfxFilesProvider },
- { k2SeqplayTlkFiles, k2SeqplayTlkFilesProvider },
- { k2SeqplaySeqData, k2SeqplaySeqDataProvider },
- { k2SeqplayCredits, k2SeqplayCreditsProvider },
- { k2SeqplayCreditsSpecial, k2SeqplayCreditsSpecialProvider },
- { k2SeqplayIntroTracks, k2SeqplayIntroTracksProvider },
- { k2SeqplayFinaleTracks, k2SeqplayFinaleTracksProvider },
- { k2SeqplayIntroCDA, k2SeqplayIntroCDAProvider },
- { k2SeqplayFinaleCDA, k2SeqplayFinaleCDAProvider },
- { k2SeqplayShapeAnimData, k2SeqplayShapeAnimDataProvider },
- { k2IngamePakFiles, k2IngamePakFilesProvider },
- { k2IngameSfxFiles, k2IngameSfxFilesProvider },
- { k2IngameSfxIndex, k2IngameSfxIndexProvider },
- { k2IngameTracks, k2IngameTracksProvider },
- { k2IngameCDA, k2IngameCDAProvider },
- { k2IngameTalkObjIndex, k2IngameTalkObjIndexProvider },
- { k2IngameTimJpStrings, k2IngameTimJpStringsProvider },
- { k2IngameShapeAnimData, k2IngameShapeAnimDataProvider },
- { k2IngameTlkDemoStrings, k2IngameTlkDemoStringsProvider },
- { k3MainMenuStrings, k3MainMenuStringsProvider },
- { k3MusicFiles, k3MusicFilesProvider },
- { k3ScoreTable, k3ScoreTableProvider },
- { k3SfxFiles, k3SfxFilesProvider },
- { k3SfxMap, k3SfxMapProvider },
- { k3ItemAnimData, k3ItemAnimDataProvider },
- { k3ItemMagicTable, k3ItemMagicTableProvider },
- { k3ItemStringMap, k3ItemStringMapProvider },
-
- { kEoBBaseChargenStrings1, kEoBBaseChargenStrings1Provider },
- { kEoBBaseChargenStrings2, kEoBBaseChargenStrings2Provider },
- { kEoBBaseChargenStartLevels, kEoBBaseChargenStartLevelsProvider },
- { kEoBBaseChargenStatStrings, kEoBBaseChargenStatStringsProvider },
- { kEoBBaseChargenRaceSexStrings, kEoBBaseChargenRaceSexStringsProvider },
- { kEoBBaseChargenClassStrings, kEoBBaseChargenClassStringsProvider },
- { kEoBBaseChargenAlignmentStrings, kEoBBaseChargenAlignmentStringsProvider },
- { kEoBBaseChargenEnterGameStrings, kEoBBaseChargenEnterGameStringsProvider },
- { kEoBBaseChargenClassMinStats, kEoBBaseChargenClassMinStatsProvider },
- { kEoBBaseChargenRaceMinStats, kEoBBaseChargenRaceMinStatsProvider },
- { kEoBBaseChargenRaceMaxStats, kEoBBaseChargenRaceMaxStatsProvider },
-
- { kEoBBaseSaveThrowTable1, kEoBBaseSaveThrowTable1Provider },
- { kEoBBaseSaveThrowTable2, kEoBBaseSaveThrowTable2Provider },
- { kEoBBaseSaveThrowTable3, kEoBBaseSaveThrowTable3Provider },
- { kEoBBaseSaveThrowTable4, kEoBBaseSaveThrowTable4Provider },
- { kEoBBaseSaveThrwLvlIndex, kEoBBaseSaveThrwLvlIndexProvider },
- { kEoBBaseSaveThrwModDiv, kEoBBaseSaveThrwModDivProvider },
- { kEoBBaseSaveThrwModExt, kEoBBaseSaveThrwModExtProvider },
-
- { kEoBBasePryDoorStrings, kEoBBasePryDoorStringsProvider },
- { kEoBBaseWarningStrings, kEoBBaseWarningStringsProvider },
-
- { kEoBBaseItemSuffixStringsRings, kEoBBaseItemSuffixStringsRingsProvider },
- { kEoBBaseItemSuffixStringsPotions, kEoBBaseItemSuffixStringsPotionsProvider },
- { kEoBBaseItemSuffixStringsWands, kEoBBaseItemSuffixStringsWandsProvider },
-
- { kEoBBaseRipItemStrings, kEoBBaseRipItemStringsProvider },
- { kEoBBaseCursedString, kEoBBaseCursedStringProvider },
- { kEoBBaseEnchantedString, kEoBBaseEnchantedStringProvider },
- { kEoBBaseMagicObjectStrings, kEoBBaseMagicObjectStringsProvider },
- { kEoBBaseMagicObject5String, kEoBBaseMagicObject5StringProvider },
- { kEoBBasePatternSuffix, kEoBBasePatternSuffixProvider },
- { kEoBBasePatternGrFix1, kEoBBasePatternGrFix1Provider },
- { kEoBBasePatternGrFix2, kEoBBasePatternGrFix2Provider },
- { kEoBBaseValidateArmorString, kEoBBaseValidateArmorStringProvider },
- { kEoBBaseValidateCursedString, kEoBBaseValidateCursedStringProvider },
- { kEoBBaseValidateNoDropString, kEoBBaseValidateNoDropStringProvider },
- { kEoBBasePotionStrings, kEoBBasePotionStringsProvider },
- { kEoBBaseWandString, kEoBBaseWandStringProvider },
- { kEoBBaseItemMisuseStrings, kEoBBaseItemMisuseStringsProvider },
-
- { kEoBBaseTakenStrings, kEoBBaseTakenStringsProvider },
- { kEoBBasePotionEffectStrings, kEoBBasePotionEffectStringsProvider },
-
- { kEoBBaseYesNoStrings, kEoBBaseYesNoStringsProvider },
- { kRpgCommonMoreStrings, kRpgCommonMoreStringsProvider },
- { kEoBBaseNpcMaxStrings, kEoBBaseNpcMaxStringsProvider },
- { kEoBBaseOkStrings, kEoBBaseOkStringsProvider },
- { kEoBBaseNpcJoinStrings, kEoBBaseNpcJoinStringsProvider },
- { kEoBBaseCancelStrings, kEoBBaseCancelStringsProvider },
- { kEoBBaseAbortStrings, kEoBBaseAbortStringsProvider },
-
- { kEoBBaseMenuStringsMain, kEoBBaseMenuStringsMainProvider },
- { kEoBBaseMenuStringsSaveLoad, kEoBBaseMenuStringsSaveLoadProvider },
- { kEoBBaseMenuStringsOnOff, kEoBBaseMenuStringsOnOffProvider },
- { kEoBBaseMenuStringsSpells, kEoBBaseMenuStringsSpellsProvider },
- { kEoBBaseMenuStringsRest, kEoBBaseMenuStringsRestProvider },
- { kEoBBaseMenuStringsDrop, kEoBBaseMenuStringsDropProvider },
- { kEoBBaseMenuStringsExit, kEoBBaseMenuStringsExitProvider },
- { kEoBBaseMenuStringsStarve, kEoBBaseMenuStringsStarveProvider },
- { kEoBBaseMenuStringsScribe, kEoBBaseMenuStringsScribeProvider },
- { kEoBBaseMenuStringsDrop2, kEoBBaseMenuStringsDrop2Provider },
- { kEoBBaseMenuStringsHead, kEoBBaseMenuStringsHeadProvider },
- { kEoBBaseMenuStringsPoison, kEoBBaseMenuStringsPoisonProvider },
- { kEoBBaseMenuStringsMgc, kEoBBaseMenuStringsMgcProvider },
- { kEoBBaseMenuStringsPrefs, kEoBBaseMenuStringsPrefsProvider },
- { kEoBBaseMenuStringsRest2, kEoBBaseMenuStringsRest2Provider },
- { kEoBBaseMenuStringsRest3, kEoBBaseMenuStringsRest3Provider },
- { kEoBBaseMenuStringsRest4, kEoBBaseMenuStringsRest4Provider },
- { kEoBBaseMenuStringsDefeat, kEoBBaseMenuStringsDefeatProvider },
- { kEoBBaseMenuStringsTransfer, kEoBBaseMenuStringsTransferProvider },
- { kEoBBaseMenuStringsSpec, kEoBBaseMenuStringsSpecProvider },
- { kEoBBaseMenuStringsSpellNo, kEoBBaseMenuStringsSpellNoProvider },
- { kEoBBaseMenuYesNoStrings, kEoBBaseMenuYesNoStringsProvider },
-
- { kEoBBaseSpellLevelsMage, kEoBBaseSpellLevelsMageProvider },
- { kEoBBaseSpellLevelsCleric, kEoBBaseSpellLevelsClericProvider },
- { kEoBBaseNumSpellsCleric, kEoBBaseNumSpellsClericProvider },
- { kEoBBaseNumSpellsWisAdj, kEoBBaseNumSpellsWisAdjProvider },
- { kEoBBaseNumSpellsPal, kEoBBaseNumSpellsPalProvider },
- { kEoBBaseNumSpellsMage, kEoBBaseNumSpellsMageProvider },
-
- { kEoBBaseCharGuiStringsHp, kEoBBaseCharGuiStringsHpProvider },
- { kEoBBaseCharGuiStringsWp1, kEoBBaseCharGuiStringsWp1Provider },
- { kEoBBaseCharGuiStringsWp2, kEoBBaseCharGuiStringsWp2Provider },
- { kEoBBaseCharGuiStringsWr, kEoBBaseCharGuiStringsWrProvider },
- { kEoBBaseCharGuiStringsSt1, kEoBBaseCharGuiStringsSt1Provider },
- { kEoBBaseCharGuiStringsSt2, kEoBBaseCharGuiStringsSt2Provider },
- { kEoBBaseCharGuiStringsIn, kEoBBaseCharGuiStringsInProvider },
-
- { kEoBBaseCharStatusStrings7, kEoBBaseCharStatusStrings7Provider },
- { kEoBBaseCharStatusStrings81, kEoBBaseCharStatusStrings81Provider },
- { kEoBBaseCharStatusStrings82, kEoBBaseCharStatusStrings82Provider },
- { kEoBBaseCharStatusStrings9, kEoBBaseCharStatusStrings9Provider },
- { kEoBBaseCharStatusStrings12, kEoBBaseCharStatusStrings12Provider },
- { kEoBBaseCharStatusStrings131, kEoBBaseCharStatusStrings131Provider },
- { kEoBBaseCharStatusStrings132, kEoBBaseCharStatusStrings132Provider },
-
- { kEoBBaseLevelGainStrings, kEoBBaseLevelGainStringsProvider },
- { kEoBBaseExperienceTable0, kEoBBaseExperienceTable0Provider },
- { kEoBBaseExperienceTable1, kEoBBaseExperienceTable1Provider },
- { kEoBBaseExperienceTable2, kEoBBaseExperienceTable2Provider },
- { kEoBBaseExperienceTable3, kEoBBaseExperienceTable3Provider },
- { kEoBBaseExperienceTable4, kEoBBaseExperienceTable4Provider },
-
- { kEoBBaseWllFlagPreset, kEoBBaseWllFlagPresetProvider },
- { kEoBBaseDscShapeCoords, kEoBBaseDscShapeCoordsProvider },
- { kEoBBaseDscDoorScaleOffs, kEoBBaseDscDoorScaleOffsProvider },
- { kEoBBaseDscDoorScaleMult1, kEoBBaseDscDoorScaleMult1Provider },
- { kEoBBaseDscDoorScaleMult2, kEoBBaseDscDoorScaleMult2Provider },
- { kEoBBaseDscDoorScaleMult3, kEoBBaseDscDoorScaleMult3Provider },
- { kEoBBaseDscDoorScaleMult4, kEoBBaseDscDoorScaleMult4Provider },
- { kEoBBaseDscDoorScaleMult5, kEoBBaseDscDoorScaleMult5Provider },
- { kEoBBaseDscDoorScaleMult6, kEoBBaseDscDoorScaleMult6Provider },
- { kEoBBaseDscDoorType5Offs, kEoBBaseDscDoorType5OffsProvider },
- { kEoBBaseDscDoorXE, kEoBBaseDscDoorXEProvider },
- { kEoBBaseDscDoorY1, kEoBBaseDscDoorY1Provider },
- { kEoBBaseDscDoorY3, kEoBBaseDscDoorY3Provider },
- { kEoBBaseDscDoorY4, kEoBBaseDscDoorY4Provider },
- { kEoBBaseDscDoorY5, kEoBBaseDscDoorY5Provider },
- { kEoBBaseDscDoorY6, kEoBBaseDscDoorY6Provider },
- { kEoBBaseDscDoorY7, kEoBBaseDscDoorY7Provider },
- { kEoBBaseDscDoorCoordsExt, kEoBBaseDscDoorCoordsExtProvider },
- { kEoBBaseDscItemPosIndex, kEoBBaseDscItemPosIndexProvider },
- { kEoBBaseDscItemShpX, kEoBBaseDscItemShpXProvider },
- { kEoBBaseDscItemPosUnk, kEoBBaseDscItemPosUnkProvider },
- { kEoBBaseDscItemTileIndex, kEoBBaseDscItemTileIndexProvider },
- { kEoBBaseDscItemShapeMap, kEoBBaseDscItemShapeMapProvider },
- { kEoBBaseDscTelptrShpCoords, kEoBBaseDscTelptrShpCoordsProvider },
-
- { kEoBBasePortalSeqData, kEoBBasePortalSeqDataProvider },
- { kEoBBaseManDef, kEoBBaseManDefProvider },
- { kEoBBaseManWord, kEoBBaseManWordProvider },
- { kEoBBaseManPrompt, kEoBBaseManPromptProvider },
-
- { kEoBBaseDscMonsterFrmOffsTbl1, kEoBBaseDscMonsterFrmOffsTbl1Provider },
- { kEoBBaseDscMonsterFrmOffsTbl2, kEoBBaseDscMonsterFrmOffsTbl2Provider },
-
- { kEoBBaseInvSlotX, kEoBBaseInvSlotXProvider },
- { kEoBBaseInvSlotY, kEoBBaseInvSlotYProvider },
- { kEoBBaseSlotValidationFlags, kEoBBaseSlotValidationFlagsProvider },
-
- { kEoBBaseProjectileWeaponTypes, kEoBBaseProjectileWeaponTypesProvider },
- { kEoBBaseWandTypes, kEoBBaseWandTypesProvider },
-
- { kEoBBaseDrawObjPosIndex, kEoBBaseDrawObjPosIndexProvider },
- { kEoBBaseFlightObjFlipIndex, kEoBBaseFlightObjFlipIndexProvider },
- { kEoBBaseFlightObjShpMap, kEoBBaseFlightObjShpMapProvider },
- { kEoBBaseFlightObjSclIndex, kEoBBaseFlightObjSclIndexProvider },
-
- { kEoBBaseBookNumbers, kEoBBaseBookNumbersProvider },
- { kEoBBaseMageSpellsList, kEoBBaseMageSpellsListProvider },
- { kEoBBaseClericSpellsList, kEoBBaseClericSpellsListProvider },
- { kEoBBaseSpellNames, kEoBBaseSpellNamesProvider },
- { kEoBBaseMagicStrings1, kEoBBaseMagicStrings1Provider },
- { kEoBBaseMagicStrings2, kEoBBaseMagicStrings2Provider },
- { kEoBBaseMagicStrings3, kEoBBaseMagicStrings3Provider },
- { kEoBBaseMagicStrings4, kEoBBaseMagicStrings4Provider },
- { kEoBBaseMagicStrings6, kEoBBaseMagicStrings6Provider },
- { kEoBBaseMagicStrings7, kEoBBaseMagicStrings7Provider },
- { kEoBBaseMagicStrings8, kEoBBaseMagicStrings8Provider },
-
- { kEoBBaseExpObjectTlMode, kEoBBaseExpObjectTlModeProvider },
- { kEoBBaseExpObjectTblIndex, kEoBBaseExpObjectTblIndexProvider },
- { kEoBBaseExpObjectShpStart, kEoBBaseExpObjectShpStartProvider },
- { kEoBBaseExpObjectTbl1, kEoBBaseExpObjectTbl1Provider },
- { kEoBBaseExpObjectTbl2, kEoBBaseExpObjectTbl2Provider },
- { kEoBBaseExpObjectTbl3, kEoBBaseExpObjectTbl3Provider },
- { kEoBBaseExpObjectY, kEoBBaseExpObjectYProvider },
-
- { kEoBBaseSparkDefSteps, kEoBBaseSparkDefStepsProvider },
- { kEoBBaseSparkDefSubSteps, kEoBBaseSparkDefSubStepsProvider },
- { kEoBBaseSparkDefShift, kEoBBaseSparkDefShiftProvider },
- { kEoBBaseSparkDefAdd, kEoBBaseSparkDefAddProvider },
- { kEoBBaseSparkDefX, kEoBBaseSparkDefXProvider },
- { kEoBBaseSparkDefY, kEoBBaseSparkDefYProvider },
- { kEoBBaseSparkOfFlags1, kEoBBaseSparkOfFlags1Provider },
- { kEoBBaseSparkOfFlags2, kEoBBaseSparkOfFlags2Provider },
- { kEoBBaseSparkOfShift, kEoBBaseSparkOfShiftProvider },
- { kEoBBaseSparkOfX, kEoBBaseSparkOfXProvider },
- { kEoBBaseSparkOfY, kEoBBaseSparkOfYProvider },
-
- { kEoBBaseSpellProperties, kEoBBaseSpellPropertiesProvider },
- { kEoBBaseMagicFlightProps, kEoBBaseMagicFlightPropsProvider },
- { kEoBBaseTurnUndeadEffect, kEoBBaseTurnUndeadEffectProvider },
- { kEoBBaseBurningHandsDest, kEoBBaseBurningHandsDestProvider },
- { kEoBBaseConeOfColdDest1, kEoBBaseConeOfColdDest1Provider },
- { kEoBBaseConeOfColdDest2, kEoBBaseConeOfColdDest2Provider },
- { kEoBBaseConeOfColdDest3, kEoBBaseConeOfColdDest3Provider },
- { kEoBBaseConeOfColdDest4, kEoBBaseConeOfColdDest4Provider },
- { kEoBBaseConeOfColdGfxTbl, kEoBBaseConeOfColdGfxTblProvider },
-
- { kEoB1MainMenuStrings, kEoB1MainMenuStringsProvider },
- { kEoB1BonusStrings, kEoB1BonusStringsProvider },
-
- { kEoB1IntroFilesOpening, kEoB1IntroFilesOpeningProvider },
- { kEoB1IntroFilesTower, kEoB1IntroFilesTowerProvider },
- { kEoB1IntroFilesOrb, kEoB1IntroFilesOrbProvider },
- { kEoB1IntroFilesWdEntry, kEoB1IntroFilesWdEntryProvider },
- { kEoB1IntroFilesKing, kEoB1IntroFilesKingProvider },
- { kEoB1IntroFilesHands, kEoB1IntroFilesHandsProvider },
- { kEoB1IntroFilesWdExit, kEoB1IntroFilesWdExitProvider },
- { kEoB1IntroFilesTunnel, kEoB1IntroFilesTunnelProvider },
- { kEoB1IntroOpeningFrmDelay, kEoB1IntroOpeningFrmDelayProvider },
- { kEoB1IntroWdEncodeX, kEoB1IntroWdEncodeXProvider },
- { kEoB1IntroWdEncodeY, kEoB1IntroWdEncodeYProvider },
- { kEoB1IntroWdEncodeWH, kEoB1IntroWdEncodeWHProvider },
- { kEoB1IntroWdDsX, kEoB1IntroWdDsXProvider },
- { kEoB1IntroWdDsY, kEoB1IntroWdDsYProvider },
- { kEoB1IntroTvlX1, kEoB1IntroTvlX1Provider },
- { kEoB1IntroTvlY1, kEoB1IntroTvlY1Provider },
- { kEoB1IntroTvlX2, kEoB1IntroTvlX2Provider },
- { kEoB1IntroTvlY2, kEoB1IntroTvlY2Provider },
- { kEoB1IntroTvlW, kEoB1IntroTvlWProvider },
- { kEoB1IntroTvlH, kEoB1IntroTvlHProvider },
-
- { kEoB1DoorShapeDefs, kEoB1DoorShapeDefsProvider },
- { kEoB1DoorSwitchShapeDefs, kEoB1DoorSwitchShapeDefsProvider },
- { kEoB1DoorSwitchCoords, kEoB1DoorSwitchCoordsProvider },
- { kEoB1MonsterProperties, kEoB1MonsterPropertiesProvider },
-
- { kEoB1EnemyMageSpellList, kEoB1EnemyMageSpellListProvider },
- { kEoB1EnemyMageSfx, kEoB1EnemyMageSfxProvider },
- { kEoB1BeholderSpellList, kEoB1BeholderSpellListProvider },
- { kEoB1BeholderSfx, kEoB1BeholderSfxProvider },
- { kEoB1TurnUndeadString, kEoB1TurnUndeadStringProvider },
-
- { kEoB1CgaMappingDefault, kEoB1CgaMappingDefaultProvider },
- { kEoB1CgaMappingAlt, kEoB1CgaMappingAltProvider },
- { kEoB1CgaMappingInv, kEoB1CgaMappingInvProvider },
- { kEoB1CgaMappingItemsL, kEoB1CgaMappingItemsLProvider },
- { kEoB1CgaMappingItemsS, kEoB1CgaMappingItemsSProvider },
- { kEoB1CgaMappingThrown, kEoB1CgaMappingThrownProvider },
- { kEoB1CgaMappingIcons, kEoB1CgaMappingIconsProvider },
- { kEoB1CgaMappingDeco, kEoB1CgaMappingDecoProvider },
- { kEoB1CgaLevelMappingIndex, kEoB1CgaLevelMappingIndexProvider },
- { kEoB1CgaMappingLevel0, kEoB1CgaMappingLevel0Provider },
- { kEoB1CgaMappingLevel1, kEoB1CgaMappingLevel1Provider },
- { kEoB1CgaMappingLevel2, kEoB1CgaMappingLevel2Provider },
- { kEoB1CgaMappingLevel3, kEoB1CgaMappingLevel3Provider },
- { kEoB1CgaMappingLevel4, kEoB1CgaMappingLevel4Provider },
-
- { kEoB1NpcShpData, kEoB1NpcShpDataProvider },
- { kEoB1NpcSubShpIndex1, kEoB1NpcSubShpIndex1Provider },
- { kEoB1NpcSubShpIndex2, kEoB1NpcSubShpIndex2Provider },
- { kEoB1NpcSubShpY, kEoB1NpcSubShpYProvider },
- { kEoB1Npc0Strings, kEoB1Npc0StringsProvider },
- { kEoB1Npc11Strings, kEoB1Npc11StringsProvider },
- { kEoB1Npc12Strings, kEoB1Npc12StringsProvider },
- { kEoB1Npc21Strings, kEoB1Npc21StringsProvider },
- { kEoB1Npc22Strings, kEoB1Npc22StringsProvider },
- { kEoB1Npc31Strings, kEoB1Npc31StringsProvider },
- { kEoB1Npc32Strings, kEoB1Npc32StringsProvider },
- { kEoB1Npc4Strings, kEoB1Npc4StringsProvider },
- { kEoB1Npc5Strings, kEoB1Npc5StringsProvider },
- { kEoB1Npc6Strings, kEoB1Npc6StringsProvider },
- { kEoB1Npc7Strings, kEoB1Npc7StringsProvider },
-
- { kEoB2MainMenuStrings, kEoB2MainMenuStringsProvider },
-
- { kEoB2TransferPortraitFrames, kEoB2TransferPortraitFramesProvider },
- { kEoB2TransferConvertTable, kEoB2TransferConvertTableProvider },
- { kEoB2TransferItemTable, kEoB2TransferItemTableProvider },
- { kEoB2TransferExpTable, kEoB2TransferExpTableProvider },
- { kEoB2TransferStrings1, kEoB2TransferStrings1Provider },
- { kEoB2TransferStrings2, kEoB2TransferStrings2Provider },
- { kEoB2TransferLabels, kEoB2TransferLabelsProvider },
-
- { kEoB2IntroStrings, kEoB2IntroStringsProvider },
- { kEoB2IntroCPSFiles, kEoB2IntroCPSFilesProvider },
- { kEoB2IntroAnimData00, kEoB2IntroAnimData00Provider },
- { kEoB2IntroAnimData01, kEoB2IntroAnimData01Provider },
- { kEoB2IntroAnimData02, kEoB2IntroAnimData02Provider },
- { kEoB2IntroAnimData03, kEoB2IntroAnimData03Provider },
- { kEoB2IntroAnimData04, kEoB2IntroAnimData04Provider },
- { kEoB2IntroAnimData05, kEoB2IntroAnimData05Provider },
- { kEoB2IntroAnimData06, kEoB2IntroAnimData06Provider },
- { kEoB2IntroAnimData07, kEoB2IntroAnimData07Provider },
- { kEoB2IntroAnimData08, kEoB2IntroAnimData08Provider },
- { kEoB2IntroAnimData09, kEoB2IntroAnimData09Provider },
- { kEoB2IntroAnimData10, kEoB2IntroAnimData10Provider },
- { kEoB2IntroAnimData11, kEoB2IntroAnimData11Provider },
- { kEoB2IntroAnimData12, kEoB2IntroAnimData12Provider },
- { kEoB2IntroAnimData13, kEoB2IntroAnimData13Provider },
- { kEoB2IntroAnimData14, kEoB2IntroAnimData14Provider },
- { kEoB2IntroAnimData15, kEoB2IntroAnimData15Provider },
- { kEoB2IntroAnimData16, kEoB2IntroAnimData16Provider },
- { kEoB2IntroAnimData17, kEoB2IntroAnimData17Provider },
- { kEoB2IntroAnimData18, kEoB2IntroAnimData18Provider },
- { kEoB2IntroAnimData19, kEoB2IntroAnimData19Provider },
- { kEoB2IntroAnimData20, kEoB2IntroAnimData20Provider },
- { kEoB2IntroAnimData21, kEoB2IntroAnimData21Provider },
- { kEoB2IntroAnimData22, kEoB2IntroAnimData22Provider },
- { kEoB2IntroAnimData23, kEoB2IntroAnimData23Provider },
- { kEoB2IntroAnimData24, kEoB2IntroAnimData24Provider },
- { kEoB2IntroAnimData25, kEoB2IntroAnimData25Provider },
- { kEoB2IntroAnimData26, kEoB2IntroAnimData26Provider },
- { kEoB2IntroAnimData27, kEoB2IntroAnimData27Provider },
- { kEoB2IntroAnimData28, kEoB2IntroAnimData28Provider },
- { kEoB2IntroAnimData29, kEoB2IntroAnimData29Provider },
- { kEoB2IntroAnimData30, kEoB2IntroAnimData30Provider },
- { kEoB2IntroAnimData31, kEoB2IntroAnimData31Provider },
- { kEoB2IntroAnimData32, kEoB2IntroAnimData32Provider },
- { kEoB2IntroAnimData33, kEoB2IntroAnimData33Provider },
- { kEoB2IntroAnimData34, kEoB2IntroAnimData34Provider },
- { kEoB2IntroAnimData35, kEoB2IntroAnimData35Provider },
- { kEoB2IntroAnimData36, kEoB2IntroAnimData36Provider },
- { kEoB2IntroAnimData37, kEoB2IntroAnimData37Provider },
- { kEoB2IntroAnimData38, kEoB2IntroAnimData38Provider },
- { kEoB2IntroAnimData39, kEoB2IntroAnimData39Provider },
- { kEoB2IntroAnimData40, kEoB2IntroAnimData40Provider },
- { kEoB2IntroAnimData41, kEoB2IntroAnimData41Provider },
- { kEoB2IntroAnimData42, kEoB2IntroAnimData42Provider },
- { kEoB2IntroAnimData43, kEoB2IntroAnimData43Provider },
- { kEoB2IntroShapes00, kEoB2IntroShapes00Provider },
- { kEoB2IntroShapes01, kEoB2IntroShapes01Provider },
- { kEoB2IntroShapes04, kEoB2IntroShapes04Provider },
- { kEoB2IntroShapes07, kEoB2IntroShapes07Provider },
-
- { kEoB2FinaleStrings, kEoB2FinaleStringsProvider },
- { kEoB2CreditsData, kEoB2CreditsDataProvider },
- { kEoB2FinaleCPSFiles, kEoB2FinaleCPSFilesProvider },
- { kEoB2FinaleAnimData00, kEoB2FinaleAnimData00Provider },
- { kEoB2FinaleAnimData01, kEoB2FinaleAnimData01Provider },
- { kEoB2FinaleAnimData02, kEoB2FinaleAnimData02Provider },
- { kEoB2FinaleAnimData03, kEoB2FinaleAnimData03Provider },
- { kEoB2FinaleAnimData04, kEoB2FinaleAnimData04Provider },
- { kEoB2FinaleAnimData05, kEoB2FinaleAnimData05Provider },
- { kEoB2FinaleAnimData06, kEoB2FinaleAnimData06Provider },
- { kEoB2FinaleAnimData07, kEoB2FinaleAnimData07Provider },
- { kEoB2FinaleAnimData08, kEoB2FinaleAnimData08Provider },
- { kEoB2FinaleAnimData09, kEoB2FinaleAnimData09Provider },
- { kEoB2FinaleAnimData10, kEoB2FinaleAnimData10Provider },
- { kEoB2FinaleAnimData11, kEoB2FinaleAnimData11Provider },
- { kEoB2FinaleAnimData12, kEoB2FinaleAnimData12Provider },
- { kEoB2FinaleAnimData13, kEoB2FinaleAnimData13Provider },
- { kEoB2FinaleAnimData14, kEoB2FinaleAnimData14Provider },
- { kEoB2FinaleAnimData15, kEoB2FinaleAnimData15Provider },
- { kEoB2FinaleAnimData16, kEoB2FinaleAnimData16Provider },
- { kEoB2FinaleAnimData17, kEoB2FinaleAnimData17Provider },
- { kEoB2FinaleAnimData18, kEoB2FinaleAnimData18Provider },
- { kEoB2FinaleAnimData19, kEoB2FinaleAnimData19Provider },
- { kEoB2FinaleAnimData20, kEoB2FinaleAnimData20Provider },
- { kEoB2FinaleShapes00, kEoB2FinaleShapes00Provider },
- { kEoB2FinaleShapes03, kEoB2FinaleShapes03Provider },
- { kEoB2FinaleShapes07, kEoB2FinaleShapes07Provider },
- { kEoB2FinaleShapes09, kEoB2FinaleShapes09Provider },
- { kEoB2FinaleShapes10, kEoB2FinaleShapes10Provider },
-
- { kEoB2NpcShapeData, kEoB2NpcShapeDataProvider },
- { kEoBBaseClassModifierFlags, kEoBBaseClassModifierFlagsProvider },
-
- { kEoBBaseMonsterStepTable01, kEoBBaseMonsterStepTable01Provider },
- { kEoBBaseMonsterStepTable02, kEoBBaseMonsterStepTable02Provider },
- { kEoBBaseMonsterStepTable1, kEoBBaseMonsterStepTable1Provider },
- { kEoBBaseMonsterStepTable2, kEoBBaseMonsterStepTable2Provider },
- { kEoBBaseMonsterStepTable3, kEoBBaseMonsterStepTable3Provider },
- { kEoBBaseMonsterCloseAttPosTable1, kEoBBaseMonsterCloseAttPosTable1Provider },
- { kEoBBaseMonsterCloseAttPosTable21, kEoBBaseMonsterCloseAttPosTable21Provider },
- { kEoBBaseMonsterCloseAttPosTable22, kEoBBaseMonsterCloseAttPosTable22Provider },
- { kEoBBaseMonsterCloseAttUnkTable, kEoBBaseMonsterCloseAttUnkTableProvider },
- { kEoBBaseMonsterCloseAttChkTable1, kEoBBaseMonsterCloseAttChkTable1Provider },
- { kEoBBaseMonsterCloseAttChkTable2, kEoBBaseMonsterCloseAttChkTable2Provider },
- { kEoBBaseMonsterCloseAttDstTable1, kEoBBaseMonsterCloseAttDstTable1Provider },
- { kEoBBaseMonsterCloseAttDstTable2, kEoBBaseMonsterCloseAttDstTable2Provider },
-
- { kEoBBaseMonsterProximityTable, kEoBBaseMonsterProximityTableProvider },
- { kEoBBaseFindBlockMonstersTable, kEoBBaseFindBlockMonstersTableProvider },
- { kEoBBaseMonsterDirChangeTable, kEoBBaseMonsterDirChangeTableProvider },
- { kEoBBaseMonsterDistAttStrings, kEoBBaseMonsterDistAttStringsProvider },
- { kEoBBaseEncodeMonsterDefs, kEoBBaseEncodeMonsterDefsProvider },
- { kEoBBaseNpcPresets, kEoBBaseNpcPresetsProvider },
- { kEoB2Npc1Strings, kEoB2Npc1StringsProvider },
- { kEoB2Npc2Strings, kEoB2Npc2StringsProvider },
- { kEoB2MonsterDustStrings, kEoB2MonsterDustStringsProvider },
- { kEoB2DreamSteps, kEoB2DreamStepsProvider },
- { kEoB2KheldranStrings, kEoB2KheldranStringsProvider },
- { kEoB2HornStrings, kEoB2HornStringsProvider },
- { kEoB2HornSounds, kEoB2HornSoundsProvider },
- { kEoB2WallOfForceDsX, kEoB2WallOfForceDsXProvider },
- { kEoB2WallOfForceDsY, kEoB2WallOfForceDsYProvider },
- { kEoB2WallOfForceNumW, kEoB2WallOfForceNumWProvider },
- { kEoB2WallOfForceNumH, kEoB2WallOfForceNumHProvider },
- { kEoB2WallOfForceShpId, kEoB2WallOfForceShpIdProvider },
-
- { kLoLIngamePakFiles, kLoLIngamePakFilesProvider },
- { kLoLCharacterDefs, kLoLCharacterDefsProvider },
- { kLoLIngameSfxFiles, kLoLIngameSfxFilesProvider },
- { kLoLIngameSfxIndex, kLoLIngameSfxIndexProvider },
- { kLoLMusicTrackMap, kLoLMusicTrackMapProvider },
- { kLoLIngameGMSfxIndex, kLoLIngameGMSfxIndexProvider },
- { kLoLIngameMT32SfxIndex, kLoLIngameMT32SfxIndexProvider },
- { kLoLIngamePcSpkSfxIndex, kLoLIngamePcSpkSfxIndexProvider },
- { kLoLSpellProperties, kLoLSpellPropertiesProvider },
- { kLoLGameShapeMap, kLoLGameShapeMapProvider },
- { kLoLSceneItemOffs, kLoLSceneItemOffsProvider },
- { kLoLCharInvIndex, kLoLCharInvIndexProvider },
- { kLoLCharInvDefs, kLoLCharInvDefsProvider },
- { kLoLCharDefsMan, kLoLCharDefsManProvider },
- { kLoLCharDefsWoman, kLoLCharDefsWomanProvider },
- { kLoLCharDefsKieran, kLoLCharDefsKieranProvider },
- { kLoLCharDefsAkshel, kLoLCharDefsAkshelProvider },
- { kLoLExpRequirements, kLoLExpRequirementsProvider },
- { kLoLMonsterModifiers1, kLoLMonsterModifiers1Provider },
- { kLoLMonsterModifiers2, kLoLMonsterModifiers2Provider },
- { kLoLMonsterModifiers3, kLoLMonsterModifiers3Provider },
- { kLoLMonsterModifiers4, kLoLMonsterModifiers4Provider },
- { kLoLMonsterShiftOffsets, kLoLMonsterShiftOffsetsProvider },
- { kLoLMonsterDirFlags, kLoLMonsterDirFlagsProvider },
- { kLoLMonsterScaleY, kLoLMonsterScaleYProvider },
- { kLoLMonsterScaleX, kLoLMonsterScaleXProvider },
- { kLoLMonsterScaleWH, kLoLMonsterScaleWHProvider },
- { kLoLFlyingObjectShp, kLoLFlyingObjectShpProvider },
- { kLoLInventoryDesc, kLoLInventoryDescProvider },
- { kLoLLevelShpList, kLoLLevelShpListProvider },
- { kLoLLevelDatList, kLoLLevelDatListProvider },
- { kLoLCompassDefs, kLoLCompassDefsProvider },
- { kLoLItemPrices, kLoLItemPricesProvider },
- { kLoLStashSetup, kLoLStashSetupProvider },
- { kLoLDscWalls, kLoLDscWallsProvider },
- { kRpgCommonDscShapeIndex, kRpgCommonDscShapeIndexProvider },
- { kLoLDscOvlMap, kLoLDscOvlMapProvider },
- { kLoLDscScaleWidthData, kLoLDscScaleWidthDataProvider },
- { kLoLDscScaleHeightData, kLoLDscScaleHeightDataProvider },
- { kRpgCommonDscX, kRpgCommonDscXProvider },
- { kLoLDscY, kLoLDscYProvider },
- { kRpgCommonDscTileIndex, kRpgCommonDscTileIndexProvider },
- { kRpgCommonDscUnk2, kRpgCommonDscUnk2Provider },
- { kRpgCommonDscDoorShapeIndex, kRpgCommonDscDoorShapeIndexProvider },
- { kRpgCommonDscDimData1, kRpgCommonDscDimData1Provider },
- { kRpgCommonDscDimData2, kRpgCommonDscDimData2Provider },
- { kRpgCommonDscBlockMap, kRpgCommonDscBlockMapProvider },
- { kRpgCommonDscDimMap, kRpgCommonDscDimMapProvider },
- { kLoLDscOvlIndex, kLoLDscOvlIndexProvider },
- { kRpgCommonDscBlockIndex, kRpgCommonDscBlockIndexProvider },
- { kRpgCommonDscDoorY2, kRpgCommonDscDoorY2Provider },
- { kRpgCommonDscDoorFrameY1, kRpgCommonDscDoorFrameY1Provider },
- { kRpgCommonDscDoorFrameY2, kRpgCommonDscDoorFrameY2Provider },
- { kRpgCommonDscDoorFrameIndex1, kRpgCommonDscDoorFrameIndex1Provider },
- { kRpgCommonDscDoorFrameIndex2, kRpgCommonDscDoorFrameIndex2Provider },
- { kLoLDscDoorScale, kLoLDscDoorScaleProvider },
- { kLoLDscDoor4, kLoLDscDoor4Provider },
- { kLoLDscDoorX, kLoLDscDoorXProvider },
- { kLoLDscDoorY, kLoLDscDoorYProvider },
- { kLoLScrollXTop, kLoLScrollXTopProvider },
- { kLoLScrollYTop, kLoLScrollYTopProvider },
- { kLoLScrollXBottom, kLoLScrollXBottomProvider },
- { kLoLScrollYBottom, kLoLScrollYBottomProvider },
- { kLoLButtonDefs, kLoLButtonDefsProvider },
- { kLoLButtonList1, kLoLButtonList1Provider },
- { kLoLButtonList2, kLoLButtonList2Provider },
- { kLoLButtonList3, kLoLButtonList3Provider },
- { kLoLButtonList4, kLoLButtonList4Provider },
- { kLoLButtonList5, kLoLButtonList5Provider },
- { kLoLButtonList6, kLoLButtonList6Provider },
- { kLoLButtonList7, kLoLButtonList7Provider },
- { kLoLButtonList8, kLoLButtonList8Provider },
- { kLoLLegendData, kLoLLegendDataProvider },
- { kLoLMapCursorOvl, kLoLMapCursorOvlProvider },
- { kLoLMapStringId, kLoLMapStringIdProvider },
- { kLoLSpellbookAnim, kLoLSpellbookAnimProvider },
- { kLoLSpellbookCoords, kLoLSpellbookCoordsProvider },
- { kLoLHealShapeFrames, kLoLHealShapeFramesProvider },
- { kLoLLightningDefs, kLoLLightningDefsProvider },
- { kLoLFireballCoords, kLoLFireballCoordsProvider },
- { kLoLCredits, kLoLCreditsProvider },
- { kLoLHistory, kLoLHistoryProvider },
- { -1, NULL }
-};
-
-} // end of anonymous namespace
-
-ExtractEntryList getProvidersForId(int id) {
- ExtractEntryList list;
-
- for (const ExtractEntry *p = extractProviders; p->id != -1; ++p) {
- if (p->id == id) {
- for (const ExtractEntrySearchData *d = p->providers; d->hint.size != 0; ++d)
- list.push_back(*d);
- }
- }
-
- return list;
-}
diff --git a/devtools/create_kyradat/types.cpp b/devtools/create_kyradat/types.cpp
new file mode 100644
index 0000000000..1f8430ab7f
--- /dev/null
+++ b/devtools/create_kyradat/types.cpp
@@ -0,0 +1,663 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+// Disable symbol overrides so that we can use system headers.
+#define FORBIDDEN_SYMBOL_ALLOW_ALL
+
+#include "types.h"
+#include "pak.h"
+
+#include "common/endian.h"
+
+static void writeStringList(PAKFile &out, const char *filename, const StringListProvider *provider);
+static void writeRawData(PAKFile &out, const char *filename, const ByteProvider *provider);
+static void writeRoomList(PAKFile &out, const char *filename, const RoomProvider *provider);
+static void writeShapeList(PAKFile &out, const char *filename, const ShapeProvider *provider);
+static void writeAmigaSfxTable(PAKFile &out, const char *filename, const AmigaSfxTableProvider *provider);
+static void writeK2SeqData(PAKFile &out, const char *filename, const HoFSequenceProvider *provider);
+static void writeK2SeqItemAnimData(PAKFile &out, const char *filename, const HoFSeqItemAnimDataProvider *provider);
+static void writeK2ItemAnimDefinition(PAKFile &out, const char *filename, const ItemAnimDefinitionProvider *provider);
+static void writeLoLCharData(PAKFile &out, const char *filename, const LoLCharacterProvider *provider);
+static void writeLoLSpellData(PAKFile &out, const char *filename, const SpellPropertyProvider *provider);
+static void writeLoLCompassData(PAKFile &out, const char *filename, const CompassDefProvider *provider);
+static void writeLoLFlightShpData(PAKFile &out, const char *filename, const FlyingObjectShapeProvider *provider);
+static void writeLoLButtonData(PAKFile &out, const char *filename, const LoLButtonDefProvider *provider);
+static void writeRawDataBe16(PAKFile &out, const char *filename, const Uint16Provider *provider);
+static void writeRawDataBe32(PAKFile &out, const char *filename, const Uint32Provider *provider);
+static void writeEoB2SequenceData(PAKFile &out, const char *filename, const DarkMoonAnimCommandProvider *provider);
+static void writeEoB2ShapeData(PAKFile &out, const char *filename, const DarkMoonShapeDefProvider *provider);
+static void writeEoBNpcData(PAKFile &out, const char *filename, const EoBCharacterProvider *provider);
+
+void writeResource(PAKFile &out, const char *filename, ResTypes type, const void *provider) {
+ switch (type) {
+ case kStringList:
+ writeStringList(out, filename, (const StringListProvider *)provider);
+ break;
+
+ case kRawData:
+ writeRawData(out, filename, (const ByteProvider *)provider);
+ break;
+
+ case kRoomList:
+ writeRoomList(out, filename, (const RoomProvider *)provider);
+ break;
+
+ case kShapeList:
+ writeShapeList(out, filename, (const ShapeProvider *)provider);
+ break;
+
+ case kAmigaSfxTable:
+ writeAmigaSfxTable(out, filename, (const AmigaSfxTableProvider *)provider);
+ break;
+
+ case k2SeqData:
+ writeK2SeqData(out, filename, (const HoFSequenceProvider *)provider);
+ break;
+
+ case k2SeqItemAnimData:
+ writeK2SeqItemAnimData(out, filename, (const HoFSeqItemAnimDataProvider *)provider);
+ break;
+
+ case k2ItemAnimDefinition:
+ writeK2ItemAnimDefinition(out, filename, (const ItemAnimDefinitionProvider *)provider);
+ break;
+
+ case kLoLCharData:
+ writeLoLCharData(out, filename, (const LoLCharacterProvider *)provider);
+ break;
+
+ case kLoLSpellData:
+ writeLoLSpellData(out, filename, (const SpellPropertyProvider *)provider);
+ break;
+
+ case kLoLCompassData:
+ writeLoLCompassData(out, filename, (const CompassDefProvider *)provider);
+ break;
+
+ case kLoLFlightShpData:
+ writeLoLFlightShpData(out, filename, (const FlyingObjectShapeProvider *)provider);
+ break;
+
+ case kLoLButtonData:
+ writeLoLButtonData(out, filename, (const LoLButtonDefProvider *)provider);
+ break;
+
+ case kRawDataBe16:
+ writeRawDataBe16(out, filename, (const Uint16Provider *)provider);
+ break;
+
+ case kRawDataBe32:
+ writeRawDataBe32(out, filename, (const Uint32Provider *)provider);
+ break;
+
+ case kEoB2SequenceData:
+ writeEoB2SequenceData(out, filename, (const DarkMoonAnimCommandProvider *)provider);
+ break;
+
+ case kEoB2ShapeData:
+ writeEoB2ShapeData(out, filename, (const DarkMoonShapeDefProvider *)provider);
+ break;
+
+ case kEoBNpcData:
+ writeEoBNpcData(out, filename, (const EoBCharacterProvider *)provider);
+ break;
+ }
+}
+
+static void writeStringList(PAKFile &out, const char *filename, const StringListProvider *provider) {
+ // Step 1: Calculate size
+ size_t size = 4;
+ for (uint i = 0; i < provider->numEntries; ++i) {
+ size += strlen(provider->data[i]) + 1;
+ }
+
+ // Step 2: Write data
+ byte *const output = new byte[size];
+
+ byte *dst = output;
+ WRITE_BE_UINT32(dst, provider->numEntries); dst += 4;
+ for (uint i = 0; i < provider->numEntries; ++i) {
+ size_t num = strlen(provider->data[i]) + 1;
+ memcpy(dst, provider->data[i], num); dst += num;
+ }
+
+ // Step 3: Add data to output
+ out.addFile(filename, output, size);
+}
+
+static void writeRawData(PAKFile &out, const char *filename, const ByteProvider *provider) {
+ // Step 1: Calculate size
+ size_t size = provider->numEntries;
+
+ // Step 2: Write data
+ byte *const output = new byte[size];
+ memcpy(output, provider->data, size);
+
+ // Step 3: Add data to output
+ out.addFile(filename, output, size);
+}
+
+static void writeRoomList(PAKFile &out, const char *filename, const RoomProvider *provider) {
+ // Step 1: Calculate size
+ size_t size = 4 + 9 * provider->numEntries;
+
+ // Step 2: Write data
+ byte *const output = new byte[size];
+
+ byte *dst = output;
+ WRITE_BE_UINT32(dst, provider->numEntries); dst += 4;
+ for (uint i = 0; i < provider->numEntries; ++i) {
+ const Room &room = provider->data[i];
+
+ *dst = room.index; dst += 1;
+ WRITE_BE_UINT16(dst, room.north); dst += 2;
+ WRITE_BE_UINT16(dst, room.east); dst += 2;
+ WRITE_BE_UINT16(dst, room.south); dst += 2;
+ WRITE_BE_UINT16(dst, room.west); dst += 2;
+ }
+
+ // Step 3: Add data to output
+ out.addFile(filename, output, size);
+}
+
+static void writeShapeList(PAKFile &out, const char *filename, const ShapeProvider *provider) {
+ // Step 1: Calculate size
+ size_t size = 4 + 7 * provider->numEntries;
+
+ // Step 2: Write data
+ byte *const output = new byte[size];
+
+ byte *dst = output;
+ WRITE_BE_UINT32(dst, provider->numEntries); dst += 4;
+ for (uint i = 0; i < provider->numEntries; ++i) {
+ const Shape &shape = provider->data[i];
+
+ *dst = shape.imageIndex; dst += 1;
+ *dst = shape.x; dst += 1;
+ *dst = shape.y; dst += 1;
+ *dst = shape.w; dst += 1;
+ *dst = shape.h; dst += 1;
+ *dst = shape.xOffset; dst += 1;
+ *dst = shape.yOffset; dst += 1;
+ }
+
+ // Step 3: Add data to output
+ out.addFile(filename, output, size);
+}
+
+static void writeAmigaSfxTable(PAKFile &out, const char *filename, const AmigaSfxTableProvider *provider) {
+ // Step 1: Calculate size
+ size_t size = 4 + 6 * provider->numEntries;
+
+ // Step 2: Write data
+ byte *const output = new byte[size];
+
+ byte *dst = output;
+ WRITE_BE_UINT32(dst, provider->numEntries); dst += 4;
+ for (uint i = 0; i < provider->numEntries; ++i) {
+ const AmigaSfxTable &entry = provider->data[i];
+
+ *dst = entry.note; dst += 1;
+ *dst = entry.patch; dst += 1;
+ WRITE_BE_UINT16(dst, entry.duration); dst += 2;
+ *dst = entry.volume; dst += 1;
+ *dst = entry.pan; dst += 1;
+ }
+
+ // Step 3: Add data to output
+ out.addFile(filename, output, size);
+}
+
+static void writeK2SeqData(PAKFile &out, const char *filename, const HoFSequenceProvider *provider) {
+ // Step 1: Calculate size
+ size_t size = 4 + (2 + 48) * provider->numSequences + (2 + 32) * provider->numNestedSequences;
+
+ const size_t startSequenceOffset = 4 + 2 * provider->numSequences + 2 * provider->numNestedSequences;
+ const size_t startNestedSequences = startSequenceOffset + 48 * provider->numSequences;
+ const size_t startControlOffset = size;
+
+ for (uint i = 0; i < provider->numNestedSequences; ++i) {
+ if (provider->nestedSequences[i].numControls) {
+ size += 1 + 4 * provider->nestedSequences[i].numControls;
+ }
+ }
+
+ // Step 2: Write data
+ byte *const output = new byte[size];
+
+ byte *offsetTable = output;
+ byte *sequenceDst = output + startSequenceOffset;
+ byte *nestedDst = output + startNestedSequences;
+ byte *controlDst = output + startControlOffset;
+
+ // First write all sequences
+ WRITE_BE_UINT16(offsetTable, provider->numSequences); offsetTable += 2;
+ for (uint i = 0; i < provider->numSequences; ++i) {
+ const HoFSequence &entry = provider->sequences[i];
+
+ // Write location to the offset table
+ WRITE_BE_UINT16(offsetTable, sequenceDst - output); offsetTable += 2;
+
+ // Write actual sequence data
+ WRITE_BE_UINT16(sequenceDst, entry.flags); sequenceDst += 2;
+ memcpy(sequenceDst, entry.wsaFile, 14); sequenceDst += 14;
+ memcpy(sequenceDst, entry.cpsFile, 14); sequenceDst += 14;
+ *sequenceDst = entry.fadeInTransitionType; sequenceDst += 1;
+ *sequenceDst = entry.fadeOutTransitionType; sequenceDst += 1;
+ WRITE_BE_UINT16(sequenceDst, entry.stringIndex1); sequenceDst += 2;
+ WRITE_BE_UINT16(sequenceDst, entry.stringIndex2); sequenceDst += 2;
+ WRITE_BE_UINT16(sequenceDst, entry.startFrame); sequenceDst += 2;
+ WRITE_BE_UINT16(sequenceDst, entry.numFrames); sequenceDst += 2;
+ WRITE_BE_UINT16(sequenceDst, entry.duration); sequenceDst += 2;
+ WRITE_BE_UINT16(sequenceDst, entry.xPos); sequenceDst += 2;
+ WRITE_BE_UINT16(sequenceDst, entry.yPos); sequenceDst += 2;
+ WRITE_BE_UINT16(sequenceDst, entry.timeout); sequenceDst += 2;
+ }
+
+ assert(sequenceDst == nestedDst);
+
+ // Then write all nested sequences
+ WRITE_BE_UINT16(offsetTable, provider->numNestedSequences); offsetTable += 2;
+ for (uint i = 0; i < provider->numNestedSequences; ++i) {
+ const HoFNestedSequence &entry = provider->nestedSequences[i];
+
+ // Write location to the offset table
+ WRITE_BE_UINT16(offsetTable, nestedDst - output); offsetTable += 2;
+
+ // Write the nested sequence data
+ WRITE_BE_UINT16(nestedDst, entry.flags); nestedDst += 2;
+ memcpy(nestedDst, entry.wsaFile, 14); nestedDst += 14;
+ WRITE_BE_UINT16(nestedDst, entry.startFrame); nestedDst += 2;
+ WRITE_BE_UINT16(nestedDst, entry.endFrame); nestedDst += 2;
+ WRITE_BE_UINT16(nestedDst, entry.frameDelay); nestedDst += 2;
+ WRITE_BE_UINT16(nestedDst, entry.x); nestedDst += 2;
+ WRITE_BE_UINT16(nestedDst, entry.y); nestedDst += 2;
+
+ if (entry.numControls) {
+ WRITE_BE_UINT16(nestedDst, controlDst - output); nestedDst += 2;
+
+ *controlDst = entry.numControls; controlDst += 1;
+ for (uint j = 0; j < entry.numControls; ++j) {
+ WRITE_BE_UINT16(controlDst, entry.wsaControl[j].index); controlDst += 2;
+ WRITE_BE_UINT16(controlDst, entry.wsaControl[j].delay); controlDst += 2;
+ }
+ } else {
+ WRITE_BE_UINT16(nestedDst, 0); nestedDst += 2;
+ }
+
+ WRITE_BE_UINT16(nestedDst, entry.fadeInTransitionType); nestedDst += 2;
+ WRITE_BE_UINT16(nestedDst, entry.fadeOutTransitionType); nestedDst += 2;
+ }
+
+ assert(offsetTable == output + startSequenceOffset);
+ assert(nestedDst == output + startControlOffset);
+ assert(controlDst == output + size);
+
+ // Step 3: Add data to output
+ out.addFile(filename, output, size);
+}
+
+static void writeK2SeqItemAnimData(PAKFile &out, const char *filename, const HoFSeqItemAnimDataProvider *provider) {
+ // Step 1: Calculate size
+ size_t size = 1 + 44 * provider->numEntries;
+
+ // Step 2: Write data
+ byte *const output = new byte[size];
+
+ byte *dst = output;
+ *dst = provider->numEntries; dst += 1;
+ for (uint i = 0; i < provider->numEntries; ++i) {
+ const HoFSeqItemAnimData &entry = provider->data[i];
+
+ WRITE_BE_UINT16(dst, entry.itemIndex); dst += 2;
+ WRITE_BE_UINT16(dst, entry.y); dst += 2;
+
+ for (uint j = 0; j < 20; ++j) {
+ WRITE_BE_UINT16(dst, entry.frames[j]); dst += 2;
+ }
+ }
+
+ // Step 3: Add data to output
+ out.addFile(filename, output, size);
+}
+
+static void writeK2ItemAnimDefinition(PAKFile &out, const char *filename, const ItemAnimDefinitionProvider *provider) {
+ // Step 1: Calculate size
+ size_t size = 1 + 3 * provider->numEntries;
+
+ for (uint i = 0; i < provider->numEntries; ++i) {
+ size += provider->data[i].numFrames * 4;
+ }
+
+ // Step 2: Write data
+ byte *const output = new byte[size];
+
+ byte *dst = output;
+ *dst = provider->numEntries; dst += 1;
+ for (uint i = 0; i < provider->numEntries; ++i) {
+ const ItemAnimDefinition &entry = provider->data[i];
+
+ WRITE_BE_UINT16(dst, entry.itemIndex); dst += 2;
+ *dst = entry.numFrames; dst += 1;
+
+ for (uint j = 0; j < entry.numFrames; ++j) {
+ WRITE_BE_UINT16(dst, entry.frames[j].index); dst += 2;
+ WRITE_BE_UINT16(dst, entry.frames[j].delay); dst += 2;
+ }
+ }
+
+ // Step 3: Add data to output
+ out.addFile(filename, output, size);
+}
+
+static void writeLoLCharData(PAKFile &out, const char *filename, const LoLCharacterProvider *provider) {
+ // Step 1: Calculate size
+ size_t size = 130 * provider->numEntries;
+
+ // Step 2: Write data
+ byte *const output = new byte[size];
+
+ byte *dst = output;
+ for (uint i = 0; i < provider->numEntries; ++i) {
+ const LoLCharacter &entry = provider->data[i];
+
+ WRITE_LE_UINT16(dst, entry.flags); dst += 2;
+ memcpy(dst, entry.name, 11); dst += 11;
+ *dst = entry.raceClassSex; dst += 1;
+ WRITE_LE_UINT16(dst, entry.id); dst += 2;
+ *dst = entry.curFaceFrame; dst += 1;
+ *dst = entry.tempFaceFrame; dst += 1;
+ *dst = entry.screamSfx; dst += 1;
+ WRITE_BE_UINT32(dst, 0xDEADBEEF); dst += 4;
+ for (uint j = 0; j < 8; ++j) {
+ WRITE_LE_UINT16(dst, entry.itemsMight[j]); dst += 2;
+ }
+ for (uint j = 0; j < 8; ++j) {
+ WRITE_LE_UINT16(dst, entry.protectionAgainstItems[j]); dst += 2;
+ }
+ WRITE_LE_UINT16(dst, entry.itemProtection); dst += 2;
+ WRITE_LE_UINT16(dst, entry.hitPointsCur); dst += 2;
+ WRITE_LE_UINT16(dst, entry.hitPointsMax); dst += 2;
+ WRITE_LE_UINT16(dst, entry.magicPointsCur); dst += 2;
+ WRITE_LE_UINT16(dst, entry.magicPointsMax); dst += 2;
+ *dst = entry.field_41; dst += 1;
+ WRITE_LE_UINT16(dst, entry.damageSuffered); dst += 2;
+ WRITE_LE_UINT16(dst, entry.weaponHit); dst += 2;
+ WRITE_LE_UINT16(dst, entry.totalMightModifier); dst += 2;
+ WRITE_LE_UINT16(dst, entry.totalProtectionModifier); dst += 2;
+ WRITE_LE_UINT16(dst, entry.might); dst += 2;
+ WRITE_LE_UINT16(dst, entry.protection); dst += 2;
+ WRITE_LE_UINT16(dst, entry.nextAnimUpdateCountdown); dst += 2;
+ for (uint j = 0; j < 11; ++j) {
+ WRITE_LE_UINT16(dst, entry.items[j]); dst += 2;
+ }
+ for (uint j = 0; j < 3; ++j) {
+ *dst = entry.skillLevels[j]; dst += 1;
+ }
+ for (uint j = 0; j < 3; ++j) {
+ *dst = entry.skillModifiers[j]; dst += 1;
+ }
+ for (uint j = 0; j < 3; ++j) {
+ WRITE_LE_UINT32(dst, entry.experiencePts[j]); dst += 4;
+ }
+ for (uint j = 0; j < 5; ++j) {
+ *dst = entry.characterUpdateEvents[j]; dst += 1;
+ }
+ for (uint j = 0; j < 5; ++j) {
+ *dst = entry.characterUpdateDelay[j]; dst += 1;
+ }
+ }
+
+ // Step 3: Add data to output
+ out.addFile(filename, output, size);
+}
+
+static void writeLoLSpellData(PAKFile &out, const char *filename, const SpellPropertyProvider *provider) {
+ // Step 1: Calculate size
+ size_t size = 28 * provider->numEntries;
+
+ // Step 2: Write data
+ byte *const output = new byte[size];
+
+ byte *dst = output;
+ for (uint i = 0; i < provider->numEntries; ++i) {
+ const SpellProperty &entry = provider->data[i];
+
+ WRITE_LE_UINT16(dst, entry.spellNameCode); dst += 2;
+ for (uint j = 0; j < 4; ++j) {
+ WRITE_LE_UINT16(dst, entry.mpRequired[j]); dst += 2;
+ }
+ WRITE_LE_UINT16(dst, entry.field_a); dst += 2;
+ WRITE_LE_UINT16(dst, entry.field_c); dst += 2;
+ for (uint j = 0; j < 4; ++j) {
+ WRITE_LE_UINT16(dst, entry.hpRequired[j]); dst += 2;
+ }
+ WRITE_LE_UINT16(dst, entry.field_16); dst += 2;
+ WRITE_LE_UINT16(dst, entry.field_18); dst += 2;
+ WRITE_LE_UINT16(dst, entry.flags); dst += 2;
+ }
+
+ // Step 3: Add data to output
+ out.addFile(filename, output, size);
+}
+
+static void writeLoLCompassData(PAKFile &out, const char *filename, const CompassDefProvider *provider) {
+ // Step 1: Calculate size
+ size_t size = 4 * provider->numEntries;
+
+ // Step 2: Write data
+ byte *const output = new byte[size];
+
+ byte *dst = output;
+ for (uint i = 0; i < provider->numEntries; ++i) {
+ const CompassDef &entry = provider->data[i];
+
+ *dst = entry.shapeIndex; dst += 1;
+ *dst = entry.x; dst += 1;
+ *dst = entry.y; dst += 1;
+ *dst = entry.flags; dst += 1;
+ }
+
+ // Step 3: Add data to output
+ out.addFile(filename, output, size);
+}
+
+static void writeLoLFlightShpData(PAKFile &out, const char *filename, const FlyingObjectShapeProvider *provider) {
+ // Step 1: Calculate size
+ size_t size = 5 * provider->numEntries;
+
+ // Step 2: Write data
+ byte *const output = new byte[size];
+
+ byte *dst = output;
+ for (uint i = 0; i < provider->numEntries; ++i) {
+ const FlyingObjectShape &entry = provider->data[i];
+
+ *dst = entry.shapeFront; dst += 1;
+ *dst = entry.shapeBack; dst += 1;
+ *dst = entry.shapeLeft; dst += 1;
+ *dst = entry.drawFlags; dst += 1;
+ *dst = entry.flipFlags; dst += 1;
+ }
+
+ // Step 3: Add data to output
+ out.addFile(filename, output, size);
+}
+
+static void writeLoLButtonData(PAKFile &out, const char *filename, const LoLButtonDefProvider *provider) {
+ // Step 1: Calculate size
+ size_t size = 18 * provider->numEntries;
+
+ // Step 2: Write data
+ byte *const output = new byte[size];
+
+ byte *dst = output;
+ for (uint i = 0; i < provider->numEntries; ++i) {
+ const LoLButtonDef &entry = provider->data[i];
+
+ WRITE_BE_UINT16(dst, entry.buttonFlags); dst += 2;
+ WRITE_BE_UINT16(dst, entry.keyCode); dst += 2;
+ WRITE_BE_UINT16(dst, entry.keyCode2); dst += 2;
+ WRITE_BE_UINT16(dst, entry.x); dst += 2;
+ WRITE_BE_UINT16(dst, entry.y); dst += 2;
+ WRITE_BE_UINT16(dst, entry.w); dst += 2;
+ WRITE_BE_UINT16(dst, entry.h); dst += 2;
+ WRITE_BE_UINT16(dst, entry.index); dst += 2;
+ WRITE_BE_UINT16(dst, entry.screenDim); dst += 2;
+ }
+
+ // Step 3: Add data to output
+ out.addFile(filename, output, size);
+}
+
+static void writeRawDataBe16(PAKFile &out, const char *filename, const Uint16Provider *provider) {
+ // Step 1: Calculate size
+ size_t size = 2 * provider->numEntries;
+
+ // Step 2: Write data
+ byte *const output = new byte[size];
+
+ byte *dst = output;
+ for (uint i = 0; i < provider->numEntries; ++i) {
+ WRITE_BE_UINT16(dst, provider->data[i]); dst += 2;
+ }
+
+ // Step 3: Add data to output
+ out.addFile(filename, output, size);
+}
+
+static void writeRawDataBe32(PAKFile &out, const char *filename, const Uint32Provider *provider) {
+ // Step 1: Calculate size
+ size_t size = 4 * provider->numEntries;
+
+ // Step 2: Write data
+ byte *const output = new byte[size];
+
+ byte *dst = output;
+ for (uint i = 0; i < provider->numEntries; ++i) {
+ WRITE_BE_UINT32(dst, provider->data[i]); dst += 4;
+ }
+
+ // Step 3: Add data to output
+ out.addFile(filename, output, size);
+}
+
+static void writeEoB2SequenceData(PAKFile &out, const char *filename, const DarkMoonAnimCommandProvider *provider) {
+ // Step 1: Calculate size
+ size_t size = 11 * provider->numEntries;
+
+ // Step 2: Write data
+ byte *const output = new byte[size];
+
+ byte *dst = output;
+ for (uint i = 0; i < provider->numEntries; ++i) {
+ const DarkMoonAnimCommand &entry = provider->data[i];
+
+ *dst = entry.command; dst += 1;
+ *dst = entry.obj; dst += 1;
+ WRITE_BE_UINT16(dst, entry.x1); dst += 2;
+ *dst = entry.y1; dst += 1;
+ *dst = entry.delay; dst += 1;
+ *dst = entry.pal; dst += 1;
+ *dst = entry.x2; dst += 1;
+ *dst = entry.y2; dst += 1;
+ *dst = entry.w; dst += 1;
+ *dst = entry.h; dst += 1;
+ }
+
+ // Step 3: Add data to output
+ out.addFile(filename, output, size);
+}
+
+static void writeEoB2ShapeData(PAKFile &out, const char *filename, const DarkMoonShapeDefProvider *provider) {
+ // Step 1: Calculate size
+ size_t size = 6 * provider->numEntries;
+
+ // Step 2: Write data
+ byte *const output = new byte[size];
+
+ byte *dst = output;
+ for (uint i = 0; i < provider->numEntries; ++i) {
+ const DarkMoonShapeDef &entry = provider->data[i];
+
+ WRITE_BE_UINT16(dst, entry.index); dst += 2;
+ *dst = entry.x; dst += 1;
+ *dst = entry.y; dst += 1;
+ *dst = entry.w; dst += 1;
+ *dst = entry.h; dst += 1;
+ }
+
+ // Step 3: Add data to output
+ out.addFile(filename, output, size);
+}
+
+static void writeEoBNpcData(PAKFile &out, const char *filename, const EoBCharacterProvider *provider) {
+ // Step 1: Calculate size
+ size_t size = 2 + 111 * provider->numEntries;
+
+ // Step 2: Write data
+ byte *const output = new byte[size];
+
+ byte *dst = output;
+ WRITE_BE_UINT16(dst, provider->numEntries); dst += 2;
+ for (uint i = 0; i < provider->numEntries; ++i) {
+ const EoBCharacter &entry = provider->data[i];
+
+ *dst = entry.id; dst += 1;
+ *dst = entry.flags; dst += 1;
+ memcpy(dst, entry.name, 11); dst += 11;
+ *dst = entry.strengthCur; dst += 1;
+ *dst = entry.strengthMax; dst += 1;
+ *dst = entry.strengthExtCur; dst += 1;
+ *dst = entry.strengthExtMax; dst += 1;
+ *dst = entry.intelligenceCur; dst += 1;
+ *dst = entry.intelligenceMax; dst += 1;
+ *dst = entry.wisdomCur; dst += 1;
+ *dst = entry.wisdomMax; dst += 1;
+ *dst = entry.dexterityCur; dst += 1;
+ *dst = entry.dexterityMax; dst += 1;
+ *dst = entry.constitutionCur; dst += 1;
+ *dst = entry.constitutionMax; dst += 1;
+ *dst = entry.charismaCur; dst += 1;
+ *dst = entry.charismaMax; dst += 1;
+ WRITE_BE_UINT16(dst, entry.hitPointsCur); dst += 2;
+ WRITE_BE_UINT16(dst, entry.hitPointsMax); dst += 2;
+ *dst = entry.armorClass; dst += 1;
+ *dst = entry.disabledSlots; dst += 1;
+ *dst = entry.raceSex; dst += 1;
+ *dst = entry.cClass; dst += 1;
+ *dst = entry.alignment; dst += 1;
+ *dst = entry.portrait; dst += 1;
+ *dst = entry.food; dst += 1;
+ memcpy(dst, entry.level, 3); dst += 3;
+ WRITE_BE_UINT32(dst, entry.experience[0]); dst += 4;
+ WRITE_BE_UINT32(dst, entry.experience[1]); dst += 4;
+ WRITE_BE_UINT32(dst, entry.experience[2]); dst += 4;
+ WRITE_BE_UINT32(dst, entry.mageSpellsAvailableFlags); dst += 4;
+ for (uint j = 0; j < 27; ++j) {
+ WRITE_BE_UINT16(dst, entry.inventory[j]); dst += 2;
+ }
+ }
+
+ // Step 3: Add data to output
+ out.addFile(filename, output, size);
+}
diff --git a/devtools/create_kyradat/types.h b/devtools/create_kyradat/types.h
new file mode 100644
index 0000000000..bb97948a25
--- /dev/null
+++ b/devtools/create_kyradat/types.h
@@ -0,0 +1,238 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef CREATE_KYRADAT_TYPES_H
+#define CREATE_KYRADAT_TYPES_H
+
+#include "create_kyradat.h"
+
+struct Room {
+ byte index;
+ uint16 north, east, south, west;
+};
+
+struct Shape {
+ byte imageIndex;
+ byte x, y, w, h;
+ int8 xOffset, yOffset;
+};
+
+struct AmigaSfxTable {
+ byte note;
+ byte patch;
+ uint16 duration;
+ byte volume;
+ byte pan;
+};
+
+struct HoFSequence {
+ uint16 flags;
+ char wsaFile[14];
+ char cpsFile[14];
+ byte fadeInTransitionType;
+ byte fadeOutTransitionType;
+ uint16 stringIndex1;
+ uint16 stringIndex2;
+ uint16 startFrame;
+ uint16 numFrames;
+ uint16 duration;
+ uint16 xPos;
+ uint16 yPos;
+ uint16 timeout;
+};
+
+struct FrameControl {
+ uint16 index;
+ uint16 delay;
+};
+
+struct HoFNestedSequence {
+ uint16 flags;
+ char wsaFile[14];
+ uint16 startFrame;
+ uint16 endFrame;
+ uint16 frameDelay;
+ uint16 x;
+ uint16 y;
+ uint16 numControls;
+ const FrameControl *wsaControl;
+ uint16 fadeInTransitionType;
+ uint16 fadeOutTransitionType;
+};
+
+struct HoFSeqItemAnimData {
+ int16 itemIndex;
+ uint16 y;
+ uint16 frames[20];
+};
+
+struct ItemAnimDefinition {
+ int16 itemIndex;
+ byte numFrames;
+ const FrameControl *frames;
+};
+
+struct LoLCharacter {
+ uint16 flags;
+ char name[11];
+ byte raceClassSex;
+ int16 id;
+ byte curFaceFrame;
+ byte tempFaceFrame;
+ byte screamSfx;
+ /*uint32 unused;*/
+ uint16 itemsMight[8];
+ uint16 protectionAgainstItems[8];
+ uint16 itemProtection;
+ int16 hitPointsCur;
+ uint16 hitPointsMax;
+ int16 magicPointsCur;
+ uint16 magicPointsMax;
+ byte field_41;
+ uint16 damageSuffered;
+ uint16 weaponHit;
+ uint16 totalMightModifier;
+ uint16 totalProtectionModifier;
+ uint16 might;
+ uint16 protection;
+ int16 nextAnimUpdateCountdown;
+ uint16 items[11];
+ byte skillLevels[3];
+ byte skillModifiers[3];
+ uint32 experiencePts[3];
+ byte characterUpdateEvents[5];
+ byte characterUpdateDelay[5];
+};
+
+struct SpellProperty {
+ uint16 spellNameCode;
+ uint16 mpRequired[4];
+ uint16 field_a;
+ uint16 field_c;
+ uint16 hpRequired[4];
+ uint16 field_16;
+ uint16 field_18;
+ uint16 flags;
+};
+
+struct CompassDef {
+ byte shapeIndex;
+ int8 x, y;
+ byte flags;
+};
+
+struct FlyingObjectShape {
+ byte shapeFront;
+ byte shapeBack;
+ byte shapeLeft;
+ byte drawFlags;
+ byte flipFlags;
+};
+
+struct LoLButtonDef {
+ uint16 buttonFlags;
+ uint16 keyCode;
+ uint16 keyCode2;
+ int16 x, y;
+ uint16 w, h;
+ uint16 index;
+ uint16 screenDim;
+};
+
+struct DarkMoonAnimCommand {
+ byte command;
+ byte obj;
+ int16 x1;
+ byte y1;
+ byte delay;
+ byte pal;
+ byte x2, y2;
+ byte w, h;
+};
+
+struct DarkMoonShapeDef {
+ int16 index;
+ byte x, y, w, h;
+};
+
+struct EoBCharacter {
+ byte id;
+ byte flags;
+ char name[11];
+ int8 strengthCur, strengthMax;
+ int8 strengthExtCur, strengthExtMax;
+ int8 intelligenceCur, intelligenceMax;
+ int8 wisdomCur, wisdomMax;
+ int8 dexterityCur, dexterityMax;
+ int8 constitutionCur, constitutionMax;
+ int8 charismaCur, charismaMax;
+ int16 hitPointsCur, hitPointsMax;
+ int8 armorClass;
+ byte disabledSlots;
+ byte raceSex;
+ byte cClass;
+ byte alignment;
+ int8 portrait;
+ byte food;
+ byte level[3];
+ uint32 experience[3];
+ uint32 mageSpellsAvailableFlags;
+ uint16 inventory[27];
+};
+
+template<typename Type>
+struct ArrayProvider {
+ uint numEntries;
+ const Type *data;
+};
+
+typedef ArrayProvider<const char *> StringListProvider;
+typedef ArrayProvider<byte> ByteProvider;
+typedef ArrayProvider<Room> RoomProvider;
+typedef ArrayProvider<Shape> ShapeProvider;
+typedef ArrayProvider<AmigaSfxTable> AmigaSfxTableProvider;
+
+struct HoFSequenceProvider {
+ uint numSequences;
+ const HoFSequence *sequences;
+
+ uint numNestedSequences;
+ const HoFNestedSequence *nestedSequences;
+};
+
+typedef ArrayProvider<HoFSeqItemAnimData> HoFSeqItemAnimDataProvider;
+typedef ArrayProvider<ItemAnimDefinition> ItemAnimDefinitionProvider;
+typedef ArrayProvider<LoLCharacter> LoLCharacterProvider;
+typedef ArrayProvider<SpellProperty> SpellPropertyProvider;
+typedef ArrayProvider<CompassDef> CompassDefProvider;
+typedef ArrayProvider<FlyingObjectShape> FlyingObjectShapeProvider;
+typedef ArrayProvider<LoLButtonDef> LoLButtonDefProvider;
+typedef ArrayProvider<uint16> Uint16Provider;
+typedef ArrayProvider<uint32> Uint32Provider;
+typedef ArrayProvider<DarkMoonAnimCommand> DarkMoonAnimCommandProvider;
+typedef ArrayProvider<DarkMoonShapeDef> DarkMoonShapeDefProvider;
+typedef ArrayProvider<EoBCharacter> EoBCharacterProvider;
+
+class PAKFile;
+void writeResource(PAKFile &out, const char *filename, ResTypes type, const void *provider);
+
+#endif
diff --git a/devtools/create_lure/create_lure_dat.cpp b/devtools/create_lure/create_lure_dat.cpp
index eca18b3d2f..0ac07c460d 100644
--- a/devtools/create_lure/create_lure_dat.cpp
+++ b/devtools/create_lure/create_lure_dat.cpp
@@ -1348,7 +1348,7 @@ const char *germanTextStrings[NUM_TEXT_ENTRIES] = {
"Abbrechen", "Schneller Text\x8b",
"Langsamer Text\x8b", "Sound an", "Sound aus", "(nichts)", " nach ", " an ", " f\x8cr ",
"und dann", "Schlu\x92", "Sicher (j/n)?",
- "Du tr\x8dgst", "niets", "und du hast ", "silberm\x8cnzen", "silberm\x8cnzen"
+ "Du tr\x8dgst ", "nichts.", "und du hast ", "silberm\x8cnzen", "silberm\x8cnzen",
"keinen ", "keine ", "kein ", "der ", "die ", "das ", "den ", "einen ", "eine ", "ein "
};
@@ -1359,7 +1359,7 @@ const char *spanishTextStrings[NUM_TEXT_ENTRIES] = {
"Cr\x7f" "ditos", "Reiniciar", "Salvar juego", "Recuperar jue", "Abandonar", "Texto r\x98pido\x8b",
"Texto lento \x8b", "Sonido activado ", "Sonido desactivado ", "(nada)", " con ", " a ", " con ",
"y luego", "eso es todo", "\x94" "Est\x98s seguro? (S/N)",
- "Llevas ", "nada", "y tienes ", "moneda", "monedas"
+ "Llevas ", "nada", "y tienes ", "moneda", "monedas",
"el ", "la ", "los ", "las ", "este ", "esta ", "estos ", "estas ", NULL, NULL
};
diff --git a/dists/engine-data/kyra.dat b/dists/engine-data/kyra.dat
index 305c7e665c..37b3b0ef0b 100644
--- a/dists/engine-data/kyra.dat
+++ b/dists/engine-data/kyra.dat
Binary files differ
diff --git a/dists/engine-data/lure.dat b/dists/engine-data/lure.dat
index 4e0d2894af..8ca69224da 100644
--- a/dists/engine-data/lure.dat
+++ b/dists/engine-data/lure.dat
Binary files differ
diff --git a/doc/cz/PrectiMe b/doc/cz/PrectiMe
index 390d20ab1d..0f475b9539 100644
--- a/doc/cz/PrectiMe
+++ b/doc/cz/PrectiMe
@@ -1,1688 +1,1750 @@
-PŘEČTIMĚ ScummVM
-------------------------------------------------------------------------
-
-Pro více informací, seznamy kompatibility, podrobnosti o dotacích, nejnovější verze,
-novinky o vývoji a dalťí, prosím navťtivte domovskou strånku ScummVM na: http://www.scummvm.org/
-
-
-Obsah:
-------
-1.0) Úvod
- * 1.1 O ScummVM
- * 1.2 RychlĂ˝ nĂĄvod
-2.0) Kontakt
- * 2.1 HlĂĄĹĄenĂ­ chyb
-3.0) PodporovanĂŠ hry
- * 3.1 Ochrana proti kopĂ­rovĂĄnĂ­
- * 3.2 PoznĂĄmky ke hrĂĄm Commodore64
- * 3.3 PoznĂĄmky k Maniac Mansion NES
- * 3.4 PoznĂĄmky ke hrĂĄm Macintosh
- * 3.5 PoznĂĄmky ke hrĂĄm Multi-CD
- * 3.6 PoznĂĄmky k The Curse of Monkey Island
- * 3.7 PoznĂĄmky ke hrĂĄm Broken Sword
- * 3.8 PoznĂĄmky k Beneath a Steel Sky
- * 3.9 PoznĂĄmky k Flight of the Amazon Queen
- * 3.10 PoznĂĄmky ke Gobliiins
- * 3.11 PoznĂĄmky k Inherit the Earth: Quest for the Orb
- * 3.12 PoznĂĄmky k Simon the Sorcerer
- * 3.13 PoznĂĄmky k The Feeble Files
- * 3.14 PoznĂĄmky k The Legend of Kyrandia
- * 3.15 Poznámky k Předvídavému Vstupnímu Dialogu her Sierra AGI
- * 3.16 PoznĂĄmky k Mickey's Space Adventure
- * 3.17 PoznĂĄmky k Winnie the Pooh
- * 3.18 PoznĂĄmky k Troll's Tale
- * 3.19 Poznámky k Dračí Historie
- * 3.20 ZnĂĄmĂŠ problĂŠmy
-4.0) PodporovanĂŠ platformy
-5.0) Spuštění ScummVM
- * 5.1 Možnosti příkazového řádku
- * 5.2 Volby jazyka
- * 5.3 GrafickĂŠ filtry
- * 5.4 GlobĂĄlnĂ­ menu
- * 5.5 KlĂĄvesovĂŠ zkratky
-6.0) UloĹženĂŠ hry
- * 6.1 AutomatickĂŠ uklĂĄdĂĄnĂ­
- * 6.2 Převod uložených her
- * 6.3 Zobrazení/Načtení uložených her z příkazového řádku
-7.0) Hudba a zvuk
- * 7.1 Emulace AdLib
- * 7.2 Emulace FluidSynth MIDI
- * 7.3 Emulace MT-32
- * 7.4 Emulace MIDI
- * 7.5 Přirozená podpora MIDI
- * 7.6 Podpora nativnĂ­ho UNIX, ALSA a sekvencĂŠru dmedia
- * 7.7 Podpora MIDI serveru TiMidity++
- * 7.8 PouŞití komprimovaných zvukových souborů (MP3, Ogg Vorbis, Flac)
- * 7.9 Výstupní vzorkovací kmitočet
-8.0) Soubor s nastavením
- * 8.1 Rozpoznávaná klíčová slova nastavení
- * 8.2 Vlastní herní volby, které mohou být přepínány pomoci grafického rozhraní
-9.0) SestavenĂ­
-
-
-1.0) Úvod:
----- -----
-
-1.1) O ScummVM:
----- ----------
-ScummVM je program, který Vám umožňuje spouštět určité klasické grafické point-and-click adventury, za předpokladu, že již máte jejich datové soubory. A teď ta chytrá část: ScummVM jenom nahrazuje spouštěče, které jsou dodávány se hrou, což Vám umožňuje hrát hry v systémech, pro které nikdy nebyly navrženy!
-
-Původně byl navržen pro spouštění her SCUMM od LucasArts SCUMM, jako např. Maniac Mansion, Monkey Island, Day of the Tentacle nebo Sam and Max. SCUMM znamená 'Nástroj pro Vytváření Skriptu pro Maniac Mansion', což byla první hra, pro kterou LucasArts tento systém navrhl. A mnohem později dal své jméno ScummVM ('VM' znamená Virtuální Stroj).
-
-Postupem času byla přidána podpora pro spoustu her mimo SCUMM a
-ScummVM nyní také podporuje mnoho AGI a SCI her od Sierra (např. King's
-Quest 1-6, Space Quest 1-5, ...), Discworld 1 a 2, Simon the Sorcerer 1 and 2, Beneath A Steel Sky, Lure of the Temptress, Broken Sword I a II, Flight of the Amazon Queen, Gobliiins 1-3, série The Legend of Kyrandia, mnoho ze SCUMM her pro děti od Humongous Entertainment (včetně her Freddi Fish a Putt Putt) a mnoho dalších. Na stránce kompatibility můžete najít úplný seznam s podrobnostmi, které adventury jsou podporovány a jak dobře. ScummVM je neustále zlepšován a proto navštěvujte naše stránky často.
-
-Mezi systémy, na kterých můžete tyto hrát, jsou běžné stolní počítače (mající Windows, Linux, Mac OS X, ...), herní konzole
-(Dreamcast, Nintendo DS a Wii, PS2, PSP, ...), chytrĂŠ telefony (Android,
-iPhone, PocketPC, Symbian ...) a dalĹĄĂ­.
-
-V současnosti je ScummVM stále velkou částí ve vývoji. Nezapomeňte, že i když se snažíme zajistit, aby mnoho her bylo možno dokončit pouze s pár vážnými chybami, pády programu mohou nastat a my neposkytujeme žádné záruky. Přes to všechno, některé hry byly podporovány po dlouhou dobu
-A měly by fungovat v pořádku se všemi novějšími stabilními verzemi. Jak dobře bude hra ve ScummVM fungovat můžete zjistit prohlédnutím stránky kompatibility.
-Vlastně, pokud trošičku zahledáte, můžete zjistit, že ScummVM je používán i komerčně pro znovu vydání některých podporovaných her na moderních platformách. To ukazuje, že i několik společností je spokojeno s kvalitou softwaru a jako moc dobře může některé hry spouštět.
-
-Pokud máte ScummVM rádi, můžete ho podpořit dotací pomocí tlačítka PayPal na stránce ScummVM. To nám pomůže zakoupit nástroje potřebné ke snadnějšímu a rychlejšímu vývoji ScummVM. Pokud nemůžete podpořit dotací, pomozte a přispějte záplatou!
-
-1.2) RychlĂ˝ nĂĄvod:
----- -------------
-Pro ty netrpělivé z Vás je tu návod, jak ScummVM spustit v několika krocích.
-
-1. Stáhněte si ScummVM z <http://www.scummvm.org/downloads.php> a nainstalujte ho.
-
-2. Na Vašem pevném disku vytvořte složku a zkopírujte datové soubory z původního média do této složky. Zopakujte pro všechny hry, které chcete hrát
-
-3. Spusťte ScummVM, zvolte 'Přidat hru', zvolte adresář s datovými soubory hry (nesnažte se volit datové soubory samotné!) a stiskněte
-'Zvolit'.
-
-4. Mělo by se objevit dialogové okno umožňující Vám pozměnit různá nastavení, pokud tak chcete (i když by mělo být v pořádku všechno nechat ve výchozím nastavení). Dialogové okno potvrďte.
-
-5. V seznamu vyberte hru, kterou chcete hrát a stiskněte 'Spustit'.
-
-V budoucnu byste měli být schopni přeskočit na krok 5, pokud nechcete přidat další hry.
-
-Rada: Pokud chcete přidat více her najednou, zkuste stisknout a držet klávesu shift předtím, než kliknete na 'Přidat hru' – tlačítko se změní na 'Hromadné Přidání' a pokud ho stiskněte, jste znovu požádáni o zvolení složky, ale tentokrát ScummVM prohledá všechny podsložky pro podporované hry.
-
-
-2.0) Kontakt:
----- --------
-Nejjednodušším způsobem, jak kontaktovat tým ScummVM je předložením hlášení o chybě (viz oddíl 2.1) nebo použitím našich fór na http://forums.scummvm.org .
-Můžete se také připojit a odesílat a e-maily na korespondenční seznam scummvm-devel, nebo s námi chatovat na IRC (#scummvm na irc.freenode.net) Nežádejte nás, prosím, o podporu nefungující hry – nejdříve si přečtěte nejčastější otázky na naší stránce
-
-2.1) HlĂĄĹĄenĂ­ chyb:
----- -------------
-Abyste mohli nahlásit chybu, nejdříve si, prosíme, vytvořte si účet na SourceForge a klikněte na odkaz "Bug Tracker" na naší stránce. Ujistěte se, prosím, že se chyba dá znovu zjistit a stále se objevuje v nejnovější verzi git/denního sestavení. Také na naší stránce zkontrolujte seznam známých problémů (níže) a seznam kompatibility pro tuto hru, abyste se ujistili, že problém již není znám:
-
- http://www.scummvm.org/compatibility
-
-Prosíme, nenahlašujte chyby ve hrách, které nejsou v seznamu v sekci 'Supported Games' nebo seznamu kompatibility uvedeny jako dokončitelné. My –víme-, že tyto hry mají chyby.
-
-Zahrňte, prosím, nåsledující informace:
- - Verzi ScummVM (PROSÍME, vyzkoušejte nejnovější sestavení git/Daily)
- - Podrobnosti o chybě, včetně postupu na její znovu opakování
- - Jazyk hry (angličtina, němčina, ...)
- - Verze hry (s řečí, z diskety, ...)
- - Platforma a kompilĂĄtor (Win32, Linux, FreeBSD, ...)
- - Pokud možno, přiložte uloženou hru
- - Pokud se tato chyba objevila pouze nedávno, poznamenejte si poslední verzi bez chyby a první verzi s touto chybou. Takto ji můžeme rychle spravit tím, že se podíváme na provedené změny.
-
-Nakonec prosíme, abyste každou chybu nahlašovali samostatně; neohlašujte několik chyb v jednom hlášení. (Jinak bude obtížné sledovat stav každé jednotlivé chyby).
-
-
-3.0) PodporovanĂŠ hry:
----- ----------------
-V tuto chvíli je o následujících hrách známo, že fungují a měly by být hratelné až dokonce:
-
-Hry SCUMM od LucasArts:
- Maniac Mansion [maniac]
- Zak McKracken and the Alien Mindbenders [zak]
- Indiana Jones and the Last Crusade [indy3]
- Loom [loom]
- The Secret of Monkey Island [monkey]
- Monkey Island 2: LeChuck's Revenge [monkey2]
- Indiana Jones and the Fate of Atlantis [atlantis]
- Day of the Tentacle [tentacle]
- Sam & Max Hit the Road [samnmax]
- Full Throttle [ft]
- The Dig [dig]
- The Curse of Monkey Island [comi]
-
-Hry AGI od Sierra:
- The Black Cauldron [bc]
- Gold Rush! [goldrush]
- King's Quest I [kq1]
- King's Quest II [kq2]
- King's Quest III [kq3]
- King's Quest IV [kq4]
- Leisure Suit Larry in the Land of the
- Lounge Lizards [lsl1]
- Mixed-Up Mother Goose [mixedup]
- Manhunter 1: New York [mh1]
- Manhunter 2: San Francisco [mh2]
- Police Quest I: In Pursuit of the Death
- Angel [pq1]
- Space Quest I: The Sarien Encounter [sq1]
- Space Quest II: Vohaul's Revenge [sq2]
- Fanmade Games [agi-fanmade]
-
-Hry AGOS od Adventuresoft/Horrorsoft:
- Elvira - Mistress of the Dark [elvira1]
- Elvira II - The Jaws of Cerberus [elvira2]
- Personal Nightmare [pn]
- Waxworks [waxworks]
- Simon the Sorcerer 1 [simon1]
- Simon the Sorcerer 2 [simon2]
- Simon the Sorcerer's Puzzle Pack
- - Demon In My Pocket [dimp]
- Simon the Sorcerer's Puzzle Pack
- - Jumble [jumble]
- Simon the Sorcerer's Puzzle Pack
- - NoPatience [puzzle]
- Simon the Sorcerer's Puzzle Pack
- - Swampy Adventures [swampy]
- The Feeble Files [feeble]
-
-Hry GOB od Coktel Vision:
- Bambou le sauveur de la jungle [bambou]
- Bargon Attack [bargon]
- Fascination [fascination]
- Geisha [geisha]
- Gobliiins [gob1]
- Gobliins 2 [gob2]
- Goblins 3 [gob3]
- Lost in Time [lostintime]
- Once Upon A Time: Little Red Riding Hood [littlered]
- The Bizarre Adventures of Woodruff
- and the Schnibble [woodruff]
- Urban Runner [urban]
- Ween: The Prophecy [ween]
-
-Hry MADE od Activision:
- Leather Goddesses of Phobos 2 [lgop2]
- Return to Zork [rtz]
- Rodney's Funscreen [rodney]
- The Manhole [manhole]
-
-DalĹĄĂ­ hry:
- Beneath a Steel Sky [sky]
- Broken Sword: The Shadow of the Templars [sword1]
- Broken Sword II: The Smoking Mirror [sword2]
- Cruise for a Corpse [cruise]
- Discworld [dw]
- Discworld 2: Missing Presumed ...!? [dw2]
- Dragon History [draci]
- Drascula: The Vampire Strikes Back [drascula]
- Eye of the Beholder [eob]
- Eye of the Beholder II: The Legend of
- Darkmoon [eob2]
- Flight of the Amazon Queen [queen]
- Future Wars [fw]
- Inherit the Earth: Quest for the Orb [ite]
- Nippon Safes Inc. [nippon]
- Lands of Lore: The Throne of Chaos [lol]
- The Journeyman Project: Pegasus Prime [pegasus]
- The Legend of Kyrandia [kyra1]
- The Legend of Kyrandia: The Hand of Fate [kyra2]
- The Legend of Kyrandia: Malcolm's Revenge [kyra3]
- Touche: The Adventures of the Fifth
- Musketeer [touche]
-
-Hry SCUMM od Humongous Entertainment:
- Backyard Baseball [baseball]
- Backyard Baseball 2001 [baseball2001]
- Backyard Baseball 2003 [baseball2003]
- Backyard Football [football]
- Big Thinkers First Grade [thinker1]
- Big Thinkers Kindergarten [thinkerk]
- Blue's 123 Time Activities [Blues123Time]
- Blue's ABC Time Activities [BluesABCTime]
- Blue's Art Time Activities [arttime]
- Blue's Birthday Adventure [BluesBirthday]
- Blue's Reading Time Activities [readtime]
- Fatty Bear's Birthday Surprise [fbear]
- Fatty Bear's Fun Pack [fbpack]
- Freddi Fish 1: The Case of the Missing
- Kelp Seeds [freddi]
- Freddi Fish 2: The Case of the Haunted
- Schoolhouse [freddi2]
- Freddi Fish 3: The Case of the Stolen
- Conch Shell [freddi3]
- Freddi Fish 4: The Case of the Hogfish
- Rustlers of Briny Gulch [freddi4]
- Freddi Fish 5: The Case of the Creature
- of Coral Cove [freddicove]
- Freddi Fish and Luther's Maze Madness [maze]
- Freddi Fish and Luther's Water Worries [water]
- Let's Explore the Airport with Buzzy [airport]
- Let's Explore the Farm with Buzzy [farm]
- Let's Explore the Jungle with Buzzy [jungle]
- Pajama Sam 1: No Need to Hide When It's
- Dark Outside [pajama]
- Pajama Sam 2: Thunder and Lightning
- Aren't so Frightening [pajama2]
- Pajama Sam 3: You Are What You Eat
- From Your Head to Your Feet [pajama3]
- Pajama Sam's Lost & Found [lost]
- Pajama Sam's Sock Works [socks]
- Putt-Putt Joins the Parade [puttputt]
- Putt-Putt Goes to the Moon [puttmoon]
- Putt-Putt Saves the Zoo [puttzoo]
- Putt-Putt Travels Through Time [putttime]
- Putt-Putt Enters the Race [puttrace]
- Putt-Putt Joins the Circus [puttcircus]
- Putt-Putt and Pep's Balloon-O-Rama [balloon]
- Putt-Putt and Pep's Dog on a Stick [dog]
- Putt-Putt & Fatty Bear's Activity Pack [activity]
- Putt-Putt's Fun Pack [funpack]
- SPY Fox 1: Dry Cereal [spyfox]
- SPY Fox 2: Some Assembly Required [spyfox2]
- SPY Fox 3: Operation Ozone [spyozon]
- SPY Fox in Cheese Chase [chase]
- SPY Fox in Hold the Mustard [mustard]
-
-Hry Living Books:
- Aesop's Fables: The Tortoise and the Hare [tortoise]
- Arthur's Birthday [arthurbday]
- Arthur's Teacher Trouble [arthur]
- Dr. Seuss's ABC [seussabc]
- Green Eggs and Ham [greeneggs]
- Harry and the Haunted House [harryhh]
- Just Grandma and Me [grandma]
- Little Monster at School [lilmonster]
- Ruff's Bone [ruff]
- Sheila Rae, the Brave [sheila]
- Stellaluna [stellaluna]
- The Berenstain Bears Get in a Fight [bearfight]
- The Berenstain Bears in the Dark [beardark]
- The New Kid on the Block [newkid]
-
-Následující hry by měly jít spustit, ale zatím nejsou úplně hratelné. Hrajte je pouze na vlastní riziko a prosíme, abyste pro tyto hry nenahlašovali chyby.
-Pokud chcete mít nejnovější zprávy o kompatibilitách her, navštivte naší stránku a prohlédněte si tabulku kompatibilit.
-
- Backyard Football 2002 [football2002]
- Backyard Soccer [soccer]
- Backyard Soccer MLS [soccermls]
- Backyard Soccer 2004 [soccer2004]
- Blue's Treasure Hunt [BluesTreasureHunt]
- Pajama Sam: Games to Play on Any Day [pjgames]
-
-NĂĄsledujĂ­cĂ­ hry jsou odvozeny od jĂĄdra SCUMM, ale ScummVM je nepodporuje (zatĂ­m):
-
- OstatnĂ­ hry od Humongous Entertainment
-
-Nezapomeňte, prosím, že jádra mohou obsahovat chyby a nezavedené funkce, které někdy zabrání hru dokončit. Ukládejte často a nahlaste chyby, prosím (instrukce pro hlášení chyb jsou výše), pokud na takovou chybu narazíte v 'podporované' hře.
-
-
-3.1) Ochrana proti kopĂ­rovĂĄnĂ­:
----- -------------------------
-Tým ScummVM nepodporuje pirátství. Nicméně existují případy, kdy herní společnosti (jako LucasArts) sami ve svých hrách poskytují 'cracknuté'
-spouštěče – v těchto případech datové soubory obsahují skripty pro ochranu proti kopírování, ale převaděč je obejde (toto může podobně provádět nelegálně cracknutá verze, s tím rozdílem, že zde toto provedl výrobce hry. Neexistuje žádný způsob, jak můžeme rozlišit legitimní a pirátské datové soubory, takže v hrách, o kterých víme, že byla někdy prodávána cracknutá verze původního převaděče bude ScummVM muset vždy ochranu přeskočit.
-
-V některých případech ScummVM přesto zobrazí obrazovku ochrany proti kopírování. Zkuste zadat jakoukoli odpověď. Je tu možnost, že toto bude fungovat.
-
-ScummVM přeskakuje ochranu v následujících hrách:
-
- * Beneath a Steel Sky
- -- potlačeno s laskavým svolením Revolution Software.
- * Dreamweb
- -- seznam dostupných příkazů v terminálech ve hře je nyní zobrazen
- když hráč použije příkaz 'help'
- * Inherit the Earth: Quest for the Orb (Floppy version)
- -- potlačeno s laskavým svolením Wyrmkeep Entertainment,
- protože byla potlačena ve všech vydáních hry na CD.
- * Loom (EGA DOS)
- * Maniac Mansion
- * Monkey Island 2: LeChuck's Revenge
- * Simon the Sorcerer 1 (Floppy version)
- * Simon the Sorcerer 2 (Floppy version)
- -- potlačeno s laskavým svolením from Adventure Soft,
- protože byla potlačena ve všech vydáních hry na CD.
- * The Secret of Monkey Island (VGA)
- * Waxworks
- * Zak McKracken and the Alien Mindbenders
-
-
-3.2) Poznåmky ke hråm Commodore64:
----- -----------------------------
-Jak Maniac Mansion tak Zak McKracken mohou být spuštěny, ale Maniac Mansion není ještě hratelný. Jednoduše pojmenujte disky D64 jako
-"maniac1.d64" a "maniac2.d64" nebo "zak1.d64" a "zak2.d64", pak by měl ScummVM automaticky hru zjistit, pokud ho odkážete na správnou složku.
-
-Nebo můžete použít 'extract_mm_c64' z balíčku nástrojů pro extrahování datových souborů. Pak ale ScummVM hru řádně automaticky nezjistí ScummVM, a musíte se ujistit, že platforma je nastavena na Commodore64. Doporučujeme použít mnohem jednodušší postup popsaný v předchozím odstavci.
-
-
-3.3) PoznĂĄmky ke Maniac Mansion NES:
----- -------------------------
-Podporované verze jsou Britská angličtina (E), Francouzština (F), Němčina (G), Italština (I), Švédština (SW) a Americká angličtina (U). ScummVM pro spuštění vyžaduje pouze část PRG a ne celý ROM.
-
-Abyste mohli hru spustit, musíte vyjmout prvních 16 bajtů z ROM, s kterým pracujete. Jakýkoli hex editor bude fungovat, pokud můžete kopírovat/vkládat. Poté. Co ROM otevřete pomocí hex editoru, zkopírujte všechno z druhého řádku (17. bajt) na konec. Poté, co toto provedete, vložte ho do nového hex souboru. Pojmenujte ho "Maniac Mansion (XX).prg" kde XX znamená verzi, se kterou pracujete (E, F, G, I, SW, nebo U). Konečná velikost by měla být přesně 262144 bajtů.
-
-Pokud hru přidáváte ručně, ujistěte se, že platforma je nastavena na NES.
-
-Nejběžnější chyby, které zabraňují spuštění hry:
-
- * Ĺ patnĂ˝ soubor
- * ROM byl extrahovĂĄn pomocĂ­ nĂĄstrojĹŻ z verze 0.7.0
- * Snažíte se do ScummVM vkládat CELÝ ROM a ne jenom PRG část.
-
-Je také možno extrahovat oddělené soubory LFL z PRG části. Pro toto použijte nástroj 'extract_mm_nes' z balíčku nástrojů.
-
-
-3.4) PoznĂĄmky ke hrĂĄm Macintosh:
----- ---------------------------
-Všechny adventury LucasArts založené na SCUMM, kromě COMI, také existují ve verzích pro in Macintosh. ScummVM může většinu (všechny?) použít, nicméně, v některých případech je nutná dodatečná práce. Nejdříve, pokud pro toto nepoužíváte Macintosh, přístup k datům na CD/disketě může být obtížný. Důvodem je to, že Mac používá zvláštní formát disku nazvaný HFS, který ostatní systémy většinou nepodporují. Nicméně existuje, několik nástrojů, které jsou zadarmo a umožňují číst takovéto svazky HFS. Například "HFVExplorer" pro Windows a "hfsutils" pro Linux a ostatní Unixové operační systémy.
-
-Většina novějších her na Macintosh je dodávána pouze s jedním datovým souborem (v některých případech byl tento soubor učiněn neviditelným, takže možná budete potřebovat dodatečné nástroje, abyste ho mohli zkopírovat). ScummVM je schopen takovýto soubor použít přímo; jednoduše odkažte ScummVM na složku obsahující tento soubor a mělo by to fungovat (tak jako s každou podporovanou hrou).
-
-V balíčku nástrojů také poskytujeme nástroj nazvaný 'extract_scumm_mac', který extrahuje data z těchto datových souborů, ale toto není ani potřeba, ani doporučeno.
-
-Pro další informace o kopírování herních souborů Macintosh na Váš pevný disk si prohlédněte:
-
- http://wiki.scummvm.org/index.php/HOWTO-Mac_Games
-
-
-3.5) PoznĂĄmky ke hrĂĄm Multi-CD:
----- --------------------------
-Obecně ScummVM moc dobře nefunguje s hrami na Multi-CD. To je proto, že ScummVM předpokládá, že všechno o hře může být nalezeno v jedné složce. I když ScummVM má schopnost požádat uživatele, aby vyměnil CD, původní spouštěč souboru většinou nainstaluje malé množství souborů na pevný disk. Pokud tyto soubory nelze najít na všech CD, ScummVM bude mít potíže.
-
-Naštěstí může ScummVM hry bez problémů spouštět přímo z pevného disku, pokud vytvoříte složku se správnou kombinací souborů. Většinou, když se soubor objeví na více, než jednom CD můžete vybrat jeden z nich.
-
-
-3.6) PoznĂĄmky k The Curse of Monkey Island:
----- --------------------------------------
-Pro tuto hru budete potřebovat soubory comi.la0, comi.la1 a comi.la2.
-Soubor comi.la0 můŞete nalÊzt na vťech CD hry, ale protoŞe jsou stejnÊ, můŞete pouŞít kterýkoli z nich.
-
-Dále potřebujete vytvořit podsložku "resource" obsahující všechny soubory z –obou- podsložek "resource" na dvou CD. Některé soubory se objevují na obou CD, ale znovu jsou stejné.
-
-
-3.7) PoznĂĄmky ke hrĂĄm Broken Sword:
----- ------------------------------
-Pokyny pro hry Broken Sword jsou pro verze od Sold-Out Software, kde každá hra je na dvou CD, protože tyto verze byly nejdostupnější v době, kdy je ScummVM začal podporovat. Doufáme, že jsou dostatečně obecné pro použití i v jiných vydáních her.
-
-
-3.7.1) Videa z her Broken Sword:
------- -------------------------
-Videa pro hry Broken Sword mají v sobě trochu historie (viz další oddíl, pokud jste zvědaví), ale obecně jediné, co potřebujete udělat, je zkopírovat soubory .SMK ze složek "SMACKS" nebo "SMACKSHI" na CD do stejné složky jako ostatní datové soubory hry. (Broken Sword má také složku "SMACKSLO" se stejnými videi, ale ty jsou nižší kvality.) Můžete je umístit do podsložky s názvem "video", pokud Vám to přijde hezčí.
-
-Ve verzích pro PlayStation, můžete původní videa vypsat z disku. Každý soubor, který má příponu "STR", byste měli vypsat jako *čist* sektory z disku (všech 2352 bajtů na sektor). Můžete také míst toho použít přeformátovaná videa, která jsou zmíněna níže, ale to nebude fungovat pro všechny videa v Broken Sword II. Pro více informací si prohlédněte:
-
- http://wiki.scummvm.org/index.php/HOWTO-PlayStation_Videos
-
-Některá vydání hry, a také verze pro PlayStation, Smacker videa nemají. Revolution Software nám laskavě dovolilo poskytovat přeformátovaná videa ke stažení na naší stránce:
-
- http://www.scummvm.org/downloads.php
-
-Tato videa jsou poskytována ve formátu DXA se zvukem ve formátu FLAC. Jejich kvalita se rovná originálu díky použití bezztrátové komprese. Zobrazení těchto videí vyžaduje, aby verze ScummVM byla sestavena s podporou FLAC i zlib.
-
-Pro systémy, které jsou příliš pomalé, aby zvládli dekódovat formát FLAC byl zvuk videí také poskytnut odděleně ve formátu OGG Vorbis audio. Toto vyžaduje, aby verze ScummVM byla sestavena s podporou libVorbis a zlib.
-
-Pro Broken Sword také poskytujeme přídavek pro titulky. Jednoduše ho rozbalte a následujte pokyny v souboru readme.txt. Balíček v současnosti nefunguje ve videích na PlayStation. (Broken Sword II již titulky má; není třeba další práce pro jejich přidání.)
-
-
-3.7.2) Videa her Broken Sword ve zpětném pohledu:
------- ------------------------------------------
-Původní vydání her Broken Sword používalo formát Smacker™ od RAD Game Tools. Protože společnost RAD nebyla ochotna nám otevřít starší zastaralé verze tohoto formátu a požádala, abychom neprováděli jeho zpětnou analýzu, museli jsme nalézt jiné řešení.
-
-V Broken Sword II bylo možné přehrát řeč, aniž by se muselo přehrávat video. To zůstalo jako nouzové řešení až do ScummVM 1.0.0, ale pro všechny stabilní verze to nikdy nebylo jediné řešení.
-
-Ve ScummVM 0.6.0 jsme pouŞívali MPEG, coŞ zajistilo rozumný kompromis mezi velikostí a kvalitou. Ve ScummVM 0.10.0 bylo toto nahrazeno DXA
-(původně přidáno pro "The Feeble Files" od AdventureSoft). To nám dalo možnost zajistit videa ve stejné kvalitě jako původní, za cenu větší velikosti.
-
-Nakonec na začátku roku 2006 byl formát Smacker zpětně analyzován pro projekt FFmpeg. Díky jejich tvrdé práci ScummVM 1.0.0 nyní podporuje původní videa. Zároveň byla ukončena podpora MPEG. Z technického hlediska je toto dobře, protože přehrávání videí MPEG bylo velmi složité a stejně nevypadaly tak dobře jako verze ve formátu DXA a Smacker.
-
-
-3.7.3) Broken Sword:
------- -------------
-Pro tuto hru budete potřebovat všechny soubory ze seskupení složek na obou CD. Pro verze Windows a Macintosh budete také potřebovat soubory speech.clu ze složek speech, ale protože soubory nejsou stejné, budete je muset přejmenovat na speech1.clu a speech2.clu z CD 1 a 2 v tomto pořadí. Verze na PlayStation vyžaduje speech.tab, speech.dat, speech.lis, a speech.inf.
-
-Dále verze pro Windows a Macintosh vyžadují podsložku music se všemi soubory z podsložek music na obou CD. Některé z těchto souborů se objevují na obou CD, ale v těchto případech jsou buď stejné, nebo, v jednom případě, je téměř stejný, že to nemá žádný význam. Verze pro PlayStation vYžaduje tunes.dat a tunes.tab.
-
-
-3.7.4) Broken Sword II:
------- ----------------
-Pro tuto hru budete potřebovat všechny soubory ze seskupení složek na obou CD. (Abych pravdu řekl, pár z nich nemusí být nezbytně nutné, ale ty, o kterých nemám jistotu, jsou velmi malé.)
-Je také třeba přejmenovat soubory speech.clu a music.clu na speech1.clu,
-speech2.clu, music1.clu a music2.clu, aby ScummVM mohl zjistit, které jsou z CD 1 a které z CD 2. Všechny ostatní soubory, které jsou umístěny v seskupení složek, jsou stejné. Použijte kterékoli soubory chcete.
-
-Kromě toho budete potřebovat soubory cd.inf a, případně, startup.inf ze složky sword2 na CD 1.
-
-
-3.8) PoznĂĄmky k Beneath a Steel Sky:
----- -------------------------------
-Od ScummVM 0.8.0 potřebujete dodatečný soubor 'SKY.CPT', abyste mohli Beneath a Steel Sky spustit.
-
-Tento soubor je dostupnĂ˝ na strĂĄnce 'Downloads' domovskĂŠ strĂĄnky ScummVM.
-Můžete ho umístit buď do složky obsahující ostatní datové soubory (SKY.DNR, SKY.DSK), na Vaši dodatečnou cestu, nebo do složky. Kde se nachází spouštěcí soubor ScummVM.
-
-
-3.9) PoznĂĄmky k Flight of the Amazon Queen:
----- --------------------------------------
-Abyste mohli použít tu verzi, která není volně šiřitelná
-(z pĹŻvodnĂ­ho CD), musĂ­te mĂ­t soubor 'queen.tbl'
-(dostupný ze stránky 'Downloads' naší domovské stránky) a umístit ho buď do složky obsahující soubor hry 'queen.1', na Vaši dodatečnou cestu, nebo do složky. Kde se nachází spouštěcí soubor ScummVM.
-
-Také můžete použít nástroj 'compress_queen' z balíčku nástrojů pro 'znovu sestavení' Vašeho datového souboru FOTAQ pro zahrnutí tabulky pro tuto konkrétní verzi, čímž odstraníte závislost na soubor 'queen.tbl' při spuštění. Tento nástroj Vám také umožňuje komprimovat řeč a zvukové efekty do formátu MP3, OGG nebo FLAC.
-
-
-3.10) PoznĂĄmky ke Gobliiins:
------ ----------------------
-CD verze série Gobliiins obsahuje jednu velkou zvukovou stopu, kterou potřebujete vyjmout (viz oddíl o použití komprimovaných zvukových souborů) a zkopírovat ji do herní složky, pokud chcete ve hře hudbu, aniž byste museli CD mít stále v jednotce. V této stopě jsou také řeč a její hlasitost se tedy také mění podle hlasitosti hudby.
-
-
-3.11) PoznĂĄmky k Inherit the Earth: Quest for the Orb:
------ ------------------------------------------------
-Abyste mohli spustit verzi pro Mac OS X od Wyrmkeep musíte data zkopírovat z CD na Våť pevný disk. Pokud pouŞívåte PC, pak se podívejte na:
-
- http://wiki.scummvm.org/index.php/HOWTO-Mac_Games
-
-I když se v tomto článku píše hlavně o hrách SCUMM, je zde také zmíněn nástroj "HFVExplorer", který potřebujete k extrakci souborů. Nezapomeňte, že data řeči "Inherit the Earth Voices" musíte umístit do stejného adresáře, kde jsou uložena data hry:
-
- Inherit the Earth.app/Contents/Resources
-
-Ve staré verzi pro Mac OS 9 potřebujete soubory zkopírovat ve formátu MacBinary, protože by měli obsahovat jak zdrojové, tak datové vidlice. Zkopírujte všechny soubory 'ITE *'.
-
-
-3.12) PoznĂĄmky k Simon the Sorcerer 1 a 2:
------ ------------------------------------
-Pokud måte dvojitou verzi Simon the Sorcerer 1 nebo 2 na CD, verzi pro Windows naleznete v hlavní sloŞce na CD a verzi pro DOS ve sloŞce DOS na CD.
-
-
-3.13) PoznĂĄmky k The Feeble Files:
------ ----------------------------
-Pokud máte verzi pro Windows, je třeba si uvědomit pár věcí.
-
-Mnoho souborů, které hra vyžaduje, je uloženo v souboru InstallShield s názvem data1.cab, který ScummVM nemůže rozbalit. Budete muset použít původní instalátor, nebo i5comp pro rozbalení obsahu tohoto souboru. Nástroj pro dekomprimaci i5comp může být nalezen při hledání na internetu.
-
-Abyste mohli použít soubory s řečí ve ScummVM, musí být přejmenovány následovně:
-Přejmenovat voices.wav na CD1 na voices1.wav
-Přejmenovat voices.wav na CD2 na voices2.wav
-Přejmenovat voices.wav na CD3 na voices3.wav
-Přejmenovat voices.wav na CD4 na voices4.wav
-
-3.14) PoznĂĄmky k The Legend of Kyrandia:
------ ----------------------------------
-Abyste mohli spustit The Legend of Kyrandia ve ScummVM potřebujete soubor 'kyra.dat'.
-Soubor by měl být vždykcy součástí oficiálních balíčků ScummVM. V případě, že ScummVM
-hlĂĄsĂ­, Ĺže soubor chybĂĄ, mĹŻĹžete ho najĂ­t na strĂĄnce ScummVM v sekci 'Downloads'.
-Nezapomeňte, že současná verze ScummVM pro Windows by měla soubor obsahovat ve spouštěči a tudíž ho
-musĂ­te mĂ­t pouze, kdyĹž ScummVM soubor nemĹŻĹže nalĂŠzt.
-
-3.15) Poznámky k Předvídavému Vstupnímu Dialogu her Sierra AGI:
------ ---------------------------------------------------------
-Předvídavý Vstupní Dialog je pomůcka ScummVM pro spouštění her používající jádro AGI (který je znám, že vyžaduje vstup z příkazové řádky) na zařízeních s omezenou podporou klávesnice. V těchto situacích, kdy zadávání pomocí emulované klávesnice je dosti únavné, můžou být příkazy rychle a snadno zadány pomocí Předvídavého Vstupního Dialogu.
-
-Abyste zapnuli předvídavý vstup v hrách AGI, potřebujete zkopírovat soubor pred.dic do dodatečné složky ScummVM nebo do složky hry, kterou chcete hrát. Tento slovník byl vytvořen analýzou všech známých her AGI a obsahuje maximální sadu běžných slov.
-
-Pokud je slovník zjištěn, je Předvídavý Vstupní Dialog zobrazen buď při klinutí na oblast příkazového řádku (kdykoliv je požadován vstup klávesnice, i v rámečcích dialogových oken), nebo v některých verzích pro jiné systémy stisknutím určené klávesové zkratky.
-
-Předvídavý Vstupní Dialog pracuje ve třech režimech, které jsou přepínány tlačítkem (*)Pre/123/Abc. Hlavní vstupní metodou je předvídavý režim
-(Pre), který připomíná "rychlé zadávání" v mobilních telefonech.
-Abeceda je rozdělena do 9 sad, které přirozeně odpovídají 9 klávesám číselné klávesnice (0 je mezera). Pro psaní slova zmáčkněte jednou číslo sady, která obsahuje písmeno slova, které chcete napsat, pak pokračujete k dalšímu. Například, pokud chcete napsat příkaz 'look', měli byste zmáčknout 5665. Jak postupně píšete číselný kód zamýšleného slova, je slovník prohledáván pro známá slova, která se shodují s Vaším vstupem až do tohoto bodu. Jak mačkáte více kláves, slovník se přiblíží ke správnému slovu. To je důvod, proč vypsané slovo se může náhle změnit mezi stisky kláves. Někdy se ale vyskytnou případy, kdy více než jedno slovo má stejné číselné zastoupení. Například slova 'quit' a 'suit' odpovídají stejným číslům, a to 7848. V těchto případech se rozsvítí tlačítko další
-(#). Jeho stisknutím můžete procházet seznam slov, která sdílejí stejný kód a nakonec přijmout to správné stisknutím (0)mezera nebo tlačítka Ok.
-
-Druhou vstupní metodou (123) je číselný vstup: Každou klávesu, kterou stiskněte, je doslova zadána jako číslo.
-
-Třetí vstupní metodou (Abc) je vstupní režim Alfa/opakovaného stisknutí tlačítka. Tento režim je určen pro zadávání textu bez pomoci od slovníku předvídavého režimu (Pre). Text je zadáván po jednotlivých písmenech. Pro každé písmeno nejdříve stiskněte číslo sady, které obsahuje písmeno, které chcete, pak použijte tlačítko další (#) pro procházení písmeny a opakujte s dalším číslem. Například, pro zadání slova 'look' musíte stisknout následující: 5##6##6##5#
-
-Dialogové okno je plně použitelné pomocí myši, ale v některých verzích ScummVM pro jiné platformy, je použití dialogu pohodlnější pomocí číselné klávesnice. Některá tlačítka dialogu mohou být také používána pomocí šipkových kláves a enter.
-
-
-3.16) PoznĂĄmky k Mickey's Space Adventure:
------ ------------------------------------
-Abyste mohli Mickey's Space Adventure hrát ve ScummVM, potřebujete spolu s datovými soubory hry také původní spouštěč (mickey.exe).
-
-Pro tuto hru ve ScummVM, existuje rozšířená podpora myši, i když v původní hře takováto podpora nebyla. Položky menu mohou být vybrány pomocí myši a je také možné se myší přesunout do jiných míst. Když se kurzor myši nachází na okraji obrazovky, zčervená, pokud je možné jít v tomto směru. Hráč pak může jednoduše kliknout na okraje herní obrazovky pro změnu místa, podobně jako mnoho adventur, což je jednodušší a přímočařejší než pohyb pomocí menu.
-
-
-3.17) Winnie the Pooh notes:
------ ----------------------
-Je moŞnÊ importovat uloŞenÊ hry z původní hry do ScummVM.
-
-Pro tuto hru ve ScummVM, existuje rozšířená podpora myši, i když v původní hře takováto podpora nebyla. Položky menu mohou být vybrány pomocí myši a je také možné se myší přesunout do jiných míst. Když se kurzor myši nachází na okraji obrazovky, zčervená, pokud je možné jít v tomto směru. Hráč pak může jednoduše kliknout na okraje herní obrazovky pro změnu místa, podobně jako mnoho adventur, což je jednodušší a přímočařejší než pohyb pomocí menu.
-
-
-3.18) PoznĂĄmky k Troll's Tale:
------ ------------------------
-Původní hra vycházela na zaváděcím disku PC, proto je nutné vypsat obsah tohoto disku jako obraz disku a přejmenovat ho na "troll.img", abyste tuho hru mohli hrát ve ScummVM.
-
-
-3.19) Poznámky k Dračí Historie:
------ --------------------------
-Existují 4 jazykové varianty této hry: česká, anglická, polská a
-německá. Každá je umístěna v odděleném archivu. Jediná oficiální verze je česká, a anglická, polská a německá byly vždycky nedokončené práce a nikdy nebyly oficiálně vydány. I když texty byly zcela přeloženy, je známo, že některé z nich obsahují překlepy.
-
-Pro tuto hru existuje nepovinný český dabing. Z důvodu velikosti si ho můžete dodatečně stáhnout a pak ho rozbalit do adresáře hry. Můžete také český dabing poslouchat se všemi jazykovými varianty hry, zatímco čtete titulky.
-
-Vťechny herní soubory a nåvody můŞou být ståhnuty z
-http://www.ucw.cz/draci-historie/index-en.html
-
-
-3.20) ZnĂĄmĂŠ ProblĂŠmy:
------ ---------------
-Toto vydání má následující známé problémy. Není třeba je ohlašovat, i když záplaty pro jejich opravu jsou vítány. Pokud objevíte chybu, která není zde v seznamu, ani není v seznamu kompatibility na internetové stránce, prohlédněte si, prosím, část o hlášení chyb.
-
- Hry CD Audio:
-- Při hraní her, které používají CD Audio (hry FM-TOWNS, Loom CD, atd) může u uživatelů Microsoft Windows 2000/XP docházet k náhodným pádům. To je díky dlouhotrvající chybě Windows, která má za následek poškozené soubory při čtení z CD. Abyste se tomuto vyhnuli, zkopírujte, prosím, soubory na pevný disk
-
- Verze FM-TOWNS:
-- Verze KandĹži vyĹžaduje ROM pĂ­sma FM-TOWNS
-
- Loom:
-- Vypnutí titulků pomocí souboru nastavení je nevypne spolehlivě, protože skripty Loom je znovu automaticky zapnou
-- Podpora MIDI ve verzi EGA vyĹžaduje aktualizaci Roland LucasArts
-- Verze KandĹži na PC-Engine vyĹžaduje rom systĂŠmovĂŠ karty
-
- The Secret of Monkey Island:
-- Podpora MIDI ve verzi EGA vyĹžaduje aktualizaci Roland LucasArts
-
- Beneath a Steel Sky:
-- Verze pro Amiga nejsou podporovĂĄny
-- Demoverze z diskety nejsou podporovåny
-- Není chyba: Ve verzi na CD chybí v jistých dialozích řeč, to je normální.
-
- Elvira - Mistress of the Dark
-- Ve verzi pro Atari ST nefunguje hudba
-
- Elvira II - The Jaws of Cerberus
-- Ve verzi pro Atari ST nefunguje hudba
-
-- Ve verzi pro PC nefungujĂ­ zvukovĂŠ efekty
-- Ve verzi pro Atari ST jsou problĂŠmy s paletou
-
- Inherit the Earth: Quest for the Orb
-- Verze pro Amiga nejsou podporovĂĄny
-
- Simon the Sorcerer 1:
-- V anglických a německých verzích na CD nejsou titulky dostupné, protože jim většina titulků chybí.
-
- Simon the Sorcerer 2:
-- Kombinace řeči a titulků často způsobí, že řeč je přerušena brzo, toto je omezení původní hry.
-- Ve verzích pro Amiga a Macintosh je podporován pouze výchozí jazyk datových souborů (angličtina).
-
- Simon the Sorcerer's Puzzle Pack:
-- Žádná podpora pro zobrazování, zadávání, ukládání, či načítání nejvyšších skóre.
-- Žádná podpora pro zobrazování názvů položek, když na ně najedete myší ve Swampy Adventures.
-
- The Feeble Files:
-- Titulky jsou často nedokončené. V původní hře byly vždy zakázány.
-
- The Legend of Kyrandia:
-- Ve verzích na disketě pro Mac není žádná hudba ani zvukové efekty.
-- CD Macintosh pouŞívå zahrnutou hudbu a zvukovÊ efekty z DOS.
-
- Hry Humongous Entertainment:
- - Pouze původní rozhraní pro uložení a načtení mohou být použity.
- - Žádná podpora pro hru více hráčů nebo tisknutí obrázků
-
-4.0) PodporovanĂŠ Platformy:
----- ----------------------
-ScummVM byl vytvořen tak, aby mohl fungovat na mnoha platformách a operačních systémech.
-Odkazy na tyto verze můžou být nalezeny buď na stránkách ScummVM nebo vyhledáváním na internetu. Mnoho díků našim programátorům za jejich úsilí. Pokud máte verzi ScummVM pro jinou platformu/systém a chcete ho odevzdat do hlavního úložiště, neváhejte nás kontaktovat!
-
-PodporovanĂŠ platformy zahrnujĂ­ (mimo jinĂŠ):
-
- UNIX (Linux, Solaris, IRIX, *BSD, ...)
- Windows
- Windows CE a Windows Mobile (včetně Smartphonů a PocketPCs)
- Mac OS X
- AmigaOS
- Android
- BeOS
- Dreamcast
- GP2x
- iPhone (včetně iPod Touch a iPad)
- Maemo (Nokia Internet tablet N810)
- Nintendo 64
- Nintendo DS
- Nintendo GameCube
- Nintendo Wii
- OS/2
- PlayStation 2
- PlayStation Portable
- Symbian
- WebOS
-
-Verze pro Dreamcast nepodporuje The Curse of Monkey Island, ani The Dig. Verze pro Nintendo DS nepodporuje Full Throttle, The Dig, nebo The Curse of Monkey Island.
-Pro další omezení v závislosti na platformě se, prosím, podívejte na naší Wiki:
- http://wiki.scummvm.org/index.php/Platforms
-
-Ve verzi pro Macintosh je stisknutí pravého tlačítka myši emulováno pomocí Cmd-kliknutí (to je, že stisknete tlačítko myši při držení klávesy
-Command/Apple/Vrtule).
-
-Také existují neoficiální verze pro různé platformy, včetně PlayStation 3, Xbox, a Xbox 360. Nezapomeňte, že my jsme tyto verze nevytvořili, takže je nemůžeme ani schválit ani podporovat. Používejte na vlastní riziko!
-
-
-5.0) Spuštění ScummVM:
----- -----------------
-Všimněte si prosím, že ScummVM bude uložené hry standardně ukládat do složky z které je spuštěn, takže byste se měli vyhnout jeho spouštění z více umístění. Další informace, včetně jak určit složku pro uložené hry pro zamezení tohoto problému, najdete v oddílu 6.0.
-
-ScummVM může být také spuštěn přímo pomocí spouštěcího souboru. V tomto případě bude aktivován zabudovaný spouštěč. Odsuď můžete přidat hry
-(klikněte na 'Přidat hru'), nebo spustit ty, co už jsou nastaveny.
-Hry mohou být také přidány ve velkém množství. Stisknutím shift + 'Přidat
-Hru' (Všimněte si, že se tlačítko změní na 'Hromadné Přidání'), můžete zvolit složku, v které začít, a ScummVM se poté pokusí zjistit hry ve všech podsložkách této složky.
-
-ScummVM může také hru spustit přímo pomocí argumentů příkazové řádky -- viz další část.
-
-
-5.1) Možnosti příkazového řádku:
----- ---------------------------
-
- PouŞití: scummvm [MOŽNOSTI]... [HRA]
-
- [HRA] Krátké jméno hry pro načtení. Například 'monkey'pro Monkey Island. To může být buď id hry, nebo uživatelem určený cíl.
- -v, --version Zobrazí informace o verzi ScummVM a ukončí se
- -h, --help Zobrazí stručnou nápovědu a ukončí se
- -z, --list-games Zobrazí seznam podporovaných her a ukončí se
- -t, --list-targets Zobrazí seznam nastavených cílů a ukončí se
- --list-saves=CÍL Zobrazí seznam ulož. her pro určenou hru (CÍL)
- --console Povolí okno konzole (výchozí: zapnuto) (Pouze pro Windows)
- -c, --config=NastavenĂ­ PouĹžije jinĂ˝ soubor s nastavenĂ­m
- -p, --path=CESTA Cesta, kde je hra nainstalovĂĄna
- -x, --save-slot[=ČÍSLO] Pozice uložené hry pro načtení (výchozí: automatická)
- -f, --fullscreen Vynutit reĹžim celĂŠ obrazovky
- -F, --no-fullscreen Vynutit reĹžim do okna
- -g, --gfx-mode=REŽIM Vybere režim obrazu (viz také část 5.3)
- --gui-theme=VZHLED Vybere vzhled rozhraní (výchozí, moderní, klasický)
- --themepath=CESTA Cesta kde jsou vzhledy rozhranĂ­ uloĹženy
- --list-themes Zobrazí seznam vťech pouŞitelných vzhledů
- -e, --music-driver=REŽIM Vybere ovladač hudby (viz také část 7.0)
- --list-audio-devices Zobrazí seznam všech dostupných zvukových zařízení
- -q, --language=JAZYK Vybere jazyk hry (viz také část 5.2)
- -m, --music-volume=Č. Nastaví hlasitost hudby, 0-255 (výchozí: 192)
- -s, --sfx-volume=Č. Nastaví hlasitost zvuků, 0-255 (výchozí: 192)
- -r, --speech-volume=Č. Nastaví hlasitost hlasů, 0-255 (výchozí: 192)
- --midi-gain=Č. Nastaví zvýšení pro přehrávání MIDI, 0-1000 (výchozí: 100) (podporováno pouze některými ovladači MIDI)
- -n, --subtitles Zapne titulky (použijte v hrách s řečí)
- -b, --boot-param=Č. Předá číslo zavádějícímu skriptu (parametr zavedení)
- -d, --debuglevel=Č. Nastaví úroveň podrobností ladění
- --debugflags=PŘÍZNAKY Povolí určité příznaky ladění jádra (oddělené čárkami)
- -u, --dump-scripts Povolí výpis skriptu, pokud složka s názvem 'dumps' existuje v současné složce
- --cdrom=ČÍSLO Jednotka CD z které přehrávat CD audio (výchozí: 0 = první jednotka)
- --joystick[=ČÍSLO] Povolí vstup z joysticku (výchozí: 0 = první joystick)
- --platform=SLOVO Určí platformu hry (povolené hodnoty: 2gs, 3do, acorn, amiga, atari, c64, fmtowns, mac, nes, pc, pce, segacd, windows)
- --savepath=CESTA Cesta, kde jsou umístěny uložené hry
- --extrapath=CESTA Dodatečná cesta pro další data hry
- --soundfont=SOUBOR Vybere SoundFont pro přehrávání MIDI (Podporováno pouze některými ovladači MIDI)
- --multi-midi Povolí kombinaci AdLib a přirozeného MIDI
- --native-mt32 PravĂ˝ Roland MT-32 (zakĂĄĹže emulaci GM)
- --enable-gs Povolí režim Roland GS pro přehrávání MIDI
- --output-rate=FREKVENCE Výstupní vzorkovací kmitočet v Hz (např. 22050)
- --opl-driver=OVLADAČ Vybere emulátor AdLib (OPL) (db, mame)
- --aspect-ratio Povolí korekci poměru stran
- --render-mode=REŽIM Povolí dodatečné režimy vykreslení (cga, ega, hercGreen, hercAmber, amiga)
- --alt-intro PouĹžije alternativnĂ­ intro pro CD verze Beneath a Steel Sky a Flight of the Amazon Queen
- --copy-protection Povolí ochranu proti kopírování v hrách, když ji ScummVM standardně zakazuje.
- --talkspeed=ČÍSLO Nastaví zdržení mluvení v hrách SCUMM, nebo rychlost mluvení v jiných hrách (výchozí: 60)
- --demo-mode SpustĂ­ reĹžim dema v Maniac Mansion (KlasickĂĄ verze)
- --tempo=NUM Nastaví rychlost hudby (v procentech, 50-200) pro hry SCUMM (výchozí: 100)
-
-
-Význam všech dlouhých možností (to jsou ty, které začínají dvojitou pomlčkou) může být převrácen, když před ně přidáte "no-". Například,
---no-aspect-ratio vypne korekci poměru stran. To je užitečné, když chcete potlačit nastavení v souboru.
-
-Krátké jméno hry ('cíl hry'), který vidíte na konci příkazového řádku, určuje, která hra je spuštěna. Buď odpovídá libovolnému cíli určeného uživatelem (ze souboru s nastavením), nebo zabudovanému id hry. Krátký seznam zabudovaných id může být nalezen v části list 3.0.
-
-Příklady:
- * Win32:
- Spuštění Monkey Island, celá obrazovka, z pevného disku:
- C:\Games\LucasArts\scummvm.exe -f -pC:\Games\LucasArts\monkey\ monkey
- Spuštění Full Throttle z CD, celá obrazovka a se zapnutými titulky:
- C:\Games\LucasArts\scummvm.exe -f -n -pD:\resource\ ft
-
- * Unix:
- Spuštění Monkey Island, celá obrazovka, z pevného disku:
-
- /path/to/scummvm -f -p/games/LucasArts/monkey/ monkey
- Spuštění Full Throttle z CD, celá obrazovka a se zapnutými titulky:
- /path/to/scummvm -f -n -p/cdrom/resource/ ft
-
-
-5.2) Volby jazyka:
----- -------------
-ScummVM obsahuje volby jazyka pro Maniac Mansion, Zak McKracken,
-The Dig, The Curse of Monkey Island, Beneath a Steel Sky a
-Broken Sword.
-
-Nezapomeňte, že kromě Beneath a Steel Sky, Broken Sword, mnohajazykové verze her Goblins a Nippon Safes Inc., použití této možnosti *nezmění* jazyk hry (který je většinou pevně zakódován), ale spíše je použita pro vybrání správného písma (např. pro německou verzi obsahující přehlásky).
-
-Výjimky jsou The Dig a The Curse of Monkey Island -- neanglickÊ
-Verze mohou být nastaveny na 'English'. Nicméně toto ovlivňuje pouze titulky; řeč ve hře zůstane stejná.
-
-Maniac Mansion a Zak McKracken
- en - Angličtina (výchozí)
- de - Němčina
- fr - FrancouzĹĄtina
- it - ItalĹĄtina
- es - Španělština
-
-The Dig
- jp - JaponĹĄtina
- zh - Čínština
- kr - KorejĹĄtina
-
-The Curse of Monkey Island
- en - Angličtina (výchozí)
- de - Němčina
- fr - FrancouzĹĄtina
- it - ItalĹĄtina
- pt - PortugalĹĄtina
- es - Španělština
- jp - JaponĹĄtina
- zh - Čínština
- kr - KorejĹĄtina
-
-Beneath a Steel Sky
- gb - Angličtina (Velká Británie) (výchozí)
- en - Angličtina (USA)
- de - Němčina
- fr - FrancouzĹĄtina
- it - ItalĹĄtina
- pt - PortugalĹĄtina
- es - Španělština
- se - Ĺ vĂŠdĹĄtina
-
-Broken Sword
- en - Angličtina (výchozí)
- de - Němčina
- fr - FrancouzĹĄtina
- it - ItalĹĄtina
- pt - PortugalĹĄtina
- es - Španělština
- cz - Čeština
-
-
-5.3) GrafickĂŠ filtry:
----- ----------------
-ScummVM nabízí několik filtrů vyhlazujících hrany jako pokus o zlepšení obrazové kvality. Jsou to stejné filtry, které používá i mnoho jiných emulátorů, jako MAME. Tyto filtry vezmou původní grafiku hry a zvětší ji o určitou pevnou hodnotu (většinou 2x nebo 3x) než ji Vám zobrazí. Takže například, pokud hra původně pracovala v rozlišení 320x200 (typické pro většinu her SCUMM), pak použitím filtru s faktorem zvětšení 2x, ve skutečnosti dostanete rozlišení 640x400. Podobně s filtrem 3x dostanete 960x600.
-
-Jsou to:
- 1x - Bez filtrování, bez zvětšení. Nejrychlejší.
- 2x - Bez filtrování, zvětšení 2x (výchozí pro hry 640x480).
- 3x - Bez filtrování, zvětšení 3x.
- 2xsai - Filtr 2xSAI, zvětšení 2x.
- super2xsai – Vylepšené filtrování 2xSAI, zvětšení 2x.
- supereagle – Méně rozostřený než 2xSAI, ale pomalejší. Zvětšení 2x.
- advmame2x - Nespoléhá na rozostření jako 2xSAI, rychlé. Zvětšení 2x.
- advmame3x - Nespoléhá na rozostření jako 2xSAI, rychlé. Zvětšení 3x.
- hq2x - Velmi hezká vysoká kvalita, ale pomalý. Zvětšení 2x.
- hq3x - Velmi hezká vysoká kvalita, ale pomalý. Zvětšení 3x.
- tv2x - Filtr prokládání, snaží se emulovat TV. Zvětšení 2x.
- dotmatrix - Efekt bodové matice. Zvětšení 2x.
-
-Abyste filtr vybrali, zvolte ho ve spouštěči, nebo předejte scummvm jeho jméno pomocí možnosti '-g', například:
-
- scummvm -gadvmame2x monkey2
-
-Poznámka #1: Ne všechny jádra podporují všechny (nebo dokonce žádné) z filtrů vypsaných výše; některé mohou podporovat i další. Filtry vypsané výše jsou ty podporované standardním jádrem SDL.
-
-Poznámka #2: Filtry mohou být velmi pomalé, když je ScummVM sestaven v nastavení pro ladění bez optimalizací. Použití jakékoliv formy vyhlazení hran/lineárního filtrování bude mít vždycky dopad na rychlost.
-
-Poznámka #3: Verze FM-TOWNS hry Zak McKracken má původní rozlišení 320x240, což znamená, že filtry v této hře budou zvětšovat na 640x480
-nebo 960x720. Obdobně hry, které mají původní rozlišení 640x480 (jako
-Curse of Monkey Island nebo Broken Sword) budou zvětšeny na 1280x960 a
-1920x1440.
-
-
-5.4) GlobĂĄlnĂ­ menu:
----- --------------
-Globální Menu je obecné menu, které je dostupné všem jádrům her stisknutím Ctrl-F5. Z tohoto menu jsou dostupné následující tlačítka: Pokračovat, Volby, O programu, Návrat do Spouštěče, a Ukončit. Výběrem
-'Volby' bude zobrazeno dialogové okno, kde můžou být upravena základní nastavení zvuku, jako hladiny hlasitosti. Výběrem 'Návrat do Spouštěče' současnou hru ukončí a uživatele navrátí do spouštěče ScummVM, kde může být vybrána další hra ke hraní.
-
-Poznámka: Návrat do Spouštěče není podporován všemi jádry a tlačítko nebude v Globálním Menu funkční, pokud není podporováno.
-
-Jádra, která v současnosti podporují návrat do spouštěče, jsou:
-
- AGI
- AGOS
- CINE
- COMPOSER
- CRUISE
- DRACI
- DRASCULA
- GOB
- GROOVIE
- HUGO
- KYRA
- LURE
- MADE
- MOHAWK
- PARALLACTION
- QUEEN
- SAGA
- SCI
- SCUMM
- SKY
- SWORD1
- SWORD2
- TEENAGENT
- TOUCHE
- TSAGE
- TUCKER
-
-
-5.5) KlĂĄvesovĂŠ zkratky:
----- ------------------
-ScummVM podporuje různé zkratky ve hře. Liší se mezi různými hrami SCUMM a jinými hrami.
-
- Společné:
- Ctrl-F5 - ZobrazĂ­ GlobĂĄlnĂ­ Menu
- Cmd-q - Ukončit (Mac OS X)
- Ctrl-q - Ukončit (další unixy včetně Linux)
- Ctrl-z OR Alt-x - Quit (dalĹĄĂ­ platformy)
- Ctrl-u - ZeslabĂ­ vĹĄechny zvuky
- Ctrl-m - Přepínat zachycení myši
- Ctrl-Alt 1-8 - Přepínat mezi grafickými filtry
- Ctrl-Alt + and - - Zvětšit/Zmenšit faktor zvětšení
-Ctrl-Alt a - Přepínat korekci poměru stran. Většina her používá rozlišení 320x200 pixelů, což může na většině novějších monitorů vypadat splácle. Korekce poměru stran obraz roztáhne, aby místo toho použil 320x240, nebo jeho násobky
- Alt-Enter - Přepíná celou obrazovku/do okna
- Alt-s - Vytvořit snímek obrazovky (pouze jádro SDL)
-
- SCUMM:
- Ctrl 0-9 and Alt 0-9 - NahrĂĄt a uloĹžit stav hry
- Ctrl-d - Spustit ladění
- Ctrl-f - Zapnout rychlĂ˝ reĹžim
- Ctrl-g - Přepnout do velmi VELMI rychlého režimu
- Ctrl-t - Přepínat mezi 'Pouze řeč',
- 'Řeč a Titulky' a 'Pouze titulky'
- Tilda (~) - Zobrazit/skrýt konzoli ladění
- [ and ] - Hlasitost hudby, zvýťit/sníŞit
- - and + - Rychlost textu, pomalejĹĄĂ­/rychlejĹĄĂ­
- F5 - Zobrazí rámeček pro uložení/načtení
- Alt-F5 - Zobrazí původní rámeček pro uložení/načtení, pokud hra nějaký má. Zde můžete hru načíst i uložit, nicméně pro tento účel není určen a v některých hrách může způsobit pád ScummVM.
- i - ZobrazĂ­ IQ body (Indiana Jones and the Last Crusade a Indiana Jones and the Fate of Atlantis)
- MezernĂ­k - PozastavenĂ­
- Tečka (.) - V některých hrách přeskočí současný řádek textu
- Enter - Simulovat stisknutí levého tlačítka myši
- Tab - Simulovat stisknutí pravého tlačítka myši
-
- Beneath a Steel Sky:
- Ctrl-d - Spustí ladění
- Ctrl-f - Zapnout rychlĂ˝ reĹžim
- Ctrl-g - Přepnout do velmi VELMI rychlého režimu
- F5 - Zobrazí rámeček pro uložení/načtení
- Escape - Přeskočí úvod hry
- Period (.) - Přeskočí současný řádek textu
-
- Broken Sword:
- F5 nebo Escape - Zobrazí rámeček pro uložení/načtení
-
- Broken Sword II:
- Ctrl-d - Spustit ladění
- Ctrl-f - Zapnout rychlĂ˝ reĹžim
- p - PozastavenĂ­
-
- Dračí Historie:
- F5 - ZobrazĂ­ GlobĂĄlnĂ­ Menu
- LevĂŠ klinutĂ­ - JĂ­t, zkoumat
- PravÊ klinutí - PouŞít, mluvit
- Posun myši nahoru, i - Inventář
- Posun myĹĄi dolĹŻ, m - Mapa
- Escape - Přeskočí úvod, odejde z mapy/inventáře
- Jakékoliv kliknutí - Přeskočí současně dabovanou větu
- q - ZapnutĂ­/vypnutĂ­ rychlĂŠho chozenĂ­
-
- Flight of the Amazon Queen:
- Ctrl-d - Spustit ladění
- Ctrl-f - Zapnout rychlĂ˝ reĹžim
- F1 - Použít Deník (ukládání/načítání)
- F11 - Rychlé načtení
- F12 - RychlĂŠ uklĂĄdĂĄnĂ­
- Escape - Přeskočí video
- Mezerník - Přeskočí současný řádek textu
-
- Future Wars
- F1 - Prozkoumat
- F2 - VzĂ­t
- F3 - Inventář
- F4 - PouŞít
- F5 - Aktivovat
- F6 - Mluvit
- F9 - Menu "Aktivovat"
- F10 - Menu "PouŞít"
- Escape - Zobrazit menu příkazů
-
- Nippon Safes
- Ctrl-d - Spustit ladění
- l - Načíst hru
- s - UloĹžit hru
-
- Simon the Sorcerer 1 a 2:
- Ctrl 0-9 a Alt 0-9 - Načíst a uložit stav hry
- Ctrl-d - Spustit ladění
- Ctrl-f - Zapnout rychlĂ˝ reĹžim
- F1 - F3 - Rychlost textu, rychlejĹĄĂ­ - pomalejĹĄĂ­
- F10 - Zobrazí všechny postavy a objekty s kterými můžete něco dělat
- Escape - Přeskočit videa
- - a + - Hlasitost hudby, sníŞit/zvýťit
- m - Hudba vypnout/zapnout
- s - ZvukovĂŠ efekty zapnout/vypnout
- b - Zvuky pozadĂ­ zapnout/vypnout [Pouze Simon the Sorcerer 2]
- Pause - PozastavenĂ­
- t - Přepínat mezi řečí a kombinací řeči a titulků [Simon the Sorcerer 1 CD (jiné než angličtina a němčina) a Simon the Sorcerer 2 CD (všechny jazyky)]
- v - Přepínat mezi titulky a kombinací řeči a titulků [Pouze Simon the Sorcerer 2 CD]
-
- Simon the Sorcerer's Puzzle Pack
- Ctrl-d - Spustit ladění
- Ctrl-f - Zapnout rychlĂ˝ reĹžim
- F12 - Zapnout/vypnout reĹžim rychle rychlosti ve Swampy Adventures
- - a + - Hlasitost hudby, sníŞit/zvýťit
- m - Hudba vypnout/zapnout
- s - ZvukovĂŠ efekty zapnout/vypnout
- Pause - PozastavenĂ­
-
- The Feeble Files
- Ctrl-d - Spustit ladění
- Ctrl-f - Zapnout rychlĂ˝ reĹžim
- F7 - Vyměnit postavy
- F9 - Zapnout/vypnout jmĂŠna hitboxĹŻ
- s - ZvukovĂŠ efekty zapnout/vypnout
- Pause - PozastavenĂ­
- t - Přepínat mezi řečí a kombinací řeči a titulků
- v - Přepínat mezi titulky a kombinací řeči a titulků
-
- The Legend of Kyrandia:
- Ctrl 0-9 and Alt 0-9 - Načíst a uložit stav hry
-
- Ctrl-d - Spustit ladění
-
- TeenAgent
- F5 - ZobrazĂ­ GlobĂĄlnĂ­ Menu
-
- Touche: The Adventures of the Fifth Musketeer:
- Ctrl-f - Zapnout rychlĂ˝ reĹžim
- F5 - Zobrazit moĹžnosti
- F9 - Zapnout reĹžim rychlĂŠ chĹŻze
- F10 - Vypnout reĹžim rychlĂŠ chĹŻze
- Escape - Ukončit
- Mezerník - Přeskočí současný řádek textu
- t - Přepnout mezi 'Pouze Řeč',
- 'Řeč a Text' a ' Pouze Text'
-
-Nezapomeňte, že používání Ctrl-f nebo Ctrl-g není doporučeno: hry mohou spadnout, když běží rychlostí vyšší než jejich normální, protože skripty ztratí synchronizaci.
-
-Poznámka pro uživatele WinCE: Kvůli omezenému vstupu z klávesnice ve většině zařízení je malé množství klávesových zkratek podporováno pomocí znovu mapování a/nebo činností panelů. Prosím přečtěte si soubor README-WinCE.txt.
-
-
-6.0) UloĹženĂŠ hry:
----- ------------
-Uložené hry jsou na některých platformách standardně umístěny do současné složky a v jiných do přednastavené složky. To můžete určit v souboru s nastavením pomocí parametru savepath. Podívejte se na vzorový soubor s nastavením dále v tomto souboru.
-
-Platformy, které v současnosti mají jiné výchozí složky jsou:
- Mac OS X:
- $HOME/Documents/ScummVM Savegames/
-
- JinĂŠ unixy:
- $HOME/.scummvm/
-
- Windows Vista/7:
- \Users\uĹžjmĂŠno\AppData\Roaming\ScummVM\Saved games\
-
- Windows 2000/XP:
- \Documents and Settings\uĹžjmĂŠno\Application Data\ScummVM\Saved games\
-
- Windows NT4:
- <windir>\Profiles\uĹžjmĂŠno\Application Data\ScummVM\Saved games\
-
-UloĹženĂŠ hry jsou ve Windows NT4/2000/XP/Vista/7 uklĂĄdĂĄny ve skrytĂŠ sloĹžce,
-do které můžete vstoupit spuštěním "%APPDATA%\ScummVM\Saved Games\" nebo
-povolením zobrazení skrytých sloŞek v Průzkumníku Windows.
-
-Poznámka pro uživatele Windows NT4/2000/XP/Vista/7: Výchozí umístění uložených her
-bylo ve ScummVM 1.5.0 změněno. Dávkový soubor přesunu může být použit pro zkopírování
-uložených her ze starého výchozího umístění do nového.
-
-6.1) 6.1 AutomatickĂŠ uklĂĄdĂĄnĂ­:
----- -------------------------
-V některých hrách, (a to "Beneath a Steel Sky", "Flight of the Amazon
-Queen", všechny hry AGI, a všechny hry SCUMM), bude ScummVM standardně automaticky ukládat současný stav každých pět minut (upravitelné pomocí nastavení "autoukládání"). Pro jádra AGI a SCUMM, je bude ukládat do pozice 0. V jádru SCUMM může být tento uložený stav znovu načten pomocí Ctrl-0 nebo menu F5.
-
-
-6.2) Převod uložených her:
----- ---------------------
-PouŞití uloŞených her z původních verzí není podporovåno vťemi jådry. Pouze nåsledující hry mohou pouŞít původní verze.
-
- Elvira 1
- - Přidejte 8 bajtů (název uložené hry) na začátek souboru uložené hry
- - Přejmenujte ho na 'elvira1.xxx'
-
- Elvira 2
- - Přidejte 8 bajtů (název uložené hry) na začátek souboru uložené hry
- - Přejmenujte ho na 'elvira2-pc.xxx' (verze DOS) nebo 'elvira2.xxx' (Jiné verze)
-
- Waxworks
- - Přidejte 8 bajtů (název uložené hry) na začátek souboru uložené hry
- - Přejmenujte ho na 'waxworks-pc.xxx' (verze DOS) nebo 'waxworks.xxx' (Jiné verze)
-
- Simon the Sorcerer 1
- - Přejmenuje soubor uložené hry na 'simon1.xxx'
-
- Simon the Sorcerer 2
- - Přejmenuje soubor uložené hry na 'simon2.xxx'
-
- The Feeble Files
- - Přejmenuje soubor uložené hry na 'feeble.xxx'
-
-Kde 'xxx' je číslo pozice uložené hry (tj. 001) ve ScummVM
-
-
-6.3) Zobrazení/Načtení uložených her z příkazového řádku:
----- ----------------------------------------------------
-
---list-saves:
-
- Tento přepínač může být použit k zobrazení seznamu současných uložených her určené cílové hry a její odpovídající pozice.
-
- Použití: --list-saves=[CÍL], kde [CÍL] je cílová hra.
-
- Jádra, která v současnosti podporují --list-saves jsou:
-
- AGI
- AGOS
- CGE
- CINE
- CRUISE
- DRACI
- GROOVIE
- HUGO
- KYRA
- LURE
- MOHAWK
- PARALLACTION
- QUEEN
- SAGA
- SCI
- SCUMM
- SKY
- SWORD1
- SWORD2
- TEENAGENT
- TINSEL
- TOON
- TOUCHE
- TSAGE
- TUCKER
-
---save-slot/-x:
-
- Tento přepínač může být použit k načtení uložené hry přímo z příkazového řádku.
-
- Použití: --save-slot[POZICE] nebo -x[POZICE], kde [POZICE] je číslo uložené pozice.
-
- Jádra, která v současnosti podporují--save-slot/-x jsou:
-
- AGI
- CGE
- CINE
- CRUISE
- DRACI
- GROOVIE
- HUGO
- KYRA
- LURE
- MOHAWK
- QUEEN
- SAGA
- SCI
- SCUMM
- SKY
- SWORD1
- SWORD2
- TEENAGENT
- TINSEL
- TOON
- TOUCHE
- TSAGE
- TUCKER
-
-
-7.0) Hudba a Zvuk:
----- -------------
-Ve většině operačních systémů a pro většinu her bude ScummVM standardně používat MT-32 nebo emulaci AdLib pro přehrávání hudby. MIDI nemusí být
-Dostupné ve všech operačních systémech, nebo potřebuje ruční nastavení. Pokud chcete MIDI použít, máte několik různých voleb pro výstup, v závislosti na Vašem operačním systému a nastavení.
-
- null - Prázdný výstup. Nepřehrávat žádnou hudbu.
- adlib - Vnitřní emulace AdLib
- fluidsynth – Emulace FluidSynth MIDI
- mt32 - Vnitřní emulace MT-32
- pcjr - Vnitřní emulace PCjr (použitelné pouze ve hrách SCUMM)
- pcspk - Vnitřní emulace reproduktoru PC
- towns - Vnitřní emulace FM-TOWNS YM2612
- (pouĹžitelnĂŠ pouze v hrĂĄch SCUMM FM-TOWNS)
- alsa - Výstup pomocí zařízení sekvencéru ALSA. Viz níže.
- core - Zvuk CoreAudio, pro uĹživatele Mac OS X.
- coremidi - Zvuk CoreMIDI, pro uŞivatele Mac OS X. PouŞívejte pouze, pokud måte hardwarový syntetizåtor MIDI.
- seq - PouĹžitĂ­ /dev/sequencer pro MIDI v systĂŠmu *nix. Viz nĂ­Ĺže
- timidity - Připojení k MIDI serveru TiMidity++. Viz níže.
- windows - Windows MIDI. PouĹžije zabudovanĂ˝ sekvencĂŠr, pro Windows
-
-Abyste vybrali ovladač zvuku, zvolte ho ve spouštěči, nebo předejte jeho jméno ScummVM pomocí možnosti '-e', například:
-
- scummvm -eadlib monkey2
-
-
-7.1) Přehrávání zvuku pomocí emulace AdLib:
----- --------------------------------------
-Standardně bude karta AdLib emulována a ScummVM hudbu přehrává jako vzorkované vlny. To je výchozí režim pro většinu her a nabízí nejlepší kompatibilitu mezi stroji a hrami.
-
-
-7.2) Přehrávání zvuku pomocí emulace FluidSynth MIDI:
----- ------------------------------------------------
-Pokud byl ScummVM sestaven s podporou libfluidsynth bude schopen přehrávat hudbu MIDI pomocí ovladače FluidSynth. Budete muset ale určit, který SoundFont použít.
-
-ProtoŞe výchozí hlasitost výstupu od FluidSynth můŞe být velmi nízkå,
-ScummVM standardně nastaví zvýšení, aby dostal silnější signál. To může být dále upaveno použitím možnosti příkazového řádku --midi-gain, nebo nastavením "midi_gain" v konfiguračním souboru.
-
-Nastavení může nabývat hodnoty od 0 po 1000 a výchozí je 100. (Toto odpovídá nastavení zvýšení FluidSynth's 0.0 až 10.0, což je pravděpodobně měřeno v decibelech.)
-
-POZNÁMKA: Požadavky na procesor pro FluidSynth můžou být v některých případech dosti vysoké. Je doporučeno mít rychlé CPU.
-
-
-7.3) Přehrávání zvuku pomocí emulace MT-32:
----- --------------------------------------
-Některé hry, které obsahují hudební data MIDI, také mají vylepšené stopuy určené pro zvukový modul MT-32. ScummVM může toto zařízení nyní emulovat, nicméně aby toto zařízení fungovalo, musíte mít původní ROMy MT-32:
-
-MT32_PCM.ROM - IC21 (512KB)
-MT32_CONTROL.ROM - IC26 (32KB) a IC27 (32KB), proklĂĄdanĂŠ podle bajtu
-
-Tyto ROMy umístěte do herního adresáře, ve Vaší dodatečné cestě, nebo v adresáři, kde je umístěn spouštěč ScummVM.
-
-S tímto ovladačem nemusíte zadávat --native-mt32, protože je automaticky zapnut.
-
-POZNÁMKA: PoŞadavky na procesor pro emulåtor jsou velmi vysokÊ; rychlÊ
-CPU je velmi doporučeno.
-
-
-7.4) Přehrávání zvuku pomocí emulace MIDI:
----- -------------------------------------
-Některé hry (jako Sam & Max) obsahují pouze hudební data MIDI. Toto bránilo, aby hudba v těchto hrách fungovala na platformách, které MIDI nepodporují, nebo na zvukových kartách, které neposkytují ovladače MIDI (např. mnoho zvukových karet nebude v Linuxu MIDI přehrávat). ScummVM nyní může MIDI emulovat pomocí vzorkovaných vln a AdLib, emulaci MIDI FluidSynth nebo emulace MT-32 pomocí možností -eadlib, -efluidsynth nebo -emt32 v tomto pořadí. Nicméně pokud máte možnost použít přirozené MIDI, doporučujeme použít jeden z režimů MIDI níže pro nejlepší zvuk.
-
-
-7.5) Přehrávání zvuku pomocí emulace Přirozeného MIDI:
----- -------------------------------------------------
-Použijte vhodnou možnosti příkazového řádku -e<režim> ze seznamu výše pro vybrání Vašeho upřednostňovaného zařízení MIDI. Například pokud chcete použít ovladač Windows MIDI, použijte možnost -ewindows.
-
-
-7.5.1) Použití možností MIDI k přizpůsobení výstupu přirozené MIDI:
------- ------------------------------------------------------------
-ScummVM podporuje různé režimy MIDI v závislosti na schopnostech Vašeho zařízení MIDI.
-
-Pokud je zadáno --native-mt32, ScummVM se k Vašemu zařízení bude chovat jako ke skutečné MT-32. Protože mapování instrumentů a výhradní systémové příkazy MT-32 se liší od zařízení General MIDI, tuto možnost byste měli povolit, pouze když používáte skutečné Roland MT-32, LAPC-I,CM-64, CM-32L, CM-500, nebo zařízení GS s mapou MT-32.
-
-Pokud je zadáno --enable-gs, ScummVM zavede Vaše zařízení kompatibilní s GS pomocí nastavení, která napodobují nastavení dozvuku MT-32, (nedostatek) chóru, citlivost ohýbaní tónu, atd. Pokud je toto společně použito s --native-mt32, ScummVM vybere mapu kompatibilní s MT-32 a bicí soupravu na Vašem zařízení GS. Toto nastavení funguje lépe než standardní emulace GM nebo GS ve hrách, které nemají vlastní mapování instrumentů (Loom a Monkey1). Obě nastavení byste měli použít pouze tehdy, pokud máte zařízení GS, které má mapu MT-32, jako SC-55, SC-88, SC-88 Pro, SC-8820, SC-8850, atd. Nezapomeňte, že --enable-gs je automaticky zakázáno v DOTT a Samnmax, protože samostatně používají General MIDI.
-
-Pokud není ani jedna z možností výše povolena, ScummVM Vaše zařízení zavede v režimu General MIDI a použije emulaci GM v hrách se zvukovým doprovodem MT-32.
-
-Některé hry obsahují zvukové efekty pouze v AdLib. Pro tyto hry, byste měli zadat --multi-midi, abyste zkombinovali hudbu MIDI se zvukovými efekty AdLib.
-
-
-7.6) Přehrávání zvuku pomocí Sekvencéru MIDI: [POUZE UNIX]
----- ----------------------------------------
-Pokud Váš ovladač podporuje sekvencér, můžete nastavit proměnnou prostředí "SCUMMVM_MIDI" na Vašem zařízení sekvencéru – například na /dev/sequencer
-
-Pokud máte problém se zvukem v tomto nastavení, možná budete muset nastavit proměnnou prostředí "SCUMMVM_MIDIPORT" na 1 nebo 2. Toto vybere port, který bude použit ve zvoleném sekvencéru. Pak spusťte scummvm s parametrem -eseq. To by mělo fungovat pro několik karet a může nabízet lepší výkon a kvalitu, než emulace AdLib. Nicméně pro systémy, kde podpora sekvencéru nefunguje, můžete vždycky přejít na emulaci AdLib.
-
-
-7.6.1) Přehrávání zvuku pomocí Sekvencéru ALSA: [POUZE UNIX]
------- ----------------------------------------
-Pokud Máte nainstalován ovladač ALSA s podporou sekvencéru, pak můžete nastavit proměnnou prostředí "SCUMMVM_PORT" nebo proměnnou souboru s nastavením "alsa_port" pro určení portu Vašeho sekvencéru. Pokud ani jedno není nastaveno, jsou standardně vyzkoušeny oba porty "65:0" a "17:0".
-
-Zde je krátký návod, jak sekvencér použít s Vaší zvukovou kartou. Ve všech případech, pro získání seznamu všech portů sekvencéru, zkuste příkaz "aconnect -o -l". To by mělo mít výstup podobný tomuto:
-
-client 14: 'Midi Through' [type=kernel]
- 0 'Midi Through Port-0'
-client 16: 'SBLive! Value [CT4832]' [type=kernel]
- 0 'EMU10K1 MPU-401 (UART)'
-client 17: 'Emu10k1 WaveTable' [type=kernel]
- 0 'Emu10k1 Port 0 '
- 1 'Emu10k1 Port 1 '
- 2 'Emu10k1 Port 2 '
- 3 'Emu10k1 Port 3 '
-client 128: 'TiMidity' [type=user]
- 0 'TiMidity port 0 '
- 1 'TiMidity port 1 '
- 2 'TiMidity port 2 '
- 3 'TiMidity port 3 '
-
-Nejdůležitější část zde je, že existují čtyři výstupy WaveTable MIDI umístěné na 17:0, 17:1, 17:2 a 17:3, a čtyři porty TiMidity umístěné na 128:0, 128:1, 128:2 a 128:3.
-
-Pokud na Vaší kartě máte čip FM FM, jako třeba SB16, pak musíte načíst SoundFonts pomocí softwaru sbiload. Například:
-
- sbiload -p 17:0 /etc/std.o3 /etc/drums.o3
-
-Pokud je Vaše karta schopná používat WaveTable, musíte načíst SoundFont sbk nebo sf2 pomocí softwaru sfxload nebo asfxload. Například:
-
- sfxload /cesta/k/8mbgmsfx.sf2
-
-Pokud Vaše karta neumí s MIDI pracovat, existují dvě možnosti: FluidSynth a TiMidity. Doporučujeme FluidSynth, protože v mnoha systémech bude TiMidity 'zaostávat' za hudbou. To je velmi znatelné v hrách používající
-iMUSE, který používá rychlé a dynamické přechody hudby.
-Spuštěním TiMidity jako root mu umožní nastavit prioritu v reálném čase, což může zaostávání snížit.
-
-Příkaz pro TiMidity, aby se stal sekvencérem ALSA:
-
- timidity -iAqqq -B2,8 -Os1S -s 44100 &
-
-(Pokud s tímto nastavením dostáváte zkreslený výstup, můžete zkusit vynechat -B2,8 nebo změnit hodnotu.)
-
-Příkaz pro TiMidity, aby se stal sekvencérem ALSA (použitím SoundFonts):
-
- fluidsynth -m alsa_seq /cesta/k/8mbgmsfx.sf2
-
-Jakmile je TiMidity nebo FluidSynth spuštěn, použijte příkaz 'aconnect -o -l' jak je pospáno výše v této části.
-
-
-7.6.2) Přehrávání zvuku pomocí Sekvencéru IRIX dmedia: [POUZE UNIX]
------- -----------------------------------------------
-Pokud používáte IRIX a ovladač dmedia s podporou sekvencéru, můžete nastavit proměnnou prostředí "SCUMMVM_MIDIPORT" nebo proměnnou souboru s nastavením "dmedia_port" pro určení portu Vašeho sekvencéru. Standardně je použit první port.
-
-Abyste získali seznam nastavených rozhraní midi ve Vašem systému, spusťte příkaz "startmidi" bez parametrů. Vzorový výstup:
-
- 2 MIDI interfaces configured:
- Serial Port 2
- Software Synth
-
-V tomto případě můžete ScummVM nastavit, aby použil "Software Synth" místo standardního "Serial Port 2" přidáním řádku
-
- dmedia_port=Software Synth
-
-do Vašeho souboru s nastavením v části [scummvm], nebo nastavením SCUMMVM_PORT=Software Synth ve Vašem prostředí.
-
-
-7.7) PouĹžitĂ­ MIDI serveru TiMidity++:
----- --------------------------------
-Pokud na Vašem systému chybí jakýkoliv sekvencér MIDI, ale přesto chcete lepší kvalitu MIDI, než kterou může nabídnout standardní emulace AdLib, můžete zkusit MIDI server TiMidity++. Prohlédněte si http://timidity.sourceforge.net/ pro stažení a pokyny k instalaci.
-
-Nejdříve musíte spustit daemona:
-
- timidity -ir 7777
-
-Nyní můžete spustit ScummVM a zkusit vybrat TiMidity jako výstup pro hudbu. Standardně se připojí k localhost:7777, ale hostitele/port můžete změnit pomocí proměnné prostředí "TIMIDITY_HOST". Můžete také určit
-"číslo zařízení" použitím proměnné "SCUMMVM_MIDIPORT".
-
-
-7.8) PouŞití komprimovaných zvukových souborů
----- ----------------------------------------
-
-7.8.0) PouĹžitĂ­ souborĹŻ MP3 pro CD audio:
------- ---------------------------------
-PouĹžijte LAME nebo jinĂ˝ kodĂŠr MP3 pro vyjmutĂ­ stop cd audio do souborĹŻ.
-Soubory pojmenujte track1.mp3 track2.mp3 atd. ScummVM musí být sestaven s podporou MAD pro použití této možnosti. Soubory budete muset z CD vyjmout ve formátu WAV, pak je převést do formátu MP3 v konstantní přenosové rychlosti. To může být provedeno pomocí následujícího příkazového řádku:
-
- lame -t -q 0 -b 96 track1.wav track1.mp3
-
-
-7.8.1) PouĹžitĂ­ souborĹŻ Ogg Vorbis pro CD audio:
------- ----------------------------------------
-Použijte oggenc nebo jiný kodér vorbis k převedení zvukových stop do souborů. Pojmenujte je track1.ogg track2.ogg atd. ScummVM musí být sestaven s podporou vorbis pro použití této možnosti. Soubory budete muset z CD vyjmout ve formátu WAV, pak je převést do formátu vorbis. To může být provedeno pomocí následujícího příkazového řádku pro oggenc, kde hodnota po q určuje požadovanou kvalitu od 0 do 10:
-
- oggenc -q 5 track1.wav
-
-
-7.8.2) PouĹžitĂ­ souborĹŻ Flac pro CD audio:
------- ----------------------------------
-Použijte flac nebo jiný kodér flac k převedení zvukových stop do souborů.
-Pojmenujte je track1.flac track2.flac atd. Pokud Váš souborový systém podporuje přípony pouze se třemi písmeny, pojmenujte je track1.fla track2.fla atd. ScummVM musí být sestaven s podporou flac pro použití této možnosti. Soubory budete muset z CD vyjmout ve formátu WAV, pak je převést do formátu flac. To může být provedeno pomocí následujícího příkazového řádku pro flac:
-
- flac --best track1.wav
-
-Nezapomeňte, Şe kvalita bude vŞdy stejnå, různÊ moŞnosti kodÊru ovlivňují dobu kódovåní a výslednou velikost souboru.
-
-
-7.8.3) KomprimovĂĄnĂ­ MONSTER.SOU pomocĂ­ MP3:
------- ------------------------------------
-Potřebujete LAME a náš nástroj 'compress_scumm_sou' z balíčku
-scummvm-tools, abyste toto mohli provÊst a ScummVM musí být sestaven s podporou MAD.
-
- compress_scumm_sou monster.sou
-
-Nakonec dostanete mnohem menĹĄĂ­ soubor monster.so3, tento soubor zkopĂ­rujte do VaĹĄĂ­ sloĹžky hry. Pak mĹŻĹžete soubor monster.sou odstranit.
-
-
-7.8.4) KomprimovĂĄnĂ­ MONSTER.SOU pomocĂ­ Ogg Vorbis:
------- -------------------------------------------
-Tak jako výťe, ale ScummVM musí být sestaven s podporou OGG. Spusżte:
-
- compress_scumm_sou --vorbis monster.sou
-
-To by mělo vytvořit menší soubor monster.sog file, který byste měli zkopírovat do složky hry. Kódování Ogg může trvat mnohem déle než u MP3, takže mějte po ruce dobrou knížku.
-
-
-7.8.5) KomprimovĂĄnĂ­ MONSTER.SOU pomocĂ­ Flac:
------- -------------------------------------
-Tak jako výťe, ale ScummVM musí být sestaven s podporou Flac. Spusżte:
-
- compress_scumm_sou --flac monster.sou
-
-To by mělo vytvořit menší soubor monster.sof, který byste měli zkopírovat do složky hry. Nezapomeňte, že kvalita bude vždy stejná, různé možnosti kodéru ovlivňují dobu kódování a výslednou velikost souboru. Změna velikosti bloku (-b <hodnota>), má největší vliv na výslednou velikost souboru -- 1152 se zdá být dobrá hodnota pro tento druh zvukových souborů. Přečtěte si dokumentaci kodéru předtím, než použijete další hodnoty.
-
-
-7.8.6) KomprimovĂĄnĂ­ hudby/zvuku/hlasu v hrĂĄch AGOS:
------- --------------------------------------------
-Pro tento úkol použijte náš nástroj 'compress_agos' z balíčku scummvm-tools. Můžete volit mezi několika cílovými formáty, ale nezapomeňte, že je můžete použít pouze tehdy, když ScummVM byl sestaven se zapnutou podporou konkrétního dekodéru.
-
- compress_agos effects (Pro CD verzi Simon 1 od Acorn)
- compress_agos simon (Pro CD verzi Simon 1 od Acorn)
- compress_agos effects.voc (Pro DOS CD verzi Simon 1)
- compress_agos simon.voc (Pro DOS CD verzi Simon 1)
- compress_agos simon.wav (Pro Windows CD verzi Simon 1)
- compress_agos simon2.voc (Pro DOS CD verzi Simon 2)
- compress_agos simon2.wav (Pro Windows CD verzi Simon 2)
- compress_agos mac (Pro Macintosh verzi Simon 2)
-
- compress_agos voices1.wav (Pro Windows verzi Feeble na 2CD/4CD)
- compress_agos voices2.wav (Pro Windows verzi Feeble na 2CD/4CD)
- compress_agos voices3.wav (Pro Windows verzi Feeble na 4CD)
- compress_agos voices4.wav (Pro Windows verzi Feeble na 4CD)
-
- compress_agos Music (Pro Windows verzi Puzzle Pack)
-
-Pro Ogg Vorbis přidejte k volbám --vorbis, tj.
-
- compress_agos --vorbis
-
-Pro Flac přidejte k volbám --flac a dodatečné parametry, tj.
-
- compress_agos --flac
-
-Nakonec dostanete mnohem menší soubor *.mp3, *.ogg nebo *.fla, zkopírujte ho do Vaší složky hry. Starý soubor můžete bezpečné odebrat.
-
-
-7.8.7) Komprimování řeči/hudby v Broken Sword:
------- ---------------------------------------
-Nástroj 'compress_sword1' z balíčku scummvm-tools může převést hudbu a řeč do MP3, Ogg Vorbis a také Flac. Nejsnadnějším způsobem, jak soubory převést, je prosté zkopírování spouštěče do Vaší složky BS1 (spolu s kodérem lame) a pak ho odsud spustit. Tak bude všechno automaticky převedeno na MP3. Poté, můžete ručně odstranit soubory SPEECH?.CLU a hudební soubory wave.
-
-Spuštěním "compress_sword1 --vorbis" soubory zkomprimuje pomocí Ogg Vorbis místo MP3.
-
-Spuštěním "compress_sword1 --flac" soubory zkomprimuje pomocí Flac
-mĂ­sto MP3.
-
-PouĹžijte "compress_sword1 --help", abyste dostali ĂşplnĂ˝ seznam moĹžnostĂ­.
-
-
-7.8.8) Komprimování řeči/hudby v Broken Sword II:
------- ------------------------------------------
-Pro tento úkol použijte náš nástroj 'compress_sword2'. Můžete volit mezi několika cílovými formáty, ale nezapomeňte, že je můžete použít pouze tehdy, když ScummVM byl sestaven se zapnutou podporou konkrétního dekodéru.
-
- compress_sword2 speech1.clu
- compress_sword2 music1.clu
-
-Pro Ogg Vorbis přidejte --vorbis k možnostem, tj.
-
- compress_sword2 --vorbis
-
-Nakonec budete mít mnohem menší soubor *.cl3 nebo *.clg, tento soubor zkopírujte do složky hry. Starý soubor můžete bezpečné odstranit.
-
-Je možné použít Flac pro komprimaci přidáním možnosti by --flac. Nicméně výsledný soubor *.clf je ve skutečnosti větší než původní.
-
-Nezapomeňte, prosím, že compress_sword2 bude fungovat pouze se čtyřmi soubory řeči/hudby v Broken Sword II. Nebude fungovat s dalšími soubory *.clu, ani nebude fungovat se soubory řeči z Broken Sword.
-
-
-7.9) Výstupní vzorkovací kmitočet:
----- -----------------------------
-Výstupní vzorkovací kmitočet říká ScummVM, kolik vzorků zvuku má hrát v kanálu za sekundu. Je toho hodně, co by se dalo říct o tomto tématu, ale většina toho je zde nepodstatné. Krátká verze je, že většině her stačí 22050 Hz, ale v některých případech je lepší 44100 Hz. Na extrémně pomalých systémech byste raději měli použít 11025 Hz, ale je nepravděpodobně, že byste se s tímto museli zabývat.
-
-Abychom to rozvedli, většina zvuků, které ScummVM musí přehrát, byla vzorkována buď na 22050 Hz, nebo 11025 Hz. Použitím vyššího kmitočtu jako kouzlem nezvýší kvalitu těchto zvuků. Proto je 22050 Hz v pořádku.
-
-Některé hry používají CD audio. Pokud pro toto používáte komprimované soubory, jsou pravděpodobně vzorkovaný na kmitočtu 44100 Hz, takže pro tyto hry je toto pravděpodobně lepší volba kmitočtu.
-
-Při použití ovladačů hudby AdLib, FM Towns, PC Speaker nebo IBM PCjr je
-ScummVM zodpovědný za vytváření vzorků. Většinou bude 22050 Hz stačit, ale existuje alespoň jedna stopa hudby AdLib Beneath a Steel Sky, která zní lépe při 44100 Hz.
-
-Použití kmitočtů mezi není doporučeno. Za prvé Vaše zvuková karta ho nemusí podporovat. Teoreticky by se ScummVM měl vrátit k rozumnému kmitočtu, ale nespoléhejte na to. Důležitější je ale to, že ScummVM musí převzorkovat všechny zvuky na jejich výstupní kmitočet. To je mnohem snadnější k provedení, když výstupní kmitočet je násobkem původního.
-
-
-8.0) Soubor s nastavenĂ­m:
----- --------------------
-Standardně je soubor s nastavením uložen a načítán:
-
- Windows Vista/7:
- \Users\jmĂŠno uĹživatele\AppData\Roaming\ScummVM\scummvm.ini,
-
- Windows 2000/XP:
- \Documents and Settings\jmĂŠno uĹž\Application Data\ScummVM\scummvm.ini
-
- Windows NT4:
- <sloĹžkawin>\Profiles\jmĂŠno uĹž\Application Data\ScummVM\scummvm.ini,
-
- Windows 95/98/ME:
- <sloĹžkawin>\scummvm.ini,
-
- Pokud ve Windows nainstalována dřívější verze ScummVM bude ponecháno dřívější umístění '<složkawin>\scummvm.ini'.
-
- Unix:
- ~/.scummvmrc
-
- Mac OS X:
- ~/Library/Preferences/ScummVM Preferences
- (zde ~ označuje Vaši domovskou složku)
-
- DalĹĄĂ­:
- scummvm.ini v současné složce
-
-Vzorový soubor s nastavením vypadå takto:
-
- [scummvm]
- gfx_mode=supereagle
- fullscreen=true
- savepath=C:\saves\
-
- [sky]
- path=C:\games\SteelSky\
-
- [germansky]
- gameid=sky
- language=de
- path=C:\games\SteelSky\
- description=Beneath a Steel Sky w/ German subtitles
-
- [germandott]
- gameid=tentacle
- path=C:\german\tentacle\
- description=German version of DOTT
-
- [tentacle]
- path=C:\tentacle\
- subtitles=true
- music_volume=40
- sfx_volume=255
-
- [loomcd]
- cdrom=1
- path=C:\loom\
- talkspeed=5
- savepath=C:\loom\saves\
-
- [monkey2]
- path=C:\amiga_mi2\
- music_driver=windows
-
-8.1) Rozpoznávaná klíčová slova nastavení
----- ------------------------------------
-Jsou rozpoznávána následující klíčová slova:
-
- path řetězec Cesta, kde jsou umístěny datové soubory hry
- autosave_period číslo Vteřiny mezi autoukládáním (výchozí: 300)
- save_slot číslo Číslo uložené, které při spuštění načíst.
- savepath řetězec Cesta, kde hra bude ukládat uložené hry.
- versioninfo řetězec Verze ScummVM, která vytvořila soubor.
- gameid řetězec Skutečné id hry. Užitečné, pokud máte několik verzí stejné hry a chcete pro ně různé přezdívky. Viz příklad.
- description řetězec Popis hry jak se zobrazí ve spouštěči.
- language řetězec Určí jazyk (en, us, de, fr, it, pt, es,
- jp, zh, kr, se, gb, hb, cz, ru)
- speech_mute boolean Pokud true, řeč je ztlumena
- subtitles boolean Pokud true jsou titulky zapnuty.
- talkspeed číslo Zpoždění textu v hrách SCUMM, nebo rychlost textu v jiných hrách.
- fullscreen boolean ReĹžim celĂŠ obrazovky
- aspect_ratio boolean Povolit korekci poměru stran
- gfx_mode řetězec Grafický režim (normální, 2x, 3x, 2xsai, super2xsai, supereagle, advmame2x, advmame3x,hq2x, hq3x, tv2x, dotmatrix)
- confirm_exit boolean Zeptat se uživatele na potvrzení před ukončením (pouze jádro SDL).
- console boolean Povolit okno konzole (výchozí: zapnuto) (pouze Windows).
- cdrom číslo Číslo jednotky CD-ROM, kterou použít pro zvuk. Pokud je záporné, k pokusu o přístup k CD-ROM nedojde.
- joystick_num číslo Číslo zařízení joysticku, které použít pro vstup
- music_driver řetězec Které hudební jádro použít.
- opl_driver řetězec Který emulátor AdLib (OPL) použít.
- output_rate číslo Který výstupní vzorkovací kmitočet použít v Hz. Rozumné hodnoty jsou 11025, 22050 a 44100.
- alsa_port řetězec Který port použít pro výstup při použití hudebního ovladače ALSA.
- music_volume číslo Nastavení hlasitosti hudby (0-255)
- multi_midi boolean Pokud true, jsou povoleny smĂ­ĹĄenĂ˝ AdLib a pĹŻvodnĂ­ MIDI.
- soundfont řetězec Který SoundFont použít pro přehrávání MIDI. (Podporováno pouze některými ovladači MIDI.)
- native_mt32 boolean Pokud true, zakáže emulaci GM a předpokládá, že je dostupný pravý Roland MT-32.
- enable_gs boolean Pokud true, povolí funkce určené pro Roland GS ke zlepšení emulace GM. Pokud je native_mt32 také nastaven na true, zařízení GS zvolí mapu MT-32 pro přehrávání správných instrumentů.
- sfx_volume číslo Nastavení hlasitosti zvuku (0-255)
- tempo číslo Rychlost hudby (50-200) (výchozí: 100)
- speech_volume číslo Nastavení hlasitosti řeči (0-255)
- midi_gain číslo Zvýšení MIDI (0-1000) (výchozí: 100) (Podporováno pouze některými ovladači MIDI.)
- copy_protection boolean Povolí ochranu proti kopírování v určitých hrách, kde by ji ScummVM standardně zakázal.
- demo_mode boolean Spustit demoverzi v Maniac Mansion
- alt_intro boolean PouŞít alternativní úvod pro CD verze Beneath a Steel Sky a Flight of the Amazon Queen
- boot_param číslo Předá toto číslo zaváděcímu skriptu
-
-Hry Sierra používající jádro AGI přidávají následující nestandardní klíčové slovo:
-
-originalsaveload boolean Pokud true, jsou pouŞity původní obrazovky nahråvåní/uloŞení místo vylepťených ze ScummVM
-
-Hry Sierra používající jádro SCI přidávají následující nestandardní klíčová slova:
-
- disable_dithering boolean Odstranit artefakty chvění v některých hrách EGA
- prefer_digitalsfx boolean Pokud true, jsou upřednostňovány digitální zvukové efekty před syntetizovanými
- originalsaveload boolean Pokud true, jsou pouŞity původní obrazovky nahråvåní/uloŞení místo vylepťených ze ScummVM
- native_fb01 bool Pokud true, je ovladač hudby pro kartu IBM Music Feature nebo modul syntetizátoru Yahama FB-01 FM použit jako výstup MIDI
-Broken Sword II přidává následující nestandardní klíčová slova:
-
- gfx_details číslo Nastavení grafických detailů (0-3)
- music_mute boolean Pokud true, hudba je ztlumena
- object_labels boolean Pokud true, popisky objektĹŻ jsou povoleny
- reverse_stereo boolean Pokud true, kanĂĄly stereo jsou obrĂĄceny
- sfx_mute boolean Pokud true, zvukovĂŠ efekty jsou ztlumeny
-
-Flight of the Amazon Queen přidává následující nestandardní klíčová slova:
-
- music_mute boolean Pokud true, hudba je ztlumena
- sfx_mute boolean Pokud true, zvukovĂŠ efekty jsou ztlumeny
-
-Jones in the Fast Lane přidává následující nestandardní klíčové slovo:
-
- music_mute boolean Pokud true, je použito CD audio místo zvuků ve hře
-
-King's Quest VI Windows přidává následující nestandardní klíčové slovo:
-
- windows_cursors boolean Pokud true, jsou použity původní černobílé kurzory místo kurzorů z DOS. Pokud false, jsou ve verzi Windows použity kurzory DOS, zvětšené, aby se shodovaly se zbytkem zvětšené grafiky
-
-Lands of Lore: The Throne of Chaos přidává následující nestandardní klíčová slova:
-
- smooth_scrolling boolean Pokud true, je posunování při změně z jedné obrazovky na druhou plynulejší
- floating_cursors boolean Pokud true, je kurzor změněn na směrovou šipku při najetí na okraj obrazovky. Hráč pak může kliknout pro pohyb v tomto směru.
-
-Space Quest IV CD přidává následující nestandardní klíčové slovo:
-
- silver_cursors boolean Pokud true, je místo původních zlatých kurzorů použita alternativní sada stříbrných
-
-Simon the Sorcerer 1 a 2 přidává následující nestandardní klíčová slova:
-
- music_mute boolean Pokud true, hudba je ztlumena
- sfx_mute boolean Pokud true, zvukovĂŠ efekty jsou ztlumeny
-
-The Legend of Kyrandia přidává následující nestandardní klíčové slovo:
-
- walkspeed celé číslo Rychlost chůze (0-4)
-
-The Legend of Kyrandia: The Hand of Fate přidává následující nestandardní klíčové slovo:
-
- walkspeed číslo Rychlost chůze (3 nebo 5, což znamená
- rychle nebo pomalu)
-
-The Legend of Kyrandia: Malcolm's Revenge přidává následující nestandardní klíčová slova:
-
- walkspeed číslo Rychlost chůze (3 nebo 5, což znamená
- rychle nebo pomalu)
- studio_audience boolean Pokud true, je slyšet potlesk a smích kdykoliv Malcolm provede něco vtipného
- skip_support boolean Pokud true, hráč může přeskakovat text a scény hry
- helium_mode boolean Pokud true, lidé znějí tak, jakoby se nadýchali hélia
-
-The 7th Guest přidává následující nestandardní klíčové slovo:
-
- fast_movie_speed boolean Pokud true, jsou videa přehrávána při zvýšené
- rychlosti, stejnĂŠ jako ve verzi pro iOS.
- Videa bez zvuku jsou stále přehrávána při
- normĂĄlnĂ­ rychlosti, aby nedoĹĄlo k desynchronizaci
- hudby
-
-8.2) Vlastní herní volby, které mohou být přepínány pomoci grafického
----- ----------------------------------------------------------------
-rozhranĂ­
---------
-Mnoho vlastních herních voleb v předchozí části může být přepnuto přes grafické rozhraní. Pokud je takováto volba pro určitou hru dostupná, objeví se karta "Jádro" při přidávání nebo úpravě nastavení této hry.
-Pokud vlastní možnosti nejsou zobrazeny, musí být konkrétní hry spuštěny jednou nebo znovu přidány do seznamu her spouštěče ScummVM. Toto aktualizuje nastavení každé položky, čímž umožní zobrazení vlastních voleb.
-
-9.0) SestavenĂ­:
----- ----------
-Pro aktuální přehled o tom, jak ScummVM sestavit pro různé platformy, prohlédněte si, prosím, naší Wiki, zvláště tuto stránku:
-
- http://wiki.scummvm.org/index.php/Compiling_ScummVM
-
-Pokud sestavujete ve Windows, Linux nebo Mac OS X, potřebujete SDL-1.2.2
-Nebo novější (starší verze mohou fungovat, ale nejsou podporovány) a podporovaný kompilátor. Většina kompilátorů, včetně GCC, mingw a novějších verzí Microsoft Visual C++ jsou podporovány. Pokud chcete použít stopy CD komprimované do MP3 nebo soubory .SOU, musíte nainstalovat knihovnu MAD; podobně potřebujete vhodné knihovny pro komprimovaný zvuk pomocí Ogg Vorbis a FLAC. Pro komprimované uložené stavy je potřeba mít zlib.
-
-Některé části ScummVM, zvláště zvětšovače, mají vysoce optimalizované verze napsané v assembleru. Pokud si přejete tuto možnost použít, potřebuje mít nainstalován assembler nasm (viz http://nasm.sf.net). Nezapomeňte, že v současnosti máme pouze verze optimalizované pro x86 MMX, a nebudou sestaveny pro jiné procesory.
-
-Na Win9x/NT/XP můžete určit USE_WINDBG a připojit WinDbg pro procházení ladících zpráv (viz http://www.sysinternals.com/ntw2k/freeware/debugview.shtml).
-
- GCC a MinGW32:
- * Zadejte "./configure"
- * Zadejte "make" (nebo "gmake", či "gnumake", v závislosti na tom, jak je GNU make ve Vašem systému nazván) a ScummVM snad bude pro Vás sestaven.
- * Pro další informace si prohlédněte:
- http://wiki.scummvm.org/index.php/Compiling_ScummVM/GCC
- či
- http://wiki.scummvm.org/index.php/Compiling_ScummVM/MinGW
-
- Microsoft Visual C++ 8/9/10:
- * Přečtěte si, jak vytvořit soubory projektu ve "dists\msvc8",
- "dists\msvc9" příslušně "dists\msvc10".
- * Otevřete výsledný soubor projektu.
- * Zadejte cestu k potřebným knihovnám a hlsičkovým souborům v
- Tools|Options|Projects and Solutions|VC++ Directories".
- * Teď by program měl být úspěšně sestaven.
- * Pro další informace si prohlédněte:
- http://wiki.scummvm.org/index.php/Compiling_ScummVM/VS2005
-
- Windows Mobile:
- * Přečtěte si prosím:
- http://wiki.scummvm.org/index.php/Compiling_ScummVM/Windows_CE
-
- Mac OS X:
- * Ujistěte se, že máte nainstalovány nástroje pro vývojáře.
- * Balíček SDL pro vývojáře na OS X, který je dostupný na stránce SDL _není_ vhodný. Spíše potřebujete sestavení v unixovém stylu. Jeden takový způsob, jak ho nainstalovat je pomocí Fink
- (http://fink.sf.net). Také můžete SDL sestavit ručně ze zdrojového kódu pomocí systému sestavení pro unix (configure a make).
- * Ve sloĹžce ScummVM zadejte "./configure".
- * Nyní můžete zadat 'make' pro vytvoření spouštěče příkazového řádku.
- * Abyste získali verzi, kterou můžete spustit z Finder, zadejte 'make bundle' což vytvoří ScummVM.app (to funguje pouze, když máte SDL nainstalován do /sw, což se při instalaci Fink provede). Pokud jste SDL nainstalovali jiným způsobem, budete muset upravit ports.mk).
- * Pro další informace si prohlédněte:
- http://wiki.scummvm.org/index.php/Compiling_ScummVM/MacOS_X_Crosscompiling
-
- AmigaOS 4 (Křížová kompilace pomocí Cygwin):
- * Ujistěte se, že máte nainstalován SDL, můžete také potřebovat
- libogg, libvorbis, libvorbisfile, zlib, libmad.
- * Zadejte ./configure --host=ppc-amigaos
- * Pokud dostanete chybu o sdl-config, pouĹžijte parametr --with-sdl-prefix pro nastavenĂ­ cesty.
- * Zkontrolujte soubor 'config.mk' a pokud je vše v pořádku:
- * SpusĹĽte 'make'.
- * Křížová kompilace pomocí Linux může být také tak lehká.
-
- iPhone:
- * Přečtěte si prosím:
- http://wiki.scummvm.org/index.php/Compiling_ScummVM/iPhone
-
- Maemo:
- * Nainstalujte Maemo SDK s rootstrap 4.1.2
- * Nainstalujte libmad, Tremor, FLAC ze zdroje
- * SpusĹĽte 'ln -s backends/platform/maemo/debian'
- * Aktualizujte debian/changelog
- * SpusĹĽte 'sb2 dpkg-buildpackage -b'
-
-------------------------------------------------------------------------
-Hodně Štěstí a Šťastné Adventurování!
-Tým ScummVM.
-http://www.scummvm.org/
-------------------------------------------------------------------------
-
-
-
-
+PŘEČTIMĚ ScummVM
+------------------------------------------------------------------------
+
+Pro více informací, seznamy kompatibility, podrobnosti o dotacích, nejnovější verze,
+novinky o vývoji a dalťí, prosím navťtivte domovskou strånku ScummVM na: http://www.scummvm.org/
+
+
+Obsah:
+------
+1.0) Úvod
+ * 1.1 O ScummVM
+ * 1.2 RychlĂ˝ nĂĄvod
+2.0) Kontakt
+ * 2.1 HlĂĄĹĄenĂ­ chyb
+3.0) PodporovanĂŠ hry
+ * 3.1 Ochrana proti kopĂ­rovĂĄnĂ­
+ * 3.2 PoznĂĄmky ke hrĂĄm Commodore64
+ * 3.3 PoznĂĄmky k Maniac Mansion NES
+ * 3.4 PoznĂĄmky ke hrĂĄm Macintosh
+ * 3.5 PoznĂĄmky ke hrĂĄm Multi-CD
+ * 3.6 PoznĂĄmky k The Curse of Monkey Island
+ * 3.7 PoznĂĄmky ke hrĂĄm Broken Sword
+ * 3.8 PoznĂĄmky k Beneath a Steel Sky
+ * 3.9 PoznĂĄmky k Flight of the Amazon Queen
+ * 3.10 PoznĂĄmky ke Gobliiins
+ * 3.11 PoznĂĄmky k Inherit the Earth: Quest for the Orb
+ * 3.12 PoznĂĄmky k Simon the Sorcerer
+ * 3.13 PoznĂĄmky k The Feeble Files
+ * 3.14 PoznĂĄmky k The Legend of Kyrandia
+ * 3.15 Poznámky k Předvídavému Vstupnímu Dialogu her Sierra AGI
+ * 3.16 PoznĂĄmky k Mickey's Space Adventure
+ * 3.17 PoznĂĄmky k Winnie the Pooh
+ * 3.18 PoznĂĄmky k Troll's Tale
+ * 3.19 Poznámky k Dračí Historie
+ * 3.20 Titulky a hlasy souběžně v hrách Sierra SCI
+ * 3.21 ZnĂĄmĂŠ problĂŠmy
+4.0) PodporovanĂŠ platformy
+5.0) Spuštění ScummVM
+ * 5.1 Možnosti příkazového řádku
+ * 5.2 Volby jazyka
+ * 5.3 GrafickĂŠ filtry
+ * 5.4 GlobĂĄlnĂ­ menu
+ * 5.5 KlĂĄvesovĂŠ zkratky
+6.0) UloĹženĂŠ hry
+ * 6.1 AutomatickĂŠ uklĂĄdĂĄnĂ­
+ * 6.2 Převod uložených her
+ * 6.3 Zobrazení/Načtení uložených her z příkazového řádku
+7.0) Hudba a zvuk
+ * 7.1 Emulace AdLib
+ * 7.2 Emulace FluidSynth MIDI
+ * 7.3 Emulace MT-32
+ * 7.4 Emulace MIDI
+ * 7.5 Přirozená podpora MIDI
+ * 7.6 Podpora nativnĂ­ho UNIX, ALSA a sekvencĂŠru dmedia
+ * 7.7 Podpora MIDI serveru TiMidity++
+ * 7.8 PouŞití komprimovaných zvukových souborů (MP3, Ogg Vorbis, Flac)
+ * 7.9 Výstupní vzorkovací kmitočet
+8.0) Soubor s nastavením
+ * 8.1 Rozpoznávaná klíčová slova nastavení
+ * 8.2 Vlastní herní volby, které mohou být přepínány pomoci grafického rozhraní
+9.0) SestavenĂ­
+
+
+1.0) Úvod:
+---- -----
+
+1.1) O ScummVM:
+---- ----------
+ScummVM je program, který Vám umožňuje spouštět určité klasické grafické point-and-click adventury, za předpokladu, že již máte jejich datové soubory. A teď ta chytrá část: ScummVM jenom nahrazuje spouštěče, které jsou dodávány se hrou, což Vám umožňuje hrát hry v systémech, pro které nikdy nebyly navrženy!
+
+Původně byl navržen pro spouštění her SCUMM od LucasArts SCUMM, jako např. Maniac Mansion, Monkey Island, Day of the Tentacle nebo Sam and Max. SCUMM znamená 'Nástroj pro Vytváření Skriptu pro Maniac Mansion', což byla první hra, pro kterou LucasArts tento systém navrhl. A mnohem později dal své jméno ScummVM ('VM' znamená Virtuální Stroj).
+
+Postupem času byla přidána podpora pro spoustu her mimo SCUMM a
+ScummVM nyní také podporuje mnoho AGI a SCI her od Sierra (např. King's
+Quest 1-6, Space Quest 1-5, ...), Discworld 1 a 2, Simon the Sorcerer 1 and 2, Beneath A Steel Sky, Lure of the Temptress, Broken Sword I a II, Flight of the Amazon Queen, Gobliiins 1-3, série The Legend of Kyrandia, mnoho ze SCUMM her pro děti od Humongous Entertainment (včetně her Freddi Fish a Putt Putt) a mnoho dalších. Na stránce kompatibility můžete najít úplný seznam s podrobnostmi, které adventury jsou podporovány a jak dobře. ScummVM je neustále zlepšován a proto navštěvujte naše stránky často.
+
+Mezi systémy, na kterých můžete tyto hrát, jsou běžné stolní počítače (mající Windows, Linux, Mac OS X, ...), herní konzole
+(Dreamcast, Nintendo DS a Wii, PS2, PSP, ...), chytrĂŠ telefony (Android,
+iPhone, PocketPC, Symbian ...) a dalĹĄĂ­.
+
+V současnosti je ScummVM stále velkou částí ve vývoji. Nezapomeňte, že i když se snažíme zajistit, aby mnoho her bylo možno dokončit pouze s pár vážnými chybami, pády programu mohou nastat a my neposkytujeme žádné záruky. Přes to všechno, některé hry byly podporovány po dlouhou dobu
+A měly by fungovat v pořádku se všemi novějšími stabilními verzemi. Jak dobře bude hra ve ScummVM fungovat můžete zjistit prohlédnutím stránky kompatibility.
+Vlastně, pokud trošičku zahledáte, můžete zjistit, že ScummVM je používán i komerčně pro znovu vydání některých podporovaných her na moderních platformách. To ukazuje, že i několik společností je spokojeno s kvalitou softwaru a jako moc dobře může některé hry spouštět.
+
+Pokud máte ScummVM rádi, můžete ho podpořit dotací pomocí tlačítka PayPal na stránce ScummVM. To nám pomůže zakoupit nástroje potřebné ke snadnějšímu a rychlejšímu vývoji ScummVM. Pokud nemůžete podpořit dotací, pomozte a přispějte záplatou!
+
+1.2) RychlĂ˝ nĂĄvod:
+---- -------------
+Pro ty netrpělivé z Vás je tu návod, jak ScummVM spustit v několika krocích.
+
+1. Stáhněte si ScummVM z <http://www.scummvm.org/downloads.php> a nainstalujte ho.
+
+2. Na Vašem pevném disku vytvořte složku a zkopírujte datové soubory z původního média do této složky. Zopakujte pro všechny hry, které chcete hrát
+
+3. Spusťte ScummVM, zvolte 'Přidat hru', zvolte adresář s datovými soubory hry (nesnažte se volit datové soubory samotné!) a stiskněte
+'Zvolit'.
+
+4. Mělo by se objevit dialogové okno umožňující Vám pozměnit různá nastavení, pokud tak chcete (i když by mělo být v pořádku všechno nechat ve výchozím nastavení). Dialogové okno potvrďte.
+
+5. V seznamu vyberte hru, kterou chcete hrát a stiskněte 'Spustit'.
+
+V budoucnu byste měli být schopni přeskočit na krok 5, pokud nechcete přidat další hry.
+
+Rada: Pokud chcete přidat více her najednou, zkuste stisknout a držet klávesu shift předtím, než kliknete na 'Přidat hru' – tlačítko se změní na 'Hromadné Přidání' a pokud ho stiskněte, jste znovu požádáni o zvolení složky, ale tentokrát ScummVM prohledá všechny podsložky pro podporované hry.
+
+
+2.0) Kontakt:
+---- --------
+Nejjednodušším způsobem, jak kontaktovat tým ScummVM je předložením hlášení o chybě (viz oddíl 2.1) nebo použitím našich fór na http://forums.scummvm.org .
+Můžete se také připojit a odesílat a e-maily na korespondenční seznam scummvm-devel, nebo s námi chatovat na IRC (#scummvm na irc.freenode.net) Nežádejte nás, prosím, o podporu nefungující hry – nejdříve si přečtěte nejčastější otázky na naší stránce
+
+2.1) HlĂĄĹĄenĂ­ chyb:
+---- -------------
+Abyste mohli nahlásit chybu, nejdříve si, prosíme, vytvořte si účet na SourceForge a klikněte na odkaz "Bug Tracker" na naší stránce. Ujistěte se, prosím, že se chyba dá znovu zjistit a stále se objevuje v nejnovější verzi git/denního sestavení. Také na naší stránce zkontrolujte seznam známých problémů (níže) a seznam kompatibility pro tuto hru, abyste se ujistili, že problém již není znám:
+
+ http://www.scummvm.org/compatibility
+
+Prosíme, nenahlašujte chyby ve hrách, které nejsou v seznamu v sekci 'Supported Games' nebo seznamu kompatibility uvedeny jako dokončitelné. My –víme-, že tyto hry mají chyby.
+
+Zahrňte, prosím, nåsledující informace:
+ - Verzi ScummVM (PROSÍME, vyzkoušejte nejnovější sestavení git/Daily)
+ - Podrobnosti o chybě, včetně postupu na její znovu opakování
+ - Jazyk hry (angličtina, němčina, ...)
+ - Verze hry (s řečí, z diskety, ...)
+ - Platforma a kompilĂĄtor (Win32, Linux, FreeBSD, ...)
+ - Pokud možno, přiložte uloženou hru
+ - Pokud se tato chyba objevila pouze nedávno, poznamenejte si poslední verzi bez chyby a první verzi s touto chybou. Takto ji můžeme rychle spravit tím, že se podíváme na provedené změny.
+
+Nakonec prosíme, abyste každou chybu nahlašovali samostatně; neohlašujte několik chyb v jednom hlášení. (Jinak bude obtížné sledovat stav každé jednotlivé chyby).
+
+
+3.0) PodporovanĂŠ hry:
+---- ----------------
+V tuto chvíli je o následujících hrách známo, že fungují a měly by být hratelné až dokonce:
+
+Hry SCUMM od LucasArts:
+ Maniac Mansion [maniac]
+ Zak McKracken and the Alien Mindbenders [zak]
+ Indiana Jones and the Last Crusade [indy3]
+ Loom [loom]
+ The Secret of Monkey Island [monkey]
+ Monkey Island 2: LeChuck's Revenge [monkey2]
+ Indiana Jones and the Fate of Atlantis [atlantis]
+ Day of the Tentacle [tentacle]
+ Sam & Max Hit the Road [samnmax]
+ Full Throttle [ft]
+ The Dig [dig]
+ The Curse of Monkey Island [comi]
+
+Hry AGI od Sierra:
+ The Black Cauldron [bc]
+ Gold Rush! [goldrush]
+ King's Quest I [kq1]
+ King's Quest II [kq2]
+ King's Quest III [kq3]
+ King's Quest IV [kq4]
+ Leisure Suit Larry in the Land of the
+ Lounge Lizards [lsl1]
+ Mixed-Up Mother Goose [mixedup]
+ Manhunter 1: New York [mh1]
+ Manhunter 2: San Francisco [mh2]
+ Police Quest I: In Pursuit of the Death
+ Angel [pq1]
+ Space Quest I: The Sarien Encounter [sq1]
+ Space Quest II: Vohaul's Revenge [sq2]
+ Fanmade Games [agi-fanmade]
+
+Hry AGOS od Adventuresoft/Horrorsoft:
+ Elvira - Mistress of the Dark [elvira1]
+ Elvira II - The Jaws of Cerberus [elvira2]
+ Personal Nightmare [pn]
+ Waxworks [waxworks]
+ Simon the Sorcerer 1 [simon1]
+ Simon the Sorcerer 2 [simon2]
+ Simon the Sorcerer's Puzzle Pack
+ - Demon In My Pocket [dimp]
+ Simon the Sorcerer's Puzzle Pack
+ - Jumble [jumble]
+ Simon the Sorcerer's Puzzle Pack
+ - NoPatience [puzzle]
+ Simon the Sorcerer's Puzzle Pack
+ - Swampy Adventures [swampy]
+ The Feeble Files [feeble]
+
+Hry GOB od Coktel Vision:
+ Bambou le sauveur de la jungle [bambou]
+ Bargon Attack [bargon]
+ Fascination [fascination]
+ Geisha [geisha]
+ Gobliiins [gob1]
+ Gobliins 2 [gob2]
+ Goblins 3 [gob3]
+ Lost in Time [lostintime]
+ Once Upon A Time: Little Red Riding Hood [littlered]
+ The Bizarre Adventures of Woodruff
+ and the Schnibble [woodruff]
+ Urban Runner [urban]
+ Ween: The Prophecy [ween]
+
+Hry MADE od Activision:
+ Leather Goddesses of Phobos 2 [lgop2]
+ Return to Zork [rtz]
+ Rodney's Funscreen [rodney]
+ The Manhole [manhole]
+
+DalĹĄĂ­ hry:
+ Beneath a Steel Sky [sky]
+ Broken Sword: The Shadow of the Templars [sword1]
+ Broken Sword II: The Smoking Mirror [sword2]
+ Cruise for a Corpse [cruise]
+ Discworld [dw]
+ Discworld 2: Missing Presumed ...!? [dw2]
+ Dragon History [draci]
+ Drascula: The Vampire Strikes Back [drascula]
+ Eye of the Beholder [eob]
+ Eye of the Beholder II: The Legend of
+ Darkmoon [eob2]
+ Flight of the Amazon Queen [queen]
+ Future Wars [fw]
+ Inherit the Earth: Quest for the Orb [ite]
+ Nippon Safes Inc. [nippon]
+ Lands of Lore: The Throne of Chaos [lol]
+ The Journeyman Project: Pegasus Prime [pegasus]
+ The Legend of Kyrandia [kyra1]
+ The Legend of Kyrandia: The Hand of Fate [kyra2]
+ The Legend of Kyrandia: Malcolm's Revenge [kyra3]
+ Touche: The Adventures of the Fifth
+ Musketeer [touche]
+
+Hry SCUMM od Humongous Entertainment:
+ Backyard Baseball [baseball]
+ Backyard Baseball 2001 [baseball2001]
+ Backyard Baseball 2003 [baseball2003]
+ Backyard Football [football]
+ Big Thinkers First Grade [thinker1]
+ Big Thinkers Kindergarten [thinkerk]
+ Blue's 123 Time Activities [Blues123Time]
+ Blue's ABC Time Activities [BluesABCTime]
+ Blue's Art Time Activities [arttime]
+ Blue's Birthday Adventure [BluesBirthday]
+ Blue's Reading Time Activities [readtime]
+ Fatty Bear's Birthday Surprise [fbear]
+ Fatty Bear's Fun Pack [fbpack]
+ Freddi Fish 1: The Case of the Missing
+ Kelp Seeds [freddi]
+ Freddi Fish 2: The Case of the Haunted
+ Schoolhouse [freddi2]
+ Freddi Fish 3: The Case of the Stolen
+ Conch Shell [freddi3]
+ Freddi Fish 4: The Case of the Hogfish
+ Rustlers of Briny Gulch [freddi4]
+ Freddi Fish 5: The Case of the Creature
+ of Coral Cove [freddicove]
+ Freddi Fish and Luther's Maze Madness [maze]
+ Freddi Fish and Luther's Water Worries [water]
+ Let's Explore the Airport with Buzzy [airport]
+ Let's Explore the Farm with Buzzy [farm]
+ Let's Explore the Jungle with Buzzy [jungle]
+ Pajama Sam 1: No Need to Hide When It's
+ Dark Outside [pajama]
+ Pajama Sam 2: Thunder and Lightning
+ Aren't so Frightening [pajama2]
+ Pajama Sam 3: You Are What You Eat
+ From Your Head to Your Feet [pajama3]
+ Pajama Sam's Lost & Found [lost]
+ Pajama Sam's Sock Works [socks]
+ Putt-Putt Joins the Parade [puttputt]
+ Putt-Putt Goes to the Moon [puttmoon]
+ Putt-Putt Saves the Zoo [puttzoo]
+ Putt-Putt Travels Through Time [putttime]
+ Putt-Putt Enters the Race [puttrace]
+ Putt-Putt Joins the Circus [puttcircus]
+ Putt-Putt and Pep's Balloon-O-Rama [balloon]
+ Putt-Putt and Pep's Dog on a Stick [dog]
+ Putt-Putt & Fatty Bear's Activity Pack [activity]
+ Putt-Putt's Fun Pack [funpack]
+ SPY Fox 1: Dry Cereal [spyfox]
+ SPY Fox 2: Some Assembly Required [spyfox2]
+ SPY Fox 3: Operation Ozone [spyozon]
+ SPY Fox in Cheese Chase [chase]
+ SPY Fox in Hold the Mustard [mustard]
+
+Hry Living Books:
+ Aesop's Fables: The Tortoise and the Hare [tortoise]
+ Arthur's Birthday [arthurbday]
+ Arthur's Teacher Trouble [arthur]
+ Dr. Seuss's ABC [seussabc]
+ Green Eggs and Ham [greeneggs]
+ Harry and the Haunted House [harryhh]
+ Just Grandma and Me [grandma]
+ Little Monster at School [lilmonster]
+ Ruff's Bone [ruff]
+ Sheila Rae, the Brave [sheila]
+ Stellaluna [stellaluna]
+ The Berenstain Bears Get in a Fight [bearfight]
+ The Berenstain Bears in the Dark [beardark]
+ The New Kid on the Block [newkid]
+
+Následující hry by měly jít spustit, ale zatím nejsou úplně hratelné. Hrajte je pouze na vlastní riziko a prosíme, abyste pro tyto hry nenahlašovali chyby.
+Pokud chcete mít nejnovější zprávy o kompatibilitách her, navštivte naší stránku a prohlédněte si tabulku kompatibilit.
+
+ Backyard Football 2002 [football2002]
+ Backyard Soccer [soccer]
+ Backyard Soccer MLS [soccermls]
+ Backyard Soccer 2004 [soccer2004]
+ Blue's Treasure Hunt [BluesTreasureHunt]
+ Pajama Sam: Games to Play on Any Day [pjgames]
+
+NĂĄsledujĂ­cĂ­ hry jsou odvozeny od jĂĄdra SCUMM, ale ScummVM je nepodporuje (zatĂ­m):
+
+ OstatnĂ­ hry od Humongous Entertainment
+
+Nezapomeňte, prosím, že jádra mohou obsahovat chyby a nezavedené funkce, které někdy zabrání hru dokončit. Ukládejte často a nahlaste chyby, prosím (instrukce pro hlášení chyb jsou výše), pokud na takovou chybu narazíte v 'podporované' hře.
+
+
+3.1) Ochrana proti kopĂ­rovĂĄnĂ­:
+---- -------------------------
+Tým ScummVM nepodporuje pirátství. Nicméně existují případy, kdy herní společnosti (jako LucasArts) sami ve svých hrách poskytují 'cracknuté'
+spouštěče – v těchto případech datové soubory obsahují skripty pro ochranu proti kopírování, ale převaděč je obejde (toto může podobně provádět nelegálně cracknutá verze, s tím rozdílem, že zde toto provedl výrobce hry. Neexistuje žádný způsob, jak můžeme rozlišit legitimní a pirátské datové soubory, takže v hrách, o kterých víme, že byla někdy prodávána cracknutá verze původního převaděče bude ScummVM muset vždy ochranu přeskočit.
+
+V některých případech ScummVM přesto zobrazí obrazovku ochrany proti kopírování. Zkuste zadat jakoukoli odpověď. Je tu možnost, že toto bude fungovat.
+
+ScummVM přeskakuje ochranu v následujících hrách:
+
+ * Beneath a Steel Sky
+ -- potlačeno s laskavým svolením Revolution Software.
+ * Dreamweb
+ -- seznam dostupných příkazů v terminálech ve hře je nyní zobrazen
+ když hráč použije příkaz 'help'
+ * Inherit the Earth: Quest for the Orb (Floppy version)
+ -- potlačeno s laskavým svolením Wyrmkeep Entertainment,
+ protože byla potlačena ve všech vydáních hry na CD.
+ * Loom (EGA DOS)
+ * Maniac Mansion
+ * Monkey Island 2: LeChuck's Revenge
+ * Simon the Sorcerer 1 (Floppy version)
+ * Simon the Sorcerer 2 (Floppy version)
+ -- potlačeno s laskavým svolením from Adventure Soft,
+ protože byla potlačena ve všech vydáních hry na CD.
+ * The Secret of Monkey Island (VGA)
+ * Waxworks
+ * Zak McKracken and the Alien Mindbenders
+
+
+3.2) Poznåmky ke hråm Commodore64:
+---- -----------------------------
+Jak Maniac Mansion tak Zak McKracken mohou být spuštěny, ale Maniac Mansion není ještě hratelný. Jednoduše pojmenujte disky D64 jako
+"maniac1.d64" a "maniac2.d64" nebo "zak1.d64" a "zak2.d64", pak by měl ScummVM automaticky hru zjistit, pokud ho odkážete na správnou složku.
+
+Nebo můžete použít 'extract_mm_c64' z balíčku nástrojů pro extrahování datových souborů. Pak ale ScummVM hru řádně automaticky nezjistí ScummVM, a musíte se ujistit, že platforma je nastavena na Commodore64. Doporučujeme použít mnohem jednodušší postup popsaný v předchozím odstavci.
+
+
+3.3) PoznĂĄmky ke Maniac Mansion NES:
+---- -------------------------
+Podporované verze jsou Britská angličtina (E), Francouzština (F), Němčina (G), Italština (I), Švédština (SW) a Americká angličtina (U). ScummVM pro spuštění vyžaduje pouze část PRG a ne celý ROM.
+
+Abyste mohli hru spustit, musíte vyjmout prvních 16 bajtů z ROM, s kterým pracujete. Jakýkoli hex editor bude fungovat, pokud můžete kopírovat/vkládat. Poté. Co ROM otevřete pomocí hex editoru, zkopírujte všechno z druhého řádku (17. bajt) na konec. Poté, co toto provedete, vložte ho do nového hex souboru. Pojmenujte ho "Maniac Mansion (XX).prg" kde XX znamená verzi, se kterou pracujete (E, F, G, I, SW, nebo U). Konečná velikost by měla být přesně 262144 bajtů.
+
+Pokud hru přidáváte ručně, ujistěte se, že platforma je nastavena na NES.
+
+Nejběžnější chyby, které zabraňují spuštění hry:
+
+ * Ĺ patnĂ˝ soubor
+ * ROM byl extrahovĂĄn pomocĂ­ nĂĄstrojĹŻ z verze 0.7.0
+ * Snažíte se do ScummVM vkládat CELÝ ROM a ne jenom PRG část.
+
+Je také možno extrahovat oddělené soubory LFL z PRG části. Pro toto použijte nástroj 'extract_mm_nes' z balíčku nástrojů.
+
+
+3.4) PoznĂĄmky ke hrĂĄm Macintosh:
+---- ---------------------------
+Všechny adventury LucasArts založené na SCUMM, kromě COMI, také existují ve verzích pro in Macintosh. ScummVM může většinu (všechny?) použít, nicméně, v některých případech je nutná dodatečná práce. Nejdříve, pokud pro toto nepoužíváte Macintosh, přístup k datům na CD/disketě může být obtížný. Důvodem je to, že Mac používá zvláštní formát disku nazvaný HFS, který ostatní systémy většinou nepodporují. Nicméně existuje, několik nástrojů, které jsou zadarmo a umožňují číst takovéto svazky HFS. Například "HFVExplorer" pro Windows a "hfsutils" pro Linux a ostatní Unixové operační systémy.
+
+Většina novějších her na Macintosh je dodávána pouze s jedním datovým souborem (v některých případech byl tento soubor učiněn neviditelným, takže možná budete potřebovat dodatečné nástroje, abyste ho mohli zkopírovat). ScummVM je schopen takovýto soubor použít přímo; jednoduše odkažte ScummVM na složku obsahující tento soubor a mělo by to fungovat (tak jako s každou podporovanou hrou).
+
+V balíčku nástrojů také poskytujeme nástroj nazvaný 'extract_scumm_mac', který extrahuje data z těchto datových souborů, ale toto není ani potřeba, ani doporučeno.
+
+Pro další informace o kopírování herních souborů Macintosh na Váš pevný disk si prohlédněte:
+
+ http://wiki.scummvm.org/index.php/HOWTO-Mac_Games
+
+
+3.5) PoznĂĄmky ke hrĂĄm Multi-CD:
+---- --------------------------
+Obecně ScummVM moc dobře nefunguje s hrami na Multi-CD. To je proto, že ScummVM předpokládá, že všechno o hře může být nalezeno v jedné složce. I když ScummVM má schopnost požádat uživatele, aby vyměnil CD, původní spouštěč souboru většinou nainstaluje malé množství souborů na pevný disk. Pokud tyto soubory nelze najít na všech CD, ScummVM bude mít potíže.
+
+Naštěstí může ScummVM hry bez problémů spouštět přímo z pevného disku, pokud vytvoříte složku se správnou kombinací souborů. Většinou, když se soubor objeví na více, než jednom CD můžete vybrat jeden z nich.
+
+
+3.6) PoznĂĄmky k The Curse of Monkey Island:
+---- --------------------------------------
+Pro tuto hru budete potřebovat soubory comi.la0, comi.la1 a comi.la2.
+Soubor comi.la0 můŞete nalÊzt na vťech CD hry, ale protoŞe jsou stejnÊ, můŞete pouŞít kterýkoli z nich.
+
+Dále potřebujete vytvořit podsložku "resource" obsahující všechny soubory z –obou- podsložek "resource" na dvou CD. Některé soubory se objevují na obou CD, ale znovu jsou stejné.
+
+
+3.7) PoznĂĄmky ke hrĂĄm Broken Sword:
+---- ------------------------------
+Pokyny pro hry Broken Sword jsou pro verze od Sold-Out Software, kde každá hra je na dvou CD, protože tyto verze byly nejdostupnější v době, kdy je ScummVM začal podporovat. Doufáme, že jsou dostatečně obecné pro použití i v jiných vydáních her.
+
+
+3.7.1) Videa z her Broken Sword:
+------ -------------------------
+Videa pro hry Broken Sword mají v sobě trochu historie (viz další oddíl, pokud jste zvědaví), ale obecně jediné, co potřebujete udělat, je zkopírovat soubory .SMK ze složek "SMACKS" nebo "SMACKSHI" na CD do stejné složky jako ostatní datové soubory hry. (Broken Sword má také složku "SMACKSLO" se stejnými videi, ale ty jsou nižší kvality.) Můžete je umístit do podsložky s názvem "video", pokud Vám to přijde hezčí.
+
+Ve verzích pro PlayStation, můžete původní videa vypsat z disku. Každý soubor, který má příponu "STR", byste měli vypsat jako *čist* sektory z disku (všech 2352 bajtů na sektor). Můžete také míst toho použít přeformátovaná videa, která jsou zmíněna níže, ale to nebude fungovat pro všechny videa v Broken Sword II. Pro více informací si prohlédněte:
+
+ http://wiki.scummvm.org/index.php/HOWTO-PlayStation_Videos
+
+Některá vydání hry, a také verze pro PlayStation, Smacker videa nemají. Revolution Software nám laskavě dovolilo poskytovat přeformátovaná videa ke stažení na naší stránce:
+
+ http://www.scummvm.org/downloads.php
+
+Tato videa jsou poskytována ve formátu DXA se zvukem ve formátu FLAC. Jejich kvalita se rovná originálu díky použití bezztrátové komprese. Zobrazení těchto videí vyžaduje, aby verze ScummVM byla sestavena s podporou FLAC i zlib.
+
+Pro systémy, které jsou příliš pomalé, aby zvládli dekódovat formát FLAC byl zvuk videí také poskytnut odděleně ve formátu OGG Vorbis audio. Toto vyžaduje, aby verze ScummVM byla sestavena s podporou libVorbis a zlib.
+
+Pro Broken Sword také poskytujeme přídavek pro titulky. Jednoduše ho rozbalte a následujte pokyny v souboru readme.txt. Balíček v současnosti nefunguje ve videích na PlayStation. (Broken Sword II již titulky má; není třeba další práce pro jejich přidání.)
+
+
+3.7.2) Videa her Broken Sword ve zpětném pohledu:
+------ ------------------------------------------
+Původní vydání her Broken Sword používalo formát Smacker™ od RAD Game Tools. Protože společnost RAD nebyla ochotna nám otevřít starší zastaralé verze tohoto formátu a požádala, abychom neprováděli jeho zpětnou analýzu, museli jsme nalézt jiné řešení.
+
+V Broken Sword II bylo možné přehrát řeč, aniž by se muselo přehrávat video. To zůstalo jako nouzové řešení až do ScummVM 1.0.0, ale pro všechny stabilní verze to nikdy nebylo jediné řešení.
+
+Ve ScummVM 0.6.0 jsme pouŞívali MPEG, coŞ zajistilo rozumný kompromis mezi velikostí a kvalitou. Ve ScummVM 0.10.0 bylo toto nahrazeno DXA
+(původně přidáno pro "The Feeble Files" od AdventureSoft). To nám dalo možnost zajistit videa ve stejné kvalitě jako původní, za cenu větší velikosti.
+
+Nakonec na začátku roku 2006 byl formát Smacker zpětně analyzován pro projekt FFmpeg. Díky jejich tvrdé práci ScummVM 1.0.0 nyní podporuje původní videa. Zároveň byla ukončena podpora MPEG. Z technického hlediska je toto dobře, protože přehrávání videí MPEG bylo velmi složité a stejně nevypadaly tak dobře jako verze ve formátu DXA a Smacker.
+
+
+3.7.3) Broken Sword:
+------ -------------
+Pro tuto hru budete potřebovat všechny soubory ze seskupení složek na obou CD. Pro verze Windows a Macintosh budete také potřebovat soubory speech.clu ze složek speech, ale protože soubory nejsou stejné, budete je muset přejmenovat na speech1.clu a speech2.clu z CD 1 a 2 v tomto pořadí. Verze na PlayStation vyžaduje speech.tab, speech.dat, speech.lis, a speech.inf.
+
+Dále verze pro Windows a Macintosh vyžadují podsložku music se všemi soubory z podsložek music na obou CD. Některé z těchto souborů se objevují na obou CD, ale v těchto případech jsou buď stejné, nebo, v jednom případě, je téměř stejný, že to nemá žádný význam. Verze pro PlayStation vYžaduje tunes.dat a tunes.tab.
+
+
+3.7.4) Broken Sword II:
+------ ----------------
+Pro tuto hru budete potřebovat všechny soubory ze seskupení složek na obou CD. (Abych pravdu řekl, pár z nich nemusí být nezbytně nutné, ale ty, o kterých nemám jistotu, jsou velmi malé.)
+Je také třeba přejmenovat soubory speech.clu a music.clu na speech1.clu,
+speech2.clu, music1.clu a music2.clu, aby ScummVM mohl zjistit, které jsou z CD 1 a které z CD 2. Všechny ostatní soubory, které jsou umístěny v seskupení složek, jsou stejné. Použijte kterékoli soubory chcete.
+
+Kromě toho budete potřebovat soubory cd.inf a, případně, startup.inf ze složky sword2 na CD 1.
+
+
+3.8) PoznĂĄmky k Beneath a Steel Sky:
+---- -------------------------------
+Od ScummVM 0.8.0 potřebujete dodatečný soubor 'SKY.CPT', abyste mohli Beneath a Steel Sky spustit.
+
+Tento soubor je dostupnĂ˝ na strĂĄnce 'Downloads' domovskĂŠ strĂĄnky ScummVM.
+Můžete ho umístit buď do složky obsahující ostatní datové soubory (SKY.DNR, SKY.DSK), na Vaši dodatečnou cestu, nebo do složky. Kde se nachází spouštěcí soubor ScummVM.
+
+
+3.9) PoznĂĄmky k Flight of the Amazon Queen:
+---- --------------------------------------
+Abyste mohli použít tu verzi, která není volně šiřitelná
+(z pĹŻvodnĂ­ho CD), musĂ­te mĂ­t soubor 'queen.tbl'
+(dostupný ze stránky 'Downloads' naší domovské stránky) a umístit ho buď do složky obsahující soubor hry 'queen.1', na Vaši dodatečnou cestu, nebo do složky. Kde se nachází spouštěcí soubor ScummVM.
+
+Také můžete použít nástroj 'compress_queen' z balíčku nástrojů pro 'znovu sestavení' Vašeho datového souboru FOTAQ pro zahrnutí tabulky pro tuto konkrétní verzi, čímž odstraníte závislost na soubor 'queen.tbl' při spuštění. Tento nástroj Vám také umožňuje komprimovat řeč a zvukové efekty do formátu MP3, OGG nebo FLAC.
+
+
+3.10) PoznĂĄmky ke Gobliiins:
+----- ----------------------
+CD verze série Gobliiins obsahuje jednu velkou zvukovou stopu, kterou potřebujete vyjmout (viz oddíl o použití komprimovaných zvukových souborů) a zkopírovat ji do herní složky, pokud chcete ve hře hudbu, aniž byste museli CD mít stále v jednotce. V této stopě jsou také řeč a její hlasitost se tedy také mění podle hlasitosti hudby.
+
+
+3.11) PoznĂĄmky k Inherit the Earth: Quest for the Orb:
+----- ------------------------------------------------
+Abyste mohli spustit verzi pro Mac OS X od Wyrmkeep musíte data zkopírovat z CD na Våť pevný disk. Pokud pouŞívåte PC, pak se podívejte na:
+
+ http://wiki.scummvm.org/index.php/HOWTO-Mac_Games
+
+I když se v tomto článku píše hlavně o hrách SCUMM, je zde také zmíněn nástroj "HFVExplorer", který potřebujete k extrakci souborů. Nezapomeňte, že data řeči "Inherit the Earth Voices" musíte umístit do stejného adresáře, kde jsou uložena data hry:
+
+ Inherit the Earth.app/Contents/Resources
+
+Ve staré verzi pro Mac OS 9 potřebujete soubory zkopírovat ve formátu MacBinary, protože by měli obsahovat jak zdrojové, tak datové vidlice. Zkopírujte všechny soubory 'ITE *'.
+
+
+3.12) PoznĂĄmky k Simon the Sorcerer 1 a 2:
+----- ------------------------------------
+Pokud måte dvojitou verzi Simon the Sorcerer 1 nebo 2 na CD, verzi pro Windows naleznete v hlavní sloŞce na CD a verzi pro DOS ve sloŞce DOS na CD.
+
+
+3.13) PoznĂĄmky k The Feeble Files:
+----- ----------------------------
+Pokud máte verzi pro Windows, je třeba si uvědomit pár věcí.
+
+Mnoho souborů, které hra vyžaduje, je uloženo v souboru InstallShield s názvem data1.cab, který ScummVM nemůže rozbalit. Budete muset použít původní instalátor, nebo i5comp pro rozbalení obsahu tohoto souboru. Nástroj pro dekomprimaci i5comp může být nalezen při hledání na internetu.
+
+Abyste mohli použít soubory s řečí ve ScummVM, musí být přejmenovány následovně:
+Přejmenovat voices.wav na CD1 na voices1.wav
+Přejmenovat voices.wav na CD2 na voices2.wav
+Přejmenovat voices.wav na CD3 na voices3.wav
+Přejmenovat voices.wav na CD4 na voices4.wav
+
+3.14) PoznĂĄmky k The Legend of Kyrandia:
+----- ----------------------------------
+Abyste mohli spustit The Legend of Kyrandia ve ScummVM potřebujete soubor 'kyra.dat'.
+Soubor by měl být vždykcy součástí oficiálních balíčků ScummVM. V případě, že ScummVM
+hlĂĄsĂ­, Ĺže soubor chybĂĄ, mĹŻĹžete ho najĂ­t na strĂĄnce ScummVM v sekci 'Downloads'.
+Nezapomeňte, že současná verze ScummVM pro Windows by měla soubor obsahovat ve spouštěči a tudíž ho
+musĂ­te mĂ­t pouze, kdyĹž ScummVM soubor nemĹŻĹže nalĂŠzt.
+
+3.15) Poznámky k Předvídavému Vstupnímu Dialogu her Sierra AGI:
+----- ---------------------------------------------------------
+Předvídavý Vstupní Dialog je pomůcka ScummVM pro spouštění her používající jádro AGI (který je znám, že vyžaduje vstup z příkazové řádky) na zařízeních s omezenou podporou klávesnice. V těchto situacích, kdy zadávání pomocí emulované klávesnice je dosti únavné, můžou být příkazy rychle a snadno zadány pomocí Předvídavého Vstupního Dialogu.
+
+Abyste zapnuli předvídavý vstup v hrách AGI, potřebujete zkopírovat soubor pred.dic do dodatečné složky ScummVM nebo do složky hry, kterou chcete hrát. Tento slovník byl vytvořen analýzou všech známých her AGI a obsahuje maximální sadu běžných slov.
+
+Pokud je slovník zjištěn, je Předvídavý Vstupní Dialog zobrazen buď při klinutí na oblast příkazového řádku (kdykoliv je požadován vstup klávesnice, i v rámečcích dialogových oken), nebo v některých verzích pro jiné systémy stisknutím určené klávesové zkratky.
+
+Předvídavý Vstupní Dialog pracuje ve třech režimech, které jsou přepínány tlačítkem (*)Pre/123/Abc. Hlavní vstupní metodou je předvídavý režim
+(Pre), který připomíná "rychlé zadávání" v mobilních telefonech.
+Abeceda je rozdělena do 9 sad, které přirozeně odpovídají 9 klávesám číselné klávesnice (0 je mezera). Pro psaní slova zmáčkněte jednou číslo sady, která obsahuje písmeno slova, které chcete napsat, pak pokračujete k dalšímu. Například, pokud chcete napsat příkaz 'look', měli byste zmáčknout 5665. Jak postupně píšete číselný kód zamýšleného slova, je slovník prohledáván pro známá slova, která se shodují s Vaším vstupem až do tohoto bodu. Jak mačkáte více kláves, slovník se přiblíží ke správnému slovu. To je důvod, proč vypsané slovo se může náhle změnit mezi stisky kláves. Někdy se ale vyskytnou případy, kdy více než jedno slovo má stejné číselné zastoupení. Například slova 'quit' a 'suit' odpovídají stejným číslům, a to 7848. V těchto případech se rozsvítí tlačítko další
+(#). Jeho stisknutím můžete procházet seznam slov, která sdílejí stejný kód a nakonec přijmout to správné stisknutím (0)mezera nebo tlačítka Ok.
+
+Druhou vstupní metodou (123) je číselný vstup: Každou klávesu, kterou stiskněte, je doslova zadána jako číslo.
+
+Třetí vstupní metodou (Abc) je vstupní režim Alfa/opakovaného stisknutí tlačítka. Tento režim je určen pro zadávání textu bez pomoci od slovníku předvídavého režimu (Pre). Text je zadáván po jednotlivých písmenech. Pro každé písmeno nejdříve stiskněte číslo sady, které obsahuje písmeno, které chcete, pak použijte tlačítko další (#) pro procházení písmeny a opakujte s dalším číslem. Například, pro zadání slova 'look' musíte stisknout následující: 5##6##6##5#
+
+Dialogové okno je plně použitelné pomocí myši, ale v některých verzích ScummVM pro jiné platformy, je použití dialogu pohodlnější pomocí číselné klávesnice. Některá tlačítka dialogu mohou být také používána pomocí šipkových kláves a enter.
+
+
+3.16) PoznĂĄmky k Mickey's Space Adventure:
+----- ------------------------------------
+Abyste mohli Mickey's Space Adventure hrát ve ScummVM, potřebujete spolu s datovými soubory hry také původní spouštěč (mickey.exe).
+
+Pro tuto hru ve ScummVM, existuje rozšířená podpora myši, i když v původní hře takováto podpora nebyla. Položky menu mohou být vybrány pomocí myši a je také možné se myší přesunout do jiných míst. Když se kurzor myši nachází na okraji obrazovky, zčervená, pokud je možné jít v tomto směru. Hráč pak může jednoduše kliknout na okraje herní obrazovky pro změnu místa, podobně jako mnoho adventur, což je jednodušší a přímočařejší než pohyb pomocí menu.
+
+
+3.17) Winnie the Pooh notes:
+----- ----------------------
+Je moŞnÊ importovat uloŞenÊ hry z původní hry do ScummVM.
+
+Pro tuto hru ve ScummVM, existuje rozšířená podpora myši, i když v původní hře takováto podpora nebyla. Položky menu mohou být vybrány pomocí myši a je také možné se myší přesunout do jiných míst. Když se kurzor myši nachází na okraji obrazovky, zčervená, pokud je možné jít v tomto směru. Hráč pak může jednoduše kliknout na okraje herní obrazovky pro změnu místa, podobně jako mnoho adventur, což je jednodušší a přímočařejší než pohyb pomocí menu.
+
+
+3.18) PoznĂĄmky k Troll's Tale:
+----- ------------------------
+Původní hra vycházela na zaváděcím disku PC, proto je nutné vypsat obsah tohoto disku jako obraz disku a přejmenovat ho na "troll.img", abyste tuho hru mohli hrát ve ScummVM.
+
+
+3.19) Poznámky k Dračí Historie:
+----- --------------------------
+Existují 4 jazykové varianty této hry: česká, anglická, polská a
+německá. Každá je umístěna v odděleném archivu. Jediná oficiální verze je česká, a anglická, polská a německá byly vždycky nedokončené práce a nikdy nebyly oficiálně vydány. I když texty byly zcela přeloženy, je známo, že některé z nich obsahují překlepy.
+
+Pro tuto hru existuje nepovinný český dabing. Z důvodu velikosti si ho můžete dodatečně stáhnout a pak ho rozbalit do adresáře hry. Můžete také český dabing poslouchat se všemi jazykovými varianty hry, zatímco čtete titulky.
+
+Vťechny herní soubory a nåvody můŞou být ståhnuty z
+http://www.ucw.cz/draci-historie/index-en.html
+
+3.20) Titulky a hlasy souběžně v hrách Sierra SCI:
+----- --------------------------------------------
+Určité CD verze her Sierra SCI mají textová i hlasová data.
+Některé z nich mají volbu pro přepínání mezi nimi, ale existují případy
+kde není moŞnost povolit oba najednou. Ve ScummVM je moŞnÊ si uŞít tento
+kombinovaný režim, kde jsou zvuk i text zobrazeny současně. Tento režim
+můŞe být povolen v nastavení zvuku ScummVM, ale kaŞdå hra se chovå jinak
+vzhledem k povolenĂ­ textu a hlasu.
+
+Hry na CD, kde zvuk i titulky lze zobrazit současně:
+ EcoQuest 1 CD
+ Freddy Pharkas CD
+ King's Quest 6 CD
+ Laura Bow 2 CD
+ Leisure Suit Larry 6 CD
+ Space Quest 4 CD
+
+EcoQuest 1 CD:
+ Hlas i text lze zapnout pomocí volby "Mode" v okně nastavení,
+ nebo přes nastavení zvuku ScummVM.
+
+Freddy Pharkas CD:
+ Ve hře neexistuje možnost pro povolení hlasu a textu. Pro tuto funkci
+ je třeba použít nastavení zvuku ve ScummVM. Některé mluvené dialogy
+ chybĂ­ v textech hry.
+
+King's Quest 6 CD
+ Hlas i text lze zapnout pomocí volby "Mode" v okně nastavení (kde je ve
+ ScummVM přidána dodatečná volba "Dual"), nebo pomocí nastavení
+ zvuku ve ScummVM.
+
+Laura Bow 2 CD
+ Hlas i text lze zapnout pomocí volby "Mode" v okně nastavení (kde je ve
+ ScummVM přidána dodatečná volba "Dual"), nebo pomocí nastavení
+ zvuku ve ScummVM.
+
+Leisure Suit Larry 6 CD
+ Ve hře lze povolit buď hlas, nebo hlas a text. Neexistuje možnost pro
+ povolení textu. Pouze nastavení zvuku ve ScummVM lze pouŞít pro
+ zobrazenĂ­ jen titulkĹŻ.
+
+Space Quest 4 CD:
+ Hlas a text lze povolit pomocí tlačítka "Display Mode" v
+ nastavenĂ­ hry, nebo pomocĂ­ nastavenĂ­ zvuku ve ScummVM.
+
+
+3.21) ZnĂĄmĂŠ ProblĂŠmy:
+----- ---------------
+Toto vydání má následující známé problémy. Není třeba je ohlašovat, i když záplaty pro jejich opravu jsou vítány. Pokud objevíte chybu, která není zde v seznamu, ani není v seznamu kompatibility na internetové stránce, prohlédněte si, prosím, část o hlášení chyb.
+
+ Hry CD Audio:
+- Při hraní her, které používají CD Audio (hry FM-TOWNS, Loom CD, atd) může u uživatelů Microsoft Windows 2000/XP docházet k náhodným pádům. To je díky dlouhotrvající chybě Windows, která má za následek poškozené soubory při čtení z CD. Abyste se tomuto vyhnuli, zkopírujte, prosím, soubory na pevný disk
+
+ Verze FM-TOWNS:
+- Verze KandĹži vyĹžaduje ROM pĂ­sma FM-TOWNS
+
+ Loom:
+- Vypnutí titulků pomocí souboru nastavení je nevypne spolehlivě, protože skripty Loom je znovu automaticky zapnou
+- Podpora MIDI ve verzi EGA vyĹžaduje aktualizaci Roland LucasArts
+- Verze KandĹži na PC-Engine vyĹžaduje rom systĂŠmovĂŠ karty
+
+ The Secret of Monkey Island:
+- Podpora MIDI ve verzi EGA vyĹžaduje aktualizaci Roland LucasArts
+
+ Beneath a Steel Sky:
+- Verze pro Amiga nejsou podporovĂĄny
+- Demoverze z diskety nejsou podporovåny
+- Není chyba: Ve verzi na CD chybí v jistých dialozích řeč, to je normální.
+
+ Elvira - Mistress of the Dark
+- Ve verzi pro Atari ST nefunguje hudba
+
+ Elvira II - The Jaws of Cerberus
+- Ve verzi pro Atari ST nefunguje hudba
+
+- Ve verzi pro PC nefungujĂ­ zvukovĂŠ efekty
+- Ve verzi pro Atari ST jsou problĂŠmy s paletou
+
+ Inherit the Earth: Quest for the Orb
+- Verze pro Amiga nejsou podporovĂĄny
+
+ Simon the Sorcerer 1:
+- V anglických a německých verzích na CD nejsou titulky dostupné, protože jim většina titulků chybí.
+
+ Simon the Sorcerer 2:
+- Kombinace řeči a titulků často způsobí, že řeč je přerušena brzo, toto je omezení původní hry.
+- Ve verzích pro Amiga a Macintosh je podporován pouze výchozí jazyk datových souborů (angličtina).
+
+ Simon the Sorcerer's Puzzle Pack:
+- Žádná podpora pro zobrazování, zadávání, ukládání, či načítání nejvyšších skóre.
+- Žádná podpora pro zobrazování názvů položek, když na ně najedete myší ve Swampy Adventures.
+
+ The Feeble Files:
+- Titulky jsou často nedokončené. V původní hře byly vždy zakázány.
+
+ The Legend of Kyrandia:
+- Ve verzích na disketě pro Mac není žádná hudba ani zvukové efekty.
+- CD Macintosh pouŞívå zahrnutou hudbu a zvukovÊ efekty z DOS.
+
+ Hry Humongous Entertainment:
+ - Pouze původní rozhraní pro uložení a načtení mohou být použity.
+ - Žádná podpora pro hru více hráčů nebo tisknutí obrázků
+
+4.0) PodporovanĂŠ Platformy:
+---- ----------------------
+ScummVM byl vytvořen tak, aby mohl fungovat na mnoha platformách a operačních systémech.
+Odkazy na tyto verze můžou být nalezeny buď na stránkách ScummVM nebo vyhledáváním na internetu. Mnoho díků našim programátorům za jejich úsilí. Pokud máte verzi ScummVM pro jinou platformu/systém a chcete ho odevzdat do hlavního úložiště, neváhejte nás kontaktovat!
+
+PodporovanĂŠ platformy zahrnujĂ­ (mimo jinĂŠ):
+
+ UNIX (Linux, Solaris, IRIX, *BSD, ...)
+ Windows
+ Windows CE a Windows Mobile (včetně Smartphonů a PocketPCs)
+ Mac OS X
+ AmigaOS
+ Android
+ BeOS
+ Dreamcast
+ GP2x
+ iPhone (včetně iPod Touch a iPad)
+ Maemo (Nokia Internet tablet N810)
+ Nintendo 64
+ Nintendo DS
+ Nintendo GameCube
+ Nintendo Wii
+ OS/2
+ PlayStation 2
+ PlayStation Portable
+ Symbian
+ WebOS
+
+Verze pro Dreamcast nepodporuje The Curse of Monkey Island, ani The Dig. Verze pro Nintendo DS nepodporuje Full Throttle, The Dig, nebo The Curse of Monkey Island.
+Pro další omezení v závislosti na platformě se, prosím, podívejte na naší Wiki:
+ http://wiki.scummvm.org/index.php/Platforms
+
+Ve verzi pro Macintosh je stisknutí pravého tlačítka myši emulováno pomocí Cmd-kliknutí (to je, že stisknete tlačítko myši při držení klávesy
+Command/Apple/Vrtule).
+
+Také existují neoficiální verze pro různé platformy, včetně PlayStation 3, Xbox, a Xbox 360. Nezapomeňte, že my jsme tyto verze nevytvořili, takže je nemůžeme ani schválit ani podporovat. Používejte na vlastní riziko!
+
+
+5.0) Spuštění ScummVM:
+---- -----------------
+Všimněte si prosím, že ScummVM bude uložené hry standardně ukládat do složky z které je spuštěn, takže byste se měli vyhnout jeho spouštění z více umístění. Další informace, včetně jak určit složku pro uložené hry pro zamezení tohoto problému, najdete v oddílu 6.0.
+
+ScummVM může být také spuštěn přímo pomocí spouštěcího souboru. V tomto případě bude aktivován zabudovaný spouštěč. Odsuď můžete přidat hry
+(klikněte na 'Přidat hru'), nebo spustit ty, co už jsou nastaveny.
+Hry mohou být také přidány ve velkém množství. Stisknutím shift + 'Přidat
+Hru' (Všimněte si, že se tlačítko změní na 'Hromadné Přidání'), můžete zvolit složku, v které začít, a ScummVM se poté pokusí zjistit hry ve všech podsložkách této složky.
+
+ScummVM může také hru spustit přímo pomocí argumentů příkazové řádky -- viz další část.
+
+
+5.1) Možnosti příkazového řádku:
+---- ---------------------------
+
+ PouŞití: scummvm [MOŽNOSTI]... [HRA]
+
+ [HRA] Krátké jméno hry pro načtení. Například 'monkey'pro Monkey Island. To může být buď id hry, nebo uživatelem určený cíl.
+ -v, --version Zobrazí informace o verzi ScummVM a ukončí se
+ -h, --help Zobrazí stručnou nápovědu a ukončí se
+ -z, --list-games Zobrazí seznam podporovaných her a ukončí se
+ -t, --list-targets Zobrazí seznam nastavených cílů a ukončí se
+ --list-saves=CÍL Zobrazí seznam ulož. her pro určenou hru (CÍL)
+ --console Povolí okno konzole (výchozí: zapnuto) (Pouze pro Windows)
+ -c, --config=NastavenĂ­ PouĹžije jinĂ˝ soubor s nastavenĂ­m
+ -p, --path=CESTA Cesta, kde je hra nainstalovĂĄna
+ -x, --save-slot[=ČÍSLO] Pozice uložené hry pro načtení (výchozí: automatická)
+ -f, --fullscreen Vynutit reĹžim celĂŠ obrazovky
+ -F, --no-fullscreen Vynutit reĹžim do okna
+ -g, --gfx-mode=REŽIM Vybere režim obrazu (viz také část 5.3)
+ --gui-theme=VZHLED Vybere vzhled rozhraní (výchozí, moderní, klasický)
+ --themepath=CESTA Cesta kde jsou vzhledy rozhranĂ­ uloĹženy
+ --list-themes Zobrazí seznam vťech pouŞitelných vzhledů
+ -e, --music-driver=REŽIM Vybere ovladač hudby (viz také část 7.0)
+ --list-audio-devices Zobrazí seznam všech dostupných zvukových zařízení
+ -q, --language=JAZYK Vybere jazyk hry (viz také část 5.2)
+ -m, --music-volume=Č. Nastaví hlasitost hudby, 0-255 (výchozí: 192)
+ -s, --sfx-volume=Č. Nastaví hlasitost zvuků, 0-255 (výchozí: 192)
+ -r, --speech-volume=Č. Nastaví hlasitost hlasů, 0-255 (výchozí: 192)
+ --midi-gain=Č. Nastaví zvýšení pro přehrávání MIDI, 0-1000 (výchozí: 100) (podporováno pouze některými ovladači MIDI)
+ -n, --subtitles Zapne titulky (použijte v hrách s řečí)
+ -b, --boot-param=Č. Předá číslo zavádějícímu skriptu (parametr zavedení)
+ -d, --debuglevel=Č. Nastaví úroveň podrobností ladění
+ --debugflags=PŘÍZNAKY Povolí určité příznaky ladění jádra (oddělené čárkami)
+ -u, --dump-scripts Povolí výpis skriptu, pokud složka s názvem 'dumps' existuje v současné složce
+ --cdrom=ČÍSLO Jednotka CD z které přehrávat CD audio (výchozí: 0 = první jednotka)
+ --joystick[=ČÍSLO] Povolí vstup z joysticku (výchozí: 0 = první joystick)
+ --platform=SLOVO Určí platformu hry (povolené hodnoty: 2gs, 3do, acorn, amiga, atari, c64, fmtowns, mac, nes, pc, pce, segacd, windows)
+ --savepath=CESTA Cesta, kde jsou umístěny uložené hry
+ --extrapath=CESTA Dodatečná cesta pro další data hry
+ --soundfont=SOUBOR Vybere SoundFont pro přehrávání MIDI (Podporováno pouze některými ovladači MIDI)
+ --multi-midi Povolí kombinaci AdLib a přirozeného MIDI
+ --native-mt32 PravĂ˝ Roland MT-32 (zakĂĄĹže emulaci GM)
+ --enable-gs Povolí režim Roland GS pro přehrávání MIDI
+ --output-rate=FREKVENCE Výstupní vzorkovací kmitočet v Hz (např. 22050)
+ --opl-driver=OVLADAČ Vybere emulátor AdLib (OPL) (db, mame)
+ --aspect-ratio Povolí korekci poměru stran
+ --render-mode=REŽIM Povolí dodatečné režimy vykreslení (cga, ega, hercGreen, hercAmber, amiga)
+ --alt-intro PouĹžije alternativnĂ­ intro pro CD verze Beneath a Steel Sky a Flight of the Amazon Queen
+ --copy-protection Povolí ochranu proti kopírování v hrách, když ji ScummVM standardně zakazuje.
+ --talkspeed=ČÍSLO Nastaví zdržení mluvení v hrách SCUMM, nebo rychlost mluvení v jiných hrách (výchozí: 60)
+ --demo-mode SpustĂ­ reĹžim dema v Maniac Mansion (KlasickĂĄ verze)
+ --tempo=NUM Nastaví rychlost hudby (v procentech, 50-200) pro hry SCUMM (výchozí: 100)
+
+
+Význam všech dlouhých možností (to jsou ty, které začínají dvojitou pomlčkou) může být převrácen, když před ně přidáte "no-". Například,
+--no-aspect-ratio vypne korekci poměru stran. To je užitečné, když chcete potlačit nastavení v souboru.
+
+Krátké jméno hry ('cíl hry'), který vidíte na konci příkazového řádku, určuje, která hra je spuštěna. Buď odpovídá libovolnému cíli určeného uživatelem (ze souboru s nastavením), nebo zabudovanému id hry. Krátký seznam zabudovaných id může být nalezen v části list 3.0.
+
+Příklady:
+ * Win32:
+ Spuštění Monkey Island, celá obrazovka, z pevného disku:
+ C:\Games\LucasArts\scummvm.exe -f -pC:\Games\LucasArts\monkey\ monkey
+ Spuštění Full Throttle z CD, celá obrazovka a se zapnutými titulky:
+ C:\Games\LucasArts\scummvm.exe -f -n -pD:\resource\ ft
+
+ * Unix:
+ Spuštění Monkey Island, celá obrazovka, z pevného disku:
+
+ /path/to/scummvm -f -p/games/LucasArts/monkey/ monkey
+ Spuštění Full Throttle z CD, celá obrazovka a se zapnutými titulky:
+ /path/to/scummvm -f -n -p/cdrom/resource/ ft
+
+
+5.2) Volby jazyka:
+---- -------------
+ScummVM obsahuje volby jazyka pro Maniac Mansion, Zak McKracken,
+The Dig, The Curse of Monkey Island, Beneath a Steel Sky a
+Broken Sword.
+
+Nezapomeňte, že kromě Beneath a Steel Sky, Broken Sword, mnohajazykové verze her Goblins a Nippon Safes Inc., použití této možnosti *nezmění* jazyk hry (který je většinou pevně zakódován), ale spíše je použita pro vybrání správného písma (např. pro německou verzi obsahující přehlásky).
+
+Výjimky jsou The Dig a The Curse of Monkey Island -- neanglickÊ
+Verze mohou být nastaveny na 'English'. Nicméně toto ovlivňuje pouze titulky; řeč ve hře zůstane stejná.
+
+Maniac Mansion a Zak McKracken
+ en - Angličtina (výchozí)
+ de - Němčina
+ fr - FrancouzĹĄtina
+ it - ItalĹĄtina
+ es - Španělština
+
+The Dig
+ jp - JaponĹĄtina
+ zh - Čínština
+ kr - KorejĹĄtina
+
+The Curse of Monkey Island
+ en - Angličtina (výchozí)
+ de - Němčina
+ fr - FrancouzĹĄtina
+ it - ItalĹĄtina
+ pt - PortugalĹĄtina
+ es - Španělština
+ jp - JaponĹĄtina
+ zh - Čínština
+ kr - KorejĹĄtina
+
+Beneath a Steel Sky
+ gb - Angličtina (Velká Británie) (výchozí)
+ en - Angličtina (USA)
+ de - Němčina
+ fr - FrancouzĹĄtina
+ it - ItalĹĄtina
+ pt - PortugalĹĄtina
+ es - Španělština
+ se - Ĺ vĂŠdĹĄtina
+
+Broken Sword
+ en - Angličtina (výchozí)
+ de - Němčina
+ fr - FrancouzĹĄtina
+ it - ItalĹĄtina
+ pt - PortugalĹĄtina
+ es - Španělština
+ cz - Čeština
+
+
+5.3) GrafickĂŠ filtry:
+---- ----------------
+ScummVM nabízí několik filtrů vyhlazujících hrany jako pokus o zlepšení obrazové kvality. Jsou to stejné filtry, které používá i mnoho jiných emulátorů, jako MAME. Tyto filtry vezmou původní grafiku hry a zvětší ji o určitou pevnou hodnotu (většinou 2x nebo 3x) než ji Vám zobrazí. Takže například, pokud hra původně pracovala v rozlišení 320x200 (typické pro většinu her SCUMM), pak použitím filtru s faktorem zvětšení 2x, ve skutečnosti dostanete rozlišení 640x400. Podobně s filtrem 3x dostanete 960x600.
+
+Jsou to:
+ 1x - Bez filtrování, bez zvětšení. Nejrychlejší.
+ 2x - Bez filtrování, zvětšení 2x (výchozí pro hry 640x480).
+ 3x - Bez filtrování, zvětšení 3x.
+ 2xsai - Filtr 2xSAI, zvětšení 2x.
+ super2xsai – Vylepšené filtrování 2xSAI, zvětšení 2x.
+ supereagle – Méně rozostřený než 2xSAI, ale pomalejší. Zvětšení 2x.
+ advmame2x - Nespoléhá na rozostření jako 2xSAI, rychlé. Zvětšení 2x.
+ advmame3x - Nespoléhá na rozostření jako 2xSAI, rychlé. Zvětšení 3x.
+ hq2x - Velmi hezká vysoká kvalita, ale pomalý. Zvětšení 2x.
+ hq3x - Velmi hezká vysoká kvalita, ale pomalý. Zvětšení 3x.
+ tv2x - Filtr prokládání, snaží se emulovat TV. Zvětšení 2x.
+ dotmatrix - Efekt bodové matice. Zvětšení 2x.
+
+Abyste filtr vybrali, zvolte ho ve spouštěči, nebo předejte scummvm jeho jméno pomocí možnosti '-g', například:
+
+ scummvm -gadvmame2x monkey2
+
+Poznámka #1: Ne všechny jádra podporují všechny (nebo dokonce žádné) z filtrů vypsaných výše; některé mohou podporovat i další. Filtry vypsané výše jsou ty podporované standardním jádrem SDL.
+
+Poznámka #2: Filtry mohou být velmi pomalé, když je ScummVM sestaven v nastavení pro ladění bez optimalizací. Použití jakékoliv formy vyhlazení hran/lineárního filtrování bude mít vždycky dopad na rychlost.
+
+Poznámka #3: Verze FM-TOWNS hry Zak McKracken má původní rozlišení 320x240, což znamená, že filtry v této hře budou zvětšovat na 640x480
+nebo 960x720. Obdobně hry, které mají původní rozlišení 640x480 (jako
+Curse of Monkey Island nebo Broken Sword) budou zvětšeny na 1280x960 a
+1920x1440.
+
+
+5.4) GlobĂĄlnĂ­ menu:
+---- --------------
+Globální Menu je obecné menu, které je dostupné všem jádrům her stisknutím Ctrl-F5. Z tohoto menu jsou dostupné následující tlačítka: Pokračovat, Volby, O programu, Návrat do Spouštěče, a Ukončit. Výběrem
+'Volby' bude zobrazeno dialogové okno, kde můžou být upravena základní nastavení zvuku, jako hladiny hlasitosti. Výběrem 'Návrat do Spouštěče' současnou hru ukončí a uživatele navrátí do spouštěče ScummVM, kde může být vybrána další hra ke hraní.
+
+Poznámka: Návrat do Spouštěče není podporován všemi jádry a tlačítko nebude v Globálním Menu funkční, pokud není podporováno.
+
+Jádra, která v současnosti podporují návrat do spouštěče, jsou:
+
+ AGI
+ AGOS
+ CINE
+ COMPOSER
+ CRUISE
+ DRACI
+ DRASCULA
+ GOB
+ GROOVIE
+ HUGO
+ KYRA
+ LURE
+ MADE
+ MOHAWK
+ PARALLACTION
+ QUEEN
+ SAGA
+ SCI
+ SCUMM
+ SKY
+ SWORD1
+ SWORD2
+ TEENAGENT
+ TOUCHE
+ TSAGE
+ TUCKER
+
+
+5.5) KlĂĄvesovĂŠ zkratky:
+---- ------------------
+ScummVM podporuje různé zkratky ve hře. Liší se mezi různými hrami SCUMM a jinými hrami.
+
+ Společné:
+ Ctrl-F5 - ZobrazĂ­ GlobĂĄlnĂ­ Menu
+ Cmd-q - Ukončit (Mac OS X)
+ Ctrl-q - Ukončit (další unixy včetně Linux)
+ Ctrl-z OR Alt-x - Quit (dalĹĄĂ­ platformy)
+ Ctrl-u - ZeslabĂ­ vĹĄechny zvuky
+ Ctrl-m - Přepínat zachycení myši
+ Ctrl-Alt 1-8 - Přepínat mezi grafickými filtry
+ Ctrl-Alt + and - - Zvětšit/Zmenšit faktor zvětšení
+Ctrl-Alt a - Přepínat korekci poměru stran. Většina her používá rozlišení 320x200 pixelů, což může na většině novějších monitorů vypadat splácle. Korekce poměru stran obraz roztáhne, aby místo toho použil 320x240, nebo jeho násobky
+ Alt-Enter - Přepíná celou obrazovku/do okna
+ Alt-s - Vytvořit snímek obrazovky (pouze jádro SDL)
+
+ SCUMM:
+ Ctrl 0-9 and Alt 0-9 - NahrĂĄt a uloĹžit stav hry
+ Ctrl-d - Spustit ladění
+ Ctrl-f - Zapnout rychlĂ˝ reĹžim
+ Ctrl-g - Přepnout do velmi VELMI rychlého režimu
+ Ctrl-t - Přepínat mezi 'Pouze řeč',
+ 'Řeč a Titulky' a 'Pouze titulky'
+ Tilda (~) - Zobrazit/skrýt konzoli ladění
+ [ and ] - Hlasitost hudby, zvýťit/sníŞit
+ - and + - Rychlost textu, pomalejĹĄĂ­/rychlejĹĄĂ­
+ F5 - Zobrazí rámeček pro uložení/načtení
+ Alt-F5 - Zobrazí původní rámeček pro uložení/načtení, pokud hra nějaký má. Zde můžete hru načíst i uložit, nicméně pro tento účel není určen a v některých hrách může způsobit pád ScummVM.
+ i - ZobrazĂ­ IQ body (Indiana Jones and the Last Crusade a Indiana Jones and the Fate of Atlantis)
+ MezernĂ­k - PozastavenĂ­
+ Tečka (.) - V některých hrách přeskočí současný řádek textu
+ Enter - Simulovat stisknutí levého tlačítka myši
+ Tab - Simulovat stisknutí pravého tlačítka myši
+
+ Beneath a Steel Sky:
+ Ctrl-d - Spustí ladění
+ Ctrl-f - Zapnout rychlĂ˝ reĹžim
+ Ctrl-g - Přepnout do velmi VELMI rychlého režimu
+ F5 - Zobrazí rámeček pro uložení/načtení
+ Escape - Přeskočí úvod hry
+ Period (.) - Přeskočí současný řádek textu
+
+ Broken Sword:
+ F5 nebo Escape - Zobrazí rámeček pro uložení/načtení
+
+ Broken Sword II:
+ Ctrl-d - Spustit ladění
+ Ctrl-f - Zapnout rychlĂ˝ reĹžim
+ p - PozastavenĂ­
+
+ Dračí Historie:
+ F5 - ZobrazĂ­ GlobĂĄlnĂ­ Menu
+ LevĂŠ klinutĂ­ - JĂ­t, zkoumat
+ PravÊ klinutí - PouŞít, mluvit
+ Posun myši nahoru, i - Inventář
+ Posun myĹĄi dolĹŻ, m - Mapa
+ Escape - Přeskočí úvod, odejde z mapy/inventáře
+ Jakékoliv kliknutí - Přeskočí současně dabovanou větu
+ q - ZapnutĂ­/vypnutĂ­ rychlĂŠho chozenĂ­
+
+ Flight of the Amazon Queen:
+ Ctrl-d - Spustit ladění
+ Ctrl-f - Zapnout rychlĂ˝ reĹžim
+ F1 - Použít Deník (ukládání/načítání)
+ F11 - Rychlé načtení
+ F12 - RychlĂŠ uklĂĄdĂĄnĂ­
+ Escape - Přeskočí video
+ Mezerník - Přeskočí současný řádek textu
+
+ Future Wars
+ F1 - Prozkoumat
+ F2 - VzĂ­t
+ F3 - Inventář
+ F4 - PouŞít
+ F5 - Aktivovat
+ F6 - Mluvit
+ F9 - Menu "Aktivovat"
+ F10 - Menu "PouŞít"
+ Escape - Zobrazit menu příkazů
+
+ Nippon Safes
+ Ctrl-d - Spustit ladění
+ l - Načíst hru
+ s - UloĹžit hru
+
+ Simon the Sorcerer 1 a 2:
+ Ctrl 0-9 a Alt 0-9 - Načíst a uložit stav hry
+ Ctrl-d - Spustit ladění
+ Ctrl-f - Zapnout rychlĂ˝ reĹžim
+ F1 - F3 - Rychlost textu, rychlejĹĄĂ­ - pomalejĹĄĂ­
+ F10 - Zobrazí všechny postavy a objekty s kterými můžete něco dělat
+ Escape - Přeskočit videa
+ - a + - Hlasitost hudby, sníŞit/zvýťit
+ m - Hudba vypnout/zapnout
+ s - ZvukovĂŠ efekty zapnout/vypnout
+ b - Zvuky pozadĂ­ zapnout/vypnout [Pouze Simon the Sorcerer 2]
+ Pause - PozastavenĂ­
+ t - Přepínat mezi řečí a kombinací řeči a titulků [Simon the Sorcerer 1 CD (jiné než angličtina a němčina) a Simon the Sorcerer 2 CD (všechny jazyky)]
+ v - Přepínat mezi titulky a kombinací řeči a titulků [Pouze Simon the Sorcerer 2 CD]
+
+ Simon the Sorcerer's Puzzle Pack
+ Ctrl-d - Spustit ladění
+ Ctrl-f - Zapnout rychlĂ˝ reĹžim
+ F12 - Zapnout/vypnout reĹžim rychle rychlosti ve Swampy Adventures
+ - a + - Hlasitost hudby, sníŞit/zvýťit
+ m - Hudba vypnout/zapnout
+ s - ZvukovĂŠ efekty zapnout/vypnout
+ Pause - PozastavenĂ­
+
+ The Feeble Files
+ Ctrl-d - Spustit ladění
+ Ctrl-f - Zapnout rychlĂ˝ reĹžim
+ F7 - Vyměnit postavy
+ F9 - Zapnout/vypnout jmĂŠna hitboxĹŻ
+ s - ZvukovĂŠ efekty zapnout/vypnout
+ Pause - PozastavenĂ­
+ t - Přepínat mezi řečí a kombinací řeči a titulků
+ v - Přepínat mezi titulky a kombinací řeči a titulků
+
+ The Legend of Kyrandia:
+ Ctrl 0-9 and Alt 0-9 - Načíst a uložit stav hry
+
+ Ctrl-d - Spustit ladění
+
+ TeenAgent
+ F5 - ZobrazĂ­ GlobĂĄlnĂ­ Menu
+
+ Touche: The Adventures of the Fifth Musketeer:
+ Ctrl-f - Zapnout rychlĂ˝ reĹžim
+ F5 - Zobrazit moĹžnosti
+ F9 - Zapnout reĹžim rychlĂŠ chĹŻze
+ F10 - Vypnout reĹžim rychlĂŠ chĹŻze
+ Escape - Ukončit
+ Mezerník - Přeskočí současný řádek textu
+ t - Přepnout mezi 'Pouze Řeč',
+ 'Řeč a Text' a ' Pouze Text'
+
+Nezapomeňte, že používání Ctrl-f nebo Ctrl-g není doporučeno: hry mohou spadnout, když běží rychlostí vyšší než jejich normální, protože skripty ztratí synchronizaci.
+
+Poznámka pro uživatele WinCE: Kvůli omezenému vstupu z klávesnice ve většině zařízení je malé množství klávesových zkratek podporováno pomocí znovu mapování a/nebo činností panelů. Prosím přečtěte si soubor README-WinCE.txt.
+
+
+6.0) UloĹženĂŠ hry:
+---- ------------
+Uložené hry jsou na některých platformách standardně umístěny do současné složky a v jiných do přednastavené složky. To můžete určit v souboru s nastavením pomocí parametru savepath. Podívejte se na vzorový soubor s nastavením dále v tomto souboru.
+
+Platformy, které v současnosti mají jiné výchozí složky jsou:
+ Mac OS X:
+ $HOME/Documents/ScummVM Savegames/
+
+ JinĂŠ unixy:
+ $HOME/.scummvm/
+
+ Windows Vista/7:
+ \Users\uĹžjmĂŠno\AppData\Roaming\ScummVM\Saved games\
+
+ Windows 2000/XP:
+ \Documents and Settings\uĹžjmĂŠno\Application Data\ScummVM\Saved games\
+
+ Windows NT4:
+ <windir>\Profiles\uĹžjmĂŠno\Application Data\ScummVM\Saved games\
+
+UloĹženĂŠ hry jsou ve Windows NT4/2000/XP/Vista/7 uklĂĄdĂĄny ve skrytĂŠ sloĹžce,
+do které můžete vstoupit spuštěním "%APPDATA%\ScummVM\Saved Games\" nebo
+povolením zobrazení skrytých sloŞek v Průzkumníku Windows.
+
+Poznámka pro uživatele Windows NT4/2000/XP/Vista/7: Výchozí umístění uložených her
+bylo ve ScummVM 1.5.0 změněno. Dávkový soubor přesunu může být použit pro zkopírování
+uložených her ze starého výchozího umístění do nového.
+
+6.1) 6.1 AutomatickĂŠ uklĂĄdĂĄnĂ­:
+---- -------------------------
+V některých hrách, (a to "Beneath a Steel Sky", "Flight of the Amazon
+Queen", všechny hry AGI, a všechny hry SCUMM), bude ScummVM standardně automaticky ukládat současný stav každých pět minut (upravitelné pomocí nastavení "autoukládání"). Pro jádra AGI a SCUMM, je bude ukládat do pozice 0. V jádru SCUMM může být tento uložený stav znovu načten pomocí Ctrl-0 nebo menu F5.
+
+
+6.2) Převod uložených her:
+---- ---------------------
+PouŞití uloŞených her z původních verzí není podporovåno vťemi jådry. Pouze nåsledující hry mohou pouŞít původní verze.
+
+ Elvira 1
+ - Přidejte 8 bajtů (název uložené hry) na začátek souboru uložené hry
+ - Přejmenujte ho na 'elvira1.xxx'
+
+ Elvira 2
+ - Přidejte 8 bajtů (název uložené hry) na začátek souboru uložené hry
+ - Přejmenujte ho na 'elvira2-pc.xxx' (verze DOS) nebo 'elvira2.xxx' (Jiné verze)
+
+ Waxworks
+ - Přidejte 8 bajtů (název uložené hry) na začátek souboru uložené hry
+ - Přejmenujte ho na 'waxworks-pc.xxx' (verze DOS) nebo 'waxworks.xxx' (Jiné verze)
+
+ Simon the Sorcerer 1
+ - Přejmenuje soubor uložené hry na 'simon1.xxx'
+
+ Simon the Sorcerer 2
+ - Přejmenuje soubor uložené hry na 'simon2.xxx'
+
+ The Feeble Files
+ - Přejmenuje soubor uložené hry na 'feeble.xxx'
+
+Kde 'xxx' je číslo pozice uložené hry (tj. 001) ve ScummVM
+
+
+6.3) Zobrazení/Načtení uložených her z příkazového řádku:
+---- ----------------------------------------------------
+
+--list-saves:
+
+ Tento přepínač může být použit k zobrazení seznamu současných uložených her určené cílové hry a její odpovídající pozice.
+
+ Použití: --list-saves=[CÍL], kde [CÍL] je cílová hra.
+
+ Jádra, která v současnosti podporují --list-saves jsou:
+
+ AGI
+ AGOS
+ CGE
+ CINE
+ CRUISE
+ DRACI
+ GROOVIE
+ HUGO
+ KYRA
+ LURE
+ MOHAWK
+ PARALLACTION
+ QUEEN
+ SAGA
+ SCI
+ SCUMM
+ SKY
+ SWORD1
+ SWORD2
+ TEENAGENT
+ TINSEL
+ TOON
+ TOUCHE
+ TSAGE
+ TUCKER
+
+--save-slot/-x:
+
+ Tento přepínač může být použit k načtení uložené hry přímo z příkazového řádku.
+
+ Použití: --save-slot[POZICE] nebo -x[POZICE], kde [POZICE] je číslo uložené pozice.
+
+ Jádra, která v současnosti podporují--save-slot/-x jsou:
+
+ AGI
+ CGE
+ CINE
+ CRUISE
+ DRACI
+ GROOVIE
+ HUGO
+ KYRA
+ LURE
+ MOHAWK
+ QUEEN
+ SAGA
+ SCI
+ SCUMM
+ SKY
+ SWORD1
+ SWORD2
+ TEENAGENT
+ TINSEL
+ TOON
+ TOUCHE
+ TSAGE
+ TUCKER
+
+
+7.0) Hudba a Zvuk:
+---- -------------
+Ve většině operačních systémů a pro většinu her bude ScummVM standardně používat MT-32 nebo emulaci AdLib pro přehrávání hudby. MIDI nemusí být
+Dostupné ve všech operačních systémech, nebo potřebuje ruční nastavení. Pokud chcete MIDI použít, máte několik různých voleb pro výstup, v závislosti na Vašem operačním systému a nastavení.
+
+ null - Prázdný výstup. Nepřehrávat žádnou hudbu.
+ adlib - Vnitřní emulace AdLib
+ fluidsynth – Emulace FluidSynth MIDI
+ mt32 - Vnitřní emulace MT-32
+ pcjr - Vnitřní emulace PCjr (použitelné pouze ve hrách SCUMM)
+ pcspk - Vnitřní emulace reproduktoru PC
+ towns - Vnitřní emulace FM-TOWNS YM2612
+ (pouĹžitelnĂŠ pouze v hrĂĄch SCUMM FM-TOWNS)
+ alsa - Výstup pomocí zařízení sekvencéru ALSA. Viz níže.
+ core - Zvuk CoreAudio, pro uĹživatele Mac OS X.
+ coremidi - Zvuk CoreMIDI, pro uŞivatele Mac OS X. PouŞívejte pouze, pokud måte hardwarový syntetizåtor MIDI.
+ seq - PouĹžitĂ­ /dev/sequencer pro MIDI v systĂŠmu *nix. Viz nĂ­Ĺže
+ timidity - Připojení k MIDI serveru TiMidity++. Viz níže.
+ windows - Windows MIDI. PouĹžije zabudovanĂ˝ sekvencĂŠr, pro Windows
+
+Abyste vybrali ovladač zvuku, zvolte ho ve spouštěči, nebo předejte jeho jméno ScummVM pomocí možnosti '-e', například:
+
+ scummvm -eadlib monkey2
+
+
+7.1) Přehrávání zvuku pomocí emulace AdLib:
+---- --------------------------------------
+Standardně bude karta AdLib emulována a ScummVM hudbu přehrává jako vzorkované vlny. To je výchozí režim pro většinu her a nabízí nejlepší kompatibilitu mezi stroji a hrami.
+
+
+7.2) Přehrávání zvuku pomocí emulace FluidSynth MIDI:
+---- ------------------------------------------------
+Pokud byl ScummVM sestaven s podporou libfluidsynth bude schopen přehrávat hudbu MIDI pomocí ovladače FluidSynth. Budete muset ale určit, který SoundFont použít.
+
+ProtoŞe výchozí hlasitost výstupu od FluidSynth můŞe být velmi nízkå,
+ScummVM standardně nastaví zvýšení, aby dostal silnější signál. To může být dále upaveno použitím možnosti příkazového řádku --midi-gain, nebo nastavením "midi_gain" v konfiguračním souboru.
+
+Nastavení může nabývat hodnoty od 0 po 1000 a výchozí je 100. (Toto odpovídá nastavení zvýšení FluidSynth's 0.0 až 10.0, což je pravděpodobně měřeno v decibelech.)
+
+POZNÁMKA: Požadavky na procesor pro FluidSynth můžou být v některých případech dosti vysoké. Je doporučeno mít rychlé CPU.
+
+
+7.3) Přehrávání zvuku pomocí emulace MT-32:
+---- --------------------------------------
+Některé hry, které obsahují hudební data MIDI, také mají vylepšené stopuy určené pro zvukový modul MT-32. ScummVM může toto zařízení nyní emulovat, nicméně aby toto zařízení fungovalo, musíte mít původní ROMy MT-32:
+
+MT32_PCM.ROM - IC21 (512KB)
+MT32_CONTROL.ROM - IC26 (32KB) a IC27 (32KB), proklĂĄdanĂŠ podle bajtu
+
+Tyto ROMy umístěte do herního adresáře, ve Vaší dodatečné cestě, nebo v adresáři, kde je umístěn spouštěč ScummVM.
+
+S tímto ovladačem nemusíte zadávat --native-mt32, protože je automaticky zapnut.
+
+POZNÁMKA: PoŞadavky na procesor pro emulåtor jsou velmi vysokÊ; rychlÊ
+CPU je velmi doporučeno.
+
+
+7.4) Přehrávání zvuku pomocí emulace MIDI:
+---- -------------------------------------
+Některé hry (jako Sam & Max) obsahují pouze hudební data MIDI. Toto bránilo, aby hudba v těchto hrách fungovala na platformách, které MIDI nepodporují, nebo na zvukových kartách, které neposkytují ovladače MIDI (např. mnoho zvukových karet nebude v Linuxu MIDI přehrávat). ScummVM nyní může MIDI emulovat pomocí vzorkovaných vln a AdLib, emulaci MIDI FluidSynth nebo emulace MT-32 pomocí možností -eadlib, -efluidsynth nebo -emt32 v tomto pořadí. Nicméně pokud máte možnost použít přirozené MIDI, doporučujeme použít jeden z režimů MIDI níže pro nejlepší zvuk.
+
+
+7.5) Přehrávání zvuku pomocí emulace Přirozeného MIDI:
+---- -------------------------------------------------
+Použijte vhodnou možnosti příkazového řádku -e<režim> ze seznamu výše pro vybrání Vašeho upřednostňovaného zařízení MIDI. Například pokud chcete použít ovladač Windows MIDI, použijte možnost -ewindows.
+
+
+7.5.1) Použití možností MIDI k přizpůsobení výstupu přirozené MIDI:
+------ ------------------------------------------------------------
+ScummVM podporuje různé režimy MIDI v závislosti na schopnostech Vašeho zařízení MIDI.
+
+Pokud je zadáno --native-mt32, ScummVM se k Vašemu zařízení bude chovat jako ke skutečné MT-32. Protože mapování instrumentů a výhradní systémové příkazy MT-32 se liší od zařízení General MIDI, tuto možnost byste měli povolit, pouze když používáte skutečné Roland MT-32, LAPC-I,CM-64, CM-32L, CM-500, nebo zařízení GS s mapou MT-32.
+
+Pokud je zadáno --enable-gs, ScummVM zavede Vaše zařízení kompatibilní s GS pomocí nastavení, která napodobují nastavení dozvuku MT-32, (nedostatek) chóru, citlivost ohýbaní tónu, atd. Pokud je toto společně použito s --native-mt32, ScummVM vybere mapu kompatibilní s MT-32 a bicí soupravu na Vašem zařízení GS. Toto nastavení funguje lépe než standardní emulace GM nebo GS ve hrách, které nemají vlastní mapování instrumentů (Loom a Monkey1). Obě nastavení byste měli použít pouze tehdy, pokud máte zařízení GS, které má mapu MT-32, jako SC-55, SC-88, SC-88 Pro, SC-8820, SC-8850, atd. Nezapomeňte, že --enable-gs je automaticky zakázáno v DOTT a Samnmax, protože samostatně používají General MIDI.
+
+Pokud není ani jedna z možností výše povolena, ScummVM Vaše zařízení zavede v režimu General MIDI a použije emulaci GM v hrách se zvukovým doprovodem MT-32.
+
+Některé hry obsahují zvukové efekty pouze v AdLib. Pro tyto hry, byste měli zadat --multi-midi, abyste zkombinovali hudbu MIDI se zvukovými efekty AdLib.
+
+
+7.6) Přehrávání zvuku pomocí Sekvencéru MIDI: [POUZE UNIX]
+---- ----------------------------------------
+Pokud Váš ovladač podporuje sekvencér, můžete nastavit proměnnou prostředí "SCUMMVM_MIDI" na Vašem zařízení sekvencéru – například na /dev/sequencer
+
+Pokud máte problém se zvukem v tomto nastavení, možná budete muset nastavit proměnnou prostředí "SCUMMVM_MIDIPORT" na 1 nebo 2. Toto vybere port, který bude použit ve zvoleném sekvencéru. Pak spusťte scummvm s parametrem -eseq. To by mělo fungovat pro několik karet a může nabízet lepší výkon a kvalitu, než emulace AdLib. Nicméně pro systémy, kde podpora sekvencéru nefunguje, můžete vždycky přejít na emulaci AdLib.
+
+
+7.6.1) Přehrávání zvuku pomocí Sekvencéru ALSA: [POUZE UNIX]
+------ ----------------------------------------
+Pokud Máte nainstalován ovladač ALSA s podporou sekvencéru, pak můžete nastavit proměnnou prostředí "SCUMMVM_PORT" nebo proměnnou souboru s nastavením "alsa_port" pro určení portu Vašeho sekvencéru. Pokud ani jedno není nastaveno, jsou standardně vyzkoušeny oba porty "65:0" a "17:0".
+
+Zde je krátký návod, jak sekvencér použít s Vaší zvukovou kartou. Ve všech případech, pro získání seznamu všech portů sekvencéru, zkuste příkaz "aconnect -o -l". To by mělo mít výstup podobný tomuto:
+
+client 14: 'Midi Through' [type=kernel]
+ 0 'Midi Through Port-0'
+client 16: 'SBLive! Value [CT4832]' [type=kernel]
+ 0 'EMU10K1 MPU-401 (UART)'
+client 17: 'Emu10k1 WaveTable' [type=kernel]
+ 0 'Emu10k1 Port 0 '
+ 1 'Emu10k1 Port 1 '
+ 2 'Emu10k1 Port 2 '
+ 3 'Emu10k1 Port 3 '
+client 128: 'TiMidity' [type=user]
+ 0 'TiMidity port 0 '
+ 1 'TiMidity port 1 '
+ 2 'TiMidity port 2 '
+ 3 'TiMidity port 3 '
+
+Nejdůležitější část zde je, že existují čtyři výstupy WaveTable MIDI umístěné na 17:0, 17:1, 17:2 a 17:3, a čtyři porty TiMidity umístěné na 128:0, 128:1, 128:2 a 128:3.
+
+Pokud na Vaší kartě máte čip FM FM, jako třeba SB16, pak musíte načíst SoundFonts pomocí softwaru sbiload. Například:
+
+ sbiload -p 17:0 /etc/std.o3 /etc/drums.o3
+
+Pokud je Vaše karta schopná používat WaveTable, musíte načíst SoundFont sbk nebo sf2 pomocí softwaru sfxload nebo asfxload. Například:
+
+ sfxload /cesta/k/8mbgmsfx.sf2
+
+Pokud Vaše karta neumí s MIDI pracovat, existují dvě možnosti: FluidSynth a TiMidity. Doporučujeme FluidSynth, protože v mnoha systémech bude TiMidity 'zaostávat' za hudbou. To je velmi znatelné v hrách používající
+iMUSE, který používá rychlé a dynamické přechody hudby.
+Spuštěním TiMidity jako root mu umožní nastavit prioritu v reálném čase, což může zaostávání snížit.
+
+Příkaz pro TiMidity, aby se stal sekvencérem ALSA:
+
+ timidity -iAqqq -B2,8 -Os1S -s 44100 &
+
+(Pokud s tímto nastavením dostáváte zkreslený výstup, můžete zkusit vynechat -B2,8 nebo změnit hodnotu.)
+
+Příkaz pro TiMidity, aby se stal sekvencérem ALSA (použitím SoundFonts):
+
+ fluidsynth -m alsa_seq /cesta/k/8mbgmsfx.sf2
+
+Jakmile je TiMidity nebo FluidSynth spuštěn, použijte příkaz 'aconnect -o -l' jak je pospáno výše v této části.
+
+
+7.6.2) Přehrávání zvuku pomocí Sekvencéru IRIX dmedia: [POUZE UNIX]
+------ -----------------------------------------------
+Pokud používáte IRIX a ovladač dmedia s podporou sekvencéru, můžete nastavit proměnnou prostředí "SCUMMVM_MIDIPORT" nebo proměnnou souboru s nastavením "dmedia_port" pro určení portu Vašeho sekvencéru. Standardně je použit první port.
+
+Abyste získali seznam nastavených rozhraní midi ve Vašem systému, spusťte příkaz "startmidi" bez parametrů. Vzorový výstup:
+
+ 2 MIDI interfaces configured:
+ Serial Port 2
+ Software Synth
+
+V tomto případě můžete ScummVM nastavit, aby použil "Software Synth" místo standardního "Serial Port 2" přidáním řádku
+
+ dmedia_port=Software Synth
+
+do Vašeho souboru s nastavením v části [scummvm], nebo nastavením SCUMMVM_PORT=Software Synth ve Vašem prostředí.
+
+
+7.7) PouĹžitĂ­ MIDI serveru TiMidity++:
+---- --------------------------------
+Pokud na Vašem systému chybí jakýkoliv sekvencér MIDI, ale přesto chcete lepší kvalitu MIDI, než kterou může nabídnout standardní emulace AdLib, můžete zkusit MIDI server TiMidity++. Prohlédněte si http://timidity.sourceforge.net/ pro stažení a pokyny k instalaci.
+
+Nejdříve musíte spustit daemona:
+
+ timidity -ir 7777
+
+Nyní můžete spustit ScummVM a zkusit vybrat TiMidity jako výstup pro hudbu. Standardně se připojí k localhost:7777, ale hostitele/port můžete změnit pomocí proměnné prostředí "TIMIDITY_HOST". Můžete také určit
+"číslo zařízení" použitím proměnné "SCUMMVM_MIDIPORT".
+
+
+7.8) PouŞití komprimovaných zvukových souborů
+---- ----------------------------------------
+
+7.8.0) PouĹžitĂ­ souborĹŻ MP3 pro CD audio:
+------ ---------------------------------
+PouĹžijte LAME nebo jinĂ˝ kodĂŠr MP3 pro vyjmutĂ­ stop cd audio do souborĹŻ.
+Soubory pojmenujte track1.mp3 track2.mp3 atd. ScummVM musí být sestaven s podporou MAD pro použití této možnosti. Soubory budete muset z CD vyjmout ve formátu WAV, pak je převést do formátu MP3 v konstantní přenosové rychlosti. To může být provedeno pomocí následujícího příkazového řádku:
+
+ lame -t -q 0 -b 96 track1.wav track1.mp3
+
+
+7.8.1) PouĹžitĂ­ souborĹŻ Ogg Vorbis pro CD audio:
+------ ----------------------------------------
+Použijte oggenc nebo jiný kodér vorbis k převedení zvukových stop do souborů. Pojmenujte je track1.ogg track2.ogg atd. ScummVM musí být sestaven s podporou vorbis pro použití této možnosti. Soubory budete muset z CD vyjmout ve formátu WAV, pak je převést do formátu vorbis. To může být provedeno pomocí následujícího příkazového řádku pro oggenc, kde hodnota po q určuje požadovanou kvalitu od 0 do 10:
+
+ oggenc -q 5 track1.wav
+
+
+7.8.2) PouĹžitĂ­ souborĹŻ Flac pro CD audio:
+------ ----------------------------------
+Použijte flac nebo jiný kodér flac k převedení zvukových stop do souborů.
+Pojmenujte je track1.flac track2.flac atd. Pokud Váš souborový systém podporuje přípony pouze se třemi písmeny, pojmenujte je track1.fla track2.fla atd. ScummVM musí být sestaven s podporou flac pro použití této možnosti. Soubory budete muset z CD vyjmout ve formátu WAV, pak je převést do formátu flac. To může být provedeno pomocí následujícího příkazového řádku pro flac:
+
+ flac --best track1.wav
+
+Nezapomeňte, Şe kvalita bude vŞdy stejnå, různÊ moŞnosti kodÊru ovlivňují dobu kódovåní a výslednou velikost souboru.
+
+
+7.8.3) KomprimovĂĄnĂ­ MONSTER.SOU pomocĂ­ MP3:
+------ ------------------------------------
+Potřebujete LAME a náš nástroj 'compress_scumm_sou' z balíčku
+scummvm-tools, abyste toto mohli provÊst a ScummVM musí být sestaven s podporou MAD.
+
+ compress_scumm_sou monster.sou
+
+Nakonec dostanete mnohem menĹĄĂ­ soubor monster.so3, tento soubor zkopĂ­rujte do VaĹĄĂ­ sloĹžky hry. Pak mĹŻĹžete soubor monster.sou odstranit.
+
+
+7.8.4) KomprimovĂĄnĂ­ MONSTER.SOU pomocĂ­ Ogg Vorbis:
+------ -------------------------------------------
+Tak jako výťe, ale ScummVM musí být sestaven s podporou OGG. Spusżte:
+
+ compress_scumm_sou --vorbis monster.sou
+
+To by mělo vytvořit menší soubor monster.sog file, který byste měli zkopírovat do složky hry. Kódování Ogg může trvat mnohem déle než u MP3, takže mějte po ruce dobrou knížku.
+
+
+7.8.5) KomprimovĂĄnĂ­ MONSTER.SOU pomocĂ­ Flac:
+------ -------------------------------------
+Tak jako výťe, ale ScummVM musí být sestaven s podporou Flac. Spusżte:
+
+ compress_scumm_sou --flac monster.sou
+
+To by mělo vytvořit menší soubor monster.sof, který byste měli zkopírovat do složky hry. Nezapomeňte, že kvalita bude vždy stejná, různé možnosti kodéru ovlivňují dobu kódování a výslednou velikost souboru. Změna velikosti bloku (-b <hodnota>), má největší vliv na výslednou velikost souboru -- 1152 se zdá být dobrá hodnota pro tento druh zvukových souborů. Přečtěte si dokumentaci kodéru předtím, než použijete další hodnoty.
+
+
+7.8.6) KomprimovĂĄnĂ­ hudby/zvuku/hlasu v hrĂĄch AGOS:
+------ --------------------------------------------
+Pro tento úkol použijte náš nástroj 'compress_agos' z balíčku scummvm-tools. Můžete volit mezi několika cílovými formáty, ale nezapomeňte, že je můžete použít pouze tehdy, když ScummVM byl sestaven se zapnutou podporou konkrétního dekodéru.
+
+ compress_agos effects (Pro CD verzi Simon 1 od Acorn)
+ compress_agos simon (Pro CD verzi Simon 1 od Acorn)
+ compress_agos effects.voc (Pro DOS CD verzi Simon 1)
+ compress_agos simon.voc (Pro DOS CD verzi Simon 1)
+ compress_agos simon.wav (Pro Windows CD verzi Simon 1)
+ compress_agos simon2.voc (Pro DOS CD verzi Simon 2)
+ compress_agos simon2.wav (Pro Windows CD verzi Simon 2)
+ compress_agos mac (Pro Macintosh verzi Simon 2)
+
+ compress_agos voices1.wav (Pro Windows verzi Feeble na 2CD/4CD)
+ compress_agos voices2.wav (Pro Windows verzi Feeble na 2CD/4CD)
+ compress_agos voices3.wav (Pro Windows verzi Feeble na 4CD)
+ compress_agos voices4.wav (Pro Windows verzi Feeble na 4CD)
+
+ compress_agos Music (Pro Windows verzi Puzzle Pack)
+
+Pro Ogg Vorbis přidejte k volbám --vorbis, tj.
+
+ compress_agos --vorbis
+
+Pro Flac přidejte k volbám --flac a dodatečné parametry, tj.
+
+ compress_agos --flac
+
+Nakonec dostanete mnohem menší soubor *.mp3, *.ogg nebo *.fla, zkopírujte ho do Vaší složky hry. Starý soubor můžete bezpečné odebrat.
+
+
+7.8.7) Komprimování řeči/hudby v Broken Sword:
+------ ---------------------------------------
+Nástroj 'compress_sword1' z balíčku scummvm-tools může převést hudbu a řeč do MP3, Ogg Vorbis a také Flac. Nejsnadnějším způsobem, jak soubory převést, je prosté zkopírování spouštěče do Vaší složky BS1 (spolu s kodérem lame) a pak ho odsud spustit. Tak bude všechno automaticky převedeno na MP3. Poté, můžete ručně odstranit soubory SPEECH?.CLU a hudební soubory wave.
+
+Spuštěním "compress_sword1 --vorbis" soubory zkomprimuje pomocí Ogg Vorbis místo MP3.
+
+Spuštěním "compress_sword1 --flac" soubory zkomprimuje pomocí Flac
+mĂ­sto MP3.
+
+PouĹžijte "compress_sword1 --help", abyste dostali ĂşplnĂ˝ seznam moĹžnostĂ­.
+
+
+7.8.8) Komprimování řeči/hudby v Broken Sword II:
+------ ------------------------------------------
+Pro tento úkol použijte náš nástroj 'compress_sword2'. Můžete volit mezi několika cílovými formáty, ale nezapomeňte, že je můžete použít pouze tehdy, když ScummVM byl sestaven se zapnutou podporou konkrétního dekodéru.
+
+ compress_sword2 speech1.clu
+ compress_sword2 music1.clu
+
+Pro Ogg Vorbis přidejte --vorbis k možnostem, tj.
+
+ compress_sword2 --vorbis
+
+Nakonec budete mít mnohem menší soubor *.cl3 nebo *.clg, tento soubor zkopírujte do složky hry. Starý soubor můžete bezpečné odstranit.
+
+Je možné použít Flac pro komprimaci přidáním možnosti by --flac. Nicméně výsledný soubor *.clf je ve skutečnosti větší než původní.
+
+Nezapomeňte, prosím, že compress_sword2 bude fungovat pouze se čtyřmi soubory řeči/hudby v Broken Sword II. Nebude fungovat s dalšími soubory *.clu, ani nebude fungovat se soubory řeči z Broken Sword.
+
+
+7.9) Výstupní vzorkovací kmitočet:
+---- -----------------------------
+Výstupní vzorkovací kmitočet říká ScummVM, kolik vzorků zvuku má hrát v kanálu za sekundu. Je toho hodně, co by se dalo říct o tomto tématu, ale většina toho je zde nepodstatné. Krátká verze je, že většině her stačí 22050 Hz, ale v některých případech je lepší 44100 Hz. Na extrémně pomalých systémech byste raději měli použít 11025 Hz, ale je nepravděpodobně, že byste se s tímto museli zabývat.
+
+Abychom to rozvedli, většina zvuků, které ScummVM musí přehrát, byla vzorkována buď na 22050 Hz, nebo 11025 Hz. Použitím vyššího kmitočtu jako kouzlem nezvýší kvalitu těchto zvuků. Proto je 22050 Hz v pořádku.
+
+Některé hry používají CD audio. Pokud pro toto používáte komprimované soubory, jsou pravděpodobně vzorkovaný na kmitočtu 44100 Hz, takže pro tyto hry je toto pravděpodobně lepší volba kmitočtu.
+
+Při použití ovladačů hudby AdLib, FM Towns, PC Speaker nebo IBM PCjr je
+ScummVM zodpovědný za vytváření vzorků. Většinou bude 22050 Hz stačit, ale existuje alespoň jedna stopa hudby AdLib Beneath a Steel Sky, která zní lépe při 44100 Hz.
+
+Použití kmitočtů mezi není doporučeno. Za prvé Vaše zvuková karta ho nemusí podporovat. Teoreticky by se ScummVM měl vrátit k rozumnému kmitočtu, ale nespoléhejte na to. Důležitější je ale to, že ScummVM musí převzorkovat všechny zvuky na jejich výstupní kmitočet. To je mnohem snadnější k provedení, když výstupní kmitočet je násobkem původního.
+
+
+8.0) Soubor s nastavenĂ­m:
+---- --------------------
+Standardně je soubor s nastavením uložen a načítán:
+
+ Windows Vista/7:
+ \Users\jmĂŠno uĹživatele\AppData\Roaming\ScummVM\scummvm.ini,
+
+ Windows 2000/XP:
+ \Documents and Settings\jmĂŠno uĹž\Application Data\ScummVM\scummvm.ini
+
+ Windows NT4:
+ <sloĹžkawin>\Profiles\jmĂŠno uĹž\Application Data\ScummVM\scummvm.ini,
+
+ Windows 95/98/ME:
+ <sloĹžkawin>\scummvm.ini,
+
+ Pokud ve Windows nainstalována dřívější verze ScummVM bude ponecháno dřívější umístění '<složkawin>\scummvm.ini'.
+
+ Unix:
+ ~/.scummvmrc
+
+ Mac OS X:
+ ~/Library/Preferences/ScummVM Preferences
+ (zde ~ označuje Vaši domovskou složku)
+
+ DalĹĄĂ­:
+ scummvm.ini v současné složce
+
+Vzorový soubor s nastavením vypadå takto:
+
+ [scummvm]
+ gfx_mode=supereagle
+ fullscreen=true
+ savepath=C:\saves\
+
+ [sky]
+ path=C:\games\SteelSky\
+
+ [germansky]
+ gameid=sky
+ language=de
+ path=C:\games\SteelSky\
+ description=Beneath a Steel Sky w/ German subtitles
+
+ [germandott]
+ gameid=tentacle
+ path=C:\german\tentacle\
+ description=German version of DOTT
+
+ [tentacle]
+ path=C:\tentacle\
+ subtitles=true
+ music_volume=40
+ sfx_volume=255
+
+ [loomcd]
+ cdrom=1
+ path=C:\loom\
+ talkspeed=5
+ savepath=C:\loom\saves\
+
+ [monkey2]
+ path=C:\amiga_mi2\
+ music_driver=windows
+
+8.1) Rozpoznávaná klíčová slova nastavení
+---- ------------------------------------
+Jsou rozpoznávána následující klíčová slova:
+
+ path řetězec Cesta, kde jsou umístěny datové soubory hry
+ autosave_period číslo Vteřiny mezi autoukládáním (výchozí: 300)
+ save_slot číslo Číslo uložené, které při spuštění načíst.
+ savepath řetězec Cesta, kde hra bude ukládat uložené hry.
+ versioninfo řetězec Verze ScummVM, která vytvořila soubor.
+ gameid řetězec Skutečné id hry. Užitečné, pokud máte několik verzí stejné hry a chcete pro ně různé přezdívky. Viz příklad.
+ description řetězec Popis hry jak se zobrazí ve spouštěči.
+ language řetězec Určí jazyk (en, us, de, fr, it, pt, es,
+ jp, zh, kr, se, gb, hb, cz, ru)
+ speech_mute boolean Pokud true, řeč je ztlumena
+ subtitles boolean Pokud true jsou titulky zapnuty.
+ talkspeed číslo Zpoždění textu v hrách SCUMM, nebo rychlost textu v jiných hrách.
+ fullscreen boolean ReĹžim celĂŠ obrazovky
+ aspect_ratio boolean Povolit korekci poměru stran
+ gfx_mode řetězec Grafický režim (normální, 2x, 3x, 2xsai, super2xsai, supereagle, advmame2x, advmame3x,hq2x, hq3x, tv2x, dotmatrix)
+ confirm_exit boolean Zeptat se uživatele na potvrzení před ukončením (pouze jádro SDL).
+ console boolean Povolit okno konzole (výchozí: zapnuto) (pouze Windows).
+ cdrom číslo Číslo jednotky CD-ROM, kterou použít pro zvuk. Pokud je záporné, k pokusu o přístup k CD-ROM nedojde.
+ joystick_num číslo Číslo zařízení joysticku, které použít pro vstup
+ music_driver řetězec Které hudební jádro použít.
+ opl_driver řetězec Který emulátor AdLib (OPL) použít.
+ output_rate číslo Který výstupní vzorkovací kmitočet použít v Hz. Rozumné hodnoty jsou 11025, 22050 a 44100.
+ alsa_port řetězec Který port použít pro výstup při použití hudebního ovladače ALSA.
+ music_volume číslo Nastavení hlasitosti hudby (0-255)
+ multi_midi boolean Pokud true, jsou povoleny smĂ­ĹĄenĂ˝ AdLib a pĹŻvodnĂ­ MIDI.
+ soundfont řetězec Který SoundFont použít pro přehrávání MIDI. (Podporováno pouze některými ovladači MIDI.)
+ native_mt32 boolean Pokud true, zakáže emulaci GM a předpokládá, že je dostupný pravý Roland MT-32.
+ enable_gs boolean Pokud true, povolí funkce určené pro Roland GS ke zlepšení emulace GM. Pokud je native_mt32 také nastaven na true, zařízení GS zvolí mapu MT-32 pro přehrávání správných instrumentů.
+ sfx_volume číslo Nastavení hlasitosti zvuku (0-255)
+ tempo číslo Rychlost hudby (50-200) (výchozí: 100)
+ speech_volume číslo Nastavení hlasitosti řeči (0-255)
+ midi_gain číslo Zvýšení MIDI (0-1000) (výchozí: 100) (Podporováno pouze některými ovladači MIDI.)
+ copy_protection boolean Povolí ochranu proti kopírování v určitých hrách, kde by ji ScummVM standardně zakázal.
+ demo_mode boolean Spustit demoverzi v Maniac Mansion
+ alt_intro boolean PouŞít alternativní úvod pro CD verze Beneath a Steel Sky a Flight of the Amazon Queen
+ boot_param číslo Předá toto číslo zaváděcímu skriptu
+
+Hry Sierra používající jádro AGI přidávají následující nestandardní klíčové slovo:
+
+originalsaveload boolean Pokud true, jsou pouŞity původní obrazovky nahråvåní/uloŞení místo vylepťených ze ScummVM
+
+Hry Sierra používající jádro SCI přidávají následující nestandardní klíčová slova:
+
+ disable_dithering boolean Odstranit artefakty chvění v některých hrách EGA
+ prefer_digitalsfx boolean Pokud true, jsou upřednostňovány digitální zvukové efekty před syntetizovanými
+ originalsaveload boolean Pokud true, jsou pouŞity původní obrazovky nahråvåní/uloŞení místo vylepťených ze ScummVM
+ native_fb01 bool Pokud true, je ovladač hudby pro kartu IBM Music Feature nebo modul syntetizátoru Yahama FB-01 FM použit jako výstup MIDI
+Broken Sword II přidává následující nestandardní klíčová slova:
+
+ gfx_details číslo Nastavení grafických detailů (0-3)
+ music_mute boolean Pokud true, hudba je ztlumena
+ object_labels boolean Pokud true, popisky objektĹŻ jsou povoleny
+ reverse_stereo boolean Pokud true, kanĂĄly stereo jsou obrĂĄceny
+ sfx_mute boolean Pokud true, zvukovĂŠ efekty jsou ztlumeny
+
+Flight of the Amazon Queen přidává následující nestandardní klíčová slova:
+
+ music_mute boolean Pokud true, hudba je ztlumena
+ sfx_mute boolean Pokud true, zvukovĂŠ efekty jsou ztlumeny
+
+Hopkins FBI přidává následující nestandardní klíčové slovo:
+ enable_gore boolean Pokud true, povolí některé nepivnné krvavé scény ve hře
+
+Jones in the Fast Lane přidává následující nestandardní klíčové slovo:
+
+ music_mute boolean Pokud true, je použito CD audio místo zvuků ve hře
+
+King's Quest VI Windows přidává následující nestandardní klíčové slovo:
+
+ windows_cursors boolean Pokud true, jsou použity původní černobílé kurzory místo kurzorů z DOS. Pokud false, jsou ve verzi Windows použity kurzory DOS, zvětšené, aby se shodovaly se zbytkem zvětšené grafiky
+
+Lands of Lore: The Throne of Chaos přidává následující nestandardní klíčová slova:
+
+ smooth_scrolling boolean Pokud true, je posunování při změně z jedné obrazovky na druhou plynulejší
+ floating_cursors boolean Pokud true, je kurzor změněn na směrovou šipku při najetí na okraj obrazovky. Hráč pak může kliknout pro pohyb v tomto směru.
+
+Space Quest IV CD přidává následující nestandardní klíčové slovo:
+
+ silver_cursors boolean Pokud true, je místo původních zlatých kurzorů použita alternativní sada stříbrných
+
+Simon the Sorcerer 1 a 2 přidává následující nestandardní klíčová slova:
+
+ music_mute boolean Pokud true, hudba je ztlumena
+ sfx_mute boolean Pokud true, zvukovĂŠ efekty jsou ztlumeny
+
+Soltys přidává následující nestandardní klíčové slovo:
+ enable_color_blind bool Pokud true, jsou pĹŻvodnĂ­ barvy nahrazeny odstĂ­ny ĹĄedi
+
+The Legend of Kyrandia přidává následující nestandardní klíčové slovo:
+
+ walkspeed celé číslo Rychlost chůze (0-4)
+
+The Legend of Kyrandia: The Hand of Fate přidává následující nestandardní klíčové slovo:
+
+ walkspeed číslo Rychlost chůze (3 nebo 5, což znamená
+ rychle nebo pomalu)
+
+The Legend of Kyrandia: Malcolm's Revenge přidává následující nestandardní klíčová slova:
+
+ walkspeed číslo Rychlost chůze (3 nebo 5, což znamená
+ rychle nebo pomalu)
+ studio_audience boolean Pokud true, je slyšet potlesk a smích kdykoliv Malcolm provede něco vtipného
+ skip_support boolean Pokud true, hráč může přeskakovat text a scény hry
+ helium_mode boolean Pokud true, lidé znějí tak, jakoby se nadýchali hélia
+
+The Neverhood přidává následující nestandardní klíčová slova:
+
+ originalsaveload boolean Pokud true, jsou pouĹžity pĹŻvodnĂ­ obrazovky pro
+ načítání/ukládání místo obrazovek ScummVM
+ skiphallofrecordsscenes boolean
+ Pokud true, umožní hráči přeskočit
+ obrazovky v SĂ­ni zĂĄznamĹŻ
+ scalemakingofvideos boolean Pokud true, je změněno rozlišení dokumentu o
+ vytváření hry tak, aby zaplnilo celou obrazovku
+
+The 7th Guest přidává následující nestandardní klíčové slovo:
+
+ fast_movie_speed boolean Pokud true, jsou videa přehrávána při zvýšené
+ rychlosti, stejnĂŠ jako ve verzi pro iOS.
+ Videa bez zvuku jsou stále přehrávána při
+ normĂĄlnĂ­ rychlosti, aby nedoĹĄlo k desynchronizaci
+ hudby
+
+8.2) Vlastní herní volby, které mohou být přepínány pomoci grafického
+---- ----------------------------------------------------------------
+rozhranĂ­
+--------
+Mnoho vlastních herních voleb v předchozí části může být přepnuto přes grafické rozhraní. Pokud je takováto volba pro určitou hru dostupná, objeví se karta "Jádro" při přidávání nebo úpravě nastavení této hry.
+Pokud vlastní možnosti nejsou zobrazeny, musí být konkrétní hry spuštěny jednou nebo znovu přidány do seznamu her spouštěče ScummVM. Toto aktualizuje nastavení každé položky, čímž umožní zobrazení vlastních voleb.
+
+9.0) SestavenĂ­:
+---- ----------
+Pro aktuální přehled o tom, jak ScummVM sestavit pro různé platformy, prohlédněte si, prosím, naší Wiki, zvláště tuto stránku:
+
+ http://wiki.scummvm.org/index.php/Compiling_ScummVM
+
+Pokud sestavujete ve Windows, Linux nebo Mac OS X, potřebujete SDL-1.2.2
+Nebo novější (starší verze mohou fungovat, ale nejsou podporovány) a podporovaný kompilátor. Většina kompilátorů, včetně GCC, mingw a novějších verzí Microsoft Visual C++ jsou podporovány. Pokud chcete použít stopy CD komprimované do MP3 nebo soubory .SOU, musíte nainstalovat knihovnu MAD; podobně potřebujete vhodné knihovny pro komprimovaný zvuk pomocí Ogg Vorbis a FLAC. Pro komprimované uložené stavy je potřeba mít zlib.
+
+Některé části ScummVM, zvláště zvětšovače, mají vysoce optimalizované verze napsané v assembleru. Pokud si přejete tuto možnost použít, potřebuje mít nainstalován assembler nasm (viz http://nasm.sf.net). Nezapomeňte, že v současnosti máme pouze verze optimalizované pro x86 MMX, a nebudou sestaveny pro jiné procesory.
+
+Na Win9x/NT/XP můžete určit USE_WINDBG a připojit WinDbg pro procházení ladících zpráv (viz http://www.sysinternals.com/ntw2k/freeware/debugview.shtml).
+
+ GCC a MinGW32:
+ * Zadejte "./configure"
+ * Zadejte "make" (nebo "gmake", či "gnumake", v závislosti na tom, jak je GNU make ve Vašem systému nazván) a ScummVM snad bude pro Vás sestaven.
+ * Pro další informace si prohlédněte:
+ http://wiki.scummvm.org/index.php/Compiling_ScummVM/GCC
+ či
+ http://wiki.scummvm.org/index.php/Compiling_ScummVM/MinGW
+
+ Microsoft Visual C++ 8/9/10:
+ * Přečtěte si, jak vytvořit soubory projektu ve "dists\msvc8",
+ "dists\msvc9" příslušně "dists\msvc10".
+ * Otevřete výsledný soubor projektu.
+ * Zadejte cestu k potřebným knihovnám a hlsičkovým souborům v
+ Tools|Options|Projects and Solutions|VC++ Directories".
+ * Teď by program měl být úspěšně sestaven.
+ * Pro další informace si prohlédněte:
+ http://wiki.scummvm.org/index.php/Compiling_ScummVM/VS2005
+
+ Windows Mobile:
+ * Přečtěte si prosím:
+ http://wiki.scummvm.org/index.php/Compiling_ScummVM/Windows_CE
+
+ Mac OS X:
+ * Ujistěte se, že máte nainstalovány nástroje pro vývojáře.
+ * Balíček SDL pro vývojáře na OS X, který je dostupný na stránce SDL _není_ vhodný. Spíše potřebujete sestavení v unixovém stylu. Jeden takový způsob, jak ho nainstalovat je pomocí Fink
+ (http://fink.sf.net). Také můžete SDL sestavit ručně ze zdrojového kódu pomocí systému sestavení pro unix (configure a make).
+ * Ve sloĹžce ScummVM zadejte "./configure".
+ * Nyní můžete zadat 'make' pro vytvoření spouštěče příkazového řádku.
+ * Abyste získali verzi, kterou můžete spustit z Finder, zadejte 'make bundle' což vytvoří ScummVM.app (to funguje pouze, když máte SDL nainstalován do /sw, což se při instalaci Fink provede). Pokud jste SDL nainstalovali jiným způsobem, budete muset upravit ports.mk).
+ * Pro další informace si prohlédněte:
+ http://wiki.scummvm.org/index.php/Compiling_ScummVM/MacOS_X_Crosscompiling
+
+ AmigaOS 4 (Křížová kompilace pomocí Cygwin):
+ * Ujistěte se, že máte nainstalován SDL, můžete také potřebovat
+ libogg, libvorbis, libvorbisfile, zlib, libmad.
+ * Zadejte ./configure --host=ppc-amigaos
+ * Pokud dostanete chybu o sdl-config, pouĹžijte parametr --with-sdl-prefix pro nastavenĂ­ cesty.
+ * Zkontrolujte soubor 'config.mk' a pokud je vše v pořádku:
+ * SpusĹĽte 'make'.
+ * Křížová kompilace pomocí Linux může být také tak lehká.
+
+ iPhone:
+ * Přečtěte si prosím:
+ http://wiki.scummvm.org/index.php/Compiling_ScummVM/iPhone
+
+ Maemo:
+ * Nainstalujte Maemo SDK s rootstrap 4.1.2
+ * Nainstalujte libmad, Tremor, FLAC ze zdroje
+ * SpusĹĽte 'ln -s backends/platform/maemo/debian'
+ * Aktualizujte debian/changelog
+ * SpusĹĽte 'sb2 dpkg-buildpackage -b'
+
+------------------------------------------------------------------------
+Hodně Štěstí a Šťastné Adventurování!
+Tým ScummVM.
+http://www.scummvm.org/
+------------------------------------------------------------------------
+
+
+
+
diff --git a/engines/agi/detection_tables.h b/engines/agi/detection_tables.h
index 7c9ef4cbf6..2d7fba3507 100644
--- a/engines/agi/detection_tables.h
+++ b/engines/agi/detection_tables.h
@@ -846,6 +846,7 @@ static const AGIGameDescription gameDescriptions[] = {
FANMADE("Time Quest (Demo v0.1)", "12e1a6f03ea4b8c5531acd0400b4ed8d"),
FANMADE("Time Quest (Demo v0.2)", "7b710608abc99e0861ac59b967bf3f6d"),
FANMADE_SVP("Time Quest", "90314f473d8317be5cd1f0306f139aea", 300, 0x2440, Common::kPlatformCoCo3),
+ FANMADE("Toby's World (Demo)", "3f8ebea0eb32303e65e2a6e8341c6741"),
FANMADE("Tonight The Shrieking Corpses Bleed (Demo v0.11)", "bcc57a7c8d563fa0c333107ae1c0a6e6"),
FANMADE("Tonight The Shrieking Corpses Bleed (v1.01)", "36b38f621b38e8d104aa0807302dc8c9"),
FANMADE("Turks' Quest - Heir to the Planet", "3d19254b737c8b218e5bc4580542b79a"),
diff --git a/engines/agos/agos.cpp b/engines/agos/agos.cpp
index 031aed8bed..6eda2eb9aa 100644
--- a/engines/agos/agos.cpp
+++ b/engines/agos/agos.cpp
@@ -21,6 +21,7 @@
*/
#include "common/config-manager.h"
+#include "common/debug-channels.h"
#include "common/file.h"
#include "common/fs.h"
#include "common/textconsole.h"
@@ -144,6 +145,14 @@ AGOSEngine_Elvira1::AGOSEngine_Elvira1(OSystem *system, const AGOSGameDescriptio
AGOSEngine::AGOSEngine(OSystem *system, const AGOSGameDescription *gd)
: Engine(system), _rnd("agos"), _gameDescription(gd) {
+ DebugMan.addDebugChannel(kDebugOpcode, "opcode", "Opcode debug level");
+ DebugMan.addDebugChannel(kDebugVGAOpcode, "vga_opcode", "VGA Opcode debug level");
+ DebugMan.addDebugChannel(kDebugSubroutine, "subroutine", "Subroutine debug level");
+ DebugMan.addDebugChannel(kDebugVGAScript, "vga_script", "VGA Script debug level");
+ //Image dumping command disabled as it doesn't work well
+#if 0
+ DebugMan.addDebugChannel(kDebugImageDump, "image_dump", "Enable dumping of images to files");
+#endif
_vcPtr = 0;
_vcGetOutOfCode = 0;
_gameOffsetsPtr = 0;
@@ -243,13 +252,6 @@ AGOSEngine::AGOSEngine(OSystem *system, const AGOSGameDescription *gd)
_backFlag = false;
- _debugMode = 0;
- _dumpScripts = false;
- _dumpOpcodes = false;
- _dumpVgaScripts = false;
- _dumpVgaOpcodes = false;
- _dumpImages = false;
-
_copyProtection = false;
_pause = false;
_speech = false;
@@ -510,6 +512,7 @@ AGOSEngine::AGOSEngine(OSystem *system, const AGOSGameDescription *gd)
_saveLoadType = 0;
_saveLoadSlot = 0;
memset(_saveLoadName, 0, sizeof(_saveLoadName));
+ memset(_saveBuf, 0, sizeof(_saveBuf));
_saveGameNameLen = 0;
_saveLoadRowCurPos = 0;
@@ -550,7 +553,7 @@ AGOSEngine::AGOSEngine(OSystem *system, const AGOSGameDescription *gd)
SearchMan.addSubDirectoryMatching(gameDataDir, "execute");
// Add default file directories for Amiga/Macintosh
- // verisons of Simon the Sorcerer 2
+ // versions of Simon the Sorcerer 2
SearchMan.addSubDirectoryMatching(gameDataDir, "voices");
// Add default file directories for Amiga & Macintosh
@@ -674,15 +677,6 @@ Common::Error AGOSEngine::init() {
_subtitles = true;
}
- // TODO: Use special debug levels instead of the following hack.
- _debugMode = (gDebugLevel >= 0);
- switch (gDebugLevel) {
- case 2: _dumpOpcodes = true; break;
- case 3: _dumpVgaOpcodes = true; break;
- case 4: _dumpScripts = true; break;
- case 5: _dumpVgaScripts = true; break;
- }
-
return Common::kNoError;
}
diff --git a/engines/agos/agos.h b/engines/agos/agos.h
index 34ab328999..b6b5e427e1 100644
--- a/engines/agos/agos.h
+++ b/engines/agos/agos.h
@@ -61,6 +61,14 @@ struct Surface;
namespace AGOS {
+enum {
+ kDebugOpcode = 1 << 0,
+ kDebugVGAOpcode = 1 << 1,
+ kDebugSubroutine = 1 << 2,
+ kDebugVGAScript = 1 << 3,
+ kDebugImageDump = 1 << 4
+};
+
uint fileReadItemID(Common::SeekableReadStream *in);
#define CHECK_BOUNDS(x, y) assert((uint)(x) < ARRAYSIZE(y))
@@ -324,15 +332,9 @@ protected:
bool _fastMode;
bool _backFlag;
- uint16 _debugMode;
Common::Language _language;
bool _copyProtection;
bool _pause;
- bool _dumpScripts;
- bool _dumpOpcodes;
- bool _dumpVgaScripts;
- bool _dumpVgaOpcodes;
- bool _dumpImages;
bool _speech;
bool _subtitles;
bool _vgaVar9;
@@ -584,6 +586,7 @@ protected:
byte _saveLoadType, _saveLoadSlot;
char _saveLoadName[108];
+ char _saveBuf[200];
Graphics::Surface *_backGroundBuf;
Graphics::Surface *_backBuf;
@@ -834,6 +837,9 @@ protected:
void displayBoxStars();
void invertBox(HitArea * ha, byte a, byte b, byte c, byte d);
+ virtual void handleMouseWheelUp();
+ virtual void handleMouseWheelDown();
+
virtual void initMouse();
virtual void handleMouseMoved();
virtual void drawMousePointer();
@@ -1706,10 +1712,13 @@ protected:
void setExitState(Item *i, uint16 n, uint16 d, uint16 s);
void setSRExit(Item *i, int n, int d, uint16 s);
- virtual void listSaveGames(char *dst);
+ virtual void handleMouseWheelUp();
+ virtual void handleMouseWheelDown();
+
+ virtual void listSaveGames();
virtual bool confirmOverWrite(WindowBlock *window);
virtual void userGame(bool load);
- virtual int userGameGetKey(bool *b, char *buf, uint maxChar);
+ virtual int userGameGetKey(bool *b, uint maxChar);
virtual Common::String genSaveName(int slot) const;
};
@@ -1829,6 +1838,9 @@ protected:
virtual void clearName();
+ virtual void handleMouseWheelUp();
+ virtual void handleMouseWheelDown();
+
virtual void drawIcon(WindowBlock *window, uint icon, uint x, uint y);
virtual void initMouse();
@@ -1841,9 +1853,9 @@ protected:
virtual void playSpeech(uint16 speechId, uint16 vgaSpriteId);
- virtual void listSaveGames(char *dst);
+ virtual void listSaveGames();
virtual void userGame(bool load);
- virtual int userGameGetKey(bool *b, char *buf, uint maxChar);
+ virtual int userGameGetKey(bool *b, uint maxChar);
virtual void playMusic(uint16 music, uint16 track);
@@ -1927,6 +1939,7 @@ public:
void off_listSaveGames();
void off_checkCD();
void off_screenTextBox();
+ void off_b2Set();
void off_isAdjNoun();
void off_hyperLinkOn();
void off_hyperLinkOff();
@@ -1969,12 +1982,17 @@ protected:
virtual uint16 readUint16Wrapper(const void *src);
virtual uint32 readUint32Wrapper(const void *src);
+ void setLoyaltyRating(byte rating);
+
void playVideo(const char *filename, bool lastSceneUsed = false);
void stopInteractiveVideo();
virtual void drawImage(VC10_state *state);
void scaleClip(int16 h, int16 w, int16 y, int16 x, int16 scrollY);
+ virtual void handleMouseWheelUp();
+ virtual void handleMouseWheelDown();
+
void drawMousePart(int image, byte x, byte y);
virtual void initMouse();
virtual void drawMousePointer();
diff --git a/engines/agos/animation.cpp b/engines/agos/animation.cpp
index 8e242d02c4..83682d567b 100644
--- a/engines/agos/animation.cpp
+++ b/engines/agos/animation.cpp
@@ -287,7 +287,7 @@ void MoviePlayerDXA::copyFrameToBuffer(byte *dst, uint x, uint y, uint pitch) {
void MoviePlayerDXA::playVideo() {
// Most of the videos included in the Amiga version, reduced the
- // resoluton to 384 x 280, so require the screen to be cleared,
+ // resolution to 384 x 280, so require the screen to be cleared,
// before starting playing those videos.
if (getWidth() == 384 && getHeight() == 280) {
_vm->clearSurfaces();
diff --git a/engines/agos/debug.cpp b/engines/agos/debug.cpp
index 9dd6db911f..ad5bfb56f4 100644
--- a/engines/agos/debug.cpp
+++ b/engines/agos/debug.cpp
@@ -101,7 +101,7 @@ const byte *AGOSEngine::dumpOpcode(const byte *p) {
}
case 'W':{
- int n = (int16)READ_BE_UINT16(p);
+ uint16 n = READ_BE_UINT16(p);
p += 2;
if (getGameType() == GType_PP) {
if (n >= 60000 && n < 62048)
@@ -222,14 +222,18 @@ void AGOSEngine::dumpVideoScript(const byte *src, bool singeOpcode) {
error("dumpVideoScript: Opcode %d out of range (%d)", opcode, _numVideoOpcodes);
}
- if (getGameType() == GType_FF || getGameType() == GType_PP) {
+ if (getGameType() == GType_PP) {
+ strn = str = puzzlepack_videoOpcodeNameTable[opcode];
+ } else if (getGameType() == GType_FF) {
strn = str = feeblefiles_videoOpcodeNameTable[opcode];
} else if (getGameType() == GType_SIMON2) {
strn = str = simon2_videoOpcodeNameTable[opcode];
} else if (getGameType() == GType_SIMON1) {
strn = str = simon1_videoOpcodeNameTable[opcode];
- } else if (getGameType() == GType_ELVIRA2 || getGameType() == GType_WW) {
+ } else if (getGameType() == GType_WW) {
strn = str = ww_videoOpcodeNameTable[opcode];
+ } else if (getGameType() == GType_ELVIRA2) {
+ strn = str = elvira2_videoOpcodeNameTable[opcode];
} else if (getGameType() == GType_ELVIRA1) {
strn = str = elvira1_videoOpcodeNameTable[opcode];
} else {
@@ -250,25 +254,39 @@ void AGOSEngine::dumpVideoScript(const byte *src, bool singeOpcode) {
case 'x':
debugN("\n");
return;
- case 'b':
+ case 'b': {
debugN("%d ", *src++);
break;
- case 'd':
+ }
+ case 'w': {
+ int16 v = (int16)readUint16Wrapper(src);
+ src += 2;
+ if (v < 0)
+ debugN("[%d] ", -v);
+ else
+ debugN("%d ", v);
+ break;
+ }
+ case 'd': {
debugN("%d ", (int16)readUint16Wrapper(src));
src += 2;
break;
- case 'v':
+ }
+ case 'v': {
debugN("[%d] ", readUint16Wrapper(src));
src += 2;
break;
- case 'i':
+ }
+ case 'i': {
debugN("%d ", (int16)readUint16Wrapper(src));
src += 2;
break;
- case 'j':
+ }
+ case 'j': {
debugN("-> ");
break;
- case 'q':
+ }
+ case 'q': {
while (readUint16Wrapper(src) != end) {
debugN("(%d,%d) ", readUint16Wrapper(src),
readUint16Wrapper(src + 2));
@@ -276,6 +294,7 @@ void AGOSEngine::dumpVideoScript(const byte *src, bool singeOpcode) {
}
src += 2;
break;
+ }
default:
error("dumpVideoScript: Invalid fmt string '%c' in decompile VGA", *str);
}
diff --git a/engines/agos/debug.h b/engines/agos/debug.h
index f99a167bb4..4d521de9b9 100644
--- a/engines/agos/debug.h
+++ b/engines/agos/debug.h
@@ -2468,7 +2468,7 @@ const char *const elvira1_videoOpcodeNameTable[] = {
"dd|DELAY_IF_NOT_EQ",
};
-const char *const ww_videoOpcodeNameTable[] = {
+const char *const elvira2_videoOpcodeNameTable[] = {
/* 0 */
"x|RET",
"ddd|FADEOUT",
@@ -2485,7 +2485,7 @@ const char *const ww_videoOpcodeNameTable[] = {
"dddd|DRAW",
"d|ON_STOP",
/* 12 */
- "d|DELAY",
+ "w|DELAY",
"d|SET_SPRITE_OFFSET_X",
"d|SET_SPRITE_OFFSET_Y",
"d|SYNC",
@@ -2551,11 +2551,94 @@ const char *const ww_videoOpcodeNameTable[] = {
"|FASTFADEIN",
};
+const char *const ww_videoOpcodeNameTable[] = {
+ /* 0 */
+ "x|RET",
+ "ddd|FADEOUT",
+ "w|CALL",
+ "ddddd|NEW_SPRITE",
+ /* 4 */
+ "ddd|FADEIN",
+ "vdj|IF_EQUAL",
+ "dj|IF_OBJECT_HERE",
+ "dj|IF_OBJECT_NOT_HERE",
+ /* 8 */
+ "ddj|IF_OBJECT_IS_AT",
+ "ddj|IF_OBJECT_STATE_IS",
+ "dddd|DRAW",
+ "d|ON_STOP",
+ /* 12 */
+ "w|DELAY",
+ "d|SET_SPRITE_OFFSET_X",
+ "d|SET_SPRITE_OFFSET_Y",
+ "d|SYNC",
+ /* 16 */
+ "d|WAIT_SYNC",
+ "d|WAIT_END",
+ "i|JUMP_REL",
+ "|CHAIN_TO",
+ /* 20 */
+ "dd|SET_REPEAT",
+ "i|END_REPEAT",
+ "d|SET_PALETTE",
+ "d|SET_PRIORITY",
+ /* 24 */
+ "wiid|SET_SPRITE_XY",
+ "x|HALT_SPRITE",
+ "ddddd|SET_WINDOW",
+ "|RESET",
+ /* 28 */
+ "dddd|PLAY_SOUND",
+ "|STOP_ALL_SOUNDS",
+ "d|SET_FRAME_RATE",
+ "d|SET_WINDOW",
+ /* 32 */
+ "|SAVE_SCREEN",
+ "|MOUSE_ON",
+ "|MOUSE_OFF",
+ "dd|CLEAR_WINDOW",
+ /* 36 */
+ "dd|SET_WINDOW_IMAGE",
+ "dd|POKE_PALETTE",
+ "vj|IF_VAR_NOT_ZERO",
+ "vd|SET_VAR",
+ /* 40 */
+ "vd|ADD_VAR",
+ "vd|SUB_VAR",
+ "vd|DELAY_IF_NOT_EQ",
+ "dj|IF_BIT_SET",
+ /* 44 */
+ "dj|IF_BIT_CLEAR",
+ "dd|SET_WINDOW_PALETTE",
+ "d|SET_PALETTE_SLOT1",
+ "d|SET_PALETTE_SLOT2",
+ /* 48 */
+ "d|SET_PALETTE_SLOT3",
+ "d|SET_BIT",
+ "d|CLEAR_BIT",
+ "d|ENABLE_BOX",
+ /* 52 */
+ "d|PLAY_EFFECT",
+ "dd|DISSOLVE_IN",
+ "ddd|DISSOLVE_OUT",
+ "ddd|MOVE_BOX",
+ /* 56 */
+ "|FULL_SCREEN",
+ "|BLACK_PALETTE",
+ "|CHECK_CODE_WHEEL",
+ "j|IF_EGA",
+ /* 60 */
+ "d|STOP_ANIMATE",
+ "d|INTRO",
+ "|FASTFADEOUT",
+ "|FASTFADEIN",
+};
+
const char *const simon1_videoOpcodeNameTable[] = {
/* 0 */
"x|RET",
"ddd|FADEOUT",
- "d|CALL",
+ "w|CALL",
"ddddd|NEW_SPRITE",
/* 4 */
"ddd|FADEIN",
@@ -2568,7 +2651,7 @@ const char *const simon1_videoOpcodeNameTable[] = {
"ddddd|DRAW",
"|CLEAR_PATHFIND_ARRAY",
/* 12 */
- "d|DELAY",
+ "w|DELAY",
"d|SET_SPRITE_OFFSET_X",
"d|SET_SPRITE_OFFSET_Y",
"d|SYNC",
@@ -2583,7 +2666,7 @@ const char *const simon1_videoOpcodeNameTable[] = {
"dd|SET_PALETTE",
"d|SET_PRIORITY",
/* 24 */
- "diid|SET_SPRITE_XY",
+ "wiid|SET_SPRITE_XY",
"x|HALT_SPRITE",
"ddddd|SET_WINDOW",
"|RESET",
@@ -2629,7 +2712,7 @@ const char *const simon1_videoOpcodeNameTable[] = {
"j|IF_SPEECH",
/* 60 */
"d|STOP_ANIMATE",
- "ddd|MASK",
+ "wdd|MASK",
"|FASTFADEOUT",
"|FASTFADEIN",
};
@@ -2638,7 +2721,7 @@ const char *const simon2_videoOpcodeNameTable[] = {
/* 0 */
"x|RET",
"ddd|FADEOUT",
- "d|CALL",
+ "w|CALL",
"dddddd|NEW_SPRITE",
/* 4 */
"ddd|FADEIN",
@@ -2666,7 +2749,7 @@ const char *const simon2_videoOpcodeNameTable[] = {
"dd|SET_PALETTE",
"d|SET_PRIORITY",
/* 24 */
- "diib|SET_SPRITE_XY",
+ "wiib|SET_SPRITE_XY",
"x|HALT_SPRITE",
"ddddd|SET_WINDOW",
"|RESET",
@@ -2706,13 +2789,13 @@ const char *const simon2_videoOpcodeNameTable[] = {
"ddd|DUMMY_54",
"ddd|MOVE_BOX",
/* 56 */
- "i|WAIT_BIG",
+ "w|WAIT_BIG",
"|BLACK_PALETTE",
"ddd|SET_PRIORITIES",
"ddd|STOP_ANIMATIONS",
/* 60 */
"dd|STOP_ANIMATE",
- "ddd|MASK",
+ "wdd|MASK",
"|FASTFADEOUT",
"|FASTFADEIN",
/* 64 */
@@ -2735,7 +2818,7 @@ const char *const feeblefiles_videoOpcodeNameTable[] = {
/* 0 */
"x|RET",
"ddd|FADEOUT",
- "d|CALL",
+ "w|CALL",
"dddddd|NEW_SPRITE",
/* 4 */
"ddd|FADEIN",
@@ -2763,7 +2846,7 @@ const char *const feeblefiles_videoOpcodeNameTable[] = {
"dd|SET_PALETTE",
"d|SET_PRIORITY",
/* 24 */
- "diib|SET_SPRITE_XY",
+ "wiib|SET_SPRITE_XY",
"x|HALT_SPRITE",
"ddddd|SET_WINDOW",
"|RESET",
@@ -2803,7 +2886,116 @@ const char *const feeblefiles_videoOpcodeNameTable[] = {
"ddd|DUMMY_54",
"ddd|MOVE_BOX",
/* 56 */
- "i|WAIT_BIG",
+ "w|WAIT_BIG",
+ "|BLACK_PALETTE",
+ "ddd|SET_PRIORITIES",
+ "ddd|STOP_ANIMATIONS",
+ /* 60 */
+ "dd|STOP_ANIMATE",
+ "wdd|MASK",
+ "|FASTFADEOUT",
+ "|FASTFADEIN",
+ /* 64 */
+ "j|IF_SPEECH",
+ "|SLOW_FADE_IN",
+ "ddj|IF_VAR_EQUAL",
+ "ddj|IF_VAR_LE",
+ /* 68 */
+ "ddj|IF_VAR_GE",
+ "dd|PLAY_SEQ",
+ "dd|JOIN_SEQ",
+ "|IF_SEQ_WAITING",
+ /* 72 */
+ "dd|SEQUE",
+ "bb|SET_MARK",
+ "bb|CLEAR_MARK",
+ "dd|SETSCALE",
+ /* 76 */
+ "ddd|SETSCALEXOFFS",
+ "ddd|SETSCALEYOFFS",
+ "|COMPUTEXY",
+ "|COMPUTEPOSNUM",
+ /* 80 */
+ "wdd|SETOVERLAYIMAGE",
+ "dd|SETRANDOM",
+ "d|GETPATHVALUE",
+ "ddd|PLAYSOUNDLOOP",
+ "|STOPSOUNDLOOP",
+};
+
+const char *const puzzlepack_videoOpcodeNameTable[] = {
+ /* 0 */
+ "x|RET",
+ "ddd|FADEOUT",
+ "w|CALL",
+ "dddddd|NEW_SPRITE",
+ /* 4 */
+ "ddd|FADEIN",
+ "wdj|IF_EQUAL",
+ "dj|IF_OBJECT_HERE",
+ "dj|IF_OBJECT_NOT_HERE",
+ /* 8 */
+ "ddj|IF_OBJECT_IS_AT",
+ "ddj|IF_OBJECT_STATE_IS",
+ "ddddb|DRAW",
+ "|CLEAR_PATHFIND_ARRAY",
+ /* 12 */
+ "b|DELAY",
+ "d|SET_SPRITE_OFFSET_X",
+ "d|SET_SPRITE_OFFSET_Y",
+ "d|SYNC",
+ /* 16 */
+ "d|WAIT_SYNC",
+ "dq|SET_PATHFIND_ITEM",
+ "i|JUMP_REL",
+ "|CHAIN_TO",
+ /* 20 */
+ "dd|SET_REPEAT",
+ "i|END_REPEAT",
+ "dd|SET_PALETTE",
+ "d|SET_PRIORITY",
+ /* 24 */
+ "wiib|SET_SPRITE_XY",
+ "x|HALT_SPRITE",
+ "ddddd|SET_WINDOW",
+ "|RESET",
+ /* 28 */
+ "dddd|PLAY_SOUND",
+ "|STOP_ALL_SOUNDS",
+ "d|SET_FRAME_RATE",
+ "d|SET_WINDOW",
+ /* 32 */
+ "vv|COPY_VAR",
+ "|MOUSE_ON",
+ "|MOUSE_OFF",
+ "dd|CLEAR_WINDOW",
+ /* 36 */
+ "dd|SET_WINDOW_IMAGE",
+ "v|SET_SPRITE_OFFSET_Y",
+ "wj|IF_VAR_NOT_ZERO",
+ "wd|SET_VAR",
+ /* 40 */
+ "vd|ADD_VAR",
+ "vd|SUB_VAR",
+ "vd|DELAY_IF_NOT_EQ",
+ "dj|IF_BIT_SET",
+ /* 44 */
+ "dj|IF_BIT_CLEAR",
+ "v|SET_SPRITE_X",
+ "v|SET_SPRITE_Y",
+ "vv|ADD_VAR_F",
+ /* 48 */
+ "|COMPUTE_YOFS",
+ "d|SET_BIT",
+ "d|CLEAR_BIT",
+ "d|ENABLE_BOX",
+ /* 52 */
+ "ddd|PLAY_EFFECT",
+ "ddd|PAN_SFX",
+ "ddd|DUMMY_54",
+ "ddd|MOVE_BOX",
+ /* 56 */
+ "w|WAIT_BIG",
"|BLACK_PALETTE",
"ddd|SET_PRIORITIES",
"ddd|STOP_ANIMATIONS",
@@ -2833,7 +3025,7 @@ const char *const feeblefiles_videoOpcodeNameTable[] = {
"|COMPUTEXY",
"|COMPUTEPOSNUM",
/* 80 */
- "ddd|SETOVERLAYIMAGE",
+ "wdd|SETOVERLAYIMAGE",
"dd|SETRANDOM",
"d|GETPATHVALUE",
"ddd|PLAYSOUNDLOOP",
diff --git a/engines/agos/debugger.cpp b/engines/agos/debugger.cpp
index 512137b685..b5233bed0c 100644
--- a/engines/agos/debugger.cpp
+++ b/engines/agos/debugger.cpp
@@ -33,7 +33,6 @@ Debugger::Debugger(AGOSEngine *vm)
_vm = vm;
DCmd_Register("continue", WRAP_METHOD(Debugger, Cmd_Exit));
- DCmd_Register("level", WRAP_METHOD(Debugger, Cmd_DebugLevel));
DCmd_Register("music", WRAP_METHOD(Debugger, Cmd_PlayMusic));
DCmd_Register("sound", WRAP_METHOD(Debugger, Cmd_PlaySound));
DCmd_Register("voice", WRAP_METHOD(Debugger, Cmd_PlayVoice));
@@ -48,28 +47,6 @@ Debugger::Debugger(AGOSEngine *vm)
}
-
-bool Debugger::Cmd_DebugLevel(int argc, const char **argv) {
- if (argc == 1) {
- if (_vm->_debugMode == false)
- DebugPrintf("Debugging is not enabled at this time\n");
- else
- DebugPrintf("Debugging is currently set at level %d\n", gDebugLevel);
- } else { // set level
- gDebugLevel = atoi(argv[1]);
- if (0 <= gDebugLevel && gDebugLevel < 11) {
- _vm->_debugMode = true;
- DebugPrintf("Debug level set to level %d\n", gDebugLevel);
- } else if (gDebugLevel < 0) {
- _vm->_debugMode = false;
- DebugPrintf("Debugging is now disabled\n");
- } else
- DebugPrintf("Not a valid debug level (0 - 10)\n");
- }
-
- return true;
-}
-
bool Debugger::Cmd_PlayMusic(int argc, const char **argv) {
if (argc > 1) {
uint music = atoi(argv[1]);
diff --git a/engines/agos/debugger.h b/engines/agos/debugger.h
index caac6e2caf..026194410f 100644
--- a/engines/agos/debugger.h
+++ b/engines/agos/debugger.h
@@ -37,7 +37,6 @@ public:
private:
AGOSEngine *_vm;
- bool Cmd_DebugLevel(int argc, const char **argv);
bool Cmd_PlayMusic(int argc, const char **argv);
bool Cmd_PlaySound(int argc, const char **argv);
bool Cmd_PlayVoice(int argc, const char **argv);
diff --git a/engines/agos/detection_tables.h b/engines/agos/detection_tables.h
index 26c2e7e90d..77fc88c6bb 100644
--- a/engines/agos/detection_tables.h
+++ b/engines/agos/detection_tables.h
@@ -2622,7 +2622,7 @@ static const AGOSGameDescription gameDescriptions[] = {
GType_FF,
GID_FEEBLEFILES,
- GF_OLD_BUNDLE | GF_TALKIE | GF_PACKED
+ GF_OLD_BUNDLE | GF_TALKIE | GF_PACKED | GF_BROKEN_FF_RATING
},
// The Feeble Files - English Windows 4CD
@@ -2645,7 +2645,7 @@ static const AGOSGameDescription gameDescriptions[] = {
GType_FF,
GID_FEEBLEFILES,
- GF_OLD_BUNDLE | GF_TALKIE
+ GF_OLD_BUNDLE | GF_TALKIE | GF_BROKEN_FF_RATING
},
// The Feeble Files - French Windows 4CD
diff --git a/engines/agos/event.cpp b/engines/agos/event.cpp
index 3d515cb117..95bcc68234 100644
--- a/engines/agos/event.cpp
+++ b/engines/agos/event.cpp
@@ -468,6 +468,14 @@ void AGOSEngine::delay(uint amount) {
sprintf(_saveLoadName, "Quick %d", _saveLoadSlot);
_saveLoadType = (event.kbd.hasFlags(Common::KBD_ALT)) ? 1 : 2;
quickLoadOrSave();
+ } else if (event.kbd.hasFlags(Common::KBD_ALT)) {
+ if (event.kbd.keycode == Common::KEYCODE_u) {
+ dumpAllSubroutines();
+ } else if (event.kbd.keycode == Common::KEYCODE_i) {
+ dumpAllVgaImageFiles();
+ } else if (event.kbd.keycode == Common::KEYCODE_v) {
+ dumpAllVgaScriptFiles();
+ }
} else if (event.kbd.hasFlags(Common::KBD_CTRL)) {
if (event.kbd.keycode == Common::KEYCODE_a) {
GUI::Dialog *_aboutDialog;
@@ -477,10 +485,6 @@ void AGOSEngine::delay(uint amount) {
_fastMode = !_fastMode;
} else if (event.kbd.keycode == Common::KEYCODE_d) {
_debugger->attach();
- } else if (event.kbd.keycode == Common::KEYCODE_s) {
- dumpAllSubroutines();
- } else if (event.kbd.keycode == Common::KEYCODE_i) {
- dumpAllVgaImageFiles();
}
}
@@ -520,6 +524,12 @@ void AGOSEngine::delay(uint amount) {
case Common::EVENT_RTL:
case Common::EVENT_QUIT:
return;
+ case Common::EVENT_WHEELUP:
+ handleMouseWheelUp();
+ break;
+ case Common::EVENT_WHEELDOWN:
+ handleMouseWheelDown();
+ break;
default:
break;
}
diff --git a/engines/agos/gfx.cpp b/engines/agos/gfx.cpp
index 6e97084811..33145b7d0d 100644
--- a/engines/agos/gfx.cpp
+++ b/engines/agos/gfx.cpp
@@ -20,6 +20,7 @@
*
*/
+#include "common/debug-channels.h"
#include "common/endian.h"
#include "common/system.h"
#include "common/textconsole.h"
@@ -1129,7 +1130,7 @@ void AGOSEngine::animate(uint16 windowNum, uint16 zoneNum, uint16 vgaSpriteId, i
assert(READ_BE_UINT16(&((AnimationHeader_WW *) p)->id) == vgaSpriteId);
}
- if (_dumpVgaScripts) {
+ if (DebugMan.isDebugChannelEnabled(kDebugVGAScript)) {
if (getGameType() == GType_FF || getGameType() == GType_PP) {
dumpVgaScript(_curVgaFile1 + READ_LE_UINT16(&((AnimationHeader_Feeble*)p)->scriptOffs), zoneNum, vgaSpriteId);
} else if (getGameType() == GType_SIMON1 || getGameType() == GType_SIMON2) {
@@ -1235,7 +1236,7 @@ void AGOSEngine::setImage(uint16 vgaSpriteId, bool vgaScript) {
}
}
- if (_dumpVgaScripts) {
+ if (DebugMan.isDebugChannelEnabled(kDebugVGAScript)) {
if (getGameType() == GType_FF || getGameType() == GType_PP) {
dumpVgaScript(_curVgaFile1 + READ_LE_UINT16(&((ImageHeader_Feeble*)b)->scriptOffs), zoneNum, vgaSpriteId);
} else if (getGameType() == GType_SIMON1 || getGameType() == GType_SIMON2) {
diff --git a/engines/agos/input.cpp b/engines/agos/input.cpp
index 32a57be855..8a4e87017a 100644
--- a/engines/agos/input.cpp
+++ b/engines/agos/input.cpp
@@ -416,6 +416,115 @@ void AGOSEngine::hitarea_stuff_helper_2() {
_runScriptReturn1 = false;
}
+#ifdef ENABLE_AGOS2
+void AGOSEngine_Feeble::handleMouseWheelUp() {
+ if (getGameType() == GType_PP || !(getBitFlag(99)))
+ return;
+
+ if (_mouse.x >= 128 && _mouse.x <= 515 && _mouse.y >= 102 && _mouse.y <= 206) {
+ oracleTextDown();
+ } else if (_mouse.x >= 172 && _mouse.x <= 469 && _mouse.y >= 287 && _mouse.y <= 382) {
+ HitArea *ha = findBox(0x7FFB);
+ if (ha != NULL && (ha->flags & kBFBoxInUse)) {
+ if (!isSpriteLoaded(21, 9) && !isSpriteLoaded(23, 9))
+ inventoryUp(ha->window);
+ }
+ }
+}
+
+void AGOSEngine_Feeble::handleMouseWheelDown() {
+ if (getGameType() == GType_PP || !(getBitFlag(99)))
+ return;
+
+ if (_mouse.x >= 128 && _mouse.x <= 515 && _mouse.y >= 102 && _mouse.y <= 206) {
+ oracleTextUp();
+ } else if (_mouse.x >= 172 && _mouse.x <= 469 && _mouse.y >= 287 && _mouse.y <= 382) {
+ HitArea *ha = findBox(0x7FFC);
+ if (ha != NULL && (ha->flags & kBFBoxInUse)) {
+ if (!isSpriteLoaded(21, 9) && !isSpriteLoaded(23, 9))
+ inventoryDown(ha->window);
+ }
+ }
+}
+#endif
+
+void AGOSEngine_Simon1::handleMouseWheelUp() {
+ HitArea *ha = findBox(206);
+ if (ha != NULL && (ha->flags & kBFBoxInUse) && !(ha->flags & kBFBoxDead)) {
+ if (_saveLoadRowCurPos != 1) {
+ if (_saveLoadRowCurPos < 7)
+ _saveLoadRowCurPos = 1;
+ else
+ _saveLoadRowCurPos -= 1;
+
+ _saveLoadEdit = false;
+ listSaveGames();
+ }
+ } else {
+ AGOSEngine::handleMouseWheelUp();
+ }
+}
+
+void AGOSEngine_Simon1::handleMouseWheelDown() {
+ HitArea *ha = findBox(207);
+ if (ha != NULL && (ha->flags & kBFBoxInUse) && !(ha->flags & kBFBoxDead)) {
+ if (_saveDialogFlag) {
+ _saveLoadRowCurPos += 1;
+ if (_saveLoadRowCurPos >= _numSaveGameRows)
+ _saveLoadRowCurPos = _numSaveGameRows;
+
+ _saveLoadEdit = false;
+ listSaveGames();
+ }
+ } else {
+ AGOSEngine::handleMouseWheelDown();
+ }
+}
+
+void AGOSEngine_Elvira2::handleMouseWheelUp() {
+ HitArea *ha = findBox(224);
+ if (ha != NULL && (ha->flags & kBFBoxInUse)) {
+ _saveGameNameLen = 0;
+
+ if (_saveLoadRowCurPos < 3)
+ _saveLoadRowCurPos = 1;
+ else
+ _saveLoadRowCurPos -= 3;
+
+ listSaveGames();
+ } else {
+ AGOSEngine::handleMouseWheelUp();
+ }
+}
+
+void AGOSEngine_Elvira2::handleMouseWheelDown() {
+ HitArea *ha = findBox(224);
+ if (ha != NULL && (ha->flags & kBFBoxInUse)) {
+ _saveGameNameLen = 0;
+ _saveLoadRowCurPos += 3;
+ if (_saveLoadRowCurPos >= _numSaveGameRows)
+ _saveLoadRowCurPos = 1;
+
+ listSaveGames();
+ } else {
+ AGOSEngine::handleMouseWheelDown();
+ }
+}
+
+void AGOSEngine::handleMouseWheelUp() {
+ HitArea *ha = findBox(0x7FFB);
+ if (ha != NULL && (ha->flags & kBFBoxInUse)) {
+ inventoryUp(ha->window);
+ }
+}
+
+void AGOSEngine::handleMouseWheelDown() {
+ HitArea *ha = findBox(0x7FFC);
+ if (ha != NULL && (ha->flags & kBFBoxInUse)) {
+ inventoryDown(ha->window);
+ }
+}
+
void AGOSEngine::permitInput() {
if (_mortalFlag)
return;
diff --git a/engines/agos/intern.h b/engines/agos/intern.h
index 8b7ab32315..3f5c8c519b 100644
--- a/engines/agos/intern.h
+++ b/engines/agos/intern.h
@@ -246,16 +246,17 @@ enum SubObjectFlags {
};
enum GameFeatures {
- GF_TALKIE = 1 << 0,
- GF_OLD_BUNDLE = 1 << 1,
- GF_CRUNCHED = 1 << 2,
- GF_CRUNCHED_GAMEPC = 1 << 3,
- GF_ZLIBCOMP = 1 << 4,
- GF_32COLOR = 1 << 5,
- GF_EGA = 1 << 6,
- GF_PLANAR = 1 << 7,
- GF_DEMO = 1 << 8,
- GF_PACKED = 1 << 9
+ GF_TALKIE = 1 << 0,
+ GF_OLD_BUNDLE = 1 << 1,
+ GF_CRUNCHED = 1 << 2,
+ GF_CRUNCHED_GAMEPC = 1 << 3,
+ GF_ZLIBCOMP = 1 << 4,
+ GF_32COLOR = 1 << 5,
+ GF_EGA = 1 << 6,
+ GF_PLANAR = 1 << 7,
+ GF_DEMO = 1 << 8,
+ GF_PACKED = 1 << 9,
+ GF_BROKEN_FF_RATING = 1 << 10
};
enum GameFileTypes {
diff --git a/engines/agos/midi.cpp b/engines/agos/midi.cpp
index c26fbe3331..392ee08ea1 100644
--- a/engines/agos/midi.cpp
+++ b/engines/agos/midi.cpp
@@ -235,6 +235,10 @@ void MidiPlayer::startTrack(int track) {
_music.parser = parser; // That plugs the power cord into the wall
} else if (_music.parser) {
if (!_music.parser->setTrack(track)) {
+ // The Roland MT32 music in Simon the Sorcerer 2
+ // is missing the extra tracks in many scenes,
+ // like the introduction sequence.
+ stop();
return;
}
_currentTrack = (byte)track;
diff --git a/engines/agos/oracle.cpp b/engines/agos/oracle.cpp
index 782c834868..122f800e78 100644
--- a/engines/agos/oracle.cpp
+++ b/engines/agos/oracle.cpp
@@ -180,7 +180,7 @@ void AGOSEngine_Feeble::oracleTextUp() {
if (_textWindow->scrollY > _oracleMaxScrollY) // For scroll up
_oracleMaxScrollY = _textWindow->scrollY;
- while (1) {
+ while (!shouldQuit()) {
if (_textWindow->scrollY == _oracleMaxScrollY)
break;
_textWindow->textRow = 105;
@@ -214,7 +214,7 @@ void AGOSEngine_Feeble::oracleTextDown() {
if (_textWindow->scrollY > _oracleMaxScrollY) // For scroll up
_oracleMaxScrollY = _textWindow->scrollY;
- while (1) {
+ while (!shouldQuit()) {
if (_textWindow->scrollY == 0)
break;
diff --git a/engines/agos/res.cpp b/engines/agos/res.cpp
index e3e9d09f3b..2631f7998e 100644
--- a/engines/agos/res.cpp
+++ b/engines/agos/res.cpp
@@ -802,7 +802,6 @@ void AGOSEngine::loadVGABeardFile(uint16 id) {
}
} else {
offs = _gameOffsetsPtr[id];
-
size = _gameOffsetsPtr[id + 1] - offs;
readGameFile(_vgaBufferPointers[11].vgaFile2, offs, size);
}
@@ -817,9 +816,9 @@ void AGOSEngine::loadVGAVideoFile(uint16 id, uint8 type, bool useError) {
if ((getGameType() == GType_SIMON1 || getGameType() == GType_SIMON2) &&
id == 2 && type == 2) {
- // WORKAROUND: For the exta long strings in foreign languages
+ // WORKAROUND: For the extra long strings in foreign languages
// Allocate more space for text to cope with foreign languages that use
- // up more space than english. I hope 6400 bytes are enough. This number
+ // up more space than English. I hope 6400 bytes are enough. This number
// is base on: 2 (lines) * 320 (screen width) * 10 (textheight) -- olki
extraBuffer += 6400;
}
@@ -911,8 +910,16 @@ void AGOSEngine::loadVGAVideoFile(uint16 id, uint8 type, bool useError) {
} else {
id = id * 2 + (type - 1);
offs = _gameOffsetsPtr[id];
-
dstSize = _gameOffsetsPtr[id + 1] - offs;
+
+ if (!dstSize) {
+ if (useError)
+ error("loadVGAVideoFile: Can't load id %d type %d", id, type);
+
+ _block = _blockEnd = NULL;
+ return;
+ }
+
dst = allocBlock(dstSize + extraBuffer);
readGameFile(dst, offs, dstSize);
}
diff --git a/engines/agos/saveload.cpp b/engines/agos/saveload.cpp
index 3d87bb66fe..5d5e2d7b03 100644
--- a/engines/agos/saveload.cpp
+++ b/engines/agos/saveload.cpp
@@ -37,9 +37,8 @@ namespace AGOS {
// FIXME: This code counts savegames, but callers in many cases assume
// that the return value + 1 indicates an empty slot.
int AGOSEngine::countSaveGames() {
- Common::InSaveFile *f = NULL;
Common::StringArray filenames;
- uint i = 1;
+ uint s, numSaveGames = 1;
int slotNum;
bool marks[256];
@@ -60,18 +59,13 @@ int AGOSEngine::countSaveGames() {
marks[slotNum] = true; //mark this slot as valid
}
- // FIXME: Why does this already try to actually open the savegames?
- // Historical accident?
- while (i < 256) {
- if (marks[i] &&
- (f = _saveFileMan->openForLoading(genSaveName(i)))) {
- i++;
- delete f;
- } else
- break;
+ // locate first empty slot
+ for (s = 1; s < 256; s++) {
+ if (marks[s])
+ numSaveGames++;
}
- return i;
+ return numSaveGames;
}
#ifdef ENABLE_AGOS2
@@ -296,7 +290,7 @@ void AGOSEngine::userGame(bool load) {
const char *message1;
int i = 0, numSaveGames;
char *name;
- char buf[10];
+ memset(_saveBuf, 0, sizeof(_saveBuf));
numSaveGames = countSaveGames();
@@ -325,8 +319,8 @@ restart:
for (; *message1; message1++)
windowPutChar(window, *message1);
- memset(buf, 0, 10);
- name = buf;
+ memset(_saveBuf, 0, 10);
+ name = _saveBuf;
_saveGameNameLen = 0;
while (!shouldQuit()) {
@@ -384,9 +378,10 @@ restart:
_gameStoppedClock = getTime() - saveTime + _gameStoppedClock;
}
-void AGOSEngine_Elvira2::listSaveGames(char *dst) {
+void AGOSEngine_Elvira2::listSaveGames() {
Common::InSaveFile *in;
uint y, slot;
+ char *dst = _saveBuf;
const uint8 num = (getGameType() == GType_WW) ? 3 : 4;
@@ -469,7 +464,7 @@ void AGOSEngine_Elvira2::userGame(bool load) {
int i, numSaveGames;
char *name;
bool b;
- char buf[200];
+ memset(_saveBuf, 0, sizeof(_saveBuf));
_saveOrLoad = load;
@@ -485,28 +480,28 @@ void AGOSEngine_Elvira2::userGame(bool load) {
const uint8 num = (getGameType() == GType_WW) ? 3 : 4;
- listSaveGames(buf);
+ listSaveGames();
if (!load) {
WindowBlock *window = _windowArray[num];
int16 slot = -1;
- name = buf + 192;
+ name = _saveBuf + 192;
while (!shouldQuit()) {
windowPutChar(window, 128);
_saveLoadEdit = true;
- i = userGameGetKey(&b, buf, 128);
+ i = userGameGetKey(&b, 128);
if (b) {
if (i <= 223) {
if (!confirmOverWrite(window)) {
- listSaveGames(buf);
+ listSaveGames();
continue;
}
- if (!saveGame(_saveLoadRowCurPos + i, buf + i * 8))
+ if (!saveGame(_saveLoadRowCurPos + i, _saveBuf + i * 8))
fileError(_windowArray[num], true);
}
@@ -518,7 +513,7 @@ void AGOSEngine_Elvira2::userGame(bool load) {
slot = matchSaveGame(name, numSaveGames);
if (slot >= 0) {
if (!confirmOverWrite(window)) {
- listSaveGames(buf);
+ listSaveGames();
continue;
}
}
@@ -540,11 +535,11 @@ void AGOSEngine_Elvira2::userGame(bool load) {
if (slot < 0)
slot = numSaveGames;
- if (!saveGame(slot, buf + 192))
+ if (!saveGame(slot, _saveBuf + 192))
fileError(_windowArray[num], true);
}
} else {
- i = userGameGetKey(&b, buf, 128);
+ i = userGameGetKey(&b, 128);
if (i != 225) {
if (!loadGame(genSaveName(_saveLoadRowCurPos + i)))
fileError(_windowArray[num], false);
@@ -560,7 +555,7 @@ get_out:;
restartAnimation();
}
-int AGOSEngine_Elvira2::userGameGetKey(bool *b, char *buf, uint maxChar) {
+int AGOSEngine_Elvira2::userGameGetKey(bool *b, uint maxChar) {
HitArea *ha;
*b = true;
@@ -588,7 +583,7 @@ int AGOSEngine_Elvira2::userGameGetKey(bool *b, char *buf, uint maxChar) {
if (_saveLoadRowCurPos >= _numSaveGameRows)
_saveLoadRowCurPos = 1;
- listSaveGames(buf);
+ listSaveGames();
} else if (ha->id < 224) {
return ha->id - 200;
}
@@ -597,9 +592,10 @@ int AGOSEngine_Elvira2::userGameGetKey(bool *b, char *buf, uint maxChar) {
return 225;
}
-void AGOSEngine_Simon1::listSaveGames(char *dst) {
+void AGOSEngine_Simon1::listSaveGames() {
Common::InSaveFile *in;
uint16 i, slot, lastSlot;
+ char *dst = _saveBuf;
disableFileBoxes();
@@ -681,7 +677,7 @@ void AGOSEngine_Simon1::userGame(bool load) {
WindowBlock *window;
char *name;
bool b;
- char buf[108];
+ memset(_saveBuf, 0, sizeof(_saveBuf));
int maxChar = (_language == Common::HE_ISR) ? 155: 128;
_saveOrLoad = load;
@@ -704,7 +700,7 @@ void AGOSEngine_Simon1::userGame(bool load) {
_saveLoadEdit = false;
restart:;
- i = userGameGetKey(&b, buf, maxChar);
+ i = userGameGetKey(&b, maxChar);
if (i == 205)
goto get_out;
@@ -730,7 +726,7 @@ restart:;
}
window->textLength = 3;
- name = buf + i * 18;
+ name = _saveBuf + i * 18;
// now process entire savegame name to get correct x offset for cursor
_saveGameNameLen = 0;
@@ -763,7 +759,7 @@ restart:;
_saveLoadEdit = true;
- i = userGameGetKey(&b, buf, maxChar);
+ i = userGameGetKey(&b, maxChar);
if (b) {
if (i == 205)
@@ -814,7 +810,7 @@ restart:;
}
}
- if (!saveGame(_saveLoadRowCurPos + result, buf + result * 18))
+ if (!saveGame(_saveLoadRowCurPos + result, _saveBuf + result * 18))
fileError(_windowArray[5], true);
} else {
if (!loadGame(genSaveName(_saveLoadRowCurPos + i)))
@@ -827,12 +823,12 @@ get_out:;
_gameStoppedClock = getTime() - saveTime + _gameStoppedClock;
}
-int AGOSEngine_Simon1::userGameGetKey(bool *b, char *buf, uint maxChar) {
+int AGOSEngine_Simon1::userGameGetKey(bool *b, uint maxChar) {
HitArea *ha;
*b = true;
if (!_saveLoadEdit) {
- listSaveGames(buf);
+ listSaveGames();
}
_keyPressed.reset();
@@ -861,7 +857,7 @@ int AGOSEngine_Simon1::userGameGetKey(bool *b, char *buf, uint maxChar) {
_saveLoadRowCurPos -= 6;
_saveLoadEdit = false;
- listSaveGames(buf);
+ listSaveGames();
}
} else if (ha->id == 207) {
if (_saveDialogFlag) {
@@ -870,7 +866,7 @@ int AGOSEngine_Simon1::userGameGetKey(bool *b, char *buf, uint maxChar) {
_saveLoadRowCurPos = _numSaveGameRows;
_saveLoadEdit = false;
- listSaveGames(buf);
+ listSaveGames();
}
} else if (ha->id < 214) {
return ha->id - 208;
diff --git a/engines/agos/script.cpp b/engines/agos/script.cpp
index c6aa4c9246..1dbb9c255a 100644
--- a/engines/agos/script.cpp
+++ b/engines/agos/script.cpp
@@ -22,6 +22,7 @@
// Item script opcodes for Simon1/Simon2
+#include "common/debug-channels.h"
#include "common/endian.h"
#include "common/system.h"
#include "common/textconsole.h"
@@ -264,7 +265,7 @@ void AGOSEngine::o_add() {
uint var = getVarWrapper();
writeVariable(var, readVariable(var) + getVarOrWord());
- // WORKAROUND: The converation of the male in Vid-Phone Booth at Dave's Space Bar
+ // WORKAROUND: The conversation of the male in Vid-Phone Booth at Dave's Space Bar
// is based on variable 116, but stops due to a missing option (37).
if (getGameType() == GType_FF && _currentTable->id == 10538 && readVariable(116) == 37)
writeVariable(116, 38);
@@ -987,7 +988,7 @@ int AGOSEngine::runScript() {
return 1;
do {
- if (_dumpOpcodes)
+ if (DebugMan.isDebugChannelEnabled(kDebugOpcode))
dumpOpcode(_codePtr);
if (getGameType() == GType_ELVIRA1) {
diff --git a/engines/agos/script_ff.cpp b/engines/agos/script_ff.cpp
index d942a88e9a..e4fadcf360 100644
--- a/engines/agos/script_ff.cpp
+++ b/engines/agos/script_ff.cpp
@@ -243,7 +243,7 @@ void AGOSEngine_Feeble::setupOpcodes() {
/* 164 */
OPCODE(oe2_getDollar2),
OPCODE(off_isAdjNoun),
- OPCODE(oe2_b2Set),
+ OPCODE(off_b2Set),
OPCODE(oe2_b2Clear),
/* 168 */
OPCODE(oe2_b2Zero),
@@ -296,6 +296,39 @@ void AGOSEngine_Feeble::executeOpcode(int opcode) {
(this->*op) ();
}
+void AGOSEngine_Feeble::setLoyaltyRating(byte rating) {
+ // WORKAROUND: The 4CD version of The Feeble File is missing the parts
+ // of the script that set the loyalty rating. This approximates the
+ // script from the 2CD version. See bug #6525.
+
+ switch (rating) {
+ case 1:
+ // Kicking vending machine: Possibility of Undesirable Character Flaws
+ writeVariable(120, 1);
+ break;
+ case 2:
+ // Confessing: Confirmed Minor Character Flaws
+ writeVariable(120, 2);
+ break;
+ case 3:
+ // Being sent to Cygnus Alpha: Suspected Subversive Activity
+ writeVariable(120, 3);
+ break;
+ case 4:
+ // Escaping from Cygnus Alpha: Confirmed Subversive Activity
+ writeVariable(120, 4);
+ break;
+ case 5:
+ // Being brought before Filbert: Confirmed Treasonous Activity
+ writeVariable(120, 5);
+ break;
+ case 6:
+ // Arriving at rebel base: Freedom Fighters Operative
+ writeVariable(120, 6);
+ break;
+ }
+}
+
// -----------------------------------------------------------------------
// Feeble Files Opcodes
// -----------------------------------------------------------------------
@@ -467,6 +500,34 @@ void AGOSEngine_Feeble::off_isAdjNoun() {
setScriptCondition(false);
}
+void AGOSEngine_Feeble::off_b2Set() {
+ // 166: set bit2
+ uint bit = getVarOrByte();
+ _bitArrayTwo[bit / 16] |= (1 << (bit & 15));
+
+ if (getFeatures() & GF_BROKEN_FF_RATING) {
+ switch (bit) {
+ case 152:
+ setLoyaltyRating(1);
+ break;
+ case 153:
+ setLoyaltyRating(2);
+ break;
+ case 240:
+ setLoyaltyRating(3);
+ break;
+ case 251:
+ setLoyaltyRating(4);
+ break;
+ case 253:
+ setLoyaltyRating(6);
+ break;
+ default:
+ break;
+ }
+ }
+}
+
void AGOSEngine_Feeble::off_hyperLinkOn() {
// 171: oracle hyperlink on
hyperLinkOn(getVarOrWord());
@@ -565,6 +626,12 @@ void AGOSEngine_Feeble::off_loadVideo() {
assert(_moviePlayer);
_moviePlayer->load();
+
+ if (getFeatures() & GF_BROKEN_FF_RATING) {
+ if (strcmp((const char *)filename, "Statue1.smk") == 0) {
+ setLoyaltyRating(5);
+ }
+ }
}
void AGOSEngine_Feeble::off_playVideo() {
diff --git a/engines/agos/sound.cpp b/engines/agos/sound.cpp
index a87df0591c..812f46504f 100644
--- a/engines/agos/sound.cpp
+++ b/engines/agos/sound.cpp
@@ -121,8 +121,14 @@ Common::SeekableReadStream *BaseSound::getSoundStream(uint sound) const {
int i = 1;
while (_offsets[sound + i] == _offsets[sound])
i++;
+ uint end;
+ if (_offsets[sound + i] > _offsets[sound]) {
+ end = _offsets[sound + i];
+ } else {
+ end = file->size();
+ }
- return new Common::SeekableSubReadStream(file, _offsets[sound], _offsets[sound + i], DisposeAfterUse::YES);
+ return new Common::SeekableSubReadStream(file, _offsets[sound], end, DisposeAfterUse::YES);
}
///////////////////////////////////////////////////////////////////////////////
@@ -190,7 +196,7 @@ bool LoopingAudioStream::endOfData() const {
#pragma mark -
static void convertVolume(int &vol) {
- // DirectSound was orginally used, which specifies volume
+ // DirectSound was originally used, which specifies volume
// and panning differently than ScummVM does, using a logarithmic scale
// rather than a linear one.
//
@@ -442,12 +448,16 @@ void Sound::loadVoiceFile(const GameSpecificSettings *gss) {
if (file.open("voices.idx")) {
int end = file.size();
_filenums = (uint16 *)malloc((end / 6 + 1) * 2);
- _offsets = (uint32 *)malloc((end / 6 + 1) * 4);
+ _offsets = (uint32 *)malloc((end / 6 + 1 + 1) * 4);
for (int i = 1; i <= end / 6; i++) {
_filenums[i] = file.readUint16BE();
_offsets[i] = file.readUint32BE();
}
+ // We need to add a terminator entry otherwise we get an out of
+ // bounds read when the offset table is accessed in
+ // BaseSound::getSoundStream.
+ _offsets[end / 6 + 1] = 0;
_hasVoiceFile = true;
return;
diff --git a/engines/agos/subroutine.cpp b/engines/agos/subroutine.cpp
index 39bc468dea..1e6ecaa829 100644
--- a/engines/agos/subroutine.cpp
+++ b/engines/agos/subroutine.cpp
@@ -20,8 +20,7 @@
*
*/
-
-
+#include "common/debug-channels.h"
#include "common/file.h"
#include "common/textconsole.h"
@@ -531,7 +530,7 @@ int AGOSEngine::startSubroutine(Subroutine *sub) {
_classMode1 = 0;
_classMode2 = 0;
- if (_dumpScripts)
+ if (DebugMan.isDebugChannelEnabled(kDebugSubroutine))
dumpSubroutine(sub);
if (++_recursionDepth > 40)
@@ -564,8 +563,7 @@ restart:
else
_codePtr += 8;
- if (_dumpOpcodes)
- debug("; %d", sub->id);
+ debugC(kDebugOpcode, "; %d", sub->id);
result = runScript();
if (result != 0) {
break;
diff --git a/engines/agos/vga.cpp b/engines/agos/vga.cpp
index c656c0167a..f761c3fc3f 100644
--- a/engines/agos/vga.cpp
+++ b/engines/agos/vga.cpp
@@ -27,6 +27,7 @@
#include "agos/intern.h"
#include "agos/vga.h"
+#include "common/debug-channels.h"
#include "common/endian.h"
#include "common/system.h"
#include "common/textconsole.h"
@@ -152,7 +153,7 @@ void AGOSEngine::runVgaScript() {
for (;;) {
uint opcode;
- if (_dumpVgaOpcodes) {
+ if (DebugMan.isDebugChannelEnabled(kDebugVGAOpcode)) {
if (_vcPtr != (const byte *)&_vcGetOutOfCode) {
debugN("%.5d %.5X: %5d %4d ", _vgaTickCounter, (unsigned int)(_vcPtr - _curVgaFile1), _vgaCurSpriteId, _vgaCurZoneNum);
dumpVideoScript(_vcPtr, true);
@@ -381,8 +382,7 @@ void AGOSEngine::vcSkipNextInstruction() {
_vcPtr += opcodeParamLenPN[opcode];
}
- if (_dumpVgaOpcodes)
- debugN("; skipped\n");
+ debugCN(kDebugVGAOpcode, "; skipped\n");
}
// VGA Script commands
@@ -648,7 +648,7 @@ void AGOSEngine::drawImage_init(int16 image, uint16 palette, int16 x, int16 y, u
if (height == 0 || width == 0)
return;
- if (_dumpImages)
+ if (DebugMan.isDebugChannelEnabled(kDebugImageDump))
dumpSingleBitmap(_vgaCurZoneNum, state.image, state.srcPtr, width, height,
state.palette);
state.width = state.draw_width = width; /* cl */
diff --git a/engines/agos/zones.cpp b/engines/agos/zones.cpp
index 6eace448cc..1644213579 100644
--- a/engines/agos/zones.cpp
+++ b/engines/agos/zones.cpp
@@ -76,7 +76,7 @@ void AGOSEngine::loadZone(uint16 zoneNum, bool useError) {
return;
}
- // Loading order is important due to resource managment
+ // Loading order is important due to resource management
if (getPlatform() == Common::kPlatformAmiga && getGameType() == GType_WW &&
zoneTable[zoneNum] == 3) {
diff --git a/engines/avalanche/animation.cpp b/engines/avalanche/animation.cpp
index 1ec3dbd4d2..451b4a1c68 100644
--- a/engines/avalanche/animation.cpp
+++ b/engines/avalanche/animation.cpp
@@ -764,7 +764,7 @@ void Animation::catacombMove(byte ped) {
spr1->init(5, true); // ...Load Geida.
appearPed(1, geidaPed(ped));
spr1->_callEachStepFl = true;
- spr1->_eachStepProc = kProcGeida;
+ spr1->_eachStepProc = kProcFollowAvvy;
}
}
@@ -1121,7 +1121,7 @@ void Animation::spin(Direction dir, byte &tripnum) {
}
}
-void Animation::geidaProcs(byte tripnum) {
+void Animation::follow(byte tripnum) {
AnimationType *tripSpr = _sprites[tripnum];
AnimationType *avvy = _sprites[0];
@@ -1132,14 +1132,14 @@ void Animation::geidaProcs(byte tripnum) {
}
if (tripSpr->_y < (avvy->_y - 2)) {
- // Geida is further from the screen than Avvy.
+ // The following NPC is further from the screen than Avvy.
spin(kDirDown, tripnum);
tripSpr->_moveY = 1;
tripSpr->_moveX = 0;
takeAStep(tripnum);
return;
} else if (tripSpr->_y > (avvy->_y + 2)) {
- // Avvy is further from the screen than Geida.
+ // Avvy is further from the screen than the following NPC.
spin(kDirUp, tripnum);
tripSpr->_moveY = -1;
tripSpr->_moveX = 0;
@@ -1205,8 +1205,9 @@ void Animation::drawSprites() {
* @remarks Originally called 'trippancy_link'
*/
void Animation::animLink() {
- if (_vm->_menu->isActive() || _vm->_seeScroll)
+ if (_vm->_dropdown->isActive() || !_vm->_animationsEnabled)
return;
+
for (int16 i = 0; i < kSpriteNumbMax; i++) {
AnimationType *curSpr = _sprites[i];
if (curSpr->_quick && curSpr->_visible)
@@ -1235,8 +1236,8 @@ void Animation::animLink() {
case kProcGrabAvvy :
grabAvvy(i);
break;
- case kProcGeida :
- geidaProcs(i);
+ case kProcFollowAvvy :
+ follow(i);
break;
default:
break;
@@ -1329,7 +1330,7 @@ void Animation::handleMoveKey(const Common::Event &event) {
if (!_vm->_userMovesAvvy)
return;
- if (_vm->_menu->_activeMenuItem._activeNow)
+ if (_vm->_dropdown->_activeMenuItem._activeNow)
_vm->_parser->tryDropdown();
else {
switch (event.kbd.keycode) {
diff --git a/engines/avalanche/animation.h b/engines/avalanche/animation.h
index 375d117893..d1ee4a3ebd 100644
--- a/engines/avalanche/animation.h
+++ b/engines/avalanche/animation.h
@@ -102,9 +102,8 @@ public:
kProcBackAndForth,
kProcFaceAvvy,
kProcArrow,
- kProcSpludwick, // Unused
kProcGrabAvvy,
- kProcGeida // Spludwick uses it as well for homing! TODO: Unify it with kProcSpludwick.
+ kProcFollowAvvy
};
AnimationType *_sprites[kSpriteNumbMax];
@@ -167,7 +166,7 @@ private:
// Movements for Homing NPCs: Spludwick and Geida.
void spin(Direction dir, byte &tripnum);
void takeAStep(byte &tripnum);
- void geidaProcs(byte tripnum);
+ void follow(byte tripnum);
void drawSprites();
};
diff --git a/engines/avalanche/avalanche.cpp b/engines/avalanche/avalanche.cpp
index 27c366914a..6cfe4dfdb6 100644
--- a/engines/avalanche/avalanche.cpp
+++ b/engines/avalanche/avalanche.cpp
@@ -51,13 +51,13 @@ AvalancheEngine::AvalancheEngine(OSystem *syst, const AvalancheGameDescription *
_sequence = nullptr;
_timer = nullptr;
_animation = nullptr;
- _menu = nullptr;
+ _dropdown = nullptr;
_closing = nullptr;
_sound = nullptr;
_nim = nullptr;
_ghostroom = nullptr;
_help = nullptr;
- _shootemup = nullptr;
+ _highscore = nullptr;
_platform = gd->desc.platform;
initVariables();
@@ -76,13 +76,13 @@ AvalancheEngine::~AvalancheEngine() {
delete _sequence;
delete _timer;
delete _animation;
- delete _menu;
+ delete _dropdown;
delete _closing;
delete _sound;
delete _nim;
delete _ghostroom;
delete _help;
- delete _shootemup;
+ delete _highscore;
for (int i = 0; i < 31; i++) {
for (int j = 0; j < 2; j++) {
@@ -144,7 +144,7 @@ void AvalancheEngine::initVariables() {
_letMeOut = false;
_thinks = 2;
_thinkThing = true;
- _seeScroll = false;
+ _animationsEnabled = true;
_currentMouse = 177;
_holdLeftMouse = false;
@@ -161,13 +161,13 @@ Common::ErrorCode AvalancheEngine::initialize() {
_sequence = new Sequence(this);
_timer = new Timer(this);
_animation = new Animation(this);
- _menu = new Menu(this);
+ _dropdown = new DropDownMenu(this);
_closing = new Closing(this);
_sound = new SoundHandler(this);
_nim = new Nim(this);
_ghostroom = new GhostRoom(this);
_help = new Help(this);
- _shootemup = new ShootEmUp(this);
+ _highscore = new HighScore(this);
_graphics->init();
_dialogs->init();
@@ -203,7 +203,7 @@ void AvalancheEngine::synchronize(Common::Serializer &sz) {
sz.syncAsByte(_carryNum);
for (int i = 0; i < kObjectNum; i++)
sz.syncAsByte(_objects[i]);
- sz.syncAsSint16LE(_dnascore);
+ sz.syncAsSint16LE(_score);
sz.syncAsSint32LE(_money);
sz.syncAsByte(_room);
if (sz.isSaving())
@@ -339,8 +339,8 @@ void AvalancheEngine::synchronize(Common::Serializer &sz) {
}
-bool AvalancheEngine::canSaveGameStateCurrently() { // TODO: Refine these!!!
- return (!_seeScroll && _alive);
+bool AvalancheEngine::canSaveGameStateCurrently() {
+ return (_animationsEnabled && _alive);
}
Common::Error AvalancheEngine::saveGameState(int slot, const Common::String &desc) {
@@ -384,8 +384,8 @@ Common::String AvalancheEngine::getSaveFileName(const int slot) {
return Common::String::format("%s.%03d", _targetName.c_str(), slot);
}
-bool AvalancheEngine::canLoadGameStateCurrently() { // TODO: Refine these!!!
- return (!_seeScroll);
+bool AvalancheEngine::canLoadGameStateCurrently() {
+ return (_animationsEnabled);
}
Common::Error AvalancheEngine::loadGameState(int slot) {
@@ -435,7 +435,7 @@ bool AvalancheEngine::loadGame(const int16 slot) {
_isLoaded = true;
- _seeScroll = true; // This prevents display of the new sprites before the new picture is loaded.
+ _animationsEnabled = false;
if (_holdTheDawn) {
_holdTheDawn = false;
@@ -444,7 +444,7 @@ bool AvalancheEngine::loadGame(const int16 slot) {
_background->release();
minorRedraw();
- _menu->setup();
+ _dropdown->setup();
setRoom(kPeopleAvalot, _room);
_alive = true;
refreshObjectList();
diff --git a/engines/avalanche/avalanche.h b/engines/avalanche/avalanche.h
index 9d6ab1693a..6eb5e675cc 100644
--- a/engines/avalanche/avalanche.h
+++ b/engines/avalanche/avalanche.h
@@ -37,7 +37,7 @@
#include "avalanche/sequence.h"
#include "avalanche/timer.h"
#include "avalanche/animation.h"
-#include "avalanche/menu.h"
+#include "avalanche/dropdown.h"
#include "avalanche/closing.h"
#include "avalanche/sound.h"
#include "avalanche/nim.h"
@@ -45,6 +45,8 @@
#include "avalanche/ghostroom.h"
#include "avalanche/help.h"
#include "avalanche/shootemup.h"
+#include "avalanche/mainmenu.h"
+#include "avalanche/highscore.h"
#include "common/serializer.h"
@@ -84,13 +86,13 @@ public:
Sequence *_sequence;
Timer *_timer;
Animation *_animation;
- Menu *_menu;
+ DropDownMenu *_dropdown;
Closing *_closing;
SoundHandler *_sound;
Nim *_nim;
GhostRoom *_ghostroom;
Help *_help;
- ShootEmUp *_shootemup;
+ HighScore *_highscore;
OSystem *_system;
@@ -150,7 +152,7 @@ public:
// Former DNA structure
byte _carryNum; // How many objects you're carrying...
bool _objects[kObjectNum]; // ...and which ones they are.
- int16 _dnascore; // your score, of course
+ int16 _score; // your score, of course
int32 _money; // your current amount of dosh
Room _room; // your current room
bool _wonNim; // Have you *won* Nim? (That's harder.)
@@ -210,7 +212,7 @@ public:
bool _letMeOut;
byte _thinks;
bool _thinkThing;
- bool _seeScroll; // TODO: maybe this means we're interacting with the toolbar / a scroll?
+ bool _animationsEnabled; // If set to TRUE, it stops the animation system working. This prevents display of the new sprites before the new picture is loaded or during the display of a scroll. Original name: seescroll.
char _objectList[10];
// Called .free() for them in ~Gyro().
@@ -236,6 +238,7 @@ public:
bool _isLoaded; // Is it a loaded gamestate?
void callVerb(VerbCode id);
+ void loadBackground(byte num);
void loadRoom(byte num);
void thinkAbout(byte object, bool type); // Hey!!! Get it and put it!!!
void incScore(byte num); // Add on no. of points
@@ -248,9 +251,9 @@ public:
void gameOver();
uint16 bearing(byte whichPed); // Returns the bearing from ped 'whichped' to Avvy, in degrees.
- // There are two kinds of redraw: Major and Minor. Minor is what happens when you load a game, etc. Major redraws EVERYTHING.
+ // There are two kinds of redraw: Major and Minor. Minor is what happens when you load a game, etc.
+ // Major was replaced with GraphicManager::refreshScreen(), it redraws EVERYTHING.
void minorRedraw();
- void majorRedraw();
void spriteRun();
diff --git a/engines/avalanche/avalot.cpp b/engines/avalanche/avalot.cpp
index 2e89287f58..c8f5599687 100644
--- a/engines/avalanche/avalot.cpp
+++ b/engines/avalanche/avalot.cpp
@@ -190,7 +190,6 @@ void AvalancheEngine::setup() {
_animation->resetAnims();
- drawToolbar();
_dialogs->setReadyLight(2);
fadeIn();
@@ -199,7 +198,11 @@ void AvalancheEngine::setup() {
_animation->_sprites[0]->_speedX = kWalk;
_animation->updateSpeed();
- _menu->init();
+ _dropdown->init();
+
+ _graphics->drawSoundLight(_sound->_soundFl);
+
+ drawToolbar();
int16 loadSlot = ConfMan.instance().getInt("save_slot");
if (loadSlot >= 0) {
@@ -208,10 +211,15 @@ void AvalancheEngine::setup() {
loadGame(loadSlot);
} else {
+ // We don't need the MainMenu during the whole game, only at the beginning of it.
+ MainMenu *mainmenu = new MainMenu(this);
+ mainmenu->run();
+ delete mainmenu;
+ if (_letMeOut)
+ return;
+
newGame();
- _soundFx = !_soundFx;
- fxToggle();
thinkAbout(kObjectMoney, kThing);
_dialogs->displayScrollChain('Q', 83); // Info on the game, etc.
@@ -221,13 +229,13 @@ void AvalancheEngine::setup() {
void AvalancheEngine::runAvalot() {
setup();
- do {
+ while (!_letMeOut && !shouldQuit()) {
uint32 beginLoop = _system->getMillis();
updateEvents(); // The event handler.
_clock->update();
- _menu->update();
+ _dropdown->update();
_background->update();
_animation->animLink();
checkClick();
@@ -239,9 +247,7 @@ void AvalancheEngine::runAvalot() {
uint32 delay = _system->getMillis() - beginLoop;
if (delay <= 55)
_system->delayMillis(55 - delay); // Replaces slowdown(); 55 comes from 18.2 Hz (B Flight).
- } while (!_letMeOut && !shouldQuit());
-
- warning("STUB: run()");
+ };
_closing->exitGame();
}
@@ -408,9 +414,7 @@ void AvalancheEngine::loadAlso(byte num) {
}
}
-void AvalancheEngine::loadRoom(byte num) {
- CursorMan.showMouse(false);
-
+void AvalancheEngine::loadBackground(byte num) {
Common::String filename = Common::String::format("place%d.avd", num);
Common::File file;
if (!file.open(filename))
@@ -432,9 +436,15 @@ void AvalancheEngine::loadRoom(byte num) {
_graphics->refreshBackground();
file.close();
+}
+void AvalancheEngine::loadRoom(byte num) {
+ CursorMan.showMouse(false);
+
+ loadBackground(num);
loadAlso(num);
- _background->load(num);
+ _background->loadSprites(num);
+
CursorMan.showMouse(true);
}
@@ -452,7 +462,7 @@ void AvalancheEngine::findPeople(byte room) {
void AvalancheEngine::exitRoom(byte x) {
_sound->stopSound();
_background->release();
- _seeScroll = true; // This stops the trippancy system working over the length of this procedure.
+ _animationsEnabled = false;
switch (x) {
case kRoomSpludwicks:
@@ -475,7 +485,7 @@ void AvalancheEngine::exitRoom(byte x) {
}
_interrogation = 0; // Leaving the room cancels all the questions automatically.
- _seeScroll = false; // Now it can work again!
+ _animationsEnabled = true;
_lastRoom = _room;
if (_room != kRoomMap)
@@ -488,7 +498,7 @@ void AvalancheEngine::exitRoom(byte x) {
* @remarks Originally called 'new_town'
*/
void AvalancheEngine::enterNewTown() {
- _menu->setup();
+ _dropdown->setup();
switch (_room) {
case kRoomOutsideNottsPub: // Entry into Nottingham.
@@ -522,11 +532,11 @@ void AvalancheEngine::putGeidaAt(byte whichPed, byte ped) {
spr1->init(5, false); // load Geida
_animation->appearPed(1, whichPed);
spr1->_callEachStepFl = true;
- spr1->_eachStepProc = Animation::kProcGeida;
+ spr1->_eachStepProc = Animation::kProcFollowAvvy;
}
void AvalancheEngine::enterRoom(Room roomId, byte ped) {
- _seeScroll = true; // This stops the trippancy system working over the length of this procedure.
+ _animationsEnabled = false;
findPeople(roomId);
_room = roomId;
@@ -607,7 +617,7 @@ void AvalancheEngine::enterRoom(Room roomId, byte ped) {
}
spr1->_callEachStepFl = true;
- spr1->_eachStepProc = Animation::kProcGeida;
+ spr1->_eachStepProc = Animation::kProcFollowAvvy;
} else
_whereIs[kPeopleSpludwick - 150] = kRoomNowhere;
break;
@@ -910,7 +920,7 @@ void AvalancheEngine::enterRoom(Room roomId, byte ped) {
break;
}
- _seeScroll = false; // Now it can work again!
+ _animationsEnabled = true;
}
void AvalancheEngine::thinkAbout(byte object, bool type) {
@@ -945,7 +955,7 @@ void AvalancheEngine::drawToolbar() {
}
void AvalancheEngine::drawScore() {
- uint16 score = _dnascore;
+ uint16 score = _score;
int8 numbers[3] = {0, 0, 0};
for (int i = 0; i < 2; i++) {
byte divisor = 1;
@@ -971,15 +981,14 @@ void AvalancheEngine::drawScore() {
void AvalancheEngine::incScore(byte num) {
for (int i = 1; i <= num; i++) {
- _dnascore++;
+ _score++;
if (_soundFx) {
for (int j = 1; j <= 97; j++)
- // Length os 2 is a guess, the original doesn't have a delay specified
- _sound->playNote(177 + _dnascore * 3, 2);
+ // Length of 2 is a guess, the original doesn't have a delay specified
+ _sound->playNote(177 + _score * 3, 2);
}
}
- warning("STUB: points()");
drawScore();
}
@@ -1104,7 +1113,7 @@ void AvalancheEngine::checkClick() {
_graphics->loadMouse(kCurIBeam); //I-beam
else if ((340 <= cursorPos.y) && (cursorPos.y <= 399))
_graphics->loadMouse(kCurScrewDriver); // screwdriver
- else if (!_menu->isActive()) { // Dropdown can handle its own pointers.
+ else if (!_dropdown->isActive()) { // Dropdown can handle its own pointers.
if (_holdLeftMouse) {
_graphics->loadMouse(kCurCrosshair); // Mark's crosshairs
guideAvvy(cursorPos); // Normally, if you click on the picture, you're guiding Avvy around.
@@ -1115,7 +1124,7 @@ void AvalancheEngine::checkClick() {
if (_holdLeftMouse) {
if ((0 <= cursorPos.y) && (cursorPos.y <= 21)) { // Click on the dropdown menu.
if (_dropsOk)
- _menu->update();
+ _dropdown->update();
} else if ((317 <= cursorPos.y) && (cursorPos.y <= 339)) { // Click on the command line.
_parser->_inputTextPos = (cursorPos.x - 23) / 8;
if (_parser->_inputTextPos > _parser->_inputText.size() + 1)
@@ -1155,7 +1164,7 @@ void AvalancheEngine::checkClick() {
_animation->_sprites[0]->_speedX = kRun;
_animation->updateSpeed();
} else if ((396 <= cursorPos.x) && (cursorPos.x <= 483))
- fxToggle();
+ _sound->toggleSound();
else if ((535 <= cursorPos.x) && (cursorPos.x <= 640))
_mouseText.insertChar(kControlNewLine, 0);
} else if (!_dropsOk)
@@ -1164,7 +1173,14 @@ void AvalancheEngine::checkClick() {
}
void AvalancheEngine::errorLed() {
- warning("STUB: errorled()");
+ _dialogs->setReadyLight(0);
+ _graphics->drawErrorLight(true);
+ for (int i = 177; i >= 1; i--) {
+ _sound->playNote(177 + (i * 177177) / 999, 1);
+ _system->delayMillis(1);
+ }
+ _graphics->drawErrorLight(false);
+ _dialogs->setReadyLight(2);
}
/**
@@ -1274,10 +1290,6 @@ void AvalancheEngine::minorRedraw() {
fadeIn();
}
-void AvalancheEngine::majorRedraw() {
- _graphics->refreshScreen();
-}
-
uint16 AvalancheEngine::bearing(byte whichPed) {
AnimationType *avvy = _animation->_sprites[0];
PedType *curPed = &_peds[whichPed];
@@ -1321,7 +1333,7 @@ void AvalancheEngine::resetVariables() {
for (int i = 0; i < kObjectNum; i++)
_objects[i] = false;
- _dnascore = 0;
+ _score = 0;
_money = 0;
_room = kRoomNowhere;
_saveNum = 0;
@@ -1394,7 +1406,7 @@ void AvalancheEngine::resetAllVariables() {
_animation->resetVariables();
_sequence->resetVariables();
_background->resetVariables();
- _menu->resetVariables();
+ _dropdown->resetVariables();
_timer->resetVariables();
}
@@ -1427,7 +1439,7 @@ void AvalancheEngine::newGame() {
_thinkThing = true;
_thinks = 2;
refreshObjectList();
- _seeScroll = false;
+ _animationsEnabled = true;
avvy->appear(300, 117, kDirRight); // Needed to initialize Avalot.
//for (gd = 0; gd <= 30; gd++) for (gm = 0; gm <= 1; gm++) also[gd][gm] = nil;
@@ -1445,7 +1457,7 @@ void AvalancheEngine::newGame() {
enterRoom(kRoomYours, 1);
avvy->_visible = false;
drawScore();
- _menu->setup();
+ _dropdown->setup();
_clock->update();
spriteRun();
}
diff --git a/engines/avalanche/background.cpp b/engines/avalanche/background.cpp
index e5b66c509b..f1ba659a55 100644
--- a/engines/avalanche/background.cpp
+++ b/engines/avalanche/background.cpp
@@ -48,7 +48,7 @@ Background::~Background() {
* @remarks Originally called 'pics_link'
*/
void Background::update() {
- if (_vm->_menu->isActive())
+ if (_vm->_dropdown->isActive())
return; // No animation when the menus are up.
switch (_vm->_room) {
@@ -261,7 +261,7 @@ void Background::update() {
}
}
-void Background::load(byte number) {
+void Background::loadSprites(byte number) {
Common::File f;
_filename = _filename.format("chunk%d.avd", number);
if (!f.open(_filename))
diff --git a/engines/avalanche/background.h b/engines/avalanche/background.h
index 98d6d36fed..e994d9eae9 100644
--- a/engines/avalanche/background.h
+++ b/engines/avalanche/background.h
@@ -51,7 +51,7 @@ public:
~Background();
void update();
- void load(byte number);
+ void loadSprites(byte number);
void release();
// Setting the destination to negative coordinates means the picture should be drawn to it's original position.
diff --git a/engines/avalanche/dialogs.cpp b/engines/avalanche/dialogs.cpp
index 36f6f4470c..e843d17c5b 100644
--- a/engines/avalanche/dialogs.cpp
+++ b/engines/avalanche/dialogs.cpp
@@ -93,6 +93,7 @@ void Dialogs::setReadyLight(byte state) {
if (_vm->_ledStatus == state)
return; // Already like that!
+ // TODO: Implement different patterns for green color.
Color color = kColorBlack;
switch (state) {
case 0:
@@ -104,9 +105,7 @@ void Dialogs::setReadyLight(byte state) {
color = kColorGreen;
break; // Hit a key
}
- warning("STUB: Dialogs::setReadyLight()");
-
- CursorMan.showMouse(false);
+
_vm->_graphics->drawReadyLight(color);
CursorMan.showMouse(true);
_vm->_ledStatus = state;
@@ -158,7 +157,7 @@ void Dialogs::scrollModeNormal() {
Common::String e = "(c) 1994";
setReadyLight(3);
- _vm->_seeScroll = true;
+ _vm->_animationsEnabled = false;
_vm->_graphics->loadMouse(kCurFletch);
_vm->_graphics->saveScreen();
@@ -175,7 +174,8 @@ void Dialogs::scrollModeNormal() {
(event.kbd.keycode == Common::KEYCODE_PLUS)))) {
escape = true;
break;
- }
+ } else if (event.type == Common::EVENT_KEYDOWN)
+ _vm->errorLed();
}
}
@@ -216,10 +216,8 @@ void Dialogs::scrollModeNormal() {
#endif
setReadyLight(0);
- _vm->_seeScroll = false;
+ _vm->_animationsEnabled = true;
_vm->_holdLeftMouse = false; // Used in Lucerna::checkclick().
-
- warning("STUB: Scrolls::scrollModeNormal()");
}
/**
@@ -290,7 +288,7 @@ bool Dialogs::theyMatch(TuneType &played) {
*/
void Dialogs::scrollModeMusic() {
setReadyLight(3);
- _vm->_seeScroll = true;
+ _vm->_animationsEnabled = false;
CursorMan.showMouse(false);
_vm->_graphics->loadMouse(kCurFletch);
@@ -299,7 +297,7 @@ void Dialogs::scrollModeMusic() {
played[i] = kPitchInvalid;
int8 lastOne = -1, thisOne = -1; // Invalid values.
- _vm->_seeScroll = true;
+ _vm->_animationsEnabled = false;
_vm->_graphics->saveScreen();
_vm->_graphics->showScroll();
@@ -363,6 +361,7 @@ void Dialogs::scrollModeMusic() {
value = 11;
break;
default:
+ error("cannot happen");
break;
}
@@ -392,7 +391,7 @@ void Dialogs::scrollModeMusic() {
_vm->_graphics->restoreScreen();
_vm->_graphics->removeBackup();
- _vm->_seeScroll = false;
+ _vm->_animationsEnabled = true;
CursorMan.showMouse(true);
}
@@ -645,9 +644,6 @@ void Dialogs::solidify(byte n) {
* 'calldriver' and 'display' by using Common::String instead of a private buffer.
*/
void Dialogs::displayText(Common::String text) {
-// bool was_virtual; // Was the mouse cursor virtual on entry to this proc?
- warning("STUB: Scrolls::calldrivers()");
-
_vm->_sound->stopSound();
setReadyLight(0);
@@ -822,6 +818,8 @@ void Dialogs::displayText(Common::String text) {
}
}
}
+
+ setReadyLight(2);
}
void Dialogs::setTalkPos(int16 x, int16 y) {
diff --git a/engines/avalanche/menu.cpp b/engines/avalanche/dropdown.cpp
index af3caf880e..97adfc2581 100644
--- a/engines/avalanche/menu.cpp
+++ b/engines/avalanche/dropdown.cpp
@@ -28,42 +28,42 @@
/* Original name: DROPDOWN A customized version of Oopmenu (qv). */
#include "avalanche/avalanche.h"
-#include "avalanche/menu.h"
+#include "avalanche/dropdown.h"
namespace Avalanche {
-void HeadType::init(char trig, char altTrig, Common::String title, byte pos, MenuFunc setupFunc, MenuFunc chooseFunc, Menu *menu) {
+void HeadType::init(char trig, char altTrig, Common::String title, byte pos, MenuFunc setupFunc, MenuFunc chooseFunc, DropDownMenu *menu) {
_trigger = trig;
_altTrigger = altTrig;
_title = title;
_position = pos;
- _xpos = _position * _menu->kSpacing + _menu->kIndent;
- _xright = (_position + 1) * _menu->kSpacing + _menu->kIndent;
+ _xpos = _position * _dropdown->kSpacing + _dropdown->kIndent;
+ _xright = (_position + 1) * _dropdown->kSpacing + _dropdown->kIndent;
_setupFunc = setupFunc;
_chooseFunc = chooseFunc;
- _menu = menu;
+ _dropdown = menu;
}
void HeadType::draw() {
CursorMan.showMouse(false);
- _menu->drawMenuText(_xpos, 1, _trigger, _title, true, false);
+ _dropdown->drawMenuText(_xpos, 1, _trigger, _title, true, false);
CursorMan.showMouse(true);
}
void HeadType::highlight() {
CursorMan.showMouse(false);
- _menu->_vm->_sound->stopSound();
- _menu->drawMenuText(_xpos, 1, _trigger, _title, true, true);
+ _dropdown->_vm->_sound->stopSound();
+ _dropdown->drawMenuText(_xpos, 1, _trigger, _title, true, true);
- _menu->_activeMenuItem._left = _xpos;
- _menu->_activeMenuItem._activeNow = true;
- _menu->_activeMenuItem._activeNum = _position;
- _menu->_menuActive = true;
+ _dropdown->_activeMenuItem._left = _xpos;
+ _dropdown->_activeMenuItem._activeNow = true;
+ _dropdown->_activeMenuItem._activeNum = _position;
+ _dropdown->_menuActive = true;
// Force reload and redraw of cursor.
- _menu->_vm->_currentMouse = 177;
+ _dropdown->_vm->_currentMouse = 177;
}
@@ -73,12 +73,12 @@ bool HeadType::parseAltTrigger(char key) {
return false;
}
-void MenuItem::init(Menu *menu) {
- _menu = menu;
+void MenuItem::init(DropDownMenu *menu) {
+ _dropdown = menu;
_activeNow = false;
_activeNum = 1;
- _menu->_menuActive = false;
+ _dropdown->_menuActive = false;
}
void MenuItem::reset() {
@@ -113,8 +113,8 @@ void MenuItem::displayOption(byte y, bool highlit) {
else
backgroundColor = kColorLightgray;
- _menu->_vm->_graphics->drawMenuBlock((_flx1 + 1) * 8, 3 + (y + 1) * 10, (_flx2 + 1) * 8, 13 + (y + 1) * 10, backgroundColor);
- _menu->drawMenuText(_left, 4 + (y + 1) * 10, _options[y]._trigger, text, _options[y]._valid, highlit);
+ _dropdown->_vm->_graphics->drawMenuBlock((_flx1 + 1) * 8, 3 + (y + 1) * 10, (_flx2 + 1) * 8, 13 + (y + 1) * 10, backgroundColor);
+ _dropdown->drawMenuText(_left, 4 + (y + 1) * 10, _options[y]._trigger, text, _options[y]._valid, highlit);
}
void MenuItem::display() {
@@ -125,15 +125,15 @@ void MenuItem::display() {
_flx2 = _left + _width;
_fly = 15 + _optionNum * 10;
_activeNow = true;
- _menu->_menuActive = true;
+ _dropdown->_menuActive = true;
- _menu->_vm->_graphics->drawMenuItem((_flx1 + 1) * 8, 12, (_flx2 + 1) * 8, _fly);
+ _dropdown->_vm->_graphics->drawMenuItem((_flx1 + 1) * 8, 12, (_flx2 + 1) * 8, _fly);
displayOption(0, true);
for (int y = 1; y < _optionNum; y++)
displayOption(y, false);
- _menu->_vm->_currentMouse = 177;
+ _dropdown->_vm->_currentMouse = 177;
CursorMan.showMouse(true); // 4 = fletch
}
@@ -141,12 +141,12 @@ void MenuItem::display() {
void MenuItem::wipe() {
CursorMan.showMouse(false);
- _menu->drawMenuText(_menu->_menuBar._menuItems[_menu->_activeMenuItem._activeNum]._xpos, 1,
- _menu->_menuBar._menuItems[_menu->_activeMenuItem._activeNum]._trigger,
- _menu->_menuBar._menuItems[_menu->_activeMenuItem._activeNum]._title, true, false);
+ _dropdown->drawMenuText(_dropdown->_menuBar._menuItems[_dropdown->_activeMenuItem._activeNum]._xpos, 1,
+ _dropdown->_menuBar._menuItems[_dropdown->_activeMenuItem._activeNum]._trigger,
+ _dropdown->_menuBar._menuItems[_dropdown->_activeMenuItem._activeNum]._title, true, false);
_activeNow = false;
- _menu->_menuActive = false;
+ _dropdown->_menuActive = false;
_firstlix = false;
CursorMan.showMouse(true);
@@ -191,7 +191,7 @@ void MenuItem::select(byte which) {
if (_choiceNum > _optionNum)
_choiceNum = 0; // Off the top, I suppose.
- (_menu->*_menu->_menuBar._menuItems[_activeNum]._chooseFunc)();
+ (_dropdown->*_dropdown->_menuBar._menuItems[_activeNum]._chooseFunc)();
}
void MenuItem::parseKey(char c) {
@@ -204,34 +204,34 @@ void MenuItem::parseKey(char c) {
}
}
if (!found)
- _menu->_vm->_sound->blip();
+ _dropdown->_vm->_sound->blip();
}
MenuBar::MenuBar() {
_menuNum = 0;
- _menu = nullptr;
+ _dropdown = nullptr;
}
-void MenuBar::init(Menu *menu) {
- _menu = menu;
+void MenuBar::init(DropDownMenu *menu) {
+ _dropdown = menu;
_menuNum = 0;
}
void MenuBar::createMenuItem(char trig, Common::String title, char altTrig, MenuFunc setupFunc, MenuFunc chooseFunc) {
- _menuItems[_menuNum].init(trig, altTrig, title, _menuNum, setupFunc, chooseFunc, _menu);
+ _menuItems[_menuNum].init(trig, altTrig, title, _menuNum, setupFunc, chooseFunc, _dropdown);
_menuNum++;
}
void MenuBar::draw() {
- _menu->_vm->_graphics->drawMenuBar(kMenuBackgroundColor);
+ _dropdown->_vm->_graphics->drawMenuBar(kMenuBackgroundColor);
- byte savecp = _menu->_vm->_cp;
- _menu->_vm->_cp = 3;
+ byte savecp = _dropdown->_vm->_cp;
+ _dropdown->_vm->_cp = 3;
for (int i = 0; i < _menuNum; i++)
_menuItems[i].draw();
- _menu->_vm->_cp = savecp;
+ _dropdown->_vm->_cp = savecp;
}
void MenuBar::parseAltTrigger(char c) {
@@ -244,13 +244,13 @@ void MenuBar::parseAltTrigger(char c) {
}
void MenuBar::setupMenuItem(byte which) {
- if (_menu->_activeMenuItem._activeNow) {
- _menu->_activeMenuItem.wipe(); // Get rid of menu.
- if (_menu->_activeMenuItem._activeNum == _menuItems[which]._position)
+ if (_dropdown->_activeMenuItem._activeNow) {
+ _dropdown->_activeMenuItem.wipe(); // Get rid of menu.
+ if (_dropdown->_activeMenuItem._activeNum == _menuItems[which]._position)
return; // Clicked on own highlight.
}
_menuItems[which].highlight();
- (_menu->*_menuItems[which]._setupFunc)();
+ (_dropdown->*_menuItems[which]._setupFunc)();
}
void MenuBar::chooseMenuItem(int16 x) {
@@ -262,7 +262,7 @@ void MenuBar::chooseMenuItem(int16 x) {
}
}
-Menu::Menu(AvalancheEngine *vm) {
+DropDownMenu::DropDownMenu(AvalancheEngine *vm) {
_vm = vm;
_activeMenuItem.init(this);
_menuBar.init(this);
@@ -271,7 +271,7 @@ Menu::Menu(AvalancheEngine *vm) {
_lastPerson = kPeopleNone;
}
-void Menu::findWhatYouCanDoWithIt() {
+void DropDownMenu::findWhatYouCanDoWithIt() {
switch (_vm->_thinks) {
case kObjectWine:
case kObjectPotion:
@@ -299,7 +299,7 @@ void Menu::findWhatYouCanDoWithIt() {
}
}
-void Menu::drawMenuText(int16 x, int16 y, char trigger, Common::String text, bool valid, bool highlighted) {
+void DropDownMenu::drawMenuText(int16 x, int16 y, char trigger, Common::String text, bool valid, bool highlighted) {
Color fontColor;
Color backgroundColor;
if (highlighted) {
@@ -342,11 +342,11 @@ void Menu::drawMenuText(int16 x, int16 y, char trigger, Common::String text, boo
_vm->_graphics->refreshScreen();
}
-void Menu::bleep() {
+void DropDownMenu::bleep() {
_vm->_sound->playNote(177, 7);
}
-void Menu::parseKey(char r, char re) {
+void DropDownMenu::parseKey(char r, char re) {
#if 0
switch (r) {
case 0:
@@ -395,24 +395,24 @@ void Menu::parseKey(char r, char re) {
warning("STUB: Dropdown::parseKey()"); // To be implemented properly later! Don't remove the comment above!
}
-Common::String Menu::selectGender(byte x) {
+Common::String DropDownMenu::selectGender(byte x) {
if (x < 175)
return "im";
else
return "er";
}
-void Menu::setupMenuGame() {
+void DropDownMenu::setupMenuGame() {
_activeMenuItem.reset();
_activeMenuItem.setupOption("Help...", 'H', "f1", true);
- _activeMenuItem.setupOption("Boss Key", 'B', "alt-B", false);
- _activeMenuItem.setupOption("Untrash screen", 'U', "ctrl-f7", true);
+ _activeMenuItem.setupOption("Boss Key", 'B', "alt-B", true);
+ _activeMenuItem.setupOption("Untrash screen", 'U', "ctrl-f7", false);
_activeMenuItem.setupOption("Score and rank", 'S', "f9", true);
_activeMenuItem.setupOption("About Avvy...", 'A', "shift-f10", true);
_activeMenuItem.display();
}
-void Menu::setupMenuFile() {
+void DropDownMenu::setupMenuFile() {
_activeMenuItem.reset();
_activeMenuItem.setupOption("New game", 'N', "f4", true);
_activeMenuItem.setupOption("Load...", 'L', "^f3", true);
@@ -423,7 +423,7 @@ void Menu::setupMenuFile() {
_activeMenuItem.display();
}
-void Menu::setupMenuAction() {
+void DropDownMenu::setupMenuAction() {
_activeMenuItem.reset();
Common::String f5Does = _vm->f5Does();
@@ -449,7 +449,7 @@ void Menu::setupMenuAction() {
_activeMenuItem.display();
}
-void Menu::setupMenuPeople() {
+void DropDownMenu::setupMenuPeople() {
if (!people.empty())
people.clear();
@@ -465,7 +465,7 @@ void Menu::setupMenuPeople() {
_activeMenuItem.display();
}
-void Menu::setupMenuObjects() {
+void DropDownMenu::setupMenuObjects() {
_activeMenuItem.reset();
for (int i = 0; i < kObjectNum; i++) {
if (_vm->_objects[i])
@@ -474,7 +474,7 @@ void Menu::setupMenuObjects() {
_activeMenuItem.display();
}
-void Menu::setupMenuWith() {
+void DropDownMenu::setupMenuWith() {
_activeMenuItem.reset();
if (_vm->_thinkThing) {
@@ -531,7 +531,7 @@ void Menu::setupMenuWith() {
_activeMenuItem.display();
}
-void Menu::runMenuGame() {
+void DropDownMenu::runMenuGame() {
// Help, boss, untrash screen.
switch (_activeMenuItem._choiceNum) {
case 0:
@@ -541,7 +541,7 @@ void Menu::runMenuGame() {
_vm->callVerb(kVerbCodeBoss);
break;
case 2:
- _vm->majorRedraw();
+ _vm->_graphics->refreshScreen();
break;
case 3:
_vm->callVerb(kVerbCodeScore);
@@ -552,7 +552,7 @@ void Menu::runMenuGame() {
}
}
-void Menu::runMenuFile() {
+void DropDownMenu::runMenuFile() {
// New game, load, save, save as, DOS shell, about, quit.
switch (_activeMenuItem._choiceNum) {
case 0:
@@ -579,7 +579,7 @@ void Menu::runMenuFile() {
}
}
-void Menu::runMenuAction() {
+void DropDownMenu::runMenuAction() {
// Get up, pause game, open door, look, inventory, walk/run.
switch (_activeMenuItem._choiceNum) {
case 0: {
@@ -616,16 +616,16 @@ void Menu::runMenuAction() {
}
}
-void Menu::runMenuObjects() {
+void DropDownMenu::runMenuObjects() {
_vm->thinkAbout(_vm->_objectList[_activeMenuItem._choiceNum], AvalancheEngine::kThing);
}
-void Menu::runMenuPeople() {
+void DropDownMenu::runMenuPeople() {
_vm->thinkAbout(people[_activeMenuItem._choiceNum], AvalancheEngine::kPerson);
_lastPerson = (People)people[_activeMenuItem._choiceNum];
}
-void Menu::runMenuWith() {
+void DropDownMenu::runMenuWith() {
_vm->_parser->_thing = _vm->_thinks;
if (_vm->_thinkThing) {
@@ -664,21 +664,21 @@ void Menu::runMenuWith() {
_vm->callVerb((VerbCode)(byte)_verbStr[_activeMenuItem._choiceNum]);
}
-void Menu::setup() {
+void DropDownMenu::setup() {
_menuBar.init(this);
_activeMenuItem.init(this);
- _menuBar.createMenuItem('F', "File", '!', &Avalanche::Menu::setupMenuFile, &Avalanche::Menu::runMenuFile);
- _menuBar.createMenuItem('G', "Game", 34, &Avalanche::Menu::setupMenuGame, &Avalanche::Menu::runMenuGame);
- _menuBar.createMenuItem('A', "Action", 30, &Avalanche::Menu::setupMenuAction, &Avalanche::Menu::runMenuAction);
- _menuBar.createMenuItem('O', "Objects", 24, &Avalanche::Menu::setupMenuObjects, &Avalanche::Menu::runMenuObjects);
- _menuBar.createMenuItem('P', "People", 25, &Avalanche::Menu::setupMenuPeople, &Avalanche::Menu::runMenuPeople);
- _menuBar.createMenuItem('W', "With", 17, &Avalanche::Menu::setupMenuWith, &Avalanche::Menu::runMenuWith);
+ _menuBar.createMenuItem('F', "File", '!', &Avalanche::DropDownMenu::setupMenuFile, &Avalanche::DropDownMenu::runMenuFile);
+ _menuBar.createMenuItem('G', "Game", 34, &Avalanche::DropDownMenu::setupMenuGame, &Avalanche::DropDownMenu::runMenuGame);
+ _menuBar.createMenuItem('A', "Action", 30, &Avalanche::DropDownMenu::setupMenuAction, &Avalanche::DropDownMenu::runMenuAction);
+ _menuBar.createMenuItem('O', "Objects", 24, &Avalanche::DropDownMenu::setupMenuObjects, &Avalanche::DropDownMenu::runMenuObjects);
+ _menuBar.createMenuItem('P', "People", 25, &Avalanche::DropDownMenu::setupMenuPeople, &Avalanche::DropDownMenu::runMenuPeople);
+ _menuBar.createMenuItem('W', "With", 17, &Avalanche::DropDownMenu::setupMenuWith, &Avalanche::DropDownMenu::runMenuWith);
_menuBar.draw();
}
-void Menu::update() { // TODO: Optimize it ASAP!!! It really needs it...
+void DropDownMenu::update() {
_vm->_graphics->saveScreen();
Common::Point cursorPos = _vm->getMousePos();
@@ -769,7 +769,7 @@ void Menu::update() { // TODO: Optimize it ASAP!!! It really needs it...
_vm->_graphics->removeBackup();
}
-char Menu::getThingChar(byte which) {
+char DropDownMenu::getThingChar(byte which) {
static const char thingsChar[] = "WMBParCLguKeSnIohn"; // V=Vinegar
char result;
@@ -786,7 +786,7 @@ char Menu::getThingChar(byte which) {
return result;
}
-byte Menu::getNameChar(People whose) {
+byte DropDownMenu::getNameChar(People whose) {
static const char ladChar[] = "ASCDMTRwLfgeIyPu";
static const char lassChar[] = "kG\0xB1o";
@@ -798,7 +798,7 @@ byte Menu::getNameChar(People whose) {
error("getName() - Unexpected character id %d", (byte) whose);
}
-Common::String Menu::getThing(byte which) {
+Common::String DropDownMenu::getThing(byte which) {
static const char things[kObjectNum][20] = {
"Wine", "Money-bag", "Bodkin", "Potion", "Chastity belt",
"Crossbow bolt", "Crossbow", "Lute", "Pilgrim's badge", "Mushroom", "Key",
@@ -830,15 +830,15 @@ Common::String Menu::getThing(byte which) {
return result;
}
-bool Menu::isActive() {
+bool DropDownMenu::isActive() {
return _menuActive;
}
-void Menu::init() {
+void DropDownMenu::init() {
_menuActive = false;
}
-void Menu::resetVariables() {
+void DropDownMenu::resetVariables() {
_lastPerson = kPeoplePardon;
}
} // End of namespace Avalanche.
diff --git a/engines/avalanche/menu.h b/engines/avalanche/dropdown.h
index f4833d31c4..417b775c3d 100644
--- a/engines/avalanche/menu.h
+++ b/engines/avalanche/dropdown.h
@@ -27,17 +27,17 @@
/* Original name: DROPDOWN A customized version of Oopmenu (qv). */
-#ifndef AVALANCHE_MENU_H
-#define AVALANCHE_MENU_H
+#ifndef AVALANCHE_DROPDOWN_H
+#define AVALANCHE_DROPDOWN_H
#include "common/str.h"
namespace Avalanche {
class AvalancheEngine;
-class Menu;
+class DropDownMenu;
-typedef void (Menu::*MenuFunc)();
+typedef void (DropDownMenu::*MenuFunc)();
static const Color kMenuBackgroundColor = kColorLightgray;
static const Color kMenuBorderColor = kColorBlack;
@@ -49,13 +49,13 @@ public:
int16 _xpos, _xright;
MenuFunc _setupFunc, _chooseFunc;
- void init(char trig, char alTtrig, Common::String title, byte pos, MenuFunc setupFunc, MenuFunc chooseFunc, Menu *menu);
+ void init(char trig, char alTtrig, Common::String title, byte pos, MenuFunc setupFunc, MenuFunc chooseFunc, DropDownMenu *menu);
void draw();
void highlight();
bool parseAltTrigger(char key);
private:
- Menu *_menu;
+ DropDownMenu *_dropdown;
};
struct OptionType {
@@ -75,7 +75,7 @@ public:
byte _activeNum; // And if so, which is it?
byte _choiceNum; // Your choice?
- void init(Menu *menu);
+ void init(DropDownMenu *menu);
void reset();
void setupOption(Common::String title, char trigger, Common::String shortcut, bool valid);
void display();
@@ -88,7 +88,7 @@ private:
byte _optionNum;
byte _highlightNum;
- Menu *_menu;
+ DropDownMenu *_dropdown;
void displayOption(byte y, bool highlit);
void moveHighlight(int8 inc);
@@ -103,20 +103,20 @@ public:
byte _menuNum;
MenuBar();
- void init(Menu *menu);
+ void init(DropDownMenu *menu);
void createMenuItem(char trig, Common::String title, char altTrig, MenuFunc setupFunc, MenuFunc chooseFunc);
void draw();
void chooseMenuItem(int16 x);
private:
- Menu *_menu;
+ DropDownMenu *_dropdown;
void setupMenuItem(byte which);
// CHECKME: Useless function
void parseAltTrigger(char c);
};
-class Menu {
+class DropDownMenu {
public:
friend class HeadType;
friend class MenuItem;
@@ -125,7 +125,7 @@ public:
MenuItem _activeMenuItem;
MenuBar _menuBar;
- Menu(AvalancheEngine *vm);
+ DropDownMenu(AvalancheEngine *vm);
void update();
void setup(); // Standard menu bar.
@@ -179,4 +179,4 @@ private:
} // End of namespace Avalanche.
-#endif // AVALANCHE_MENU_H
+#endif // AVALANCHE_DROPDOWN_H
diff --git a/engines/avalanche/enums.h b/engines/avalanche/enums.h
index 998c96a131..0ba39321bc 100644
--- a/engines/avalanche/enums.h
+++ b/engines/avalanche/enums.h
@@ -30,6 +30,7 @@
namespace Avalanche {
+enum MonsterType { kMonsterTypeGhost, kMonsterTypeGlerk };
enum Flavour { kFlavourEga, kFlavourBgi, kFlavourNatural, kFlavourTwo, kFlavourOne };
diff --git a/engines/avalanche/ghostroom.cpp b/engines/avalanche/ghostroom.cpp
index 1419a0cbab..16c79fdee0 100644
--- a/engines/avalanche/ghostroom.cpp
+++ b/engines/avalanche/ghostroom.cpp
@@ -70,6 +70,30 @@ GhostRoom::~GhostRoom() {
for (int j = 0; j < 6; j++)
_greldet[j][i].free();
}
+
+ if (_wasLoaded) {
+ for (int i = 0; i < 5; i++) {
+ for (int j = 0; j < 2; j++) {
+ for (int y = 0; y < 66; y++) {
+ delete[] _ghost[i][j][y];
+ }
+ delete[] _ghost[i][j];
+ }
+ delete[] _ghost[i];
+ }
+ delete[] _ghost;
+
+ for (int i = 0; i < 6; i++) {
+ for (int j = 0; j < 4; j++) {
+ for (int y = 0; y < 35; y++) {
+ delete[] _glerk[i][j][y];
+ }
+ delete[] _glerk[i][j];
+ }
+ delete[] _glerk[i];
+ }
+ delete[] _glerk;
+ }
}
void GhostRoom::wait(uint16 howLong) {
@@ -141,9 +165,13 @@ void GhostRoom::loadPictures() {
file.seek(44);
// Initializing ghost's array.
+ _ghost = new byte***[5];
for (int i = 0; i < 5; i++) {
+ _ghost[i] = new byte**[2];
for (int j = 0; j < 2; j++) {
+ _ghost[i][j] = new byte*[66];
for (int y = 0; y < 66; y++) {
+ _ghost[i][j][y] = new byte[26];
for (int x = 0; x < 26; x++)
_ghost[i][j][y][x] = 0;
}
@@ -171,11 +199,14 @@ void GhostRoom::loadPictures() {
for (int i = 0; i < 3; i++)
_bat[i] = _vm->_graphics->ghostLoadPicture(file, dummyCoord);
-
// Initializing glerk's array.
+ _glerk = new byte***[6];
for (int i = 0; i < 6; i++) {
+ _glerk[i] = new byte**[4];
for (int j = 0; j < 4; j++) {
+ _glerk[i][j] = new byte*[35];
for (int y = 0; y < 35; y++) {
+ _glerk[i][j][y] = new byte[9];
for (int x = 0; x < 9; x++)
_glerk[i][j][y][x] = 0;
}
@@ -245,7 +276,7 @@ void GhostRoom::run() {
if (_glerkStage > 25)
break;
- _vm->_graphics->ghostDrawGlerk(_glerk[kGlerkFade[_glerkStage]], 456, 14);
+ _vm->_graphics->ghostDrawMonster(_glerk[kGlerkFade[_glerkStage]], 456, 14, kMonsterTypeGlerk);
_glerkStage++;
}
@@ -263,7 +294,7 @@ void GhostRoom::run() {
// Here comes the descending ghost:
for (int y = -64; y <= 103; y++) {
- _vm->_graphics->ghostDrawGhost(_ghost[1 + (abs(y / 7) % 2) * 3], 0, y);
+ _vm->_graphics->ghostDrawMonster(_ghost[1 + (abs(y / 7) % 2) * 3], 0, y, kMonsterTypeGhost);
if (y > 0)
_vm->_graphics->drawFilledRectangle(Common::Rect(0, y - 1, 26 * 8 + 1, y + 1), kColorBlack);
_vm->_graphics->refreshScreen();
@@ -277,7 +308,7 @@ void GhostRoom::run() {
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 5; j++) {
_vm->_graphics->drawFilledRectangle(Common::Rect(0, 96, 26 * 8, 170), kColorBlack);
- _vm->_graphics->ghostDrawGhost(_ghost[kWaveOrder[j]], 0, 96 + kAdjustment[j]);
+ _vm->_graphics->ghostDrawMonster(_ghost[kWaveOrder[j]], 0, 96 + kAdjustment[j], kMonsterTypeGhost);
_aarghCount++;
diff --git a/engines/avalanche/ghostroom.h b/engines/avalanche/ghostroom.h
index ebb02f7aac..4c659128ce 100644
--- a/engines/avalanche/ghostroom.h
+++ b/engines/avalanche/ghostroom.h
@@ -58,11 +58,11 @@ private:
static const byte kGreldetFade[18];
Common::Point dummyCoord;
- byte _ghost[5][2][66][26];
+ byte ****_ghost;// [5][2][66][26]
Graphics::Surface _eyes[2];
Graphics::Surface _exclamation;
Graphics::Surface _bat[3];
- byte _glerk[6][4][35][9];
+ byte ****_glerk; // [6][4][35][9]
Graphics::Surface _aargh[6];
Common::Point _aarghWhere[6];
Graphics::Surface _greenEyes[5];
diff --git a/engines/avalanche/graphics.cpp b/engines/avalanche/graphics.cpp
index 9510f4f72a..513cd72c8c 100644
--- a/engines/avalanche/graphics.cpp
+++ b/engines/avalanche/graphics.cpp
@@ -353,9 +353,9 @@ void GraphicManager::drawNormalText(const Common::String text, FontType font, by
}
/**
- * Used in Help. Draws text double the size of the normal.
+ * Draws text double the size of the normal.
*/
-void GraphicManager::drawBigText(const Common::String text, FontType font, byte fontHeight, int16 x, int16 y, Color color) {
+void GraphicManager::drawBigText(Graphics::Surface &surface, const Common::String text, FontType font, byte fontHeight, int16 x, int16 y, Color color) {
for (uint i = 0; i < text.size(); i++) {
for (int j = 0; j < fontHeight; j++) {
byte pixel = font[(byte)text[i]][j];
@@ -365,7 +365,7 @@ void GraphicManager::drawBigText(const Common::String text, FontType font, byte
pixelBit = (pixel >> (bit / 2)) & 1;
for (int k = 0; k < 2; k++)
if (pixelBit)
- *(byte *)_surface.getBasePtr(x + i * 16 + 16 - bit, y + j * 2 + k) = color;
+ *(byte *)surface.getBasePtr(x + i * 16 + 16 - bit, y + j * 2 + k) = color;
}
}
}
@@ -527,64 +527,65 @@ void GraphicManager::nimFree() {
_nimLogo.free();
}
-void GraphicManager::ghostDrawGhost(byte ghostArr[2][66][26], uint16 destX, int16 destY) {
+void GraphicManager::ghostDrawMonster(byte ***picture, uint16 destX, int16 destY, MonsterType type) {
+ uint16 height = 0;
+ uint16 width = 0;
+ // Only for the Ghost:
const byte kPlaneToUse[4] = { 0, 0, 0, 1 };
- // Constants from the original code:
- uint16 height = 66;
- const uint16 width = 26 * 8;
-
- // We have to mess around with the coords and the sizes since
- // the ghost isn't always placed fully on the screen.
int yStart = 0;
- if (destY < 0) {
- yStart = abs(destY);
- height -= yStart;
- destY = 0;
- }
-
- Graphics::Surface ghostPic;
- ghostPic.create(width, height, Graphics::PixelFormat::createFormatCLUT8());
-
- for (int y = 0; y < height; y++) {
- for (int plane = 0; plane < 4; plane++) {
- for (uint16 x = 0; x < width / 8; x ++) {
- byte pixel = ghostArr[kPlaneToUse[plane]][y + yStart][x];
- for (int bit = 0; bit < 8; bit++) {
- byte pixelBit = (pixel >> bit) & 1;
- *(byte *)ghostPic.getBasePtr(x * 8 + 7 - bit, y) += (pixelBit << plane);
- }
- }
+
+ // Constants from the original code:
+ switch (type) {
+ case kMonsterTypeGhost:
+ height = 66;
+ width = 208; // 26 * 8
+
+ // We have to mess around with the coords and the sizes since
+ // the ghost isn't always placed fully on the screen.
+ if (destY < 0) {
+ yStart = abs(destY);
+ height -= yStart;
+ destY = 0;
}
+ break;
+ case kMonsterTypeGlerk:
+ height = 35;
+ width = 72; // 9 * 8
+ break;
+ default:
+ break;
}
- drawPicture(_surface, ghostPic, destX, destY);
-
- ghostPic.free();
-}
-
-void GraphicManager::ghostDrawGlerk(byte glerkArr[4][35][9], uint16 destX, uint16 destY) {
- // Constants from the original code:
- const uint16 height = 35;
- const uint16 width = 9 * 8;
-
- Graphics::Surface glerkPic;
- glerkPic.create(width, height, Graphics::PixelFormat::createFormatCLUT8());
+ Graphics::Surface monsterPicture;
+ monsterPicture.create(width, height, Graphics::PixelFormat::createFormatCLUT8());
for (int y = 0; y < height; y++) {
for (int plane = 0; plane < 4; plane++) {
for (uint16 x = 0; x < width / 8; x++) {
- byte pixel = glerkArr[plane][y][x];
+ byte pixel = 0;
+
+ switch (type) {
+ case kMonsterTypeGhost:
+ pixel = picture[kPlaneToUse[plane]][y + yStart][x];
+ break;
+ case kMonsterTypeGlerk:
+ pixel = picture[plane][y][x];
+ break;
+ default:
+ break;
+ }
+
for (int bit = 0; bit < 8; bit++) {
byte pixelBit = (pixel >> bit) & 1;
- *(byte *)glerkPic.getBasePtr(x * 8 + 7 - bit, y) += (pixelBit << plane);
+ *(byte *)monsterPicture.getBasePtr(x * 8 + 7 - bit, y) += (pixelBit << plane);
}
}
}
}
- drawPicture(_surface, glerkPic, destX, destY);
+ drawPicture(_surface, monsterPicture, destX, destY);
- glerkPic.free();
+ monsterPicture.free();
}
/**
@@ -694,6 +695,10 @@ void GraphicManager::helpDrawHighlight(byte which, Color color) {
drawRectangle(Common::Rect(466, 38 + which * 27, 556, 63 + which * 27), color);
}
+void GraphicManager::helpDrawBigText(const Common::String text, int16 x, int16 y, Color color) {
+ drawBigText(_surface, text, _vm->_font, 8, x, y, color);
+}
+
/**
* @remarks Originally called 'titles'
*/
@@ -787,6 +792,92 @@ uint16 GraphicManager::seuGetPicHeight(int which) {
return _seuPictures[which].h;
}
+void GraphicManager::menuRefreshScreen() {
+ g_system->copyRectToScreen(_menu.getPixels(), _menu.pitch, 0, 0, kScreenWidth, kMenuScreenHeight);
+ g_system->updateScreen();
+}
+
+void GraphicManager::menuInitialize() {
+ initGraphics(kScreenWidth, kMenuScreenHeight, true);
+ _menu.create(kScreenWidth, kMenuScreenHeight, Graphics::PixelFormat::createFormatCLUT8());
+}
+
+void GraphicManager::menuFree() {
+ _menu.free();
+}
+
+void GraphicManager::menuRestoreScreen() {
+ initGraphics(kScreenWidth, 2 * kScreenHeight, true);
+}
+
+void GraphicManager::menuLoadPictures() {
+ _menu.fillRect(Common::Rect(0, 0, kScreenWidth, kMenuScreenHeight), kColorBlack);
+
+ Common::File file;
+
+ if (!file.open("menu.avd"))
+ error("AVALANCHE: MainMenu: File not found: menu.avd");
+
+ int height = 33;
+ int width = 9 * 8;
+
+ for (int plane = 0; plane < 4; plane++) {
+ // The icons themselves:
+ int n = 0;
+ for (uint16 y = 70; y < 70 + height * 6; y++) {
+ for (uint16 x = 48; x < 48 + width; x += 8) {
+ if (n < 1773) { // Magic value deciphered from the original code.
+ byte pixel = file.readByte();
+ n++;
+ for (int i = 0; i < 8; i++) {
+ byte pixelBit = (pixel >> i) & 1;
+ *(byte *)_menu.getBasePtr(x + 7 - i, y) += (pixelBit << plane);
+ }
+ }
+ }
+ }
+ // The right borders of the menuboxes:
+ for (int a = 0; a < 33; a++) {
+ byte pixel = file.readByte();
+ for (int b = 0; b < 6; b++) {
+ for (int i = 0; i < 8; i++) {
+ byte pixelBit = (pixel >> i) & 1;
+ *(byte *)_menu.getBasePtr(584 + 7 - i, 70 + b * 33 + a) += (pixelBit << plane);
+ }
+ }
+ }
+ }
+
+ for (int i = 0; i < 6; i++) {
+ _menu.fillRect(Common::Rect(114, 73 + i * 33, 584, 100 + i * 33), kColorLightgray);
+ _menu.fillRect(Common::Rect(114, 70 + i * 33, 584, 73 + i * 33), kColorWhite);
+ _menu.fillRect(Common::Rect(114, 100 + i * 33, 584, 103 + i * 33), kColorDarkgray);
+ }
+
+ file.close();
+
+ // The title on the top of the screen:
+ if (!file.open("mainmenu.avd"))
+ error("AVALANCHE: MainMenu: File not found: mainmenu.avd");
+
+ Graphics::Surface title = loadPictureRaw(file, 640, 59);
+ drawPicture(_menu, title, 0, 0);
+ title.free();
+
+ file.close();
+}
+
+void GraphicManager::menuDrawBigText(FontType font, uint16 x, uint16 y, Common::String text, Color color) {
+ drawBigText(_menu, text, font, 14, x, y, color);
+}
+
+void GraphicManager::menuDrawIndicator(int x) { // TODO: Implement striped pattern for the indicator.
+ if (x > 0)
+ _menu.fillRect(Common::Rect(x - 1, 330, x, 337), kColorBlack);
+ _menu.fillRect(Common::Rect(x, 330, x + 1, 337), kColorWhite);
+ menuRefreshScreen();
+}
+
/**
* This function is for skipping the difference between a stored 'size' value associated with a picture
* and the actual size of the pictures when reading them from files for Ghostroom and Shoot em' up.
@@ -992,7 +1083,27 @@ void GraphicManager::drawCursor(byte pos) {
}
void GraphicManager::drawReadyLight(Color color) {
- _surface.fillRect(Common::Rect(419, 195, 438, 197), color);
+ _surface.fillRect(Common::Rect(419, 195, 439, 198), color);
+ _scrolls.fillRect(Common::Rect(419, 195, 439, 198), color);
+}
+
+void GraphicManager::drawSoundLight(bool state) {
+ Color color = kColorBlack;
+ if (state)
+ color = kColorCyan;
+ else
+ color = kColorBlack;
+ _surface.fillRect(Common::Rect(419, 175, 439, 178), color);
+}
+
+void GraphicManager::drawErrorLight(bool state) {
+ Color color = kColorBlack;
+ if (state)
+ color = kColorRed;
+ else
+ color = kColorBlack;
+ _surface.fillRect(Common::Rect(419, 184, 439, 187), color);
+ refreshScreen();
}
/**
diff --git a/engines/avalanche/graphics.h b/engines/avalanche/graphics.h
index acc0c92a15..bd8fc6c8ff 100644
--- a/engines/avalanche/graphics.h
+++ b/engines/avalanche/graphics.h
@@ -68,7 +68,6 @@ public:
void drawPieSlice(int16 x, int16 y, int16 stAngle, int16 endAngle, uint16 radius, Color color);
void drawTriangle(Common::Point *p, Color color);
void drawNormalText(const Common::String text, FontType font, byte fontHeight, int16 x, int16 y, Color color);
- void drawBigText(const Common::String text, FontType font, byte fontHeight, int16 x, int16 y, Color color); // Very similar to drawText. TODO: Try to unify the two.
void drawScrollText(const Common::String text, FontType font, byte fontHeight, int16 x, int16 y, Color color);
void drawDigit(int index, int x, int y);
void drawDirection(int index, int x, int y);
@@ -98,8 +97,7 @@ public:
void drawWinningPic();
// Ghostroom's functions:
- void ghostDrawGhost(byte ghostArr[2][66][26], uint16 destX, int16 destY); // Very similar to loadPictureSign(). TODO: Unify the two later if possible.
- void ghostDrawGlerk(byte glerkArr[4][35][9], uint16 destX, uint16 destY); // Very similar to ghostDrawGhost(), but not enough to unify the two.
+ void ghostDrawMonster(byte ***picture, uint16 destX, int16 destY, MonsterType type);
Graphics::Surface ghostLoadPicture(Common::File &file, Common::Point &coord);
void ghostDrawPicture(const Graphics::Surface &picture, uint16 destX, uint16 destY);
void ghostDrawBackgroundItems(Common::File &file);
@@ -107,6 +105,7 @@ public:
// Help's function:
void helpDrawButton(int y, byte which);
void helpDrawHighlight(byte which, Color color);
+ void helpDrawBigText(const Common::String text, int16 x, int16 y, Color color);
// Shoot em' up's functions:
void seuDrawTitle();
@@ -117,6 +116,17 @@ public:
uint16 seuGetPicWidth(int which);
uint16 seuGetPicHeight(int which);
+ // Main Menu's functions:
+ // The main menu uses a different screen height (350) from the game itself (200 * 2)
+ // so it needs it's own graphic functions on that matter.
+ void menuRefreshScreen();
+ void menuInitialize();
+ void menuFree();
+ void menuRestoreScreen();
+ void menuLoadPictures();
+ void menuDrawBigText(FontType font, uint16 x, uint16 y, Common::String text, Color color);
+ void menuDrawIndicator(int x);
+
void clearAlso();
void clearTextBar();
void setAlsoLine(int x1, int y1, int x2, int y2, Color color);
@@ -131,6 +141,8 @@ public:
void drawToolbar();
void drawCursor(byte pos);
void drawReadyLight(Color color);
+ void drawSoundLight(bool state);
+ void drawErrorLight(bool state);
void drawSign(Common::String name, int16 xl, int16 yl, int16 y);
void drawIcon(int16 x, int16 y, byte which);
void drawScreenLine(int16 x, int16 y, int16 x2, int16 y2, Color color);
@@ -155,6 +167,7 @@ private:
static const byte kEgaPaletteIndex[16];
static const byte kBackgroundHeight = 8 * 12080 / kScreenWidth; // With 640 width it's 151.
// The 8 = number of bits in a byte, and 12080 comes from Lucerna::load().
+ static const uint16 kMenuScreenHeight = 350;
Graphics::Surface _background;
Graphics::Surface _backup;
@@ -164,6 +177,7 @@ private:
Graphics::Surface _screen; // Only used in refreshScreen() to make it more optimized. (No recreation of it at every call of the function.)
Graphics::Surface _scrolls;
Graphics::Surface _surface;
+ Graphics::Surface _menu;
// For the mini-game "Nim".
Graphics::Surface _nimStone;
@@ -184,11 +198,11 @@ private:
Graphics::Surface loadPictureSign(Common::File &file, uint16 width, uint16 height); // Reads a tricky type of picture used for the "game over"/"about" scrolls and in the mini-game Nim.
void drawText(Graphics::Surface &surface, const Common::String text, FontType font, byte fontHeight, int16 x, int16 y, Color color);
+ void drawBigText(Graphics::Surface &surface, const Common::String text, FontType font, byte fontHeight, int16 x, int16 y, Color color);
void drawPicture(Graphics::Surface &target, const Graphics::Surface picture, uint16 destX, uint16 destY);
// Taken from Free Pascal's Procedure InternalEllipseDefault. Used to replace Pascal's procedure arc.
// Returns the end point of the arc. (Needed in Clock.)
- // TODO: Make it more accurate later.
Common::Point drawArc(Graphics::Surface &surface, int16 x, int16 y, int16 stAngle, int16 endAngle, uint16 radius, Color color);
};
diff --git a/engines/avalanche/help.cpp b/engines/avalanche/help.cpp
index b24f6c40d8..9b077eb4fb 100644
--- a/engines/avalanche/help.cpp
+++ b/engines/avalanche/help.cpp
@@ -76,8 +76,8 @@ void Help::switchPage(byte which) {
_vm->_graphics->drawNormalText(title, _vm->_font, 8, 629 - 8 * title.size(), 26, kColorBlack);
_vm->_graphics->drawNormalText(title, _vm->_font, 8, 630 - 8 * title.size(), 25, kColorCyan);
- _vm->_graphics->drawBigText("help!", _vm->_font, 8, 549, 1, kColorBlack);
- _vm->_graphics->drawBigText("help!", _vm->_font, 8, 550, 0, kColorCyan);
+ _vm->_graphics->helpDrawBigText("help!", 549, 1, kColorBlack);
+ _vm->_graphics->helpDrawBigText("help!", 550, 0, kColorCyan);
byte y = 0;
do {
@@ -141,8 +141,8 @@ void Help::switchPage(byte which) {
break;
}
- _vm->_graphics->drawBigText(text, _vm->_font, 8, 589 - (text.size() * 8), 18 + (y + 1) * 27, kColorBlack);
- _vm->_graphics->drawBigText(text, _vm->_font, 8, 590 - (text.size() * 8), 17 + (y + 1) * 27, kColorCyan);
+ _vm->_graphics->helpDrawBigText(text, 589 - (text.size() * 8), 18 + (y + 1) * 27, kColorBlack);
+ _vm->_graphics->helpDrawBigText(text, 590 - (text.size() * 8), 17 + (y + 1) * 27, kColorCyan);
y++;
_buttonNum++;
@@ -190,7 +190,7 @@ bool Help::handleMouse(const Common::Event &event) {
Color highlightColor = kColorLightblue;
// If we clicked on a button or we are holding down the button, we have to highlight it with cyan:
- if (((highlightIs != 177) && ((event.type == Common::EVENT_LBUTTONDOWN)) || _holdLeft)) {
+ if (((highlightIs != 177) && (event.type == Common::EVENT_LBUTTONDOWN)) || _holdLeft) {
_holdLeft = true;
highlightColor = kColorLightcyan;
}
@@ -199,8 +199,8 @@ bool Help::handleMouse(const Common::Event &event) {
if (_highlightWas != highlightIs)
_vm->_graphics->helpDrawHighlight(_highlightWas, kColorBlue);
- // Highligt the current one with the proper color:
- if (_buttons[highlightIs]._trigger != Common::KEYCODE_INVALID) {
+ // Highlight the current one with the proper color:
+ if ((highlightIs != 177) && (_buttons[highlightIs]._trigger != Common::KEYCODE_INVALID)) {
_highlightWas = highlightIs;
_vm->_graphics->helpDrawHighlight(highlightIs, highlightColor);
}
diff --git a/engines/avalanche/highscore.cpp b/engines/avalanche/highscore.cpp
new file mode 100644
index 0000000000..5f47aeb894
--- /dev/null
+++ b/engines/avalanche/highscore.cpp
@@ -0,0 +1,110 @@
+/* ScummVM - Graphic Adventure Engine
+*
+* ScummVM is the legal property of its developers, whose names
+* are too numerous to list here. Please refer to the COPYRIGHT
+* file distributed with this source distribution.
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+*
+*/
+
+/*
+* This code is based on the original source code of Lord Avalot d'Argent version 1.3.
+* Copyright (c) 1994-1995 Mike: Mark and Thomas Thurman.
+*/
+
+#include "avalanche/avalanche.h"
+#include "avalanche/highscore.h"
+
+#include "common/savefile.h"
+
+namespace Avalanche {
+
+HighScore::HighScore(AvalancheEngine *vm) {
+ _vm = vm;
+}
+
+void HighScore::displayHighScores() {
+ warning("STUB: HighScore::displayHighScores(");
+}
+
+void HighScore::saveHighScores() {
+ int firstSmaller = 0;
+ while ((firstSmaller < 12) && (_data[firstSmaller]._score >= _vm->_score))
+ firstSmaller++;
+
+ if (firstSmaller < 12) {
+ // Shift all the lower scores down a space:
+ for (int i = firstSmaller; i < 11; i++)
+ _data[i + 1] = _data[i];
+ // Set the new high score:
+ _data[firstSmaller]._name = "Player"; // TODO: Come up with something for that. In the original it wasn't implemented at all...
+ _data[firstSmaller]._rank = _vm->_parser->rank();
+ _data[firstSmaller]._score = _vm->_score;
+ }
+
+ Common::OutSaveFile *f = g_system->getSavefileManager()->openForSaving("scores.avd");
+ if (!f) {
+ warning("Can't create file 'scores.avd', high scores are not saved.");
+ return;
+ }
+ Common::Serializer sz(NULL, f);
+ syncHighScores(sz);
+ f->finalize();
+ delete f;
+}
+
+void HighScore::loadHighScroes() {
+ Common::File file;
+ if (!file.exists("scores.avd")) {
+ produceDefaultHighScores();
+ } else {
+ Common::InSaveFile *f = g_system->getSavefileManager()->openForLoading("scores.avd");
+ if (!f)
+ return;
+ Common::Serializer sz(f, NULL);
+ syncHighScores(sz);
+ delete f;
+ }
+}
+
+void HighScore::produceDefaultHighScores() {
+ for (int i = 0; i < 12; i++) {
+ _data[i]._score = 32 - (i + 1) * 2;
+ _data[i]._rank = "...";
+ }
+ _data[0]._name = "Mike";
+ _data[1]._name = "Liz";
+ _data[2]._name = "Thomas";
+ _data[3]._name = "Mark";
+ _data[4]._name = "Mandy";
+ _data[5]._name = "Andrew";
+ _data[6]._name = "Lucy Tryphena";
+ _data[7]._name = "Tammy the dog";
+ _data[8]._name = "Avaricius";
+ _data[9]._name = "Spellchick";
+ _data[10]._name = "Caddelli";
+ _data[11]._name = "Spludwick";
+}
+
+void HighScore::syncHighScores(Common::Serializer &sz) {
+ for (int i = 0; i < 12; i++) {
+ sz.syncString(_data[i]._name);
+ sz.syncAsUint16LE(_data[i]._score);
+ sz.syncString(_data[i]._rank);
+ }
+}
+
+} // End of namespace Avalanche
diff --git a/engines/avalanche/highscore.h b/engines/avalanche/highscore.h
new file mode 100644
index 0000000000..de7ec36ed5
--- /dev/null
+++ b/engines/avalanche/highscore.h
@@ -0,0 +1,59 @@
+/* ScummVM - Graphic Adventure Engine
+*
+* ScummVM is the legal property of its developers, whose names
+* are too numerous to list here. Please refer to the COPYRIGHT
+* file distributed with this source distribution.
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+*
+*/
+
+/*
+* This code is based on the original source code of Lord Avalot d'Argent version 1.3.
+* Copyright (c) 1994-1995 Mike: Mark and Thomas Thurman.
+*/
+
+#ifndef AVALANCHE_HIGHSCORE_H
+#define AVALANCHE_HIGHSCORE_H
+
+namespace Avalanche {
+class AvalancheEngine;
+
+struct HighScoreData {
+ Common::String _name;
+ uint16 _score;
+ Common::String _rank;
+};
+
+class HighScore {
+public:
+ HighScore(AvalancheEngine *vm);
+
+ void displayHighScores();
+ void saveHighScores();
+ void loadHighScroes();
+
+private:
+ AvalancheEngine *_vm;
+
+ HighScoreData _data[12];
+
+ void produceDefaultHighScores();
+ void syncHighScores(Common::Serializer &sz);
+};
+
+} // End of namespace Avalanche
+
+#endif // AVALANCHE_HIGHSCORE_H
diff --git a/engines/avalanche/mainmenu.cpp b/engines/avalanche/mainmenu.cpp
new file mode 100644
index 0000000000..543684556c
--- /dev/null
+++ b/engines/avalanche/mainmenu.cpp
@@ -0,0 +1,116 @@
+/* ScummVM - Graphic Adventure Engine
+*
+* ScummVM is the legal property of its developers, whose names
+* are too numerous to list here. Please refer to the COPYRIGHT
+* file distributed with this source distribution.
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+*
+*/
+
+/*
+* This code is based on the original source code of Lord Avalot d'Argent version 1.3.
+* Copyright (c) 1994-1995 Mike, Mark and Thomas Thurman.
+*/
+
+#include "avalanche/avalanche.h"
+#include "avalanche/mainmenu.h"
+
+namespace Avalanche {
+
+MainMenu::MainMenu(AvalancheEngine *vm) {
+ _vm = vm;
+
+ _registrant = Common::String("");
+}
+
+void MainMenu::run() {
+ CursorMan.showMouse(false);
+ _vm->_graphics->menuInitialize();
+ _vm->_graphics->menuLoadPictures();
+ loadRegiInfo();
+ loadFont();
+
+ option(1, "Play the game.");
+ option(2, "Read the background.");
+ option(3, "Preview... perhaps...");
+ option(4, "View the documentation.");
+ option(5, "Registration info.");
+ option(6, "Exit back to DOS.");
+ centre(274, _registrant);
+ centre(301, "Make your choice, or wait for the demo.");
+
+ _vm->_graphics->menuRefreshScreen();
+
+ wait();
+}
+
+void MainMenu::loadFont() {
+ Common::File file;
+ if (!file.open("avalot.fnt"))
+ error("AVALANCHE: Scrolls: File not found: avalot.fnt");
+ for (int16 i = 0; i < 256; i++)
+ file.read(_font[i], 16);
+ file.close();
+}
+
+void MainMenu::loadRegiInfo() {
+ _registrant = "(Unregistered evaluation copy.)";
+ warning("STUB: MainMenu::loadRegiInfo()");
+}
+
+void MainMenu::option(byte which, Common::String what) {
+ _vm->_graphics->menuDrawBigText(_font, 127, 39 + which * 33, Common::String(which + 48) + ')', kColorBlack);
+ _vm->_graphics->menuDrawBigText(_font, 191, 39 + which * 33, what, kColorBlack);
+}
+
+void MainMenu::centre(int16 y, Common::String text) {
+ _vm->_graphics->menuDrawBigText(_font, 320 - text.size() * 8, y, text, kColorLightgray);
+}
+
+void MainMenu::wait() {
+ int x = 0;
+ while (!_vm->shouldQuit()) {
+ _vm->_graphics->menuDrawIndicator(x);
+ _vm->_system->delayMillis(40);
+ x++;
+ if (x == 641)
+ x = 0;
+ Common::Event event;
+ _vm->getEvent(event);
+ if (event.type == Common::EVENT_KEYDOWN) {
+ switch (event.kbd.keycode) {
+ case Common::KEYCODE_SPACE:
+ case Common::KEYCODE_RETURN:
+ case Common::KEYCODE_1: // Falltroughs are inteded.
+ // Play the game
+ _vm->_graphics->menuFree();
+ _vm->_graphics->menuRestoreScreen();
+ CursorMan.showMouse(true);
+ return;
+ case Common::KEYCODE_ESCAPE:
+ case Common::KEYCODE_6: // Falltroughs are inteded.
+ // Exit back to DOS
+ _vm->_letMeOut = true;
+ _vm->_graphics->menuFree();
+ return;
+ default:
+ break;
+ }
+ }
+ }
+}
+
+} // End of namespace Avalanche
diff --git a/engines/avalanche/mainmenu.h b/engines/avalanche/mainmenu.h
new file mode 100644
index 0000000000..e973e0ccf3
--- /dev/null
+++ b/engines/avalanche/mainmenu.h
@@ -0,0 +1,55 @@
+/* ScummVM - Graphic Adventure Engine
+*
+* ScummVM is the legal property of its developers, whose names
+* are too numerous to list here. Please refer to the COPYRIGHT
+* file distributed with this source distribution.
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+*
+*/
+
+/*
+* This code is based on the original source code of Lord Avalot d'Argent version 1.3.
+* Copyright (c) 1994-1995 Mike, Mark and Thomas Thurman.
+*/
+
+#ifndef AVALANCHE_MAINMENU_H
+#define AVALANCHE_MAINMENU_H
+
+namespace Avalanche {
+class AvalancheEngine;
+
+class MainMenu {
+public:
+ MainMenu(AvalancheEngine *vm);
+
+ void run();
+
+private:
+ AvalancheEngine *_vm;
+
+ Common::String _registrant;
+ FontType _font;
+
+ void loadFont();
+ void loadRegiInfo();
+ void option(byte which, Common::String what);
+ void centre(int16 y, Common::String text);
+ void wait();
+};
+
+} // End of namespace Avalanche
+
+#endif // AVALANCHE_MAINMENU_H
diff --git a/engines/avalanche/module.mk b/engines/avalanche/module.mk
index eb95e32585..29bc039b42 100644
--- a/engines/avalanche/module.mk
+++ b/engines/avalanche/module.mk
@@ -9,7 +9,7 @@ MODULE_OBJS = \
console.o \
detection.o \
graphics.o \
- menu.o \
+ dropdown.o \
parser.o \
dialogs.o \
sequence.o \
@@ -19,7 +19,9 @@ MODULE_OBJS = \
clock.o \
ghostroom.o \
help.o \
- shootemup.o
+ shootemup.o \
+ mainmenu.o \
+ highscore.o
# This module can be built as a plugin
ifeq ($(ENABLE_AVALANCHE), DYNAMIC_PLUGIN)
diff --git a/engines/avalanche/parser.cpp b/engines/avalanche/parser.cpp
index 5e58d1df5c..b152747ab0 100644
--- a/engines/avalanche/parser.cpp
+++ b/engines/avalanche/parser.cpp
@@ -381,8 +381,8 @@ void Parser::init() {
void Parser::handleInputText(const Common::Event &event) {
byte inChar = event.kbd.ascii;
warning("STUB: Parser::handleInputText()");
-// if (_vm->_menu->_activeMenuItem._activeNow) {
-// _vm->_menu->parseKey(inChar, _vm->_enhanced->extd);
+// if (_vm->_dropdown->_activeMenuItem._activeNow) {
+// _vm->_dropdown->parseKey(inChar, _vm->_enhanced->extd);
// } else {
if (_inputText.size() < 76) {
if ((inChar == '"') || (inChar == '`')) {
@@ -402,7 +402,7 @@ void Parser::handleInputText(const Common::Event &event) {
}
void Parser::handleBackspace() {
- if (_vm->_menu->_activeMenuItem._activeNow)
+ if (_vm->_dropdown->_activeMenuItem._activeNow)
return;
if (_inputTextPos > 0) {
@@ -416,7 +416,7 @@ void Parser::handleBackspace() {
}
void Parser::handleReturn() {
- if (_vm->_menu->_activeMenuItem._activeNow)
+ if (_vm->_dropdown->_activeMenuItem._activeNow)
tryDropdown();
else if (!_inputText.empty()) {
_inputTextBackup = _inputText;
@@ -468,7 +468,7 @@ void Parser::handleFunctionKey(const Common::Event &event) {
break;
case Common::KEYCODE_F7:
if (event.kbd.flags & Common::KBD_CTRL)
- _vm->majorRedraw();
+ _vm->_graphics->refreshScreen();
else
_vm->callVerb(kVerbCodeOpen);
break;
@@ -602,7 +602,7 @@ Common::String Parser::rank() {
};
for (int i = 0; i < 8; i++) {
- if ((_vm->_dnascore >= ranks[i]._score) && (_vm->_dnascore < ranks[i + 1]._score))
+ if ((_vm->_score >= ranks[i]._score) && (_vm->_score < ranks[i + 1]._score))
return Common::String(ranks[i]._title);
}
return "";
@@ -2021,8 +2021,7 @@ void Parser::doThat() {
break;
case 55:
if (_vm->_room == kRoomArgentPub)
- // play_nim();
- warning("STUB: Parser::doThat() - case kVerbCodeplay - play_nim()");
+ _vm->_nim->playNim();
else
_vm->_dialogs->displayText(kWhat);
break;
@@ -2052,8 +2051,7 @@ void Parser::doThat() {
_vm->_dialogs->displayText("Hello, Phaon!");
break;
case kVerbCodeBoss:
- // bosskey();
- warning("STUB: Parser::doThat() - case kVerbCodeboss");
+ bossKey();
break;
case kVerbCodePee:
if (_vm->getFlag('P')) {
@@ -2308,7 +2306,7 @@ void Parser::doThat() {
break;
case kVerbCodeScore: {
Common::String tmpStr = Common::String::format("Your score is %d,%c%cout of a possible 128.%c%c " \
- "This gives you a rank of %s.%c%c%s", _vm->_dnascore, kControlCenter, kControlNewLine, kControlNewLine,
+ "This gives you a rank of %s.%c%c%s", _vm->_score, kControlCenter, kControlNewLine, kControlNewLine,
kControlNewLine, rank().c_str(), kControlNewLine, kControlNewLine, totalTime().c_str());
_vm->_dialogs->displayText(tmpStr);
}
@@ -2426,6 +2424,25 @@ void Parser::doThat() {
}
}
+void Parser::bossKey() {
+ _vm->_graphics->saveScreen();
+ _vm->_graphics->blackOutScreen();
+ _vm->_graphics->loadMouse(kCurUpArrow);
+ _vm->loadBackground(98);
+ _vm->_graphics->drawNormalText("Graph/Histo/Draw/Sample: \"JANJUN93.GRA\": (W3-AB3)", _vm->_font, 8, 120, 169, kColorDarkgray);
+ _vm->_graphics->drawNormalText("Press any key or click the mouse to return.", _vm->_font, 8, 144, 182, kColorDarkgray);
+ _vm->_graphics->refreshScreen();
+ Common::Event event;
+ _vm->getEvent(event);
+ while ((!_vm->shouldQuit()) && (event.type != Common::EVENT_KEYDOWN) && (event.type != Common::EVENT_LBUTTONDOWN)){
+ _vm->getEvent(event);
+ _vm->_graphics->refreshScreen();
+ }
+ _vm->_graphics->restoreScreen();
+ _vm->_graphics->removeBackup();
+ _vm->loadBackground(_vm->_room);
+}
+
void Parser::verbOpt(byte verb, Common::String &answer, char &ansKey) {
// kVerbCodegive isn't dealt with by this procedure, but by ddm__with.
switch (verb) {
diff --git a/engines/avalanche/parser.h b/engines/avalanche/parser.h
index 46408f518a..6133c41442 100644
--- a/engines/avalanche/parser.h
+++ b/engines/avalanche/parser.h
@@ -72,13 +72,11 @@ public:
byte _wearing; // what you're wearing
Parser(AvalancheEngine *vm);
-
void init();
void parse();
void doThat();
void verbOpt(byte verb, Common::String &answer, char &ansKey);
void drink();
-
void handleInputText(const Common::Event &event);
void handleBackspace();
void handleReturn();
@@ -89,7 +87,7 @@ public:
void tryDropdown();
int16 getPos(const Common::String &crit, const Common::String &src);
void doVerb(VerbCode id);
-
+ Common::String rank();
void resetVariables();
void synchronize(Common::Serializer &sz);
@@ -112,10 +110,7 @@ private:
byte wordNum(Common::String word);
void replace(Common::String oldChars, byte newChar);
-
- Common::String rank();
Common::String totalTime();
-
void clearWords();
void cheatParse(Common::String codes);
void stripPunctuation(Common::String &word);
@@ -146,6 +141,7 @@ private:
void playHarp();
void winSequence();
void wipeText();
+ void bossKey();
};
} // End of namespace Avalanche
diff --git a/engines/avalanche/shootemup.cpp b/engines/avalanche/shootemup.cpp
index bf041b5ad8..cabd19d6f9 100644
--- a/engines/avalanche/shootemup.cpp
+++ b/engines/avalanche/shootemup.cpp
@@ -42,6 +42,8 @@ const byte ShootEmUp::kAvvyY = 150;
const byte ShootEmUp::kShooting[7] = { 86, 79, 80, 81, 80, 79, 86 };
const byte ShootEmUp::kTimesASecond = 18;
const byte ShootEmUp::kFlashTime = 20; // If flash_time is <= this, the word "time" will flash. Should be about 20.
+const byte ShootEmUp::kLeftMargin = 10;
+const int16 ShootEmUp::kRightMargin = 605;
ShootEmUp::ShootEmUp(AvalancheEngine *vm) {
_vm = vm;
@@ -67,7 +69,7 @@ ShootEmUp::ShootEmUp(AvalancheEngine *vm) {
_avvyAnim = 1;
_avvyFacing = kFacingLeft;
_altWasPressedBefore = false;
- _throwNext = 74;
+ _throwNext = 73;
_firing = false;
for (int i = 0; i < 4; i++) {
_running[i]._x = kFlag;
@@ -93,7 +95,7 @@ ShootEmUp::ShootEmUp(AvalancheEngine *vm) {
_gotOut = false;
}
-void ShootEmUp::run() {
+uint16 ShootEmUp::run() {
CursorMan.showMouse(false);
_vm->_graphics->saveScreen();
_vm->fadeOut();
@@ -115,7 +117,7 @@ void ShootEmUp::run() {
setup();
- do {
+ while ((_time != 0) && (!_vm->shouldQuit())) {
uint32 beginLoop = _vm->_system->getMillis();
blankIt();
@@ -139,14 +141,15 @@ void ShootEmUp::run() {
uint32 delay = _vm->_system->getMillis() - beginLoop;
if (delay <= 55)
_vm->_system->delayMillis(55 - delay); // Replaces slowdown(); 55 comes from 18.2 Hz (B Flight).
-
- } while (_time != 0);
-
+ };
+
_vm->fadeOut();
_vm->_graphics->restoreScreen();
_vm->_graphics->removeBackup();
_vm->fadeIn();
CursorMan.showMouse(true);
+
+ return _score;
}
bool ShootEmUp::overlap(uint16 a1x, uint16 a1y, uint16 a2x, uint16 a2y, uint16 b1x, uint16 b1y, uint16 b2x, uint16 b2y) {
@@ -420,7 +423,49 @@ void ShootEmUp::moveAvvy() {
}
void ShootEmUp::readKbd() {
- warning("STUB: ShootEmUp::readKbd()");
+ Common::Event event;
+ _vm->getEvent(event);
+
+ if ((event.type == Common::EVENT_KEYUP) && ((event.kbd.keycode == Common::KEYCODE_LALT) || (event.kbd.keycode == Common::KEYCODE_RALT))) {
+ // Don't let the player fire continuously by holding down one of the ALT keys.
+ _altWasPressedBefore = false;
+ return;
+ }
+
+ if (_firing) // So you can't stack up shots while the shooting animation plays.
+ return;
+
+ if (event.type == Common::EVENT_KEYDOWN) {
+ switch (event.kbd.keycode) {
+ case Common::KEYCODE_LALT: // Alt was pressed - shoot!
+ case Common::KEYCODE_RALT: // Falltrough is intended.
+ if (_altWasPressedBefore || (_count321 != 0))
+ return;
+
+ _altWasPressedBefore = true;
+ _firing = true;
+ define(_avvyPos + 27, kAvvyY + 5, _throwNext, 0, -2, 53, true, true);
+ _throwNext++;
+ if (_throwNext == 79)
+ _throwNext = 73;
+ _avvyAnim = 0;
+ _wasFacing = _avvyFacing;
+ _avvyFacing = kAvvyShoots;
+ return;
+ case Common::KEYCODE_RSHIFT: // Right shift: move right.
+ _avvyPos += 5;
+ if (_avvyPos > kRightMargin)
+ _avvyPos = kRightMargin;
+ return;
+ case Common::KEYCODE_LSHIFT: // Left shift: move left.
+ _avvyPos -= 5;
+ if (_avvyPos < kLeftMargin)
+ _avvyPos = kLeftMargin;
+ return;
+ default:
+ break;
+ }
+ }
}
void ShootEmUp::animate() {
diff --git a/engines/avalanche/shootemup.h b/engines/avalanche/shootemup.h
index ada39066fd..3cdcc1d5cd 100644
--- a/engines/avalanche/shootemup.h
+++ b/engines/avalanche/shootemup.h
@@ -35,7 +35,7 @@ class ShootEmUp {
public:
ShootEmUp(AvalancheEngine *vm);
- void run();
+ uint16 run();
private:
struct Sprite {
@@ -68,6 +68,8 @@ private:
static const byte kShooting[7];
static const byte kTimesASecond;
static const byte kFlashTime;
+ static const byte kLeftMargin;
+ static const int16 kRightMargin;
AvalancheEngine *_vm;
diff --git a/engines/avalanche/sound.cpp b/engines/avalanche/sound.cpp
index 229d046cc1..0223bead48 100644
--- a/engines/avalanche/sound.cpp
+++ b/engines/avalanche/sound.cpp
@@ -51,6 +51,7 @@ void SoundHandler::stopSound() {
*/
void SoundHandler::toggleSound() {
_soundFl = !_soundFl;
+ _vm->_graphics->drawSoundLight(_soundFl);
}
void SoundHandler::syncVolume() {
diff --git a/engines/avalanche/timer.cpp b/engines/avalanche/timer.cpp
index 69e0d84b3c..a9753b3cce 100644
--- a/engines/avalanche/timer.cpp
+++ b/engines/avalanche/timer.cpp
@@ -64,7 +64,7 @@ void Timer::addTimer(int32 duration, byte action, byte reason) {
* @remarks Originally called 'one_tick'
*/
void Timer::updateTimer() {
- if (_vm->_menu->isActive())
+ if (_vm->_dropdown->isActive())
return;
for (int i = 0; i < 7; i++) {
@@ -331,11 +331,13 @@ void Timer::hangAround2() {
_vm->_tiedUp = false;
- _vm->_shootemup->run();
+ // We don't need the ShootEmUp during the whole game, it's only playable once.
+ ShootEmUp *shootemup = new ShootEmUp(_vm);
+ _shootEmUpScore = shootemup->run();
+ delete shootemup;
}
void Timer::afterTheShootemup() {
- // Only placed this here to replace the minigame. TODO: Remove it when the shoot em' up is implemented!
_vm->flipRoom(_vm->_room, 1);
_vm->_animation->_sprites[0]->init(0, true); // Avalot.
@@ -344,27 +346,15 @@ void Timer::afterTheShootemup() {
_vm->_objects[kObjectCrossbow - 1] = true;
_vm->refreshObjectList();
- // Same as the added line above: TODO: Remove it later!!!
- _vm->_dialogs->displayText(Common::String("P.S.: There should have been the mini-game called \"shoot em' up\", " \
- "but I haven't implemented it yet: you get the crossbow automatically.") + kControlNewLine + kControlNewLine + "Peter (uruk)");
-
-#if 0
- byte shootscore, gain;
-
- shootscore = mem[storage_seg * storage_ofs];
- gain = (shootscore + 5) / 10; // Rounding up.
-
- display(string("\6Your score was ") + strf(shootscore) + '.' + "\r\rYou gain (" +
- strf(shootscore) + " 0xF6 10) = " + strf(gain) + " points.");
+ byte gain = (_shootEmUpScore + 5) / 10; // Rounding up.
+ _vm->_dialogs->displayText(Common::String::format("%cYour score was %d.%c%cYou gain (%d \xf6 10) = %d points.", kControlItalic, _shootEmUpScore, kControlNewLine, kControlNewLine, _shootEmUpScore, gain));
if (gain > 20) {
- display("But we won't let you have more than 20 points!");
- points(20);
+ _vm->_dialogs->displayText("But we won't let you have more than 20 points!");
+ _vm->incScore(20);
} else
- points(gain);
-#endif
+ _vm->incScore(gain);
- warning("STUB: Timer::after_the_shootemup()");
_vm->_dialogs->displayScrollChain('Q', 70);
}
@@ -709,6 +699,8 @@ void Timer::resetVariables() {
_times[i]._action = 0;
_times[i]._reason = 0;
}
+
+ _shootEmUpScore = 0;
}
} // End of namespace Avalanche.
diff --git a/engines/avalanche/timer.h b/engines/avalanche/timer.h
index fd51544fd1..ad6ac0eae6 100644
--- a/engines/avalanche/timer.h
+++ b/engines/avalanche/timer.h
@@ -170,7 +170,7 @@ public:
private:
AvalancheEngine *_vm;
-
+ byte _shootEmUpScore;
};
} // End of namespace Avalanche.
diff --git a/engines/bbvs/bbvs.cpp b/engines/bbvs/bbvs.cpp
index 8bcc4d3809..d2e13e525c 100644
--- a/engines/bbvs/bbvs.cpp
+++ b/engines/bbvs/bbvs.cpp
@@ -79,7 +79,41 @@ BbvsEngine::BbvsEngine(OSystem *syst, const ADGameDescription *gd) :
Engine(syst), _gameDescription(gd) {
_random = new Common::RandomSource("bbvs");
-
+ _currActionCommandIndex = -1;
+ _buttheadObject = nullptr;
+ _beavisObject = nullptr;
+ _currCameraNum = 0;
+ _walkAreasCount = 0;
+ _walkInfosCount = 0;
+ _walkableRectsCount = 0;
+ _sourceWalkArea = nullptr;
+ _destWalkArea = nullptr;
+ _currWalkDistance = kMaxDistance;
+ _walkReachedDestArea = false;
+ _hasSnapshot = false;
+ _snapshot = nullptr;
+ _snapshotStream = nullptr;
+ _isSaveAllowed = false;
+
+ for (int i = 0; i < 80; i++) {
+ _walkAreas[i].x = 0;
+ _walkAreas[i].y = 0;
+ _walkAreas[i].width = 0;
+ _walkAreas[i].height = 0;
+ _walkAreas[i].checked = false;
+ _walkAreas[i].linksCount = 0;
+ for (int j = 0; j < 16; j++)
+ _walkAreas[i].links[j] = nullptr;
+ for (int j = 0; j < 32; j++) {
+ _walkAreas[i].linksD1[j] = nullptr;
+ _walkAreas[i].linksD2[j] = nullptr;
+ }
+ }
+
+ for (int i = 0; i < 256; i++) {
+ _walkInfoPtrs[i] = nullptr;
+ }
+
Engine::syncSoundSettings();
}
diff --git a/engines/bbvs/bbvs.h b/engines/bbvs/bbvs.h
index 8136184e0b..6a9a13905c 100644
--- a/engines/bbvs/bbvs.h
+++ b/engines/bbvs/bbvs.h
@@ -199,6 +199,7 @@ struct WalkArea {
bool contains(const Common::Point &pt) const;
};
+const int kSnapshotSize = 23072;
const int kSceneObjectsCount = 64;
const int kSceneSoundsCount = 8;
const int kInventoryItemStatusCount = 50;
@@ -209,6 +210,7 @@ const int kSceneVisitedCount = 64;
const int kMainMenu = 44;
const int kCredits = 45;
+const int kMaxDistance = 0xFFFFFF;
static const int8 kWalkTurnTbl[] = {
7, 9, 4, 8, 6, 10, 5, 11
};
@@ -303,7 +305,6 @@ public:
bool _walkReachedDestArea;
bool _hasSnapshot;
- uint32 _snapshotSize;
byte *_snapshot;
Common::SeekableMemoryWriteStream *_snapshotStream;
diff --git a/engines/bbvs/saveload.cpp b/engines/bbvs/saveload.cpp
index 3bb980053c..ff53cc457b 100644
--- a/engines/bbvs/saveload.cpp
+++ b/engines/bbvs/saveload.cpp
@@ -212,9 +212,8 @@ bool BbvsEngine::existsSavegame(int num) {
}
void BbvsEngine::allocSnapshot() {
- _snapshotSize = 23072;
- _snapshot = new byte[_snapshotSize];
- _snapshotStream = new Common::SeekableMemoryWriteStream(_snapshot, _snapshotSize);
+ _snapshot = new byte[kSnapshotSize];
+ _snapshotStream = new Common::SeekableMemoryWriteStream(_snapshot, kSnapshotSize);
}
void BbvsEngine::freeSnapshot() {
diff --git a/engines/bbvs/walk.cpp b/engines/bbvs/walk.cpp
index cabe402a46..cf8942e525 100644
--- a/engines/bbvs/walk.cpp
+++ b/engines/bbvs/walk.cpp
@@ -44,8 +44,6 @@ static const int8 kWalkAnimTbl[32] = {
};
void BbvsEngine::startWalkObject(SceneObject *sceneObject) {
- const int kMaxDistance = 0xFFFFFF;
-
if (_buttheadObject != sceneObject && _beavisObject != sceneObject)
return;
diff --git a/engines/cge/bitmap.cpp b/engines/cge/bitmap.cpp
index 04a5f5de0f..536db5e73b 100644
--- a/engines/cge/bitmap.cpp
+++ b/engines/cge/bitmap.cpp
@@ -293,6 +293,7 @@ bool Bitmap::solidAt(int16 x, int16 y) {
switch (t) {
case kBmpEOI:
r--;
+ // No break on purpose
case kBmpSKP:
w = 0;
break;
diff --git a/engines/cge/cge.cpp b/engines/cge/cge.cpp
index e8ab3c262b..7058314b9d 100644
--- a/engines/cge/cge.cpp
+++ b/engines/cge/cge.cpp
@@ -50,12 +50,68 @@ CGEEngine::CGEEngine(OSystem *syst, const ADGameDescription *gameDescription)
DebugMan.addDebugChannel(kCGEDebugFile, "file", "CGE IO debug channel");
DebugMan.addDebugChannel(kCGEDebugEngine, "engine", "CGE Engine debug channel");
- _startupMode = 1;
- _oldLev = 0;
- _pocPtr = 0;
- _bitmapPalette = NULL;
+ _bitmapPalette = nullptr;
+ _pocLight = nullptr;
+ _keyboard = nullptr;
+ _mouse = nullptr;
+ _sprite = nullptr;
+ _miniScene = nullptr;
+ _shadow = nullptr;
+ _horzLine = nullptr;
+ _infoLine = nullptr;
+ _debugLine = nullptr;
+ _sceneLight = nullptr;
+ _commandHandler = nullptr;
+ _commandHandlerTurbo = nullptr;
+ _eventManager = nullptr;
+ _fx = nullptr;
+ _sound = nullptr;
+ _resman = nullptr;
+ for (int i = 0; i < 8; i++)
+ _pocket[i] = nullptr;
+ _hero = nullptr;
+ _text = nullptr;
+ _talk = nullptr;
+ _midiPlayer = nullptr;
+ _miniShp = nullptr;
+ _miniShpList = nullptr;
+ _console = nullptr;
+ _sprTv = nullptr;
+ _sprK1 = nullptr;
+ _sprK2 = nullptr;
+ _sprK3 = nullptr;
+ _font = nullptr;
+ _vga = nullptr;
+ _sys = nullptr;
+
_quitFlag = false;
_showBoundariesFl = false;
+ _music = true;
+ _dark = false;
+ _game = false;
+ _endGame = false;
+ for (int i = 0; i < 4; i++)
+ _flag[i] = false;
+
+ _startupMode = 1;
+ _oldLev = 0;
+ _pocPtr = 0;
+ _startGameSlot = -1;
+ _recentStep = -2;
+ _lastFrame = 0;
+ _lastTick = 0;
+ _maxScene = 0;
+ _now = 1;
+ _lev = -1;
+ _mode = 0;
+ _gameCase2Cpt = 0;
+ _offUseCount = 0;
+ _volume[0] = 0;
+ _volume[1] = 0;
+ for (int i = 0; i < kPocketNX; i++)
+ _pocref[i] = -1;
+
+ initSceneValues();
}
void CGEEngine::initSceneValues() {
@@ -71,17 +127,16 @@ void CGEEngine::initSceneValues() {
}
void CGEEngine::init() {
- debugC(1, kCGEDebugEngine, "CGEEngine::setup()");
+ debugC(1, kCGEDebugEngine, "CGEEngine::init()");
// Initialize fields
- _lastFrame = 0;
- _lastTick = 0;
- _hero = NULL;
- _shadow = NULL;
- _miniScene = NULL;
- _miniShp = NULL;
- _miniShpList = NULL;
- _sprite = NULL;
+ _hero = nullptr;
+ _shadow = nullptr;
+ _miniScene = nullptr;
+ _miniShp = nullptr;
+ _miniShpList = nullptr;
+ _sprite = nullptr;
+
_resman = new ResourceManager();
// Create debugger console
@@ -90,12 +145,12 @@ void CGEEngine::init() {
// Initialize engine objects
_font = new Font(this, "CGE");
_text = new Text(this, "CGE");
- _talk = NULL;
+ _talk = nullptr;
_vga = new Vga(this);
_sys = new System(this);
_pocLight = new PocLight(this);
for (int i = 0; i < kPocketNX; i++)
- _pocket[i] = NULL;
+ _pocket[i] = nullptr;
_horzLine = new HorizLine(this);
_infoLine = new InfoLine(this, kInfoW);
_sceneLight = new SceneLight(this);
@@ -110,30 +165,6 @@ void CGEEngine::init() {
_sound = new Sound(this);
_offUseCount = atoi(_text->getText(kOffUseCount));
- _music = true;
-
- for (int i = 0; i < kPocketNX; i++)
- _pocref[i] = -1;
- _volume[0] = 0;
- _volume[1] = 0;
-
- initSceneValues();
-
- _maxScene = 0;
- _dark = false;
- _game = false;
- _endGame = false;
- _now = 1;
- _lev = -1;
- _recentStep = -2;
-
- for (int i = 0; i < 4; i++)
- _flag[i] = false;
-
- _mode = 0;
- _soundOk = 1;
- _sprTv = NULL;
- _gameCase2Cpt = 0;
_startGameSlot = ConfMan.hasKey("save_slot") ? ConfMan.getInt("save_slot") : -1;
}
@@ -188,7 +219,7 @@ Common::Error CGEEngine::run() {
}
// Initialize graphics using following:
- initGraphics(320, 200, false);
+ initGraphics(kScrWidth, kScrHeight, false);
// Setup necessary game objects
init();
diff --git a/engines/cge/cge.h b/engines/cge/cge.h
index 8c5ae29e18..a65069ff46 100644
--- a/engines/cge/cge.h
+++ b/engines/cge/cge.h
@@ -107,7 +107,6 @@ struct SavegameHeader {
Graphics::Surface *thumbnail;
int saveYear, saveMonth, saveDay;
int saveHour, saveMinutes;
- int totalFrames;
};
extern const char *savegameStr;
@@ -168,7 +167,6 @@ public:
int _now;
int _lev;
int _mode;
- int _soundOk;
int _gameCase2Cpt;
int _offUseCount;
Dac *_bitmapPalette;
diff --git a/engines/cge/cge_main.cpp b/engines/cge/cge_main.cpp
index 6440058a0c..e738b6ebb3 100644
--- a/engines/cge/cge_main.cpp
+++ b/engines/cge/cge_main.cpp
@@ -195,7 +195,6 @@ bool CGEEngine::loadGame(int slotNumber, SavegameHeader *header, bool tiny) {
debugC(1, kCGEDebugEngine, "CGEEngine::loadgame(%d, header, %s)", slotNumber, tiny ? "true" : "false");
Common::MemoryReadStream *readStream;
- SavegameHeader saveHeader;
if (slotNumber == -1) {
// Loading the data for the initial game state
@@ -231,6 +230,8 @@ bool CGEEngine::loadGame(int slotNumber, SavegameHeader *header, bool tiny) {
return false;
} else {
// Found header
+ SavegameHeader saveHeader;
+
if (!readSavegameHeader(readStream, saveHeader)) {
delete readStream;
return false;
@@ -397,7 +398,7 @@ void CGEEngine::syncGame(Common::SeekableReadStream *readStream, Common::WriteSt
}
} else {
// Loading game
- if (_soundOk == 1 && _mode == 0) {
+ if (_mode == 0) {
// Skip Digital and Midi volumes, useless under ScummVM
sndSetVolume();
}
@@ -424,7 +425,7 @@ void CGEEngine::syncGame(Common::SeekableReadStream *readStream, Common::WriteSt
}
bool CGEEngine::readSavegameHeader(Common::InSaveFile *in, SavegameHeader &header) {
- header.thumbnail = NULL;
+ header.thumbnail = nullptr;
// Get the savegame version
header.version = in->readByte();
@@ -656,14 +657,15 @@ void CGEEngine::sceneUp() {
_vga->copyPage(0, 1);
selectPocket(-1);
- if (_hero)
+ if (_hero) {
_vga->_showQ->insert(_vga->_showQ->remove(_hero));
- if (_shadow) {
- _vga->_showQ->remove(_shadow);
- _shadow->makeXlat(_vga->glass(_vga->_sysPal, 204, 204, 204));
- _vga->_showQ->insert(_shadow, _hero);
- _shadow->_z = _hero->_z;
+ if (_shadow) {
+ _vga->_showQ->remove(_shadow);
+ _shadow->makeXlat(_vga->glass(_vga->_sysPal, 204, 204, 204));
+ _vga->_showQ->insert(_shadow, _hero);
+ _shadow->_z = _hero->_z;
+ }
}
feedSnail(_vga->_showQ->locate(BakRef + 999), kTake);
_vga->show();
@@ -1482,25 +1484,6 @@ bool CGEEngine::showTitle(const char *name) {
selectPocket(-1);
_vga->sunrise(_vga->_sysPal);
- if (_mode < 2 && !_soundOk) {
- _vga->copyPage(1, 2);
- _vga->copyPage(0, 1);
- _vga->_showQ->append(_mouse);
- _mouse->on();
- for (; !_commandHandler->idle() || Vmenu::_addr;) {
- mainLoop();
- if (_quitFlag)
- return false;
- }
-
- _mouse->off();
- _vga->_showQ->clear();
- _vga->copyPage(0, 2);
- _soundOk = 2;
- if (_music)
- _midiPlayer->loadMidi(0);
- }
-
if (_mode < 2) {
// At this point the game originally set the protection variables
// used by the copy protection check
@@ -1539,7 +1522,7 @@ void CGEEngine::cge_main() {
if (_horzLine)
_horzLine->_flags._hide = true;
- if (_music && _soundOk)
+ if (_music)
_midiPlayer->loadMidi(0);
if (_startGameSlot != -1) {
diff --git a/engines/cge/fileio.cpp b/engines/cge/fileio.cpp
index 4fcf9f8ad8..2b1f74db02 100644
--- a/engines/cge/fileio.cpp
+++ b/engines/cge/fileio.cpp
@@ -93,13 +93,11 @@ ResourceManager::~ResourceManager() {
delete _buff[i]._page;
}
-uint16 ResourceManager::XCrypt(byte *buf, uint16 length) {
+void ResourceManager::XCrypt(byte *buf, uint16 length) {
byte *b = buf;
for (uint16 i = 0; i < length; i++)
*b++ ^= kCryptSeed;
-
- return kCryptSeed;
}
bool ResourceManager::seek(int32 offs, int whence) {
@@ -118,7 +116,7 @@ uint16 ResourceManager::read(byte *buf, uint16 length) {
}
BtPage *ResourceManager::getPage(int level, uint16 pageId) {
- debugC(1, kCGEDebugFile, "IoHand::getPage(%d, %d)", level, pageId);
+ debugC(1, kCGEDebugFile, "ResourceManager::getPage(%d, %d)", level, pageId);
if (_buff[level]._pageNo != pageId) {
int32 pos = pageId * kBtSize;
@@ -142,7 +140,7 @@ BtPage *ResourceManager::getPage(int level, uint16 pageId) {
}
BtKeypack *ResourceManager::find(const char *key) {
- debugC(1, kCGEDebugFile, "IoHand::find(%s)", key);
+ debugC(1, kCGEDebugFile, "ResourceManager::find(%s)", key);
int lev = 0;
uint16 nxt = kBtValRoot;
diff --git a/engines/cge/fileio.h b/engines/cge/fileio.h
index 803d6b2d58..059d2c9a44 100644
--- a/engines/cge/fileio.h
+++ b/engines/cge/fileio.h
@@ -86,13 +86,13 @@ class ResourceManager {
uint16 catRead(byte *buf, uint16 length);
Common::File *_catFile;
Common::File *_datFile;
- uint16 XCrypt(byte *buf, uint16 length);
+ void XCrypt(byte *buf, uint16 length);
public:
ResourceManager();
~ResourceManager();
uint16 read(byte *buf, uint16 length);
- bool seek(int32 offs, int whence = 0);
+ bool seek(int32 offs, int whence = SEEK_SET);
BtKeypack *find(const char *key);
bool exist(const char *name);
diff --git a/engines/cge/snail.cpp b/engines/cge/snail.cpp
index 942a9c414a..1a6ca0789e 100644
--- a/engines/cge/snail.cpp
+++ b/engines/cge/snail.cpp
@@ -658,6 +658,9 @@ void CGEEngine::selectPocket(int n) {
void CGEEngine::pocFul() {
debugC(1, kCGEDebugEngine, "CGEEngine::pocFul()");
+ if (!_hero)
+ error("pocFul - Unexpected null _hero");
+
_hero->park();
_commandHandler->addCommand(kCmdWait, -1, -1, _hero);
_commandHandler->addCommand(kCmdSeq, -1, kSeqPocketFull, _hero);
diff --git a/engines/cge/sound.cpp b/engines/cge/sound.cpp
index cc5e97b475..370b768bca 100644
--- a/engines/cge/sound.cpp
+++ b/engines/cge/sound.cpp
@@ -228,6 +228,7 @@ MusicPlayer::MusicPlayer(CGEEngine *vm) : _vm(vm) {
_driver->setTimerCallback(this, &timerCallback);
}
+ _dataSize = -1;
}
MusicPlayer::~MusicPlayer() {
diff --git a/engines/cge/vga13h.cpp b/engines/cge/vga13h.cpp
index d5e1be5122..d7dccd2c65 100644
--- a/engines/cge/vga13h.cpp
+++ b/engines/cge/vga13h.cpp
@@ -819,14 +819,14 @@ void Vga::update() {
_setPal = false;
}
if (_vm->_showBoundariesFl) {
- Vga::_page[0]->hLine(0, 200 - kPanHeight, 320, 0xee);
+ Vga::_page[0]->hLine(0, kScrHeight - kPanHeight, kScrWidth, 0xee);
if (_vm->_barriers[_vm->_now]._horz != 255) {
for (int i = 0; i < 8; i++)
- Vga::_page[0]->vLine((_vm->_barriers[_vm->_now]._horz * 8) + i, 0, 200, 0xff);
+ Vga::_page[0]->vLine((_vm->_barriers[_vm->_now]._horz * 8) + i, 0, kScrHeight, 0xff);
}
if (_vm->_barriers[_vm->_now]._vert != 255) {
for (int i = 0; i < 4; i++)
- Vga::_page[0]->hLine(0, 80 + (_vm->_barriers[_vm->_now]._vert * 4) + i, 320, 0xff);
+ Vga::_page[0]->hLine(0, 80 + (_vm->_barriers[_vm->_now]._vert * 4) + i, kScrWidth, 0xff);
}
}
diff --git a/engines/cine/anim.cpp b/engines/cine/anim.cpp
index f47b33bf16..c6099447d8 100644
--- a/engines/cine/anim.cpp
+++ b/engines/cine/anim.cpp
@@ -287,7 +287,7 @@ void AnimData::load(byte *d, int type, uint16 w, uint16 h, int16 file,
_fileIdx = file;
_frameIdx = frame;
memset(_name, 0, sizeof(_name));
- strcpy(_name, n);
+ Common::strlcpy(_name, n, sizeof(_name));
_realWidth = w;
switch (type) {
diff --git a/engines/cine/bg.cpp b/engines/cine/bg.cpp
index 3b80a9c037..ce808e0f6a 100644
--- a/engines/cine/bg.cpp
+++ b/engines/cine/bg.cpp
@@ -48,7 +48,7 @@ byte loadCtFW(const char *ctName) {
}
if (currentCtName != ctName)
- strcpy(currentCtName, ctName);
+ Common::strlcpy(currentCtName, ctName, sizeof(currentCtName));
ptr = dataPtr = readBundleFile(foundFileIdx);
@@ -75,7 +75,7 @@ byte loadCtOS(const char *ctName) {
}
if (currentCtName != ctName)
- strcpy(currentCtName, ctName);
+ Common::strlcpy(currentCtName, ctName, sizeof(currentCtName));
ptr = dataPtr = readBundleFile(foundFileIdx);
diff --git a/engines/cine/cine.cpp b/engines/cine/cine.cpp
index 797bc38938..a4af8f2201 100644
--- a/engines/cine/cine.cpp
+++ b/engines/cine/cine.cpp
@@ -55,6 +55,14 @@ CineEngine::CineEngine(OSystem *syst, const CINEGameDescription *gameDesc)
_console = new CineConsole(this);
g_cine = this;
+
+ for (int i = 0; i < NUM_FONT_CHARS; i++) {
+ _textHandler.fontParamTable[i].characterIdx = 0;
+ _textHandler.fontParamTable[i].characterWidth = 0;
+ }
+ _restartRequested = false;
+ _preLoad = false;
+ _timerDelayMultiplier = 12;
}
CineEngine::~CineEngine() {
diff --git a/engines/cine/gfx.cpp b/engines/cine/gfx.cpp
index ab83594054..f6419ecafc 100644
--- a/engines/cine/gfx.cpp
+++ b/engines/cine/gfx.cpp
@@ -730,7 +730,7 @@ void FWRenderer::loadBg16(const byte *bg, const char *name, unsigned int idx) {
assert(_background);
- strcpy(_bgName, name);
+ Common::strlcpy(_bgName, name, sizeof(_bgName));
// Load the 16 color palette
_backupPal.load(bg, kLowPalNumBytes, kLowPalFormat, kLowPalNumColors, CINE_BIG_ENDIAN);
@@ -1403,7 +1403,7 @@ void OSRenderer::loadBg16(const byte *bg, const char *name, unsigned int idx) {
assert(_bgTable[idx].bg);
- strcpy(_bgTable[idx].name, name);
+ Common::strlcpy(_bgTable[idx].name, name, sizeof(_bgTable[idx].name));
// Load the 16 color palette
_bgTable[idx].pal.load(bg, kLowPalNumBytes, kLowPalFormat, kLowPalNumColors, CINE_BIG_ENDIAN);
@@ -1441,7 +1441,7 @@ void OSRenderer::loadBg256(const byte *bg, const char *name, unsigned int idx) {
assert(_bgTable[idx].bg);
- strcpy(_bgTable[idx].name, name);
+ Common::strlcpy(_bgTable[idx].name, name, sizeof(_bgTable[idx].name));
_bgTable[idx].pal.load(bg, kHighPalNumBytes, kHighPalFormat, kHighPalNumColors, CINE_LITTLE_ENDIAN);
memcpy(_bgTable[idx].bg, bg + kHighPalNumBytes, _screenSize);
}
diff --git a/engines/cine/pal.cpp b/engines/cine/pal.cpp
index a1d9b49133..f3985c691e 100644
--- a/engines/cine/pal.cpp
+++ b/engines/cine/pal.cpp
@@ -62,9 +62,9 @@ int16 findPaletteFromName(const char *fileName) {
uint16 position = 0;
uint16 i;
- strcpy(buffer, fileName);
+ Common::strlcpy(buffer, fileName, sizeof(buffer));
- while (position < strlen(fileName)) {
+ while (position < strlen(buffer)) {
if (buffer[position] > 'a' && buffer[position] < 'z') {
buffer[position] += 'A' - 'a';
}
diff --git a/engines/cine/part.cpp b/engines/cine/part.cpp
index c55972bf56..30d9461a6a 100644
--- a/engines/cine/part.cpp
+++ b/engines/cine/part.cpp
@@ -47,7 +47,7 @@ void loadPart(const char *partName) {
g_cine->_partFileHandle.readUint16BE(); // entry size
if (currentPartName != partName)
- strcpy(currentPartName, partName);
+ Common::strlcpy(currentPartName, partName, sizeof(currentPartName));
for (uint16 i = 0; i < g_cine->_partBuffer.size(); i++) {
g_cine->_partFileHandle.read(g_cine->_partBuffer[i].partName, 14);
diff --git a/engines/cine/script_fw.cpp b/engines/cine/script_fw.cpp
index c02868d5b0..c0b0c1f5da 100644
--- a/engines/cine/script_fw.cpp
+++ b/engines/cine/script_fw.cpp
@@ -1419,19 +1419,19 @@ int FWScript::o1_loadNewPrcName() {
switch (param1) {
case 0:
debugC(5, kCineDebugScript, "Line: %d: loadPrc(\"%s\")", _line, param2);
- strcpy(newPrcName, param2);
+ Common::strlcpy(newPrcName, param2, sizeof(newPrcName));
break;
case 1:
debugC(5, kCineDebugScript, "Line: %d: loadRel(\"%s\")", _line, param2);
- strcpy(newRelName, param2);
+ Common::strlcpy(newRelName, param2, sizeof(newRelName));
break;
case 2:
debugC(5, kCineDebugScript, "Line: %d: loadObject(\"%s\")", _line, param2);
- strcpy(newObjectName, param2);
+ Common::strlcpy(newObjectName, param2, sizeof(newObjectName));
break;
case 3:
debugC(5, kCineDebugScript, "Line: %d: loadMsg(\"%s\")", _line, param2);
- strcpy(newMsgName, param2);
+ Common::strlcpy(newMsgName, param2, sizeof(newMsgName));
break;
}
return 0;
diff --git a/engines/cine/sound.cpp b/engines/cine/sound.cpp
index e2d9d22e6f..069a4787ac 100644
--- a/engines/cine/sound.cpp
+++ b/engines/cine/sound.cpp
@@ -813,7 +813,7 @@ bool PCSoundFxPlayer::load(const char *song) {
if (dot) {
*dot = '\0';
}
- strcat(instrument, _driver->getInstrumentExtension());
+ Common::strlcat(instrument, _driver->getInstrumentExtension(), sizeof(instrument));
uint32 instrumentSize;
_instrumentsData[i] = readBundleSoundFile(instrument, &instrumentSize);
if (!_instrumentsData[i]) {
diff --git a/engines/cine/various.cpp b/engines/cine/various.cpp
index aa1c22c165..8687699a44 100644
--- a/engines/cine/various.cpp
+++ b/engines/cine/various.cpp
@@ -557,12 +557,20 @@ int16 selectSubObject(int16 x, int16 y, int16 param) {
}
}
+ if (selectedObject >= 20)
+ error("Invalid value for selectedObject: %d", selectedObject);
return objListTab[selectedObject];
}
-// TODO: Make separate functions for Future Wars's and Operation Stealth's version of this function, this is getting too messy
-// TODO: Add support for using the different prepositions for different verbs (Doesn't work currently)
void makeCommandLine() {
+ if (g_cine->getGameType() == Cine::GType_FW)
+ makeFWCommandLine();
+ else
+ makeOSCommandLine();
+}
+
+// TODO: Add support for using the different prepositions for different verbs (Doesn't work currently)
+void makeOSCommandLine() {
uint16 x, y;
commandVar1 = 0;
@@ -578,28 +586,16 @@ void makeCommandLine() {
int16 si;
getMouseData(mouseUpdateStatus, &dummyU16, &x, &y);
-
- if (g_cine->getGameType() == Cine::GType_FW) {
- si = selectSubObject(x, y + 8, -2);
- } else {
- si = selectSubObject(x, y + 8, -subObjectUseTable[playerCommand]);
- }
+ si = selectSubObject(x, y + 8, -subObjectUseTable[playerCommand]);
if (si < 0) {
- if (g_cine->getGameType() == Cine::GType_OS) {
- canUseOnObject = 0;
- } else { // Future Wars
- playerCommand = -1;
- g_cine->_commandBuffer = "";
- }
+ canUseOnObject = 0;
} else {
- if (g_cine->getGameType() == Cine::GType_OS) {
- if (si >= 8000) {
- si -= 8000;
- canUseOnObject = canUseOnItemTable[playerCommand];
- } else {
- canUseOnObject = 0;
- }
+ if (si >= 8000) {
+ si -= 8000;
+ canUseOnObject = canUseOnItemTable[playerCommand];
+ } else {
+ canUseOnObject = 0;
}
commandVar3[0] = si;
@@ -607,27 +603,21 @@ void makeCommandLine() {
g_cine->_commandBuffer += " ";
g_cine->_commandBuffer += g_cine->_objectTable[commandVar3[0]].name;
g_cine->_commandBuffer += " ";
- if (g_cine->getGameType() == Cine::GType_OS) {
- g_cine->_commandBuffer += commandPrepositionTable[playerCommand];
- } else { // Future Wars
- g_cine->_commandBuffer += defaultCommandPreposition;
- }
+ g_cine->_commandBuffer += commandPrepositionTable[playerCommand];
}
}
- if (g_cine->getGameType() == Cine::GType_OS || !(playerCommand != -1 && choiceResultTable[playerCommand] == 2)) {
- if (playerCommand == 2) {
- getMouseData(mouseUpdateStatus, &dummyU16, &x, &y);
- CursorMan.showMouse(false);
- processInventory(x, y + 8);
- playerCommand = -1;
- commandVar1 = 0;
- g_cine->_commandBuffer = "";
- CursorMan.showMouse(true);
- }
+ if (playerCommand == 2) {
+ getMouseData(mouseUpdateStatus, &dummyU16, &x, &y);
+ CursorMan.showMouse(false);
+ processInventory(x, y + 8);
+ playerCommand = -1;
+ commandVar1 = 0;
+ g_cine->_commandBuffer = "";
+ CursorMan.showMouse(true);
}
- if (g_cine->getGameType() == Cine::GType_OS && playerCommand != 2) {
+ if (playerCommand != 2) {
if (playerCommand != -1 && canUseOnObject != 0) { // call use on sub object
int16 si;
@@ -665,7 +655,55 @@ void makeCommandLine() {
}
}
- if (g_cine->getGameType() == Cine::GType_OS || !disableSystemMenu) {
+ isDrawCommandEnabled = 1;
+ renderer->setCommand(g_cine->_commandBuffer);
+}
+
+// TODO: Add support for using the different prepositions for different verbs (Doesn't work currently)
+void makeFWCommandLine() {
+ uint16 x, y;
+
+ commandVar1 = 0;
+ commandVar2 = -10;
+
+ if (playerCommand != -1) {
+ g_cine->_commandBuffer = defaultActionCommand[playerCommand];
+ } else {
+ g_cine->_commandBuffer = "";
+ }
+
+ if ((playerCommand != -1) && (choiceResultTable[playerCommand] == 2)) { // need object selection?
+ int16 si;
+
+ getMouseData(mouseUpdateStatus, &dummyU16, &x, &y);
+ si = selectSubObject(x, y + 8, -2);
+
+ if (si < 0) {
+ playerCommand = -1;
+ g_cine->_commandBuffer = "";
+ } else {
+ commandVar3[0] = si;
+ commandVar1 = 1;
+ g_cine->_commandBuffer += " ";
+ g_cine->_commandBuffer += g_cine->_objectTable[commandVar3[0]].name;
+ g_cine->_commandBuffer += " ";
+ g_cine->_commandBuffer += defaultCommandPreposition;
+ }
+ }
+
+ if (!(playerCommand != -1 && choiceResultTable[playerCommand] == 2)) {
+ if (playerCommand == 2) {
+ getMouseData(mouseUpdateStatus, &dummyU16, &x, &y);
+ CursorMan.showMouse(false);
+ processInventory(x, y + 8);
+ playerCommand = -1;
+ commandVar1 = 0;
+ g_cine->_commandBuffer = "";
+ CursorMan.showMouse(true);
+ }
+ }
+
+ if (!disableSystemMenu) {
isDrawCommandEnabled = 1;
renderer->setCommand(g_cine->_commandBuffer);
}
diff --git a/engines/cine/various.h b/engines/cine/various.h
index 04f2d47743..eb6312997d 100644
--- a/engines/cine/various.h
+++ b/engines/cine/various.h
@@ -37,6 +37,8 @@ void initLanguage(Common::Language lang);
int16 makeMenuChoice(const CommandeType commandList[], uint16 height, uint16 X, uint16 Y, uint16 width, bool recheckValue = false);
void makeCommandLine();
+void makeFWCommandLine();
+void makeOSCommandLine();
void makeActionMenu();
void waitPlayerInput();
void setTextWindow(uint16 param1, uint16 param2, uint16 param3, uint16 param4);
diff --git a/engines/cruise/font.cpp b/engines/cruise/font.cpp
index c63be30f77..80fb0e8a02 100644
--- a/engines/cruise/font.cpp
+++ b/engines/cruise/font.cpp
@@ -148,8 +148,6 @@ void initSystem() {
preloadData[i].nofree = 0;
}
- lowMemory = 0;
-
doFade = 0;
fadeFlag = 0;
scroll = 0;
diff --git a/engines/cruise/function.cpp b/engines/cruise/function.cpp
index e727ac73cb..7af6b73238 100644
--- a/engines/cruise/function.cpp
+++ b/engines/cruise/function.cpp
@@ -606,7 +606,7 @@ int16 Op_InitializeState() {
}
int16 Op_GetlowMemory() {
- return lowMemory;
+ return 0;
}
int16 Op_AniDir() {
diff --git a/engines/cruise/saveload.cpp b/engines/cruise/saveload.cpp
index a991c29583..a734db4b3b 100644
--- a/engines/cruise/saveload.cpp
+++ b/engines/cruise/saveload.cpp
@@ -182,11 +182,13 @@ static void syncFilesDatabase(Common::Serializer &s) {
s.syncAsUint16LE(fe.resType);
s.syncAsUint16LE(fe.height);
- // TODO: Have a look at the saving/loading of this pointer
+ // Remember whether this file database was open or not.
+ // Upon loading, loadSavegameData uses this information
+ // in order to re-open the file databases accordingly.
tmp = (fe.subData.ptr) ? 1 : 0;
s.syncAsUint32LE(tmp);
if (s.isLoading()) {
- fe.subData.ptr = (uint8 *)tmp;
+ fe.subData.ptr = tmp ? (uint8 *)1 : 0;
}
s.syncAsSint16LE(fe.subData.index);
@@ -195,11 +197,11 @@ static void syncFilesDatabase(Common::Serializer &s) {
s.syncAsSint16LE(fe.subData.transparency);
- // TODO: Have a look at the saving/loading of this pointer
+ // Treat fe.subData.ptrMask the same as fe.subData.ptr.
tmp = (fe.subData.ptrMask) ? 1 : 0;
s.syncAsUint32LE(tmp);
if (s.isLoading()) {
- fe.subData.ptrMask = (uint8 *)tmp;
+ fe.subData.ptrMask = tmp ? (uint8 *)1 : 0;
}
s.syncAsUint16LE(fe.subData.resourceType);
@@ -806,7 +808,6 @@ Common::Error saveSavegameData(int saveGameIdx, const Common::String &saveName)
}
Common::Error loadSavegameData(int saveGameIdx) {
- int lowMemorySave;
Common::String saveName;
cellStruct *currentcellHead;
@@ -878,20 +879,19 @@ Common::Error loadSavegameData(int saveGameIdx) {
lastAni[0] = 0;
- lowMemorySave = lowMemory;
-
for (int i = 0; i < NUM_FILE_ENTRIES; i++) {
if (filesDatabase[i].subData.ptr) {
int j;
int k;
- for (j = i + 1; j < NUM_FILE_ENTRIES && filesDatabase[j].subData.ptr && !strcmp(filesDatabase[i].subData.name, filesDatabase[j].subData.name) && (filesDatabase[j].subData.index == (j - i)); j++)
+ for (j = i + 1; j < NUM_FILE_ENTRIES &&
+ filesDatabase[j].subData.ptr &&
+ !strcmp(filesDatabase[i].subData.name, filesDatabase[j].subData.name) &&
+ (filesDatabase[j].subData.index == (j - i));
+ j++)
;
for (k = i; k < j; k++) {
- if (filesDatabase[k].subData.ptrMask)
- lowMemory = 0;
-
filesDatabase[k].subData.ptr = NULL;
filesDatabase[k].subData.ptrMask = NULL;
}
@@ -908,7 +908,6 @@ Common::Error loadSavegameData(int saveGameIdx) {
}
i = j - 1;
- lowMemory = lowMemorySave;
}
}
diff --git a/engines/cruise/vars.cpp b/engines/cruise/vars.cpp
index f7c74c8e6d..9a59c8a714 100644
--- a/engines/cruise/vars.cpp
+++ b/engines/cruise/vars.cpp
@@ -31,7 +31,6 @@ uint8 selectColor = 3;
uint8 titleColor = 2;
uint8 subColor = 5;
-int16 lowMemory;
int16 scroll;
int16 switchPal;
char cmdLine[90];
diff --git a/engines/cruise/vars.h b/engines/cruise/vars.h
index 8bfcdc57d4..fe3f7d6303 100644
--- a/engines/cruise/vars.h
+++ b/engines/cruise/vars.h
@@ -59,7 +59,6 @@ extern uint8 selectColor;
extern uint8 titleColor;
extern uint8 subColor;
-extern int16 lowMemory;
extern int16 scroll;
extern int16 switchPal;
extern char cmdLine[90];
diff --git a/engines/dialogs.cpp b/engines/dialogs.cpp
index 65840ae174..8498e50b8d 100644
--- a/engines/dialogs.cpp
+++ b/engines/dialogs.cpp
@@ -217,6 +217,11 @@ void MainMenuDialog::reflowLayout() {
void MainMenuDialog::save() {
int slot = _saveDialog->runModalWithCurrentTarget();
+ #if defined(__PLAYSTATION2__) && defined(DYNAMIC_MODULES)
+ char pokeme[32];
+ snprintf(pokeme,32,"hack");
+ #endif
+
if (slot >= 0) {
Common::String result(_saveDialog->getResultString());
if (result.empty()) {
diff --git a/engines/draci/game.cpp b/engines/draci/game.cpp
index e5ff1f079a..4893b0fe34 100644
--- a/engines/draci/game.cpp
+++ b/engines/draci/game.cpp
@@ -72,6 +72,7 @@ Game::Game(DraciEngine *vm) : _vm(vm), _walkingState(vm) {
_fadePhases = 0;
_fadePhase = 0;
_fadeTick = 0;
+ _isFadeOut = 1;
_mouseChangeTick = 0;
_enableQuickHero = 0;
_wantQuickHero = 0;
@@ -216,6 +217,7 @@ void Game::start() {
// init scripts. This flag was turned on to skip the rest of
// those programs. Don't call loop(), because the
// location may have changed.
+ fadePalette(true);
continue;
}
@@ -478,6 +480,7 @@ void Game::handleDialogueLoop() {
}
void Game::fadePalette(bool fading_out) {
+ _isFadeOut = fading_out;
const byte *startPal = NULL;
const byte *endPal = _currentRoom._palette >= 0
? _vm->_paletteArchive->getFile(_currentRoom._palette)->_data
@@ -551,6 +554,19 @@ void Game::advanceAnimationsAndTestLoopExit() {
_vm->_anims->drawScene(_vm->_screen->getSurface());
_vm->_screen->copyToScreen();
_vm->_system->delayMillis(kTimeUnit);
+ if(_isFadeOut) {
+ fadePalette(false);
+ // Set cursor state
+ // Need to do this after we set the palette since the cursors use it
+ if (_currentRoom._mouseOn) {
+ debugC(6, kDraciLogicDebugLevel, "Mouse: ON");
+ _vm->_mouse->cursorOn();
+ _vm->_mouse->setCursorType(kNormalCursor);
+ } else {
+ debugC(6, kDraciLogicDebugLevel, "Mouse: OFF");
+ _vm->_mouse->cursorOff();
+ }
+ }
// If the hero has arrived at his destination, after even the last
// phase was correctly animated, run the callback.
@@ -598,6 +614,8 @@ void Game::loop(LoopSubstatus substatus, bool shouldExit) {
break;
}
+ advanceAnimationsAndTestLoopExit();
+
if (_vm->_mouse->isCursorOn()) {
// Find animation under cursor and the game object
// corresponding to it
@@ -629,8 +647,6 @@ void Game::loop(LoopSubstatus substatus, bool shouldExit) {
}
}
- advanceAnimationsAndTestLoopExit();
-
} while (!shouldExitLoop());
setLoopSubstatus(kOuterLoop);
@@ -875,9 +891,6 @@ void Game::putItem(GameItem *item, int position) {
void Game::inventoryInit() {
// Pause all "background" animations
_vm->_anims->pauseAnimations();
- if (_walkingState.isActive()) {
- walkHero(_hero.x, _hero.y, kDirectionLast);
- }
// Draw the inventory and the current items
inventoryDraw();
@@ -888,6 +901,13 @@ void Game::inventoryInit() {
// Set the appropriate loop status
setLoopStatus(kStatusInventory);
+ if (_walkingState.isActive()) {
+ _walkingState.stopWalking();
+ walkHero(_hero.x, _hero.y, kDirectionLast);
+ } else {
+ _lastTarget = _hero;
+ }
+
// Don't return from the inventory mode immediately if the mouse is out.
_mouseChangeTick = kMouseDoNotSwitch;
}
@@ -906,6 +926,10 @@ void Game::inventoryDone() {
}
}
+ // Start moving to last target
+ walkHero(_lastTarget.x, _lastTarget.y, kDirectionLast);
+ _walkingState.callbackLast();
+
// Reset item under cursor
_itemUnderCursor = NULL;
@@ -926,10 +950,12 @@ void Game::inventoryDraw() {
void Game::inventoryReload() {
// Make sure all items are loaded into memory (e.g., after loading a
// savegame) by re-putting them on the same spot in the inventory.
+ GameItem *tempItem = _currentItem;
for (uint i = 0; i < kInventorySlots; ++i) {
putItem(_inventory[i], i);
}
setPreviousItemPosition(0);
+ _currentItem = tempItem;
}
void Game::inventorySwitch(int keycode) {
@@ -1190,6 +1216,12 @@ void Game::walkHero(int x, int y, SightDirection dir) {
debug(1, "Unreachable point [%d,%d]", target.x, target.y);
return;
}
+
+ // Save point of player's last target.
+ if (_loopStatus != kStatusInventory) {
+ _lastTarget = target;
+ }
+
_walkingMap.obliquePath(shortestPath, &obliquePath);
debugC(2, kDraciWalkingDebugLevel, "Walking path lengths: shortest=%d oblique=%d", shortestPath.size(), obliquePath.size());
if (_vm->_showWalkingMap) {
@@ -1433,7 +1465,6 @@ void Game::enterNewRoom() {
_vm->_screen->setPalette(NULL, 0, kNumColors);
_vm->_anims->drawScene(_vm->_screen->getSurface());
_vm->_screen->copyToScreen();
- fadePalette(false);
// Run the program for the gate the dragon came through
debugC(6, kDraciLogicDebugLevel, "Running program for gate %d", _newGate);
@@ -1446,17 +1477,6 @@ void Game::enterNewRoom() {
// Don't immediately switch to the map or inventory even if the mouse
// position tell us to.
_mouseChangeTick = kMouseDoNotSwitch;
-
- // Set cursor state
- // Need to do this after we set the palette since the cursors use it
- if (_currentRoom._mouseOn) {
- debugC(6, kDraciLogicDebugLevel, "Mouse: ON");
- _vm->_mouse->cursorOn();
- _vm->_mouse->setCursorType(kNormalCursor);
- } else {
- debugC(6, kDraciLogicDebugLevel, "Mouse: OFF");
- _vm->_mouse->cursorOff();
- }
}
void Game::positionAnimAsHero(Animation *anim) {
@@ -1572,7 +1592,7 @@ Game::~Game() {
delete[] _items;
}
-void Game::DoSync(Common::Serializer &s) {
+void Game::DoSync(Common::Serializer &s, uint8 saveVersion) {
s.syncAsUint16LE(_currentRoom._roomNum);
for (uint i = 0; i < _info._numObjects; ++i) {
@@ -1603,6 +1623,25 @@ void Game::DoSync(Common::Serializer &s) {
s.syncAsSint16LE(_dialogueVars[i]);
}
+ if(saveVersion >= 2) {
+ setPositionLoaded(true);
+ if (s.isSaving()) {
+ s.syncAsSint16LE(_hero.x);
+ s.syncAsSint16LE(_hero.y);
+
+ int handItemID = _currentItem ? _currentItem->_absNum : -1;
+ s.syncAsSint16LE(handItemID);
+ } else {
+ s.syncAsSint16LE(_heroLoading.x);
+ s.syncAsSint16LE(_heroLoading.y);
+
+ int handItemID = -1;
+ s.syncAsSint16LE(handItemID);
+ _currentItem = getItem(handItemID);
+ }
+ } else {
+ _currentItem = 0;
+ }
}
static double real_to_double(byte real[6]) {
diff --git a/engines/draci/game.h b/engines/draci/game.h
index 4a8f3de269..53a472a552 100644
--- a/engines/draci/game.h
+++ b/engines/draci/game.h
@@ -215,6 +215,7 @@ public:
void walkHero(int x, int y, SightDirection dir); // start walking and leave callback as is
void setHeroPosition(const Common::Point &p);
const Common::Point &getHeroPosition() const { return _hero; }
+ const Common::Point &getHeroLoadingPosition() const { return _heroLoading; }
void positionAnimAsHero(Animation *anim);
void positionHeroAsAnim(Animation *anim);
@@ -290,6 +291,8 @@ public:
void setExitLoop(bool exit) { _shouldExitLoop = exit; }
bool isReloaded() const { return _isReloaded; }
void setIsReloaded(bool value) { _isReloaded = value; }
+ bool isPositionLoaded() { return _isPositionLoaded; }
+ void setPositionLoaded(bool value) { _isPositionLoaded = value; }
void setSpeechTiming(uint tick, uint duration);
void shiftSpeechAndFadeTick(int delta);
@@ -327,7 +330,7 @@ public:
void setEnableSpeedText(bool value) { _enableSpeedText = value; }
bool getEnableSpeedText() const { return _enableSpeedText; }
- void DoSync(Common::Serializer &s);
+ void DoSync(Common::Serializer &s, uint8 saveVersion);
private:
void updateOrdinaryCursor();
@@ -352,6 +355,8 @@ private:
GameInfo _info;
Common::Point _hero;
+ Common::Point _heroLoading;
+ Common::Point _lastTarget;
int *_variables;
Person *_persons;
@@ -395,6 +400,7 @@ private:
bool _shouldQuit;
bool _shouldExitLoop;
bool _isReloaded;
+ bool _isPositionLoaded;
uint _speechTick;
uint _speechDuration;
@@ -408,6 +414,7 @@ private:
int _fadePhases;
int _fadePhase;
uint _fadeTick;
+ bool _isFadeOut;
int _mouseChangeTick;
bool _enableQuickHero;
diff --git a/engines/draci/saveload.cpp b/engines/draci/saveload.cpp
index 31ac63b791..3e7f8651c1 100644
--- a/engines/draci/saveload.cpp
+++ b/engines/draci/saveload.cpp
@@ -45,7 +45,8 @@ bool readSavegameHeader(Common::InSaveFile *in, DraciSavegameHeader &header) {
return false;
header.version = in->readByte();
- if (header.version != DRACI_SAVEGAME_VERSION)
+ // Version 1 is compatible with Version 2
+ if (header.version > DRACI_SAVEGAME_VERSION)
return false;
// Read in the string
@@ -106,7 +107,7 @@ Common::Error saveSavegameData(int saveGameIdx, const Common::String &saveName,
} else {
// Create the remainder of the savegame
Common::Serializer s(NULL, f);
- vm._game->DoSync(s);
+ vm._game->DoSync(s, header.version);
f->finalize();
delete f;
@@ -140,7 +141,7 @@ Common::Error loadSavegameData(int saveGameIdx, DraciEngine *vm) {
// Synchronise the remaining data of the savegame
Common::Serializer s(f, NULL);
- vm->_game->DoSync(s);
+ vm->_game->DoSync(s, header.version);
delete f;
// Post-processing
diff --git a/engines/draci/saveload.h b/engines/draci/saveload.h
index 8b38ccb94f..6f951a3409 100644
--- a/engines/draci/saveload.h
+++ b/engines/draci/saveload.h
@@ -29,7 +29,7 @@
namespace Draci {
-#define DRACI_SAVEGAME_VERSION 1
+#define DRACI_SAVEGAME_VERSION 2
struct DraciSavegameHeader {
uint8 version;
diff --git a/engines/draci/script.cpp b/engines/draci/script.cpp
index 97dde39809..09c74f5e0d 100644
--- a/engines/draci/script.cpp
+++ b/engines/draci/script.cpp
@@ -634,8 +634,16 @@ void Script::stayOn(const Common::Array<int> &params) {
return;
}
- int x = params[0];
- int y = params[1];
+ int x, y;
+ Common::Point afterLoadingPos = _vm->_game->getHeroLoadingPosition();
+ if(_vm->_game->isPositionLoaded() == true) {
+ x = afterLoadingPos.x;
+ y = afterLoadingPos.y;
+ }
+ else {
+ x = params[0];
+ y = params[1];
+ }
SightDirection dir = static_cast<SightDirection> (params[2]);
// Jumps into the given position regardless of the walking map.
@@ -670,6 +678,11 @@ void Script::walkOnPlay(const Common::Array<int> &params) {
return;
}
+ if(_vm->_game->isPositionLoaded() == true) {
+ _vm->_game->setPositionLoaded(false);
+ return;
+ }
+
int x = params[0];
int y = params[1];
SightDirection dir = static_cast<SightDirection> (params[2]);
@@ -687,6 +700,10 @@ void Script::newRoom(const Common::Array<int> &params) {
return;
}
+ if(_vm->_game->isPositionLoaded() == true) {
+ _vm->_game->setPositionLoaded(false);
+ }
+
int room = params[0] - 1;
int gate = params[1] - 1;
diff --git a/engines/draci/walking.cpp b/engines/draci/walking.cpp
index 1467ecee35..04cd929ac6 100644
--- a/engines/draci/walking.cpp
+++ b/engines/draci/walking.cpp
@@ -439,8 +439,8 @@ void WalkingState::startWalking(const Common::Point &p1, const Common::Point &p2
}
void WalkingState::setCallback(const GPL2Program *program, uint16 offset) {
- _callback = program;
- _callbackOffset = offset;
+ _callback = _callbackLast = program;
+ _callbackOffset = _callbackOffsetLast = offset;
}
void WalkingState::callback() {
@@ -452,6 +452,12 @@ void WalkingState::callback() {
const GPL2Program &originalCallback = *_callback;
_callback = NULL;
_vm->_script->runWrapper(originalCallback, _callbackOffset, true, false);
+ _callbackLast = NULL;
+ _callbackOffset = 0;
+}
+
+void WalkingState::callbackLast() {
+ setCallback(_callbackLast, _callbackOffsetLast);
}
bool WalkingState::continueWalkingOrClearPath() {
diff --git a/engines/draci/walking.h b/engines/draci/walking.h
index ee2b48d083..fcdef3830e 100644
--- a/engines/draci/walking.h
+++ b/engines/draci/walking.h
@@ -110,6 +110,8 @@ public:
_lastAnimPhase = 0;
_turningFinished = 0;
_callbackOffset = 0;
+ _callbackOffsetLast = 0;
+ _callbackLast = 0;
stopWalking();
}
@@ -124,6 +126,7 @@ public:
void setCallback(const GPL2Program *program, uint16 offset);
void callback();
+ void callbackLast();
bool isActive() const { return _path.size() > 0; }
@@ -157,7 +160,9 @@ private:
bool _turningFinished;
const GPL2Program *_callback;
+ const GPL2Program *_callbackLast;
uint16 _callbackOffset;
+ uint16 _callbackOffsetLast;
// Initiates turning of the dragon into the direction for the next
// segment / after walking. Returns false when there is nothing left
diff --git a/engines/fullpipe/behavior.cpp b/engines/fullpipe/behavior.cpp
index 2e3a4e2e44..14e9c33bdf 100644
--- a/engines/fullpipe/behavior.cpp
+++ b/engines/fullpipe/behavior.cpp
@@ -83,7 +83,7 @@ void BehaviorManager::updateBehaviors() {
if (!_isActive)
return;
- debug(0, "BehaviorManager::updateBehaviors()");
+ debug(4, "BehaviorManager::updateBehaviors()");
for (uint i = 0; i < _behaviors.size(); i++) {
BehaviorInfo *beh = _behaviors[i];
@@ -122,7 +122,7 @@ void BehaviorManager::updateBehaviors() {
}
void BehaviorManager::updateBehavior(BehaviorInfo *behaviorInfo, BehaviorEntry *entry) {
- debug(0, "BehaviorManager::updateBehavior() %d", entry->_itemsCount);
+ debug(4, "BehaviorManager::updateBehavior() %d", entry->_itemsCount);
for (int i = 0; i < entry->_itemsCount; i++) {
BehaviorEntryInfo *bhi = entry->_items[i];
if (!(bhi->_flags & 1)) {
@@ -144,7 +144,7 @@ void BehaviorManager::updateBehavior(BehaviorInfo *behaviorInfo, BehaviorEntry *
}
void BehaviorManager::updateStaticAniBehavior(StaticANIObject *ani, int delay, BehaviorEntry *bhe) {
- debug(0, "BehaviorManager::updateStaticAniBehavior(%s)", transCyrillic((byte *)ani->_objectName));
+ debug(4, "BehaviorManager::updateStaticAniBehavior(%s)", transCyrillic((byte *)ani->_objectName));
MessageQueue *mq = 0;
@@ -236,7 +236,7 @@ void BehaviorInfo::clear() {
}
void BehaviorInfo::initAmbientBehavior(GameVar *var, Scene *sc) {
- debug(0, "BehaviorInfo::initAmbientBehavior(%s)", transCyrillic((byte *)var->_varName));
+ debug(4, "BehaviorInfo::initAmbientBehavior(%s)", transCyrillic((byte *)var->_varName));
clear();
_itemsCount = 1;
@@ -260,7 +260,7 @@ void BehaviorInfo::initAmbientBehavior(GameVar *var, Scene *sc) {
}
void BehaviorInfo::initObjectBehavior(GameVar *var, Scene *sc, StaticANIObject *ani) {
- debug(0, "BehaviorInfo::initObjectBehavior(%s)", transCyrillic((byte *)var->_varName));
+ debug(4, "BehaviorInfo::initObjectBehavior(%s)", transCyrillic((byte *)var->_varName));
clear();
diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h
index cd0a38ebf3..b257fca949 100644
--- a/engines/fullpipe/constants.h
+++ b/engines/fullpipe/constants.h
@@ -43,6 +43,8 @@ namespace Fullpipe {
#define MV_LFT_OPEN 1048
#define MV_MAN_GOLADDER 451
#define MV_MAN_GOLADDER2 2844
+#define MV_MAN_HMRKICK 1028
+#define MV_MAN_HMRKICK_COINLESS 1445
#define MV_MAN_LIFTDOWN 1052
#define MV_MAN_LIFTUP 1051
#define MV_MAN_LOOKUP 4773
@@ -219,8 +221,11 @@ namespace Fullpipe {
#define SC_MAINMENU 4620
#define SC_MAP 5222
#define SC_TITLES 5166
+#define SND_CMN_015 3139
#define SND_CMN_031 3516
#define SND_CMN_032 3517
+#define SND_CMN_054 4762
+#define SND_CMN_055 4763
#define SND_CMN_060 4921
#define SND_CMN_061 4922
#define SND_CMN_070 5199
@@ -266,6 +271,69 @@ namespace Fullpipe {
#define TrubaLeft 474
#define TrubaUp 680
+// Main Menu
+#define PIC_MNU_AUTHORS_L 4624
+#define PIC_MNU_CONTINUE_L 4626
+#define PIC_MNU_DEBUG_L 4632
+#define PIC_MNU_EXIT_L 4622
+#define PIC_MNU_LOAD_L 4628
+#define PIC_MNU_MUSICSLIDER_D 4914
+#define PIC_MNU_MUSICSLIDER_L 4915
+#define PIC_MNU_RESTART_L 5299
+#define PIC_MNU_SAVE_L 4630
+#define PIC_MNU_SLIDER_D 4913
+#define PIC_MNU_SLIDER_L 4912
+
+// Query dialog
+#define PIC_MEX_BGR 5300
+#define PIC_MEX_CANCEL 5302
+#define PIC_MEX_OK 5301
+#define PIC_MOV_BGR 5343
+#define PIC_MOV_CANCEL 5345
+#define PIC_MOV_OK 5344
+
+// Saveload dialog
+#define PIC_MLD_BGR 4645
+#define PIC_MLD_CANCEL_D 4648
+#define PIC_MLD_CANCEL_L 4649
+#define PIC_MLD_OK_D 4646
+#define PIC_MLD_OK_L 4647
+#define PIC_MSV_0_D 4643
+#define PIC_MSV_0_L 4644
+#define PIC_MSV_1_D 4651
+#define PIC_MSV_1_L 4660
+#define PIC_MSV_2_D 4652
+#define PIC_MSV_2_L 4661
+#define PIC_MSV_3_D 4653
+#define PIC_MSV_3_L 4662
+#define PIC_MSV_4_D 4654
+#define PIC_MSV_4_L 4663
+#define PIC_MSV_5_D 4655
+#define PIC_MSV_5_L 4664
+#define PIC_MSV_6_D 4656
+#define PIC_MSV_6_L 4665
+#define PIC_MSV_7_D 4657
+#define PIC_MSV_7_L 4666
+#define PIC_MSV_8_D 4658
+#define PIC_MSV_8_L 4667
+#define PIC_MSV_9_D 4659
+#define PIC_MSV_9_L 4668
+#define PIC_MSV_BGR 4634
+#define PIC_MSV_CANCEL_D 4637
+#define PIC_MSV_CANCEL_L 4638
+#define PIC_MSV_DOTS_D 4670
+#define PIC_MSV_DOTS_L 4669
+#define PIC_MSV_DOT_D 5188
+#define PIC_MSV_DOT_L 5189
+#define PIC_MSV_EMPTY_D 4639
+#define PIC_MSV_EMPTY_L 4640
+#define PIC_MSV_FULL_D 4641
+#define PIC_MSV_FULL_L 4642
+#define PIC_MSV_OK_D 4635
+#define PIC_MSV_OK_L 4636
+#define PIC_MSV_SPACE_D 5190
+#define PIC_MSV_SPACE_L 5191
+
// Intro
#define ANI_IN1MAN 5110
#define MSG_INTR_ENDINTRO 5139
@@ -877,21 +945,65 @@ namespace Fullpipe {
#define ANI_GIRL18 1484
#define ANI_KRESLO 1459
#define ANI_WHIRLIGIG_18 829
+#define MSG_SC18_CLICKBOARD 3297
+#define MSG_SC18_MANCLIMBEDDOWN 1540
+#define MSG_SC18_MANCLIMBEDUP 1539
+#define MSG_SC18_MANREADY 1507
+#define MSG_SC18_SHOWBOYJUMP 1495
+#define MSG_SC18_SHOWBOYJUMPTO 1497
+#define MSG_SC18_SHOWGIRLJUMP 1496
+#define MSG_SC18_SHOWGIRLJUMPTO 1499
+#define MSG_SC18_SHOWMANJUMP 1510
+#define MSG_SC18_SHOWMANJUMPTO 1508
+#define MV_BOY18_JUMPFROM 1478
+#define MV_BOY18_JUMPTO 1481
+#define MV_GRL18_JUMPFROM 1485
+#define MV_GRL18_JUMPTO 1488
+#define MV_KSL_CALMDOWN 1476
+#define MV_KSL_INBOY 1491
+#define MV_KSL_INGIRL 1493
+#define MV_KSL_INMAN 1504
+#define MV_KSL_JUMPBOY 1473
+#define MV_KSL_JUMPGIRL 1475
+#define MV_KSL_JUMPMAN 1509
+#define MV_KSL_SWING 1460
+#define MV_KSL_SWINGBOY 1462
+#define MV_KSL_SWINGGIRL 1464
+#define MV_KSL_SWINGMAN 1502
+#define MV_MAN18_JUMPTOTRUBA 1511
+#define MV_MAN18_STANDKRESLO 1500
#define MV_WHR18_SPIN 1300
#define PIC_SC18_DOMIN 5184
#define PIC_SC18_LADDER1 1471
#define PIC_SC18_LADDER2 1472
#define PIC_SC18_LADDER3 3299
#define PIC_SC18_RTRUBA 1520
+#define QU_SC19_MANJUMP1 1516
+#define QU_SC19_MANJUMP2 1517
+#define QU_SC19_MANJUMP3 1518
#define SND_18_006 3906
#define SND_18_010 4994
+#define ST_KSL_BOY 1463
+#define ST_KSL_GIRL 1465
+#define ST_KSL_JUMPBOY 1492
+#define ST_KSL_JUMPGIRL 1494
+#define ST_KSL_JUMPMAN 1505
+#define ST_KSL_MAN 1503
+#define ST_KSL_REACT 1474
// Scene 19
+#define ANI_CORDIE 1529
#define ANI_WHIRLGIG_19 1302
+#define MSG_SC19_UPDATENUMRIDES 5203
#define MV_WHR19_SPIN 1317
+#define PIC_SC19_RTRUBA1 1513
+#define PIC_SC19_RTRUBA2 1514
#define PIC_SC19_RTRUBA3 1515
+#define PIC_SC19_RTRUBA31 5320
#define SND_19_015 3928
#define SND_19_016 4995
+#define ST_CDI_EMPTY2 1543
+#define ST_KSL_NORM 1461
// Scene 20
#define ANI_GRANDMA_20 2427
@@ -1232,6 +1344,65 @@ namespace Fullpipe {
#define QU_SC28_WMN_START 3452
#define ST_MAN28_RIGHT 4249
+// Scene 29
+#define ANI_ASS 2120
+#define ANI_PORTER 2082
+#define ANI_SHELL_GREEN 2116
+#define ANI_SHELL_RED 2130
+#define ANI_SHOOTER1 2108
+#define ANI_SHOOTER2 2111
+#define MSG_SC29_DISABLEPORTER 2097
+#define MSG_SC29_DISABLERIDEBACK 2106
+#define MSG_SC29_ENABLEPORTER 2096
+#define MSG_SC29_ENABLERIDEBACK 2105
+#define MSG_SC29_LAUGH 4760
+#define MSG_SC29_SHOOTGREEN 2119
+#define MSG_SC29_SHOOTRED 2137
+#define MSG_SC29_SHOWLASTGREEN 2730
+#define MSG_SC29_SHOWLASTRED 2731
+#define MSG_SC29_STOPRIDE 2107
+#define MV_ASS_HITGREEN 2138
+#define MV_ASS_HITRED 2139
+#define MV_BRDCMN_GOR 4735
+#define MV_MAN29_BEND 2091
+#define MV_MAN29_HIT 2088
+#define MV_MAN29_JUMP 2090
+#define MV_MAN29_RUN 2095
+#define MV_MAN29_STANDUP 2092
+#define MV_MAN29_STANDUP_NORM 2093
+#define MV_PTR_MOVEFAST 2102
+#define MV_SHG_HITASS 2151
+#define MV_SHG_HITMAN 2147
+#define MV_SHG_NORM 2117
+#define MV_SHR_HITASS 2152
+#define MV_SHR_HITMAN 2149
+#define MV_SHR_NORM 2131
+#define MV_STR1_SHOOT 2109
+#define MV_STR2_SHOOT 2112
+#define PIC_SC29_LTRUBA 2081
+#define QU_SC29_BRD1 4741
+#define QU_SC29_BRD2 4742
+#define QU_SC29_BRDOUT1 4743
+#define QU_SC29_BRDOUT2 4744
+#define QU_SC29_ESCAPE 2129
+#define QU_SC29_MANFROM_L 2101
+#define QU_SC29_MANFROM_R 2104
+#define QU_SC29_MANTO_L 2103
+#define QU_SC29_MANTO_R 2100
+#define SND_29_014 4348
+#define SND_29_027 4757
+#define SND_29_028 4758
+#define SND_29_029 4759
+#define ST_ASS_NORM 2122
+#define ST_BRDCMN_GOR 4734
+#define ST_BRDCMN_RIGHT 4732
+#define ST_MAN29_RUNR 2140
+#define ST_MAN29_SITR 2141
+#define ST_STR1_RIGHT 2143
+#define ST_STR2_RIGHT 2144
+#define ST_STR1_STAND 2110
+#define ST_STR2_STAND 2113
+
// Scene 30
#define ANI_LEG 2322
#define MSG_SC30_UPDATEPATH 2358
diff --git a/engines/fullpipe/detection.cpp b/engines/fullpipe/detection.cpp
index 62c5dd3b80..de0ed04d25 100644
--- a/engines/fullpipe/detection.cpp
+++ b/engines/fullpipe/detection.cpp
@@ -26,6 +26,7 @@
#include "common/file.h"
#include "fullpipe/fullpipe.h"
+#include "fullpipe/gameloader.h"
namespace Fullpipe {
@@ -87,15 +88,72 @@ public:
}
virtual bool hasFeature(MetaEngineFeature f) const;
+ virtual int getMaximumSaveSlot() const { return 8; }
+ virtual SaveStateList listSaves(const char *target) const;
+ virtual void removeSaveState(const char *target, int slot) const;
+ virtual SaveStateDescriptor querySaveMetaInfos(const char *target, int slot) const;
virtual bool createInstance(OSystem *syst, Engine **engine, const ADGameDescription *desc) const;
};
bool FullpipeMetaEngine::hasFeature(MetaEngineFeature f) const {
- return false;
+ return
+ (f == kSupportsListSaves) ||
+ (f == kSupportsDeleteSave) ||
+ (f == kSavesSupportMetaInfo) ||
+ (f == kSavesSupportThumbnail) ||
+ (f == kSavesSupportCreationDate) ||
+ (f == kSupportsLoadingDuringStartup);
}
-bool Fullpipe::FullpipeEngine::hasFeature(EngineFeature f) const {
- return false;
+SaveStateList FullpipeMetaEngine::listSaves(const char *target) const {
+ Common::SaveFileManager *saveFileMan = g_system->getSavefileManager();
+ Common::StringArray filenames;
+ Common::String pattern("fullpipe.s??");
+
+ filenames = saveFileMan->listSavefiles(pattern);
+ sort(filenames.begin(), filenames.end()); // Sort (hopefully ensuring we are sorted numerically..)
+
+ SaveStateList saveList;
+ for (Common::StringArray::const_iterator file = filenames.begin(); file != filenames.end(); ++file) {
+ // Obtain the last 2 digits of the filename, since they correspond to the save slot
+ int slotNum = atoi(file->c_str() + file->size() - 2);
+
+ if (slotNum >= 0 && slotNum <= getMaximumSaveSlot()) {
+ Common::InSaveFile *in = saveFileMan->openForLoading(*file);
+ if (in) {
+ Fullpipe::FullpipeSavegameHeader header;
+ Fullpipe::readSavegameHeader(in, header);
+ saveList.push_back(SaveStateDescriptor(slotNum, header.saveName));
+ delete header.thumbnail;
+ delete in;
+ }
+ }
+ }
+
+ return saveList;
+}
+
+void FullpipeMetaEngine::removeSaveState(const char *target, int slot) const {
+ g_system->getSavefileManager()->removeSavefile(Fullpipe::getSavegameFile(slot));
+}
+
+SaveStateDescriptor FullpipeMetaEngine::querySaveMetaInfos(const char *target, int slot) const {
+ Common::InSaveFile *f = g_system->getSavefileManager()->openForLoading(
+ Fullpipe::getSavegameFile(slot));
+
+ if (f) {
+ Fullpipe::FullpipeSavegameHeader header;
+ Fullpipe::readSavegameHeader(f, header);
+ delete f;
+
+ // Create the return descriptor
+ SaveStateDescriptor desc(slot, header.saveName);
+ desc.setThumbnail(header.thumbnail);
+
+ return desc;
+ }
+
+ return SaveStateDescriptor();
}
bool FullpipeMetaEngine::createInstance(OSystem *syst, Engine **engine, const ADGameDescription *desc) const {
diff --git a/engines/fullpipe/fullpipe.cpp b/engines/fullpipe/fullpipe.cpp
index 4446af7b60..78815297ac 100644
--- a/engines/fullpipe/fullpipe.cpp
+++ b/engines/fullpipe/fullpipe.cpp
@@ -37,6 +37,7 @@
#include "fullpipe/scenes.h"
#include "fullpipe/floaters.h"
#include "fullpipe/console.h"
+#include "fullpipe/constants.h"
namespace Fullpipe {
@@ -71,6 +72,7 @@ FullpipeEngine::FullpipeEngine(OSystem *syst, const ADGameDescription *gameDesc)
_flgSoundList = true;
_sfxVolume = 0;
+ _musicVolume = 0;
_inputController = 0;
_inputDisabled = false;
@@ -95,6 +97,7 @@ FullpipeEngine::FullpipeEngine(OSystem *syst, const ADGameDescription *gameDesc)
_gamePaused = false;
_inputArFlag = false;
_recordEvents = false;
+ _mainMenu_debugEnabled = false;
_flgGameIsRunning = true;
@@ -102,6 +105,18 @@ FullpipeEngine::FullpipeEngine(OSystem *syst, const ADGameDescription *gameDesc)
_musicAllowed = -1;
_musicGameVar = 0;
+ _musicMinDelay = 0;
+ _musicMaxDelay = 0;
+ _musicLocal = 0;
+ _trackStartDelay = 0;
+
+ memset(_sceneTracks, 0, sizeof(_sceneTracks));
+ memset(_trackName, 0, sizeof(_trackName));
+ memset(_sceneTracksCurrentTrack, 0, sizeof(_sceneTracksCurrentTrack));
+
+ _numSceneTracks = 0;
+ _sceneTrackHasSequence = false;
+ _sceneTrackIsPlaying = false;
_aniMan = 0;
_aniMan2 = 0;
@@ -190,6 +205,42 @@ void FullpipeEngine::initialize() {
_mgm = new MGM;
}
+void FullpipeEngine::restartGame() {
+ _floaters->stopAll();
+
+ clearGlobalMessageQueueList();
+ clearMessages();
+
+ initObjectStates();
+
+ if (_scene2) {
+ _scene2->getAniMan();
+ _scene2 = 0;
+ }
+
+ if (_currentScene) {
+ _gameLoader->unloadScene(_currentScene->_sceneId);
+
+ _currentScene = 0;
+ }
+
+ _gameLoader->restoreDefPicAniInfos();
+
+ getGameLoaderInventory()->clear();
+ getGameLoaderInventory()->addItem(ANI_INV_MAP, 1);
+ getGameLoaderInventory()->rebuildItemRects();
+
+ initMap();
+
+ if (_flgPlayIntro) {
+ _gameLoader->loadScene(SC_INTRO1);
+ _gameLoader->gotoScene(SC_INTRO1, TrubaUp);
+ } else {
+ _gameLoader->loadScene(SC_1);
+ _gameLoader->gotoScene(SC_1, TrubaLeft);
+ }
+}
+
Common::Error FullpipeEngine::run() {
const Graphics::PixelFormat format(2, 5, 6, 5, 0, 11, 5, 0, 0);
// Initialize backend
@@ -329,7 +380,7 @@ void FullpipeEngine::updateEvents() {
case Common::EVENT_QUIT:
_gameContinue = false;
break;
- case Common::EVENT_RBUTTONDOWN:
+ case Common::EVENT_RBUTTONDOWN:
if (!_inputArFlag && (_updateTicks - _lastInputTicks) >= 2) {
ex = new ExCommand(0, 17, 107, event.mouse.x, event.mouse.y, 0, 1, 0, 0, 0);
ex->_excFlags |= 3;
diff --git a/engines/fullpipe/fullpipe.h b/engines/fullpipe/fullpipe.h
index 17a771bd5d..afdc493258 100644
--- a/engines/fullpipe/fullpipe.h
+++ b/engines/fullpipe/fullpipe.h
@@ -91,6 +91,7 @@ public:
GUI::Debugger *getDebugger() { return _console; }
void initialize();
+ void restartGame();
void setMusicAllowed(int val) { _musicAllowed = val; }
@@ -98,7 +99,6 @@ public:
const ADGameDescription *_gameDescription;
const char *getGameId() const;
Common::Platform getPlatform() const;
- bool hasFeature(EngineFeature f) const;
Common::RandomSource *_rnd;
@@ -125,6 +125,7 @@ public:
bool _flgGameIsRunning;
bool _inputArFlag;
bool _recordEvents;
+ bool _mainMenu_debugEnabled;
Common::Rect _sceneRect;
int _sceneWidth;
@@ -149,18 +150,32 @@ public:
int _currSoundListCount;
bool _soundEnabled;
bool _flgSoundList;
+ char _sceneTracks[10][260];
+ int _numSceneTracks;
+ bool _sceneTrackHasSequence;
+ int _musicMinDelay;
+ int _musicMaxDelay;
+ int _musicLocal;
+ char _trackName[2600];
+ int _trackStartDelay;
+ char _sceneTracksCurrentTrack[260];
+ bool _sceneTrackIsPlaying;
void stopAllSounds();
void toggleMute();
void playSound(int id, int flag);
void playTrack(GameVar *sceneVar, const char *name, bool delayed);
+ int getSceneTrack();
void startSceneTrack();
+ void startSoundStream1(char *trackName);
void stopSoundStream2();
void stopAllSoundStreams();
void stopAllSoundInstances(int id);
void updateSoundVolume();
+ void setMusicVolume(int vol);
int _sfxVolume;
+ int _musicVolume;
GlobalMessageQueueList *_globalMessageQueueList;
MessageHandler *_messageHandlers;
@@ -296,6 +311,7 @@ public:
GameVar *_musicGameVar;
Audio::SoundHandle _sceneTrackHandle;
+
public:
bool _isSaveAllowed;
diff --git a/engines/fullpipe/gameloader.cpp b/engines/fullpipe/gameloader.cpp
index bbcce2ef71..c8b01939dd 100644
--- a/engines/fullpipe/gameloader.cpp
+++ b/engines/fullpipe/gameloader.cpp
@@ -21,6 +21,7 @@
*/
#include "fullpipe/fullpipe.h"
+#include "graphics/thumbnail.h"
#include "fullpipe/gameloader.h"
#include "fullpipe/scene.h"
@@ -272,7 +273,7 @@ bool preloadCallback(PreloadItem &pre, int flag) {
g_fp->_currSoundList1[0] = g_fp->accessScene(SC_COMMON)->_soundList;
}
- g_vars->scene18_var01 = 0;
+ g_vars->scene18_inScene18p1 = false;
if ((pre.preloadId1 != SC_18 || pre.sceneId != SC_19) && (pre.preloadId1 != SC_19 || (pre.sceneId != SC_18 && pre.sceneId != SC_19))) {
if (g_fp->_scene3) {
@@ -282,9 +283,9 @@ bool preloadCallback(PreloadItem &pre, int flag) {
g_fp->_scene3 = 0;
}
} else {
- scene19_preload(g_fp->accessScene(pre.preloadId1), pre.keyCode);
+ scene19_setMovements(g_fp->accessScene(pre.preloadId1), pre.keyCode);
- g_vars->scene18_var01 = 1;
+ g_vars->scene18_inScene18p1 = true;
if (pre.preloadId1 == SC_18) {
g_fp->_gameLoader->saveScenePicAniInfos(SC_18);
@@ -501,6 +502,14 @@ void GameLoader::updateSystems(int counterdiff) {
}
}
+void GameLoader::readSavegame(const char *fname) {
+ warning("STUB: readSavegame(%s)", fname);
+}
+
+void GameLoader::writeSavegame(Scene *sc, const char *fname) {
+ warning("STUB: writeSavegame(sc, %s)", fname);
+}
+
Sc2::Sc2() {
_sceneId = 0;
_field_2 = 0;
@@ -593,6 +602,42 @@ bool PreloadItems::load(MfcArchive &file) {
return true;
}
+const char *getSavegameFile(int saveGameIdx) {
+ static char buffer[20];
+ sprintf(buffer, "fullpipe.s%02d", saveGameIdx);
+ return buffer;
+}
+
+bool readSavegameHeader(Common::InSaveFile *in, FullpipeSavegameHeader &header) {
+ char saveIdentBuffer[6];
+ header.thumbnail = NULL;
+
+ // Validate the header Id
+ in->read(saveIdentBuffer, 6);
+ if (strcmp(saveIdentBuffer, "SVMCR"))
+ return false;
+
+ header.version = in->readByte();
+ if (header.version != FULLPIPE_SAVEGAME_VERSION)
+ return false;
+
+ // Read in the string
+ header.saveName.clear();
+ char ch;
+ while ((ch = (char)in->readByte()) != '\0') header.saveName += ch;
+
+ // Get the thumbnail
+ header.thumbnail = Graphics::loadThumbnail(*in);
+ if (!header.thumbnail)
+ return false;
+
+ return true;
+}
+
+void GameLoader::restoreDefPicAniInfos() {
+ warning("STUB: restoreDefPicAniInfos()");
+}
+
GameVar *FullpipeEngine::getGameLoaderGameVar() {
if (_gameLoader)
return _gameLoader->_gameVar;
diff --git a/engines/fullpipe/gameloader.h b/engines/fullpipe/gameloader.h
index a79c0e11b4..772cc51130 100644
--- a/engines/fullpipe/gameloader.h
+++ b/engines/fullpipe/gameloader.h
@@ -29,6 +29,8 @@
namespace Fullpipe {
+#define FULLPIPE_SAVEGAME_VERSION 1
+
class SceneTag;
class MctlCompound;
class InputController;
@@ -72,6 +74,12 @@ class PreloadItems : public Common::Array<PreloadItem *>, public CObject {
virtual bool load(MfcArchive &file);
};
+struct FullpipeSavegameHeader {
+ uint8 version;
+ Common::String saveName;
+ Graphics::Surface *thumbnail;
+};
+
class GameLoader : public CObject {
public:
GameLoader();
@@ -89,6 +97,11 @@ class GameLoader : public CObject {
void applyPicAniInfos(Scene *sc, PicAniInfo **picAniInfo, int picAniInfoCount);
void saveScenePicAniInfos(int sceneId);
+ void readSavegame(const char *fname);
+ void writeSavegame(Scene *sc, const char *fname);
+
+ void restoreDefPicAniInfos();
+
GameProject *_gameProject;
InteractionController *_interactionController;
InputController *_inputController;
@@ -108,6 +121,9 @@ class GameLoader : public CObject {
int _preloadEntranceId;
};
+const char *getSavegameFile(int saveGameIdx);
+bool readSavegameHeader(Common::InSaveFile *in, FullpipeSavegameHeader &header);
+
Inventory2 *getGameLoaderInventory();
InteractionController *getGameLoaderInteractionController();
MctlCompound *getSc2MctlCompoundBySceneId(int16 sceneId);
diff --git a/engines/fullpipe/gfx.cpp b/engines/fullpipe/gfx.cpp
index 137af86f48..520e81835b 100644
--- a/engines/fullpipe/gfx.cpp
+++ b/engines/fullpipe/gfx.cpp
@@ -90,7 +90,16 @@ Background::Background() {
}
Background::~Background() {
- warning("STUB: Background::~Background()");
+ _picObjList.clear();
+
+ for (int i = 0; i < _bigPictureArray1Count; i++) {
+ for (int j = 0; j < _bigPictureArray2Count; j++)
+ delete _bigPictureArray[i][j];
+
+ free(_bigPictureArray[i]);
+ }
+
+ free(_bigPictureArray);
}
bool Background::load(MfcArchive &file) {
@@ -136,7 +145,7 @@ void Background::addPictureObject(PictureObject *pct) {
bool inserted = false;
for (uint i = 1; i < _picObjList.size(); i++) {
- if (((PictureObject *)_picObjList[i])->_priority <= pct->_priority) {
+ if (_picObjList[i]->_priority <= pct->_priority) {
_picObjList.insert_at(i, pct);
inserted = true;
break;
@@ -159,7 +168,9 @@ PictureObject::PictureObject() {
}
PictureObject::~PictureObject() {
- warning("STUB: PictureObject::~PictureObject()");
+ delete _picture;
+ _pictureObject2List->clear();
+ delete _pictureObject2List;
}
PictureObject::PictureObject(PictureObject *src) : GameObject(src) {
@@ -181,7 +192,7 @@ bool PictureObject::load(MfcArchive &file, bool bigPicture) {
_picture->load(file);
- _pictureObject2List = new PtrList();
+ _pictureObject2List = new Common::Array<GameObject *>;
int count = file.readUint16LE();
@@ -340,7 +351,25 @@ void GameObject::setOXY(int x, int y) {
_oy = y;
}
-void GameObject::renumPictures(PtrList *lst) {
+void GameObject::renumPictures(Common::Array<StaticANIObject *> *lst) {
+ int *buf = (int *)calloc(lst->size() + 2, sizeof(int));
+
+ for (uint i = 0; i < lst->size(); i++) {
+ if (_id == ((GameObject *)((*lst)[i]))->_id)
+ buf[((GameObject *)((*lst)[i]))->_okeyCode] = 1;
+ }
+
+ if (buf[_okeyCode]) {
+ uint count;
+ for (count = 1; buf[count] && count < lst->size() + 2; count++)
+ ;
+ _okeyCode = count;
+ }
+
+ free(buf);
+}
+
+void GameObject::renumPictures(Common::Array<PictureObject *> *lst) {
int *buf = (int *)calloc(lst->size() + 2, sizeof(int));
for (uint i = 0; i < lst->size(); i++) {
@@ -369,6 +398,7 @@ bool GameObject::getPicAniInfo(PicAniInfo *info) {
info->ox = _ox;
info->oy = _oy;
info->priority = _priority;
+ warning("Yep %d", _id);
return true;
}
diff --git a/engines/fullpipe/gfx.h b/engines/fullpipe/gfx.h
index b3e22b610b..191df7709a 100644
--- a/engines/fullpipe/gfx.h
+++ b/engines/fullpipe/gfx.h
@@ -92,7 +92,7 @@ class Picture : public MemoryObject {
virtual bool load(MfcArchive &file);
void setAOIDs();
- void init();
+ virtual void init();
void getDibInfo();
Bitmap *getPixelData();
virtual void draw(int x, int y, int style, int angle);
@@ -141,7 +141,8 @@ class GameObject : public CObject {
virtual bool load(MfcArchive &file);
void setOXY(int x, int y);
- void renumPictures(PtrList *lst);
+ void renumPictures(Common::Array<StaticANIObject *> *lst);
+ void renumPictures(Common::Array<PictureObject *> *lst);
void setFlags(int16 flags) { _flags = flags; }
void clearFlags() { _flags = 0; }
const char *getName() { return _objectName; }
@@ -153,7 +154,7 @@ class GameObject : public CObject {
class PictureObject : public GameObject {
public:
Picture *_picture;
- PtrList *_pictureObject2List;
+ Common::Array<GameObject *> *_pictureObject2List;
int _ox2;
int _oy2;
@@ -178,7 +179,7 @@ class PictureObject : public GameObject {
class Background : public CObject {
public:
- PtrList _picObjList;
+ Common::Array<PictureObject *> _picObjList;
char *_bgname;
int _x;
diff --git a/engines/fullpipe/input.cpp b/engines/fullpipe/input.cpp
index 0678d15368..7c97461a24 100644
--- a/engines/fullpipe/input.cpp
+++ b/engines/fullpipe/input.cpp
@@ -275,6 +275,8 @@ void FullpipeEngine::updateCursorCommon() {
}
void FullpipeEngine::initArcadeKeys(const char *varname) {
+ _arcadeKeys.clear();
+
GameVar *var = getGameLoaderGameVar()->getSubVarByName(varname)->getSubVarByName("KEYPOS");
if (!var)
@@ -294,6 +296,37 @@ void FullpipeEngine::initArcadeKeys(const char *varname) {
}
}
+void FullpipeEngine::processArcade(ExCommand *cmd) {
+ if (!g_fp->_aniMan2)
+ return;
+
+ int idx;
+
+ if (cmd->_sceneClickX <= g_fp->_aniMan2->_ox) {
+ for (idx = (int)_arcadeKeys.size() - 1; idx >= 0; idx--) {
+ if (_arcadeKeys[idx]->x < g_fp->_aniMan2->_ox)
+ break;
+ }
+
+ if (idx < 0)
+ return;
+ } else {
+ for (idx = 0; idx < (int)_arcadeKeys.size(); idx++) {
+ if (_arcadeKeys[idx]->x > g_fp->_aniMan2->_ox)
+ break;
+ }
+
+ if (idx >= (int)_arcadeKeys.size())
+ return;
+ }
+
+ cmd->_sceneClickX = _arcadeKeys[idx]->x;
+ cmd->_sceneClickY = _arcadeKeys[idx]->y;
+
+ cmd->_x = cmd->_sceneClickX - g_fp->_sceneRect.left;
+ cmd->_y = cmd->_sceneClickY - g_fp->_sceneRect.top;
+}
+
void FullpipeEngine::setArcadeOverlay(int picId) {
Common::Point point;
Common::Point point2;
diff --git a/engines/fullpipe/interaction.cpp b/engines/fullpipe/interaction.cpp
index 6b6ceb6eeb..84e9688e30 100644
--- a/engines/fullpipe/interaction.cpp
+++ b/engines/fullpipe/interaction.cpp
@@ -56,7 +56,9 @@ bool canInteractAny(GameObject *obj1, GameObject *obj2, int invId) {
}
InteractionController::~InteractionController() {
- warning("STUB: InteractionController::~InteractionController()");
+ _interactions.clear();
+
+ removeMessageHandler(124, -1);
}
bool InteractionController::load(MfcArchive &file) {
@@ -427,7 +429,14 @@ Interaction::Interaction() {
}
Interaction::~Interaction() {
- warning("STUB: Interaction::~Interaction()");
+ if (_messageQueue) {
+ while (_messageQueue->getExCommandByIndex(0))
+ _messageQueue->deleteExCommandByIndex(0, 1);
+ }
+
+ delete _messageQueue;
+
+ free(_actionName);
}
bool Interaction::load(MfcArchive &file) {
diff --git a/engines/fullpipe/inventory.cpp b/engines/fullpipe/inventory.cpp
index cfe8adf86f..e79f9c54df 100644
--- a/engines/fullpipe/inventory.cpp
+++ b/engines/fullpipe/inventory.cpp
@@ -447,6 +447,15 @@ int Inventory2::getHoveredItem(Common::Point *point) {
return 0;
}
+void Inventory2::clear() {
+ unselectItem(0);
+
+ for (uint i = 0; i < _inventoryItems.size(); i++)
+ getInventoryPoolItemFieldCById(_inventoryItems[i]->itemId);
+
+ _inventoryItems.clear();
+}
+
void FullpipeEngine::getAllInventory() {
Inventory2 *inv = getGameLoaderInventory();
diff --git a/engines/fullpipe/inventory.h b/engines/fullpipe/inventory.h
index 833cccc355..46b55c5669 100644
--- a/engines/fullpipe/inventory.h
+++ b/engines/fullpipe/inventory.h
@@ -129,6 +129,8 @@ class Inventory2 : public Inventory {
bool unselectItem(bool flag);
void draw();
+
+ void clear();
};
} // End of namespace Fullpipe
diff --git a/engines/fullpipe/messagehandlers.cpp b/engines/fullpipe/messagehandlers.cpp
index b8e7b5c1db..d4f79d1dd8 100644
--- a/engines/fullpipe/messagehandlers.cpp
+++ b/engines/fullpipe/messagehandlers.cpp
@@ -34,11 +34,69 @@
namespace Fullpipe {
void global_messageHandler_KickStucco() {
- warning("STUB: global_messageHandler_KickStucco()");
+ Movement *mov = g_fp->_aniMan->getMovementById(MV_MAN_HMRKICK);
+ int end = mov->_currMovement ? mov->_currMovement->_dynamicPhases.size() : mov->_dynamicPhases.size();
+ bool flip = false;
+
+ for (int i = 0; i < end; i++) {
+ ExCommand *ex = mov->getDynamicPhaseByIndex(i)->_exCommand;
+
+ if (ex)
+ if (ex->_messageKind == 35)
+ if (ex->_messageNum == SND_CMN_015) {
+ if (flip) {
+ ex->_messageNum = SND_CMN_055;
+ } else {
+ ex->_messageNum = SND_CMN_054;
+ flip = true;
+ }
+ }
+ }
+
+ mov = g_fp->_aniMan->getMovementById(MV_MAN_HMRKICK_COINLESS);
+ end = mov->_currMovement ? mov->_currMovement->_dynamicPhases.size() : mov->_dynamicPhases.size();
+ flip = false;
+
+ for (int i = 0; i < end; i++) {
+ ExCommand *ex = mov->getDynamicPhaseByIndex(i)->_exCommand;
+
+ if (ex)
+ if (ex->_messageKind == 35)
+ if (ex->_messageNum == SND_CMN_015) {
+ if (flip) {
+ ex->_messageNum = SND_CMN_055;
+ } else {
+ ex->_messageNum = SND_CMN_054;
+ flip = true;
+ }
+ }
+ }
}
void global_messageHandler_KickMetal() {
- warning("STUB: global_messageHandler_KickMetal()");
+ Movement *mov = g_fp->_aniMan->getMovementById(MV_MAN_HMRKICK);
+ int end = mov->_currMovement ? mov->_currMovement->_dynamicPhases.size() : mov->_dynamicPhases.size();
+
+ for (int i = 0; i < end; i++) {
+ ExCommand *ex = mov->getDynamicPhaseByIndex(i)->_exCommand;
+
+ if (ex)
+ if (ex->_messageKind == 35)
+ if (ex->_messageNum == SND_CMN_054 || ex->_messageNum == SND_CMN_055)
+ ex->_messageNum = SND_CMN_015;
+ }
+
+ mov = g_fp->_aniMan->getMovementById(MV_MAN_HMRKICK_COINLESS);
+ end = mov->_currMovement ? mov->_currMovement->_dynamicPhases.size() : mov->_dynamicPhases.size();
+
+ for (int i = 0; i < end; i++) {
+ ExCommand *ex = mov->getDynamicPhaseByIndex(i)->_exCommand;
+
+ if (ex)
+ if (ex->_messageKind == 35)
+ if (ex->_messageNum == SND_CMN_054 || ex->_messageNum == SND_CMN_055)
+ ex->_messageNum = SND_CMN_015;
+ }
}
int global_messageHandler1(ExCommand *cmd) {
@@ -334,12 +392,10 @@ int global_messageHandler3(ExCommand *cmd) {
}
return result;
case 29:
- if (!g_fp->_currentScene)
- return result;
-
- if (g_fp->_gameLoader->_interactionController->_flag24) {
+ if (g_fp->_gameLoader->_interactionController->_flag24 && g_fp->_currentScene) {
ani = g_fp->_currentScene->getStaticANIObjectAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
ani2 = g_fp->_currentScene->getStaticANIObject1ById(g_fp->_gameLoader->_field_FA, -1);
+
if (ani) {
if (g_fp->_msgObjectId2 == ani->_id && g_fp->_msgId == ani->_okeyCode) {
cmd->_messageKind = 0;
@@ -528,9 +584,9 @@ int global_messageHandler4(ExCommand *cmd) {
ExCommand2 *cmd2 = (ExCommand2 *)cmd;
if (cmd->_excFlags & 1) {
- ani->startAnimSteps(cmd->_messageNum, 0, cmd->_x, cmd->_y, cmd2->_points, cmd2->_pointsSize >> 3, flags);
+ ani->startAnimSteps(cmd->_messageNum, 0, cmd->_x, cmd->_y, cmd2->_points, cmd2->_pointsSize, flags);
} else {
- ani->startAnimSteps(cmd->_messageNum, cmd->_parId, cmd->_x, cmd->_y, cmd2->_points, cmd2->_pointsSize >> 3, flags);
+ ani->startAnimSteps(cmd->_messageNum, cmd->_parId, cmd->_x, cmd->_y, cmd2->_points, cmd2->_pointsSize, flags);
}
break;
}
diff --git a/engines/fullpipe/messages.cpp b/engines/fullpipe/messages.cpp
index 9c8f5ac4e2..8257d1459f 100644
--- a/engines/fullpipe/messages.cpp
+++ b/engines/fullpipe/messages.cpp
@@ -699,6 +699,10 @@ void GlobalMessageQueueList::addMessageQueue(MessageQueue *msg) {
push_back(msg);
}
+void clearGlobalMessageQueueList() {
+ g_fp->_globalMessageQueueList->clear();
+}
+
void clearGlobalMessageQueueList1() {
clearMessages();
diff --git a/engines/fullpipe/messages.h b/engines/fullpipe/messages.h
index da579d58c0..e6f7f05150 100644
--- a/engines/fullpipe/messages.h
+++ b/engines/fullpipe/messages.h
@@ -193,6 +193,7 @@ void clearMessageHandlers();
void processMessages();
void updateGlobalMessageQueue(int id, int objid);
void clearMessages();
+void clearGlobalMessageQueueList();
void clearGlobalMessageQueueList1();
bool chainQueue(int queueId, int flags);
diff --git a/engines/fullpipe/modal.cpp b/engines/fullpipe/modal.cpp
index 603aaff026..ca082e6f5d 100644
--- a/engines/fullpipe/modal.cpp
+++ b/engines/fullpipe/modal.cpp
@@ -21,18 +21,21 @@
*/
#include "fullpipe/fullpipe.h"
-#include "fullpipe/modal.h"
#include "fullpipe/messages.h"
#include "fullpipe/constants.h"
#include "fullpipe/motion.h"
#include "fullpipe/scenes.h"
#include "fullpipe/gameloader.h"
+#include "fullpipe/statics.h"
+#include "fullpipe/modal.h"
#include "fullpipe/constants.h"
#include "graphics/palette.h"
#include "video/avi_decoder.h"
+#include "engines/savestate.h"
+
namespace Fullpipe {
ModalIntro::ModalIntro() {
@@ -718,7 +721,7 @@ bool ModalCredits::init(int counterdiff) {
g_fp->_modalObject = menu;
- menu->_field_34 = 1;
+ menu->_mfield_34 = 1;
}
return true;
@@ -750,9 +753,513 @@ void ModalCredits::update() {
}
ModalMainMenu::ModalMainMenu() {
- warning("STUB: ModalMainMenu::ModalMainMenu()");
+ _areas.clear();
+
+ _lastArea = 0;
+ _hoverAreaId = 0;
+ _mfield_34 = 0;
+ _scene = g_fp->accessScene(SC_MAINMENU);
+ _debugKeyCount = 0;
+ _sliderOffset = 0;
+ _screct.left = g_fp->_sceneRect.left;
+ _screct.top = g_fp->_sceneRect.top;
+ _screct.right = g_fp->_sceneRect.right;
+ _screct.bottom = g_fp->_sceneRect.bottom;
+
+ if (g_fp->_currentScene) {
+ _bgX = g_fp->_currentScene->_x;
+ _bgY = g_fp->_currentScene->_y;
+ } else {
+ _bgX = 0;
+ _bgY = 0;
+ }
+
+ g_fp->_sceneRect.top = 0;
+ g_fp->_sceneRect.left = 0;
+ g_fp->_sceneRect.right = 800;
+ g_fp->_sceneRect.bottom = 600;
+
+ MenuArea *area;
+
+ area = new MenuArea();
+ area->picIdL = PIC_MNU_EXIT_L;
+ area->picObjD = 0;
+ area->picObjL = _scene->getPictureObjectById(area->picIdL, 0);
+ area->picObjL->_flags &= 0xFFFB;
+ _areas.push_back(area);
+
+ area = new MenuArea();
+ area->picIdL = PIC_MNU_CONTINUE_L;
+ area->picObjD = 0;
+ area->picObjL = _scene->getPictureObjectById(area->picIdL, 0);
+ area->picObjL->_flags &= 0xFFFB;
+ _areas.push_back(area);
+
+ if (isSaveAllowed()) {
+ area = new MenuArea();
+ area->picIdL = PIC_MNU_SAVE_L;
+ area->picObjD = 0;
+ area->picObjL = _scene->getPictureObjectById(area->picIdL, 0);
+ area->picObjL->_flags &= 0xFFFB;
+ _areas.push_back(area);
+ }
+
+ area = new MenuArea();
+ area->picIdL = PIC_MNU_LOAD_L;
+ area->picObjD = 0;
+ area->picObjL = _scene->getPictureObjectById(area->picIdL, 0);
+ area->picObjL->_flags &= 0xFFFB;
+ _areas.push_back(area);
+
+ area = new MenuArea();
+ area->picIdL = PIC_MNU_RESTART_L;
+ area->picObjD = 0;
+ area->picObjL = _scene->getPictureObjectById(area->picIdL, 0);
+ area->picObjL->_flags &= 0xFFFB;
+ _areas.push_back(area);
+
+ area = new MenuArea();
+ area->picIdL = PIC_MNU_AUTHORS_L;
+ area->picObjD = 0;
+ area->picObjL = _scene->getPictureObjectById(area->picIdL, 0);
+ area->picObjL->_flags &= 0xFFFB;
+ _areas.push_back(area);
+
+ area = new MenuArea();
+ area->picIdL = PIC_MNU_SLIDER_L;
+ area->picObjD = _scene->getPictureObjectById(PIC_MNU_SLIDER_D, 0);
+ area->picObjD->_flags |= 4;
+ area->picObjL = _scene->getPictureObjectById(area->picIdL, 0);
+ area->picObjL->_flags &= 0xFFFB;
+ _areas.push_back(area);
+ _menuSliderIdx = _areas.size() - 1;
+
+ area = new MenuArea();
+ area->picIdL = PIC_MNU_MUSICSLIDER_L;
+ area->picObjD = _scene->getPictureObjectById(PIC_MNU_MUSICSLIDER_D, 0);
+ area->picObjD->_flags |= 4;
+ area->picObjL = _scene->getPictureObjectById(area->picIdL, 0);
+ area->picObjL->_flags &= 0xFFFB;
+ _areas.push_back(area);
+ _musicSliderIdx = _areas.size() - 1;
+
+ if (g_fp->_mainMenu_debugEnabled)
+ enableDebugMenuButton();
+
+ setSliderPos();
+}
+
+void ModalMainMenu::update() {
+ _scene->draw();
+}
+
+bool ModalMainMenu::handleMessage(ExCommand *message) {
+ if (message->_messageKind != 17)
+ return false;
+
+ Common::Point point;
+
+ if (message->_messageNum == 29) {
+ point.x = message->_x;
+ point.y = message->_y;
+
+ int numarea = checkHover(point);
+
+ if (numarea >= 0) {
+ if (numarea == _menuSliderIdx) {
+ _lastArea = _areas[_menuSliderIdx];
+ _sliderOffset = _lastArea->picObjL->_ox - point.x;
+
+ return false;
+ }
+
+ if (numarea == _musicSliderIdx) {
+ _lastArea = _areas[_musicSliderIdx];
+ _sliderOffset = _lastArea->picObjL->_ox - point.x;
+
+ return false;
+ }
+
+ _hoverAreaId = _areas[numarea]->picIdL;
+ }
+
+ return false;
+ }
+
+ if (message->_messageNum == 30) {
+ if (_lastArea)
+ _lastArea = 0;
+
+ return false;
+ }
+
+ if (message->_messageNum != 36)
+ return false;
+
+ if (message->_keyCode == 27)
+ _hoverAreaId = PIC_MNU_CONTINUE_L;
+ else
+ enableDebugMenu(message->_keyCode);
+
+ return false;
+}
+
+bool ModalMainMenu::init(int counterdiff) {
+ switch (_hoverAreaId) {
+ case PIC_MNU_RESTART_L:
+ g_fp->restartGame();
+
+ if (this == g_fp->_modalObject)
+ return false;
+
+ delete this;
+ break;
+
+ case PIC_MNU_EXIT_L:
+ {
+ ModalQuery *mq = new ModalQuery();
+
+ g_fp->_modalObject = mq;
+
+ mq->_parentObj = this;
+ mq->create(_scene, (PictureObject *)_scene->_picObjList[0], PIC_MEX_BGR);
+
+ _hoverAreaId = 0;
+
+ return true;
+ }
+
+ case PIC_MNU_DEBUG_L:
+ g_fp->_gameLoader->unloadScene(SC_MAINMENU);
+ g_fp->_sceneRect = _screct;
+
+ if (!g_fp->_currentScene)
+ error("ModalMainMenu::init: Bad state");
+
+ g_fp->_currentScene->_x = _bgX;
+ g_fp->_currentScene->_y = _bgY;
+
+ g_fp->_gameLoader->preloadScene(g_fp->_currentScene->_sceneId, SC_DBGMENU);
+
+ return false;
+
+ case PIC_MNU_CONTINUE_L:
+ if (!_mfield_34) {
+ g_fp->_gameLoader->unloadScene(SC_MAINMENU);
+ g_fp->_sceneRect = _screct;
+
+ if (g_fp->_currentScene) {
+ g_fp->_currentScene->_x = _bgX;
+ g_fp->_currentScene->_y = _bgY;
+ }
+
+ return false;
+ }
+
+ g_fp->restartGame();
+
+ if (this == g_fp->_modalObject)
+ return false;
+
+ delete this;
+ break;
+
+ case PIC_MNU_AUTHORS_L:
+ g_fp->_modalObject = new ModalCredits();
+ g_fp->_modalObject->_parentObj = this;
+
+ _hoverAreaId = 0;
+
+ return true;
+
+ case PIC_MNU_SAVE_L:
+ case PIC_MNU_LOAD_L:
+ {
+ ModalSaveGame *sg = new ModalSaveGame();
+
+ g_fp->_modalObject = sg;
+ g_fp->_modalObject->_parentObj = _parentObj;
+
+ int mode = 0;
+ if (_hoverAreaId == PIC_MNU_SAVE_L)
+ mode = 1;
+
+ sg->setup(g_fp->accessScene(SC_MAINMENU), mode);
+ sg->setScene(g_fp->accessScene(SC_MAINMENU));
+
+ sg->_rect = _screct;
+ sg->_oldBgX = _bgX;
+ sg->_oldBgY = _bgY;
+
+ delete this;
+ }
+
+ break;
+
+ default:
+ if (_lastArea) {
+ updateSliderPos();
+ } else {
+ g_fp->_cursorId = PIC_CSR_DEFAULT;
+
+ int idx = checkHover(g_fp->_mouseScreenPos);
+
+ if (idx < 0)
+ goto LABEL_40;
+
+ g_fp->_cursorId = PIC_CSR_DEFAULT;
+
+ if (idx != this->_menuSliderIdx && idx != this->_musicSliderIdx )
+ goto LABEL_40;
+ }
+
+ g_fp->_cursorId = PIC_CSR_LIFT;
+
+ LABEL_40:
+ g_fp->setCursor(g_fp->_cursorId);
+
+ updateVolume();
+
+ return true;
+ }
+
+ return true;
+}
+
+void ModalMainMenu::updateVolume() {
+ if (g_fp->_soundEnabled ) {
+ for (int s = 0; s < g_fp->_currSoundListCount; s++)
+ for (int i = 0; i < g_fp->_currSoundList1[s]->getCount(); i++) {
+ updateSoundVolume(g_fp->_currSoundList1[s]->getSoundByIndex(i));
+ }
+ }
+}
+
+void ModalMainMenu::updateSoundVolume(Sound *snd) {
+ if (!snd->_objectId)
+ return;
+
+ StaticANIObject *ani = g_fp->_currentScene->getStaticANIObject1ById(snd->_objectId, -1);
+ if (!ani)
+ return;
+
+ int a, b;
+
+ if (ani->_ox >= _screct.left) {
+ int par, pan;
+
+ if (ani->_ox <= _screct.right) {
+ int dx;
+
+ if (ani->_oy <= _screct.bottom) {
+ if (ani->_oy >= _screct.top) {
+ snd->setPanAndVolume(g_fp->_sfxVolume, 0);
+
+ return;
+ }
+ dx = _screct.top - ani->_oy;
+ } else {
+ dx = ani->_oy - _screct.bottom;
+ }
+
+ par = 0;
+
+ if (dx > 800) {
+ snd->setPanAndVolume(-3500, 0);
+ return;
+ }
+
+ pan = -3500;
+ a = g_fp->_sfxVolume - (-3500);
+ b = 800 - dx;
+ } else {
+ int dx = ani->_ox - _screct.right;
+
+ if (dx > 800) {
+ snd->setPanAndVolume(-3500, 0);
+ return;
+ }
+
+ pan = -3500;
+ par = dx * (-3500) / -800;
+ a = g_fp->_sfxVolume - (-3500);
+ b = 800 - dx;
+ }
+
+ int32 pp = b * a; //(0x51EB851F * b * a) >> 32) >> 8; // TODO FIXME
+
+ snd->setPanAndVolume(pan + (pp >> 31) + pp, par);
+
+ return;
+ }
+
+ int dx = _screct.left - ani->_ox;
+ if (dx <= 800) {
+ int32 s = 0x51EB851F * (800 - dx) * (g_fp->_sfxVolume - (-3500)); // TODO FIXME
+ int32 p = -3500 + (s >> 31) + (s >> 8);
+
+ if (p > g_fp->_sfxVolume)
+ p = g_fp->_sfxVolume;
+
+ snd->setPanAndVolume(p, dx * (-3500) / 800);
+ } else {
+ snd->setPanAndVolume(-3500, 0);
+ }
+
+ warning("STUB: ModalMainMenu::updateSoundVolume()");
+}
+
+void ModalMainMenu::updateSliderPos() {
+ if (_lastArea->picIdL == PIC_MNU_SLIDER_L) {
+ int x = g_fp->_mouseScreenPos.x + _sliderOffset;
+
+ if (x >= 65) {
+ if (x > 238)
+ x = 238;
+ } else {
+ x = 65;
+ }
+
+ _lastArea->picObjD->setOXY(x, _lastArea->picObjD->_oy);
+ _lastArea->picObjL->setOXY(x, _lastArea->picObjD->_oy);
+
+ int vol = 1000 * (3 * x - 195);
+ g_fp->_sfxVolume = vol / 173 - 3000;
+
+ if (!(vol / 173))
+ g_fp->_sfxVolume = -10000;
+
+ g_fp->updateSoundVolume();
+ } else if (_lastArea->picIdL == PIC_MNU_MUSICSLIDER_L) {
+ int x = g_fp->_mouseScreenPos.x + _sliderOffset;
+
+ if (x >= 65) {
+ if (x > 238)
+ x = 238;
+ } else {
+ x = 65;
+ }
+
+ _lastArea->picObjD->setOXY(x, _lastArea->picObjD->_oy);
+ _lastArea->picObjL->setOXY(x, _lastArea->picObjD->_oy);
+
+ g_fp->setMusicVolume(255 * (x - 65) / 173);
+ }
+}
+
+int ModalMainMenu::checkHover(Common::Point &point) {
+ for (uint i = 0; i < _areas.size(); i++) {
+ if (_areas[i]->picObjL->isPixelHitAtPos(point.x, point.y)) {
+ _areas[i]->picObjL->_flags |= 4;
+
+ return i;
+ } else {
+ _areas[i]->picObjL->_flags &= 0xFFFB;
+ }
+ }
+
+ if (isOverArea(_areas[_menuSliderIdx]->picObjL, &point)) {
+ _areas[_menuSliderIdx]->picObjL->_flags |= 4;
+
+ return _menuSliderIdx;
+ }
+
+ if (isOverArea(_areas[_musicSliderIdx]->picObjL, &point)) {
+ _areas[_musicSliderIdx]->picObjL->_flags |= 4;
+
+ return _musicSliderIdx;
+ }
+
+ return -1;
+}
+
+bool ModalMainMenu::isOverArea(PictureObject *obj, Common::Point *point) {
+ Common::Point p;
+
+ obj->getDimensions(&p);
+
+ int left = point->x - 8;
+ int right = point->x + 12;
+ int down = point->y - 11;
+ int up = point->y + 9;
+
+ if (left >= obj->_ox && right < obj->_ox + p.x && down >= obj->_oy && up < obj->_oy + p.y)
+ return true;
+
+ return false;
+}
+
+bool ModalMainMenu::isSaveAllowed() {
+ if (!g_fp->_isSaveAllowed)
+ return false;
+
+ if (g_fp->_aniMan->_flags & 0x100)
+ return false;
+
+ for (Common::Array<MessageQueue *>::iterator s = g_fp->_globalMessageQueueList->begin(); s != g_fp->_globalMessageQueueList->end(); ++s) {
+ if (!(*s)->_isFinished && ((*s)->getFlags() & 1))
+ return false;
+ }
+
+ return true;
+}
+
+void ModalMainMenu::enableDebugMenu(char c) {
+ const char deb[] = "DEBUGER";
+
+ if (c == deb[_debugKeyCount]) {
+ _debugKeyCount++;
+
+ if (deb[_debugKeyCount] )
+ return;
+
+ enableDebugMenuButton();
+ }
+
+ _debugKeyCount = 0;
+}
- _field_34 = 0;
+void ModalMainMenu::enableDebugMenuButton() {
+ MenuArea *area;
+
+ for (uint i = 0; i < _areas.size(); i++)
+ if (_areas[i]->picIdL == PIC_MNU_DEBUG_L)
+ return;
+
+ area = new MenuArea();
+ area->picIdL = PIC_MNU_DEBUG_L;
+ area->picObjD = 0;
+ area->picObjL = _scene->getPictureObjectById(area->picIdL, 0);
+ area->picObjL->_flags &= 0xFFFB;
+ _areas.push_back(area);
+}
+
+void ModalMainMenu::setSliderPos() {
+ int x = 173 * (g_fp->_sfxVolume + 3000) / 3000 + 65;
+ PictureObject *obj = _areas[_menuSliderIdx]->picObjD;
+
+ if (x >= 65) {
+ if (x > 238)
+ x = 238;
+ } else {
+ x = 65;
+ }
+
+ obj->setOXY(x, obj->_oy);
+ _areas[_menuSliderIdx]->picObjL->setOXY(x, obj->_oy);
+
+ x = 173 * g_fp->_musicVolume / 255 + 65;
+ obj = _areas[_musicSliderIdx]->picObjD;
+
+ if (x >= 65) {
+ if (x > 238)
+ x = 238;
+ } else {
+ x = 65;
+ }
+
+ obj->setOXY(x, obj->_oy);
+ _areas[_musicSliderIdx]->picObjL->setOXY(x, obj->_oy);
}
ModalHelp::ModalHelp() {
@@ -816,6 +1323,479 @@ void ModalHelp::launch() {
}
}
+ModalQuery::ModalQuery() {
+ _picObjList = 0;
+ _bg = 0;
+ _okBtn = 0;
+ _cancelBtn = 0;
+ _queryResult = -1;
+}
+
+ModalQuery::~ModalQuery() {
+ _bg->_flags &= 0xFFFB;
+ _cancelBtn->_flags &= 0xFFFB;
+ _okBtn->_flags &= 0xFFFB;
+}
+
+bool ModalQuery::create(Scene *sc, PictureObject *picObjList, int id) {
+ if (id == PIC_MEX_BGR) {
+ _bg = sc->getPictureObjectById(PIC_MEX_BGR, 0);
+
+ if (!_bg)
+ return false;
+
+ _okBtn = sc->getPictureObjectById(PIC_MEX_OK, 0);
+
+ if (!_okBtn)
+ return false;
+
+ _cancelBtn = sc->getPictureObjectById(PIC_MEX_CANCEL, 0);
+
+ if (!_cancelBtn)
+ return 0;
+ } else {
+ if (id != PIC_MOV_BGR)
+ return false;
+
+ _bg = sc->getPictureObjectById(PIC_MOV_BGR, 0);
+
+ if (!_bg)
+ return false;
+
+ _okBtn = sc->getPictureObjectById(PIC_MOV_OK, 0);
+
+ if (!_okBtn)
+ return false;
+
+ _cancelBtn = sc->getPictureObjectById(PIC_MOV_CANCEL, 0);
+
+ if (!_cancelBtn)
+ return false;
+ }
+
+ _queryResult = -1;
+ _picObjList = picObjList;
+
+ return true;
+}
+
+void ModalQuery::update() {
+ if (_picObjList)
+ _picObjList->draw();
+
+ _bg->draw();
+
+ if (_okBtn->_flags & 4)
+ _okBtn->draw();
+
+ if (_cancelBtn->_flags & 4)
+ _cancelBtn->draw();
+}
+
+bool ModalQuery::handleMessage(ExCommand *cmd) {
+ if (cmd->_messageKind == 17) {
+ if (cmd->_messageNum == 29) {
+ if (_okBtn->isPointInside(g_fp->_mouseScreenPos.x, g_fp->_mouseScreenPos.y)) {
+ _queryResult = 1;
+
+ return false;
+ }
+
+ if (_cancelBtn->isPointInside(g_fp->_mouseScreenPos.x, g_fp->_mouseScreenPos.y))
+ _queryResult = 0;
+ } else if (cmd->_messageNum == 36 && cmd->_keyCode == 27) {
+ _queryResult = 0;
+
+ return false;
+ }
+ }
+
+ return false;
+}
+
+bool ModalQuery::init(int counterdiff) {
+ if (_okBtn->isPointInside(g_fp->_mouseScreenPos.x, g_fp->_mouseScreenPos.y))
+ _okBtn->_flags |= 4;
+ else
+ _okBtn->_flags &= 0xFFFB;
+
+ if (_cancelBtn->isPointInside(g_fp->_mouseScreenPos.x, g_fp->_mouseScreenPos.y))
+ _cancelBtn->_flags |= 4;
+ else
+ _cancelBtn->_flags &= 0xFFFB;
+
+ if (_queryResult == -1) {
+ return true;
+ } else {
+ if (_bg->_id == PIC_MEX_BGR) {
+ _cancelBtn->_flags &= 0xFFFB;
+ _okBtn->_flags &= 0xFFFB;
+
+ if (_queryResult == 1) {
+ warning("STUB: ModalQuery::init()");
+ //sceneFade(g_vrtDrawHandle, (Scene *)this->_picObjList, 0);
+
+ //if (inputArFlag) {
+ // g_needRestart = 1;
+ // return 0;
+ //}
+ //SendMessageA(hwndCallback, WM_DESTROY, 0, 0);
+ }
+ }
+ }
+
+ return false;
+}
+
+ModalSaveGame::ModalSaveGame() {
+ _oldBgX = 0;
+ _oldBgY = 0;
+
+ _bgr = 0;
+ _okD = 0;
+ _okL = 0;
+ _cancelD = 0;
+ _cancelL = 0;
+ _emptyD = 0;
+ _emptyL = 0;
+ _queryRes = -1;
+ _rect = g_fp->_sceneRect;
+ _queryDlg = 0;
+ _mode = 1;
+
+ _objtype = kObjTypeModalSaveGame;
+}
+
+ModalSaveGame::~ModalSaveGame() {
+ g_fp->_sceneRect = _rect;
+
+ _arrayD.clear();
+ _arrayL.clear();
+
+ for (uint i = 0; i < _files.size(); i++)
+ free(_files[i]);
+
+ _files.clear();
+}
+
+void ModalSaveGame::setScene(Scene *sc) {
+ _queryRes = -1;
+ _menuScene = sc;
+}
+
+void ModalSaveGame::processKey(int key) {
+ if (key == 27)
+ _queryRes = 0;
+}
+
+bool ModalSaveGame::init(int counterdiff) {
+ if (_queryDlg) {
+ if (!_queryDlg->init(counterdiff)) {
+ if (!_queryDlg->getQueryResult())
+ _queryRes = -1;
+
+ delete _queryDlg;
+ _queryDlg = 0;
+ }
+
+ return true;
+ }
+
+ if (_queryRes == -1)
+ return true;
+
+ g_fp->_sceneRect = _rect;
+
+ if (g_fp->_currentScene) {
+ g_fp->_currentScene->_x = _oldBgX;
+ g_fp->_currentScene->_y = _oldBgY;
+ }
+
+ if (!_queryRes) {
+ ModalMainMenu *m = new ModalMainMenu;
+
+ g_fp->_modalObject = m;
+
+ m->_parentObj = _parentObj;
+ m->_screct = _rect;
+ m->_bgX = _oldBgX;
+ m->_bgY = _oldBgY;
+
+ delete this;
+
+ return true;
+ }
+
+ return false;
+}
+
+void ModalSaveGame::setup(Scene *sc, int mode) {
+ _files.clear();
+ _arrayL.clear();
+ _arrayD.clear();
+ _mode = mode;
+
+ if (mode) {
+ _bgr = sc->getPictureObjectById(PIC_MSV_BGR, 0);
+ _cancelD = sc->getPictureObjectById(PIC_MSV_CANCEL_D, 0);
+ _cancelL = sc->getPictureObjectById(PIC_MSV_CANCEL_L, 0);
+ _okD = sc->getPictureObjectById(PIC_MSV_OK_D, 0);
+ _okL = sc->getPictureObjectById(PIC_MSV_OK_L, 0);
+ _emptyD = sc->getPictureObjectById(PIC_MSV_EMPTY_D, 0);
+ _emptyL = sc->getPictureObjectById(PIC_MSV_EMPTY_L, 0);
+ } else {
+ _bgr = sc->getPictureObjectById(PIC_MLD_BGR, 0);
+ _cancelD = sc->getPictureObjectById(PIC_MLD_CANCEL_D, 0);
+ _cancelL = sc->getPictureObjectById(PIC_MLD_CANCEL_L, 0);
+ _okD = sc->getPictureObjectById(PIC_MLD_OK_D, 0);
+ _okL = sc->getPictureObjectById(PIC_MLD_OK_L, 0);
+ _emptyD = sc->getPictureObjectById(PIC_MSV_EMPTY_D, 0);
+ _emptyL = sc->getPictureObjectById(PIC_MSV_EMPTY_D, 0);
+ }
+
+ _fullD = sc->getPictureObjectById(PIC_MSV_FULL_D, 0);
+ _fullL = sc->getPictureObjectById(PIC_MSV_FULL_L, 0);
+ _queryRes = -1;
+
+ _arrayL.push_back(sc->getPictureObjectById(PIC_MSV_0_D, 0));
+ _arrayD.push_back(sc->getPictureObjectById(PIC_MSV_0_L, 0));
+ _arrayL.push_back(sc->getPictureObjectById(PIC_MSV_1_D, 0));
+ _arrayD.push_back(sc->getPictureObjectById(PIC_MSV_1_L, 0));
+ _arrayL.push_back(sc->getPictureObjectById(PIC_MSV_2_D, 0));
+ _arrayD.push_back(sc->getPictureObjectById(PIC_MSV_2_L, 0));
+ _arrayL.push_back(sc->getPictureObjectById(PIC_MSV_3_D, 0));
+ _arrayD.push_back(sc->getPictureObjectById(PIC_MSV_3_L, 0));
+ _arrayL.push_back(sc->getPictureObjectById(PIC_MSV_4_D, 0));
+ _arrayD.push_back(sc->getPictureObjectById(PIC_MSV_4_L, 0));
+ _arrayL.push_back(sc->getPictureObjectById(PIC_MSV_5_D, 0));
+ _arrayD.push_back(sc->getPictureObjectById(PIC_MSV_5_L, 0));
+ _arrayL.push_back(sc->getPictureObjectById(PIC_MSV_6_D, 0));
+ _arrayD.push_back(sc->getPictureObjectById(PIC_MSV_6_L, 0));
+ _arrayL.push_back(sc->getPictureObjectById(PIC_MSV_7_D, 0));
+ _arrayD.push_back(sc->getPictureObjectById(PIC_MSV_7_L, 0));
+ _arrayL.push_back(sc->getPictureObjectById(PIC_MSV_8_D, 0));
+ _arrayD.push_back(sc->getPictureObjectById(PIC_MSV_8_L, 0));
+ _arrayL.push_back(sc->getPictureObjectById(PIC_MSV_9_D, 0));
+ _arrayD.push_back(sc->getPictureObjectById(PIC_MSV_9_L, 0));
+ _arrayL.push_back(sc->getPictureObjectById(PIC_MSV_DOTS_D, 0));
+ _arrayD.push_back(sc->getPictureObjectById(PIC_MSV_DOTS_L, 0));
+ _arrayL.push_back(sc->getPictureObjectById(PIC_MSV_DOT_D, 0));
+ _arrayD.push_back(sc->getPictureObjectById(PIC_MSV_DOT_L, 0));
+ _arrayL.push_back(sc->getPictureObjectById(PIC_MSV_SPACE_D, 0));
+ _arrayD.push_back(sc->getPictureObjectById(PIC_MSV_SPACE_L, 0));
+
+ Common::Point point;
+
+ int x = _bgr->_ox + _bgr->getDimensions(&point)->x / 2;
+ int y = _bgr->_oy + 90;
+ int w;
+ FileInfo *fileinfo;
+
+ for (int i = 0; i < 7; i++) {
+ fileinfo = new FileInfo;
+ memset(fileinfo, 0, sizeof(FileInfo));
+
+ strncpy(fileinfo->filename, getSavegameFile(i), 160);
+
+ if (!getFileInfo(i, fileinfo)) {
+ fileinfo->empty = true;
+ w = _emptyD->getDimensions(&point)->x;
+ } else {
+ w = 0;
+
+ for (int j = 0; j < 16; j++) {
+ _arrayL[j]->getDimensions(&point);
+ w += point.x + 2;
+ }
+ }
+
+ fileinfo->fx1 = x - w / 2;
+ fileinfo->fx2 = x + w / 2;
+ fileinfo->fy1 = y;
+ fileinfo->fy2 = y + _emptyD->getDimensions(&point)->y;
+
+ _files.push_back(fileinfo);
+
+ y = fileinfo->fy2 + 3;
+ }
+}
+
+char *ModalSaveGame::getSaveName() {
+ if (_queryRes < 0)
+ return 0;
+
+ return _files[_queryRes]->filename;
+}
+
+bool ModalSaveGame::getFileInfo(int slot, FileInfo *fileinfo) {
+ Common::InSaveFile *f = g_system->getSavefileManager()->openForLoading(
+ Fullpipe::getSavegameFile(slot));
+
+ if (!f)
+ return false;
+
+ Fullpipe::FullpipeSavegameHeader header;
+ Fullpipe::readSavegameHeader(f, header);
+ delete f;
+
+ // Create the return descriptor
+ SaveStateDescriptor desc(slot, header.saveName);
+ char res[17];
+
+ snprintf(res, 17, "%s %s", desc.getSaveDate().c_str(), desc.getSaveTime().c_str());
+
+ for (int i = 0; i < 16; i++) {
+ switch(res[i]) {
+ case '.':
+ fileinfo->date[i] = 11;
+ break;
+ case ' ':
+ fileinfo->date[i] = 12;
+ break;
+ case ':':
+ fileinfo->date[i] = 10;
+ break;
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ fileinfo->date[i] = res[i] - '0';
+ break;
+ default:
+ error("Incorrect date format: %s", res);
+ }
+ }
+
+ return true;
+}
+
+void ModalSaveGame::update() {
+ if (_menuScene)
+ _menuScene->draw();
+
+ _bgr->draw();
+
+ if (_queryDlg) {
+ _queryDlg->update();
+
+ return;
+ }
+
+ g_fp->_cursorId = PIC_CSR_DEFAULT;
+
+ g_fp->setCursor(g_fp->_cursorId);
+
+ Common::Point point;
+
+ for (uint i = 0; i < _files.size(); i++) {
+ if (g_fp->_mouseScreenPos.x < _files[i]->fx1 || g_fp->_mouseScreenPos.x > _files[i]->fx2 ||
+ g_fp->_mouseScreenPos.y < _files[i]->fy1 || g_fp->_mouseScreenPos.y > _files[i]->fy2 ) {
+ if (_files[i]->empty) {
+ _emptyD->setOXY(_files[i]->fx1, _files[i]->fy1);
+ _emptyD->draw();
+ } else {
+ int x = _files[i]->fx1;
+
+ for (int j = 0; j < 16; j++) {
+ _arrayL[_files[i]->date[j]]->setOXY(x + 1, _files[i]->fy1);
+ _arrayL[_files[i]->date[j]]->draw();
+
+ x += _arrayL[_files[i]->date[j]]->getDimensions(&point)->x + 2;
+ }
+ }
+ } else {
+ if (_files[i]->empty) {
+ _emptyL->setOXY(_files[i]->fx1, _files[i]->fy1);
+ _emptyL->draw();
+ } else {
+ int x = _files[i]->fx1;
+
+ for (int j = 0; j < 16; j++) {
+ _arrayD[_files[i]->date[j]]->setOXY(x + 1, _files[i]->fy1);
+ _arrayD[_files[i]->date[j]]->draw();
+
+ x += _arrayD[_files[i]->date[j]]->getDimensions(&point)->x + 2;
+ }
+ }
+ }
+ }
+ if (_cancelL->isPixelHitAtPos(g_fp->_mouseScreenPos.x, g_fp->_mouseScreenPos.y))
+ _cancelL->draw();
+ else if (_okL->isPixelHitAtPos(g_fp->_mouseScreenPos.x, g_fp->_mouseScreenPos.y))
+ _okL->draw();
+}
+
+bool ModalSaveGame::handleMessage(ExCommand *cmd) {
+ if (_queryDlg)
+ return _queryDlg->handleMessage(cmd);
+
+ if (cmd->_messageNum == 29)
+ processMouse(cmd->_x, cmd->_y);
+ else if (cmd->_messageNum == 36)
+ processKey(cmd->_keyCode);
+
+ return false;
+}
+
+void ModalSaveGame::processMouse(int x, int y) {
+ for (uint i = 0; i < _files.size(); i++) {
+ if (x >= _files[i]->fx1 && x <= _files[i]->fx2 && y >= _files[i]->fy1 && y <= _files[i]->fy2) {
+ _queryRes = i + 1;
+
+ if (_mode) {
+ if (!_files[i]->empty) {
+ _queryDlg = new ModalQuery;
+
+ _queryDlg->create(_menuScene, 0, PIC_MOV_BGR);
+ }
+ }
+
+ return;
+ }
+ }
+
+ if (_cancelL->isPixelHitAtPos(x, y))
+ _queryRes = 0;
+}
+
+void ModalSaveGame::saveload() {
+ if (_objtype != kObjTypeModalSaveGame)
+ return;
+
+ if (_mode) {
+ if (getSaveName()) {
+ bool allowed = true;
+
+ for (Common::Array<MessageQueue *>::iterator s = g_fp->_globalMessageQueueList->begin(); s != g_fp->_globalMessageQueueList->end(); ++s) {
+ if (!(*s)->_isFinished && ((*s)->getFlags() & 1))
+ allowed = false;
+ }
+
+ if (g_fp->_isSaveAllowed && allowed)
+ g_fp->_gameLoader->writeSavegame(g_fp->_currentScene, getSaveName());
+ }
+ } else {
+ if (getSaveName()) {
+ if (_parentObj) {
+ delete _parentObj;
+
+ _parentObj = 0;
+ }
+
+ g_fp->stopAllSoundStreams();
+ g_fp->stopSoundStream2();
+
+ g_fp->_gameLoader->readSavegame(getSaveName());
+ }
+ }
+}
+
void FullpipeEngine::openHelp() {
if (!_modalObject) {
ModalHelp *help = new ModalHelp;
diff --git a/engines/fullpipe/modal.h b/engines/fullpipe/modal.h
index 7ed433b125..01d8e6b0ee 100644
--- a/engines/fullpipe/modal.h
+++ b/engines/fullpipe/modal.h
@@ -27,14 +27,26 @@ namespace Fullpipe {
class PictureObject;
class Picture;
+class Sound;
+
+struct FileInfo {
+ char filename[260];
+ bool empty;
+ char date[16];
+ int fx1;
+ int fx2;
+ int fy1;
+ int fy2;
+};
class BaseModalObject {
public:
BaseModalObject *_parentObj;
+ ObjType _objtype;
public:
- BaseModalObject() : _parentObj(0) {}
+ BaseModalObject() : _parentObj(0) { _objtype = kObjTypeDefault; }
virtual ~BaseModalObject() {}
@@ -147,19 +159,47 @@ class ModalCredits : public BaseModalObject {
virtual void saveload() {}
};
+struct MenuArea {
+ int picIdL;
+ PictureObject *picObjD;
+ PictureObject *picObjL;
+};
+
class ModalMainMenu : public BaseModalObject {
public:
- int _field_34;
+ Scene *_scene;
+ int _hoverAreaId;
+ Common::Array<MenuArea *> _areas;
+ int _menuSliderIdx;
+ int _musicSliderIdx;
+ MenuArea *_lastArea;
+ int _sliderOffset;
+ int _mfield_34;
+ Common::Rect _screct;
+ int _bgX;
+ int _bgY;
+ int _debugKeyCount;
public:
ModalMainMenu();
virtual ~ModalMainMenu() {}
virtual bool pollEvent() { return true; }
- virtual bool handleMessage(ExCommand *message) { return false; }
- virtual bool init(int counterdiff) { return true; }
- virtual void update() {}
+ virtual bool handleMessage(ExCommand *message);
+ virtual bool init(int counterdiff);
+ virtual void update();
virtual void saveload() {}
+
+private:
+ bool isSaveAllowed();
+ void enableDebugMenuButton();
+ void setSliderPos();
+ void enableDebugMenu(char c);
+ int checkHover(Common::Point &point);
+ void updateVolume();
+ void updateSoundVolume(Sound *snd);
+ void updateSliderPos();
+ bool isOverArea(PictureObject *obj, Common::Point *point);
};
class ModalHelp : public BaseModalObject {
@@ -187,25 +227,66 @@ public:
class ModalQuery : public BaseModalObject {
public:
ModalQuery();
- virtual ~ModalQuery() {}
+ virtual ~ModalQuery();
virtual bool pollEvent() { return true; }
- virtual bool handleMessage(ExCommand *message) { return false; }
- virtual bool init(int counterdiff) { return true; }
- virtual void update() {}
+ virtual bool handleMessage(ExCommand *message);
+ virtual bool init(int counterdiff);
+ virtual void update();
virtual void saveload() {}
+
+ bool create(Scene *sc, PictureObject *picObjList, int picId);
+ int getQueryResult() { return _queryResult; }
+
+
+private:
+ PictureObject *_picObjList;
+ PictureObject *_bg;
+ PictureObject *_okBtn;
+ PictureObject *_cancelBtn;
+ int _queryResult;
+
};
class ModalSaveGame : public BaseModalObject {
public:
ModalSaveGame();
- virtual ~ModalSaveGame() {}
+ virtual ~ModalSaveGame();
virtual bool pollEvent() { return true; }
- virtual bool handleMessage(ExCommand *message) { return false; }
- virtual bool init(int counterdiff) { return true; }
- virtual void update() {}
- virtual void saveload() {}
+ virtual bool handleMessage(ExCommand *message);
+ virtual bool init(int counterdiff);
+ virtual void update();
+ virtual void saveload();
+
+ void processMouse(int x, int y);
+
+ void setScene(Scene *sc);
+ void setup(Scene *sc, int mode);
+ void processKey(int key);
+
+ char *getSaveName();
+ bool getFileInfo(int slot, FileInfo *fileinfo);
+
+ Common::Rect _rect;
+ int _oldBgX;
+ int _oldBgY;
+ PictureObject *_bgr;
+ PictureObject *_okD;
+ PictureObject *_okL;
+ PictureObject *_cancelD;
+ PictureObject *_cancelL;
+ PictureObject *_emptyD;
+ PictureObject *_emptyL;
+ PictureObject *_fullD;
+ PictureObject *_fullL;
+ Scene *_menuScene;
+ int _mode;
+ ModalQuery *_queryDlg;
+ Common::Array <FileInfo *> _files;
+ Common::Array <PictureObject *> _arrayL;
+ Common::Array <PictureObject *> _arrayD;
+ int _queryRes;
};
diff --git a/engines/fullpipe/module.mk b/engines/fullpipe/module.mk
index db97fa202b..3962fe64ba 100644
--- a/engines/fullpipe/module.mk
+++ b/engines/fullpipe/module.mk
@@ -52,6 +52,7 @@ MODULE_OBJS = \
scenes/scene26.o \
scenes/scene27.o \
scenes/scene28.o \
+ scenes/scene29.o \
scenes/scene30.o \
scenes/scene31.o \
scenes/scene32.o \
diff --git a/engines/fullpipe/motion.cpp b/engines/fullpipe/motion.cpp
index 0881a19692..0b1c159337 100644
--- a/engines/fullpipe/motion.cpp
+++ b/engines/fullpipe/motion.cpp
@@ -125,9 +125,10 @@ void MctlCompound::addObject(StaticANIObject *obj) {
}
int MctlCompound::removeObject(StaticANIObject *obj) {
- warning("STUB: MctlCompound::removeObject()");
+ for (uint i = 0; i < _motionControllers.size(); i++)
+ _motionControllers[i]->_motionControllerObj->removeObject(obj);
- return 0;
+ return 1;
}
void MctlCompound::initMovGraph2() {
@@ -159,10 +160,72 @@ void MctlCompound::freeItems() {
_motionControllers[i]->_motionControllerObj->freeItems();
}
-MessageQueue *MctlCompound::method34(StaticANIObject *subj, int xpos, int ypos, int fuzzyMatch, int staticsId) {
- warning("STUB: MctlCompound::method34()");
+MessageQueue *MctlCompound::method34(StaticANIObject *ani, int sourceX, int sourceY, int fuzzyMatch, int staticsId) {
+ int idx = -1;
+ int sourceIdx = -1;
- return 0;
+ if (!ani)
+ return 0;
+
+ for (uint i = 0; i < _motionControllers.size(); i++) {
+ if (_motionControllers[i]->_movGraphReactObj) {
+ if (_motionControllers[i]->_movGraphReactObj->pointInRegion(ani->_ox, ani->_oy)) {
+ idx = i;
+ break;
+ }
+ }
+ }
+
+ for (uint i = 0; i < _motionControllers.size(); i++) {
+ if (_motionControllers[i]->_movGraphReactObj) {
+ if (_motionControllers[i]->_movGraphReactObj->pointInRegion(sourceX, sourceY)) {
+ sourceIdx = i;
+ break;
+ }
+ }
+ }
+
+ if (idx == -1)
+ return 0;
+
+ if (sourceIdx == -1)
+ return 0;
+
+ if (idx == sourceIdx)
+ return _motionControllers[idx]->_motionControllerObj->method34(ani, sourceX, sourceY, fuzzyMatch, staticsId);
+
+ MctlConnectionPoint *cp = findClosestConnectionPoint(ani->_ox, ani->_oy, idx, sourceX, sourceY, sourceIdx, &sourceIdx);
+
+ if (!cp)
+ return 0;
+
+ MessageQueue *mq = _motionControllers[idx]->_motionControllerObj->doWalkTo(ani, cp->_connectionX, cp->_connectionY, 1, cp->_field_14);
+
+ if (!mq)
+ return 0;
+
+ for (uint i = 0; i < cp->_messageQueueObj->getCount(); i++) {
+ ExCommand *ex = new ExCommand(cp->_messageQueueObj->getExCommandByIndex(i));
+
+ ex->_excFlags |= 2;
+
+ mq->addExCommandToEnd(ex);
+ }
+
+ ExCommand *ex = new ExCommand(ani->_id, 51, 0, sourceX, sourceY, 0, 1, 0, 0, 0);
+
+ ex->_excFlags |= 2;
+ ex->_field_20 = fuzzyMatch;
+ ex->_keyCode = ani->_okeyCode;
+
+ mq->addExCommandToEnd(ex);
+
+ if (!mq->chain(ani)) {
+ delete mq;
+ return 0;
+ }
+
+ return mq;
}
MessageQueue *MctlCompound::doWalkTo(StaticANIObject *subj, int xpos, int ypos, int fuzzyMatch, int staticsId) {
@@ -372,7 +435,20 @@ MctlConnectionPoint *MctlCompound::findClosestConnectionPoint(int ox, int oy, in
}
void MctlCompound::replaceNodeX(int from, int to) {
- warning("STUB: MctlCompound::replaceNodeX()");
+ for (uint i = 0; i < _motionControllers.size(); i++) {
+ if (_motionControllers[i]->_motionControllerObj->_objtype == kObjTypeMovGraph) {
+ MovGraph *gr = (MovGraph *)_motionControllers[i]->_motionControllerObj;
+
+ for (ObList::iterator n = gr->_nodes.begin(); n != gr->_nodes.end(); ++n) {
+ MovGraphNode *node = (MovGraphNode *)*n;
+
+ if (node->_x == from)
+ node->_x = to;
+ }
+
+ gr->calcNodeDistancesAndAngles();
+ }
+ }
}
MctlConnectionPoint::MctlConnectionPoint() {
@@ -431,7 +507,7 @@ bool MctlCompoundArray::load(MfcArchive &file) {
MovGraphItem::MovGraphItem() {
ani = 0;
field_4 = 0;
- field_8 = 0;
+ movarr = 0;
field_C = 0;
field_10 = 0;
field_14 = 0;
@@ -439,7 +515,7 @@ MovGraphItem::MovGraphItem() {
field_1C = 0;
field_20 = 0;
field_24 = 0;
- items = 0;
+ movitems = 0;
count = 0;
field_30 = 0;
field_34 = 0;
@@ -447,16 +523,29 @@ MovGraphItem::MovGraphItem() {
field_3C = 0;
}
+void MovGraphItem::free() {
+ warning("STUB: MovGraphItem::free()");
+}
+
int MovGraph_messageHandler(ExCommand *cmd);
-int MovGraphCallback(int a1, int a2, int a3) {
- warning("STUB: MovgraphCallback");
+Common::Array<MovArr *> *movGraphCallback(StaticANIObject *ani, Common::Array<MovItem *> *items, signed int counter) {
+ int residx = 0;
+ int itemidx = 0;
- return 0;
+ while (counter > 1) {
+ if ((*items)[itemidx]->_mfield_4 > (*items)[itemidx + 1]->_mfield_4)
+ residx = itemidx;
+
+ counter--;
+ itemidx++;
+ }
+
+ return (*items)[residx]->movarr;
}
MovGraph::MovGraph() {
- _callback1 = MovGraphCallback;
+ _callback1 = movGraphCallback;
_field_44 = 0;
insertMessageHandler(MovGraph_messageHandler, getMessageHandlersCount() - 1, 129);
@@ -500,10 +589,18 @@ int MovGraph::removeObject(StaticANIObject *obj) {
}
void MovGraph::freeItems() {
- warning("STUB: MovGraph::freeItems()");
-}
+ for (uint i = 0; i < _items.size(); i++) {
+ _items[i]->free();
+
+ for (uint j = 0; j < _items[i]->movarr->size(); j++)
+ delete (*_items[i]->movarr)[j];
-int MovGraph::method28() {
+ delete _items[i]->movarr;
+ }
+
+ _items.clear();
+}
+Common::Array<MovItem *> *MovGraph::method28(StaticANIObject *ani, int x, int y, int flag1, int *rescount) {
warning("STUB: MovGraph::method28()");
return 0;
@@ -514,10 +611,77 @@ int MovGraph::method2C(StaticANIObject *obj, int x, int y) {
return method3C(obj, 1);
}
-MessageQueue *MovGraph::method34(StaticANIObject *subj, int xpos, int ypos, int fuzzyMatch, int staticsId) {
- warning("STUB: MovGraph::method34()");
+MessageQueue *MovGraph::method34(StaticANIObject *ani, int xpos, int ypos, int fuzzyMatch, int staticsId) {
+ if (!ani) {
+ if (!_items.size())
+ return 0;
+
+ ani = _items[0]->ani;
+ }
- return 0;
+ if (ABS(ani->_ox - xpos) < 50 && ABS(ani->_oy - ypos) < 50)
+ return 0;
+
+ if (!ani->isIdle())
+ return 0;
+
+ if (ani->_flags & 0x100)
+ return 0;
+
+ int count;
+ Common::Array<MovItem *> *movitems = method28(ani, xpos, ypos, fuzzyMatch, &count);
+
+ if (!movitems)
+ return 0;
+
+ if (ani->_movement) {
+ Common::Point point;
+
+ ani->calcStepLen(&point);
+
+ MessageQueue *mq = sub1(ani, ani->_ox - point.x, ani->_oy - point.y, ani->_movement->_staticsObj1->_staticsId, xpos, ypos, 0, fuzzyMatch);
+
+ if (!mq || !mq->getExCommandByIndex(0))
+ return 0;
+
+ ExCommand *ex = mq->getExCommandByIndex(0);
+
+ if ((ex->_messageKind != 1 && ex->_messageKind != 20) || ex->_messageNum != ani->_movement->_id ||
+ (ex->_field_14 >= 1 && ex->_field_14 <= ani->_movement->_currDynamicPhaseIndex)) {
+ mq = new MessageQueue(g_fp->_globalMessageQueueList->compact());
+
+ ex = new ExCommand(ani->_id, 21, 0, 0, 0, 0, 1, 0, 0, 0);
+ ex->_keyCode = ani->_okeyCode;
+ ex->_field_3C = 1;
+ ex->_field_24 = 0;
+ mq->addExCommandToEnd(ex);
+
+ ex = new ExCommand(ani->_id, 51, 0, xpos, ypos, 0, 1, 0, 0, 0);
+ ex->_keyCode = ani->_okeyCode;
+ ex->_field_3C = 1;
+ ex->_field_24 = 0;
+ ex->_field_20 = fuzzyMatch;
+ mq->addExCommandToEnd(ex);
+
+ if (mq->chain(0))
+ return mq;
+
+ delete mq;
+
+ return 0;
+ }
+
+ int count2;
+
+ ani->setSomeDynamicPhaseIndex(ex->_field_14);
+ method28(ani, xpos, ypos, fuzzyMatch, &count2);
+
+ int idx = getItemIndexByStaticAni(ani);
+ count = _items[idx]->count;
+ movitems = _items[idx]->movitems;
+ }
+
+ return method50(ani, _callback1(ani, movitems, count), staticsId);
}
int MovGraph::changeCallback() {
@@ -532,19 +696,129 @@ int MovGraph::method3C(StaticANIObject *ani, int flag) {
return 0;
}
-int MovGraph::method44() {
- warning("STUB: MovGraph::method44()");
+bool MovGraph::method44(StaticANIObject *ani, int x, int y) {
+ int idx = getItemIndexByStaticAni(ani);
+ MovArr m;
- return 0;
+ if (idx != -1) {
+ if (x != -1 || y != -1) {
+ int counter;
+
+ Common::Array<MovItem *> *movitem = method28(ani, x, y, 0, &counter);
+
+ if (movitem) {
+ Common::Array<MovArr *> *movarr = _callback1(ani, movitem, counter);
+ int cnt = (*movarr)[0]->_movStepCount;
+
+ if (cnt > 0) {
+ if ((*movarr)[0]->_movSteps[cnt - 1].link->_flags & 0x4000000)
+ return true;
+ }
+ }
+ } else if (calcChunk(idx, ani->_ox, ani->_oy, &m, 0) && m._link && (m._link->_flags & 0x4000000)) {
+ return true;
+ }
+ }
+
+ return false;
}
MessageQueue *MovGraph::doWalkTo(StaticANIObject *subj, int xpos, int ypos, int fuzzyMatch, int staticsId) {
- warning("STUB: MovGraph::doWalkTo()");
+ PicAniInfo picAniInfo;
+ int ss;
+
+ Common::Array<MovItem *> *movitem = method28(subj, xpos, ypos, fuzzyMatch, &ss);
+
+ subj->getPicAniInfo(&picAniInfo);
+
+ if (movitem) {
+ Common::Array<MovArr *> *goal = _callback1(subj, movitem, ss);
+ int idx = getItemIndexByStaticAni(subj);
+
+ for (int i = 0; i < _items[idx]->count; i++) {
+ if (_items[idx]->movitems->operator[](i)->movarr == goal) {
+ if (subj->_movement) {
+ Common::Point point;
+
+ subj->calcStepLen(&point);
+
+ MessageQueue *mq = sub1(subj, subj->_ox - point.x, subj->_oy - point.y, subj->_movement->_staticsObj1->_staticsId, xpos, ypos, 0, fuzzyMatch);
+
+ if (!mq || !mq->getExCommandByIndex(0))
+ return 0;
+
+ ExCommand *ex = mq->getExCommandByIndex(0);
+
+ if ((ex->_messageKind != 1 && ex->_messageKind != 20) ||
+ ex->_messageNum != subj->_movement->_id ||
+ (ex->_field_14 >= 1 && ex->_field_14 <= subj->_movement->_currDynamicPhaseIndex))
+ subj->playIdle();
+ }
+ }
+ }
+ }
+
+ movitem = method28(subj, xpos, ypos, fuzzyMatch, &ss);
+ if (movitem) {
+ Common::Array<MovArr *> *goal = _callback1(subj, movitem, ss);
+ int idx = getItemIndexByStaticAni(subj);
+
+ if (_items[idx]->count > 0) {
+ int arridx = 0;
+
+ while (_items[idx]->movitems->operator[](arridx)->movarr != goal) {
+ arridx++;
+
+ if (arridx >= _items[idx]->count) {
+ subj->setPicAniInfo(&picAniInfo);
+ return 0;
+ }
+ }
+
+ _items[idx]->movarr->clear();
+
+ for (int i = 0; i < (*_items[idx]->movitems->operator[](arridx)->movarr)[i]->_movStepCount; i++) {
+ MovArr *m = new MovArr;
+
+ *m = *(*_items[idx]->movitems->operator[](arridx)->movarr)[i];
+ }
+
+ _items[idx]->field_10 = -1;
+ _items[idx]->field_14 = 0;
+
+ MessageQueue *mq = fillMGMinfo(_items[idx]->ani, (*_items[idx]->movarr)[0], staticsId);
+ if (mq) {
+ ExCommand *ex = new ExCommand();
+ ex->_messageKind = 17;
+ ex->_messageNum = 54;
+ ex->_parentId = subj->_id;
+ ex->_field_3C = 1;
+ mq->addExCommandToEnd(ex);
+ }
+ subj->setPicAniInfo(&picAniInfo);
+
+ return mq;
+ }
+ }
+
+ subj->setPicAniInfo(&picAniInfo);
return 0;
}
-int MovGraph::method50() {
+MessageQueue *MovGraph::sub1(StaticANIObject *ani, int x, int y, int a5, int x1, int y1, int a8, int a9) {
+ warning("STUB: *MovGraph::sub1()");
+
+ return 0;
+}
+
+MessageQueue *MovGraph::fillMGMinfo(StaticANIObject *ani, MovArr *movarr, int staticsId) {
+ warning("STUB: *MovGraph::fillMGMinfo()");
+
+ return 0;
+}
+
+MessageQueue *MovGraph::method50(StaticANIObject *ani, Common::Array<MovArr *> *movarr, int staticsId) {
warning("STUB: MovGraph::method50()");
return 0;
@@ -598,6 +872,250 @@ void MovGraph::calcNodeDistancesAndAngles() {
}
}
+bool MovGraph::findClosestLink(int unusedArg, Common::Point *p, MovArr *movarr) {
+ MovGraphLink *link = 0;
+ double mindist = 1.0e20;
+ int resx = 0, resy = 0;
+
+ for (ObList::iterator i = _links.begin(); i != _links.end(); ++i) {
+ MovGraphLink *lnk = (MovGraphLink *)*i;
+
+ if ((lnk->_flags & 0x10000000) && !(lnk->_flags & 0x20000000) ) {
+ double dx1 = lnk->_movGraphNode1->_x - p->x;
+ double dy1 = lnk->_movGraphNode1->_y - p->y;
+ double dx2 = lnk->_movGraphNode2->_x - p->x;
+ double dy2 = lnk->_movGraphNode2->_y - p->y;
+ double dx3 = lnk->_movGraphNode2->_x - lnk->_movGraphNode1->_x;
+ double dy3 = lnk->_movGraphNode2->_y - lnk->_movGraphNode1->_y;
+ double sq1 = sqrt(dy1 * dy1 + dx1 * dx1);
+ double sdist = (dy3 * dy1 + dx3 * dx1) / lnk->_distance / sq1;
+ double ldist = sdist * sq1;
+ double dist = sqrt(1.0 - sdist * sdist) * sq1;
+
+ if (ldist < 0.0) {
+ ldist = 0.0;
+ dist = sqrt(dx1 * dx1 + dy1 * dy1);
+ }
+
+ if (ldist > lnk->_distance) {
+ ldist = lnk->_distance;
+ dist = sqrt(dx2 * dx2 + dy2 * dy2);
+ }
+
+ if (ldist >= 0.0 && ldist <= lnk->_distance && dist < mindist) {
+ resx = lnk->_movGraphNode1->_x + (int)(dx3 * ldist / lnk->_distance);
+ resy = lnk->_movGraphNode1->_y + (int)(dy3 * ldist / lnk->_distance);
+
+ mindist = dist;
+ link = lnk;
+ }
+ }
+ }
+
+ if (mindist < 1.0e20) {
+ if (movarr)
+ movarr->_link = link;
+
+ if (p) {
+ p->x = resx;
+ p->y = resy;
+ }
+
+ return true;
+ }
+
+ return false;
+}
+
+int MovGraph::getItemIndexByStaticAni(StaticANIObject *ani) {
+ for (uint i = 0; i < _items.size(); i++)
+ if (_items[i]->ani == ani)
+ return i;
+
+ return -1;
+}
+
+Common::Array<MovArr *> *MovGraph::genMovArr(int x, int y, int *arrSize, int flag1, int flag2) {
+ if (!_links.size()) {
+ *arrSize = 0;
+
+ return 0;
+ }
+
+ Common::Array<MovArr *> *arr = new Common::Array<MovArr *>;
+ MovArr *movarr;
+
+ for (ObList::iterator i = _links.begin(); i != _links.end(); ++i) {
+ MovGraphLink *lnk = (MovGraphLink *)*i;
+
+ if (flag1) {
+ Common::Point point(x, y);
+ double dist = calcDistance(&point, lnk, 0);
+
+ if (dist >= 0.0 && dist < 2.0) {
+ movarr = new MovArr;
+
+ movarr->_link = lnk;
+ movarr->_dist = ((double)(lnk->_movGraphNode1->_y - lnk->_movGraphNode2->_y) * (double)(lnk->_movGraphNode1->_y - point.y) +
+ (double)(lnk->_movGraphNode2->_x - lnk->_movGraphNode1->_x) * (double)(point.x - lnk->_movGraphNode1->_x)) /
+ lnk->_distance / lnk->_distance;
+ movarr->_point = point;
+
+ arr->push_back(movarr);
+ }
+ } else {
+ if (lnk->_movGraphReact) {
+ if (lnk->_movGraphReact->pointInRegion(x, y)) {
+ if (!(lnk->_flags & 0x10000000) || lnk->_flags & 0x20000000) {
+ if (!flag2) {
+ movarr = new MovArr;
+ movarr->_link = lnk;
+ movarr->_dist = 0.0;
+ movarr->_point.x = lnk->_movGraphNode1->_x;
+ movarr->_point.y = lnk->_movGraphNode1->_y;
+ arr->push_back(movarr);
+
+ movarr = new MovArr;
+ movarr->_link = lnk;
+ movarr->_dist = 1.0;
+ movarr->_point.x = lnk->_movGraphNode1->_x;
+ movarr->_point.y = lnk->_movGraphNode1->_y;
+ arr->push_back(movarr);
+ }
+ } else {
+ movarr = new MovArr;
+ movarr->_link = lnk;
+ movarr->_dist = ((double)(lnk->_movGraphNode1->_y - lnk->_movGraphNode2->_y) * (double)(lnk->_movGraphNode1->_y - y) +
+ (double)(lnk->_movGraphNode2->_x - lnk->_movGraphNode1->_x) * (double)(x - lnk->_movGraphNode1->_x)) /
+ lnk->_distance / lnk->_distance;
+ movarr->_point.x = x;
+ movarr->_point.y = y;
+
+ calcDistance(&movarr->_point, lnk, 0);
+
+ arr->push_back(movarr);
+ }
+ }
+ }
+ }
+ }
+
+ *arrSize = arr->size();
+
+ return arr;
+}
+
+void MovGraph::shuffleTree(MovGraphLink *lnk, MovGraphLink *lnk2, Common::Array<MovGraphLink *> &tempObList1, Common::Array<MovGraphLink *> &tempObList2) {
+ if (lnk == lnk2) {
+ for (uint i = 0; i < tempObList1.size(); i++)
+ tempObList2.push_back(tempObList1[i]);
+
+ tempObList2.push_back(lnk);
+ } else {
+ lnk->_flags |= 0x80000000;
+
+ tempObList1.push_back(lnk);
+
+ for (ObList::iterator i = _links.begin(); i != _links.end(); ++i) {
+ MovGraphLink *l = (MovGraphLink *)*i;
+
+ if (l->_movGraphNode1 != lnk->_movGraphNode1) {
+ if (l->_movGraphNode2 != lnk->_movGraphNode1) {
+ if (l->_movGraphNode1 != lnk->_movGraphNode2 && l->_movGraphNode2 != lnk->_movGraphNode2)
+ continue;
+ }
+ }
+
+ if (!(l->_flags & 0xA0000000))
+ shuffleTree(l, lnk2, tempObList1, tempObList2);
+ }
+
+ lnk->_flags &= 0x7FFFFFFF;
+ }
+}
+
+Common::Array<Common::Rect *> *MovGraph::getBboxes(MovArr *movarr1, MovArr *movarr2, int *listCount) {
+ Common::Array<MovGraphLink *> tempObList1;
+ Common::Array<MovGraphLink *> tempObList2;
+
+ shuffleTree(movarr1->_link, movarr2->_link, tempObList1, tempObList2);
+
+ *listCount = 0;
+
+ if (!tempObList2.size())
+ return 0;
+
+ *listCount = tempObList2.size();
+
+ Common::Array<Common::Rect *> *res = new Common::Array<Common::Rect *>;
+
+ for (int i = 0; i < *listCount; i++) {
+ Common::Rect *r = new Common::Rect;
+
+ calcBbox(r, tempObList2[i], movarr1, movarr2);
+
+ delete tempObList2[i];
+ }
+
+ movarr2->_link = movarr1->_link;
+
+ return res;
+}
+
+void MovGraph::calcBbox(Common::Rect *rect, MovGraphLink *grlink, MovArr *movarr1, MovArr *movarr2) {
+ warning("STUB: MovGraph::calcBbox()");
+}
+
+bool MovGraph::calcChunk(int idx, int x, int y, MovArr *arr, int a6) {
+ int staticsId;
+
+ if (_items[idx]->ani->_statics) {
+ staticsId = _items[idx]->ani->_statics->_staticsId;
+ } else {
+ if (!_items[idx]->ani->_movement->_staticsObj2)
+ return 0;
+
+ staticsId = _items[idx]->ani->_movement->_staticsObj2->_staticsId;
+ }
+
+ int arrSize;
+
+ Common::Array<MovArr *> *movarr = genMovArr(x, y, &arrSize, 0, 1);
+
+ if (!movarr)
+ return findClosestLink(idx, 0, arr);
+
+ bool res = false;
+
+ int idxmin = -1;
+ int offmin = 100;
+
+ for (int i = 0; i < arrSize; i++) {
+ int off = _mgm.refreshOffsets(_items[idx]->ani->_id, staticsId, (*movarr)[i]->_link->_dwordArray2[_field_44]);
+
+ if (off < offmin) {
+ offmin = off;
+ idxmin = i;
+ }
+
+ off = _mgm.refreshOffsets(_items[idx]->ani->_id, staticsId, (*movarr)[i]->_link->_dwordArray2[_field_44 + 1]);
+ if (off < offmin) {
+ offmin = off;
+ idxmin = i;
+ }
+ }
+
+ if (idxmin != -1) {
+ *arr = *(*movarr)[idxmin];
+
+ res = true;
+ }
+
+ delete movarr;
+
+ return res;
+}
+
int MovGraph2::getItemIndexByGameObjectId(int objectId) {
for (uint i = 0; i < _items2.size(); i++)
if (_items2[i]->_objectId == objectId)
@@ -1019,7 +1537,10 @@ int MovGraph2::removeObject(StaticANIObject *obj) {
}
void MovGraph2::freeItems() {
- warning("STUB: MovGraph2::freeItems()");
+ for (uint i = 0; i < _items2.size(); i++)
+ delete _items2[i];
+
+ _items2.clear();
}
MessageQueue *MovGraph2::method34(StaticANIObject *ani, int xpos, int ypos, int fuzzyMatch, int staticsId) {
@@ -1070,6 +1591,8 @@ MessageQueue *MovGraph2::doWalkTo(StaticANIObject *obj, int xpos, int ypos, int
PicAniInfo picAniInfo;
Common::Point point;
+ debug(0, "MovGraph2::doWalkTo(%d, %d, %d, %d, %d)", obj->_id, xpos, ypos, fuzzyMatch, staticsId);
+
int idx = getItemIndexByGameObjectId(obj->_id);
if (idx < 0)
@@ -1754,6 +2277,89 @@ void MGM::clear() {
_items.clear();
}
+MessageQueue *MGM::genMQ(StaticANIObject *ani, int staticsIndex, int staticsId, int *resStatId, Common::Point **pointArr) {
+ int idx = getItemIndexById(ani->_id);
+
+ if (idx == -1)
+ return 0;
+
+ int stid = staticsId;
+
+ if (!staticsId) {
+ if (ani->_movement) {
+ stid = ani->_movement->_staticsObj2->_staticsId;
+ } else {
+ if (!ani->_statics)
+ return 0;
+
+ stid = ani->_statics->_staticsId;
+ }
+ }
+
+ if (stid == staticsIndex)
+ return new MessageQueue(g_fp->_globalMessageQueueList->compact());
+
+ int startidx = getStaticsIndexById(idx, stid);
+ int endidx = getStaticsIndexById(idx, staticsIndex);
+ int subidx = startidx + endidx * _items[idx]->statics.size();
+
+ if (!_items[idx]->subItems[subidx]->movement) {
+ clearMovements2(idx);
+ recalcOffsets(idx, startidx, endidx, 0, 1);
+ }
+
+ if (!_items[idx]->subItems[subidx]->movement)
+ return 0;
+
+ MessageQueue *mq = new MessageQueue(g_fp->_globalMessageQueueList->compact());
+ Common::Point point;
+ ExCommand *ex;
+
+ int i = 0;
+ do {
+ subidx = startidx + endidx * _items[idx]->statics.size();
+
+ _items[idx]->subItems[subidx]->movement->calcSomeXY(point, 0);
+
+ if (pointArr) {
+ int sz;
+
+ if (_items[idx]->subItems[subidx]->movement->_currMovement)
+ sz = _items[idx]->subItems[subidx]->movement->_currMovement->_dynamicPhases.size();
+ else
+ sz = _items[idx]->subItems[subidx]->movement->_dynamicPhases.size();
+
+ ex = new ExCommand2(20, ani->_id, &pointArr[i], sz);
+
+ ex->_messageNum = _items[idx]->subItems[subidx]->movement->_id;
+ } else {
+ ex = new ExCommand(ani->_id, 1, _items[idx]->subItems[subidx]->movement->_id, 0, 0, 0, 1, 0, 0, 0);
+ }
+
+ ex->_keyCode = ani->_okeyCode;
+ ex->_field_3C = 1;
+ ex->_field_24 = 1;
+
+ mq->addExCommandToEnd(ex);
+
+ if (resStatId)
+ *resStatId = _items[idx]->subItems[subidx]->movement->_id;
+
+ startidx = _items[idx]->subItems[subidx]->staticsIndex;
+
+ uint step;
+
+ if (_items[idx]->subItems[subidx]->movement->_currMovement)
+ step = _items[idx]->subItems[subidx]->movement->_currMovement->_dynamicPhases.size();
+ else
+ step = _items[idx]->subItems[subidx]->movement->_dynamicPhases.size();
+
+ i += step;
+ } while (startidx != endidx);
+
+ return mq;
+}
+
MGMItem::MGMItem() {
objId = 0;
}
@@ -1811,15 +2417,10 @@ int MGM::getItemIndexById(int objId) {
}
MessageQueue *MGM::genMovement(MGMInfo *mgminfo) {
- warning("STUB: MGM::genMovement()");
-
- return 0;
-
-#if 0
if (!mgminfo->ani)
return 0;
- mov = mgminfo->ani->_movement;
+ Movement *mov = mgminfo->ani->_movement;
if (!mov && !mgminfo->ani->_statics)
return 0;
@@ -1831,14 +2432,17 @@ MessageQueue *MGM::genMovement(MGMInfo *mgminfo) {
mgminfo->staticsId1 = mgminfo->ani->_statics->_staticsId;
}
+ Common::Point point;
+
if (!(mgminfo->flags & 0x10) || !(mgminfo->flags & 0x20)) {
int nx = mgminfo->ani->_ox;
int ny = mgminfo->ani->_oy;
if (mgminfo->ani->_movement) {
- mgminfo->ani->calcNextStep(&point2);
- nx += point2.x;
- ny += point2.y;
+ mgminfo->ani->calcNextStep(&point);
+
+ nx += point.x;
+ ny += point.y;
}
if (!(mgminfo->flags & 0x10))
@@ -1853,40 +2457,37 @@ MessageQueue *MGM::genMovement(MGMInfo *mgminfo) {
if (!mov)
return 0;
- itemIdx = getItemIndexById(mgminfo->ani->_id);
- subIdx = getStaticsIndexById(itemIdx, mgminfo->staticsId1);
- st2idx = getStaticsIndexById(itemIdx, mov->_staticsObj1->_staticsId);
- st1idx = getStaticsIndexById(itemIdx, mov->_staticsObj2->_staticsId);
- subOffset = getStaticsIndexById(itemIdx, mgminfo->staticsId2);
+ int itemIdx = getItemIndexById(mgminfo->ani->_id);
+ int subIdx = getStaticsIndexById(itemIdx, mgminfo->staticsId1);
+ int st2idx = getStaticsIndexById(itemIdx, mov->_staticsObj1->_staticsId);
+ int st1idx = getStaticsIndexById(itemIdx, mov->_staticsObj2->_staticsId);
+ int subOffset = getStaticsIndexById(itemIdx, mgminfo->staticsId2);
clearMovements2(itemIdx);
recalcOffsets(itemIdx, subIdx, st2idx, 0, 1);
clearMovements2(itemIdx);
recalcOffsets(itemIdx, st1idx, subOffset, 0, 1);
- v71 = (Message *)(28 * itemIdx);
- v16 = items[itemIdx].objId;
- v17 = *(_DWORD *)(v16 + offsetof(MGMItem, staticsListCount));
- off = *(_DWORD *)(v16 + offsetof(MGMItem, subItems));
- v18 = (MGMSubItem *)(off + 24 * (subIdx + st2idx * v17));
- x1 = (int)&v18->movement->go.CObject.vmt;
- v19 = (MGMSubItem *)(off + 24 * (st1idx + subOffset * v17));
- v69 = (LONG)&v19->movement->go.CObject.vmt;
+ MGMSubItem *sub1 = _items[itemIdx]->subItems[subIdx + st2idx * _items[itemIdx]->statics.size()];
+ MGMSubItem *sub2 = _items[itemIdx]->subItems[st1idx + subOffset * _items[itemIdx]->statics.size()];
- if (subIdx != st2idx && !x1)
+ if (subIdx != st2idx && !sub1->movement)
return 0;
- if (st1idx != subOffset && !v69)
+ if (st1idx != subOffset && !sub2->movement)
return 0;
- int n1x = mgminfo->x1 - mgminfo->x2 - v18->x - v19->x;
- int n1y = mgminfo->y1 - mgminfo->y2 - v18->y - v19->y;
+ int n1x = mgminfo->x1 - mgminfo->x2 - sub1->x - sub2->x;
+ int n1y = mgminfo->y1 - mgminfo->y2 - sub1->y - sub2->y;
+
+ Common::Point point1;
- mov->calcSomeXY(&point1, 0);
+ mov->calcSomeXY(point1, 0);
int n2x = point1.x;
int n2y = point1.y;
int mult;
+ int len;
if (mgminfo->flags & 0x40) {
mult = mgminfo->field_10;
@@ -1903,20 +2504,20 @@ MessageQueue *MGM::genMovement(MGMInfo *mgminfo) {
len = -1;
n2x = mult * point1.x;
n1x = mult * point1.x;
- mgminfo->x1 = mgminfo->x2 + mult * point1.x + v18->x + v19->x;
+ mgminfo->x1 = mgminfo->x2 + mult * point1.x + sub1->x + sub2->x;
}
if (!(mgminfo->flags & 4)) {
n2y = mult * point1.y;
n1y = mult * point1.y;
len = -1;
- mgminfo->y1 = mgminfo->y2 + mult * point1.y + v18->y + v19->y;
+ mgminfo->y1 = mgminfo->y2 + mult * point1.y + sub1->y + sub2->y;
}
int px = 0;
int py = 0;
- if (x1) {
+ if (sub1->movement) {
px = countPhases(itemIdx, subIdx, st2idx, 1);
py = countPhases(itemIdx, subIdx, st2idx, 2);
}
@@ -1931,13 +2532,14 @@ MessageQueue *MGM::genMovement(MGMInfo *mgminfo) {
py += mov->countPhasesWithFlag(len, 2);
}
- if (v69) {
+ if (sub2->movement) {
px += countPhases(itemIdx, st1idx, subOffset, 1);
py += countPhases(itemIdx, st1idx, subOffset, 2);
}
int dx1 = n1x - n2x;
int dy1 = n1y - n2y;
+ int x1, y1;
if (px) {
x1 = (int)((double)dx1 / (double)px);
@@ -1951,6 +2553,8 @@ MessageQueue *MGM::genMovement(MGMInfo *mgminfo) {
y1 = 0;
}
+ Common::Point x2, y2;
+
y2.x = dx1 - px * x1;
y2.y = dy1 - py * y1;
@@ -1967,16 +2571,19 @@ MessageQueue *MGM::genMovement(MGMInfo *mgminfo) {
MessageQueue *mq = new MessageQueue(g_fp->_globalMessageQueueList->compact());
ExCommand2 *ex2;
- for (v42 = subIdx; v42 != st2idx; v42 = v43->staticsIndex) {
- v43 = &(*(MGMSubItem **)((char *)&this->items->subItems + (unsigned int)v71))[v42 + st2idx * *(int *)((char *)&this->items->staticsListCount + (unsigned int)v71)];
- ex2 = buildExCommand2(v43->movement, mgminfo->ani->go._id, x1, y1, &x2, &y2, -1);
+ for (int i = subIdx; i != st2idx;) {
+ MGMSubItem *s = _items[itemIdx]->subItems[i + subOffset * _items[itemIdx]->statics.size()];
+
+ ex2 = buildExCommand2(s->movement, mgminfo->ani->_id, x1, y1, &x2, &y2, -1);
ex2->_parId = mq->_id;
ex2->_keyCode = mgminfo->ani->_okeyCode;
mq->addExCommandToEnd(ex2);
+
+ i = s->staticsIndex;
}
- for (i = 0; i < mult; ++i) {
+ for (int i = 0; i < mult; ++i) {
int plen;
if (i == mult - 1)
@@ -1991,14 +2598,16 @@ MessageQueue *MGM::genMovement(MGMInfo *mgminfo) {
mq->addExCommandToEnd(ex2);
}
- for (j = st1idx; j != subOffset; j = v50->staticsIndex) {
- v50 = &(*(MGMSubItem **)((char *)&this->items->subItems + (unsigned int)v71))[j + subOffset * *(int *)((char *)&this->items->staticsListCount + (unsigned int)v71)];
+ for (int j = st1idx; j != subOffset;) {
+ MGMSubItem *s = _items[itemIdx]->subItems[j + subOffset * _items[itemIdx]->statics.size()];
- ex2 = buildExCommand2(v50->movement, mgminfo->ani->_id, x1, y1, &x2, &y2, -1);
+ ex2 = buildExCommand2(s->movement, mgminfo->ani->_id, x1, y1, &x2, &y2, -1);
ex2->_parId = mq->_id;
ex2->_keyCode = mgminfo->ani->_okeyCode;
mq->addExCommandToEnd(ex2);
+
+ j = s->staticsIndex;
}
ExCommand *ex = new ExCommand(mgminfo->ani->_id, 5, -1, mgminfo->x1, mgminfo->y1, 0, 1, 0, 0, 0);
@@ -2011,9 +2620,25 @@ MessageQueue *MGM::genMovement(MGMInfo *mgminfo) {
mq->addExCommandToEnd(ex);
return mq;
-#endif
}
+int MGM::countPhases(int idx, int subIdx, int endIdx, int flag) {
+ int res = 0;
+
+ if (endIdx < 0)
+ return 0;
+
+ while (subIdx != endIdx) {
+ if (subIdx < 0)
+ break;
+
+ res += _items[idx]->subItems[subIdx + endIdx * _items[idx]->statics.size()]->movement->countPhasesWithFlag(-1, flag);
+
+ subIdx = _items[idx]->subItems[subIdx + 6 * endIdx * _items[idx]->statics.size()]->staticsIndex;
+ }
+
+ return res;
+}
void MGM::updateAnimStatics(StaticANIObject *ani, int staticsId) {
if (getItemIndexById(ani->_id) == -1)
return;
@@ -2112,9 +2737,99 @@ void MGM::clearMovements2(int idx) {
}
int MGM::recalcOffsets(int idx, int st1idx, int st2idx, bool flip, bool flop) {
- warning("STUB: MGM::recalcOffsets()");
+ MGMItem *item = _items[idx];
+ int subIdx = st1idx + st2idx * item->statics.size();
- return 0;
+ if (st1idx == st2idx) {
+ memset(&item->subItems[subIdx], 0, sizeof(item->subItems[subIdx]));
+ return 0;
+ }
+
+ if (item->subItems[subIdx])
+ return item->subItems[subIdx]->field_8;
+
+ Common::Point point;
+
+ for (uint i = 0; i < item->movements1.size(); i++) {
+ Movement *mov = item->movements1[i];
+
+ if (mov->_staticsObj1 == item->statics[st1idx]) {
+ if (!item->movements2[i] && (!flop || mov->_field_50)) {
+ item->movements2[i] = 1;
+
+ int stidx = getStaticsIndex(idx, item->movements1[i]->_staticsObj2);
+ int recalc = recalcOffsets(idx, stidx, st2idx, flip, flop);
+ int sz = mov->_currMovement ? mov->_currMovement->_dynamicPhases.size() : mov->_dynamicPhases.size();
+ int newsz = sz + item->subItems[stidx + 6 * st2idx * _items[idx]->statics.size()]->field_C;
+
+ if (recalc >= 0) {
+ if (!item->subItems[subIdx]->movement || item->subItems[subIdx]->field_8 > recalc + 1 ||
+ (item->subItems[subIdx]->field_8 == recalc + 1 && item->subItems[subIdx]->field_C > newsz)) {
+ item->subItems[subIdx]->movement = mov;
+ item->subItems[subIdx]->staticsIndex = stidx;
+ item->subItems[subIdx]->field_8 = recalc + 1;
+ item->subItems[subIdx]->field_C = newsz;
+
+ mov->calcSomeXY(point, 0);
+
+ item->subItems[subIdx]->x = item->subItems[stidx + 6 * st2idx * _items[idx]->statics.size()]->x + point.x;
+ item->subItems[subIdx]->y = item->subItems[stidx + 6 * st2idx * _items[idx]->statics.size()]->y + point.y;
+ }
+ }
+ }
+ } else if (flip) {
+ if (mov->_staticsObj2 == item->statics[st1idx]) {
+ if (!item->movements2[i] && (!flop || mov->_field_50)) {
+ item->movements2[i] = 1;
+
+ int stidx = getStaticsIndex(idx, mov->_staticsObj1);
+ int recalc = recalcOffsets(idx, stidx, st2idx, flip, flop);
+
+ if (recalc >= 0) {
+ if (!item->subItems[subIdx]->movement || item->subItems[subIdx]->field_8 > recalc + 1) {
+ item->subItems[subIdx]->movement = mov;
+ item->subItems[subIdx]->staticsIndex = stidx;
+ item->subItems[subIdx]->field_8 = recalc + 1;
+
+ int sz = mov->_currMovement ? mov->_currMovement->_dynamicPhases.size() : mov->_dynamicPhases.size();
+
+ item->subItems[subIdx]->field_C = sz + item->subItems[stidx + 6 * st2idx * _items[idx]->statics.size()]->field_C;
+
+ mov->calcSomeXY(point, 0);
+
+ item->subItems[subIdx]->x = item->subItems[stidx + 6 * st2idx * _items[idx]->statics.size()]->x - point.x;
+ item->subItems[subIdx]->y = item->subItems[stidx + 6 * st2idx * _items[idx]->statics.size()]->y - point.y;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ if (item->subItems[subIdx]->movement)
+ return item->subItems[subIdx]->field_8;
+
+ return -1;
+}
+
+int MGM::refreshOffsets(int objectId, int idx1, int idx2) {
+ int idx = getItemIndexById(objectId);
+
+ if (idx != -1) {
+ int from = getStaticsIndexById(idx, idx1);
+ int to = getStaticsIndexById(idx, idx2);
+
+ MGMSubItem *sub = _items[idx]->subItems[from + to * _items[idx]->statics.size()];
+
+ if (sub->movement) {
+ idx = sub->field_8;
+ } else {
+ clearMovements2(idx);
+ idx = recalcOffsets(idx, from, to, 0, 1);
+ }
+ }
+
+ return idx;
}
Common::Point *MGM::calcLength(Common::Point *pRes, Movement *mov, int x, int y, int *mult, int *len, int flag) {
@@ -2266,7 +2981,10 @@ MovGraphLink::MovGraphLink() {
}
MovGraphLink::~MovGraphLink() {
- warning("STUB: MovGraphLink::~MovGraphLink()");
+ delete _movGraphReact;
+
+ _dwordArray1.clear();
+ _dwordArray2.clear();
}
@@ -2502,11 +3220,11 @@ bool MovGraphReact::pointInRegion(int x, int y) {
}
}
-int startWalkTo(int objId, int objKey, int x, int y, int a5) {
- MctlCompound *mc = getSc2MctlCompoundBySceneId(g_fp->_currentScene->_sceneId);
+int startWalkTo(int objId, int objKey, int x, int y, int fuzzyMatch) {
+ MctlCompound *mc = getCurrSceneSc2MotionController();
if (mc)
- return (mc->method34(g_fp->_currentScene->getStaticANIObject1ById(objId, objKey), x, y, a5, 0) != 0);
+ return (mc->method34(g_fp->_currentScene->getStaticANIObject1ById(objId, objKey), x, y, fuzzyMatch, 0) != 0);
return 0;
}
diff --git a/engines/fullpipe/motion.h b/engines/fullpipe/motion.h
index a9695e8094..fc199e305b 100644
--- a/engines/fullpipe/motion.h
+++ b/engines/fullpipe/motion.h
@@ -31,6 +31,7 @@ class MctlConnectionPoint;
class MovGraphLink;
class MessageQueue;
class ExCommand2;
+struct MovItem;
int startWalkTo(int objId, int objKey, int x, int y, int a5);
int doSomeAnimation(int objId, int objKey, int a3);
@@ -52,14 +53,14 @@ public:
virtual void addObject(StaticANIObject *obj) {}
virtual int removeObject(StaticANIObject *obj) { return 0; }
virtual void freeItems() {}
- virtual int method28() { return 0; }
+ virtual Common::Array<MovItem *> *method28(StaticANIObject *ani, int x, int y, int flag1, int *rescount) { return 0; }
virtual int method2C(StaticANIObject *obj, int x, int y) { return 0; }
virtual int method30() { return 0; }
virtual MessageQueue *method34(StaticANIObject *subj, int xpos, int ypos, int fuzzyMatch, int staticsId) { return 0; }
virtual int changeCallback() { return 0; }
virtual int method3C(StaticANIObject *ani, int flag) { return 0; }
virtual int method40() { return 0; }
- virtual int method44() { return 0; }
+ virtual bool method44(StaticANIObject *ani, int x, int y) { return false; }
virtual int method48() { return -1; }
virtual MessageQueue *doWalkTo(StaticANIObject *subj, int xpos, int ypos, int fuzzyMatch, int staticsId) { return 0; }
@@ -138,7 +139,7 @@ struct MGMItem {
Common::Array<MGMSubItem *> subItems;
Common::Array<Statics *> statics;
Common::Array<Movement *> movements1;
- Common::Array<Movement *> movements2;
+ Common::Array<int> movements2;
MGMItem();
};
@@ -178,6 +179,9 @@ public:
int recalcOffsets(int idx, int st1idx, int st2idx, bool flip, bool flop);
Common::Point *calcLength(Common::Point *point, Movement *mov, int x, int y, int *mult, int *len, int flag);
ExCommand2 *buildExCommand2(Movement *mov, int objId, int x1, int y1, Common::Point *x2, Common::Point *y2, int len);
+ MessageQueue *genMQ(StaticANIObject *ani, int staticsIndex, int staticsId, int *resStatId, Common::Point **pointArr);
+ int countPhases(int idx, int subIdx, int subOffset, int flag);
+ int refreshOffsets(int objectId, int idx1, int idx2);
};
struct MctlLadderMovementVars {
@@ -296,10 +300,31 @@ class MovGraphLink : public CObject {
void calcNodeDistanceAndAngle();
};
+struct MovStep {
+ int sfield_0;
+ MovGraphLink *link;
+};
+
+struct MovArr {
+ MovStep *_movSteps;
+ int _movStepCount;
+ int _afield_8;
+ MovGraphLink *_link;
+ double _dist;
+ Common::Point _point;
+};
+
+struct MovItem {
+ Common::Array<MovArr *> *movarr;
+ int _mfield_4;
+ int _mfield_8;
+ int _mfield_C;
+};
+
struct MovGraphItem {
StaticANIObject *ani;
int field_4;
- int field_8;
+ Common::Array<MovArr *> *movarr;
int field_C;
int field_10;
int field_14;
@@ -307,7 +332,7 @@ struct MovGraphItem {
int field_1C;
int field_20;
int field_24;
- int items;
+ Common::Array<MovItem *> *movitems;
int count;
int field_30;
int field_34;
@@ -315,6 +340,7 @@ struct MovGraphItem {
int field_3C;
MovGraphItem();
+ void free();
};
class MovGraph : public MotionController {
@@ -323,7 +349,7 @@ public:
ObList _links;
int _field_44;
Common::Array<MovGraphItem *> _items;
- int (*_callback1)(int, int, int);
+ Common::Array<MovArr *> *(*_callback1)(StaticANIObject *ani, Common::Array<MovItem *> *items, signed int counter);
MGM _mgm;
public:
@@ -335,18 +361,27 @@ public:
virtual void addObject(StaticANIObject *obj);
virtual int removeObject(StaticANIObject *obj);
virtual void freeItems();
- virtual int method28();
+ virtual Common::Array<MovItem *> *method28(StaticANIObject *ani, int x, int y, int flag1, int *rescount);
virtual int method2C(StaticANIObject *obj, int x, int y);
virtual MessageQueue *method34(StaticANIObject *subj, int xpos, int ypos, int fuzzyMatch, int staticsId);
virtual int changeCallback();
virtual int method3C(StaticANIObject *ani, int flag);
- virtual int method44();
+ virtual bool method44(StaticANIObject *ani, int x, int y);
virtual MessageQueue *doWalkTo(StaticANIObject *subj, int xpos, int ypos, int fuzzyMatch, int staticsId);
- virtual int method50();
+ virtual MessageQueue *method50(StaticANIObject *ani, Common::Array<MovArr *> *movarr, int staticsId);
double calcDistance(Common::Point *point, MovGraphLink *link, int fuzzyMatch);
void calcNodeDistancesAndAngles();
+ bool findClosestLink(int unusedArg, Common::Point *p, MovArr *movarr);
MovGraphNode *calcOffset(int ox, int oy);
+ int getItemIndexByStaticAni(StaticANIObject *ani);
+ Common::Array<MovArr *> *genMovArr(int x, int y, int *arrSize, int flag1, int flag2);
+ void shuffleTree(MovGraphLink *lnk, MovGraphLink *lnk2, Common::Array<MovGraphLink *> &tempObList1, Common::Array<MovGraphLink *> &tempObList2);
+ Common::Array<Common::Rect *> *getBboxes(MovArr *movarr1, MovArr *movarr2, int *listCount);
+ void calcBbox(Common::Rect *rect, MovGraphLink *grlink, MovArr *movarr1, MovArr *movarr2);
+ bool calcChunk(int idx, int x, int y, MovArr *arr, int a6);
+ MessageQueue *sub1(StaticANIObject *ani, int x, int y, int a5, int x1, int y1, int a8, int a9);
+ MessageQueue *fillMGMinfo(StaticANIObject *ani, MovArr *movarr, int staticsId);
};
class Movement;
diff --git a/engines/fullpipe/scene.cpp b/engines/fullpipe/scene.cpp
index a0151dd9be..1247d9380e 100644
--- a/engines/fullpipe/scene.cpp
+++ b/engines/fullpipe/scene.cpp
@@ -133,7 +133,27 @@ Scene::Scene() {
}
Scene::~Scene() {
- warning("STUB: Scene::~Scene()");
+ delete _soundList;
+ delete _shadows;
+ delete _palette;
+
+ // _faObjlist is not used
+
+ for (uint i = 0; i < _messageQueueList.size(); i++)
+ delete _messageQueueList[i];
+
+ _messageQueueList.clear();
+
+ for (uint i = 0; i < _staticANIObjectList1.size(); i++)
+ delete _staticANIObjectList1[i];
+
+ _staticANIObjectList1.clear();
+
+ delete _libHandle;
+
+ // delete _field_BC;
+
+ free(_sceneName);
}
bool Scene::load(MfcArchive &file) {
@@ -249,7 +269,7 @@ bool Scene::load(MfcArchive &file) {
void Scene::initStaticANIObjects() {
for (uint i = 0; i < _staticANIObjectList1.size(); i++)
- ((StaticANIObject *)_staticANIObjectList1[i])->initMovements();
+ _staticANIObjectList1[i]->initMovements();
}
void Scene::init() {
@@ -262,13 +282,13 @@ void Scene::init() {
((PictureObject *)_picObjList[i])->clearFlags();
for (uint i = 0; i < _staticANIObjectList1.size(); i++)
- ((StaticANIObject *)_staticANIObjectList1[i])->clearFlags();
+ _staticANIObjectList1[i]->clearFlags();
if (_staticANIObjectList2.size() != _staticANIObjectList1.size()) {
_staticANIObjectList2.clear();
- for (PtrList::iterator s = _staticANIObjectList1.begin(); s != _staticANIObjectList1.end(); ++s)
- _staticANIObjectList2.push_back(*s);
+ for (uint i = 0; i < _staticANIObjectList1.size(); i++)
+ _staticANIObjectList2.push_back(_staticANIObjectList1[i]);
}
}
@@ -281,35 +301,33 @@ StaticANIObject *Scene::getAniMan() {
}
StaticANIObject *Scene::getStaticANIObject1ById(int obj, int a3) {
- for (PtrList::iterator s = _staticANIObjectList1.begin(); s != _staticANIObjectList1.end(); ++s) {
- StaticANIObject *o = (StaticANIObject *)*s;
- if (o->_id == obj && (a3 == -1 || o->_okeyCode == a3))
- return o;
+ for (uint i = 0; i < _staticANIObjectList1.size(); i++) {
+ if (_staticANIObjectList1[i]->_id == obj && (a3 == -1 || _staticANIObjectList1[i]->_okeyCode == a3))
+ return _staticANIObjectList1[i];
}
return 0;
}
StaticANIObject *Scene::getStaticANIObject1ByName(char *name, int a3) {
- for (uint n = 0; n < _staticANIObjectList1.size(); n++) {
- StaticANIObject *o = (StaticANIObject *)_staticANIObjectList1[n];
- if (!strcmp(o->_objectName, name) && (a3 == -1 || o->_okeyCode == a3))
- return o;
+ for (uint i = 0; i < _staticANIObjectList1.size(); i++) {
+ if (!strcmp(_staticANIObjectList1[i]->_objectName, name) && (a3 == -1 || _staticANIObjectList1[i]->_okeyCode == a3))
+ return _staticANIObjectList1[i];
}
return 0;
}
void Scene::deleteStaticANIObject(StaticANIObject *obj) {
- for (uint n = 0; n < _staticANIObjectList1.size(); n++)
- if ((StaticANIObject *)_staticANIObjectList1[n] == obj) {
- _staticANIObjectList1.remove_at(n);
+ for (uint i = 0; i < _staticANIObjectList1.size(); i++)
+ if (_staticANIObjectList1[i] == obj) {
+ _staticANIObjectList1.remove_at(i);
break;
}
- for (uint n = 0; n < _staticANIObjectList2.size(); n++)
- if ((StaticANIObject *)_staticANIObjectList2[n] == obj) {
- _staticANIObjectList2.remove_at(n);
+ for (uint i = 0; i < _staticANIObjectList2.size(); i++)
+ if (_staticANIObjectList2[i] == obj) {
+ _staticANIObjectList2.remove_at(i);
break;
}
}
@@ -334,8 +352,13 @@ void Scene::setPictureObjectsFlag4() {
}
}
+void Scene::stopAllSounds() {
+ for (int i = 0; i < _soundList->getCount(); i++)
+ _soundList->getSoundByIndex(i)->stop();
+}
+
PictureObject *Scene::getPictureObjectById(int objId, int flags) {
- for (uint i = 0; i < _picObjList.size(); i++) {
+ for (uint i = 1; i < _picObjList.size(); i++) {
if (((PictureObject *)_picObjList[i])->_id == objId && ((PictureObject *)_picObjList[i])->_okeyCode == flags)
return (PictureObject *)_picObjList[i];
}
@@ -365,16 +388,16 @@ void Scene::deletePictureObject(PictureObject *obj) {
MessageQueue *Scene::getMessageQueueById(int messageId) {
for (uint i = 0; i < _messageQueueList.size(); i++)
- if (((MessageQueue *)_messageQueueList[i])->_dataId == messageId)
- return (MessageQueue *)_messageQueueList[i];
+ if (_messageQueueList[i]->_dataId == messageId)
+ return _messageQueueList[i];
return 0;
}
MessageQueue *Scene::getMessageQueueByName(char *name) {
for (uint i = 0; i < _messageQueueList.size(); i++)
- if (!strcmp(((MessageQueue *)_messageQueueList[i])->_queueName, name))
- return (MessageQueue *)_messageQueueList[i];
+ if (!strcmp(_messageQueueList[i]->_queueName, name))
+ return _messageQueueList[i];
return 0;
}
@@ -443,15 +466,27 @@ void Scene::initObjectCursors(const char *varname) {
}
bool Scene::compareObjPriority(const void *p1, const void *p2) {
- if (((const StaticANIObject *)p1)->_priority > ((const StaticANIObject *)p2)->_priority)
+ if (((const GameObject *)p1)->_priority > ((const GameObject *)p2)->_priority)
return true;
return false;
}
-void Scene::objectList_sortByPriority(PtrList &list, bool skipFirst) {
+void Scene::objectList_sortByPriority(Common::Array<StaticANIObject *> &list, bool skipFirst) {
+ if (skipFirst) {
+ Common::Array<StaticANIObject *>::iterator s = list.begin();
+
+ ++s;
+
+ Common::sort(s, list.end(), Scene::compareObjPriority);
+ } else {
+ Common::sort(list.begin(), list.end(), Scene::compareObjPriority);
+ }
+}
+
+void Scene::objectList_sortByPriority(Common::Array<PictureObject *> &list, bool skipFirst) {
if (skipFirst) {
- PtrList::iterator s = list.begin();
+ Common::Array<PictureObject *>::iterator s = list.begin();
++s;
@@ -472,16 +507,15 @@ void Scene::draw() {
objectList_sortByPriority(_staticANIObjectList2);
- for (PtrList::iterator s = _staticANIObjectList2.begin(); s != _staticANIObjectList2.end(); ++s) {
- ((StaticANIObject *)*s)->draw2();
- }
+ for (uint i = 0; i < _staticANIObjectList2.size(); i++)
+ _staticANIObjectList2[i]->draw2();
int priority = -1;
- for (PtrList::iterator s = _staticANIObjectList2.begin(); s != _staticANIObjectList2.end(); ++s) {
- drawContent(((StaticANIObject *)*s)->_priority, priority, false);
- ((StaticANIObject *)*s)->draw();
+ for (uint i = 0; i < _staticANIObjectList2.size(); i++) {
+ drawContent(_staticANIObjectList2[i]->_priority, priority, false);
+ _staticANIObjectList2[i]->draw();
- priority = ((StaticANIObject *)*s)->_priority;
+ priority = _staticANIObjectList2[i]->_priority;
}
drawContent(-1, priority, false);
@@ -562,7 +596,7 @@ StaticANIObject *Scene::getStaticANIObjectAtPos(int x, int y) {
StaticANIObject *res = 0;
for (uint i = 0; i < _staticANIObjectList1.size(); i++) {
- StaticANIObject *p = (StaticANIObject *)_staticANIObjectList1[i];
+ StaticANIObject *p = _staticANIObjectList1[i];
int pixel;
if ((p->_field_8 & 0x100) && (p->_flags & 4) &&
@@ -608,8 +642,8 @@ int Scene::getPictureObjectIdAtPos(int x, int y) {
void Scene::update(int counterdiff) {
debug(6, "Scene::update(%d)", counterdiff);
- for (PtrList::iterator s = _staticANIObjectList2.begin(); s != _staticANIObjectList2.end(); ++s)
- ((StaticANIObject *)*s)->update(counterdiff);
+ for (uint i = 0; i < _staticANIObjectList2.size(); i++)
+ _staticANIObjectList2[i]->update(counterdiff);
}
void Scene::drawContent(int minPri, int maxPri, bool drawBg) {
diff --git a/engines/fullpipe/scene.h b/engines/fullpipe/scene.h
index 86a06904e1..1e2dae81fe 100644
--- a/engines/fullpipe/scene.h
+++ b/engines/fullpipe/scene.h
@@ -31,10 +31,10 @@ class MessageQueue;
class Scene : public Background {
public:
- PtrList _staticANIObjectList1;
- PtrList _staticANIObjectList2;
- PtrList _messageQueueList;
- PtrList _faObjectList;
+ Common::Array<StaticANIObject *> _staticANIObjectList1;
+ Common::Array<StaticANIObject *> _staticANIObjectList2;
+ Common::Array<MessageQueue *> _messageQueueList;
+ // PtrList _faObjectList; // not used
Shadows *_shadows;
SoundList *_soundList;
int16 _sceneId;
@@ -78,9 +78,12 @@ class Scene : public Background {
void initObjectCursors(const char *name);
+ void stopAllSounds();
+
private:
static bool compareObjPriority(const void *p1, const void *p2);
- void objectList_sortByPriority(PtrList &list, bool skipFirst = false);
+ void objectList_sortByPriority(Common::Array<StaticANIObject *> &list, bool skipFirst = false);
+ void objectList_sortByPriority(Common::Array<PictureObject *> &list, bool skipFirst = false);
};
class SceneTag : public CObject {
diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp
index b7ef569bcc..72d73a9cf8 100644
--- a/engines/fullpipe/scenes.cpp
+++ b/engines/fullpipe/scenes.cpp
@@ -270,42 +270,38 @@ Vars::Vars() {
scene17_handPhase = false;
scene17_sceneEdgeX = 0;
- scene18_var01 = 0;
- scene18_var16 = 200;
- scene18_var17 = 200;
- scene18_var18 = 300;
- scene18_var19 = 300;
+ scene18_inScene18p1 = false;
scene18_whirlgig = 0;
- scene18_var20 = 1032;
- scene18_var04 = -318;
- scene18_var08 = 0;
- scene18_var09 = 0;
- scene18_var03 = false;
- scene18_var21 = 0;
- scene18_var11 = 0;
- scene18_var12 = 0;
- scene18_var22 = 1;
- scene18_var23 = -1;
- scene18_var24 = 0;
- scene18_var25 = 0;
- scene18_var26 = 1;
- scene18_var27 = -1;
- scene18_var13 = -1;
- scene18_var14 = -1;
- scene18_var28 = 0;
- scene18_var15 = 0;
+ scene18_wheelCenterX = 0;
+ scene18_wheelCenterY = 0;
+ scene18_bridgeIsConvoluted = false;
+ scene18_whirlgigMovMum = 0;
+ scene18_girlIsSwinging = false;
+ scene18_rotationCounter = 0;
+ scene18_manY = 0;
+ scene18_wheelFlipper = false;
+ scene18_wheelIsTurning = true;
+ scene18_kidIsOnWheel = -1;
+ scene18_boyIsOnWheel = 0;
+ scene18_girlIsOnWheel = 0;
+ scene18_boyJumpedOff = true;
+ scene18_jumpDistance = -1;
+ scene18_jumpAngle = -1;
+ scene18_manIsReady = false;
+ scene18_enteredTrubaRight = false;
+ scene18_manWheelPos = 0;
+ scene18_manWheelPosTo = -1;
+ scene18_kidWheelPos = 0;
+ scene18_kidWheelPosTo = 0;
scene18_boy = 0;
scene18_girl = 0;
scene18_domino = 0;
- scene18_var29 = 290;
- scene18_var30 = -363;
- scene18_var05 = 283;
- scene18_var06 = -350;
+ scene18_boyJumpX = 290;
+ scene18_boyJumpY = -363;
+ scene18_girlJumpX = 283;
+ scene18_girlJumpY = -350;
- scene19_var01 = 0;
- scene19_var02 = 0;
- scene19_var03 = 0;
- scene19_var04 = 0;
+ scene19_enteredTruba3 = false;
scene20_fliesCountdown = 0;
scene20_grandma = 0;
@@ -382,6 +378,23 @@ Vars::Vars() {
scene28_headBeardedFlipper = false;
scene28_lift6inside = false;
+ scene29_porter = 0;
+ scene29_shooter1 = 0;
+ scene29_shooter2 = 0;
+ scene29_ass = 0;
+ scene29_manIsRiding = false;
+ scene29_arcadeIsOn = false;
+ scene29_reachedFarRight = false;
+ scene29_rideBackEnabled = false;
+ scene29_shootCountdown = 0;
+ scene29_shootDistance = 75;
+ scene29_manIsHit = 0;
+ scene29_scrollSpeed = 0;
+ scene29_scrollingDisabled = 0;
+ scene29_hitBall = 0;
+ scene29_manX = 0;
+ scene29_manY = 0;
+
scene30_leg = 0;
scene30_liftFlag = 1;
@@ -577,10 +590,8 @@ bool FullpipeEngine::sceneSwitcher(EntranceInfo *entrance) {
scene->setPictureObjectsFlag4();
- for (PtrList::iterator s = scene->_staticANIObjectList1.begin(); s != scene->_staticANIObjectList1.end(); ++s) {
- StaticANIObject *o = (StaticANIObject *)*s;
- o->setFlags(o->_flags & 0xFE7F);
- }
+ for (uint i = 0; i < scene->_staticANIObjectList1.size(); i++)
+ scene->_staticANIObjectList1[i]->_flags &= 0xFE7F;
PictureObject *p = accessScene(SC_INV)->getPictureObjectById(PIC_INV_MENU, 0);
p->setFlags(p->_flags & 0xFFFB);
@@ -794,16 +805,17 @@ bool FullpipeEngine::sceneSwitcher(EntranceInfo *entrance) {
_updateCursorCallback = scene17_updateCursor;
break;
-#if 0
case SC_18:
- sub_40E1B0();
+ scene18_setupEntrance();
sceneVar = _gameLoader->_gameVar->getSubVarByName("SC_18");
scene->preloadMovements(sceneVar);
- sub_4062D0();
- if (dword_476C38)
+ g_fp->stopAllSounds();
+
+ if (g_vars->scene18_inScene18p1)
scene18_initScene1(scene);
else
scene18_initScene2(scene);
+
_behaviorManager->initBehavior(scene, sceneVar);
scene->initObjectCursors("SC_18");
setSceneMusicParameters(sceneVar);
@@ -812,30 +824,34 @@ bool FullpipeEngine::sceneSwitcher(EntranceInfo *entrance) {
break;
case SC_19:
- if (!g_scene3) {
- g_scene3 = accessScene(SC_18);
- getGameLoader()->loadScene(SC_18);
- scene18_initScene2(g_scene3);
- sub_40C5F0();
- scene19_sub_420B10(g_scene3, entrance->field_4);
- dword_476C38 = 1;
+ if (!g_fp->_scene3) {
+ g_fp->_scene3 = accessScene(SC_18);
+ g_fp->_gameLoader->loadScene(SC_18);
+
+ scene18_initScene2(g_fp->_scene3);
+ scene18_preload();
+ scene19_setMovements(g_fp->_scene3, entrance->_field_4);
+
+ g_vars->scene18_inScene18p1 = true;
}
- sub_40C650();
+
+ scene19_preload();
sceneVar = _gameLoader->_gameVar->getSubVarByName("SC_19");
scene->preloadMovements(sceneVar);
- sub_4062D0();
- if (dword_476C38)
+ g_fp->stopAllSounds();
+
+ if (g_vars->scene18_inScene18p1)
scene18_initScene1(scene);
else
scene19_initScene2();
+
_behaviorManager->initBehavior(scene, sceneVar);
scene->initObjectCursors("SC_19");
setSceneMusicParameters(sceneVar);
addMessageHandler(sceneHandler19, 2);
- scene19_sub_4211D0(scene);
+ scene19_setSugarState(scene);
_updateCursorCallback = scene19_updateCursor;
break;
-#endif
case SC_20:
sceneVar = _gameLoader->_gameVar->getSubVarByName("SC_20");
@@ -941,7 +957,6 @@ bool FullpipeEngine::sceneSwitcher(EntranceInfo *entrance) {
_updateCursorCallback = scene28_updateCursor;
break;
-#if 0
case SC_29:
sceneVar = _gameLoader->_gameVar->getSubVarByName("SC_29");
scene->preloadMovements(sceneVar);
@@ -952,7 +967,6 @@ bool FullpipeEngine::sceneSwitcher(EntranceInfo *entrance) {
addMessageHandler(sceneHandler29, 2);
_updateCursorCallback = scene29_updateCursor;
break;
-#endif
case SC_30:
sceneVar = _gameLoader->_gameVar->getSubVarByName("SC_30");
@@ -1090,10 +1104,6 @@ int defaultUpdateCursor() {
return g_fp->_cursorId;
}
-void FullpipeEngine::processArcade(ExCommand *ex) {
- warning("STUB: FullpipeEngine::processArcade()");
-}
-
void FullpipeEngine::updateMapPiece(int mapId, int update) {
for (int i = 0; i < 200; i++) {
int hiWord = (_mapTable[i] >> 16) & 0xffff;
@@ -1449,5 +1459,31 @@ Ball *BallChain::sub04(Ball *ballP, Ball *ballN) {
return pTail;
}
+void BallChain::removeBall(Ball *ball) {
+ if (ball == pHead)
+ pHead = ball->p0;
+ else
+ ball->p1->p0 = ball->p0;
+
+ if (ball == field_8)
+ field_8 = ball->p1;
+ else
+ ball->p0->p1 = ball->p1;
+
+ ball->p0 = pTail;
+ pTail = ball;
+
+ numBalls--;
+
+ if (!numBalls) {
+ numBalls = 0;
+ pTail = 0;
+ field_8 = 0;
+ pHead = 0;
+ free(cPlex);
+ cPlex = 0;
+ }
+}
+
} // End of namespace Fullpipe
diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h
index 56aa5019a6..0b7c4e7c8f 100644
--- a/engines/fullpipe/scenes.h
+++ b/engines/fullpipe/scenes.h
@@ -33,6 +33,7 @@ class MctlLadder;
struct Ring;
class StaticANIObject;
struct Swinger;
+struct WalkingBearder;
int defaultUpdateCursor();
@@ -110,7 +111,19 @@ int sceneHandler17(ExCommand *cmd);
int scene17_updateCursor();
void scene18_preload();
-void scene19_preload(Scene *sc, int key);
+void scene18_setupEntrance();
+void scene18_initScene1(Scene *sc);
+void scene18_initScene2(Scene *sc);
+int sceneHandler18(ExCommand *cmd);
+int scene18_updateCursor();
+
+void scene19_preload();
+void scene19_setMovements(Scene *sc, int entranceId);
+void scene19_initScene2();
+void scene19_setMovements(Scene *sc, int key);
+int sceneHandler19(ExCommand *cmd);
+int scene19_updateCursor();
+void scene19_setSugarState(Scene *sc);
void scene20_initScene(Scene *sc);
int sceneHandler20(ExCommand *ex);
@@ -151,6 +164,10 @@ void scene28_initScene(Scene *sc);
int sceneHandler28(ExCommand *ex);
int scene28_updateCursor();
+int scene29_updateCursor();
+void scene29_initScene(Scene *sc);
+int sceneHandler29(ExCommand *cmd);
+
int scene30_updateCursor();
void scene30_initScene(Scene *sc, int flag);
int sceneHandler30(ExCommand *cmd);
@@ -215,6 +232,7 @@ struct BallChain {
void init(Ball **ball);
Ball *sub04(Ball *ballP, Ball *ballN);
+ void removeBall(Ball *ball);
void reset() { pHead = 0; pTail = 0; field_8 = 0; numBalls = 0; free(cPlex); cPlex = 0; cPlexLen = 0; }
};
@@ -461,43 +479,39 @@ public:
bool scene17_handPhase;
int scene17_sceneEdgeX;
- int scene18_var01;
- int scene18_var16;
- int scene18_var17;
- int scene18_var18;
- int scene18_var19;
+ bool scene18_inScene18p1;
StaticANIObject *scene18_whirlgig;
- Common::Array<Swinger *> scene18_var07;
- int scene18_var20;
- int scene18_var04;
- int scene18_var08;
- int scene18_var09;
- bool scene18_var03;
- int scene18_var21;
- int scene18_var11;
- int scene18_var12;
- int scene18_var22;
- int scene18_var23;
- int scene18_var24;
- int scene18_var25;
- int scene18_var26;
- int scene18_var27;
- int scene18_var13;
- int scene18_var14;
- int scene18_var28;
- int scene18_var15;
+ Common::Array<Swinger *> scene18_swingers;
+ int scene18_wheelCenterX;
+ int scene18_wheelCenterY;
+ bool scene18_bridgeIsConvoluted;
+ int scene18_whirlgigMovMum;
+ bool scene18_girlIsSwinging;
+ int scene18_rotationCounter;
+ int scene18_manY;
+ bool scene18_wheelFlipper;
+ bool scene18_wheelIsTurning;
+ int scene18_kidIsOnWheel;
+ int scene18_boyIsOnWheel;
+ int scene18_girlIsOnWheel;
+ bool scene18_boyJumpedOff;
+ int scene18_manWheelPos;
+ int scene18_manWheelPosTo;
+ int scene18_kidWheelPos;
+ int scene18_kidWheelPosTo;
+ int scene18_jumpDistance;
+ int scene18_jumpAngle;
+ bool scene18_manIsReady;
+ bool scene18_enteredTrubaRight;
StaticANIObject *scene18_boy;
StaticANIObject *scene18_girl;
StaticANIObject *scene18_domino;
- int scene18_var29;
- int scene18_var30;
- int scene18_var05;
- int scene18_var06;
+ int scene18_boyJumpX;
+ int scene18_boyJumpY;
+ int scene18_girlJumpX;
+ int scene18_girlJumpY;
- int scene19_var01;
- int scene19_var02;
- int scene19_var03;
- int scene19_var04;
+ bool scene19_enteredTruba3;
int scene20_fliesCountdown;
StaticANIObject *scene20_grandma;
@@ -577,6 +591,29 @@ public:
bool scene28_headBeardedFlipper;
bool scene28_lift6inside;
+ StaticANIObject *scene29_porter;
+ StaticANIObject *scene29_shooter1;
+ StaticANIObject *scene29_shooter2;
+ StaticANIObject *scene29_ass;
+ BallChain scene29_balls;
+ BallChain scene29_redBalls;
+ BallChain scene29_flyingRedBalls;
+ BallChain scene29_greenBalls;
+ bool scene29_manIsRiding;
+ bool scene29_arcadeIsOn;
+ bool scene29_reachedFarRight;
+ bool scene29_rideBackEnabled;
+ int scene29_shootCountdown;
+ int scene29_shootDistance;
+ int scene29_manIsHit;
+ int scene29_scrollSpeed;
+ bool scene29_scrollingDisabled;
+ int scene29_hitBall;
+ Common::Array<WalkingBearder *> scene29_bearders;
+ int scene29_manX;
+ int scene29_manY;
+ MGM scene29_mgm;
+
StaticANIObject *scene30_leg;
int scene30_liftFlag;
diff --git a/engines/fullpipe/scenes/scene18and19.cpp b/engines/fullpipe/scenes/scene18and19.cpp
index 93bf00077c..4f6677876b 100644
--- a/engines/fullpipe/scenes/scene18and19.cpp
+++ b/engines/fullpipe/scenes/scene18and19.cpp
@@ -48,78 +48,207 @@ struct Swinger {
int sfield_24;
};
+
+#define ANGLE(x) ((x) * M_PI / 180)
+
void scene18_preload() {
- warning("WARNING: scene18_preload()");
+ g_fp->_scene3 = 0;
+
+ for (SceneTagList::iterator s = g_fp->_gameProject->_sceneTagList->begin(); s != g_fp->_gameProject->_sceneTagList->end(); ++s) {
+ if (s->_sceneId == SC_18) {
+ g_fp->_scene3 = s->_scene;
+ s->_scene = 0;
+
+ g_fp->_scene3->getStaticANIObject1ById(ANI_WHIRLIGIG_18, -1)->freeMovementsPixelData();
+
+ break;
+ }
+ }
}
-void scene19_preload(Scene *sc, int key) {
- warning("WARNING: scene19_preload()");
+void scene18_setupEntrance() {
+ GameVar *var = g_fp->getGameLoaderGameVar()->getSubVarByName("OBJSTATES")->getSubVarByName("SAVEGAME");
+
+ if (var->getSubVarAsInt("Entrance") == TrubaRight)
+ var->setSubVarAsInt("Entrance", TrubaLeft);
}
-void scene18_sub2(StaticANIObject *ani, Scene *sc) {
- warning("WARNING: scene18_sub2()");
+void scene19_setSugarState(Scene *sc) {
+ if (g_fp->getObjectState(sO_Sugar) != g_fp->getObjectEnumState(sO_Sugar, sO_Present)) {
+ Scene *oldsc = g_fp->_currentScene;
+
+ g_fp->_currentScene = sc;
+ sc->getStaticANIObject1ById(ANI_CORDIE, -1)->changeStatics2(ST_CDI_EMPTY2);
+ g_fp->_currentScene = oldsc;
+ }
+}
+
+void scene19_setMovements(Scene *sc, int entranceId) {
+ if (entranceId == TrubaRight) {
+ g_vars->scene18_enteredTrubaRight = true;
+ } else {
+ g_vars->scene18_enteredTrubaRight = false;
+ g_vars->scene19_enteredTruba3 = (entranceId == PIC_SC19_RTRUBA3);
+ }
+
+ for (uint i = 0; i < g_vars->scene18_swingers.size(); i++) {
+ if (!g_vars->scene18_enteredTrubaRight && (g_vars->scene18_swingers[i]->sflags & 0x20)) {
+ Scene *oldsc = g_fp->_currentScene;
+
+ g_vars->scene18_swingers[i]->sflags = 1;
+
+ g_fp->_currentScene = sc;
+ g_vars->scene18_swingers[i]->ani->changeStatics2(ST_KSL_NORM);
+ g_vars->scene18_swingers[i]->ani->_priority = 30;
+ g_fp->_currentScene = oldsc;
+ }
+
+ sc->deleteStaticANIObject(g_vars->scene18_swingers[i]->ani);
+ }
+
+ if (g_vars->scene18_whirlgig->_movement) {
+ g_vars->scene18_whirlgigMovMum = g_vars->scene18_whirlgig->_movement->_currDynamicPhaseIndex + 1;
+
+ int mx;
+
+ if (g_vars->scene18_whirlgig->_movement->_currMovement)
+ mx = g_vars->scene18_whirlgig->_movement->_currMovement->_dynamicPhases.size();
+ else
+ mx = g_vars->scene18_whirlgig->_movement->_dynamicPhases.size();
+
+ if (g_vars->scene18_whirlgigMovMum > mx - 1)
+ g_vars->scene18_whirlgigMovMum = -1;
+ } else {
+ g_vars->scene18_whirlgigMovMum = 0;
+ }
+
+ sc->deleteStaticANIObject(g_vars->scene18_boy);
+ sc->deleteStaticANIObject(g_vars->scene18_girl);
+ sc->stopAllSounds();
+}
+
+void scene19_preload() {
+ for (SceneTagList::iterator s = g_fp->_gameProject->_sceneTagList->begin(); s != g_fp->_gameProject->_sceneTagList->end(); ++s) {
+ if (s->_sceneId == SC_18) {
+ s->_scene = g_fp->_scene3;
+
+ break;
+ }
+ }
+}
+
+void scene18_setupSwingers(StaticANIObject *ani, Scene *sc) {
+ Swinger *swinger;
+
+ g_vars->scene18_swingers.clear();
+
+ Scene *oldsc = g_fp->_currentScene;
+ g_fp->_currentScene = sc;
+
+ for (int i = 0; i < 8; i++) {
+ swinger = new Swinger;
+
+ swinger->angle = (double)i * ANGLE(45);
+ swinger->sx = g_vars->scene18_wheelCenterX - (int)(cos(swinger->angle) * -575.0);
+ swinger->sy = g_vars->scene18_wheelCenterY - (int)(sin(swinger->angle) * -575.0) + 87;
+ swinger->ix = swinger->sx;
+ swinger->iy = swinger->sy;
+
+ if (i) {
+ StaticANIObject *newani = new StaticANIObject(ani);
+
+ ani = newani;
+
+ swinger->ani = newani;
+ swinger->sflags = 2;
+
+ sc->addStaticANIObject(newani, 1);
+ } else {
+ swinger->ani = ani;
+ swinger->sflags = g_vars->scene18_girlIsSwinging ? 4 : 1;
+ }
+
+ ani->_statics = ani->getStaticsById(ST_KSL_NORM);
+ //ani->_movement = 0;
+ ani->setOXY(swinger->sx, swinger->sy);
+ ani->_priority = 30;
+ ani->_flags |= 4;
+
+ if (swinger->sflags & 2)
+ ani->startAnim(MV_KSL_SWINGBOY, 0, -1);
+ else if (swinger->sflags & 4)
+ ani->startAnim(MV_KSL_SWINGGIRL, 0, -1);
+ else
+ ani->startAnim(MV_KSL_SWING, 0, -1);
+
+ ani->_movement->setDynamicPhaseIndex(g_fp->_rnd->getRandomNumber(17));
+
+ g_vars->scene18_swingers.push_back(swinger);
+ }
+
+ g_fp->_currentScene = oldsc;
}
void scene18_initScene1(Scene *sc) {
PicAniInfo info;
- int oldx = g_vars->scene18_var20;
- int oldy = g_vars->scene18_var04;
+ int oldx = g_vars->scene18_wheelCenterX;
+ int oldy = g_vars->scene18_wheelCenterY;
- g_vars->scene18_var03 = (g_fp->getObjectState(sO_Girl) == g_fp->getObjectEnumState(sO_Girl, sO_IsSwinging));
+ g_vars->scene18_girlIsSwinging = (g_fp->getObjectState(sO_Girl) == g_fp->getObjectEnumState(sO_Girl, sO_IsSwinging));
if (sc->_sceneId == SC_18) {
g_vars->scene18_whirlgig = sc->getStaticANIObject1ById(ANI_WHIRLIGIG_18, -1);
- g_vars->scene18_var20 = 1032;
- g_vars->scene18_var04 = -318;
+ g_vars->scene18_wheelCenterX = 1032;
+ g_vars->scene18_wheelCenterY = -318;
} else {
g_vars->scene18_whirlgig = sc->getStaticANIObject1ById(ANI_WHIRLGIG_19, -1);
- g_vars->scene18_var20 = 1024;
- g_vars->scene18_var04 = 242;
+ g_vars->scene18_wheelCenterX = 1024;
+ g_vars->scene18_wheelCenterY = 242;
}
- int newx = g_vars->scene18_var20 - oldx;
- int newy = g_vars->scene18_var04 - oldy;
+ int newx = g_vars->scene18_wheelCenterX - oldx;
+ int newy = g_vars->scene18_wheelCenterY - oldy;
- g_vars->scene18_var29 += newx;
- g_vars->scene18_var30 += newy;
- g_vars->scene18_var05 += newx;
- g_vars->scene18_var06 += newy;
+ g_vars->scene18_boyJumpX += newx;
+ g_vars->scene18_boyJumpY += newy;
+ g_vars->scene18_girlJumpX += newx;
+ g_vars->scene18_girlJumpY += newy;
- for (uint i = 0; i < g_vars->scene18_var07.size(); i++) {
- g_vars->scene18_var07[i]->ani->getPicAniInfo(&info);
- sc->addStaticANIObject(g_vars->scene18_var07[i]->ani, 1);
- g_vars->scene18_var07[i]->ani->setPicAniInfo(&info);
+ for (uint i = 0; i < g_vars->scene18_swingers.size(); i++) {
+ g_vars->scene18_swingers[i]->ani->getPicAniInfo(&info);
+ sc->addStaticANIObject(g_vars->scene18_swingers[i]->ani, 1);
+ g_vars->scene18_swingers[i]->ani->setPicAniInfo(&info);
- g_vars->scene18_var07[i]->sx += newx;
- g_vars->scene18_var07[i]->sy += newy;
- g_vars->scene18_var07[i]->ix += newx;
- g_vars->scene18_var07[i]->iy += newy;
+ g_vars->scene18_swingers[i]->sx += newx;
+ g_vars->scene18_swingers[i]->sy += newy;
+ g_vars->scene18_swingers[i]->ix += newx;
+ g_vars->scene18_swingers[i]->iy += newy;
GameObject *go;
- if (g_vars->scene18_var07[i]->ani->_movement)
- go = g_vars->scene18_var07[i]->ani->_movement;
+ if (g_vars->scene18_swingers[i]->ani->_movement)
+ go = g_vars->scene18_swingers[i]->ani->_movement;
else
- go = g_vars->scene18_var07[i]->ani;
+ go = g_vars->scene18_swingers[i]->ani;
go->setOXY(newx + go->_ox, newy + go->_oy);
}
- if (g_vars->scene18_var08 && g_vars->scene18_var09 != -1) {
+ if (g_vars->scene18_bridgeIsConvoluted && g_vars->scene18_whirlgigMovMum != -1) {
g_vars->scene18_whirlgig->startAnim(sc->_sceneId != SC_18 ? MV_WHR19_SPIN : MV_WHR18_SPIN, 0, -1);
- g_vars->scene18_whirlgig->_movement->setDynamicPhaseIndex(g_vars->scene18_var09);
+ g_vars->scene18_whirlgig->_movement->setDynamicPhaseIndex(g_vars->scene18_whirlgigMovMum);
}
int sndid;
if (sc->_sceneId == SC_19) {
- if (g_vars->scene18_var08)
+ if (g_vars->scene18_bridgeIsConvoluted)
sndid = SND_19_015;
else
sndid = SND_19_016;
} else {
- if (g_vars->scene18_var08)
+ if (g_vars->scene18_bridgeIsConvoluted)
sndid = SND_18_006;
else
sndid = SND_18_010;
@@ -157,85 +286,77 @@ void scene18_initScene1(Scene *sc) {
g_vars->scene18_girl->setOXY(newx + x, newy + y);
- g_vars->scene18_var12 = 0;
- g_vars->scene18_var13 = -1;
- g_vars->scene18_var14 = -1;
+ g_vars->scene18_wheelFlipper = false;
+ g_vars->scene18_jumpDistance = -1;
+ g_vars->scene18_jumpAngle = -1;
- if (g_vars->scene18_var15) {
+ if (g_vars->scene18_enteredTrubaRight) {
if (sc->_sceneId == SC_19)
g_fp->_aniMan2 = 0;
else
- g_fp->_aniMan2 = g_vars->scene18_var07[g_vars->scene18_var27]->ani;
+ g_fp->_aniMan2 = g_vars->scene18_swingers[g_vars->scene18_manWheelPosTo]->ani;
} else {
g_fp->_aniMan2 = g_fp->_aniMan;
}
}
void scene18_initScene2(Scene *sc) {
- g_vars->scene18_var16 = 200;
- g_vars->scene18_var17 = 200;
- g_vars->scene18_var18 = 300;
- g_vars->scene18_var19 = 300;
g_vars->scene18_whirlgig = sc->getStaticANIObject1ById(ANI_WHIRLIGIG_18, -1);
- g_vars->scene18_var20 = 1032;
- g_vars->scene18_var04 = -318;
+ g_vars->scene18_wheelCenterX = 1032;
+ g_vars->scene18_wheelCenterY = -318;
StaticANIObject *armchair = sc->getStaticANIObject1ById(ANI_KRESLO, -1);
armchair->loadMovementsPixelData();
- g_vars->scene18_var03 = (g_fp->getObjectState(sO_Girl) == g_fp->getObjectEnumState(sO_Girl, sO_IsSwinging));
+ g_vars->scene18_girlIsSwinging = (g_fp->getObjectState(sO_Girl) == g_fp->getObjectEnumState(sO_Girl, sO_IsSwinging));
if (g_fp->getObjectState(sO_Bridge) == g_fp->getObjectEnumState(sO_Bridge, sO_Convoluted)) {
- g_vars->scene18_var08 = 1;
+ g_vars->scene18_bridgeIsConvoluted = true;
g_fp->playSound(SND_18_006, 1);
} else {
- g_vars->scene18_var08 = 0;
+ g_vars->scene18_bridgeIsConvoluted = false;
g_fp->playSound(SND_18_010, 1);
}
- scene18_sub2(armchair, sc);
-
- g_vars->scene18_var21 = 0;
- g_vars->scene18_var12 = 0;
- g_vars->scene18_var22 = 1;
- g_vars->scene18_var23 = -1;
- g_vars->scene18_var24 = 0;
- g_vars->scene18_var25 = 0;
- g_vars->scene18_var26 = 1;
- g_vars->scene18_var27 = -1;
- g_vars->scene18_var13 = -1;
- g_vars->scene18_var14 = -1;
- g_vars->scene18_var28 = 0;
- g_vars->scene18_var15 = 0;
+ scene18_setupSwingers(armchair, sc);
+
+ g_vars->scene18_rotationCounter = 0;
+ g_vars->scene18_wheelFlipper = false;
+ g_vars->scene18_wheelIsTurning = true;
+ g_vars->scene18_kidIsOnWheel = -1;
+ g_vars->scene18_boyIsOnWheel = 0;
+ g_vars->scene18_girlIsOnWheel = 0;
+ g_vars->scene18_boyJumpedOff = true;
+ g_vars->scene18_manWheelPosTo = -1;
+ g_vars->scene18_jumpDistance = -1;
+ g_vars->scene18_jumpAngle = -1;
+ g_vars->scene18_manIsReady = false;
+ g_vars->scene18_enteredTrubaRight = 0;
g_vars->scene18_boy = sc->getStaticANIObject1ById(ANI_BOY18, -1);
g_vars->scene18_girl = sc->getStaticANIObject1ById(ANI_GIRL18, -1);
g_vars->scene18_domino = sc->getStaticANIObject1ById(ANI_DOMINO_18, -1);
- g_vars->scene18_var29 = 290;
- g_vars->scene18_var30 = -363;
- g_vars->scene18_var05 = 283;
- g_vars->scene18_var06 = -350;
+ g_vars->scene18_boyJumpX = 290;
+ g_vars->scene18_boyJumpY = -363;
+ g_vars->scene18_girlJumpX = 283;
+ g_vars->scene18_girlJumpY = -350;
g_fp->initArcadeKeys("SC_18");
}
void scene19_initScene2() {
g_fp->_aniMan2 = 0;
- g_vars->scene19_var01 = 200;
- g_vars->scene19_var02 = 200;
- g_vars->scene19_var03 = 300;
- g_vars->scene19_var04 = 300;
}
int scene18_updateCursor() {
- if (g_vars->scene18_var15) {
+ if (g_vars->scene18_enteredTrubaRight) {
g_fp->_cursorId = PIC_CSR_DEFAULT;
} else {
g_fp->updateCursorCommon();
if (g_fp->_cursorId == PIC_CSR_ITN) {
if (g_fp->_objectIdAtCursor == PIC_SC18_LADDER1) {
- g_fp->_cursorId = (g_vars->scene18_var11 <= 250) ? PIC_CSR_GOD : PIC_CSR_GOU;
+ g_fp->_cursorId = (g_vars->scene18_manY <= 250) ? PIC_CSR_GOD : PIC_CSR_GOU;
} else if (g_fp->_objectIdAtCursor == PIC_SC18_LADDER2 || g_fp->_objectIdAtCursor == PIC_SC18_LADDER3) {
g_fp->_cursorId = PIC_CSR_GOU;
}
@@ -247,4 +368,565 @@ int scene18_updateCursor() {
return g_fp->_cursorId;
}
+int scene19_updateCursor() {
+ g_fp->updateCursorCommon();
+
+ if (g_fp->_objectIdAtCursor == PIC_SC19_RTRUBA31)
+ g_fp->_cursorId = g_vars->scene19_enteredTruba3 ? PIC_CSR_GOR : PIC_CSR_DEFAULT;
+
+ return g_fp->_cursorId;
+}
+
+void sceneHandler18_clickBoard() {
+ if (ABS(967 - g_fp->_aniMan->_ox) > 1 || ABS(379 - g_fp->_aniMan->_oy) > 1 || g_fp->_aniMan->_statics->_staticsId != ST_MAN_RIGHT) {
+ MessageQueue *mq = getCurrSceneSc2MotionController()->method34(g_fp->_aniMan, 967, 379, 1, ST_MAN_RIGHT);
+ ExCommand *ex = new ExCommand(0, 17, MSG_SC18_MANREADY, 0, 0, 0, 1, 0, 0, 0);
+
+ ex->_excFlags = 2;
+
+ mq->addExCommandToEnd(ex);
+
+ postExCommand(g_fp->_aniMan->_id, 2, 967, 379, 0, -1);
+ } else {
+ g_vars->scene18_manIsReady = true;
+ }
+}
+
+void sceneHandler18_showManJumpTo() {
+ g_fp->_aniMan->changeStatics2(ST_MAN_RIGHT);
+ g_fp->_aniMan->_flags &= 0xFFFB;
+ g_fp->_aniMan->_flags &= 0xFEFF;
+ g_vars->scene18_swingers[g_vars->scene18_manWheelPosTo]->sflags = 0x20;
+
+ g_vars->scene18_swingers[g_vars->scene18_manWheelPosTo]->ani->changeStatics2(ST_KSL_JUMPMAN);
+ g_vars->scene18_swingers[g_vars->scene18_manWheelPosTo]->ani->startAnim(MV_KSL_INMAN, 0, -1);
+ g_vars->scene18_swingers[g_vars->scene18_manWheelPosTo]->ani->_priority = 20;
+
+ g_vars->scene18_manIsReady = false;
+ g_vars->scene18_enteredTrubaRight = true;
+
+ g_fp->_aniMan2 = g_vars->scene18_swingers[g_vars->scene18_manWheelPosTo]->ani;
+}
+
+void sceneHandler18and19_showManJump() {
+ int x, y;
+
+ if (g_vars->scene18_swingers[g_vars->scene18_manWheelPos]->ani->_movement) {
+ x = g_vars->scene18_swingers[g_vars->scene18_manWheelPos]->ani->_movement->_ox;
+ y = g_vars->scene18_swingers[g_vars->scene18_manWheelPos]->ani->_movement->_oy;
+ } else {
+ x = g_vars->scene18_swingers[g_vars->scene18_manWheelPos]->ani->_ox;
+ y = g_vars->scene18_swingers[g_vars->scene18_manWheelPos]->ani->_oy;
+ }
+
+ g_fp->_aniMan->show1(x + 62, y + 5, MV_MAN18_JUMPTOTRUBA, 0);
+ g_fp->_aniMan->_priority = 35;
+
+ int mqid = 0;
+
+ if (g_vars->scene18_jumpDistance == 1) {
+ mqid = QU_SC19_MANJUMP1;
+ } else if (g_vars->scene18_jumpDistance == 2) {
+ mqid = QU_SC19_MANJUMP2;
+ } else if (g_vars->scene18_jumpDistance == 3) {
+ mqid = QU_SC19_MANJUMP3;
+ }
+
+ if (mqid) {
+ MessageQueue *mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(mqid), 0, 0);
+
+ g_fp->_aniMan2 = g_fp->_aniMan;
+ g_vars->scene18_enteredTrubaRight = false;
+
+ mq->setFlags(mq->getFlags() | 1);
+ mq->chain(0);
+ }
+
+ g_vars->scene18_swingers[g_vars->scene18_manWheelPos]->sflags = 1;
+
+ g_vars->scene18_swingers[g_vars->scene18_manWheelPos]->ani->changeStatics2(ST_KSL_NORM);
+ g_vars->scene18_swingers[g_vars->scene18_manWheelPos]->ani->_priority = 30;
+}
+
+void sceneHandler18and19_showGirlJumpTo() {
+ g_vars->scene18_girl->stopAnim_maybe();
+ g_vars->scene18_girl->hide();
+
+ g_vars->scene18_swingers[g_vars->scene18_kidWheelPosTo]->sflags = 4;
+
+ g_vars->scene18_swingers[g_vars->scene18_kidWheelPosTo]->ani->changeStatics2(ST_KSL_JUMPGIRL);
+ g_vars->scene18_swingers[g_vars->scene18_kidWheelPosTo]->ani->startAnim(MV_KSL_INGIRL, 0, -1);
+
+ g_vars->scene18_kidIsOnWheel--;
+ g_vars->scene18_girlIsOnWheel--;
+}
+
+void sceneHandler18and19_showGirlJump() {
+ StaticANIObject *ani = g_vars->scene18_swingers[g_vars->scene18_kidWheelPos]->ani;
+ int x, y;
+
+ if (ani->_movement) {
+ x = ani->_movement->_ox;
+ y = ani->_movement->_oy;
+ } else {
+ x = ani->_ox;
+ y = ani->_oy;
+ }
+
+ g_vars->scene18_girl->show1(x - 62, y - 10, MV_GRL18_JUMPFROM, 0);
+ g_vars->scene18_girl->_priority = 50;
+ g_vars->scene18_girl->startAnim(MV_GRL18_JUMPFROM, 0, -1);
+
+ g_vars->scene18_swingers[g_vars->scene18_kidWheelPos]->sflags = 1;
+
+ g_vars->scene18_swingers[g_vars->scene18_kidWheelPos]->ani->changeStatics2(ST_KSL_REACT);
+ g_vars->scene18_swingers[g_vars->scene18_kidWheelPos]->ani->startAnim(MV_KSL_CALMDOWN, 0, -1);
+
+ g_vars->scene18_kidIsOnWheel = 1;
+ g_vars->scene18_girlIsOnWheel++;
+}
+
+void sceneHandler18and19_showBoyJumpTo() {
+ g_vars->scene18_boy->stopAnim_maybe();
+ g_vars->scene18_boy->hide();
+
+ g_vars->scene18_swingers[g_vars->scene18_kidWheelPosTo]->sflags = 2;
+ g_vars->scene18_swingers[g_vars->scene18_kidWheelPosTo]->ani->changeStatics2(ST_KSL_JUMPBOY);
+ g_vars->scene18_swingers[g_vars->scene18_kidWheelPosTo]->ani->startAnim(MV_KSL_INBOY, 0, -1);
+
+ g_vars->scene18_kidIsOnWheel--;
+ g_vars->scene18_boyIsOnWheel--;
+}
+
+void sceneHandler18and19_showBoyJump() {
+ StaticANIObject *ani = g_vars->scene18_swingers[g_vars->scene18_kidWheelPos]->ani;
+ int x, y;
+
+ if (ani->_movement) {
+ x = ani->_movement->_ox;
+ y = ani->_movement->_oy;
+ } else {
+ x = ani->_ox;
+ y = ani->_oy;
+ }
+
+ g_vars->scene18_boy->show1(x - 48, y + 8, MV_BOY18_JUMPFROM, 0);
+ g_vars->scene18_boy->_priority = 50;
+ g_vars->scene18_boy->startAnim(MV_BOY18_JUMPFROM, 0, -1);
+
+ g_vars->scene18_swingers[g_vars->scene18_kidWheelPos]->sflags = 1;
+
+ g_vars->scene18_swingers[g_vars->scene18_kidWheelPos]->ani->changeStatics2(ST_KSL_REACT);
+ g_vars->scene18_swingers[g_vars->scene18_kidWheelPos]->ani->startAnim(MV_KSL_CALMDOWN, 0, -1);
+
+ g_vars->scene18_boyJumpedOff = true;
+}
+
+void sceneHandler18and19_boyJumpTo() {
+ g_vars->scene18_boy->stopAnim_maybe();
+ g_vars->scene18_boy->show1(g_vars->scene18_boyJumpX, g_vars->scene18_boyJumpY, MV_BOY18_JUMPTO, 0);
+ g_vars->scene18_boy->_priority = 50;
+ g_vars->scene18_boy->startAnim(MV_BOY18_JUMPTO, 0, -1);
+}
+
+void sceneHandler18and19_girlJumpTo() {
+ g_vars->scene18_girl->stopAnim_maybe();
+ g_vars->scene18_girl->show1(g_vars->scene18_girlJumpX, g_vars->scene18_girlJumpY, MV_GRL18_JUMPTO, 0);
+ g_vars->scene18_girl->_priority = 50;
+ g_vars->scene18_girl->startAnim(MV_GRL18_JUMPTO, 0, -1);
+}
+
+void sceneHandler18and19_manStandArmchair() {
+ g_fp->_aniMan->changeStatics2(ST_MAN_RIGHT);
+ g_fp->_aniMan->_flags |= 1;
+ g_fp->_aniMan->_priority = 35;
+ g_fp->_aniMan->startAnim(MV_MAN18_STANDKRESLO, 0, -1);
+}
+
+void sceneHandler18and19_drawRiders() {
+ g_vars->scene18_rotationCounter++;
+
+ if (g_vars->scene18_rotationCounter >= 359)
+ g_vars->scene18_rotationCounter = 0;
+
+ for (uint i = 0; i < g_vars->scene18_swingers.size(); i++) {
+ Swinger *swinger = g_vars->scene18_swingers[i];
+
+ double oldangle = swinger->angle;
+
+ swinger->angle += ANGLE(1);
+
+ if (swinger->angle > ANGLE(360)) {
+ swinger->angle -= ANGLE(360);
+ oldangle -= ANGLE(360);
+ }
+
+ int ix = g_vars->scene18_wheelCenterX - (int)(cos(swinger->angle) * -575.0);
+ int iy = g_vars->scene18_wheelCenterY - (int)(sin(swinger->angle) * -575.0) + 87;
+
+ if (!g_vars->scene18_rotationCounter) {
+ ix = swinger->sx;
+ iy = swinger->sy;
+ swinger->angle = (double)i * ANGLE(45);
+ }
+
+ if (swinger->ani->_movement)
+ swinger->ani->setOXY(ix - swinger->ix + swinger->ani->_movement->_ox, iy - swinger->iy + swinger->ani->_movement->_oy);
+ else
+ swinger->ani->setOXY(ix - swinger->ix + swinger->ani->_ox, iy - swinger->iy + swinger->ani->_oy);
+
+ swinger->ix = ix;
+ swinger->iy = iy;
+
+ if (!swinger->ani->_movement) {
+ int mv = 0;
+
+ if (swinger->sflags & 2) {
+ mv = MV_KSL_SWINGBOY;
+ } else if (swinger->sflags & 4) {
+ mv = MV_KSL_SWINGGIRL;
+ } else if (swinger->sflags & 0x20) {
+ mv = MV_KSL_SWINGMAN;
+ } else if (swinger->sflags & 1) {
+ mv = MV_KSL_SWING;
+ }
+
+ if (mv)
+ swinger->ani->startAnim(mv, 0, -1);
+
+ if (swinger->ani->_movement)
+ swinger->ani->_movement->_counter = 0;
+ }
+
+ if (g_vars->scene18_wheelIsTurning) {
+ if ((swinger->sflags & 2) && swinger->angle >= ANGLE(160) && oldangle < ANGLE(160)) {
+ swinger->sflags = 8;
+ swinger->ani->changeStatics2(ST_KSL_BOY);
+ swinger->ani->startAnim(MV_KSL_JUMPBOY, 0, -1);
+ g_vars->scene18_kidWheelPos = i;
+ } else if ((swinger->sflags & 4) && swinger->angle >= ANGLE(162) && oldangle < ANGLE(162)) {
+ swinger->sflags = 16;
+ swinger->ani->changeStatics2(ST_KSL_GIRL);
+ swinger->ani->startAnim(MV_KSL_JUMPGIRL, 0, -1);
+ g_vars->scene18_kidWheelPos = i;
+ } else if (g_vars->scene18_kidIsOnWheel) {
+ if (g_vars->scene18_boyIsOnWheel > 0 && (swinger->sflags & 1) && swinger->angle >= ANGLE(185) && oldangle < ANGLE(185)) {
+ g_vars->scene18_kidWheelPosTo = i;
+ sceneHandler18and19_boyJumpTo();
+ }
+ } else if (g_vars->scene18_girlIsOnWheel > 0 && (swinger->sflags & 1) && swinger->angle >= ANGLE(187) && oldangle < ANGLE(187)) {
+ g_vars->scene18_kidWheelPosTo = i;
+ sceneHandler18and19_girlJumpTo();
+ }
+
+ if (swinger->angle >= ANGLE(200) && oldangle < ANGLE(200)) {
+ if (g_vars->scene18_boyJumpedOff)
+ g_vars->scene18_boyIsOnWheel++;
+
+ g_vars->scene18_boyJumpedOff = false;
+ }
+ }
+
+ if (g_vars->scene18_manIsReady && (swinger->sflags & 1) && swinger->angle >= ANGLE(83) && oldangle < ANGLE(83)) {
+ g_vars->scene18_manWheelPosTo = i;
+ sceneHandler18and19_manStandArmchair();
+ }
+
+ if (!g_vars->scene18_enteredTrubaRight)
+ continue;
+
+ if ((int)i == g_vars->scene18_manWheelPosTo) {
+ if (swinger->angle >= ANGLE(170) && oldangle < ANGLE(170)) {
+ g_fp->_gameLoader->preloadScene(SC_18, TrubaRight);
+ } else if (swinger->angle >= ANGLE(25) && oldangle < ANGLE(25)) {
+ g_fp->_gameLoader->preloadScene(SC_19, TrubaRight);
+ } else if (swinger->angle >= ANGLE(270) && oldangle < ANGLE(270)) {
+ g_fp->_sceneRect.translate(1200, 0);
+ }
+ }
+
+ if (g_vars->scene18_jumpDistance > 0) {
+ if (swinger->sflags & 0x20) {
+ double newa = (double)g_vars->scene18_jumpAngle * ANGLE(1);
+
+ if (newa <= swinger->angle && oldangle < newa) {
+ swinger->ani->changeStatics2(ST_KSL_MAN);
+ swinger->ani->startAnim(MV_KSL_JUMPMAN, 0, -1);
+ swinger->ani->_priority = 35;
+
+ g_vars->scene18_manWheelPos = i;
+ }
+ }
+ }
+ }
+}
+
+void sceneHandler18and19_animateRiders() {
+ for (uint i = 0; i < g_vars->scene18_swingers.size(); i++) {
+ Swinger *swinger = g_vars->scene18_swingers[i];
+
+ if (!swinger->ani->_movement) {
+ int mv = 0;
+
+ if (swinger->sflags & 2)
+ mv = MV_KSL_SWINGBOY;
+ else if (swinger->sflags & 4)
+ mv = MV_KSL_SWINGGIRL;
+ else if (swinger->sflags & 0x20)
+ mv = MV_KSL_SWINGMAN;
+
+ if (mv)
+ swinger->ani->startAnim(mv, 0, -1);
+
+ if (swinger->ani->_movement)
+ swinger->ani->_movement->_counter = 0;
+ }
+ }
+}
+
+int sceneHandler18(ExCommand *cmd) {
+ if (cmd->_messageKind != 17)
+ return 0;
+
+ switch (cmd->_messageNum) {
+ case MSG_SC18_CLICKBOARD:
+ sceneHandler18_clickBoard();
+ break;
+
+ case MSG_SC3_HIDEDOMINO:
+ g_vars->scene18_domino->_flags &= 0xFFFB;
+ break;
+
+ case MSG_SC18_SHOWMANJUMP:
+ sceneHandler18and19_showManJump();
+ break;
+
+ case MSG_SC18_MANREADY:
+ g_vars->scene18_manIsReady = true;
+ break;
+
+ case MSG_SC18_SHOWMANJUMPTO:
+ sceneHandler18_showManJumpTo();
+ break;
+
+ case MSG_SC18_SHOWGIRLJUMPTO:
+ sceneHandler18and19_showGirlJumpTo();
+ break;
+
+ case MSG_SC18_SHOWGIRLJUMP:
+ sceneHandler18and19_showGirlJump();
+ break;
+
+ case MSG_SC18_SHOWBOYJUMPTO:
+ sceneHandler18and19_showBoyJumpTo();
+ break;
+
+ case MSG_SC18_SHOWBOYJUMP:
+ sceneHandler18and19_showBoyJump();
+ break;
+
+ case 29:
+ {
+ if (g_vars->scene18_enteredTrubaRight) {
+ cmd->_messageKind = 0;
+
+ break;
+ }
+
+ StaticANIObject *ani = g_fp->_currentScene->getStaticANIObjectAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
+
+ if (!ani || !canInteractAny(g_fp->_aniMan, ani, cmd->_keyCode)) {
+ int picId = g_fp->_currentScene->getPictureObjectIdAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
+ PictureObject *pic = g_fp->_currentScene->getPictureObjectById(picId, 0);
+
+ if (pic && pic->_id == PIC_SC18_DOMIN && g_vars->scene18_domino
+ && (g_vars->scene18_domino->_flags & 4) && g_fp->_aniMan->isIdle()) {
+ if (!(g_fp->_aniMan->_flags & 0x100) && g_fp->_msgObjectId2 != g_vars->scene18_domino->_id) {
+ handleObjectInteraction(g_fp->_aniMan, g_vars->scene18_domino, cmd->_keyCode);
+ cmd->_messageKind = 0;
+
+ break;
+ }
+ }
+
+ if (!pic || !canInteractAny(g_fp->_aniMan, pic, cmd->_keyCode)) {
+ if ((g_fp->_sceneRect.right - cmd->_sceneClickX < 47 && g_fp->_sceneRect.right < g_fp->_sceneWidth - 1)
+ || (cmd->_sceneClickX - g_fp->_sceneRect.left < 47 && g_fp->_sceneRect.left > 0)) {
+ g_fp->processArcade(cmd);
+
+ g_vars->scene18_manIsReady = false;
+
+ break;
+ }
+ }
+ }
+ break;
+ }
+
+ case 33:
+ if (g_fp->_aniMan2) {
+ int x = g_fp->_aniMan2->_ox;
+
+ g_vars->scene18_manY = g_fp->_aniMan2->_oy;
+
+ if (x < g_fp->_sceneRect.left + 200)
+ g_fp->_currentScene->_x = x - 300 - g_fp->_sceneRect.left;
+
+ if (x > g_fp->_sceneRect.right - 200)
+ g_fp->_currentScene->_x = x + 300 - g_fp->_sceneRect.right;
+ }
+
+ if (g_vars->scene18_manIsReady && g_fp->_aniMan->_movement)
+ g_vars->scene18_manIsReady = false;
+
+ if (g_vars->scene18_bridgeIsConvoluted) {
+ if (!g_vars->scene18_wheelFlipper)
+ sceneHandler18and19_drawRiders();
+
+ g_vars->scene18_wheelFlipper = !g_vars->scene18_wheelFlipper;
+
+ if (!g_vars->scene18_whirlgig->_movement) {
+ g_vars->scene18_whirlgig->startAnim(MV_WHR18_SPIN, 0, -1);
+ g_fp->_behaviorManager->updateBehaviors();
+
+ break;
+ }
+ } else {
+ sceneHandler18and19_animateRiders();
+ }
+
+ g_fp->_behaviorManager->updateBehaviors();
+
+ break;
+ }
+
+ return 0;
+}
+
+void sceneHandler19_updateNumRides() {
+ int numRides = g_fp->getGameLoaderGameVar()->getSubVarByName("OBJSTATES")->getSubVarAsInt(sO_DudeSwinged) + 1;
+
+ if (numRides > 1) {
+ g_fp->setObjectState(sO_Girl, g_fp->getObjectEnumState(sO_Girl, sO_IsSwinging));
+
+ g_vars->scene18_kidIsOnWheel = 1;
+ g_vars->scene18_girlIsOnWheel++;
+
+ numRides = 0;
+ }
+
+ g_fp->getGameLoaderGameVar()->getSubVarByName("OBJSTATES")->setSubVarAsInt(sO_DudeSwinged, numRides);
+}
+
+int sceneHandler19(ExCommand *cmd) {
+ if (cmd->_messageKind != 17)
+ return 0;
+
+ switch (cmd->_messageNum) {
+ case MSG_SC18_SHOWMANJUMP:
+ sceneHandler18and19_showManJump();
+ break;
+
+ case MSG_SC19_UPDATENUMRIDES:
+ sceneHandler19_updateNumRides();
+ break;
+
+ case MSG_SC18_SHOWGIRLJUMPTO:
+ sceneHandler18and19_showGirlJumpTo();
+ break;
+
+ case MSG_SC18_SHOWBOYJUMPTO:
+ sceneHandler18and19_showBoyJumpTo();
+ break;
+
+ case MSG_SC18_SHOWGIRLJUMP:
+ sceneHandler18and19_showGirlJump();
+ break;
+
+ case MSG_SC18_SHOWBOYJUMP:
+ sceneHandler18and19_showBoyJump();
+ break;
+
+ case 29:
+ if (g_vars->scene18_enteredTrubaRight) {
+ switch (g_fp->_currentScene->getPictureObjectIdAtPos(cmd->_sceneClickX, cmd->_sceneClickY)) {
+ case PIC_SC19_RTRUBA1:
+ g_vars->scene18_jumpDistance = 1;
+ g_vars->scene18_jumpAngle = 331;
+ cmd->_messageKind = 0;
+ break;
+
+ case PIC_SC19_RTRUBA2:
+ g_vars->scene18_jumpDistance = 2;
+ g_vars->scene18_jumpAngle = 350;
+ cmd->_messageKind = 0;
+ break;
+
+ case PIC_SC19_RTRUBA3:
+ g_vars->scene18_jumpDistance = 3;
+ g_vars->scene18_jumpAngle = 9;
+ cmd->_messageKind = 0;
+ break;
+
+ default:
+ g_vars->scene18_jumpDistance = -1;
+ g_vars->scene18_jumpAngle = -1;
+ cmd->_messageKind = 0;
+ break;
+ }
+ break;
+ }
+
+ if (g_vars->scene19_enteredTruba3) {
+ if (g_fp->_currentScene->getPictureObjectIdAtPos(cmd->_sceneClickX, cmd->_sceneClickY) == PIC_SC19_RTRUBA3) {
+ if (g_fp->_aniMan->isIdle()) {
+ if (!(g_fp->_aniMan->_flags & 0x100)) {
+ PictureObject *pic = g_fp->_currentScene->getPictureObjectById(PIC_SC19_RTRUBA31, 0);
+
+ handleObjectInteraction(g_fp->_aniMan, pic, cmd->_keyCode);
+ break;
+ }
+ }
+ }
+ }
+ break;
+
+ case 33:
+ if (g_fp->_aniMan2) {
+ int x = g_fp->_aniMan2->_ox;
+
+ g_vars->scene18_manY = g_fp->_aniMan2->_oy;
+
+ if (x < g_fp->_sceneRect.left + 200)
+ g_fp->_currentScene->_x = x - 300 - g_fp->_sceneRect.left;
+
+ if (x > g_fp->_sceneRect.right - 200)
+ g_fp->_currentScene->_x = x + 300 - g_fp->_sceneRect.right;
+ }
+
+ if (g_vars->scene18_bridgeIsConvoluted) {
+ if (!g_vars->scene18_wheelFlipper)
+ sceneHandler18and19_drawRiders();
+
+ g_vars->scene18_wheelFlipper = !g_vars->scene18_wheelFlipper;
+
+ if (!g_vars->scene18_whirlgig->_movement) {
+ g_vars->scene18_whirlgig->startAnim(MV_WHR19_SPIN, 0, -1);
+
+ g_fp->_behaviorManager->updateBehaviors();
+
+ break;
+ }
+ } else {
+ sceneHandler18and19_animateRiders();
+ }
+
+ g_fp->_behaviorManager->updateBehaviors();
+
+ break;
+ }
+
+ return 0;
+}
+
} // End of namespace Fullpipe
diff --git a/engines/fullpipe/scenes/scene29.cpp b/engines/fullpipe/scenes/scene29.cpp
new file mode 100644
index 0000000000..2d5127137d
--- /dev/null
+++ b/engines/fullpipe/scenes/scene29.cpp
@@ -0,0 +1,1125 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "fullpipe/fullpipe.h"
+
+#include "fullpipe/objectnames.h"
+#include "fullpipe/constants.h"
+
+#include "fullpipe/gameloader.h"
+#include "fullpipe/motion.h"
+#include "fullpipe/scenes.h"
+#include "fullpipe/statics.h"
+
+#include "fullpipe/interaction.h"
+#include "fullpipe/behavior.h"
+
+
+namespace Fullpipe {
+
+struct WalkingBearder {
+ StaticANIObject *ani;
+ int wbflag;
+ int wbcounter;
+};
+
+void scene29_initScene(Scene *sc) {
+ g_vars->scene29_porter = sc->getStaticANIObject1ById(ANI_PORTER, -1);
+ g_vars->scene29_shooter1 = sc->getStaticANIObject1ById(ANI_SHOOTER1, -1);
+ g_vars->scene29_shooter2 = sc->getStaticANIObject1ById(ANI_SHOOTER2, -1);
+ g_vars->scene29_ass = sc->getStaticANIObject1ById(ANI_ASS, -1);
+
+ g_vars->scene29_balls.numBalls = 0;
+ g_vars->scene29_balls.pTail = 0;
+ g_vars->scene29_balls.field_8 = 0;
+ g_vars->scene29_balls.pHead = 0;
+
+ free(g_vars->scene29_balls.cPlex);
+ g_vars->scene29_balls.cPlex = 0;
+
+ StaticANIObject *ani;
+
+ g_vars->scene29_greenBalls.numBalls = 0;
+ g_vars->scene29_greenBalls.pTail = 0;
+ g_vars->scene29_greenBalls.field_8 = 0;
+ g_vars->scene29_greenBalls.pHead = 0;
+
+ free(g_vars->scene29_greenBalls.cPlex);
+ g_vars->scene29_greenBalls.cPlex = 0;
+
+ ani = sc->getStaticANIObject1ById(ANI_SHELL_GREEN, -1);
+ Ball *b = g_vars->scene29_balls.sub04(g_vars->scene29_balls.field_8, 0);
+ b->ani = ani;
+
+ if (g_vars->scene29_balls.field_8)
+ g_vars->scene29_balls.field_8->p0 = b;
+ else
+ g_vars->scene29_balls.pHead = b;
+
+ g_vars->scene29_balls.field_8 = b;
+
+ for (int i = 0; i < 2; i++) {
+ StaticANIObject *newani = new StaticANIObject(ani);
+
+ sc->addStaticANIObject(newani, 1);
+
+ b = g_vars->scene29_balls.sub04(g_vars->scene29_balls.field_8, 0);
+ b->ani = ani;
+
+ if (g_vars->scene29_balls.field_8)
+ g_vars->scene29_balls.field_8->p0 = b;
+ else
+ g_vars->scene29_balls.pHead = b;
+
+ g_vars->scene29_balls.field_8 = b;
+ }
+
+ g_vars->scene29_redBalls.numBalls = 0;
+ g_vars->scene29_redBalls.pTail = 0;
+ g_vars->scene29_redBalls.field_8 = 0;
+ g_vars->scene29_redBalls.pHead = 0;
+
+ free(g_vars->scene29_redBalls.cPlex);
+ g_vars->scene29_redBalls.cPlex = 0;
+
+ g_vars->scene29_flyingRedBalls.numBalls = 0;
+ g_vars->scene29_flyingRedBalls.pTail = 0;
+ g_vars->scene29_flyingRedBalls.field_8 = 0;
+ g_vars->scene29_flyingRedBalls.pHead = 0;
+
+ free(g_vars->scene29_flyingRedBalls.cPlex);
+ g_vars->scene29_flyingRedBalls.cPlex = 0;
+
+ ani = sc->getStaticANIObject1ById(ANI_SHELL_RED, -1);
+
+ b = g_vars->scene29_redBalls.sub04(g_vars->scene29_redBalls.field_8, 0);
+ b->ani = ani;
+
+ if (g_vars->scene29_redBalls.field_8)
+ g_vars->scene29_redBalls.field_8->p0 = b;
+ else
+ g_vars->scene29_redBalls.pHead = b;
+
+ g_vars->scene29_redBalls.field_8 = b;
+
+ for (int i = 0; i < 2; i++) {
+ StaticANIObject *newani = new StaticANIObject(ani);
+
+ sc->addStaticANIObject(newani, 1);
+
+ b = g_vars->scene29_redBalls.sub04(g_vars->scene29_redBalls.field_8, 0);
+ b->ani = ani;
+
+ if (g_vars->scene29_redBalls.field_8)
+ g_vars->scene29_redBalls.field_8->p0 = b;
+ else
+ g_vars->scene29_redBalls.pHead = b;
+
+ g_vars->scene29_redBalls.field_8 = b;
+ }
+
+ g_vars->scene29_bearders.clear();
+
+ ani = new StaticANIObject(g_fp->accessScene(SC_COMMON)->getStaticANIObject1ById(ANI_BEARDED_CMN, -1));
+
+ ani->_statics = ani->getStaticsById(ST_BRDCMN_EMPTY);
+
+ sc->addStaticANIObject(ani, 1);
+
+ WalkingBearder *wb = new WalkingBearder;
+
+ wb->ani = ani;
+ wb->wbflag = 0;
+ wb->wbcounter = 0;
+
+ g_vars->scene29_bearders.push_back(wb);
+
+ g_vars->scene29_manIsRiding = false;
+ g_vars->scene29_arcadeIsOn = false;
+ g_vars->scene29_reachedFarRight = false;
+ g_vars->scene29_rideBackEnabled = false;
+ g_vars->scene29_shootCountdown = 0;
+ g_vars->scene29_shootDistance = 75;
+ g_vars->scene29_manIsHit = false;
+ g_vars->scene29_scrollSpeed = 0;
+ g_vars->scene29_scrollingDisabled = false;
+ g_vars->scene29_hitBall = 0;
+
+ g_fp->setArcadeOverlay(PIC_CSR_ARCADE8);
+}
+
+void sceneHandler29_winArcade() {
+ if (g_vars->scene29_shooter2->_flags & 4) {
+ g_vars->scene29_shootCountdown = 0;
+
+ g_vars->scene29_shooter1->changeStatics2(ST_STR1_STAND);
+ g_vars->scene29_shooter2->changeStatics2(ST_STR2_STAND);
+
+ g_vars->scene29_shooter2->_flags &= 0xFFFB;
+
+ StaticANIObject *ani;
+ Ball *newball, *ball, *oldp0;
+
+ while (g_vars->scene29_greenBalls.numBalls) {
+ ball = g_vars->scene29_greenBalls.pHead;
+ ani = g_vars->scene29_greenBalls.pHead->ani;
+ oldp0 = g_vars->scene29_greenBalls.pHead->p0;
+ g_vars->scene29_greenBalls.pHead = g_vars->scene29_greenBalls.pHead->p0;
+
+ if (g_vars->scene29_greenBalls.pHead)
+ oldp0->p1 = 0;
+ else
+ g_vars->scene29_greenBalls.field_8 = 0;
+
+ ball->p0 = g_vars->scene29_greenBalls.pTail;
+ g_vars->scene29_greenBalls.pTail = ball;
+ g_vars->scene29_greenBalls.numBalls--;
+
+ if (!g_vars->scene29_greenBalls.numBalls)
+ g_vars->scene29_greenBalls.reset();
+
+ ani->hide();
+
+ newball = g_vars->scene29_balls.sub04(g_vars->scene29_balls.field_8, 0);
+ newball->ani = ani;
+
+ if (g_vars->scene29_balls.field_8)
+ g_vars->scene29_balls.field_8->p0 = newball;
+ else
+ g_vars->scene29_balls.pHead = newball;
+
+ g_vars->scene29_balls.field_8 = newball;
+ }
+
+ while (g_vars->scene29_flyingRedBalls.numBalls) {
+ ball = g_vars->scene29_flyingRedBalls.pHead;
+ ani = g_vars->scene29_flyingRedBalls.pHead->ani;
+ oldp0 = g_vars->scene29_flyingRedBalls.pHead->p0;
+ g_vars->scene29_flyingRedBalls.pHead = g_vars->scene29_flyingRedBalls.pHead->p0;
+
+ if (g_vars->scene29_flyingRedBalls.pHead)
+ oldp0->p1 = 0;
+ else
+ g_vars->scene29_flyingRedBalls.field_8 = 0;
+
+ ball->p0 = g_vars->scene29_flyingRedBalls.pTail;
+ g_vars->scene29_flyingRedBalls.pTail = ball;
+ g_vars->scene29_flyingRedBalls.numBalls--;
+
+ if (!g_vars->scene29_flyingRedBalls.numBalls) {
+ g_vars->scene29_flyingRedBalls.numBalls = 0;
+ g_vars->scene29_flyingRedBalls.pTail = 0;
+ g_vars->scene29_flyingRedBalls.field_8 = 0;
+ g_vars->scene29_flyingRedBalls.pHead = 0;
+
+ free(g_vars->scene29_flyingRedBalls.cPlex);
+
+ g_vars->scene29_flyingRedBalls.cPlex = 0;
+ }
+
+ ani->hide();
+
+ newball = g_vars->scene29_redBalls.sub04(g_vars->scene29_redBalls.field_8, 0);
+ newball->ani = ani;
+
+ if (g_vars->scene29_redBalls.field_8)
+ g_vars->scene29_redBalls.field_8->p0 = newball;
+ else
+ g_vars->scene29_redBalls.pHead = newball;
+
+ g_vars->scene29_redBalls.field_8 = newball;
+ }
+
+ g_vars->scene29_ass->queueMessageQueue(0);
+ g_vars->scene29_ass->_flags &= 0xFFFB;
+
+ chainQueue(QU_SC29_ESCAPE, 1);
+ }
+
+ g_fp->setObjectState(sO_LeftPipe_29, g_fp->getObjectEnumState(sO_LeftPipe_29, sO_IsOpened));
+}
+
+void sceneHandler29_shootGreen() {
+ if (g_vars->scene29_balls.numBalls) {
+ int x = g_vars->scene29_shooter1->_ox - 113;
+ int y = g_vars->scene29_shooter1->_oy - 48;
+ StaticANIObject *ani = g_vars->scene29_balls.pHead->ani;
+ Ball *oldhead = g_vars->scene29_balls.pHead;
+ Ball *oldp0 = g_vars->scene29_balls.pHead->p0;
+
+ g_vars->scene29_balls.pHead = g_vars->scene29_balls.pHead->p0;
+
+ if (g_vars->scene29_balls.pHead)
+ oldp0->p1 = 0;
+ else
+ g_vars->scene29_balls.field_8 = 0;
+
+ oldhead->p0 = g_vars->scene29_balls.pTail;
+
+ g_vars->scene29_balls.pTail = oldhead;
+ g_vars->scene29_balls.numBalls--;
+
+ if (!g_vars->scene29_balls.numBalls) {
+ g_vars->scene29_balls.numBalls = 0;
+ g_vars->scene29_balls.pTail = 0;
+ g_vars->scene29_balls.field_8 = 0;
+ g_vars->scene29_balls.pHead = 0;
+
+ free(g_vars->scene29_balls.cPlex);
+ g_vars->scene29_balls.cPlex = 0;
+ }
+
+ ani->show1(x, y, MV_SHG_NORM, 0);
+ ani->_priority = 5;
+
+ Ball *runPtr = g_vars->scene29_greenBalls.pTail;
+ Ball *lastP = g_vars->scene29_greenBalls.field_8;
+
+ if (!g_vars->scene29_greenBalls.pTail) {
+ g_vars->scene29_greenBalls.cPlex = (byte *)calloc(g_vars->scene29_greenBalls.cPlexLen, sizeof(Ball));
+
+ byte *p1 = g_vars->scene29_greenBalls.cPlex + (g_vars->scene29_greenBalls.cPlexLen - 1) * sizeof(Ball);
+
+ if (g_vars->scene29_greenBalls.cPlexLen - 1 < 0) {
+ runPtr = g_vars->scene29_greenBalls.pTail;
+ } else {
+ runPtr = g_vars->scene29_greenBalls.pTail;
+
+ for (int j = 0; j < g_vars->scene29_greenBalls.cPlexLen; j++) {
+ ((Ball *)p1)->p1 = runPtr;
+ runPtr = (Ball *)p1;
+
+ p1 -= sizeof(Ball);
+ }
+
+ g_vars->scene29_greenBalls.pTail = runPtr;
+ }
+ }
+ g_vars->scene29_greenBalls.pTail = runPtr->p0;
+ runPtr->p1 = lastP;
+ runPtr->p0 = 0;
+ runPtr->ani = ani;
+
+ g_vars->scene29_greenBalls.numBalls++;
+
+ if (g_vars->scene29_greenBalls.field_8) {
+ g_vars->scene29_greenBalls.field_8->p0 = runPtr;
+ g_vars->scene29_greenBalls.field_8 = runPtr;
+ } else {
+ g_vars->scene29_greenBalls.pHead = runPtr;
+ g_vars->scene29_greenBalls.field_8 = runPtr;
+ }
+ }
+}
+
+void sceneHandler29_shootRed() {
+ if (g_vars->scene29_balls.numBalls) {
+ int x = g_vars->scene29_shooter1->_ox - 101;
+ int y = g_vars->scene29_shooter1->_oy - 14;
+ StaticANIObject *ani = g_vars->scene29_balls.pHead->ani;
+ Ball *oldhead = g_vars->scene29_balls.pHead;
+ Ball *oldp0 = g_vars->scene29_balls.pHead->p0;
+
+ g_vars->scene29_balls.pHead = g_vars->scene29_balls.pHead->p0;
+
+ if (g_vars->scene29_balls.pHead)
+ oldp0->p1 = 0;
+ else
+ g_vars->scene29_balls.field_8 = 0;
+
+ oldhead->p0 = g_vars->scene29_balls.pTail;
+
+ g_vars->scene29_balls.pTail = oldhead;
+ g_vars->scene29_balls.numBalls--;
+
+ if (!g_vars->scene29_balls.numBalls) {
+ g_vars->scene29_balls.numBalls = 0;
+ g_vars->scene29_balls.pTail = 0;
+ g_vars->scene29_balls.field_8 = 0;
+ g_vars->scene29_balls.pHead = 0;
+
+ free(g_vars->scene29_balls.cPlex);
+ g_vars->scene29_balls.cPlex = 0;
+ }
+
+ ani->show1(x, y, MV_SHR_NORM, 0);
+ ani->_priority = 5;
+
+ Ball *runPtr = g_vars->scene29_flyingRedBalls.pTail;
+ Ball *lastP = g_vars->scene29_flyingRedBalls.field_8;
+
+ if (!g_vars->scene29_flyingRedBalls.pTail) {
+ g_vars->scene29_flyingRedBalls.cPlex = (byte *)calloc(g_vars->scene29_flyingRedBalls.cPlexLen, sizeof(Ball));
+
+ byte *p1 = g_vars->scene29_flyingRedBalls.cPlex + (g_vars->scene29_flyingRedBalls.cPlexLen - 1) * sizeof(Ball);
+
+ if (g_vars->scene29_flyingRedBalls.cPlexLen - 1 < 0) {
+ runPtr = g_vars->scene29_flyingRedBalls.pTail;
+ } else {
+ runPtr = g_vars->scene29_flyingRedBalls.pTail;
+
+ for (int j = 0; j < g_vars->scene29_flyingRedBalls.cPlexLen; j++) {
+ ((Ball *)p1)->p1 = runPtr;
+ runPtr = (Ball *)p1;
+
+ p1 -= sizeof(Ball);
+ }
+
+ g_vars->scene29_flyingRedBalls.pTail = runPtr;
+ }
+ }
+ g_vars->scene29_flyingRedBalls.pTail = runPtr->p0;
+ runPtr->p1 = lastP;
+ runPtr->p0 = 0;
+ runPtr->ani = ani;
+
+ g_vars->scene29_flyingRedBalls.numBalls++;
+
+ if (g_vars->scene29_flyingRedBalls.field_8) {
+ g_vars->scene29_flyingRedBalls.field_8->p0 = runPtr;
+ g_vars->scene29_flyingRedBalls.field_8 = runPtr;
+ } else {
+ g_vars->scene29_flyingRedBalls.pHead = runPtr;
+ g_vars->scene29_flyingRedBalls.field_8 = runPtr;
+ }
+ }
+}
+
+void sceneHandler29_manJump() {
+ if (!g_fp->_aniMan->_movement || g_fp->_aniMan->_movement->_id == MV_MAN29_RUN || g_fp->_aniMan->_movement->_id == MV_MAN29_STANDUP) {
+ g_vars->scene29_rideBackEnabled = false;
+ g_vars->scene29_manIsHit = false;
+ g_vars->scene29_reachedFarRight = true;
+
+ g_fp->_aniMan->changeStatics2(ST_MAN29_RUNR);
+ g_fp->_aniMan->startAnim(MV_MAN29_JUMP, 0, -1);
+ }
+
+ g_vars->scene29_manX = g_fp->_aniMan->_ox;
+ g_vars->scene29_manY = g_fp->_aniMan->_oy;
+}
+
+void sceneHandler29_manBend() {
+ if (!g_fp->_aniMan->_movement || g_fp->_aniMan->_movement->_id == MV_MAN29_RUN || g_fp->_aniMan->_movement->_id == MV_MAN29_STANDUP) {
+ g_vars->scene29_rideBackEnabled = false;
+ g_vars->scene29_manIsHit = false;
+ g_vars->scene29_reachedFarRight = true;
+
+ g_fp->_aniMan->changeStatics2(ST_MAN29_RUNR);
+ g_fp->_aniMan->startAnim(MV_MAN29_BEND, 0, -1);
+ }
+
+ g_vars->scene29_manX = g_fp->_aniMan->_ox;
+ g_vars->scene29_manY = g_fp->_aniMan->_oy;
+}
+
+bool sceneHandler29_checkRedBallHit(StaticANIObject *ani, int maxx) {
+ if (!g_vars->scene29_arcadeIsOn || g_vars->scene29_manIsHit)
+ return false;
+
+ if ((ani->_ox >= g_vars->scene29_manX + 42 || ani->_ox <= g_vars->scene29_manX + 8)
+ && (ani->_ox < g_vars->scene29_manX + 8 || maxx > g_vars->scene29_manX + 27))
+ return false;
+
+ if (!g_fp->_aniMan->_movement)
+ return true;
+
+ int phase = g_fp->_aniMan->_movement->_currDynamicPhaseIndex;
+
+ if (g_fp->_aniMan->_movement->_id != MV_MAN29_BEND && g_fp->_aniMan->_movement->_id != MV_MAN29_RUN
+ && (g_fp->_aniMan->_movement->_id != MV_MAN29_JUMP || (phase >= 3 && phase <= 6)))
+ return false;
+ else
+ return true;
+}
+
+bool sceneHandler29_checkGreenBallHit(StaticANIObject *ani, int maxx) {
+ if (!g_vars->scene29_arcadeIsOn || g_vars->scene29_manIsHit)
+ return false;
+
+ if (ani->_ox >= g_vars->scene29_manX + 40) {
+ if (maxx > g_vars->scene29_manX + 27)
+ return false;
+ } else {
+ if (ani->_ox <= g_vars->scene29_manX + 10) {
+ if (ani->_ox < g_vars->scene29_manX + 40)
+ return false;
+
+ if (maxx > g_vars->scene29_manX + 27)
+ return false;
+ }
+ }
+
+ if (!g_fp->_aniMan->_movement)
+ return true;
+
+ if (g_fp->_aniMan->_movement->_id == MV_MAN29_JUMP)
+ return true;
+
+ if (g_fp->_aniMan->_movement->_id == MV_MAN29_RUN)
+ return true;
+
+ if (g_fp->_aniMan->_movement->_id == MV_MAN29_BEND) {
+ if (g_fp->_aniMan->_movement->_currDynamicPhaseIndex < 1 || g_fp->_aniMan->_movement->_currDynamicPhaseIndex > 5)
+ return true;
+ }
+
+ return false;
+}
+
+void sceneHandler29_manHit() {
+ MGMInfo mgminfo;
+
+ g_vars->scene29_manIsHit = true;
+
+ g_fp->_aniMan->changeStatics2(ST_MAN29_RUNR);
+ g_fp->_aniMan->setOXY(g_vars->scene29_manX, g_vars->scene29_manY);
+
+ mgminfo.ani = g_fp->_aniMan;
+ mgminfo.staticsId2 = ST_MAN29_SITR;
+ mgminfo.y1 = 463;
+ mgminfo.x1 = g_vars->scene29_manX <= 638 ? 351 : 0;
+ mgminfo.field_1C = 10;
+ mgminfo.field_10 = 1;
+ mgminfo.flags = (g_vars->scene29_manX <= 638 ? 2 : 0) | 0x44;
+ mgminfo.movementId = MV_MAN29_HIT;
+
+ MessageQueue *mq = g_vars->scene29_mgm.genMovement(&mgminfo);
+ ExCommand *ex;
+
+ if (mq) {
+ if (g_vars->scene29_manX <= 638) {
+ ex = new ExCommand(ANI_MAN, 1, MV_MAN29_STANDUP_NORM, 0, 0, 0, 1, 0, 0, 0);
+ ex->_excFlags = 2;
+ ex->_keyCode = g_fp->_aniMan->_okeyCode;
+ mq->addExCommandToEnd(ex);
+
+ ex = new ExCommand(0, 17, MSG_SC29_STOPRIDE, 0, 0, 0, 1, 0, 0, 0);
+ ex->_excFlags = 2;
+ mq->addExCommandToEnd(ex);
+
+ g_vars->scene29_manIsRiding = false;
+ g_vars->scene29_arcadeIsOn = false;
+ g_vars->scene29_reachedFarRight = false;
+ g_vars->scene29_rideBackEnabled = false;
+ } else {
+ ex = new ExCommand(ANI_MAN, 1, MV_MAN29_STANDUP, 0, 0, 0, 1, 0, 0, 0);
+ ex->_excFlags = 2;
+ ex->_keyCode = g_fp->_aniMan->_okeyCode;
+ mq->addExCommandToEnd(ex);
+ }
+
+ mq->setFlags(mq->getFlags() | 1);
+
+ if (!mq->chain(g_fp->_aniMan))
+ delete mq;
+ }
+}
+
+void sceneHandler29_assHitRed() {
+ if (g_vars->scene29_ass->_statics->_staticsId == ST_ASS_NORM) {
+ g_vars->scene29_ass->changeStatics2(ST_ASS_NORM);
+ g_vars->scene29_ass->startAnim(MV_ASS_HITRED, 0, -1);
+ }
+}
+
+void sceneHandler29_assHitGreen() {
+ if (g_vars->scene29_ass->_statics->_staticsId == ST_ASS_NORM) {
+ g_vars->scene29_ass->changeStatics2(ST_ASS_NORM);
+ g_vars->scene29_ass->startAnim(MV_ASS_HITGREEN, 0, -1);
+ }
+}
+
+void sceneHandler29_ballHitCheck() {
+ Ball *ball = g_vars->scene29_greenBalls.pHead;
+ Ball *newball;
+ int x, y;
+
+ while (ball) {
+ x = ball->ani->_ox - 30;
+ y = ball->ani->_oy;
+
+ if (x >= 186) {
+ if (sceneHandler29_checkGreenBallHit(ball->ani, x)) {
+ newball = g_vars->scene29_balls.sub04(g_vars->scene29_balls.field_8, 0);
+ newball->ani = ball->ani;
+
+ if (g_vars->scene29_balls.field_8)
+ g_vars->scene29_balls.field_8->p0 = newball;
+ else
+ g_vars->scene29_balls.pHead = newball;
+
+ g_vars->scene29_balls.field_8 = newball;
+
+ if (ball == g_vars->scene29_greenBalls.pHead)
+ g_vars->scene29_greenBalls.pHead = ball->p0;
+ else
+ ball->p1->p0 = ball->p0;
+
+ if (ball == g_vars->scene29_greenBalls.field_8)
+ g_vars->scene29_greenBalls.field_8 = ball->p1;
+ else
+ ball->p0->p1 = ball->p1;
+
+ g_vars->scene29_greenBalls.init(&ball);
+
+ sceneHandler29_manHit();
+
+ g_fp->playSound(SND_29_014, 0);
+
+ ball->ani->startAnim(MV_SHG_HITMAN, 0, -1);
+
+ g_vars->scene29_hitBall = ball->ani->_id;
+ } else {
+ ball->ani->setOXY(x, y);
+ }
+ } else {
+ newball = g_vars->scene29_balls.sub04(g_vars->scene29_balls.field_8, 0);
+ newball->ani = ball->ani;
+
+ if (g_vars->scene29_balls.field_8)
+ g_vars->scene29_balls.field_8->p0 = newball;
+ else
+ g_vars->scene29_balls.pHead = newball;
+
+ g_vars->scene29_balls.field_8 = newball;
+
+ ball->ani->hide();
+
+ if (ball == g_vars->scene29_greenBalls.pHead)
+ g_vars->scene29_greenBalls.pHead = ball->p0;
+ else
+ ball->p1->p0 = ball->p0;
+
+ if (ball == g_vars->scene29_greenBalls.field_8)
+ g_vars->scene29_greenBalls.field_8 = ball->p1;
+ else
+ ball->p0->p1 = ball->p1;
+
+ g_vars->scene29_greenBalls.init(&ball);
+
+ sceneHandler29_assHitGreen();
+ }
+
+ ball = ball->p0;
+ }
+
+ ball = g_vars->scene29_flyingRedBalls.pHead;
+
+ while (ball) {
+ x = ball->ani->_ox - 30;
+ y = ball->ani->_oy;
+
+ if (x >= 147) {
+ if (sceneHandler29_checkRedBallHit(ball->ani, x)) {
+ newball = g_vars->scene29_redBalls.sub04(g_vars->scene29_redBalls.field_8, 0);
+ newball->ani = ball->ani;
+
+ if (g_vars->scene29_redBalls.field_8)
+ g_vars->scene29_redBalls.field_8->p0 = newball;
+ else
+ g_vars->scene29_redBalls.pHead = newball;
+
+ g_vars->scene29_redBalls.field_8 = newball;
+
+ g_vars->scene29_flyingRedBalls.removeBall(ball);
+
+ sceneHandler29_manHit();
+
+ g_fp->playSound(SND_29_027, 0);
+
+ ball->ani->startAnim(MV_SHR_HITMAN, 0, -1);
+
+ g_vars->scene29_hitBall = ball->ani->_id;
+ } else {
+ ball->ani->setOXY(x, y);
+ }
+ } else {
+ newball = g_vars->scene29_redBalls.sub04(g_vars->scene29_redBalls.field_8, 0);
+ newball->ani = ball->ani;
+
+ if (g_vars->scene29_redBalls.field_8)
+ g_vars->scene29_redBalls.field_8->p0 = newball;
+ else
+ g_vars->scene29_redBalls.pHead = newball;
+
+ g_vars->scene29_redBalls.field_8 = newball;
+
+ ball->ani->hide();
+
+ if (ball == g_vars->scene29_flyingRedBalls.pHead)
+ g_vars->scene29_flyingRedBalls.pHead = ball->p0;
+ else
+ ball->p1->p0 = ball->p0;
+
+ if (ball == g_vars->scene29_flyingRedBalls.field_8)
+ g_vars->scene29_flyingRedBalls.field_8 = ball->p1;
+ else
+ ball->p0->p1 = ball->p1;
+
+ g_vars->scene29_flyingRedBalls.init(&ball);
+
+ sceneHandler29_assHitRed();
+ }
+
+ ball = ball->p0;
+ }
+}
+
+void sceneHandler29_manFromL() {
+ if (g_vars->scene29_manX < 497 && !g_vars->scene29_scrollingDisabled) {
+ getCurrSceneSc2MotionController()->setEnabled();
+ getGameLoaderInteractionController()->enableFlag24();
+
+ g_fp->_aniMan->changeStatics2(ST_MAN_RIGHT | 0x4000);
+ chainQueue(QU_SC29_MANFROM_L, 1);
+
+ g_vars->scene29_scrollingDisabled = true;
+
+ g_fp->_scrollSpeed = g_vars->scene29_scrollSpeed;
+ }
+}
+
+void sceneHandler29_manFromR() {
+ getCurrSceneSc2MotionController()->setEnabled();
+ getGameLoaderInteractionController()->enableFlag24();
+
+ chainQueue(QU_SC29_MANFROM_R, 1);
+
+ g_vars->scene29_arcadeIsOn = false;
+ g_vars->scene29_rideBackEnabled = false;
+}
+
+int sceneHandler29_updateScreenCallback() {
+ int res;
+
+ res = g_fp->drawArcadeOverlay(g_vars->scene29_arcadeIsOn);
+
+ if (!res)
+ g_fp->_updateScreenCallback = 0;
+
+ return res;
+}
+
+void sceneHandler29_manToL() {
+ getCurrSceneSc2MotionController()->clearEnabled();
+ getGameLoaderInteractionController()->disableFlag24();
+
+ chainQueue(QU_SC29_MANTO_L, 1);
+
+ g_vars->scene29_arcadeIsOn = true;
+
+ g_vars->scene29_mgm.addItem(g_fp->_aniMan->_id);
+
+ g_fp->_updateScreenCallback = sceneHandler29_updateScreenCallback;
+
+ g_fp->_msgY = -1;
+ g_fp->_msgX = -1;
+}
+
+void sceneHandler29_manToR() {
+ getCurrSceneSc2MotionController()->clearEnabled();
+ getGameLoaderInteractionController()->disableFlag24();
+
+ chainQueue(QU_SC29_MANTO_R, 1);
+
+ g_vars->scene29_manIsRiding = true;
+ g_fp->_msgY = -1;
+ g_fp->_msgX = -1;
+
+ g_vars->scene29_scrollingDisabled = false;
+
+ g_vars->scene29_scrollSpeed = g_fp->_scrollSpeed;
+ g_fp->_scrollSpeed = 4;
+}
+
+void sceneHandler29_clickPorter(ExCommand *cmd) {
+ if (!g_fp->_aniMan->isIdle() || g_fp->_aniMan->_flags & 0x100) {
+ cmd->_messageKind = 0;
+
+ return;
+ }
+
+ if (g_vars->scene29_manX <= g_vars->scene29_porter->_ox) {
+ if (ABS(351 - g_vars->scene29_manX) > 1 || ABS(443 - g_vars->scene29_manY) > 1
+ || g_fp->_aniMan->_movement || g_fp->_aniMan->_statics->_staticsId != ST_MAN_RIGHT) {
+ if (g_fp->_msgX != 351 || g_fp->_msgY != 443) {
+ MessageQueue *mq = getCurrSceneSc2MotionController()->method34(g_fp->_aniMan, 351, 443, 1, ST_MAN_RIGHT);
+
+ if (mq) {
+ mq->addExCommandToEnd(cmd->createClone());
+
+ postExCommand(g_fp->_aniMan->_id, 2, 351, 443, 0, -1);
+ }
+ }
+ } else {
+ sceneHandler29_manToL();
+ }
+ } else {
+ g_vars->scene29_manX = g_fp->_aniMan->_ox;
+ g_vars->scene29_manY = g_fp->_aniMan->_oy;
+
+ if (ABS(1582 - g_vars->scene29_manX) > 1 || ABS(445 - g_fp->_aniMan->_oy) > 1
+ || g_fp->_aniMan->_movement || g_fp->_aniMan->_statics->_staticsId != (0x4000 | ST_MAN_RIGHT)) {
+ if (g_fp->_msgX != 1582 || g_fp->_msgY != 445) {
+ MessageQueue *mq = getCurrSceneSc2MotionController()->method34(g_fp->_aniMan, 1582, 445, 1, (0x4000 | ST_MAN_RIGHT));
+
+ if (mq) {
+ mq->addExCommandToEnd(cmd->createClone());
+
+ postExCommand(g_fp->_aniMan->_id, 2, 1582, 445, 0, -1);
+ }
+ }
+ } else {
+ sceneHandler29_manToR();
+ }
+ }
+}
+
+void sceneHandler29_shootersProcess() {
+ if (g_fp->_aniMan->_statics->_staticsId == ST_MAN29_RUNR) {
+ if (g_vars->scene29_manX > 1436) {
+ sceneHandler29_manFromR();
+ } else {
+ g_vars->scene29_shootDistance = (1310 - g_vars->scene29_manX) * 5213 / 100000 + 25;
+
+ if (!g_vars->scene29_manIsHit)
+ g_fp->_aniMan->startAnim(MV_MAN29_RUN, 0, -1);
+ }
+ }
+
+ g_vars->scene29_manX = g_fp->_aniMan->_ox;
+ g_vars->scene29_manY = g_fp->_aniMan->_oy;
+}
+
+void sceneHandler29_shootersEscape() {
+ if (g_vars->scene29_arcadeIsOn) {
+ g_vars->scene29_manX += 2;
+
+ g_fp->_aniMan->setOXY(g_vars->scene29_manX, g_vars->scene29_manY);
+
+ if (g_vars->scene29_manX > 1310 && !g_vars->scene29_shooter1->_movement && !g_vars->scene29_shooter2->_movement
+ && g_vars->scene29_shooter1->_statics->_staticsId == ST_STR1_RIGHT) {
+ g_vars->scene29_shootCountdown = 0;
+
+ g_vars->scene29_shooter1->changeStatics2(ST_STR1_STAND);
+ g_vars->scene29_shooter2->changeStatics2(ST_STR2_STAND);
+
+ chainQueue(QU_SC29_ESCAPE, 1);
+
+ g_vars->scene29_ass->queueMessageQueue(0);
+ g_vars->scene29_ass->hide();
+
+ g_fp->setObjectState(sO_LeftPipe_29, g_fp->getObjectEnumState(sO_LeftPipe_29, sO_IsOpened));
+ }
+ } else if (g_vars->scene29_manIsRiding) {
+ g_vars->scene29_manX -= 4;
+
+ g_fp->_aniMan->setOXY(g_vars->scene29_manX, g_vars->scene29_manY);
+ }
+}
+
+void sceneHandler29_manRideBack() {
+ g_vars->scene29_manX -= 2;
+
+ g_fp->_aniMan->setOXY(g_vars->scene29_manX, g_vars->scene29_manY);
+}
+
+void sceneHandler29_shoot() {
+ if (g_vars->scene29_arcadeIsOn && g_vars->scene29_manX < 1310) {
+ if (g_fp->_rnd->getRandomNumber(1) || g_vars->scene29_shooter1->_movement || g_vars->scene29_shooter1->_statics->_staticsId != ST_STR1_RIGHT) {
+ if (!g_vars->scene29_shooter2->_movement && g_vars->scene29_shooter2->_statics->_staticsId == ST_STR2_RIGHT) {
+ if (g_vars->scene29_shooter2->_flags & 4) {
+ g_vars->scene29_shooter2->startAnim(MV_STR2_SHOOT, 0, -1);
+
+ g_vars->scene29_shootCountdown = 0;
+ }
+ }
+ } else {
+ g_vars->scene29_shooter1->startAnim(MV_STR1_SHOOT, 0, -1);
+
+ g_vars->scene29_shootCountdown = 0;
+ }
+ }
+}
+
+void sceneHandler29_animBearded() {
+ MessageQueue *mq;
+
+ for (uint i = 0; i < g_vars->scene29_bearders.size(); i++) {
+ StaticANIObject *ani = g_vars->scene29_bearders[i]->ani;
+
+ if (g_vars->scene29_bearders[i]->wbflag) {
+ int x = ani->_ox;
+ int y = ani->_oy;
+
+ if (!ani->_movement && ani->_statics->_staticsId == (ST_BRDCMN_RIGHT | 0x4000)) {
+ x -= 4;
+
+ if (x - g_vars->scene29_manX < 100 || !g_vars->scene29_arcadeIsOn) {
+ mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_SC29_BRDOUT1), 0, 1);
+
+ mq->replaceKeyCode(-1, ani->_okeyCode);
+ mq->chain(0);
+
+ g_vars->scene29_bearders[i]->wbflag = 0;
+ g_vars->scene29_bearders[i]->wbcounter = 0;
+ }
+ }
+
+ if (!ani->_movement && ani->_statics->_staticsId == ST_BRDCMN_GOR)
+ ani->startAnim(MV_BRDCMN_GOR, 0, -1);
+
+ if (ani->_movement) {
+ if (ani->_movement->_id == MV_BRDCMN_GOR) {
+ x -= 4;
+
+ if (g_vars->scene29_manX - x < 60 || x - g_vars->scene29_manX < -260 || !g_vars->scene29_arcadeIsOn) {
+ ani->changeStatics2(ST_BRDCMN_RIGHT);
+
+ mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_SC29_BRDOUT2), 0, 1);
+
+ mq->replaceKeyCode(-1, ani->_okeyCode);
+ mq->chain(0);
+
+ g_vars->scene29_bearders[i]->wbflag = 0;
+ g_vars->scene29_bearders[i]->wbcounter = 0;
+ }
+ }
+ }
+
+ ani->setOXY(x, y);
+ continue;
+ }
+
+ if (g_vars->scene29_arcadeIsOn && g_vars->scene29_bearders[i]->wbcounter > 30) {
+ int newx;
+
+ if (g_fp->_rnd->getRandomNumber(1))
+ goto dostuff;
+
+ if (g_vars->scene29_manX <= 700) {
+ g_vars->scene29_bearders[i]->wbcounter++;
+ continue;
+ }
+
+ if (g_vars->scene29_manX >= 1100) {
+ dostuff:
+ if (g_vars->scene29_manX <= 700 || g_vars->scene29_manX >= 1350) {
+ g_vars->scene29_bearders[i]->wbcounter++;
+ continue;
+ }
+
+ mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_SC29_BRD2), 0, 1);
+
+ newx = g_vars->scene29_manX - 200;
+ } else {
+ mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_SC29_BRD1), 0, 1);
+
+ newx = g_vars->scene29_manX + 350;
+ }
+
+ mq->getExCommandByIndex(0)->_x = newx;
+ mq->replaceKeyCode(-1, ani->_okeyCode);
+ mq->chain(0);
+
+ g_vars->scene29_bearders[i]->wbflag = 1;
+ g_vars->scene29_bearders[i]->wbcounter = 0;
+ }
+
+ g_vars->scene29_bearders[i]->wbcounter++;
+ }
+}
+
+
+
+int sceneHandler29(ExCommand *cmd) {
+ if (cmd->_messageKind != 17)
+ return 0;
+
+ switch (cmd->_messageNum) {
+ case MSG_CMN_WINARCADE:
+ sceneHandler29_winArcade();
+ break;
+
+ case MSG_SC29_LAUGH:
+ if (g_vars->scene29_hitBall == ANI_SHELL_GREEN) {
+ g_fp->playSound(SND_29_028, 0);
+ break;
+ }
+
+ g_fp->playSound(SND_29_029, 0);
+
+ break;
+
+ case MSG_SC29_SHOWLASTRED:
+ if (g_vars->scene29_balls.numBalls) {
+ g_vars->scene29_redBalls.field_8->ani->show1(-1, -1, -1, 0);
+ g_vars->scene29_redBalls.field_8->ani->startAnim(MV_SHR_HITASS, 0, -1);
+ }
+
+ break;
+
+ case MSG_SC29_SHOOTGREEN:
+ sceneHandler29_shootGreen();
+ break;
+
+ case MSG_SC29_SHOOTRED:
+ sceneHandler29_shootRed();
+ break;
+
+ case MSG_SC29_SHOWLASTGREEN:
+ if (g_vars->scene29_balls.numBalls) {
+ g_vars->scene29_balls.field_8->ani->show1(-1, -1, -1, 0);
+ g_vars->scene29_balls.field_8->ani->startAnim(MV_SHG_HITASS, 0, -1);
+ }
+
+ break;
+
+ case MSG_SC29_STOPRIDE:
+ g_vars->scene29_manIsRiding = false;
+ g_vars->scene29_arcadeIsOn = false;
+ g_vars->scene29_reachedFarRight = false;
+ g_vars->scene29_rideBackEnabled = false;
+
+ getCurrSceneSc2MotionController()->setEnabled();
+ getGameLoaderInteractionController()->enableFlag24();
+ break;
+
+ case MSG_SC29_DISABLERIDEBACK:
+ g_vars->scene29_rideBackEnabled = false;
+ break;
+
+ case MSG_SC29_ENABLERIDEBACK:
+ g_vars->scene29_rideBackEnabled = true;
+ g_vars->scene29_reachedFarRight = false;
+ break;
+
+ case MSG_SC29_DISABLEPORTER:
+ g_vars->scene29_reachedFarRight = false;
+ break;
+
+ case MSG_SC29_ENABLEPORTER:
+ g_vars->scene29_reachedFarRight = true;
+ g_vars->scene29_rideBackEnabled = false;
+ g_vars->scene29_manIsHit = false;
+ break;
+
+ case 29:
+ if (!g_vars->scene29_manIsRiding || g_vars->scene29_arcadeIsOn) {
+ if (!g_vars->scene29_arcadeIsOn) {
+ StaticANIObject *ani = g_fp->_currentScene->getStaticANIObjectAtPos(g_fp->_sceneRect.left + cmd->_x, g_fp->_sceneRect.top + cmd->_y);
+
+ if (ani && ani == g_vars->scene29_porter) {
+ sceneHandler29_clickPorter(cmd);
+
+ cmd->_messageKind = 0;
+ break;
+ }
+ break;
+ }
+
+ sceneHandler29_manJump();
+
+ cmd->_messageKind = 0;
+ break;
+ }
+ break;
+
+ case 107:
+ if (g_vars->scene29_arcadeIsOn)
+ sceneHandler29_manBend();
+
+ break;
+
+ case 33:
+ if (g_vars->scene29_arcadeIsOn) {
+ if (g_vars->scene29_manX > g_fp->_sceneRect.right - 500)
+ g_fp->_currentScene->_x = g_fp->_sceneRect.right - g_vars->scene29_manX - 350;
+
+ if (g_vars->scene29_manX < g_fp->_sceneRect.left + 100)
+ g_fp->_currentScene->_x = g_vars->scene29_manX - g_fp->_sceneRect.left - 100;
+
+ } else if (g_fp->_aniMan2) {
+ int x = g_fp->_aniMan2->_ox;
+
+ if (x < g_fp->_sceneRect.left + 300)
+ g_fp->_currentScene->_x = x - 400 - g_fp->_sceneRect.left;
+
+ if (x > g_fp->_sceneRect.right - 300)
+ g_fp->_currentScene->_x = x + 400 - g_fp->_sceneRect.right;
+ }
+
+ g_vars->scene29_manX = g_fp->_aniMan->_ox;
+ g_vars->scene29_manY = g_fp->_aniMan->_oy;
+
+ sceneHandler29_ballHitCheck();
+
+ if (!g_vars->scene29_porter->_movement)
+ g_vars->scene29_porter->startAnim(MV_PTR_MOVEFAST, 0, -1);
+
+ if (g_vars->scene29_manIsRiding)
+ sceneHandler29_manFromL();
+ else if (g_vars->scene29_arcadeIsOn && !g_fp->_aniMan->_movement)
+ sceneHandler29_shootersProcess();
+
+ if (g_vars->scene29_reachedFarRight)
+ sceneHandler29_shootersEscape();
+ else if (g_vars->scene29_rideBackEnabled)
+ sceneHandler29_manRideBack();
+
+ g_vars->scene29_shootCountdown++;
+
+ if (g_vars->scene29_shootCountdown > g_vars->scene29_shootDistance)
+ sceneHandler29_shoot();
+
+ sceneHandler29_animBearded();
+
+ g_fp->_behaviorManager->updateBehaviors();
+ g_fp->startSceneTrack();
+
+ break;
+ }
+
+ return 0;
+}
+
+int scene29_updateCursor() {
+ g_fp->updateCursorCommon();
+
+ if (g_vars->scene29_arcadeIsOn) {
+ if (g_fp->_cursorId != PIC_CSR_DEFAULT_INV && g_fp->_cursorId != PIC_CSR_ITN_INV)
+ g_fp->_cursorId = -1;
+ } else if (g_vars->scene29_manIsRiding) {
+ if (g_fp->_cursorId != PIC_CSR_DEFAULT_INV && g_fp->_cursorId != PIC_CSR_ITN_INV)
+ g_fp->_cursorId = PIC_CSR_DEFAULT;
+ } else if (g_fp->_objectIdAtCursor == ANI_PORTER) {
+ if (g_fp->_cursorId == PIC_CSR_DEFAULT)
+ g_fp->_cursorId = PIC_CSR_ITN;
+ } else {
+ if (g_fp->_objectIdAtCursor == PIC_SC29_LTRUBA && g_fp->_cursorId == PIC_CSR_ITN)
+ g_fp->_cursorId = PIC_CSR_GOL;
+ }
+ return g_fp->_cursorId;
+}
+
+} // End of namespace Fullpipe
diff --git a/engines/fullpipe/sound.cpp b/engines/fullpipe/sound.cpp
index bb6aabd2b5..ced5c75850 100644
--- a/engines/fullpipe/sound.cpp
+++ b/engines/fullpipe/sound.cpp
@@ -26,6 +26,7 @@
#include "fullpipe/scene.h"
#include "fullpipe/sound.h"
#include "fullpipe/ngiarchive.h"
+#include "fullpipe/messages.h"
#include "common/memstream.h"
#include "audio/audiostream.h"
#include "audio/decoders/vorbis.h"
@@ -73,6 +74,18 @@ bool SoundList::loadFile(const char *fname, char *libname) {
return load(archive, libname);
}
+Sound *SoundList::getSoundItemById(int id) {
+ if (_soundItemsCount == 0) {
+ return _soundItems[0]->getId() != id ? 0 : _soundItems[0];
+ }
+
+ for (int i = 0; i < _soundItemsCount; i++) {
+ if (_soundItems[i]->getId() == id)
+ return _soundItems[i];
+ }
+ return NULL;
+}
+
Sound::Sound() {
_id = 0;
_directSoundBuffer = 0;
@@ -80,10 +93,13 @@ Sound::Sound() {
_objectId = 0;
memset(_directSoundBuffers, 0, sizeof(_directSoundBuffers));
_description = 0;
+ _volume = 100;
}
Sound::~Sound() {
- warning("STUB: Sound::~Sound()");
+ freeSound();
+
+ free(_description);
}
bool Sound::load(MfcArchive &file, NGIArchive *archive) {
@@ -119,24 +135,157 @@ void Sound::setPanAndVolumeByStaticAni() {
debug(3, "STUB Sound::setPanAndVolumeByStaticAni()");
}
-void FullpipeEngine::setSceneMusicParameters(GameVar *var) {
+void Sound::setPanAndVolume(int vol, int pan) {
+ g_fp->_mixer->setChannelVolume(_handle, vol / 39); // 0..10000
+ g_fp->_mixer->setChannelBalance(_handle, pan / 78); // -10000..10000
+}
+
+void Sound::play(int flag) {
+ Audio::SoundHandle handle = getHandle();
+
+ if (g_fp->_mixer->isSoundHandleActive(handle))
+ return;
+
+ byte *soundData = loadData();
+ Common::MemoryReadStream *dataStream = new Common::MemoryReadStream(soundData, getDataSize());
+ Audio::RewindableAudioStream *wav = Audio::makeWAVStream(dataStream, DisposeAfterUse::YES);
+ Audio::AudioStream *audioStream = new Audio::LoopingAudioStream(wav, (flag == 1) ? 0 : 1);
+
+ g_fp->_mixer->playStream(Audio::Mixer::kSFXSoundType, &handle, audioStream);
+}
+
+void Sound::freeSound() {
+ stop();
+
+ free(_soundData);
+}
+
+int Sound::getVolume() {
+ return g_fp->_mixer->getChannelVolume(_handle) * 39; // 0..10000
+}
+
+void Sound::stop() {
+ g_fp->_mixer->stopHandle(_handle);
+}
+
+void FullpipeEngine::setSceneMusicParameters(GameVar *gvar) {
warning("STUB: FullpipeEngine::setSceneMusicParameters()");
- // TODO: Finish this (MINDELAY, MAXDELAY, LOCAL, SEQUENCE, STARTDELAY etc)
- stopAllSoundStreams();
+#if 0
+ stopSoundStream2();
+
+ if (soundStream3)
+ FSOUND_Stream_Stop(soundStream4);
+#endif
+
+ if (_musicLocal)
+ stopAllSoundStreams();
+
+ GameVar *var = gvar->getSubVarByName("MUSIC");
+
+ memset(_sceneTracks, 0, sizeof(_sceneTracks));
+
+ _numSceneTracks = 0;
+ _sceneTrackHasSequence = false;
+
+ if (!var)
+ return;
+
_musicGameVar = var;
+
+ GameVar *tr = var->getSubVarByName("TRACKS");
+ if (tr) {
+ GameVar *sub = tr->_subVars;
+
+ while (sub) {
+ if (_musicAllowed & sub->_value.intValue) {
+ strcpy(_sceneTracks[_numSceneTracks], sub->_varName);
+
+ _numSceneTracks++;
+ }
+
+ sub = sub->_nextVarObj;
+ }
+ }
+
+ _musicMinDelay = var->getSubVarAsInt("MINDELAY");
+ _musicMaxDelay = var->getSubVarAsInt("MAXDELAY");
+ _musicLocal = var->getSubVarAsInt("LOCAL");
+
+ GameVar *seq = var->getSubVarByName("SEQUENCE");
+
+ if (seq) {
+ _sceneTrackHasSequence = true;
+
+ strcpy(_trackName, seq->_value.stringValue);
+ }
+
+ if (_musicLocal)
+ stopAllSoundStreams();
+
+ if (!_sceneTrackIsPlaying || _musicLocal)
+ _trackStartDelay = var->getSubVarAsInt("STARTDELAY");
}
void FullpipeEngine::startSceneTrack() {
- // TODO: Finish this
-#ifdef USE_VORBIS
- if (g_fp->_mixer->isSoundHandleActive(_sceneTrackHandle))
- return;
+ if (!_sceneTrackIsPlaying && _numSceneTracks > 0) {
+ if (_trackStartDelay > 0) {
+ _trackStartDelay--;
+ } else {
+ int trackNum = getSceneTrack();
+
+ if (trackNum == -1) {
+ strcpy(_sceneTracksCurrentTrack, "silence");
+
+ _trackStartDelay = 2880;
+ _sceneTrackIsPlaying = 0;
+ } else {
+ strcpy(_sceneTracksCurrentTrack, _sceneTracks[trackNum]);
+
+ startSoundStream1(_sceneTracksCurrentTrack);
+
+ _sceneTrackIsPlaying = true;
+ }
+ }
+ }
+}
+
+int FullpipeEngine::getSceneTrack() {
+ int res;
+
+ if (_sceneTrackHasSequence) {
+ int num = _musicGameVar->getSubVarAsInt("TRACKS");
+
+ if (_trackName[num + 1] == 's') { // 'silence'
+ res = -1;
+ } else {
+ res = _trackName[num + 1] - '0';
+
+ if (res < 0 || res >= _numSceneTracks)
+ res = 0;
+ }
+
+ int track = num + 1;
- GameVar *musicTrackVar = _musicGameVar->getSubVarByName("MUSIC")->getSubVarByName("TRACKS")->_subVars;
- if (!musicTrackVar)
+ if (!_trackName[num + 2])
+ track = 0;
+
+ _musicGameVar->setSubVarAsInt("TRACKS", track);
+ } else {
+ res = _numSceneTracks * (_updateTicks % 10) / 10;
+ }
+
+ return res;
+}
+
+void FullpipeEngine::startSoundStream1(char *trackName) {
+ warning("STUB: FullpipeEngine::startSoundStream1(%s)", trackName);
+
+ stopAllSoundStreams();
+
+#ifdef USE_VORBIS
+ if (_mixer->isSoundHandleActive(_sceneTrackHandle))
return;
- char *trackName = musicTrackVar->_varName;
Common::File *track = new Common::File();
if (!track->open(trackName)) {
warning("Could not open %s", trackName);
@@ -144,40 +293,134 @@ void FullpipeEngine::startSceneTrack() {
return;
}
Audio::RewindableAudioStream *ogg = Audio::makeVorbisStream(track, DisposeAfterUse::YES);
- g_fp->_mixer->playStream(Audio::Mixer::kMusicSoundType, &_sceneTrackHandle, ogg);
+ _mixer->playStream(Audio::Mixer::kMusicSoundType, &_sceneTrackHandle, ogg);
#endif
}
void FullpipeEngine::stopAllSounds() {
- // TODO: Differences from stopAllSoundStreams()
- g_fp->_mixer->stopAll();
+ // _mixer->stopAll();
+
+ for (int i = 0; i < _currSoundListCount; i++)
+ for (int j = 0; j < _currSoundList1[i]->getCount(); j++) {
+ _currSoundList1[i]->getSoundByIndex(j)->stop();
+ }
}
void FullpipeEngine::toggleMute() {
- warning("STUB: FullpipeEngine::toggleMute()");
+ if (_soundEnabled) {
+ _sfxVolume = _sfxVolume != -10000 ? -10000 : 0;
+
+ updateSoundVolume();
+ }
}
void FullpipeEngine::playSound(int id, int flag) {
- SoundList *soundList = g_fp->_currentScene->_soundList;
- Sound *sound = soundList->getSoundById(id);
+ Sound *sound = 0;
+
+ for (int i = 0; i < _currSoundListCount; i++) {
+ sound = _currSoundList1[i]->getSoundItemById(id);
+
+ if (sound)
+ break;
+ }
+
if (!sound) {
warning("playSound: Can't find sound with ID %d", id);
return;
}
- byte *soundData = sound->loadData();
- Common::MemoryReadStream *dataStream = new Common::MemoryReadStream(soundData, sound->getDataSize());
- Audio::RewindableAudioStream *wav = Audio::makeWAVStream(dataStream, DisposeAfterUse::YES);
- Audio::AudioStream *audioStream = new Audio::LoopingAudioStream(wav, (flag == 1) ? 0 : 1);
- Audio::SoundHandle handle = sound->getHandle();
- g_fp->_mixer->playStream(Audio::Mixer::kSFXSoundType, &handle, audioStream);
+
+ sound->play(flag);
}
void FullpipeEngine::playTrack(GameVar *sceneVar, const char *name, bool delayed) {
warning("STUB: FullpipeEngine::playTrack(var, %s, %d)", name, delayed);
+#if 0
+ stopSoundStream2();
+
+ if (soundStream3)
+ FSOUND_Stream_Stop(soundStream4);
+#endif
+
+ if (_musicLocal)
+ stopAllSoundStreams();
+
+ GameVar *var = sceneVar->getSubVarByName(name);
+
+ memset(_sceneTracks, 0, sizeof(_sceneTracks));
+
+ _numSceneTracks = 0;
+ _sceneTrackHasSequence = false;
+
+ if (!var)
+ return;
+
+ _musicGameVar = var;
+
+ GameVar *tr = var->getSubVarByName("TRACKS");
+ if (tr) {
+ GameVar *sub = tr->_subVars;
+
+ while (sub) {
+ if (_musicAllowed & sub->_value.intValue) {
+ strcpy(_sceneTracks[_numSceneTracks], sub->_varName);
+
+ _numSceneTracks++;
+ }
+
+ sub = sub->_nextVarObj;
+ }
+ }
+
+ _musicMinDelay = var->getSubVarAsInt("MINDELAY");
+ _musicMaxDelay = var->getSubVarAsInt("MAXDELAY");
+ _musicLocal = var->getSubVarAsInt("LOCAL");
+
+ GameVar *seq = var->getSubVarByName("SEQUENCE");
+
+ if (seq) {
+ _sceneTrackHasSequence = true;
+
+ strcpy(_trackName, seq->_value.stringValue);
+ }
+
+ if (delayed) {
+ if (_sceneTrackIsPlaying && _numSceneTracks == 1) {
+ if (strcmp(_sceneTracksCurrentTrack, _sceneTracks[0]))
+ stopAllSoundStreams();
+ }
+
+ _trackStartDelay = var->getSubVarAsInt("STARTDELAY");
+ }
}
void global_messageHandler_handleSound(ExCommand *cmd) {
- debug(0, "STUB: global_messageHandler_handleSound()");
+ if (!g_fp->_soundEnabled)
+ return;
+
+ Sound *snd = 0;
+
+ for (int i = 0; i < g_fp->_currSoundListCount; i++)
+ snd = g_fp->_currSoundList1[i]->getSoundItemById(cmd->_messageNum);
+
+ if (!snd)
+ return;
+
+ if (cmd->_field_14 & 1) {
+ if (!g_fp->_flgSoundList && (cmd->_field_14 & 4))
+ snd->freeSound();
+
+ snd->updateVolume();
+
+ if (snd->_objectId && g_fp->_currentScene->getStaticANIObject1ById(snd->_objectId, -1))
+ snd->setPanAndVolumeByStaticAni();
+ else
+ snd->setPanAndVolume(g_fp->_sfxVolume, 0);
+
+ if (snd->getVolume() > -3500)
+ snd->play(cmd->_keyCode);
+ } else if (cmd->_field_14 & 2) {
+ snd->stop();
+ }
}
void FullpipeEngine::stopSoundStream2() {
@@ -186,21 +429,29 @@ void FullpipeEngine::stopSoundStream2() {
void FullpipeEngine::stopAllSoundStreams() {
// TODO: Differences from stopAllSounds()
- g_fp->_mixer->stopAll();
+ _mixer->stopAll();
}
void FullpipeEngine::stopAllSoundInstances(int id) {
- SoundList *soundList = g_fp->_currentScene->_soundList;
- for (int i = 0; i < soundList->getCount(); i++) {
- Sound *sound = soundList->getSoundByIndex(i);
- if (sound->getId() == id) {
- g_fp->_mixer->stopHandle(sound->getHandle());
- }
+ for (int i = 0; i < _currSoundListCount; i++) {
+ Sound *sound = _currSoundList1[i]->getSoundItemById(id);
+
+ if (sound)
+ sound->stop();
}
}
void FullpipeEngine::updateSoundVolume() {
- debug(3, "STUB FullpipeEngine::updateSoundVolume()");
+ for (int i = 0; i < _currSoundListCount; i++)
+ for (int j = 0; i < _currSoundList1[i]->getCount(); j++) {
+ _currSoundList1[i]->getSoundByIndex(j)->setPanAndVolume(_sfxVolume, 0);
+ }
+}
+
+void FullpipeEngine::setMusicVolume(int vol) {
+ _musicVolume = vol;
+
+ g_fp->_mixer->setVolumeForSoundType(Audio::Mixer::kMusicSoundType, vol);
}
} // End of namespace Fullpipe
diff --git a/engines/fullpipe/sound.h b/engines/fullpipe/sound.h
index 8ddfc753ce..14e766f5bb 100644
--- a/engines/fullpipe/sound.h
+++ b/engines/fullpipe/sound.h
@@ -28,11 +28,14 @@ namespace Fullpipe {
class Sound : public MemoryObject {
int _id;
char *_description;
- int16 _objectId;
int _directSoundBuffer;
int _directSoundBuffers[7];
byte *_soundData;
Audio::SoundHandle _handle;
+ int _volume;
+
+public:
+ int16 _objectId;
public:
Sound();
@@ -44,7 +47,13 @@ public:
int getId() const { return _id; }
Audio::SoundHandle getHandle() const { return _handle; }
+ void play(int flag);
+ void freeSound();
+ int getVolume();
+ void stop();
+
void setPanAndVolumeByStaticAni();
+ void setPanAndVolume(int vol, int pan);
};
class SoundList : public CObject {
@@ -60,13 +69,7 @@ class SoundList : public CObject {
int getCount() { return _soundItemsCount; }
Sound *getSoundByIndex(int idx) { return _soundItems[idx]; }
- Sound *getSoundById(int id) {
- for (int i = 0; i < _soundItemsCount; i++) {
- if (_soundItems[i]->getId() == id)
- return _soundItems[i];
- }
- return NULL;
- }
+ Sound *getSoundItemById(int id);
};
} // End of namespace Fullpipe
diff --git a/engines/fullpipe/stateloader.cpp b/engines/fullpipe/stateloader.cpp
index e36b196517..41641457d3 100644
--- a/engines/fullpipe/stateloader.cpp
+++ b/engines/fullpipe/stateloader.cpp
@@ -55,9 +55,8 @@ bool FullpipeEngine::loadGam(const char *fname, int scene) {
_inventory->rebuildItemRects();
- for (PtrList::iterator p = _inventory->getScene()->_picObjList.begin(); p != _inventory->getScene()->_picObjList.end(); ++p) {
- ((MemoryObject *)((PictureObject *)*p)->_picture)->load();
- }
+ for (uint i = 0; i < _inventory->getScene()->_picObjList.size(); i++)
+ ((MemoryObject *)_inventory->getScene()->_picObjList[i]->_picture)->load();
// _sceneSwitcher = sceneSwitcher; // substituted with direct call
_gameLoader->_preloadCallback = preloadCallback;
diff --git a/engines/fullpipe/statics.cpp b/engines/fullpipe/statics.cpp
index bdb46b9b3a..b6b312ab85 100644
--- a/engines/fullpipe/statics.cpp
+++ b/engines/fullpipe/statics.cpp
@@ -105,6 +105,19 @@ bool StepArray::gotoNextPoint() {
}
}
+void StepArray::insertPoints(Common::Point **points, int pointsCount) {
+ if (_currPointIndex + pointsCount >= _pointsCount)
+ _points = (Common::Point **)realloc(_points, sizeof(Common::Point *) * (_currPointIndex + pointsCount));
+
+ _maxPointIndex = _currPointIndex + pointsCount;
+
+ for (int i = 0; i < pointsCount; i++) {
+ _points[_currPointIndex + i] = new Common::Point;
+
+ *_points[_currPointIndex + i] = *points[i];
+ }
+}
+
StaticANIObject::StaticANIObject() {
_shadowsOn = 1;
_field_30 = 0;
@@ -128,7 +141,17 @@ StaticANIObject::StaticANIObject() {
}
StaticANIObject::~StaticANIObject() {
- warning("STUB: StaticANIObject::~StaticANIObject()");
+ for (uint i = 0; i < _staticsList.size(); i++)
+ delete _staticsList[i];
+
+ _staticsList.clear();
+
+ for (uint i = 0; i < _movements.size(); i++)
+ delete _movements[i];
+
+ _movements.clear();
+
+ g_fp->_mgm->clear();
}
StaticANIObject::StaticANIObject(StaticANIObject *src) : GameObject(src) {
@@ -151,22 +174,21 @@ StaticANIObject::StaticANIObject(StaticANIObject *src) : GameObject(src) {
_objtype = kObjTypeStaticANIObject;
for (uint i = 0; i < src->_staticsList.size(); i++)
- _staticsList.push_back(new Statics((Statics *)src->_staticsList[i], 0));
+ _staticsList.push_back(new Statics(src->_staticsList[i], 0));
_movement = 0;
_statics = 0;
for (uint i = 0; i < src->_movements.size(); i++) {
Movement *newmov;
- Movement *mov = (Movement *)src->_movements[i];
- if (mov->_currMovement) {
+ if (src->_movements[i]->_currMovement) {
// WORKAROUND: Original uses weird construction here:
// new Movement(getMovementById(src->getMovementIdById(mov->_id)), this);
- newmov = new Movement(src->getMovementById(src->getMovementIdById(mov->_id)), this);
- newmov->_id = mov->_id;
+ newmov = new Movement(src->getMovementById(src->getMovementIdById(src->_movements[i]->_id)), this);
+ newmov->_id = src->_movements[i]->_id;
} else {
- newmov = new Movement(mov, 0, -1, this);
+ newmov = new Movement(src->_movements[i], 0, -1, this);
}
_movements.push_back(newmov);
@@ -211,7 +233,7 @@ bool StaticANIObject::load(MfcArchive &file) {
Common::Point pt;
if (count) { // We have movements
- ((Movement *)_movements[0])->getCurrDynamicPhaseXY(pt);
+ _movements[0]->getCurrDynamicPhaseXY(pt);
} else {
pt.x = pt.y = 100;
}
@@ -264,8 +286,11 @@ void StaticANIObject::deleteFromGlobalMessageQueue() {
}
}
-void StaticANIObject::queueMessageQueue(MessageQueue *mq) {
- if (isIdle() && !(_flags & 0x80)) {
+bool StaticANIObject::queueMessageQueue(MessageQueue *mq) {
+ if (_flags & 0x80)
+ return false;
+
+ if (isIdle()) {
deleteFromGlobalMessageQueue();
_messageQueueId = 0;
_messageNum = 0;
@@ -283,6 +308,8 @@ void StaticANIObject::queueMessageQueue(MessageQueue *mq) {
_messageQueueId = 0;
}
}
+
+ return true;
}
void StaticANIObject::restartMessageQueue(MessageQueue *mq) {
@@ -330,7 +357,35 @@ bool StaticANIObject::trySetMessageQueue(int msgNum, int qId) {
}
void StaticANIObject::startMQIfIdle(int qId, int flag) {
- warning("STUB: StaticANIObject::startMQIfIdle()");
+ MessageQueue *msg = g_fp->_currentScene->getMessageQueueById(qId);
+
+ if (msg && isIdle() && !(_flags & 0x100)) {
+ MessageQueue *mq = new MessageQueue(msg, 0, 0);
+
+ mq->setFlags(mq->getFlags() | flag);
+
+ ExCommand *ex = mq->getExCommandByIndex(0);
+
+ if (ex) {
+ while (ex->_messageKind != 1 || ex->_parentId != _id) {
+ ex->_parId = 0;
+ ex->_excFlags |= 2;
+ ex->handleMessage();
+
+ mq->deleteExCommandByIndex(0, 0);
+
+ ex = mq->getExCommandByIndex(0);
+
+ if (!ex)
+ return;
+ }
+
+ if (ex) {
+ startAnim(ex->_messageNum, mq->_id, -1);
+ mq->deleteExCommandByIndex(0, 1);
+ }
+ }
+ }
}
bool StaticANIObject::isIdle() {
@@ -346,34 +401,36 @@ bool StaticANIObject::isIdle() {
Statics *StaticANIObject::getStaticsById(int itemId) {
for (uint i = 0; i < _staticsList.size(); i++)
- if (((Statics *)_staticsList[i])->_staticsId == itemId)
- return (Statics *)_staticsList[i];
+ if (_staticsList[i]->_staticsId == itemId)
+ return _staticsList[i];
return 0;
}
Statics *StaticANIObject::getStaticsByName(char *name) {
for (uint i = 0; i < _staticsList.size(); i++)
- if (!strcmp(((Statics *)_staticsList[i])->_staticsName, name))
- return (Statics *)_staticsList[i];
+ if (!strcmp(_staticsList[i]->_staticsName, name))
+ return _staticsList[i];
return 0;
}
Movement *StaticANIObject::getMovementById(int itemId) {
for (uint i = 0; i < _movements.size(); i++)
- if (((Movement *)_movements[i])->_id == itemId)
- return (Movement *)_movements[i];
+ if (_movements[i]->_id == itemId)
+ return _movements[i];
return 0;
}
int StaticANIObject::getMovementIdById(int itemId) {
for (uint i = 0; i < _movements.size(); i++) {
- Movement *mov = (Movement *)_movements[i];
+ Movement *mov = _movements[i];
+
if (mov->_currMovement) {
if (mov->_id == itemId)
return mov->_id;
+
if (mov->_currMovement->_id == itemId)
return mov->_id;
}
@@ -384,8 +441,8 @@ int StaticANIObject::getMovementIdById(int itemId) {
Movement *StaticANIObject::getMovementByName(char *name) {
for (uint i = 0; i < _movements.size(); i++)
- if (!strcmp(((Movement *)_movements[i])->_objectName, name))
- return (Movement *)_movements[i];
+ if (!strcmp(_movements[i]->_objectName, name))
+ return _movements[i];
return 0;
}
@@ -503,10 +560,14 @@ void Movement::draw(bool flipFlag, int angle) {
}
}
-
void StaticANIObject::loadMovementsPixelData() {
for (uint i = 0; i < _movements.size(); i++)
- ((Movement *)_movements[i])->loadPixelData();
+ _movements[i]->loadPixelData();
+}
+
+void StaticANIObject::freeMovementsPixelData() {
+ for (uint i = 0; i < _movements.size(); i++)
+ _movements[i]->freePixelData();
}
Statics *StaticANIObject::addReverseStatics(Statics *st) {
@@ -615,11 +676,10 @@ MovTable *StaticANIObject::countMovements() {
movTable->movs = (int16 *)calloc(_movements.size(), sizeof(int16));
for (uint i = 0; i < _movements.size(); i++) {
- GameObject *obj = (GameObject *)_movements[i];
movTable->movs[i] = 2;
for (GameVar *sub = preloadSubVar->_subVars; sub; sub = sub->_nextVarObj) {
- if (scumm_stricmp(obj->getName(), sub->_varName) == 0) {
+ if (scumm_stricmp(_movements[i]->getName(), sub->_varName) == 0) {
movTable->movs[i] = 1;
break;
}
@@ -652,21 +712,21 @@ void StaticANIObject::setSpeed(int speed) {
void StaticANIObject::setAlpha(int alpha) {
for (uint i = 0; i < _movements.size(); i++)
- ((Movement *)_movements[i])->setAlpha(alpha);
+ _movements[i]->setAlpha(alpha);
for (uint i = 0; i < _staticsList.size(); i++)
- ((Statics *)_staticsList[i])->setAlpha(alpha);
+ _staticsList[i]->setAlpha(alpha);
}
void StaticANIObject::initMovements() {
for (uint i = 0; i < _movements.size(); i++)
- ((Movement *)_movements[i])->removeFirstPhase();
+ _movements[i]->removeFirstPhase();
}
void StaticANIObject::preloadMovements(MovTable *mt) {
- if ( mt ) {
+ if (mt) {
for (uint i = 0; i < _movements.size(); i++) {
- Movement *mov = (Movement *)_movements[i];
+ Movement *mov = _movements[i];
if (mt->movs[i] == 1)
mov->loadPixelData();
@@ -974,9 +1034,26 @@ void StaticANIObject::adjustSomeXY() {
}
MessageQueue *StaticANIObject::changeStatics1(int msgNum) {
- warning("STUB: StaticANIObject::changeStatics1(%d)", msgNum);
+ g_fp->_mgm->addItem(_id);
- return 0;
+ MessageQueue *mq = g_fp->_mgm->genMQ(this, msgNum, 0, 0, 0);
+
+ if (!mq)
+ return 0;
+
+ if (mq->getCount() <= 0) {
+ g_fp->_globalMessageQueueList->addMessageQueue(mq);
+
+ if (_flags & 1)
+ _messageQueueId = mq->_id;
+ } else {
+ if (!queueMessageQueue(mq))
+ return 0;
+
+ g_fp->_globalMessageQueueList->addMessageQueue(mq);
+ }
+
+ return mq;
}
void StaticANIObject::changeStatics2(int objId) {
@@ -1056,7 +1133,47 @@ void StaticANIObject::show1(int x, int y, int movId, int mqId) {
}
void StaticANIObject::show2(int x, int y, int movementId, int mqId) {
- warning("STUB: StaticANIObject::show2(%d, %d, %d, %d)", x, y, movementId, mqId);
+ if (movementId == -1) {
+ _flags |= 4u;
+ return;
+ }
+
+ if (!_messageQueueId) {
+ _messageQueueId = mqId;
+
+ Movement *mov = getMovementById(movementId);
+
+ if (mov) {
+ _statics = mov->_staticsObj1;
+ _movement = mov;
+ mov->gotoLastFrame();
+ mov->setOXY(x, y);
+ mov->gotoFirstFrame();
+
+ Common::Point point;
+
+ mov->getCurrDynamicPhaseXY(point);
+ _statics->_x = mov->_ox - point.x - mov->_mx;
+ _statics->_y = mov->_oy - point.y - mov->_my;
+
+ _statics->getSomeXY(point);
+ _flags |= 4;
+ _ox = _statics->_x + point.x;
+ _oy = _statics->_y + point.y;
+
+ if (mov->_currMovement) {
+ _flags |= 8;
+ } else {
+ if (_flags & 8)
+ _flags ^= 8;
+ }
+
+ if (_flags & 1)
+ _flags ^= 1;
+
+ _flags |= 0x20;
+ }
+ }
}
void StaticANIObject::playIdle() {
@@ -1065,7 +1182,85 @@ void StaticANIObject::playIdle() {
}
void StaticANIObject::startAnimSteps(int movementId, int messageQueueId, int x, int y, Common::Point **points, int pointsCount, int someDynamicPhaseIndex) {
- warning("STUB: StaticANIObject::startAnimSteps()");
+ Movement *mov = 0;
+
+ if (!(_flags & 0x80)) {
+ if (!_messageQueueId)
+ for (uint i = 0; i < _movements.size(); i++) {
+ if (_movements[i]->_id == movementId) {
+ mov = _movements[i];
+ break;
+ }
+ }
+ }
+
+ if (!mov) {
+ updateGlobalMessageQueue(messageQueueId, _id);
+
+ return;
+ }
+
+
+ if (_movement || !_statics)
+ return;
+
+ Common::Point point;
+
+ _statics->getSomeXY(point);
+
+ int newx = _ox - point.x;
+ int newy = _oy - point.y;
+
+ _movement = mov;
+
+ if (_flags & 0x40)
+ _movement->gotoLastFrame();
+ else
+ _movement->gotoFirstFrame();
+
+ _stepArray.clear();
+ _stepArray.insertPoints(points, pointsCount);
+
+ if (!(_flags & 0x40)) {
+ if (!_movement->_currDynamicPhaseIndex) {
+ _stepArray.getCurrPoint(&point);
+ newx += point.x + _movement->_mx;
+ newy += point.y + _movement->_my;
+ _stepArray.gotoNextPoint();
+
+ ExCommand *ex = _movement->_currDynamicPhase->getExCommand();
+
+ if (ex) {
+ if (ex->_messageKind == 35) {
+ ExCommand *newEx = ex->createClone();
+
+ newEx->_excFlags |= 2u;
+ newEx->sendMessage();
+ }
+ }
+ }
+ }
+
+ _movement->getCurrDynamicPhaseXY(point);
+ setOXY(point.x + newx, point.y + newy);
+
+ if ((_movement->_staticsObj2->_staticsId >> 8) & 0x40)
+ _flags |= 8;
+ else
+ _flags &= 0xFFF7;
+
+ _flags |= 1;
+ _messageQueueId = messageQueueId;
+ _movement->_currDynamicPhase->_countdown = _movement->_currDynamicPhase->_initialCountdown;
+ _movement->_counter = 0;
+ _counter = _initialCounter;
+ _someDynamicPhaseIndex = someDynamicPhaseIndex;
+
+ ExCommand *ex = new ExCommand(_id, 17, 23, 0, 0, movementId, 1, 0, 0, 0);
+
+ ex->_keyCode = _okeyCode;
+ ex->_excFlags = 2;
+ ex->postMessage();
}
bool StaticANIObject::startAnimEx(int movid, int parId, int flag1, int flag2) {
@@ -1081,7 +1276,7 @@ bool StaticANIObject::startAnim(int movementId, int messageQueueId, int dynPhase
if (_flags & 0x80)
return false;
- debug(0, "StaticANIObject::startAnim(%d, %d, %d) (%s [%d]) [%d, %d]", movementId, messageQueueId, dynPhaseIdx, transCyrillic((byte *)_objectName), _id, _ox, _oy);
+ debug(4, "StaticANIObject::startAnim(%d, %d, %d) (%s [%d]) [%d, %d]", movementId, messageQueueId, dynPhaseIdx, transCyrillic((byte *)_objectName), _id, _ox, _oy);
if (_messageQueueId) {
updateGlobalMessageQueue(messageQueueId, _id);
@@ -1091,9 +1286,8 @@ bool StaticANIObject::startAnim(int movementId, int messageQueueId, int dynPhase
Movement *mov = 0;
for (uint i = 0; i < _movements.size(); i++) {
-
- if (((Movement *)_movements[i])->_id == movementId) {
- mov = (Movement *)_movements[i];
+ if (_movements[i]->_id == movementId) {
+ mov = _movements[i];
break;
}
}
@@ -1184,6 +1378,31 @@ bool StaticANIObject::startAnim(int movementId, int messageQueueId, int dynPhase
return true;
}
+Common::Point *StaticANIObject::calcStepLen(Common::Point *p) {
+ if (_movement) {
+ Common::Point point;
+
+ _movement->calcSomeXY(point, 0);
+
+ p->x = point.x;
+ p->y = point.y;
+
+ int idx = _stepArray.getCurrPointIndex() - _movement->_currDynamicPhaseIndex - 1;
+
+ if (idx >= 0) {
+ _stepArray.getPoint(&point, idx, _movement->_currDynamicPhaseIndex + 2);
+
+ p->x += point.x;
+ p->y += point.y;
+ }
+ } else {
+ p->x = 0;
+ p->y = 0;
+ }
+
+ return p;
+}
+
Statics::Statics() {
_staticsId = 0;
_picture = 0;
@@ -1231,6 +1450,19 @@ bool Statics::load(MfcArchive &file) {
return true;
}
+void Statics::init() {
+ Picture::init();
+
+ if (_staticsId & 0x4000) {
+ Bitmap *bmp = _bitmap->reverseImage();
+
+ freePixelData();
+
+ _bitmap = bmp;
+ _data = bmp->_pixels;
+ }
+}
+
Common::Point *Statics::getSomeXY(Common::Point &p) {
p.x = _someX;
p.y = _someY;
@@ -1283,7 +1515,17 @@ Movement::Movement() {
}
Movement::~Movement() {
- warning("STUB: Movement::~Movement()");
+ for (uint i = 0; i < _dynamicPhases.size(); i++)
+ delete _framePosOffsets[i];
+
+ if (!_currMovement ) {
+ if (_updateFlag1)
+ _dynamicPhases.remove_at(0);
+
+ _dynamicPhases.clear();
+ }
+
+ free(_framePosOffsets);
}
Movement::Movement(Movement *src, StaticANIObject *ani) {
@@ -1538,11 +1780,11 @@ Common::Point *Movement::calcSomeXY(Common::Point &p, int idx) {
void Movement::setAlpha(int alpha) {
if (_currMovement)
for (uint i = 0; i < _currMovement->_dynamicPhases.size(); i++) {
- ((DynamicPhase *)_currMovement->_dynamicPhases[i])->setAlpha(alpha);
+ _currMovement->_dynamicPhases[i]->setAlpha(alpha);
}
else
for (uint i = 0; i < _dynamicPhases.size(); i++) {
- ((DynamicPhase *)_dynamicPhases[i])->setAlpha(alpha);
+ _dynamicPhases[i]->setAlpha(alpha);
}
}
@@ -1555,9 +1797,9 @@ Common::Point *Movement::getDimensionsOfPhase(Common::Point *p, int phaseIndex)
DynamicPhase *dyn;
if (_currMovement)
- dyn = (DynamicPhase *)_currMovement->_dynamicPhases[idx];
+ dyn = _currMovement->_dynamicPhases[idx];
else
- dyn = (DynamicPhase *)_dynamicPhases[idx];
+ dyn = _dynamicPhases[idx];
Common::Point point;
@@ -1606,13 +1848,13 @@ void Movement::updateCurrDynamicPhase() {
return;
if (_currMovement->_dynamicPhases[_currDynamicPhaseIndex])
- _currDynamicPhase = (DynamicPhase *)_currMovement->_dynamicPhases[_currDynamicPhaseIndex];
+ _currDynamicPhase = _currMovement->_dynamicPhases[_currDynamicPhaseIndex];
} else {
if (_dynamicPhases.size() == 0 || (uint)_currDynamicPhaseIndex >= _dynamicPhases.size())
return;
if (_dynamicPhases[_currDynamicPhaseIndex])
- _currDynamicPhase = (DynamicPhase *)_dynamicPhases[_currDynamicPhaseIndex];
+ _currDynamicPhase = _dynamicPhases[_currDynamicPhaseIndex];
}
}
@@ -1621,11 +1863,11 @@ int Movement::calcDuration() {
if (_currMovement)
for (uint i = 0; i < _currMovement->_dynamicPhases.size(); i++) {
- res += ((DynamicPhase *)_currMovement->_dynamicPhases[i])->_initialCountdown;
+ res += _currMovement->_dynamicPhases[i]->_initialCountdown;
}
else
for (uint i = 0; i < _dynamicPhases.size(); i++) {
- res += ((DynamicPhase *)_dynamicPhases[i])->_initialCountdown;
+ res += _dynamicPhases[i]->_initialCountdown;
}
return res;
@@ -1666,12 +1908,12 @@ DynamicPhase *Movement::getDynamicPhaseByIndex(int idx) {
if (_currMovement->_dynamicPhases.size() == 0 || (uint)idx >= _currMovement->_dynamicPhases.size())
return 0;
- return (DynamicPhase *)_currMovement->_dynamicPhases[idx];
+ return _currMovement->_dynamicPhases[idx];
} else {
if (_dynamicPhases.size() == 0 || (uint)idx >= _dynamicPhases.size())
return 0;
- return (DynamicPhase *)_dynamicPhases[idx];
+ return _dynamicPhases[idx];
}
}
@@ -1682,7 +1924,7 @@ void Movement::loadPixelData() {
for (uint i = 0; i < _dynamicPhases.size(); i++) {
if ((Statics *)_dynamicPhases[i] != mov->_staticsObj2 || !(mov->_staticsObj2->_staticsId & 0x4000))
- ((Statics *)_dynamicPhases[i])->getPixelData();
+ _dynamicPhases[i]->getPixelData();
}
if (!(mov->_staticsObj1->_staticsId & 0x4000))
@@ -1692,7 +1934,7 @@ void Movement::loadPixelData() {
void Movement::freePixelData() {
if (!_currMovement)
for (uint i = 0; i < _dynamicPhases.size(); i++)
- ((DynamicPhase *)_dynamicPhases[i])->freePixelData();
+ _dynamicPhases[i]->freePixelData();
if (_staticsObj1)
_staticsObj1->freePixelData();
@@ -1724,11 +1966,11 @@ bool Movement::gotoNextFrame(void (*callback1)(int, Common::Point *point, int, i
if (!callback2) {
if (_currMovement) {
if ((uint)_currDynamicPhaseIndex == _currMovement->_dynamicPhases.size() - 1
- && !(((DynamicPhase *)(_currMovement->_dynamicPhases.back()))->_countdown)) {
+ && !(_currMovement->_dynamicPhases.back()->_countdown)) {
return false;
}
} else if ((uint)_currDynamicPhaseIndex == _dynamicPhases.size() - 1
- && !(((DynamicPhase *)(_dynamicPhases.back()))->_countdown)) {
+ && !(_dynamicPhases.back()->_countdown)) {
return false;
}
}
diff --git a/engines/fullpipe/statics.h b/engines/fullpipe/statics.h
index b7eee2e60e..63661157b2 100644
--- a/engines/fullpipe/statics.h
+++ b/engines/fullpipe/statics.h
@@ -47,6 +47,7 @@ class StepArray : public CObject {
Common::Point *getCurrPoint(Common::Point *point);
Common::Point *getPoint(Common::Point *point, int index, int offset);
bool gotoNextPoint();
+ void insertPoints(Common::Point **points, int pointsCount);
};
class StaticPhase : public Picture {
@@ -97,6 +98,7 @@ class Statics : public DynamicPhase {
virtual ~Statics();
virtual bool load(MfcArchive &file);
+ virtual void init();
Statics *getStaticsById(int itemId);
Common::Point *getSomeXY(Common::Point &p);
@@ -120,7 +122,7 @@ class Movement : public GameObject {
int _field_50;
int _counterMax;
int _counter;
- PtrList _dynamicPhases;
+ Common::Array<DynamicPhase *> _dynamicPhases;
int _field_78;
Common::Point **_framePosOffsets;
Movement *_currMovement;
@@ -180,8 +182,8 @@ class StaticANIObject : public GameObject {
int _initialCounter;
void (*_callback1)(int, Common::Point *point, int, int);
void (*_callback2)(int *);
- PtrList _movements;
- PtrList _staticsList;
+ Common::Array<Movement *> _movements;
+ Common::Array<Statics *> _staticsList;
StepArray _stepArray;
int16 _field_96;
int _messageQueueId;
@@ -216,7 +218,7 @@ public:
void setAlpha(int alpha);
void deleteFromGlobalMessageQueue();
- void queueMessageQueue(MessageQueue *msg);
+ bool queueMessageQueue(MessageQueue *msg);
void restartMessageQueue(MessageQueue *msg);
MessageQueue *getMessageQueue();
bool trySetMessageQueue(int msgNum, int qId);
@@ -224,6 +226,7 @@ public:
void initMovements();
void loadMovementsPixelData();
+ void freeMovementsPixelData();
void preloadMovements(MovTable *mt);
void setSomeDynamicPhaseIndex(int val) { _someDynamicPhaseIndex = val; }
@@ -244,6 +247,7 @@ public:
void draw2();
MovTable *countMovements();
+ Common::Point *calcStepLen(Common::Point *p);
void setSpeed(int speed);
void updateStepPos();
diff --git a/engines/fullpipe/utils.h b/engines/fullpipe/utils.h
index 72e746cd03..da3ab7ee4f 100644
--- a/engines/fullpipe/utils.h
+++ b/engines/fullpipe/utils.h
@@ -68,6 +68,7 @@ enum ObjType {
kObjTypeDefault,
kObjTypeExCommand,
kObjTypeExCommand2,
+ kObjTypeModalSaveGame,
kObjTypeMovGraph,
kObjTypeMovGraphLink,
kObjTypeMovGraphNode,
@@ -148,8 +149,6 @@ class DWordArray : public Common::Array<int32>, public CObject {
virtual bool load(MfcArchive &file);
};
-typedef Common::Array<void *> PtrList;
-
char *genFileName(int superId, int sceneId, const char *ext);
byte *transCyrillic(byte *s);
diff --git a/engines/gob/draw.cpp b/engines/gob/draw.cpp
index 081afe4a05..3ee6d64bec 100644
--- a/engines/gob/draw.cpp
+++ b/engines/gob/draw.cpp
@@ -88,11 +88,6 @@ Draw::Draw(GobEngine *vm) : _vm(vm) {
_vgaPalette[i].blue = 0;
_vgaPalette[i].green = 0;
}
- for (int i = 0; i < 16; i++) {
- _vgaSmallPalette[i].red = 0;
- _vgaSmallPalette[i].blue = 0;
- _vgaSmallPalette[i].green = 0;
- }
_showCursor = 0;
_cursorIndex = 0;
diff --git a/engines/gob/draw.h b/engines/gob/draw.h
index ba6f183c6c..eb12e85468 100644
--- a/engines/gob/draw.h
+++ b/engines/gob/draw.h
@@ -115,7 +115,6 @@ public:
int16 _unusedPalette1[18];
int16 _unusedPalette2[16];
Video::Color _vgaPalette[256];
- Video::Color _vgaSmallPalette[16];
// 0 (00b): No cursor
// 1 (01b): Cursor would be on _backSurface
diff --git a/engines/gob/inter_v1.cpp b/engines/gob/inter_v1.cpp
index 10364952f2..40134bbf17 100644
--- a/engines/gob/inter_v1.cpp
+++ b/engines/gob/inter_v1.cpp
@@ -1125,7 +1125,7 @@ void Inter_v1::o1_palLoad(OpFuncParams &params) {
_vm->_draw->_vgaPalette[i].blue = _vm->_game->_script->readByte();
}
- memcpy(_vm->_draw->_vgaSmallPalette, _vm->_draw->_vgaPalette, 16 * 3);
+ memcpy(_vm->_draw->_vgaPalette, _vm->_draw->_vgaPalette, 16 * 3);
break;
case 53:
@@ -1183,7 +1183,7 @@ void Inter_v1::o1_palLoad(OpFuncParams &params) {
_vm->_palAnim->fade(_vm->_global->_pPaletteDesc, 0, 0);
return;
}
- _vm->_global->_pPaletteDesc->vgaPal = _vm->_draw->_vgaSmallPalette;
+ _vm->_global->_pPaletteDesc->vgaPal = _vm->_draw->_vgaPalette;
_vm->_palAnim->fade(_vm->_global->_pPaletteDesc, 0, 0);
}
}
@@ -2489,21 +2489,21 @@ void Inter_v1::animPalette() {
_vm->_video->waitRetrace();
if (_animPalDir[0] == -1) {
- col = _vm->_draw->_vgaSmallPalette[_animPalLowIndex[0]];
+ col = _vm->_draw->_vgaPalette[_animPalLowIndex[0]];
for (i = _animPalLowIndex[0]; i < _animPalHighIndex[0]; i++)
- _vm->_draw->_vgaSmallPalette[i] = _vm->_draw->_vgaSmallPalette[i + 1];
+ _vm->_draw->_vgaPalette[i] = _vm->_draw->_vgaPalette[i + 1];
- _vm->_draw->_vgaSmallPalette[_animPalHighIndex[0]] = col;
+ _vm->_draw->_vgaPalette[_animPalHighIndex[0]] = col;
} else {
- col = _vm->_draw->_vgaSmallPalette[_animPalHighIndex[0]];
+ col = _vm->_draw->_vgaPalette[_animPalHighIndex[0]];
for (i = _animPalHighIndex[0]; i > _animPalLowIndex[0]; i--)
- _vm->_draw->_vgaSmallPalette[i] = _vm->_draw->_vgaSmallPalette[i - 1];
+ _vm->_draw->_vgaPalette[i] = _vm->_draw->_vgaPalette[i - 1];
- _vm->_draw->_vgaSmallPalette[_animPalLowIndex[0]] = col;
+ _vm->_draw->_vgaPalette[_animPalLowIndex[0]] = col;
}
- _vm->_global->_pPaletteDesc->vgaPal = _vm->_draw->_vgaSmallPalette;
+ _vm->_global->_pPaletteDesc->vgaPal = _vm->_draw->_vgaPalette;
_vm->_video->setFullPalette(_vm->_global->_pPaletteDesc);
}
diff --git a/engines/gob/minigames/geisha/diving.cpp b/engines/gob/minigames/geisha/diving.cpp
index 20c0688dd7..37ef291a93 100644
--- a/engines/gob/minigames/geisha/diving.cpp
+++ b/engines/gob/minigames/geisha/diving.cpp
@@ -389,8 +389,7 @@ void Diving::initScreen() {
_vm->_util->setFrameRate(15);
// Set palette
- memcpy(_vm->_draw->_vgaPalette , kPalette, sizeof(kPalette));
- memcpy(_vm->_draw->_vgaSmallPalette, kPalette, sizeof(kPalette));
+ memcpy(_vm->_draw->_vgaPalette, kPalette, sizeof(kPalette));
// Draw background decal
_vm->_draw->_backSurface->clear();
diff --git a/engines/gob/minigames/geisha/penetration.cpp b/engines/gob/minigames/geisha/penetration.cpp
index 16742c712f..0ebcd2c55b 100644
--- a/engines/gob/minigames/geisha/penetration.cpp
+++ b/engines/gob/minigames/geisha/penetration.cpp
@@ -840,8 +840,7 @@ void Penetration::setPalette() {
_vm->_palAnim->fade(0, 0, 0);
// Set palette
- memcpy(_vm->_draw->_vgaPalette , kPalettes[_floor], 3 * kPaletteSize);
- memcpy(_vm->_draw->_vgaSmallPalette, kPalettes[_floor], 3 * kPaletteSize);
+ memcpy(_vm->_draw->_vgaPalette, kPalettes[_floor], 3 * kPaletteSize);
_needFadeIn = true;
}
diff --git a/engines/gob/resources.cpp b/engines/gob/resources.cpp
index ac2deadd5f..dbed825977 100644
--- a/engines/gob/resources.cpp
+++ b/engines/gob/resources.cpp
@@ -209,6 +209,7 @@ void Resources::unload(bool del) {
_totResourceTable = 0;
_extResourceTable = 0;
_totTextTable = 0;
+ _totResStart = 0;
_totData = 0;
_totSize = 0;
_imData = 0;
@@ -233,6 +234,8 @@ bool Resources::loadTOTResourceTable() {
if (!stream)
return false;
+ _totResStart = totProps.scriptEnd;
+
if ((totProps.resourcesOffset == 0xFFFFFFFF) ||
(totProps.resourcesOffset == 0))
// No resources here
@@ -271,7 +274,6 @@ bool Resources::loadTOTResourceTable() {
item.type = kResourceTOT;
}
- _totResStart = totProps.scriptEnd;
_totSize = stream->size() - _totResStart;
if (_totSize <= 0)
diff --git a/engines/groovie/roq.cpp b/engines/groovie/roq.cpp
index 4b3fb81828..2776a0455d 100644
--- a/engines/groovie/roq.cpp
+++ b/engines/groovie/roq.cpp
@@ -45,7 +45,7 @@ namespace Groovie {
ROQPlayer::ROQPlayer(GroovieEngine *vm) :
VideoPlayer(vm), _codingTypeCount(0),
- _fg(&_vm->_graphicsMan->_foreground), _bg(&_vm->_graphicsMan->_background) {
+ _bg(&_vm->_graphicsMan->_background) {
// Create the work surfaces
_currBuf = new Graphics::Surface();
diff --git a/engines/groovie/roq.h b/engines/groovie/roq.h
index 0e82983e63..cd5e91c82b 100644
--- a/engines/groovie/roq.h
+++ b/engines/groovie/roq.h
@@ -75,7 +75,7 @@ private:
byte _codebook4[256 * 4];
// Buffers
- Graphics::Surface *_fg, *_bg, *_thirdBuf;
+ Graphics::Surface *_bg;
Graphics::Surface *_currBuf, *_prevBuf;
void buildShowBuf();
byte _scaleX, _scaleY;
diff --git a/engines/hopkins/computer.cpp b/engines/hopkins/computer.cpp
index 1307cd5796..84d5c631c7 100644
--- a/engines/hopkins/computer.cpp
+++ b/engines/hopkins/computer.cpp
@@ -38,10 +38,9 @@ namespace Hopkins {
ComputerManager::ComputerManager(HopkinsEngine *vm) {
_vm = vm;
- for (int i = 0; i < 50; i++) {
- _menuText[i]._actvFl = false;
+ for (int i = 0; i < ARRAYSIZE(_menuText); i++) {
_menuText[i]._lineSize = 0;
- memset(_menuText[i]._line, 0, 90);
+ memset(_menuText[i]._line, 0, ARRAYSIZE(_menuText[0]._line));
}
Common::fill(&_inputBuf[0], &_inputBuf[200], '\0');
_breakoutSpr = NULL;
@@ -346,6 +345,7 @@ static const char _spanishText[] =
* Load Menu data
*/
void ComputerManager::loadMenu() {
+ debug(9, "ComputerManager::loadMenu()");
char *ptr;
if (_vm->_fileIO->fileExists("COMPUTAN.TXT")) {
ptr = (char *)_vm->_fileIO->loadFile("COMPUTAN.TXT");
@@ -353,46 +353,52 @@ void ComputerManager::loadMenu() {
switch (_vm->_globals->_language) {
case LANG_FR:
ptr = (char *)_vm->_globals->allocMemory(sizeof(_frenchText));
- strcpy(ptr, _frenchText);
+ Common::strlcpy(ptr, _frenchText, sizeof(_frenchText));
break;
case LANG_SP:
ptr = (char *)_vm->_globals->allocMemory(sizeof(_spanishText));
- strcpy(ptr, _spanishText);
+ Common::strlcpy(ptr, _spanishText, sizeof(_spanishText));
break;
default:
ptr = (char *)_vm->_globals->allocMemory(sizeof(_englishText));
- strcpy(ptr, _englishText);
+ Common::strlcpy(ptr, _englishText, sizeof(_englishText));
break;
}
}
char *tmpPtr = ptr;
int lineNum = 0;
- int strPos;
- bool loopCond = false;
- do {
- if (tmpPtr[0] == '%') {
- if (tmpPtr[1] == '%') {
- loopCond = true;
- break;
- }
- _menuText[lineNum]._actvFl = 1;
- strPos = 0;
- while (strPos <= 89) {
+ const char lineSep = tmpPtr[0];
+
+ while (tmpPtr[0] != '\0' && lineNum < ARRAYSIZE(_menuText)) {
+ if (tmpPtr[0] == '%' && tmpPtr[1] == '%') {
+ // End of file marker found - Break out of parse loop
+ break;
+ }
+
+ if (tmpPtr[0] == lineSep) {
+ int strPos = 0;
+ while (strPos < ARRAYSIZE(_menuText[0]._line)) {
char curChar = tmpPtr[strPos + 2];
- if (curChar == '%' || curChar == 10)
+ if (curChar == '\0' || curChar == lineSep || curChar == 0x0a) // Line Feed
break;
_menuText[lineNum]._line[strPos++] = curChar;
}
- if (strPos <= 89) {
+
+ if (strPos < ARRAYSIZE(_menuText[0]._line)) {
_menuText[lineNum]._line[strPos] = 0;
_menuText[lineNum]._lineSize = strPos - 1;
}
- ++lineNum;
+
+ if (strPos != 0) {
+ debug(9, "_menuText[%d]._line (size: %d): \"%s\"", lineNum, _menuText[lineNum]._lineSize, _menuText[lineNum]._line);
+ ++lineNum;
+ }
}
++tmpPtr;
- } while (!loopCond);
+ }
+
_vm->_globals->freeMemory((byte *)ptr);
}
diff --git a/engines/hopkins/computer.h b/engines/hopkins/computer.h
index e8857a234b..ba50dca4cf 100644
--- a/engines/hopkins/computer.h
+++ b/engines/hopkins/computer.h
@@ -31,22 +31,22 @@ namespace Hopkins {
class HopkinsEngine;
-struct MenuItem {
- bool _actvFl;
- int _lineSize;
- char _line[90];
-};
-
-struct ScoreItem {
- Common::String _name;
- Common::String _score;
-};
-
enum ComputerEnum { COMPUTER_HOPKINS = 1, COMPUTER_SAMANTHA = 2, COMPUTER_PUBLIC = 3 };
class ComputerManager {
private:
HopkinsEngine *_vm;
+
+ struct MenuItem {
+ int _lineSize;
+ char _line[90];
+ };
+
+ struct ScoreItem {
+ Common::String _name;
+ Common::String _score;
+ };
+
MenuItem _menuText[50];
char _inputBuf[200];
ScoreItem _score[6];
@@ -84,14 +84,14 @@ private:
void displayLives();
void displayBricks();
void displayGamesSubMenu();
- int displayHiscores();
+ int displayHiscores();
void displayHiscoreLine(const byte *objectData, int x, int y, int curChar);
void displayMessage(int xp, int yp, int textIdx);
void displayScore();
void displayScoreChar(int charPos, int charDisp);
void getScoreName();
void playBreakout();
- int moveBall();
+ int moveBall();
void saveScore();
void checkBallCollisions();
diff --git a/engines/hopkins/files.cpp b/engines/hopkins/files.cpp
index 75f429f860..6620f2878c 100644
--- a/engines/hopkins/files.cpp
+++ b/engines/hopkins/files.cpp
@@ -51,12 +51,13 @@ byte *FileManager::loadFile(const Common::String &file) {
// Allocate space for the file contents
size_t filesize = f.size();
- byte *data = _vm->_globals->allocMemory(filesize);
+ byte *data = _vm->_globals->allocMemory(filesize+1);
if (!data)
error("Error allocating space for file being loaded - %s", file.c_str());
readStream(f, data, filesize);
f.close();
+ data[filesize] = '\0';
return data;
}
diff --git a/engines/kyra/scene_lol.cpp b/engines/kyra/scene_lol.cpp
index 313386e86d..391de5e49c 100644
--- a/engines/kyra/scene_lol.cpp
+++ b/engines/kyra/scene_lol.cpp
@@ -620,14 +620,14 @@ void LoLEngine::updateCompass() {
if (_compassStep)
_compassStep -= (((ABS(_compassStep) >> 4) + 2) * dir);
- int16 d = _compassBroken ? (int8(_rnd.getRandomNumber(255)) - _compassDirection) : (_currentDirection << 6) - _compassDirection;
- if (d <= -128)
- d += 256;
- if (d >= 128)
- d -= 256;
-
- d >>= 2;
- _compassStep += d;
+ int16 diff = _compassBroken ? (int8(_rnd.getRandomNumber(255)) - _compassDirection) : (_currentDirection << 6) - _compassDirection;
+ if (diff <= -128)
+ diff += 256;
+ if (diff >= 128)
+ diff -= 256;
+
+ diff >>= 2;
+ _compassStep += diff;
_compassStep = CLIP(_compassStep, -24, 24);
_compassDirection += _compassStep;
@@ -636,14 +636,9 @@ void LoLEngine::updateCompass() {
if (_compassDirection > 255)
_compassDirection -= 256;
- if ((_compassDirection >> 6) == _currentDirection && _compassStep < 2) {
- int16 d2 = d >> 16;
- d ^= d2;
- d -= d2;
- if (d < 4) {
- _compassDirection = _currentDirection << 6;
- _compassStep = 0;
- }
+ if (((((_compassDirection + 3) & 0xFD) >> 6) == _currentDirection) && (_compassStep < 2) && (ABS(diff) < 4)) {
+ _compassDirection = _currentDirection << 6;
+ _compassStep = 0;
}
gui_drawCompass();
diff --git a/engines/kyra/sound_towns.cpp b/engines/kyra/sound_towns.cpp
index 10cbc49c7c..725dedae3f 100644
--- a/engines/kyra/sound_towns.cpp
+++ b/engines/kyra/sound_towns.cpp
@@ -538,7 +538,8 @@ bool SoundTownsPC98_v2::init() {
// check if we have access to CD audio.
Resource *r = _vm->resource();
if (_musicEnabled &&
- (r->exists("track1.mp3") || r->exists("track1.ogg") || r->exists("track1.flac") || r->exists("track1.fla")))
+ (r->exists("track1.mp3") || r->exists("track1.ogg") || r->exists("track1.flac") || r->exists("track1.fla")
+ || r->exists("track01.mp3") || r->exists("track01.ogg") || r->exists("track01.flac") || r->exists("track01.fla")))
_musicEnabled = 2;
else
_musicEnabled = 1;
diff --git a/engines/kyra/staticres.cpp b/engines/kyra/staticres.cpp
index fbbe916a5c..9b3b92b9c7 100644
--- a/engines/kyra/staticres.cpp
+++ b/engines/kyra/staticres.cpp
@@ -39,7 +39,7 @@
namespace Kyra {
-#define RESFILE_VERSION 84
+#define RESFILE_VERSION 85
namespace {
bool checkKyraDat(Common::SeekableReadStream *file) {
diff --git a/engines/lastexpress/data/animation.cpp b/engines/lastexpress/data/animation.cpp
index 9c8cc202aa..148854e04d 100644
--- a/engines/lastexpress/data/animation.cpp
+++ b/engines/lastexpress/data/animation.cpp
@@ -39,7 +39,7 @@
namespace LastExpress {
-Animation::Animation() : _stream(NULL), _currentChunk(NULL), _overlay(NULL), _background1(NULL), _background2(NULL), _backgroundCurrent(0), _audio(NULL), _startTime(0), _changed(false), _flag(0) {
+Animation::Animation() : _stream(NULL), _currentChunk(NULL), _overlay(NULL), _background1(NULL), _background2(NULL), _backgroundCurrent(0), _audio(NULL), _startTime(0), _changed(false) {
}
Animation::~Animation() {
diff --git a/engines/lastexpress/data/animation.h b/engines/lastexpress/data/animation.h
index 7f6922866a..9523cddb78 100644
--- a/engines/lastexpress/data/animation.h
+++ b/engines/lastexpress/data/animation.h
@@ -113,7 +113,6 @@ private:
uint32 _startTime;
bool _changed;
- int _flag;
};
} // End of namespace LastExpress
diff --git a/engines/lastexpress/data/sequence.cpp b/engines/lastexpress/data/sequence.cpp
index c7073b560c..f43e2afdef 100644
--- a/engines/lastexpress/data/sequence.cpp
+++ b/engines/lastexpress/data/sequence.cpp
@@ -76,7 +76,7 @@ void FrameInfo::read(Common::SeekableReadStream *in, bool isSequence) {
// AnimFrame
-AnimFrame::AnimFrame(Common::SeekableReadStream *in, const FrameInfo &f, bool ignoreSubtype) : _palette(NULL), _ignoreSubtype(ignoreSubtype) {
+AnimFrame::AnimFrame(Common::SeekableReadStream *in, const FrameInfo &f, bool /* ignoreSubtype */) : _palette(NULL) {
_palSize = 1;
// TODO: use just the needed rectangle
_image.create(640, 480, Graphics::PixelFormat::createFormatCLUT8());
diff --git a/engines/lastexpress/data/sequence.h b/engines/lastexpress/data/sequence.h
index dbb08a0c07..fd8b3cd27b 100644
--- a/engines/lastexpress/data/sequence.h
+++ b/engines/lastexpress/data/sequence.h
@@ -147,7 +147,6 @@ private:
uint16 _palSize;
uint16 *_palette;
Common::Rect _rect;
- bool _ignoreSubtype;
};
class Sequence {
diff --git a/engines/lure/menu.cpp b/engines/lure/menu.cpp
index 3fc4c2a05b..8867e8a626 100644
--- a/engines/lure/menu.cpp
+++ b/engines/lure/menu.cpp
@@ -31,7 +31,7 @@
#include "lure/events.h"
#include "lure/lure.h"
-#if defined(_WIN32_WCE) || defined(__SYMBIAN32__) || defined(WEBOS) || defined(__ANDROID__)
+#if defined(_WIN32_WCE) || defined(__SYMBIAN32__) || defined(WEBOS) || defined(__ANDROID__) || defined(__WII__)
#define LURE_CLICKABLE_MENUS
#endif
diff --git a/engines/mohawk/console.cpp b/engines/mohawk/console.cpp
index 2e83eb3328..d95c91e3be 100644
--- a/engines/mohawk/console.cpp
+++ b/engines/mohawk/console.cpp
@@ -426,13 +426,11 @@ bool RivenConsole::Cmd_CurStack(int argc, const char **argv) {
}
bool RivenConsole::Cmd_ChangeStack(int argc, const char **argv) {
- byte i;
-
if (argc < 3) {
DebugPrintf("Usage: changeStack <stack> <card>\n\n");
DebugPrintf("Stacks:\n=======\n");
- for (i = 0; i <= tspit; i++)
+ for (uint i = kStackFirst; i <= kStackLast; i++)
DebugPrintf(" %s\n", _vm->getStackName(i).c_str());
DebugPrintf("\n");
@@ -440,20 +438,21 @@ bool RivenConsole::Cmd_ChangeStack(int argc, const char **argv) {
return true;
}
- byte stackNum = 0;
+ uint stack = kStackUnknown;
- for (i = 1; i <= tspit + 1; i++)
- if (!scumm_stricmp(argv[1], _vm->getStackName(i - 1).c_str())) {
- stackNum = i;
+ for (uint i = kStackFirst; i <= kStackLast; i++) {
+ if (!scumm_stricmp(argv[1], _vm->getStackName(i).c_str())) {
+ stack = i;
break;
}
+ }
- if (!stackNum) {
+ if (stack == kStackUnknown) {
DebugPrintf("\'%s\' is not a stack name!\n", argv[1]);
return true;
}
- _vm->changeToStack(stackNum - 1);
+ _vm->changeToStack(stack);
_vm->changeToCard((uint16)atoi(argv[2]));
return false;
@@ -494,21 +493,20 @@ bool RivenConsole::Cmd_DumpScript(int argc, const char **argv) {
}
uint16 oldStack = _vm->getCurStack();
+ uint newStack = kStackUnknown;
- byte newStack = 0;
-
- for (byte i = 1; i <= tspit + 1; i++)
- if (!scumm_stricmp(argv[1], _vm->getStackName(i - 1).c_str())) {
+ for (uint i = kStackFirst; i <= kStackLast; i++) {
+ if (!scumm_stricmp(argv[1], _vm->getStackName(i).c_str())) {
newStack = i;
break;
}
+ }
- if (!newStack) {
+ if (newStack == kStackUnknown) {
DebugPrintf("\'%s\' is not a stack name!\n", argv[1]);
return true;
}
- newStack--;
_vm->changeToStack(newStack);
// Load in Variable Names
diff --git a/engines/mohawk/riven.cpp b/engines/mohawk/riven.cpp
index e1059bebaa..a7fe12b9e1 100644
--- a/engines/mohawk/riven.cpp
+++ b/engines/mohawk/riven.cpp
@@ -55,7 +55,7 @@ MohawkEngine_Riven::MohawkEngine_Riven(OSystem *syst, const MohawkGameDescriptio
_activatedSLST = false;
_ignoreNextMouseUp = false;
_extrasFile = 0;
- _curStack = aspit;
+ _curStack = kStackUnknown;
_hotspots = 0;
removeTimer();
@@ -161,7 +161,7 @@ Common::Error MohawkEngine_Riven::run() {
// Let's begin, shall we?
if (getFeatures() & GF_DEMO) {
// Start the demo off with the videos
- changeToStack(aspit);
+ changeToStack(kStackAspit);
changeToCard(6);
} else if (ConfMan.hasKey("save_slot")) {
// Load game from launcher/command line if requested
@@ -172,12 +172,12 @@ Common::Error MohawkEngine_Riven::run() {
// Attempt to load the game. On failure, just send us to the main menu.
if (_saveLoad->loadGame(savedGamesList[gameToLoad]).getCode() != Common::kNoError) {
- changeToStack(aspit);
+ changeToStack(kStackAspit);
changeToCard(1);
}
} else {
// Otherwise, start us off at aspit's card 1 (the main menu)
- changeToStack(aspit);
+ changeToStack(kStackAspit);
changeToCard(1);
}
@@ -255,16 +255,16 @@ void MohawkEngine_Riven::handleEvents() {
case Common::KEYCODE_r:
// Return to the main menu in the demo on ctrl+r
if (event.kbd.flags & Common::KBD_CTRL && getFeatures() & GF_DEMO) {
- if (_curStack != aspit)
- changeToStack(aspit);
+ if (_curStack != kStackAspit)
+ changeToStack(kStackAspit);
changeToCard(1);
}
break;
case Common::KEYCODE_p:
// Play the intro videos in the demo on ctrl+p
if (event.kbd.flags & Common::KBD_CTRL && getFeatures() & GF_DEMO) {
- if (_curStack != aspit)
- changeToStack(aspit);
+ if (_curStack != kStackAspit)
+ changeToStack(kStackAspit);
changeToCard(6);
}
break;
@@ -343,20 +343,22 @@ struct RivenSpecialChange {
uint32 startCardRMAP;
byte targetStack;
uint32 targetCardRMAP;
-} rivenSpecialChange[] = {
- { aspit, 0x1f04, ospit, 0x44ad }, // Trap Book
- { bspit, 0x1c0e7, ospit, 0x2e76 }, // Dome Linking Book
- { gspit, 0x111b1, ospit, 0x2e76 }, // Dome Linking Book
- { jspit, 0x28a18, rspit, 0xf94 }, // Tay Linking Book
- { jspit, 0x26228, ospit, 0x2e76 }, // Dome Linking Book
- { ospit, 0x5f0d, pspit, 0x3bf0 }, // Return from 233rd Age
- { ospit, 0x470a, jspit, 0x1508e }, // Return from 233rd Age
- { ospit, 0x5c52, gspit, 0x10bea }, // Return from 233rd Age
- { ospit, 0x5d68, bspit, 0x1adfd }, // Return from 233rd Age
- { ospit, 0x5e49, tspit, 0xe87 }, // Return from 233rd Age
- { pspit, 0x4108, ospit, 0x2e76 }, // Dome Linking Book
- { rspit, 0x32d8, jspit, 0x1c474 }, // Return from Tay
- { tspit, 0x21b69, ospit, 0x2e76 } // Dome Linking Book
+};
+
+static const RivenSpecialChange rivenSpecialChange[] = {
+ { kStackAspit, 0x1f04, kStackOspit, 0x44ad }, // Trap Book
+ { kStackBspit, 0x1c0e7, kStackOspit, 0x2e76 }, // Dome Linking Book
+ { kStackGspit, 0x111b1, kStackOspit, 0x2e76 }, // Dome Linking Book
+ { kStackJspit, 0x28a18, kStackRspit, 0xf94 }, // Tay Linking Book
+ { kStackJspit, 0x26228, kStackOspit, 0x2e76 }, // Dome Linking Book
+ { kStackOspit, 0x5f0d, kStackPspit, 0x3bf0 }, // Return from 233rd Age
+ { kStackOspit, 0x470a, kStackJspit, 0x1508e }, // Return from 233rd Age
+ { kStackOspit, 0x5c52, kStackGspit, 0x10bea }, // Return from 233rd Age
+ { kStackOspit, 0x5d68, kStackBspit, 0x1adfd }, // Return from 233rd Age
+ { kStackOspit, 0x5e49, kStackTspit, 0xe87 }, // Return from 233rd Age
+ { kStackPspit, 0x4108, kStackOspit, 0x2e76 }, // Dome Linking Book
+ { kStackRspit, 0x32d8, kStackJspit, 0x1c474 }, // Return from Tay
+ { kStackTspit, 0x21b69, kStackOspit, 0x2e76 } // Dome Linking Book
};
void MohawkEngine_Riven::changeToCard(uint16 dest) {
@@ -556,16 +558,16 @@ void MohawkEngine_Riven::checkInventoryClick() {
// In the demo, check if we've clicked the exit button
if (getFeatures() & GF_DEMO) {
if (g_demoExitRect->contains(mousePos)) {
- if (_curStack == aspit && _curCard == 1) {
+ if (_curStack == kStackAspit && _curCard == 1) {
// From the main menu, go to the "quit" screen
changeToCard(12);
- } else if (_curStack == aspit && _curCard == 12) {
+ } else if (_curStack == kStackAspit && _curCard == 12) {
// From the "quit" screen, just quit
_gameOver = true;
} else {
// Otherwise, return to the main menu
- if (_curStack != aspit)
- changeToStack(aspit);
+ if (_curStack != kStackAspit)
+ changeToStack(kStackAspit);
changeToCard(1);
}
}
@@ -573,7 +575,7 @@ void MohawkEngine_Riven::checkInventoryClick() {
}
// No inventory shown on aspit
- if (_curStack == aspit)
+ if (_curStack == kStackAspit)
return;
// Set the return stack/card id's.
@@ -589,31 +591,31 @@ void MohawkEngine_Riven::checkInventoryClick() {
if (!hasCathBook) {
if (g_atrusJournalRect1->contains(mousePos)) {
_gfx->hideInventory();
- changeToStack(aspit);
+ changeToStack(kStackAspit);
changeToCard(5);
}
} else if (!hasTrapBook) {
if (g_atrusJournalRect2->contains(mousePos)) {
_gfx->hideInventory();
- changeToStack(aspit);
+ changeToStack(kStackAspit);
changeToCard(5);
} else if (g_cathJournalRect2->contains(mousePos)) {
_gfx->hideInventory();
- changeToStack(aspit);
+ changeToStack(kStackAspit);
changeToCard(6);
}
} else {
if (g_atrusJournalRect3->contains(mousePos)) {
_gfx->hideInventory();
- changeToStack(aspit);
+ changeToStack(kStackAspit);
changeToCard(5);
} else if (g_cathJournalRect3->contains(mousePos)) {
_gfx->hideInventory();
- changeToStack(aspit);
+ changeToStack(kStackAspit);
changeToCard(6);
} else if (g_trapBookRect3->contains(mousePos)) {
_gfx->hideInventory();
- changeToStack(aspit);
+ changeToStack(kStackAspit);
changeToCard(7);
}
}
@@ -735,16 +737,20 @@ Common::Error MohawkEngine_Riven::saveGameState(int slot, const Common::String &
Common::String MohawkEngine_Riven::getStackName(uint16 stack) const {
static const char *rivenStackNames[] = {
- "aspit",
- "bspit",
- "gspit",
- "jspit",
+ "<unknown>",
"ospit",
"pspit",
"rspit",
- "tspit"
+ "tspit",
+ "bspit",
+ "gspit",
+ "jspit",
+ "aspit"
};
+ // Sanity check.
+ assert(stack < ARRAYSIZE(rivenStackNames));
+
return rivenStackNames[stack];
}
diff --git a/engines/mohawk/riven.h b/engines/mohawk/riven.h
index c22b9f7f87..9c23d07c52 100644
--- a/engines/mohawk/riven.h
+++ b/engines/mohawk/riven.h
@@ -44,18 +44,20 @@ class RivenConsole;
class RivenSaveLoad;
class RivenOptionsDialog;
-#define RIVEN_STACKS 8
-
// Riven Stack Types
enum {
- aspit = 0, // Main Menu, Books, Setup
- bspit = 1, // Book-Making Island
- gspit = 2, // Garden Island
- jspit = 3, // Jungle Island
- ospit = 4, // 233rd Age (Gehn's Office)
- pspit = 5, // Prison Island
- rspit = 6, // Rebel Age (Tay)
- tspit = 7 // Temple Island
+ kStackUnknown = 0, // Default value for ReturnStackID
+ kStackOspit = 1, // 233rd Age (Gehn's Office)
+ kStackPspit = 2, // Prison Island
+ kStackRspit = 3, // Temple Island
+ kStackTspit = 4, // Rebel Age (Tay)
+ kStackBspit = 5, // Book-Making Island
+ kStackGspit = 6, // Garden Island
+ kStackJspit = 7, // Jungle Island
+ kStackAspit = 8, // Main Menu, Books, Setup
+
+ kStackFirst = kStackOspit,
+ kStackLast = kStackAspit
};
// NAME Resource ID's
diff --git a/engines/mohawk/riven_external.cpp b/engines/mohawk/riven_external.cpp
index 10dcfd9fa7..3d0bccc47f 100644
--- a/engines/mohawk/riven_external.cpp
+++ b/engines/mohawk/riven_external.cpp
@@ -405,7 +405,7 @@ void RivenExternal::drawDomeSliders(uint16 startHotspot) {
// On pspit, the rect is different by two pixels
// (alternatively, we could just use hotspot 3 here, but only on pspit is there a hotspot for this)
- if (_vm->getCurStack() == pspit)
+ if (_vm->getCurStack() == kStackPspit)
dstAreaRect.translate(-2, 0);
// Find out bitmap id
@@ -2016,8 +2016,8 @@ void RivenExternal::xorollcredittime(uint16 argc, uint16 *argv) {
// WORKAROUND: The special change stuff only handles one destination and it would
// be messy to modify the way that currently works. If we use the trap book on Tay,
// we should be using the Tay end game sequences.
- if (_vm->_vars["returnstackid"] == rspit) {
- _vm->changeToStack(rspit);
+ if (_vm->_vars["returnstackid"] == kStackRspit) {
+ _vm->changeToStack(kStackRspit);
_vm->changeToCard(2);
return;
}
diff --git a/engines/mohawk/riven_graphics.cpp b/engines/mohawk/riven_graphics.cpp
index 615b2fdadb..b44fbb828e 100644
--- a/engines/mohawk/riven_graphics.cpp
+++ b/engines/mohawk/riven_graphics.cpp
@@ -289,7 +289,7 @@ void RivenGraphics::showInventory() {
drawInventoryImage(101, g_demoExitRect);
} else {
// We don't want to show the inventory on setup screens or in other journals.
- if (_vm->getCurStack() == aspit)
+ if (_vm->getCurStack() == kStackAspit)
return;
// There are three books and three vars. We have three different
diff --git a/engines/mohawk/riven_saveload.cpp b/engines/mohawk/riven_saveload.cpp
index d97d0e174b..6af66f7a2d 100644
--- a/engines/mohawk/riven_saveload.cpp
+++ b/engines/mohawk/riven_saveload.cpp
@@ -38,56 +38,6 @@ Common::StringArray RivenSaveLoad::generateSaveGameList() {
return _saveFileMan->listSavefiles("*.rvn");
}
-// Note: The stack numbers we use do not match up to what the original executable,
-// so, match them ;)
-static uint16 mapOldStackIDToNew(uint16 oldID) {
- switch (oldID) {
- case 1:
- return ospit;
- case 2:
- return pspit;
- case 3:
- return rspit;
- case 4:
- return tspit;
- case 5:
- return bspit;
- case 6:
- return gspit;
- case 7:
- return jspit;
- case 8:
- return aspit;
- }
-
- error("Unknown old stack ID %d", oldID);
- return 0;
-}
-
-static uint16 mapNewStackIDToOld(uint16 newID) {
- switch (newID) {
- case aspit:
- return 8;
- case bspit:
- return 5;
- case gspit:
- return 6;
- case jspit:
- return 7;
- case ospit:
- return 1;
- case pspit:
- return 2;
- case rspit:
- return 3;
- case tspit:
- return 4;
- }
-
- error("Unknown new stack ID %d", newID);
- return 0;
-}
-
Common::Error RivenSaveLoad::loadGame(Common::String filename) {
if (_vm->getFeatures() & GF_DEMO) // Don't load games in the demo
return Common::kNoError;
@@ -141,9 +91,6 @@ Common::Error RivenSaveLoad::loadGame(Common::String filename) {
names->readUint16BE(); // Skip unknown values
uint32 curNamesPos = names->pos();
- uint16 stackID = 0;
- uint16 cardID = 0;
-
for (uint32 i = 0; i < namesCount && !names->eos(); i++) {
names->seek(curNamesPos);
names->seek(stringOffsets[i], SEEK_CUR);
@@ -165,25 +112,18 @@ Common::Error RivenSaveLoad::loadGame(Common::String filename) {
uint32 &var = _vm->_vars[name];
name.toLowercase();
- // Handle any special variables here
// WORKAROUND: time variables are reset here for one main reason:
// The save does not store any start point for the time, so we don't know the real time.
// Because of this, in many cases, the original would just give a 'free' Ytram upon saving
// since the time would be used in a new (improper) time frame.
- if (name.equalsIgnoreCase("CurrentStackID")) // Remap to our definitions, store for later
- stackID = mapOldStackIDToNew(rawVariables[i]);
- else if (name.equalsIgnoreCase("CurrentCardID")) // Store for later
- cardID = rawVariables[i];
- else if (name.equalsIgnoreCase("ReturnStackID") && var != 0) // if 0, the game did not use the variable yet
- var = mapOldStackIDToNew(rawVariables[i]);
- else if (name.contains("time")) // WORKAROUND: See above
+ if (name.contains("time"))
var = 0;
- else // Otherwise, just store it
+ else
var = rawVariables[i];
}
- _vm->changeToStack(stackID);
- _vm->changeToCard(cardID);
+ _vm->changeToStack(_vm->_vars["CurrentStackID"]);
+ _vm->changeToCard(_vm->_vars["CurrentCardID"]);
delete names;
delete[] stringOffsets;
@@ -224,14 +164,7 @@ Common::MemoryWriteStreamDynamic *RivenSaveLoad::genVARSSection() {
for (RivenVariableMap::const_iterator it = _vm->_vars.begin(); it != _vm->_vars.end(); it++) {
stream->writeUint32BE(0); // Unknown
stream->writeUint32BE(0); // Unknown
-
- // Remap returnstackid here because we don't actually want to change
- // our internal returnstackid.
- uint32 variable = it->_value;
- if (it->_key == "returnstackid")
- variable = mapNewStackIDToOld(variable);
-
- stream->writeUint32BE(variable);
+ stream->writeUint32BE(it->_value);
}
return stream;
@@ -290,7 +223,7 @@ Common::Error RivenSaveLoad::saveGame(Common::String filename) {
filename += ".rvn";
// Convert class variables to variable numbers
- _vm->_vars["currentstackid"] = mapNewStackIDToOld(_vm->getCurStack());
+ _vm->_vars["currentstackid"] = _vm->getCurStack();
_vm->_vars["currentcardid"] = _vm->getCurCard();
Common::OutSaveFile *saveFile = _saveFileMan->openForSaving(filename);
diff --git a/engines/mohawk/riven_scripts.cpp b/engines/mohawk/riven_scripts.cpp
index 06b6afdf30..29ee5cd50b 100644
--- a/engines/mohawk/riven_scripts.cpp
+++ b/engines/mohawk/riven_scripts.cpp
@@ -403,7 +403,7 @@ void RivenScript::stopSound(uint16 op, uint16 argc, uint16 *argv) {
// would cause all ambient sounds not to play. An alternative
// fix would be to stop all scripts on a stack change, but this
// does fine for now.
- if (_vm->getCurStack() == tspit && (_vm->getCurCardRMAP() == 0x6e9a || _vm->getCurCardRMAP() == 0xfeeb))
+ if (_vm->getCurStack() == kStackTspit && (_vm->getCurCardRMAP() == 0x6e9a || _vm->getCurCardRMAP() == 0xfeeb))
return;
// The argument is a bitflag for the setting.
@@ -586,7 +586,7 @@ void RivenScript::activatePLST(uint16 op, uint16 argc, uint16 *argv) {
void RivenScript::activateSLST(uint16 op, uint16 argc, uint16 *argv) {
// WORKAROUND: Disable the SLST that is played during Riven's intro.
// Riven X does this too (spoke this over with Jeff)
- if (_vm->getCurStack() == tspit && _vm->getCurCardRMAP() == 0x6e9a && argv[0] == 2)
+ if (_vm->getCurStack() == kStackTspit && _vm->getCurCardRMAP() == 0x6e9a && argv[0] == 2)
return;
_vm->_sound->playSLST(argv[0], _vm->getCurCard());
diff --git a/engines/mohawk/riven_vars.cpp b/engines/mohawk/riven_vars.cpp
index 1cd748d8d6..f09aba7f90 100644
--- a/engines/mohawk/riven_vars.cpp
+++ b/engines/mohawk/riven_vars.cpp
@@ -31,240 +31,240 @@ namespace Mohawk {
static const char *variableNames[] = {
// aspit
- "aatrusbook",
- "aatruspage",
- "acathbook",
- "acathpage",
- "acathstate",
- "adoit",
- "adomecombo",
- "agehn",
- "ainventory",
- "aova",
- "apower",
- "araw",
- "atemp",
- "atrap",
- "atrapbook",
- "auservolume",
- "azip",
+ "aAtrusBook",
+ "aAtrusPage",
+ "aCathBook",
+ "aCathPage",
+ "aCathState",
+ "aDoIt",
+ "aDomeCombo",
+ "aGehn",
+ "aInventory",
+ "aOva",
+ "aPower",
+ "aRaw",
+ "aTemp",
+ "aTrap",
+ "aTrapBook",
+ "aUserVolume",
+ "aZip",
// bspit
- "bbacklock",
- "bbait",
- "bbigbridge",
- "bbirds",
- "bblrarm",
- "bblrdoor",
- "bblrgrt",
- "bblrsw",
- "bblrvalve",
- "bblrwtr",
- "bbook",
- "bbrlever",
- "bcavedoor",
+ "bBackLock",
+ "bBait",
+ "bBigBridge",
+ "bBirds",
+ "bBlrArm",
+ "bBlrDoor",
+ "bBlrGrt",
+ "bBlrSw",
+ "bBlrValve",
+ "bBlrWtr",
+ "bBook",
+ "bBrLever",
+ "bCaveDoor",
"bcombo",
- "bcpipegr",
- "bcratergg",
- "bdome",
- "bdrwr",
- "bfans",
- "bfmdoor",
- "bidvlv",
- "blab",
- "blabbackdr",
- "blabbook",
- "blabeye",
- "blabfrontdr",
- "blabpage",
- "blever",
- "bfrontlock",
- "bheat",
- "bmagcar",
- "bpipdr",
- "bprs",
- "bstove",
- "btrap",
- "bvalve",
- "bvise",
- "bytram",
- "bytramtime",
- "bytrap",
- "bytrapped",
+ "bCPipeGr",
+ "bCraterGg",
+ "bDome",
+ "bDrwr",
+ "bFans",
+ "bFMDoor",
+ "bIdVlv",
+ "bLab",
+ "bLabBackDr",
+ "bLabBook",
+ "bLabEye",
+ "bLabFrontDr",
+ "bLabPage",
+ "bLever",
+ "bFrontLock",
+ "bHeat",
+ "bMagCar",
+ "bPipDr",
+ "bPrs",
+ "bStove",
+ "bTrap",
+ "bValve",
+ "bVise",
+ "bYtram",
+ "bYtramTime",
+ "bYtrap",
+ "bYtrapped",
// gspit
- "gbook",
- "gcathtime",
- "gcathstate",
- "gcombo",
- "gdome",
- "gemagcar",
- "gimagecurr",
+ "gBook",
+ "gCathTime",
+ "gCathState",
+ "gCombo",
+ "gDome",
+ "gEmagCar",
+ "gImageCurr",
"gimagemax",
- "gimagerot",
- "glkbtns",
- "glkbridge",
- "glkelev",
- "glview",
- "glviewmpos",
- "glviewpos",
- "gnmagrot",
- "gnmagcar",
- "gpinup",
- "gpinpos",
- "gpinsmpos",
- "grview",
- "grviewmpos",
- "grviewpos",
- "gscribe",
- "gscribetime",
- "gsubelev",
- "gsubdr",
- "gupmoov",
- "gwhark",
- "gwharktime",
+ "gImageRot",
+ "gLkBtns",
+ "gLkBridge",
+ "gLkElev",
+ "gLView",
+ "gLViewMPos",
+ "gLViewPos",
+ "gNmagRot",
+ "gNmagCar",
+ "gPinUp",
+ "gPinPos",
+ "gPinsMPos",
+ "gRView",
+ "gRViewMPos",
+ "gRViewPos",
+ "gScribe",
+ "gScribeTime",
+ "gSubElev",
+ "gSubDr",
+ "gUpMoov",
+ "gWhark",
+ "gWharkTime",
// jspit
- "jwmagcar",
- "jbeetle",
- "jbeetlepool",
- "jbook",
- "jbridge1",
- "jbridge2",
- "jbridge3",
- "jbridge4",
- "jbridge5",
- "jccb",
- "jcombo",
- "jcrg",
- "jdome",
- "jdrain",
- "jgallows",
- "jgate",
- "jgirl",
- "jiconcorrectorder",
- "jiconorder",
- "jicons",
- "jladder",
- "jleftpos",
- "jpeek",
- "jplaybeetle",
- "jprebel",
- "jprisondr",
- "jprisonsecdr",
- "jrbook",
- "jrightpos",
- "jsouthpathdr",
- "jschooldr",
- "jsub",
- "jsubdir",
- "jsubhatch",
- "jsubsw",
- "jsunners",
- "jsunnertime",
- "jthronedr",
- "jtunneldr",
- "jtunnellamps",
- "jvillagepeople",
- "jwarning",
- "jwharkpos",
- "jwharkram",
- "jwmouth",
- "jwmagcar",
- "jymagcar",
+ "jWMagCar",
+ "jBeetle",
+ "jBeetlePool",
+ "jBook",
+ "jBridge1",
+ "jBridge2",
+ "jBridge3",
+ "jBridge4",
+ "jBridge5",
+ "jCCB",
+ "jCombo",
+ "jCrg",
+ "jDome",
+ "jDrain",
+ "jGallows",
+ "jGate",
+ "jGirl",
+ "jIconCorrectOrder",
+ "jIconOrder",
+ "jIcons",
+ "jLadder",
+ "jLeftPos",
+ "jPeek",
+ "jPlayBeetle",
+ "jPRebel",
+ "jPrisonDr",
+ "jPrisonSecDr",
+ "jrBook",
+ "jRightPos",
+ "jSouthPathDr",
+ "jSchoolDr",
+ "jSub",
+ "jSubDir",
+ "jSubHatch",
+ "jSubSw",
+ "jSunners",
+ "jSunnerTime",
+ "jThroneDr",
+ "jTunnelDr",
+ "jTunnelLamps",
+ "jVillagePeople",
+ "jWarning",
+ "jWharkPos",
+ "jWharkRam",
+ "jWMouth",
+ "jWMagCar",
+ "jYMagCar",
// ospit
"oambient",
- "obutton",
+ "oButton",
"ocage",
- "odeskbook",
- "ogehnpage",
- "omusicplayer",
- "ostanddrawer",
- "ostove",
+ "oDeskBook",
+ "oGehnPage",
+ "oMusicPlayer",
+ "oStandDrawer",
+ "oStove",
// pspit
- "pbook",
- "pcage",
- "pcathcheck",
- "pcathstate",
- "pcathtime",
- "pcombo",
- "pcorrectorder",
+ "pBook",
+ "pCage",
+ "pCathCheck",
+ "pCathState",
+ "pCathTime",
+ "pCombo",
+ "pCorrectOrder",
"pdome",
- "pelevcombo",
- "pleftpos",
- "prightpos",
- "ptemp",
- "pwharkpos",
+ "pElevCombo",
+ "pLeftPos",
+ "pRightPos",
+ "pTemp",
+ "pWharkPos",
// rspit
- "rrebel",
- "rrebelview",
- "rrichard",
- "rvillagetime",
+ "rRebel",
+ "rRebelView",
+ "rRichard",
+ "rVillageTime",
// tspit
- "tbars",
- "tbeetle",
- "tblue",
- "tbook",
- "tbookvalve",
- "tcage",
- "tcombo",
- "tcorrectorder",
- "tcovercombo",
- "tdl",
- "tdome",
- "tdomeelev",
- "tdomeelevbtn",
- "tgatebrhandle",
- "tgatebridge",
- "tgatestate",
- "tgreen",
- "tgridoor",
- "tgrodoor",
- "tgrmdoor",
- "tguard",
- "timagedoor",
- "tmagcar",
- "torange",
- "tred",
- "tsecdoor",
- "tsubbridge",
- "ttelecover",
- "ttelehandle",
- "ttelepin",
- "ttelescope",
- "ttelevalve",
- "ttemple",
- "ttempledoor",
- "ttunneldoor",
- "tviewer",
- "tviolet",
- "twabrvalve",
- "twaffle",
- "tyellow",
+ "tBars",
+ "tBeetle",
+ "tBlue",
+ "tBook",
+ "tBookValve",
+ "tCage",
+ "tCombo",
+ "tCorrectOrder",
+ "tCoverCombo",
+ "tDL",
+ "tDome",
+ "tDomeElev",
+ "tDomeElevBtn",
+ "tGateBrHandle",
+ "tGateBridge",
+ "tGateState",
+ "tGreen",
+ "tGRIDoor",
+ "tGRODoor",
+ "tGRMDoor",
+ "tGuard",
+ "tImageDoor",
+ "tMagCar",
+ "tOrange",
+ "tRed",
+ "tSecDoor",
+ "tSubBridge",
+ "tTeleCover",
+ "tTeleHandle",
+ "tTelePin",
+ "tTelescope",
+ "tTeleValve",
+ "tTemple",
+ "tTempleDoor",
+ "tTunnelDoor",
+ "tViewer",
+ "tViolet",
+ "tWaBrValve",
+ "tWaffle",
+ "tYellow",
// Miscellaneous
"elevbtn1",
"elevbtn2",
"elevbtn3",
- "domecheck",
- "transitionsenabled",
- "transitionmode",
- "waterenabled",
- "rivenambients",
- "stackvarsinitialized",
- "doingsetupscreens",
+ "domeCheck",
+ "transitionsEnabled",
+ "transitionMode",
+ "waterEnabled",
+ "RivenAmbients",
+ "stackVarsInitialized",
+ "DoingSetupScreens",
"all_book",
- "playerhasbook",
- "returnstackid",
- "returncardid",
- "newpos",
- "themarble",
- "currentstackid",
- "currentcardid"
+ "playerHasBook",
+ "returnStackID",
+ "returnCardID",
+ "NewPos",
+ "theMarble",
+ "CurrentStackID",
+ "CurrentCardID"
};
uint32 &MohawkEngine_Riven::getStackVar(uint32 index) {
diff --git a/engines/mohawk/video.cpp b/engines/mohawk/video.cpp
index a2c18718b7..cebb72e24f 100644
--- a/engines/mohawk/video.cpp
+++ b/engines/mohawk/video.cpp
@@ -316,7 +316,7 @@ void VideoManager::clearMLST() {
VideoHandle VideoManager::playMovieRiven(uint16 id) {
for (uint16 i = 0; i < _mlstRecords.size(); i++)
if (_mlstRecords[i].code == id) {
- debug(1, "Play tMOV %d (non-blocking) at (%d, %d) %s", _mlstRecords[i].movieID, _mlstRecords[i].left, _mlstRecords[i].top, _mlstRecords[i].loop != 0 ? "looping" : "non-looping");
+ debug(1, "Play tMOV %d (non-blocking) at (%d, %d) %s, Volume = %d", _mlstRecords[i].movieID, _mlstRecords[i].left, _mlstRecords[i].top, _mlstRecords[i].loop != 0 ? "looping" : "non-looping", _mlstRecords[i].volume);
return createVideoHandle(_mlstRecords[i].movieID, _mlstRecords[i].left, _mlstRecords[i].top, _mlstRecords[i].loop != 0, _mlstRecords[i].volume);
}
@@ -326,7 +326,7 @@ VideoHandle VideoManager::playMovieRiven(uint16 id) {
void VideoManager::playMovieBlockingRiven(uint16 id) {
for (uint16 i = 0; i < _mlstRecords.size(); i++)
if (_mlstRecords[i].code == id) {
- debug(1, "Play tMOV %d (blocking) at (%d, %d)", _mlstRecords[i].movieID, _mlstRecords[i].left, _mlstRecords[i].top);
+ debug(1, "Play tMOV %d (blocking) at (%d, %d), Volume = %d", _mlstRecords[i].movieID, _mlstRecords[i].left, _mlstRecords[i].top, _mlstRecords[i].volume);
VideoHandle videoHandle = createVideoHandle(_mlstRecords[i].movieID, _mlstRecords[i].left, _mlstRecords[i].top, false);
waitUntilMovieEnds(videoHandle);
return;
@@ -373,7 +373,7 @@ void VideoManager::disableAllMovies() {
_videoStreams[i].enabled = false;
}
-VideoHandle VideoManager::createVideoHandle(uint16 id, uint16 x, uint16 y, bool loop, byte volume) {
+VideoHandle VideoManager::createVideoHandle(uint16 id, uint16 x, uint16 y, bool loop, uint16 volume) {
// First, check to see if that video is already playing
for (uint32 i = 0; i < _videoStreams.size(); i++)
if (_videoStreams[i].id == id)
@@ -383,7 +383,7 @@ VideoHandle VideoManager::createVideoHandle(uint16 id, uint16 x, uint16 y, bool
Video::QuickTimeDecoder *decoder = new Video::QuickTimeDecoder();
decoder->setChunkBeginOffset(_vm->getResourceOffset(ID_TMOV, id));
decoder->loadStream(_vm->getResource(ID_TMOV, id));
- decoder->setVolume(volume);
+ decoder->setVolume((volume >= 256) ? 255 : volume);
VideoEntry entry;
entry.clear();
diff --git a/engines/mohawk/video.h b/engines/mohawk/video.h
index bd9a180849..43181e3e6c 100644
--- a/engines/mohawk/video.h
+++ b/engines/mohawk/video.h
@@ -122,7 +122,7 @@ private:
// Keep tabs on any videos playing
Common::Array<VideoEntry> _videoStreams;
- VideoHandle createVideoHandle(uint16 id, uint16 x, uint16 y, bool loop, byte volume = 0xff);
+ VideoHandle createVideoHandle(uint16 id, uint16 x, uint16 y, bool loop, uint16 volume = 0xff);
VideoHandle createVideoHandle(const Common::String &filename, uint16 x, uint16 y, bool loop, byte volume = 0xff);
};
diff --git a/engines/neverhood/graphics.cpp b/engines/neverhood/graphics.cpp
index 3d1724ed8a..939428ed19 100644
--- a/engines/neverhood/graphics.cpp
+++ b/engines/neverhood/graphics.cpp
@@ -47,6 +47,7 @@ BaseSurface::BaseSurface(NeverhoodEngine *vm, int priority, int16 width, int16 h
}
BaseSurface::~BaseSurface() {
+ _surface->free();
delete _surface;
}
diff --git a/engines/neverhood/modules/module1000.cpp b/engines/neverhood/modules/module1000.cpp
index a3b5bc67b5..5e4d67d2bc 100644
--- a/engines/neverhood/modules/module1000.cpp
+++ b/engines/neverhood/modules/module1000.cpp
@@ -228,7 +228,7 @@ uint32 Scene1001::handleMessage(int messageNum, const MessageParam &param, Entit
}
Scene1002::Scene1002(NeverhoodEngine *vm, Module *parentModule, int which)
- : Scene(vm, parentModule), _isKlaymenFloor(false), _isClimbingLadder(false) {
+ : Scene(vm, parentModule), _isKlaymenFloor(false), _isClimbingLadder(false), _asKlaymenPeekHand(nullptr) {
NRect tempClipRect;
Sprite *tempSprite;
@@ -693,22 +693,18 @@ uint32 Scene1005::getTextIndex1() {
uint32 Scene1005::getKloggsTextIndex() {
uint32 textIndex = getGlobalVar(V_TEXT_COUNTING_INDEX1);
if (textIndex + 1 > 10) {
- setGlobalVar(V_TEXT_COUNTING_INDEX1, 0);
textIndex = 0;
- } else {
- setGlobalVar(V_TEXT_COUNTING_INDEX1, textIndex + 1);
}
+ setGlobalVar(V_TEXT_COUNTING_INDEX1, textIndex + 1);
return textIndex + 40;
}
uint32 Scene1005::getTextIndex3() {
uint32 textIndex = getGlobalVar(V_TEXT_COUNTING_INDEX2);
- if (textIndex + 1 >= 10) {
- setGlobalVar(V_TEXT_COUNTING_INDEX2, 0);
+ if (textIndex + 1 > 10) {
textIndex = 0;
- } else {
- setGlobalVar(V_TEXT_COUNTING_INDEX2, textIndex + 1);
}
+ setGlobalVar(V_TEXT_COUNTING_INDEX2, textIndex + 1);
return textIndex + 30;
}
diff --git a/engines/neverhood/modules/module1300.cpp b/engines/neverhood/modules/module1300.cpp
index d806019e6c..60ff0411a6 100644
--- a/engines/neverhood/modules/module1300.cpp
+++ b/engines/neverhood/modules/module1300.cpp
@@ -603,7 +603,7 @@ uint32 Scene1305::handleMessage(int messageNum, const MessageParam &param, Entit
}
Scene1306::Scene1306(NeverhoodEngine *vm, Module *parentModule, int which)
- : Scene(vm, parentModule) {
+ : Scene(vm, parentModule), _asKey(nullptr) {
if (getGlobalVar(V_HAS_FINAL_KEY) && getGlobalVar(V_KEY3_LOCATION) == 0)
setGlobalVar(V_KEY3_LOCATION, 4);
@@ -683,7 +683,6 @@ Scene1306::Scene1306(NeverhoodEngine *vm, Module *parentModule, int which)
clearRectList();
sendMessage(_asElevator, NM_KLAYMEN_OPEN_DOOR, 0);
}
-
}
Scene1306::~Scene1306() {
@@ -942,6 +941,7 @@ Scene1308::Scene1308(NeverhoodEngine *vm, Module *parentModule, int which)
_sprite2 = insertStaticSprite(0x40043120, 995);
_sprite3 = insertStaticSprite(0x43003100, 995);
_sprite4 = NULL;
+ _sprite5 = nullptr;
if (which < 0) {
// Restoring game
diff --git a/engines/neverhood/modules/module2200.cpp b/engines/neverhood/modules/module2200.cpp
index f9033a9dbe..6618cb3ab0 100644
--- a/engines/neverhood/modules/module2200.cpp
+++ b/engines/neverhood/modules/module2200.cpp
@@ -885,7 +885,7 @@ void Scene2205::update() {
} else if (_isLightOn && !getGlobalVar(V_LIGHTS_ON)) {
_palette->addPalette(0xD00A028D, 0, 256, 0);
changeBackground(0xD00A028D);
- _ssLightSwitch->setFileHashes(0x2D339030, 0xDAC86E84);
+ _ssLightSwitch->setFileHashes(0xD6C86E84, 0xDAC86E84);
sendMessage(_ssDoorFrame, 0x2000, 0);
changeMouseCursor(0xA0289D08);
_isKlaymenInLight = true;
diff --git a/engines/neverhood/modules/module2300.cpp b/engines/neverhood/modules/module2300.cpp
index c0edc95873..68ae07f2bb 100644
--- a/engines/neverhood/modules/module2300.cpp
+++ b/engines/neverhood/modules/module2300.cpp
@@ -31,14 +31,14 @@ static const uint32 kModule2300SoundList[] = {
};
Module2300::Module2300(NeverhoodEngine *vm, Module *parentModule, int which)
- : Module(vm, parentModule), _soundVolume(0) {
+ : Module(vm, parentModule), _waterfallSoundVolume(0) {
_vm->_soundMan->addSoundList(0x1A214010, kModule2300SoundList);
_vm->_soundMan->setSoundListParams(kModule2300SoundList, true, 50, 600, 10, 150);
- _isWallBroken = getGlobalVar(V_WALL_BROKEN) != 0;
+ _isWaterfallRunning = getGlobalVar(V_WALL_BROKEN) != 1;
- if (_isWallBroken) {
+ if (_isWaterfallRunning) {
_vm->_soundMan->setSoundVolume(0x90F0D1C3, 0);
_vm->_soundMan->playSoundLooping(0x90F0D1C3);
} else {
@@ -78,8 +78,8 @@ void Module2300::createScene(int sceneNum, int which) {
case 1:
_vm->gameState().sceneNum = 1;
createNavigationScene(0x004B67E8, which);
- if (_isWallBroken) {
- _soundVolume = 15;
+ if (_isWaterfallRunning) {
+ _waterfallSoundVolume = 15;
_vm->_soundMan->setSoundVolume(0x90F0D1C3, 15);
}
break;
@@ -92,10 +92,10 @@ void Module2300::createScene(int sceneNum, int which) {
if (getGlobalVar(V_WALL_BROKEN))
createNavigationScene(0x004B68F0, which);
else {
- _vm->_soundMan->setSoundVolume(0x90F0D1C3, _soundVolume);
+ _vm->_soundMan->setSoundVolume(0x90F0D1C3, _waterfallSoundVolume);
createNavigationScene(0x004B68A8, which);
- if (_isWallBroken) {
- _soundVolume = 87;
+ if (_isWaterfallRunning) {
+ _waterfallSoundVolume = 87;
_vm->_soundMan->setSoundVolume(0x90F0D1C3, 87);
}
}
@@ -161,10 +161,10 @@ void Module2300::updateScene() {
} else {
switch (_sceneNum) {
case 1:
- if (_isWallBroken && navigationScene()->isWalkingForward() && navigationScene()->getNavigationIndex() == 4 &&
+ if (_isWaterfallRunning && navigationScene()->isWalkingForward() && navigationScene()->getNavigationIndex() == 4 &&
navigationScene()->getFrameNumber() % 2) {
- _soundVolume++;
- _vm->_soundMan->setSoundVolume(0x90F0D1C3, _soundVolume);
+ _waterfallSoundVolume++;
+ _vm->_soundMan->setSoundVolume(0x90F0D1C3, _waterfallSoundVolume);
}
if (navigationScene()->isWalkingForward() && navigationScene()->getNavigationIndex() == 0 &&
navigationScene()->getFrameNumber() == 50) {
@@ -174,9 +174,9 @@ void Module2300::updateScene() {
}
break;
case 3:
- if (_isWallBroken && navigationScene()->isWalkingForward() && navigationScene()->getFrameNumber() % 2) {
- _soundVolume--;
- _vm->_soundMan->setSoundVolume(0x90F0D1C3, _soundVolume);
+ if (_isWaterfallRunning && navigationScene()->isWalkingForward() && navigationScene()->getFrameNumber() % 2) {
+ _waterfallSoundVolume--;
+ _vm->_soundMan->setSoundVolume(0x90F0D1C3, _waterfallSoundVolume);
}
break;
}
diff --git a/engines/neverhood/modules/module2300.h b/engines/neverhood/modules/module2300.h
index 57235986d9..58bffb710c 100644
--- a/engines/neverhood/modules/module2300.h
+++ b/engines/neverhood/modules/module2300.h
@@ -37,8 +37,8 @@ public:
virtual ~Module2300();
protected:
int _sceneNum;
- bool _isWallBroken;
- int _soundVolume;
+ int _waterfallSoundVolume;
+ bool _isWaterfallRunning;
void createScene(int sceneNum, int which);
void updateScene();
};
diff --git a/engines/neverhood/modules/module2700.cpp b/engines/neverhood/modules/module2700.cpp
index 9399981cfd..2a112435fc 100644
--- a/engines/neverhood/modules/module2700.cpp
+++ b/engines/neverhood/modules/module2700.cpp
@@ -84,7 +84,7 @@ static const uint32 kScene2725StaticSprites[] = {
};
Module2700::Module2700(NeverhoodEngine *vm, Module *parentModule, int which)
- : Module(vm, parentModule), _soundIndex(0), _radioMusicInitialized(false) {
+ : Module(vm, parentModule), _soundIndex(0), _radioMusicInitialized(false), _musicFileHash(0) {
_vm->_soundMan->addMusic(0x42212411, 0x04020210);
_vm->_soundMan->startMusic(0x04020210, 24, 2);
diff --git a/engines/neverhood/modules/module2900.cpp b/engines/neverhood/modules/module2900.cpp
index 3bf98eca35..69186514a2 100644
--- a/engines/neverhood/modules/module2900.cpp
+++ b/engines/neverhood/modules/module2900.cpp
@@ -34,11 +34,12 @@ namespace Neverhood {
Module2900::Module2900(NeverhoodEngine *vm, Module *parentModule, int which)
: Module(vm, parentModule) {
+ _teleporterModuleResult = -1;
+
if (which >= 0)
setGlobalVar(V_TELEPORTER_WHICH, which);
createScene(0, 0);
-
}
void Module2900::createScene(int sceneNum, int which) {
diff --git a/engines/neverhood/modules/module3000.cpp b/engines/neverhood/modules/module3000.cpp
index 59b2df260e..d4809611ad 100644
--- a/engines/neverhood/modules/module3000.cpp
+++ b/engines/neverhood/modules/module3000.cpp
@@ -39,7 +39,7 @@ static const uint32 kModule3000SoundList[] = {
};
Module3000::Module3000(NeverhoodEngine *vm, Module *parentModule, int which)
- : Module(vm, parentModule), _soundVolume(0) {
+ : Module(vm, parentModule), _waterfallSoundVolume(0) {
_vm->_soundMan->addSoundList(0x81293110, kModule3000SoundList);
_vm->_soundMan->setSoundListParams(kModule3000SoundList, true, 50, 600, 5, 150);
@@ -48,9 +48,9 @@ Module3000::Module3000(NeverhoodEngine *vm, Module *parentModule, int which)
_vm->_soundMan->playTwoSounds(0x81293110, 0x40030A51, 0xC862CA15, 0);
_vm->_soundMan->playTwoSounds(0x81293110, 0x41861371, 0x43A2507F, 0);
- _isWallBroken = getGlobalVar(V_WALL_BROKEN) != 0;
+ _isWaterfallRunning = getGlobalVar(V_WALL_BROKEN) != 1;
- if (!_isWallBroken) {
+ if (_isWaterfallRunning) {
_vm->_soundMan->setSoundVolume(0x90F0D1C3, 0);
_vm->_soundMan->playSoundLooping(0x90F0D1C3);
}
@@ -78,12 +78,11 @@ void Module3000::createScene(int sceneNum, int which) {
static const byte kNavigationTypes06[] = {5};
debug(1, "Module3000::createScene(%d, %d)", sceneNum, which);
_vm->gameState().sceneNum = sceneNum;
- _isWallBroken = getGlobalVar(V_WALL_BROKEN) != 0;
switch (_vm->gameState().sceneNum) {
case 1:
if (!getGlobalVar(V_BOLT_DOOR_OPEN)) {
createNavigationScene(0x004B7C80, which);
- } else if (_isWallBroken) {
+ } else if (getGlobalVar(V_WALL_BROKEN)) {
createNavigationScene(0x004B7CE0, which);
} else {
createNavigationScene(0x004B7CB0, which);
@@ -91,11 +90,11 @@ void Module3000::createScene(int sceneNum, int which) {
break;
case 2:
_vm->_soundMan->playTwoSounds(0x81293110, 0x40030A51, 0xC862CA15, 0);
- if (!_isWallBroken) {
- _soundVolume = 90;
+ if (_isWaterfallRunning) {
+ _waterfallSoundVolume = 90;
_vm->_soundMan->setSoundVolume(0x90F0D1C3, 90);
}
- if (_isWallBroken) {
+ if (getGlobalVar(V_WALL_BROKEN)) {
createNavigationScene(0x004B7D58, which);
} else {
createNavigationScene(0x004B7D10, which);
@@ -104,7 +103,7 @@ void Module3000::createScene(int sceneNum, int which) {
case 3:
if (getGlobalVar(V_STAIRS_DOWN))
createNavigationScene(0x004B7E60, which);
- else if (_isWallBroken)
+ else if (getGlobalVar(V_WALL_BROKEN))
createNavigationScene(0x004B7DA0, which);
else
createNavigationScene(0x004B7E00, which);
@@ -152,12 +151,12 @@ void Module3000::createScene(int sceneNum, int which) {
// NOTE: Newly introduced sceneNums
case 1001:
if (!getGlobalVar(V_BOLT_DOOR_OPEN))
- if (_isWallBroken)
+ if (getGlobalVar(V_WALL_BROKEN))
createSmackerScene(0x00940021, true, true, false);
else
createSmackerScene(0x01140021, true, true, false);
else
- if (_isWallBroken)
+ if (getGlobalVar(V_WALL_BROKEN))
createSmackerScene(0x001011B1, true, true, false);
else
createSmackerScene(0x001021B1, true, true, false);
@@ -195,8 +194,8 @@ void Module3000::updateScene() {
break;
case 2:
_vm->_soundMan->playTwoSounds(0x81293110, 0x41861371, 0x43A2507F, 0);
- if (_isWallBroken) {
- _soundVolume = 0;
+ if (_isWaterfallRunning) {
+ _waterfallSoundVolume = 0;
_vm->_soundMan->setSoundVolume(0x90F0D1C3, 0);
}
if (_moduleResult == 0) {
@@ -240,7 +239,7 @@ void Module3000::updateScene() {
createScene(8, -1);
break;
case 8:
- _isWallBroken = getGlobalVar(V_WALL_BROKEN) != 0;
+ _isWaterfallRunning = getGlobalVar(V_WALL_BROKEN) != 1;
if (_moduleResult != 1) {
_vm->_soundMan->setSoundListParams(kModule3000SoundList, true, 0, 0, 0, 0);
createScene(4, 1);
@@ -301,12 +300,12 @@ void Module3000::updateScene() {
} else if (frameNumber == 10) {
_vm->_soundMan->playTwoSounds(0x81293110, 0x40030A51, 0xC862CA15, 0);
}
- if (!_isWallBroken && _soundVolume < 90 && frameNumber % 2) {
+ if (_isWaterfallRunning && _waterfallSoundVolume < 90 && frameNumber % 2) {
if (frameNumber == 0)
- _soundVolume = 40;
+ _waterfallSoundVolume = 40;
else
- _soundVolume++;
- _vm->_soundMan->setSoundVolume(0x90F0D1C3, _soundVolume);
+ _waterfallSoundVolume++;
+ _vm->_soundMan->setSoundVolume(0x90F0D1C3, _waterfallSoundVolume);
}
}
}
@@ -315,9 +314,9 @@ void Module3000::updateScene() {
if (navigationScene()->isWalkingForward()) {
uint32 frameNumber = navigationScene()->getFrameNumber();
int navigationIndex = navigationScene()->getNavigationIndex();
- if (!_isWallBroken && _soundVolume > 1 && frameNumber % 2) {
- _soundVolume--;
- _vm->_soundMan->setSoundVolume(0x90F0D1C3, _soundVolume);
+ if (_isWaterfallRunning && _waterfallSoundVolume > 1 && frameNumber % 2) {
+ _waterfallSoundVolume--;
+ _vm->_soundMan->setSoundVolume(0x90F0D1C3, _waterfallSoundVolume);
}
if (navigationIndex == 0) {
if (frameNumber == 35) {
@@ -340,12 +339,12 @@ void Module3000::updateScene() {
if (frameNumber == 40) {
_vm->_soundMan->playTwoSounds(0x81293110, 0x40030A51, 0xC862CA15, 0);
}
- if (!_isWallBroken && _soundVolume < 90 && frameNumber % 2) {
+ if (_isWaterfallRunning && _waterfallSoundVolume < 90 && frameNumber % 2) {
if (frameNumber == 0)
- _soundVolume = 40;
+ _waterfallSoundVolume = 40;
else
- _soundVolume++;
- _vm->_soundMan->setSoundVolume(0x90F0D1C3, _soundVolume);
+ _waterfallSoundVolume++;
+ _vm->_soundMan->setSoundVolume(0x90F0D1C3, _waterfallSoundVolume);
}
}
}
diff --git a/engines/neverhood/modules/module3000.h b/engines/neverhood/modules/module3000.h
index e5c251f828..3d895b8d8a 100644
--- a/engines/neverhood/modules/module3000.h
+++ b/engines/neverhood/modules/module3000.h
@@ -34,8 +34,8 @@ public:
Module3000(NeverhoodEngine *vm, Module *parentModule, int which);
virtual ~Module3000();
protected:
- int _soundVolume;
- bool _isWallBroken;
+ int _waterfallSoundVolume;
+ bool _isWaterfallRunning;
void createScene(int sceneNum, int which);
void updateScene();
};
diff --git a/engines/neverhood/staticdata.cpp b/engines/neverhood/staticdata.cpp
index 552ea92604..03af44b2a5 100644
--- a/engines/neverhood/staticdata.cpp
+++ b/engines/neverhood/staticdata.cpp
@@ -28,6 +28,18 @@ StaticData::StaticData() {
}
StaticData::~StaticData() {
+ for (Common::HashMap<uint32, HitRectList*>::iterator i = _hitRectLists.begin(); i != _hitRectLists.end(); ++i)
+ delete i->_value;
+ for (Common::HashMap<uint32, RectList*>::iterator i = _rectLists.begin(); i != _rectLists.end(); ++i)
+ delete i->_value;
+ for (Common::HashMap<uint32, MessageList*>::iterator i = _messageLists.begin(); i != _messageLists.end(); ++i)
+ delete i->_value;
+ for (Common::HashMap<uint32, NavigationList*>::iterator i = _navigationLists.begin(); i != _navigationLists.end(); ++i)
+ delete i->_value;
+ for (Common::HashMap<uint32, HallOfRecordsInfo*>::iterator i = _hallOfRecordsInfoItems.begin(); i != _hallOfRecordsInfoItems.end(); ++i)
+ delete i->_value;
+ for (Common::HashMap<uint32, TrackInfo*>::iterator i = _trackInfoItems.begin(); i != _trackInfoItems.end(); ++i)
+ delete i->_value;
}
void StaticData::load(const char *filename) {
@@ -69,6 +81,11 @@ void StaticData::load(const char *filename) {
messageList->push_back(messageItem);
}
+ if(_messageLists.contains(id)) {
+ warning("Duplicate id %d in _messageLists - freeing older entry", id);
+ delete _messageLists[id];
+ }
+
_messageLists[id] = messageList;
}
@@ -98,6 +115,12 @@ void StaticData::load(const char *filename) {
}
rectList->push_back(rectItem);
}
+
+ if(_rectLists.contains(id)) {
+ warning("Duplicate id %d in _rectLists - freeing older entry", id);
+ delete _rectLists[id];
+ }
+
_rectLists[id] = rectList;
}
@@ -117,6 +140,12 @@ void StaticData::load(const char *filename) {
hitRect.type = fd.readUint16LE();
hitRectList->push_back(hitRect);
}
+
+ if(_hitRectLists.contains(id)) {
+ warning("Duplicate id %d in _hitRectLists - freeing older entry", id);
+ delete _hitRectLists[id];
+ }
+
_hitRectLists[id] = hitRectList;
}
@@ -138,6 +167,12 @@ void StaticData::load(const char *filename) {
navigationItem.mouseCursorFileHash = fd.readUint32LE();
navigationList->push_back(navigationItem);
}
+
+ if(_navigationLists.contains(id)) {
+ warning("Duplicate id %d in _navigationLists - freeing older entry", id);
+ delete _navigationLists[id];
+ }
+
_navigationLists[id] = navigationList;
}
@@ -153,6 +188,12 @@ void StaticData::load(const char *filename) {
hallOfRecordsInfo->bgFilename3 = fd.readUint32LE();
hallOfRecordsInfo->xPosIndex = fd.readByte();
hallOfRecordsInfo->count = fd.readByte();
+
+ if(_hallOfRecordsInfoItems.contains(id)) {
+ warning("Duplicate id %d in _hallOfRecordsInfoItems - freeing older entry", id);
+ delete _hallOfRecordsInfoItems[id];
+ }
+
_hallOfRecordsInfoItems[id] = hallOfRecordsInfo;
}
@@ -172,6 +213,12 @@ void StaticData::load(const char *filename) {
trackInfo->mouseCursorFilename = fd.readUint32LE();
trackInfo->which1 = fd.readUint16LE();
trackInfo->which2 = fd.readUint16LE();
+
+ if(_trackInfoItems.contains(id)) {
+ warning("Duplicate id %d in _trackInfoItems - freeing older entry", id);
+ delete _trackInfoItems[id];
+ }
+
_trackInfoItems[id] = trackInfo;
}
diff --git a/engines/parallaction/debug.h b/engines/parallaction/debug.h
index 887d08e945..551d746edf 100644
--- a/engines/parallaction/debug.h
+++ b/engines/parallaction/debug.h
@@ -22,7 +22,6 @@ private:
Parallaction *_vm;
MouseTriState _mouseState;
- bool Cmd_DebugLevel(int argc, const char **argv);
bool Cmd_Location(int argc, const char **argv);
bool Cmd_Give(int argc, const char **argv);
bool Cmd_Zones(int argc, const char **argv);
diff --git a/engines/parallaction/saveload.h b/engines/parallaction/saveload.h
index dbbbb42066..c9b724e69d 100644
--- a/engines/parallaction/saveload.h
+++ b/engines/parallaction/saveload.h
@@ -71,12 +71,12 @@ public:
};
class SaveLoad_br : public SaveLoad {
- Parallaction_br *_vm;
+// Parallaction_br *_vm;
virtual void doLoadGame(uint16 slot);
virtual void doSaveGame(uint16 slot, const char* name);
public:
- SaveLoad_br(Parallaction_br *vm, Common::SaveFileManager *saveFileMan) : SaveLoad(saveFileMan, "bra"), _vm(vm) { }
+ SaveLoad_br(Parallaction_br *vm, Common::SaveFileManager *saveFileMan) : SaveLoad(saveFileMan, "bra") { }
virtual void getGamePartProgress(bool *complete, int size);
virtual void setPartComplete(const char *part);
diff --git a/engines/pegasus/ai/ai_area.cpp b/engines/pegasus/ai/ai_area.cpp
index 5ac8af8812..9cab568d66 100644
--- a/engines/pegasus/ai/ai_area.cpp
+++ b/engines/pegasus/ai/ai_area.cpp
@@ -234,6 +234,7 @@ void AIArea::playAIAreaSequence(const LowerClientSignature, const LowerAreaSigna
vm->_cursor->hide();
while (_middleAreaMovie.isRunning()) {
+ InputDevice.pumpEvents();
vm->checkCallBacks();
vm->refreshDisplay();
g_system->delayMillis(10);
@@ -258,6 +259,7 @@ void AIArea::playAIAreaSequence(const LowerClientSignature, const LowerAreaSigna
vm->_cursor->hide();
while (_rightAreaMovie.isRunning()) {
+ InputDevice.pumpEvents();
vm->checkCallBacks();
vm->refreshDisplay();
g_system->delayMillis(10);
diff --git a/engines/pegasus/energymonitor.cpp b/engines/pegasus/energymonitor.cpp
index be9d205360..40e54afb89 100644
--- a/engines/pegasus/energymonitor.cpp
+++ b/engines/pegasus/energymonitor.cpp
@@ -269,6 +269,7 @@ void EnergyMonitor::calibrateEnergyBar() {
// Make sure warning light is hidden...
_energyLight.hide();
while (getCurrentEnergy() != (int32)kMaxJMPEnergy) {
+ InputDevice.pumpEvents();
vm->checkCallBacks();
vm->refreshDisplay();
g_system->delayMillis(10);
diff --git a/engines/pegasus/fader.cpp b/engines/pegasus/fader.cpp
index a2bbf22944..80ce8ef5dc 100644
--- a/engines/pegasus/fader.cpp
+++ b/engines/pegasus/fader.cpp
@@ -94,6 +94,7 @@ void Fader::startFaderSync(const FaderMoveSpec &spec) {
start();
while (isFading()) {
+ InputDevice.pumpEvents();
((PegasusEngine *)g_engine)->checkCallBacks();
useIdleTime();
}
diff --git a/engines/pegasus/input.cpp b/engines/pegasus/input.cpp
index b74e4a4c45..283d55421f 100644
--- a/engines/pegasus/input.cpp
+++ b/engines/pegasus/input.cpp
@@ -81,9 +81,7 @@ void InputDeviceManager::getInput(Input &input, const InputBits filter) {
// (ie. if one uses enter to access the restore menu, we never receive
// the key up event, which leads to bad things)
// This is to closely emulate what the GetKeys() function did on Mac OS
- Common::Event event;
- while (g_system->getEventManager()->pollEvent(event))
- ;
+ pumpEvents();
// Now create the bitfield
InputBits currentBits = 0;
@@ -206,6 +204,13 @@ bool InputDeviceManager::notifyEvent(const Common::Event &event) {
return false;
}
+void InputDeviceManager::pumpEvents() {
+ // Just poll for events. notifyEvent() will pick up on them.
+ Common::Event event;
+ while (g_system->getEventManager()->pollEvent(event))
+ ;
+}
+
int operator==(const Input &arg1, const Input &arg2) {
return arg1._inputState == arg2._inputState;
}
diff --git a/engines/pegasus/input.h b/engines/pegasus/input.h
index 3e938fa42a..ba6f11dba0 100644
--- a/engines/pegasus/input.h
+++ b/engines/pegasus/input.h
@@ -50,6 +50,8 @@ public:
void waitInput(const InputBits);
+ void pumpEvents();
+
protected:
friend class Common::Singleton<SingletonBaseType>;
diff --git a/engines/pegasus/interface.cpp b/engines/pegasus/interface.cpp
index f2429bf36a..f8ae6a0752 100644
--- a/engines/pegasus/interface.cpp
+++ b/engines/pegasus/interface.cpp
@@ -604,6 +604,7 @@ void Interface::raiseInventoryDrawerSync() {
raiseInventoryDrawer(false);
while (_inventoryLid.isRunning()) {
+ InputDevice.pumpEvents();
vm->checkCallBacks();
vm->refreshDisplay();
g_system->delayMillis(10);
@@ -613,6 +614,7 @@ void Interface::raiseInventoryDrawerSync() {
inventoryLidOpen(false);
while (_inventoryPush.isFading()) {
+ InputDevice.pumpEvents();
vm->checkCallBacks();
vm->refreshDisplay();
g_system->delayMillis(10);
@@ -628,6 +630,7 @@ void Interface::lowerInventoryDrawerSync() {
lowerInventoryDrawer(false);
while (_inventoryPush.isFading()) {
+ InputDevice.pumpEvents();
vm->checkCallBacks();
vm->refreshDisplay();
g_system->delayMillis(10);
@@ -637,6 +640,7 @@ void Interface::lowerInventoryDrawerSync() {
inventoryDrawerDown(false);
while (_inventoryLid.isRunning()) {
+ InputDevice.pumpEvents();
vm->checkCallBacks();
vm->refreshDisplay();
g_system->delayMillis(10);
@@ -652,6 +656,7 @@ void Interface::raiseBiochipDrawerSync() {
raiseBiochipDrawer(false);
while (_biochipLid.isRunning()) {
+ InputDevice.pumpEvents();
vm->checkCallBacks();
vm->refreshDisplay();
g_system->delayMillis(10);
@@ -661,6 +666,7 @@ void Interface::raiseBiochipDrawerSync() {
biochipLidOpen(false);
while (_biochipPush.isFading()) {
+ InputDevice.pumpEvents();
vm->checkCallBacks();
vm->refreshDisplay();
g_system->delayMillis(10);
@@ -676,6 +682,7 @@ void Interface::lowerBiochipDrawerSync() {
lowerBiochipDrawer(false);
while (_biochipPush.isFading()) {
+ InputDevice.pumpEvents();
vm->checkCallBacks();
vm->refreshDisplay();
g_system->delayMillis(10);
@@ -685,6 +692,7 @@ void Interface::lowerBiochipDrawerSync() {
biochipDrawerDown(false);
while (_biochipLid.isRunning()) {
+ InputDevice.pumpEvents();
vm->checkCallBacks();
vm->refreshDisplay();
g_system->delayMillis(10);
diff --git a/engines/pegasus/items/inventorypicture.cpp b/engines/pegasus/items/inventorypicture.cpp
index fc812faae2..bfdc382f5d 100644
--- a/engines/pegasus/items/inventorypicture.cpp
+++ b/engines/pegasus/items/inventorypicture.cpp
@@ -331,6 +331,7 @@ void InventoryItemsPicture::playEndMessage(DisplayElement *pushElement) {
endMessage.start();
while (endMessage.isRunning()) {
+ InputDevice.pumpEvents();
vm->checkCallBacks();
vm->refreshDisplay();
g_system->delayMillis(10);
diff --git a/engines/pegasus/items/item.cpp b/engines/pegasus/items/item.cpp
index 8089f2b93d..830d3f2f34 100644
--- a/engines/pegasus/items/item.cpp
+++ b/engines/pegasus/items/item.cpp
@@ -39,9 +39,9 @@
namespace Pegasus {
Item::Item(const ItemID id, const NeighborhoodID neighborhood, const RoomID room, const DirectionConstant direction) : IDObject(id) {
- _itemNeighborhood = neighborhood;
- _itemRoom = room;
- _itemDirection = direction;
+ _originalNeighborhood = _itemNeighborhood = neighborhood;
+ _originalRoom = _itemRoom = room;
+ _originalDirection = _itemDirection = direction;
_itemWeight = 1;
_itemOwnerID = kNoActorID;
_itemState = 0;
@@ -131,6 +131,14 @@ Item::~Item() {
delete[] _itemExtras.entries;
}
+void Item::reset() {
+ _itemNeighborhood = _originalNeighborhood;
+ _itemRoom = _originalRoom;
+ _itemDirection = _originalDirection;
+ _itemOwnerID = kNoActorID;
+ _itemState = 0;
+}
+
void Item::writeToStream(Common::WriteStream *stream) {
stream->writeUint16BE(_itemNeighborhood);
stream->writeUint16BE(_itemRoom);
diff --git a/engines/pegasus/items/item.h b/engines/pegasus/items/item.h
index a1451b2a58..26cccf043c 100644
--- a/engines/pegasus/items/item.h
+++ b/engines/pegasus/items/item.h
@@ -339,6 +339,9 @@ public:
void findItemExtra(const uint32 extraID, ItemExtraEntry &entry);
+ // Reset to its original state at the beginning of the game
+ void reset();
+
protected:
NeighborhoodID _itemNeighborhood;
RoomID _itemRoom;
@@ -347,6 +350,10 @@ protected:
WeightType _itemWeight;
ItemState _itemState;
+ NeighborhoodID _originalNeighborhood;
+ RoomID _originalRoom;
+ DirectionConstant _originalDirection;
+
JMPItemInfo _itemInfo;
ItemStateInfo _sharedAreaInfo;
ItemExtraInfo _itemExtras;
diff --git a/engines/pegasus/items/itemlist.cpp b/engines/pegasus/items/itemlist.cpp
index ff8cae546b..4b58d9ad78 100644
--- a/engines/pegasus/items/itemlist.cpp
+++ b/engines/pegasus/items/itemlist.cpp
@@ -64,4 +64,9 @@ Item *ItemList::findItemByID(const ItemID id) {
return 0;
}
+void ItemList::resetAllItems() {
+ for (ItemIterator it = begin(); it != end(); it++)
+ (*it)->reset();
+}
+
} // End of namespace Pegasus
diff --git a/engines/pegasus/items/itemlist.h b/engines/pegasus/items/itemlist.h
index 9b59206ab3..22bef2c96e 100644
--- a/engines/pegasus/items/itemlist.h
+++ b/engines/pegasus/items/itemlist.h
@@ -48,6 +48,7 @@ public:
virtual void readFromStream(Common::ReadStream *stream);
Item *findItemByID(const ItemID id);
+ void resetAllItems();
};
typedef ItemList::iterator ItemIterator;
diff --git a/engines/pegasus/menu.cpp b/engines/pegasus/menu.cpp
index e55c006f86..4bbda8fd93 100644
--- a/engines/pegasus/menu.cpp
+++ b/engines/pegasus/menu.cpp
@@ -227,6 +227,7 @@ MainMenu::MainMenu() : GameMenu(kMainMenuID), _menuBackground(0), _overviewButto
_menuLoop.attachFader(&_menuFader);
_menuLoop.initFromAIFFFile("Sounds/Main Menu.aiff");
+ _menuFader.setMasterVolume(((PegasusEngine *)g_engine)->getAmbienceLevel());
updateDisplay();
}
@@ -736,6 +737,7 @@ DeathMenu::DeathMenu(const DeathReason deathReason) : GameMenu(kDeathMenuID), _d
_largeSelect.startDisplaying();
} else {
_triumphSound.initFromQuickTime("Sounds/Caldoria/Galactic Triumph");
+ _triumphSound.setVolume(((PegasusEngine *)g_engine)->getAmbienceLevel());
_triumphSound.playSound();
}
diff --git a/engines/pegasus/neighborhood/caldoria/caldoria.cpp b/engines/pegasus/neighborhood/caldoria/caldoria.cpp
index 0707a83e87..9d2d6723a9 100644
--- a/engines/pegasus/neighborhood/caldoria/caldoria.cpp
+++ b/engines/pegasus/neighborhood/caldoria/caldoria.cpp
@@ -196,6 +196,8 @@ void Caldoria::start() {
if (!pullbackMovie->loadFile("Images/Caldoria/Pullback.movie"))
error("Could not load pullback movie");
+ pullbackMovie->setVolume(MIN<uint>(_vm->getSoundFXLevel(), 0xFF));
+
// Draw the first frame so we can fade to it
const Graphics::Surface *frame = pullbackMovie->decodeNextFrame();
assert(frame);
@@ -907,7 +909,7 @@ void Caldoria::arriveAtCaldoria49() {
setCurrentAlternate(kAltCaldoriaNormal);
// Need to force the loop to play.
- if (GameState.getCurrentDirection() == kNorth) {
+ if (GameState.getCurrentDirection() == kNorth && !GameState.getCaldoriaSinclairShot()) {
GameState.setCaldoriaFuseTimeLimit(kSinclairShootsTimeLimit);
startExtraSequence(kCa49NorthVoiceAnalysis, kExtraCompletedFlag, kFilterNoInput);
}
@@ -1916,10 +1918,13 @@ uint Caldoria::getNumHints() {
numHints = 1;
}
break;
+#if 0
+ // The hint file is missing
case MakeRoomView(kCaldoria49, kEast):
case MakeRoomView(kCaldoria54, kEast):
numHints = 1;
break;
+#endif
case MakeRoomView(kCaldoria49, kNorth):
numHints = 1;
break;
@@ -1950,9 +1955,12 @@ Common::String Caldoria::getHintMovie(uint hintNum) {
}
return "Images/AI/Globals/XGLOB1A";
+#if 0
+ // The hint file is missing
case MakeRoomView(kCaldoria49, kEast):
case MakeRoomView(kCaldoria54, kEast):
return "Images/AI/Caldoria/X49E";
+#endif
case MakeRoomView(kCaldoria49, kNorth):
return "Images/AI/Caldoria/X49NB2";
}
diff --git a/engines/pegasus/neighborhood/caldoria/caldoriabomb.cpp b/engines/pegasus/neighborhood/caldoria/caldoriabomb.cpp
index abf34d3863..c964e3458b 100644
--- a/engines/pegasus/neighborhood/caldoria/caldoriabomb.cpp
+++ b/engines/pegasus/neighborhood/caldoria/caldoriabomb.cpp
@@ -1167,6 +1167,18 @@ CaldoriaBomb::~CaldoriaBomb() {
delete[] _bombLevel[i];
}
+void CaldoriaBomb::setSoundFXLevel(const uint16) {
+ // The transition sounds between levels are ambience, so overwrite what
+ // Neighborhood::setSoundFXLevel does and keep using the ambience volume level
+ if (_timer.isRunning())
+ _owner->_navMovie.setVolume(((PegasusEngine *)g_engine)->getAmbienceLevel());
+}
+
+void CaldoriaBomb::setAmbienceLevel(const uint16 level) {
+ if (_timer.isRunning())
+ _owner->_navMovie.setVolume(level);
+}
+
void CaldoriaBomb::openInteraction() {
_grid.moveElementTo(kCaldoriaBombGridLeft, kCaldoriaBombGridTop);
_grid.setDisplayOrder(kCaldoriaBombGridOrder);
@@ -1234,6 +1246,7 @@ void CaldoriaBomb::receiveNotification(Notification *notification, const Notific
_timer.start();
_currentLevel = 0;
_lastVertex = -1;
+ _owner->_navMovie.setVolume(((PegasusEngine *)g_engine)->getAmbienceLevel());
startBombAmbient("Sounds/Caldoria/BmbLoop1.22K.AIFF");
break;
case kCaldoria56BombStage2:
@@ -1258,6 +1271,7 @@ void CaldoriaBomb::receiveNotification(Notification *notification, const Notific
_grid.hide();
_timer.stop();
_timer.hide();
+ _owner->_navMovie.setVolume(((PegasusEngine *)g_engine)->getSoundFXLevel());
_owner->loadLoopSound1("");
_owner->playDeathExtra(kCaldoria56BombExplodes, kDeathNuclearExplosion);
}
@@ -1411,6 +1425,7 @@ void CaldoriaBomb::handleInput(const Input &input, const Hotspot *hotspot) {
_timer.stop();
_grid.hide();
_timer.hide();
+ _owner->_navMovie.setVolume(((PegasusEngine *)g_engine)->getSoundFXLevel());
_owner->startExtraSequence(kCaldoria56BombStage7, kExtraCompletedFlag, kFilterNoInput);
break;
}
diff --git a/engines/pegasus/neighborhood/caldoria/caldoriabomb.h b/engines/pegasus/neighborhood/caldoria/caldoriabomb.h
index 5bb39b4122..ba6d1e8998 100644
--- a/engines/pegasus/neighborhood/caldoria/caldoriabomb.h
+++ b/engines/pegasus/neighborhood/caldoria/caldoriabomb.h
@@ -122,6 +122,9 @@ public:
CaldoriaBomb(Neighborhood *, NotificationManager *);
virtual ~CaldoriaBomb();
+ void setSoundFXLevel(const uint16);
+ void setAmbienceLevel(const uint16);
+
long getNumHints();
Common::String getHintMovie(uint);
void doSolve();
diff --git a/engines/pegasus/neighborhood/caldoria/caldoriamessages.cpp b/engines/pegasus/neighborhood/caldoria/caldoriamessages.cpp
index a3ce97d438..2ae990d775 100644
--- a/engines/pegasus/neighborhood/caldoria/caldoriamessages.cpp
+++ b/engines/pegasus/neighborhood/caldoria/caldoriamessages.cpp
@@ -24,6 +24,7 @@
*/
#include "pegasus/gamestate.h"
+#include "pegasus/pegasus.h"
#include "pegasus/neighborhood/neighborhood.h"
#include "pegasus/neighborhood/caldoria/caldoria.h"
#include "pegasus/neighborhood/caldoria/caldoriamessages.h"
@@ -45,6 +46,10 @@ void CaldoriaMessages::openInteraction() {
_messageNumber = 1;
}
+void CaldoriaMessages::setSoundFXLevel(const uint16 fxLevel) {
+ _messageMovie.setVolume(fxLevel);
+}
+
void CaldoriaMessages::initInteraction() {
GameInteraction::_owner->startExtraSequence(kCaBedroomVidPhone, kExtraCompletedFlag, kFilterNoInput);
}
@@ -101,6 +106,7 @@ void CaldoriaMessages::play1Message(uint messageNumber) {
GameState.setCaldoriaSeenMessages(true);
}
+ _messageMovie.setVolume(((PegasusEngine *)g_engine)->getSoundFXLevel());
_messageMovie.moveElementTo(kCaldoriaMessageLeft, kCaldoriaMessageTop);
_messageMovie.setDisplayOrder(kCaldoriaMessagesOrder);
_messageMovie.startDisplaying();
diff --git a/engines/pegasus/neighborhood/caldoria/caldoriamessages.h b/engines/pegasus/neighborhood/caldoria/caldoriamessages.h
index 955fe10ce9..b2fc7c3bf9 100644
--- a/engines/pegasus/neighborhood/caldoria/caldoriamessages.h
+++ b/engines/pegasus/neighborhood/caldoria/caldoriamessages.h
@@ -41,6 +41,8 @@ public:
CaldoriaMessages(Neighborhood *, const NotificationID, NotificationManager *);
virtual ~CaldoriaMessages() {}
+ void setSoundFXLevel(const uint16);
+
protected:
void openInteraction();
void initInteraction();
diff --git a/engines/pegasus/neighborhood/mars/mars.cpp b/engines/pegasus/neighborhood/mars/mars.cpp
index 435bcd4c9e..df5a75541c 100644
--- a/engines/pegasus/neighborhood/mars/mars.cpp
+++ b/engines/pegasus/neighborhood/mars/mars.cpp
@@ -535,6 +535,10 @@ void Mars::doorOpened() {
}
void Mars::setUpReactorEnergyDrain() {
+ // If there's no energy monitor, there's nothing to do
+ if (!g_energyMonitor)
+ return;
+
switch (GameState.getCurrentRoomAndView()) {
case MakeRoomView(kMars51, kEast):
if (GameState.isCurrentDoorOpen()) {
@@ -2398,6 +2402,8 @@ void Mars::doCanyonChase() {
if (!video->loadFile("Images/Mars/M44ESA.movie"))
error("Could not load interface->shuttle transition video");
+ video->setVolume(MIN<uint>(_vm->getSoundFXLevel(), 0xFF));
+
video->start();
while (!_vm->shouldQuit() && !video->endOfVideo()) {
@@ -2476,6 +2482,7 @@ void Mars::doCanyonChase() {
_shuttleEnergyMeter.initShuttleEnergyMeter();
_shuttleEnergyMeter.powerUpMeter();
while (_shuttleEnergyMeter.isFading()) {
+ InputDevice.pumpEvents();
_vm->checkCallBacks();
_vm->refreshDisplay();
g_system->updateScreen();
@@ -2607,6 +2614,7 @@ void Mars::startUpFromFinishedSpaceChase() {
kShuttleJunkTop, false);
initOneMovie(&_explosions, "Images/Mars/Explosions.movie", kShuttleWeaponFrontOrder, 0, 0, false);
+ _explosions.setVolume(_vm->getSoundFXLevel());
_explosionCallBack.initCallBack(&_explosions, kCallBackAtExtremes);
_energyBeam.initShuttleWeapon();
@@ -2645,6 +2653,7 @@ void Mars::startUpFromFinishedSpaceChase() {
initOneMovie(&_canyonChaseMovie, "Images/Mars/M98EAS.movie", kShuttleTractorBeamMovieOrder,
kShuttleWindowLeft, kShuttleWindowTop, true);
+ _canyonChaseMovie.setVolume(_vm->getSoundFXLevel());
_canyonChaseMovie.setTime(_canyonChaseMovie.getDuration());
_canyonChaseMovie.redrawMovieWorld();
}
@@ -2720,6 +2729,7 @@ void Mars::startUpFromSpaceChase() {
kShuttleJunkTop, false);
initOneMovie(&_explosions, "Images/Mars/Explosions.movie", kShuttleWeaponFrontOrder, 0, 0, false);
+ _explosions.setVolume(_vm->getSoundFXLevel());
_explosionCallBack.initCallBack(&_explosions, kCallBackAtExtremes);
_energyBeam.initShuttleWeapon();
@@ -2783,6 +2793,10 @@ void Mars::startUpFromSpaceChase() {
void Mars::setSoundFXLevel(const uint16 level) {
Neighborhood::setSoundFXLevel(level);
+ if (GameState.getCurrentRoomAndView() == MakeRoomView(kMars48, kEast) &&
+ !GameState.getMarsAvoidedReactorRobot())
+ _loop2Fader.setMasterVolume(level);
+
if (_canyonChaseMovie.isMovieValid())
_canyonChaseMovie.setVolume(level);
@@ -2812,6 +2826,7 @@ void Mars::marsTimerExpired(MarsTimerEvent &event) {
GameState.setScoringEnteredLaunchTube();
while (_canyonChaseMovie.isRunning()) {
+ InputDevice.pumpEvents();
_vm->checkCallBacks();
_vm->refreshDisplay();
_vm->_system->delayMillis(10);
@@ -2836,6 +2851,7 @@ void Mars::marsTimerExpired(MarsTimerEvent &event) {
initOneMovie(&_junk, "Images/Mars/Junk.movie", kShuttleJunkOrder, kShuttleJunkLeft, kShuttleJunkTop, false);
initOneMovie(&_explosions, "Images/Mars/Explosions.movie", kShuttleWeaponFrontOrder, 0, 0, false);
+ _explosions.setVolume(_vm->getSoundFXLevel());
_explosionCallBack.initCallBack(&_explosions, kCallBackAtExtremes);
_energyBeam.initShuttleWeapon();
@@ -2945,6 +2961,7 @@ void Mars::marsTimerExpired(MarsTimerEvent &event) {
showBigExplosion(r, kShuttleAlienShipOrder);
while (_explosions.isRunning()) {
+ InputDevice.pumpEvents();
_vm->checkCallBacks();
_vm->refreshDisplay();
g_system->delayMillis(10);
@@ -3138,6 +3155,7 @@ void Mars::spaceChaseClick(const Input &input, const HotSpotID id) {
_shuttleEnergyMeter.drainForTractorBeam();
while (_shuttleEnergyMeter.isFading()) {
+ InputDevice.pumpEvents();
_vm->checkCallBacks();
_vm->refreshDisplay();
_vm->_system->delayMillis(10);
@@ -3167,11 +3185,13 @@ void Mars::spaceChaseClick(const Input &input, const HotSpotID id) {
// Shameless reuse of a variable :P
initOneMovie(&_canyonChaseMovie, "Images/Mars/M98EAS.movie", kShuttleTractorBeamMovieOrder,
kShuttleWindowLeft, kShuttleWindowTop, true);
+ _canyonChaseMovie.setVolume(_vm->getSoundFXLevel());
_canyonChaseMovie.redrawMovieWorld();
playMovieSegment(&_canyonChaseMovie, 0, _canyonChaseMovie.getDuration());
// wait here until any junk clears...
while (_junk.junkFlying()) {
+ InputDevice.pumpEvents();
_vm->checkCallBacks();
_vm->refreshDisplay();
_vm->_system->delayMillis(10);
diff --git a/engines/pegasus/neighborhood/neighborhood.cpp b/engines/pegasus/neighborhood/neighborhood.cpp
index 3116bd7978..c9be349694 100644
--- a/engines/pegasus/neighborhood/neighborhood.cpp
+++ b/engines/pegasus/neighborhood/neighborhood.cpp
@@ -470,6 +470,7 @@ void Neighborhood::requestSpotSound(const TimeValue in, const TimeValue out, con
void Neighborhood::playSpotSoundSync(const TimeValue in, const TimeValue out) {
// Let the action queue play out first...
while (!actionQueueEmpty()) {
+ InputDevice.pumpEvents();
_vm->checkCallBacks();
_vm->refreshDisplay();
_vm->checkNotifications();
@@ -480,6 +481,7 @@ void Neighborhood::playSpotSoundSync(const TimeValue in, const TimeValue out) {
_spotSounds.playSoundSegment(in, out);
while (_spotSounds.isPlaying()) {
+ InputDevice.pumpEvents();
_vm->checkCallBacks();
_vm->refreshDisplay();
_vm->_system->delayMillis(10);
@@ -1105,6 +1107,7 @@ void Neighborhood::startTurnPush(const TurnDirection turnDirection, const TimeVa
_turnPush.continueFader();
do {
+ InputDevice.pumpEvents();
_vm->checkCallBacks();
_vm->refreshDisplay();
_vm->_system->delayMillis(10);
@@ -1492,7 +1495,15 @@ void Neighborhood::loadLoopSound2(const Common::String &soundName, uint16 volume
if (!_loop2SoundString.empty()) {
_soundLoop2.initFromAIFFFile(_loop2SoundString);
_soundLoop2.loopSound();
- _loop2Fader.setMasterVolume(_vm->getAmbienceLevel());
+ // HACK: Some ambient loops are actually sound effects, like Ares waiting at
+ // the reactor and Poseidon at the launch console. Detect these and use the
+ // SFX volume instead of ambience.
+ if (soundName == "Sounds/Mars/Robot Loop.aiff" ||
+ soundName == "Sounds/Norad/Breathing Typing.22K.AIFF" ||
+ soundName == "Sounds/Norad/N54NAS.32K.AIFF")
+ _loop2Fader.setMasterVolume(_vm->getSoundFXLevel());
+ else
+ _loop2Fader.setMasterVolume(_vm->getAmbienceLevel());
_loop2Fader.setFaderValue(0);
faderMove.makeTwoKnotFaderSpec(fadeScale, 0, 0, fadeIn, volume);
_loop2Fader.startFaderSync(faderMove);
@@ -1577,6 +1588,7 @@ void Neighborhood::closeCroppedMovie() {
void Neighborhood::playCroppedMovieOnce(const Common::String &movieName, CoordType left, CoordType top, const InputBits interruptionFilter) {
openCroppedMovie(movieName, left, top);
+ _croppedMovie.setVolume(_vm->getSoundFXLevel());
_croppedMovie.redrawMovieWorld();
_croppedMovie.start();
@@ -1616,6 +1628,7 @@ void Neighborhood::playMovieSegment(Movie *movie, TimeValue startTime, TimeValue
movie->start();
while (movie->isRunning()) {
+ InputDevice.pumpEvents();
_vm->checkCallBacks();
_vm->refreshDisplay();
_vm->_system->delayMillis(10);
diff --git a/engines/pegasus/neighborhood/neighborhood.h b/engines/pegasus/neighborhood/neighborhood.h
index 3c1c5eac92..f7f2b038c6 100644
--- a/engines/pegasus/neighborhood/neighborhood.h
+++ b/engines/pegasus/neighborhood/neighborhood.h
@@ -91,6 +91,7 @@ struct QueueRequest {
bool operator==(const QueueRequest &arg1, const QueueRequest &arg2);
bool operator!=(const QueueRequest &arg1, const QueueRequest &arg2);
+class CaldoriaBomb;
class GameInteraction;
class Item;
class Neighborhood;
@@ -109,6 +110,7 @@ protected:
typedef Common::Queue<QueueRequest> NeighborhoodActionQueue;
class Neighborhood : public IDObject, public NotificationReceiver, public InputHandler, public Idler {
+friend class CaldoriaBomb;
friend class StriderCallBack;
public:
diff --git a/engines/pegasus/neighborhood/norad/delta/globegame.cpp b/engines/pegasus/neighborhood/norad/delta/globegame.cpp
index 0b95e9bc2b..5c321a8e8a 100644
--- a/engines/pegasus/neighborhood/norad/delta/globegame.cpp
+++ b/engines/pegasus/neighborhood/norad/delta/globegame.cpp
@@ -453,8 +453,13 @@ GlobeGame::GlobeGame(Neighborhood *handler) : GameInteraction(kNoradGlobeGameInt
_neighborhoodNotification = handler->getNeighborhoodNotification();
}
+void GlobeGame::setSoundFXLevel(const uint16 fxLevel) {
+ _monitorMovie.setVolume(fxLevel);
+}
+
void GlobeGame::openInteraction() {
_monitorMovie.initFromMovieFile("Images/Norad Delta/N79 Left Monitor");
+ _monitorMovie.setVolume(((PegasusEngine *)g_engine)->getSoundFXLevel());
_monitorMovie.moveElementTo(kGlobeMonitorLeft, kGlobeMonitorTop);
_monitorMovie.setDisplayOrder(kGlobeMonitorLayer);
_monitorMovie.startDisplaying();
diff --git a/engines/pegasus/neighborhood/norad/delta/globegame.h b/engines/pegasus/neighborhood/norad/delta/globegame.h
index 73ed48866f..93235a1784 100644
--- a/engines/pegasus/neighborhood/norad/delta/globegame.h
+++ b/engines/pegasus/neighborhood/norad/delta/globegame.h
@@ -98,6 +98,8 @@ public:
GlobeGame(Neighborhood *);
virtual ~GlobeGame() {}
+ void setSoundFXLevel(const uint16);
+
void handleInput(const Input &, const Hotspot *);
void clickInHotspot(const Input &, const Hotspot *);
void activateHotspots();
diff --git a/engines/pegasus/neighborhood/norad/delta/noraddelta.cpp b/engines/pegasus/neighborhood/norad/delta/noraddelta.cpp
index 1eea2f0156..ee047d72b2 100644
--- a/engines/pegasus/neighborhood/norad/delta/noraddelta.cpp
+++ b/engines/pegasus/neighborhood/norad/delta/noraddelta.cpp
@@ -514,6 +514,17 @@ void NoradDelta::openDoor() {
}
}
+void NoradDelta::cantMoveThatWay(CanOpenDoorReason reason) {
+ // WORKAROUND: The door outside the launch console room isn't treated as a door,
+ // so play the correct sound.
+ if (reason == kCantMoveBlocked && GameState.getCurrentRoomAndView() == MakeRoomView(kNorad67, kNorth)) {
+ cantOpenDoor(kCantOpenLocked);
+ return;
+ }
+
+ Neighborhood::cantMoveThatWay(reason);
+}
+
void NoradDelta::activateHotspots() {
Norad::activateHotspots();
@@ -863,6 +874,13 @@ void NoradDelta::doSolve() {
}
}
+void NoradDelta::setSoundFXLevel(const uint16 level) {
+ Neighborhood::setSoundFXLevel(level);
+
+ if (GameState.getCurrentRoomAndView() == MakeRoomView(kNorad54North, kNorth))
+ _loop2Fader.setMasterVolume(level);
+}
+
Common::String NoradDelta::getSoundSpotsName() {
return "Sounds/Norad/Norad Delta Spots";
}
diff --git a/engines/pegasus/neighborhood/norad/delta/noraddelta.h b/engines/pegasus/neighborhood/norad/delta/noraddelta.h
index 11065f2c9d..591fd691a2 100644
--- a/engines/pegasus/neighborhood/norad/delta/noraddelta.h
+++ b/engines/pegasus/neighborhood/norad/delta/noraddelta.h
@@ -68,6 +68,8 @@ public:
bool canSolve();
void doSolve();
+ void setSoundFXLevel(const uint16);
+
void doorOpened();
protected:
@@ -90,6 +92,7 @@ protected:
void arriveAtNorad79West();
TimeValue getViewTime(const RoomID, const DirectionConstant);
void openDoor();
+ void cantMoveThatWay(CanMoveForwardReason);
void activateHotspots();
void clickInHotspot(const Input &, const Hotspot *);
void receiveNotification(Notification *, const NotificationFlags);
diff --git a/engines/pegasus/neighborhood/tsa/fulltsa.cpp b/engines/pegasus/neighborhood/tsa/fulltsa.cpp
index 75f652ad56..92b79c038e 100644
--- a/engines/pegasus/neighborhood/tsa/fulltsa.cpp
+++ b/engines/pegasus/neighborhood/tsa/fulltsa.cpp
@@ -1692,7 +1692,9 @@ void FullTSA::initializeTBPMonitor(const int newMode, const ExtraID highlightExt
releaseSprites();
}
- _interruptionFilter = kFilterAllInput;
+ // Only allow input if we're not in the middle of series of queue requests.
+ if (actionQueueEmpty())
+ _interruptionFilter = kFilterAllInput;
}
void FullTSA::startUpComparisonMonitor() {
@@ -2643,6 +2645,7 @@ void FullTSA::receiveNotification(Notification *notification, const Notification
GameState.setMarsReadyForShuttleTransport(false);
GameState.setMarsFinishedCanyonChase(false);
GameState.setMarsThreadedMaze(false);
+ GameState.setMarsSawRobotLeave(false);
break;
case kPlayerOnWayToWSC:
_vm->jumpToNewEnvironment(kWSCID, kWSC01, kWest);
diff --git a/engines/pegasus/neighborhood/tsa/tinytsa.cpp b/engines/pegasus/neighborhood/tsa/tinytsa.cpp
index 0326c7f2ee..c808325b0f 100644
--- a/engines/pegasus/neighborhood/tsa/tinytsa.cpp
+++ b/engines/pegasus/neighborhood/tsa/tinytsa.cpp
@@ -327,6 +327,7 @@ void TinyTSA::receiveNotification(Notification *notification, const Notification
GameState.setMarsReadyForShuttleTransport(false);
GameState.setMarsFinishedCanyonChase(false);
GameState.setMarsThreadedMaze(false);
+ GameState.setMarsSawRobotLeave(false);
break;
case kPlayerOnWayToWSC:
_vm->jumpToNewEnvironment(kWSCID, kWSC01, kWest);
diff --git a/engines/pegasus/neighborhood/wsc/wsc.cpp b/engines/pegasus/neighborhood/wsc/wsc.cpp
index 09e2a48a52..f009b35cdc 100644
--- a/engines/pegasus/neighborhood/wsc/wsc.cpp
+++ b/engines/pegasus/neighborhood/wsc/wsc.cpp
@@ -2029,6 +2029,7 @@ void WSC::moleculeGameClick(const HotSpotID id) {
_moleculesMovie.start();
while (_moleculesMovie.isRunning()) {
+ InputDevice.pumpEvents();
_vm->checkCallBacks();
_vm->refreshDisplay();
_vm->_system->delayMillis(10);
@@ -2063,6 +2064,7 @@ void WSC::moleculeGameClick(const HotSpotID id) {
_moleculesMovie.start();
while (_moleculesMovie.isRunning()) {
+ InputDevice.pumpEvents();
_vm->checkCallBacks();
_vm->refreshDisplay();
_vm->_system->delayMillis(10);
@@ -2076,6 +2078,7 @@ void WSC::moleculeGameClick(const HotSpotID id) {
while (_moleculesMovie.isRunning()) {
+ InputDevice.pumpEvents();
_vm->checkCallBacks();
_vm->refreshDisplay();
_vm->_system->delayMillis(10);
diff --git a/engines/pegasus/pegasus.cpp b/engines/pegasus/pegasus.cpp
index c5edd34a01..0010180d8d 100644
--- a/engines/pegasus/pegasus.cpp
+++ b/engines/pegasus/pegasus.cpp
@@ -36,6 +36,7 @@
#include "backends/keymapper/keymapper.h"
#include "base/plugins.h"
#include "base/version.h"
+#include "gui/message.h"
#include "gui/saveload.h"
#include "video/theora_decoder.h"
#include "video/qt_decoder.h"
@@ -306,6 +307,7 @@ void PegasusEngine::runIntro() {
Video::VideoDecoder *video = new Video::QuickTimeDecoder();
if (video->loadFile(_introDirectory + "/BandaiLogo.movie")) {
+ video->setVolume(MIN<uint>(getAmbienceLevel(), 0xFF));
video->start();
while (!shouldQuit() && !video->endOfVideo() && !skipped) {
@@ -337,6 +339,8 @@ void PegasusEngine::runIntro() {
if (!video->loadFile(_introDirectory + "/Big Movie.movie"))
error("Could not load intro movie");
+ video->setVolume(MIN<uint>(getAmbienceLevel(), 0xFF));
+
video->seek(Audio::Timestamp(0, 10 * 600, 600));
video->start();
@@ -379,20 +383,21 @@ Common::Error PegasusEngine::showSaveDialog() {
int slot = slc.runModalWithPluginAndTarget(plugin, ConfMan.getActiveDomainName());
- Common::Error result;
+ if (slot >= 0)
+ return saveGameState(slot, slc.getResultString());
- if (slot >= 0) {
- if (saveGameState(slot, slc.getResultString()).getCode() == Common::kNoError)
- result = Common::kNoError;
- else
- result = Common::kUnknownError;
- } else {
- result = Common::kUserCanceled;
- }
+ return Common::kUserCanceled;
+}
- return result;
+void PegasusEngine::showSaveFailedDialog(const Common::Error &status) {
+ Common::String failMessage = Common::String::format(_("Gamestate save failed (%s)! "
+ "Please consult the README for basic information, and for "
+ "instructions on how to obtain further assistance."), status.getDesc().c_str());
+ GUI::MessageDialog dialog(failMessage);
+ dialog.runModal();
}
+
GUI::Debugger *PegasusEngine::getDebugger() {
return _console;
}
@@ -792,6 +797,8 @@ void PegasusEngine::introTimerExpired() {
if (!video->loadFile(_introDirectory + "/LilMovie.movie"))
error("Failed to load little movie");
+ video->setVolume(MIN<uint>(getAmbienceLevel(), 0xFF));
+
bool saveAllowed = swapSaveAllowed(false);
bool openAllowed = swapLoadAllowed(false);
@@ -834,6 +841,7 @@ void PegasusEngine::delayShell(TimeValue time, TimeScale scale) {
uint32 timeInMillis = time * 1000 / scale;
while (g_system->getMillis() < startTime + timeInMillis) {
+ InputDevice.pumpEvents();
checkCallBacks();
_gfx->updateDisplay();
}
@@ -938,6 +946,8 @@ void PegasusEngine::doGameMenuCommand(const GameMenuCommand command) {
if (!video->loadFile(_introDirectory + "/Closing.movie"))
error("Could not load closing movie");
+ video->setVolume(MIN<uint>(getSoundFXLevel(), 0xFF));
+
uint16 x = (640 - video->getWidth() * 2) / 2;
uint16 y = (480 - video->getHeight() * 2) / 2;
@@ -969,8 +979,14 @@ void PegasusEngine::doGameMenuCommand(const GameMenuCommand command) {
resetIntroTimer();
break;
case kMenuCmdPauseSave:
- if (showSaveDialog().getCode() != Common::kUserCanceled)
+ result = showSaveDialog();
+
+ if (result.getCode() != Common::kUserCanceled) {
+ if (result.getCode() != Common::kNoError)
+ showSaveFailedDialog(result);
+
pauseMenu(false);
+ }
break;
case kMenuCmdPauseContinue:
pauseMenu(false);
@@ -1021,7 +1037,12 @@ void PegasusEngine::handleInput(const Input &input, const Hotspot *cursorSpot) {
// Can only save during a game and not in the demo
if (g_neighborhood && !isDemo()) {
pauseEngine(true);
- showSaveDialog();
+
+ Common::Error result = showSaveDialog();
+
+ if (result.getCode() != Common::kNoError && result.getCode() != Common::kUserCanceled)
+ showSaveFailedDialog(result);
+
pauseEngine(false);
}
}
@@ -1669,6 +1690,9 @@ void PegasusEngine::startNewGame() {
removeAllItemsFromInventory();
removeAllItemsFromBiochips();
+ // Properly reset all items to their original state
+ g_allItems.resetAllItems();
+
BiochipItem *biochip = (BiochipItem *)_allItems.findItemByID(kAIBiochip);
addItemToBiochips(biochip);
@@ -2159,6 +2183,7 @@ void PegasusEngine::autoDragItemIntoRoom(Item *item, Sprite *draggingSprite) {
_autoDragger.autoDrag(draggingSprite, start, stop, time, kDefaultTimeScale);
while (_autoDragger.isDragging()) {
+ InputDevice.pumpEvents();
checkCallBacks();
refreshDisplay();
_system->delayMillis(10);
@@ -2192,6 +2217,7 @@ void PegasusEngine::autoDragItemIntoInventory(Item *, Sprite *draggingSprite) {
_autoDragger.autoDrag(draggingSprite, start, stop, time, kDefaultTimeScale);
while (_autoDragger.isDragging()) {
+ InputDevice.pumpEvents();
checkCallBacks();
refreshDisplay();
_system->delayMillis(10);
@@ -2268,10 +2294,7 @@ void PegasusEngine::doSubChase() {
drawScaledFrame(frame, 0, 0);
}
- Common::Event event;
- while (_eventMan->pollEvent(event))
- ;
-
+ InputDevice.pumpEvents();
_system->delayMillis(10);
}
diff --git a/engines/pegasus/pegasus.h b/engines/pegasus/pegasus.h
index fb66eb7586..d88545a4d1 100644
--- a/engines/pegasus/pegasus.h
+++ b/engines/pegasus/pegasus.h
@@ -257,6 +257,7 @@ private:
bool _saveAllowed, _loadAllowed; // It's so nice that this was in the original code already :P
Common::Error showLoadDialog();
Common::Error showSaveDialog();
+ void showSaveFailedDialog(const Common::Error &status);
bool _saveRequested, _loadRequested;
// Misc.
diff --git a/engines/queen/debug.cpp b/engines/queen/debug.cpp
index 96fa81488f..3706806ac2 100644
--- a/engines/queen/debug.cpp
+++ b/engines/queen/debug.cpp
@@ -21,6 +21,7 @@
*/
#include "common/scummsys.h"
+#include "common/util.h"
#include "queen/debug.h"
@@ -57,8 +58,17 @@ void Debugger::postEnter() {
_vm->graphics()->setupMouseCursor();
}
+static bool isNumeric(const char *arg) {
+ const char *str = arg;
+ bool retVal = true;
+ while (retVal && (*str != '\0')) {
+ retVal = Common::isDigit(*str++);
+ }
+ return retVal;
+}
+
bool Debugger::Cmd_Asm(int argc, const char **argv) {
- if (argc == 2) {
+ if (argc == 2 && isNumeric(argv[1])) {
uint16 sm = atoi(argv[1]);
_vm->logic()->executeSpecialMove(sm);
return false;
@@ -75,12 +85,17 @@ bool Debugger::Cmd_Areas(int argc, const char **argv) {
}
bool Debugger::Cmd_Bob(int argc, const char **argv) {
- if (argc >= 3) {
+ if (argc >= 3 && isNumeric(argv[1])) {
int bobNum = atoi(argv[1]);
if (bobNum >= Graphics::MAX_BOBS_NUMBER) {
DebugPrintf("Bob %d is out of range (range: 0 - %d)\n", bobNum, Graphics::MAX_BOBS_NUMBER);
} else {
- int param = (argc > 3) ? atoi(argv[3]) : 0;
+ int param = 0;
+ if (argc > 3 && isNumeric(argv[3])) {
+ param = atoi(argv[3]);
+ } else {
+ DebugPrintf("Invalid parameter for bob command '%s'\n", argv[2]);
+ }
BobSlot *bob = _vm->graphics()->bob(bobNum);
if (!strcmp(argv[2], "toggle")) {
bob->active = !bob->active;
@@ -109,22 +124,21 @@ bool Debugger::Cmd_Bob(int argc, const char **argv) {
bool Debugger::Cmd_GameState(int argc, const char **argv) {
uint16 slot;
- switch (argc) {
- case 2:
- slot = atoi(argv[1]);
- DebugPrintf("GAMESTATE[%d] ", slot);
- DebugPrintf("is %d\n", _vm->logic()->gameState(slot));
- break;
- case 3:
+ if ((argc == 2 || argc == 3) && isNumeric(argv[1])) {
slot = atoi(argv[1]);
DebugPrintf("GAMESTATE[%d] ", slot);
- DebugPrintf("was %d ", _vm->logic()->gameState(slot));
- _vm->logic()->gameState(slot, atoi(argv[2]));
- DebugPrintf("now %d\n", _vm->logic()->gameState(slot));
- break;
- default:
- DebugPrintf("Usage: %s slotnum value\n", argv[0]);
- break;
+ DebugPrintf("%s %d\n", (argc == 2) ? "is" : "was", _vm->logic()->gameState(slot));
+
+ if (argc == 3) {
+ if (isNumeric(argv[1])) {
+ _vm->logic()->gameState(slot, atoi(argv[2]));
+ DebugPrintf("now %d\n", _vm->logic()->gameState(slot));
+ } else {
+ DebugPrintf("Usage: %s slotnum <value>\n", argv[0]);
+ }
+ }
+ } else {
+ DebugPrintf("Usage: %s slotnum <value>\n", argv[0]);
}
return true;
}
@@ -164,7 +178,7 @@ bool Debugger::Cmd_PrintBobs(int argc, const char**argv) {
}
bool Debugger::Cmd_Room(int argc, const char **argv) {
- if (argc == 2) {
+ if (argc == 2 && isNumeric(argv[1])) {
uint16 roomNum = atoi(argv[1]);
_vm->logic()->joePos(0, 0);
_vm->logic()->newRoom(roomNum);
@@ -180,7 +194,7 @@ bool Debugger::Cmd_Room(int argc, const char **argv) {
}
bool Debugger::Cmd_Song(int argc, const char **argv) {
- if (argc == 2) {
+ if (argc == 2 && isNumeric(argv[1])) {
int16 songNum = atoi(argv[1]);
_vm->sound()->playSong(songNum);
DebugPrintf("Playing song %d\n", songNum);
diff --git a/engines/sci/detection_tables.h b/engines/sci/detection_tables.h
index e97db04a8f..368b82cb93 100644
--- a/engines/sci/detection_tables.h
+++ b/engines/sci/detection_tables.h
@@ -4020,12 +4020,14 @@ static const struct ADGameDescription SciGameDescriptions[] = {
#endif // ENABLE_SCI32
// SCI Fanmade Games
+ FANMADE("120 Degrees Below Zero", "57f6135bd073802215c9b97f32d6aea3", 504, "03adf530a34557dfc20f848c9572f4d0", 320749),
FANMADE("Al Pond: Island Quest 2", "4cba6a5a4c8f66f21935ed78b0511a92", 870, "876587dc9a5ec569287a3dc4b29139d8", 613769),
FANMADE("Al Pond 2: Island Quest", "9625372e710d1a95d2027b48f9e325af", 1506, "a0f9aa65b9bf3d8703adff5a621f243c", 889843),
FANMADE("Al Pond 2: Island Quest (Updated)", "64be277cdcc6aafce7d9f26e88ad31a8", 1500, "571547228a212d63315f0c114cf48d54", 885241),
FANMADE("Another DG Game: I Want My C64 Back", "4a8ca7ca2abd18899ef856f47665e2e9", 588, "12ff558d20c72e42cc6adb408f34d6d8", 150513),
FANMADE_L("Another DG Game: I Want My C64 Back", "13dc1d9ebc57daf8895412eee5e39fea", 576, "e2ad60b3a280171429db5c85f158f84a", 141697, Common::FR_FRA),
FANMADE("Aquarius: An Aquatic Experience", "2e23bc3b82f22a454be202ea593fb478", 480, "01555c8de683d25405bda270aa1ff014", 272372),
+ FANMADE("Betrayed Alliance", "b1f43f496a83cb8503f290a838b26242", 4062, "e637255aae6191ee92b9e843ad276288", 2367197),
FANMADE("Bluntman and Chronic (Politically Correct Version)", "c3ef9fa6c7c5fb840078bf28d87c7f8b", 1362, "441636a9f6f86710844868fded868ee7", 596688),
FANMADE("Cascade Quest", "c94efc10d18c040b6e22a1dc6d3adfe1", 3468, "8ada33dfa945f81531e5508240b573de", 1432195),
FANMADE("Circus Quest", "35871f6b4e1df56af4113c0203a0b223", 630, "7d6f97d7935d8733f488d4cb74315e5b", 279627),
@@ -4033,26 +4035,40 @@ static const struct ADGameDescription SciGameDescriptions[] = {
FANMADE("Curt's Quest 1.1", "54084c29346683296e45ef32d7ae74f3", 1128, "c851182cdf6fc6a81b840f4d4875f1a0", 302000),
FANMADE("Demo Quest", "c89a0c9e0a4e4af0ecedb300a3b31dbf", 384, "a32f3495ba24764cba091119cc3f1e13", 160098),
FANMADE("Dr. Jummybummy's Space Adventure 2", "6ae6cb7de423f51736d9487b4ca0c6da", 810, "26e5b563f578e104d79689f36568b7cf", 394670),
+ FANMADE("Edy Oliver into the Cave of Whistling Skulls Demo", "eba0a0e86768ee3f14e78fecbc5af011", 2388, "4f6eab79a0f7980960eed101ab8122ad", 2601551),
+ FANMADE("Footsteps Sound Demo", "d9dabee6e1550b1fdb793f442f227738", 372, "06561df40dea49c6e84184e0ba6f19cb", 114212),
FANMADE_L("Grostesteing: Plus Mechant que Jamais", "ec9a97ccb134f69249f6ea8b16c13d8e", 1500, "b869f5f11bfe2ab5f67f4f0c618f2ce1", 464657, Common::FR_FRA), // FIXME: Accent
FANMADE("Humanoid Demo", "97d8331293a6d57e8bad58c1efc89a63", 624, "fb354b9abe64011b12159e45d724633f", 452320),
+ FANMADE("Island of Secrets Demo 0.3", "61279176c3e4530fec9b578877aecda7", 504, "7f4ed7a81b86bea22c62bc98e6d9ec39", 197790),
FANMADE("Jim’s Quest 1: The Phantom Thesis", "0af50be1d3f0cb77a09137709a76ef4f", 960, "9c042c136548b20d9183495668e03526", 496446),
+ FANMADE("King's Quest II SCI Pre-Alpha Version", "cdea1c081022e7697a1afffb1d2f9f6a", 2646, "fb2ce39002c3e05f3d83533638dea105", 2310356),
FANMADE("Knight's Quest Demo 1.0", "5e816edf993956752ed06fccfeeae6d9", 1260, "959321f88a22905fa1f8c6d897874744", 703836),
FANMADE("LockerGnome Quest", "3eeff9130206cad0c4e1551e2b9dd2c5", 420, "ae05ca90806fd90cc43f147c82d3547c", 158906),
+ FANMADE("LockerGnome Quest Redux", "55b0081dbdd77a07807c76cec3606970", 492, "75c9c5e8a475a7b5f1a6cb18edad67f2", 168069),
FANMADE("New Year's Mystery", "e4dcab1b1d3cb4a2c070a07a9c9589e0", 708, "e00ca5e44fd4e98d8174b467b31b0f21", 295425),
FANMADE("New Year's Mystery (Updated)", "efd1beb5120293725065c95959144f81", 714, "b3bd3c2372ed6efa28adb12403c4c31a", 305027),
FANMADE("Ocean Battle", "c2304a0568e0eb84f8e9a0915f01170a", 408, "46c520c1ac9b63528854d0f58c7e1b74", 142234),
FANMADE("Osama", "db8f1710453cfbecf4214b2946970043", 390, "7afd75d4620dedf97a84ae8f0a7523cf", 123827),
FANMADE("Quest for the Cheat", "a359d4cf27f98264b42b55c017671214", 882, "8a943029f73c4bc85d454b7f473455ba", 455209),
+ FANMADE("Robust Parse Demo 1.2", "c956d40b6eb42292ec328c510acb11d8", 540, "26f092bab5ec4490737d8463fd3ebbd5", 229044),
FANMADE("SCI Capture the Flag", "4cd679a51d93b8b27c6b38d81be24b8b", 432, "98ae1f6ed7b4c21f88addbf643dd1d2f", 147878),
FANMADE("SCI Companion Template", "ad54d4f504086cd597aa2348d0aa3b09", 354, "6798b7b601ce8154c1d1bc0f0edcdd18", 113061),
+ FANMADE("SCI Logging Demo", "615c30c1445ea9349847e8868312a674", 558, "2df6858526177612ef9473e7af5b31c6", 171012),
+#if 0
+ // Disabled as this requires network access to the Google Translate API, which is not available as OSystem has no network API.
+ FANMADE("SCI Narration Demo", "731f4f2b726a13c153380af08da16591", 360, "38c80558fb942e8568f011d4a1a4af59", 109789),
+#endif
FANMADE("SCI Programming April 2010 Competition Template", "36e5c4011dd7c92e1ae4c6fede7d698d", 456, "20c87fbb7f73e2a3eb2c5dfab4d76b5a", 142221),
FANMADE("SCI Studio Template 3.0", "ca0dc8d586e0a8670b7621cde090b532", 354, "58a48ee692a86c0575e6bd0b00a92b9a", 113097),
FANMADE("SCI Quest", "9067e1f1e54436d2dbfce855524bc84a", 552, "ffa7d355cd9223f245289108a696bcd2", 149634),
FANMADE("SCI-Man", "3ab85bd39a86c11f85781764f9db09bb", 468, "bb8f9992f504a242bf0860e3588e150b", 131810),
- FANMADE("The Black Cauldron", "5e1ff2833c7f33ebcfa456ba836e2067", 2592, "2f8e6264d2db91bb54982ab8aa18b3b4", 1881839),
+ FANMADE("Text Views Demo", "ad0485a96470566517f184ff5dd049f8", 372, "727b946b37588ed334737732c55007c4", 115788),
+ FANMADE("The Black Cauldron Demo", "5e1ff2833c7f33ebcfa456ba836e2067", 2592, "2f8e6264d2db91bb54982ab8aa18b3b4", 1881839),
+ FANMADE("The Black Cauldron Final", "cbb4705f0cd73760996e5b27aae54f6a", 2484, "fc3bcaa7783b91bb78faefa345c6b3d9", 1677293),
FANMADE("The Farm Nightmare", "fb6cbfddaa7c055e2c3d8cf4c683a7db", 906, "50655e8b8925f717e698e08f006f40be", 338303),
FANMADE("The Gem Scenario", "ef5f61f4d2c6d31122d3e2baf89ad976", 642, "2f16be390dd90c3d7ca1c8a594ac0bfa", 244794),
FANMADE("The Legend of the Lost Jewel", "ba1bca315e3818c5626eda51bcfbcccf", 636, "9b0736d69924af0cff32a0f78db96855", 300398),
+ FANMADE("Winter Wonderland", "c1ffaf8327462effd4ad21eeed9eea59", 504, "5d48666dc62f90d852a1d0de6e69195f", 305076),
// FIXME: The vga demo does not have a resource.000/001 file.
//FANMADE_V("SCI VGA Demo", "00b1abd87bad356b90fcdfcb6132c26f", 8, "", 0, 0),
diff --git a/engines/sci/engine/kfile.cpp b/engines/sci/engine/kfile.cpp
index 29e29722d2..65acdbcdf5 100644
--- a/engines/sci/engine/kfile.cpp
+++ b/engines/sci/engine/kfile.cpp
@@ -37,6 +37,7 @@
#include "sci/engine/state.h"
#include "sci/engine/kernel.h"
#include "sci/engine/savegame.h"
+#include "sci/sound/audio.h"
#include "sci/console.h"
namespace Sci {
@@ -494,6 +495,21 @@ reg_t kFileIOWriteString(EngineState *s, int argc, reg_t *argv) {
Common::String str = s->_segMan->getString(argv[1]);
debugC(kDebugLevelFile, "kFileIO(writeString): %d", handle);
+ // Handle sciAudio calls in fanmade games here. sciAudio is an
+ // external .NET library for playing MP3 files in fanmade games.
+ // It runs in the background, and obtains sound commands from the
+ // currently running game via text files (called "conductor files").
+ // We skip creating these files, and instead handle the calls
+ // directly. Since the sciAudio calls are only creating text files,
+ // this is probably the most straightforward place to handle them.
+ if (handle == 0xFFFF && str.hasPrefix("(sciAudio")) {
+ Common::List<ExecStack>::const_iterator iter = s->_executionStack.reverse_begin();
+ iter--; // sciAudio
+ iter--; // sciAudio child
+ g_sci->_audio->handleFanmadeSciAudio(iter->sendp, s->_segMan);
+ return NULL_REG;
+ }
+
#ifdef ENABLE_SCI32
if (handle == VIRTUALFILE_HANDLE) {
s->_virtualIndexFile->write(str.c_str(), str.size());
diff --git a/engines/sci/engine/script_patches.cpp b/engines/sci/engine/script_patches.cpp
index a405ee5c7c..b4d245197b 100644
--- a/engines/sci/engine/script_patches.cpp
+++ b/engines/sci/engine/script_patches.cpp
@@ -2668,8 +2668,8 @@ void ScriptPatcher::initSignature(const SciScriptPatcherEntry *patchTable, bool
uint16 curWord;
uint16 curCommand;
uint32 curValue;
- byte byte1;
- byte byte2;
+ byte byte1 = 0;
+ byte byte2 = 0;
int patchEntryCount = 0;
// Count entries and allocate runtime data
diff --git a/engines/sci/sound/audio.cpp b/engines/sci/sound/audio.cpp
index 3147fbda09..8e35d6b055 100644
--- a/engines/sci/sound/audio.cpp
+++ b/engines/sci/sound/audio.cpp
@@ -61,6 +61,62 @@ void AudioPlayer::stopAllAudio() {
audioCdStop();
}
+/**
+ * Handles the sciAudio calls in fanmade games.
+ * sciAudio is an external .NET library for playing MP3 files in fanmade games.
+ * It runs in the background, and obtains sound commands from the
+ * currently running game via text files (called "conductor files").
+ * For further info, check: http://sciprogramming.com/community/index.php?topic=634.0
+ */
+void AudioPlayer::handleFanmadeSciAudio(reg_t sciAudioObject, SegManager *segMan) {
+ // TODO: This is a bare bones implementation. Only the play/playx and stop commands
+ // are handled for now - the other commands haven't been observed in any fanmade game
+ // yet. All the volume related and fading functionality is currently missing.
+
+ Kernel *kernel = g_sci->getKernel();
+
+ reg_t commandReg = readSelector(segMan, sciAudioObject, kernel->findSelector("command"));
+ Common::String command = segMan->getString(commandReg);
+
+ if (command == "play" || command == "playx") {
+#ifdef USE_MAD
+ reg_t fileNameReg = readSelector(segMan, sciAudioObject, kernel->findSelector("fileName"));
+ Common::String fileName = segMan->getString(fileNameReg);
+
+ int16 loopCount = (int16)readSelectorValue(segMan, sciAudioObject, kernel->findSelector("loopCount"));
+ // When loopCount is -1, we treat it as infinite looping, else no looping is done.
+ // This is observed by game scripts, which can set loopCount to all sorts of random values.
+ // Adjust loopCount for ScummVM's LoopingAudioStream semantics
+ loopCount = (loopCount == -1) ? 0 : 1;
+
+ // Determine sound type
+ Audio::Mixer::SoundType soundType = Audio::Mixer::kSFXSoundType;
+ if (fileName.hasPrefix("music"))
+ soundType = Audio::Mixer::kMusicSoundType;
+ else if (fileName.hasPrefix("speech"))
+ soundType = Audio::Mixer::kSpeechSoundType;
+
+ Common::File *sciAudio = new Common::File();
+ // Replace backwards slashes
+ for (uint i = 0; i < fileName.size(); i++) {
+ if (fileName[i] == '\\')
+ fileName.setChar('/', i);
+ }
+ sciAudio->open("sciAudio/" + fileName);
+
+ Audio::SeekableAudioStream *audioStream = Audio::makeMP3Stream(sciAudio, DisposeAfterUse::YES);
+
+ // We only support one audio handle
+ _mixer->playStream(soundType, &_audioHandle,
+ Audio::makeLoopingAudioStream((Audio::RewindableAudioStream *)audioStream, loopCount));
+#endif
+ } else if (command == "stop") {
+ _mixer->stopHandle(_audioHandle);
+ } else {
+ warning("Unhandled sciAudio command: %s", command.c_str());
+ }
+}
+
int AudioPlayer::startAudio(uint16 module, uint32 number) {
int sampleLen;
Audio::AudioStream *audioStream = getAudioStream(number, module, &sampleLen);
diff --git a/engines/sci/sound/audio.h b/engines/sci/sound/audio.h
index 545d35b2ee..9e65d6e0c8 100644
--- a/engines/sci/sound/audio.h
+++ b/engines/sci/sound/audio.h
@@ -75,6 +75,8 @@ public:
void pauseAudio();
void resumeAudio();
+ void handleFanmadeSciAudio(reg_t sciAudioObject, SegManager *segMan);
+
void setSoundSync(ResourceId id, reg_t syncObjAddr, SegManager *segMan);
void doSoundSync(reg_t syncObjAddr, SegManager *segMan);
void stopSoundSync();
diff --git a/engines/scumm/debugger.cpp b/engines/scumm/debugger.cpp
index a792d63149..3dd7b4caf5 100644
--- a/engines/scumm/debugger.cpp
+++ b/engines/scumm/debugger.cpp
@@ -89,7 +89,6 @@ ScummDebugger::ScummDebugger(ScummEngine *s)
DCmd_Register("loadgame", WRAP_METHOD(ScummDebugger, Cmd_LoadGame));
DCmd_Register("savegame", WRAP_METHOD(ScummDebugger, Cmd_SaveGame));
- DCmd_Register("level", WRAP_METHOD(ScummDebugger, Cmd_DebugLevel));
DCmd_Register("debug", WRAP_METHOD(ScummDebugger, Cmd_Debug));
DCmd_Register("show", WRAP_METHOD(ScummDebugger, Cmd_Show));
@@ -104,6 +103,18 @@ ScummDebugger::~ScummDebugger() {
// we need this destructor, even if it is empty, for __SYMBIAN32__
}
+void ScummDebugger::preEnter() {
+}
+
+void ScummDebugger::postEnter() {
+ // Runtime debug level change is dealt with by the base class "debuglevel" command
+ // but need to ensure that the _debugMode parameter is updated in sync.
+ _vm->_debugMode = (gDebugLevel >= 0);
+ // Boot params often need debugging switched on to work
+ if (_vm->_bootParam)
+ _vm->_debugMode = true;
+}
+
///////////////////////////////////////////////////
// Now the fun stuff:
@@ -523,27 +534,6 @@ bool ScummDebugger::Cmd_Debug(int argc, const char **argv) {
return true;
}
-bool ScummDebugger::Cmd_DebugLevel(int argc, const char **argv) {
- if (argc == 1) {
- if (_vm->_debugMode == false)
- DebugPrintf("Debugging is not enabled at this time\n");
- else
- DebugPrintf("Debugging is currently set at level %d\n", gDebugLevel);
- } else { // set level
- gDebugLevel = atoi(argv[1]);
- if (gDebugLevel >= 0) {
- _vm->_debugMode = true;
- DebugPrintf("Debug level set to level %d\n", gDebugLevel);
- } else if (gDebugLevel < 0) {
- _vm->_debugMode = false;
- DebugPrintf("Debugging is now disabled\n");
- } else
- DebugPrintf("Not a valid debug level\n");
- }
-
- return true;
-}
-
bool ScummDebugger::Cmd_Camera(int argc, const char **argv) {
DebugPrintf("Camera: cur (%d,%d) - dest (%d,%d) - accel (%d,%d) -- last (%d,%d)\n",
_vm->camera._cur.x, _vm->camera._cur.y, _vm->camera._dest.x, _vm->camera._dest.y,
diff --git a/engines/scumm/debugger.h b/engines/scumm/debugger.h
index 43bf9d6fd4..657f6be286 100644
--- a/engines/scumm/debugger.h
+++ b/engines/scumm/debugger.h
@@ -37,6 +37,9 @@ public:
private:
ScummEngine *_vm;
+ virtual void preEnter();
+ virtual void postEnter();
+
// Commands
bool Cmd_Room(int argc, const char **argv);
bool Cmd_LoadGame(int argc, const char **argv);
@@ -58,7 +61,6 @@ private:
bool Cmd_Passcode(int argc, const char **argv);
bool Cmd_Debug(int argc, const char **argv);
- bool Cmd_DebugLevel(int argc, const char **argv);
bool Cmd_Show(int argc, const char **argv);
bool Cmd_Hide(int argc, const char **argv);
diff --git a/engines/scumm/gfx.cpp b/engines/scumm/gfx.cpp
index bb1a7ffaf1..1d1b6b4f13 100644
--- a/engines/scumm/gfx.cpp
+++ b/engines/scumm/gfx.cpp
@@ -380,7 +380,7 @@ void ScummEngine::initVirtScreen(VirtScreenNumber slot, int top, int width, int
int size;
assert(height >= 0);
- assert(slot >= 0 && slot < 4);
+ assert((int)slot >= 0 && (int)slot < 4);
if (_game.version >= 7) {
if (slot == kMainVirtScreen && (_roomHeight != 0))
diff --git a/engines/scumm/gfxARM.s b/engines/scumm/gfxARM.s
index 9238888831..5cfe8ba0a4 100644
--- a/engines/scumm/gfxARM.s
+++ b/engines/scumm/gfxARM.s
@@ -41,6 +41,7 @@
@ In addition, we assume that text, src and dst are all word (4 byte)
@ aligned. This is the same assumption that the old 'inline' version
@ made.
+ .align 2
_asmDrawStripToScreen:
@ r0 = height
@ r1 = width
@@ -118,6 +119,7 @@ end:
@ In addition, we assume that src and dst are both word (4 byte)
@ aligned. This is the same assumption that the old 'inline' version
@ made.
+ .align 2
_asmCopy8Col:
@ r0 = dst
@ r1 = dstPitch
diff --git a/engines/scumm/proc3ARM.s b/engines/scumm/proc3ARM.s
index 75dd4b4a7f..70892faef2 100644
--- a/engines/scumm/proc3ARM.s
+++ b/engines/scumm/proc3ARM.s
@@ -28,14 +28,6 @@
.set space, 48
-.set _scaleIndexY, store_r14 + 28
-.set _numStrips, store_r14 + 24
-.set _palette, store_r14 + 20
-.set _shadow_table, store_r14 + 16
-.set _scaleIndexX, store_r14 + 12
-.set _scaleX, store_r14 + 8
-.set _height, store_r14 + 4
-
.set store_r14, space + 36
.set store_r11, space + 32
.set store_r10, space + 28
@@ -46,6 +38,14 @@
.set store_r5, space + 8
.set store_r4, space + 4
+.set _scaleIndexY, store_r14 + 28
+.set _numStrips, store_r14 + 24
+.set _palette, store_r14 + 20
+.set _shadow_table, store_r14 + 16
+.set _scaleIndexX, store_r14 + 12
+.set _scaleX, store_r14 + 8
+.set _height, store_r14 + 4
+
.set src, 48
.set height, 44
.set len, 40
@@ -71,6 +71,7 @@
@ <> = _palette
@ <> = _numstrips
@ <> = _scaleIndexY
+ .align 2
_ClassicProc3RendererShadowARM:
@ shadow20 = false
@ shadowed = true
diff --git a/engines/scumm/saveload.cpp b/engines/scumm/saveload.cpp
index 67bd6f617d..0aaff4c094 100644
--- a/engines/scumm/saveload.cpp
+++ b/engines/scumm/saveload.cpp
@@ -188,32 +188,31 @@ bool ScummEngine::saveState(Common::WriteStream *out, bool writeHeader) {
}
bool ScummEngine::saveState(int slot, bool compat, Common::String &filename) {
- bool saveFailed;
+ bool saveFailed = false;
pauseEngine(true);
Common::WriteStream *out = openSaveFileForWriting(slot, compat, filename);
- if (!out)
- return false;
-
- saveFailed = false;
- if (!saveState(out))
+ if (!out) {
saveFailed = true;
+ } else {
+ if (!saveState(out))
+ saveFailed = true;
- out->finalize();
- if (out->err())
- saveFailed = true;
- delete out;
+ out->finalize();
+ if (out->err())
+ saveFailed = true;
+ delete out;
+ }
- if (saveFailed) {
+ if (saveFailed)
debug(1, "State save as '%s' FAILED", filename.c_str());
- return false;
- }
- debug(1, "State saved as '%s'", filename.c_str());
+ else
+ debug(1, "State saved as '%s'", filename.c_str());
pauseEngine(false);
- return true;
+ return !saveFailed;
}
@@ -1243,7 +1242,9 @@ void ScummEngine::saveOrLoad(Serializer *s) {
}
s->saveUint16(0xFFFF); // End marker
} else {
- while ((type = (ResType)s->loadUint16()) != 0xFFFF) {
+ uint16 tmp;
+ while ((tmp = s->loadUint16()) != 0xFFFF) {
+ type = (ResType)tmp;
while ((idx = s->loadUint16()) != 0xFFFF) {
assert(idx < _res->_types[type].size());
loadResource(s, type, idx);
@@ -1431,7 +1432,9 @@ void ScummEngine::saveOrLoad(Serializer *s) {
}
s->saveByte(0xFF);
} else {
- while ((type = (ResType)s->loadByte()) != 0xFF) {
+ uint8 tmp;
+ while ((tmp = s->loadByte()) != 0xFF) {
+ type = (ResType)tmp;
idx = s->loadUint16();
_res->lock(type, idx);
}
diff --git a/engines/scumm/scumm.cpp b/engines/scumm/scumm.cpp
index 54f22ecad3..34c231e5d4 100644
--- a/engines/scumm/scumm.cpp
+++ b/engines/scumm/scumm.cpp
@@ -205,7 +205,7 @@ ScummEngine::ScummEngine(OSystem *syst, const DetectorResult &dr)
_lastInputScriptTime = 0;
_bootParam = 0;
_dumpScripts = false;
- _debugMode = 0;
+ _debugMode = false;
_objectOwnerTable = NULL;
_objectRoomTable = NULL;
_objectStateTable = NULL;
@@ -2281,7 +2281,7 @@ void ScummEngine::scummLoop_updateScummVars() {
VAR(VAR_MOUSE_Y) = _mouse.y;
if (VAR_DEBUGMODE != 0xFF) {
// This is NOT for the Mac version of Indy3/Loom
- VAR(VAR_DEBUGMODE) = _debugMode;
+ VAR(VAR_DEBUGMODE) = (_debugMode ? 1 : 0);
}
} else if (_game.version >= 1) {
// We use shifts below instead of dividing by V12_X_MULTIPLIER resp.
diff --git a/engines/scumm/scumm.h b/engines/scumm/scumm.h
index b4afa09bb2..be5a83d8c9 100644
--- a/engines/scumm/scumm.h
+++ b/engines/scumm/scumm.h
@@ -586,7 +586,7 @@ protected:
bool _dumpScripts;
bool _hexdumpScripts;
bool _showStack;
- uint16 _debugMode;
+ bool _debugMode;
// Save/Load class - some of this may be GUI
byte _saveLoadFlag, _saveLoadSlot;
diff --git a/engines/scumm/smush/codec47ARM.s b/engines/scumm/smush/codec47ARM.s
index a91f932558..53e9143f39 100644
--- a/engines/scumm/smush/codec47ARM.s
+++ b/engines/scumm/smush/codec47ARM.s
@@ -28,6 +28,7 @@
.global _ARM_Smush_decode2
+ .align 2
_ARM_Smush_decode2:
@ r0 = dst
@ r1 = src
diff --git a/engines/scumm/vars.cpp b/engines/scumm/vars.cpp
index 73028c8513..79d7ed03da 100644
--- a/engines/scumm/vars.cpp
+++ b/engines/scumm/vars.cpp
@@ -805,7 +805,7 @@ void ScummEngine::resetScummVars() {
}
if (VAR_DEBUGMODE != 0xFF) {
- VAR(VAR_DEBUGMODE) = _debugMode;
+ VAR(VAR_DEBUGMODE) = (_debugMode ? 1 : 0);
if (_game.heversion >= 80 && _debugMode)
VAR(85) = 1;
}
diff --git a/engines/sky/debug.cpp b/engines/sky/debug.cpp
index a417bc2ece..63da42eec2 100644
--- a/engines/sky/debug.cpp
+++ b/engines/sky/debug.cpp
@@ -1108,6 +1108,15 @@ void Debugger::postEnter() {
_mouse->resetCursor();
}
+static bool isNumeric(const char *arg) {
+ const char *str = arg;
+ bool retVal = true;
+ while (retVal && (*str != '\0')) {
+ retVal = Common::isDigit(*str++);
+ }
+ return retVal;
+}
+
bool Debugger::Cmd_ShowGrid(int argc, const char **argv) {
_showGrid = !_showGrid;
DebugPrintf("Show grid: %s\n", _showGrid ? "On" : "Off");
@@ -1299,22 +1308,20 @@ bool Debugger::Cmd_ScriptVar(int argc, const char **argv) {
}
bool Debugger::Cmd_Section(int argc, const char **argv) {
- if (argc < 2) {
- DebugPrintf("Example: %s 4\n", argv[0]);
- return true;
- }
-
- const int baseId[] = { START_ONE, START_S6, START_29, START_SC31, START_SC66, START_SC90, START_SC81 };
- int section = atoi(argv[1]);
+ if (argc == 2 && isNumeric(argv[1])) {
+ const int baseId[] = { START_ONE, START_S6, START_29, START_SC31, START_SC66, START_SC90, START_SC81 };
+ int section = atoi(argv[1]);
- if (section >= 0 && section <= 6) {
- _logic->fnEnterSection(section == 6 ? 4 : section, 0, 0);
- _logic->fnAssignBase(ID_FOSTER, baseId[section], 0);
- _skyCompact->fetchCpt(ID_FOSTER)->megaSet = 0;
+ if (section >= 0 && section <= 6) {
+ _logic->fnEnterSection(section == 6 ? 4 : section, 0, 0);
+ _logic->fnAssignBase(ID_FOSTER, baseId[section], 0);
+ _skyCompact->fetchCpt(ID_FOSTER)->megaSet = 0;
+ } else {
+ DebugPrintf("Section %d is out of range (range: %d - %d)\n", section, 0, 6);
+ }
} else {
- DebugPrintf("Unknown section '%s'\n", argv[1]);
+ DebugPrintf("Example: %s 4\n", argv[0]);
}
-
return true;
}
diff --git a/engines/sword25/util/lua/loslib.cpp b/engines/sword25/util/lua/loslib.cpp
index 25bfa2d1b5..055dfdf19e 100644
--- a/engines/sword25/util/lua/loslib.cpp
+++ b/engines/sword25/util/lua/loslib.cpp
@@ -113,6 +113,9 @@ static int getfield (lua_State *L, const char *key, int d) {
static int os_date (lua_State *L) {
+ #ifdef __PLAYSTATION2__ // missing: gmtime & strftime
+ lua_pushnil(L);
+ #else
const char *s = luaL_optstring(L, 1, "%c");
// FIXME: Rewrite the code below to use OSystem::getTimeAndDate
// Alternatively, remove it, if sword25 does not use it.
@@ -160,6 +163,7 @@ static int os_date (lua_State *L) {
}
luaL_pushresult(&b);
}
+ #endif
return 1;
}
@@ -167,6 +171,9 @@ static int os_date (lua_State *L) {
static int os_time (lua_State *L) {
// FIXME: Rewrite the code below to use OSystem::getTimeAndDate.
// Alternatively, remove it, if sword25 does not use it.
+ #ifdef __PLAYSTATION2__ // missing: mktime
+ lua_pushnil(L);
+ #else
time_t t;
if (lua_isnoneornil(L, 1)) /* called without args? */
t = time(NULL); /* get current time */
@@ -187,6 +194,7 @@ static int os_time (lua_State *L) {
lua_pushnil(L);
else
lua_pushnumber(L, (lua_Number)t);
+ #endif
return 1;
}
@@ -195,8 +203,10 @@ static int os_difftime (lua_State *L) {
// FIXME: difftime is not portable, unfortunately.
// So we either have to replace this code, or just remove it,
// depending on whether sword25 actually uses it.
+ #ifndef __PLAYSTATION2__ // missing: difftime
lua_pushnumber(L, difftime((time_t)(luaL_checknumber(L, 1)),
(time_t)(luaL_optnumber(L, 2, 0))));
+ #endif
return 1;
}
diff --git a/engines/toltecs/detection.cpp b/engines/toltecs/detection.cpp
index b1ceab9b12..b6c7ad3d2b 100644
--- a/engines/toltecs/detection.cpp
+++ b/engines/toltecs/detection.cpp
@@ -255,7 +255,7 @@ SaveStateList ToltecsMetaEngine::listSaves(const char *target) const {
Common::sort(filenames.begin(), filenames.end()); // Sort (hopefully ensuring we are sorted numerically..)
SaveStateList saveList;
- for (Common::StringArray::const_iterator file = filenames.begin(); file != filenames.end(); file++) {
+ for (Common::StringArray::const_iterator file = filenames.begin(); file != filenames.end(); ++file) {
// Obtain the last 3 digits of the filename, since they correspond to the save slot
int slotNum = atoi(file->c_str() + file->size() - 3);
diff --git a/engines/toltecs/menu.cpp b/engines/toltecs/menu.cpp
index 2850a399f4..a58771433e 100644
--- a/engines/toltecs/menu.cpp
+++ b/engines/toltecs/menu.cpp
@@ -195,7 +195,7 @@ void MenuSystem::handleKeyDown(const Common::KeyState& kbd) {
}
ItemID MenuSystem::findItemAt(int x, int y) {
- for (Common::Array<Item>::iterator iter = _items.begin(); iter != _items.end(); iter++) {
+ for (Common::Array<Item>::iterator iter = _items.begin(); iter != _items.end(); ++iter) {
if ((*iter).enabled && (*iter).rect.contains(x, y - _top))
return (*iter).id;
}
@@ -203,7 +203,7 @@ ItemID MenuSystem::findItemAt(int x, int y) {
}
MenuSystem::Item *MenuSystem::getItem(ItemID id) {
- for (Common::Array<Item>::iterator iter = _items.begin(); iter != _items.end(); iter++) {
+ for (Common::Array<Item>::iterator iter = _items.begin(); iter != _items.end(); ++iter) {
if ((*iter).id == id)
return &(*iter);
}
@@ -224,8 +224,6 @@ void MenuSystem::setItemCaption(Item *item, const char *caption) {
}
void MenuSystem::initMenu(MenuID menuID) {
- int newSlotNum;
-
_items.clear();
memcpy(_vm->_screen->_frontScreen, _background->getPixels(), 640 * 400);
@@ -276,7 +274,7 @@ void MenuSystem::initMenu(MenuID menuID) {
Common::String saveDesc = Common::String::format("SAVEGAME %d", i);
addClickTextItem((ItemID)(kItemIdSavegame1 + i - 1), 0, 116 + 20 * (i - 1), 300, 0, saveDesc.c_str(), 231, 234);
}
- newSlotNum = loadSavegamesList() + 1;
+ int newSlotNum = loadSavegamesList() + 1;
_savegames.push_back(SavegameItem(newSlotNum, Common::String::format("GAME %04d", _savegames.size())));
setSavegameCaptions(true);
} else {
@@ -323,7 +321,7 @@ void MenuSystem::initMenu(MenuID menuID) {
break;
}
- for (Common::Array<Item>::iterator iter = _items.begin(); iter != _items.end(); iter++) {
+ for (Common::Array<Item>::iterator iter = _items.begin(); iter != _items.end(); ++iter) {
if ((*iter).enabled)
drawItem((*iter).id, false);
}
@@ -508,7 +506,7 @@ int MenuSystem::loadSavegamesList() {
filenames = saveFileMan->listSavefiles(pattern.c_str());
Common::sort(filenames.begin(), filenames.end()); // Sort (hopefully ensuring we are sorted numerically..)
- for (Common::StringArray::const_iterator file = filenames.begin(); file != filenames.end(); file++) {
+ for (Common::StringArray::const_iterator file = filenames.begin(); file != filenames.end(); ++file) {
// Obtain the last 3 digits of the filename, since they correspond to the save slot
int slotNum = atoi(file->c_str() + file->size() - 3);
if (slotNum > maxSlotNum)
diff --git a/engines/toltecs/microtiles.cpp b/engines/toltecs/microtiles.cpp
index 63490ec221..0ac04905cb 100644
--- a/engines/toltecs/microtiles.cpp
+++ b/engines/toltecs/microtiles.cpp
@@ -118,10 +118,7 @@ Common::Rect * MicroTileArray::getRectangles(int *num_rects, int min_x, int min_
for (y = 0; y < _tilesH; ++y) {
for (x = 0; x < _tilesW; ++x) {
- int finish = 0;
- BoundingBox boundingBox;
-
- boundingBox = _tiles[i];
+ BoundingBox boundingBox = _tiles[i];
if (isBoundingBoxEmpty(boundingBox)) {
++i;
@@ -139,6 +136,7 @@ Common::Rect * MicroTileArray::getRectangles(int *num_rects, int min_x, int min_
// FIXME: Why is the following code in an #if block?
#if 1
if (TileX1(boundingBox) == TileSize - 1 && x != _tilesW - 1) { // check if the tile continues
+ bool finish = false;
while (!finish) {
++x;
++i;
@@ -150,13 +148,12 @@ Common::Rect * MicroTileArray::getRectangles(int *num_rects, int min_x, int min_
{
--x;
--i;
- finish = 1;
+ finish = true;
}
}
}
#endif
x1 = (x * TileSize) + TileX1(_tiles[i]);
-
x1 = CLIP (x1, min_x, max_x);
// FIXME: Why is the following code in an #if block?
diff --git a/engines/toltecs/palette.cpp b/engines/toltecs/palette.cpp
index 5a2c705c5c..ab66e60c9d 100644
--- a/engines/toltecs/palette.cpp
+++ b/engines/toltecs/palette.cpp
@@ -120,7 +120,7 @@ uint16 Palette::findFragment(int16 id) {
debug(0, "Palette::findFragment(%d)", id);
uint16 result = 0;
- for (PaletteFragmentArray::iterator iter = _fragments.begin(); iter != _fragments.end(); iter++) {
+ for (PaletteFragmentArray::iterator iter = _fragments.begin(); iter != _fragments.end(); ++iter) {
PaletteFragment fragment = *iter;
if (fragment.id == id) {
result = (fragment.count << 8) | fragment.index;
@@ -193,7 +193,7 @@ void Palette::saveState(Common::WriteStream *out) {
uint16 fragmentCount = _fragments.size();
out->writeUint16LE(fragmentCount);
- for (PaletteFragmentArray::iterator iter = _fragments.begin(); iter != _fragments.end(); iter++) {
+ for (PaletteFragmentArray::iterator iter = _fragments.begin(); iter != _fragments.end(); ++iter) {
PaletteFragment fragment = *iter;
out->writeUint16LE(fragment.id);
out->writeByte(fragment.index);
diff --git a/engines/toltecs/render.cpp b/engines/toltecs/render.cpp
index 3972462d25..bf68eee94c 100644
--- a/engines/toltecs/render.cpp
+++ b/engines/toltecs/render.cpp
@@ -64,7 +64,7 @@ void RenderQueue::addSprite(SpriteDrawItem &sprite) {
// Add sprite sorted by priority
RenderQueueArray::iterator iter = _currQueue->begin();
while (iter != _currQueue->end() && (*iter).priority <= item.priority) {
- iter++;
+ ++iter;
}
_currQueue->insert(iter, item);
@@ -103,7 +103,7 @@ void RenderQueue::addMask(SegmapMaskRect &mask) {
if (rectIntersectsItem(item.rect)) {
RenderQueueArray::iterator iter = _currQueue->begin();
while (iter != _currQueue->end() && (*iter).priority <= item.priority) {
- iter++;
+ ++iter;
}
_currQueue->insert(iter, item);
}
@@ -118,7 +118,7 @@ void RenderQueue::update() {
if (!doFullRefresh) {
- for (RenderQueueArray::iterator iter = _currQueue->begin(); iter != _currQueue->end(); iter++) {
+ for (RenderQueueArray::iterator iter = _currQueue->begin(); iter != _currQueue->end(); ++iter) {
RenderQueueItem *item = &(*iter);
RenderQueueItem *prevItem = findItemInQueue(_prevQueue, *item);
if (prevItem) {
@@ -133,7 +133,7 @@ void RenderQueue::update() {
}
}
- for (RenderQueueArray::iterator iter = _prevQueue->begin(); iter != _prevQueue->end(); iter++) {
+ for (RenderQueueArray::iterator iter = _prevQueue->begin(); iter != _prevQueue->end(); ++iter) {
RenderQueueItem *prevItem = &(*iter);
RenderQueueItem *item = findItemInQueue(_currQueue, *prevItem);
if (!item) {
@@ -144,7 +144,7 @@ void RenderQueue::update() {
restoreDirtyBackground();
- for (RenderQueueArray::iterator iter = _currQueue->begin(); iter != _currQueue->end(); iter++) {
+ for (RenderQueueArray::iterator iter = _currQueue->begin(); iter != _currQueue->end(); ++iter) {
RenderQueueItem *item = &(*iter);
if (item->flags != kUnchanged)
invalidateItemsByRect(item->rect, item);
@@ -163,7 +163,7 @@ void RenderQueue::update() {
_vm->_screen->_fullRefresh = false;
}
- for (RenderQueueArray::iterator iter = _currQueue->begin(); iter != _currQueue->end(); iter++) {
+ for (RenderQueueArray::iterator iter = _currQueue->begin(); iter != _currQueue->end(); ++iter) {
const RenderQueueItem *item = &(*iter);
if (item->flags == kRefresh || doFullRefresh) {
@@ -208,7 +208,7 @@ void RenderQueue::clear() {
}
bool RenderQueue::rectIntersectsItem(const Common::Rect &rect) {
- for (RenderQueueArray::iterator iter = _currQueue->begin(); iter != _currQueue->end(); iter++) {
+ for (RenderQueueArray::iterator iter = _currQueue->begin(); iter != _currQueue->end(); ++iter) {
const RenderQueueItem *item = &(*iter);
if (rect.intersects(item->rect))
return true;
@@ -220,7 +220,7 @@ RenderQueueItem *RenderQueue::findItemInQueue(RenderQueueArray *queue, const Ren
/* This checks if the given item also exists in the previously drawn frame.
The state of the item (position, color etc) is handled elsewhere.
*/
- for (RenderQueueArray::iterator iter = queue->begin(); iter != queue->end(); iter++) {
+ for (RenderQueueArray::iterator iter = queue->begin(); iter != queue->end(); ++iter) {
RenderQueueItem *prevItem = &(*iter);
if (prevItem->type == item.type) {
switch (item.type) {
@@ -262,7 +262,7 @@ bool RenderQueue::hasItemChanged(const RenderQueueItem &item1, const RenderQueue
}
void RenderQueue::invalidateItemsByRect(const Common::Rect &rect, const RenderQueueItem *item) {
- for (RenderQueueArray::iterator iter = _currQueue->begin(); iter != _currQueue->end(); iter++) {
+ for (RenderQueueArray::iterator iter = _currQueue->begin(); iter != _currQueue->end(); ++iter) {
RenderQueueItem *subItem = &(*iter);
if (item != subItem &&
subItem->flags == kUnchanged &&
diff --git a/engines/tony/detection_tables.h b/engines/tony/detection_tables.h
index ce4651f0ab..28dcaac752 100644
--- a/engines/tony/detection_tables.h
+++ b/engines/tony/detection_tables.h
@@ -217,7 +217,7 @@ static const TonyGameDescription gameDescriptions[] = {
// Tony Tough German "Shoe Box", reported in bug #3582420
{
"tony",
- 0,
+ 0,
{
{"roasted.mpr", 0, "06203dbbc85fdd1e6dc8fc211c1a6207", 135911071},
{"roasted.mpc", 0, "bc3471f098e591dc509dcad401a8d8a5", 389554},
@@ -230,6 +230,23 @@ static const TonyGameDescription gameDescriptions[] = {
},
},
+ {
+ // Tony Tough Russian, reported in bug #6589
+ {
+ "tony",
+ 0,
+ {
+ {"roasted.mpr", 0, "06203dbbc85fdd1e6dc8fc211c1a6207", 135911071},
+ {"roasted.mpc", 0, "377d6e24adeedc6c5c09c31b92231218", 391536},
+ AD_LISTEND
+ },
+ Common::RU_RUS,
+ Common::kPlatformWindows,
+ ADGF_NO_FLAGS,
+ GUIO1(GUIO_NONE)
+ },
+ },
+
{ AD_TABLE_END_MARKER }
};
diff --git a/engines/tony/font.h b/engines/tony/font.h
index 6e76c42750..d52547a58d 100644
--- a/engines/tony/font.h
+++ b/engines/tony/font.h
@@ -347,6 +347,7 @@ public:
virtual ~RMDialogChoice();
// Initialization and closure
+ using RMGfxWoodyBuffer::init;
void init();
void close();
diff --git a/engines/tony/game.h b/engines/tony/game.h
index d03a975b6f..cda07de889 100644
--- a/engines/tony/game.h
+++ b/engines/tony/game.h
@@ -300,6 +300,7 @@ public:
RMOptionScreen();
virtual ~RMOptionScreen();
+ using RMGfxWoodyBuffer::init;
void init(CORO_PARAM, RMGfxTargetBuffer &bigBuf, bool &result);
void initLoadMenuOnly(CORO_PARAM, RMGfxTargetBuffer &bigBuf, bool bAlternateGfx, bool &result);
void initSaveMenuOnly(CORO_PARAM, RMGfxTargetBuffer &bigBuf, bool bAlternateGfx, bool &result);
diff --git a/engines/tony/gfxcore.h b/engines/tony/gfxcore.h
index ff6c6b3dca..c9081506d7 100644
--- a/engines/tony/gfxcore.h
+++ b/engines/tony/gfxcore.h
@@ -71,7 +71,7 @@ public:
int getDimy();
// Creation
- virtual void create(int dimx, int dimy, int nBpp);
+ void create(int dimx, int dimy, int nBpp);
virtual void destroy();
// These are valid only if the buffer is locked
diff --git a/engines/tony/inventory.h b/engines/tony/inventory.h
index 9b460f390d..5528e6589c 100644
--- a/engines/tony/inventory.h
+++ b/engines/tony/inventory.h
@@ -101,6 +101,7 @@ public:
/**
* Initialization and closing
*/
+ using RMGfxWoodyBuffer::init;
void init();
void close();
void reset();
@@ -209,6 +210,7 @@ public:
/**
* Initialization
*/
+ using RMGfxSourceBuffer8RLEByte::init;
void init();
void close();
diff --git a/engines/tsage/debugger.cpp b/engines/tsage/debugger.cpp
index 140e1afea5..5a520b0e89 100644
--- a/engines/tsage/debugger.cpp
+++ b/engines/tsage/debugger.cpp
@@ -640,58 +640,58 @@ bool Ringworld2Debugger::Cmd_ListObjects(int argc, const char **argv) {
}
DebugPrintf("Available objects for this game are:\n");
- DebugPrintf("1 - R2_OPTO_DISK\n");
- DebugPrintf("2 - R2_READER\n");
- DebugPrintf("3 - R2_NEGATOR_GUN\n");
- DebugPrintf("4 - R2_STEPPING_DISKS\n");
- DebugPrintf("5 - R2_ATTRACTOR_UNIT\n");
- DebugPrintf("6 - R2_SENSOR_PROBE\n");
- DebugPrintf("7 - R2_SONIC_STUNNER\n");
- DebugPrintf("8 - R2_CABLE_HARNESS\n");
- DebugPrintf("9 - R2_COM_SCANNER\n");
- DebugPrintf("10 - R2_SPENT_POWER_CAPSULE\n");
- DebugPrintf("11 - R2_CHARGED_POWER_CAPSULE\n");
- DebugPrintf("12 - R2_AEROSOL\n");
- DebugPrintf("13 - R2_REMOTE_CONTROL\n");
- DebugPrintf("14 - R2_OPTICAL_FIBER\n");
- DebugPrintf("15 - R2_CLAMP\n");
- DebugPrintf("16 - R2_ATTRACTOR_CABLE_HARNESS\n");
- DebugPrintf("17 - R2_FUEL_CELL\n");
- DebugPrintf("18 - R2_GYROSCOPE\n");
- DebugPrintf("19 - R2_AIRBAG\n");
- DebugPrintf("20 - R2_REBREATHER_TANK\n");
- DebugPrintf("21 - R2_RESERVE_REBREATHER_TANK\n");
- DebugPrintf("22 - R2_GUIDANCE_MODULE\n");
- DebugPrintf("23 - R2_THRUSTER_VALVE\n");
- DebugPrintf("24 - R2_BALLOON_BACKPACK\n");
- DebugPrintf("25 - R2_RADAR_MECHANISM\n");
- DebugPrintf("26 - R2_JOYSTICK\n");
- DebugPrintf("27 - R2_IGNITOR\n");
- DebugPrintf("28 - R2_DIAGNOSTICS_DISPLAY\n");
- DebugPrintf("29 - R2_GLASS_DOME\n");
- DebugPrintf("30 - R2_WICK_LAMP\n");
- DebugPrintf("31 - R2_SCRITH_KEY\n");
- DebugPrintf("32 - R2_TANNER_MASK\n");
- DebugPrintf("33 - R2_PURE_GRAIN_ALCOHOL\n");
- DebugPrintf("34 - R2_SAPPHIRE_BLUE\n");
- DebugPrintf("35 - R2_ANCIENT_SCROLLS\n");
- DebugPrintf("36 - R2_FLUTE\n");
- DebugPrintf("37 - R2_GUNPOWDER\n");
- DebugPrintf("38 - R2_NONAME\n");
- DebugPrintf("39 - R2_COM_SCANNER_2\n");
- DebugPrintf("40 - R2_SUPERCONDUCTOR_WIRE\n");
- DebugPrintf("41 - R2_PILLOW\n");
- DebugPrintf("42 - R2_FOOD_TRAY\n");
- DebugPrintf("43 - R2_LASER_HACKSAW\n");
- DebugPrintf("44 - R2_PHOTON_STUNNER\n");
- DebugPrintf("45 - R2_BATTERY\n");
- DebugPrintf("46 - R2_SOAKED_FACEMASK\n");
- DebugPrintf("47 - R2_LIGHT_BULB\n");
- DebugPrintf("48 - R2_ALCOHOL_LAMP\n");
- DebugPrintf("49 - R2_ALCOHOL_LAMP_2\n");
- DebugPrintf("50 - R2_ALCOHOL_LAMP_3\n");
- DebugPrintf("51 - R2_BROKEN_DISPLAY\n");
- DebugPrintf("52 - R2_TOOLBOX\n");
+ DebugPrintf("1 - Scene %d - R2_OPTO_DISK\n", BF_INVENTORY.getObjectScene(1));
+ DebugPrintf("2 - Scene %d - R2_READER\n", BF_INVENTORY.getObjectScene(2));
+ DebugPrintf("3 - Scene %d - R2_NEGATOR_GUN\n", BF_INVENTORY.getObjectScene(3));
+ DebugPrintf("4 - Scene %d - R2_STEPPING_DISKS\n", BF_INVENTORY.getObjectScene(4));
+ DebugPrintf("5 - Scene %d - R2_ATTRACTOR_UNIT\n", BF_INVENTORY.getObjectScene(5));
+ DebugPrintf("6 - Scene %d - R2_SENSOR_PROBE\n", BF_INVENTORY.getObjectScene(6));
+ DebugPrintf("7 - Scene %d - R2_SONIC_STUNNER\n", BF_INVENTORY.getObjectScene(7));
+ DebugPrintf("8 - Scene %d - R2_CABLE_HARNESS\n", BF_INVENTORY.getObjectScene(8));
+ DebugPrintf("9 - Scene %d - R2_COM_SCANNER\n", BF_INVENTORY.getObjectScene(9));
+ DebugPrintf("10 - Scene %d - R2_SPENT_POWER_CAPSULE\n", BF_INVENTORY.getObjectScene(10));
+ DebugPrintf("11 - Scene %d - R2_CHARGED_POWER_CAPSULE\n", BF_INVENTORY.getObjectScene(11));
+ DebugPrintf("12 - Scene %d - R2_AEROSOL\n", BF_INVENTORY.getObjectScene(12));
+ DebugPrintf("13 - Scene %d - R2_REMOTE_CONTROL\n", BF_INVENTORY.getObjectScene(13));
+ DebugPrintf("14 - Scene %d - R2_OPTICAL_FIBER\n", BF_INVENTORY.getObjectScene(14));
+ DebugPrintf("15 - Scene %d - R2_CLAMP\n", BF_INVENTORY.getObjectScene(15));
+ DebugPrintf("16 - Scene %d - R2_ATTRACTOR_CABLE_HARNESS\n", BF_INVENTORY.getObjectScene(16));
+ DebugPrintf("17 - Scene %d - R2_FUEL_CELL\n", BF_INVENTORY.getObjectScene(17));
+ DebugPrintf("18 - Scene %d - R2_GYROSCOPE\n", BF_INVENTORY.getObjectScene(18));
+ DebugPrintf("19 - Scene %d - R2_AIRBAG\n", BF_INVENTORY.getObjectScene(19));
+ DebugPrintf("20 - Scene %d - R2_REBREATHER_TANK\n", BF_INVENTORY.getObjectScene(20));
+ DebugPrintf("21 - Scene %d - R2_RESERVE_REBREATHER_TANK\n", BF_INVENTORY.getObjectScene(21));
+ DebugPrintf("22 - Scene %d - R2_GUIDANCE_MODULE\n", BF_INVENTORY.getObjectScene(22));
+ DebugPrintf("23 - Scene %d - R2_THRUSTER_VALVE\n", BF_INVENTORY.getObjectScene(23));
+ DebugPrintf("24 - Scene %d - R2_BALLOON_BACKPACK\n", BF_INVENTORY.getObjectScene(24));
+ DebugPrintf("25 - Scene %d - R2_RADAR_MECHANISM\n", BF_INVENTORY.getObjectScene(25));
+ DebugPrintf("26 - Scene %d - R2_JOYSTICK\n", BF_INVENTORY.getObjectScene(26));
+ DebugPrintf("27 - Scene %d - R2_IGNITOR\n", BF_INVENTORY.getObjectScene(27));
+ DebugPrintf("28 - Scene %d - R2_DIAGNOSTICS_DISPLAY\n", BF_INVENTORY.getObjectScene(28));
+ DebugPrintf("29 - Scene %d - R2_GLASS_DOME\n", BF_INVENTORY.getObjectScene(29));
+ DebugPrintf("30 - Scene %d - R2_WICK_LAMP\n", BF_INVENTORY.getObjectScene(30));
+ DebugPrintf("31 - Scene %d - R2_SCRITH_KEY\n", BF_INVENTORY.getObjectScene(31));
+ DebugPrintf("32 - Scene %d - R2_TANNER_MASK\n", BF_INVENTORY.getObjectScene(32));
+ DebugPrintf("33 - Scene %d - R2_PURE_GRAIN_ALCOHOL\n", BF_INVENTORY.getObjectScene(33));
+ DebugPrintf("34 - Scene %d - R2_SAPPHIRE_BLUE\n", BF_INVENTORY.getObjectScene(34));
+ DebugPrintf("35 - Scene %d - R2_ANCIENT_SCROLLS\n", BF_INVENTORY.getObjectScene(35));
+ DebugPrintf("36 - Scene %d - R2_FLUTE\n", BF_INVENTORY.getObjectScene(36));
+ DebugPrintf("37 - Scene %d - R2_GUNPOWDER\n", BF_INVENTORY.getObjectScene(37));
+ DebugPrintf("38 - Scene %d - R2_NONAME\n", BF_INVENTORY.getObjectScene(38));
+ DebugPrintf("39 - Scene %d - R2_COM_SCANNER_2\n", BF_INVENTORY.getObjectScene(39));
+ DebugPrintf("40 - Scene %d - R2_SUPERCONDUCTOR_WIRE\n", BF_INVENTORY.getObjectScene(40));
+ DebugPrintf("41 - Scene %d - R2_PILLOW\n", BF_INVENTORY.getObjectScene(41));
+ DebugPrintf("42 - Scene %d - R2_FOOD_TRAY\n", BF_INVENTORY.getObjectScene(42));
+ DebugPrintf("43 - Scene %d - R2_LASER_HACKSAW\n", BF_INVENTORY.getObjectScene(43));
+ DebugPrintf("44 - Scene %d - R2_PHOTON_STUNNER\n", BF_INVENTORY.getObjectScene(44));
+ DebugPrintf("45 - Scene %d - R2_BATTERY\n", BF_INVENTORY.getObjectScene(45));
+ DebugPrintf("46 - Scene %d - R2_SOAKED_FACEMASK\n", BF_INVENTORY.getObjectScene(46));
+ DebugPrintf("47 - Scene %d - R2_LIGHT_BULB\n", BF_INVENTORY.getObjectScene(47));
+ DebugPrintf("48 - Scene %d - R2_ALCOHOL_LAMP\n", BF_INVENTORY.getObjectScene(48));
+ DebugPrintf("49 - Scene %d - R2_ALCOHOL_LAMP_2\n", BF_INVENTORY.getObjectScene(49));
+ DebugPrintf("50 - Scene %d - R2_ALCOHOL_LAMP_3\n", BF_INVENTORY.getObjectScene(50));
+ DebugPrintf("51 - Scene %d - R2_BROKEN_DISPLAY\n", BF_INVENTORY.getObjectScene(51));
+ DebugPrintf("52 - Scene %d - R2_TOOLBOX\n", BF_INVENTORY.getObjectScene(52));
return true;
}
diff --git a/engines/tsage/detection.cpp b/engines/tsage/detection.cpp
index 02a21e36f8..9d61b4d182 100644
--- a/engines/tsage/detection.cpp
+++ b/engines/tsage/detection.cpp
@@ -129,10 +129,10 @@ public:
if (in) {
if (TsAGE::Saver::readSavegameHeader(in, header)) {
- saveList.push_back(SaveStateDescriptor(slot, header.saveName));
+ saveList.push_back(SaveStateDescriptor(slot, header._saveName));
- header.thumbnail->free();
- delete header.thumbnail;
+ header._thumbnail->free();
+ delete header._thumbnail;
}
delete in;
@@ -162,11 +162,11 @@ public:
delete f;
// Create the return descriptor
- SaveStateDescriptor desc(slot, header.saveName);
- desc.setThumbnail(header.thumbnail);
- desc.setSaveDate(header.saveYear, header.saveMonth, header.saveDay);
- desc.setSaveTime(header.saveHour, header.saveMinutes);
- desc.setPlayTime(header.totalFrames * GAME_FRAME_TIME);
+ SaveStateDescriptor desc(slot, header._saveName);
+ desc.setThumbnail(header._thumbnail);
+ desc.setSaveDate(header._saveYear, header._saveMonth, header._saveDay);
+ desc.setSaveTime(header._saveHour, header._saveMinutes);
+ desc.setPlayTime(header._totalFrames * GAME_FRAME_TIME);
return desc;
}
diff --git a/engines/tsage/ringworld2/ringworld2_scenes3.cpp b/engines/tsage/ringworld2/ringworld2_scenes3.cpp
index 95f8c85efe..3f32503fdf 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes3.cpp
+++ b/engines/tsage/ringworld2/ringworld2_scenes3.cpp
@@ -5048,6 +5048,7 @@ void Scene3700::signal() {
Scene3800::Scene3800() {
_desertDirection = 0;
+ _skylineRect.set(0, 0, 320, 87);
}
void Scene3800::synchronize(Serializer &s) {
@@ -5220,7 +5221,8 @@ void Scene3800::initExits() {
}
void Scene3800::enterArea() {
- R2_GLOBALS._player.disableControl();
+ R2_GLOBALS._player.disableControl(CURSOR_WALK);
+
switch (_desertDirection) {
case 0:
R2_GLOBALS._player.postInit();
@@ -5346,7 +5348,6 @@ void Scene3800::postInit(SceneObjectList *OwnerList) {
_westExit.setDetails(Rect(0, 87, 14, 168), EXITCURSOR_W, 3800);
_westExit.setDest(Common::Point(7, 145));
- _skylineRect.set(0, 0, 320, 87);
_background.setDetails(Rect(0, 0, 320, 200), 3800, 0, 1, 2, 1, (SceneItem *) NULL);
enterArea();
diff --git a/engines/tsage/saveload.cpp b/engines/tsage/saveload.cpp
index fe71c03973..9954b929b2 100644
--- a/engines/tsage/saveload.cpp
+++ b/engines/tsage/saveload.cpp
@@ -141,8 +141,8 @@ Common::Error Saver::save(int slot, const Common::String &saveName) {
// Write out the savegame header
tSageSavegameHeader header;
- header.saveName = saveName;
- header.version = TSAGE_SAVEGAME_VERSION;
+ header._saveName = saveName;
+ header._version = TSAGE_SAVEGAME_VERSION;
writeSavegameHeader(saveFile, header);
// Save out objects that need to come at the start of the savegame
@@ -190,11 +190,11 @@ Common::Error Saver::restore(int slot) {
// Read in the savegame header
tSageSavegameHeader header;
readSavegameHeader(saveFile, header);
- if (header.thumbnail)
- header.thumbnail->free();
- delete header.thumbnail;
+ if (header._thumbnail)
+ header._thumbnail->free();
+ delete header._thumbnail;
- serializer.setSaveVersion(header.version);
+ serializer.setSaveVersion(header._version);
// Load in data for objects that need to come at the start of the savegame
for (Common::List<SaveListener *>::iterator i = _listeners.begin(); i != _listeners.end(); ++i) {
@@ -242,34 +242,34 @@ const char *SAVEGAME_STR = "SCUMMVM_TSAGE";
bool Saver::readSavegameHeader(Common::InSaveFile *in, tSageSavegameHeader &header) {
char saveIdentBuffer[SAVEGAME_STR_SIZE + 1];
- header.thumbnail = NULL;
+ header._thumbnail = NULL;
// Validate the header Id
in->read(saveIdentBuffer, SAVEGAME_STR_SIZE + 1);
if (strncmp(saveIdentBuffer, SAVEGAME_STR, SAVEGAME_STR_SIZE))
return false;
- header.version = in->readByte();
- if (header.version > TSAGE_SAVEGAME_VERSION)
+ header._version = in->readByte();
+ if (header._version > TSAGE_SAVEGAME_VERSION)
return false;
// Read in the string
- header.saveName.clear();
+ header._saveName.clear();
char ch;
- while ((ch = (char)in->readByte()) != '\0') header.saveName += ch;
+ while ((ch = (char)in->readByte()) != '\0') header._saveName += ch;
// Get the thumbnail
- header.thumbnail = Graphics::loadThumbnail(*in);
- if (!header.thumbnail)
+ header._thumbnail = Graphics::loadThumbnail(*in);
+ if (!header._thumbnail)
return false;
// Read in save date/time
- header.saveYear = in->readSint16LE();
- header.saveMonth = in->readSint16LE();
- header.saveDay = in->readSint16LE();
- header.saveHour = in->readSint16LE();
- header.saveMinutes = in->readSint16LE();
- header.totalFrames = in->readUint32LE();
+ header._saveYear = in->readSint16LE();
+ header._saveMonth = in->readSint16LE();
+ header._saveDay = in->readSint16LE();
+ header._saveHour = in->readSint16LE();
+ header._saveMinutes = in->readSint16LE();
+ header._totalFrames = in->readUint32LE();
return true;
}
@@ -281,7 +281,7 @@ void Saver::writeSavegameHeader(Common::OutSaveFile *out, tSageSavegameHeader &h
out->writeByte(TSAGE_SAVEGAME_VERSION);
// Write savegame name
- out->write(header.saveName.c_str(), header.saveName.size() + 1);
+ out->write(header._saveName.c_str(), header._saveName.size() + 1);
// Get the active palette
uint8 thumbPalette[256 * 3];
diff --git a/engines/tsage/saveload.h b/engines/tsage/saveload.h
index a6ad71699e..be5ff51ffb 100644
--- a/engines/tsage/saveload.h
+++ b/engines/tsage/saveload.h
@@ -38,12 +38,12 @@ typedef void (*SaveNotifierFn)(bool postFlag);
class SavedObject;
struct tSageSavegameHeader {
- uint8 version;
- Common::String saveName;
- Graphics::Surface *thumbnail;
- int saveYear, saveMonth, saveDay;
- int saveHour, saveMinutes;
- int totalFrames;
+ uint8 _version;
+ Common::String _saveName;
+ Graphics::Surface *_thumbnail;
+ int _saveYear, _saveMonth, _saveDay;
+ int _saveHour, _saveMinutes;
+ int _totalFrames;
};
/*--------------------------------------------------------------------------*/
diff --git a/engines/tsage/sound.cpp b/engines/tsage/sound.cpp
index b6434b3523..c5c38505a7 100644
--- a/engines/tsage/sound.cpp
+++ b/engines/tsage/sound.cpp
@@ -468,8 +468,9 @@ void SoundManager::sfProcessFading() {
if (vtStruct->_voiceType == VOICETYPE_1) {
for (uint idx = 0; idx < vtStruct->_entries.size(); ++idx) {
- if (vtStruct->_entries[idx]._type1._field6 >= -1)
- ++vtStruct->_entries[idx]._type1._field6;
+ VoiceStructEntryType1 &vte = vtStruct->_entries[idx]._type1;
+ if (vte._field6 >= -1)
+ ++vte._field6;
}
}
}
@@ -499,22 +500,22 @@ void SoundManager::sfUpdateVoiceStructs() {
if (vs->_voiceType == VOICETYPE_0) {
for (uint idx = 0; idx < vs->_entries.size(); ++idx) {
- VoiceStructEntry &vse = vs->_entries[idx];
+ VoiceStructEntryType0 &vte = vs->_entries[idx]._type0;
- vse._type0._sound = vse._type0._sound2;
- vse._type0._channelNum = vse._type0._channelNum2;
- vse._type0._priority = vse._type0._priority2;
- vse._type0._fieldA = vse._type0._field12;
+ vte._sound = vte._sound2;
+ vte._channelNum = vte._channelNum2;
+ vte._priority = vte._priority2;
+ vte._fieldA = vte._field12;
}
} else {
vs->_field3 = vs->_numVoices;
for (uint idx = 0; idx < vs->_entries.size(); ++idx) {
- VoiceStructEntry &vse = vs->_entries[idx];
+ VoiceStructEntryType1 &vte = vs->_entries[idx]._type1;
- vse._type1._sound = vse._type1._sound2;
- vse._type1._channelNum = vse._type1._channelNum2;
- vse._type1._priority = vse._type1._priority2;
+ vte._sound = vte._sound2;
+ vte._channelNum = vte._channelNum2;
+ vte._priority = vte._priority2;
}
}
}
@@ -529,16 +530,16 @@ void SoundManager::sfUpdateVoiceStructs2() {
for (uint idx = 0; idx < vtStruct->_entries.size(); ++idx) {
if (vtStruct->_voiceType == VOICETYPE_0) {
- VoiceStructEntryType0 &vse = vtStruct->_entries[idx]._type0;
- vse._sound2 = vse._sound;
- vse._channelNum2 = vse._channelNum;
- vse._priority2 = vse._priority;
- vse._field12 = vse._fieldA;
+ VoiceStructEntryType0 &vte = vtStruct->_entries[idx]._type0;
+ vte._sound2 = vte._sound;
+ vte._channelNum2 = vte._channelNum;
+ vte._priority2 = vte._priority;
+ vte._field12 = vte._fieldA;
} else {
- VoiceStructEntryType1 &vse = vtStruct->_entries[idx]._type1;
- vse._sound2 = vse._sound;
- vse._channelNum2 = vse._channelNum;
- vse._priority2 = vse._priority;
+ VoiceStructEntryType1 &vte = vtStruct->_entries[idx]._type1;
+ vte._sound2 = vte._sound;
+ vte._channelNum2 = vte._channelNum;
+ vte._priority2 = vte._priority;
}
}
}
@@ -724,7 +725,7 @@ void SoundManager::sfRethinkSoundDrivers() {
ve._type0._sound = NULL;
ve._type0._channelNum = 0;
ve._type0._priority = 0;
- ve._type0._fieldA = 0;
+ ve._type0._fieldA = false;
vs->_entries.push_back(ve);
}
@@ -773,32 +774,31 @@ void SoundManager::sfRethinkVoiceTypes() {
if (vs->_voiceType == VOICETYPE_0) {
for (uint idx = 0; idx < vs->_entries.size(); ++idx) {
- VoiceStructEntry &vse = vs->_entries[idx];
- vse._type0._sound3 = vse._type0._sound;
- vse._type0._channelNum3 = vse._type0._channelNum;
- vse._type0._priority3 = vse._type0._priority;
- vse._type0._field1A = vse._type0._fieldA;
- vse._type0._sound = NULL;
- vse._type0._channelNum = 0;
- vse._type0._priority = 0;
- vse._type0._fieldA = 0;
- vse._type0._sound2 = NULL;
- vse._type0._channelNum2 = 0;
- vse._type0._priority2 = 0;
- vse._type0._field12 = 0;
+ VoiceStructEntryType0 &vte = vs->_entries[idx]._type0;
+ vte._sound3 = vte._sound;
+ vte._channelNum3 = vte._channelNum;
+ vte._priority3 = vte._priority;
+ vte._sound = NULL;
+ vte._channelNum = 0;
+ vte._priority = 0;
+ vte._fieldA = false;
+ vte._sound2 = NULL;
+ vte._channelNum2 = 0;
+ vte._priority2 = 0;
+ vte._field12 = false;
}
} else {
for (uint idx = 0; idx < vs->_entries.size(); ++idx) {
- VoiceStructEntry &vse = vs->_entries[idx];
- vse._type1._sound3 = vse._type1._sound;
- vse._type1._channelNum3 = vse._type1._channelNum;
- vse._type1._priority3 = vse._type1._priority;
- vse._type1._sound = NULL;
- vse._type1._channelNum = 0;
- vse._type1._priority = 0;
- vse._type1._sound2 = NULL;
- vse._type1._channelNum2 = 0;
- vse._type1._priority2 = 0;
+ VoiceStructEntryType1 &vte = vs->_entries[idx]._type1;
+ vte._sound3 = vte._sound;
+ vte._channelNum3 = vte._channelNum;
+ vte._priority3 = vte._priority;
+ vte._sound = NULL;
+ vte._channelNum = 0;
+ vte._priority = 0;
+ vte._sound2 = NULL;
+ vte._channelNum2 = 0;
+ vte._priority2 = 0;
}
// Reset the number of voices available
@@ -858,10 +858,11 @@ void SoundManager::sfRethinkVoiceTypes() {
if (numVoices >= chNumVoices) {
int channelCount = chNumVoices, idx = 0;
while (channelCount > 0) {
- if (!vtStruct->_entries[idx]._type1._sound2) {
- vtStruct->_entries[idx]._type1._sound2 = sound;
- vtStruct->_entries[idx]._type1._channelNum2 = foundIndex;
- vtStruct->_entries[idx]._type1._priority2 = foundPriority;
+ VoiceStructEntryType1 &vte = vtStruct->_entries[idx]._type1;
+ if (!vte._sound2) {
+ vte._sound2 = sound;
+ vte._channelNum2 = foundIndex;
+ vte._priority2 = foundPriority;
--channelCount;
}
++idx;
@@ -881,10 +882,11 @@ void SoundManager::sfRethinkVoiceTypes() {
}
for (uint idx = 0; idx < vtStruct->_entries.size(); ++idx) {
- if (vtStruct->_entries[idx]._type1._priority2 == maxPriority) {
- vtStruct->_entries[idx]._type1._sound2 = NULL;
- vtStruct->_entries[idx]._type1._channelNum2 = 0;
- vtStruct->_entries[idx]._type1._priority2 = 0;
+ VoiceStructEntryType1 &vte = vtStruct->_entries[idx]._type1;
+ if (vte._priority2 == maxPriority) {
+ vte._sound2 = NULL;
+ vte._channelNum2 = 0;
+ vte._priority2 = 0;
++numVoices;
}
}
@@ -892,10 +894,11 @@ void SoundManager::sfRethinkVoiceTypes() {
int voicesCtr = chNumVoices;
for (uint idx = 0; (idx < vtStruct->_entries.size()) && (voicesCtr > 0); ++idx) {
- if (!vtStruct->_entries[idx]._type1._sound2) {
- vtStruct->_entries[idx]._type1._sound2 = sound;
- vtStruct->_entries[idx]._type1._channelNum2 = foundIndex;
- vtStruct->_entries[idx]._type1._priority2 = foundPriority;
+ VoiceStructEntryType1 &vte = vtStruct->_entries[idx]._type1;
+ if (!vte._sound2) {
+ vte._sound2 = sound;
+ vte._channelNum2 = foundIndex;
+ vte._priority2 = foundPriority;
--voicesCtr;
}
}
@@ -932,10 +935,11 @@ void SoundManager::sfRethinkVoiceTypes() {
}
if (entryIndex != -1) {
- vtStruct->_entries[entryIndex]._type0._sound2 = sound;
- vtStruct->_entries[entryIndex]._type0._channelNum2 = foundIndex;
- vtStruct->_entries[entryIndex]._type0._priority2 = foundPriority;
- vtStruct->_entries[entryIndex]._type0._field12 = 0;
+ VoiceStructEntryType0 &vte = vtStruct->_entries[entryIndex]._type0;
+ vte._sound2 = sound;
+ vte._channelNum2 = foundIndex;
+ vte._priority2 = foundPriority;
+ vte._field12 = false;
continue;
}
@@ -953,10 +957,11 @@ void SoundManager::sfRethinkVoiceTypes() {
}
if (entryIndex != -1) {
- vtStruct->_entries[entryIndex]._type0._sound2 = sound;
- vtStruct->_entries[entryIndex]._type0._channelNum2 = foundIndex;
- vtStruct->_entries[entryIndex]._type0._priority2 = foundPriority;
- vtStruct->_entries[entryIndex]._type0._field12 = 0;
+ VoiceStructEntryType0 &vte = vtStruct->_entries[entryIndex]._type0;
+ vte._sound2 = sound;
+ vte._channelNum2 = foundIndex;
+ vte._priority2 = foundPriority;
+ vte._field12 = false;
continue;
}
@@ -978,10 +983,11 @@ void SoundManager::sfRethinkVoiceTypes() {
}
if (entryIndex != -1) {
- vtStruct->_entries[entryIndex]._type0._sound2 = sound;
- vtStruct->_entries[entryIndex]._type0._channelNum2 = foundIndex;
- vtStruct->_entries[entryIndex]._type0._priority2 = foundPriority;
- vtStruct->_entries[entryIndex]._type0._field12 = 0;
+ VoiceStructEntryType0 &vte = vtStruct->_entries[entryIndex]._type0;
+ vte._sound2 = sound;
+ vte._channelNum2 = foundIndex;
+ vte._priority2 = foundPriority;
+ vte._field12 = false;
continue;
}
@@ -1017,10 +1023,11 @@ void SoundManager::sfRethinkVoiceTypes() {
continue;
if (entryIndex != -1) {
- vtStruct->_entries[entryIndex]._type0._sound2 = sound;
- vtStruct->_entries[entryIndex]._type0._channelNum2 = foundIndex;
- vtStruct->_entries[entryIndex]._type0._priority2 = foundPriority;
- vtStruct->_entries[entryIndex]._type0._field12 = 1;
+ VoiceStructEntryType0 &vte = vtStruct->_entries[entryIndex]._type0;
+ vte._sound2 = sound;
+ vte._channelNum2 = foundIndex;
+ vte._priority2 = foundPriority;
+ vte._field12 = true;
continue;
}
@@ -1035,14 +1042,15 @@ void SoundManager::sfRethinkVoiceTypes() {
for (uint idx = 0; idx < vtStruct->_entries.size(); ++idx) {
if (vtStruct->_entries[idx]._field1) {
- if (!vtStruct->_entries[idx]._type0._sound2) {
+ VoiceStructEntryType0 &vte = vtStruct->_entries[idx]._type0;
+ if (!vte._sound2) {
if (vtStruct->_entries[idx]._voiceNum > maxVoiceNum) {
maxVoiceNum = vtStruct->_entries[idx]._voiceNum;
voiceIndex = idx;
}
} else {
- if (vtStruct->_entries[idx]._type0._priority2 > maxPriority) {
- maxPriority = vtStruct->_entries[idx]._type0._priority2;
+ if (vte._priority2 > maxPriority) {
+ maxPriority = vte._priority2;
priorityIndex = idx;
}
}
@@ -1060,7 +1068,7 @@ void SoundManager::sfRethinkVoiceTypes() {
vteSrc._sound2 = sound;
vteSrc._channelNum2 = foundIndex;
vteSrc._priority2 = foundPriority;
- vteSrc._field12 = 1;
+ vteSrc._field12 = true;
continue;
}
@@ -1084,7 +1092,7 @@ void SoundManager::sfRethinkVoiceTypes() {
vteSrc._sound2 = sound;
vteSrc._channelNum2 = foundIndex;
vteSrc._priority2 = foundPriority;
- vteSrc._field12 = 1;
+ vteSrc._field12 = true;
continue;
}
}
@@ -1115,10 +1123,10 @@ void SoundManager::sfRethinkVoiceTypes() {
++total;
vse._priority = vse._priority2;
- vse._fieldA = 1;
+ vse._fieldA = true;
vse._sound2 = NULL;
- if (total) {
+ if ((total) && vse._sound) {
driver->proc24(vse._channelNum, idx, vse._sound, 123, 0);
driver->proc24(vse._channelNum, idx, vse._sound, 1, vse._sound->_chModulation[vse._channelNum]);
driver->proc24(vse._channelNum, idx, vse._sound, 7,
@@ -1135,7 +1143,7 @@ void SoundManager::sfRethinkVoiceTypes() {
vse._sound = NULL;
vse._channelNum = 0;
vse._priority = 0;
- vse._fieldA = 0;
+ vse._fieldA = false;
}
}
@@ -1148,13 +1156,13 @@ void SoundManager::sfRethinkVoiceTypes() {
continue;
for (uint entryIndex = 0; entryIndex < vs->_entries.size(); ++entryIndex) {
- if ((vs->_entries[entryIndex]._type0._sound3 != sound) ||
- (vs->_entries[entryIndex]._type0._channelNum3 != channelNum)) {
+ VoiceStructEntryType0 &vteCur = vs->_entries[entryIndex]._type0;
+ if ((vteCur._sound3 != sound) || (vteCur._channelNum3 != channelNum)) {
// Found match
- vs->_entries[entryIndex]._type0._sound = sound;
- vs->_entries[entryIndex]._type0._channelNum = channelNum;
- vs->_entries[entryIndex]._type0._priority = vse._priority2;
- vs->_entries[entryIndex]._type0._fieldA = 0;
+ vteCur._sound = sound;
+ vteCur._channelNum = channelNum;
+ vteCur._priority = vse._priority2;
+ vteCur._fieldA = false;
vse._sound2 = NULL;
break;
}
@@ -1185,7 +1193,7 @@ void SoundManager::sfRethinkVoiceTypes() {
vseFound._sound = vse._sound2;
vseFound._channelNum = vse._channelNum2;
vseFound._priority = vse._priority2;
- vseFound._fieldA = 0;
+ vseFound._fieldA = false;
SoundDriver *driver = vs->_entries[foundIndex]._driver;
assert(driver);
@@ -1215,10 +1223,10 @@ void SoundManager::sfRethinkVoiceTypes() {
} else {
// Type 1
for (uint idx = 0; idx < vs->_entries.size(); ++idx) {
- VoiceStructEntry &vse = vs->_entries[idx];
- vse._type1._sound = NULL;
- vse._type1._channelNum = 0;
- vse._type1._priority = 0;
+ VoiceStructEntryType1 &vte = vs->_entries[idx]._type1;
+ vte._sound = NULL;
+ vte._channelNum = 0;
+ vte._priority = 0;
}
for (uint idx = 0; idx < vs->_entries.size(); ++idx) {
@@ -2188,9 +2196,10 @@ void Sound::soPlaySound(VoiceTypeStruct *vtStruct, const byte *channelData, int
SoundDriver *driver = vtStruct->_entries[entryIndex]._driver;
assert(driver);
- vtStruct->_entries[entryIndex]._type1._field6 = 0;
- vtStruct->_entries[entryIndex]._type1._field4 = v0;
- vtStruct->_entries[entryIndex]._type1._field5 = 0;
+ VoiceStructEntryType1 &vte = vtStruct->_entries[entryIndex]._type1;
+ vte._field6 = 0;
+ vte._field4 = v0;
+ vte._field5 = 0;
driver->playSound(channelData, 0, _chProgram[channelNum], vtStruct->_entries[entryIndex]._voiceNum, v0, v1);
}
@@ -2207,9 +2216,10 @@ void Sound::soPlaySound2(VoiceTypeStruct *vtStruct, const byte *channelData, int
assert(driver);
byte *trackData = _channelData[trackCtr];
- vtStruct->_entries[entryIndex]._type1._field6 = 0;
- vtStruct->_entries[entryIndex]._type1._field4 = v0;
- vtStruct->_entries[entryIndex]._type1._field5 = 0;
+ VoiceStructEntryType1 &vte = vtStruct->_entries[entryIndex]._type1;
+ vte._field6 = 0;
+ vte._field4 = v0;
+ vte._field5 = 0;
int v1, v2;
driver->playSound(trackData, 14, -1, vtStruct->_entries[entryIndex]._voiceNum, v0, 0x7F);
@@ -2336,9 +2346,10 @@ void Sound::soServiceTrackType1(int trackIndex, const byte *channelData) {
SoundDriver *driver = vtStruct->_entries[entryIndex]._driver;
assert(driver);
- vtStruct->_entries[entryIndex]._type1._field6 = 0;
- vtStruct->_entries[entryIndex]._type1._field4 = *(channelData + 1);
- vtStruct->_entries[entryIndex]._type1._field5 = 0;
+ VoiceStructEntryType1 &vte = vtStruct->_entries[entryIndex]._type1;
+ vte._field6 = 0;
+ vte._field4 = *(channelData + 1);
+ vte._field5 = 0;
int v1, v2;
driver->playSound(channelData, 14, -1, vtStruct->_entries[entryIndex]._voiceNum, *(channelData + 1), 0x7f);
diff --git a/engines/tsage/sound.h b/engines/tsage/sound.h
index ff9379c254..49558b4bca 100644
--- a/engines/tsage/sound.h
+++ b/engines/tsage/sound.h
@@ -118,15 +118,14 @@ struct VoiceStructEntryType0 {
Sound *_sound;
int _channelNum;
int _priority;
- int _fieldA;
+ bool _fieldA;
Sound *_sound2;
int _channelNum2;
int _priority2;
- int _field12;
+ bool _field12;
Sound *_sound3;
int _channelNum3;
int _priority3;
- int _field1A;
};
struct VoiceStructEntryType1 {
diff --git a/engines/tucker/graphics.cpp b/engines/tucker/graphics.cpp
index 5e3d989110..b9c184e2bb 100644
--- a/engines/tucker/graphics.cpp
+++ b/engines/tucker/graphics.cpp
@@ -163,13 +163,13 @@ void Graphics::copyRect(uint8 *dst, int dstPitch, uint8 *src, int srcPitch, int
}
void Graphics::drawStringChar(uint8 *dst, int xDst, int yDst, int pitch, uint8 chr, uint8 chrColor, const uint8 *src) {
- if (chr < 32 || chr - 32 >= _charset.xCount * _charset.yCount) {
+ if (chr < 32 || chr - 32 >= _charset._xCount * _charset._yCount) {
return;
}
- const int h = MIN(_charset.charH, 200 - yDst);
- const int w = MIN(_charset.charW, pitch - xDst);
+ const int h = MIN(_charset._charH, 200 - yDst);
+ const int w = MIN(_charset._charW, pitch - xDst);
dst += yDst * pitch + xDst;
- int offset = (chr - 32) * _charset.charH * _charset.charW;
+ int offset = (chr - 32) * _charset._charH * _charset._charW;
for (int y = 0; y < h; ++y) {
for (int x = 0; x < w; ++x) {
const int color = src[offset++];
@@ -189,22 +189,22 @@ void Graphics::setCharset(CharsetType type) {
_charsetType = type;
switch (type) {
case kCharsetTypeDefault:
- _charset.charW = 10;
- _charset.charH = 10;
- _charset.xCount = 32;
- _charset.yCount = 7;
+ _charset._charW = 10;
+ _charset._charH = 10;
+ _charset._xCount = 32;
+ _charset._yCount = 7;
break;
case kCharsetTypeEng:
- _charset.charW = 10;
- _charset.charH = 8;
- _charset.xCount = 32;
- _charset.yCount = 3;
+ _charset._charW = 10;
+ _charset._charH = 8;
+ _charset._xCount = 32;
+ _charset._yCount = 3;
break;
case kCharsetTypeCredits:
- _charset.charW = 19;
- _charset.charH = 10;
- _charset.xCount = 16;
- _charset.yCount = 7;
+ _charset._charW = 19;
+ _charset._charH = 10;
+ _charset._xCount = 16;
+ _charset._yCount = 7;
break;
}
}
diff --git a/engines/tucker/graphics.h b/engines/tucker/graphics.h
index 3e2745186c..3e48179a30 100644
--- a/engines/tucker/graphics.h
+++ b/engines/tucker/graphics.h
@@ -34,16 +34,14 @@ enum CharsetType {
};
struct Charset {
- int charW;
- int charH;
- int xCount;
- int yCount;
+ int _charW;
+ int _charH;
+ int _xCount;
+ int _yCount;
};
class Graphics {
public:
-
-
static int encodeRLE(const uint8 *src, uint8 *dst, int w, int h);
static int encodeRAW(const uint8 *src, uint8 *dst, int w, int h);
diff --git a/engines/tucker/locations.cpp b/engines/tucker/locations.cpp
index 13d5f06894..b5fb10c59e 100644
--- a/engines/tucker/locations.cpp
+++ b/engines/tucker/locations.cpp
@@ -33,8 +33,8 @@ static const int _data3UpdateLocation1_yTable[] = { 152, 8, 95 };
void TuckerEngine::execData3PreUpdate_locationNum1() {
if (_flagsTable[1] == 1) {
_flagsTable[1] = 2;
- _locationSoundsTable[3].type = 2;
- startSound(_locationSoundsTable[3].offset, 3, _locationSoundsTable[3].volume);
+ _locationSoundsTable[3]._type = 2;
+ startSound(_locationSoundsTable[3]._offset, 3, _locationSoundsTable[3]._volume);
}
_mapSequenceFlagsLocationTable[0] = (_flagsTable[1] > 0) ? 1 : 0;
if (_updateLocationCounter == 0) {
@@ -66,7 +66,7 @@ void TuckerEngine::execData3PreUpdate_locationNum1Helper1() {
}
}
if (_updateLocationFlagsTable[0] == 1 && _updateLocationCounter == 0) {
- setVolumeSound(12, _locationSoundsTable[12].volume);
+ setVolumeSound(12, _locationSoundsTable[12]._volume);
} else {
setVolumeSound(12, 0);
}
@@ -122,7 +122,7 @@ void TuckerEngine::execData3PostUpdate_locationNum1() {
if (_flagsTable[63] == 0) {
if (getRandomNumber() < 400) {
_flagsTable[63] = 1;
- startSound(_locationSoundsTable[2].offset, 2, _locationSoundsTable[2].volume);
+ startSound(_locationSoundsTable[2]._offset, 2, _locationSoundsTable[2]._volume);
}
}
_locationHeightTable[1] = (_yPosCurrent > 104) ? 60 : 0;
@@ -130,48 +130,48 @@ void TuckerEngine::execData3PostUpdate_locationNum1() {
void TuckerEngine::updateSprite_locationNum2() {
if (_flagsTable[9] == 2) {
- _spritesTable[0].state = -1;
+ _spritesTable[0]._state = -1;
return;
}
if (_flagsTable[9] == 1) {
if (_flagsTable[10] == 1) {
- _spritesTable[0].state = -1;
+ _spritesTable[0]._state = -1;
} else if (_charSpeechSoundCounter > 0 && _actionCharacterNum == 0) {
- _spritesTable[0].state = 4;
- _spritesTable[0].needUpdate = 1;
+ _spritesTable[0]._state = 4;
+ _spritesTable[0]._needUpdate = true;
} else {
- _spritesTable[0].needUpdate = 0;
- _spritesTable[0].state = 5;
+ _spritesTable[0]._needUpdate = false;
+ _spritesTable[0]._state = 5;
_flagsTable[10] = 1;
- _spritesTable[0].gfxBackgroundOffset = 0;
+ _spritesTable[0]._gfxBackgroundOffset = 0;
}
return;
}
if (_charSpeechSoundCounter > 0 && _actionCharacterNum == 0) {
- _spritesTable[0].state = 3;
- _spritesTable[0].needUpdate = 1;
+ _spritesTable[0]._state = 3;
+ _spritesTable[0]._needUpdate = true;
return;
}
if (_csDataHandled) {
- _spritesTable[0].needUpdate = 0;
+ _spritesTable[0]._needUpdate = false;
if (_flagsTable[199] == 0) {
_flagsTable[199] = 1;
setCharacterAnimation(0, 0);
} else if (getRandomNumber() > 20000) {
- _spritesTable[0].state = 6;
+ _spritesTable[0]._state = 6;
} else {
- _spritesTable[0].state = 3;
- _spritesTable[0].updateDelay = 5;
+ _spritesTable[0]._state = 3;
+ _spritesTable[0]._updateDelay = 5;
}
} else {
if (_flagsTable[199] == 0) {
_flagsTable[199] = 1;
setCharacterAnimation(1, 0);
} else if (getRandomNumber() < 20000) {
- _spritesTable[0].state = 1;
- _spritesTable[0].updateDelay = 5;
+ _spritesTable[0]._state = 1;
+ _spritesTable[0]._updateDelay = 5;
} else {
- _spritesTable[0].state = 1;
+ _spritesTable[0]._state = 1;
}
}
}
@@ -199,7 +199,7 @@ void TuckerEngine::execData3PreUpdate_locationNum2() {
if (_updateLocationYPosTable2[i] > _updateLocationYMaxTable[i]) {
_updateLocationYPosTable2[i] = 0;
const int num = (getRandomNumber() < 16000) ? 2 : 3;
- startSound(_locationSoundsTable[num].offset, num, _locationSoundsTable[num].volume);
+ startSound(_locationSoundsTable[num]._offset, num, _locationSoundsTable[num]._volume);
}
} else if (getRandomNumber() > 32000) {
const int num = getRandomNumber() / 8192;
@@ -243,9 +243,9 @@ void TuckerEngine::updateSprite_locationNum3_0(int i) {
int num;
if (_charSpeechSoundCounter > 0 && _actionCharacterNum == i) {
num = 5;
- _spritesTable[i].needUpdate = 1;
- } else if (_spritesTable[i].prevState == 5 && _spritesTable[i].animationFrame == 1) {
- _spritesTable[i].needUpdate = 0;
+ _spritesTable[i]._needUpdate = true;
+ } else if (_spritesTable[i]._prevState == 5 && _spritesTable[i]._animationFrame == 1) {
+ _spritesTable[i]._needUpdate = false;
int r = getRandomNumber();
if (r < 12000) {
num = 3;
@@ -256,11 +256,11 @@ void TuckerEngine::updateSprite_locationNum3_0(int i) {
}
} else {
num = 5;
- _spritesTable[i].animationFrame = 1;
- _spritesTable[i].updateDelay = 10;
+ _spritesTable[i]._animationFrame = 1;
+ _spritesTable[i]._updateDelay = 10;
}
- _spritesTable[i].state = num;
- _spritesTable[i].prevAnimationFrame = 1;
+ _spritesTable[i]._state = num;
+ _spritesTable[i]._prevAnimationFrame = true;
}
void TuckerEngine::updateSprite_locationNum3_1(int i) {
@@ -268,44 +268,44 @@ void TuckerEngine::updateSprite_locationNum3_1(int i) {
if (_flagsTable[207] == 1) {
num = -1;
} else if (_flagsTable[203] == 1) {
- _spritesTable[i].needUpdate = 1;
+ _spritesTable[i]._needUpdate = true;
num = 20;
_flagsTable[203] = 2;
} else if (_flagsTable[203] == 2) {
num = 12;
} else if (_flagsTable[203] == 3) {
- _spritesTable[i].needUpdate = 0;
+ _spritesTable[i]._needUpdate = false;
num = 19;
_flagsTable[203] = 0;
} else if (_charSpeechSoundCounter > 0 && _actionCharacterNum == i) {
- _spritesTable[i].needUpdate = 1;
+ _spritesTable[i]._needUpdate = true;
if (_flagsTable[21] == 0) {
num = 7;
} else {
num = 8;
}
} else {
- _spritesTable[i].needUpdate = 0;
+ _spritesTable[i]._needUpdate = false;
if (_csDataHandled) {
num = 6;
if (getRandomNumber() < 32000) {
- _spritesTable[i].updateDelay = 5;
+ _spritesTable[i]._updateDelay = 5;
}
- } else if (_spritesTable[i].state == 6 && _spritesTable[i].animationFrame == 1) {
+ } else if (_spritesTable[i]._state == 6 && _spritesTable[i]._animationFrame == 1) {
if (getRandomNumber() < 20000) {
num = 11;
- _spritesTable[i].defaultUpdateDelay = 5;
+ _spritesTable[i]._defaultUpdateDelay = 5;
} else {
num = 10;
}
} else {
num = 6;
- _spritesTable[i].animationFrame = 1;
- _spritesTable[i].updateDelay = 10;
+ _spritesTable[i]._animationFrame = 1;
+ _spritesTable[i]._updateDelay = 10;
}
}
- _spritesTable[i].state = num;
- _spritesTable[i].gfxBackgroundOffset = 320;
+ _spritesTable[i]._state = num;
+ _spritesTable[i]._gfxBackgroundOffset = 320;
}
void TuckerEngine::updateSprite_locationNum3_2(int i) {
@@ -314,32 +314,32 @@ void TuckerEngine::updateSprite_locationNum3_2(int i) {
_flagsTable[205] = 0;
num = 18;
} else if (_charSpeechSoundCounter > 0 && _actionCharacterNum == i) {
- _spritesTable[i].needUpdate = 1;
+ _spritesTable[i]._needUpdate = true;
num = 17;
} else if (_flagsTable[45] == 1) {
_flagsTable[45] = 2;
num = 16;
} else if (_flagsTable[45] == 2) {
num = 17;
- _spritesTable[i].updateDelay = 5;
- _spritesTable[i].needUpdate = 0;
+ _spritesTable[i]._updateDelay = 5;
+ _spritesTable[i]._needUpdate = false;
} else if (_flagsTable[45] == 3) {
_flagsTable[45] = 0;
num = 16;
- _updateSpriteFlag2 = 1;
+ _updateSpriteFlag2 = true;
} else {
- _spritesTable[i].needUpdate = 0;
- ++_spritesTable[i].counter;
- if (_spritesTable[i].counter <= 5) {
+ _spritesTable[i]._needUpdate = false;
+ ++_spritesTable[i]._counter;
+ if (_spritesTable[i]._counter <= 5) {
num = 14;
} else {
- if (_spritesTable[i].counter > 8) {
- _spritesTable[i].counter = 0;
+ if (_spritesTable[i]._counter > 8) {
+ _spritesTable[i]._counter = 0;
}
num = 15;
}
}
- _spritesTable[i].state = num;
+ _spritesTable[i]._state = num;
}
void TuckerEngine::execData3PreUpdate_locationNum3() {
@@ -362,36 +362,36 @@ void TuckerEngine::updateSprite_locationNum4(int i) {
if (_flagsTable[9] == 2) {
if (_charSpeechSoundCounter > 0 && _actionCharacterNum == i) {
state = 1;
- _spritesTable[i].needUpdate = 1;
+ _spritesTable[i]._needUpdate = true;
} else {
state = 2;
- _spritesTable[i].needUpdate = 0;
+ _spritesTable[i]._needUpdate = false;
}
}
- _spritesTable[i].state = state;
+ _spritesTable[i]._state = state;
}
void TuckerEngine::execData3PreUpdate_locationNum4() {
if (_flagsTable[6] == 0) {
setVolumeSound(0, 0);
} else {
- setVolumeSound(0, _locationSoundsTable[0].volume);
+ setVolumeSound(0, _locationSoundsTable[0]._volume);
}
}
void TuckerEngine::updateSprite_locationNum5_0() {
- ++_spritesTable[0].counter;
- if (_spritesTable[0].counter > 100) {
- _spritesTable[0].counter = 0;
- _spritesTable[0].state = 1;
- _locationSoundsTable[1].type = 2;
- startSound(_locationSoundsTable[1].offset, 1, _locationSoundsTable[1].volume);
- } else if (_spritesTable[0].counter == 50) {
- _locationSoundsTable[1].type = 2;
- _spritesTable[0].state = 2;
- startSound(_locationSoundsTable[1].offset, 1, _locationSoundsTable[1].volume);
- } else {
- _spritesTable[0].state = -1;
+ ++_spritesTable[0]._counter;
+ if (_spritesTable[0]._counter > 100) {
+ _spritesTable[0]._counter = 0;
+ _spritesTable[0]._state = 1;
+ _locationSoundsTable[1]._type = 2;
+ startSound(_locationSoundsTable[1]._offset, 1, _locationSoundsTable[1]._volume);
+ } else if (_spritesTable[0]._counter == 50) {
+ _locationSoundsTable[1]._type = 2;
+ _spritesTable[0]._state = 2;
+ startSound(_locationSoundsTable[1]._offset, 1, _locationSoundsTable[1]._volume);
+ } else {
+ _spritesTable[0]._state = -1;
if (isSoundPlaying(1)) {
stopSound(1);
}
@@ -399,7 +399,7 @@ void TuckerEngine::updateSprite_locationNum5_0() {
}
void TuckerEngine::updateSprite_locationNum5_1(int i) {
- _spritesTable[i].state = 3;
+ _spritesTable[i]._state = 3;
}
void TuckerEngine::updateSprite_locationNum6_0(int i) {
@@ -410,29 +410,29 @@ void TuckerEngine::updateSprite_locationNum6_0(int i) {
state = 14;
} else if (_flagsTable[26] == 4 || _flagsTable[26] == 5) {
if (_charSpeechSoundCounter > 0 && _actionCharacterNum == 0) {
- _spritesTable[0].needUpdate = 1;
+ _spritesTable[0]._needUpdate = true;
state = 3;
- _spritesTable[0].counter = 0;
+ _spritesTable[0]._counter = 0;
} else if (_xPosCurrent < 370 && _flagsTable[26] == 4) {
state = 2;
- } else if (_spritesTable[0].counter == 0) {
+ } else if (_spritesTable[0]._counter == 0) {
setCharacterAnimation(0, 0);
- _updateSpriteFlag1 = 1;
- ++_spritesTable[0].counter;
+ _updateSpriteFlag1 = true;
+ ++_spritesTable[0]._counter;
return;
} else {
state = 1;
- _spritesTable[0].updateDelay = 2;
- ++_spritesTable[0].counter;
- if (_spritesTable[0].counter > 100) {
- _spritesTable[0].counter = 0;
+ _spritesTable[0]._updateDelay = 2;
+ ++_spritesTable[0]._counter;
+ if (_spritesTable[0]._counter > 100) {
+ _spritesTable[0]._counter = 0;
}
}
} else {
state = -1;
}
- _spritesTable[i].state = state;
- _spritesTable[i].gfxBackgroundOffset = 320;
+ _spritesTable[i]._state = state;
+ _spritesTable[i]._gfxBackgroundOffset = 320;
}
void TuckerEngine::updateSprite_locationNum6_1(int i) {
@@ -440,18 +440,18 @@ void TuckerEngine::updateSprite_locationNum6_1(int i) {
if (_charSpeechSoundCounter > 0 && _actionCharacterNum == i) {
if (_flagsTable[209] == 1) {
state = 9;
- _spritesTable[i].needUpdate = 1;
+ _spritesTable[i]._needUpdate = true;
} else {
- _spritesTable[i].needUpdate = 1;
+ _spritesTable[i]._needUpdate = true;
state = 10;
}
} else {
if (getRandomNumber() < 30000 || (_csDataHandled && _xPosCurrent == 248)) {
- _spritesTable[i].needUpdate = 0;
+ _spritesTable[i]._needUpdate = false;
state = 7;
- _spritesTable[i].updateDelay = 5;
+ _spritesTable[i]._updateDelay = 5;
} else {
- _spritesTable[i].needUpdate = 0;
+ _spritesTable[i]._needUpdate = false;
state = 7;
_miscSoundFxNum[0] = 3;
_miscSoundFxDelayCounter[0] = 70;
@@ -459,7 +459,7 @@ void TuckerEngine::updateSprite_locationNum6_1(int i) {
_miscSoundFxDelayCounter[1] = 25;
}
}
- _spritesTable[i].state = state;
+ _spritesTable[i]._state = state;
}
void TuckerEngine::updateSprite_locationNum6_2(int i) {
@@ -467,13 +467,13 @@ void TuckerEngine::updateSprite_locationNum6_2(int i) {
if (_flagsTable[26] < 5 || _flagsTable[207] > 0) {
state = -1;
} else if (_charSpeechSoundCounter > 0 && _actionCharacterNum == i) {
- _spritesTable[i].needUpdate = 1;
+ _spritesTable[i]._needUpdate = true;
state = 12;
} else {
state = 12;
- _spritesTable[i].updateDelay = 2;
+ _spritesTable[i]._updateDelay = 2;
}
- _spritesTable[i].state = state;
+ _spritesTable[i]._state = state;
}
void TuckerEngine::execData3PreUpdate_locationNum6() {
@@ -483,11 +483,11 @@ void TuckerEngine::execData3PreUpdate_locationNum6() {
if (_flagsTable[26] == 2) {
_currentSpriteAnimationLength = 2;
_currentSpriteAnimationFrame = 112;
- if (_spritesTable[0].xSource < 45) {
+ if (_spritesTable[0]._xSource < 45) {
_currentSpriteAnimationFrame2 = 144;
- } else if (_spritesTable[0].xSource > 80) {
+ } else if (_spritesTable[0]._xSource > 80) {
_currentSpriteAnimationFrame2 = 147;
- } else if (_spritesTable[0].xSource < 60) {
+ } else if (_spritesTable[0]._xSource < 60) {
_currentSpriteAnimationFrame2 = 145;
} else {
_currentSpriteAnimationFrame2 = 146;
@@ -500,24 +500,24 @@ void TuckerEngine::execData3PreUpdate_locationNum6Helper1() {
if (_flagsTable[26] == 1) {
if (_flagsTable[27] < 15) {
if (_flagsTable[27] == 0) {
- startSound(_locationSoundsTable[2].offset, 2, _locationSoundsTable[2].volume);
- startSound(_locationSoundsTable[1].offset, 1, _locationSoundsTable[1].volume);
+ startSound(_locationSoundsTable[2]._offset, 2, _locationSoundsTable[2]._volume);
+ startSound(_locationSoundsTable[1]._offset, 1, _locationSoundsTable[1]._volume);
}
++_flagsTable[27];
- setVolumeSound(0, _locationSoundsTable[0].volume - _flagsTable[27] * 5);
- setVolumeMusic(0, _locationMusicsTable[0].volume - _flagsTable[27] * 5);
+ setVolumeSound(0, _locationSoundsTable[0]._volume - _flagsTable[27] * 5);
+ setVolumeMusic(0, _locationMusicsTable[0]._volume - _flagsTable[27] * 5);
}
} else if (_flagsTable[26] == 3) {
if (_flagsTable[27] > 0) {
if (_flagsTable[27] == 15) {
- startSound(_locationSoundsTable[2].offset, 2, _locationSoundsTable[2].volume);
+ startSound(_locationSoundsTable[2]._offset, 2, _locationSoundsTable[2]._volume);
}
--_flagsTable[27];
- setVolumeSound(0, _locationSoundsTable[0].volume - _flagsTable[27] * 5);
- setVolumeMusic(0, _locationMusicsTable[0].volume - _flagsTable[27] * 5);
+ setVolumeSound(0, _locationSoundsTable[0]._volume - _flagsTable[27] * 5);
+ setVolumeMusic(0, _locationMusicsTable[0]._volume - _flagsTable[27] * 5);
int volume = _flagsTable[27];
- if (volume < _locationSoundsTable[1].volume) {
- volume = _locationSoundsTable[1].volume;
+ if (volume < _locationSoundsTable[1]._volume) {
+ volume = _locationSoundsTable[1]._volume;
}
setVolumeSound(1, volume);
}
@@ -538,12 +538,12 @@ void TuckerEngine::execData3PreUpdate_locationNum6Helper1() {
x2 = 15 - _flagsTable[27];
}
for (int i = 0; i < x1; ++i) {
- execData3PreUpdate_locationNum6Helper2(20 * 640 + 325 + i * 8, _data3GfxBuf + _dataTable[238].sourceOffset);
- execData3PreUpdate_locationNum6Helper2(20 * 640 + 445 - i * 8, _data3GfxBuf + _dataTable[238].sourceOffset);
+ execData3PreUpdate_locationNum6Helper2(20 * 640 + 325 + i * 8, _data3GfxBuf + _dataTable[238]._sourceOffset);
+ execData3PreUpdate_locationNum6Helper2(20 * 640 + 445 - i * 8, _data3GfxBuf + _dataTable[238]._sourceOffset);
}
for (int i = 0; i < x2; ++i) {
- execData3PreUpdate_locationNum6Helper3(20 * 640 + 325 + x1 * 8 + i * 4, _data3GfxBuf + _dataTable[238].sourceOffset);
- execData3PreUpdate_locationNum6Helper3(20 * 640 + 449 - x1 * 8 - i * 4, _data3GfxBuf + _dataTable[238].sourceOffset);
+ execData3PreUpdate_locationNum6Helper3(20 * 640 + 325 + x1 * 8 + i * 4, _data3GfxBuf + _dataTable[238]._sourceOffset);
+ execData3PreUpdate_locationNum6Helper3(20 * 640 + 449 - x1 * 8 - i * 4, _data3GfxBuf + _dataTable[238]._sourceOffset);
}
addDirtyRect(0, 20, 640, 51);
}
@@ -583,37 +583,37 @@ void TuckerEngine::execData3PostUpdate_locationNum6() {
void TuckerEngine::updateSprite_locationNum7_0(int i) {
int state;
- ++_spritesTable[i].counter;
+ ++_spritesTable[i]._counter;
if (_charSpeechSoundCounter > 0 && _actionCharacterNum == i) {
- _spritesTable[i].needUpdate = 1;
+ _spritesTable[i]._needUpdate = true;
state = 4;
} else {
- _spritesTable[i].needUpdate = 0;
- if (_spritesTable[i].counter > 0) {
+ _spritesTable[i]._needUpdate = false;
+ if (_spritesTable[i]._counter > 0) {
state = 2;
- _spritesTable[i].counter = 0;
+ _spritesTable[i]._counter = 0;
} else {
state = 1;
}
}
- _spritesTable[i].state = state;
+ _spritesTable[i]._state = state;
}
void TuckerEngine::updateSprite_locationNum7_1(int i) {
int state;
if (_charSpeechSoundCounter > 0 && _actionCharacterNum == i) {
- _spritesTable[i].needUpdate = 1;
+ _spritesTable[i]._needUpdate = true;
state = 5;
} else {
- _spritesTable[i].needUpdate = 0;
+ _spritesTable[i]._needUpdate = false;
state = 5;
- _spritesTable[i].updateDelay = 5;
+ _spritesTable[i]._updateDelay = 5;
}
- _spritesTable[i].state = state;
+ _spritesTable[i]._state = state;
}
void TuckerEngine::updateSprite_locationNum8_0(int i) {
- _spritesTable[i].state = (_flagsTable[28] < 20) ? -1 : 7;
+ _spritesTable[i]._state = (_flagsTable[28] < 20) ? -1 : 7;
}
void TuckerEngine::updateSprite_locationNum8_1(int i) {
@@ -622,20 +622,20 @@ void TuckerEngine::updateSprite_locationNum8_1(int i) {
state = -1;
} else if (_flagsTable[28] == 18) {
state = 6;
- _spritesTable[i].needUpdate = 0;
+ _spritesTable[i]._needUpdate = false;
} else if (_flagsTable[29] == 0) {
state = 1;
} else if (_charSpeechSoundCounter > 0 && _actionCharacterNum == 1) {
- _spritesTable[i].needUpdate = 1;
+ _spritesTable[i]._needUpdate = true;
state = 5;
} else {
- _spritesTable[i].needUpdate = 0;
+ _spritesTable[i]._needUpdate = false;
state = 3;
}
if (_flagsTable[28] == 19) {
_flagsTable[28] = 20;
}
- _spritesTable[i].state = state;
+ _spritesTable[i]._state = state;
}
void TuckerEngine::execData3PostUpdate_locationNum8() {
@@ -662,7 +662,7 @@ void TuckerEngine::execData3PostUpdate_locationNum8() {
_updateLocationYPosTable2[0] += 2;
if (_updateLocationYPosTable2[0] > 120) {
_updateLocationYPosTable2[0] = 0;
- startSound(_locationSoundsTable[2].offset, 2, _locationSoundsTable[2].volume);
+ startSound(_locationSoundsTable[2]._offset, 2, _locationSoundsTable[2]._volume);
}
}
if (_flagsTable[28] > 1 && _flagsTable[28] < 5) {
@@ -674,82 +674,82 @@ void TuckerEngine::execData3PostUpdate_locationNum8() {
void TuckerEngine::updateSprite_locationNum9_0(int i) {
if (_charSpeechSoundCounter > 0 && _actionCharacterNum == 0) {
- _spritesTable[i].needUpdate = 1;
- _spritesTable[i].state = 3;
+ _spritesTable[i]._needUpdate = true;
+ _spritesTable[i]._state = 3;
} else if (_updateLocationCounter2 > 0 || getRandomNumber() > 30000) {
- _spritesTable[i].state = 1;
+ _spritesTable[i]._state = 1;
if (_updateLocationCounter2 == 0) {
_updateLocationCounter2 = 6;
}
} else if (getRandomNumber() > 30000) {
- _spritesTable[i].state = 2;
- _spritesTable[i].defaultUpdateDelay = 5;
+ _spritesTable[i]._state = 2;
+ _spritesTable[i]._defaultUpdateDelay = 5;
} else {
- _spritesTable[i].state = 1;
- _spritesTable[i].animationFrame = 1;
- _spritesTable[i].updateDelay = 10;
+ _spritesTable[i]._state = 1;
+ _spritesTable[i]._animationFrame = 1;
+ _spritesTable[i]._updateDelay = 10;
}
}
void TuckerEngine::updateSprite_locationNum9_1(int i) {
- ++_spritesTable[i].counter;
- if (_spritesTable[i].counter > 10) {
- _spritesTable[i].counter = 0;
- _spritesTable[i].state = 5;
- _spritesTable[i].defaultUpdateDelay = 5;
+ ++_spritesTable[i]._counter;
+ if (_spritesTable[i]._counter > 10) {
+ _spritesTable[i]._counter = 0;
+ _spritesTable[i]._state = 5;
+ _spritesTable[i]._defaultUpdateDelay = 5;
} else {
- _spritesTable[i].state = 4;
+ _spritesTable[i]._state = 4;
}
}
void TuckerEngine::updateSprite_locationNum9_2(int i) {
- _spritesTable[i].state = 6;
- _spritesTable[i].gfxBackgroundOffset = 320;
+ _spritesTable[i]._state = 6;
+ _spritesTable[i]._gfxBackgroundOffset = 320;
}
void TuckerEngine::execData3PreUpdate_locationNum9() {
if (_flagsTable[7] < 2) {
_flagsTable[7] = 2;
}
- if (_flagsTable[8] == 0 && _locationMusicsTable[0].volume != 0) {
- _locationMusicsTable[0].volume = 0;
+ if (_flagsTable[8] == 0 && _locationMusicsTable[0]._volume != 0) {
+ _locationMusicsTable[0]._volume = 0;
} else {
- _locationMusicsTable[0].volume = _xPosCurrent / 40;
+ _locationMusicsTable[0]._volume = _xPosCurrent / 40;
}
- setVolumeMusic(0, _locationMusicsTable[0].volume);
+ setVolumeMusic(0, _locationMusicsTable[0]._volume);
if (!isSoundPlaying(1) && getRandomNumber() > 32000) {
int i = getRandomNumber() / 5500 + 3;
assert(i >= 0 && i < kLocationSoundsTableSize);
- startSound(_locationSoundsTable[i].offset, i, _locationSoundsTable[i].volume);
+ startSound(_locationSoundsTable[i]._offset, i, _locationSoundsTable[i]._volume);
}
if (_flagsTable[8] == 2 && _locationMaskType == 0) {
_flagsTable[8] = 0;
- startSound(_locationSoundsTable[7].offset, 7, _locationSoundsTable[7].volume);
+ startSound(_locationSoundsTable[7]._offset, 7, _locationSoundsTable[7]._volume);
}
}
void TuckerEngine::execData3PostUpdate_locationNum9() {
- if (_spritesTable[1].state == 4) {
- if (_spritesTable[1].flipX == 1) {
+ if (_spritesTable[1]._state == 4) {
+ if (_spritesTable[1]._flipX) {
--_updateLocationXPosTable2[0];
if (_updateLocationXPosTable2[0] < -50) {
- _spritesTable[1].flipX = 0;
+ _spritesTable[1]._flipX = false;
_updateLocationXPosTable2[0] = -50;
}
} else {
++_updateLocationXPosTable2[0];
if (_updateLocationXPosTable2[0] > 500) {
- _spritesTable[1].flipX = 1;
+ _spritesTable[1]._flipX = true;
_updateLocationXPosTable2[0] = 500;
}
}
}
- _spritesTable[1].gfxBackgroundOffset = _updateLocationXPosTable2[0] + 8320;
+ _spritesTable[1]._gfxBackgroundOffset = _updateLocationXPosTable2[0] + 8320;
for (int i = 1; i < 3; ++i) {
- _spritesTable[i].colorType = 1;
- _spritesTable[i].yMaxBackground = 60;
+ _spritesTable[i]._colorType = 1;
+ _spritesTable[i]._yMaxBackground = 60;
drawSprite(i);
- _spritesTable[i].colorType = 0;
+ _spritesTable[i]._colorType = 0;
}
}
@@ -759,7 +759,7 @@ void TuckerEngine::updateSprite_locationNum10() {
if (_flagsTable[99] == 1) {
state = -1;
} else if (_charSpeechSoundCounter > 0 && _actionCharacterNum == 0) {
- _spritesTable[0].needUpdate = 1;
+ _spritesTable[0]._needUpdate = true;
if (r < 26000) {
state = 1;
} else if (r < 29000) {
@@ -769,12 +769,12 @@ void TuckerEngine::updateSprite_locationNum10() {
}
} else if (_csDataHandled) {
state = 2;
- _spritesTable[0].updateDelay = 4;
+ _spritesTable[0]._updateDelay = 4;
} else {
- _spritesTable[0].needUpdate = 0;
+ _spritesTable[0]._needUpdate = false;
if (r > 26000) {
state = 5;
- _spritesTable[0].prevAnimationFrame = 1;
+ _spritesTable[0]._prevAnimationFrame = true;
} else if (r > 24000) {
state = 6;
_miscSoundFxDelayCounter[0] = 120;
@@ -783,7 +783,7 @@ void TuckerEngine::updateSprite_locationNum10() {
setCharacterAnimation(0, 0);
}
}
- _spritesTable[0].state = state;
+ _spritesTable[0]._state = state;
}
void TuckerEngine::execData3PreUpdate_locationNum10() {
@@ -797,8 +797,8 @@ void TuckerEngine::execData3PreUpdate_locationNum10() {
if (_flagsTable[47] == 1 && _inventoryItemsState[26] == 1) {
_flagsTable[47] = 2;
}
- if (_spritesTable[0].state == 6 && _spritesTable[0].animationFrame == 18 && !isSoundPlaying(0)) {
- startSound(_locationSoundsTable[0].offset, 0, _locationSoundsTable[0].volume);
+ if (_spritesTable[0]._state == 6 && _spritesTable[0]._animationFrame == 18 && !isSoundPlaying(0)) {
+ startSound(_locationSoundsTable[0]._offset, 0, _locationSoundsTable[0]._volume);
}
if (_flagsTable[230] == 1 && getRandomNumber() > 32000) {
_flagsTable[230] = 0;
@@ -808,52 +808,52 @@ void TuckerEngine::execData3PreUpdate_locationNum10() {
void TuckerEngine::updateSprite_locationNum11_0(int i) {
const int r = getRandomNumber();
if (_charSpeechSoundCounter > 0 && _actionCharacterNum == i) {
- _spritesTable[i].needUpdate = 1;
- _spritesTable[i].state = 2;
+ _spritesTable[i]._needUpdate = true;
+ _spritesTable[i]._state = 2;
} else {
- _spritesTable[i].needUpdate = 0;
+ _spritesTable[i]._needUpdate = false;
if (r > 28000) {
- _spritesTable[i].state = 3;
+ _spritesTable[i]._state = 3;
} else if (r > 20000) {
- _spritesTable[i].state = 4;
+ _spritesTable[i]._state = 4;
} else {
- _spritesTable[i].state = 3;
- _spritesTable[i].animationFrame = 1;
- _spritesTable[i].updateDelay = 5;
+ _spritesTable[i]._state = 3;
+ _spritesTable[i]._animationFrame = 1;
+ _spritesTable[i]._updateDelay = 5;
}
}
}
void TuckerEngine::updateSprite_locationNum11_1(int i) {
if (getRandomNumber() > 20000) {
- _spritesTable[i].state = 5;
+ _spritesTable[i]._state = 5;
} else {
- _spritesTable[i].animationFrame = 14;
- _updateSpriteFlag1 = 1;
- _spritesTable[i].state = 5;
+ _spritesTable[i]._animationFrame = 14;
+ _updateSpriteFlag1 = true;
+ _spritesTable[i]._state = 5;
}
}
void TuckerEngine::updateSprite_locationNum11_2(int i) {
if (getRandomNumber() > 20000) {
- _spritesTable[i].state = 6;
+ _spritesTable[i]._state = 6;
} else {
- _spritesTable[i].animationFrame = 17;
- _spritesTable[i].state = 6;
- _updateSpriteFlag1 = 1;
+ _spritesTable[i]._animationFrame = 17;
+ _spritesTable[i]._state = 6;
+ _updateSpriteFlag1 = true;
}
}
void TuckerEngine::updateSprite_locationNum11_3(int i) {
- _spritesTable[i].state = 7;
+ _spritesTable[i]._state = 7;
}
void TuckerEngine::updateSprite_locationNum11_4(int i) {
if (getRandomNumber() > 30000 && _flagsTable[55] < 2) {
- _spritesTable[i].state = 1;
- startSound(_locationSoundsTable[6].offset, 6, _locationSoundsTable[6].volume);
+ _spritesTable[i]._state = 1;
+ startSound(_locationSoundsTable[6]._offset, 6, _locationSoundsTable[6]._volume);
} else {
- _spritesTable[i].state = -1;
+ _spritesTable[i]._state = -1;
}
}
@@ -866,10 +866,10 @@ void TuckerEngine::updateSprite_locationNum12_0(int i) {
if (_flagsTable[207] > 0) {
state = -1;
} else if (_charSpeechSoundCounter > 0 && _actionCharacterNum == i) {
- _spritesTable[i].needUpdate = 1;
+ _spritesTable[i]._needUpdate = true;
state = 5;
} else {
- _spritesTable[i].needUpdate = 0;
+ _spritesTable[i]._needUpdate = false;
if (_updateLocationCounter2 < 4) {
state = 1;
} else if (_updateLocationCounter2 < 8) {
@@ -878,7 +878,7 @@ void TuckerEngine::updateSprite_locationNum12_0(int i) {
state = 4;
}
}
- _spritesTable[i].state = state;
+ _spritesTable[i]._state = state;
}
void TuckerEngine::updateSprite_locationNum12_1(int i) {
@@ -891,7 +891,7 @@ void TuckerEngine::updateSprite_locationNum12_1(int i) {
} else {
state = 8;
}
- _spritesTable[i].state = state;
+ _spritesTable[i]._state = state;
}
void TuckerEngine::execData3PreUpdate_locationNum12() {
@@ -899,13 +899,13 @@ void TuckerEngine::execData3PreUpdate_locationNum12() {
_flagsTable[38] = 1;
}
if (_flagsTable[41] == 0) {
- if (_locationMusicsTable[0].volume != 100) {
- _locationMusicsTable[0].volume = 100;
+ if (_locationMusicsTable[0]._volume != 100) {
+ _locationMusicsTable[0]._volume = 100;
setVolumeMusic(0, 100);
}
} else {
- if (_locationMusicsTable[0].volume != 20) {
- _locationMusicsTable[0].volume = 20;
+ if (_locationMusicsTable[0]._volume != 20) {
+ _locationMusicsTable[0]._volume = 20;
setVolumeMusic(0, 20);
}
}
@@ -917,44 +917,44 @@ void TuckerEngine::updateSprite_locationNum13(int i) {
if (_flagsTable[202] == 0) {
_flagsTable[202] = 1;
state = 3;
- _spritesTable[i].stateIndex = -1;
+ _spritesTable[i]._stateIndex = -1;
} else if (_charSpeechSoundCounter > 0 && _actionCharacterNum == i) {
state = 4;
- _spritesTable[i].needUpdate = 1;
+ _spritesTable[i]._needUpdate = true;
} else {
- _spritesTable[i].needUpdate = 0;
+ _spritesTable[i]._needUpdate = false;
state = 5;
}
} else if (_flagsTable[202] == 1) {
- _spritesTable[i].needUpdate = 0;
+ _spritesTable[i]._needUpdate = false;
_flagsTable[202] = 0;
state = 6;
} else {
setCharacterAnimation(0, 0);
return;
}
- _spritesTable[i].state = state;
+ _spritesTable[i]._state = state;
}
void TuckerEngine::execData3PreUpdate_locationNum13() {
if (_flagsTable[69] == 0) {
if (getRandomNumber() > 31000) {
_flagsTable[69] = 1;
- startSound(_locationSoundsTable[1].offset, 1, _locationSoundsTable[1].volume);
+ startSound(_locationSoundsTable[1]._offset, 1, _locationSoundsTable[1]._volume);
} else if (isSoundPlaying(1)) {
stopSound(1);
}
}
_flagsTable[8] = 2;
- if (_spritesTable[0].state == 1) {
- if (_spritesTable[0].animationFrame > 10 && _spritesTable[0].animationFrame < 20) {
+ if (_spritesTable[0]._state == 1) {
+ if (_spritesTable[0]._animationFrame > 10 && _spritesTable[0]._animationFrame < 20) {
if (!isSoundPlaying(0)) {
- startSound(_locationSoundsTable[0].offset, 0, _locationSoundsTable[0].volume);
+ startSound(_locationSoundsTable[0]._offset, 0, _locationSoundsTable[0]._volume);
}
}
}
if (isSoundPlaying(0)) {
- if (_spritesTable[0].animationFrame > 10 && _spritesTable[0].animationFrame < 20) {
+ if (_spritesTable[0]._animationFrame > 10 && _spritesTable[0]._animationFrame < 20) {
stopSound(0);
}
}
@@ -963,12 +963,12 @@ void TuckerEngine::execData3PreUpdate_locationNum13() {
void TuckerEngine::updateSprite_locationNum14(int i) {
int state = 2;
if (_charSpeechSoundCounter > 0 && _actionCharacterNum == i) {
- _spritesTable[i].needUpdate = 1;
+ _spritesTable[i]._needUpdate = true;
state = (getRandomNumber() < 12000) ? 1 : 3;
} else if (getRandomNumber() < 26000) {
- _spritesTable[i].updateDelay = 5;
+ _spritesTable[i]._updateDelay = 5;
}
- _spritesTable[i].state = state;
+ _spritesTable[i]._state = state;
}
void TuckerEngine::execData3PreUpdate_locationNum14() {
@@ -988,7 +988,7 @@ void TuckerEngine::execData3PreUpdate_locationNum14() {
num = 7;
}
if (num != -1) {
- startSound(_locationSoundsTable[num].offset, num, _locationSoundsTable[num].volume);
+ startSound(_locationSoundsTable[num]._offset, num, _locationSoundsTable[num]._volume);
}
}
_locationHeightTable[14] = (_xPosCurrent < 100) ? 0 : 60;
@@ -1008,11 +1008,11 @@ void TuckerEngine::execData3PreUpdate_locationNum14() {
}
const int num = _updateLocation14ObjNum[i];
if (num > 0) {
- const int w = _dataTable[num].xSize;
- const int h = _dataTable[num].ySize;
+ const int w = _dataTable[num]._xSize;
+ const int h = _dataTable[num]._ySize;
const int x = _updateLocationXPosTable2[i] - w / 2;
const int y = _updateLocationYPosTable2[i] / 16 - h / 2;
- Graphics::decodeRLE_248(_locationBackgroundGfxBuf + y * 640 + x, _data3GfxBuf + _dataTable[num].sourceOffset, w, h, 0, 0, false);
+ Graphics::decodeRLE_248(_locationBackgroundGfxBuf + y * 640 + x, _data3GfxBuf + _dataTable[num]._sourceOffset, w, h, 0, 0, false);
addDirtyRect(x, y, w, h);
}
}
@@ -1063,41 +1063,41 @@ void TuckerEngine::execData3PostUpdate_locationNum14() {
}
void TuckerEngine::updateSprite_locationNum15_0(int i) {
- _spritesTable[i].state = -1;
+ _spritesTable[i]._state = -1;
}
void TuckerEngine::updateSprite_locationNum15_1(int i) {
int state;
int r = getRandomNumber();
if (_charSpeechSoundCounter > 0 && _actionCharacterNum == i) {
- _spritesTable[i].needUpdate = 1;
+ _spritesTable[i]._needUpdate = true;
state = 6;
} else {
- _spritesTable[i].needUpdate = 0;
+ _spritesTable[i]._needUpdate = false;
if (r < 26000) {
state = 5;
} else if (r < 29000) {
state = 2;
- _spritesTable[i].prevAnimationFrame = 1;
+ _spritesTable[i]._prevAnimationFrame = true;
} else {
state = 4;
- _spritesTable[4].counter = 1;
+ _spritesTable[4]._counter = 1;
}
}
- _spritesTable[i].state = state;
+ _spritesTable[i]._state = state;
}
void TuckerEngine::updateSprite_locationNum15_2(int i) {
- _spritesTable[i].state = 3;
- if (_spritesTable[4].counter > 0) {
- ++_spritesTable[4].counter;
- if (_spritesTable[4].counter > 6) {
- _spritesTable[4].counter = 0;
+ _spritesTable[i]._state = 3;
+ if (_spritesTable[4]._counter > 0) {
+ ++_spritesTable[4]._counter;
+ if (_spritesTable[4]._counter > 6) {
+ _spritesTable[4]._counter = 0;
} else {
- _spritesTable[i].updateDelay = 2;
+ _spritesTable[i]._updateDelay = 2;
}
} else {
- _spritesTable[i].updateDelay = 2;
+ _spritesTable[i]._updateDelay = 2;
}
}
@@ -1106,7 +1106,7 @@ void TuckerEngine::execData3PreUpdate_locationNum15() {
if (_updateLocationFadePaletteCounter > 500) {
if (!isSoundPlaying(1) && getRandomNumber() > 31000) {
const int i = getRandomNumber() / 4714;
- startSound(_locationSoundsTable[i].offset, i, _locationSoundsTable[i].volume);
+ startSound(_locationSoundsTable[i]._offset, i, _locationSoundsTable[i]._volume);
_updateLocationFadePaletteCounter = 0;
}
}
@@ -1123,21 +1123,21 @@ void TuckerEngine::updateSprite_locationNum16_0(int i) {
} else if (_flagsTable[82] == 2) {
state = -1;
} else if (_charSpeechSoundCounter > 0 && _actionCharacterNum == 0) {
- if (_spritesTable[0].needUpdate == 0) {
- _spritesTable[0].needUpdate = 1;
+ if (!_spritesTable[0]._needUpdate) {
+ _spritesTable[0]._needUpdate = true;
state = 1;
} else {
state = 1;
- _spritesTable[0].animationFrame = 2;
- _updateSpriteFlag1 = 1;
+ _spritesTable[0]._animationFrame = 2;
+ _updateSpriteFlag1 = true;
}
} else if (_csDataHandled) {
- _spritesTable[0].needUpdate = 0;
+ _spritesTable[0]._needUpdate = false;
state = 4;
- _spritesTable[0].updateDelay = 5;
+ _spritesTable[0]._updateDelay = 5;
} else if (r < 30000) {
state = 4;
- _spritesTable[0].updateDelay = 5;
+ _spritesTable[0]._updateDelay = 5;
} else if (r < 31000) {
state = 4;
if (_xPosCurrent < 300) {
@@ -1149,7 +1149,7 @@ void TuckerEngine::updateSprite_locationNum16_0(int i) {
} else {
state = 6;
}
- _spritesTable[i].state = state;
+ _spritesTable[i]._state = state;
}
void TuckerEngine::updateSprite_locationNum16_1(int i) {
@@ -1164,18 +1164,18 @@ void TuckerEngine::updateSprite_locationNum16_1(int i) {
} else if (_flagsTable[60] == 0) {
state = 10;
if (isSoundPlaying(1)) {
- _locationSoundsTable[1].type = 2;
- startSound(_locationSoundsTable[1].offset, 1, _locationSoundsTable[1].volume);
+ _locationSoundsTable[1]._type = 2;
+ startSound(_locationSoundsTable[1]._offset, 1, _locationSoundsTable[1]._volume);
}
} else {
state = 9;
if (isSoundPlaying(0)) {
- _locationSoundsTable[0].type = 2;
- startSound(_locationSoundsTable[0].offset, 0, _locationSoundsTable[0].volume);
+ _locationSoundsTable[0]._type = 2;
+ startSound(_locationSoundsTable[0]._offset, 0, _locationSoundsTable[0]._volume);
}
}
- _spritesTable[i].state = state;
- _spritesTable[i].gfxBackgroundOffset = 320;
+ _spritesTable[i]._state = state;
+ _spritesTable[i]._gfxBackgroundOffset = 320;
}
void TuckerEngine::updateSprite_locationNum16_2(int i) {
@@ -1183,27 +1183,27 @@ void TuckerEngine::updateSprite_locationNum16_2(int i) {
if (_flagsTable[78] == 0) {
if (_flagsTable[60] == 1 && _flagsTable[61] == 1) {
_flagsTable[78] = 1;
- startSound(_locationSoundsTable[5].offset, 5, _locationSoundsTable[5].volume);
+ startSound(_locationSoundsTable[5]._offset, 5, _locationSoundsTable[5]._volume);
state = 7;
}
} else if (_flagsTable[78] == 1) {
if (_charSpeechSoundCounter > 0 && _actionCharacterNum == i) {
- _spritesTable[i].needUpdate = 1;
+ _spritesTable[i]._needUpdate = true;
state = 8;
} else {
if (getRandomNumber() > 32000) {
state = 7;
} else if (getRandomNumber() > 10000) {
state = 13;
- _spritesTable[i].updateDelay = 5;
+ _spritesTable[i]._updateDelay = 5;
} else {
state = 13;
}
- _spritesTable[i].needUpdate = 1;
+ _spritesTable[i]._needUpdate = true;
}
}
- _spritesTable[i].state = state;
- _spritesTable[i].gfxBackgroundOffset = 320;
+ _spritesTable[i]._state = state;
+ _spritesTable[i]._gfxBackgroundOffset = 320;
}
void TuckerEngine::execData3PreUpdate_locationNum16() {
@@ -1218,26 +1218,26 @@ void TuckerEngine::updateSprite_locationNum17() {
} else if (_flagsTable[82] == 2) {
_flagsTable[82] = 3;
_disableCharactersPath = true;
- _spritesTable[0].gfxBackgroundOffset = 100;
+ _spritesTable[0]._gfxBackgroundOffset = 100;
state = 1;
- _spritesTable[0].backgroundOffset = -1;
- } else if (_spritesTable[0].gfxBackgroundOffset < -160) {
+ _spritesTable[0]._backgroundOffset = -1;
+ } else if (_spritesTable[0]._gfxBackgroundOffset < -160) {
state = -1;
} else {
state = 1;
- _spritesTable[0].yMaxBackground = 0;
- _spritesTable[0].colorType = 1;
+ _spritesTable[0]._yMaxBackground = 0;
+ _spritesTable[0]._colorType = 1;
}
- _spritesTable[0].state = state;
+ _spritesTable[0]._state = state;
}
void TuckerEngine::updateSprite_locationNum18() {
int state;
if (_charSpeechSoundCounter > 0 && _actionCharacterNum == 0) {
- _spritesTable[0].needUpdate = 1;
+ _spritesTable[0]._needUpdate = true;
state = 2;
} else {
- _spritesTable[0].needUpdate = 0;
+ _spritesTable[0]._needUpdate = false;
state = 1;
const int r = getRandomNumber();
if (r > 31000) {
@@ -1246,54 +1246,54 @@ void TuckerEngine::updateSprite_locationNum18() {
state = 4;
}
}
- _spritesTable[0].gfxBackgroundOffset = 0;
- _spritesTable[0].backgroundOffset = 0;
- _spritesTable[0].state = state;
+ _spritesTable[0]._gfxBackgroundOffset = 0;
+ _spritesTable[0]._backgroundOffset = 0;
+ _spritesTable[0]._state = state;
}
void TuckerEngine::updateSprite_locationNum19_0(int i) {
int state;
if (_flagsTable[206] == 1) {
state = 7;
- _spritesTable[i].needUpdate = 0;
+ _spritesTable[i]._needUpdate = false;
_flagsTable[206] = 0;
} else if (_charSpeechSoundCounter > 0 && _actionCharacterNum == i) {
- ++_spritesTable[i].counter;
- _spritesTable[i].needUpdate = 1;
- if (_spritesTable[i].counter > 10) {
- _spritesTable[i].counter = 0;
+ ++_spritesTable[i]._counter;
+ _spritesTable[i]._needUpdate = true;
+ if (_spritesTable[i]._counter > 10) {
+ _spritesTable[i]._counter = 0;
state = 2;
} else {
state = 1;
}
} else {
- _spritesTable[i].needUpdate = 0;
- if (_spritesTable[i].counter > 10) {
- _spritesTable[i].counter = 0;
+ _spritesTable[i]._needUpdate = false;
+ if (_spritesTable[i]._counter > 10) {
+ _spritesTable[i]._counter = 0;
}
- if (_spritesTable[i].counter == 2) {
+ if (_spritesTable[i]._counter == 2) {
state = 4;
- _spritesTable[i].prevAnimationFrame = 1;
- } else if (_spritesTable[i].counter == 5) {
+ _spritesTable[i]._prevAnimationFrame = true;
+ } else if (_spritesTable[i]._counter == 5) {
state = 5;
- _spritesTable[i].prevAnimationFrame = 1;
+ _spritesTable[i]._prevAnimationFrame = true;
} else {
state = 5;
- _spritesTable[i].updateDelay = 6;
+ _spritesTable[i]._updateDelay = 6;
}
}
- _spritesTable[i].state = state;
- _spritesTable[i].prevAnimationFrame = 1;
+ _spritesTable[i]._state = state;
+ _spritesTable[i]._prevAnimationFrame = true;
}
void TuckerEngine::updateSprite_locationNum19_1(int i) {
- _spritesTable[i].state = 9;
- _spritesTable[i].gfxBackgroundOffset = 320;
+ _spritesTable[i]._state = 9;
+ _spritesTable[i]._gfxBackgroundOffset = 320;
}
void TuckerEngine::updateSprite_locationNum19_2(int i) {
- _spritesTable[i].gfxBackgroundOffset = 320;
- _spritesTable[i].state = -1;
+ _spritesTable[i]._gfxBackgroundOffset = 320;
+ _spritesTable[i]._state = -1;
}
void TuckerEngine::updateSprite_locationNum19_3(int i) {
@@ -1313,36 +1313,36 @@ void TuckerEngine::updateSprite_locationNum21() {
} else if (_flagsTable[58] == 3) {
state = 6;
_flagsTable[58] = 4;
- _locationSoundsTable[0].volume = 60;
- _locationSoundsTable[5].volume = 60;
+ _locationSoundsTable[0]._volume = 60;
+ _locationSoundsTable[5]._volume = 60;
} else if (_flagsTable[58] == 4) {
state = 7;
- _locationSoundsTable[4].volume = 60;
+ _locationSoundsTable[4]._volume = 60;
} else if (_flagsTable[59] == 4) {
- _spritesTable[0].needUpdate = 1;
+ _spritesTable[0]._needUpdate = true;
_flagsTable[59] = 2;
state = 2;
setVolumeSound(2, 0);
} else if (_flagsTable[59] == 3) {
_flagsTable[59] = 0;
state = 4;
- setVolumeSound(2, _locationSoundsTable[2].volume);
+ setVolumeSound(2, _locationSoundsTable[2]._volume);
} else if (_charSpeechSoundCounter > 0 && _actionCharacterNum == 0) {
- _spritesTable[0].needUpdate = 1;
+ _spritesTable[0]._needUpdate = true;
state = 3;
} else if (_flagsTable[59] == 2) {
- _spritesTable[0].needUpdate = 0;
+ _spritesTable[0]._needUpdate = false;
state = 3;
- _spritesTable[0].updateDelay = 5;
+ _spritesTable[0]._updateDelay = 5;
} else if (_flagsTable[15] == 1) {
state = 3;
- _spritesTable[0].updateDelay = 5;
+ _spritesTable[0]._updateDelay = 5;
} else {
- _spritesTable[0].needUpdate = 0;
+ _spritesTable[0]._needUpdate = false;
state = 1;
}
- _spritesTable[0].state = state;
- _spritesTable[0].gfxBackgroundOffset = 320;
+ _spritesTable[0]._state = state;
+ _spritesTable[0]._gfxBackgroundOffset = 320;
}
void TuckerEngine::execData3PreUpdate_locationNum21() {
@@ -1351,7 +1351,7 @@ void TuckerEngine::execData3PreUpdate_locationNum21() {
_pendingActionDelay = 0;
_flagsTable[59] = 1;
_nextAction = 2;
- _csDataLoaded = 0;
+ _csDataLoaded = false;
}
if (_flagsTable[58] > 0 && !isSoundPlaying(0)) {
const int r = getRandomNumber();
@@ -1364,17 +1364,17 @@ void TuckerEngine::execData3PreUpdate_locationNum21() {
} else {
num = 5;
}
- startSound(_locationSoundsTable[num].offset, num, _locationSoundsTable[num].volume);
+ startSound(_locationSoundsTable[num]._offset, num, _locationSoundsTable[num]._volume);
}
}
- if (_spritesTable[0].state == 6) {
- if (_spritesTable[0].animationFrame < 18) {
- _spritesTable[0].gfxBackgroundOffset = 320 + _spritesTable[0].animationFrame * 638;
+ if (_spritesTable[0]._state == 6) {
+ if (_spritesTable[0]._animationFrame < 18) {
+ _spritesTable[0]._gfxBackgroundOffset = 320 + _spritesTable[0]._animationFrame * 638;
} else {
- _spritesTable[0].gfxBackgroundOffset = 11840 - _spritesTable[0].animationFrame * 2;
+ _spritesTable[0]._gfxBackgroundOffset = 11840 - _spritesTable[0]._animationFrame * 2;
}
} else {
- _spritesTable[0].gfxBackgroundOffset = 320;
+ _spritesTable[0]._gfxBackgroundOffset = 320;
}
if (_inventoryItemsState[19] > 0) {
_flagsTable[43] = 1;
@@ -1397,20 +1397,20 @@ void TuckerEngine::execData3PreUpdate_locationNum22() {
}
if (_flagsTable[210] < 2 && !_csDataHandled && _flagsTable[54] == 1) {
_nextAction = 25;
- _csDataLoaded = 0;
+ _csDataLoaded = false;
_flagsTable[210] = 2;
}
}
void TuckerEngine::updateSprite_locationNum22() {
if (_flagsTable[207] == 1) {
- _spritesTable[0].state = -1;
+ _spritesTable[0]._state = -1;
} else if (_charSpeechSoundCounter > 0 && _actionCharacterNum == 0) {
- _spritesTable[0].needUpdate = 1;
- _spritesTable[0].state = 2;
+ _spritesTable[0]._needUpdate = true;
+ _spritesTable[0]._state = 2;
} else {
- _spritesTable[0].needUpdate = 0;
- _spritesTable[0].state = 1;
+ _spritesTable[0]._needUpdate = false;
+ _spritesTable[0]._state = 1;
}
}
@@ -1421,37 +1421,37 @@ void TuckerEngine::updateSprite_locationNum23_0(int i) {
} else {
state = -1;
}
- _spritesTable[i].state = state;
+ _spritesTable[i]._state = state;
}
void TuckerEngine::updateSprite_locationNum23_1(int i) {
int state;
if (_charSpeechSoundCounter > 0 && _actionCharacterNum == i) {
- _spritesTable[i].needUpdate = 1;
+ _spritesTable[i]._needUpdate = true;
state = 14;
} else if (getRandomNumber() < 30000) {
- _spritesTable[i].needUpdate = 0;
+ _spritesTable[i]._needUpdate = false;
state = 25;
} else {
- _spritesTable[i].needUpdate = 0;
+ _spritesTable[i]._needUpdate = false;
state = 13;
}
- _spritesTable[i].state = state;
+ _spritesTable[i]._state = state;
}
void TuckerEngine::updateSprite_locationNum23_2(int i) {
int state = 0;
if (_flagsTable[210] == 0) {
if (_charSpeechSoundCounter > 0 && _actionCharacterNum == i) {
- _spritesTable[i].needUpdate = 1;
+ _spritesTable[i]._needUpdate = true;
state = 6;
} else {
- _spritesTable[i].needUpdate = 0;
+ _spritesTable[i]._needUpdate = false;
state = (getRandomNumber() < 25000) ? 4 : 5;
}
} else if (_flagsTable[210] == 1) {
if (_charSpeechSoundCounter > 0 && _actionCharacterNum == i) {
- _spritesTable[i].needUpdate = 1;
+ _spritesTable[i]._needUpdate = true;
if (_flagsTable[211] == 10) {
state = 34;
} else if (_flagsTable[211] == 0) {
@@ -1461,7 +1461,7 @@ void TuckerEngine::updateSprite_locationNum23_2(int i) {
state = 31;
}
} else {
- _spritesTable[i].needUpdate = 0;
+ _spritesTable[i]._needUpdate = false;
if (_flagsTable[211] == 1) {
state = 32;
_flagsTable[211] = 0;
@@ -1471,10 +1471,10 @@ void TuckerEngine::updateSprite_locationNum23_2(int i) {
}
} else if (_flagsTable[210] == 2) {
if (_charSpeechSoundCounter > 0 && _actionCharacterNum == i) {
- _spritesTable[i].needUpdate = 1;
+ _spritesTable[i]._needUpdate = true;
state = 33;
} else {
- _spritesTable[i].needUpdate = 0;
+ _spritesTable[i]._needUpdate = false;
if (_flagsTable[212] == 0) {
state = 3;
_flagsTable[212] = 1;
@@ -1488,7 +1488,7 @@ void TuckerEngine::updateSprite_locationNum23_2(int i) {
} else {
state = 24;
}
- _spritesTable[i].state = state;
+ _spritesTable[i]._state = state;
}
void TuckerEngine::updateSprite_locationNum23_3(int i) {
@@ -1496,13 +1496,13 @@ void TuckerEngine::updateSprite_locationNum23_3(int i) {
if (_flagsTable[210] == 0 || _flagsTable[210] == 2) {
state = -1;
} else if (_charSpeechSoundCounter > 0 && _actionCharacterNum == i) {
- _spritesTable[i].needUpdate = 1;
+ _spritesTable[i]._needUpdate = true;
state = 8;
} else {
- _spritesTable[i].needUpdate = 0;
+ _spritesTable[i]._needUpdate = false;
state = 9;
}
- _spritesTable[i].state = state;
+ _spritesTable[i]._state = state;
}
void TuckerEngine::updateSprite_locationNum24_0(int i) {
@@ -1512,40 +1512,40 @@ void TuckerEngine::updateSprite_locationNum24_0(int i) {
state = 5;
} else if (_flagsTable[103] == 0) {
if (_charSpeechSoundCounter > 0 && _actionCharacterNum == i) {
- _spritesTable[i].needUpdate = 1;
+ _spritesTable[i]._needUpdate = true;
state = 2;
} else {
- _spritesTable[i].needUpdate = 1;
+ _spritesTable[i]._needUpdate = true;
state = 1;
if (getRandomNumber() < 30000) {
- _spritesTable[i].updateDelay = 5;
+ _spritesTable[i]._updateDelay = 5;
}
}
} else if (_flagsTable[103] == 1 || _flagsTable[103] == 3) {
state = -1;
} else {
if (_charSpeechSoundCounter > 0 && _actionCharacterNum == i) {
- _spritesTable[i].needUpdate = 1;
+ _spritesTable[i]._needUpdate = true;
state = 4;
} else {
if (getRandomNumber() < 30000) {
- _spritesTable[i].needUpdate = 0;
+ _spritesTable[i]._needUpdate = false;
state = 6;
- _spritesTable[i].updateDelay = 5;
+ _spritesTable[i]._updateDelay = 5;
} else {
- _spritesTable[i].needUpdate = 0;
+ _spritesTable[i]._needUpdate = false;
state = 6;
}
}
}
- _spritesTable[i].state = state;
+ _spritesTable[i]._state = state;
}
void TuckerEngine::updateSprite_locationNum24_1(int i) {
if (_flagsTable[103] > 1) {
- _spritesTable[i].state = 3;
+ _spritesTable[i]._state = 3;
} else {
- _spritesTable[i].state = -1;
+ _spritesTable[i]._state = -1;
}
}
@@ -1554,11 +1554,11 @@ void TuckerEngine::updateSprite_locationNum24_2(int i) {
if (_flagsTable[214] > 1) {
state = -1;
} else if (_flagsTable[214] == 1) {
- _spritesTable[i].needUpdate = 0;
+ _spritesTable[i]._needUpdate = false;
_flagsTable[214] = 2;
state = 9;
} else if (_charSpeechSoundCounter > 0 && _actionCharacterNum == i) {
- _spritesTable[i].needUpdate = 1;
+ _spritesTable[i]._needUpdate = true;
if (_flagsTable[213] == 1) {
state = 10;
} else if (_flagsTable[213] == 2) {
@@ -1567,10 +1567,10 @@ void TuckerEngine::updateSprite_locationNum24_2(int i) {
state = 8;
}
} else {
- _spritesTable[i].needUpdate = 1;
+ _spritesTable[i]._needUpdate = true;
state = 7;
}
- _spritesTable[i].state = state;
+ _spritesTable[i]._state = state;
}
void TuckerEngine::updateSprite_locationNum24_3(int i) {
@@ -1585,18 +1585,18 @@ void TuckerEngine::updateSprite_locationNum24_3(int i) {
} else {
state = 11;
}
- _spritesTable[i].state = state;
+ _spritesTable[i]._state = state;
}
void TuckerEngine::execData3PreUpdate_locationNum24() {
- _characterPrevBackFrontFacing = 0;
+ _characterPrevBackFrontFacing = false;
if (_flagsTable[112] == 0) {
_yPosCurrent = 132;
_xPosCurrent = 112;
} else if (_inventoryItemsState[2] == 1 && _inventoryItemsState[11] == 1 && _flagsTable[156] == 1 && _flagsTable[145] == 3) {
_flagsTable[156] = 2;
_nextAction = 61;
- _csDataLoaded = 0;
+ _csDataLoaded = false;
}
if (_flagsTable[103] > 0 && (_inventoryItemsState[2] > 0 || _inventoryItemsState[11] > 0 || _flagsTable[156] > 0 || _flagsTable[145] == 3) && _flagsTable[217] == 0) {
_flagsTable[217] = 1;
@@ -1619,9 +1619,9 @@ void TuckerEngine::updateSprite_locationNum26_0(int i) {
if (_flagsTable[125] > 0 && _flagsTable[125] < 300) {
_flagsTable[126] = 1;
}
- _spritesTable[i].gfxBackgroundOffset = _flagsTable[125];
- _spritesTable[i].state = 1;
- _spritesTable[i].colorType = 99;
+ _spritesTable[i]._gfxBackgroundOffset = _flagsTable[125];
+ _spritesTable[i]._state = 1;
+ _spritesTable[i]._colorType = 99;
}
void TuckerEngine::updateSprite_locationNum26_1(int i) {
@@ -1630,23 +1630,23 @@ void TuckerEngine::updateSprite_locationNum26_1(int i) {
state = -1;
} else if (_flagsTable[125] > 299) {
state = 2;
- _spritesTable[i].updateDelay = 5;
+ _spritesTable[i]._updateDelay = 5;
} else {
state = 2;
}
- _spritesTable[i].gfxBackgroundOffset = _flagsTable[125];
- _spritesTable[i].colorType = 1;
- _spritesTable[i].state = state;
+ _spritesTable[i]._gfxBackgroundOffset = _flagsTable[125];
+ _spritesTable[i]._colorType = 1;
+ _spritesTable[i]._state = state;
}
void TuckerEngine::execData3PreUpdate_locationNum26() {
- _characterPrevBackFrontFacing = 1;
- _spritesTable[1].gfxBackgroundOffset = _flagsTable[125];
- _spritesTable[0].gfxBackgroundOffset = _flagsTable[125];
+ _characterPrevBackFrontFacing = true;
+ _spritesTable[1]._gfxBackgroundOffset = _flagsTable[125];
+ _spritesTable[0]._gfxBackgroundOffset = _flagsTable[125];
if (_flagsTable[125] > 0 && _flagsTable[125] < 300) {
if (!isSoundPlaying(5)) {
- startSound(_locationSoundsTable[5].offset, 5, _locationSoundsTable[5].volume);
- startSound(_locationSoundsTable[6].offset, 6, _locationSoundsTable[6].volume);
+ startSound(_locationSoundsTable[5]._offset, 5, _locationSoundsTable[5]._volume);
+ startSound(_locationSoundsTable[6]._offset, 6, _locationSoundsTable[6]._volume);
}
++_flagsTable[125];
_flagsTable[126] = 1;
@@ -1656,7 +1656,7 @@ void TuckerEngine::execData3PreUpdate_locationNum26() {
stopSound(6);
}
}
- if (_panelLockedFlag == 0) {
+ if (!_panelLockedFlag) {
if (_xPosCurrent > 207 && _xPosCurrent < 256) {
_objectKeysLocationTable[26] = 0;
_objectKeysPosXTable[26] = 260;
@@ -1674,21 +1674,21 @@ void TuckerEngine::updateSprite_locationNum27(int i) {
state = 1;
_flagsTable[155] = 4;
} else if (_charSpeechSoundCounter > 0 && _actionCharacterNum == i) {
- _spritesTable[i].needUpdate = 1;
+ _spritesTable[i]._needUpdate = true;
state = 2;
} else if (getRandomNumber() < 30000) {
- _spritesTable[i].needUpdate = 0;
+ _spritesTable[i]._needUpdate = false;
state = 3;
- _spritesTable[i].updateDelay = 5;
+ _spritesTable[i]._updateDelay = 5;
} else {
- _spritesTable[i].needUpdate = 0;
+ _spritesTable[i]._needUpdate = false;
state = 3;
}
- _spritesTable[i].state = state;
+ _spritesTable[i]._state = state;
}
void TuckerEngine::execData3PreUpdate_locationNum27() {
- _characterPrevBackFrontFacing = 0;
+ _characterPrevBackFrontFacing = false;
}
void TuckerEngine::execData3PostUpdate_locationNum27() {
@@ -1701,36 +1701,36 @@ void TuckerEngine::updateSprite_locationNum28_0(int i) {
int state;
if (_charSpeechSoundCounter > 0 && _actionCharacterNum == i) {
state = 4;
- _spritesTable[i].needUpdate = 1;
+ _spritesTable[i]._needUpdate = true;
} else {
- _spritesTable[i].needUpdate = 0;
- ++_spritesTable[i].counter;
- if (_spritesTable[i].counter > 30) {
- _spritesTable[i].counter = 0;
+ _spritesTable[i]._needUpdate = false;
+ ++_spritesTable[i]._counter;
+ if (_spritesTable[i]._counter > 30) {
+ _spritesTable[i]._counter = 0;
}
if (_flagsTable[86] == 1) {
- if (_spritesTable[i].counter == 16 || _spritesTable[i].counter == 27) {
+ if (_spritesTable[i]._counter == 16 || _spritesTable[i]._counter == 27) {
state = 3;
} else {
state = 3;
- _spritesTable[i].updateDelay = 5;
+ _spritesTable[i]._updateDelay = 5;
}
} else {
- if (_spritesTable[i].counter == 5 || _spritesTable[i].counter == 11) {
+ if (_spritesTable[i]._counter == 5 || _spritesTable[i]._counter == 11) {
state = 5;
- } else if (_spritesTable[i].counter == 16 || _spritesTable[i].counter == 27) {
+ } else if (_spritesTable[i]._counter == 16 || _spritesTable[i]._counter == 27) {
state = 6;
} else {
state = 6;
- _spritesTable[i].updateDelay = 5;
+ _spritesTable[i]._updateDelay = 5;
}
}
}
- _spritesTable[i].state = state;
+ _spritesTable[i]._state = state;
}
void TuckerEngine::updateSprite_locationNum28_1(int i) {
- _spritesTable[i].state = (_flagsTable[86] == 1) ? 1 : -1;
+ _spritesTable[i]._state = (_flagsTable[86] == 1) ? 1 : -1;
}
void TuckerEngine::updateSprite_locationNum28_2(int i) {
@@ -1741,14 +1741,14 @@ void TuckerEngine::updateSprite_locationNum28_2(int i) {
} else {
state = -1;
}
- _spritesTable[i].state = state;
+ _spritesTable[i]._state = state;
}
void TuckerEngine::execData3PreUpdate_locationNum28() {
if (_flagsTable[86] == 0 && _xPosCurrent > 265 && _nextAction == 0) {
- _panelLockedFlag = 0;
+ _panelLockedFlag = false;
_nextAction = 21;
- _csDataLoaded = 0;
+ _csDataLoaded = false;
_pendingActionDelay = 0;
_pendingActionIndex = 0;
_currentActionVerb = 0;
@@ -1762,21 +1762,21 @@ void TuckerEngine::execData3PostUpdate_locationNum28() {
}
void TuckerEngine::updateSprite_locationNum29_0(int i) {
- _spritesTable[i].state = (getRandomNumber() < 32000) ? -1 : 2;
+ _spritesTable[i]._state = (getRandomNumber() < 32000) ? -1 : 2;
}
void TuckerEngine::updateSprite_locationNum29_1(int i) {
int state = -1;
if (getRandomNumber() >= 32000) {
state = 1;
- _spritesTable[i].gfxBackgroundOffset = 320;
+ _spritesTable[i]._gfxBackgroundOffset = 320;
}
- _spritesTable[i].state = state;
+ _spritesTable[i]._state = state;
}
void TuckerEngine::updateSprite_locationNum29_2(int i) {
- _spritesTable[i].state = 3;
- _spritesTable[i].gfxBackgroundOffset = 320;
+ _spritesTable[i]._state = 3;
+ _spritesTable[i]._gfxBackgroundOffset = 320;
}
void TuckerEngine::execData3PreUpdate_locationNum29() {
@@ -1797,22 +1797,22 @@ void TuckerEngine::execData3PreUpdate_locationNum29() {
}
_system->getPaletteManager()->setPalette(scrollPal, 118, 5);
if (_flagsTable[143] == 1) {
- _locationObjectsTable[2].xPos = 999;
- _locationObjectsTable[3].xPos = 187;
+ _locationObjectsTable[2]._xPos = 999;
+ _locationObjectsTable[3]._xPos = 187;
} else {
- _locationObjectsTable[2].xPos = 187;
- _locationObjectsTable[3].xPos = 999;
+ _locationObjectsTable[2]._xPos = 187;
+ _locationObjectsTable[3]._xPos = 999;
}
}
}
void TuckerEngine::updateSprite_locationNum30_34(int i) {
- _spritesTable[i].state = i + 1;
+ _spritesTable[i]._state = i + 1;
}
void TuckerEngine::execData3PreUpdate_locationNum30() {
if (!isSoundPlaying(1) && getRandomNumber() > 32500) {
- startSound(_locationSoundsTable[1].offset, 1, _locationSoundsTable[1].volume);
+ startSound(_locationSoundsTable[1]._offset, 1, _locationSoundsTable[1]._volume);
}
}
@@ -1829,7 +1829,7 @@ void TuckerEngine::execData3PreUpdate_locationNum31() {
}
void TuckerEngine::execData3PreUpdate_locationNum32() {
- if (_spritesTable[0].state == 12 && _spritesTable[0].animationFrame < 22) {
+ if (_spritesTable[0]._state == 12 && _spritesTable[0]._animationFrame < 22) {
_flagsTable[113] = 1;
} else {
_flagsTable[113] = 0;
@@ -1843,16 +1843,16 @@ void TuckerEngine::execData3PostUpdate_locationNum32() {
}
void TuckerEngine::updateSprite_locationNum31_0(int i) {
- _spritesTable[i].state = (getRandomNumber() < 32000) ? 3 : 1;
+ _spritesTable[i]._state = (getRandomNumber() < 32000) ? 3 : 1;
}
void TuckerEngine::updateSprite_locationNum31_1(int i) {
- _spritesTable[i].state = (_flagsTable[86] == 1) ? 2 : -1;
+ _spritesTable[i]._state = (_flagsTable[86] == 1) ? 2 : -1;
}
void TuckerEngine::updateSprite_locationNum32_0(int i) {
static const uint8 stateTable[] = { 12, 1, 11, 1, 11, 2, 1, 5, 5, 11, 1, 5, 5, 5 };
- ++_spritesTable[i].counter;
+ ++_spritesTable[i]._counter;
if (_flagsTable[123] == 2) {
_flagsTable[123] = 0;
}
@@ -1862,42 +1862,42 @@ void TuckerEngine::updateSprite_locationNum32_0(int i) {
_flagsTable[222] = 2;
} else if (_flagsTable[222] == 2) {
state = 19;
- _spritesTable[i].animationFrame = 23;
- _updateSpriteFlag1 = 1;
+ _spritesTable[i]._animationFrame = 23;
+ _updateSpriteFlag1 = true;
} else if (_flagsTable[123] == 1) {
state = 17;
_flagsTable[123] = 2;
} else if (_flagsTable[222] == 3) {
state = 18;
} else if (_charSpeechSoundCounter > 0 && _actionCharacterNum == i) {
- _spritesTable[i].needUpdate = 1;
+ _spritesTable[i]._needUpdate = true;
state = 4;
} else if (_csDataHandled) {
state = 5;
} else {
- _spritesTable[i].needUpdate = 0;
- if (_spritesTable[i].counter > 13) {
- _spritesTable[i].counter = 0;
+ _spritesTable[i]._needUpdate = false;
+ if (_spritesTable[i]._counter > 13) {
+ _spritesTable[i]._counter = 0;
}
- state = stateTable[_spritesTable[i].counter];
+ state = stateTable[_spritesTable[i]._counter];
}
- _spritesTable[i].state = state;
+ _spritesTable[i]._state = state;
}
void TuckerEngine::updateSprite_locationNum33_0(int i) {
int state = 5;
if (_charSpeechSoundCounter > 0 && _actionCharacterNum == i) {
- _spritesTable[i].needUpdate = 1;
+ _spritesTable[i]._needUpdate = true;
state = 7;
} else if (_flagsTable[87] == 1) {
state = 8;
} else if (_flagsTable[222] == 5) {
state = 4;
} else {
- _spritesTable[i].needUpdate = 0;
+ _spritesTable[i]._needUpdate = false;
state = (getRandomNumber() < 30000) ? 5 : 6;
}
- _spritesTable[i].state = state;
+ _spritesTable[i]._state = state;
}
void TuckerEngine::updateSprite_locationNum33_1(int i) {
@@ -1909,7 +1909,7 @@ void TuckerEngine::updateSprite_locationNum33_1(int i) {
} else {
state = 1;
}
- _spritesTable[i].state = state;
+ _spritesTable[i]._state = state;
}
void TuckerEngine::updateSprite_locationNum33_2(int i) {
@@ -1921,37 +1921,37 @@ void TuckerEngine::updateSprite_locationNum33_2(int i) {
} else {
state = 9;
}
- _spritesTable[i].state = state;
+ _spritesTable[i]._state = state;
}
void TuckerEngine::execData3PreUpdate_locationNum33() {
if (_xPosCurrent < 90) {
if (_flagsTable[105] == 0) {
_flagsTable[105] = 3;
- startSound(_locationSoundsTable[5].offset, 5, _locationSoundsTable[5].volume);
+ startSound(_locationSoundsTable[5]._offset, 5, _locationSoundsTable[5]._volume);
}
} else {
if (_flagsTable[105] == 1) {
_flagsTable[105] = 2;
- startSound(_locationSoundsTable[5].offset, 5, _locationSoundsTable[5].volume);
+ startSound(_locationSoundsTable[5]._offset, 5, _locationSoundsTable[5]._volume);
}
}
if (_xPosCurrent > 230) {
if (_flagsTable[106] == 0) {
_flagsTable[106] = 3;
- startSound(_locationSoundsTable[5].offset, 5, _locationSoundsTable[5].volume);
+ startSound(_locationSoundsTable[5]._offset, 5, _locationSoundsTable[5]._volume);
}
} else {
if (_flagsTable[106] == 1) {
_flagsTable[106] = 2;
- startSound(_locationSoundsTable[5].offset, 5, _locationSoundsTable[5].volume);
+ startSound(_locationSoundsTable[5]._offset, 5, _locationSoundsTable[5]._volume);
}
}
}
void TuckerEngine::execData3PreUpdate_locationNum34() {
if (_flagsTable[143] == 1) {
- _locationObjectsTable[0].xPos = 0;
+ _locationObjectsTable[0]._xPos = 0;
}
}
@@ -1962,7 +1962,7 @@ void TuckerEngine::execData3PreUpdate_locationNum35() {
}
void TuckerEngine::updateSprite_locationNum36(int i) {
- _spritesTable[i].state = (getRandomNumber() < 32000) ? 1 : 2;
+ _spritesTable[i]._state = (getRandomNumber() < 32000) ? 1 : 2;
}
void TuckerEngine::execData3PreUpdate_locationNum36() {
@@ -1978,12 +1978,12 @@ void TuckerEngine::execData3PreUpdate_locationNum36() {
void TuckerEngine::updateSprite_locationNum37(int i) {
int j = i + 1;
int offset = 200 - i * 45;
- ++_spritesTable[i].counter;
- if (_spritesTable[i].counter > offset) {
- _spritesTable[i].state = j;
- _spritesTable[i].counter = 0;
+ ++_spritesTable[i]._counter;
+ if (_spritesTable[i]._counter > offset) {
+ _spritesTable[i]._state = j;
+ _spritesTable[i]._counter = 0;
} else {
- _spritesTable[i].state = -1;
+ _spritesTable[i]._state = -1;
}
}
@@ -2001,16 +2001,16 @@ void TuckerEngine::updateSprite_locationNum41(int i) {
state = 1;
_flagsTable[158] = 2;
} else if (_charSpeechSoundCounter > 0 && _actionCharacterNum == i) {
- _spritesTable[i].needUpdate = 1;
+ _spritesTable[i]._needUpdate = true;
state = 3;
} else if (getRandomNumber() < 30000) {
- _spritesTable[i].needUpdate = 0;
+ _spritesTable[i]._needUpdate = false;
state = 5;
} else {
- _spritesTable[i].needUpdate = 0;
+ _spritesTable[i]._needUpdate = false;
state = 4;
}
- _spritesTable[i].state = state;
+ _spritesTable[i]._state = state;
}
void TuckerEngine::execData3PreUpdate_locationNum41() {
@@ -2020,10 +2020,10 @@ void TuckerEngine::execData3PreUpdate_locationNum41() {
} else if (_backgroundSpriteCurrentFrame == 7) {
_flagsTable[77] = 0;
}
- if (_changeBackgroundSprite == 0) {
+ if (!_changeBackgroundSprite) {
if (_backgroundSpriteCurrentFrame == 16 && !isSoundPlaying(4)) {
- _locationSoundsTable[4].type = 2;
- startSound(_locationSoundsTable[4].offset, 4, _locationSoundsTable[4].volume);
+ _locationSoundsTable[4]._type = 2;
+ startSound(_locationSoundsTable[4]._offset, 4, _locationSoundsTable[4]._volume);
} else {
if (_backgroundSpriteCurrentFrame == 28) {
stopSound(4);
@@ -2031,8 +2031,8 @@ void TuckerEngine::execData3PreUpdate_locationNum41() {
}
} else {
if (_backgroundSpriteCurrentFrame == 28 && !isSoundPlaying(4)) {
- _locationSoundsTable[4].type = 2;
- startSound(_locationSoundsTable[4].offset, 4, _locationSoundsTable[4].volume);
+ _locationSoundsTable[4]._type = 2;
+ startSound(_locationSoundsTable[4]._offset, 4, _locationSoundsTable[4]._volume);
} else {
if (_backgroundSpriteCurrentFrame == 18) {
stopSound(4);
@@ -2040,11 +2040,11 @@ void TuckerEngine::execData3PreUpdate_locationNum41() {
}
}
}
- if (_panelLockedFlag == 1 && _yPosCurrent > 130 && _selectedObject.yPos > 135 && _nextAction == 0 && _flagsTable[223] == 0) {
- _panelLockedFlag = 0;
+ if (_panelLockedFlag && _yPosCurrent > 130 && _selectedObject._yPos > 135 && _nextAction == 0 && _flagsTable[223] == 0) {
+ _panelLockedFlag = false;
_csDataLoaded = false;
_nextLocationNum = 0;
- _selectedObject.locationObject_locationNum = 0;
+ _selectedObject._locationObjectLocationNum = 0;
_locationMaskType = 0;
_nextAction = _flagsTable[163] + 32;
++_flagsTable[163];
@@ -2057,9 +2057,9 @@ void TuckerEngine::execData3PreUpdate_locationNum41() {
}
}
if (_flagsTable[77] == 0) {
- _locationObjectsTable[3].xPos = 230;
+ _locationObjectsTable[3]._xPos = 230;
} else {
- _locationObjectsTable[3].xPos = 930;
+ _locationObjectsTable[3]._xPos = 930;
}
}
}
@@ -2076,13 +2076,13 @@ void TuckerEngine::updateSprite_locationNum42(int i) {
_flagsTable[223] = 3;
} else if (_flagsTable[223] == 3) {
state = 5;
- _spritesTable[i].updateDelay = 5;
- _spritesTable[i].state = _spritesTable[i].firstFrame - 1; // FIXME: bug, fxNum ?
- _updateSpriteFlag1 = 1;
+ _spritesTable[i]._updateDelay = 5;
+ _spritesTable[i]._state = _spritesTable[i]._firstFrame - 1; // FIXME: bug, fxNum ?
+ _updateSpriteFlag1 = true;
} else {
state = 2;
}
- _spritesTable[i].state = state;
+ _spritesTable[i]._state = state;
}
void TuckerEngine::execData3PreUpdate_locationNum42() {
@@ -2094,18 +2094,18 @@ void TuckerEngine::updateSprite_locationNum43_2(int i) {
if (_flagsTable[237] > 0) {
state = -1;
} else if (_charSpeechSoundCounter > 0 && _actionCharacterNum == i) {
- _spritesTable[i].needUpdate = 1;
+ _spritesTable[i]._needUpdate = true;
state = 5;
- } else if (_csDataHandled || _spritesTable[i].counter == 2) {
- _spritesTable[i].needUpdate = 0;
+ } else if (_csDataHandled || _spritesTable[i]._counter == 2) {
+ _spritesTable[i]._needUpdate = false;
state = 6;
- } else if (_spritesTable[i].counter == 0) {
+ } else if (_spritesTable[i]._counter == 0) {
state = 3;
} else {
state = 4;
- _spritesTable[i].counter = 2;
+ _spritesTable[i]._counter = 2;
}
- _spritesTable[i].state = state;
+ _spritesTable[i]._state = state;
}
void TuckerEngine::updateSprite_locationNum43_3(int i) {
@@ -2114,12 +2114,12 @@ void TuckerEngine::updateSprite_locationNum43_3(int i) {
state = -1;
} else if (_charSpeechSoundCounter > 0 && _actionCharacterNum == i) {
state = 7;
- _spritesTable[i].needUpdate = 1;
+ _spritesTable[i]._needUpdate = true;
} else {
state = 8;
- _spritesTable[i].needUpdate = 0;
+ _spritesTable[i]._needUpdate = false;
}
- _spritesTable[i].state = state;
+ _spritesTable[i]._state = state;
}
void TuckerEngine::updateSprite_locationNum43_4(int i) {
@@ -2128,38 +2128,38 @@ void TuckerEngine::updateSprite_locationNum43_4(int i) {
state = -1;
} else if (_charSpeechSoundCounter > 0 && _actionCharacterNum == i) {
state = 9;
- _spritesTable[i].needUpdate = 1;
+ _spritesTable[i]._needUpdate = true;
} else {
state = 10;
- _spritesTable[i].needUpdate = 0;
+ _spritesTable[i]._needUpdate = false;
}
- _spritesTable[i].state = state;
+ _spritesTable[i]._state = state;
}
void TuckerEngine::updateSprite_locationNum43_5(int i) {
- _spritesTable[i].state = (_flagsTable[236] < 4) ? -1 : 11;
+ _spritesTable[i]._state = (_flagsTable[236] < 4) ? -1 : 11;
}
void TuckerEngine::updateSprite_locationNum43_6(int i) {
- _spritesTable[i].state = (_flagsTable[236] < 4) ? -1 : 12;
+ _spritesTable[i]._state = (_flagsTable[236] < 4) ? -1 : 12;
}
void TuckerEngine::execData3PreUpdate_locationNum43() {
- if (_panelLockedFlag == 1 && _xPosCurrent > 67 && _selectedObject.xPos > 68 && _locationMaskType == 0) {
- _panelLockedFlag = 0;
- _csDataLoaded = 0;
+ if (_panelLockedFlag && _xPosCurrent > 67 && _selectedObject._xPos > 68 && _locationMaskType == 0) {
+ _panelLockedFlag = false;
+ _csDataLoaded = false;
_nextAction = 5;
}
- if (_xPosCurrent > 55 && _spritesTable[2].counter == 0) {
- _spritesTable[2].counter = 1;
+ if (_xPosCurrent > 55 && _spritesTable[2]._counter == 0) {
+ _spritesTable[2]._counter = 1;
}
}
void TuckerEngine::execData3PreUpdate_locationNum44() {
if (_backgroundSpriteCurrentAnimation == 1) {
if (!isSoundPlaying(3) && _backgroundSpriteCurrentFrame == 1) {
- _locationSoundsTable[3].type = 2;
- startSound(_locationSoundsTable[3].offset, 3, _locationSoundsTable[3].volume);
+ _locationSoundsTable[3]._type = 2;
+ startSound(_locationSoundsTable[3]._offset, 3, _locationSoundsTable[3]._volume);
}
if (_backgroundSpriteCurrentFrame == 21) {
_flagsTable[77] = 1;
@@ -2169,7 +2169,7 @@ void TuckerEngine::execData3PreUpdate_locationNum44() {
}
} else if (_backgroundSpriteCurrentAnimation == 4) {
if (_backgroundSpriteCurrentFrame == 20 && !isSoundPlaying(3)) {
- startSound(_locationSoundsTable[3].offset, 3, _locationSoundsTable[3].volume);
+ startSound(_locationSoundsTable[3]._offset, 3, _locationSoundsTable[3]._volume);
}
}
}
@@ -2182,14 +2182,14 @@ void TuckerEngine::updateSprite_locationNum48(int i) {
_flagsTable[160] = 3;
state = 3;
} else if (_charSpeechSoundCounter > 0 && _actionCharacterNum == i) {
- _spritesTable[i].needUpdate = 1;
+ _spritesTable[i]._needUpdate = true;
state = 2;
} else {
- _spritesTable[i].needUpdate = 0;
+ _spritesTable[i]._needUpdate = false;
state = 2;
- _spritesTable[i].updateDelay = 5;
+ _spritesTable[i]._updateDelay = 5;
}
- _spritesTable[i].state = state;
+ _spritesTable[i]._state = state;
}
void TuckerEngine::updateSprite_locationNum49(int i) {
@@ -2211,20 +2211,20 @@ void TuckerEngine::updateSprite_locationNum49(int i) {
_flagsTable[185] = 0;
state = 4;
} else if (_charSpeechSoundCounter > 0 && _actionCharacterNum == i) {
- _spritesTable[i].needUpdate = 1;
+ _spritesTable[i]._needUpdate = true;
state = 2;
} else {
- _spritesTable[i].needUpdate = 0;
+ _spritesTable[i]._needUpdate = false;
if (getRandomNumber() < 30000 || _backgroundSpriteCurrentAnimation <= -1) {
state = 3;
- _spritesTable[i].updateDelay = 1;
+ _spritesTable[i]._updateDelay = 1;
} else if (getRandomNumber() < 16000) {
state = 5;
} else {
state = 6;
}
}
- _spritesTable[i].state = state;
+ _spritesTable[i]._state = state;
}
void TuckerEngine::execData3PreUpdate_locationNum49() {
@@ -2272,38 +2272,38 @@ void TuckerEngine::updateSprite_locationNum50(int i) {
_flagsTable[240] = 1;
}
} else {
- _spritesTable[i].animationFrame = _spritesTable[i].firstFrame - 1;
- _spritesTable[i].updateDelay = 5;
- _updateSpriteFlag1 = 1;
+ _spritesTable[i]._animationFrame = _spritesTable[i]._firstFrame - 1;
+ _spritesTable[i]._updateDelay = 5;
+ _updateSpriteFlag1 = true;
state = i + 1;
}
- _spritesTable[i].state = state;
+ _spritesTable[i]._state = state;
}
void TuckerEngine::updateSprite_locationNum51(int i) {
if (i == 2) {
- _spritesTable[i].state = 1;
+ _spritesTable[i]._state = 1;
} else if (i == 0) {
static const int stateTable[] = { 3, 3, 4, 5, 3, 3, 5, 4, 3, 3, 4, 5, 4, 4 };
- ++_spritesTable[i].counter;
- if (_spritesTable[i].counter > 13) {
- _spritesTable[i].counter = 0;
+ ++_spritesTable[i]._counter;
+ if (_spritesTable[i]._counter > 13) {
+ _spritesTable[i]._counter = 0;
}
- _spritesTable[i].state = stateTable[_spritesTable[i].counter];
+ _spritesTable[i]._state = stateTable[_spritesTable[i]._counter];
} else {
i = 1;
- _spritesTable[i].state = 6;
+ _spritesTable[i]._state = 6;
}
- _spritesTable[i].colorType = 1;
- _spritesTable[i].yMaxBackground = 0;
+ _spritesTable[i]._colorType = 1;
+ _spritesTable[i]._yMaxBackground = 0;
}
void TuckerEngine::execData3PreUpdate_locationNum52() {
- if (_selectedObject.xPos > 108 && _panelLockedFlag > 0 && _nextAction == 0 && _locationMaskType == 0) {
+ if (_selectedObject._xPos > 108 && _panelLockedFlag && _nextAction == 0 && _locationMaskType == 0) {
_nextAction = 1;
- _csDataLoaded = 0;
+ _csDataLoaded = false;
}
}
@@ -2313,21 +2313,21 @@ void TuckerEngine::updateSprite_locationNum53_0(int i) {
}
int state;
if (_charSpeechSoundCounter > 0 && _actionCharacterNum == i) {
- _spritesTable[i].needUpdate = 1;
+ _spritesTable[i]._needUpdate = true;
state = 1;
} else if (_flagsTable[197] == 1) {
state = 3;
- _spritesTable[i].needUpdate = 0;
+ _spritesTable[i]._needUpdate = false;
_flagsTable[197] = 2;
} else if (_flagsTable[192] == 1) {
- _spritesTable[i].needUpdate = 0;
+ _spritesTable[i]._needUpdate = false;
state = 5;
} else {
- _spritesTable[i].needUpdate = 0;
+ _spritesTable[i]._needUpdate = false;
state = 5;
- _spritesTable[i].updateDelay = 5;
+ _spritesTable[i]._updateDelay = 5;
}
- _spritesTable[i].state = state;
+ _spritesTable[i]._state = state;
}
void TuckerEngine::updateSprite_locationNum53_1(int i) {
@@ -2339,14 +2339,14 @@ void TuckerEngine::updateSprite_locationNum53_1(int i) {
} else {
state = -1;
}
- _spritesTable[i].state = state;
+ _spritesTable[i]._state = state;
}
void TuckerEngine::execData3PreUpdate_locationNum53() {
if (_flagsTable[192] == 0 && _xPosCurrent < 200 && _nextAction == 0) {
- _panelLockedFlag = 0;
+ _panelLockedFlag = false;
_nextAction = 14;
- _csDataLoaded = 0;
+ _csDataLoaded = false;
_pendingActionDelay = 0;
_pendingActionIndex = 0;
_currentActionVerb = 0;
@@ -2354,55 +2354,52 @@ void TuckerEngine::execData3PreUpdate_locationNum53() {
}
void TuckerEngine::updateSprite_locationNum54(int i) {
- int state = 3;
if (_flagsTable[141] == 2) {
- _spritesTable[i].needUpdate = 0;
+ _spritesTable[i]._needUpdate = false;
setCharacterAnimation(0, i);
_flagsTable[141] = 1;
- _spritesTable[i].counter = 0;
- } else if (_flagsTable[141] == 1 && _spritesTable[i].counter < 40) {
+ _spritesTable[i]._counter = 0;
+ } else if (_flagsTable[141] == 1 && _spritesTable[i]._counter < 40) {
setCharacterAnimation(1, i);
- ++_spritesTable[i].counter;
+ ++_spritesTable[i]._counter;
} else if (_flagsTable[141] == 1) {
setCharacterAnimation(2, i);
_flagsTable[141] = 3;
} else {
+ int state = 3;
if (_charSpeechSoundCounter > 0 && _actionCharacterNum == i) {
- _spritesTable[i].needUpdate = 2;
+ _spritesTable[i]._needUpdate = true;
state = (getRandomNumber() < 12000) ? 2 : 4;
} else if (_flagsTable[141] == 3) {
- state = 3;
_flagsTable[141] = 0;
_flagsTable[224] = 1;
- _spritesTable[i].counter = 0;
- if (_panelLockedFlag == 0 && _xPosCurrent > 130 && _inventoryItemsState[17] == 0) {
+ _spritesTable[i]._counter = 0;
+ if (!_panelLockedFlag && _xPosCurrent > 130 && _inventoryItemsState[17] == 0) {
_nextAction = 18;
_csDataLoaded = false;
}
} else if (getRandomNumber() < 26000) {
- state = 3;
- _spritesTable[i].needUpdate = 0;
- _spritesTable[i].updateDelay = 5;
+ _spritesTable[i]._needUpdate = false;
+ _spritesTable[i]._updateDelay = 5;
} else {
- state = 3;
- _spritesTable[i].needUpdate = 0;
+ _spritesTable[i]._needUpdate = false;
}
if (_inventoryItemsState[17] == 1) {
_flagsTable[224] = 2;
}
- _spritesTable[i].state = state;
+ _spritesTable[i]._state = state;
}
}
void TuckerEngine::updateSprite_locationNum55(int i) {
if (_flagsTable[193] > 0 && _flagsTable[193] < 14) {
setCharacterAnimation(_flagsTable[193] - 1, i);
- _updateSpriteFlag1 = 1;
+ _updateSpriteFlag1 = true;
if (_flagsTable[193] == 1 || _flagsTable[193] == 3 || _flagsTable[193] == 5 || _flagsTable[193] == 7 || _flagsTable[193] == 11 || _flagsTable[193] == 13) {
++_flagsTable[193];
}
} else {
- _spritesTable[i].state = -1;
+ _spritesTable[i]._state = -1;
if (_flagsTable[193] == 14) {
_flagsTable[193] = 15;
}
@@ -2411,26 +2408,26 @@ void TuckerEngine::updateSprite_locationNum55(int i) {
void TuckerEngine::updateSprite_locationNum56(int i) {
int state;
- ++_spritesTable[i].counter;
+ ++_spritesTable[i]._counter;
if (_flagsTable[153] == 1) {
state = -1;
} else if (_charSpeechSoundCounter > 0 && _actionCharacterNum == i) {
- _spritesTable[i].needUpdate = 1;
+ _spritesTable[i]._needUpdate = true;
state = 2;
} else {
- _spritesTable[i].needUpdate = 0;
+ _spritesTable[i]._needUpdate = false;
state = 1;
}
- _spritesTable[i].state = state;
+ _spritesTable[i]._state = state;
}
void TuckerEngine::updateSprite_locationNum57_0(int i) {
int state;
if (_charSpeechSoundCounter > 0 && _actionCharacterNum == i) {
- _spritesTable[i].needUpdate = 1;
+ _spritesTable[i]._needUpdate = true;
state = 5;
} else {
- _spritesTable[i].needUpdate = 0;
+ _spritesTable[i]._needUpdate = false;
if (getRandomNumber() < 30000) {
state = 1;
} else if (getRandomNumber() < 16000) {
@@ -2439,15 +2436,15 @@ void TuckerEngine::updateSprite_locationNum57_0(int i) {
state = 2;
}
}
- _spritesTable[i].state = state;
+ _spritesTable[i]._state = state;
}
void TuckerEngine::updateSprite_locationNum57_1(int i) {
int state = 6;
if (getRandomNumber() < 30000) {
- _spritesTable[i].updateDelay = 5;
+ _spritesTable[i]._updateDelay = 5;
}
- _spritesTable[i].state = state;
+ _spritesTable[i]._state = state;
}
void TuckerEngine::execData3PreUpdate_locationNum57() {
@@ -2472,20 +2469,20 @@ void TuckerEngine::updateSprite_locationNum58(int i) {
_flagsTable[190] = 3;
}
}
- _spritesTable[i].state = state;
- _spritesTable[i].gfxBackgroundOffset = 320;
+ _spritesTable[i]._state = state;
+ _spritesTable[i]._gfxBackgroundOffset = 320;
}
void TuckerEngine::execData3PreUpdate_locationNum58() {
// workaround original game glitch #2872348: do not change position on location change
if (_nextLocationNum == 0 && _flagsTable[190] < 3 && _xPosCurrent > 310) {
_xPosCurrent = 310;
- _panelLockedFlag = 0;
+ _panelLockedFlag = false;
}
- if (_flagsTable[190] > 0 && _locationSoundsTable[0].volume > 0) {
- _locationSoundsTable[0].volume = 0;
- _locationSoundsTable[4].volume = 0;
- _locationSoundsTable[5].volume = 0;
+ if (_flagsTable[190] > 0 && _locationSoundsTable[0]._volume > 0) {
+ _locationSoundsTable[0]._volume = 0;
+ _locationSoundsTable[4]._volume = 0;
+ _locationSoundsTable[5]._volume = 0;
if (isSoundPlaying(0)) {
stopSound(0);
}
@@ -2498,27 +2495,27 @@ void TuckerEngine::updateSprite_locationNum59(int i) {
state = -1;
} else if (_charSpeechSoundCounter > 0 && _actionCharacterNum == i) {
state = 3;
- _spritesTable[i].needUpdate = 1;
+ _spritesTable[i]._needUpdate = true;
} else if (_csDataHandled) {
- _spritesTable[i].needUpdate = 0;
+ _spritesTable[i]._needUpdate = false;
if (_flagsTable[199] == 0) {
_flagsTable[199] = 1;
setCharacterAnimation(0, 0);
return;
}
- _spritesTable[i].needUpdate = 0;
+ _spritesTable[i]._needUpdate = false;
state = 3;
- _spritesTable[i].updateDelay = 5;
+ _spritesTable[i]._updateDelay = 5;
} else if (_flagsTable[199] == 1) {
_flagsTable[199] = 0;
- _spritesTable[i].needUpdate = 0;
+ _spritesTable[i]._needUpdate = false;
setCharacterAnimation(1, 0);
return;
} else {
- _spritesTable[i].needUpdate = 0;
+ _spritesTable[i]._needUpdate = false;
state = 1;
}
- _spritesTable[i].state = state;
+ _spritesTable[i]._state = state;
}
void TuckerEngine::updateSprite_locationNum60_0(int i) {
@@ -2526,34 +2523,34 @@ void TuckerEngine::updateSprite_locationNum60_0(int i) {
if (_flagsTable[186] > 0) {
state = -1;
} else if (_charSpeechSoundCounter > 0 && _actionCharacterNum == i) {
- _spritesTable[i].needUpdate = 1;
+ _spritesTable[i]._needUpdate = true;
state = 9;
} else {
- _spritesTable[i].needUpdate = 0;
+ _spritesTable[i]._needUpdate = false;
state = (getRandomNumber() > 32000) ? 8 : 7;
}
- _spritesTable[i].state = state;
- _spritesTable[i].gfxBackgroundOffset = 320;
+ _spritesTable[i]._state = state;
+ _spritesTable[i]._gfxBackgroundOffset = 320;
}
void TuckerEngine::updateSprite_locationNum60_1(int i) {
int state;
if (_flagsTable[186] == 1) {
_flagsTable[186] = 2;
- _spritesTable[i].needUpdate = 0;
+ _spritesTable[i]._needUpdate = false;
state = 2;
} else if (_flagsTable[186] == 2) {
state = 6;
_flagsTable[187] = 1;
} else if (_charSpeechSoundCounter > 0 && _actionCharacterNum == i) {
- _spritesTable[i].needUpdate = 1;
+ _spritesTable[i]._needUpdate = true;
state = 1;
} else {
- _spritesTable[i].needUpdate = 0;
+ _spritesTable[i]._needUpdate = false;
state = (getRandomNumber() > 32000) ? 5 : 4;
}
- _spritesTable[i].state = state;
- _spritesTable[i].gfxBackgroundOffset = 320;
+ _spritesTable[i]._state = state;
+ _spritesTable[i]._gfxBackgroundOffset = 320;
}
void TuckerEngine::execData3PostUpdate_locationNum60() {
@@ -2569,19 +2566,19 @@ void TuckerEngine::updateSprite_locationNum61_0(int i) {
} else if (_flagsTable[88] == 2) {
state = -1;
} else if (_charSpeechSoundCounter > 0 && _actionCharacterNum == 0) {
- if (_spritesTable[i].needUpdate == 0) {
- _spritesTable[i].needUpdate = 1;
+ if (!_spritesTable[i]._needUpdate) {
+ _spritesTable[i]._needUpdate = true;
state = 2;
} else {
state = 2;
- _spritesTable[0].animationFrame = 2;
- _updateSpriteFlag1 = 1;
+ _spritesTable[0]._animationFrame = 2;
+ _updateSpriteFlag1 = true;
}
} else {
- _spritesTable[i].needUpdate = 0;
+ _spritesTable[i]._needUpdate = false;
if (r < 30000) {
state = 7;
- _spritesTable[i].updateDelay = 5;
+ _spritesTable[i]._updateDelay = 5;
} else if (r < 31000) {
state = 7;
} else if (r < 32000) {
@@ -2590,7 +2587,7 @@ void TuckerEngine::updateSprite_locationNum61_0(int i) {
state = 6;
}
}
- _spritesTable[i].state = state;
+ _spritesTable[i]._state = state;
}
void TuckerEngine::updateSprite_locationNum61_1(int i) {
@@ -2598,19 +2595,19 @@ void TuckerEngine::updateSprite_locationNum61_1(int i) {
if (_flagsTable[151] == 1) {
state = -1;
} else if (_charSpeechSoundCounter > 0 && _actionCharacterNum == i) {
- _spritesTable[i].needUpdate = 1;
+ _spritesTable[i]._needUpdate = true;
state = 14;
} else if (_csDataHandled || getRandomNumber() < 29000) {
- _spritesTable[i].needUpdate = 0;
+ _spritesTable[i]._needUpdate = false;
state = 12;
- _spritesTable[i].updateDelay = 5;
+ _spritesTable[i]._updateDelay = 5;
} else if (getRandomNumber() < 20000) {
state = 12;
} else {
state = 13;
}
- _spritesTable[i].state = state;
- _spritesTable[i].gfxBackgroundOffset = 320;
+ _spritesTable[i]._state = state;
+ _spritesTable[i]._gfxBackgroundOffset = 320;
}
void TuckerEngine::updateSprite_locationNum61_2(int i) {
@@ -2651,8 +2648,8 @@ void TuckerEngine::updateSprite_locationNum61_2(int i) {
if (_flagsTable[136] != 2) {
_flagsTable[150] = 0;
}
- _spritesTable[i].state = state;
- _spritesTable[i].gfxBackgroundOffset = 320;
+ _spritesTable[i]._state = state;
+ _spritesTable[i]._gfxBackgroundOffset = 320;
}
void TuckerEngine::execData3PreUpdate_locationNum61() {
@@ -2676,13 +2673,13 @@ void TuckerEngine::updateSprite_locationNum63_0(int i) {
} else if (_flagsTable[132] != 2 || _flagsTable[133] != 1 || _flagsTable[136] > 0) {
state = -1;
} else if (_charSpeechSoundCounter > 0 && _actionCharacterNum == i) {
- _spritesTable[i].needUpdate = 1;
+ _spritesTable[i]._needUpdate = true;
state = 6;
} else {
- _spritesTable[i].needUpdate = 0;
+ _spritesTable[i]._needUpdate = false;
state = -1;
}
- _spritesTable[i].state = state;
+ _spritesTable[i]._state = state;
}
void TuckerEngine::updateSprite_locationNum63_1(int i) {
@@ -2694,16 +2691,16 @@ void TuckerEngine::updateSprite_locationNum63_1(int i) {
state = 8;
}
}
- _spritesTable[i].state = state;
+ _spritesTable[i]._state = state;
}
void TuckerEngine::updateSprite_locationNum63_2(int i) {
- ++_spritesTable[i].counter;
+ ++_spritesTable[i]._counter;
int state = -1;
if (_flagsTable[132] == 2 && _flagsTable[133] == 1 && _flagsTable[136] <= 0) {
if (_flagsTable[226] == 0) {
state = 9;
- _spritesTable[i].updateDelay = 5;
+ _spritesTable[i]._updateDelay = 5;
} else if (_flagsTable[226] == 1) {
state = 9;
_flagsTable[226] = 2;
@@ -2714,16 +2711,16 @@ void TuckerEngine::updateSprite_locationNum63_2(int i) {
state = 10;
}
}
- _spritesTable[i].state = state;
+ _spritesTable[i]._state = state;
}
void TuckerEngine::updateSprite_locationNum63_3(int i) {
- ++_spritesTable[i].counter;
+ ++_spritesTable[i]._counter;
int state = -1;
if (_flagsTable[132] == 2 && _flagsTable[133] == 1 && _flagsTable[136] <= 0) {
- if (_spritesTable[i].counter > 80) {
+ if (_spritesTable[i]._counter > 80) {
state = 7;
- _spritesTable[i].counter = 0;
+ _spritesTable[i]._counter = 0;
} else if (getRandomNumber() > 32000) {
state = 2;
} else if (getRandomNumber() > 32000) {
@@ -2732,7 +2729,7 @@ void TuckerEngine::updateSprite_locationNum63_3(int i) {
state = 8;
}
}
- _spritesTable[i].state = state;
+ _spritesTable[i]._state = state;
}
void TuckerEngine::updateSprite_locationNum63_4(int i) {
@@ -2740,7 +2737,7 @@ void TuckerEngine::updateSprite_locationNum63_4(int i) {
if (_flagsTable[132] == 2 && _flagsTable[133] == 1 && _flagsTable[136] == 0) {
state = 1;
}
- _spritesTable[i].state = state;
+ _spritesTable[i]._state = state;
}
void TuckerEngine::execData3PreUpdate_locationNum63() {
@@ -2764,8 +2761,8 @@ void TuckerEngine::execData3PreUpdate_locationNum63() {
} else {
if (_flagsTable[132] == 0 || (_flagsTable[132] == 2 && _flagsTable[136] > 0)) {
if (!isSoundPlaying(1)) {
- _locationSoundsTable[1].type = 2;
- startSound(_locationSoundsTable[1].offset, 1, _locationSoundsTable[1].volume);
+ _locationSoundsTable[1]._type = 2;
+ startSound(_locationSoundsTable[1]._offset, 1, _locationSoundsTable[1]._volume);
}
} else {
if (isSoundPlaying(1)) {
@@ -2774,8 +2771,8 @@ void TuckerEngine::execData3PreUpdate_locationNum63() {
}
if (_flagsTable[132] == 1) {
if (!isSoundPlaying(0)) {
- _locationSoundsTable[0].type = 2;
- startSound(_locationSoundsTable[0].offset, 0, _locationSoundsTable[0].volume);
+ _locationSoundsTable[0]._type = 2;
+ startSound(_locationSoundsTable[0]._offset, 0, _locationSoundsTable[0]._volume);
}
} else {
if (isSoundPlaying(0)) {
@@ -2784,7 +2781,7 @@ void TuckerEngine::execData3PreUpdate_locationNum63() {
}
if (_flagsTable[132] == 2 && _flagsTable[136] == 0) {
if (!isSoundPlaying(2)) {
- startSound(_locationSoundsTable[2].offset, 2, _locationSoundsTable[2].volume);
+ startSound(_locationSoundsTable[2]._offset, 2, _locationSoundsTable[2]._volume);
}
} else {
if (isSoundPlaying(2)) {
@@ -2807,7 +2804,7 @@ void TuckerEngine::updateSprite_locationNum65(int i) {
if (_flagsTable[188] == 1) {
_flagsTable[188] = 2;
state = 1;
- _spritesTable[i].gfxBackgroundOffset = 100;
+ _spritesTable[i]._gfxBackgroundOffset = 100;
} else if (_flagsTable[188] > 0 && _flagsTable[189] > 0) {
state = -1;
if (_xPosCurrent < 150 || _yPosCurrent > 240) {
@@ -2826,7 +2823,7 @@ void TuckerEngine::updateSprite_locationNum65(int i) {
_flagsTable[189] = 0;
}
}
- _spritesTable[i].state = state;
+ _spritesTable[i]._state = state;
}
void TuckerEngine::execData3PreUpdate_locationNum65() {
@@ -2836,66 +2833,66 @@ void TuckerEngine::execData3PreUpdate_locationNum65() {
void TuckerEngine::updateSprite_locationNum66_0(int i) {
int state;
if (_charSpeechSoundCounter > 0 && _actionCharacterNum == i) {
- _spritesTable[i].needUpdate = 1;
+ _spritesTable[i]._needUpdate = true;
state = 2;
} else {
- _spritesTable[i].needUpdate = 0;
+ _spritesTable[i]._needUpdate = false;
state = 2;
- _spritesTable[i].updateDelay = 5;
+ _spritesTable[i]._updateDelay = 5;
}
- _spritesTable[i].state = state;
- _spritesTable[i].gfxBackgroundOffset = 320;
+ _spritesTable[i]._state = state;
+ _spritesTable[i]._gfxBackgroundOffset = 320;
}
void TuckerEngine::updateSprite_locationNum66_1(int i) {
int state;
if (_flagsTable[191] == 0 && _xPosCurrent > 568) {
if (_charSpeechSoundCounter > 0 && _actionCharacterNum == i) {
- _spritesTable[i].needUpdate = 1;
+ _spritesTable[i]._needUpdate = true;
state = 8;
} else {
state = 10;
- _spritesTable[i].needUpdate = 0;
+ _spritesTable[i]._needUpdate = false;
}
} else {
if (_charSpeechSoundCounter > 0 && _actionCharacterNum == i) {
- _spritesTable[i].needUpdate = 1;
+ _spritesTable[i]._needUpdate = true;
state = 9;
} else if (getRandomNumber() > 30000) {
state = 6;
- _spritesTable[i].needUpdate = 0;
+ _spritesTable[i]._needUpdate = false;
} else {
- _spritesTable[i].needUpdate = 0;
+ _spritesTable[i]._needUpdate = false;
state = 7;
- _spritesTable[i].updateDelay = 5;
+ _spritesTable[i]._updateDelay = 5;
}
}
- _spritesTable[i].state = state;
- _spritesTable[i].gfxBackgroundOffset = 320;
+ _spritesTable[i]._state = state;
+ _spritesTable[i]._gfxBackgroundOffset = 320;
}
void TuckerEngine::updateSprite_locationNum66_2(int i) {
- _spritesTable[i].disabled = 1;
- _spritesTable[i].state = 3;
+ _spritesTable[i]._disabled = true;
+ _spritesTable[i]._state = 3;
}
void TuckerEngine::updateSprite_locationNum66_3(int i) {
- _spritesTable[i].state = 4;
+ _spritesTable[i]._state = 4;
}
void TuckerEngine::updateSprite_locationNum66_4(int i) {
- _spritesTable[i].state = 5;
- _spritesTable[i].gfxBackgroundOffset = 320;
+ _spritesTable[i]._state = 5;
+ _spritesTable[i]._gfxBackgroundOffset = 320;
}
void TuckerEngine::execData3PreUpdate_locationNum66() {
// FIXME: shouldn't be executed after using the map
_flagsTable[137] = 0;
if (_xPosCurrent > 583 && _flagsTable[191] == 0 && _nextAction == 0 && _locationMaskType == 0) {
- _panelLockedFlag = 0;
- _csDataLoaded = 0;
+ _panelLockedFlag = false;
+ _csDataLoaded = false;
_nextLocationNum = 0;
- _selectedObject.locationObject_locationNum = 0;
+ _selectedObject._locationObjectLocationNum = 0;
if (_flagsTable[131] == 0) {
_nextAction = 13;
} else if (_flagsTable[130] == 0) {
@@ -2907,25 +2904,25 @@ void TuckerEngine::execData3PreUpdate_locationNum66() {
}
void TuckerEngine::execData3PostUpdate_locationNum66() {
- if (_spritesTable[2].flipX == 1) {
+ if (_spritesTable[2]._flipX) {
--_updateLocationXPosTable2[0];
if (_updateLocationXPosTable2[0] < -50) {
- _spritesTable[2].flipX = 0;
+ _spritesTable[2]._flipX = false;
_updateLocationXPosTable2[0] = -50;
}
} else {
++_updateLocationXPosTable2[0];
if (_updateLocationXPosTable2[0] > 500) {
- _spritesTable[2].flipX = 1;
+ _spritesTable[2]._flipX = true;
_updateLocationXPosTable2[0] = 500;
}
}
- _spritesTable[2].gfxBackgroundOffset = _updateLocationXPosTable2[0] + 8320;
+ _spritesTable[2]._gfxBackgroundOffset = _updateLocationXPosTable2[0] + 8320;
const int spr = 2;
- _spritesTable[spr].colorType = 1;
- _spritesTable[spr].yMaxBackground = 0;
+ _spritesTable[spr]._colorType = 1;
+ _spritesTable[spr]._yMaxBackground = 0;
drawSprite(spr);
- _spritesTable[spr].colorType = 0;
+ _spritesTable[spr]._colorType = 0;
}
void TuckerEngine::updateSprite_locationNum69_1(int i) {
@@ -2939,10 +2936,10 @@ void TuckerEngine::updateSprite_locationNum69_1(int i) {
} else if (_flagsTable[236] == 4) {
if (_charSpeechSoundCounter > 0 && _actionCharacterNum == i) {
state = 9;
- _spritesTable[i].needUpdate = 1;
+ _spritesTable[i]._needUpdate = true;
} else {
state = 14;
- _spritesTable[i].needUpdate = 0;
+ _spritesTable[i]._needUpdate = false;
}
} else if (_flagsTable[236] == 5) {
state = 7;
@@ -2950,7 +2947,7 @@ void TuckerEngine::updateSprite_locationNum69_1(int i) {
} else {
state = -1;
}
- _spritesTable[i].state = state;
+ _spritesTable[i]._state = state;
}
void TuckerEngine::updateSprite_locationNum69_2(int i) {
@@ -2966,10 +2963,10 @@ void TuckerEngine::updateSprite_locationNum69_2(int i) {
} else if (_flagsTable[237] == 4 || _flagsTable[237] == 2 || _flagsTable[237] == 3 || _flagsTable[237] == 7) {
if (_charSpeechSoundCounter > 0 && _actionCharacterNum == i) {
state = 10;
- _spritesTable[i].needUpdate = 1;
+ _spritesTable[i]._needUpdate = true;
} else {
state = 12;
- _spritesTable[i].needUpdate = 0;
+ _spritesTable[i]._needUpdate = false;
}
} else if (_flagsTable[237] == 5) {
state = 16;
@@ -2983,7 +2980,7 @@ void TuckerEngine::updateSprite_locationNum69_2(int i) {
} else {
state = -1;
}
- _spritesTable[i].state = state;
+ _spritesTable[i]._state = state;
}
void TuckerEngine::updateSprite_locationNum69_3(int i) {
@@ -2997,21 +2994,21 @@ void TuckerEngine::updateSprite_locationNum69_3(int i) {
_flagsTable[238] = 1;
if (_charSpeechSoundCounter > 0 && _actionCharacterNum == i) {
state = 11;
- _spritesTable[i].needUpdate = 1;
+ _spritesTable[i]._needUpdate = true;
} else {
state = 13;
- _spritesTable[i].needUpdate = 0;
+ _spritesTable[i]._needUpdate = false;
}
} else {
state = -1;
}
- _spritesTable[i].state = state;
+ _spritesTable[i]._state = state;
}
void TuckerEngine::execData3PreUpdate_locationNum70() {
const uint8 color = 103;
if (_execData3Counter == 0) {
- startSound(_locationSoundsTable[6].offset, 6, _locationSoundsTable[6].volume);
+ startSound(_locationSoundsTable[6]._offset, 6, _locationSoundsTable[6]._volume);
_execData3Counter = 1;
_flagsTable[143] = 0;
_updateLocation70StringLen = 0;
@@ -3041,7 +3038,7 @@ void TuckerEngine::execData3PreUpdate_locationNum70Helper() {
if (_lastKeyPressed == Common::KEYCODE_BACKSPACE || _lastKeyPressed == Common::KEYCODE_DELETE) {
if (_updateLocation70StringLen > 0) {
--_updateLocation70StringLen;
- startSound(_locationSoundsTable[0].offset, 0, _locationSoundsTable[0].volume);
+ startSound(_locationSoundsTable[0]._offset, 0, _locationSoundsTable[0]._volume);
}
} else if (_lastKeyPressed == Common::KEYCODE_RETURN) {
_flagsTable[143] = 1;
@@ -3052,7 +3049,7 @@ void TuckerEngine::execData3PreUpdate_locationNum70Helper() {
_flagsTable[143] = 2;
}
const int num = (_flagsTable[143] == 1) ? 4 : 5;
- startSound(_locationSoundsTable[num].offset, num, _locationSoundsTable[num].volume);
+ startSound(_locationSoundsTable[num]._offset, num, _locationSoundsTable[num]._volume);
} else if (_updateLocation70StringLen < 19) {
uint8 chr = 0;
switch (_lastKeyPressed) {
@@ -3089,7 +3086,7 @@ void TuckerEngine::execData3PreUpdate_locationNum70Helper() {
}
break;
}
- startSound(_locationSoundsTable[0].offset, 0, _locationSoundsTable[0].volume);
+ startSound(_locationSoundsTable[0]._offset, 0, _locationSoundsTable[0]._volume);
if (chr > 0) {
_updateLocation70String[_updateLocation70StringLen] = chr;
++_updateLocation70StringLen;
@@ -3104,17 +3101,17 @@ void TuckerEngine::updateSprite_locationNum71(int i) {
if (_flagsTable[155] != 6 || _flagsTable[207] == 1) {
state = -1;
} else if (_charSpeechSoundCounter > 0 && _actionCharacterNum == i) {
- _spritesTable[i].needUpdate = 1;
+ _spritesTable[i]._needUpdate = true;
state = 1;
} else if (getRandomNumber() < 30000) {
- _spritesTable[i].needUpdate = 0;
+ _spritesTable[i]._needUpdate = false;
state = 2;
- _spritesTable[i].updateDelay = 5;
+ _spritesTable[i]._updateDelay = 5;
} else {
- _spritesTable[i].needUpdate = 0;
+ _spritesTable[i]._needUpdate = false;
state = 2;
}
- _spritesTable[i].state = state;
+ _spritesTable[i]._state = state;
}
void TuckerEngine::updateSprite_locationNum72(int i) {
@@ -3122,28 +3119,28 @@ void TuckerEngine::updateSprite_locationNum72(int i) {
if (_flagsTable[155] == 7 || _flagsTable[207] == 1) {
state = -1;
} else if (_charSpeechSoundCounter > 0 && _actionCharacterNum == i) {
- _spritesTable[i].needUpdate = 1;
+ _spritesTable[i]._needUpdate = true;
state = 2;
} else {
- _spritesTable[i].needUpdate = 0;
+ _spritesTable[i]._needUpdate = false;
state = 1;
}
- _spritesTable[i].state = state;
+ _spritesTable[i]._state = state;
}
void TuckerEngine::updateSprite_locationNum74(int i) {
static const uint8 stateTable[] = { 1, 3, 5, 5, 10, 16, 16 };
int num = _flagsTable[236] - 74;
if (stateTable[num] + i == 21) {
- if (_updateLocationFlag == 0) {
- _updateLocationFlag = 1;
+ if (!_updateLocationFlag) {
+ _updateLocationFlag = true;
} else {
- _spritesTable[i].animationFrame = _spritesTable[i].firstFrame - 1;
- _spritesTable[i].updateDelay = 5;
- _updateSpriteFlag1 = 1;
+ _spritesTable[i]._animationFrame = _spritesTable[i]._firstFrame - 1;
+ _spritesTable[i]._updateDelay = 5;
+ _updateSpriteFlag1 = true;
}
}
- _spritesTable[i].state = stateTable[num] + i;
+ _spritesTable[i]._state = stateTable[num] + i;
}
void TuckerEngine::updateSprite_locationNum79(int i) {
@@ -3153,43 +3150,43 @@ void TuckerEngine::updateSprite_locationNum79(int i) {
_flagsTable[227] = 1;
} else if (_flagsTable[227] == 1 && _charSpeechSoundCounter > 0) {
state = 2;
- _spritesTable[i].needUpdate = 1;
+ _spritesTable[i]._needUpdate = true;
} else if (_flagsTable[227] == 2) {
state = 3;
_flagsTable[227] = 3;
- _spritesTable[i].needUpdate = 1;
+ _spritesTable[i]._needUpdate = true;
} else {
- _spritesTable[i].animationFrame = _spritesTable[i].firstFrame - 1;
- _spritesTable[i].updateDelay = 5;
- _updateSpriteFlag1 = 1;
+ _spritesTable[i]._animationFrame = _spritesTable[i]._firstFrame - 1;
+ _spritesTable[i]._updateDelay = 5;
+ _updateSpriteFlag1 = true;
state = 3;
}
- _spritesTable[i].state = state;
+ _spritesTable[i]._state = state;
}
void TuckerEngine::updateSprite_locationNum81_0(int i) {
int state;
if (_charSpeechSoundCounter > 0 && _actionCharacterNum == i) {
- _spritesTable[i].needUpdate = 1;
+ _spritesTable[i]._needUpdate = true;
state = 3;
_flagsTable[288] = 1;
} else if (_flagsTable[288] < 2) {
- _spritesTable[i].needUpdate = 0;
+ _spritesTable[i]._needUpdate = false;
state = 2;
if (_flagsTable[288] == 1) {
_flagsTable[288] = 2;
}
} else {
- _spritesTable[i].animationFrame = _spritesTable[i].firstFrame - 1;
- _spritesTable[i].updateDelay = 5;
- _updateSpriteFlag1 = 1;
+ _spritesTable[i]._animationFrame = _spritesTable[i]._firstFrame - 1;
+ _spritesTable[i]._updateDelay = 5;
+ _updateSpriteFlag1 = true;
state = 2;
}
- _spritesTable[i].state = state;
+ _spritesTable[i]._state = state;
}
void TuckerEngine::updateSprite_locationNum81_1(int i) {
- _spritesTable[i].state = 1;
+ _spritesTable[i]._state = 1;
}
void TuckerEngine::updateSprite_locationNum82(int i) {
@@ -3197,20 +3194,20 @@ void TuckerEngine::updateSprite_locationNum82(int i) {
if (_charSpeechSoundCounter > 0) {
state = 1;
_flagsTable[229] = 1;
- _spritesTable[i].needUpdate = 1;
+ _spritesTable[i]._needUpdate = true;
} else if (_flagsTable[229] == 0) {
state = 1;
} else if (_flagsTable[229] == 1) {
state = 2;
_flagsTable[229] = 2;
- _spritesTable[i].needUpdate = 0;
+ _spritesTable[i]._needUpdate = false;
} else {
- _spritesTable[i].animationFrame = _spritesTable[i].firstFrame - 1;
- _spritesTable[i].updateDelay = 5;
- _updateSpriteFlag1 = 1;
+ _spritesTable[i]._animationFrame = _spritesTable[i]._firstFrame - 1;
+ _spritesTable[i]._updateDelay = 5;
+ _updateSpriteFlag1 = true;
state = 2;
}
- _spritesTable[i].state = state;
+ _spritesTable[i]._state = state;
}
} // namespace Tucker
diff --git a/engines/tucker/resource.cpp b/engines/tucker/resource.cpp
index 48ddefe455..5f06334720 100644
--- a/engines/tucker/resource.cpp
+++ b/engines/tucker/resource.cpp
@@ -127,7 +127,7 @@ public:
}
bool findNextToken(DataToken t) {
- const char *token = 0;
+ const char *token = nullptr;
switch (t) {
case kDataTokenDw:
token = "dw";
@@ -279,7 +279,7 @@ Audio::RewindableAudioStream *CompressedSound::load(CompressedSoundType type, in
void TuckerEngine::loadImage(const char *fname, uint8 *dst, int type) {
char filename[80];
- strcpy(filename, fname);
+ Common::strlcpy(filename, fname, sizeof(filename));
Common::File f;
if (!f.open(filename)) {
@@ -351,11 +351,11 @@ void TuckerEngine::loadCharset2() {
}
void TuckerEngine::loadCharsetHelper() {
- const int charW = Graphics::_charset.charW;
- const int charH = Graphics::_charset.charH;
+ const int charW = Graphics::_charset._charW;
+ const int charH = Graphics::_charset._charH;
int offset = 0;
- for (int y = 0; y < Graphics::_charset.yCount; ++y) {
- for (int x = 0; x < Graphics::_charset.xCount; ++x) {
+ for (int y = 0; y < Graphics::_charset._yCount; ++y) {
+ for (int x = 0; x < Graphics::_charset._xCount; ++x) {
offset += Graphics::encodeRAW(_loadTempBuf + (y * 320) * charH + x * charW, _charsetGfxBuf + offset, charW, charH);
}
}
@@ -408,8 +408,8 @@ void TuckerEngine::loadBudSpr(int startOffset) {
loadImage(filename.c_str(), _loadTempBuf, 0);
++frame;
}
- int sz = Graphics::encodeRLE(_loadTempBuf + _spriteFramesTable[i].sourceOffset, _spritesGfxBuf + spriteOffset, _spriteFramesTable[i].xSize, _spriteFramesTable[i].ySize);
- _spriteFramesTable[i].sourceOffset = spriteOffset;
+ int sz = Graphics::encodeRLE(_loadTempBuf + _spriteFramesTable[i]._sourceOffset, _spritesGfxBuf + spriteOffset, _spriteFramesTable[i]._xSize, _spriteFramesTable[i]._ySize);
+ _spriteFramesTable[i]._sourceOffset = spriteOffset;
spriteOffset += sz;
}
}
@@ -431,16 +431,16 @@ int TuckerEngine::loadCTable01(int index, int firstSpriteNum, int *framesCount)
}
const int y = t.getNextInteger();
SpriteFrame *c = &_spriteFramesTable[lastSpriteNum++];
- c->sourceOffset = y * 320 + x;
- c->xSize = t.getNextInteger();
- c->ySize = t.getNextInteger();
- c->xOffset = t.getNextInteger();
- if (c->xOffset > 300) {
- c->xOffset -= 500;
+ c->_sourceOffset = y * 320 + x;
+ c->_xSize = t.getNextInteger();
+ c->_ySize = t.getNextInteger();
+ c->_xOffset = t.getNextInteger();
+ if (c->_xOffset > 300) {
+ c->_xOffset -= 500;
}
- c->yOffset = t.getNextInteger();
- if (c->yOffset > 300) {
- c->yOffset -= 500;
+ c->_yOffset = t.getNextInteger();
+ if (c->_yOffset > 300) {
+ c->_yOffset -= 500;
}
}
}
@@ -455,17 +455,17 @@ void TuckerEngine::loadCTable02(int fl) {
loadFile("ctable02.c", _loadTempBuf);
DataTokenizer t(_loadTempBuf, _fileLoadSize);
while (t.findNextToken(kDataTokenDw)) {
- _spriteAnimationsTable[entry].numParts = t.getNextInteger();
- if (_spriteAnimationsTable[entry].numParts < 1) {
+ _spriteAnimationsTable[entry]._numParts = t.getNextInteger();
+ if (_spriteAnimationsTable[entry]._numParts < 1) {
return;
}
- _spriteAnimationsTable[entry].rotateFlag = t.getNextInteger();
+ _spriteAnimationsTable[entry]._rotateFlag = t.getNextInteger();
int num = t.getNextInteger();
if (num != fl) {
continue;
}
int start = 0;
- _spriteAnimationsTable[entry].firstFrameIndex = i;
+ _spriteAnimationsTable[entry]._firstFrameIndex = i;
while (start != 999) {
start = t.getNextInteger();
if (start == 9999) { // end marker in the demo version
@@ -571,12 +571,12 @@ void TuckerEngine::loadData() {
const int x = t.getNextInteger();
const int y = t.getNextInteger();
Data *d = &_dataTable[_dataCount];
- d->sourceOffset = y * 320 + x;
- d->xSize = t.getNextInteger();
- d->ySize = t.getNextInteger();
- d->xDest = t.getNextInteger();
- d->yDest = t.getNextInteger();
- d->index = count;
+ d->_sourceOffset = y * 320 + x;
+ d->_xSize = t.getNextInteger();
+ d->_ySize = t.getNextInteger();
+ d->_xDest = t.getNextInteger();
+ d->_yDest = t.getNextInteger();
+ d->_index = count;
}
++objNum;
++count;
@@ -592,9 +592,9 @@ void TuckerEngine::loadData() {
int TuckerEngine::loadDataHelper(int offset, int index) {
for (int i = 0; i < _dataCount + 1; ++i) {
- if (_dataTable[i].index == index) {
- int sz = Graphics::encodeRLE(_loadTempBuf + _dataTable[i].sourceOffset, _data3GfxBuf + offset, _dataTable[i].xSize, _dataTable[i].ySize);
- _dataTable[i].sourceOffset = offset;
+ if (_dataTable[i]._index == index) {
+ int sz = Graphics::encodeRLE(_loadTempBuf + _dataTable[i]._sourceOffset, _data3GfxBuf + offset, _dataTable[i]._xSize, _dataTable[i]._ySize);
+ _dataTable[i]._sourceOffset = offset;
offset += sz;
}
}
@@ -626,7 +626,7 @@ void TuckerEngine::loadData3() {
}
assert(_locationAnimationsCount < kLocationAnimationsTableSize);
LocationAnimation *d = &_locationAnimationsTable[_locationAnimationsCount++];
- d->graphicNum = num;
+ d->_graphicNum = num;
const int seqNum = t.getNextInteger();
if (seqNum > 0) {
int anim = 0;
@@ -636,22 +636,22 @@ void TuckerEngine::loadData3() {
}
++anim;
}
- d->animCurrentCounter = d->animInitCounter = anim;
+ d->_animCurrentCounter = d->_animInitCounter = anim;
while (_staticData3Table[anim + 1] != 999) {
++anim;
}
- d->animLastCounter = anim;
+ d->_animLastCounter = anim;
} else {
- d->animLastCounter = 0;
+ d->_animLastCounter = 0;
}
- d->getFlag = t.getNextInteger();
- d->inventoryNum = t.getNextInteger();
- d->flagNum = t.getNextInteger();
- d->flagValue = t.getNextInteger();
- d->selectable = t.getNextInteger();
- d->standX = t.getNextInteger();
- d->standY = t.getNextInteger();
- d->drawFlag = 0;
+ d->_getFlag = t.getNextInteger();
+ d->_inventoryNum = t.getNextInteger();
+ d->_flagNum = t.getNextInteger();
+ d->_flagValue = t.getNextInteger();
+ d->_selectable = t.getNextInteger();
+ d->_standX = t.getNextInteger();
+ d->_standY = t.getNextInteger();
+ d->_drawFlag = false;
}
}
}
@@ -673,22 +673,22 @@ void TuckerEngine::loadData4() {
}
assert(_locationObjectsCount < kLocationObjectsTableSize);
LocationObject *d = &_locationObjectsTable[_locationObjectsCount++];
- d->xPos = i;
- d->yPos = t.getNextInteger();
- d->xSize = t.getNextInteger();
- d->ySize = t.getNextInteger();
- d->standX = t.getNextInteger();
- d->standY = t.getNextInteger();
- d->textNum = t.getNextInteger();
- d->cursorNum = t.getNextInteger();
- d->locationNum = t.getNextInteger();
- if (d->locationNum > 0) {
- d->toX = t.getNextInteger();
- d->toY = t.getNextInteger();
- d->toX2 = t.getNextInteger();
- d->toY2 = t.getNextInteger();
- d->toWalkX2 = t.getNextInteger();
- d->toWalkY2 = t.getNextInteger();
+ d->_xPos = i;
+ d->_yPos = t.getNextInteger();
+ d->_xSize = t.getNextInteger();
+ d->_ySize = t.getNextInteger();
+ d->_standX = t.getNextInteger();
+ d->_standY = t.getNextInteger();
+ d->_textNum = t.getNextInteger();
+ d->_cursorNum = t.getNextInteger();
+ d->_locationNum = t.getNextInteger();
+ if (d->_locationNum > 0) {
+ d->_toX = t.getNextInteger();
+ d->_toY = t.getNextInteger();
+ d->_toX2 = t.getNextInteger();
+ d->_toY2 = t.getNextInteger();
+ d->_toWalkX2 = t.getNextInteger();
+ d->_toWalkY2 = t.getNextInteger();
}
}
}
@@ -726,20 +726,20 @@ void TuckerEngine::loadActionFile() {
int keyD = t.getNextInteger();
int keyE = t.getNextInteger();
Action *action = &_actionsTable[_actionsCount++];
- action->key = keyE * 1000000 + keyD * 100000 + keyA * 10000 + keyB * 1000 + keyC;
- action->testFlag1Num = t.getNextInteger();
- action->testFlag1Value = t.getNextInteger();
- action->testFlag2Num = t.getNextInteger();
- action->testFlag2Value = t.getNextInteger();
- action->speech = t.getNextInteger();
- action->flipX = t.getNextInteger();
- action->index = t.getNextInteger();
- action->delay = t.getNextInteger();
- action->setFlagNum = t.getNextInteger();
- assert(action->setFlagNum >= 0 && action->setFlagNum < kFlagsTableSize);
- action->setFlagValue = t.getNextInteger();
- action->fxNum = t.getNextInteger();
- action->fxDelay = t.getNextInteger();
+ action->_key = keyE * 1000000 + keyD * 100000 + keyA * 10000 + keyB * 1000 + keyC;
+ action->_testFlag1Num = t.getNextInteger();
+ action->_testFlag1Value = t.getNextInteger();
+ action->_testFlag2Num = t.getNextInteger();
+ action->_testFlag2Value = t.getNextInteger();
+ action->_speech = t.getNextInteger();
+ action->_flipX = t.getNextInteger();
+ action->_index = t.getNextInteger();
+ action->_delay = t.getNextInteger();
+ action->_setFlagNum = t.getNextInteger();
+ assert(action->_setFlagNum >= 0 && action->_setFlagNum < kFlagsTableSize);
+ action->_setFlagValue = t.getNextInteger();
+ action->_fxNum = t.getNextInteger();
+ action->_fxDelay = t.getNextInteger();
}
}
}
@@ -756,17 +756,17 @@ void TuckerEngine::loadCharPos() {
}
assert(_charPosCount < 4);
CharPos *charPos = &_charPosTable[_charPosCount++];
- charPos->xPos = i;
- charPos->yPos = t.getNextInteger();
- charPos->xSize = t.getNextInteger();
- charPos->ySize = t.getNextInteger();
- charPos->xWalkTo = t.getNextInteger();
- charPos->yWalkTo = t.getNextInteger();
- charPos->flagNum = t.getNextInteger();
- charPos->flagValue = t.getNextInteger();
- charPos->direction = t.getNextInteger();
- charPos->name = t.getNextInteger();
- charPos->description = t.getNextInteger();
+ charPos->_xPos = i;
+ charPos->_yPos = t.getNextInteger();
+ charPos->_xSize = t.getNextInteger();
+ charPos->_ySize = t.getNextInteger();
+ charPos->_xWalkTo = t.getNextInteger();
+ charPos->_yWalkTo = t.getNextInteger();
+ charPos->_flagNum = t.getNextInteger();
+ charPos->_flagValue = t.getNextInteger();
+ charPos->_direction = t.getNextInteger();
+ charPos->_name = t.getNextInteger();
+ charPos->_description = t.getNextInteger();
}
int quitLoop = 0;
size_t count = 0;
@@ -819,9 +819,9 @@ void TuckerEngine::loadSprA02_01() {
void TuckerEngine::unloadSprA02_01() {
for (int i = 1; i < kSprA02TableSize; ++i) {
free(_sprA02Table[i]);
- _sprA02Table[i] = 0;
+ _sprA02Table[i] = nullptr;
}
- _sprA02Table[0] = 0;
+ _sprA02Table[0] = nullptr;
}
void TuckerEngine::loadSprC02_01() {
@@ -835,17 +835,17 @@ void TuckerEngine::loadSprC02_01() {
_spritesCount = _sprC02LookupTable2[_locationNum];
for (int i = 0; i < kMaxCharacters; ++i) {
memset(&_spritesTable[i], 0, sizeof(Sprite));
- _spritesTable[i].state = -1;
- _spritesTable[i].stateIndex = -1;
+ _spritesTable[i]._state = -1;
+ _spritesTable[i]._stateIndex = -1;
}
}
void TuckerEngine::unloadSprC02_01() {
for (int i = 1; i < kSprC02TableSize; ++i) {
free(_sprC02Table[i]);
- _sprC02Table[i] = 0;
+ _sprC02Table[i] = nullptr;
}
- _sprC02Table[0] = 0;
+ _sprC02Table[0] = nullptr;
}
void TuckerEngine::loadFx() {
@@ -857,35 +857,35 @@ void TuckerEngine::loadFx() {
_currentFxSet = 0;
for (int i = 0; i < _locationSoundsCount; ++i) {
LocationSound *s = &_locationSoundsTable[i];
- s->offset = 0;
- s->num = t.getNextInteger();
- s->volume = t.getNextInteger();
- s->type = t.getNextInteger();
- switch (s->type) {
+ s->_offset = 0;
+ s->_num = t.getNextInteger();
+ s->_volume = t.getNextInteger();
+ s->_type = t.getNextInteger();
+ switch (s->_type) {
case 5:
_currentFxSet = 1;
_currentFxIndex = i;
- _currentFxVolume = s->volume;
+ _currentFxVolume = s->_volume;
_currentFxDist = t.getNextInteger();
_currentFxScale = t.getNextInteger();
break;
case 6:
case 7:
case 8:
- s->startFxSpriteState = t.getNextInteger();
- s->startFxSpriteNum = t.getNextInteger();
- s->updateType = t.getNextInteger();
- if (s->type == 7) {
- s->flagNum = t.getNextInteger();
- s->flagValueStartFx = t.getNextInteger();
- s->stopFxSpriteState = t.getNextInteger();
- s->stopFxSpriteNum = t.getNextInteger();
- s->flagValueStopFx = t.getNextInteger();
+ s->_startFxSpriteState = t.getNextInteger();
+ s->_startFxSpriteNum = t.getNextInteger();
+ s->_updateType = t.getNextInteger();
+ if (s->_type == 7) {
+ s->_flagNum = t.getNextInteger();
+ s->_flagValueStartFx = t.getNextInteger();
+ s->_stopFxSpriteState = t.getNextInteger();
+ s->_stopFxSpriteNum = t.getNextInteger();
+ s->_flagValueStopFx = t.getNextInteger();
}
break;
}
- if (s->type == 8) {
- s->type = 6;
+ if (s->_type == 8) {
+ s->_type = 6;
}
}
t.findNextToken(kDataTokenDw);
@@ -896,10 +896,10 @@ void TuckerEngine::loadFx() {
int flagValue = t.getNextInteger();
if (flagValue == _flagsTable[flagNum]) {
LocationMusic *m = &_locationMusicsTable[_locationMusicsCount++];
- m->offset = 0;
- m->num = t.getNextInteger();
- m->volume = t.getNextInteger();
- m->flag = t.getNextInteger();
+ m->_offset = 0;
+ m->_num = t.getNextInteger();
+ m->_volume = t.getNextInteger();
+ m->_flag = t.getNextInteger();
} else {
for (int j = 0; j < 3; ++j) {
t.getNextInteger();
@@ -924,7 +924,7 @@ void TuckerEngine::loadSound(Audio::Mixer::SoundType type, int num, int volume,
return;
}
if (!stream) {
- const char *fmt = 0;
+ const char *fmt = nullptr;
switch (type) {
case Audio::Mixer::kSFXSoundType:
fmt = "fx/fx%d.wav";
@@ -1005,7 +1005,7 @@ void TuckerEngine::loadActionsTable() {
}
}
} else {
- if (_spritesTable[_csDataTableCount - 1].firstFrame - 1 != _spritesTable[_csDataTableCount - 1].animationFrame) {
+ if (_spritesTable[_csDataTableCount - 1]._firstFrame - 1 != _spritesTable[_csDataTableCount - 1]._animationFrame) {
break;
}
}
@@ -1031,7 +1031,7 @@ void TuckerEngine::loadActionsTable() {
_panelState = 0;
setCursorType(0);
_csDataHandled = false;
- _actionVerbLocked = 0;
+ _actionVerbLocked = false;
_mouseClick = 1;
}
}
diff --git a/engines/tucker/saveload.cpp b/engines/tucker/saveload.cpp
index 5f40cbf904..92da2d4d9b 100644
--- a/engines/tucker/saveload.cpp
+++ b/engines/tucker/saveload.cpp
@@ -64,8 +64,8 @@ void TuckerEngine::saveOrLoadGameStateData(S &s) {
saveOrLoadInt(s, _panelObjectsOffsetTable[i]);
}
saveOrLoadInt(s, _mainSpritesBaseOffset);
- saveOrLoadInt(s, _selectedObject.xPos);
- saveOrLoadInt(s, _selectedObject.yPos);
+ saveOrLoadInt(s, _selectedObject._xPos);
+ saveOrLoadInt(s, _selectedObject._yPos);
saveOrLoadInt(s, _locationNum);
saveOrLoadInt(s, _xPosCurrent);
saveOrLoadInt(s, _yPosCurrent);
diff --git a/engines/tucker/sequences.cpp b/engines/tucker/sequences.cpp
index 4b36a13f76..2fb881f77e 100644
--- a/engines/tucker/sequences.cpp
+++ b/engines/tucker/sequences.cpp
@@ -306,7 +306,7 @@ void TuckerEngine::handleMeanwhileSequence() {
void TuckerEngine::handleMapSequence() {
loadImage("map2.pcx", _quadBackgroundGfxBuf + 89600, 0);
loadImage("map1.pcx", _loadTempBuf, 1);
- _selectedObject.locationObject_locationNum = 0;
+ _selectedObject._locationObjectLocationNum = 0;
if (_flagsTable[7] > 0) {
copyMapRect(0, 0, 140, 86);
}
@@ -419,7 +419,7 @@ void TuckerEngine::copyMapRect(int x, int y, int w, int h) {
}
}
-int TuckerEngine::handleSpecialObjectSelectionSequence() {
+bool TuckerEngine::handleSpecialObjectSelectionSequence() {
char filename[40];
if (_partNum == 1 && _selectedObjectNum == 6) {
strcpy(filename, "news1.pcx");
@@ -436,7 +436,7 @@ int TuckerEngine::handleSpecialObjectSelectionSequence() {
} else if (_currentInfoString1SourceType == 1 && _currentActionObj1Num == 91) {
strcpy(filename, "memo.pcx");
} else {
- return 0;
+ return false;
}
while (_fadePaletteCounter > 0) {
fadeInPalette();
@@ -460,10 +460,10 @@ int TuckerEngine::handleSpecialObjectSelectionSequence() {
}
if (_partNum == 3 && _selectedObjectNum == 45) {
for (int i = 0; i < 13; ++i) {
- const int offset = _dataTable[204 + i].yDest * 640 + _dataTable[204 + i].xDest;
+ const int offset = _dataTable[204 + i]._yDest * 640 + _dataTable[204 + i]._xDest;
static const int itemsTable[] = { 15, 44, 25, 19, 21, 24, 12, 27, 20, 29, 35, 23, 3 };
if (_inventoryItemsState[itemsTable[i]] > 1) {
- Graphics::decodeRLE(_locationBackgroundGfxBuf + _scrollOffset + offset, _data3GfxBuf + _dataTable[204 + i].sourceOffset, _dataTable[204 + i].xSize, _dataTable[204 + i].ySize);
+ Graphics::decodeRLE(_locationBackgroundGfxBuf + _scrollOffset + offset, _data3GfxBuf + _dataTable[204 + i]._sourceOffset, _dataTable[204 + i]._xSize, _dataTable[204 + i]._ySize);
}
}
}
@@ -479,7 +479,7 @@ int TuckerEngine::handleSpecialObjectSelectionSequence() {
}
}
loadLoc();
- return 1;
+ return true;
}
AnimationSequencePlayer::AnimationSequencePlayer(OSystem *system, Audio::Mixer *mixer, Common::EventManager *event, CompressedSound *sound, int num)
@@ -487,11 +487,20 @@ AnimationSequencePlayer::AnimationSequencePlayer(OSystem *system, Audio::Mixer *
memset(_animationPalette, 0, sizeof(_animationPalette));
_soundSeqDataCount = 0;
_soundSeqDataIndex = 0;
- _soundSeqData = 0;
+ _soundSeqData = nullptr;
_offscreenBuffer = (uint8 *)malloc(kScreenWidth * kScreenHeight);
_updateScreenWidth = 0;
_updateScreenPicture = false;
- _picBufPtr = _pic2BufPtr = 0;
+ _picBufPtr = _pic2BufPtr = nullptr;
+
+ _changeToNextSequence = false;
+ _updateFunc = nullptr;
+ _updateFuncIndex = 0;
+ _updateScreenCounter = 0;
+ _updateScreenIndex = -1;
+ _frameCounter = 0;
+ _frameTime = 0;
+ _lastFrameTime = 1;
}
AnimationSequencePlayer::~AnimationSequencePlayer() {
@@ -722,13 +731,12 @@ void AnimationSequencePlayer::fadeOutPalette() {
void AnimationSequencePlayer::unloadAnimation() {
_mixer->stopAll();
free(_picBufPtr);
- _picBufPtr = 0;
free(_pic2BufPtr);
- _pic2BufPtr = 0;
+ _picBufPtr = _pic2BufPtr = nullptr;
}
uint8 *AnimationSequencePlayer::loadPicture(const char *fileName) {
- uint8 *p = 0;
+ uint8 *p = nullptr;
Common::File f;
if (f.open(fileName)) {
const int sz = f.size();
diff --git a/engines/tucker/tucker.cpp b/engines/tucker/tucker.cpp
index 7eb4856050..adf4be6b65 100644
--- a/engines/tucker/tucker.cpp
+++ b/engines/tucker/tucker.cpp
@@ -43,6 +43,33 @@ namespace Tucker {
TuckerEngine::TuckerEngine(OSystem *system, Common::Language language, uint32 flags)
: Engine(system), _gameLang(language), _gameFlags(flags), _rnd("tucker") {
_console = new TuckerConsole(this);
+
+ resetVariables();
+
+ _execData3Counter = 0;
+ _currentSaveLoadGameState = 1;
+ _fileLoadSize = 0;
+ _csDataSize = 0;
+
+ _player = nullptr;
+ _loadTempBuf = nullptr;
+ _cursorGfxBuf = nullptr;
+ _charsetGfxBuf = nullptr;
+ _panelGfxBuf = nullptr;
+ _itemsGfxBuf = nullptr;
+ _spritesGfxBuf = nullptr;
+ _locationBackgroundGfxBuf = nullptr;
+ _data5Buf = nullptr;
+ _data3GfxBuf = nullptr;
+ _quadBackgroundGfxBuf = nullptr;
+ _objTxtBuf = nullptr;
+ _panelObjectsGfxBuf = nullptr;
+ _ptTextBuf = nullptr;
+ _infoBarBuf = nullptr;
+ _bgTextBuf = nullptr;
+ _charNameBuf = nullptr;
+ _locationBackgroundMaskBuf = nullptr;
+ _csDataBuf = nullptr;
}
TuckerEngine::~TuckerEngine() {
@@ -84,17 +111,17 @@ void TuckerEngine::allocateBuffers() {
_charsetGfxBuf = (uint8 *)calloc(1, 22400);
_cursorGfxBuf = (uint8 *)calloc(1, 256 * 7);
_infoBarBuf = (uint8 *)calloc(1, 1000);
- _charNameBuf = 0;
- _bgTextBuf = 0;
- _objTxtBuf = 0;
+ _charNameBuf = nullptr;
+ _bgTextBuf = nullptr;
+ _objTxtBuf = nullptr;
_panelObjectsGfxBuf = (uint8 *)calloc(1, 20000);
- _data5Buf = 0;
+ _data5Buf = nullptr;
_data3GfxBuf = (uint8 *)calloc(1, 250000);
_quadBackgroundGfxBuf = (uint8 *)calloc(1, 320 * 140 * 4);
_locationBackgroundMaskBuf = (uint8 *)calloc(1, 640 * 140);
- _csDataBuf = 0;
+ _csDataBuf = nullptr;
_spritesGfxBuf = (uint8 *)calloc(1, 160000);
- _ptTextBuf = 0;
+ _ptTextBuf = nullptr;
memset(_charWidthTable, 0, sizeof(_charWidthTable));
}
@@ -119,7 +146,7 @@ void TuckerEngine::freeBuffers() {
free(_ptTextBuf);
}
-void TuckerEngine::restart() {
+void TuckerEngine::resetVariables() {
_quitGame = false;
_fastMode = false;
_syncCounter = 0;
@@ -131,15 +158,16 @@ void TuckerEngine::restart() {
_nextLocationNum = (_gameFlags & kGameFlagDemo) == 0 ? kStartupLocationGame : kStartupLocationDemo;
_gamePaused = false;
_gameDebug = false;
- _displayGameHints = false;
_displaySpeechText = (_gameFlags & kGameFlagNoSubtitles) == 0 ? ConfMan.getBool("subtitles") : false;
memset(_flagsTable, 0, sizeof(_flagsTable));
_gameHintsIndex = 0;
_gameHintsCounter = 0;
- _gameHintsDisplayText = 0;
_gameHintsStringNum = 0;
+ _displayGameHints = false;
+ _displayHintsText = false;
+
if ((_gameFlags & kGameFlagDemo) == 0) {
_locationWidthTable = _locationWidthTableGame;
_locationHeightTable = _locationHeightTableGame;
@@ -189,7 +217,7 @@ void TuckerEngine::restart() {
_switchPanelCounter = 0;
_conversationOptionsCount = 0;
_fadedPanel = false;
- _panelLockedFlag = 0;
+ _panelLockedFlag = false;
_conversationOptionLinesCount = 0;
memset(_inventoryItemsState, 0, sizeof(_inventoryItemsState));
memset(_inventoryObjectsList, 0, sizeof(_inventoryObjectsList));
@@ -223,11 +251,11 @@ void TuckerEngine::restart() {
_selectedCharacterNum = 0;
_actionObj1Type = _actionObj2Type = 0;
_actionObj1Num = _actionObj2Num = 0;
- _actionRequiresTwoObjects = 0;
- _actionVerbLocked = 0;
+ _actionRequiresTwoObjects = false;
+ _actionVerbLocked = false;
_actionPosX = 0;
_actionPosY = 0;
- _selectedObjectLocationMask = 0;
+ _selectedObjectLocationMask = false;
memset(&_selectedObject, 0, sizeof(_selectedObject));
_selectedCharacterDirection = 0;
_selectedCharacter2Num = 0;
@@ -247,10 +275,10 @@ void TuckerEngine::restart() {
_nextTableToLoadIndex = 0;
memset(_nextTableToLoadTable, 0, sizeof(_nextTableToLoadTable));
_soundInstructionIndex = 0;
- _tableInstructionsPtr = 0;
+ _tableInstructionsPtr = nullptr;
memset(_tableInstructionObj1Table, 0, sizeof(_tableInstructionObj1Table));
memset(_tableInstructionObj2Table, 0, sizeof(_tableInstructionObj2Table));
- _tableInstructionFlag = 0;
+ _tableInstructionFlag = false;
_tableInstructionItemNum1 = _tableInstructionItemNum2 = 0;
memset(_instructionsActionsTable, 0, sizeof(_instructionsActionsTable));
_validInstructionId = false;
@@ -266,7 +294,7 @@ void TuckerEngine::restart() {
_skipCurrentCharacterDraw = false;
_yPosCurrent = 131;
_xPosCurrent = 160;
- _characterSpeechDataPtr = 0;
+ _characterSpeechDataPtr = nullptr;
_ptTextOffset = 0;
memset(_characterAnimationsTable, 0, sizeof(_characterAnimationsTable));
memset(_characterStateTable, 0, sizeof(_characterStateTable));
@@ -279,26 +307,26 @@ void TuckerEngine::restart() {
_currentSpriteAnimationFrame2 = 0;
_characterAnimationIndex = -1;
_characterFacingDirection = _characterPrevFacingDirection = 0;
- _characterBackFrontFacing = _characterPrevBackFrontFacing = 0;
+ _characterBackFrontFacing = _characterPrevBackFrontFacing = false;
_characterAnimationNum = 0;
_noCharacterAnimationChange = 0;
- _changeBackgroundSprite = 0;
_characterSpriteAnimationFrameCounter = 0;
- _locationMaskIgnore = 0;
+ _locationMaskIgnore = false;
_locationMaskType = 0;
_locationMaskCounter = 0;
- _updateSpriteFlag1 = 0;
- _updateSpriteFlag2 = 0;
_handleMapCounter = 0;
_noPositionChangeAfterMap = false;
+ _changeBackgroundSprite = false;
+ _updateSpriteFlag1 = false;
+ _updateSpriteFlag2 = false;
- _mirroredDrawing = 0;
- _loadLocBufPtr = 0;
- _backgroundSpriteDataPtr = 0;
+ _mirroredDrawing = false;
+ _loadLocBufPtr = nullptr;
+ _backgroundSpriteDataPtr = nullptr;
_locationHeight = 0;
_scrollOffset = 0;
_currentGfxBackgroundCounter = 0;
- _currentGfxBackground = 0;
+ _currentGfxBackground = nullptr;
_fadePaletteCounter = 0;
memset(_currentPalette, 0, sizeof(_currentPalette));
_fullRedraw = false;
@@ -319,14 +347,14 @@ void TuckerEngine::restart() {
memset(_updateLocation14ObjNum, 0, sizeof(_updateLocation14ObjNum));
memset(_updateLocation14Delay, 0, sizeof(_updateLocation14Delay));
_updateLocationCounter2 = 0;
- _updateLocationFlag = 0;
+ _updateLocationFlag = false;
_updateLocation70StringLen = 0;
memset(_updateLocation70String, 0, sizeof(_updateLocation70String));
}
void TuckerEngine::mainLoop() {
allocateBuffers();
- restart();
+ resetVariables();
loadCharSizeDta();
if ((_gameFlags & kGameFlagDemo) != 0) {
@@ -352,7 +380,7 @@ void TuckerEngine::mainLoop() {
_flagsTable[219] = 1;
_flagsTable[105] = 1;
- _spriteAnimationFrameIndex = _spriteAnimationsTable[14].firstFrameIndex;
+ _spriteAnimationFrameIndex = _spriteAnimationsTable[14]._firstFrameIndex;
if (ConfMan.hasKey("save_slot")) {
const int slot = ConfMan.getInt("save_slot");
@@ -412,7 +440,7 @@ void TuckerEngine::mainLoop() {
}
if (_flagsTable[158] == 1) {
_flagsTable[158] = 0;
- _skipCurrentCharacterDraw = 1;
+ _skipCurrentCharacterDraw = true;
}
_mainLoopCounter1 = 0;
}
@@ -440,7 +468,7 @@ void TuckerEngine::mainLoop() {
updateGameHints();
}
if (_panelState == 0) {
- if (_panelLockedFlag == 1 || _pendingActionDelay > 0) {
+ if (_panelLockedFlag || _pendingActionDelay > 0) {
if (!_fadedPanel) {
updateItemsGfxColors(0x60, 0x80);
_fadedPanel = true;
@@ -450,7 +478,7 @@ void TuckerEngine::mainLoop() {
clearItemsGfx();
if (_gamePaused) {
drawPausedInfoBar();
- } else if (_gameHintsDisplayText == 1 && _mouseIdleCounter > 1000) {
+ } else if (_displayHintsText && _mouseIdleCounter > 1000) {
drawGameHintString();
} else {
drawInfoString();
@@ -466,10 +494,10 @@ void TuckerEngine::mainLoop() {
}
_currentGfxBackground = _quadBackgroundGfxBuf + (_currentGfxBackgroundCounter / 10) * 44800;
if (_fadePaletteCounter < 34 && _locationNum == 22) {
- _spritesTable[0].gfxBackgroundOffset = (_currentGfxBackgroundCounter / 10) * 640;
+ _spritesTable[0]._gfxBackgroundOffset = (_currentGfxBackgroundCounter / 10) * 640;
_mainSpritesBaseOffset = _currentGfxBackgroundCounter / 10;
if (_locationNum == 22 && _currentGfxBackgroundCounter <= 29) {
- _spritesTable[0].gfxBackgroundOffset = 640;
+ _spritesTable[0]._gfxBackgroundOffset = 640;
_mainSpritesBaseOffset = 1;
}
}
@@ -489,11 +517,11 @@ void TuckerEngine::mainLoop() {
drawData3();
execData3PreUpdate();
for (int i = 0; i < _spritesCount; ++i) {
- if (!_spritesTable[i].disabled) {
+ if (!_spritesTable[i]._disabled) {
drawSprite(i);
}
}
- if (_skipCurrentCharacterDraw != 1) {
+ if (!_skipCurrentCharacterDraw) {
if (_backgroundSpriteCurrentAnimation > -1 && _backgroundSpriteCurrentFrame > 0) {
drawBackgroundSprites();
} else {
@@ -522,7 +550,7 @@ void TuckerEngine::mainLoop() {
--_miscSoundFxDelayCounter[num];
if (_miscSoundFxDelayCounter[num] == 0) {
const int index = _miscSoundFxNum[num];
- startSound(_locationSoundsTable[index].offset, index, _locationSoundsTable[index].volume);
+ startSound(_locationSoundsTable[index]._offset, index, _locationSoundsTable[index]._volume);
}
}
}
@@ -565,7 +593,7 @@ void TuckerEngine::mainLoop() {
}
if (_inputKeys[kInputKeyHelp]) {
_inputKeys[kInputKeyHelp] = false;
- if (_displayGameHints && _gameHintsDisplayText == 1) {
+ if (_displayGameHints && _displayHintsText) {
_gameHintsStringNum = _gameHintsIndex + 1;
_mouseIdleCounter = 1100;
}
@@ -689,14 +717,14 @@ void TuckerEngine::setupNewLocation() {
_mainLoopCounter2 = 0;
_mainLoopCounter1 = 0;
_characterFacingDirection = 0;
- _actionVerbLocked = 0;
- _locationMaskIgnore = 0;
+ _actionVerbLocked = false;
+ _locationMaskIgnore = false;
_backgroundSprOffset = 0;
if (_backgroundSpriteCurrentAnimation > 0 && _backgroundSpriteCurrentFrame > 0) {
_backgroundSpriteCurrentAnimation = -1;
_backgroundSpriteCurrentFrame = 0;
}
- if (_panelLockedFlag == 0 || (_backgroundSpriteCurrentAnimation > 0 && _locationNum != 25)) {
+ if (!_panelLockedFlag || (_backgroundSpriteCurrentAnimation > 0 && _locationNum != 25)) {
_locationMaskType = 0;
} else {
_locationMaskType = 3;
@@ -829,8 +857,8 @@ void TuckerEngine::updateCharPosition() {
updateCharPositionHelper();
return;
case 1:
- if (_locationAnimationsTable[_selectedCharacter2Num].getFlag == 1) {
- _speechSoundNum = _speechSoundBaseNum + _locationAnimationsTable[_selectedCharacter2Num].inventoryNum;
+ if (_locationAnimationsTable[_selectedCharacter2Num]._getFlag == 1) {
+ _speechSoundNum = _speechSoundBaseNum + _locationAnimationsTable[_selectedCharacter2Num]._inventoryNum;
_characterSpeechDataPtr = _ptTextBuf;
updateCharPositionHelper();
return;
@@ -842,8 +870,8 @@ void TuckerEngine::updateCharPosition() {
break;
case 2:
_characterSpeechDataPtr = _ptTextBuf;
- _speechSoundNum = 2175 + _charPosTable[_selectedCharacterNum].description;
- if (_charPosTable[_selectedCharacterNum].description != 0) {
+ _speechSoundNum = 2175 + _charPosTable[_selectedCharacterNum]._description;
+ if (_charPosTable[_selectedCharacterNum]._description != 0) {
updateCharPositionHelper();
return;
}
@@ -852,59 +880,61 @@ void TuckerEngine::updateCharPosition() {
}
int actionKey = _currentActionObj2Num * 1000000 + _currentInfoString2SourceType * 100000 + _currentActionVerb * 10000 + _currentInfoString1SourceType * 1000 + _currentActionObj1Num;
debug(3, "updateCharPosition() actionKey %d", actionKey);
- int skip = 0;
- Action *action = 0;
- for (int i = 0; i < _actionsCount && skip == 0; ++i) {
+ bool skip = false;
+ Action *action = nullptr;
+ for (int i = 0; i < _actionsCount && !skip; ++i) {
action = &_actionsTable[i];
- if (action->key == actionKey) {
- skip = 1;
- if (action->testFlag1Num != 0) {
- if (action->testFlag1Num < 500) {
- if (_flagsTable[action->testFlag1Num] != action->testFlag1Value) {
- skip = 0;
+ if (action->_key == actionKey) {
+ skip = true;
+ if (action->_testFlag1Num != 0) {
+ if (action->_testFlag1Num < 500) {
+ if (action->_testFlag1Num >= 300)
+ error("updateCharPosition() - Unexpected value for _testFlag1Num : %d", action->_testFlag1Num);
+ if (_flagsTable[action->_testFlag1Num] != action->_testFlag1Value) {
+ skip = false;
}
- } else if (_inventoryItemsState[action->testFlag1Num - 500] != action->testFlag1Value) {
- skip = 0;
+ } else if (_inventoryItemsState[action->_testFlag1Num - 500] != action->_testFlag1Value) {
+ skip = false;
}
- debug(3, "updateCharPosition() flag1 %d value %d", action->testFlag1Num, action->testFlag1Value);
+ debug(3, "updateCharPosition() flag1 %d value %d", action->_testFlag1Num, action->_testFlag1Value);
}
- if (action->testFlag2Num != 0) {
- if (action->testFlag2Num < 500) {
- if (_flagsTable[action->testFlag2Num] != action->testFlag2Value) {
- skip = 0;
+ if (action->_testFlag2Num != 0) {
+ if (action->_testFlag2Num < 500) {
+ if (_flagsTable[action->_testFlag2Num] != action->_testFlag2Value) {
+ skip = false;
}
- } else if (_inventoryItemsState[action->testFlag2Num - 500] != action->testFlag2Value) {
- skip = 0;
+ } else if (_inventoryItemsState[action->_testFlag2Num - 500] != action->_testFlag2Value) {
+ skip = false;
}
- debug(3, "updateCharPosition() flag2 %d value %d", action->testFlag2Num, action->testFlag2Value);
+ debug(3, "updateCharPosition() flag2 %d value %d", action->_testFlag2Num, action->_testFlag2Value);
}
}
}
- if (skip == 0) {
+ if (!skip) {
playSpeechForAction(_currentActionVerb);
_currentActionVerb = 0;
return;
}
assert(action);
- if (action->speech != 6) {
- if (action->speech < 100) {
- _spriteAnimationFrameIndex = _spriteAnimationsTable[action->speech].firstFrameIndex;
- _currentSpriteAnimationLength = _spriteAnimationsTable[action->speech].numParts;
- _mirroredDrawing = action->flipX;
+ if (action->_speech != 6) {
+ if (action->_speech < 100) {
+ _spriteAnimationFrameIndex = _spriteAnimationsTable[action->_speech]._firstFrameIndex;
+ _currentSpriteAnimationLength = _spriteAnimationsTable[action->_speech]._numParts;
+ _mirroredDrawing = (action->_flipX != 0);
_characterFacingDirection = 5;
_mainLoopCounter2 = 0;
} else {
- _backgroundSpriteCurrentAnimation = action->speech - 100;
+ _backgroundSpriteCurrentAnimation = action->_speech - 100;
_backgroundSpriteCurrentFrame = 0;
- _mirroredDrawing = 0;
+ _mirroredDrawing = false;
}
}
- _pendingActionDelay = action->delay;
- _charPositionFlagNum = action->setFlagNum;
- _charPositionFlagValue = action->setFlagValue;
- _pendingActionIndex = action->index;
- _characterSoundFxDelayCounter = action->fxDelay;
- _characterSoundFxNum = action->fxNum;
+ _pendingActionDelay = action->_delay;
+ _charPositionFlagNum = action->_setFlagNum;
+ _charPositionFlagValue = action->_setFlagValue;
+ _pendingActionIndex = action->_index;
+ _characterSoundFxDelayCounter = action->_fxDelay;
+ _characterSoundFxNum = action->_fxNum;
_previousActionVerb = _currentActionVerb;
_currentActionVerb = 0;
}
@@ -980,10 +1010,10 @@ void TuckerEngine::setBlackPalette() {
void TuckerEngine::updateCursor() {
setCursorNum(0);
- if (_backgroundSpriteCurrentAnimation == -1 && _panelLockedFlag == 0 && _selectedObject.locationObject_locationNum > 0) {
- _selectedObject.locationObject_locationNum = 0;
+ if (_backgroundSpriteCurrentAnimation == -1 && !_panelLockedFlag && _selectedObject._locationObjectLocationNum > 0) {
+ _selectedObject._locationObjectLocationNum = 0;
}
- if (_locationMaskType > 0 || _selectedObject.locationObject_locationNum > 0 || _pendingActionDelay > 0) {
+ if (_locationMaskType > 0 || _selectedObject._locationObjectLocationNum > 0 || _pendingActionDelay > 0) {
return;
}
if (_rightMouseButtonPressed) {
@@ -993,13 +1023,13 @@ void TuckerEngine::updateCursor() {
_actionVerb = 0;
}
_updateCursorFlag = true;
- _actionVerbLocked = 1;
+ _actionVerbLocked = true;
_actionRequiresTwoObjects = false;
}
} else {
_updateCursorFlag = false;
}
- if (_actionVerbLocked == 0) {
+ if (!_actionVerbLocked) {
setActionVerbUnderCursor();
if (_actionVerb == 0 && _locationNum == 63) {
_actionVerb = 8;
@@ -1016,7 +1046,7 @@ void TuckerEngine::updateCursor() {
} else {
num = getObjectUnderCursor();
if (num > -1) {
- _selectedObjectNum = _locationObjectsTable[num].textNum;
+ _selectedObjectNum = _locationObjectsTable[num]._textNum;
}
}
handleMouseClickOnInventoryObject();
@@ -1027,7 +1057,7 @@ void TuckerEngine::updateCursor() {
_selectedObjectNum = 0;
_selectedObjectType = 0;
}
- if (_actionVerbLocked == 0 && _selectedObjectType == 2 && _selectedObjectNum != 21) {
+ if (!_actionVerbLocked && _selectedObjectType == 2 && _selectedObjectNum != 21) {
_actionVerb = 2;
}
if (!_actionRequiresTwoObjects) {
@@ -1055,7 +1085,7 @@ void TuckerEngine::updateCursor() {
if (_mousePosY >= 150 && _mousePosX < 212) {
if (_mousePosX < 200) {
setActionVerbUnderCursor();
- _actionVerbLocked = 1;
+ _actionVerbLocked = true;
_actionRequiresTwoObjects = false;
} else if (_mousePosY < 175) {
moveDownInventoryObjects();
@@ -1066,13 +1096,13 @@ void TuckerEngine::updateCursor() {
if (_selectedObjectType == 3) {
setActionForInventoryObject();
} else if (_actionVerb != 0) {
- _actionVerbLocked = 0;
+ _actionVerbLocked = false;
setActionState();
} else if (_actionObj1Num == 261 || (_actionObj1Num == 205 && _flagsTable[143] == 0)) {
- _actionVerbLocked = 0;
+ _actionVerbLocked = false;
setActionState();
} else {
- _actionVerbLocked = 0;
+ _actionVerbLocked = false;
_actionRequiresTwoObjects = false;
_currentActionVerb = 0;
setSelectedObjectKey();
@@ -1092,26 +1122,26 @@ void TuckerEngine::stopSounds() {
void TuckerEngine::playSounds() {
for (int i = 0; i < _locationSoundsCount; ++i) {
- if (_locationSoundsTable[i].type == 1 || _locationSoundsTable[i].type == 2 || _locationSoundsTable[i].type == 5 ||
- (_locationSoundsTable[i].type == 7 && _flagsTable[_locationSoundsTable[i].flagNum] == _locationSoundsTable[i].flagValueStartFx)) {
- startSound(_locationSoundsTable[i].offset, i, _locationSoundsTable[i].volume);
+ if (_locationSoundsTable[i]._type == 1 || _locationSoundsTable[i]._type == 2 || _locationSoundsTable[i]._type == 5 ||
+ (_locationSoundsTable[i]._type == 7 && _flagsTable[_locationSoundsTable[i]._flagNum] == _locationSoundsTable[i]._flagValueStartFx)) {
+ startSound(_locationSoundsTable[i]._offset, i, _locationSoundsTable[i]._volume);
}
}
for (int i = 0; i < _locationMusicsCount; ++i) {
- if (_locationMusicsTable[i].flag > 0) {
- startMusic(_locationMusicsTable[i].offset, i, _locationMusicsTable[i].volume);
+ if (_locationMusicsTable[i]._flag > 0) {
+ startMusic(_locationMusicsTable[i]._offset, i, _locationMusicsTable[i]._volume);
}
}
}
void TuckerEngine::updateCharactersPath() {
- if (_panelLockedFlag == 0) {
+ if (!_panelLockedFlag) {
return;
}
if (_backgroundSpriteCurrentAnimation != -1 && _locationNum != 25) {
- if (_xPosCurrent == _selectedObject.xPos && _yPosCurrent == _selectedObject.yPos) {
+ if (_xPosCurrent == _selectedObject._xPos && _yPosCurrent == _selectedObject._yPos) {
_locationMaskCounter = 1;
- _panelLockedFlag = 0;
+ _panelLockedFlag = false;
}
return;
}
@@ -1120,68 +1150,68 @@ void TuckerEngine::updateCharactersPath() {
if (_characterFacingDirection == 5) {
_characterPrevFacingDirection = 5;
}
- int flag = 0;
- if (_yPosCurrent > _selectedObject.yPos) {
- if (testLocationMask(_xPosCurrent, _yPosCurrent - 1) == 1) {
+ bool flag = false;
+ if (_yPosCurrent > _selectedObject._yPos) {
+ if (testLocationMask(_xPosCurrent, _yPosCurrent - 1)) {
--_yPosCurrent;
_characterFacingDirection = 4;
- flag = 1;
+ flag = true;
}
- } else if (_yPosCurrent < _selectedObject.yPos) {
- if (testLocationMask(_xPosCurrent, _yPosCurrent + 1) == 1) {
+ } else if (_yPosCurrent < _selectedObject._yPos) {
+ if (testLocationMask(_xPosCurrent, _yPosCurrent + 1)) {
++_yPosCurrent;
_characterFacingDirection = 2;
- flag = 1;
+ flag = true;
}
}
- if (_xPosCurrent > _selectedObject.xPos) {
- if (testLocationMask(_xPosCurrent - 1, _yPosCurrent) == 1) {
+ if (_xPosCurrent > _selectedObject._xPos) {
+ if (testLocationMask(_xPosCurrent - 1, _yPosCurrent)) {
--_xPosCurrent;
_characterFacingDirection = 3;
- _characterBackFrontFacing = 0;
- flag = 1;
+ _characterBackFrontFacing = false;
+ flag = true;
}
- } else if (_xPosCurrent < _selectedObject.xPos) {
- if (testLocationMask(_xPosCurrent + 1, _yPosCurrent) == 1) {
+ } else if (_xPosCurrent < _selectedObject._xPos) {
+ if (testLocationMask(_xPosCurrent + 1, _yPosCurrent)) {
++_xPosCurrent;
_characterFacingDirection = 1;
- _characterBackFrontFacing = 1;
- flag = 1;
+ _characterBackFrontFacing = true;
+ flag = true;
}
}
- if (flag == 0) {
- if (_selectedObjectLocationMask == 1) {
- _selectedObjectLocationMask = 0;
- _selectedObject.xPos = _selectedObject.xDefaultPos;
- _selectedObject.yPos = _selectedObject.yDefaultPos;
+ if (!flag) {
+ if (_selectedObjectLocationMask) {
+ _selectedObjectLocationMask = false;
+ _selectedObject._xPos = _selectedObject._xDefaultPos;
+ _selectedObject._yPos = _selectedObject._yDefaultPos;
} else {
- _panelLockedFlag = 0;
+ _panelLockedFlag = false;
_characterFacingDirection = 0;
- if (_xPosCurrent == _selectedObject.xPos && _yPosCurrent == _selectedObject.yPos) {
+ if (_xPosCurrent == _selectedObject._xPos && _yPosCurrent == _selectedObject._yPos) {
_locationMaskCounter = 1;
}
}
}
if (_locationNum == 25) {
- if ((_backgroundSpriteCurrentAnimation != 3 || _characterBackFrontFacing != 0) && (_backgroundSpriteCurrentAnimation != 6 || _characterBackFrontFacing != 1)) {
+ if ((_backgroundSpriteCurrentAnimation != 3 || _characterBackFrontFacing) && (_backgroundSpriteCurrentAnimation != 6 || !_characterBackFrontFacing)) {
_xPosCurrent = xPos;
_yPosCurrent = yPos;
return;
}
}
- if (_xPosCurrent != _selectedObject.xPos || _yPosCurrent != _selectedObject.yPos) {
+ if (_xPosCurrent != _selectedObject._xPos || _yPosCurrent != _selectedObject._yPos) {
return;
}
- if (_selectedObjectLocationMask != 0) {
+ if (_selectedObjectLocationMask) {
return;
}
_locationMaskCounter = 1;
- _panelLockedFlag = 0;
- _locationMaskIgnore = 0;
+ _panelLockedFlag = false;
+ _locationMaskIgnore = false;
if (_characterPrevFacingDirection <= 0 || _characterPrevFacingDirection >= 5) {
return;
}
- if (_selectedObject.locationObject_locationNum == 0) {
+ if (_selectedObject._locationObjectLocationNum == 0) {
_characterFacingDirection = 5;
while (_spriteAnimationFramesTable[_spriteAnimationFrameIndex] != 999) {
++_spriteAnimationFrameIndex;
@@ -1200,12 +1230,12 @@ void TuckerEngine::setSoundVolumeDistance() {
void TuckerEngine::updateData3DrawFlag() {
for (int i = 0; i < _locationAnimationsCount; ++i) {
LocationAnimation *a = &_locationAnimationsTable[i];
- if (a->flagNum > 0 && a->flagValue != _flagsTable[a->flagNum]) {
- a->drawFlag = 0;
- } else if (a->getFlag == 0) {
- a->drawFlag = 1;
+ if (a->_flagNum > 0 && a->_flagValue != _flagsTable[a->_flagNum]) {
+ a->_drawFlag = false;
+ } else if (a->_getFlag == 0) {
+ a->_drawFlag = true;
} else {
- a->drawFlag = (_inventoryItemsState[a->inventoryNum] == 0) ? 1 : 0;
+ a->_drawFlag = (_inventoryItemsState[a->_inventoryNum] == 0);
}
}
}
@@ -1214,26 +1244,26 @@ void TuckerEngine::updateData3() {
updateData3DrawFlag();
for (int i = 0; i < _locationAnimationsCount; ++i) {
LocationAnimation *a = &_locationAnimationsTable[i];
- if (a->animLastCounter != 0 && a->drawFlag != 0) {
- if (a->animLastCounter == a->animCurrentCounter) {
- a->animCurrentCounter = a->animInitCounter;
+ if (a->_animLastCounter != 0 && a->_drawFlag) {
+ if (a->_animLastCounter == a->_animCurrentCounter) {
+ a->_animCurrentCounter = a->_animInitCounter;
} else {
- ++a->animCurrentCounter;
+ ++a->_animCurrentCounter;
}
- const int index = a->animCurrentCounter;
+ const int index = a->_animCurrentCounter;
if (_staticData3Table[index] == 998) {
_flagsTable[_staticData3Table[index + 1]] = _staticData3Table[index + 2];
- a->animCurrentCounter = a->animInitCounter;
- a->drawFlag = 0;
+ a->_animCurrentCounter = a->_animInitCounter;
+ a->_drawFlag = false;
}
if (_locationNum == 24 && i == 0) {
// workaround bug #2872385: update fish animation sequence for correct
// position in aquarium.
- if (a->animInitCounter == 505 && a->animCurrentCounter == 513) {
- a->animCurrentCounter = 525;
+ if (a->_animInitCounter == 505 && a->_animCurrentCounter == 513) {
+ a->_animCurrentCounter = 525;
}
}
- a->graphicNum = _staticData3Table[a->animCurrentCounter];
+ a->_graphicNum = _staticData3Table[a->_animCurrentCounter];
}
}
updateData3DrawFlag();
@@ -1242,16 +1272,16 @@ void TuckerEngine::updateData3() {
void TuckerEngine::updateSfxData3_1() {
for (int i = 0; i < _locationSoundsCount; ++i) {
LocationSound *s = &_locationSoundsTable[i];
- if ((s->type == 6 || s->type == 7) && s->updateType == 1) {
+ if ((s->_type == 6 || s->_type == 7) && s->_updateType == 1) {
for (int j = 0; j < _spritesCount; ++j) {
- if (_spritesTable[j].animationFrame == s->startFxSpriteNum && _spritesTable[j].state == s->startFxSpriteState) {
- if (s->type == 7) {
- _flagsTable[s->flagNum] = s->flagValueStartFx;
+ if (_spritesTable[j]._animationFrame == s->_startFxSpriteNum && _spritesTable[j]._state == s->_startFxSpriteState) {
+ if (s->_type == 7) {
+ _flagsTable[s->_flagNum] = s->_flagValueStartFx;
}
- startSound(s->offset, i, s->volume);
- } else if (s->type == 7) {
- if (_spritesTable[j].animationFrame == s->stopFxSpriteNum && _spritesTable[j].state == s->stopFxSpriteState) {
- _flagsTable[s->flagNum] = s->flagValueStopFx;
+ startSound(s->_offset, i, s->_volume);
+ } else if (s->_type == 7) {
+ if (_spritesTable[j]._animationFrame == s->_stopFxSpriteNum && _spritesTable[j]._state == s->_stopFxSpriteState) {
+ _flagsTable[s->_flagNum] = s->_flagValueStopFx;
stopSound(i);
}
}
@@ -1263,15 +1293,15 @@ void TuckerEngine::updateSfxData3_1() {
void TuckerEngine::updateSfxData3_2() {
for (int i = 0; i < _locationSoundsCount; ++i) {
LocationSound *s = &_locationSoundsTable[i];
- if ((s->type == 6 || s->type == 7) && s->updateType == 0) {
- if (s->startFxSpriteNum == _backgroundSpriteCurrentFrame && s->startFxSpriteState == _backgroundSpriteCurrentAnimation) {
- if (s->type == 7) {
- _flagsTable[s->flagNum] = s->flagValueStartFx;
+ if ((s->_type == 6 || s->_type == 7) && s->_updateType == 0) {
+ if (s->_startFxSpriteNum == _backgroundSpriteCurrentFrame && s->_startFxSpriteState == _backgroundSpriteCurrentAnimation) {
+ if (s->_type == 7) {
+ _flagsTable[s->_flagNum] = s->_flagValueStartFx;
}
- startSound(s->offset, i, s->volume);
- } else if (s->type == 7) {
- if (s->stopFxSpriteNum == _backgroundSpriteCurrentFrame && s->stopFxSpriteState == _backgroundSpriteCurrentAnimation) {
- _flagsTable[s->flagNum] = s->flagValueStopFx;
+ startSound(s->_offset, i, s->_volume);
+ } else if (s->_type == 7) {
+ if (s->_stopFxSpriteNum == _backgroundSpriteCurrentFrame && s->_stopFxSpriteState == _backgroundSpriteCurrentAnimation) {
+ _flagsTable[s->_flagNum] = s->_flagValueStopFx;
stopSound(i);
}
}
@@ -1422,7 +1452,7 @@ void TuckerEngine::redrawPanelOverBackground() {
void TuckerEngine::drawConversationTexts() {
int y = 141;
- int flag = 0;
+ bool flag = false;
for (int i = 0; i < _conversationOptionsCount; ++i) {
int color = 108;
if ((_mousePosY > y && _mousePosY < y + 11) || _nextTableToLoadIndex == i) {
@@ -1431,11 +1461,11 @@ void TuckerEngine::drawConversationTexts() {
drawSpeechText(0, y, _characterSpeechDataPtr, _instructionsActionsTable[i], color);
if (_mousePosY > y && _mousePosY < _conversationOptionLinesCount * 10 + y + 1) {
_nextTableToLoadIndex = i;
- flag = 1;
+ flag = true;
}
y += _conversationOptionLinesCount * 10;
}
- if (flag == 0) {
+ if (!flag) {
_nextTableToLoadIndex = -1;
}
}
@@ -1471,31 +1501,31 @@ void TuckerEngine::updateGameHints() {
if (_gameHintsIndex == 0 && _flagsTable[3] > 0) {
_gameHintsIndex = 1;
_gameHintsCounter = 0;
- _gameHintsDisplayText = 0;
+ _displayHintsText = false;
} else if (_gameHintsIndex == 1 && _flagsTable[12] > 0) {
_gameHintsIndex = 2;
_gameHintsCounter = 0;
- _gameHintsDisplayText = 0;
+ _displayHintsText = false;
} else if (_gameHintsIndex == 2 && _flagsTable[20] > 0) {
_gameHintsIndex = 3;
_gameHintsCounter = 0;
- _gameHintsDisplayText = 0;
+ _displayHintsText = false;
} else if (_gameHintsIndex == 3 && _flagsTable[9] > 0) {
_gameHintsIndex = 4;
_gameHintsCounter = 0;
- _gameHintsDisplayText = 0;
+ _displayHintsText = false;
} else if (_gameHintsIndex == 4 && _flagsTable[23] > 0) {
_gameHintsIndex = 5;
_gameHintsCounter = 0;
- _gameHintsDisplayText = 0;
+ _displayHintsText = false;
} else if (_flagsTable[19] > 0) {
_gameHintsIndex = 6;
_gameHintsCounter = 0;
- _gameHintsDisplayText = 0;
+ _displayHintsText = false;
}
++_gameHintsCounter;
if (_gameHintsCounter > 1500) {
- _gameHintsDisplayText = 1;
+ _displayHintsText = true;
}
}
@@ -1503,7 +1533,7 @@ void TuckerEngine::startCharacterSounds() {
if (_characterSoundFxDelayCounter != 0) {
--_characterSoundFxDelayCounter;
if (_characterSoundFxDelayCounter <= 0) {
- startSound(_locationSoundsTable[_characterSoundFxNum].offset, _characterSoundFxNum, _locationSoundsTable[_characterSoundFxNum].volume);
+ startSound(_locationSoundsTable[_characterSoundFxNum]._offset, _characterSoundFxNum, _locationSoundsTable[_characterSoundFxNum]._volume);
}
}
}
@@ -1513,16 +1543,16 @@ void TuckerEngine::updateSoundsTypes3_4() {
return;
}
for (int i = 0; i < _locationSoundsCount; ++i) {
- switch (_locationSoundsTable[i].type) {
+ switch (_locationSoundsTable[i]._type) {
case 3:
if (getRandomNumber() >= 32300) {
- startSound(_locationSoundsTable[i].offset, 0, _locationSoundsTable[i].volume);
+ startSound(_locationSoundsTable[i]._offset, 0, _locationSoundsTable[i]._volume);
return;
}
break;
case 4:
if (getRandomNumber() >= 32763) {
- startSound(_locationSoundsTable[i].offset, 0, _locationSoundsTable[i].volume);
+ startSound(_locationSoundsTable[i]._offset, 0, _locationSoundsTable[i]._volume);
return;
}
break;
@@ -1532,11 +1562,11 @@ void TuckerEngine::updateSoundsTypes3_4() {
void TuckerEngine::drawData3() {
for (int i = 0; i < _locationAnimationsCount; ++i) {
- if (_locationAnimationsTable[i].drawFlag != 0) {
- int num = _locationAnimationsTable[i].graphicNum;
+ if (_locationAnimationsTable[i]._drawFlag) {
+ int num = _locationAnimationsTable[i]._graphicNum;
const Data *d = &_dataTable[num];
- Graphics::decodeRLE(_locationBackgroundGfxBuf + d->yDest * 640 + d->xDest, _data3GfxBuf + d->sourceOffset, d->xSize, d->ySize);
- addDirtyRect(d->xDest, d->yDest, d->xSize, d->ySize);
+ Graphics::decodeRLE(_locationBackgroundGfxBuf + d->_yDest * 640 + d->_xDest, _data3GfxBuf + d->_sourceOffset, d->_xSize, d->_ySize);
+ addDirtyRect(d->_xDest, d->_yDest, d->_xSize, d->_ySize);
}
}
}
@@ -1750,28 +1780,28 @@ void TuckerEngine::drawCurrentSprite() {
// Workaround original game glitch: location 14 contains some colors from [0xE0-0xF8] in a walkable area (tracker item #3106542)
const bool color248Only = (_locationNum == 14);
SpriteFrame *chr = &_spriteFramesTable[_currentSpriteAnimationFrame];
- int yPos = _yPosCurrent + _mainSpritesBaseOffset - 54 + chr->yOffset;
+ int yPos = _yPosCurrent + _mainSpritesBaseOffset - 54 + chr->_yOffset;
int xPos = _xPosCurrent;
- if (_mirroredDrawing == 0) {
- xPos += chr->xOffset - 14;
+ if (!_mirroredDrawing) {
+ xPos += chr->_xOffset - 14;
} else {
- xPos -= chr->xSize + chr->xOffset - 14;
+ xPos -= chr->_xSize + chr->_xOffset - 14;
}
- Graphics::decodeRLE_248(_locationBackgroundGfxBuf + yPos * 640 + xPos, _spritesGfxBuf + chr->sourceOffset, chr->xSize, chr->ySize,
- chr->yOffset, _locationHeightTable[_locationNum], _mirroredDrawing != 0, color248Only);
- addDirtyRect(xPos, yPos, chr->xSize, chr->ySize);
+ Graphics::decodeRLE_248(_locationBackgroundGfxBuf + yPos * 640 + xPos, _spritesGfxBuf + chr->_sourceOffset, chr->_xSize, chr->_ySize,
+ chr->_yOffset, _locationHeightTable[_locationNum], _mirroredDrawing, color248Only);
+ addDirtyRect(xPos, yPos, chr->_xSize, chr->_ySize);
if (_currentSpriteAnimationLength > 1) {
SpriteFrame *chr2 = &_spriteFramesTable[_currentSpriteAnimationFrame2];
- yPos = _yPosCurrent + _mainSpritesBaseOffset - 54 + chr2->yOffset;
+ yPos = _yPosCurrent + _mainSpritesBaseOffset - 54 + chr2->_yOffset;
xPos = _xPosCurrent;
- if (_mirroredDrawing == 0) {
- xPos += chr2->xOffset - 14;
+ if (!_mirroredDrawing) {
+ xPos += chr2->_xOffset - 14;
} else {
- xPos -= chr2->xSize + chr2->xOffset - 14;
+ xPos -= chr2->_xSize + chr2->_xOffset - 14;
}
- Graphics::decodeRLE_248(_locationBackgroundGfxBuf + yPos * 640 + xPos, _spritesGfxBuf + chr2->sourceOffset, chr2->xSize, chr2->ySize,
- chr2->yOffset, _locationHeightTable[_locationNum], _mirroredDrawing != 0, color248Only);
- addDirtyRect(xPos, yPos, chr2->xSize, chr2->ySize);
+ Graphics::decodeRLE_248(_locationBackgroundGfxBuf + yPos * 640 + xPos, _spritesGfxBuf + chr2->_sourceOffset, chr2->_xSize, chr2->_ySize,
+ chr2->_yOffset, _locationHeightTable[_locationNum], _mirroredDrawing, color248Only);
+ addDirtyRect(xPos, yPos, chr2->_xSize, chr2->_ySize);
}
}
@@ -1790,8 +1820,8 @@ void TuckerEngine::setVolumeMusic(int index, int volume) {
}
void TuckerEngine::startSound(int offset, int index, int volume) {
- bool loop = (_locationSoundsTable[index].type == 2 || _locationSoundsTable[index].type == 5 || _locationSoundsTable[index].type == 7);
- loadSound(Audio::Mixer::kSFXSoundType, _locationSoundsTable[index].num, volume, loop, &_sfxHandles[index]);
+ bool loop = (_locationSoundsTable[index]._type == 2 || _locationSoundsTable[index]._type == 5 || _locationSoundsTable[index]._type == 7);
+ loadSound(Audio::Mixer::kSFXSoundType, _locationSoundsTable[index]._num, volume, loop, &_sfxHandles[index]);
}
void TuckerEngine::stopSound(int index) {
@@ -1803,8 +1833,8 @@ bool TuckerEngine::isSoundPlaying(int index) {
}
void TuckerEngine::startMusic(int offset, int index, int volume) {
- bool loop = (_locationMusicsTable[index].flag == 2);
- loadSound(Audio::Mixer::kMusicSoundType, _locationMusicsTable[index].num, volume, loop, &_musicHandles[index]);
+ bool loop = (_locationMusicsTable[index]._flag == 2);
+ loadSound(Audio::Mixer::kMusicSoundType, _locationMusicsTable[index]._num, volume, loop, &_musicHandles[index]);
}
void TuckerEngine::stopMusic(int index) {
@@ -1831,14 +1861,16 @@ void TuckerEngine::rememberSpeechSound() {
}
void TuckerEngine::redrawPanelItems() {
- const uint8 *src = 0;
- uint8 *dst = 0;
- int sz = 0;
if (_forceRedrawPanelItems || (_redrawPanelItemsCounter != 0 && _panelState == 0)) {
_forceRedrawPanelItems = false;
if (_redrawPanelItemsCounter > 0) {
--_redrawPanelItemsCounter;
}
+
+ const uint8 *src = nullptr;
+ uint8 *dst = nullptr;
+ int sz = 0;
+
switch (_panelState) {
case 0:
src = _panelGfxBuf;
@@ -1892,25 +1924,25 @@ void TuckerEngine::redrawPanelItemsHelper() {
void TuckerEngine::drawSprite(int num) {
Sprite *s = &_spritesTable[num];
- if (s->animationFrame <= s->firstFrame && s->animationFrame > 0 && s->state != -1) {
- const uint8 *p = s->animationData;
+ if (s->_animationFrame <= s->_firstFrame && s->_animationFrame > 0 && s->_state != -1) {
+ const uint8 *p = s->_animationData;
if (!p) {
return;
}
- int frameOffset = READ_LE_UINT24(p + s->animationFrame * 4);
+ int frameOffset = READ_LE_UINT24(p + s->_animationFrame * 4);
int srcW = READ_LE_UINT16(p + frameOffset);
int srcH = READ_LE_UINT16(p + frameOffset + 2);
int srcX = READ_LE_UINT16(p + frameOffset + 8);
int srcY = READ_LE_UINT16(p + frameOffset + 10);
- int xPos = s->gfxBackgroundOffset + srcX;
+ int xPos = s->_gfxBackgroundOffset + srcX;
if (xPos < 600 && (_scrollOffset + 320 < xPos || _scrollOffset - srcW > xPos)) {
return;
}
- s->xSource = srcX;
- s->gfxBackgroundOffset += s->backgroundOffset;
+ s->_xSource = srcX;
+ s->_gfxBackgroundOffset += s->_backgroundOffset;
uint8 *dstPtr = _locationBackgroundGfxBuf + srcY * 640 + xPos;
const uint8 *srcPtr = p + frameOffset + 12;
- switch (s->colorType) {
+ switch (s->_colorType) {
case 0:
Graphics::decodeRLE(dstPtr, srcPtr, srcW, srcH);
break;
@@ -1918,11 +1950,11 @@ void TuckerEngine::drawSprite(int num) {
Graphics::decodeRLE_224(dstPtr, srcPtr, srcW, srcH);
break;
default:
- Graphics::decodeRLE_248(dstPtr, srcPtr, srcW, srcH, 0, s->yMaxBackground, s->flipX != 0);
+ Graphics::decodeRLE_248(dstPtr, srcPtr, srcW, srcH, 0, s->_yMaxBackground, s->_flipX);
break;
}
- const int xR = srcX + (s->gfxBackgroundOffset % 640);
- const int yR = srcY + (s->gfxBackgroundOffset / 640);
+ const int xR = srcX + (s->_gfxBackgroundOffset % 640);
+ const int yR = srcY + (s->_gfxBackgroundOffset / 640);
addDirtyRect(xR, yR, srcW, srcH);
}
}
@@ -1938,7 +1970,7 @@ void TuckerEngine::drawPausedInfoBar() {
}
const uint8 *TuckerEngine::getStringBuf(int type) const {
- const uint8 *p = 0;
+ const uint8 *p = nullptr;
switch (type) {
case 0:
p = _data5Buf;
@@ -2031,7 +2063,7 @@ void TuckerEngine::updateCharacterAnimation() {
++_spriteAnimationFrameIndex;
}
_characterFacingDirection = 0;
- if (_changeBackgroundSprite == 1) {
+ if (_changeBackgroundSprite) {
if (_backgroundSpriteCurrentFrame == 0) {
_backgroundSpriteDataPtr = _sprA02Table[_backgroundSpriteCurrentAnimation];
_backgroundSpriteCurrentFrame = _backgroundSpriteLastFrame = READ_LE_UINT16(_backgroundSpriteDataPtr);
@@ -2040,7 +2072,7 @@ void TuckerEngine::updateCharacterAnimation() {
if (_backgroundSpriteCurrentFrame < 1) {
_backgroundSpriteCurrentAnimation = -1;
_backgroundSpriteCurrentFrame = 0;
- _changeBackgroundSprite = 0;
+ _changeBackgroundSprite = false;
if (_nextAction == 0) {
setCursorType(0);
}
@@ -2052,7 +2084,7 @@ void TuckerEngine::updateCharacterAnimation() {
assert(_backgroundSpriteCurrentAnimation >= 0 && _backgroundSpriteCurrentAnimation < kSprA02TableSize);
_backgroundSpriteDataPtr = _sprA02Table[_backgroundSpriteCurrentAnimation];
_backgroundSpriteLastFrame = READ_LE_UINT16(_backgroundSpriteDataPtr);
- } else if (_locationNum == 25 && _panelLockedFlag != 1 && (_backgroundSpriteCurrentAnimation == 3 || _backgroundSpriteCurrentAnimation == 6)) {
+ } else if (_locationNum == 25 && !_panelLockedFlag && (_backgroundSpriteCurrentAnimation == 3 || _backgroundSpriteCurrentAnimation == 6)) {
_backgroundSpriteCurrentFrame = 0;
_backgroundSpriteCurrentAnimation = -1;
} else {
@@ -2068,9 +2100,9 @@ void TuckerEngine::updateCharacterAnimation() {
}
}
if (_locationNum == 24 && _flagsTable[103] == 0) {
- if (_panelLockedFlag == 1) {
- _panelLockedFlag = 0;
- _selectedObject.locationObject_locationNum = 0;
+ if (_panelLockedFlag) {
+ _panelLockedFlag = false;
+ _selectedObject._locationObjectLocationNum = 0;
if (_actionVerb != 2) {
_speechSoundNum = 2236;
startSpeechSound(_speechSoundNum, _speechVolume);
@@ -2105,10 +2137,10 @@ void TuckerEngine::updateCharacterAnimation() {
}
} else if (_locationNum == 25) {
if (_backgroundSpriteCurrentFrame == 0) {
- if (_characterBackFrontFacing == 0) {
+ if (!_characterBackFrontFacing) {
if (_characterBackFrontFacing != _characterPrevBackFrontFacing) {
_backgroundSpriteCurrentAnimation = 10;
- } else if (_panelLockedFlag == 1) {
+ } else if (_panelLockedFlag) {
_backgroundSpriteCurrentAnimation = 3;
} else if (_charSpeechSoundCounter > 0 && _actionCharacterNum == 99) {
_backgroundSpriteCurrentAnimation = 8;
@@ -2118,7 +2150,7 @@ void TuckerEngine::updateCharacterAnimation() {
} else {
if (_characterBackFrontFacing != _characterPrevBackFrontFacing) {
_backgroundSpriteCurrentAnimation = 2;
- } else if (_panelLockedFlag == 1) {
+ } else if (_panelLockedFlag) {
_backgroundSpriteCurrentAnimation = 6;
} else if (_charSpeechSoundCounter > 0 && _actionCharacterNum == 99) {
_backgroundSpriteCurrentAnimation = 9;
@@ -2143,7 +2175,7 @@ void TuckerEngine::updateCharacterAnimation() {
_backgroundSpriteLastFrame = READ_LE_UINT16(_backgroundSpriteDataPtr);
}
int frame = _spriteAnimationFramesTable[_spriteAnimationFrameIndex];
- if (_panelLockedFlag == 0 && _characterFacingDirection < 5 && _selectedObject.locationObject_locationNum == 0) {
+ if (!_panelLockedFlag && _characterFacingDirection < 5 && _selectedObject._locationObjectLocationNum == 0) {
_characterFacingDirection = 0;
}
if (_charSpeechSoundCounter > 0 && _characterFacingDirection != 6 && _actionCharacterNum == 99) {
@@ -2155,7 +2187,7 @@ void TuckerEngine::updateCharacterAnimation() {
}
int num = 0;
if (frame == 999 || (_characterFacingDirection != _characterPrevFacingDirection && _characterFacingDirection < 5)) {
- _mirroredDrawing = 0;
+ _mirroredDrawing = false;
if (_characterFacingDirection == 6) {
if (_csDataHandled) {
switch (_selectedCharacterDirection) {
@@ -2170,7 +2202,7 @@ void TuckerEngine::updateCharacterAnimation() {
break;
default:
num = 16;
- _mirroredDrawing = 1;
+ _mirroredDrawing = true;
break;
}
} else {
@@ -2182,7 +2214,7 @@ void TuckerEngine::updateCharacterAnimation() {
}
if (_characterFacingDirection == 0) {
if (_csDataHandled) {
- _mirroredDrawing = 0;
+ _mirroredDrawing = false;
switch (_selectedCharacterDirection) {
case 1:
num = 3;
@@ -2192,7 +2224,7 @@ void TuckerEngine::updateCharacterAnimation() {
break;
case 3:
num = 1;
- _mirroredDrawing = 1;
+ _mirroredDrawing = true;
break;
default:
num = 5;
@@ -2218,21 +2250,21 @@ void TuckerEngine::updateCharacterAnimation() {
break;
case 3:
num = 0;
- _mirroredDrawing = 1;
+ _mirroredDrawing = true;
break;
case 4:
num = 2;
break;
}
}
- _currentSpriteAnimationLength = _spriteAnimationsTable[num].numParts;
- _spriteAnimationFrameIndex = _spriteAnimationsTable[num].firstFrameIndex;
+ _currentSpriteAnimationLength = _spriteAnimationsTable[num]._numParts;
+ _spriteAnimationFrameIndex = _spriteAnimationsTable[num]._firstFrameIndex;
frame = _spriteAnimationFramesTable[_spriteAnimationFrameIndex];
}
if (_characterAnimationNum > 0) {
num = _characterAnimationNum;
- _currentSpriteAnimationLength = _spriteAnimationsTable[num].numParts;
- _spriteAnimationFrameIndex = _spriteAnimationsTable[num].firstFrameIndex;
+ _currentSpriteAnimationLength = _spriteAnimationsTable[num]._numParts;
+ _spriteAnimationFrameIndex = _spriteAnimationsTable[num]._firstFrameIndex;
frame = _spriteAnimationFramesTable[_spriteAnimationFrameIndex];
_characterAnimationNum = 0;
}
@@ -2287,10 +2319,10 @@ void TuckerEngine::handleMap() {
if (_handleMapCounter > 19) {
_handleMapCounter = 0;
_locationMaskCounter = 1;
- _panelLockedFlag = 0;
+ _panelLockedFlag = false;
}
}
- if (_panelLockedFlag == 0 && (_backgroundSpriteCurrentAnimation == -1 || _locationNum == 25) && _locationMaskType == 3) {
+ if (!_panelLockedFlag && (_backgroundSpriteCurrentAnimation == -1 || _locationNum == 25) && _locationMaskType == 3) {
setCursorType(0);
if (_locationMaskCounter == 1) {
_characterFacingDirection = 0;
@@ -2298,22 +2330,22 @@ void TuckerEngine::handleMap() {
}
return;
}
- if (_selectedObject.locationObject_locationNum != 0 && _locationMaskCounter != 0 && (_backgroundSpriteCurrentAnimation <= -1 || _locationNum == 25)) {
+ if (_selectedObject._locationObjectLocationNum != 0 && _locationMaskCounter != 0 && (_backgroundSpriteCurrentAnimation <= -1 || _locationNum == 25)) {
if (_locationNum == 25 || _backgroundSpriteCurrentAnimation != 4) {
if (_locationMaskType == 0) {
_locationMaskType = 1;
setCursorType(2);
- if (_selectedObject.locationObject_toWalkX2 > 800) {
- _backgroundSpriteCurrentAnimation = _selectedObject.locationObject_toWalkX2 - 900;
- if (_selectedObject.locationObject_toWalkY2 > 499) {
- _changeBackgroundSprite = 1;
- _backgroundSprOffset = _selectedObject.locationObject_toWalkY2 - 500;
+ if (_selectedObject._locationObjectToWalkX2 > 800) {
+ _backgroundSpriteCurrentAnimation = _selectedObject._locationObjectToWalkX2 - 900;
+ if (_selectedObject._locationObjectToWalkY2 > 499) {
+ _changeBackgroundSprite = true;
+ _backgroundSprOffset = _selectedObject._locationObjectToWalkY2 - 500;
} else {
- _backgroundSprOffset = _selectedObject.locationObject_toWalkY2;
- _changeBackgroundSprite = 0;
+ _backgroundSprOffset = _selectedObject._locationObjectToWalkY2;
+ _changeBackgroundSprite = false;
}
_backgroundSpriteCurrentFrame = 0;
- _mirroredDrawing = 0;
+ _mirroredDrawing = false;
if (_locationNum == 25) {
_backgroundSpriteDataPtr = _sprA02Table[_backgroundSpriteCurrentAnimation];
_backgroundSpriteLastFrame = READ_LE_UINT16(_backgroundSpriteDataPtr);
@@ -2321,17 +2353,17 @@ void TuckerEngine::handleMap() {
}
} else {
_locationMaskCounter = 0;
- _selectedObject.xPos = _selectedObject.locationObject_toWalkX2;
- _selectedObject.yPos = _selectedObject.locationObject_toWalkY2;
+ _selectedObject._xPos = _selectedObject._locationObjectToWalkX2;
+ _selectedObject._yPos = _selectedObject._locationObjectToWalkY2;
_handleMapCounter = 1;
- _panelLockedFlag = 1;
+ _panelLockedFlag = true;
}
return;
}
_locationMaskType = 2;
_panelState = 0;
setCursorType(0);
- if (_selectedObject.locationObject_locationNum == 99) {
+ if (_selectedObject._locationObjectLocationNum == 99) {
_noPositionChangeAfterMap = true;
handleMapSequence();
return;
@@ -2341,28 +2373,28 @@ void TuckerEngine::handleMap() {
redrawScreen(_scrollOffset);
_fadePaletteCounter = 34;
}
- _nextLocationNum = _selectedObject.locationObject_locationNum;
- _xPosCurrent = _selectedObject.locationObject_toX;
- _yPosCurrent = _selectedObject.locationObject_toY;
- if (_selectedObject.locationObject_toX2 > 800) {
- _backgroundSpriteCurrentAnimation = _selectedObject.locationObject_toX2 - 900;
- if (_selectedObject.locationObject_toY2 > 499) {
- _changeBackgroundSprite = 1;
- _backgroundSprOffset = _selectedObject.locationObject_toY2 - 500;
+ _nextLocationNum = _selectedObject._locationObjectLocationNum;
+ _xPosCurrent = _selectedObject._locationObjectToX;
+ _yPosCurrent = _selectedObject._locationObjectToY;
+ if (_selectedObject._locationObjectToX2 > 800) {
+ _backgroundSpriteCurrentAnimation = _selectedObject._locationObjectToX2 - 900;
+ if (_selectedObject._locationObjectToY2 > 499) {
+ _changeBackgroundSprite = true;
+ _backgroundSprOffset = _selectedObject._locationObjectToY2 - 500;
} else {
- _changeBackgroundSprite = 0;
- _backgroundSprOffset = _selectedObject.locationObject_toY2;
+ _changeBackgroundSprite = false;
+ _backgroundSprOffset = _selectedObject._locationObjectToY2;
}
_backgroundSpriteCurrentFrame = 0;
} else {
- _selectedObject.xPos = _selectedObject.locationObject_toX2;
- _selectedObject.yPos = _selectedObject.locationObject_toY2;
- _panelLockedFlag = 1;
+ _selectedObject._xPos = _selectedObject._locationObjectToX2;
+ _selectedObject._yPos = _selectedObject._locationObjectToY2;
+ _panelLockedFlag = true;
}
_scrollOffset = 0;
_handleMapCounter = 0;
_locationMaskCounter = 0;
- _selectedObject.locationObject_locationNum = 0;
+ _selectedObject._locationObjectLocationNum = 0;
}
}
}
@@ -2370,79 +2402,79 @@ void TuckerEngine::handleMap() {
void TuckerEngine::clearSprites() {
memset(_spritesTable, 0, sizeof(_spritesTable));
for (int i = 0; i < kMaxCharacters; ++i) {
- _spritesTable[i].state = -1;
- _spritesTable[i].stateIndex = -1;
+ _spritesTable[i]._state = -1;
+ _spritesTable[i]._stateIndex = -1;
}
}
void TuckerEngine::updateSprites() {
const int count = (_locationNum == 9) ? 3 : _spritesCount;
for (int i = 0; i < count; ++i) {
- if (_spritesTable[i].stateIndex > -1) {
- ++_spritesTable[i].stateIndex;
- if (_characterStateTable[_spritesTable[i].stateIndex] == 99) {
- _spritesTable[i].stateIndex = -1;
- _spritesTable[i].state = -1;
+ if (_spritesTable[i]._stateIndex > -1) {
+ ++_spritesTable[i]._stateIndex;
+ if (_characterStateTable[_spritesTable[i]._stateIndex] == 99) {
+ _spritesTable[i]._stateIndex = -1;
+ _spritesTable[i]._state = -1;
updateSprite(i);
} else {
- _spritesTable[i].animationFrame = _characterStateTable[_spritesTable[i].stateIndex];
+ _spritesTable[i]._animationFrame = _characterStateTable[_spritesTable[i]._stateIndex];
}
continue;
}
- if (_spritesTable[i].state == -1) {
+ if (_spritesTable[i]._state == -1) {
updateSprite(i);
continue;
}
- if (_charSpeechSoundCounter > 0 && i == _actionCharacterNum && _spritesTable[i].needUpdate == 0) {
+ if (_charSpeechSoundCounter > 0 && i == _actionCharacterNum && !_spritesTable[i]._needUpdate) {
updateSprite(i);
continue;
}
- if (_charSpeechSoundCounter == 0 && _spritesTable[i].needUpdate > 0) {
+ if (_charSpeechSoundCounter == 0 && _spritesTable[i]._needUpdate) {
updateSprite(i);
continue;
}
- if (_spritesTable[i].updateDelay > 0) {
- --_spritesTable[i].updateDelay;
- if (_spritesTable[i].updateDelay == 0) {
+ if (_spritesTable[i]._updateDelay > 0) {
+ --_spritesTable[i]._updateDelay;
+ if (_spritesTable[i]._updateDelay == 0) {
updateSprite(i);
}
continue;
}
- if (_spritesTable[i].defaultUpdateDelay > 0) {
- _spritesTable[i].updateDelay = _spritesTable[i].defaultUpdateDelay - 1;
- ++_spritesTable[i].animationFrame;
- if (_spritesTable[i].animationFrame == _spritesTable[i].firstFrame) {
+ if (_spritesTable[i]._defaultUpdateDelay > 0) {
+ _spritesTable[i]._updateDelay = _spritesTable[i]._defaultUpdateDelay - 1;
+ ++_spritesTable[i]._animationFrame;
+ if (_spritesTable[i]._animationFrame == _spritesTable[i]._firstFrame) {
updateSprite(i);
}
continue;
}
- if (_spritesTable[i].nextAnimationFrame == 0) {
- ++_spritesTable[i].animationFrame;
- if (_spritesTable[i].firstFrame - 1 < _spritesTable[i].animationFrame) {
- if (_spritesTable[i].prevAnimationFrame == 1) {
- --_spritesTable[i].animationFrame;
- _spritesTable[i].nextAnimationFrame = 1;
+ if (!_spritesTable[i]._nextAnimationFrame) {
+ ++_spritesTable[i]._animationFrame;
+ if (_spritesTable[i]._firstFrame - 1 < _spritesTable[i]._animationFrame) {
+ if (_spritesTable[i]._prevAnimationFrame) {
+ --_spritesTable[i]._animationFrame;
+ _spritesTable[i]._nextAnimationFrame = true;
} else {
updateSprite(i);
}
}
continue;
}
- --_spritesTable[i].animationFrame;
- if (_spritesTable[i].animationFrame == 0) {
+ --_spritesTable[i]._animationFrame;
+ if (_spritesTable[i]._animationFrame == 0) {
updateSprite(i);
}
}
}
void TuckerEngine::updateSprite(int i) {
- _spritesTable[i].prevState = _spritesTable[i].state;
- _spritesTable[i].prevAnimationFrame = 0;
- _spritesTable[i].nextAnimationFrame = 0;
- _updateSpriteFlag1 = 0;
- _updateSpriteFlag2 = 0;
- _spritesTable[i].defaultUpdateDelay = 0;
- _spritesTable[i].updateDelay = 0;
+ _spritesTable[i]._prevState = _spritesTable[i]._state;
+ _spritesTable[i]._prevAnimationFrame = false;
+ _spritesTable[i]._nextAnimationFrame = false;
+ _updateSpriteFlag1 = false;
+ _updateSpriteFlag2 = false;
+ _spritesTable[i]._defaultUpdateDelay = 0;
+ _spritesTable[i]._updateDelay = 0;
switch (_locationNum) {
case 2:
updateSprite_locationNum2();
@@ -2632,7 +2664,7 @@ void TuckerEngine::updateSprite(int i) {
if (i == 0) {
updateSprite_locationNum32_0(0);
} else {
- _spritesTable[i].state = -1;
+ _spritesTable[i]._state = -1;
}
break;
case 33:
@@ -2643,7 +2675,7 @@ void TuckerEngine::updateSprite(int i) {
} else if (i == 2) {
updateSprite_locationNum33_2(2);
} else {
- _spritesTable[i].state = 12;
+ _spritesTable[i]._state = 12;
}
break;
case 34:
@@ -2654,7 +2686,7 @@ void TuckerEngine::updateSprite(int i) {
break;
case 37:
if (i == 0) {
- _spritesTable[0].state = -1;
+ _spritesTable[0]._state = -1;
} else {
updateSprite_locationNum37(i);
}
@@ -2670,9 +2702,9 @@ void TuckerEngine::updateSprite(int i) {
updateSprite_locationNum43_2(i);
} else if (i < 2) {
if (_flagsTable[236] < 4) {
- _spritesTable[i].state = i + 1;
+ _spritesTable[i]._state = i + 1;
} else {
- _spritesTable[i].state = -1;
+ _spritesTable[i]._state = -1;
}
} else if (i == 3) {
updateSprite_locationNum43_3(3);
@@ -2685,10 +2717,10 @@ void TuckerEngine::updateSprite(int i) {
}
break;
case 45:
- _spritesTable[0].state = 1;
+ _spritesTable[0]._state = 1;
break;
case 47:
- _spritesTable[i].state = i + 1;
+ _spritesTable[i]._state = i + 1;
break;
case 48:
updateSprite_locationNum48(0);
@@ -2700,7 +2732,7 @@ void TuckerEngine::updateSprite(int i) {
if (i < 6) {
updateSprite_locationNum50(i);
} else {
- _spritesTable[i].state = i + 1;
+ _spritesTable[i]._state = i + 1;
}
break;
case 51:
@@ -2782,7 +2814,7 @@ void TuckerEngine::updateSprite(int i) {
break;
case 69:
if (i == 0) {
- _spritesTable[0].state = 1;
+ _spritesTable[0]._state = 1;
} else if (i == 1) {
updateSprite_locationNum69_1(1);
} else if (i == 2) {
@@ -2814,23 +2846,23 @@ void TuckerEngine::updateSprite(int i) {
updateSprite_locationNum82(0);
break;
case 98:
- _spritesTable[0].state = 1;
+ _spritesTable[0]._state = 1;
break;
}
- if (_spritesTable[i].stateIndex <= -1) {
- if (_updateSpriteFlag1 == 0) {
- _spritesTable[i].animationFrame = 1;
+ if (_spritesTable[i]._stateIndex <= -1) {
+ if (!_updateSpriteFlag1) {
+ _spritesTable[i]._animationFrame = 1;
}
- if (_spritesTable[i].state < 0 || !_sprC02Table[_spritesTable[i].state]) {
+ if (_spritesTable[i]._state < 0 || !_sprC02Table[_spritesTable[i]._state]) {
// warning("Invalid state %d for sprite %d location %d", _spritesTable[i].state, i, _locationNum);
return;
}
- _spritesTable[i].animationData = _sprC02Table[_spritesTable[i].state];
- _spritesTable[i].firstFrame = READ_LE_UINT16(_spritesTable[i].animationData);
- if (_updateSpriteFlag2 == 1) {
- _spritesTable[i].state = _spritesTable[i].firstFrame;
- _spritesTable[i].nextAnimationFrame = 1;
- _spritesTable[i].prevAnimationFrame = 1;
+ _spritesTable[i]._animationData = _sprC02Table[_spritesTable[i]._state];
+ _spritesTable[i]._firstFrame = READ_LE_UINT16(_spritesTable[i]._animationData);
+ if (_updateSpriteFlag2) {
+ _spritesTable[i]._state = _spritesTable[i]._firstFrame;
+ _spritesTable[i]._nextAnimationFrame = true;
+ _spritesTable[i]._prevAnimationFrame = true;
}
}
}
@@ -2844,7 +2876,7 @@ void TuckerEngine::drawStringInteger(int num, int x, int y, int digits) {
Graphics::drawStringChar(_locationBackgroundGfxBuf, _scrollOffset + x, y, 640, numStr[i], 102, _charsetGfxBuf);
x += 8;
}
- addDirtyRect(_scrollOffset + x, y, Graphics::_charset.charW * 3, Graphics::_charset.charH);
+ addDirtyRect(_scrollOffset + x, y, Graphics::_charset._charW * 3, Graphics::_charset._charH);
}
void TuckerEngine::drawStringAlt(int x, int y, int color, const uint8 *str, int strLen) {
@@ -2856,7 +2888,7 @@ void TuckerEngine::drawStringAlt(int x, int y, int color, const uint8 *str, int
x += _charWidthTable[chr];
++pos;
}
- addDirtyRect(xStart, y, x - xStart, Graphics::_charset.charH);
+ addDirtyRect(xStart, y, x - xStart, Graphics::_charset._charH);
}
void TuckerEngine::drawItemString(int x, int num, const uint8 *str) {
@@ -2911,15 +2943,15 @@ void TuckerEngine::updateItemsGfxColors(int color1, int color128) {
}
}
-int TuckerEngine::testLocationMask(int x, int y) {
- if (_locationMaskType > 0 || _locationMaskIgnore > 0) {
- return 1;
+bool TuckerEngine::testLocationMask(int x, int y) {
+ if (_locationMaskType > 0 || _locationMaskIgnore) {
+ return true;
}
if (_locationNum == 26 || _locationNum == 32) {
y -= 3;
}
const int offset = y * 640 + x;
- return _locationBackgroundMaskBuf[offset] > 0 ? 1 : 0;
+ return (_locationBackgroundMaskBuf[offset] > 0);
}
int TuckerEngine::getStringWidth(int num, const uint8 *ptr) {
@@ -3096,7 +3128,7 @@ int TuckerEngine::readTableInstructionParam(int len) {
++_tableInstructionsPtr;
--len;
}
- char *end = 0;
+ char *end = nullptr;
const int param = strtol((const char *)_tableInstructionsPtr, &end, 10);
if (end != (const char *)_tableInstructionsPtr + len) {
warning("Unexpected instruction parameter length %d (%d)", (int)(end - (const char *)_tableInstructionsPtr), len);
@@ -3123,7 +3155,7 @@ int TuckerEngine::executeTableInstruction() {
return 0;
case kCode_bub:
i = readTableInstructionParam(3);
- _spriteAnimationFrameIndex = _spriteAnimationsTable[i].firstFrameIndex;
+ _spriteAnimationFrameIndex = _spriteAnimationsTable[i]._firstFrameIndex;
_characterFacingDirection = 5;
_mainLoopCounter2 = 0;
return 0;
@@ -3137,13 +3169,13 @@ int TuckerEngine::executeTableInstruction() {
_selectedCharacterDirection = readTableInstructionParam(2);
return 0;
case kCode_bof:
- _skipCurrentCharacterDraw = 1;
+ _skipCurrentCharacterDraw = true;
return 0;
case kCode_buh:
_noCharacterAnimationChange = readTableInstructionParam(2);
return 0;
case kCode_bon:
- _skipCurrentCharacterDraw = 0;
+ _skipCurrentCharacterDraw = false;
return 0;
case kCode_bso:
_backgroundSprOffset = readTableInstructionParam(3);
@@ -3159,24 +3191,24 @@ int TuckerEngine::executeTableInstruction() {
_charSpeechSoundCounter = kDefaultCharSpeechSoundCounter;
return 0;
case kCode_buw:
- _selectedObject.xPos = readTableInstructionParam(3);
- _selectedObject.yPos = readTableInstructionParam(3);
- _locationMaskIgnore = 1;
- _panelLockedFlag = 1;
+ _selectedObject._xPos = readTableInstructionParam(3);
+ _selectedObject._yPos = readTableInstructionParam(3);
+ _locationMaskIgnore = true;
+ _panelLockedFlag = true;
return 0;
case kCode_bux:
_xPosCurrent = readTableInstructionParam(3);
_yPosCurrent = readTableInstructionParam(3);
return 0;
case kCode_c0a:
- _spritesTable[index].state = readTableInstructionParam(3);
- if (_spritesTable[index].state == 999) {
- _spritesTable[index].state = -1;
+ _spritesTable[index]._state = readTableInstructionParam(3);
+ if (_spritesTable[index]._state == 999) {
+ _spritesTable[index]._state = -1;
}
_mainLoopCounter1 = 0;
- _spritesTable[index].updateDelay = 0;
- _spritesTable[index].nextAnimationFrame = 0;
- _spritesTable[index].prevAnimationFrame = 0;
+ _spritesTable[index]._updateDelay = 0;
+ _spritesTable[index]._nextAnimationFrame = false;
+ _spritesTable[index]._prevAnimationFrame = false;
return 0;
case kCode_c0c:
setCharacterAnimation(readTableInstructionParam(3), index);
@@ -3187,7 +3219,7 @@ int TuckerEngine::executeTableInstruction() {
startSpeechSound(_partNum * 3000 + _ptTextOffset + _speechSoundNum - 3000, kMaxSoundVolume);
_charSpeechSoundCounter = kDefaultCharSpeechSoundCounter;
_actionTextColor = 181 + index;
- if (_tableInstructionFlag == 0) {
+ if (!_tableInstructionFlag) {
_actionPosX = _tableInstructionItemNum1;
_actionPosY = _tableInstructionItemNum2;
} else {
@@ -3210,8 +3242,8 @@ int TuckerEngine::executeTableInstruction() {
return 0;
case kCode_flx:
i = readTableInstructionParam(2);
- _locationSoundsTable[i].type = 2;
- startSound(_locationSoundsTable[i].offset, i, _locationSoundsTable[i].volume);
+ _locationSoundsTable[i]._type = 2;
+ startSound(_locationSoundsTable[i]._offset, i, _locationSoundsTable[i]._volume);
return 0;
case kCode_fxx:
i = readTableInstructionParam(2);
@@ -3221,7 +3253,7 @@ int TuckerEngine::executeTableInstruction() {
return 0;
case kCode_fx:
i = readTableInstructionParam(2);
- startSound(_locationSoundsTable[i].offset, i, _locationSoundsTable[i].volume);
+ startSound(_locationSoundsTable[i]._offset, i, _locationSoundsTable[i]._volume);
_soundInstructionIndex = i;
return 0;
case kCode_gfg:
@@ -3284,12 +3316,12 @@ int TuckerEngine::executeTableInstruction() {
_csDataLoaded = false;
return 3;
case kCode_ssp:
- _tableInstructionFlag = 0;
+ _tableInstructionFlag = false;
_tableInstructionItemNum1 = readTableInstructionParam(3);
_tableInstructionItemNum2 = readTableInstructionParam(3);
return 0;
case kCode_s0p:
- _tableInstructionFlag = 1;
+ _tableInstructionFlag = true;
_tableInstructionObj1Table[index] = readTableInstructionParam(3);
_tableInstructionObj2Table[index] = readTableInstructionParam(3);
return 0;
@@ -3380,21 +3412,21 @@ int TuckerEngine::getObjectUnderCursor() {
return -1;
}
for (int i = 0; i < _locationObjectsCount; ++i) {
- if (_mousePosX + _scrollOffset + 1 <= _locationObjectsTable[i].xPos) {
+ if (_mousePosX + _scrollOffset + 1 <= _locationObjectsTable[i]._xPos) {
continue;
}
- if (_mousePosX + _scrollOffset >= _locationObjectsTable[i].xPos + _locationObjectsTable[i].xSize) {
+ if (_mousePosX + _scrollOffset >= _locationObjectsTable[i]._xPos + _locationObjectsTable[i]._xSize) {
continue;
}
- if (_mousePosY <= _locationObjectsTable[i].yPos) {
+ if (_mousePosY <= _locationObjectsTable[i]._yPos) {
continue;
}
- if (_mousePosY >= _locationObjectsTable[i].yPos + _locationObjectsTable[i].ySize) {
+ if (_mousePosY >= _locationObjectsTable[i]._yPos + _locationObjectsTable[i]._ySize) {
continue;
}
_selectedObjectType = 0;
_selectedCharacterNum = i;
- setCursorNum(_locationObjectsTable[i].cursorNum);
+ setCursorNum(_locationObjectsTable[i]._cursorNum);
return i;
}
return -1;
@@ -3405,127 +3437,127 @@ void TuckerEngine::setSelectedObjectKey() {
if (_mousePosY > 139 && _nextAction == 0) {
return;
}
- _panelLockedFlag = 1;
+ _panelLockedFlag = true;
_locationMaskCounter = 0;
_actionRequiresTwoObjects = false;
- _selectedObject.yPos = 0;
- _selectedObject.locationObject_locationNum = 0;
+ _selectedObject._yPos = 0;
+ _selectedObject._locationObjectLocationNum = 0;
_pendingActionIndex = 0;
if (_selectedObjectType == 0) {
if (_selectedObjectNum == 0) {
- _selectedObject.xPos = x;
- _selectedObject.yPos = _mousePosY;
+ _selectedObject._xPos = x;
+ _selectedObject._yPos = _mousePosY;
} else {
- _selectedObject.xPos = _locationObjectsTable[_selectedCharacterNum].standX;
- _selectedObject.yPos = _locationObjectsTable[_selectedCharacterNum].standY;
+ _selectedObject._xPos = _locationObjectsTable[_selectedCharacterNum]._standX;
+ _selectedObject._yPos = _locationObjectsTable[_selectedCharacterNum]._standY;
if (_actionVerb == 0 || _actionVerb == 8) {
- _selectedObject.locationObject_locationNum = _locationObjectsTable[_selectedCharacterNum].locationNum;
- _selectedObject.locationObject_toX = _locationObjectsTable[_selectedCharacterNum].toX;
- _selectedObject.locationObject_toY = _locationObjectsTable[_selectedCharacterNum].toY;
- _selectedObject.locationObject_toX2 = _locationObjectsTable[_selectedCharacterNum].toX2;
- _selectedObject.locationObject_toY2 = _locationObjectsTable[_selectedCharacterNum].toY2;
- _selectedObject.locationObject_toWalkX2 = _locationObjectsTable[_selectedCharacterNum].toWalkX2;
- _selectedObject.locationObject_toWalkY2 = _locationObjectsTable[_selectedCharacterNum].toWalkY2;
+ _selectedObject._locationObjectLocationNum = _locationObjectsTable[_selectedCharacterNum]._locationNum;
+ _selectedObject._locationObjectToX = _locationObjectsTable[_selectedCharacterNum]._toX;
+ _selectedObject._locationObjectToY = _locationObjectsTable[_selectedCharacterNum]._toY;
+ _selectedObject._locationObjectToX2 = _locationObjectsTable[_selectedCharacterNum]._toX2;
+ _selectedObject._locationObjectToY2 = _locationObjectsTable[_selectedCharacterNum]._toY2;
+ _selectedObject._locationObjectToWalkX2 = _locationObjectsTable[_selectedCharacterNum]._toWalkX2;
+ _selectedObject._locationObjectToWalkY2 = _locationObjectsTable[_selectedCharacterNum]._toWalkY2;
}
}
} else {
switch (_selectedObjectType) {
case 1:
- _selectedObject.xPos = _locationAnimationsTable[_selectedCharacterNum].standX;
- _selectedObject.yPos = _locationAnimationsTable[_selectedCharacterNum].standY;
+ _selectedObject._xPos = _locationAnimationsTable[_selectedCharacterNum]._standX;
+ _selectedObject._yPos = _locationAnimationsTable[_selectedCharacterNum]._standY;
break;
case 2:
- _selectedObject.xPos = _charPosTable[_selectedCharacterNum].xWalkTo;
- _selectedObject.yPos = _charPosTable[_selectedCharacterNum].yWalkTo;
+ _selectedObject._xPos = _charPosTable[_selectedCharacterNum]._xWalkTo;
+ _selectedObject._yPos = _charPosTable[_selectedCharacterNum]._yWalkTo;
break;
case 3:
- _selectedObject.xPos = _xPosCurrent;
- _selectedObject.yPos = _yPosCurrent;
+ _selectedObject._xPos = _xPosCurrent;
+ _selectedObject._yPos = _yPosCurrent;
break;
}
}
- if (_selectedObject.yPos == 0) {
- _selectedObject.xPos = x;
- _selectedObject.yPos = _mousePosY;
+ if (_selectedObject._yPos == 0) {
+ _selectedObject._xPos = x;
+ _selectedObject._yPos = _mousePosY;
}
- _selectedObjectLocationMask = testLocationMask(_selectedObject.xPos, _selectedObject.yPos);
- if (_selectedObjectLocationMask == 0 && _objectKeysLocationTable[_locationNum] == 1) {
- if (_selectedObject.yPos < _objectKeysPosYTable[_locationNum]) {
- while (_selectedObjectLocationMask == 0 && _selectedObject.yPos < _objectKeysPosYTable[_locationNum]) {
- ++_selectedObject.yPos;
- _selectedObjectLocationMask = testLocationMask(_selectedObject.xPos, _selectedObject.yPos);
+ _selectedObjectLocationMask = testLocationMask(_selectedObject._xPos, _selectedObject._yPos);
+ if (!_selectedObjectLocationMask && _objectKeysLocationTable[_locationNum] == 1) {
+ if (_selectedObject._yPos < _objectKeysPosYTable[_locationNum]) {
+ while (!_selectedObjectLocationMask && _selectedObject._yPos < _objectKeysPosYTable[_locationNum]) {
+ ++_selectedObject._yPos;
+ _selectedObjectLocationMask = testLocationMask(_selectedObject._xPos, _selectedObject._yPos);
}
} else {
- while (_selectedObjectLocationMask == 0 && _selectedObject.yPos < _objectKeysPosYTable[_locationNum]) {
- --_selectedObject.yPos;
- _selectedObjectLocationMask = testLocationMask(_selectedObject.xPos, _selectedObject.yPos);
+ while (!_selectedObjectLocationMask && _selectedObject._yPos < _objectKeysPosYTable[_locationNum]) {
+ --_selectedObject._yPos;
+ _selectedObjectLocationMask = testLocationMask(_selectedObject._xPos, _selectedObject._yPos);
}
}
}
- if (_selectedObjectLocationMask == 1) {
- _selectedObjectLocationMask = testLocationMaskArea(_xPosCurrent, _yPosCurrent, _selectedObject.xPos, _selectedObject.yPos);
- if (_selectedObjectLocationMask == 1 && _objectKeysPosXTable[_locationNum] > 0) {
- _selectedObject.xDefaultPos = _selectedObject.xPos;
- _selectedObject.yDefaultPos = _selectedObject.yPos;
- _selectedObject.xPos = _objectKeysPosXTable[_locationNum];
- _selectedObject.yPos = _objectKeysPosYTable[_locationNum];
+ if (_selectedObjectLocationMask) {
+ _selectedObjectLocationMask = testLocationMaskArea(_xPosCurrent, _yPosCurrent, _selectedObject._xPos, _selectedObject._yPos);
+ if (_selectedObjectLocationMask && _objectKeysPosXTable[_locationNum] > 0) {
+ _selectedObject._xDefaultPos = _selectedObject._xPos;
+ _selectedObject._yDefaultPos = _selectedObject._yPos;
+ _selectedObject._xPos = _objectKeysPosXTable[_locationNum];
+ _selectedObject._yPos = _objectKeysPosYTable[_locationNum];
if (_objectKeysLocationTable[_locationNum] == 1) {
- _selectedObject.xPos = _selectedObject.xDefaultPos;
+ _selectedObject._xPos = _selectedObject._xDefaultPos;
}
}
}
}
void TuckerEngine::setCharacterAnimation(int count, int spr) {
- _spritesTable[spr].animationFrame = 0;
- _spritesTable[spr].stateIndex = 0;
+ _spritesTable[spr]._animationFrame = 0;
+ _spritesTable[spr]._stateIndex = 0;
for (int i = 0; i < count; ++i) {
- while (_characterStateTable[_spritesTable[spr].stateIndex] != 99) {
- ++_spritesTable[spr].stateIndex;
+ while (_characterStateTable[_spritesTable[spr]._stateIndex] != 99) {
+ ++_spritesTable[spr]._stateIndex;
}
- ++_spritesTable[spr].stateIndex;
+ ++_spritesTable[spr]._stateIndex;
}
- _spritesTable[spr].state = _characterStateTable[_spritesTable[spr].stateIndex];
- ++_spritesTable[spr].stateIndex;
- _spritesTable[spr].animationFrame = _characterStateTable[_spritesTable[spr].stateIndex];
- ++_spritesTable[spr].stateIndex;
- _spritesTable[spr].animationData = _sprC02Table[_spritesTable[spr].state];
- _spritesTable[spr].firstFrame = READ_LE_UINT16(_spritesTable[spr].animationData);
+ _spritesTable[spr]._state = _characterStateTable[_spritesTable[spr]._stateIndex];
+ ++_spritesTable[spr]._stateIndex;
+ _spritesTable[spr]._animationFrame = _characterStateTable[_spritesTable[spr]._stateIndex];
+ ++_spritesTable[spr]._stateIndex;
+ _spritesTable[spr]._animationData = _sprC02Table[_spritesTable[spr]._state];
+ _spritesTable[spr]._firstFrame = READ_LE_UINT16(_spritesTable[spr]._animationData);
}
-int TuckerEngine::testLocationMaskArea(int xBase, int yBase, int xPos, int yPos) {
+bool TuckerEngine::testLocationMaskArea(int xBase, int yBase, int xPos, int yPos) {
while (true) {
bool loop = false;
if (yBase > yPos) {
- if (testLocationMask(xBase, yBase - 1) == 1) {
+ if (testLocationMask(xBase, yBase - 1)) {
--yBase;
loop = true;
}
} else if (yBase < yPos) {
- if (testLocationMask(xBase, yBase + 1) == 1) {
+ if (testLocationMask(xBase, yBase + 1)) {
++yBase;
loop = true;
}
}
if (xBase > xPos) {
- if (testLocationMask(xBase - 1, yBase) == 1) {
+ if (testLocationMask(xBase - 1, yBase)) {
--xBase;
loop = true;
}
} else if (xBase < xPos) {
- if (testLocationMask(xBase + 1, yBase) == 1) {
+ if (testLocationMask(xBase + 1, yBase)) {
++xBase;
loop = true;
}
}
if (xBase == xPos && yBase == yPos) {
- return 0;
+ return false;
}
if (!loop) {
break;
}
}
- return 1;
+ return true;
}
void TuckerEngine::handleMouseClickOnInventoryObject() {
@@ -3548,7 +3580,7 @@ void TuckerEngine::handleMouseClickOnInventoryObject() {
_selectedObjectType = 0;
_selectedObjectNum = 0;
_actionVerb = 0;
- _actionVerbLocked = 0;
+ _actionVerbLocked = false;
_forceRedrawPanelItems = true;
_panelState = 2;
setCursorType(1);
@@ -3573,7 +3605,7 @@ void TuckerEngine::handleMouseClickOnInventoryObject() {
_actionVerb = 0;
_selectedObjectType = 0;
_selectedObjectNum = 0;
- _actionVerbLocked = 0;
+ _actionVerbLocked = false;
}
}
break;
@@ -3585,23 +3617,23 @@ int TuckerEngine::setCharacterUnderCursor() {
return -1;
}
for (int i = 0; i < _charPosCount; ++i) {
- if (_mousePosX + _scrollOffset <= _charPosTable[i].xPos) {
+ if (_mousePosX + _scrollOffset <= _charPosTable[i]._xPos) {
continue;
}
- if (_mousePosX + _scrollOffset >= _charPosTable[i].xPos + _charPosTable[i].xSize) {
+ if (_mousePosX + _scrollOffset >= _charPosTable[i]._xPos + _charPosTable[i]._xSize) {
continue;
}
- if (_mousePosY <= _charPosTable[i].yPos) {
+ if (_mousePosY <= _charPosTable[i]._yPos) {
continue;
}
- if (_mousePosY >= _charPosTable[i].yPos + _charPosTable[i].ySize) {
+ if (_mousePosY >= _charPosTable[i]._yPos + _charPosTable[i]._ySize) {
continue;
}
- if (_charPosTable[i].flagNum == 0 || _flagsTable[_charPosTable[i].flagNum] == _charPosTable[i].flagValue) {
+ if (_charPosTable[i]._flagNum == 0 || _flagsTable[_charPosTable[i]._flagNum] == _charPosTable[i]._flagValue) {
_selectedObjectType = 2;
- _selectedCharacterDirection = _charPosTable[i].direction;
+ _selectedCharacterDirection = _charPosTable[i]._direction;
_selectedCharacterNum = i;
- return _charPosTable[i].name;
+ return _charPosTable[i]._name;
}
}
return -1;
@@ -3612,29 +3644,29 @@ int TuckerEngine::setLocationAnimationUnderCursor() {
return -1;
}
for (int i = _locationAnimationsCount - 1; i >= 0; --i) {
- if (_locationAnimationsTable[i].drawFlag == 0) {
+ if (!_locationAnimationsTable[i]._drawFlag)
continue;
- }
- int num = _locationAnimationsTable[i].graphicNum;
- if (_mousePosX + _scrollOffset + 1 <= _dataTable[num].xDest) {
+
+ int num = _locationAnimationsTable[i]._graphicNum;
+ if (_mousePosX + _scrollOffset + 1 <= _dataTable[num]._xDest) {
continue;
}
- if (_mousePosX + _scrollOffset >= _dataTable[num].xDest + _dataTable[num].xSize) {
+ if (_mousePosX + _scrollOffset >= _dataTable[num]._xDest + _dataTable[num]._xSize) {
continue;
}
- if (_mousePosY <= _dataTable[num].yDest) {
+ if (_mousePosY <= _dataTable[num]._yDest) {
continue;
}
- if (_mousePosY >= _dataTable[num].yDest + _dataTable[num].ySize) {
+ if (_mousePosY >= _dataTable[num]._yDest + _dataTable[num]._ySize) {
continue;
}
- if (_locationAnimationsTable[i].selectable == 0) {
+ if (_locationAnimationsTable[i]._selectable == 0) {
return -1;
}
_selectedObjectType = 1;
_selectedCharacterNum = i;
_selectedCharacter2Num = i;
- return _locationAnimationsTable[i].selectable;
+ return _locationAnimationsTable[i]._selectable;
}
return -1;
}
@@ -3642,14 +3674,14 @@ int TuckerEngine::setLocationAnimationUnderCursor() {
void TuckerEngine::setActionForInventoryObject() {
if (_actionVerb == 0 || _actionVerb == 2 || _actionVerb == 6 || _actionVerb == 7) {
playSpeechForAction(_actionVerb);
- _actionVerbLocked = 0;
+ _actionVerbLocked = false;
_actionRequiresTwoObjects = false;
return;
}
if (_actionVerb == 3 || _actionVerb == 4) {
if (!(_partNum == 2 && _selectedObjectNum == 19) && !(_partNum == 3 && _selectedObjectNum == 42)) {
playSpeechForAction(_actionVerb);
- _actionVerbLocked = 0;
+ _actionVerbLocked = false;
_actionRequiresTwoObjects = false;
return;
}
@@ -3659,13 +3691,13 @@ void TuckerEngine::setActionForInventoryObject() {
_currentActionObj2Num = _actionObj2Num;
_currentInfoString2SourceType = _actionObj2Type;
if (_actionVerb == 1 && _selectedObjectType == 3) {
- if (_panelLockedFlag == 1) {
+ if (_panelLockedFlag) {
if (_locationMaskType != 0) {
return;
}
- _panelLockedFlag = 0;
+ _panelLockedFlag = false;
}
- if (handleSpecialObjectSelectionSequence() == 1) {
+ if (handleSpecialObjectSelectionSequence()) {
return;
}
_speechSoundNum = _actionObj1Num + _speechSoundBaseNum;
@@ -3678,7 +3710,7 @@ void TuckerEngine::setActionForInventoryObject() {
_actionCharacterNum = 99;
setCursorType(2);
_charSpeechSoundCounter = kDefaultCharSpeechSoundCounter;
- _actionVerbLocked = 0;
+ _actionVerbLocked = false;
_actionRequiresTwoObjects = false;
return;
}
@@ -3686,7 +3718,7 @@ void TuckerEngine::setActionForInventoryObject() {
if ((_partNum == 3 && (_actionObj1Num == 6 || _actionObj1Num == 3 || _actionObj1Num == 17 || _actionObj1Num == 33)) ||
(_partNum == 2 && _actionObj1Num == 19) ||
(_partNum == 3 && (_actionObj1Num == 42 && _selectedObjectNum == 18)) ) {
- _actionVerbLocked = 0;
+ _actionVerbLocked = false;
_actionRequiresTwoObjects = false;
_locationMaskCounter = 1;
setActionState();
@@ -3695,7 +3727,7 @@ void TuckerEngine::setActionForInventoryObject() {
if (!_actionRequiresTwoObjects) {
_actionRequiresTwoObjects = true;
} else {
- _actionVerbLocked = 0;
+ _actionVerbLocked = false;
_actionRequiresTwoObjects = false;
_locationMaskCounter = 1;
setActionState();
@@ -3755,12 +3787,12 @@ void TuckerEngine::drawSpeechText(int xStart, int y, const uint8 *dataPtr, int n
}
}
int count = 0;
- int flag = 0;
+ bool flag = false;
struct {
int w, count, offset;
} lines[5];
lines[0].offset = getPositionForLine(num, dataPtr);
- while (flag == 0 && count < 4) {
+ while (!flag && count < 4) {
int lineCharsCount, lineWidth;
flag = splitSpeechTextLines(dataPtr, lines[count].offset, x, lineCharsCount, lineWidth);
lines[count].w = lineWidth;
@@ -3789,7 +3821,7 @@ void TuckerEngine::drawSpeechText(int xStart, int y, const uint8 *dataPtr, int n
}
}
-int TuckerEngine::splitSpeechTextLines(const uint8 *dataPtr, int pos, int x, int &lineCharsCount, int &lineWidth) {
+bool TuckerEngine::splitSpeechTextLines(const uint8 *dataPtr, int pos, int x, int &lineCharsCount, int &lineWidth) {
int count = 0;
int w = 0;
lineCharsCount = 0;
@@ -3803,11 +3835,11 @@ int TuckerEngine::splitSpeechTextLines(const uint8 *dataPtr, int pos, int x, int
++count;
++pos;
}
- int ret = 0;
+ bool ret = false;
if (x + 1 > w) {
lineCharsCount = count;
lineWidth = w;
- ret = 1;
+ ret = true;
}
return ret;
}
@@ -3819,7 +3851,7 @@ void TuckerEngine::drawSpeechTextLine(const uint8 *dataPtr, int pos, int count,
x += _charWidthTable[dataPtr[pos]];
++pos;
}
- addDirtyRect(xStart, y, x - xStart, Graphics::_charset.charH);
+ addDirtyRect(xStart, y, x - xStart, Graphics::_charset._charH);
}
void TuckerEngine::redrawScreen(int offset) {
diff --git a/engines/tucker/tucker.h b/engines/tucker/tucker.h
index 1a970e3a0c..adcd02b2fe 100644
--- a/engines/tucker/tucker.h
+++ b/engines/tucker/tucker.h
@@ -53,133 +53,133 @@ class RewindableAudioStream;
namespace Tucker {
struct Action {
- int key;
- int testFlag1Num;
- int testFlag1Value;
- int testFlag2Num;
- int testFlag2Value;
- int speech;
- int flipX;
- int index;
- int delay;
- int setFlagNum;
- int setFlagValue;
- int fxNum;
- int fxDelay;
+ int _key;
+ int _testFlag1Num;
+ int _testFlag1Value;
+ int _testFlag2Num;
+ int _testFlag2Value;
+ int _speech;
+ int _flipX;
+ int _index;
+ int _delay;
+ int _setFlagNum;
+ int _setFlagValue;
+ int _fxNum;
+ int _fxDelay;
};
struct Sprite {
- int state;
- int gfxBackgroundOffset;
- int updateDelay;
- int backgroundOffset;
- int needUpdate;
- int stateIndex;
- int counter;
- int disabled;
- int colorType;
- int animationFrame;
- int firstFrame;
- uint8 *animationData;
- int prevState;
- int nextAnimationFrame;
- int prevAnimationFrame;
- int defaultUpdateDelay;
- int xSource;
- int yMaxBackground;
- int flipX;
+ int _state;
+ int _gfxBackgroundOffset;
+ int _updateDelay;
+ int _backgroundOffset;
+ int _stateIndex;
+ int _counter;
+ int _colorType;
+ int _animationFrame;
+ int _firstFrame;
+ uint8 *_animationData;
+ int _prevState;
+ int _defaultUpdateDelay;
+ int _xSource;
+ int _yMaxBackground;
+ bool _disabled;
+ bool _flipX;
+ bool _needUpdate;
+ bool _nextAnimationFrame;
+ bool _prevAnimationFrame;
};
struct CharPos {
- int xPos;
- int yPos;
- int xSize;
- int ySize;
- int xWalkTo;
- int yWalkTo;
- int flagNum;
- int flagValue;
- int direction;
- int name;
- int description;
+ int _xPos;
+ int _yPos;
+ int _xSize;
+ int _ySize;
+ int _xWalkTo;
+ int _yWalkTo;
+ int _flagNum;
+ int _flagValue;
+ int _direction;
+ int _name;
+ int _description;
};
struct SpriteFrame {
- int sourceOffset;
- int xOffset;
- int yOffset;
- int xSize;
- int ySize;
+ int _sourceOffset;
+ int _xOffset;
+ int _yOffset;
+ int _xSize;
+ int _ySize;
};
struct SpriteAnimation {
- int numParts;
- int rotateFlag;
- int firstFrameIndex;
+ int _numParts;
+ int _rotateFlag; // Useless variable
+ int _firstFrameIndex;
};
struct Data {
- int sourceOffset;
- int xSize;
- int ySize;
- int xDest;
- int yDest;
- int index;
+ int _sourceOffset;
+ int _xSize;
+ int _ySize;
+ int _xDest;
+ int _yDest;
+ int _index;
};
struct LocationAnimation {
- int graphicNum;
- int animInitCounter;
- int animCurrentCounter;
- int animLastCounter;
- int getFlag;
- int inventoryNum;
- int flagNum;
- int flagValue;
- int selectable;
- int standX;
- int standY;
- int drawFlag;
+ int _graphicNum;
+ int _animInitCounter;
+ int _animCurrentCounter;
+ int _animLastCounter;
+ int _getFlag;
+ int _inventoryNum;
+ int _flagNum;
+ int _flagValue;
+ int _selectable;
+ int _standX;
+ int _standY;
+ bool _drawFlag;
};
struct LocationObject {
- int xPos;
- int yPos;
- int xSize;
- int ySize;
- int textNum;
- int locationNum;
- int toX;
- int toY;
- int toX2;
- int toY2;
- int toWalkX2;
- int toWalkY2;
- int standX;
- int standY;
- int cursorNum;
+ int _xPos;
+ int _yPos;
+ int _xSize;
+ int _ySize;
+ int _textNum;
+ int _locationNum;
+ int _toX;
+ int _toY;
+ int _toX2;
+ int _toY2;
+ int _toWalkX2;
+ int _toWalkY2;
+ int _standX;
+ int _standY;
+ int _cursorNum;
};
struct LocationSound {
- int startFxSpriteState;
- int startFxSpriteNum;
- int updateType;
- int stopFxSpriteState;
- int stopFxSpriteNum;
- int offset;
- int type;
- int volume;
- int flagValueStartFx;
- int flagValueStopFx;
- int flagNum;
- int num;
+ int _startFxSpriteState;
+ int _startFxSpriteNum;
+ int _updateType;
+ int _stopFxSpriteState;
+ int _stopFxSpriteNum;
+ int _offset;
+ int _type;
+ int _volume;
+ int _flagValueStartFx;
+ int _flagValueStopFx;
+ int _flagNum;
+ int _num;
};
struct LocationMusic {
- int flag;
- int offset;
- int volume;
- int num;
+ int _flag;
+ int _offset;
+ int _volume;
+ int _num;
};
enum {
@@ -232,7 +232,7 @@ enum CompressedSoundType {
class CompressedSound {
public:
- CompressedSound() : _compressedSoundType(-1) {}
+ CompressedSound() : _compressedSoundType(-1), _compressedSoundFlags(0) {}
void openFile();
void closeFile();
@@ -284,7 +284,7 @@ protected:
int getRandomNumber();
void allocateBuffers();
void freeBuffers();
- void restart();
+ void resetVariables();
void mainLoop();
void waitForTimer(int ticksCount);
void parseEvents();
@@ -356,7 +356,7 @@ protected:
void drawCreditsString(int x, int y, int num);
void updateCharSpeechSound(bool displayText);
void updateItemsGfxColors(int bit0, int bit7);
- int testLocationMask(int x, int y);
+ bool testLocationMask(int x, int y);
int getStringWidth(int num, const uint8 *ptr);
int getPositionForLine(int num, const uint8 *ptr);
void resetCharacterAnimationIndex(int count);
@@ -369,7 +369,7 @@ protected:
int getObjectUnderCursor();
void setSelectedObjectKey();
void setCharacterAnimation(int count, int spr);
- int testLocationMaskArea(int xBase, int yBase, int xPos, int yPos);
+ bool testLocationMaskArea(int xBase, int yBase, int xPos, int yPos);
void handleMouseClickOnInventoryObject();
int setCharacterUnderCursor();
int setLocationAnimationUnderCursor();
@@ -377,7 +377,7 @@ protected:
void setActionState();
void playSpeechForAction(int i);
void drawSpeechText(int xStart, int y, const uint8 *dataPtr, int num, int color);
- int splitSpeechTextLines(const uint8 *dataPtr, int pos, int x, int &lineCharsCount, int &lineWidth);
+ bool splitSpeechTextLines(const uint8 *dataPtr, int pos, int x, int &lineCharsCount, int &lineWidth);
void drawSpeechTextLine(const uint8 *dataPtr, int pos, int count, int x, int y, uint8 color);
void redrawScreen(int offset);
void redrawScreenRect(const Common::Rect &clip, const Common::Rect &dirty);
@@ -578,7 +578,7 @@ protected:
void handleMeanwhileSequence();
void handleMapSequence();
void copyMapRect(int x, int y, int w, int h);
- int handleSpecialObjectSelectionSequence();
+ bool handleSpecialObjectSelectionSequence();
uint8 *loadFile(const char *filename, uint8 *p);
void loadImage(const char *filename, uint8 *dst, int a);
@@ -630,14 +630,14 @@ protected:
bool _gameDebug;
bool _displayGameHints;
int _execData3Counter;
- bool _displaySpeechText;
int _currentSaveLoadGameState;
-
int _gameHintsIndex;
int _gameHintsCounter;
- int _gameHintsDisplayText;
int _gameHintsStringNum;
+ bool _displaySpeechText;
+ bool _displayHintsText;
+
int _fileLoadSize;
uint8 *_loadTempBuf;
uint8 *_cursorGfxBuf;
@@ -685,7 +685,7 @@ protected:
int _switchPanelCounter;
int _conversationOptionsCount;
bool _fadedPanel;
- int _panelLockedFlag;
+ bool _panelLockedFlag;
int _conversationOptionLinesCount;
int _inventoryItemsState[50];
int _inventoryObjectsList[40];
@@ -742,22 +742,22 @@ protected:
int _actionObj1Type, _actionObj2Type;
int _actionObj1Num, _actionObj2Num;
bool _actionRequiresTwoObjects;
- int _actionVerbLocked;
+ bool _actionVerbLocked;
int _actionPosX;
int _actionPosY;
- int _selectedObjectLocationMask;
+ bool _selectedObjectLocationMask;
struct {
- int xDefaultPos;
- int yDefaultPos;
- int xPos;
- int yPos;
- int locationObject_locationNum;
- int locationObject_toX;
- int locationObject_toY;
- int locationObject_toX2;
- int locationObject_toY2;
- int locationObject_toWalkX2;
- int locationObject_toWalkY2;
+ int _xDefaultPos;
+ int _yDefaultPos;
+ int _xPos;
+ int _yPos;
+ int _locationObjectLocationNum;
+ int _locationObjectToX;
+ int _locationObjectToY;
+ int _locationObjectToX2;
+ int _locationObjectToY2;
+ int _locationObjectToWalkX2;
+ int _locationObjectToWalkY2;
} _selectedObject;
int _selectedCharacterDirection;
int _selectedCharacter2Num;
@@ -780,7 +780,7 @@ protected:
const uint8 *_tableInstructionsPtr;
int _tableInstructionObj1Table[6];
int _tableInstructionObj2Table[6];
- int _tableInstructionFlag;
+ bool _tableInstructionFlag;
int _tableInstructionItemNum1, _tableInstructionItemNum2;
int _instructionsActionsTable[6];
bool _validInstructionId;
@@ -810,21 +810,21 @@ protected:
int _characterAnimationIndex;
int _characterFacingDirection;
int _characterPrevFacingDirection;
- int _characterBackFrontFacing;
- int _characterPrevBackFrontFacing;
+ bool _characterBackFrontFacing;
+ bool _characterPrevBackFrontFacing;
int _characterAnimationNum;
int _noCharacterAnimationChange;
- int _changeBackgroundSprite;
int _characterSpriteAnimationFrameCounter;
- int _locationMaskIgnore;
+ bool _locationMaskIgnore;
int _locationMaskType;
int _locationMaskCounter;
- int _updateSpriteFlag1;
- int _updateSpriteFlag2;
int _handleMapCounter;
bool _noPositionChangeAfterMap;
+ bool _changeBackgroundSprite;
+ bool _updateSpriteFlag1;
+ bool _updateSpriteFlag2;
- int _mirroredDrawing;
+ bool _mirroredDrawing;
uint8 *_loadLocBufPtr;
uint8 *_backgroundSpriteDataPtr;
int _locationHeight;
@@ -848,7 +848,7 @@ protected:
int _updateLocation14ObjNum[10];
int _updateLocation14Delay[10];
int _updateLocationCounter2;
- int _updateLocationFlag;
+ bool _updateLocationFlag;
int _updateLocation70StringLen;
uint8 _updateLocation70String[20];
diff --git a/engines/voyeur/animation.cpp b/engines/voyeur/animation.cpp
index be6148c351..c1ded75f02 100644
--- a/engines/voyeur/animation.cpp
+++ b/engines/voyeur/animation.cpp
@@ -50,10 +50,10 @@ RL2Decoder::~RL2Decoder() {
bool RL2Decoder::loadVideo(int videoId) {
Common::String filename = Common::String::format("%s.rl2",
::Voyeur::SZ_FILENAMES[videoId * 2]);
- return loadFile(filename);
+ return loadRL2File(filename, false);
}
-bool RL2Decoder::loadFile(const Common::String &file, bool palFlag) {
+bool RL2Decoder::loadRL2File(const Common::String &file, bool palFlag) {
bool result = VideoDecoder::loadFile(file);
_paletteStart = palFlag ? 0 : 128;
return result;
@@ -100,7 +100,7 @@ const Common::List<Common::Rect> *RL2Decoder::getDirtyRects() const {
if (_videoTrack)
return _videoTrack->getDirtyRects();
- return 0;
+ return nullptr;
}
void RL2Decoder::clearDirtyRects() {
@@ -115,7 +115,7 @@ void RL2Decoder::copyDirtyRectsToBuffer(uint8 *dst, uint pitch) {
void RL2Decoder::readNextPacket() {
int frameNumber = getCurFrame();
- RL2AudioTrack *audioTrack = getAudioTrack();
+ RL2AudioTrack *audioTrack = getRL2AudioTrack();
// Handle queueing sound data
if (_soundFrameNumber == -1)
@@ -224,8 +224,7 @@ Common::Rational RL2Decoder::RL2FileHeader::getFrameRate() const {
/*------------------------------------------------------------------------*/
RL2Decoder::RL2VideoTrack::RL2VideoTrack(const RL2FileHeader &header, RL2AudioTrack *audioTrack,
- Common::SeekableReadStream *stream):
- _header(header), _audioTrack(audioTrack), _fileStream(stream) {
+ Common::SeekableReadStream *stream): _header(header), _fileStream(stream) {
_frameOffsets = nullptr;
@@ -465,7 +464,7 @@ void RL2Decoder::play(VoyeurEngine *vm, int resourceOffset,
int paletteStart = getPaletteStart();
int paletteCount = getPaletteCount();
- PictureResource videoFrame(getVideoTrack()->getBackSurface());
+ PictureResource videoFrame(getRL2VideoTrack()->getBackSurface());
int picCtr = 0;
while (!vm->shouldQuit() && !endOfVideo() && !vm->_eventsManager->_mouseClicked) {
if (hasDirtyPalette()) {
diff --git a/engines/voyeur/animation.h b/engines/voyeur/animation.h
index dcdbf36260..b17e998214 100644
--- a/engines/voyeur/animation.h
+++ b/engines/voyeur/animation.h
@@ -130,7 +130,6 @@ private:
private:
Common::SeekableReadStream *_fileStream;
const RL2FileHeader &_header;
- RL2AudioTrack *_audioTrack;
Graphics::Surface *_surface;
Graphics::Surface *_backSurface;
bool _hasBackFrame;
@@ -175,7 +174,7 @@ public:
virtual void close();
bool loadStream(Common::SeekableReadStream *stream);
- bool loadFile(const Common::String &file, bool palFlag = false);
+ bool loadRL2File(const Common::String &file, bool palFlag);
bool loadVideo(int videoId);
int getPaletteCount() const { return _header._colorCount; }
@@ -187,8 +186,8 @@ public:
* @param imgPos Position to draw image data
*/
void play(VoyeurEngine *vm, int resourceOffset = 0, byte *frames = NULL, byte *imgPos = NULL);
- RL2VideoTrack *getVideoTrack() { return _videoTrack; }
- RL2AudioTrack *getAudioTrack() { return _audioTrack; }
+ RL2VideoTrack *getRL2VideoTrack() { return _videoTrack; }
+ RL2AudioTrack *getRL2AudioTrack() { return _audioTrack; }
};
} // End of namespace Voyeur
diff --git a/engines/voyeur/data.cpp b/engines/voyeur/data.cpp
index 9e29ae4618..cc0b81a313 100644
--- a/engines/voyeur/data.cpp
+++ b/engines/voyeur/data.cpp
@@ -49,7 +49,7 @@ SVoy::SVoy(VoyeurEngine *vm):_vm(vm) {
_audioVisualStartTime = 0;
_audioVisualDuration = 0;
_boltGroupId2 = 0;
- _computerTextId = 0;
+ _computerTextId = -1;
_computerTimeMin = _computerTimeMax = 0;
_eventCount = 0;
_fadingStep1 = 0;
@@ -90,6 +90,8 @@ SVoy::SVoy(VoyeurEngine *vm):_vm(vm) {
_events[i]._computerOff = 0;
_events[i]._dead = 0;
}
+ for (int i = 0; i < 6; i++)
+ _evCmPtrs[i] = nullptr;
}
void SVoy::addEvent(int hour, int minute, VoyeurEventType type, int audioVideoId,
@@ -240,7 +242,7 @@ void SVoy::reviewAnEvidEvent(int eventIndex) {
if (_vm->_bVoy->getBoltGroup(_vm->_playStampGroupId)) {
_vm->_graphicsManager->_backColors = _vm->_bVoy->boltEntry(_vm->_playStampGroupId + 1)._cMapResource;
_vm->_graphicsManager->_backgroundPage = _vm->_bVoy->boltEntry(_vm->_playStampGroupId)._picResource;
- (*_vm->_graphicsManager->_vPort)->setupViewPort(_vm->_graphicsManager->_backgroundPage);
+ _vm->_graphicsManager->_vPort->setupViewPort(_vm->_graphicsManager->_backgroundPage);
_vm->_graphicsManager->_backColors->startFade();
_vm->doEvidDisplay(frameOff, e._dead);
@@ -262,7 +264,7 @@ void SVoy::reviewComputerEvent(int eventIndex) {
if (_vm->_bVoy->getBoltGroup(_vm->_playStampGroupId)) {
_vm->_graphicsManager->_backColors = _vm->_bVoy->boltEntry(_vm->_playStampGroupId + 1)._cMapResource;
_vm->_graphicsManager->_backgroundPage = _vm->_bVoy->boltEntry(_vm->_playStampGroupId)._picResource;
- (*_vm->_graphicsManager->_vPort)->setupViewPort(_vm->_graphicsManager->_backgroundPage);
+ _vm->_graphicsManager->_vPort->setupViewPort(_vm->_graphicsManager->_backgroundPage);
_vm->_graphicsManager->_backColors->startFade();
_vm->flipPageAndWaitForFade();
@@ -277,7 +279,8 @@ void SVoy::reviewComputerEvent(int eventIndex) {
}
bool SVoy::checkForKey() {
- _vm->_controlPtr->_state->_victimEvidenceIndex = 0;
+ StateResource *state = _vm->_controlPtr->_state;
+ state->_victimEvidenceIndex = 0;
if (_vm->_voy->_victimMurdered)
return false;
@@ -286,25 +289,25 @@ bool SVoy::checkForKey() {
switch (e._type) {
case EVTYPE_VIDEO:
- switch (_vm->_controlPtr->_state->_victimIndex) {
+ switch (state->_victimIndex) {
case 1:
if (e._audioVideoId == 33 && e._computerOn < 2 && e._computerOff >= 38)
- _vm->_controlPtr->_state->_victimEvidenceIndex = 1;
+ state->_victimEvidenceIndex = 1;
break;
case 2:
if (e._audioVideoId == 47 && e._computerOn < 2 && e._computerOff >= 9)
- _vm->_controlPtr->_state->_victimEvidenceIndex = 2;
+ state->_victimEvidenceIndex = 2;
break;
case 3:
if (e._audioVideoId == 46 && e._computerOn < 2 && e._computerOff > 2)
- _vm->_controlPtr->_state->_victimEvidenceIndex = 3;
+ state->_victimEvidenceIndex = 3;
break;
case 4:
if (e._audioVideoId == 40 && e._computerOn < 2 && e._computerOff > 6)
- _vm->_controlPtr->_state->_victimEvidenceIndex = 4;
+ state->_victimEvidenceIndex = 4;
break;
default:
@@ -313,17 +316,17 @@ bool SVoy::checkForKey() {
break;
case EVTYPE_AUDIO:
- switch (_vm->_controlPtr->_state->_victimIndex) {
+ switch (state->_victimIndex) {
case 1:
if (e._audioVideoId == 8 && e._computerOn < 2 && e._computerOff > 26)
- _vm->_controlPtr->_state->_victimEvidenceIndex = 1;
+ state->_victimEvidenceIndex = 1;
break;
case 3:
if (e._audioVideoId == 20 && e._computerOn < 2 && e._computerOff > 28)
- _vm->_controlPtr->_state->_victimEvidenceIndex = 3;
+ state->_victimEvidenceIndex = 3;
if (e._audioVideoId == 35 && e._computerOn < 2 && e._computerOff > 18)
- _vm->_controlPtr->_state->_victimEvidenceIndex = 3;
+ state->_victimEvidenceIndex = 3;
break;
default:
@@ -332,10 +335,10 @@ bool SVoy::checkForKey() {
break;
case EVTYPE_EVID:
- switch (_vm->_controlPtr->_state->_victimIndex) {
+ switch (state->_victimIndex) {
case 4:
if (e._audioVideoId == 0x2400 && e._computerOn == 0x4f00 && e._computerOff == 17)
- _vm->_controlPtr->_state->_victimEvidenceIndex = 4;
+ state->_victimEvidenceIndex = 4;
default:
break;
@@ -343,10 +346,10 @@ bool SVoy::checkForKey() {
break;
case EVTYPE_COMPUTER:
- switch (_vm->_controlPtr->_state->_victimIndex) {
+ switch (state->_victimIndex) {
case 2:
if (e._computerOn == 13 && e._computerOff > 76)
- _vm->_controlPtr->_state->_victimEvidenceIndex = 2;
+ state->_victimEvidenceIndex = 2;
break;
default:
@@ -358,7 +361,7 @@ bool SVoy::checkForKey() {
break;
}
- if (_vm->_controlPtr->_state->_victimEvidenceIndex == _vm->_controlPtr->_state->_victimIndex)
+ if (state->_victimEvidenceIndex == state->_victimIndex)
return true;
}
diff --git a/engines/voyeur/data.h b/engines/voyeur/data.h
index b3380df3bc..98c884d0c1 100644
--- a/engines/voyeur/data.h
+++ b/engines/voyeur/data.h
@@ -148,7 +148,7 @@ public:
HotspotTimes<3> _evidenceHotspotTimes;
HotspotTimes<8> _videoHotspotTimes;
- Common::Rect _rect4E4;
+ Common::Rect _computerScreenRect;
RectResource *_viewBounds;
PictureResource *_evPicPtrs[6];
CMapResource *_evCmPtrs[6];
diff --git a/engines/voyeur/debugger.cpp b/engines/voyeur/debugger.cpp
index fdd0825181..234300bce5 100644
--- a/engines/voyeur/debugger.cpp
+++ b/engines/voyeur/debugger.cpp
@@ -92,10 +92,37 @@ bool Debugger::Cmd_Time(int argc, const char **argv) {
}
bool Debugger::Cmd_Hotspots(int argc, const char **argv) {
+ if (_vm->_voy->_computerTextId >= 0) {
+ DebugPrintf("Hotspot Computer Screen %d - %d,%d->%d,%d\n",
+ _vm->_voy->_computerTextId,
+ _vm->_voy->_computerScreenRect.left,
+ _vm->_voy->_computerScreenRect.top,
+ _vm->_voy->_computerScreenRect.right,
+ _vm->_voy->_computerScreenRect.bottom);
+ }
+
+#if 0
+ // Room hotspots
+ BoltEntry &boltEntry = _vm->_bVoy->boltEntry(_vm->_playStampGroupId + 4);
+ if (boltEntry._rectResource) {
+ Common::Array<RectEntry> &hotspots = boltEntry._rectResource->_entries;
+ for (uint hotspotIdx = 0; hotspotIdx < hotspots.size(); ++hotspotIdx) {
+ Common::String pos = Common::String::format("(%d,%d->%d,%d)",
+ hotspots[hotspotIdx].left, hotspots[hotspotIdx].top,
+ hotspots[hotspotIdx].right, hotspots[hotspotIdx].bottom);
+ int arrIndex = hotspots[hotspotIdx]._arrIndex;
+ if (_vm->_voy->_roomHotspotsEnabled[arrIndex - 1]) {
+ DebugPrintf("Hotspot Room %d - %s - Enabled\n", arrIndex, pos);
+ } else {
+ DebugPrintf("Hotspot Room - %s - Disabled\n", pos);
+ }
+ }
+ }
+#endif
+
+ // Outside view hotspots
BoltEntry &boltEntry = _vm->_bVoy->boltEntry(_vm->_playStampGroupId + 1);
- if (!boltEntry._rectResource) {
- DebugPrintf("No hotspots available\n");
- } else {
+ if (boltEntry._rectResource) {
Common::Array<RectEntry> &hotspots = boltEntry._rectResource->_entries;
for (uint hotspotIdx = 0; hotspotIdx < hotspots.size(); ++hotspotIdx) {
@@ -130,7 +157,7 @@ bool Debugger::Cmd_Hotspots(int argc, const char **argv) {
}
}
- DebugPrintf("\n");
+ DebugPrintf("\nEnd of list\n");
return true;
}
diff --git a/engines/voyeur/events.cpp b/engines/voyeur/events.cpp
index 13fadd3ced..9a3c6d00ff 100644
--- a/engines/voyeur/events.cpp
+++ b/engines/voyeur/events.cpp
@@ -52,7 +52,6 @@ IntData::IntData() {
_hasPalette = false;
_flashTimer = 0;
_flashStep = 0;
- field26 = 0;
_skipFading = false;
_palStartIndex = 0;
_palEndIndex = 0;
@@ -83,6 +82,9 @@ EventsManager::EventsManager(VoyeurEngine *vm) : _intPtr(_gameData),
_fadeFirstCol = _fadeLastCol = 0;
_fadeCount = 1;
+
+ for (int i = 0; i < 4; i++)
+ _cycleNext[i] = nullptr;
}
void EventsManager::startMainClockInt() {
@@ -185,13 +187,9 @@ void EventsManager::showMousePosition() {
void EventsManager::voyeurTimer() {
_gameData._flashTimer += _gameData._flashStep;
- if (--_gameData.field26 <= 0) {
- if (_gameData._flipWait) {
- _gameData._flipWait = false;
- _gameData._skipFading = false;
- }
-
- _gameData.field26 >>= 8;
+ if (_gameData._flipWait) {
+ _gameData._flipWait = false;
+ _gameData._skipFading = false;
}
videoTimer();
@@ -268,18 +266,18 @@ void EventsManager::pollEvents() {
}
return;
case Common::EVENT_LBUTTONDOWN:
- _vm->_eventsManager->_newLeftClick = true;
- _vm->_eventsManager->_newMouseClicked = true;
+ _newLeftClick = true;
+ _newMouseClicked = true;
return;
case Common::EVENT_RBUTTONDOWN:
- _vm->_eventsManager->_newRightClick = true;
- _vm->_eventsManager->_newMouseClicked = true;
+ _newRightClick = true;
+ _newMouseClicked = true;
return;
case Common::EVENT_LBUTTONUP:
case Common::EVENT_RBUTTONUP:
- _vm->_eventsManager->_newMouseClicked = false;
- _vm->_eventsManager->_newLeftClick = false;
- _vm->_eventsManager->_newRightClick = false;
+ _newMouseClicked = false;
+ _newLeftClick = false;
+ _newRightClick = false;
return;
case Common::EVENT_MOUSEMOVE:
_mousePos = event.mouse;
@@ -526,8 +524,8 @@ void EventsManager::setCursor(PictureResource *pic) {
_vm->_graphicsManager->sDrawPic(pic, &cursor, Common::Point());
}
-void EventsManager::setCursor(byte *cursorData, int width, int height) {
- CursorMan.replaceCursor(cursorData, width, height, width / 2, height / 2, 0);
+void EventsManager::setCursor(byte *cursorData, int width, int height, int keyColor) {
+ CursorMan.replaceCursor(cursorData, width, height, width / 2, height / 2, keyColor);
}
void EventsManager::setCursorColor(int idx, int mode) {
@@ -576,13 +574,13 @@ void EventsManager::getMouseInfo() {
}
}
- _vm->_eventsManager->_mouseClicked = _vm->_eventsManager->_newMouseClicked;
- _vm->_eventsManager->_leftClick = _vm->_eventsManager->_newLeftClick;
- _vm->_eventsManager->_rightClick = _vm->_eventsManager->_newRightClick;
+ _mouseClicked = _newMouseClicked;
+ _leftClick = _newLeftClick;
+ _rightClick = _newRightClick;
- _vm->_eventsManager->_newMouseClicked = false;
- _vm->_eventsManager->_newLeftClick = false;
- _vm->_eventsManager->_newRightClick = false;
+ _newMouseClicked = false;
+ _newLeftClick = false;
+ _newRightClick = false;
}
void EventsManager::startCursorBlink() {
diff --git a/engines/voyeur/events.h b/engines/voyeur/events.h
index 6f63ac09ee..5e0bfe6404 100644
--- a/engines/voyeur/events.h
+++ b/engines/voyeur/events.h
@@ -55,7 +55,6 @@ public:
bool _flipWait;
int _flashTimer;
int _flashStep;
- int field26;
bool _hasPalette;
bool _skipFading;
int _palStartIndex;
@@ -126,7 +125,7 @@ public:
void addFadeInt();
void setCursor(PictureResource *pic);
- void setCursor(byte *cursorData, int width, int height);
+ void setCursor(byte *cursorData, int width, int height, int keyColor);
void setCursorColor(int idx, int mode);
void showCursor();
void hideCursor();
diff --git a/engines/voyeur/files.cpp b/engines/voyeur/files.cpp
index 63551ce6b9..7369d9280e 100644
--- a/engines/voyeur/files.cpp
+++ b/engines/voyeur/files.cpp
@@ -29,7 +29,7 @@ namespace Voyeur {
#define BOLT_GROUP_SIZE 16
-BoltFilesState::BoltFilesState() {
+BoltFilesState::BoltFilesState(VoyeurEngine *vm) : _vm(vm) {
_curLibPtr = NULL;
_curGroupPtr = NULL;
_curMemberPtr = NULL;
@@ -174,20 +174,24 @@ void BoltFilesState::nextBlock() {
FilesManager::FilesManager(VoyeurEngine *vm) {
_curLibPtr = nullptr;
- _boltFilesState._vm = vm;
+ _boltFilesState = new BoltFilesState(vm);
+}
+
+FilesManager::~FilesManager() {
+ delete _boltFilesState;
}
bool FilesManager::openBoltLib(const Common::String &filename, BoltFile *&boltFile) {
if (boltFile != NULL) {
- _boltFilesState._curLibPtr = boltFile;
+ _boltFilesState->_curLibPtr = boltFile;
return true;
}
// Create the bolt file interface object and load the index
if (filename == "bvoy.blt")
- boltFile = _boltFilesState._curLibPtr = new BVoyBoltFile(_boltFilesState);
+ boltFile = _boltFilesState->_curLibPtr = new BVoyBoltFile(*_boltFilesState);
else if (filename == "stampblt.blt")
- boltFile = _boltFilesState._curLibPtr = new StampBoltFile(_boltFilesState);
+ boltFile = _boltFilesState->_curLibPtr = new StampBoltFile(*_boltFilesState);
else
error("Unknown bolt file specified");
@@ -239,7 +243,7 @@ BoltFile::~BoltFile() {
_state._curLibPtr = NULL;
}
-BoltGroup *BoltFile::getBoltGroup(uint16 id, bool process) {
+BoltGroup *BoltFile::getBoltGroup(uint16 id) {
_state._curLibPtr = this;
_state._curGroupPtr = &_groups[(id >> 8) & 0xff];
@@ -248,16 +252,11 @@ BoltGroup *BoltFile::getBoltGroup(uint16 id, bool process) {
_state._curGroupPtr->load(id & 0xff00);
}
- if (process) {
- // Pre-process the resources
- id &= 0xff00;
- for (int idx = 0; idx < _state._curGroupPtr->_count; ++idx, ++id) {
- byte *member = getBoltMember(id);
- assert(member);
- }
- } else if (!_state._curGroupPtr->_processed) {
- _state._curGroupPtr->_processed = true;
- _state._curGroupPtr->load(id & 0xff00);
+ // Pre-process the resources
+ id &= 0xff00;
+ for (int idx = 0; idx < _state._curGroupPtr->_count; ++idx, ++id) {
+ byte *member = getBoltMember(id);
+ assert(member);
}
resolveAll();
@@ -265,7 +264,7 @@ BoltGroup *BoltFile::getBoltGroup(uint16 id, bool process) {
return _state._curGroupPtr;
}
-void BoltFile::freeBoltGroup(uint16 id, bool freeEntries) {
+void BoltFile::freeBoltGroup(uint16 id) {
_state._curLibPtr = this;
_state._curGroupPtr = &_groups[(id >> 8) & 0xff];
@@ -475,7 +474,7 @@ void BVoyBoltFile::initViewPort() {
_state._curMemberPtr->_viewPortResource = viewPort = new ViewPortResource(_state, src);
// This is done post-constructor, since viewports can be self referential, so
- // we ned the _viewPortResource field to have been set before resolving the pointer
+ // we need the _viewPortResource field to have been set before resolving the pointer
viewPort->_parent = getBoltEntryFromLong(READ_LE_UINT32(src + 2))._viewPortResource;
}
@@ -487,7 +486,7 @@ void BVoyBoltFile::initViewPortList() {
_state, _state._curMemberPtr->_data);
_state._vm->_graphicsManager->_viewPortListPtr = res;
- _state._vm->_graphicsManager->_vPort = &res->_entries[0];
+ _state._vm->_graphicsManager->_vPort = res->_entries[0];
}
void BVoyBoltFile::initFontInfo() {
@@ -509,7 +508,7 @@ void BVoyBoltFile::sInitRect() {
_state._curMemberPtr->_data = _state.decompress(NULL, _state._curMemberPtr->_size,
_state._curMemberPtr->_mode);
- // Check whether the resouce Id is in the list of extended rects
+ // Check whether the resource Id is in the list of extended rects
bool isExtendedRects = false;
for (int i = 0; i < 49 && !isExtendedRects; ++i)
isExtendedRects = RESOLVE_TABLE[i] == (_state._curMemberPtr->_id & 0xff00);
@@ -688,8 +687,7 @@ void BoltEntry::load() {
*/
bool BoltEntry::hasResource() const {
return _rectResource || _picResource || _viewPortResource || _viewPortListResource
- || _fontResource || _fontInfoResource || _cMapResource
- || _vInitCycleResource
+ || _fontResource || _fontInfoResource || _cMapResource || _vInitCycleResource
|| _ptrResource || _controlResource || _stateResource || _threadResource;
}
@@ -744,12 +742,12 @@ RectResource::RectResource(int x1, int y1, int x2, int y2) {
DisplayResource::DisplayResource() {
_vm = NULL;
- _flags = 0;
+ _flags = DISPFLAG_NONE;
}
DisplayResource::DisplayResource(VoyeurEngine *vm) {
_vm = vm;
- _flags = 0;
+ _flags = DISPFLAG_NONE;
}
void DisplayResource::sFillBox(int width, int height) {
@@ -758,7 +756,7 @@ void DisplayResource::sFillBox(int width, int height) {
_vm->_graphicsManager->_saveBack = false;
PictureResource pr;
- pr._flags = 1;
+ pr._flags = DISPFLAG_1;
pr._select = 0xff;
pr._pick = 0;
pr._onOff = _vm->_graphicsManager->_drawPtr->_penColor;
@@ -852,7 +850,7 @@ int DisplayResource::drawText(const Common::String &msg) {
break;
}
- if (!(fontInfo._fontFlags & 3)) {
+ if (!(fontInfo._fontFlags & (DISPFLAG_1 | DISPFLAG_2))) {
viewPort->_fontRect.left = xp;
viewPort->_fontRect.top = yp;
viewPort->_fontRect.setWidth(msgWidth);
@@ -867,7 +865,7 @@ int DisplayResource::drawText(const Common::String &msg) {
pos.x = xp;
pos.y = yp;
- if (fontInfo._fontFlags & 4) {
+ if (fontInfo._fontFlags & DISPFLAG_4) {
if (fontInfo._shadow.x <= 0) {
viewPort->_fontRect.left += fontInfo._shadow.x;
viewPort->_fontRect.right -= fontInfo._shadow.x * 2;
@@ -948,7 +946,7 @@ int DisplayResource::drawText(const Common::String &msg) {
if (i != 0) {
fontChar._pick = 0;
fontChar._onOff = fontInfo._shadowColor;
- } else if (fontData._fontDepth == 1 || (fontInfo._fontFlags & 0x10)) {
+ } else if (fontData._fontDepth == 1 || (fontInfo._fontFlags & DISPFLAG_10)) {
fontChar._pick = 0;
fontChar._onOff = fontInfo._foreColor;
} else {
@@ -1036,6 +1034,7 @@ PictureResource::PictureResource(BoltFilesState &state, const byte *src):
_maskData = READ_LE_UINT32(&src[14]);
_planeSize = READ_LE_UINT16(&src[22]);
+ _keyColor = 0;
_imgData = NULL;
_freeImgData = DisposeAfterUse::YES;
@@ -1125,12 +1124,13 @@ PictureResource::PictureResource(BoltFilesState &state, const byte *src):
}
PictureResource::PictureResource(Graphics::Surface *surface) {
- _flags = 0;
+ _flags = DISPFLAG_NONE;
_select = 0;
_pick = 0;
_onOff = 0;
_maskData = 0;
_planeSize = 0;
+ _keyColor = 0;
_bounds = Common::Rect(0, 0, surface->w, surface->h);
_imgData = (byte *)surface->getPixels();
@@ -1138,12 +1138,13 @@ PictureResource::PictureResource(Graphics::Surface *surface) {
}
PictureResource::PictureResource() {
- _flags = 0;
+ _flags = DISPFLAG_NONE;
_select = 0;
_pick = 0;
_onOff = 0;
_maskData = 0;
_planeSize = 0;
+ _keyColor = 0;
_imgData = NULL;
_freeImgData = DisposeAfterUse::NO;
@@ -1160,6 +1161,7 @@ PictureResource::PictureResource(int flags, int select, int pick, int onOff,
_imgData = imgData;
_planeSize = planeSize;
_freeImgData = DisposeAfterUse::NO;
+ _keyColor = 0;
}
PictureResource::~PictureResource() {
@@ -1353,21 +1355,21 @@ void ViewPortResource::fillPic(byte onOff) {
void ViewPortResource::drawIfaceTime() {
// Hour display
- _state._vm->_graphicsManager->drawANumber(*_state._vm->_graphicsManager->_vPort,
+ _state._vm->_graphicsManager->drawANumber(_state._vm->_graphicsManager->_vPort,
(_state._vm->_gameHour / 10) == 0 ? 10 : _state._vm->_gameHour / 10,
Common::Point(161, 25));
- _state._vm->_graphicsManager->drawANumber(*_state._vm->_graphicsManager->_vPort,
+ _state._vm->_graphicsManager->drawANumber(_state._vm->_graphicsManager->_vPort,
_state._vm->_gameHour % 10, Common::Point(172, 25));
// Minute display
- _state._vm->_graphicsManager->drawANumber(*_state._vm->_graphicsManager->_vPort,
+ _state._vm->_graphicsManager->drawANumber(_state._vm->_graphicsManager->_vPort,
_state._vm->_gameMinute / 10, Common::Point(190, 25));
- _state._vm->_graphicsManager->drawANumber(*_state._vm->_graphicsManager->_vPort,
+ _state._vm->_graphicsManager->drawANumber(_state._vm->_graphicsManager->_vPort,
_state._vm->_gameMinute % 10, Common::Point(201, 25));
// AM/PM indicator
PictureResource *pic = _state._vm->_bVoy->boltEntry(_state._vm->_voy->_isAM ? 272 : 273)._picResource;
- _state._vm->_graphicsManager->sDrawPic(pic, *_state._vm->_graphicsManager->_vPort,
+ _state._vm->_graphicsManager->sDrawPic(pic, _state._vm->_graphicsManager->_vPort,
Common::Point(215, 27));
}
@@ -1471,11 +1473,11 @@ FontInfoResource::FontInfoResource(BoltFilesState &state, const byte *src) {
FontInfoResource::FontInfoResource() {
_curFont = NULL;
- _picFlags = 3;
+ _picFlags = DISPFLAG_1 | DISPFLAG_2;
_picSelect = 0xff;
_picPick = 0xff;
_picOnOff = 0;
- _fontFlags = 0;
+ _fontFlags = DISPFLAG_NONE;
_justify = ALIGN_LEFT;
_fontSaveBack = 0;
_justifyWidth = 1;
diff --git a/engines/voyeur/files.h b/engines/voyeur/files.h
index 72fad52d32..49c0b2c8a4 100644
--- a/engines/voyeur/files.h
+++ b/engines/voyeur/files.h
@@ -82,7 +82,7 @@ public:
byte *_boltPageFrame;
public:
- BoltFilesState();
+ BoltFilesState(VoyeurEngine *vm);
byte *decompress(byte *buf, int size, int mode);
void nextBlock();
@@ -106,8 +106,8 @@ public:
BoltFile(const Common::String &filename, BoltFilesState &state);
virtual ~BoltFile();
- BoltGroup *getBoltGroup(uint16 id, bool process = true);
- void freeBoltGroup(uint16 id, bool freeEntries = true);
+ BoltGroup *getBoltGroup(uint16 id);
+ void freeBoltGroup(uint16 id);
void freeBoltMember(uint32 id);
byte *memberAddr(uint32 id);
byte *memberAddrOffset(uint32 id);
@@ -204,13 +204,14 @@ public:
class FilesManager {
public:
- BoltFilesState _boltFilesState;
+ BoltFilesState *_boltFilesState;
BoltFile *_curLibPtr;
public:
FilesManager(VoyeurEngine *vm);
+ ~FilesManager();
bool openBoltLib(const Common::String &filename, BoltFile *&boltFile);
- byte *fload(const Common::String &filename, int *size = NULL);
+ byte *fload(const Common::String &filename, int *size);
};
class RectEntry: public Common::Rect {
@@ -230,11 +231,21 @@ public:
virtual ~RectResource() {}
};
-enum DisplayFlag { DISPFLAG_1 = 1, DISPFLAG_2 = 2, DISPFLAG_4 = 4, DISPFLAG_8 = 8,
+/* bvoy.blt resource types */
+
+enum PictureFlag {
+ PICFLAG_2 = 2, PICFLAG_PIC_OFFSET = 8, PICFLAG_CLEAR_SCREEN = 0x10,
+ PICFLAG_20 = 0x20, PICFLAG_HFLIP = 0x40, PICFLAG_VFLIP = 0x80, PICFLAG_100 = 0x100,
+ PICFLAG_CLEAR_SCREEN00 = 0x1000
+};
+
+enum DisplayFlag {
+ DISPFLAG_1 = 1, DISPFLAG_2 = 2, DISPFLAG_4 = 4, DISPFLAG_8 = 8,
DISPFLAG_10 = 0x10, DISPFLAG_20 = 0x20, DISPFLAG_40 = 0x40, DISPFLAG_80 = 0x80,
DISPFLAG_100 = 0x100, DISPFLAG_200 = 0x200, DISPFLAG_400 = 0x400,
DISPFLAG_800 = 0x800, DISPFLAG_1000 = 0x1000, DISPFLAG_2000 = 0x2000,
- DISPFLAG_4000 = 0x4000, DISPFLAG_VIEWPORT = 0x8000, DISPFLAG_CURSOR = 0x10000 };
+ DISPFLAG_4000 = 0x4000, DISPFLAG_VIEWPORT = 0x8000, DISPFLAG_CURSOR = 0x10000,
+ DISPFLAG_NONE = 0};
class DisplayResource {
private:
@@ -266,13 +277,6 @@ public:
bool clipRect(Common::Rect &rect);
};
-/* bvoy.blt resource types */
-
-enum PictureFlag { PICFLAG_2 = 2, PICFLAG_PIC_OFFSET = 8, PICFLAG_CLEAR_SCREEN = 0x10,
- PICFLAG_20 = 0x20, PICFLAG_HFLIP = 0x40, PICFLAG_VFLIP = 0x80, PICFLAG_100 = 0x100,
- PICFLAG_CLEAR_SCREEN00 = 0x1000
-};
-
class PictureResource: public DisplayResource {
private:
/**
@@ -291,6 +295,7 @@ public:
Common::Rect _bounds;
uint32 _maskData;
uint _planeSize;
+ byte _keyColor;
/**
* Image data for the picture
@@ -347,7 +352,7 @@ public:
void setupViewPort();
void setupViewPort(PictureResource *pic, Common::Rect *clippingRect = NULL);
void addSaveRect(int pageIndex, const Common::Rect &r);
- void fillPic(byte onOff = 0);
+ void fillPic(byte onOff);
void drawIfaceTime();
void drawPicPerm(PictureResource *pic, const Common::Point &pt);
};
diff --git a/engines/voyeur/files_threads.cpp b/engines/voyeur/files_threads.cpp
index 603eb64a35..700944f7ef 100644
--- a/engines/voyeur/files_threads.cpp
+++ b/engines/voyeur/files_threads.cpp
@@ -86,6 +86,9 @@ bool ThreadResource::loadAStack(int stackId) {
}
void ThreadResource::unloadAStack(int stackId) {
+ if (stackId < 0)
+ return;
+
if ((_vm->_stampFlags & 1) && _useCount[stackId]) {
if (--_useCount[stackId] == 0) {
_vm->_stampLibPtr->freeBoltMember(_vm->_controlPtr->_memberIds[stackId]);
@@ -458,7 +461,7 @@ void ThreadResource::parsePlayCommands() {
pic = _vm->_bVoy->boltEntry(_vm->_playStampGroupId + i * 2)._picResource;
pal = _vm->_bVoy->boltEntry(_vm->_playStampGroupId + i * 2 + 1)._cMapResource;
- (*_vm->_graphicsManager->_vPort)->setupViewPort(pic);
+ _vm->_graphicsManager->_vPort->setupViewPort(pic);
pal->startFade();
_vm->flipPageAndWaitForFade();
@@ -622,14 +625,14 @@ void ThreadResource::parsePlayCommands() {
v2 = READ_LE_UINT16(dataP);
if (v2 == 0 || _vm->_controlPtr->_state->_victimIndex == v2) {
- _vm->_voy->_computerTextId = READ_LE_UINT16(dataP + 2);
+ _vm->_voy->_computerTextId = READ_LE_UINT16(dataP + 2) - 1;
_vm->_voy->_computerTimeMin = READ_LE_UINT16(dataP + 4);
_vm->_voy->_computerTimeMax = READ_LE_UINT16(dataP + 6);
- _vm->_voy->_rect4E4.left = COMP_BUT_TABLE[_vm->_voy->_computerTextId * 4];
- _vm->_voy->_rect4E4.top = COMP_BUT_TABLE[_vm->_voy->_computerTextId * 4 + 1];
- _vm->_voy->_rect4E4.right = COMP_BUT_TABLE[_vm->_voy->_computerTextId * 4 + 2];
- _vm->_voy->_rect4E4.bottom = COMP_BUT_TABLE[_vm->_voy->_computerTextId * 4 + 3];
+ _vm->_voy->_computerScreenRect.left = COMPUTER_SCREEN_TABLE[_vm->_voy->_computerTextId * 4];
+ _vm->_voy->_computerScreenRect.top = COMPUTER_SCREEN_TABLE[_vm->_voy->_computerTextId * 4 + 1];
+ _vm->_voy->_computerScreenRect.right = COMPUTER_SCREEN_TABLE[_vm->_voy->_computerTextId * 4 + 2];
+ _vm->_voy->_computerScreenRect.bottom = COMPUTER_SCREEN_TABLE[_vm->_voy->_computerTextId * 4 + 3];
}
dataP += 8;
@@ -984,6 +987,14 @@ int ThreadResource::doApt() {
_vm->_eventsManager->_intPtr._hasPalette = true;
+ // Set up the cursors
+ PictureResource *unselectedCursor = _vm->_bVoy->boltEntry(_vm->_playStampGroupId + 2)._picResource;
+ PictureResource *selectedCursor = _vm->_bVoy->boltEntry(_vm->_playStampGroupId + 3)._picResource;
+ unselectedCursor->_keyColor = 0xff;
+ selectedCursor->_keyColor = 0xff;
+ _vm->_eventsManager->setCursor(unselectedCursor);
+ _vm->_eventsManager->showCursor();
+
// Main loop to allow users to move the cursor and select hotspots
int hotspotId;
int prevHotspotId = -1;
@@ -1009,7 +1020,7 @@ int ThreadResource::doApt() {
// Loop through the hotspot list
hotspotId = -1;
- pt = _vm->_eventsManager->getMousePos();
+ pt = _vm->_eventsManager->getMousePos() + Common::Point(16, 16);
for (int idx = 0; idx < (int)hotspots.size(); ++idx) {
if (hotspots[idx].contains(pt)) {
// Cursor is within hotspot area
@@ -1030,7 +1041,7 @@ int ThreadResource::doApt() {
// Draw the text description for the highlighted hotspot
pic = _vm->_bVoy->boltEntry(_vm->_playStampGroupId +
hotspotId + 6)._picResource;
- _vm->_graphicsManager->sDrawPic(pic, *_vm->_graphicsManager->_vPort,
+ _vm->_graphicsManager->sDrawPic(pic, _vm->_graphicsManager->_vPort,
Common::Point(106, 200));
}
@@ -1042,11 +1053,8 @@ int ThreadResource::doApt() {
if (gmmHotspot.contains(pt))
hotspotId = 42;
- // Draw either standard or highlighted eye cursor
- pic = _vm->_bVoy->boltEntry((hotspotId == -1) ? _vm->_playStampGroupId + 2 :
- _vm->_playStampGroupId + 3)._picResource;
- _vm->_graphicsManager->sDrawPic(pic, *_vm->_graphicsManager->_vPort, pt);
-
+ // Update the cursor to either standard or highlighted eye cursor
+ _vm->_eventsManager->setCursor((hotspotId == -1) ? unselectedCursor : selectedCursor);
_vm->flipPageAndWait();
if (hotspotId == 42 && _vm->_eventsManager->_leftClick) {
@@ -1057,6 +1065,7 @@ int ThreadResource::doApt() {
} while (!_vm->shouldQuit() && (!_vm->_eventsManager->_leftClick || hotspotId == -1));
+ _vm->_eventsManager->hideCursor();
pt = _vm->_eventsManager->getMousePos();
_aptPos.x = pt.x;
_aptPos.y = pt.y;
@@ -1079,6 +1088,7 @@ int ThreadResource::doApt() {
}
freeTheApt();
+
if (_vm->_voy->_transitionId == 1 && hotspotId == 0)
_vm->checkTransition();
@@ -1095,12 +1105,12 @@ void ThreadResource::doRoom() {
vm.makeViewFinderP();
voy._fadingType = 0;
- if (!vm._bVoy->getBoltGroup(vm._playStampGroupId, true))
+ if (!vm._bVoy->getBoltGroup(vm._playStampGroupId))
return;
vm._graphicsManager->_backColors = vm._bVoy->boltEntry(vm._playStampGroupId + 1)._cMapResource;
vm._graphicsManager->_backgroundPage = vm._bVoy->boltEntry(vm._playStampGroupId)._picResource;
- (*vm._graphicsManager->_vPort)->setupViewPort(vm._graphicsManager->_backgroundPage);
+ vm._graphicsManager->_vPort->setupViewPort(vm._graphicsManager->_backgroundPage);
vm._graphicsManager->_backColors->startFade();
voy._fadingStep1 = 2;
@@ -1145,7 +1155,8 @@ void ThreadResource::doRoom() {
pt += Common::Point(30, 15);
hotspotId = -1;
- if (voy._computerTextId != -1 && voy._rect4E4.contains(pt))
+
+ if (voy._computerTextId != -1 && voy._computerScreenRect.contains(pt))
hotspotId = 999;
for (uint idx = 0; idx < hotspots.size(); ++idx) {
@@ -1224,7 +1235,7 @@ void ThreadResource::doRoom() {
vm._graphicsManager->_backgroundPage = vm._bVoy->boltEntry(
vm._playStampGroupId)._picResource;
- (*vm._graphicsManager->_vPort)->setupViewPort();
+ vm._graphicsManager->_vPort->setupViewPort();
vm._graphicsManager->_backColors->startFade();
_vm->flipPageAndWait();
@@ -1263,7 +1274,7 @@ void ThreadResource::doRoom() {
vm.makeViewFinderP();
if (voy._boltGroupId2 != -1) {
- vm._bVoy->freeBoltGroup(voy._boltGroupId2, 1);
+ vm._bVoy->freeBoltGroup(voy._boltGroupId2);
voy._boltGroupId2 = -1;
}
@@ -1299,12 +1310,13 @@ int ThreadResource::doInterface() {
if (_vm->_voy->_RTVNum >= _vm->_voy->_RTVLimit || _vm->_voy->_RTVNum < 0)
_vm->_voy->_RTVNum = _vm->_voy->_RTVLimit - 1;
- if (_vm->_voy->_transitionId < 15 && _vm->_debugger->_isTimeActive &&
- (_vm->_voy->_RTVLimit - 3) < _vm->_voy->_RTVNum) {
+ if (_vm->_voy->_transitionId < 15 && _vm->_debugger->_isTimeActive
+ && (_vm->_voy->_RTVLimit - 3) < _vm->_voy->_RTVNum) {
_vm->_voy->_RTVNum = _vm->_voy->_RTVLimit;
_vm->makeViewFinder();
_vm->initIFace();
+ _vm->_eventsManager->hideCursor();
_vm->_voy->_RTVNum = _vm->_voy->_RTVLimit - 4;
_vm->_voy->_eventFlags &= ~EVTFLAG_TIME_DISABLED;
@@ -1316,6 +1328,8 @@ int ThreadResource::doInterface() {
_vm->_voy->_eventFlags |= EVTFLAG_TIME_DISABLED;
chooseSTAMPButton(20);
parsePlayCommands();
+
+ _vm->_eventsManager->showCursor();
}
_vm->checkTransition();
@@ -1406,20 +1420,20 @@ int ThreadResource::doInterface() {
// Regularly update the time display
if (_vm->_voy->_RTANum & 2) {
- _vm->_graphicsManager->drawANumber(*_vm->_graphicsManager->_vPort,
+ _vm->_graphicsManager->drawANumber(_vm->_graphicsManager->_vPort,
_vm->_gameMinute / 10, Common::Point(190, 25));
- _vm->_graphicsManager->drawANumber(*_vm->_graphicsManager->_vPort,
+ _vm->_graphicsManager->drawANumber(_vm->_graphicsManager->_vPort,
_vm->_gameMinute % 10, Common::Point(201, 25));
if (_vm->_voy->_RTANum & 4) {
int v = _vm->_gameHour / 10;
- _vm->_graphicsManager->drawANumber(*_vm->_graphicsManager->_vPort,
+ _vm->_graphicsManager->drawANumber(_vm->_graphicsManager->_vPort,
v == 0 ? 10 : v, Common::Point(161, 25));
- _vm->_graphicsManager->drawANumber(*_vm->_graphicsManager->_vPort,
+ _vm->_graphicsManager->drawANumber(_vm->_graphicsManager->_vPort,
_vm->_gameHour % 10, Common::Point(172, 25));
pic = _vm->_bVoy->boltEntry(_vm->_voy->_isAM ? 272 : 273)._picResource;
- _vm->_graphicsManager->sDrawPic(pic, *_vm->_graphicsManager->_vPort,
+ _vm->_graphicsManager->sDrawPic(pic, _vm->_graphicsManager->_vPort,
Common::Point(215, 27));
}
}
@@ -1587,13 +1601,13 @@ void ThreadResource::loadTheApt() {
_vm->_voy->_aptLoadMode = -1;
_vm->_graphicsManager->_backgroundPage = _vm->_bVoy->boltEntry(
_vm->_playStampGroupId + 5)._picResource;
- (*_vm->_graphicsManager->_vPort)->setupViewPort(
+ _vm->_graphicsManager->_vPort->setupViewPort(
_vm->_graphicsManager->_backgroundPage);
} else {
_vm->_bVoy->getBoltGroup(_vm->_playStampGroupId);
_vm->_graphicsManager->_backgroundPage = _vm->_bVoy->boltEntry(
_vm->_playStampGroupId + 5)._picResource;
- (*_vm->_graphicsManager->_vPort)->setupViewPort(
+ _vm->_graphicsManager->_vPort->setupViewPort(
_vm->_graphicsManager->_backgroundPage);
}
@@ -1625,14 +1639,14 @@ void ThreadResource::freeTheApt() {
_vm->_graphicsManager->resetPalette();
}
- (*_vm->_graphicsManager->_vPort)->setupViewPort(nullptr);
+ _vm->_graphicsManager->_vPort->setupViewPort(nullptr);
_vm->_bVoy->freeBoltGroup(_vm->_playStampGroupId);
_vm->_playStampGroupId = -1;
_vm->_voy->_viewBounds = nullptr;
}
void ThreadResource::doAptAnim(int mode) {
- _vm->_bVoy->freeBoltGroup(0x100, true);
+ _vm->_bVoy->freeBoltGroup(0x100);
// Figure out the resource to use
int id = 0;
@@ -1685,7 +1699,7 @@ void ThreadResource::doAptAnim(int mode) {
for (int idx = 0; (idx < 6) && !_vm->shouldQuit(); ++idx) {
PictureResource *pic = _vm->_bVoy->boltEntry(id + idx + 1)._picResource;
- (*_vm->_graphicsManager->_vPort)->setupViewPort(pic);
+ _vm->_graphicsManager->_vPort->setupViewPort(pic);
pal->startFade();
_vm->flipPageAndWait();
diff --git a/engines/voyeur/graphics.cpp b/engines/voyeur/graphics.cpp
index ce5b91fb8a..f756b9cc85 100644
--- a/engines/voyeur/graphics.cpp
+++ b/engines/voyeur/graphics.cpp
@@ -48,7 +48,7 @@ GraphicsManager::GraphicsManager(VoyeurEngine *vm) : _defaultDrawInfo(1, Common:
_vPort = NULL;
_fontPtr = NULL;
Common::fill(&_VGAColors[0], &_VGAColors[PALETTE_SIZE], 0);
- _fontChar = new PictureResource(0, 0xff, 0xff, 0, Common::Rect(), 0, NULL, 0);
+ _fontChar = new PictureResource(DISPFLAG_NONE, 0xff, 0xff, 0, Common::Rect(), 0, NULL, 0);
_backColors = nullptr;
}
@@ -65,7 +65,7 @@ GraphicsManager::~GraphicsManager() {
void GraphicsManager::setupMCGASaveRect(ViewPortResource *viewPort) {
if (viewPort->_activePage) {
- viewPort->_activePage->_flags |= 1;
+ viewPort->_activePage->_flags |= DISPFLAG_1;
Common::Rect *clipRect = _clipPtr;
_clipPtr = &viewPort->_clipRect;
@@ -219,7 +219,7 @@ void GraphicsManager::sDrawPic(DisplayResource *srcDisplay, DisplayResource *des
widthDiff2 = destPic->_bounds.width() - width2;
if (destViewPort) {
- if (!_saveBack || ((srcPic->_flags & DISPFLAG_800) != 0)) {
+ if (!_saveBack || (srcPic->_flags & DISPFLAG_800)) {
backBounds.left = destPic->_bounds.left + offset.x;
backBounds.top = destPic->_bounds.top + offset.y;
backBounds.setWidth(width2);
@@ -548,8 +548,8 @@ void GraphicsManager::sDrawPic(DisplayResource *srcDisplay, DisplayResource *des
} else {
// loc_26673
- int pick = srcPic->_pick;
- int onOff = srcPic->_onOff;
+ byte pick = srcPic->_pick;
+ byte onOff = srcPic->_onOff;
if (!(srcFlags & PICFLAG_PIC_OFFSET)) {
srcP = srcImgData += srcOffset;
@@ -845,7 +845,7 @@ void GraphicsManager::sDrawPic(DisplayResource *srcDisplay, DisplayResource *des
}
if (cursorData) {
- _vm->_eventsManager->setCursor(cursorData, width2, height1);
+ _vm->_eventsManager->setCursor(cursorData, width2, height1, srcPic->_keyColor);
delete[] cursorData;
}
}
@@ -864,7 +864,7 @@ void GraphicsManager::fillPic(DisplayResource *display, byte onOff) {
}
PictureResource picResource;
- picResource._flags = 0;
+ picResource._flags = DISPFLAG_NONE;
picResource._select = 0xff;
picResource._pick = 0;
picResource._onOff = onOff;
@@ -991,8 +991,8 @@ void GraphicsManager::screenReset() {
resetPalette();
_backgroundPage = NULL;
- (*_vPort)->setupViewPort(NULL);
- fillPic(*_vPort, 0);
+ _vPort->setupViewPort(NULL);
+ fillPic(_vPort, 0);
_vm->flipPageAndWait();
}
diff --git a/engines/voyeur/graphics.h b/engines/voyeur/graphics.h
index f736c8a7f9..221d31061d 100644
--- a/engines/voyeur/graphics.h
+++ b/engines/voyeur/graphics.h
@@ -66,7 +66,7 @@ public:
PictureResource *_backgroundPage;
int _SVGAMode;
ViewPortListResource *_viewPortListPtr;
- ViewPortResource **_vPort;
+ ViewPortResource *_vPort;
bool _saveBack;
Common::Rect *_clipPtr;
uint _planeSelect;
@@ -91,7 +91,7 @@ public:
void addRectNoSaveBack(ViewPortResource *viewPort, int idx, const Common::Rect &bounds);
void sDrawPic(DisplayResource *srcDisplay, DisplayResource *destDisplay, const Common::Point &initialOffset);
- void fillPic(DisplayResource *display, byte onOff = 0);
+ void fillPic(DisplayResource *display, byte onOff);
void sDisplayPic(PictureResource *pic);
void drawANumber(DisplayResource *display, int num, const Common::Point &pt);
void flipPage();
diff --git a/engines/voyeur/sound.cpp b/engines/voyeur/sound.cpp
index ae10b2d4d9..26145bd743 100644
--- a/engines/voyeur/sound.cpp
+++ b/engines/voyeur/sound.cpp
@@ -28,7 +28,7 @@
namespace Voyeur {
- SoundManager::SoundManager(VoyeurEngine *vm, Audio::Mixer *mixer) : _vm(vm) {
+ SoundManager::SoundManager(Audio::Mixer *mixer) {
_mixer = mixer;
_vocOffset = 0;
}
diff --git a/engines/voyeur/sound.h b/engines/voyeur/sound.h
index fc2d3047eb..af1d0b1b46 100644
--- a/engines/voyeur/sound.h
+++ b/engines/voyeur/sound.h
@@ -33,12 +33,11 @@ namespace Voyeur {
class SoundManager {
private:
- VoyeurEngine *_vm;
Audio::Mixer *_mixer;
Audio::SoundHandle _soundHandle;
int _vocOffset;
public:
- SoundManager(VoyeurEngine *vm, Audio::Mixer *mixer);
+ SoundManager(Audio::Mixer *mixer);
void playVOCMap(byte *voc, int vocSize);
void stopVOCPlay();
diff --git a/engines/voyeur/staticres.cpp b/engines/voyeur/staticres.cpp
index 27ed5db71f..7016793ddc 100644
--- a/engines/voyeur/staticres.cpp
+++ b/engines/voyeur/staticres.cpp
@@ -57,7 +57,7 @@ const int BLIND_TABLE[] = {
5, 12, 6, 6, 13, 14, 13
};
-const int COMP_BUT_TABLE[] = {
+const int COMPUTER_SCREEN_TABLE[] = {
269, 128, 307, 163,
269, 128, 307, 163,
68, 79, 98, 102,
diff --git a/engines/voyeur/staticres.h b/engines/voyeur/staticres.h
index da292e1885..ea3a8003ac 100644
--- a/engines/voyeur/staticres.h
+++ b/engines/voyeur/staticres.h
@@ -37,7 +37,7 @@ extern const int LEVEL_M[];
extern const int BLIND_TABLE[];
-extern const int COMP_BUT_TABLE[];
+extern const int COMPUTER_SCREEN_TABLE[];
extern const char *const SZ_FILENAMES[];
diff --git a/engines/voyeur/voyeur.cpp b/engines/voyeur/voyeur.cpp
index e1891454ef..9843930bd3 100644
--- a/engines/voyeur/voyeur.cpp
+++ b/engines/voyeur/voyeur.cpp
@@ -71,8 +71,17 @@ VoyeurEngine::VoyeurEngine(OSystem *syst, const VoyeurGameDescription *gameDesc)
_eventsManager = new EventsManager(this);
_filesManager = new FilesManager(this);
_graphicsManager = new GraphicsManager(this);
- _soundManager = new SoundManager(this, _mixer);
+ _soundManager = new SoundManager(_mixer);
_voy = new SVoy(this);
+
+ _stampLibPtr = nullptr;
+ _controlGroupPtr = nullptr;
+ _stampData = nullptr;
+ _stackGroupPtr = nullptr;
+ _glGoState = -1;
+ _glGoStack = -1;
+ _resolvePtr = nullptr;
+ _mainThread = nullptr;
}
VoyeurEngine::~VoyeurEngine() {
@@ -205,7 +214,7 @@ bool VoyeurEngine::doHeadTitle() {
void VoyeurEngine::showConversionScreen() {
_graphicsManager->_backgroundPage = _bVoy->boltEntry(0x502)._picResource;
- (*_graphicsManager->_vPort)->setupViewPort();
+ _graphicsManager->_vPort->setupViewPort();
flipPageAndWait();
// Immediate palette load to show the initial screen
@@ -238,22 +247,19 @@ bool VoyeurEngine::doLock() {
byte *wrongVoc = _filesManager->fload("wrong.voc", &wrongVocSize);
if (_bVoy->getBoltGroup(0x700)) {
- _voy->_viewBounds = _bVoy->boltEntry(0x704)._rectResource;
-
Common::String password = "3333";
- PictureResource *cursorPic = _bVoy->getPictureResource(0x702);
- assert(cursorPic);
- // Get the mappings of keys on the keypad
- byte *keyData = _bVoy->memberAddr(0x705);
- int keyCount = READ_LE_UINT16(keyData);
-
- _graphicsManager->_backColors = _bVoy->getCMapResource(0x7010000);
_graphicsManager->_backgroundPage = _bVoy->getPictureResource(0x700);
- (*_graphicsManager->_vPort)->setupViewPort();
+ _graphicsManager->_backColors = _bVoy->getCMapResource(0x701);
+ PictureResource *cursorPic = _bVoy->getPictureResource(0x702);
+ _voy->_viewBounds = _bVoy->boltEntry(0x704)._rectResource;
+ Common::Array<RectEntry> &hotspots = _bVoy->boltEntry(0x705)._rectResource->_entries;
+
+ assert(cursorPic);
+ _graphicsManager->_vPort->setupViewPort();
_graphicsManager->_backColors->startFade();
- (*_graphicsManager->_vPort)->_parent->_flags |= DISPFLAG_8;
+ _graphicsManager->_vPort->_parent->_flags |= DISPFLAG_8;
_graphicsManager->flipPage();
_eventsManager->sWaitFlip();
@@ -274,16 +280,15 @@ bool VoyeurEngine::doLock() {
_graphicsManager->_fontPtr->_curFont = _bVoy->boltEntry(0x708)._fontResource;
_graphicsManager->_fontPtr->_fontSaveBack = 0;
- _graphicsManager->_fontPtr->_fontFlags = 0;
+ _graphicsManager->_fontPtr->_fontFlags = DISPFLAG_NONE;
Common::String dateString = "ScummVM";
Common::String displayString = Common::String::format("Last Play %s", dateString.c_str());
bool firstLoop = true;
bool breakFlag = false;
- bool flag = false;
while (!breakFlag && !shouldQuit()) {
- (*_graphicsManager->_vPort)->setupViewPort();
+ _graphicsManager->_vPort->setupViewPort();
flipPageAndWait();
// Display the last play time
@@ -292,7 +297,7 @@ bool VoyeurEngine::doLock() {
_graphicsManager->_fontPtr->_justifyWidth = 384;
_graphicsManager->_fontPtr->_justifyHeight = 97;
- (*_graphicsManager->_vPort)->drawText(displayString);
+ _graphicsManager->_vPort->drawText(displayString);
flipPageAndWait();
if (firstLoop) {
@@ -306,17 +311,13 @@ bool VoyeurEngine::doLock() {
do {
// Scan through the list of key rects to check if a keypad key is highlighted
key = -1;
- Common::Point mousePos = _eventsManager->getMousePos() +
- Common::Point(30, 20);
+ Common::Point mousePos = _eventsManager->getMousePos() + Common::Point(20, 10);
- for (int keyIndex = 0; keyIndex < keyCount; ++keyIndex) {
- int x1 = READ_LE_UINT16(keyData + (((keyIndex << 2) + 1) << 1));
- int x2 = READ_LE_UINT16(keyData + (((keyIndex << 2) + 3) << 1));
- int y1 = READ_LE_UINT16(keyData + (((keyIndex << 2) + 2) << 1));
- int y2 = READ_LE_UINT16(keyData + (((keyIndex << 2) + 4) << 1));
-
- if (mousePos.x >= x1 && mousePos.x <= x2 && mousePos.y >= y1 && mousePos.y <= y2) {
+ int keyCount = hotspots.size();
+ for (int keyIndex = 0; keyIndex < keyCount; ++keyIndex) {
+ if (hotspots[keyIndex].contains(mousePos)) {
key = keyIndex;
+ break;
}
}
@@ -324,6 +325,7 @@ bool VoyeurEngine::doLock() {
_eventsManager->_intPtr._hasPalette = true;
_eventsManager->delay(1);
+ _eventsManager->getMouseInfo();
} while (!shouldQuit() && !_eventsManager->_mouseClicked);
_eventsManager->_mouseClicked = false;
} while (!shouldQuit() && key == -1);
@@ -346,24 +348,16 @@ bool VoyeurEngine::doLock() {
}
} else if (key == 10) {
// Accept key
- if (!flag) {
- if ((password.empty() && displayString.empty()) || (password == displayString)) {
- breakFlag = true;
- result = true;
- break;
- }
- } else {
- if (displayString.size() > 0) {
- result = true;
- breakFlag = true;
- break;
- }
+ if ((password.empty() && displayString.empty()) || (password == displayString)) {
+ breakFlag = true;
+ result = true;
+ break;
}
} else if (key == 11) {
// New code
if ((password.empty() && displayString.empty()) || (password != displayString)) {
- (*_graphicsManager->_vPort)->setupViewPort();
- flag = true;
+ _graphicsManager->_vPort->setupViewPort();
+ password = displayString;
displayString = "";
continue;
}
@@ -379,7 +373,7 @@ bool VoyeurEngine::doLock() {
_soundManager->playVOCMap(wrongVoc, wrongVocSize);
}
- _graphicsManager->fillPic(*_graphicsManager->_vPort);
+ _graphicsManager->fillPic(_graphicsManager->_vPort, 0);
flipPageAndWait();
_graphicsManager->resetPalette();
@@ -396,47 +390,52 @@ bool VoyeurEngine::doLock() {
}
void VoyeurEngine::showTitleScreen() {
- if (_bVoy->getBoltGroup(0x500)) {
- _graphicsManager->_backgroundPage = _bVoy->getPictureResource(0x500);
-
- (*_graphicsManager->_vPort)->setupViewPort();
- flipPageAndWait();
+ if (!_bVoy->getBoltGroup(0x500))
+ return;
- // Immediate palette load to show the initial screen
- CMapResource *cMap = _bVoy->getCMapResource(0x501);
- assert(cMap);
- cMap->_steps = 60;
- cMap->startFade();
+ _graphicsManager->_backgroundPage = _bVoy->getPictureResource(0x500);
- // Wait briefly
- _eventsManager->delayClick(200);
- if (shouldQuit())
- return;
-
- // Fade out the screen
- cMap = _bVoy->getCMapResource(0x504);
- cMap->_steps = 30;
- cMap->startFade();
+ _graphicsManager->_vPort->setupViewPort();
+ flipPageAndWait();
- flipPageAndWaitForFade();
- if (shouldQuit())
- return;
+ // Immediate palette load to show the initial screen
+ CMapResource *cMap = _bVoy->getCMapResource(0x501);
+ assert(cMap);
+ cMap->_steps = 60;
+ cMap->startFade();
- _graphicsManager->screenReset();
- _eventsManager->delayClick(200);
+ // Wait briefly
+ _eventsManager->delayClick(200);
+ if (shouldQuit()) {
+ _bVoy->freeBoltGroup(0x500);
+ return;
+ }
- // Voyeur title
- playRL2Video("a1100100.rl2");
- _graphicsManager->screenReset();
+ // Fade out the screen
+ cMap = _bVoy->getCMapResource(0x504);
+ cMap->_steps = 30;
+ cMap->startFade();
+ flipPageAndWaitForFade();
+ if (shouldQuit()) {
_bVoy->freeBoltGroup(0x500);
+ return;
}
+
+ _graphicsManager->screenReset();
+ _eventsManager->delayClick(200);
+
+ // Voyeur title
+ playRL2Video("a1100100.rl2");
+ _graphicsManager->screenReset();
+
+ _bVoy->freeBoltGroup(0x500);
}
void VoyeurEngine::doOpening() {
_graphicsManager->screenReset();
- if (!_bVoy->getBoltGroup(0x200, true))
+ if (!_bVoy->getBoltGroup(0x200))
return;
byte *frameTable = _bVoy->memberAddr(0x215);
@@ -463,11 +462,11 @@ void VoyeurEngine::doOpening() {
_graphicsManager->setColor(i, 8, 8, 8);
_eventsManager->_intPtr._hasPalette = true;
- (*_graphicsManager->_vPort)->setupViewPort();
+ _graphicsManager->_vPort->setupViewPort();
flipPageAndWait();
RL2Decoder decoder;
- decoder.loadFile("a2300100.rl2");
+ decoder.loadRL2File("a2300100.rl2", false);
decoder.start();
while (!shouldQuit() && !decoder.endOfVideo() && !_eventsManager->_mouseClicked) {
@@ -500,7 +499,7 @@ void VoyeurEngine::doOpening() {
}
if (textPic) {
- _graphicsManager->sDrawPic(textPic, *_graphicsManager->_vPort, textPos);
+ _graphicsManager->sDrawPic(textPic, _graphicsManager->_vPort, textPos);
flipPageAndWait();
}
}
@@ -521,7 +520,7 @@ void VoyeurEngine::doOpening() {
void VoyeurEngine::playRL2Video(const Common::String &filename) {
RL2Decoder decoder;
- decoder.loadFile(filename);
+ decoder.loadRL2File(filename, false);
decoder.start();
while (!shouldQuit() && !decoder.endOfVideo() && !_eventsManager->_mouseClicked) {
@@ -595,8 +594,8 @@ void VoyeurEngine::playAVideoDuration(int videoId, int duration) {
if (_voy->_eventFlags & EVTFLAG_8) {
assert(pic);
- byte *imgData = (*_graphicsManager->_vPort)->_currentPic->_imgData;
- (*_graphicsManager->_vPort)->_currentPic->_imgData = pic->_imgData;
+ byte *imgData = _graphicsManager->_vPort->_currentPic->_imgData;
+ _graphicsManager->_vPort->_currentPic->_imgData = pic->_imgData;
pic->_imgData = imgData;
_voy->_eventFlags &= ~EVTFLAG_8;
}
@@ -609,7 +608,7 @@ void VoyeurEngine::playAudio(int audioId) {
_graphicsManager->_backColors = _bVoy->boltEntry(0x7F01 +
BLIND_TABLE[audioId] * 2)._cMapResource;
- (*_graphicsManager->_vPort)->setupViewPort();
+ _graphicsManager->_vPort->setupViewPort();
_graphicsManager->_backColors->startFade();
flipPageAndWaitForFade();
@@ -629,7 +628,7 @@ void VoyeurEngine::playAudio(int audioId) {
_soundManager->stopVOCPlay();
_bVoy->freeBoltGroup(0x7F00);
- (*_graphicsManager->_vPort)->setupViewPort(NULL);
+ _graphicsManager->_vPort->setupViewPort(NULL);
_voy->_eventFlags &= ~EVTFLAG_RECORDING;
_voy->_playStampMode = 129;
@@ -640,13 +639,13 @@ void VoyeurEngine::doTransitionCard(const Common::String &time, const Common::St
_graphicsManager->setColor(224, 220, 220, 220);
_eventsManager->_intPtr._hasPalette = true;
- (*_graphicsManager->_vPort)->setupViewPort(NULL);
- (*_graphicsManager->_vPort)->fillPic(128);
+ _graphicsManager->_vPort->setupViewPort(NULL);
+ _graphicsManager->_vPort->fillPic(0x80);
_graphicsManager->flipPage();
_eventsManager->sWaitFlip();
flipPageAndWait();
- (*_graphicsManager->_vPort)->fillPic(128);
+ _graphicsManager->_vPort->fillPic(0x80);
FontInfoResource &fi = *_graphicsManager->_fontPtr;
fi._curFont = _bVoy->boltEntry(257)._fontResource;
@@ -657,7 +656,7 @@ void VoyeurEngine::doTransitionCard(const Common::String &time, const Common::St
fi._justifyWidth = 384;
fi._justifyHeight = 120;
- (*_graphicsManager->_vPort)->drawText(time);
+ _graphicsManager->_vPort->drawText(time);
if (!location.empty()) {
fi._pos = Common::Point(0, 138);
@@ -665,7 +664,7 @@ void VoyeurEngine::doTransitionCard(const Common::String &time, const Common::St
fi._justifyWidth = 384;
fi._justifyHeight = 140;
- (*_graphicsManager->_vPort)->drawText(location);
+ _graphicsManager->_vPort->drawText(location);
}
flipPageAndWait();
@@ -676,7 +675,7 @@ void VoyeurEngine::saveLastInplay() {
}
void VoyeurEngine::flipPageAndWait() {
- (*_graphicsManager->_vPort)->_flags |= DISPFLAG_8;
+ _graphicsManager->_vPort->_flags |= DISPFLAG_8;
_graphicsManager->flipPage();
_eventsManager->sWaitFlip();
}
@@ -698,7 +697,7 @@ void VoyeurEngine::showEndingNews() {
PictureResource *pic = _bVoy->boltEntry(_playStampGroupId)._picResource;
CMapResource *pal = _bVoy->boltEntry(_playStampGroupId + 1)._cMapResource;
- (*_graphicsManager->_vPort)->setupViewPort(pic);
+ _graphicsManager->_vPort->setupViewPort(pic);
pal->startFade();
flipPageAndWaitForFade();
@@ -713,7 +712,7 @@ void VoyeurEngine::showEndingNews() {
pal = _bVoy->boltEntry(_playStampGroupId + idx * 2 + 1)._cMapResource;
}
- (*_graphicsManager->_vPort)->setupViewPort(pic);
+ _graphicsManager->_vPort->setupViewPort(pic);
pal->startFade();
flipPageAndWaitForFade();
diff --git a/engines/voyeur/voyeur.h b/engines/voyeur/voyeur.h
index 19e047de05..a35473ba93 100644
--- a/engines/voyeur/voyeur.h
+++ b/engines/voyeur/voyeur.h
@@ -42,10 +42,10 @@
/**
* This is the namespace of the Voyeur engine.
*
- * Status of this engine: In Development
+ * Status of this engine: Complete
*
* Games using this engine:
- * - Voyeur
+ * - Voyeur (Dos)
*/
namespace Voyeur {
diff --git a/engines/voyeur/voyeur_game.cpp b/engines/voyeur/voyeur_game.cpp
index 23fc722493..a6564c32ba 100644
--- a/engines/voyeur/voyeur_game.cpp
+++ b/engines/voyeur/voyeur_game.cpp
@@ -232,12 +232,12 @@ void VoyeurEngine::closeStamp() {
}
void VoyeurEngine::doTailTitle() {
- (*_graphicsManager->_vPort)->setupViewPort(NULL);
+ _graphicsManager->_vPort->setupViewPort(NULL);
_graphicsManager->screenReset();
if (_bVoy->getBoltGroup(0x600)) {
RL2Decoder decoder;
- decoder.loadFile("a1100200.rl2");
+ decoder.loadRL2File("a1100200.rl2", false);
decoder.start();
decoder.play(this);
@@ -250,7 +250,7 @@ void VoyeurEngine::doTailTitle() {
PictureResource *pic = _bVoy->boltEntry(0x602)._picResource;
CMapResource *pal = _bVoy->boltEntry(0x603)._cMapResource;
- (*_graphicsManager->_vPort)->setupViewPort(pic);
+ _graphicsManager->_vPort->setupViewPort(pic);
pal->startFade();
flipPageAndWaitForFade();
_eventsManager->delayClick(300);
@@ -258,7 +258,7 @@ void VoyeurEngine::doTailTitle() {
pic = _bVoy->boltEntry(0x604)._picResource;
pal = _bVoy->boltEntry(0x605)._cMapResource;
- (*_graphicsManager->_vPort)->setupViewPort(pic);
+ _graphicsManager->_vPort->setupViewPort(pic);
pal->startFade();
flipPageAndWaitForFade();
_eventsManager->delayClick(120);
@@ -283,7 +283,7 @@ void VoyeurEngine::doClosingCredits() {
const char *msg = (const char *)_bVoy->memberAddr(0x404);
const byte *creditList = (const byte *)_bVoy->memberAddr(0x405);
- (*_graphicsManager->_vPort)->setupViewPort(NULL);
+ _graphicsManager->_vPort->setupViewPort(NULL);
_graphicsManager->setColor(1, 180, 180, 180);
_graphicsManager->setColor(2, 200, 200, 200);
_eventsManager->_intPtr._hasPalette = true;
@@ -292,7 +292,7 @@ void VoyeurEngine::doClosingCredits() {
_graphicsManager->_fontPtr->_foreColor = 2;
_graphicsManager->_fontPtr->_backColor = 2;
_graphicsManager->_fontPtr->_fontSaveBack = false;
- _graphicsManager->_fontPtr->_fontFlags = 0;
+ _graphicsManager->_fontPtr->_fontFlags = DISPFLAG_NONE;
_soundManager->startVOCPlay(152);
FontInfoResource &fi = *_graphicsManager->_fontPtr;
@@ -302,7 +302,7 @@ void VoyeurEngine::doClosingCredits() {
int flags = READ_LE_UINT16(entry + 4);
if (flags & 0x10)
- (*_graphicsManager->_vPort)->fillPic();
+ _graphicsManager->_vPort->fillPic(0);
if (flags & 1) {
fi._foreColor = 1;
@@ -312,7 +312,7 @@ void VoyeurEngine::doClosingCredits() {
fi._justifyHeight = 240;
fi._pos = Common::Point(0, READ_LE_UINT16(entry));
- (*_graphicsManager->_vPort)->drawText(msg);
+ _graphicsManager->_vPort->drawText(msg);
msg += strlen(msg) + 1;
}
@@ -324,7 +324,7 @@ void VoyeurEngine::doClosingCredits() {
fi._justifyHeight = 240;
fi._pos = Common::Point(0, READ_LE_UINT16(entry));
- (*_graphicsManager->_vPort)->drawText(msg);
+ _graphicsManager->_vPort->drawText(msg);
msg += strlen(msg) + 1;
}
@@ -336,7 +336,7 @@ void VoyeurEngine::doClosingCredits() {
fi._justifyHeight = 240;
fi._pos = Common::Point(38, READ_LE_UINT16(entry));
- (*_graphicsManager->_vPort)->drawText(msg);
+ _graphicsManager->_vPort->drawText(msg);
msg += strlen(msg) + 1;
fi._foreColor = 2;
@@ -345,7 +345,7 @@ void VoyeurEngine::doClosingCredits() {
fi._justifyHeight = 240;
fi._pos = Common::Point(198, READ_LE_UINT16(entry));
- (*_graphicsManager->_vPort)->drawText(msg);
+ _graphicsManager->_vPort->drawText(msg);
msg += strlen(msg) + 1;
}
@@ -357,7 +357,7 @@ void VoyeurEngine::doClosingCredits() {
fi._justifyHeight = 240;
fi._pos = Common::Point(0, READ_LE_UINT16(entry));
- (*_graphicsManager->_vPort)->drawText(msg);
+ _graphicsManager->_vPort->drawText(msg);
msg += strlen(msg) + 1;
fi._foreColor = 2;
@@ -367,7 +367,7 @@ void VoyeurEngine::doClosingCredits() {
fi._justifyHeight = 240;
fi._pos = Common::Point(0, READ_LE_UINT16(entry) + 13);
- (*_graphicsManager->_vPort)->drawText(msg);
+ _graphicsManager->_vPort->drawText(msg);
msg += strlen(msg) + 1;
}
@@ -390,15 +390,15 @@ void VoyeurEngine::doPiracy() {
_graphicsManager->setColor(1, 0, 0, 0);
_graphicsManager->setColor(2, 255, 255, 255);
_eventsManager->_intPtr._hasPalette = true;
- (*_graphicsManager->_vPort)->setupViewPort(NULL);
- (*_graphicsManager->_vPort)->fillPic(1);
+ _graphicsManager->_vPort->setupViewPort(NULL);
+ _graphicsManager->_vPort->fillPic(1);
FontInfoResource &fi = *_graphicsManager->_fontPtr;
fi._curFont = _bVoy->boltEntry(0x101)._fontResource;
fi._foreColor = 2;
fi._backColor = 2;
fi._fontSaveBack = false;
- fi._fontFlags = 0;
+ fi._fontFlags = DISPFLAG_NONE;
fi._justify = ALIGN_CENTER;
fi._justifyWidth = 384;
fi._justifyHeight = 230;
@@ -407,7 +407,7 @@ void VoyeurEngine::doPiracy() {
int yp, idx;
for (idx = 0, yp = 33; idx < 10; ++idx) {
fi._pos = Common::Point(0, yp);
- (*_graphicsManager->_vPort)->drawText(PIRACY_MESSAGE[idx]);
+ _graphicsManager->_vPort->drawText(PIRACY_MESSAGE[idx]);
yp += fi._curFont->_fontHeight + 4;
}
@@ -442,7 +442,7 @@ void VoyeurEngine::reviewTape() {
_graphicsManager->_backColors = _bVoy->boltEntry(0x902)._cMapResource;
_graphicsManager->_backgroundPage = _bVoy->boltEntry(0x901)._picResource;
- (*_graphicsManager->_vPort)->setupViewPort(_graphicsManager->_backgroundPage);
+ _graphicsManager->_vPort->setupViewPort(_graphicsManager->_backgroundPage);
_graphicsManager->_backColors->startFade();
flipPageAndWaitForFade();
@@ -460,7 +460,7 @@ void VoyeurEngine::reviewTape() {
_eventsManager->_intPtr._hasPalette = true;
_graphicsManager->_fontPtr->_curFont = _bVoy->boltEntry(0x909)._fontResource;
_graphicsManager->_fontPtr->_fontSaveBack = false;
- _graphicsManager->_fontPtr->_fontFlags = 0;
+ _graphicsManager->_fontPtr->_fontFlags = DISPFLAG_NONE;
_eventsManager->getMouseInfo();
if (newX == -1) {
@@ -489,7 +489,7 @@ void VoyeurEngine::reviewTape() {
int yp = 45;
int eventNum = eventStart;
for (int lineNum = 0; lineNum < 8 && eventNum < _voy->_eventCount; ++lineNum, ++eventNum) {
- _graphicsManager->_fontPtr->_picFlags = 0;
+ _graphicsManager->_fontPtr->_picFlags = DISPFLAG_NONE;
_graphicsManager->_fontPtr->_picSelect = 0xff;
_graphicsManager->_fontPtr->_picPick = 7;
_graphicsManager->_fontPtr->_picOnOff = (lineNum == eventLine) ? 8 : 0;
@@ -504,15 +504,15 @@ void VoyeurEngine::reviewTape() {
yp += 15;
}
- (*_graphicsManager->_vPort)->addSaveRect(
- (*_graphicsManager->_vPort)->_lastPage, tempRect);
+ _graphicsManager->_vPort->addSaveRect(
+ _graphicsManager->_vPort->_lastPage, tempRect);
flipPageAndWait();
- (*_graphicsManager->_vPort)->addSaveRect(
- (*_graphicsManager->_vPort)->_lastPage, tempRect);
+ _graphicsManager->_vPort->addSaveRect(
+ _graphicsManager->_vPort->_lastPage, tempRect);
}
- _graphicsManager->sDrawPic(cursor, *_graphicsManager->_vPort,
+ _graphicsManager->sDrawPic(cursor, _graphicsManager->_vPort,
_eventsManager->getMousePos());
flipPageAndWait();
@@ -551,7 +551,7 @@ void VoyeurEngine::reviewTape() {
int yp = 45;
int eventNum = eventStart;
for (int idx = 0; idx < 8 && eventNum < _voy->_eventCount; ++idx, ++eventNum) {
- _graphicsManager->_fontPtr->_picFlags = 0;
+ _graphicsManager->_fontPtr->_picFlags = DISPFLAG_NONE;
_graphicsManager->_fontPtr->_picSelect = 0xff;
_graphicsManager->_fontPtr->_picPick = 7;
_graphicsManager->_fontPtr->_picOnOff = (idx == eventLine) ? 8 : 0;
@@ -566,12 +566,12 @@ void VoyeurEngine::reviewTape() {
yp += 15;
}
- (*_graphicsManager->_vPort)->addSaveRect(
- (*_graphicsManager->_vPort)->_lastPage, tempRect);
+ _graphicsManager->_vPort->addSaveRect(
+ _graphicsManager->_vPort->_lastPage, tempRect);
flipPageAndWait();
- (*_graphicsManager->_vPort)->addSaveRect(
- (*_graphicsManager->_vPort)->_lastPage, tempRect);
+ _graphicsManager->_vPort->addSaveRect(
+ _graphicsManager->_vPort->_lastPage, tempRect);
flipPageAndWait();
_eventsManager->getMouseInfo();
@@ -651,7 +651,7 @@ void VoyeurEngine::reviewTape() {
newY = _eventsManager->getMousePos().y;
_voy->_fadingType = 0;
_voy->_viewBounds = nullptr;
- (*_graphicsManager->_vPort)->setupViewPort(NULL);
+ _graphicsManager->_vPort->setupViewPort(NULL);
if (_currentVocId != -1) {
_voy->_vocSecondsOffset = _voy->_RTVNum - _voy->_musicStartTime;
@@ -679,7 +679,7 @@ void VoyeurEngine::reviewTape() {
_graphicsManager->_backColors = _bVoy->boltEntry(0x7F01 +
BLIND_TABLE[_audioVideoId])._cMapResource;
- (*_graphicsManager->_vPort)->setupViewPort(_graphicsManager->_backgroundPage);
+ _graphicsManager->_vPort->setupViewPort(_graphicsManager->_backgroundPage);
_graphicsManager->_backColors->startFade();
flipPageAndWaitForFade();
@@ -728,7 +728,7 @@ void VoyeurEngine::reviewTape() {
_graphicsManager->_fontPtr->_curFont = _bVoy->boltEntry(0x101)._fontResource;
- (*_graphicsManager->_vPort)->fillPic(0);
+ _graphicsManager->_vPort->fillPic(0);
flipPageAndWait();
_bVoy->freeBoltGroup(0x900);
}
@@ -742,7 +742,7 @@ void VoyeurEngine::doGossip() {
// Load the gossip animation
RL2Decoder decoder;
- decoder.loadFile("a2050100.rl2", false);
+ decoder.loadRL2File("a2050100.rl2", false);
decoder.start();
// Get the resource data for the first gossip video
@@ -751,7 +751,7 @@ void VoyeurEngine::doGossip() {
pal->startFade();
// Transfer initial background to video decoder
- PictureResource videoFrame(decoder.getVideoTrack()->getBackSurface());
+ PictureResource videoFrame(decoder.getRL2VideoTrack()->getBackSurface());
bgPic->_bounds.moveTo(0, 0);
_graphicsManager->sDrawPic(bgPic, &videoFrame, Common::Point(0, 0));
@@ -768,7 +768,7 @@ void VoyeurEngine::doGossip() {
// Play interview video
RL2Decoder decoder2;
- decoder2.loadFile("a2110100.rl2", true);
+ decoder2.loadRL2File("a2110100.rl2", true);
decoder2.start();
_eventsManager->getMouseInfo();
@@ -789,8 +789,8 @@ void VoyeurEngine::doTapePlaying() {
PictureResource *pic = _bVoy->boltEntry(0xA02)._picResource;
VInitCycleResource *cycle = _bVoy->boltEntry(0xA05)._vInitCycleResource;
- (*_graphicsManager->_vPort)->setupViewPort(_graphicsManager->_backgroundPage);
- _graphicsManager->sDrawPic(pic, *_graphicsManager->_vPort, Common::Point(57, 30));
+ _graphicsManager->_vPort->setupViewPort(_graphicsManager->_backgroundPage);
+ _graphicsManager->sDrawPic(pic, _graphicsManager->_vPort, Common::Point(57, 30));
_graphicsManager->_backColors->startFade();
flipPageAndWaitForFade();
@@ -933,7 +933,7 @@ int VoyeurEngine::getChooseButton() {
+ 6)._rectResource->_entries;
int selectedIndex = -1;
- (*_graphicsManager->_vPort)->setupViewPort(_graphicsManager->_backgroundPage);
+ _graphicsManager->_vPort->setupViewPort(_graphicsManager->_backgroundPage);
_graphicsManager->_backColors->_steps = 0;
_graphicsManager->_backColors->startFade();
flipPageAndWait();
@@ -956,7 +956,7 @@ int VoyeurEngine::getChooseButton() {
selectedIndex = idx;
if (selectedIndex != prevIndex) {
PictureResource *btnPic = _bVoy->boltEntry(_playStampGroupId + 8 + idx)._picResource;
- _graphicsManager->sDrawPic(btnPic, *_graphicsManager->_vPort,
+ _graphicsManager->sDrawPic(btnPic, _graphicsManager->_vPort,
Common::Point(106, 200));
cursorPic = _bVoy->boltEntry(_playStampGroupId + 4)._picResource;
@@ -968,11 +968,11 @@ int VoyeurEngine::getChooseButton() {
if (selectedIndex == -1) {
cursorPic = _bVoy->boltEntry(_playStampGroupId + 2)._picResource;
PictureResource *btnPic = _bVoy->boltEntry(_playStampGroupId + 12)._picResource;
- _graphicsManager->sDrawPic(btnPic, *_graphicsManager->_vPort,
+ _graphicsManager->sDrawPic(btnPic, _graphicsManager->_vPort,
Common::Point(106, 200));
}
- _graphicsManager->sDrawPic(cursorPic, *_graphicsManager->_vPort,
+ _graphicsManager->sDrawPic(cursorPic, _graphicsManager->_vPort,
Common::Point(pt.x + 13, pt.y - 12));
flipPageAndWait();
@@ -985,7 +985,7 @@ int VoyeurEngine::getChooseButton() {
void VoyeurEngine::makeViewFinder() {
_graphicsManager->_backgroundPage = _bVoy->boltEntry(0x103)._picResource;
_graphicsManager->sDrawPic(_graphicsManager->_backgroundPage,
- *_graphicsManager->_vPort, Common::Point(0, 0));
+ _graphicsManager->_vPort, Common::Point(0, 0));
CMapResource *pal = _bVoy->boltEntry(0x104)._cMapResource;
int palOffset = 0;
@@ -1017,7 +1017,7 @@ void VoyeurEngine::makeViewFinder() {
break;
}
- (*_graphicsManager->_vPort)->drawIfaceTime();
+ _graphicsManager->_vPort->drawIfaceTime();
doTimeBar();
pal->startFade();
@@ -1057,7 +1057,7 @@ void VoyeurEngine::initIFace() {
break;
}
if (playStamp1 != -1)
- _bVoy->freeBoltGroup(playStamp1, true);
+ _bVoy->freeBoltGroup(playStamp1);
_bVoy->getBoltGroup(_playStampGroupId);
CMapResource *pal = _bVoy->boltEntry(_playStampGroupId + 2)._cMapResource;
@@ -1080,7 +1080,7 @@ void VoyeurEngine::initIFace() {
void VoyeurEngine::doScroll(const Common::Point &pt) {
Common::Rect clipRect(72, 47, 72 + 240, 47 + 148);
- (*_graphicsManager->_vPort)->setupViewPort(NULL, &clipRect);
+ _graphicsManager->_vPort->setupViewPort(NULL, &clipRect);
int base = 0;
switch (_voy->_transitionId) {
@@ -1104,18 +1104,18 @@ void VoyeurEngine::doScroll(const Common::Point &pt) {
if (base) {
PictureResource *pic = _bVoy->boltEntry(base + 3)._picResource;
- _graphicsManager->sDrawPic(pic, *_graphicsManager->_vPort, Common::Point(784 - pt.x - 712, 150 - pt.y - 104));
+ _graphicsManager->sDrawPic(pic, _graphicsManager->_vPort, Common::Point(784 - pt.x - 712, 150 - pt.y - 104));
pic = _bVoy->boltEntry(base + 4)._picResource;
- _graphicsManager->sDrawPic(pic, *_graphicsManager->_vPort, Common::Point(784 - pt.x - 712, 150 - pt.y - 44));
+ _graphicsManager->sDrawPic(pic, _graphicsManager->_vPort, Common::Point(784 - pt.x - 712, 150 - pt.y - 44));
pic = _bVoy->boltEntry(base + 5)._picResource;
- _graphicsManager->sDrawPic(pic, *_graphicsManager->_vPort, Common::Point(784 - pt.x - 712, 150 - pt.y + 16));
+ _graphicsManager->sDrawPic(pic, _graphicsManager->_vPort, Common::Point(784 - pt.x - 712, 150 - pt.y + 16));
pic = _bVoy->boltEntry(base + 6)._picResource;
- _graphicsManager->sDrawPic(pic, *_graphicsManager->_vPort, Common::Point(784 - pt.x - 712, 150 - pt.y + 76));
+ _graphicsManager->sDrawPic(pic, _graphicsManager->_vPort, Common::Point(784 - pt.x - 712, 150 - pt.y + 76));
pic = _bVoy->boltEntry(base + 7)._picResource;
- _graphicsManager->sDrawPic(pic, *_graphicsManager->_vPort, Common::Point(784 - pt.x - 712, 150 - pt.y + 136));
+ _graphicsManager->sDrawPic(pic, _graphicsManager->_vPort, Common::Point(784 - pt.x - 712, 150 - pt.y + 136));
}
- (*_graphicsManager->_vPort)->setupViewPort(NULL);
+ _graphicsManager->_vPort->setupViewPort(NULL);
}
void VoyeurEngine::checkTransition() {
@@ -1171,7 +1171,7 @@ int VoyeurEngine::doComputerText(int maxLen) {
font._curFont = _bVoy->boltEntry(0x4910)._fontResource;
font._foreColor = 129;
font._fontSaveBack = false;
- font._fontFlags = 0;
+ font._fontFlags = DISPFLAG_NONE;
if (_voy->_vocSecondsOffset > 60)
_voy->_vocSecondsOffset = 0;
@@ -1182,7 +1182,7 @@ int VoyeurEngine::doComputerText(int maxLen) {
font._justifyWidth = 384;
font._justifyHeight = 100;
font._pos = Common::Point(128, 100);
- (*_graphicsManager->_vPort)->drawText(END_OF_MESSAGE);
+ _graphicsManager->_vPort->drawText(END_OF_MESSAGE);
} else if (_voy->_RTVNum < _voy->_computerTimeMin && maxLen == 9999) {
if (_currentVocId != -1)
_soundManager->startVOCPlay(_currentVocId);
@@ -1190,7 +1190,7 @@ int VoyeurEngine::doComputerText(int maxLen) {
font._justifyWidth = 384;
font._justifyHeight = 100;
font._pos = Common::Point(120, 100);
- (*_graphicsManager->_vPort)->drawText(START_OF_MESSAGE);
+ _graphicsManager->_vPort->drawText(START_OF_MESSAGE);
} else {
char *msg = (char *)_bVoy->memberAddr(0x4900 + _voy->_computerTextId);
font._pos = Common::Point(96, 60);
@@ -1210,12 +1210,12 @@ int VoyeurEngine::doComputerText(int maxLen) {
_eventsManager->delay(90);
_graphicsManager->_drawPtr->_pos = Common::Point(96, 54);
_graphicsManager->_drawPtr->_penColor = 254;
- (*_graphicsManager->_vPort)->sFillBox(196, 124);
+ _graphicsManager->_vPort->sFillBox(196, 124);
_graphicsManager->_fontPtr->_justify = ALIGN_LEFT;
_graphicsManager->_fontPtr->_justifyWidth = 384;
_graphicsManager->_fontPtr->_justifyHeight = 100;
_graphicsManager->_fontPtr->_pos = Common::Point(128, 100);
- (*_graphicsManager->_vPort)->drawText(END_OF_MESSAGE);
+ _graphicsManager->_vPort->drawText(END_OF_MESSAGE);
}
break;
}
@@ -1227,7 +1227,7 @@ int VoyeurEngine::doComputerText(int maxLen) {
_eventsManager->delay(90);
_graphicsManager->_drawPtr->_pos = Common::Point(96, 54);
_graphicsManager->_drawPtr->_penColor = 255;
- (*_graphicsManager->_vPort)->sFillBox(196, 124);
+ _graphicsManager->_vPort->sFillBox(196, 124);
yp = 60;
}
@@ -1238,7 +1238,7 @@ int VoyeurEngine::doComputerText(int maxLen) {
_graphicsManager->_fontPtr->_justify = ALIGN_LEFT;
_graphicsManager->_fontPtr->_justifyWidth = 0;
_graphicsManager->_fontPtr->_justifyHeight = 0;
- (*_graphicsManager->_vPort)->drawText(Common::String(c));
+ _graphicsManager->_vPort->drawText(Common::String(c));
_eventsManager->delay(4);
}
@@ -1258,16 +1258,17 @@ int VoyeurEngine::doComputerText(int maxLen) {
}
void VoyeurEngine::getComputerBrush() {
- if (_bVoy->getBoltGroup(0x4900)) {
- PictureResource *pic = _bVoy->boltEntry(0x490E)._picResource;
- int xp = (384 - pic->_bounds.width()) / 2;
- int yp = (240 - pic->_bounds.height()) / 2 - 4;
+ if (!_bVoy->getBoltGroup(0x4900))
+ return;
- (*_graphicsManager->_vPort)->drawPicPerm(pic, Common::Point(xp, yp));
+ PictureResource *pic = _bVoy->boltEntry(0x490E)._picResource;
+ int xp = (384 - pic->_bounds.width()) / 2;
+ int yp = (240 - pic->_bounds.height()) / 2 - 4;
- CMapResource *pal = _bVoy->boltEntry(0x490F)._cMapResource;
- pal->startFade();
- }
+ _graphicsManager->_vPort->drawPicPerm(pic, Common::Point(xp, yp));
+
+ CMapResource *pal = _bVoy->boltEntry(0x490F)._cMapResource;
+ pal->startFade();
}
void VoyeurEngine::doTimeBar() {
@@ -1284,14 +1285,14 @@ void VoyeurEngine::doTimeBar() {
_graphicsManager->_drawPtr->_penColor = 134;
_graphicsManager->_drawPtr->_pos = Common::Point(39, 92);
- (*_graphicsManager->_vPort)->sFillBox(6, fullHeight - 92);
+ _graphicsManager->_vPort->sFillBox(6, fullHeight - 92);
if (height > 0) {
_graphicsManager->setColor(215, 238, 238, 238);
_eventsManager->_intPtr._hasPalette = true;
_graphicsManager->_drawPtr->_penColor = 215;
_graphicsManager->_drawPtr->_pos = Common::Point(39, fullHeight);
- (*_graphicsManager->_vPort)->sFillBox(6, height);
+ _graphicsManager->_vPort->sFillBox(6, height);
}
}
}
@@ -1344,7 +1345,7 @@ void VoyeurEngine::doEvidDisplay(int evidId, int eventId) {
_bVoy->getBoltGroup(_voy->_boltGroupId2);
PictureResource *pic = _bVoy->boltEntry(_voy->_boltGroupId2 + evidId * 2)._picResource;
- _graphicsManager->sDrawPic(pic, *_graphicsManager->_vPort, Common::Point(
+ _graphicsManager->sDrawPic(pic, _graphicsManager->_vPort, Common::Point(
(384 - pic->_bounds.width()) / 2, (240 - pic->_bounds.height()) / 2));
_bVoy->freeBoltMember(_voy->_boltGroupId2 + evidId * 2);
@@ -1395,7 +1396,7 @@ void VoyeurEngine::doEvidDisplay(int evidId, int eventId) {
continue;
pic = _voy->_evPicPtrs[arrIndex];
- _graphicsManager->sDrawPic(pic, *_graphicsManager->_vPort,
+ _graphicsManager->sDrawPic(pic, _graphicsManager->_vPort,
Common::Point((384 - pic->_bounds.width()) / 2,
(240 - pic->_bounds.height()) / 2));
_voy->_evCmPtrs[arrIndex]->startFade();
diff --git a/engines/wintermute/base/font/base_font_truetype.cpp b/engines/wintermute/base/font/base_font_truetype.cpp
index c5a1e91ef5..df9a8648db 100644
--- a/engines/wintermute/base/font/base_font_truetype.cpp
+++ b/engines/wintermute/base/font/base_font_truetype.cpp
@@ -625,6 +625,8 @@ bool BaseFontTT::initFont() {
warning("Looking for %s", fontName.c_str());
_font = FontMan.getFontByName(fontName);
}
+#else
+ warning("BaseFontTT::InitFont - FreeType2-support not compiled in, TTF-fonts will not be loaded");
#endif // USE_FREETYPE2
// Fallback4: Just use the Big GUI-font. (REALLY undesireable)
diff --git a/engines/wintermute/detection.cpp b/engines/wintermute/detection.cpp
index 48c75f634d..a659c434d0 100644
--- a/engines/wintermute/detection.cpp
+++ b/engines/wintermute/detection.cpp
@@ -107,11 +107,11 @@ public:
}
}
// Prefix to avoid collisions with actually known games
- name = "wmefan-" + name;
+ name = "wmeunk-" + name;
Common::strlcpy(s_fallbackGameIdBuf, name.c_str(), sizeof(s_fallbackGameIdBuf) - 1);
s_fallbackDesc.gameid = s_fallbackGameIdBuf;
if (caption != name) {
- caption += " (fangame) ";
+ caption += " (unknown version) ";
char *offset = s_fallbackGameIdBuf + name.size() + 1;
uint32 remainingLength = (sizeof(s_fallbackGameIdBuf) - 1) - (name.size() + 1);
Common::strlcpy(offset, caption.c_str(), remainingLength);
diff --git a/engines/wintermute/detection_tables.h b/engines/wintermute/detection_tables.h
index e0ceb43c1f..6556d3b34a 100644
--- a/engines/wintermute/detection_tables.h
+++ b/engines/wintermute/detection_tables.h
@@ -38,6 +38,7 @@ static const PlainGameDescriptor wintermuteGames[] = {
{"carolreed8", "Carol Reed 8 - Amber's Blood"},
{"carolreed9", "Carol Reed 9 - Cold Case Summer"},
{"chivalry", "Chivalry is Not Dead"},
+ {"corrosion", "Corrosion: Cold Winter Waiting"},
{"deadcity", "Dead City"},
{"dreaming", "Des Reves Elastiques Avec Mille Insectes Nommes Georges"},
{"dirtysplit", "Dirty Split"},
@@ -58,6 +59,8 @@ static const PlainGameDescriptor wintermuteGames[] = {
{"projectdoom", "Project: Doom"},
{"reversion1", "Reversion: The Escape"},
{"reversion2", "Reversion: The Meeting"},
+ {"rhiannon", "Rhiannon: Curse of the four Branches"},
+ {"ritter", "1 1/2 Ritter: Auf der Suche nach der hinreissenden Herzelinde"},
{"rosemary", "Rosemary"},
{"securanote", "Securanote"},
{"shaban", "Shaban"},
@@ -70,6 +73,7 @@ static const PlainGameDescriptor wintermuteGames[] = {
{"twc", "the white chamber"},
{"wintermute", "Wintermute engine game"},
{"wtetris", "Wilma Tetris"},
+ {"zilm", "Zilm: A Game of Reflex"},
{0, 0}
};
@@ -124,6 +128,16 @@ static const ADGameDescription gameDescriptions[] = {
ADGF_UNSTABLE,
GUIO0()
},
+ // Bickadoodle (download from http://aethericgames.com/games/bickadoodle/download-bickadoodle/)
+ {
+ "bickadoodle",
+ "",
+ AD_ENTRY1s("data.dcp", "1584d83577c32add0fce27fae91141a2", 35337728),
+ Common::EN_ANY,
+ Common::kPlatformWindows,
+ ADGF_UNSTABLE,
+ GUIO0()
+ },
// Book of Gron Part One
{
"bookofgron",
@@ -237,6 +251,16 @@ static const ADGameDescription gameDescriptions[] = {
ADGF_TESTING,
GUIO0()
},
+ // Corrosion: Cold Winter Waiting
+ {
+ "corrosion",
+ "",
+ AD_ENTRY1s("data.dcp", "ae885b1a8faa0b27f43c0e8f0df02fc9", 525931618),
+ Common::EN_ANY,
+ Common::kPlatformWindows,
+ ADGF_TESTING,
+ GUIO0()
+ },
// Dead City (Czech)
{
"deadcity",
@@ -428,7 +452,21 @@ static const ADGameDescription gameDescriptions[] = {
ADGF_UNSTABLE,
GUIO0()
},
- // Ghosts in the Sheet
+ // Ghost in the Sheet
+ {
+ "ghostsheet",
+ "",
+ {
+ {"english.dcp", 0, "e6d0aad2c89996bcabe416105a3d6d3a", 12221017},
+ {"data.dcp", 0, "b2f8b05328e4881e15e98e845b63f451", 168003},
+ AD_LISTEND
+ },
+ Common::EN_ANY,
+ Common::kPlatformWindows,
+ ADGF_UNSTABLE,
+ GUIO0()
+ },
+ // Ghost in the Sheet (Demo)
{
"ghostsheet",
"Demo",
@@ -530,6 +568,16 @@ static const ADGameDescription gameDescriptions[] = {
ADGF_UNSTABLE,
GUIO0()
},
+ // J.U.L.I.A. (English, Bundle in a box-version)
+ {
+ "julia",
+ "Version 1.2",
+ AD_ENTRY1s("data.dcp", "fe90023ccc22f35185b40b910e0d03a2", 10101373),
+ Common::EN_ANY,
+ Common::kPlatformWindows,
+ ADGF_UNSTABLE,
+ GUIO0()
+ },
// J.U.L.I.A. (English) (Demo)
{
"julia",
@@ -996,6 +1044,56 @@ static const ADGameDescription gameDescriptions[] = {
ADGF_UNSTABLE,
GUIO0()
},
+ // Reversion: The Meeting Version 2.0.2412 (Chinese)
+ {
+ "reversion2",
+ "Version 2.0.2412",
+ {
+ {"data.dcp", 0, "f4ffc4df24b7bebad56a24930f33a2bc", 255766600},
+ {"xlanguage_nz.dcp", 0, "17c79af4928e24484bee77a7e807cc2a", 10737127},
+ {"Linux.dcp", 0, "21858bd77dc86b03f701fd47900e2f51", 984535},
+ AD_LISTEND
+ },
+ Common::ZH_CNA,
+ Common::kPlatformLinux,
+ ADGF_UNSTABLE,
+ GUIO0()
+ },
+ // Reversion: The Meeting Version 2.0.2412 (English)
+ {
+ "reversion2",
+ "Version 2.0.2412",
+ {
+ {"data.dcp", 0, "f4ffc4df24b7bebad56a24930f33a2bc", 255766600},
+ {"xlanguage_en.dcp", 0, "0598bf752ce93b42bcaf1094df537c7b", 8533057},
+ {"Linux.dcp", 0, "21858bd77dc86b03f701fd47900e2f51", 984535},
+ AD_LISTEND
+ },
+ Common::EN_ANY,
+ Common::kPlatformLinux,
+ ADGF_UNSTABLE,
+ GUIO0()
+ },
+ // Rhiannon: Curse of the four Branches
+ {
+ "rhiannon",
+ "",
+ AD_ENTRY1s("data.dcp", "870f348900b735f1cc79c0608ce32b0e", 1046169851),
+ Common::EN_ANY,
+ Common::kPlatformWindows,
+ ADGF_UNSTABLE,
+ GUIO0()
+ },
+ // 1 1/2 Ritter: Auf der Suche nach der hinreissenden Herzelinde
+ {
+ "ritter",
+ "",
+ AD_ENTRY1s("data.dcp", "5ac416cee605d3a30f4d59687b1cdab2", 364260278),
+ Common::DE_DEU,
+ Common::kPlatformWindows,
+ ADGF_UNSTABLE,
+ GUIO0()
+ },
// Rosemary
{
"rosemary",
@@ -1108,6 +1206,16 @@ static const ADGameDescription gameDescriptions[] = {
ADGF_UNSTABLE,
GUIO0()
},
+ // Zilm: A Game of Reflex 1.0
+ {
+ "Zilm",
+ "1.0",
+ AD_ENTRY1s("data.dcp", "098dffaf03d8adbb4cb5633e4733e63c", 351726),
+ Common::EN_ANY,
+ Common::kPlatformWindows,
+ ADGF_UNSTABLE,
+ GUIO0()
+ },
AD_TABLE_END_MARKER
};
diff --git a/engines/wintermute/graphics/transparent_surface.cpp b/engines/wintermute/graphics/transparent_surface.cpp
index e8628ef6a6..5fe0d13766 100644
--- a/engines/wintermute/graphics/transparent_surface.cpp
+++ b/engines/wintermute/graphics/transparent_surface.cpp
@@ -84,20 +84,23 @@ void BlenderAdditive::blendPixel(byte ina, byte inr, byte ing, byte inb, byte *o
if (ina == 0) {
return;
} else {
- if (*cb != 255)
+ if (*cb != 255) {
*outb = MIN(*outb + ((inb * (*cb) * ina) >> 16), 255);
- else
+ } else {
*outb = MIN(*outb + (inb * ina >> 8), 255);
+ }
- if (*cg != 255)
+ if (*cg != 255) {
*outg = MIN(*outg + ((ing * (*cg) * ina) >> 16), 255);
- else
+ } else {
*outg = MIN(*outg + (ing * ina >> 8), 255);
+ }
- if (*cr != 255)
+ if (*cr != 255) {
*outr = MIN(*outr + ((inr * (*cr) * ina) >> 16), 255);
- else
+ } else {
*outr = MIN(*outr + (inr * ina >> 8), 255);
+ }
}
}
@@ -120,20 +123,23 @@ void BlenderSubtractive::blendPixel(byte ina, byte inr, byte ing, byte inb, byte
if (ina == 0) {
return;
} else {
- if (*cb != 255)
+ if (*cb != 255) {
*outb = MAX(*outb - ((inb * (*cb) * (*outb) * ina) >> 24), 0);
- else
+ } else {
*outb = MAX(*outb - (inb * (*outb) * ina >> 16), 0);
+ }
- if (*cg != 255)
+ if (*cg != 255) {
*outg = MAX(*outg - ((ing * (*cg) * (*outg) * ina) >> 24), 0);
- else
+ } else {
*outg = MAX(*outg - (ing * (*outg) * ina >> 16), 0);
+ }
- if (*cr != 255)
- *outr = MAX(*outr - ((inr * (*cr) * (*outr) * ina) >> 24), 0);
- else
+ if (*cr != 255) {
+ *outr = MAX(*outr - ((inr * (*cr) * (*outr) * ina) >> 24), 0);
+ } else {
*outr = MAX(*outr - (inr * (*outr) * ina >> 16), 0);
+ }
}
}
@@ -152,20 +158,23 @@ void BlenderNormal::blendPixel(byte ina, byte inr, byte ing, byte inb, byte *out
if (ina == 0) {
return;
} else if (ina == 255) {
- if (*cb != 255)
+ if (*cb != 255) {
*outb = (inb * (*cb)) >> 8;
- else
+ } else {
*outb = inb;
+ }
- if (*cr != 255)
+ if (*cr != 255) {
*outr = (inr * (*cr)) >> 8;
- else
+ } else {
*outr = inr;
+ }
- if (*cg != 255)
+ if (*cg != 255) {
*outg = (ing * (*cg)) >> 8;
- else
+ } else {
*outg = ing;
+ }
*outa = ina;
@@ -178,26 +187,29 @@ void BlenderNormal::blendPixel(byte ina, byte inr, byte ing, byte inb, byte *out
*outr = (*outr * (255 - ina) >> 8);
*outg = (*outg * (255 - ina) >> 8);
- if (*cb == 0)
+ if (*cb == 0) {
*outb = *outb;
- else if (*cb != 255)
+ } else if (*cb != 255) {
*outb = *outb + (inb * ina * (*cb) >> 16);
- else
+ } else {
*outb = *outb + (inb * ina >> 8);
+ }
- if (*cr == 0)
+ if (*cr == 0) {
*outr = *outr;
- else if (*cr != 255)
+ } else if (*cr != 255) {
*outr = *outr + (inr * ina * (*cr) >> 16);
- else
+ } else {
*outr = *outr + (inr * ina >> 8);
+ }
- if (*cg == 0)
+ if (*cg == 0) {
*outg = *outg;
- else if (*cg != 255)
+ } else if (*cg != 255) {
*outg = *outg + (ing * ina * (*cg) >> 16);
- else
+ } else {
*outg = *outg + (ing * ina >> 8);
+ }
return;
}
@@ -375,10 +387,10 @@ void doBlit(byte *ino, byte *outo, uint32 width, uint32 height, uint32 pitch, in
byte *outb = &out[TransparentSurface::kBIndex];
b.blendPixel(in[TransparentSurface::kAIndex],
- in[TransparentSurface::kRIndex],
- in[TransparentSurface::kGIndex],
- in[TransparentSurface::kBIndex],
- outa, outr, outg, outb);
+ in[TransparentSurface::kRIndex],
+ in[TransparentSurface::kGIndex],
+ in[TransparentSurface::kBIndex],
+ outa, outr, outg, outb);
in += inStep;
out += 4;
@@ -404,10 +416,10 @@ void doBlit(byte *ino, byte *outo, uint32 width, uint32 height, uint32 pitch, in
byte *outb = &out[TransparentSurface::kBIndex];
b.blendPixel(in[TransparentSurface::kAIndex],
- in[TransparentSurface::kRIndex],
- in[TransparentSurface::kGIndex],
- in[TransparentSurface::kBIndex],
- outa, outr, outg, outb, &ca, &cr, &cg, &cb);
+ in[TransparentSurface::kRIndex],
+ in[TransparentSurface::kGIndex],
+ in[TransparentSurface::kBIndex],
+ outa, outr, outg, outb, &ca, &cr, &cg, &cb);
in += inStep;
out += 4;
}
@@ -427,8 +439,9 @@ Common::Rect TransparentSurface::blit(Graphics::Surface &target, int posX, int p
// Check if we need to draw anything at all
int ca = (color >> 24) & 0xff;
- if (ca == 0)
+ if (ca == 0) {
return retSize;
+ }
// Create an encapsulating surface for the data
TransparentSurface srcImage(*this, false);
@@ -456,17 +469,19 @@ Common::Rect TransparentSurface::blit(Graphics::Surface &target, int posX, int p
srcImage.h = pPartRect->height();
debug(6, "Blit(%d, %d, %d, [%d, %d, %d, %d], %08x, %d, %d)", posX, posY, flipping,
- pPartRect->left, pPartRect->top, pPartRect->width(), pPartRect->height(), color, width, height);
+ pPartRect->left, pPartRect->top, pPartRect->width(), pPartRect->height(), color, width, height);
} else {
debug(6, "Blit(%d, %d, %d, [%d, %d, %d, %d], %08x, %d, %d)", posX, posY, flipping, 0, 0,
- srcImage.w, srcImage.h, color, width, height);
+ srcImage.w, srcImage.h, color, width, height);
}
- if (width == -1)
+ if (width == -1) {
width = srcImage.w;
- if (height == -1)
+ }
+ if (height == -1) {
height = srcImage.h;
+ }
#ifdef SCALING_TESTING
// Hardcode scaling to 66% to test scaling
@@ -516,7 +531,7 @@ Common::Rect TransparentSurface::blit(Graphics::Surface &target, int posX, int p
yp = img->h - 1;
}
- byte *ino= (byte *)img->getBasePtr(xp, yp);
+ byte *ino = (byte *)img->getBasePtr(xp, yp);
byte *outo = (byte *)target.getBasePtr(posX, posY);
if (color == 0xFFFFFFFF && blendMode == BLEND_NORMAL && _alphaMode == ALPHA_OPAQUE) {
@@ -649,8 +664,9 @@ TransparentSurface *TransparentSurface::rotoscale(const TransformStruct &transfo
target->create((uint16)dstW, (uint16)dstH, this->format);
- if (transform._zoom.x == 0 || transform._zoom.y == 0)
+ if (transform._zoom.x == 0 || transform._zoom.y == 0) {
return target;
+ }
uint32 invAngle = 360 - (transform._angle % 360);
float invCos = cos(invAngle * M_PI / 180.0);
@@ -684,8 +700,12 @@ TransparentSurface *TransparentSurface::rotoscale(const TransformStruct &transfo
for (int x = 0; x < dstW; x++) {
int dx = (sdx >> 16);
int dy = (sdy >> 16);
- if (flipx) dx = sw - dx;
- if (flipy) dy = sh - dy;
+ if (flipx) {
+ dx = sw - dx;
+ }
+ if (flipy) {
+ dy = sh - dy;
+ }
#ifdef ENABLE_BILINEAR
if ((dx > -1) && (dy > -1) && (dx < sw) && (dy < sh)) {
@@ -694,7 +714,7 @@ TransparentSurface *TransparentSurface::rotoscale(const TransformStruct &transfo
c00 = *sp;
sp += 1;
c01 = *sp;
- sp += (this->pitch/4);
+ sp += (this->pitch / 4);
c11 = *sp;
sp -= 1;
c10 = *sp;
@@ -764,8 +784,8 @@ TransparentSurface *TransparentSurface::scale(uint16 newWidth, uint16 newHeight)
bool flipx = false, flipy = false; // TODO: See mirroring comment in RenderTicket ctor
- int *sax = new int[dstW+1];
- int *say = new int[dstH+1];
+ int *sax = new int[dstW + 1];
+ int *say = new int[dstH + 1];
assert(sax && say);
/*
@@ -808,14 +828,16 @@ TransparentSurface *TransparentSurface::scale(uint16 newWidth, uint16 newHeight)
}
}
- const tColorRGBA *sp = (const tColorRGBA *) getBasePtr(0,0);
- tColorRGBA *dp = (tColorRGBA *) target->getBasePtr(0,0);
+ const tColorRGBA *sp = (const tColorRGBA *) getBasePtr(0, 0);
+ tColorRGBA *dp = (tColorRGBA *) target->getBasePtr(0, 0);
int spixelgap = srcW;
- if (flipx)
+ if (flipx) {
sp += spixelw;
- if (flipy)
+ }
+ if (flipy) {
sp += spixelgap * spixelh;
+ }
csay = say;
for (int y = 0; y < dstH; y++) {
@@ -835,10 +857,11 @@ TransparentSurface *TransparentSurface::scale(uint16 newWidth, uint16 newHeight)
c01 = sp;
c10 = sp;
if (cy < spixelh) {
- if (flipy)
+ if (flipy) {
c10 -= spixelgap;
- else
+ } else {
c10 += spixelgap;
+ }
}
c11 = c10;
if (cx < spixelw) {
@@ -874,10 +897,11 @@ TransparentSurface *TransparentSurface::scale(uint16 newWidth, uint16 newHeight)
int *salastx = csax;
csax++;
int sstepx = (*csax >> 16) - (*salastx >> 16);
- if (flipx)
+ if (flipx) {
sp -= sstepx;
- else
+ } else {
sp += sstepx;
+ }
/*
* Advance destination pointer x
@@ -891,10 +915,11 @@ TransparentSurface *TransparentSurface::scale(uint16 newWidth, uint16 newHeight)
csay++;
int sstepy = (*csay >> 16) - (*salasty >> 16);
sstepy *= spixelgap;
- if (flipy)
+ if (flipy) {
sp = csp - sstepy;
- else
+ } else {
sp = csp + sstepy;
+ }
}
delete[] sax;
@@ -903,14 +928,16 @@ TransparentSurface *TransparentSurface::scale(uint16 newWidth, uint16 newHeight)
#else
int *scaleCacheX = new int[dstW];
- for (int x = 0; x < dstW; x++)
+ for (int x = 0; x < dstW; x++) {
scaleCacheX[x] = (x * srcW) / dstW;
+ }
for (int y = 0; y < dstH; y++) {
uint32 *destP = (uint32 *)target->getBasePtr(0, y);
const uint32 *srcP = (const uint32 *)getBasePtr(0, (y * srcH) / dstH);
- for (int x = 0; x < dstW; x++)
+ for (int x = 0; x < dstW; x++) {
*destP++ = srcP[scaleCacheX[x]];
+ }
}
delete[] scaleCacheX;
diff --git a/engines/wintermute/graphics/transparent_surface.h b/engines/wintermute/graphics/transparent_surface.h
index 7f6b1ac865..4ad9bf07eb 100644
--- a/engines/wintermute/graphics/transparent_surface.h
+++ b/engines/wintermute/graphics/transparent_surface.h
@@ -74,17 +74,17 @@ struct TransparentSurface : public Graphics::Surface {
ALPHA_FULL = 2
};
- #ifdef SCUMM_LITTLE_ENDIAN
+#ifdef SCUMM_LITTLE_ENDIAN
static const int kAIndex = 0;
static const int kBIndex = 1;
static const int kGIndex = 2;
static const int kRIndex = 3;
- #else
+#else
static const int kAIndex = 3;
static const int kBIndex = 2;
static const int kGIndex = 1;
static const int kRIndex = 0;
- #endif
+#endif
static const int kBShift = 8;//img->format.bShift;
static const int kGShift = 16;//img->format.gShift;
diff --git a/engines/wintermute/video/video_theora_player.cpp b/engines/wintermute/video/video_theora_player.cpp
index b0c469c440..e1553580ec 100644
--- a/engines/wintermute/video/video_theora_player.cpp
+++ b/engines/wintermute/video/video_theora_player.cpp
@@ -127,6 +127,7 @@ bool VideoTheoraPlayer::initialize(const Common::String &filename, const Common:
#if defined (USE_THEORADEC)
_theoraDecoder = new Video::TheoraDecoder();
#else
+ warning("VideoTheoraPlayer::initialize - Theora support not compiled in, video will be skipped: %s", filename.c_str());
return STATUS_FAILED;
#endif
_theoraDecoder->loadStream(_file);
diff --git a/engines/zvision/fonts/truetype_font.cpp b/engines/zvision/fonts/truetype_font.cpp
index 03520f18b6..ba4d72bde8 100644
--- a/engines/zvision/fonts/truetype_font.cpp
+++ b/engines/zvision/fonts/truetype_font.cpp
@@ -39,12 +39,9 @@
namespace ZVision {
TruetypeFont::TruetypeFont(ZVision *engine, int32 fontHeight)
- : _engine(engine),
- _fontHeight(fontHeight),
+ : _fontHeight(fontHeight),
_font(0),
- _lineHeight(0),
- _maxCharWidth(0),
- _maxCharHeight(0) {
+ _lineHeight(0) {
}
TruetypeFont::~TruetypeFont(void) {
diff --git a/engines/zvision/fonts/truetype_font.h b/engines/zvision/fonts/truetype_font.h
index 3b5805db14..64f53a2c3b 100644
--- a/engines/zvision/fonts/truetype_font.h
+++ b/engines/zvision/fonts/truetype_font.h
@@ -43,12 +43,12 @@ public:
~TruetypeFont();
private:
- ZVision *_engine;
+// ZVision *_engine;
Graphics::Font *_font;
int _lineHeight;
- size_t _maxCharWidth;
- size_t _maxCharHeight;
+// size_t _maxCharWidth;
+// size_t _maxCharHeight;
public:
int32 _fontHeight;
diff --git a/engines/zvision/sound/zork_raw.cpp b/engines/zvision/sound/zork_raw.cpp
index 55353acbb9..edee1fd16e 100644
--- a/engines/zvision/sound/zork_raw.cpp
+++ b/engines/zvision/sound/zork_raw.cpp
@@ -185,14 +185,14 @@ Audio::RewindableAudioStream *makeRawZorkStream(const Common::String &filePath,
char fileIdentifier = (engine->getGameId() == GID_NEMESIS) ? fileName[6] : fileName[7];
if (engine->getGameId() == GID_NEMESIS) {
- for (int i = 0; i < 6; ++i) {
+ for (uint i = 0; i < ARRAYSIZE(RawZorkStream::_zNemSoundParamLookupTable); ++i) {
if (RawZorkStream::_zNemSoundParamLookupTable[i].identifier == fileIdentifier) {
soundParams = RawZorkStream::_zNemSoundParamLookupTable[i];
foundParams = true;
}
}
} else if (engine->getGameId() == GID_GRANDINQUISITOR) {
- for (int i = 0; i < 6; ++i) {
+ for (uint i = 0; i < ARRAYSIZE(RawZorkStream::_zgiSoundParamLookupTable); ++i) {
if (RawZorkStream::_zgiSoundParamLookupTable[i].identifier == fileIdentifier) {
soundParams = RawZorkStream::_zgiSoundParamLookupTable[i];
foundParams = true;
diff --git a/graphics/scaler/Normal2xARM.s b/graphics/scaler/Normal2xARM.s
index e3592295e0..c5684c30e6 100644
--- a/graphics/scaler/Normal2xARM.s
+++ b/graphics/scaler/Normal2xARM.s
@@ -28,6 +28,7 @@
@ Assumes dst is aligned (so did the C)
@ Assumes 16bit (so did the C)
+ .align 2
Normal2xARM:
@ r0 = src
@ r1 = srcPitch
@@ -92,6 +93,7 @@ thin:
@ Assumes dst is aligned (so did the C)
@ Assumes 16bit (so did the C)
+ .align 2
Normal2xAspectMask:
@ r0 = src
@ r1 = srcPitch
diff --git a/graphics/scaler/downscalerARM.s b/graphics/scaler/downscalerARM.s
index e4662522aa..4c09381457 100644
--- a/graphics/scaler/downscalerARM.s
+++ b/graphics/scaler/downscalerARM.s
@@ -29,6 +29,7 @@
@ dstPtr. srcPitch and dstPitch identify how to reach subsequent
@ lines. redblueMask and round allow for one routine to do both
@ 565 and 555 formats.
+ .align 2
DownscaleAllByHalfARM:
@ r0 = srcPtr
@ r1 = srcPitch
diff --git a/graphics/scaler/scale2xARM.s b/graphics/scaler/scale2xARM.s
index 563a22eeb1..a56e78447f 100644
--- a/graphics/scaler/scale2xARM.s
+++ b/graphics/scaler/scale2xARM.s
@@ -37,6 +37,7 @@
@ We hold: r10 B
@ r8 r14 r7 D E F
@ r12 H
+ .align 2
scale2x_8_arm:
STMFD r13!,{r4-r5,r7-r8,r10-r11,r14}
LDR r4, [r13,#4*7]
@@ -85,6 +86,7 @@ end8:
LDMFD r13!,{r4-r5,r7-r8,r10-r11,PC}
+ .align 2
scale2x_16_arm:
STMFD r13!,{r4-r5,r7-r8,r10-r11,r14}
LDR r4, [r13,#4*7]
@@ -133,6 +135,7 @@ end16:
LDMFD r13!,{r4-r5,r7-r8,r10-r11,PC}
+ .align 2
scale2x_32_arm:
STMFD r13!,{r4-r5,r7-r8,r10-r11,r14}
LDR r4, [r13,#4*7]
diff --git a/gui/debugger.cpp b/gui/debugger.cpp
index 2ec9937fdb..3cfa9f9803 100644
--- a/gui/debugger.cpp
+++ b/gui/debugger.cpp
@@ -61,6 +61,7 @@ Debugger::Debugger() {
DCmd_Register("help", WRAP_METHOD(Debugger, Cmd_Help));
DCmd_Register("openlog", WRAP_METHOD(Debugger, Cmd_OpenLog));
+ DCmd_Register("debuglevel", WRAP_METHOD(Debugger, Cmd_DebugLevel));
DCmd_Register("debugflag_list", WRAP_METHOD(Debugger, Cmd_DebugFlagsList));
DCmd_Register("debugflag_enable", WRAP_METHOD(Debugger, Cmd_DebugFlagEnable));
DCmd_Register("debugflag_disable", WRAP_METHOD(Debugger, Cmd_DebugFlagDisable));
@@ -501,6 +502,25 @@ bool Debugger::Cmd_OpenLog(int argc, const char **argv) {
}
+bool Debugger::Cmd_DebugLevel(int argc, const char **argv) {
+ if (argc == 1) { // print level
+ DebugPrintf("Debugging is currently %s (set at level %d)\n", (gDebugLevel >= 0) ? "enabled" : "disabled", gDebugLevel);
+ DebugPrintf("Usage: %s <n> where n is 0 to 10 or -1 to disable debugging\n", argv[0]);
+ } else { // set level
+ gDebugLevel = atoi(argv[1]);
+ if (gDebugLevel >= 0 && gDebugLevel < 11) {
+ DebugPrintf("Debug level set to level %d\n", gDebugLevel);
+ } else if (gDebugLevel < 0) {
+ DebugPrintf("Debugging is now disabled\n");
+ } else {
+ DebugPrintf("Invalid debug level value\n");
+ DebugPrintf("Usage: %s <n> where n is 0 to 10 or -1 to disable debugging\n", argv[0]);
+ }
+ }
+
+ return true;
+}
+
bool Debugger::Cmd_DebugFlagsList(int argc, const char **argv) {
const Common::DebugManager::DebugChannelList &debugLevels = DebugMan.listDebugChannels();
diff --git a/gui/debugger.h b/gui/debugger.h
index 4ce5481fbb..7481f89df2 100644
--- a/gui/debugger.h
+++ b/gui/debugger.h
@@ -193,6 +193,7 @@ protected:
bool Cmd_Exit(int argc, const char **argv);
bool Cmd_Help(int argc, const char **argv);
bool Cmd_OpenLog(int argc, const char **argv);
+ bool Cmd_DebugLevel(int argc, const char **argv);
bool Cmd_DebugFlagsList(int argc, const char **argv);
bool Cmd_DebugFlagEnable(int argc, const char **argv);
bool Cmd_DebugFlagDisable(int argc, const char **argv);
diff --git a/gui/dialog.cpp b/gui/dialog.cpp
index ec392a877a..fa4e508494 100644
--- a/gui/dialog.cpp
+++ b/gui/dialog.cpp
@@ -250,7 +250,18 @@ void Dialog::handleKeyDown(Common::KeyState state) {
close();
}
- // TODO: tab/shift-tab should focus the next/previous focusable widget
+ if (state.keycode == Common::KEYCODE_TAB) {
+ // TODO: Maybe add Tab behaviours for all widgets too.
+ // searches through widgets on screen for tab widget
+ Widget *w = _firstWidget;
+ while (w) {
+ if (w->_type == kTabWidget)
+ if (w->handleKeyDown(state))
+ return;
+
+ w = w->_next;
+ }
+ }
}
void Dialog::handleKeyUp(Common::KeyState state) {
diff --git a/gui/themes/translations.dat b/gui/themes/translations.dat
index 7bd1316208..1a7b49852d 100644
--- a/gui/themes/translations.dat
+++ b/gui/themes/translations.dat
Binary files differ
diff --git a/gui/widgets/tab.cpp b/gui/widgets/tab.cpp
index a8b3f5450d..756781a04b 100644
--- a/gui/widgets/tab.cpp
+++ b/gui/widgets/tab.cpp
@@ -183,6 +183,7 @@ void TabWidget::setActiveTab(int tabID) {
}
_activeTab = tabID;
_firstWidget = _tabs[tabID].firstWidget;
+
_boss->draw();
}
}
@@ -226,12 +227,34 @@ void TabWidget::handleMouseDown(int x, int y, int button, int clickCount) {
}
bool TabWidget::handleKeyDown(Common::KeyState state) {
- // TODO: maybe there should be a way to switch between tabs
- // using the keyboard? E.g. Alt-Shift-Left/Right-Arrow or something
- // like that.
+ if (state.hasFlags(Common::KBD_SHIFT) && state.keycode == Common::KEYCODE_TAB)
+ adjustTabs(kTabBackwards);
+ else if (state.keycode == Common::KEYCODE_TAB)
+ adjustTabs(kTabForwards);
+
return Widget::handleKeyDown(state);
}
+void TabWidget::adjustTabs(int value) {
+ // Determine which tab is next
+ int tabID = _activeTab + value;
+ if (tabID >= (int)_tabs.size())
+ tabID = 0;
+ else if (tabID < 0)
+ tabID = ((int)_tabs.size() - 1);
+
+ // Slides _firstVisibleTab forward to the correct tab
+ int maxTabsOnScreen = (_w / _tabWidth);
+ if (tabID >= maxTabsOnScreen && (_firstVisibleTab + maxTabsOnScreen) < (int)_tabs.size())
+ _firstVisibleTab++;
+
+ // Slides _firstVisibleTab backwards to the correct tab
+ while (tabID < _firstVisibleTab)
+ _firstVisibleTab--;
+
+ setActiveTab(tabID);
+}
+
void TabWidget::reflowLayout() {
Widget::reflowLayout();
diff --git a/gui/widgets/tab.h b/gui/widgets/tab.h
index 38aa089eb5..a01ee2d9dc 100644
--- a/gui/widgets/tab.h
+++ b/gui/widgets/tab.h
@@ -28,6 +28,11 @@
#include "common/array.h"
namespace GUI {
+
+enum {
+ kTabForwards = 1,
+ kTabBackwards = -1
+};
class TabWidget : public Widget {
typedef Common::String String;
@@ -109,6 +114,8 @@ protected:
virtual void drawWidget();
virtual Widget *findWidget(int x, int y);
+
+ virtual void adjustTabs(int value);
};
} // End of namespace GUI
diff --git a/image/bmp.cpp b/image/bmp.cpp
index cdf6e4097d..28eb049035 100644
--- a/image/bmp.cpp
+++ b/image/bmp.cpp
@@ -119,6 +119,10 @@ bool BitmapDecoder::loadStream(Common::SeekableReadStream &stream) {
if (!_codec)
return false;
+ // If the image size is zero, set it to the rest of the stream.
+ if (imageSize == 0)
+ imageSize = stream.size() - imageOffset;
+
// Grab the frame data
Common::SeekableSubReadStream subStream(&stream, imageOffset, imageOffset + imageSize);
diff --git a/po/cs_CZ.po b/po/cs_CZ.po
index e03f36c938..4eced39273 100644
--- a/po/cs_CZ.po
+++ b/po/cs_CZ.po
@@ -5,10 +5,10 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: ScummVM 1.4.0git\n"
+"Project-Id-Version: ScummVM 1.7.0git\n"
"Report-Msgid-Bugs-To: scummvm-devel@lists.sf.net\n"
"POT-Creation-Date: 2014-02-14 21:53+0000\n"
-"PO-Revision-Date: 2013-05-01 16:53+0100\n"
+"PO-Revision-Date: 2014-02-27 21:43+0100\n"
"Last-Translator: Zbyněk Schwarz <zbynek.schwarz@gmail.com>\n"
"Language-Team: \n"
"Language: Cesky\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
"X-Poedit-SourceCharset: iso-8859-2\n"
-"X-Generator: Poedit 1.5.5\n"
+"X-Generator: Poedit 1.6.4\n"
"X-Poedit-Basepath: ..\n"
#: gui/about.cpp:93
@@ -509,9 +509,8 @@ msgid "Do you really want to remove this game configuration?"
msgstr "Opravdu chcete odstranit nastavení této hry?"
#: gui/launcher.cpp:998
-#, fuzzy
msgid "Do you want to load savegame?"
-msgstr "Chcete hru nahrát nebo uložit?"
+msgstr "Chcete načíst uloženou pozici?"
#: gui/launcher.cpp:1047
msgid "This game does not support loading games from the launcher."
@@ -750,15 +749,16 @@ msgid "True Roland MT-32 (no GM emulation)"
msgstr "Opravdový Roland MT-32 (žádná GM emulace)"
#: gui/options.cpp:890
-#, fuzzy
msgid "Roland GS Device (enable MT-32 mappings)"
-msgstr "Režim Roland GS (vypne mapování GM)"
+msgstr "Zařízení Roland GS (zapne mapování MT-32)"
#: gui/options.cpp:890
msgid ""
"Check if you want to enable patch mappings to emulate an MT-32 on a Roland "
"GS device"
msgstr ""
+"Zaškrtněte, pokud chcete povolit záplaty mapování umožňující emulovat MT-32 "
+"na zařízení Roland GS"
#: gui/options.cpp:899
msgid "Don't use Roland MT-32 music"
@@ -1021,23 +1021,20 @@ msgid "Disabled GFX"
msgstr "GFX zakázáno"
#: gui/ThemeEngine.cpp:347
-#, fuzzy
msgid "Standard Renderer"
-msgstr "Standardní Vykreslovač (16bpp)"
+msgstr "Standardní Vykreslovač"
#: gui/ThemeEngine.cpp:347 engines/scumm/dialogs.cpp:658
msgid "Standard"
msgstr "Standardní"
#: gui/ThemeEngine.cpp:349
-#, fuzzy
msgid "Antialiased Renderer"
-msgstr "Vykreslovač s vyhlazenými hranami (16bpp)"
+msgstr "Vykreslovač s vyhlazenými hranami"
#: gui/ThemeEngine.cpp:349
-#, fuzzy
msgid "Antialiased"
-msgstr "S vyhlazenými hranami (16bpp)"
+msgstr "S vyhlazenými hranami"
#: gui/widget.cpp:322 gui/widget.cpp:324 gui/widget.cpp:330 gui/widget.cpp:332
msgid "Clear value"
@@ -1667,13 +1664,12 @@ msgid "Windowed mode"
msgstr "Režim do okna"
#: backends/graphics/opengl/opengl-graphics.cpp:118
-#, fuzzy
msgid "OpenGL"
-msgstr "Otevřít"
+msgstr "OpenGL"
#: backends/graphics/opengl/opengl-graphics.cpp:119
msgid "OpenGL (No filtering)"
-msgstr ""
+msgstr "OpenGL (bez filtrování)"
#: backends/platform/symbian/src/SymbianActions.cpp:38
#: backends/platform/wince/CEActionsSmartphone.cpp:39
@@ -2341,19 +2337,19 @@ msgstr "~E~fekt Vody Zapnut"
#: engines/neverhood/detection.cpp:167
msgid "Skip the Hall of Records storyboard scenes"
-msgstr ""
+msgstr "Přeskočit scény v Síni záznamů"
#: engines/neverhood/detection.cpp:168
msgid "Allows the player to skip past the Hall of Records storyboard scenes"
-msgstr ""
+msgstr "Umožňuje hráči přeskočit scény v Síni záznamů"
#: engines/neverhood/detection.cpp:174
msgid "Scale the making of videos to full screen"
-msgstr ""
+msgstr "Zvětšit filmy o výrobě na celou obrazovku"
#: engines/neverhood/detection.cpp:175
msgid "Scale the making of videos, so that they use the whole screen"
-msgstr ""
+msgstr "Zvětšit filmy o výrobě tak, aby využivaly celou obrazovku"
#: engines/parallaction/saveload.cpp:133
#, c-format
@@ -3180,9 +3176,8 @@ msgid "DXA cutscenes found but ScummVM has been built without zlib support"
msgstr "Videa DXA nalezena, ale ScummVM byl sestaven bez podpory zlib"
#: engines/sword1/animation.cpp:561
-#, fuzzy
msgid "MPEG-2 cutscenes found but ScummVM has been built without MPEG-2"
-msgstr "Videa PSX nalezena, ale ScummVM byl sestaven bez podpory barev RGB"
+msgstr "Videa MPEG-2 nalezena, ale ScummVM byl sestaven bez MPEG-2"
#: engines/sword1/animation.cpp:568 engines/sword2/animation.cpp:470
#, c-format
@@ -3234,10 +3229,9 @@ msgid ""
msgstr "Videa PSX nalezena, ale ScummVM byl sestaven bez podpory barev RGB"
#: engines/sword2/animation.cpp:461
-#, fuzzy
msgid ""
"MPEG-2 cutscenes found but ScummVM has been built without MPEG-2 support"
-msgstr "Videa DXA nalezena, ale ScummVM byl sestaven bez podpory zlib"
+msgstr "Videa MPEG-2 nalezena, ale ScummVM byl sestaven bez podpory MPEG-2"
#: engines/sword2/sword2.cpp:79
msgid "Show object labels"
diff --git a/po/hu_HU.po b/po/hu_HU.po
index 16ac5f383f..e4dbbe3652 100644
--- a/po/hu_HU.po
+++ b/po/hu_HU.po
@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: ScummVM 1.3.0svn\n"
"Report-Msgid-Bugs-To: scummvm-devel@lists.sf.net\n"
"POT-Creation-Date: 2014-02-14 21:53+0000\n"
-"PO-Revision-Date: 2013-04-25 06:38+0100\n"
+"PO-Revision-Date: 2014-02-18 06:30+0100\n"
"Last-Translator: George Kormendi <grubycza@hotmail.com>\n"
"Language-Team: Hungarian\n"
"Language: Magyar\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Poedit-SourceCharset: iso-8859-1\n"
-"X-Generator: Poedit 1.5.5\n"
+"X-Generator: Poedit 1.6.4\n"
#: gui/about.cpp:93
#, c-format
@@ -508,9 +508,8 @@ msgid "Do you really want to remove this game configuration?"
msgstr "Biztosan törölni akarod ezt a játékkonfigurációt?"
#: gui/launcher.cpp:998
-#, fuzzy
msgid "Do you want to load savegame?"
-msgstr "Játékállás betöltése vagy mentése?"
+msgstr "Akarod hogy betöltésem a játékállást?"
#: gui/launcher.cpp:1047
msgid "This game does not support loading games from the launcher."
@@ -748,15 +747,16 @@ msgid "True Roland MT-32 (no GM emulation)"
msgstr "Roland MT-32 Hardver (GM emuláció nincs)"
#: gui/options.cpp:890
-#, fuzzy
msgid "Roland GS Device (enable MT-32 mappings)"
-msgstr "Roland GS Mód (GM mapping tiltása)"
+msgstr "Roland GS eszköz (MT-32 mapping engedélyezés)"
#: gui/options.cpp:890
msgid ""
"Check if you want to enable patch mappings to emulate an MT-32 on a Roland "
"GS device"
msgstr ""
+"Ellenőrzés ha engedélyezni akarod az emulált MT-32 Folt leképezést a Roland "
+"GS eszközön"
#: gui/options.cpp:899
msgid "Don't use Roland MT-32 music"
@@ -1019,23 +1019,20 @@ msgid "Disabled GFX"
msgstr "GFX letiltva"
#: gui/ThemeEngine.cpp:347
-#, fuzzy
msgid "Standard Renderer"
-msgstr "Standard leképező (16bpp)"
+msgstr "Standard leképező"
#: gui/ThemeEngine.cpp:347 engines/scumm/dialogs.cpp:658
msgid "Standard"
msgstr "Átlagos"
#: gui/ThemeEngine.cpp:349
-#, fuzzy
msgid "Antialiased Renderer"
-msgstr "Élsimításos leképező (16bpp)"
+msgstr "Élsimításos leképező"
#: gui/ThemeEngine.cpp:349
-#, fuzzy
msgid "Antialiased"
-msgstr "Élsimított (16bpp)"
+msgstr "Élsimított"
#: gui/widget.cpp:322 gui/widget.cpp:324 gui/widget.cpp:330 gui/widget.cpp:332
msgid "Clear value"
@@ -1661,13 +1658,12 @@ msgid "Windowed mode"
msgstr "Ablakos mód"
#: backends/graphics/opengl/opengl-graphics.cpp:118
-#, fuzzy
msgid "OpenGL"
-msgstr "Nyit"
+msgstr "OpenGL"
#: backends/graphics/opengl/opengl-graphics.cpp:119
msgid "OpenGL (No filtering)"
-msgstr ""
+msgstr "OpenGL (Nincs szűrés)"
#: backends/platform/symbian/src/SymbianActions.cpp:38
#: backends/platform/wince/CEActionsSmartphone.cpp:39
@@ -2330,19 +2326,20 @@ msgstr "Vízeffektus engedélyezve"
#: engines/neverhood/detection.cpp:167
msgid "Skip the Hall of Records storyboard scenes"
-msgstr ""
+msgstr "Hall of Records storyboard átvezetők átugrása"
#: engines/neverhood/detection.cpp:168
msgid "Allows the player to skip past the Hall of Records storyboard scenes"
msgstr ""
+"Lehetőség, hogy a játékos átugorja a Hall of Records storyboard átvezetőket"
#: engines/neverhood/detection.cpp:174
msgid "Scale the making of videos to full screen"
-msgstr ""
+msgstr "Hogyan készült videók átméretezése teljesképernyőre"
#: engines/neverhood/detection.cpp:175
msgid "Scale the making of videos, so that they use the whole screen"
-msgstr ""
+msgstr "Hogyan készült videók átméretezése, hogy teljesképernyőt használjanak"
#: engines/parallaction/saveload.cpp:133
#, c-format
@@ -3169,11 +3166,9 @@ msgid "DXA cutscenes found but ScummVM has been built without zlib support"
msgstr "DXA átvezető elérhető, de a ScummVM zlib támogatás nincs lefordítva"
#: engines/sword1/animation.cpp:561
-#, fuzzy
msgid "MPEG-2 cutscenes found but ScummVM has been built without MPEG-2"
msgstr ""
-"PSX átvezetőfilmet találtam, de ez a ScummVM RGB színtámogatás nélkül van "
-"lefordítva"
+"MPEG-2 átvezetőfilmet találtam, de a ScummVM MPEG-2 nélkül van lefordítva"
#: engines/sword1/animation.cpp:568 engines/sword2/animation.cpp:470
#, c-format
@@ -3227,10 +3222,11 @@ msgstr ""
"lefordítva"
#: engines/sword2/animation.cpp:461
-#, fuzzy
msgid ""
"MPEG-2 cutscenes found but ScummVM has been built without MPEG-2 support"
-msgstr "DXA átvezető elérhető, de a ScummVM zlib támogatás nincs lefordítva"
+msgstr ""
+"MPEG-2 átvezetőfilmet találtam, de a ScummVM MPEG-2 támogatás nélkül van "
+"lefordítva"
#: engines/sword2/sword2.cpp:79
msgid "Show object labels"
diff --git a/test/common/util.h b/test/common/util.h
index cd65307612..e195f13a84 100644
--- a/test/common/util.h
+++ b/test/common/util.h
@@ -115,7 +115,7 @@ class UtilTestSuite : public CxxTest::TestSuite {
TS_ASSERT_EQUALS(Common::isAlnum('Z'), 1);
TS_ASSERT_EQUALS(Common::isAlnum('1'), 1);
TS_ASSERT_EQUALS(Common::isAlnum('0'), 1);
- TS_ASSERT_EQUALS(Common::isAlnum('§'), 0);
+ TS_ASSERT_EQUALS(Common::isAlnum('\xA7'), 0);
TS_ASSERT_EQUALS(Common::isAlnum('$'), 0);
TS_ASSERT_EQUALS(Common::isAlnum(' '), 0);
TS_ASSERT_EQUALS(Common::isAlnum('\n'), 0);
@@ -136,7 +136,7 @@ class UtilTestSuite : public CxxTest::TestSuite {
TS_ASSERT_EQUALS(Common::isAlpha('Z'), 1);
TS_ASSERT_EQUALS(Common::isAlpha('1'), 0);
TS_ASSERT_EQUALS(Common::isAlpha('0'), 0);
- TS_ASSERT_EQUALS(Common::isAlpha('§'), 0);
+ TS_ASSERT_EQUALS(Common::isAlpha('\xA7'), 0);
TS_ASSERT_EQUALS(Common::isAlpha('$'), 0);
TS_ASSERT_EQUALS(Common::isAlpha(' '), 0);
TS_ASSERT_EQUALS(Common::isAlpha('\n'), 0);
@@ -157,7 +157,7 @@ class UtilTestSuite : public CxxTest::TestSuite {
TS_ASSERT_EQUALS(Common::isDigit('Z'), 0);
TS_ASSERT_EQUALS(Common::isDigit('1'), 1);
TS_ASSERT_EQUALS(Common::isDigit('0'), 1);
- TS_ASSERT_EQUALS(Common::isDigit('§'), 0);
+ TS_ASSERT_EQUALS(Common::isDigit('\xA7'), 0);
TS_ASSERT_EQUALS(Common::isDigit('$'), 0);
TS_ASSERT_EQUALS(Common::isDigit(' '), 0);
TS_ASSERT_EQUALS(Common::isDigit('\n'), 0);
@@ -178,7 +178,7 @@ class UtilTestSuite : public CxxTest::TestSuite {
TS_ASSERT_EQUALS(Common::isLower('Z'), 0);
TS_ASSERT_EQUALS(Common::isLower('1'), 0);
TS_ASSERT_EQUALS(Common::isLower('0'), 0);
- TS_ASSERT_EQUALS(Common::isLower('§'), 0);
+ TS_ASSERT_EQUALS(Common::isLower('\xA7'), 0);
TS_ASSERT_EQUALS(Common::isLower('$'), 0);
TS_ASSERT_EQUALS(Common::isLower(' '), 0);
TS_ASSERT_EQUALS(Common::isLower('\n'), 0);
@@ -200,7 +200,7 @@ class UtilTestSuite : public CxxTest::TestSuite {
TS_ASSERT_EQUALS(Common::isUpper('Z'), 1);
TS_ASSERT_EQUALS(Common::isUpper('1'), 0);
TS_ASSERT_EQUALS(Common::isUpper('0'), 0);
- TS_ASSERT_EQUALS(Common::isUpper('§'), 0);
+ TS_ASSERT_EQUALS(Common::isUpper('\xA7'), 0);
TS_ASSERT_EQUALS(Common::isUpper('$'), 0);
TS_ASSERT_EQUALS(Common::isUpper(' '), 0);
TS_ASSERT_EQUALS(Common::isUpper('\n'), 0);
diff --git a/test/cxxtest_mingw.h b/test/cxxtest_mingw.h
index f407105bfe..380f638640 100644
--- a/test/cxxtest_mingw.h
+++ b/test/cxxtest_mingw.h
@@ -8,4 +8,4 @@
#undef main
#endif // main
-#endif // CXXTEST_MINGW \ No newline at end of file
+#endif // CXXTEST_MINGW
diff --git a/video/avi_decoder.cpp b/video/avi_decoder.cpp
index 0697d89c04..9b196fefc9 100644
--- a/video/avi_decoder.cpp
+++ b/video/avi_decoder.cpp
@@ -71,7 +71,6 @@ namespace Video {
// Stream Types
enum {
kStreamTypePaletteChange = MKTAG16('p', 'c'),
- kStreamTypeRawVideo = MKTAG16('d', 'b'),
kStreamTypeAudio = MKTAG16('w', 'b')
};
@@ -399,10 +398,6 @@ void AVIDecoder::readNextPacket() {
if (getStreamType(nextTag) == kStreamTypePaletteChange) {
// Palette Change
videoTrack->loadPaletteFromChunk(chunk);
- } else if (getStreamType(nextTag) == kStreamTypeRawVideo) {
- // TODO: Check if this really is uncompressed. Many videos
- // falsely put compressed data in here.
- error("Uncompressed AVI frame found");
} else {
// Otherwise, assume it's a compressed frame
videoTrack->decodeFrame(chunk);
diff --git a/video/flic_decoder.cpp b/video/flic_decoder.cpp
index 5d27aa0a59..994f47cea8 100644
--- a/video/flic_decoder.cpp
+++ b/video/flic_decoder.cpp
@@ -176,7 +176,7 @@ const Graphics::Surface *FlicDecoder::FlicVideoTrack::decodeNextFrame() {
uint16 newWidth = _fileStream->readUint16LE();
uint16 newHeight = _fileStream->readUint16LE();
- if ((newWidth != 0) && (newHeight != 0)) {
+ if ((newWidth != 0) || (newHeight != 0)) {
if (newWidth == 0)
newWidth = _surface->w;
if (newHeight == 0)